Merge "Changes to re-enable overrides for tz data"
diff --git a/README.md b/README.md
index 2c42b3b..79bb72a 100644
--- a/README.md
+++ b/README.md
@@ -208,19 +208,17 @@
 The host tests require that you have `lunch`ed either an x86 or x86_64 target.
 
     $ mma
-    # 64-bit tests for 64-bit targets, 32-bit otherwise.
-    $ mm bionic-unit-tests-run-on-host
-    # Only exists for 64-bit targets.
     $ mm bionic-unit-tests-run-on-host32
+    $ mm bionic-unit-tests-run-on-host64  # For 64-bit *targets* only.
 
 ### Against glibc
 
 As a way to check that our tests do in fact test the correct behavior (and not
 just the behavior we think is correct), it is possible to run the tests against
-the host's glibc.
+the host's glibc. The executables are already in your path.
 
     $ mma
-    $ bionic-unit-tests-glibc32 # already in your path
+    $ bionic-unit-tests-glibc32
     $ bionic-unit-tests-glibc64
 
 
diff --git a/benchmarks/Android.mk b/benchmarks/Android.mk
index c3eb6d3..e1580fe 100644
--- a/benchmarks/Android.mk
+++ b/benchmarks/Android.mk
@@ -20,12 +20,29 @@
 # Benchmarks library, usable by projects outside this directory.
 # -----------------------------------------------------------------------------
 
+benchmark_cflags := \
+    -O2 \
+    -fno-builtin \
+    -Wall \
+    -Wextra \
+    -Werror \
+    -Wunused \
+
+benchmark_cppflags := \
+    -std=gnu++11 \
+
+benchmarklib_src_files := \
+    Benchmark.cpp \
+    utils.cpp \
+    main.cpp \
+
 include $(CLEAR_VARS)
 LOCAL_MODULE := libbenchmark
-LOCAL_CFLAGS += -O2 -Wall -Wextra -Werror
-LOCAL_SRC_FILES := benchmark_main.cpp
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_SRC_FILES := $(benchmarklib_src_files)
+LOCAL_C_INCLUDES := $(benchmark_c_includes)
+LOCAL_STATIC_LIBRARIES := libbase
 include $(BUILD_STATIC_LIBRARY)
 
 # Only supported on linux systems.
@@ -33,11 +50,12 @@
 
 include $(CLEAR_VARS)
 LOCAL_MODULE := libbenchmark
-LOCAL_CFLAGS += -O2 -Wall -Wextra -Werror
-LOCAL_SRC_FILES := benchmark_main.cpp
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_SRC_FILES := $(benchmarklib_src_files)
+LOCAL_C_INCLUDES := $(benchmark_c_includes)
 LOCAL_MULTILIB := both
+LOCAL_STATIC_LIBRARIES := libbase
 include $(BUILD_HOST_STATIC_LIBRARY)
 
 endif
@@ -45,16 +63,9 @@
 # -----------------------------------------------------------------------------
 # Benchmarks.
 # -----------------------------------------------------------------------------
-
-benchmark_c_flags = \
-    -O2 \
-    -Wall -Wextra -Wunused \
-    -Werror \
-    -fno-builtin \
-    -std=gnu++11 \
-
-benchmark_src_files = \
+benchmark_src_files := \
     math_benchmark.cpp \
+    property_benchmark.cpp \
     pthread_benchmark.cpp \
     semaphore_benchmark.cpp \
     stdio_benchmark.cpp \
@@ -70,9 +81,10 @@
 LOCAL_MODULE_STEM_32 := bionic-benchmarks32
 LOCAL_MODULE_STEM_64 := bionic-benchmarks64
 LOCAL_MULTILIB := both
-LOCAL_CFLAGS += $(benchmark_c_flags)
-LOCAL_SRC_FILES := $(benchmark_src_files) property_benchmark.cpp
-LOCAL_STATIC_LIBRARIES += libbenchmark
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_SRC_FILES := $(benchmark_src_files)
+LOCAL_STATIC_LIBRARIES := libbenchmark libbase
 include $(BUILD_EXECUTABLE)
 
 # We don't build a static benchmark executable because it's not usually
@@ -90,10 +102,11 @@
 LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32
 LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64
 LOCAL_MULTILIB := both
-LOCAL_CFLAGS += $(benchmark_c_flags)
-LOCAL_LDFLAGS += -lrt
+LOCAL_CFLAGS := $(benchmark_cflags)
+LOCAL_CPPFLAGS := $(benchmark_cppflags)
+LOCAL_LDFLAGS := -lrt
 LOCAL_SRC_FILES := $(benchmark_src_files)
-LOCAL_STATIC_LIBRARIES += libbenchmark
+LOCAL_STATIC_LIBRARIES := libbenchmark libbase
 include $(BUILD_HOST_EXECUTABLE)
 
 endif
diff --git a/benchmarks/Benchmark.cpp b/benchmarks/Benchmark.cpp
new file mode 100644
index 0000000..ea6000f
--- /dev/null
+++ b/benchmarks/Benchmark.cpp
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <inttypes.h>
+#include <regex.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include <string>
+#include <vector>
+
+#include <base/stringprintf.h>
+
+#include <benchmark/Benchmark.h>
+
+#include "utils.h"
+
+namespace testing {
+
+static uint64_t NanoTime() {
+  struct timespec t;
+  t.tv_sec = t.tv_nsec = 0;
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return static_cast<uint64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
+}
+
+bool Benchmark::header_printed_;
+
+std::vector<Benchmark*>& Benchmark::List() {
+  static std::vector<Benchmark*> list;
+  return list;
+}
+
+int Benchmark::MaxNameColumnWidth() {
+  size_t max = 20;
+  for (auto& benchmark : List()) {
+    max = std::max(max, benchmark->NameColumnWidth());
+  }
+  return static_cast<int>(max);
+}
+
+size_t Benchmark::RunAll(std::vector<regex_t*>& regs) {
+  size_t benchmarks_run = 0;
+  header_printed_ = false;
+  for (auto& benchmark : List()) {
+    benchmarks_run += benchmark->RunAllArgs(regs);
+  }
+  return benchmarks_run;
+}
+
+void Benchmark::PrintHeader() {
+  if (!header_printed_) {
+    printf("%-*s %10s %10s\n", MaxNameColumnWidth(), "", "iterations", "ns/op");
+    header_printed_ = true;
+  }
+}
+
+template <typename T>
+bool BenchmarkT<T>::ShouldRun(std::vector<regex_t*>& regs, T arg) {
+  if (regs.empty()) {
+    return true;
+  }
+
+  for (const auto& re : regs) {
+    if (regexec(re, GetNameStr(arg).c_str(), 0, NULL, 0) != REG_NOMATCH) {
+      return true;
+    }
+  }
+  return false;
+}
+
+void Benchmark::StopBenchmarkTiming() {
+  if (start_time_ns_ != 0) {
+    total_time_ns_ += NanoTime() - start_time_ns_;
+  }
+  start_time_ns_ = 0;
+}
+
+void Benchmark::StartBenchmarkTiming() {
+  if (start_time_ns_ == 0) {
+    start_time_ns_ = NanoTime();
+  }
+}
+
+std::string BenchmarkWithoutArg::GetNameStr(void*) {
+  return Name();
+}
+
+template <>
+std::string BenchmarkWithArg<int>::GetNameStr(int arg) {
+  return Name() + "/" + PrettyInt(arg, 2);
+}
+
+template <>
+std::string BenchmarkWithArg<double>::GetNameStr(double arg) {
+  return Name() + "/" + android::base::StringPrintf("%0.6f", arg);
+}
+
+template<typename T>
+void BenchmarkT<T>::RunWithArg(T arg) {
+  int new_iterations = 1;
+  int iterations;
+  while (new_iterations < 1e8) {
+    bytes_processed_ = 0;
+    total_time_ns_ = 0;
+    start_time_ns_ = 0;
+
+    iterations = new_iterations;
+    RunIterations(iterations, arg);
+    if (total_time_ns_ >= 1e9) {
+      break;
+    }
+
+    if (total_time_ns_/iterations == 0) {
+      new_iterations = 1e9;
+    } else {
+      new_iterations = 1e9/ (total_time_ns_/iterations);
+    }
+    new_iterations = std::max(iterations + 1,
+                          std::min(new_iterations + new_iterations/2, 100*iterations));
+
+    new_iterations = Round(new_iterations);
+  }
+
+  printf("%-*s %10s %10" PRId64, MaxNameColumnWidth(), GetNameStr(arg).c_str(),
+         PrettyInt(iterations, 10).c_str(), total_time_ns_/iterations);
+
+  if (total_time_ns_ > 0 && bytes_processed_ > 0) {
+    double gib_processed = static_cast<double>(bytes_processed_)/1e9;
+    double seconds = static_cast<double>(total_time_ns_)/1e9;
+    printf(" %8.3f GiB/s", gib_processed/seconds);
+  }
+  printf("\n");
+  fflush(stdout);
+}
+
+template class BenchmarkT<int>;
+template class BenchmarkT<double>;
+template class BenchmarkT<void*>;
+
+template class BenchmarkWithArg<int>;
+template class BenchmarkWithArg<double>;
+
+}  // namespace testing
diff --git a/benchmarks/benchmark/Benchmark.h b/benchmarks/benchmark/Benchmark.h
new file mode 100644
index 0000000..ae5c1a2
--- /dev/null
+++ b/benchmarks/benchmark/Benchmark.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef BENCHMARKS_BENCHMARK_H_
+#define BENCHMARKS_BENCHMARK_H_
+
+#include <regex.h>
+#include <stdint.h>
+
+#include <string>
+#include <vector>
+
+namespace testing {
+
+class Benchmark {
+public:
+  Benchmark() {
+    List().push_back(this);
+  }
+  virtual ~Benchmark() {}
+
+  virtual std::string Name() = 0;
+
+  virtual size_t RunAllArgs(std::vector<regex_t*>&) = 0;
+
+  void SetBenchmarkBytesProcessed(uint64_t bytes) { bytes_processed_ += bytes; }
+  void StopBenchmarkTiming();
+  void StartBenchmarkTiming();
+
+  // Run all of the benchmarks that have registered.
+  static size_t RunAll(std::vector<regex_t*>&);
+
+  static std::vector<Benchmark*>& List();
+
+  static int MaxNameColumnWidth();
+
+protected:
+  virtual size_t NameColumnWidth() = 0;
+
+  uint64_t bytes_processed_;
+  uint64_t total_time_ns_;
+  uint64_t start_time_ns_;
+
+  static bool header_printed_;
+
+  static void PrintHeader();
+};
+
+template <typename T>
+class BenchmarkT : public Benchmark {
+public:
+  BenchmarkT() {}
+  virtual ~BenchmarkT() {}
+
+protected:
+  bool ShouldRun(std::vector<regex_t*>&, T arg);
+  void RunWithArg(T arg);
+  virtual void RunIterations(int, T) = 0;
+  virtual std::string GetNameStr(T) = 0;
+};
+
+class BenchmarkWithoutArg : public BenchmarkT<void*> {
+public:
+  BenchmarkWithoutArg() {}
+  virtual ~BenchmarkWithoutArg() {}
+
+protected:
+  virtual size_t RunAllArgs(std::vector<regex_t*>& regs) override {
+    size_t benchmarks_run = 0;
+    if (BenchmarkT<void*>::ShouldRun(regs, nullptr)) {
+      PrintHeader();
+      RunWithArg(nullptr);
+      benchmarks_run++;
+    }
+    return benchmarks_run;
+  }
+
+  virtual void RunIterations(int iters, void*) override {
+    Run(iters);
+  }
+
+  virtual void Run(int) = 0;
+
+  virtual size_t NameColumnWidth() override {
+    return Name().size();
+  }
+
+  virtual std::string GetNameStr(void *) override;
+};
+
+template<typename T>
+class BenchmarkWithArg : public BenchmarkT<T> {
+public:
+  BenchmarkWithArg() {}
+  virtual ~BenchmarkWithArg() {}
+
+  BenchmarkWithArg* Arg(T arg) {
+    args_.push_back(arg);
+    return this;
+  }
+
+protected:
+  virtual size_t NameColumnWidth() override {
+    size_t max = 0;
+    for (const auto& arg : args_) {
+      max = std::max(max, GetNameStr(arg).size());
+    }
+    return max;
+  }
+
+  std::string GetNameStr(T arg) override;
+
+  virtual size_t RunAllArgs(std::vector<regex_t*>& regs) override {
+    size_t benchmarks_run = 0;
+    for (T& arg : args_) {
+      if (BenchmarkT<T>::ShouldRun(regs, arg)) {
+        Benchmark::PrintHeader();
+        BenchmarkT<T>::RunWithArg(arg);
+        benchmarks_run++;
+      }
+    }
+    return benchmarks_run;
+  }
+
+  virtual void RunIterations(int iters, T arg) override {
+    Run(iters, arg);
+  }
+
+  virtual void Run(int iters, T arg) = 0;
+
+private:
+  std::vector<T> args_;
+};
+
+}  // namespace testing
+
+#define BENCHMARK_START(f, super_class) \
+  class f : public super_class { \
+  public: \
+    f() {} \
+    virtual ~f() {} \
+    virtual std::string Name() override { return #f; } \
+
+#define BENCHMARK_NO_ARG(f) \
+  BENCHMARK_START(f, ::testing::BenchmarkWithoutArg) \
+    virtual void Run(int) override; \
+  }; \
+  static ::testing::Benchmark* __benchmark_##f = new f()
+
+#define BENCHMARK_WITH_ARG(f, arg_type) \
+  BENCHMARK_START(f, ::testing::BenchmarkWithArg<arg_type>) \
+    virtual void Run(int, arg_type) override; \
+  }; \
+  static ::testing::BenchmarkWithArg<arg_type>* __benchmark_##f = (new f())
+
+#endif  // BENCHMARKS_BENCHMARK_H_
diff --git a/benchmarks/benchmark_main.cpp b/benchmarks/benchmark_main.cpp
deleted file mode 100644
index fae09be..0000000
--- a/benchmarks/benchmark_main.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include <benchmark.h>
-
-#include <regex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include <string>
-#include <vector>
-
-#include <inttypes.h>
-
-static int64_t g_bytes_processed;
-static int64_t g_benchmark_total_time_ns;
-static int64_t g_benchmark_start_time_ns;
-static int g_name_column_width = 20;
-
-typedef std::vector<::testing::Benchmark*> BenchmarkList;
-
-static BenchmarkList& Benchmarks() {
-  static BenchmarkList benchmarks;
-  return benchmarks;
-}
-
-// Similar to the code in art, but supporting both binary and decimal prefixes.
-static std::string PrettyInt(uint64_t count, size_t base) {
-  if (base != 2 && base != 10) abort();
-
-  // The byte thresholds at which we display amounts. A count is displayed
-  // in unit U when kUnitThresholds[U] <= bytes < kUnitThresholds[U+1].
-  static const uint64_t kUnitThresholds2[] = {
-    1024*1024*1024 /* Gi */, 2*1024*1024 /* Mi */, 3*1024 /* Ki */, 0,
-  };
-  static const uint64_t kUnitThresholds10[] = {
-    1000*1000*1000 /* G */, 2*1000*1000 /* M */, 3*1000 /* k */, 0,
-  };
-  static const uint64_t kAmountPerUnit2[] = { 1024*1024*1024, 1024*1024, 1024, 1 };
-  static const uint64_t kAmountPerUnit10[] = { 1000*1000*1000, 1000*1000, 1000, 1 };
-  static const char* const kUnitStrings2[] = { "Gi", "Mi", "Ki", "" };
-  static const char* const kUnitStrings10[] = { "G", "M", "k", "" };
-
-  // Which set are we using?
-  const uint64_t* kUnitThresholds = ((base == 2) ? kUnitThresholds2 : kUnitThresholds10);
-  const uint64_t* kAmountPerUnit = ((base == 2) ? kAmountPerUnit2 : kAmountPerUnit10);
-  const char* const* kUnitStrings = ((base == 2) ? kUnitStrings2 : kUnitStrings10);
-
-  size_t i = 0;
-  for (; kUnitThresholds[i] != 0; ++i) {
-    if (count >= kUnitThresholds[i]) {
-      break;
-    }
-  }
-  char* s = NULL;
-  asprintf(&s, "%" PRId64 "%s", count / kAmountPerUnit[i], kUnitStrings[i]);
-  std::string result(s);
-  free(s);
-  return result;
-}
-
-static int Round(int n) {
-  int base = 1;
-  while (base*10 < n) {
-    base *= 10;
-  }
-  if (n < 2*base) {
-    return 2*base;
-  }
-  if (n < 5*base) {
-    return 5*base;
-  }
-  return 10*base;
-}
-
-static int64_t NanoTime() {
-  struct timespec t;
-  t.tv_sec = t.tv_nsec = 0;
-  clock_gettime(CLOCK_MONOTONIC, &t);
-  return static_cast<int64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
-}
-
-namespace testing {
-
-Benchmark* Benchmark::Arg(int arg) {
-  args_.push_back(arg);
-  return this;
-}
-
-const char* Benchmark::Name() {
-  return name_;
-}
-
-bool Benchmark::ShouldRun(int argc, char* argv[]) {
-  if (argc == 1) {
-    return true;  // With no arguments, we run all benchmarks.
-  }
-  // Otherwise, we interpret each argument as a regular expression and
-  // see if any of our benchmarks match.
-  for (int i = 1; i < argc; i++) {
-    regex_t re;
-    if (regcomp(&re, argv[i], 0) != 0) {
-      fprintf(stderr, "couldn't compile \"%s\" as a regular expression!\n", argv[i]);
-      exit(EXIT_FAILURE);
-    }
-    int match = regexec(&re, name_, 0, NULL, 0);
-    regfree(&re);
-    if (match != REG_NOMATCH) {
-      return true;
-    }
-  }
-  return false;
-}
-
-void Benchmark::Register(const char* name, void (*fn)(int), void (*fn_range)(int, int)) {
-  name_ = name;
-  fn_ = fn;
-  fn_range_ = fn_range;
-
-  if (fn_ == NULL && fn_range_ == NULL) {
-    fprintf(stderr, "%s: missing function\n", name_);
-    exit(EXIT_FAILURE);
-  }
-
-  Benchmarks().push_back(this);
-}
-
-void Benchmark::Run() {
-  if (fn_ != NULL) {
-    RunWithArg(0);
-  } else {
-    if (args_.empty()) {
-      fprintf(stderr, "%s: no args!\n", name_);
-      exit(EXIT_FAILURE);
-    }
-    for (size_t i = 0; i < args_.size(); ++i) {
-      RunWithArg(args_[i]);
-    }
-  }
-}
-
-void Benchmark::RunRepeatedlyWithArg(int iterations, int arg) {
-  g_bytes_processed = 0;
-  g_benchmark_total_time_ns = 0;
-  g_benchmark_start_time_ns = NanoTime();
-  if (fn_ != NULL) {
-    fn_(iterations);
-  } else {
-    fn_range_(iterations, arg);
-  }
-  if (g_benchmark_start_time_ns != 0) {
-    g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
-  }
-}
-
-void Benchmark::RunWithArg(int arg) {
-  // Run once in case it's expensive.
-  int iterations = 1;
-  int64_t realStartTime = NanoTime();
-  RunRepeatedlyWithArg(iterations, arg);
-  int64_t realTotalTime = NanoTime() - realStartTime;
-  while (realTotalTime < 1e9 && iterations < 1e8) {
-    int last = iterations;
-    if (realTotalTime/iterations == 0) {
-      iterations = 1e9;
-    } else {
-      iterations = 1e9 / (realTotalTime/iterations);
-    }
-    iterations = std::max(last + 1, std::min(iterations + iterations/2, 100*last));
-    iterations = Round(iterations);
-    realStartTime = NanoTime();
-    RunRepeatedlyWithArg(iterations, arg);
-    realTotalTime = NanoTime() - realStartTime;
-  }
-
-  char throughput[100];
-  throughput[0] = '\0';
-
-  if (g_benchmark_total_time_ns > 0 && g_bytes_processed > 0) {
-    double gib_processed = static_cast<double>(g_bytes_processed)/1e9;
-    double seconds = static_cast<double>(g_benchmark_total_time_ns)/1e9;
-    snprintf(throughput, sizeof(throughput), " %8.3f GiB/s", gib_processed/seconds);
-  }
-
-  char full_name[100];
-  if (fn_range_ != NULL) {
-    snprintf(full_name, sizeof(full_name), "%s/%s", name_, PrettyInt(arg, 2).c_str());
-  } else {
-    snprintf(full_name, sizeof(full_name), "%s", name_);
-  }
-
-  printf("%-*s %10s %10" PRId64 "%s\n",
-         g_name_column_width, full_name,
-         PrettyInt(iterations, 10).c_str(),
-         g_benchmark_total_time_ns/iterations,
-         throughput);
-  fflush(stdout);
-}
-
-}  // namespace testing
-
-void SetBenchmarkBytesProcessed(int64_t x) {
-  g_bytes_processed = x;
-}
-
-void StopBenchmarkTiming() {
-  if (g_benchmark_start_time_ns != 0) {
-    g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
-  }
-  g_benchmark_start_time_ns = 0;
-}
-
-void StartBenchmarkTiming() {
-  if (g_benchmark_start_time_ns == 0) {
-    g_benchmark_start_time_ns = NanoTime();
-  }
-}
-
-int main(int argc, char* argv[]) {
-  if (Benchmarks().empty()) {
-    fprintf(stderr, "No benchmarks registered!\n");
-    exit(EXIT_FAILURE);
-  }
-
-  for (auto& b : Benchmarks()) {
-    int name_width = static_cast<int>(strlen(b->Name()));
-    g_name_column_width = std::max(g_name_column_width, name_width);
-  }
-
-  bool need_header = true;
-  for (auto& b : Benchmarks()) {
-    if (b->ShouldRun(argc, argv)) {
-      if (need_header) {
-        printf("%-*s %10s %10s\n", g_name_column_width, "", "iterations", "ns/op");
-        fflush(stdout);
-        need_header = false;
-      }
-      b->Run();
-    }
-  }
-
-  if (need_header) {
-    fprintf(stderr, "No matching benchmarks!\n");
-    fprintf(stderr, "Available benchmarks:\n");
-    for (auto& b : Benchmarks()) {
-      fprintf(stderr, "  %s\n", b->Name());
-    }
-    exit(EXIT_FAILURE);
-  }
-
-  return 0;
-}
diff --git a/benchmarks/include/benchmark.h b/benchmarks/include/benchmark.h
deleted file mode 100644
index 7e134a0..0000000
--- a/benchmarks/include/benchmark.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#ifndef BENCHMARKS_BENCHMARK_H_
-#define BENCHMARKS_BENCHMARK_H_
-
-#include <stdint.h>
-#include <vector>
-
-namespace testing {
-
-class Benchmark {
- public:
-  Benchmark(const char* name, void (*fn)(int)) {
-    Register(name, fn, NULL);
-  }
-
-  Benchmark(const char* name, void (*fn_range)(int, int)) {
-    Register(name, NULL, fn_range);
-  }
-
-  Benchmark* Arg(int x);
-
-  const char* Name();
-
-  bool ShouldRun(int argc, char* argv[]);
-  void Run();
-
- private:
-  const char* name_;
-
-  void (*fn_)(int);
-  void (*fn_range_)(int, int);
-
-  std::vector<int> args_;
-
-  void Register(const char* name, void (*fn)(int), void (*fn_range)(int, int));
-  void RunRepeatedlyWithArg(int iterations, int arg);
-  void RunWithArg(int arg);
-};
-
-}  // namespace testing
-
-void SetBenchmarkBytesProcessed(int64_t);
-void StopBenchmarkTiming();
-void StartBenchmarkTiming();
-
-#define BENCHMARK(f) \
-    static ::testing::Benchmark* _benchmark_##f __attribute__((unused)) = \
-        (new ::testing::Benchmark(#f, f))
-
-#endif
diff --git a/benchmarks/main.cpp b/benchmarks/main.cpp
new file mode 100644
index 0000000..5bce479
--- /dev/null
+++ b/benchmarks/main.cpp
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+
+#include <regex.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <vector>
+
+#include <benchmark/Benchmark.h>
+
+int main(int argc, char* argv[]) {
+  if (::testing::Benchmark::List().empty()) {
+    fprintf(stderr, "No benchmarks registered!\n");
+    exit(EXIT_FAILURE);
+  }
+
+  std::vector<regex_t*> regs;
+  for (int i = 1; i < argc; i++) {
+    regex_t* re = new regex_t;
+    int errcode = regcomp(re, argv[i], 0);
+    if (errcode != 0) {
+      size_t errbuf_size = regerror(errcode, re, NULL, 0);
+      if (errbuf_size > 0) {
+        char* errbuf = new char[errbuf_size];
+        regerror(errcode, re, errbuf, errbuf_size);
+        fprintf(stderr, "Couldn't compile \"%s\" as a regular expression: %s\n",
+                argv[i], errbuf);
+      } else {
+        fprintf(stderr, "Unknown compile error for \"%s\" as a regular expression!\n", argv[i]);
+      }
+      exit(EXIT_FAILURE);
+    }
+    regs.push_back(re);
+  }
+
+  if (::testing::Benchmark::RunAll(regs) == 0) {
+    fprintf(stderr, "No matching benchmarks!\n");
+    fprintf(stderr, "Available benchmarks:\n");
+    for (const auto& benchmark : ::testing::Benchmark::List()) {
+      fprintf(stderr, "  %s\n", benchmark->Name().c_str());
+    }
+    exit(EXIT_FAILURE);
+  }
+
+  return 0;
+}
diff --git a/benchmarks/math_benchmark.cpp b/benchmarks/math_benchmark.cpp
index 8d6dd10..4de28d1 100644
--- a/benchmarks/math_benchmark.cpp
+++ b/benchmarks/math_benchmark.cpp
@@ -14,16 +14,20 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <fenv.h>
 #include <math.h>
 
+#include <benchmark/Benchmark.h>
+
+#define AT_COMMON_VALS \
+    Arg(1234.0)->Arg(nan(""))->Arg(HUGE_VAL)->Arg(0.0)
+
 // Avoid optimization.
 volatile double d;
 volatile double v;
 
-static void BM_math_sqrt(int iters) {
+BENCHMARK_NO_ARG(BM_math_sqrt);
+void BM_math_sqrt::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -34,9 +38,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sqrt);
 
-static void BM_math_log10(int iters) {
+BENCHMARK_NO_ARG(BM_math_log10);
+void BM_math_log10::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -47,9 +51,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_log10);
 
-static void BM_math_logb(int iters) {
+BENCHMARK_NO_ARG(BM_math_logb);
+void BM_math_logb::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 0.0;
@@ -60,61 +64,22 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_logb);
 
-static void BM_math_isinf_NORMAL(int iters) {
+BENCHMARK_WITH_ARG(BM_math_isinf, double)->AT_COMMON_VALS;
+void BM_math_isinf::Run(int iters, double value) {
   StartBenchmarkTiming();
 
   d = 0.0;
-  v = 1234.0; // FP_NORMAL
+  v = value;
   for (int i = 0; i < iters; ++i) {
     d += (isinf)(v);
   }
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_isinf_NORMAL);
 
-static void BM_math_isinf_NAN(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = nan(""); // FP_NAN
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_NAN);
-
-static void BM_math_isinf_INFINITE(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = HUGE_VAL; // FP_INFINITE
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_INFINITE);
-
-static void BM_math_isinf_ZERO(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = 0.0; // FP_ZERO
-  for (int i = 0; i < iters; ++i) {
-    d += (isinf)(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_isinf_ZERO);
-
-static void BM_math_sin_fast(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_fast);
+void BM_math_sin_fast::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -124,9 +89,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_fast);
 
-static void BM_math_sin_feupdateenv(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_feupdateenv);
+void BM_math_sin_feupdateenv::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -140,9 +105,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_feupdateenv);
 
-static void BM_math_sin_fesetenv(int iters) {
+BENCHMARK_NO_ARG(BM_math_sin_fesetenv);
+void BM_math_sin_fesetenv::Run(int iters) {
   StartBenchmarkTiming();
 
   d = 1.0;
@@ -156,56 +121,16 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_sin_fesetenv);
 
-static void BM_math_fpclassify_NORMAL(int iters) {
+BENCHMARK_WITH_ARG(BM_math_fpclassify, double)->AT_COMMON_VALS;
+void BM_math_fpclassify::Run(int iters, double value) {
   StartBenchmarkTiming();
 
   d = 0.0;
-  v = 1234.0; // FP_NORMAL
+  v = value;
   for (int i = 0; i < iters; ++i) {
     d += fpclassify(v);
   }
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_math_fpclassify_NORMAL);
-
-static void BM_math_fpclassify_NAN(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = nan(""); // FP_NAN
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_NAN);
-
-static void BM_math_fpclassify_INFINITE(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = HUGE_VAL; // FP_INFINITE
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_INFINITE);
-
-static void BM_math_fpclassify_ZERO(int iters) {
-  StartBenchmarkTiming();
-
-  d = 0.0;
-  v = 0.0; // FP_ZERO
-  for (int i = 0; i < iters; ++i) {
-    d += fpclassify(v);
-  }
-
-  StopBenchmarkTiming();
-}
-BENCHMARK(BM_math_fpclassify_ZERO);
diff --git a/benchmarks/property_benchmark.cpp b/benchmarks/property_benchmark.cpp
index 0802b4c..944cd68 100644
--- a/benchmarks/property_benchmark.cpp
+++ b/benchmarks/property_benchmark.cpp
@@ -14,19 +14,21 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <string>
+
+#if defined(__BIONIC__)
+
 #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
 #include <sys/_system_properties.h>
 
-#include <vector>
-#include <string>
+#include <benchmark/Benchmark.h>
 
-extern void *__system_property_area__;
+extern void* __system_property_area__;
 
 // Do not exceed 512, that is about the largest number of properties
 // that can be created with the current property area size.
@@ -34,200 +36,198 @@
     Arg(1)->Arg(4)->Arg(16)->Arg(64)->Arg(128)->Arg(256)->Arg(512)
 
 struct LocalPropertyTestState {
-    LocalPropertyTestState(int nprops) : nprops(nprops), valid(false) {
-        static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.";
+  LocalPropertyTestState(int nprops) : nprops(nprops), valid(false) {
+    static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.";
 
-        const char* android_data = getenv("ANDROID_DATA");
-        if (android_data == NULL) {
-          printf("ANDROID_DATA environment variable not set\n");
-          return;
-        }
-        char dir_template[PATH_MAX];
-        snprintf(dir_template, sizeof(dir_template), "%s/local/tmp/prop-XXXXXX", android_data);
-        char *dirname = mkdtemp(dir_template);
-        if (!dirname) {
-            printf("making temp file for test state failed (is %s/local/tmp writable?): %s\n",
-                   android_data, strerror(errno));
-            return;
-        }
-
-        old_pa = __system_property_area__;
-        __system_property_area__ = NULL;
-
-        pa_dirname = dirname;
-        pa_filename = pa_dirname + "/__properties__";
-
-        __system_property_set_filename(pa_filename.c_str());
-        __system_property_area_init();
-
-        names = new char* [nprops];
-        name_lens = new int[nprops];
-        values = new char* [nprops];
-        value_lens = new int[nprops];
-
-        srandom(nprops);
-
-        for (int i = 0; i < nprops; i++) {
-            // Make sure the name has at least 10 characters to make
-            // it very unlikely to generate the same random name.
-            name_lens[i] = (random() % (PROP_NAME_MAX - 10)) + 10;
-            names[i] = new char[PROP_NAME_MAX + 1];
-            size_t prop_name_len = sizeof(prop_name_chars) - 1;
-            for (int j = 0; j < name_lens[i]; j++) {
-                if (j == 0 || names[i][j-1] == '.' || j == name_lens[i] - 1) {
-                    // Certain values are not allowed:
-                    // - Don't start name with '.'
-                    // - Don't allow '.' to appear twice in a row
-                    // - Don't allow the name to end with '.'
-                    // This assumes that '.' is the last character in the
-                    // array so that decrementing the length by one removes
-                    // the value from the possible values.
-                    prop_name_len--;
-                }
-                names[i][j] = prop_name_chars[random() % prop_name_len];
-            }
-            names[i][name_lens[i]] = 0;
-
-            // Make sure the value contains at least 1 character.
-            value_lens[i] = (random() % (PROP_VALUE_MAX - 1)) + 1;
-            values[i] = new char[PROP_VALUE_MAX];
-            for (int j = 0; j < value_lens[i]; j++) {
-                values[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
-            }
-
-            if (__system_property_add(names[i], name_lens[i], values[i], value_lens[i]) < 0) {
-                printf("Failed to add a property, terminating...\n");
-                printf("%s = %.*s\n", names[i], value_lens[i], values[i]);
-                exit(1);
-            }
-        }
-
-        valid = true;
+    const char* android_data = getenv("ANDROID_DATA");
+    if (android_data == NULL) {
+      printf("ANDROID_DATA environment variable not set\n");
+      return;
+    }
+    char dir_template[PATH_MAX];
+    snprintf(dir_template, sizeof(dir_template), "%s/local/tmp/prop-XXXXXX", android_data);
+    char* dirname = mkdtemp(dir_template);
+    if (!dirname) {
+      printf("making temp file for test state failed (is %s/local/tmp writable?): %s\n",
+             android_data, strerror(errno));
+      return;
     }
 
-    ~LocalPropertyTestState() {
-        if (!valid)
-            return;
+    old_pa = __system_property_area__;
+    __system_property_area__ = NULL;
 
-        __system_property_area__ = old_pa;
+    pa_dirname = dirname;
+    pa_filename = pa_dirname + "/__properties__";
 
-        __system_property_set_filename(PROP_FILENAME);
-        unlink(pa_filename.c_str());
-        rmdir(pa_dirname.c_str());
+    __system_property_set_filename(pa_filename.c_str());
+    __system_property_area_init();
 
-        for (int i = 0; i < nprops; i++) {
-            delete names[i];
-            delete values[i];
+    names = new char* [nprops];
+    name_lens = new int[nprops];
+    values = new char* [nprops];
+    value_lens = new int[nprops];
+
+    srandom(nprops);
+
+    for (int i = 0; i < nprops; i++) {
+      // Make sure the name has at least 10 characters to make
+      // it very unlikely to generate the same random name.
+      name_lens[i] = (random() % (PROP_NAME_MAX - 10)) + 10;
+      names[i] = new char[PROP_NAME_MAX + 1];
+      size_t prop_name_len = sizeof(prop_name_chars) - 1;
+      for (int j = 0; j < name_lens[i]; j++) {
+        if (j == 0 || names[i][j-1] == '.' || j == name_lens[i] - 1) {
+          // Certain values are not allowed:
+          // - Don't start name with '.'
+          // - Don't allow '.' to appear twice in a row
+          // - Don't allow the name to end with '.'
+          // This assumes that '.' is the last character in the
+          // array so that decrementing the length by one removes
+          // the value from the possible values.
+          prop_name_len--;
         }
-        delete[] names;
-        delete[] name_lens;
-        delete[] values;
-        delete[] value_lens;
+        names[i][j] = prop_name_chars[random() % prop_name_len];
+      }
+      names[i][name_lens[i]] = 0;
+
+      // Make sure the value contains at least 1 character.
+      value_lens[i] = (random() % (PROP_VALUE_MAX - 1)) + 1;
+      values[i] = new char[PROP_VALUE_MAX];
+      for (int j = 0; j < value_lens[i]; j++) {
+        values[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
+      }
+
+      if (__system_property_add(names[i], name_lens[i], values[i], value_lens[i]) < 0) {
+        printf("Failed to add a property, terminating...\n");
+        printf("%s = %.*s\n", names[i], value_lens[i], values[i]);
+        exit(1);
+      }
     }
+
+    valid = true;
+  }
+
+  ~LocalPropertyTestState() {
+    if (!valid)
+      return;
+
+    __system_property_area__ = old_pa;
+
+    __system_property_set_filename(PROP_FILENAME);
+    unlink(pa_filename.c_str());
+    rmdir(pa_dirname.c_str());
+
+    for (int i = 0; i < nprops; i++) {
+      delete names[i];
+      delete values[i];
+    }
+    delete[] names;
+    delete[] name_lens;
+    delete[] values;
+    delete[] value_lens;
+  }
 public:
-    const int nprops;
-    char **names;
-    int *name_lens;
-    char **values;
-    int *value_lens;
-    bool valid;
+  const int nprops;
+  char** names;
+  int* name_lens;
+  char** values;
+  int* value_lens;
+  bool valid;
 
 private:
-    std::string pa_dirname;
-    std::string pa_filename;
-    void *old_pa;
+  std::string pa_dirname;
+  std::string pa_filename;
+  void* old_pa;
 };
 
-static void BM_property_get(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_get, int)->TEST_NUM_PROPS;
+void BM_property_get::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
-    char value[PROP_VALUE_MAX];
+  LocalPropertyTestState pa(nprops);
+  char value[PROP_VALUE_MAX];
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
+  srandom(iters * nprops);
 
-    StartBenchmarkTiming();
+  StartBenchmarkTiming();
 
-    for (int i = 0; i < iters; i++) {
-        __system_property_get(pa.names[random() % nprops], value);
-    }
-    StopBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_get(pa.names[random() % nprops], value);
+  }
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_property_get)->TEST_NUM_PROPS;
 
-static void BM_property_find(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_find, int)->TEST_NUM_PROPS;
+void BM_property_find::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
+  srandom(iters * nprops);
 
-    StartBenchmarkTiming();
+  StartBenchmarkTiming();
 
-    for (int i = 0; i < iters; i++) {
-        __system_property_find(pa.names[random() % nprops]);
-    }
-    StopBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_find(pa.names[random() % nprops]);
+  }
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_property_find)->TEST_NUM_PROPS;
 
-static void BM_property_read(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_read, int)->TEST_NUM_PROPS;
+void BM_property_read::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
-    const prop_info** pinfo = new const prop_info*[iters];
-    char propvalue[PROP_VALUE_MAX];
+  srandom(iters * nprops);
+  const prop_info** pinfo = new const prop_info*[iters];
+  char propvalue[PROP_VALUE_MAX];
 
-    for (int i = 0; i < iters; i++) {
-        pinfo[i] = __system_property_find(pa.names[random() % nprops]);
-    }
+  for (int i = 0; i < iters; i++) {
+    pinfo[i] = __system_property_find(pa.names[random() % nprops]);
+  }
 
-    StartBenchmarkTiming();
-    for (int i = 0; i < iters; i++) {
-        __system_property_read(pinfo[i], 0, propvalue);
-    }
-    StopBenchmarkTiming();
+  StartBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_read(pinfo[i], 0, propvalue);
+  }
+  StopBenchmarkTiming();
 
-    delete[] pinfo;
+  delete[] pinfo;
 }
-BENCHMARK(BM_property_read)->TEST_NUM_PROPS;
 
-static void BM_property_serial(int iters, int nprops)
-{
-    StopBenchmarkTiming();
+BENCHMARK_WITH_ARG(BM_property_serial, int)->TEST_NUM_PROPS;
+void BM_property_serial::Run(int iters, int nprops) {
+  StopBenchmarkTiming();
 
-    LocalPropertyTestState pa(nprops);
+  LocalPropertyTestState pa(nprops);
 
-    if (!pa.valid)
-        return;
+  if (!pa.valid)
+    return;
 
-    srandom(iters * nprops);
-    const prop_info** pinfo = new const prop_info*[iters];
+  srandom(iters * nprops);
+  const prop_info** pinfo = new const prop_info*[iters];
 
-    for (int i = 0; i < iters; i++) {
-        pinfo[i] = __system_property_find(pa.names[random() % nprops]);
-    }
+  for (int i = 0; i < iters; i++) {
+    pinfo[i] = __system_property_find(pa.names[random() % nprops]);
+  }
 
-    StartBenchmarkTiming();
-    for (int i = 0; i < iters; i++) {
-        __system_property_serial(pinfo[i]);
-    }
-    StopBenchmarkTiming();
+  StartBenchmarkTiming();
+  for (int i = 0; i < iters; i++) {
+    __system_property_serial(pinfo[i]);
+  }
+  StopBenchmarkTiming();
 
-    delete[] pinfo;
+  delete[] pinfo;
 }
-BENCHMARK(BM_property_serial)->TEST_NUM_PROPS;
+
+#endif  // __BIONIC__
diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp
index 42023e0..ad31e7e 100644
--- a/benchmarks/pthread_benchmark.cpp
+++ b/benchmarks/pthread_benchmark.cpp
@@ -14,14 +14,15 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <pthread.h>
 
+#include <benchmark/Benchmark.h>
+
 // Stop GCC optimizing out our pure function.
 /* Must not be static! */ pthread_t (*pthread_self_fp)() = pthread_self;
 
-static void BM_pthread_self(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_self);
+void BM_pthread_self::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -30,9 +31,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_self);
 
-static void BM_pthread_getspecific(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_getspecific);
+void BM_pthread_getspecific::Run(int iters) {
   StopBenchmarkTiming();
   pthread_key_t key;
   pthread_key_create(&key, NULL);
@@ -45,9 +46,9 @@
   StopBenchmarkTiming();
   pthread_key_delete(key);
 }
-BENCHMARK(BM_pthread_getspecific);
 
-static void BM_pthread_setspecific(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_setspecific);
+void BM_pthread_setspecific::Run(int iters) {
   StopBenchmarkTiming();
   pthread_key_t key;
   pthread_key_create(&key, NULL);
@@ -60,12 +61,12 @@
   StopBenchmarkTiming();
   pthread_key_delete(key);
 }
-BENCHMARK(BM_pthread_setspecific);
 
 static void DummyPthreadOnceInitFunction() {
 }
 
-static void BM_pthread_once(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_once);
+void BM_pthread_once::Run(int iters) {
   StopBenchmarkTiming();
   pthread_once_t once = PTHREAD_ONCE_INIT;
   pthread_once(&once, DummyPthreadOnceInitFunction);
@@ -77,9 +78,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_once);
 
-static void BM_pthread_mutex_lock(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock);
+void BM_pthread_mutex_lock::Run(int iters) {
   StopBenchmarkTiming();
   pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
   StartBenchmarkTiming();
@@ -91,9 +92,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock);
 
-static void BM_pthread_mutex_lock_ERRORCHECK(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock_ERRORCHECK);
+void BM_pthread_mutex_lock_ERRORCHECK::Run(int iters) {
   StopBenchmarkTiming();
   pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
   StartBenchmarkTiming();
@@ -105,9 +106,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock_ERRORCHECK);
 
-static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_mutex_lock_RECURSIVE);
+void BM_pthread_mutex_lock_RECURSIVE::Run(int iters) {
   StopBenchmarkTiming();
   pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
   StartBenchmarkTiming();
@@ -119,9 +120,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_pthread_mutex_lock_RECURSIVE);
 
-static void BM_pthread_rw_lock_read(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_rwlock_read);
+void BM_pthread_rwlock_read::Run(int iters) {
   StopBenchmarkTiming();
   pthread_rwlock_t lock;
   pthread_rwlock_init(&lock, NULL);
@@ -135,9 +136,9 @@
   StopBenchmarkTiming();
   pthread_rwlock_destroy(&lock);
 }
-BENCHMARK(BM_pthread_rw_lock_read);
 
-static void BM_pthread_rw_lock_write(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_rwlock_write);
+void BM_pthread_rwlock_write::Run(int iters) {
   StopBenchmarkTiming();
   pthread_rwlock_t lock;
   pthread_rwlock_init(&lock, NULL);
@@ -151,13 +152,13 @@
   StopBenchmarkTiming();
   pthread_rwlock_destroy(&lock);
 }
-BENCHMARK(BM_pthread_rw_lock_write);
 
 static void* IdleThread(void*) {
   return NULL;
 }
 
-static void BM_pthread_create(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_create);
+void BM_pthread_create::Run(int iters) {
   StopBenchmarkTiming();
   pthread_t thread;
 
@@ -168,43 +169,45 @@
     pthread_join(thread, NULL);
   }
 }
-BENCHMARK(BM_pthread_create);
 
-static void* RunThread(void*) {
-  StopBenchmarkTiming();
+static void* RunThread(void* arg) {
+  ::testing::Benchmark* benchmark = reinterpret_cast<::testing::Benchmark*>(arg);
+  benchmark->StopBenchmarkTiming();
   return NULL;
 }
 
-static void BM_pthread_create_and_run(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_create_and_run);
+void BM_pthread_create_and_run::Run(int iters) {
   StopBenchmarkTiming();
   pthread_t thread;
 
   for (int i = 0; i < iters; ++i) {
     StartBenchmarkTiming();
-    pthread_create(&thread, NULL, RunThread, NULL);
+    pthread_create(&thread, NULL, RunThread, this);
     pthread_join(thread, NULL);
   }
 }
-BENCHMARK(BM_pthread_create_and_run);
 
-static void* ExitThread(void*) {
-  StartBenchmarkTiming();
+static void* ExitThread(void* arg) {
+  ::testing::Benchmark* benchmark = reinterpret_cast<::testing::Benchmark*>(arg);
+  benchmark->StartBenchmarkTiming();
   pthread_exit(NULL);
 }
 
-static void BM_pthread_exit_and_join(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_exit_and_join);
+void BM_pthread_exit_and_join::Run(int iters) {
   StopBenchmarkTiming();
   pthread_t thread;
 
   for (int i = 0; i < iters; ++i) {
-    pthread_create(&thread, NULL, ExitThread, NULL);
+    pthread_create(&thread, NULL, ExitThread, this);
     pthread_join(thread, NULL);
     StopBenchmarkTiming();
   }
 }
-BENCHMARK(BM_pthread_exit_and_join);
 
-static void BM_pthread_key_create(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_key_create);
+void BM_pthread_key_create::Run(int iters) {
   StopBenchmarkTiming();
   pthread_key_t key;
 
@@ -215,9 +218,9 @@
     pthread_key_delete(key);
   }
 }
-BENCHMARK(BM_pthread_key_create);
 
-static void BM_pthread_key_delete(int iters) {
+BENCHMARK_NO_ARG(BM_pthread_key_delete);
+void BM_pthread_key_delete::Run(int iters) {
   StopBenchmarkTiming();
   pthread_key_t key;
 
@@ -228,4 +231,3 @@
     StopBenchmarkTiming();
   }
 }
-BENCHMARK(BM_pthread_key_delete);
diff --git a/benchmarks/semaphore_benchmark.cpp b/benchmarks/semaphore_benchmark.cpp
index 974b046..8dd5684 100644
--- a/benchmarks/semaphore_benchmark.cpp
+++ b/benchmarks/semaphore_benchmark.cpp
@@ -14,14 +14,15 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <pthread.h>
 #include <semaphore.h>
 #include <stdatomic.h>
 #include <stdio.h>
 
-static void BM_semaphore_sem_getvalue(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_semaphore_sem_getvalue);
+void BM_semaphore_sem_getvalue::Run(int iters) {
   StopBenchmarkTiming();
   sem_t semaphore;
   sem_init(&semaphore, 1, 1);
@@ -34,9 +35,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_semaphore_sem_getvalue);
 
-static void BM_semaphore_sem_wait_sem_post(int iters) {
+BENCHMARK_NO_ARG(BM_semaphore_sem_wait_sem_post);
+void BM_semaphore_sem_wait_sem_post::Run(int iters) {
   StopBenchmarkTiming();
   sem_t semaphore;
   sem_init(&semaphore, 1, 1);
@@ -49,7 +50,6 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_semaphore_sem_wait_sem_post);
 
 /*
  *    This test reports the overhead of the underlying futex wake syscall on
@@ -87,7 +87,8 @@
     return NULL;
 }
 
-static void BM_semaphore_sem_post(int iters) {
+BENCHMARK_NO_ARG(BM_semaphore_sem_post);
+void BM_semaphore_sem_post::Run(int iters) {
   StopBenchmarkTiming();
 
   sem_t semaphore;
@@ -100,9 +101,6 @@
   pthread_attr_setschedparam(&attr, &param);
   pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
   pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-#ifdef PTHREAD_SET_INHERIT_SCHED
-  pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
-#endif
   pthread_t pthread;
   pthread_create(&pthread, &attr, BM_semaphore_sem_post_start_thread, &semaphore);
   pthread_attr_destroy(&attr);
@@ -143,99 +141,3 @@
     sched_yield();
   } while (!BM_semaphore_sem_post_running);
 }
-BENCHMARK(BM_semaphore_sem_post);
-
-/*
- *    This test reports the overhead of sem_post to sem_wake. A circle of
- * num_semaphore - 1 threads are run on a set of semaphores to measure the
- * activity. One can calculate the sem_wake overhead alone by:
- *
- * BM_semaphore_sem_post_sem_wait - BM_semaphore_sem_post - BM_time_clock_gettime
- *
- * Differences will result if there are more threads than active processors,
- * there will be delay induced when scheduling the processes. This cost is
- * measured by trying different values of num_semaphore. The governor selected
- * will have a major impact on the results for a large number of threads.
- *
- *     To reduce the chances for threads racing ahead and not triggering the
- * futex, for example the background threads finish their job before the
- * sem_wait is hit in the main thread, the background threads will run at
- * batch priority and the main thread at fifo priority. This should generally
- * guarantee the main thread completes its task of priming itself with the
- * sem_wait before the other threads can start. In practice without the
- * sched mechanics here, this works on Android configured kernels, this is
- * insurance for wacky(tm) sched configurations.
- */
-static void *BM_semaphore_sem_post_sem_wait_start_thread(void *obj) {
-  sem_t *semaphore = reinterpret_cast<sem_t *>(obj);
-
-  while ((BM_semaphore_sem_post_running > 0) && !sem_wait(semaphore)) {
-    sem_post(semaphore + 1);
-  }
-  --BM_semaphore_sem_post_running;
-  return NULL;
-}
-
-static void BM_semaphore_sem_post_sem_wait_num(int iters, int num_semaphore) {
-  StopBenchmarkTiming();
-
-  sem_t semaphore[num_semaphore];
-
-  for (int i = 0; i < num_semaphore; ++i) {
-    sem_init(semaphore + i, 0, 0);
-  }
-
-  pthread_attr_t attr;
-  pthread_attr_init(&attr);
-  BM_semaphore_sem_post_running = 1;
-  struct sched_param param = { 0, };
-  pthread_attr_setschedparam(&attr, &param);
-  pthread_attr_setschedpolicy(&attr, SCHED_BATCH);
-  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-#ifdef PTHREAD_SET_INHERIT_SCHED
-  pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
-#endif
-  for (int i = 0; i < (num_semaphore - 1); ++i) {
-    pthread_t pthread;
-    pthread_create(&pthread, &attr, BM_semaphore_sem_post_sem_wait_start_thread, semaphore + i);
-  }
-  pthread_attr_destroy(&attr);
-  sched_yield();
-
-  param.sched_priority = 1;
-  sched_setscheduler((pid_t)0, SCHED_FIFO, &param);
-
-  StartBenchmarkTiming();
-
-  for (int i = 0; i < iters; i += num_semaphore) {
-    sem_post(semaphore);
-    sem_wait(semaphore + num_semaphore - 1);
-  }
-
-  StopBenchmarkTiming();
-
-  param.sched_priority = 0;
-  sched_setscheduler((pid_t)0, SCHED_OTHER, &param);
-
-  if (BM_semaphore_sem_post_running > 0) {
-    BM_semaphore_sem_post_running = 0;
-  }
-  for (int i = 0;
-       (i < (10 * num_semaphore)) && (BM_semaphore_sem_post_running > (1 - num_semaphore));
-       ++i) {
-    for (int j = 0; j < (num_semaphore - 1); ++j) {
-      sem_post(semaphore + j);
-    }
-    sched_yield();
-  }
-}
-
-static void BM_semaphore_sem_post_sem_wait_low(int iters) {
-    BM_semaphore_sem_post_sem_wait_num(iters, 2);
-}
-BENCHMARK(BM_semaphore_sem_post_sem_wait_low);
-
-static void BM_semaphore_sem_post_sem_wait_high(int iters) {
-    BM_semaphore_sem_post_sem_wait_num(iters, 100);
-}
-BENCHMARK(BM_semaphore_sem_post_sem_wait_high);
diff --git a/benchmarks/stdio_benchmark.cpp b/benchmarks/stdio_benchmark.cpp
index 5658a50..342e561 100644
--- a/benchmarks/stdio_benchmark.cpp
+++ b/benchmarks/stdio_benchmark.cpp
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <stdio.h>
 #include <stdio_ext.h>
 
+#include <benchmark/Benchmark.h>
+
 #define KB 1024
 #define MB 1024*KB
 
@@ -27,12 +27,12 @@
     Arg(1*KB)->Arg(4*KB)->Arg(8*KB)->Arg(16*KB)->Arg(64*KB)
 
 template <typename Fn>
-static void ReadWriteTest(int iters, int chunk_size, Fn f, bool buffered) {
-  StopBenchmarkTiming();
+void ReadWriteTest(::testing::Benchmark* benchmark, int iters, int chunk_size, Fn f, bool buffered) {
+  benchmark->StopBenchmarkTiming();
   FILE* fp = fopen("/dev/zero", "rw");
   __fsetlocking(fp, FSETLOCKING_BYCALLER);
   char* buf = new char[chunk_size];
-  StartBenchmarkTiming();
+  benchmark->StartBenchmarkTiming();
 
   if (!buffered) {
     setvbuf(fp, 0, _IONBF, 0);
@@ -42,31 +42,31 @@
     f(buf, chunk_size, 1, fp);
   }
 
-  StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(chunk_size));
+  benchmark->StopBenchmarkTiming();
+  benchmark->SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(chunk_size));
   delete[] buf;
   fclose(fp);
 }
 
-static void BM_stdio_fread(int iters, int chunk_size) {
-  ReadWriteTest(iters, chunk_size, fread, true);
+BENCHMARK_WITH_ARG(BM_stdio_fread, int)->AT_COMMON_SIZES;
+void BM_stdio_fread::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fread, true);
 }
-BENCHMARK(BM_stdio_fread)->AT_COMMON_SIZES;
 
-static void BM_stdio_fwrite(int iters, int chunk_size) {
-  ReadWriteTest(iters, chunk_size, fwrite, true);
+BENCHMARK_WITH_ARG(BM_stdio_fwrite, int)->AT_COMMON_SIZES;
+void BM_stdio_fwrite::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fwrite, true);
 }
-BENCHMARK(BM_stdio_fwrite)->AT_COMMON_SIZES;
 
-static void BM_stdio_fread_unbuffered(int iters, int chunk_size) {
-  ReadWriteTest(iters, chunk_size, fread, false);
+BENCHMARK_WITH_ARG(BM_stdio_fread_unbuffered, int)->AT_COMMON_SIZES;
+void BM_stdio_fread_unbuffered::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fread, false);
 }
-BENCHMARK(BM_stdio_fread_unbuffered)->AT_COMMON_SIZES;
 
-static void BM_stdio_fwrite_unbuffered(int iters, int chunk_size) {
-  ReadWriteTest(iters, chunk_size, fwrite, false);
+BENCHMARK_WITH_ARG(BM_stdio_fwrite_unbuffered, int)->AT_COMMON_SIZES;
+void BM_stdio_fwrite_unbuffered::Run(int iters, int chunk_size) {
+  ReadWriteTest(this, iters, chunk_size, fwrite, false);
 }
-BENCHMARK(BM_stdio_fwrite_unbuffered)->AT_COMMON_SIZES;
 
 static void FopenFgetsFclose(int iters, bool no_locking) {
   char buf[1024];
@@ -78,12 +78,16 @@
   }
 }
 
-static void BM_stdio_fopen_fgets_fclose_locking(int iters) {
+BENCHMARK_NO_ARG(BM_stdio_fopen_fgets_fclose_locking);
+void BM_stdio_fopen_fgets_fclose_locking::Run(int iters) {
+  StartBenchmarkTiming();
   FopenFgetsFclose(iters, false);
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_stdio_fopen_fgets_fclose_locking);
 
-static void BM_stdio_fopen_fgets_fclose_no_locking(int iters) {
+BENCHMARK_NO_ARG(BM_stdio_fopen_fgets_fclose_no_locking);
+void BM_stdio_fopen_fgets_fclose_no_locking::Run(int iters) {
+  StartBenchmarkTiming();
   FopenFgetsFclose(iters, true);
+  StopBenchmarkTiming();
 }
-BENCHMARK(BM_stdio_fopen_fgets_fclose_no_locking);
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp
index 536e253..866aa00 100644
--- a/benchmarks/string_benchmark.cpp
+++ b/benchmarks/string_benchmark.cpp
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
+#include <stdint.h>
 #include <string.h>
 
+#include <benchmark/Benchmark.h>
+
 #define KB 1024
 #define MB 1024*KB
 
@@ -26,7 +27,8 @@
 
 // TODO: test unaligned operation too? (currently everything will be 8-byte aligned by malloc.)
 
-static void BM_string_memcmp(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memcmp, int)->AT_COMMON_SIZES;
+void BM_string_memcmp::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* src = new char[nbytes]; char* dst = new char[nbytes];
   memset(src, 'x', nbytes);
@@ -39,13 +41,13 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] src;
   delete[] dst;
 }
-BENCHMARK(BM_string_memcmp)->AT_COMMON_SIZES;
 
-static void BM_string_memcpy(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memcpy, int)->AT_COMMON_SIZES;
+void BM_string_memcpy::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* src = new char[nbytes]; char* dst = new char[nbytes];
   memset(src, 'x', nbytes);
@@ -56,13 +58,13 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] src;
   delete[] dst;
 }
-BENCHMARK(BM_string_memcpy)->AT_COMMON_SIZES;
 
-static void BM_string_memmove(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memmove, int)->AT_COMMON_SIZES;
+void BM_string_memmove::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* buf = new char[nbytes + 64];
   memset(buf, 'x', nbytes + 64);
@@ -73,12 +75,12 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] buf;
 }
-BENCHMARK(BM_string_memmove)->AT_COMMON_SIZES;
 
-static void BM_string_memset(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_memset, int)->AT_COMMON_SIZES;
+void BM_string_memset::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* dst = new char[nbytes];
   StartBenchmarkTiming();
@@ -88,12 +90,12 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] dst;
 }
-BENCHMARK(BM_string_memset)->AT_COMMON_SIZES;
 
-static void BM_string_strlen(int iters, int nbytes) {
+BENCHMARK_WITH_ARG(BM_string_strlen, int)->AT_COMMON_SIZES;
+void BM_string_strlen::Run(int iters, int nbytes) {
   StopBenchmarkTiming();
   char* s = new char[nbytes];
   memset(s, 'x', nbytes);
@@ -106,7 +108,6 @@
   }
 
   StopBenchmarkTiming();
-  SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes));
+  SetBenchmarkBytesProcessed(uint64_t(iters) * uint64_t(nbytes));
   delete[] s;
 }
-BENCHMARK(BM_string_strlen)->AT_COMMON_SIZES;
diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp
index f093ec1..6688bbc 100644
--- a/benchmarks/time_benchmark.cpp
+++ b/benchmarks/time_benchmark.cpp
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
-#include <unistd.h>
 #include <sys/syscall.h>
 #include <sys/time.h>
 #include <time.h>
 
-static void BM_time_clock_gettime(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_time_clock_gettime);
+void BM_time_clock_gettime::Run(int iters) {
   StartBenchmarkTiming();
 
   timespec t;
@@ -31,9 +31,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_clock_gettime);
 
-static void BM_time_clock_gettime_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_time_clock_gettime_syscall);
+void BM_time_clock_gettime_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   timespec t;
@@ -43,9 +43,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_clock_gettime_syscall);
 
-static void BM_time_gettimeofday(int iters) {
+BENCHMARK_NO_ARG(BM_time_gettimeofday);
+void BM_time_gettimeofday::Run(int iters) {
   StartBenchmarkTiming();
 
   timeval tv;
@@ -55,9 +55,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_gettimeofday);
 
-static void BM_time_gettimeofday_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_time_gettimeofday_syscall);
+void BM_time_gettimeofday_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   timeval tv;
@@ -67,9 +67,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_gettimeofday_syscall);
 
-static void BM_time_time(int iters) {
+BENCHMARK_NO_ARG(BM_time_time);
+void BM_time_time::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -78,4 +78,3 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_time_time);
diff --git a/benchmarks/unistd_benchmark.cpp b/benchmarks/unistd_benchmark.cpp
index 94be1dd..09ca0e6 100644
--- a/benchmarks/unistd_benchmark.cpp
+++ b/benchmarks/unistd_benchmark.cpp
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-#include "benchmark.h"
-
 #include <sys/syscall.h>
 #include <unistd.h>
 
-static void BM_unistd_getpid(int iters) {
+#include <benchmark/Benchmark.h>
+
+BENCHMARK_NO_ARG(BM_unistd_getpid);
+void BM_unistd_getpid::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -28,9 +29,9 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_getpid);
 
-static void BM_unistd_getpid_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_unistd_getpid_syscall);
+void BM_unistd_getpid_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -39,14 +40,14 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_getpid_syscall);
 
 #if defined(__BIONIC__)
 
 // Stop GCC optimizing out our pure function.
 /* Must not be static! */ pid_t (*gettid_fp)() = gettid;
 
-static void BM_unistd_gettid(int iters) {
+BENCHMARK_NO_ARG(BM_unistd_gettid);
+void BM_unistd_gettid::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -55,11 +56,11 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_gettid);
 
 #endif
 
-static void BM_unistd_gettid_syscall(int iters) {
+BENCHMARK_NO_ARG(BM_unistd_gettid_syscall);
+void BM_unistd_gettid_syscall::Run(int iters) {
   StartBenchmarkTiming();
 
   for (int i = 0; i < iters; ++i) {
@@ -68,4 +69,3 @@
 
   StopBenchmarkTiming();
 }
-BENCHMARK(BM_unistd_gettid_syscall);
diff --git a/benchmarks/utils.cpp b/benchmarks/utils.cpp
new file mode 100644
index 0000000..863b9db
--- /dev/null
+++ b/benchmarks/utils.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "utils.h"
+
+int Round(int n) {
+  int base = 1;
+  while (base*10 < n) {
+    base *= 10;
+  }
+  if (n < 2*base) {
+    return 2*base;
+  }
+  if (n < 5*base) {
+    return 5*base;
+  }
+  return 10*base;
+}
+
+// Similar to the code in art, but supporting both binary and decimal prefixes.
+std::string PrettyInt(long value, size_t base) {
+  if (base != 2 && base != 10) abort();
+
+  uint64_t count = static_cast<uint64_t>(value);
+  bool negative_number = false;
+  if (value < 0) {
+    negative_number = true;
+    count = static_cast<uint64_t>(-value);
+  }
+
+  // The byte thresholds at which we display amounts. A count is displayed
+  // in unit U when kUnitThresholds[U] <= bytes < kUnitThresholds[U+1].
+  static const uint64_t kUnitThresholds2[] = {
+    1024*1024*1024 /* Gi */, 2*1024*1024 /* Mi */, 3*1024 /* Ki */, 0,
+  };
+  static const uint64_t kUnitThresholds10[] = {
+    1000*1000*1000 /* G */, 2*1000*1000 /* M */, 3*1000 /* k */, 0,
+  };
+  static const uint64_t kAmountPerUnit2[] = { 1024*1024*1024, 1024*1024, 1024, 1 };
+  static const uint64_t kAmountPerUnit10[] = { 1000*1000*1000, 1000*1000, 1000, 1 };
+  static const char* const kUnitStrings2[] = { "Gi", "Mi", "Ki", "" };
+  static const char* const kUnitStrings10[] = { "G", "M", "k", "" };
+
+  // Which set are we using?
+  const uint64_t* kUnitThresholds = ((base == 2) ? kUnitThresholds2 : kUnitThresholds10);
+  const uint64_t* kAmountPerUnit = ((base == 2) ? kAmountPerUnit2 : kAmountPerUnit10);
+  const char* const* kUnitStrings = ((base == 2) ? kUnitStrings2 : kUnitStrings10);
+
+  size_t i = 0;
+  for (; kUnitThresholds[i] != 0; ++i) {
+    if (count >= kUnitThresholds[i]) {
+      break;
+    }
+  }
+  char* s = NULL;
+  asprintf(&s, "%s%" PRId64 "%s", (negative_number ? "-" : ""),
+           count / kAmountPerUnit[i], kUnitStrings[i]);
+  std::string result(s);
+  free(s);
+  return result;
+}
diff --git a/benchmarks/utils.h b/benchmarks/utils.h
new file mode 100644
index 0000000..c3c64ba
--- /dev/null
+++ b/benchmarks/utils.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef BENCHMARKS_UTILS_H
+#define BENCHMARKS_UTILS_H
+
+#include <stddef.h>
+#include <string>
+
+int Round(int n);
+std::string PrettyInt(long value, size_t base);
+
+#endif  // BENCHMARKS_UTILS_H
diff --git a/libc/Android.mk b/libc/Android.mk
index fdaa8ee..e632ee7 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -85,7 +85,7 @@
     bionic/__vsnprintf_chk.cpp \
     bionic/__vsprintf_chk.cpp \
 
-libc_bionic_src_files := \
+libc_bionic_ndk_src_files := \
     bionic/abort.cpp \
     bionic/accept.cpp \
     bionic/accept4.cpp \
@@ -116,16 +116,14 @@
     bionic/error.cpp \
     bionic/eventfd_read.cpp \
     bionic/eventfd_write.cpp \
+    bionic/faccessat.cpp \
     bionic/fchmod.cpp \
     bionic/fchmodat.cpp \
     bionic/ffs.cpp \
     bionic/flockfile.cpp \
-    bionic/fork.cpp \
     bionic/fpclassify.cpp \
     bionic/futimens.cpp \
-    bionic/getauxval.cpp \
     bionic/getcwd.cpp \
-    bionic/getentropy_linux.c \
     bionic/gethostname.cpp \
     bionic/getpgrp.cpp \
     bionic/getpid.cpp \
@@ -146,6 +144,7 @@
     bionic/mbrtoc16.cpp \
     bionic/mbrtoc32.cpp \
     bionic/mbstate.cpp \
+    bionic/mempcpy.cpp \
     bionic/mkdir.cpp \
     bionic/mkfifo.cpp \
     bionic/mknod.cpp \
@@ -160,27 +159,6 @@
     bionic/posix_fallocate.cpp \
     bionic/posix_madvise.cpp \
     bionic/posix_timers.cpp \
-    bionic/pthread_atfork.cpp \
-    bionic/pthread_attr.cpp \
-    bionic/pthread_cond.cpp \
-    bionic/pthread_create.cpp \
-    bionic/pthread_detach.cpp \
-    bionic/pthread_equal.cpp \
-    bionic/pthread_exit.cpp \
-    bionic/pthread_getcpuclockid.cpp \
-    bionic/pthread_getschedparam.cpp \
-    bionic/pthread_gettid_np.cpp \
-    bionic/pthread_internals.cpp \
-    bionic/pthread_join.cpp \
-    bionic/pthread_key.cpp \
-    bionic/pthread_kill.cpp \
-    bionic/pthread_mutex.cpp \
-    bionic/pthread_once.cpp \
-    bionic/pthread_rwlock.cpp \
-    bionic/pthread_self.cpp \
-    bionic/pthread_setname_np.cpp \
-    bionic/pthread_setschedparam.cpp \
-    bionic/pthread_sigmask.cpp \
     bionic/ptrace.cpp \
     bionic/pty.cpp \
     bionic/raise.cpp \
@@ -223,7 +201,6 @@
     bionic/strtold.cpp \
     bionic/stubs.cpp \
     bionic/symlink.cpp \
-    bionic/sysconf.cpp \
     bionic/sysinfo.cpp \
     bionic/syslog.cpp \
     bionic/sys_siglist.c \
@@ -236,10 +213,27 @@
     bionic/umount.cpp \
     bionic/unlink.cpp \
     bionic/utimes.cpp \
-    bionic/vdso.cpp \
     bionic/wait.cpp \
     bionic/wchar.cpp \
     bionic/wctype.cpp \
+    bionic/wmempcpy.cpp \
+
+libc_bionic_src_files :=
+
+# The fork implementation depends on pthread data, so we can't include it in
+# libc_ndk.a.
+libc_bionic_src_files += bionic/fork.cpp
+
+# The data that backs getauxval is initialized in the libc init functions which
+# are invoked by the linker. If this file is included in libc_ndk.a, only one of
+# the copies of the global data will be initialized, resulting in nullptr
+# dereferences.
+libc_bionic_src_files += bionic/getauxval.cpp
+
+# These three require getauxval, which isn't available on older platforms.
+libc_bionic_src_files += bionic/getentropy_linux.c
+libc_bionic_src_files += bionic/sysconf.cpp
+libc_bionic_src_files += bionic/vdso.cpp
 
 libc_cxa_src_files := \
     bionic/__cxa_guard.cpp \
@@ -337,10 +331,13 @@
     $(libc_upstream_openbsd_gdtoa_src_files) \
     upstream-openbsd/lib/libc/gdtoa/strtorQ.c \
 
+# These two depend on getentropy_linux.cpp, which isn't in libc_ndk.a.
 libc_upstream_openbsd_src_files := \
-    upstream-openbsd/lib/libc/compat-43/killpg.c \
     upstream-openbsd/lib/libc/crypt/arc4random.c \
     upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \
+
+libc_upstream_openbsd_ndk_src_files := \
+    upstream-openbsd/lib/libc/compat-43/killpg.c \
     upstream-openbsd/lib/libc/gen/alarm.c \
     upstream-openbsd/lib/libc/gen/ctype_.c \
     upstream-openbsd/lib/libc/gen/daemon.c \
@@ -513,6 +510,32 @@
     upstream-openbsd/lib/libc/string/wcsstr.c \
     upstream-openbsd/lib/libc/string/wcswidth.c \
 
+libc_pthread_src_files := \
+    bionic/pthread_atfork.cpp \
+    bionic/pthread_attr.cpp \
+    bionic/pthread_cond.cpp \
+    bionic/pthread_create.cpp \
+    bionic/pthread_detach.cpp \
+    bionic/pthread_equal.cpp \
+    bionic/pthread_exit.cpp \
+    bionic/pthread_getcpuclockid.cpp \
+    bionic/pthread_getschedparam.cpp \
+    bionic/pthread_gettid_np.cpp \
+    bionic/pthread_internal.cpp \
+    bionic/pthread_join.cpp \
+    bionic/pthread_key.cpp \
+    bionic/pthread_kill.cpp \
+    bionic/pthread_mutex.cpp \
+    bionic/pthread_once.cpp \
+    bionic/pthread_rwlock.cpp \
+    bionic/pthread_self.cpp \
+    bionic/pthread_setname_np.cpp \
+    bionic/pthread_setschedparam.cpp \
+    bionic/pthread_sigmask.cpp \
+
+libc_thread_atexit_impl_src_files := \
+    bionic/__cxa_thread_atexit_impl.cpp \
+
 libc_arch_static_src_files := \
     bionic/dl_iterate_phdr_static.cpp \
 
@@ -786,6 +809,51 @@
 
 
 # ========================================================
+# libc_openbsd_ndk.a - upstream OpenBSD C library code
+# that can be safely included in the libc_ndk.a (doesn't
+# contain any troublesome global data or constructors).
+# ========================================================
+#
+# These files are built with the openbsd-compat.h header file
+# automatically included.
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_upstream_openbsd_ndk_src_files)
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+  # Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
+  LOCAL_CLANG := false
+else
+  LOCAL_CLANG := $(use_clang)
+endif
+
+LOCAL_CFLAGS := \
+    $(libc_common_cflags) \
+    -Wno-sign-compare \
+    -Wno-uninitialized \
+    -Wno-unused-parameter \
+    -include openbsd-compat.h \
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes) \
+    $(LOCAL_PATH)/private \
+    $(LOCAL_PATH)/upstream-openbsd/android/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
+    $(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \
+
+LOCAL_MODULE := libc_openbsd_ndk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
 # libc_openbsd.a - upstream OpenBSD C library code
 # ========================================================
 #
@@ -900,9 +968,96 @@
 LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
+# libc_bionic_ndk.a - The portions of libc_bionic that can
+# be safely used in libc_ndk.a (no troublesome global data
+# or constructors).
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_bionic_ndk_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -Wframe-larger-than=2048 \
+
+# ssse3-strcmp-slm.S does not compile with Clang.
+LOCAL_CLANG_ASFLAGS_x86_64 += -no-integrated-as
+
+# memcpy.S, memchr.S, etc. do not compile with Clang.
+LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
+LOCAL_MODULE := libc_bionic_ndk
+LOCAL_CLANG := $(use_clang)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_src_files))
 include $(BUILD_STATIC_LIBRARY)
 
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := $(libc_thread_atexit_impl_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) -fno-data-sections -Wframe-larger-than=2048
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_thread_atexit_impl
+# TODO: Clang tries to use __tls_get_addr which is not supported yet
+# remove after it is implemented.
+LOCAL_CLANG := false
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+include $(BUILD_STATIC_LIBRARY)
+
+# ========================================================
+# libc_pthread.a - pthreads parts that previously lived in
+# libc_bionic.a. Relocated to their own library because
+# they can't be included in libc_ndk.a (as they layout of
+# pthread_t has changed over the years and has ABI
+# compatibility issues).
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_pthread_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -Wframe-larger-than=2048 \
+
+# ssse3-strcmp-slm.S does not compile with Clang.
+LOCAL_CLANG_ASFLAGS_x86_64 += -no-integrated-as
+
+# memcpy.S, memchr.S, etc. do not compile with Clang.
+LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_pthread
+LOCAL_CLANG := $(use_clang)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CXX_STL := none
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+
+include $(BUILD_STATIC_LIBRARY)
+
 
 # ========================================================
 # libc_cxa.a - Things traditionally in libstdc++
@@ -992,9 +1147,56 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := libc_ndk
-LOCAL_WHOLE_STATIC_LIBRARIES := libc_syscalls libm
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_CLANG := $(use_clang)
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CFLAGS := $(libc_common_cflags) -fvisibility=hidden -O0
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_ADDRESS_SANITIZER := false
+LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+LOCAL_SRC_FILES := \
+    $(libc_common_src_files) \
+    $(libc_arch_dynamic_src_files) \
+    $(libc_ndk_stub_src_files) \
+    bionic/malloc_debug_common.cpp \
+
+LOCAL_SRC_FILES_arm += \
+    arch-common/bionic/crtbegin_so.c \
+    arch-arm/bionic/atexit_legacy.c \
+    arch-common/bionic/crtend_so.S \
+
+LOCAL_CFLAGS := $(libc_common_cflags) \
+    -DLIBC_STATIC \
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+    libc_bionic_ndk \
+    libc_cxa \
+    libc_freebsd \
+    libc_gdtoa \
+    libc_malloc \
+    libc_netbsd \
+    libc_openbsd_ndk \
+    libc_stack_protector \
+    libc_syscalls \
+    libc_tzcode \
+    libm \
+
+LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi
+LOCAL_CXX_STL := none
+
+ifneq ($(MALLOC_IMPL),dlmalloc)
+LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
+endif
+
+$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
+$(eval $(call patch-up-arch-specific-flags,LOCAL_ASFLAGS,LOCAL_CFLAGS))
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 include $(BUILD_STATIC_LIBRARY)
 
 # ========================================================
@@ -1013,6 +1215,7 @@
 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_WHOLE_STATIC_LIBRARIES := \
     libc_bionic \
+    libc_bionic_ndk \
     libc_cxa \
     libc_dns \
     libc_freebsd \
@@ -1020,8 +1223,11 @@
     libc_malloc \
     libc_netbsd \
     libc_openbsd \
+    libc_openbsd_ndk \
+    libc_pthread \
     libc_stack_protector \
     libc_syscalls \
+    libc_thread_atexit_impl \
     libc_tzcode \
 
 LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi
@@ -1140,6 +1346,7 @@
 LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
+
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_SRC_FILES := \
     $(libc_arch_dynamic_src_files) \
@@ -1149,8 +1356,10 @@
 
 LOCAL_MODULE := libc
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
 LOCAL_REQUIRED_MODULES := tzdata
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 # Leave the symbols in the shared library so that stack unwinders can produce
 # meaningful name resolution.
@@ -1169,10 +1378,17 @@
 LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # We'd really like to do this for all architectures, but since this wasn't done
 # before, these symbols must continue to be exported on LP32 for binary
 # compatibility.
-LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a
+# TODO: disabled for http://b/20065774.
+#LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a
+
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
@@ -1221,7 +1437,9 @@
 
 LOCAL_MODULE := libc_malloc_debug_leak
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 LOCAL_SHARED_LIBRARIES := libc libdl
 LOCAL_CXX_STL := none
@@ -1232,6 +1450,9 @@
 LOCAL_STATIC_LIBRARIES += libc++abi
 LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # Don't install on release build
 LOCAL_MODULE_TAGS := eng debug
 LOCAL_ADDRESS_SANITIZER := false
@@ -1261,12 +1482,17 @@
 
 LOCAL_MODULE := libc_malloc_debug_qemu
 LOCAL_CLANG := $(use_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_ADDITIONAL_DEPENDENCIES := \
+    $(libc_common_additional_dependencies) \
+    $(LOCAL_PATH)/version_script.txt \
 
 LOCAL_SHARED_LIBRARIES := libc libdl
 LOCAL_CXX_STL := none
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
+# Don't re-export new/delete and friends, even if the compiler really wants to.
+LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/version_script.txt
+
 # Don't install on release build
 LOCAL_MODULE_TAGS := eng debug
 LOCAL_ADDRESS_SANITIZER := false
@@ -1290,6 +1516,10 @@
 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
 LOCAL_CFLAGS := $(libc_common_cflags)
 LOCAL_CPPFLAGS := $(libc_common_cppflags)
+
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
+
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index aae7de7..b91f5bf 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -130,7 +130,7 @@
 int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int)   arm,arm64,mips,mips64,x86,x86_64
 
 int __openat:openat(int, const char*, int, mode_t) all
-int faccessat(int, const char*, int, int)  all
+int ___faccessat:faccessat(int, const char*, int)  all
 int ___fchmodat:fchmodat(int, const char*, mode_t)  all
 int fchownat(int, const char*, uid_t, gid_t, int)  all
 int fstatat64|fstatat:fstatat64(int, const char*, struct stat*, int)   arm,mips,x86
@@ -174,9 +174,9 @@
 int __fadvise64:fadvise64(int, off64_t, off64_t, int) arm64,mips,mips64,x86_64
 
 int __fstatfs64:fstatfs64(int, size_t, struct statfs*)  arm,mips,x86
-int fstatfs64|fstatfs:fstatfs(int, struct statfs*)  arm64,mips64,x86_64
+int __fstatfs:fstatfs(int, struct statfs*)  arm64,mips64,x86_64
 int __statfs64:statfs64(const char*, size_t, struct statfs*)  arm,mips,x86
-int statfs64|statfs:statfs(const char*, struct statfs*)  arm64,mips64,x86_64
+int __statfs:statfs(const char*, struct statfs*)  arm64,mips64,x86_64
 
 int     fstat64|fstat:fstat64(int, struct stat*)    arm,mips,x86
 int     fstat64|fstat:fstat(int, struct stat*)    arm64,x86_64
diff --git a/libc/arch-arm/arm.mk b/libc/arch-arm/arm.mk
index 60600e5..d72a160 100644
--- a/libc/arch-arm/arm.mk
+++ b/libc/arch-arm/arm.mk
@@ -5,8 +5,6 @@
 #
 
 libc_bionic_src_files_arm += \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -22,6 +20,8 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_arm += \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strlcat.c \
     upstream-openbsd/lib/libc/string/strlcpy.c \
diff --git a/libc/arch-arm/bionic/setjmp.S b/libc/arch-arm/bionic/setjmp.S
index 8d7786c..8220c08 100644
--- a/libc/arch-arm/bionic/setjmp.S
+++ b/libc/arch-arm/bionic/setjmp.S
@@ -169,7 +169,5 @@
   bx lr
 END(siglongjmp)
 
-  .globl longjmp
-  .equ longjmp, siglongjmp
-  .globl _longjmp
-  .equ _longjmp, siglongjmp
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-arm/syscalls/faccessat.S b/libc/arch-arm/syscalls/___faccessat.S
similarity index 81%
rename from libc/arch-arm/syscalls/faccessat.S
rename to libc/arch-arm/syscalls/___faccessat.S
index a1df5c0..1d09cf7 100644
--- a/libc/arch-arm/syscalls/faccessat.S
+++ b/libc/arch-arm/syscalls/___faccessat.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
+ENTRY(___faccessat)
     mov     ip, r7
     ldr     r7, =__NR_faccessat
     swi     #0
@@ -11,4 +11,5 @@
     bxls    lr
     neg     r0, r0
     b       __set_errno_internal
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-arm/syscalls/_exit.S b/libc/arch-arm/syscalls/_exit.S
index 328a5ce..77da743 100644
--- a/libc/arch-arm/syscalls/_exit.S
+++ b/libc/arch-arm/syscalls/_exit.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-arm/syscalls/fstat64.S b/libc/arch-arm/syscalls/fstat64.S
index c60e7ee..798bba7 100644
--- a/libc/arch-arm/syscalls/fstat64.S
+++ b/libc/arch-arm/syscalls/fstat64.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-arm/syscalls/fstatat64.S b/libc/arch-arm/syscalls/fstatat64.S
index ce56c36..03e0052 100644
--- a/libc/arch-arm/syscalls/fstatat64.S
+++ b/libc/arch-arm/syscalls/fstatat64.S
@@ -13,5 +13,4 @@
     b       __set_errno_internal
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-arm64/arm64.mk b/libc/arch-arm64/arm64.mk
index 8418993..6a2f313 100644
--- a/libc/arch-arm64/arm64.mk
+++ b/libc/arch-arm64/arm64.mk
@@ -8,7 +8,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memrchr.c \
     bionic/strrchr.cpp \
 
 libc_freebsd_src_files_arm64 += \
@@ -21,6 +20,7 @@
     upstream-freebsd/lib/libc/string/wmemcmp.c \
 
 libc_openbsd_src_files_arm64 += \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
     upstream-openbsd/lib/libc/string/strlcat.c \
@@ -40,6 +40,8 @@
     arch-arm64/bionic/syscall.S \
     arch-arm64/bionic/vfork.S \
 
+# Work around for http://b/20065774.
+libc_bionic_src_files_arm64 += arch-arm64/bionic/libgcc_compat.c
 
 libc_crt_target_cflags_arm64 := \
     -I$(LOCAL_PATH)/arch-arm64/include
diff --git a/libc/arch-arm64/bionic/libgcc_compat.c b/libc/arch-arm64/bionic/libgcc_compat.c
new file mode 100644
index 0000000..2dae3f5
--- /dev/null
+++ b/libc/arch-arm64/bionic/libgcc_compat.c
@@ -0,0 +1,15 @@
+/* STOPSHIP: remove this once the flounder blobs have been rebuilt (http://b/20065774). */
+
+#if !defined(__clang__)
+
+extern void __clear_cache(char*, char*);
+extern char _Unwind_Backtrace;
+extern char _Unwind_GetIP;
+
+void* __bionic_libgcc_compat_symbols[] = {
+    &__clear_cache,
+    &_Unwind_Backtrace,
+    &_Unwind_GetIP,
+};
+
+#endif
diff --git a/libc/arch-arm64/bionic/setjmp.S b/libc/arch-arm64/bionic/setjmp.S
index 6e119dc..ba0a226 100644
--- a/libc/arch-arm64/bionic/setjmp.S
+++ b/libc/arch-arm64/bionic/setjmp.S
@@ -146,7 +146,5 @@
   ret
 END(siglongjmp)
 
-  .globl longjmp
-  .equ longjmp, siglongjmp
-  .globl _longjmp
-  .equ _longjmp, siglongjmp
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-arm64/syscalls/faccessat.S b/libc/arch-arm64/syscalls/___faccessat.S
similarity index 79%
rename from libc/arch-arm64/syscalls/faccessat.S
rename to libc/arch-arm64/syscalls/___faccessat.S
index 4c96cfa..6a41b69 100644
--- a/libc/arch-arm64/syscalls/faccessat.S
+++ b/libc/arch-arm64/syscalls/___faccessat.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
+ENTRY(___faccessat)
     mov     x8, __NR_faccessat
     svc     #0
 
@@ -11,4 +11,5 @@
     b.hi    __set_errno_internal
 
     ret
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-arm64/syscalls/fstatfs64.S b/libc/arch-arm64/syscalls/__fstatfs.S
similarity index 73%
rename from libc/arch-arm64/syscalls/fstatfs64.S
rename to libc/arch-arm64/syscalls/__fstatfs.S
index 2ca2dcd..7e350d6 100644
--- a/libc/arch-arm64/syscalls/fstatfs64.S
+++ b/libc/arch-arm64/syscalls/__fstatfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(fstatfs64)
+ENTRY(__fstatfs)
     mov     x8, __NR_fstatfs
     svc     #0
 
@@ -11,7 +11,5 @@
     b.hi    __set_errno_internal
 
     ret
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-arm64/syscalls/statfs64.S b/libc/arch-arm64/syscalls/__statfs.S
similarity index 74%
rename from libc/arch-arm64/syscalls/statfs64.S
rename to libc/arch-arm64/syscalls/__statfs.S
index ec8c588..962c590 100644
--- a/libc/arch-arm64/syscalls/statfs64.S
+++ b/libc/arch-arm64/syscalls/__statfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(statfs64)
+ENTRY(__statfs)
     mov     x8, __NR_statfs
     svc     #0
 
@@ -11,7 +11,5 @@
     b.hi    __set_errno_internal
 
     ret
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-arm64/syscalls/_exit.S b/libc/arch-arm64/syscalls/_exit.S
index edf6744..d50f38d 100644
--- a/libc/arch-arm64/syscalls/_exit.S
+++ b/libc/arch-arm64/syscalls/_exit.S
@@ -13,5 +13,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-arm64/syscalls/fallocate.S b/libc/arch-arm64/syscalls/fallocate.S
index ef3d4a4..d42a0ba 100644
--- a/libc/arch-arm64/syscalls/fallocate.S
+++ b/libc/arch-arm64/syscalls/fallocate.S
@@ -13,5 +13,4 @@
     ret
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-arm64/syscalls/fstat64.S b/libc/arch-arm64/syscalls/fstat64.S
index 85a07f5..f7c9f54 100644
--- a/libc/arch-arm64/syscalls/fstat64.S
+++ b/libc/arch-arm64/syscalls/fstat64.S
@@ -13,5 +13,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-arm64/syscalls/fstatat64.S b/libc/arch-arm64/syscalls/fstatat64.S
index dafd982..9f8f2c5 100644
--- a/libc/arch-arm64/syscalls/fstatat64.S
+++ b/libc/arch-arm64/syscalls/fstatat64.S
@@ -13,5 +13,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-arm64/syscalls/ftruncate.S b/libc/arch-arm64/syscalls/ftruncate.S
index c6e99f5..c21e098 100644
--- a/libc/arch-arm64/syscalls/ftruncate.S
+++ b/libc/arch-arm64/syscalls/ftruncate.S
@@ -13,5 +13,4 @@
     ret
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-arm64/syscalls/getrlimit.S b/libc/arch-arm64/syscalls/getrlimit.S
index 518ab73..03ee9a8 100644
--- a/libc/arch-arm64/syscalls/getrlimit.S
+++ b/libc/arch-arm64/syscalls/getrlimit.S
@@ -13,5 +13,4 @@
     ret
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-arm64/syscalls/lseek.S b/libc/arch-arm64/syscalls/lseek.S
index de96df0..93afeb7 100644
--- a/libc/arch-arm64/syscalls/lseek.S
+++ b/libc/arch-arm64/syscalls/lseek.S
@@ -13,5 +13,4 @@
     ret
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-arm64/syscalls/mmap.S b/libc/arch-arm64/syscalls/mmap.S
index 64b955e..65371bc 100644
--- a/libc/arch-arm64/syscalls/mmap.S
+++ b/libc/arch-arm64/syscalls/mmap.S
@@ -13,5 +13,4 @@
     ret
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-arm64/syscalls/pread64.S b/libc/arch-arm64/syscalls/pread64.S
index eafc044..6c9f0e9 100644
--- a/libc/arch-arm64/syscalls/pread64.S
+++ b/libc/arch-arm64/syscalls/pread64.S
@@ -13,5 +13,4 @@
     ret
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-arm64/syscalls/prlimit64.S b/libc/arch-arm64/syscalls/prlimit64.S
index 2bece99..9c018ba 100644
--- a/libc/arch-arm64/syscalls/prlimit64.S
+++ b/libc/arch-arm64/syscalls/prlimit64.S
@@ -13,5 +13,4 @@
     ret
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-arm64/syscalls/pwrite64.S b/libc/arch-arm64/syscalls/pwrite64.S
index 6970954..1599c14 100644
--- a/libc/arch-arm64/syscalls/pwrite64.S
+++ b/libc/arch-arm64/syscalls/pwrite64.S
@@ -13,5 +13,4 @@
     ret
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-arm64/syscalls/sendfile.S b/libc/arch-arm64/syscalls/sendfile.S
index 17a0d46..50ac12d 100644
--- a/libc/arch-arm64/syscalls/sendfile.S
+++ b/libc/arch-arm64/syscalls/sendfile.S
@@ -13,5 +13,4 @@
     ret
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-arm64/syscalls/setrlimit.S b/libc/arch-arm64/syscalls/setrlimit.S
index 6cb6b98..52c75a1 100644
--- a/libc/arch-arm64/syscalls/setrlimit.S
+++ b/libc/arch-arm64/syscalls/setrlimit.S
@@ -13,5 +13,4 @@
     ret
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-arm64/syscalls/truncate.S b/libc/arch-arm64/syscalls/truncate.S
index 0e5a33e..e01cc7d 100644
--- a/libc/arch-arm64/syscalls/truncate.S
+++ b/libc/arch-arm64/syscalls/truncate.S
@@ -13,5 +13,4 @@
     ret
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-mips/bionic/setjmp.S b/libc/arch-mips/bionic/setjmp.S
index 05d0e25..bed9562 100644
--- a/libc/arch-mips/bionic/setjmp.S
+++ b/libc/arch-mips/bionic/setjmp.S
@@ -1,4 +1,31 @@
 /*
+ * Copyright (C) 2014-2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
  *
  * Redistribution and use in source and binary forms, with or without
@@ -94,23 +121,31 @@
 #include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
-/* On Mips32, jmpbuf begins with optional 4-byte filler so that
- *  all saved FP regs are aligned on 8-byte boundary, despite this whole
- *  struct being mis-declared to users as an array of (4-byte) longs.
- *  All the following offsets are then from the rounded-up base addr
+/* jmpbuf is declared to users as an array of longs, which is only
+ * 4-byte aligned in 32-bit builds.  The Mips jmpbuf begins with a
+ * dynamically-sized 0- or 4-byte unused filler so that double-prec FP regs
+ * are saved to 8-byte-aligned mem cells.
+ * All the following jmpbuf offsets are from the rounded-DOWN base addr.
  */
 
 /* Fields of same size on all MIPS abis: */
-#define	SC_MAGIC        (0*4)		/* 4 bytes, identify jmpbuf */
-#define	SC_MASK		(1*4)		/* 4 bytes, saved signal mask */
-#define	SC_FPSR		(2*4)		/* 4 bytes, floating point control/status reg */
-/*     	filler2		(3*4)		   4 bytes, pad to 8-byte boundary */
+/*     	field:		byte offset:	size:						*/
+/*     	dynam filler	(0*4)		   0-4 bytes of rounddown filler, DON'T TOUCH!!
+						often overlays user storage!!		*/
+#define	SC_MAGIC_OFFSET	(1*4)		/* 4 bytes, identify jmpbuf, first actual field */
+#define	SC_FLAG_OFFSET	(2*4)		/* 4 bytes, savesigs flag */
+#define	SC_FPSR_OFFSET	(3*4)		/* 4 bytes, floating point control/status reg */
+/* following fields are 8-byte aligned */
+#define	SC_MASK_OFFSET	(4*4)		/* 16 bytes, mips32/mips64 version of sigset_t */
+#define	SC_SPARE_OFFSET	(8*4)		/* 8 bytes, reserved for future uses */
 
 /* Registers that are 4-byte on mips32 o32, and 8-byte on mips64 n64 abi */
-#define	SC_REGS_SAVED	12		/* ra,gp,sp,s0-s8 */
-#define	SC_REGS		(4*4)		/* SC_REGS_SAVED*REGSZ bytes */
+#define	SC_REGS_OFFSET	(10*4)		/* SC_REGS_BYTES */
+#define	SC_REGS_SAVED	12 /*regs*/	/* ra,s0-s8,gp,sp */
+#define	SC_REGS_BYTES   (SC_REGS_SAVED*REGSZ)
+#define	SC_REGS		SC_REGS_OFFSET
 
-/* Floating pt registers are 8-bytes on all abis,
+/* Double floating pt registers are 8-bytes on all abis,
  * but the number of saved fp regs varies for o32/n32 versus n64 abis:
  */
 
@@ -120,22 +155,20 @@
 #define	SC_FPREGS_SAVED	6  /* even fp regs f20,f22,f24,f26,f28,f30 */
 #endif
 
-#define	SC_FPREGS	(SC_REGS + SC_REGS_SAVED*REGSZ)  /* SC_FPREGS_SAVED*REGSZ_FP bytes */
+#define	SC_FPREGS_OFFSET (SC_REGS_OFFSET + SC_REGS_BYTES)  /* SC_FPREGS_BYTES */
+#define	SC_FPREGS_BYTES (SC_FPREGS_SAVED*REGSZ_FP)
+#define	SC_FPREGS	SC_FPREGS_OFFSET
 
-#define	SC_BYTES	(SC_FPREGS + SC_FPREGS_SAVED*REGSZ_FP)
-#define	SC_LONGS	(SC_BYTES/REGSZ)
+#define	SC_TOTAL_BYTES	(SC_FPREGS_OFFSET + SC_FPREGS_BYTES)
+#define	SC_TOTAL_LONGS	(SC_TOTAL_BYTES/REGSZ)
 
-#ifdef __LP64__
-/* SC_LONGS is 22, so _JBLEN should be 22 or larger */
-#else
-/* SC_LONGS is 28, but must also allocate dynamic-roundup filler.
-   so _JBLEN should be 29 or larger */
+#if SC_TOTAL_LONGS > _JBLEN
+#error _JBLEN is too small
 #endif
 
 /*
- * _setjmp, _longjmp (restoring signal state)
  *
- *  GPOFF and FRAMESIZE must be the same for both _setjmp and _longjmp!
+ *  GPOFF and FRAMESIZE must be the same for all setjmp/longjmp routines
  *
  */
 
@@ -145,30 +178,33 @@
 GPOFF= FRAMESZ-2*REGSZ
 RAOFF= FRAMESZ-1*REGSZ
 
-NON_LEAF(setjmp, FRAMESZ, ra)
+NON_LEAF(sigsetjmp, FRAMESZ, ra)
 	.mask	0x80000000, RAOFF
 	PTR_SUBU sp, FRAMESZ			# allocate stack frame
-	SETUP_GP64(GPOFF, setjmp)
+	SETUP_GP64(GPOFF, sigsetjmp)
 	SAVE_GP(GPOFF)
 	.set	reorder
 
+setjmp_common:
 #ifndef __LP64__
-	addiu   a0, 7				# roundup jmpbuf addr to 8-byte boundary
-	li      t0, ~7
-	and     a0, t0
+	li	t0, ~7
+	and	a0, t0				# round jmpbuf addr DOWN to 8-byte boundary
 #endif
+	sw	a1, SC_FLAG_OFFSET(a0)		# save savesigs flag
+	beqz	a1, 1f				# do saving of signal mask?
 
-	REG_S	ra, RAOFF(sp)			# save state
+	REG_S	ra, RAOFF(sp)			# spill state
 	REG_S	a0, A0OFF(sp)
-	move	a0, zero			# get current signal mask
-	jal	sigblock
+	# call sigprocmask(int how ignored, sigset_t* null, sigset_t* SC_MASK(a0)):
+	LA	a2, SC_MASK_OFFSET(a0)		# gets current signal mask
+	li	a0, 0				# how; ignored when new mask is null
+	li	a1, 0				# null new mask
+	jal	sigprocmask			# get current signal mask
 	REG_L	a0, A0OFF(sp)
 	REG_L	ra, RAOFF(sp)
-
-	REG_S	v0, SC_MASK(a0)			# save sc_mask = sigblock(0)
-
+1:
 	li	v0, 0xACEDBADE			# sigcontext magic number
-	sw	v0, SC_MAGIC(a0)
+	sw	v0, SC_MAGIC_OFFSET(a0)
 	# callee-saved long-sized regs:
 	REG_S	ra, SC_REGS+0*REGSZ(a0)
 	REG_S	s0, SC_REGS+1*REGSZ(a0)
@@ -181,9 +217,9 @@
 	REG_S	s7, SC_REGS+8*REGSZ(a0)
 	REG_S	s8, SC_REGS+9*REGSZ(a0)
 	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+10*REGSZ(a0)
+	REG_S	v0, SC_REGS+10*REGSZ(a0)	# save gp
 	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+11*REGSZ(a0)
+	REG_S	v0, SC_REGS+11*REGSZ(a0)	# save orig sp
 
 	cfc1	v0, $31
 
@@ -199,7 +235,7 @@
 	s.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
 #else
 	# callee-saved fp regs on mips o32 ABI are
-	#   the even-numbered fp regs $f20,$f22,...$f30
+	#   the even-numbered double fp regs $f20,$f22,...$f30
 	s.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
 	s.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
 	s.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
@@ -207,37 +243,68 @@
 	s.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
 	s.d	$f30, SC_FPREGS+5*REGSZ_FP(a0)
 #endif
-	sw	v0, SC_FPSR(a0)
+	sw	v0, SC_FPSR_OFFSET(a0)
 	move	v0, zero
 	RESTORE_GP64
 	PTR_ADDU sp, FRAMESZ
 	j	ra
-END(setjmp)
+END(sigsetjmp)
 
-NON_LEAF(longjmp, FRAMESZ, ra)
+
+# Alternate entry points:
+
+NON_LEAF(setjmp, FRAMESZ, ra)
 	.mask	0x80000000, RAOFF
 	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, longjmp)
+	SETUP_GP64(GPOFF, setjmp)		# can't share sigsetjmp's gp code
+	SAVE_GP(GPOFF)
+	.set	reorder
+
+	li	a1, 1				# save/restore signals state
+	b	setjmp_common			# tail call
+END(setjmp)
+
+
+NON_LEAF(_setjmp, FRAMESZ, ra)
+	.mask	0x80000000, RAOFF
+	PTR_SUBU sp, FRAMESZ
+	SETUP_GP64(GPOFF, _setjmp)		# can't share sigsetjmp's gp code
+	SAVE_GP(GPOFF)
+	.set	reorder
+
+	li	a1, 0				# don't save/restore signals
+	b	setjmp_common			# tail call
+END(_setjmp)
+
+
+NON_LEAF(siglongjmp, FRAMESZ, ra)
+	.mask	0x80000000, RAOFF
+	PTR_SUBU sp, FRAMESZ
+	SETUP_GP64(GPOFF, siglongjmp)
 	SAVE_GP(GPOFF)
 	.set	reorder
 
 #ifndef __LP64__
-	addiu	a0, 7				# roundup jmpbuf addr to 8-byte boundary
-	li      t0, ~7
-	and	a0, t0
+	li	t0, ~7
+	and	a0, t0				# round jmpbuf addr DOWN to 8-byte boundary
 #endif
+	lw	v0, SC_MAGIC_OFFSET(a0)
+	li	t0, 0xACEDBADE
+	bne	v0, t0, longjmp_botch		# jump if error
 
-	REG_S	a1, A1OFF(sp)
+	lw	t0, SC_FLAG_OFFSET(a0)		# get savesigs flag
+	beqz	t0, 1f				# restore signal mask?
+
+	REG_S	a1, A1OFF(sp)			# temp spill
 	REG_S	a0, A0OFF(sp)
-	lw	a0, SC_MASK(a0)
-	jal	sigsetmask
+        # call sigprocmask(int how SIG_SETMASK, sigset_t* SC_MASK(a0), sigset_t* null):
+	LA	a1, SC_MASK_OFFSET(a0)		# signals being restored
+	li	a0, 3				# mips SIG_SETMASK
+	li	a2, 0				# null
+	jal	sigprocmask			# restore signal mask
 	REG_L	a0, A0OFF(sp)
 	REG_L	a1, A1OFF(sp)
-
-	lw	v0, SC_MAGIC(a0)
-	li	t0, 0xACEDBADE
-	bne	v0, t0, longjmp_botch			# jump if error
-
+1:
 	# callee-saved long-sized regs:
 	REG_L	ra, SC_REGS+0*REGSZ(a0)
 	REG_L	s0, SC_REGS+1*REGSZ(a0)
@@ -252,8 +319,8 @@
 	REG_L	gp, SC_REGS+10*REGSZ(a0)
 	REG_L	sp, SC_REGS+11*REGSZ(a0)
 
-	lw	v0, SC_FPSR(a0)
-	ctc1	v0, $31
+	lw	v0, SC_FPSR_OFFSET(a0)
+	ctc1	v0, $31			# restore old fr mode before fp values
 #ifdef __LP64__
 	# callee-saved fp regs on mips n64 ABI are $f24..$f31
 	l.d	$f24, SC_FPREGS+0*REGSZ_FP(a0)
@@ -266,7 +333,7 @@
 	l.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
 #else
 	# callee-saved fp regs on mips o32 ABI are
-	#   the even-numbered fp regs $f20,$f22,...$f30
+	#   the even-numbered double fp regs $f20,$f22,...$f30
 	l.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
 	l.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
 	l.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
@@ -278,192 +345,12 @@
 	li	a1, 1			# never return 0!
 1:
 	move	v0, a1
-	j	ra
+	j	ra			# return to setjmp call site
 
 longjmp_botch:
 	jal	longjmperror
 	jal	abort
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-END(longjmp)
-
-
-/*
- * _setjmp, _longjmp (not restoring signal state)
- *
- *  GPOFF and FRAMESIZE must be the same for both _setjmp and _longjmp!
- *
- */
-
-FRAMESZ= MKFSIZ(0,4)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(_setjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _setjmp)
-	SAVE_GP(GPOFF)
-	.set	reorder
-
-#ifndef __LP64__
-	addiu   a0, 7				# roundup jmpbuf addr to 8-byte boundary
-	li      t0, ~7
-	and     a0, t0
-#endif
-
-	# SC_MASK is unused here
-
-	li	v0, 0xACEDBADE			# sigcontext magic number
-	sw	v0, SC_MAGIC(a0)
-	# callee-saved long-sized regs:
-	REG_S	ra, SC_REGS+0*REGSZ(a0)
-	REG_S	s0, SC_REGS+1*REGSZ(a0)
-	REG_S	s1, SC_REGS+2*REGSZ(a0)
-	REG_S	s2, SC_REGS+3*REGSZ(a0)
-	REG_S	s3, SC_REGS+4*REGSZ(a0)
-	REG_S	s4, SC_REGS+5*REGSZ(a0)
-	REG_S	s5, SC_REGS+6*REGSZ(a0)
-	REG_S	s6, SC_REGS+7*REGSZ(a0)
-	REG_S	s7, SC_REGS+8*REGSZ(a0)
-	REG_S	s8, SC_REGS+9*REGSZ(a0)
-	REG_L	v0, GPOFF(sp)
-	REG_S	v0, SC_REGS+10*REGSZ(a0)
-	PTR_ADDU v0, sp, FRAMESZ
-	REG_S	v0, SC_REGS+11*REGSZ(a0)
-
-	cfc1	v0, $31
-
-#ifdef __LP64__
-	# callee-saved fp regs on mips n64 ABI are $f24..$f31
-	s.d	$f24, SC_FPREGS+0*REGSZ_FP(a0)
-	s.d	$f25, SC_FPREGS+1*REGSZ_FP(a0)
-	s.d	$f26, SC_FPREGS+2*REGSZ_FP(a0)
-	s.d	$f27, SC_FPREGS+3*REGSZ_FP(a0)
-	s.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
-	s.d	$f29, SC_FPREGS+5*REGSZ_FP(a0)
-	s.d	$f30, SC_FPREGS+6*REGSZ_FP(a0)
-	s.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
-#else
-	# callee-saved fp regs on mips o32 ABI are
-	#   the even-numbered fp regs $f20,$f22,...$f30
-	s.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
-	s.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
-	s.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
-	s.d	$f26, SC_FPREGS+3*REGSZ_FP(a0)
-	s.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
-	s.d	$f30, SC_FPREGS+5*REGSZ_FP(a0)
-#endif
-	sw	v0, SC_FPSR(a0)
-	move	v0, zero
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	j	ra
-END(_setjmp)
-
-
-LEAF(_longjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, _longjmp)
-	SAVE_GP(GPOFF)
-	.set	reorder
-
-#ifndef __LP64__
-	addiu	a0, 7				# roundup jmpbuf addr to 8-byte boundary
-	li      t0, ~7
-	and	a0, t0
-#endif
-
-	# SC_MASK is unused here
-
-	lw	v0, SC_MAGIC(a0)
-	li	t0, 0xACEDBADE
-	bne	v0, t0, _longjmp_botch			# jump if error
-
-	# callee-saved long-sized regs:
-	REG_L	ra, SC_REGS+0*REGSZ(a0)
-	REG_L	s0, SC_REGS+1*REGSZ(a0)
-	REG_L	s1, SC_REGS+2*REGSZ(a0)
-	REG_L	s2, SC_REGS+3*REGSZ(a0)
-	REG_L	s3, SC_REGS+4*REGSZ(a0)
-	REG_L	s4, SC_REGS+5*REGSZ(a0)
-	REG_L	s5, SC_REGS+6*REGSZ(a0)
-	REG_L	s6, SC_REGS+7*REGSZ(a0)
-	REG_L	s7, SC_REGS+8*REGSZ(a0)
-	REG_L	s8, SC_REGS+9*REGSZ(a0)
-	REG_L	gp, SC_REGS+10*REGSZ(a0)
-	REG_L	sp, SC_REGS+11*REGSZ(a0)
-
-	lw	v0, SC_FPSR(a0)
-	ctc1	v0, $31
-#ifdef __LP64__
-	# callee-saved fp regs on mips n64 ABI are $f24..$f31
-	l.d	$f24, SC_FPREGS+0*REGSZ_FP(a0)
-	l.d	$f25, SC_FPREGS+1*REGSZ_FP(a0)
-	l.d	$f26, SC_FPREGS+2*REGSZ_FP(a0)
-	l.d	$f27, SC_FPREGS+3*REGSZ_FP(a0)
-	l.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
-	l.d	$f29, SC_FPREGS+5*REGSZ_FP(a0)
-	l.d	$f30, SC_FPREGS+6*REGSZ_FP(a0)
-	l.d	$f31, SC_FPREGS+7*REGSZ_FP(a0)
-#else
-	# callee-saved fp regs on mips o32 ABI are
-	#   the even-numbered fp regs $f20,$f22,...$f30
-	l.d	$f20, SC_FPREGS+0*REGSZ_FP(a0)
-	l.d	$f22, SC_FPREGS+1*REGSZ_FP(a0)
-	l.d	$f24, SC_FPREGS+2*REGSZ_FP(a0)
-	l.d	$f26, SC_FPREGS+3*REGSZ_FP(a0)
-	l.d	$f28, SC_FPREGS+4*REGSZ_FP(a0)
-	l.d	$f30, SC_FPREGS+5*REGSZ_FP(a0)
-#endif
-	bne	a1, zero, 1f
-	li	a1, 1			# never return 0!
-1:
-	move	v0, a1
-	j	ra
-
-_longjmp_botch:
-	jal	longjmperror
-	jal	abort
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-END(_longjmp)
-
-/*
- * trampolines for sigsetjmp and  siglongjmp save and restore mask.
- *
- */
-FRAMESZ= MKFSIZ(1,1)
-GPOFF= FRAMESZ-2*REGSZ
-
-LEAF(sigsetjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, sigsetjmp)
-	.set	reorder
-	sw	a1, _JBLEN*REGSZ(a0)		# save "savemask"
-	bne	a1, 0x0, 1f			# do saving of signal mask?
-	LA	t9, _setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-
-1:	LA	t9, setjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr t9
-END(sigsetjmp)
-
-LEAF(siglongjmp, FRAMESZ)
-	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64(GPOFF, siglongjmp)
-	.set	reorder
-	lw	t0, _JBLEN*REGSZ(a0)		# get "savemask"
-	bne	t0, 0x0, 1f			# restore signal mask?
-	LA	t9, _longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
-1:
-	LA	t9, longjmp
-	RESTORE_GP64
-	PTR_ADDU sp, FRAMESZ
-	jr	t9
 END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-mips/include/machine/setjmp.h b/libc/arch-mips/include/machine/setjmp.h
index a9707dc..4067d51 100644
--- a/libc/arch-mips/include/machine/setjmp.h
+++ b/libc/arch-mips/include/machine/setjmp.h
@@ -6,9 +6,10 @@
 #define _MIPS_SETJMP_H_
 
 #ifdef __LP64__
-#define	_JBLEN	22		/* size, in 8-byte longs, of a mips64 jmp_buf */
+#define	_JBLEN	25	/* size, in 8-byte longs, of a mips64 jmp_buf/sigjmp_buf */
 #else
-#define	_JBLEN	29		/* size, in 4-byte longs, of a mips32 jmp_buf */
+#define	_JBLEN	157	/* historical size, in 4-byte longs, of a mips32 jmp_buf */
+			/* actual used size is 34 */
 #endif
 
 #endif /* !_MIPS_SETJMP_H_ */
diff --git a/libc/arch-mips/mips.mk b/libc/arch-mips/mips.mk
index 7e3fe25..33eceab 100644
--- a/libc/arch-mips/mips.mk
+++ b/libc/arch-mips/mips.mk
@@ -10,8 +10,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -27,7 +25,9 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_mips += \
+    upstream-openbsd/lib/libc/string/memchr.c \
     upstream-openbsd/lib/libc/string/memmove.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpcpy.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
diff --git a/libc/arch-mips/string/memset.S b/libc/arch-mips/string/memset.S
index 3e630ca..09b756b 100644
--- a/libc/arch-mips/string/memset.S
+++ b/libc/arch-mips/string/memset.S
@@ -67,86 +67,6 @@
 #define DBG
 #endif
 
-/*
- * void _memset16(uint16_t* dst, uint16_t value, size_t size);
- */
-
-LEAF(_memset16,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,1			# a0 must be halfword aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,1			# a2 must be even
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is even
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a2,zero,0,1
-#else
-	ori	a2,1
-	xori	a2,1
-#endif
-#endif
-
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a1,a1,16,16
-#else
-	andi	a1,0xffff
-	sll	t3,a1,16
-	or	a1,t3
-#endif
-
-	beqz	a2,.Ldone
-	 andi	t1,a0,2
-	beqz	t1,.Lalignok
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-	sh	a1,0(a0)		# store one halfword to get aligned
-	addu	a0,2
-	subu	a2,2
-.Lalignok:
-	slti	t1,a2,4			# .Laligned for 4 or more bytes
-	beqz	t1,.Laligned
-	 sne	t1,a2,2			# one more halfword?
-	bnez	t1,.Ldone
-	 nop
-	sh	a1,0(a0)
-.Ldone:
-	j	ra
-	 nop
-	.set reorder
-END(_memset16)
-
-/*
- * void _memset32(uint32_t* dst, uint32_t value, size_t size);
- */
-
-LEAF(_memset32,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,3			# a0 must be word aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,3			# a2 must be a multiple of 4 bytes
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is a multiple of 4
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	$a2,$0,0,2
-#else
-	ori	a2,3
-	xori	a2,3
-#endif
-#endif
-
-	bnez	a2,.Laligned		# any work to do?
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-
-	j	ra
-	 nop
-	.set reorder
-END(_memset32)
-
 LEAF(memset,0)
 
 	.set	noreorder
diff --git a/libc/arch-mips/syscalls/faccessat.S b/libc/arch-mips/syscalls/___faccessat.S
similarity index 82%
rename from libc/arch-mips/syscalls/faccessat.S
rename to libc/arch-mips/syscalls/___faccessat.S
index e616106..4e11bae 100644
--- a/libc/arch-mips/syscalls/faccessat.S
+++ b/libc/arch-mips/syscalls/___faccessat.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
+ENTRY(___faccessat)
     .set noreorder
     .cpload t9
     li v0, __NR_faccessat
@@ -16,4 +16,5 @@
     j t9
     nop
     .set reorder
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-mips/syscalls/_exit.S b/libc/arch-mips/syscalls/_exit.S
index 5ac1324..6e97aac 100644
--- a/libc/arch-mips/syscalls/_exit.S
+++ b/libc/arch-mips/syscalls/_exit.S
@@ -18,5 +18,4 @@
     .set reorder
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-mips/syscalls/fstat64.S b/libc/arch-mips/syscalls/fstat64.S
index 525c23c..16e2791 100644
--- a/libc/arch-mips/syscalls/fstat64.S
+++ b/libc/arch-mips/syscalls/fstat64.S
@@ -18,5 +18,4 @@
     .set reorder
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-mips/syscalls/fstatat64.S b/libc/arch-mips/syscalls/fstatat64.S
index f7b8e1d..ebcf6b0 100644
--- a/libc/arch-mips/syscalls/fstatat64.S
+++ b/libc/arch-mips/syscalls/fstatat64.S
@@ -18,5 +18,4 @@
     .set reorder
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-mips64/bionic/stat.cpp b/libc/arch-mips64/bionic/stat.cpp
index df63906..2767fbd 100644
--- a/libc/arch-mips64/bionic/stat.cpp
+++ b/libc/arch-mips64/bionic/stat.cpp
@@ -29,7 +29,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
-#include <asm/unistd.h>
+#include <unistd.h>
 
 struct kernel_stat {
  unsigned int st_dev;
diff --git a/libc/arch-mips64/mips64.mk b/libc/arch-mips64/mips64.mk
index 1376395..2b81e63 100644
--- a/libc/arch-mips64/mips64.mk
+++ b/libc/arch-mips64/mips64.mk
@@ -9,8 +9,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -30,7 +28,9 @@
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
 libc_openbsd_src_files_mips64 += \
+    upstream-openbsd/lib/libc/string/memchr.c \
     upstream-openbsd/lib/libc/string/memmove.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
     upstream-openbsd/lib/libc/string/stpcpy.c \
     upstream-openbsd/lib/libc/string/stpncpy.c \
     upstream-openbsd/lib/libc/string/strcat.c \
diff --git a/libc/arch-mips64/string/memset.S b/libc/arch-mips64/string/memset.S
index 3e630ca..09b756b 100644
--- a/libc/arch-mips64/string/memset.S
+++ b/libc/arch-mips64/string/memset.S
@@ -67,86 +67,6 @@
 #define DBG
 #endif
 
-/*
- * void _memset16(uint16_t* dst, uint16_t value, size_t size);
- */
-
-LEAF(_memset16,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,1			# a0 must be halfword aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,1			# a2 must be even
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is even
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a2,zero,0,1
-#else
-	ori	a2,1
-	xori	a2,1
-#endif
-#endif
-
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	a1,a1,16,16
-#else
-	andi	a1,0xffff
-	sll	t3,a1,16
-	or	a1,t3
-#endif
-
-	beqz	a2,.Ldone
-	 andi	t1,a0,2
-	beqz	t1,.Lalignok
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-	sh	a1,0(a0)		# store one halfword to get aligned
-	addu	a0,2
-	subu	a2,2
-.Lalignok:
-	slti	t1,a2,4			# .Laligned for 4 or more bytes
-	beqz	t1,.Laligned
-	 sne	t1,a2,2			# one more halfword?
-	bnez	t1,.Ldone
-	 nop
-	sh	a1,0(a0)
-.Ldone:
-	j	ra
-	 nop
-	.set reorder
-END(_memset16)
-
-/*
- * void _memset32(uint32_t* dst, uint32_t value, size_t size);
- */
-
-LEAF(_memset32,0)
-	.set noreorder
-DBG	/* Check parameters */
-DBG	andi	t0,a0,3			# a0 must be word aligned
-DBG	tne	t0,zero
-DBG	andi	t2,a2,3			# a2 must be a multiple of 4 bytes
-DBG	tne	t2,zero
-
-#ifdef FIXARGS
-	# ensure count is a multiple of 4
-#if (__mips==32) && (__mips_isa_rev>=2)
-	ins	$a2,$0,0,2
-#else
-	ori	a2,3
-	xori	a2,3
-#endif
-#endif
-
-	bnez	a2,.Laligned		# any work to do?
-	 addu	t0,a0,a2		# t0 is the "past the end" address
-
-	j	ra
-	 nop
-	.set reorder
-END(_memset32)
-
 LEAF(memset,0)
 
 	.set	noreorder
diff --git a/libc/arch-mips64/syscalls/faccessat.S b/libc/arch-mips64/syscalls/___faccessat.S
similarity index 85%
rename from libc/arch-mips64/syscalls/faccessat.S
rename to libc/arch-mips64/syscalls/___faccessat.S
index 18bb800..240625f 100644
--- a/libc/arch-mips64/syscalls/faccessat.S
+++ b/libc/arch-mips64/syscalls/___faccessat.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
+ENTRY(___faccessat)
     .set push
     .set noreorder
     li v0, __NR_faccessat
@@ -22,4 +22,5 @@
     j t9
     move ra, t0
     .set pop
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-mips64/syscalls/fstatfs64.S b/libc/arch-mips64/syscalls/__fstatfs.S
similarity index 81%
rename from libc/arch-mips64/syscalls/fstatfs64.S
rename to libc/arch-mips64/syscalls/__fstatfs.S
index 12e885c..8766e22 100644
--- a/libc/arch-mips64/syscalls/fstatfs64.S
+++ b/libc/arch-mips64/syscalls/__fstatfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(fstatfs64)
+ENTRY(__fstatfs)
     .set push
     .set noreorder
     li v0, __NR_fstatfs
@@ -22,7 +22,5 @@
     j t9
     move ra, t0
     .set pop
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-mips64/syscalls/statfs64.S b/libc/arch-mips64/syscalls/__statfs.S
similarity index 82%
rename from libc/arch-mips64/syscalls/statfs64.S
rename to libc/arch-mips64/syscalls/__statfs.S
index 74351f7..52db4e2 100644
--- a/libc/arch-mips64/syscalls/statfs64.S
+++ b/libc/arch-mips64/syscalls/__statfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(statfs64)
+ENTRY(__statfs)
     .set push
     .set noreorder
     li v0, __NR_statfs
@@ -22,7 +22,5 @@
     j t9
     move ra, t0
     .set pop
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-mips64/syscalls/_exit.S b/libc/arch-mips64/syscalls/_exit.S
index da5a2f7..37f8119 100644
--- a/libc/arch-mips64/syscalls/_exit.S
+++ b/libc/arch-mips64/syscalls/_exit.S
@@ -24,5 +24,4 @@
     .set pop
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-mips64/syscalls/fallocate.S b/libc/arch-mips64/syscalls/fallocate.S
index c1ef0ed..14e25a0 100644
--- a/libc/arch-mips64/syscalls/fallocate.S
+++ b/libc/arch-mips64/syscalls/fallocate.S
@@ -24,5 +24,4 @@
     .set pop
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-mips64/syscalls/ftruncate.S b/libc/arch-mips64/syscalls/ftruncate.S
index 58b847b..063e8f3 100644
--- a/libc/arch-mips64/syscalls/ftruncate.S
+++ b/libc/arch-mips64/syscalls/ftruncate.S
@@ -24,5 +24,4 @@
     .set pop
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-mips64/syscalls/getrlimit.S b/libc/arch-mips64/syscalls/getrlimit.S
index 7576c17..5e2a82a 100644
--- a/libc/arch-mips64/syscalls/getrlimit.S
+++ b/libc/arch-mips64/syscalls/getrlimit.S
@@ -24,5 +24,4 @@
     .set pop
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-mips64/syscalls/lseek.S b/libc/arch-mips64/syscalls/lseek.S
index 5c92d70..3bfc29d 100644
--- a/libc/arch-mips64/syscalls/lseek.S
+++ b/libc/arch-mips64/syscalls/lseek.S
@@ -24,5 +24,4 @@
     .set pop
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-mips64/syscalls/mmap.S b/libc/arch-mips64/syscalls/mmap.S
index 393271a..cc53eb2 100644
--- a/libc/arch-mips64/syscalls/mmap.S
+++ b/libc/arch-mips64/syscalls/mmap.S
@@ -24,5 +24,4 @@
     .set pop
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-mips64/syscalls/pread64.S b/libc/arch-mips64/syscalls/pread64.S
index 90e0612..7965ba9 100644
--- a/libc/arch-mips64/syscalls/pread64.S
+++ b/libc/arch-mips64/syscalls/pread64.S
@@ -24,5 +24,4 @@
     .set pop
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-mips64/syscalls/prlimit64.S b/libc/arch-mips64/syscalls/prlimit64.S
index 5f0ba1d..e04a5b6 100644
--- a/libc/arch-mips64/syscalls/prlimit64.S
+++ b/libc/arch-mips64/syscalls/prlimit64.S
@@ -24,5 +24,4 @@
     .set pop
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-mips64/syscalls/pwrite64.S b/libc/arch-mips64/syscalls/pwrite64.S
index e34f8db..97e0183 100644
--- a/libc/arch-mips64/syscalls/pwrite64.S
+++ b/libc/arch-mips64/syscalls/pwrite64.S
@@ -24,5 +24,4 @@
     .set pop
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-mips64/syscalls/sendfile.S b/libc/arch-mips64/syscalls/sendfile.S
index f330242..a50459e 100644
--- a/libc/arch-mips64/syscalls/sendfile.S
+++ b/libc/arch-mips64/syscalls/sendfile.S
@@ -24,5 +24,4 @@
     .set pop
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-mips64/syscalls/setrlimit.S b/libc/arch-mips64/syscalls/setrlimit.S
index 0e5e80e..be6fdc3 100644
--- a/libc/arch-mips64/syscalls/setrlimit.S
+++ b/libc/arch-mips64/syscalls/setrlimit.S
@@ -24,5 +24,4 @@
     .set pop
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-mips64/syscalls/truncate.S b/libc/arch-mips64/syscalls/truncate.S
index fb3b7eb..b832796 100644
--- a/libc/arch-mips64/syscalls/truncate.S
+++ b/libc/arch-mips64/syscalls/truncate.S
@@ -24,5 +24,4 @@
     .set pop
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S
index 25a016d..18ad810 100644
--- a/libc/arch-x86/bionic/setjmp.S
+++ b/libc/arch-x86/bionic/setjmp.S
@@ -123,7 +123,5 @@
   ret
 END(siglongjmp)
 
-  .globl longjmp
-  .equ longjmp, siglongjmp
-  .globl _longjmp
-  .equ _longjmp, siglongjmp
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-x86/syscalls/faccessat.S b/libc/arch-x86/syscalls/___faccessat.S
similarity index 70%
rename from libc/arch-x86/syscalls/faccessat.S
rename to libc/arch-x86/syscalls/___faccessat.S
index 9d52231..361a6ea 100644
--- a/libc/arch-x86/syscalls/faccessat.S
+++ b/libc/arch-x86/syscalls/___faccessat.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
+ENTRY(___faccessat)
     pushl   %ebx
     .cfi_def_cfa_offset 8
     .cfi_rel_offset ebx, 0
@@ -12,13 +12,9 @@
     pushl   %edx
     .cfi_adjust_cfa_offset 4
     .cfi_rel_offset edx, 0
-    pushl   %esi
-    .cfi_adjust_cfa_offset 4
-    .cfi_rel_offset esi, 0
-    mov     20(%esp), %ebx
-    mov     24(%esp), %ecx
-    mov     28(%esp), %edx
-    mov     32(%esp), %esi
+    mov     16(%esp), %ebx
+    mov     20(%esp), %ecx
+    mov     24(%esp), %edx
     movl    $__NR_faccessat, %eax
     int     $0x80
     cmpl    $-MAX_ERRNO, %eax
@@ -28,9 +24,9 @@
     call    __set_errno_internal
     addl    $4, %esp
 1:
-    popl    %esi
     popl    %edx
     popl    %ecx
     popl    %ebx
     ret
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-x86/syscalls/_exit.S b/libc/arch-x86/syscalls/_exit.S
index 8528ee4..9945b35 100644
--- a/libc/arch-x86/syscalls/_exit.S
+++ b/libc/arch-x86/syscalls/_exit.S
@@ -20,5 +20,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-x86/syscalls/fstat64.S b/libc/arch-x86/syscalls/fstat64.S
index fc16233..ba385a4 100644
--- a/libc/arch-x86/syscalls/fstat64.S
+++ b/libc/arch-x86/syscalls/fstat64.S
@@ -25,5 +25,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-x86/syscalls/fstatat64.S b/libc/arch-x86/syscalls/fstatat64.S
index a3697e6..90e87b6 100644
--- a/libc/arch-x86/syscalls/fstatat64.S
+++ b/libc/arch-x86/syscalls/fstatat64.S
@@ -35,5 +35,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S
index 28981fa..5559f54 100644
--- a/libc/arch-x86_64/bionic/setjmp.S
+++ b/libc/arch-x86_64/bionic/setjmp.S
@@ -129,7 +129,5 @@
   ret
 END(siglongjmp)
 
-  .globl longjmp
-  .equ longjmp, siglongjmp
-  .globl _longjmp
-  .equ _longjmp, siglongjmp
+ALIAS_SYMBOL(longjmp, siglongjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
diff --git a/libc/arch-x86_64/syscalls/faccessat.S b/libc/arch-x86_64/syscalls/___faccessat.S
similarity index 81%
rename from libc/arch-x86_64/syscalls/faccessat.S
rename to libc/arch-x86_64/syscalls/___faccessat.S
index 05a6e78..e8fd3f5 100644
--- a/libc/arch-x86_64/syscalls/faccessat.S
+++ b/libc/arch-x86_64/syscalls/___faccessat.S
@@ -2,8 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(faccessat)
-    movq    %rcx, %r10
+ENTRY(___faccessat)
     movl    $__NR_faccessat, %eax
     syscall
     cmpq    $-MAX_ERRNO, %rax
@@ -13,4 +12,5 @@
     call    __set_errno_internal
 1:
     ret
-END(faccessat)
+END(___faccessat)
+.hidden ___faccessat
diff --git a/libc/arch-x86_64/syscalls/fstatfs64.S b/libc/arch-x86_64/syscalls/__fstatfs.S
similarity index 75%
rename from libc/arch-x86_64/syscalls/fstatfs64.S
rename to libc/arch-x86_64/syscalls/__fstatfs.S
index f727350..b50e355 100644
--- a/libc/arch-x86_64/syscalls/fstatfs64.S
+++ b/libc/arch-x86_64/syscalls/__fstatfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(fstatfs64)
+ENTRY(__fstatfs)
     movl    $__NR_fstatfs, %eax
     syscall
     cmpq    $-MAX_ERRNO, %rax
@@ -12,7 +12,5 @@
     call    __set_errno_internal
 1:
     ret
-END(fstatfs64)
-
-    .globl fstatfs
-    .equ fstatfs, fstatfs64
+END(__fstatfs)
+.hidden __fstatfs
diff --git a/libc/arch-x86_64/syscalls/statfs64.S b/libc/arch-x86_64/syscalls/__statfs.S
similarity index 77%
rename from libc/arch-x86_64/syscalls/statfs64.S
rename to libc/arch-x86_64/syscalls/__statfs.S
index 16f6bdd..607a809 100644
--- a/libc/arch-x86_64/syscalls/statfs64.S
+++ b/libc/arch-x86_64/syscalls/__statfs.S
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(statfs64)
+ENTRY(__statfs)
     movl    $__NR_statfs, %eax
     syscall
     cmpq    $-MAX_ERRNO, %rax
@@ -12,7 +12,5 @@
     call    __set_errno_internal
 1:
     ret
-END(statfs64)
-
-    .globl statfs
-    .equ statfs, statfs64
+END(__statfs)
+.hidden __statfs
diff --git a/libc/arch-x86_64/syscalls/_exit.S b/libc/arch-x86_64/syscalls/_exit.S
index c79091d..1ab4d4f 100644
--- a/libc/arch-x86_64/syscalls/_exit.S
+++ b/libc/arch-x86_64/syscalls/_exit.S
@@ -14,5 +14,4 @@
     ret
 END(_exit)
 
-    .globl _Exit
-    .equ _Exit, _exit
+ALIAS_SYMBOL(_Exit, _exit)
diff --git a/libc/arch-x86_64/syscalls/fallocate.S b/libc/arch-x86_64/syscalls/fallocate.S
index 8307f7e..f6f891b 100644
--- a/libc/arch-x86_64/syscalls/fallocate.S
+++ b/libc/arch-x86_64/syscalls/fallocate.S
@@ -15,5 +15,4 @@
     ret
 END(fallocate)
 
-    .globl fallocate64
-    .equ fallocate64, fallocate
+ALIAS_SYMBOL(fallocate64, fallocate)
diff --git a/libc/arch-x86_64/syscalls/fstat64.S b/libc/arch-x86_64/syscalls/fstat64.S
index de57668..a0d4fa1 100644
--- a/libc/arch-x86_64/syscalls/fstat64.S
+++ b/libc/arch-x86_64/syscalls/fstat64.S
@@ -14,5 +14,4 @@
     ret
 END(fstat64)
 
-    .globl fstat
-    .equ fstat, fstat64
+ALIAS_SYMBOL(fstat, fstat64)
diff --git a/libc/arch-x86_64/syscalls/fstatat64.S b/libc/arch-x86_64/syscalls/fstatat64.S
index 47785bb..1984d68 100644
--- a/libc/arch-x86_64/syscalls/fstatat64.S
+++ b/libc/arch-x86_64/syscalls/fstatat64.S
@@ -15,5 +15,4 @@
     ret
 END(fstatat64)
 
-    .globl fstatat
-    .equ fstatat, fstatat64
+ALIAS_SYMBOL(fstatat, fstatat64)
diff --git a/libc/arch-x86_64/syscalls/ftruncate.S b/libc/arch-x86_64/syscalls/ftruncate.S
index 0365368..7917468 100644
--- a/libc/arch-x86_64/syscalls/ftruncate.S
+++ b/libc/arch-x86_64/syscalls/ftruncate.S
@@ -14,5 +14,4 @@
     ret
 END(ftruncate)
 
-    .globl ftruncate64
-    .equ ftruncate64, ftruncate
+ALIAS_SYMBOL(ftruncate64, ftruncate)
diff --git a/libc/arch-x86_64/syscalls/getrlimit.S b/libc/arch-x86_64/syscalls/getrlimit.S
index 2d272a1..00ed08a 100644
--- a/libc/arch-x86_64/syscalls/getrlimit.S
+++ b/libc/arch-x86_64/syscalls/getrlimit.S
@@ -14,5 +14,4 @@
     ret
 END(getrlimit)
 
-    .globl getrlimit64
-    .equ getrlimit64, getrlimit
+ALIAS_SYMBOL(getrlimit64, getrlimit)
diff --git a/libc/arch-x86_64/syscalls/lseek.S b/libc/arch-x86_64/syscalls/lseek.S
index 153b935..69d60c2 100644
--- a/libc/arch-x86_64/syscalls/lseek.S
+++ b/libc/arch-x86_64/syscalls/lseek.S
@@ -14,5 +14,4 @@
     ret
 END(lseek)
 
-    .globl lseek64
-    .equ lseek64, lseek
+ALIAS_SYMBOL(lseek64, lseek)
diff --git a/libc/arch-x86_64/syscalls/mmap.S b/libc/arch-x86_64/syscalls/mmap.S
index 8aa4780..0c25473 100644
--- a/libc/arch-x86_64/syscalls/mmap.S
+++ b/libc/arch-x86_64/syscalls/mmap.S
@@ -15,5 +15,4 @@
     ret
 END(mmap)
 
-    .globl mmap64
-    .equ mmap64, mmap
+ALIAS_SYMBOL(mmap64, mmap)
diff --git a/libc/arch-x86_64/syscalls/pread64.S b/libc/arch-x86_64/syscalls/pread64.S
index 3aa56e5..eaa47b1 100644
--- a/libc/arch-x86_64/syscalls/pread64.S
+++ b/libc/arch-x86_64/syscalls/pread64.S
@@ -15,5 +15,4 @@
     ret
 END(pread64)
 
-    .globl pread
-    .equ pread, pread64
+ALIAS_SYMBOL(pread, pread64)
diff --git a/libc/arch-x86_64/syscalls/prlimit64.S b/libc/arch-x86_64/syscalls/prlimit64.S
index 63ec492..737b863 100644
--- a/libc/arch-x86_64/syscalls/prlimit64.S
+++ b/libc/arch-x86_64/syscalls/prlimit64.S
@@ -15,5 +15,4 @@
     ret
 END(prlimit64)
 
-    .globl prlimit
-    .equ prlimit, prlimit64
+ALIAS_SYMBOL(prlimit, prlimit64)
diff --git a/libc/arch-x86_64/syscalls/pwrite64.S b/libc/arch-x86_64/syscalls/pwrite64.S
index 2779fb4..edb60af 100644
--- a/libc/arch-x86_64/syscalls/pwrite64.S
+++ b/libc/arch-x86_64/syscalls/pwrite64.S
@@ -15,5 +15,4 @@
     ret
 END(pwrite64)
 
-    .globl pwrite
-    .equ pwrite, pwrite64
+ALIAS_SYMBOL(pwrite, pwrite64)
diff --git a/libc/arch-x86_64/syscalls/sendfile.S b/libc/arch-x86_64/syscalls/sendfile.S
index 117b0aa..c0fa4ee 100644
--- a/libc/arch-x86_64/syscalls/sendfile.S
+++ b/libc/arch-x86_64/syscalls/sendfile.S
@@ -15,5 +15,4 @@
     ret
 END(sendfile)
 
-    .globl sendfile64
-    .equ sendfile64, sendfile
+ALIAS_SYMBOL(sendfile64, sendfile)
diff --git a/libc/arch-x86_64/syscalls/setrlimit.S b/libc/arch-x86_64/syscalls/setrlimit.S
index ef03068..3843ff9 100644
--- a/libc/arch-x86_64/syscalls/setrlimit.S
+++ b/libc/arch-x86_64/syscalls/setrlimit.S
@@ -14,5 +14,4 @@
     ret
 END(setrlimit)
 
-    .globl setrlimit64
-    .equ setrlimit64, setrlimit
+ALIAS_SYMBOL(setrlimit64, setrlimit)
diff --git a/libc/arch-x86_64/syscalls/truncate.S b/libc/arch-x86_64/syscalls/truncate.S
index 2ecd05b..4b953a3 100644
--- a/libc/arch-x86_64/syscalls/truncate.S
+++ b/libc/arch-x86_64/syscalls/truncate.S
@@ -14,5 +14,4 @@
     ret
 END(truncate)
 
-    .globl truncate64
-    .equ truncate64, truncate
+ALIAS_SYMBOL(truncate64, truncate)
diff --git a/libc/arch-x86_64/x86_64.mk b/libc/arch-x86_64/x86_64.mk
index ae01d2a..06d3185 100644
--- a/libc/arch-x86_64/x86_64.mk
+++ b/libc/arch-x86_64/x86_64.mk
@@ -9,8 +9,6 @@
     bionic/__memset_chk.cpp \
     bionic/__strcpy_chk.cpp \
     bionic/__strcat_chk.cpp \
-    bionic/memchr.c \
-    bionic/memrchr.c \
     bionic/strchr.cpp \
     bionic/strnlen.c \
     bionic/strrchr.cpp \
@@ -25,6 +23,10 @@
     upstream-freebsd/lib/libc/string/wmemcmp.c \
     upstream-freebsd/lib/libc/string/wmemmove.c \
 
+libc_openbsd_src_files_x86_64 += \
+    upstream-openbsd/lib/libc/string/memchr.c \
+    upstream-openbsd/lib/libc/string/memrchr.c \
+
 #
 # Inherently architecture-specific code.
 #
diff --git a/libc/bionic/NetdClient.cpp b/libc/bionic/NetdClient.cpp
index 5b0f4fd..b117d72 100644
--- a/libc/bionic/NetdClient.cpp
+++ b/libc/bionic/NetdClient.cpp
@@ -34,7 +34,7 @@
 }
 
 static void netdClientInitImpl() {
-    void* netdClientHandle = dlopen("libnetd_client.so", RTLD_LAZY);
+    void* netdClientHandle = dlopen("libnetd_client.so", RTLD_NOW);
     if (netdClientHandle == NULL) {
         // If the library is not available, it's not an error. We'll just use
         // default implementations of functions that it would've overridden.
diff --git a/libc/bionic/__cxa_thread_atexit_impl.cpp b/libc/bionic/__cxa_thread_atexit_impl.cpp
new file mode 100644
index 0000000..9ae6dfd
--- /dev/null
+++ b/libc/bionic/__cxa_thread_atexit_impl.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+#include <sys/cdefs.h>
+
+struct thread_local_dtor {
+  void (*func) (void *);
+  void *arg;
+  void *dso_handle; // unused...
+  thread_local_dtor* next;
+};
+
+__thread thread_local_dtor* thread_local_dtors = nullptr;
+
+extern "C" int __cxa_thread_atexit_impl(void (*func) (void *), void *arg, void *dso_handle) {
+  thread_local_dtor* dtor = new thread_local_dtor();
+
+  dtor->func = func;
+  dtor->arg = arg;
+  dtor->dso_handle = dso_handle;
+  dtor->next = thread_local_dtors;
+
+  thread_local_dtors = dtor;
+
+  return 0;
+}
+
+extern "C" __LIBC_HIDDEN__ void __cxa_thread_finalize() {
+  while (thread_local_dtors != nullptr) {
+    thread_local_dtor* current = thread_local_dtors;
+    thread_local_dtors = current->next;
+
+    current->func(current->arg);
+    delete current;
+  }
+}
diff --git a/libc/bionic/dup2.cpp b/libc/bionic/dup2.cpp
index 0b8632b..98c5646 100644
--- a/libc/bionic/dup2.cpp
+++ b/libc/bionic/dup2.cpp
@@ -26,8 +26,19 @@
  * SUCH DAMAGE.
  */
 
+#include <fcntl.h>
 #include <unistd.h>
 
 int dup2(int old_fd, int new_fd) {
+  // If old_fd is equal to new_fd and a valid file descriptor, dup2 returns
+  // old_fd without closing it. This is not true of dup3, so we have to
+  // handle this case ourselves.
+  if (old_fd == new_fd) {
+    if (fcntl(old_fd, F_GETFD) == -1) {
+      return -1;
+    }
+    return old_fd;
+  }
+
   return dup3(old_fd, new_fd, 0);
 }
diff --git a/libc/bionic/faccessat.cpp b/libc/bionic/faccessat.cpp
new file mode 100644
index 0000000..5f375e0
--- /dev/null
+++ b/libc/bionic/faccessat.cpp
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+
+extern "C" int ___faccessat(int, const char*, int);
+
+int faccessat(int dirfd, const char* pathname, int mode, int flags) {
+  // "The mode specifies the accessibility check(s) to be performed,
+  // and is either the value F_OK, or a mask consisting of the
+  // bitwise OR of one or more of R_OK, W_OK, and X_OK."
+  if ((mode != F_OK) && ((mode & ~(R_OK | W_OK | X_OK)) != 0) &&
+      ((mode & (R_OK | W_OK | X_OK)) == 0)) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  if (flags != 0) {
+    // We deliberately don't support AT_SYMLINK_NOFOLLOW, a glibc
+    // only feature which is error prone and dangerous.
+    //
+    // AT_EACCESS isn't supported either. Android doesn't have setuid
+    // programs, and never runs code with euid!=uid. It could be
+    // implemented in an expensive way, following the model at
+    // https://gitlab.com/bminor/musl/commit/0a05eace163cee9b08571d2ff9d90f5e82d9c228
+    // but not worth it.
+    errno = EINVAL;
+    return -1;
+  }
+
+  return ___faccessat(dirfd, pathname, mode);
+}
diff --git a/libc/bionic/getauxval.cpp b/libc/bionic/getauxval.cpp
index bc41824..22922b9 100644
--- a/libc/bionic/getauxval.cpp
+++ b/libc/bionic/getauxval.cpp
@@ -31,6 +31,7 @@
 #include <sys/auxv.h>
 #include <private/bionic_auxv.h>
 #include <elf.h>
+#include <errno.h>
 
 __LIBC_HIDDEN__ ElfW(auxv_t)* __libc_auxv = NULL;
 
@@ -40,5 +41,6 @@
       return v->a_un.a_val;
     }
   }
+  errno = ENOENT;
   return 0;
 }
diff --git a/libc/bionic/legacy_32_bit_support.cpp b/libc/bionic/legacy_32_bit_support.cpp
index 73f77be..50e4643 100644
--- a/libc/bionic/legacy_32_bit_support.cpp
+++ b/libc/bionic/legacy_32_bit_support.cpp
@@ -40,9 +40,7 @@
 
 // System calls we need.
 extern "C" int __fcntl64(int, int, void*);
-extern "C" int __fstatfs64(int, size_t, struct statfs*);
 extern "C" int __llseek(int, unsigned long, unsigned long, off64_t*, int);
-extern "C" int __statfs64(const char*, size_t, struct statfs*);
 
 // For fcntl we use the fcntl64 system call to signal that we're using struct flock64.
 int fcntl(int fd, int cmd, ...) {
@@ -55,18 +53,6 @@
   return __fcntl64(fd, cmd, arg);
 }
 
-// For fstatfs we need to add the extra argument giving the kernel the size of the buffer.
-int fstatfs(int fd, struct statfs* stat) {
-  return __fstatfs64(fd, sizeof(*stat), stat);
-}
-__strong_alias(fstatfs64, fstatfs);
-
-// For statfs we need to add the extra argument giving the kernel the size of the buffer.
-int statfs(const char* path, struct statfs* stat) {
-  return __statfs64(path, sizeof(*stat), stat);
-}
-__strong_alias(statfs64, statfs);
-
 // For lseek64 we need to use the llseek system call which splits the off64_t in two and
 // returns the off64_t result via a pointer because 32-bit kernels can't return 64-bit results.
 off64_t lseek64(int fd, off64_t off, int whence) {
diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp
index f82ec73..36dc085 100644
--- a/libc/bionic/libc_init_common.cpp
+++ b/libc/bionic/libc_init_common.cpp
@@ -88,12 +88,11 @@
   // The main thread has no mmap allocated space for stack or pthread_internal_t.
   main_thread.mmap_size = 0;
   pthread_attr_init(&main_thread.attr);
-  main_thread.attr.flags = PTHREAD_ATTR_FLAG_MAIN_THREAD;
   main_thread.attr.guard_size = 0; // The main thread has no guard page.
   main_thread.attr.stack_size = 0; // User code should never see this; we'll compute it when asked.
   // TODO: the main thread's sched_policy and sched_priority need to be queried.
 
-  __init_thread(&main_thread, false);
+  __init_thread(&main_thread);
   __init_tls(&main_thread);
   __set_tls(main_thread.tls);
   main_thread.tls[TLS_SLOT_BIONIC_PREINIT] = &args;
@@ -114,7 +113,7 @@
 
   // Get the main thread from TLS and add it to the thread list.
   pthread_internal_t* main_thread = __get_thread();
-  _pthread_internal_add(main_thread);
+  __pthread_internal_add(main_thread);
 
   __system_properties_init(); // Requires 'environ'.
 
diff --git a/libc/bionic/libc_logging.cpp b/libc/bionic/libc_logging.cpp
index 2eb9d68..7ad21c4 100644
--- a/libc/bionic/libc_logging.cpp
+++ b/libc/bionic/libc_logging.cpp
@@ -427,7 +427,7 @@
 }
 
 static int __libc_write_stderr(const char* tag, const char* msg) {
-  int fd = TEMP_FAILURE_RETRY(open("/dev/stderr", O_CLOEXEC | O_WRONLY));
+  int fd = TEMP_FAILURE_RETRY(open("/dev/stderr", O_CLOEXEC | O_WRONLY | O_APPEND));
   if (fd == -1) {
     return -1;
   }
diff --git a/libc/bionic/libgen.cpp b/libc/bionic/libgen.cpp
index b98f504..2f29d7b 100644
--- a/libc/bionic/libgen.cpp
+++ b/libc/bionic/libgen.cpp
@@ -36,6 +36,9 @@
 
 #include "private/ThreadLocalBuffer.h"
 
+static ThreadLocalBuffer<char, MAXPATHLEN> g_basename_tls_buffer;
+static ThreadLocalBuffer<char, MAXPATHLEN> g_dirname_tls_buffer;
+
 __LIBC64_HIDDEN__ int basename_r(const char* path, char* buffer, size_t buffer_size) {
   const char* startp = NULL;
   const char* endp = NULL;
@@ -147,17 +150,14 @@
   return result;
 }
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(basename);
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(dirname);
-
 char* basename(const char* path) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, basename, MAXPATHLEN);
-  int rc = basename_r(path, basename_tls_buffer, basename_tls_buffer_size);
-  return (rc < 0) ? NULL : basename_tls_buffer;
+  char* buf = g_basename_tls_buffer.get();
+  int rc = basename_r(path, buf, g_basename_tls_buffer.size());
+  return (rc < 0) ? NULL : buf;
 }
 
 char* dirname(const char* path) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, dirname, MAXPATHLEN);
-  int rc = dirname_r(path, dirname_tls_buffer, dirname_tls_buffer_size);
-  return (rc < 0) ? NULL : dirname_tls_buffer;
+  char* buf = g_dirname_tls_buffer.get();
+  int rc = dirname_r(path, buf, g_dirname_tls_buffer.size());
+  return (rc < 0) ? NULL : buf;
 }
diff --git a/libc/bionic/locale.cpp b/libc/bionic/locale.cpp
index 90aa7b8..b42b440 100644
--- a/libc/bionic/locale.cpp
+++ b/libc/bionic/locale.cpp
@@ -58,15 +58,18 @@
   DISALLOW_COPY_AND_ASSIGN(__locale_t);
 };
 
+size_t __ctype_get_mb_cur_max() {
+  locale_t l = uselocale(NULL);
+  if (l == LC_GLOBAL_LOCALE) {
+    return __bionic_current_locale_is_utf8 ? 4 : 1;
+  } else {
+    return l->mb_cur_max;
+  }
+}
+
 static pthread_once_t g_locale_once = PTHREAD_ONCE_INIT;
 static lconv g_locale;
 
-// We don't use pthread_once for this so that we know when the resource (a TLS slot) will be taken.
-static pthread_key_t g_uselocale_key;
-__attribute__((constructor)) static void __bionic_tls_uselocale_key_init() {
-  pthread_key_create(&g_uselocale_key, NULL);
-}
-
 static void __locale_init() {
   g_locale.decimal_point = const_cast<char*>(".");
 
@@ -97,15 +100,6 @@
   g_locale.int_n_sign_posn = CHAR_MAX;
 }
 
-size_t __ctype_get_mb_cur_max() {
-  locale_t l = reinterpret_cast<locale_t>(pthread_getspecific(g_uselocale_key));
-  if (l == nullptr || l == LC_GLOBAL_LOCALE) {
-    return __bionic_current_locale_is_utf8 ? 4 : 1;
-  } else {
-    return l->mb_cur_max;
-  }
-}
-
 static bool __is_supported_locale(const char* locale) {
   return (strcmp(locale, "") == 0 ||
           strcmp(locale, "C") == 0 ||
@@ -162,7 +156,16 @@
   return const_cast<char*>(__bionic_current_locale_is_utf8 ? "C.UTF-8" : "C");
 }
 
+// We can't use a constructor to create g_uselocal_key, because it may be used in constructors.
+static pthread_once_t g_uselocale_once = PTHREAD_ONCE_INIT;
+static pthread_key_t g_uselocale_key;
+
+static void g_uselocale_key_init() {
+  pthread_key_create(&g_uselocale_key, NULL);
+}
+
 locale_t uselocale(locale_t new_locale) {
+  pthread_once(&g_uselocale_once, g_uselocale_key_init);
   locale_t old_locale = static_cast<locale_t>(pthread_getspecific(g_uselocale_key));
 
   // If this is the first call to uselocale(3) on this thread, we return LC_GLOBAL_LOCALE.
diff --git a/libc/bionic/malloc_debug_common.cpp b/libc/bionic/malloc_debug_common.cpp
index 1a2765a..ee796c6 100644
--- a/libc/bionic/malloc_debug_common.cpp
+++ b/libc/bionic/malloc_debug_common.cpp
@@ -402,7 +402,7 @@
   }
 
   // Load .so that implements the required malloc debugging functionality.
-  void* malloc_impl_handle = dlopen(so_name, RTLD_LAZY);
+  void* malloc_impl_handle = dlopen(so_name, RTLD_NOW);
   if (malloc_impl_handle == NULL) {
     error_log("%s: Missing module %s required for malloc debug level %d: %s",
               getprogname(), so_name, g_malloc_debug_level, dlerror());
diff --git a/libc/bionic/memchr.c b/libc/bionic/mempcpy.cpp
similarity index 73%
rename from libc/bionic/memchr.c
rename to libc/bionic/mempcpy.cpp
index b14167a..b7b72f7 100644
--- a/libc/bionic/memchr.c
+++ b/libc/bionic/mempcpy.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2015 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,22 +25,9 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#include <stddef.h>
+
 #include <string.h>
 
-void *memchr(const void *s, int c, size_t n)
-{
-    const unsigned char*  p   = s;
-    const unsigned char*  end = p + n;
-
-    for (;;) {
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-    }
-    if (p >= end)
-        return NULL;
-    else
-        return (void*) p;
+void* mempcpy(void* dst, const void* src, size_t n) {
+  return reinterpret_cast<char*>(memcpy(dst, src, n)) + n;
 }
diff --git a/libc/bionic/memrchr.c b/libc/bionic/memrchr.c
deleted file mode 100644
index aeb5643..0000000
--- a/libc/bionic/memrchr.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include <stddef.h>
-#include <string.h>
-
-void *memrchr(const void *s, int c, size_t n)
-{
-    if (n > 0) {
-        const char*  p = (const char*) s;
-        const char*  q = p + n;
-
-        while (1) {
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-            q--; if (q < p || q[0] == (char) c) break;
-        }
-        if (q >= p)
-            return (void*)q;
-    }
-    return NULL;
-}
diff --git a/libc/bionic/mntent.cpp b/libc/bionic/mntent.cpp
index 4afacda..d169e29 100644
--- a/libc/bionic/mntent.cpp
+++ b/libc/bionic/mntent.cpp
@@ -31,14 +31,13 @@
 
 #include "private/ThreadLocalBuffer.h"
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(getmntent_mntent);
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(getmntent_strings);
+static ThreadLocalBuffer<mntent> g_getmntent_mntent_tls_buffer;
+static ThreadLocalBuffer<char, BUFSIZ> g_getmntent_strings_tls_buffer;
 
 mntent* getmntent(FILE* fp) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(mntent*, getmntent_mntent, sizeof(mntent));
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, getmntent_strings, BUFSIZ);
-  return getmntent_r(fp, getmntent_mntent_tls_buffer,
-                     getmntent_strings_tls_buffer, getmntent_strings_tls_buffer_size);
+  return getmntent_r(fp, g_getmntent_mntent_tls_buffer.get(),
+                     g_getmntent_strings_tls_buffer.get(),
+                     g_getmntent_strings_tls_buffer.size());
 }
 
 mntent* getmntent_r(FILE* fp, struct mntent* e, char* buf, int buf_len) {
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index 28d6355..8b34495 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -26,11 +26,11 @@
  * SUCH DAMAGE.
  */
 
-// This file perpetuates the mistakes of the past, but only for 32-bit targets.
-#if !defined(__LP64__)
+// This file perpetuates the mistakes of the past.
 
 #include <ctype.h>
 #include <dirent.h>
+#include <errno.h>
 #include <inttypes.h>
 #include <pthread.h>
 #include <signal.h>
@@ -45,6 +45,11 @@
 #include <unistd.h>
 #include <wchar.h>
 
+#include "private/libc_logging.h"
+
+// The part is only for 32-bit targets.
+#if !defined(__LP64__)
+
 // These were accidentally declared in <unistd.h> because we stupidly used to inline
 // getpagesize() and __getpageshift(). Needed for backwards compatibility with old NDK apps.
 extern "C" {
@@ -341,4 +346,26 @@
   return malloc(size);
 }
 
-#endif
+#define __get_thread __real_get_thread
+#include "pthread_internal.h"
+#undef __get_thread
+// Various third-party apps contain a backport of our pthread_rwlock implementation that uses this.
+extern "C" pthread_internal_t* __get_thread() {
+  return __real_get_thread();
+}
+
+#endif // !defined(__LP64__)
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" char* getusershell() {
+  return NULL;
+}
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void setusershell() { }
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void endusershell() { }
+
+// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
+extern "C" void endpwent() { }
diff --git a/libc/bionic/pthread_accessor.h b/libc/bionic/pthread_accessor.h
deleted file mode 100644
index df4a5a2..0000000
--- a/libc/bionic/pthread_accessor.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef PTHREAD_ACCESSOR_H
-#define PTHREAD_ACCESSOR_H
-
-#include <pthread.h>
-
-#include "private/bionic_macros.h"
-#include "pthread_internal.h"
-
-class pthread_accessor {
- public:
-  explicit pthread_accessor(pthread_t desired_thread) {
-    Lock();
-    for (thread_ = g_thread_list; thread_ != NULL; thread_ = thread_->next) {
-      if (thread_ == reinterpret_cast<pthread_internal_t*>(desired_thread)) {
-        break;
-      }
-    }
-  }
-
-  ~pthread_accessor() {
-    Unlock();
-  }
-
-  void Unlock() {
-    if (is_locked_) {
-      is_locked_ = false;
-      thread_ = NULL;
-      pthread_mutex_unlock(&g_thread_list_lock);
-    }
-  }
-
-  pthread_internal_t& operator*() const { return *thread_; }
-  pthread_internal_t* operator->() const { return thread_; }
-  pthread_internal_t* get() const { return thread_; }
-
- private:
-  pthread_internal_t* thread_;
-  bool is_locked_;
-
-  void Lock() {
-    pthread_mutex_lock(&g_thread_list_lock);
-    is_locked_ = true;
-  }
-
-  DISALLOW_COPY_AND_ASSIGN(pthread_accessor);
-};
-
-#endif // PTHREAD_ACCESSOR_H
diff --git a/libc/bionic/pthread_attr.cpp b/libc/bionic/pthread_attr.cpp
index c65ccc1..7ad3431 100644
--- a/libc/bionic/pthread_attr.cpp
+++ b/libc/bionic/pthread_attr.cpp
@@ -152,9 +152,6 @@
 }
 
 int pthread_attr_getstack(const pthread_attr_t* attr, void** stack_base, size_t* stack_size) {
-  if ((attr->flags & PTHREAD_ATTR_FLAG_MAIN_THREAD) != 0) {
-    return __pthread_attr_getstack_main_thread(stack_base, stack_size);
-  }
   *stack_base = attr->stack_base;
   *stack_size = attr->stack_size;
   return 0;
@@ -171,7 +168,18 @@
 }
 
 int pthread_getattr_np(pthread_t t, pthread_attr_t* attr) {
-  *attr = reinterpret_cast<pthread_internal_t*>(t)->attr;
+  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(t);
+  *attr = thread->attr;
+  // We prefer reading join_state here to setting thread->attr.flags in pthread_detach.
+  // Because data race exists in the latter case.
+  if (atomic_load(&thread->join_state) == THREAD_DETACHED) {
+    attr->flags |= PTHREAD_ATTR_FLAG_DETACHED;
+  }
+  // The main thread's stack information is not stored in thread->attr, and we need to
+  // collect that at runtime.
+  if (thread->tid == getpid()) {
+    return __pthread_attr_getstack_main_thread(&attr->stack_base, &attr->stack_size);
+  }
   return 0;
 }
 
diff --git a/libc/bionic/pthread_cond.cpp b/libc/bionic/pthread_cond.cpp
index 5542c59..4a69da5 100644
--- a/libc/bionic/pthread_cond.cpp
+++ b/libc/bionic/pthread_cond.cpp
@@ -41,6 +41,13 @@
 #include "private/bionic_time_conversions.h"
 #include "private/bionic_tls.h"
 
+// XXX *technically* there is a race condition that could allow
+// XXX a signal to be missed.  If thread A is preempted in _wait()
+// XXX after unlocking the mutex and before waiting, and if other
+// XXX threads call signal or broadcast UINT_MAX/2 times (exactly),
+// XXX before thread A is scheduled again and calls futex_wait(),
+// XXX then the signal will be lost.
+
 // We use one bit in pthread_condattr_t (long) values as the 'shared' flag
 // and one bit for the clock type (CLOCK_REALTIME is ((clockid_t) 1), and
 // CLOCK_MONOTONIC is ((clockid_t) 0).). The rest of the bits are a counter.
@@ -57,7 +64,6 @@
 #define COND_GET_CLOCK(c) (((c) & COND_CLOCK_MASK) >> 1)
 #define COND_SET_CLOCK(attr, c) ((attr) | (c << 1))
 
-
 int pthread_condattr_init(pthread_condattr_t* attr) {
   *attr = 0;
   *attr |= PTHREAD_PROCESS_PRIVATE;
@@ -98,47 +104,56 @@
   return 0;
 }
 
-static inline atomic_uint* COND_TO_ATOMIC_POINTER(pthread_cond_t* cond) {
-  static_assert(sizeof(atomic_uint) == sizeof(cond->value),
-                "cond->value should actually be atomic_uint in implementation.");
+struct pthread_cond_internal_t {
+  atomic_uint state;
 
-  // We prefer casting to atomic_uint instead of declaring cond->value to be atomic_uint directly.
-  // Because using the second method pollutes pthread.h, and causes an error when compiling libcxx.
-  return reinterpret_cast<atomic_uint*>(&cond->value);
+  bool process_shared() {
+    return COND_IS_SHARED(atomic_load_explicit(&state, memory_order_relaxed));
+  }
+
+  int get_clock() {
+    return COND_GET_CLOCK(atomic_load_explicit(&state, memory_order_relaxed));
+  }
+
+#if defined(__LP64__)
+  char __reserved[44];
+#endif
+};
+
+static_assert(sizeof(pthread_cond_t) == sizeof(pthread_cond_internal_t),
+              "pthread_cond_t should actually be pthread_cond_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_cond_t, we can't use more strict alignment
+// than 4-byte alignment.
+static_assert(alignof(pthread_cond_t) == 4,
+              "pthread_cond_t should fulfill the alignment requirement of pthread_cond_internal_t.");
+
+static pthread_cond_internal_t* __get_internal_cond(pthread_cond_t* cond_interface) {
+  return reinterpret_cast<pthread_cond_internal_t*>(cond_interface);
 }
 
-// XXX *technically* there is a race condition that could allow
-// XXX a signal to be missed.  If thread A is preempted in _wait()
-// XXX after unlocking the mutex and before waiting, and if other
-// XXX threads call signal or broadcast UINT_MAX/2 times (exactly),
-// XXX before thread A is scheduled again and calls futex_wait(),
-// XXX then the signal will be lost.
+int pthread_cond_init(pthread_cond_t* cond_interface, const pthread_condattr_t* attr) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
 
-int pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  unsigned int init_value = 0;
-
+  unsigned int init_state = 0;
   if (attr != NULL) {
-    init_value = (*attr & COND_FLAGS_MASK);
+    init_state = (*attr & COND_FLAGS_MASK);
   }
-  atomic_init(cond_value_ptr, init_value);
+  atomic_init(&cond->state, init_state);
 
   return 0;
 }
 
-int pthread_cond_destroy(pthread_cond_t* cond) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  atomic_store_explicit(cond_value_ptr, 0xdeadc04d, memory_order_relaxed);
+int pthread_cond_destroy(pthread_cond_t* cond_interface) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  atomic_store_explicit(&cond->state, 0xdeadc04d, memory_order_relaxed);
   return 0;
 }
 
 // This function is used by pthread_cond_broadcast and
 // pthread_cond_signal to atomically decrement the counter
 // then wake up thread_count threads.
-static int __pthread_cond_pulse(atomic_uint* cond_value_ptr, int thread_count) {
-  unsigned int old_value = atomic_load_explicit(cond_value_ptr, memory_order_relaxed);
-  bool shared = COND_IS_SHARED(old_value);
-
+static int __pthread_cond_pulse(pthread_cond_internal_t* cond, int thread_count) {
   // We don't use a release/seq_cst fence here. Because pthread_cond_wait/signal can't be
   // used as a method for memory synchronization by itself. It should always be used with
   // pthread mutexes. Note that Spurious wakeups from pthread_cond_wait/timedwait may occur,
@@ -149,20 +164,18 @@
   // synchronization. And it doesn't help even if we use any fence here.
 
   // The increase of value should leave flags alone, even if the value can overflows.
-  atomic_fetch_add_explicit(cond_value_ptr, COND_COUNTER_STEP, memory_order_relaxed);
+  atomic_fetch_add_explicit(&cond->state, COND_COUNTER_STEP, memory_order_relaxed);
 
-  __futex_wake_ex(cond_value_ptr, shared, thread_count);
+  __futex_wake_ex(&cond->state, cond->process_shared(), thread_count);
   return 0;
 }
 
-__LIBC_HIDDEN__
-int __pthread_cond_timedwait_relative(atomic_uint* cond_value_ptr, pthread_mutex_t* mutex,
-                                      const timespec* reltime) {
-  unsigned int old_value = atomic_load_explicit(cond_value_ptr, memory_order_relaxed);
-  bool shared = COND_IS_SHARED(old_value);
+static int __pthread_cond_timedwait_relative(pthread_cond_internal_t* cond, pthread_mutex_t* mutex,
+                                             const timespec* rel_timeout_or_null) {
+  unsigned int old_state = atomic_load_explicit(&cond->state, memory_order_relaxed);
 
   pthread_mutex_unlock(mutex);
-  int status = __futex_wait_ex(cond_value_ptr, shared, old_value, reltime);
+  int status = __futex_wait_ex(&cond->state, cond->process_shared(), old_state, rel_timeout_or_null);
   pthread_mutex_lock(mutex);
 
   if (status == -ETIMEDOUT) {
@@ -171,67 +184,68 @@
   return 0;
 }
 
-__LIBC_HIDDEN__
-int __pthread_cond_timedwait(atomic_uint* cond_value_ptr, pthread_mutex_t* mutex,
-                             const timespec* abs_ts, clockid_t clock) {
+static int __pthread_cond_timedwait(pthread_cond_internal_t* cond, pthread_mutex_t* mutex,
+                                    const timespec* abs_timeout_or_null, clockid_t clock) {
   timespec ts;
-  timespec* tsp;
+  timespec* rel_timeout = NULL;
 
-  if (abs_ts != NULL) {
-    if (!timespec_from_absolute_timespec(ts, *abs_ts, clock)) {
+  if (abs_timeout_or_null != NULL) {
+    rel_timeout = &ts;
+    if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
       return ETIMEDOUT;
     }
-    tsp = &ts;
-  } else {
-    tsp = NULL;
   }
 
-  return __pthread_cond_timedwait_relative(cond_value_ptr, mutex, tsp);
+  return __pthread_cond_timedwait_relative(cond, mutex, rel_timeout);
 }
 
-int pthread_cond_broadcast(pthread_cond_t* cond) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_pulse(cond_value_ptr, INT_MAX);
+int pthread_cond_broadcast(pthread_cond_t* cond_interface) {
+  return __pthread_cond_pulse(__get_internal_cond(cond_interface), INT_MAX);
 }
 
-int pthread_cond_signal(pthread_cond_t* cond) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_pulse(cond_value_ptr, 1);
+int pthread_cond_signal(pthread_cond_t* cond_interface) {
+  return __pthread_cond_pulse(__get_internal_cond(cond_interface), 1);
 }
 
-int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait(cond_value_ptr, mutex, NULL,
-           COND_GET_CLOCK(atomic_load_explicit(cond_value_ptr, memory_order_relaxed)));
+int pthread_cond_wait(pthread_cond_t* cond_interface, pthread_mutex_t* mutex) {
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  return __pthread_cond_timedwait(cond, mutex, NULL, cond->get_clock());
 }
 
-int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t * mutex, const timespec *abstime) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait(cond_value_ptr, mutex, abstime,
-           COND_GET_CLOCK(atomic_load_explicit(cond_value_ptr, memory_order_relaxed)));
+int pthread_cond_timedwait(pthread_cond_t *cond_interface, pthread_mutex_t * mutex,
+                           const timespec *abstime) {
+
+  pthread_cond_internal_t* cond = __get_internal_cond(cond_interface);
+  return __pthread_cond_timedwait(cond, mutex, abstime, cond->get_clock());
 }
 
 #if !defined(__LP64__)
 // TODO: this exists only for backward binary compatibility on 32 bit platforms.
-extern "C" int pthread_cond_timedwait_monotonic(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait(cond_value_ptr, mutex, abstime, CLOCK_MONOTONIC);
+extern "C" int pthread_cond_timedwait_monotonic(pthread_cond_t* cond_interface,
+                                                pthread_mutex_t* mutex,
+                                                const timespec* abs_timeout) {
+
+  return __pthread_cond_timedwait(__get_internal_cond(cond_interface), mutex, abs_timeout,
+                                  CLOCK_MONOTONIC);
 }
 
-extern "C" int pthread_cond_timedwait_monotonic_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait(cond_value_ptr, mutex, abstime, CLOCK_MONOTONIC);
+extern "C" int pthread_cond_timedwait_monotonic_np(pthread_cond_t* cond_interface,
+                                                   pthread_mutex_t* mutex,
+                                                   const timespec* abs_timeout) {
+  return pthread_cond_timedwait_monotonic(cond_interface, mutex, abs_timeout);
 }
 
-extern "C" int pthread_cond_timedwait_relative_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* reltime) {
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait_relative(cond_value_ptr, mutex, reltime);
+extern "C" int pthread_cond_timedwait_relative_np(pthread_cond_t* cond_interface,
+                                                  pthread_mutex_t* mutex,
+                                                  const timespec* rel_timeout) {
+
+  return __pthread_cond_timedwait_relative(__get_internal_cond(cond_interface), mutex, rel_timeout);
 }
 
-extern "C" int pthread_cond_timeout_np(pthread_cond_t* cond, pthread_mutex_t* mutex, unsigned ms) {
+extern "C" int pthread_cond_timeout_np(pthread_cond_t* cond_interface,
+                                       pthread_mutex_t* mutex, unsigned ms) {
   timespec ts;
   timespec_from_ms(ts, ms);
-  atomic_uint* cond_value_ptr = COND_TO_ATOMIC_POINTER(cond);
-  return __pthread_cond_timedwait_relative(cond_value_ptr, mutex, &ts);
+  return pthread_cond_timedwait_relative_np(cond_interface, mutex, &ts);
 }
 #endif // !defined(__LP64__)
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index c6d8494..dbdb180 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -56,7 +56,8 @@
   if (thread->mmap_size == 0) {
     // If the TLS area was not allocated by mmap(), it may not have been cleared to zero.
     // So assume the worst and zero the TLS area.
-    memset(&thread->tls[0], 0, BIONIC_TLS_SLOTS * sizeof(void*));
+    memset(thread->tls, 0, sizeof(thread->tls));
+    memset(thread->key_data, 0, sizeof(thread->key_data));
   }
 
   // Slot 0 must point to itself. The x86 Linux kernel reads the TLS from %fs:0.
@@ -68,13 +69,20 @@
 
 void __init_alternate_signal_stack(pthread_internal_t* thread) {
   // Create and set an alternate signal stack.
-  stack_t ss;
-  ss.ss_sp = mmap(NULL, SIGSTKSZ, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
-  if (ss.ss_sp != MAP_FAILED) {
-    ss.ss_size = SIGSTKSZ;
+  void* stack_base = mmap(NULL, SIGNAL_STACK_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  if (stack_base != MAP_FAILED) {
+
+    // Create a guard page to catch stack overflows in signal handlers.
+    if (mprotect(stack_base, PAGE_SIZE, PROT_NONE) == -1) {
+      munmap(stack_base, SIGNAL_STACK_SIZE);
+      return;
+    }
+    stack_t ss;
+    ss.ss_sp = reinterpret_cast<uint8_t*>(stack_base) + PAGE_SIZE;
+    ss.ss_size = SIGNAL_STACK_SIZE - PAGE_SIZE;
     ss.ss_flags = 0;
     sigaltstack(&ss, NULL);
-    thread->alternate_signal_stack = ss.ss_sp;
+    thread->alternate_signal_stack = stack_base;
 
     // We can only use const static allocated string for mapped region name, as Android kernel
     // uses the string pointer directly when dumping /proc/pid/maps.
@@ -82,9 +90,15 @@
   }
 }
 
-int __init_thread(pthread_internal_t* thread, bool add_to_thread_list) {
+int __init_thread(pthread_internal_t* thread) {
   int error = 0;
 
+  if (__predict_true((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) == 0)) {
+    atomic_init(&thread->join_state, THREAD_NOT_JOINED);
+  } else {
+    atomic_init(&thread->join_state, THREAD_DETACHED);
+  }
+
   // Set the scheduling policy/priority of the thread.
   if (thread->attr.sched_policy != SCHED_NORMAL) {
     sched_param param;
@@ -101,10 +115,6 @@
 
   thread->cleanup_stack = NULL;
 
-  if (add_to_thread_list) {
-    _pthread_internal_add(thread);
-  }
-
   return error;
 }
 
@@ -155,15 +165,16 @@
   }
 
   // Mapped space(or user allocated stack) is used for:
-  //   thread_internal_t (including tls array)
+  //   pthread_internal_t
   //   thread stack (including guard page)
-  stack_top -= sizeof(pthread_internal_t);
+
+  // To safely access the pthread_internal_t and thread stack, we need to find a 16-byte aligned boundary.
+  stack_top = reinterpret_cast<uint8_t*>(
+                (reinterpret_cast<uintptr_t>(stack_top) - sizeof(pthread_internal_t)) & ~0xf);
+
   pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(stack_top);
   attr->stack_size = stack_top - reinterpret_cast<uint8_t*>(attr->stack_base);
 
-  // No need to check stack_top alignment. The size of pthread_internal_t is 16-bytes aligned,
-  // and user allocated stack is guaranteed by pthread_attr_setstack.
-
   thread->mmap_size = mmap_size;
   thread->attr = *attr;
   __init_tls(thread);
@@ -258,18 +269,19 @@
     return clone_errno;
   }
 
-  int init_errno = __init_thread(thread, true);
+  int init_errno = __init_thread(thread);
   if (init_errno != 0) {
     // Mark the thread detached and replace its start_routine with a no-op.
     // Letting the thread run is the easiest way to clean up its resources.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_DETACHED;
+    atomic_store(&thread->join_state, THREAD_DETACHED);
+    __pthread_internal_add(thread);
     thread->start_routine = __do_nothing;
     pthread_mutex_unlock(&thread->startup_handshake_mutex);
     return init_errno;
   }
 
   // Publish the pthread_t and unlock the mutex to let the new thread start running.
-  *thread_out = reinterpret_cast<pthread_t>(thread);
+  *thread_out = __pthread_internal_add(thread);
   pthread_mutex_unlock(&thread->startup_handshake_mutex);
 
   return 0;
diff --git a/libc/bionic/pthread_detach.cpp b/libc/bionic/pthread_detach.cpp
index c800660..fb8e0dd 100644
--- a/libc/bionic/pthread_detach.cpp
+++ b/libc/bionic/pthread_detach.cpp
@@ -29,30 +29,24 @@
 #include <errno.h>
 #include <pthread.h>
 
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_detach(pthread_t t) {
-  {
-    pthread_accessor thread(t);
-    if (thread.get() == NULL) {
-      return ESRCH;
-    }
-
-    if (thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) {
-      return EINVAL; // Already detached.
-    }
-
-    if (thread->attr.flags & PTHREAD_ATTR_FLAG_JOINED) {
-      return 0; // Already being joined; silently do nothing, like glibc.
-    }
-
-    // If the thread has not exited, we can detach it safely.
-    if ((thread->attr.flags & PTHREAD_ATTR_FLAG_ZOMBIE) == 0) {
-      thread->attr.flags |= PTHREAD_ATTR_FLAG_DETACHED;
-      return 0;
-    }
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ESRCH;
   }
 
-  // The thread is in zombie state, use pthread_join to clean it up.
-  return pthread_join(t, NULL);
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while (old_state == THREAD_NOT_JOINED &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_DETACHED)) {
+  }
+
+  if (old_state == THREAD_NOT_JOINED) {
+    return 0;
+  } else if (old_state == THREAD_EXITED_NOT_JOINED) {
+    // Use pthread_join to clean it up.
+    return pthread_join(t, NULL);
+  }
+  return EINVAL;
 }
diff --git a/libc/bionic/pthread_exit.cpp b/libc/bionic/pthread_exit.cpp
index d0d64b0..ceda931 100644
--- a/libc/bionic/pthread_exit.cpp
+++ b/libc/bionic/pthread_exit.cpp
@@ -37,6 +37,7 @@
 extern "C" __noreturn void _exit_with_stack_teardown(void*, size_t);
 extern "C" __noreturn void __exit(int);
 extern "C" int __set_tid_address(int*);
+extern "C" void __cxa_thread_finalize();
 
 /* CAVEAT: our implementation of pthread_cleanup_push/pop doesn't support C++ exceptions
  *         and thread cancelation
@@ -59,10 +60,13 @@
 }
 
 void pthread_exit(void* return_value) {
+  // Call dtors for thread_local objects first.
+  __cxa_thread_finalize();
+
   pthread_internal_t* thread = __get_thread();
   thread->return_value = return_value;
 
-  // Call the cleanup handlers first.
+  // Call the cleanup handlers.
   while (thread->cleanup_stack) {
     __pthread_cleanup_t* c = thread->cleanup_stack;
     thread->cleanup_stack = c->__cleanup_prev;
@@ -83,13 +87,16 @@
     sigaltstack(&ss, NULL);
 
     // Free it.
-    munmap(thread->alternate_signal_stack, SIGSTKSZ);
+    munmap(thread->alternate_signal_stack, SIGNAL_STACK_SIZE);
     thread->alternate_signal_stack = NULL;
   }
 
-  bool free_mapped_space = false;
-  pthread_mutex_lock(&g_thread_list_lock);
-  if ((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) != 0) {
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while (old_state == THREAD_NOT_JOINED &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_EXITED_NOT_JOINED)) {
+  }
+
+  if (old_state == THREAD_DETACHED) {
     // The thread is detached, no one will use pthread_internal_t after pthread_exit.
     // So we can free mapped space, which includes pthread_internal_t and thread stack.
     // First make sure that the kernel does not try to clear the tid field
@@ -97,28 +104,23 @@
     __set_tid_address(NULL);
 
     // pthread_internal_t is freed below with stack, not here.
-    _pthread_internal_remove_locked(thread, false);
-    free_mapped_space = true;
-  } else {
-    // Mark the thread as exiting without freeing pthread_internal_t.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_ZOMBIE;
+    __pthread_internal_remove(thread);
+
+    if (thread->mmap_size != 0) {
+      // We need to free mapped space for detached threads when they exit.
+      // That's not something we can do in C.
+
+      // We don't want to take a signal after we've unmapped the stack.
+      // That's one last thing we can handle in C.
+      sigset_t mask;
+      sigfillset(&mask);
+      sigprocmask(SIG_SETMASK, &mask, NULL);
+
+      _exit_with_stack_teardown(thread->attr.stack_base, thread->mmap_size);
+    }
   }
-  pthread_mutex_unlock(&g_thread_list_lock);
 
-  if (free_mapped_space && thread->mmap_size != 0) {
-    // We need to free mapped space for detached threads when they exit.
-    // That's not something we can do in C.
-
-    // We don't want to take a signal after we've unmapped the stack.
-    // That's one last thing we can handle in C.
-    sigset_t mask;
-    sigfillset(&mask);
-    sigprocmask(SIG_SETMASK, &mask, NULL);
-
-    _exit_with_stack_teardown(thread->attr.stack_base, thread->mmap_size);
-  } else {
-    // No need to free mapped space. Either there was no space mapped, or it is left for
-    // the pthread_join caller to clean up.
-    __exit(0);
-  }
+  // No need to free mapped space. Either there was no space mapped, or it is left for
+  // the pthread_join caller to clean up.
+  __exit(0);
 }
diff --git a/libc/bionic/pthread_getcpuclockid.cpp b/libc/bionic/pthread_getcpuclockid.cpp
index d11f56a..2bf2004 100644
--- a/libc/bionic/pthread_getcpuclockid.cpp
+++ b/libc/bionic/pthread_getcpuclockid.cpp
@@ -28,11 +28,11 @@
 
 #include <errno.h>
 
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_getcpuclockid(pthread_t t, clockid_t* clockid) {
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pthread_getschedparam.cpp b/libc/bionic/pthread_getschedparam.cpp
index 2cdc11a..052fb05 100644
--- a/libc/bionic/pthread_getschedparam.cpp
+++ b/libc/bionic/pthread_getschedparam.cpp
@@ -29,13 +29,13 @@
 #include <errno.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_getschedparam(pthread_t t, int* policy, sched_param* param) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pthread_internals.cpp b/libc/bionic/pthread_internal.cpp
similarity index 70%
rename from libc/bionic/pthread_internals.cpp
rename to libc/bionic/pthread_internal.cpp
index 14061d1..1967ccf 100644
--- a/libc/bionic/pthread_internals.cpp
+++ b/libc/bionic/pthread_internal.cpp
@@ -38,26 +38,10 @@
 #include "private/libc_logging.h"
 #include "private/ScopedPthreadMutexLocker.h"
 
-pthread_internal_t* g_thread_list = NULL;
-pthread_mutex_t g_thread_list_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_internal_t* g_thread_list = NULL;
+static pthread_mutex_t g_thread_list_lock = PTHREAD_MUTEX_INITIALIZER;
 
-void _pthread_internal_remove_locked(pthread_internal_t* thread, bool free_thread) {
-  if (thread->next != NULL) {
-    thread->next->prev = thread->prev;
-  }
-  if (thread->prev != NULL) {
-    thread->prev->next = thread->next;
-  } else {
-    g_thread_list = thread->next;
-  }
-
-  if (free_thread && thread->mmap_size != 0) {
-    // Free mapped space, including thread stack and pthread_internal_t.
-    munmap(thread->attr.stack_base, thread->mmap_size);
-  }
-}
-
-void _pthread_internal_add(pthread_internal_t* thread) {
+pthread_t __pthread_internal_add(pthread_internal_t* thread) {
   ScopedPthreadMutexLocker locker(&g_thread_list_lock);
 
   // We insert at the head.
@@ -67,8 +51,42 @@
     thread->next->prev = thread;
   }
   g_thread_list = thread;
+  return reinterpret_cast<pthread_t>(thread);
 }
 
-pthread_internal_t* __get_thread(void) {
-  return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
+void __pthread_internal_remove(pthread_internal_t* thread) {
+  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
+
+  if (thread->next != NULL) {
+    thread->next->prev = thread->prev;
+  }
+  if (thread->prev != NULL) {
+    thread->prev->next = thread->next;
+  } else {
+    g_thread_list = thread->next;
+  }
+}
+
+static void __pthread_internal_free(pthread_internal_t* thread) {
+  if (thread->mmap_size != 0) {
+    // Free mapped space, including thread stack and pthread_internal_t.
+    munmap(thread->attr.stack_base, thread->mmap_size);
+  }
+}
+
+void __pthread_internal_remove_and_free(pthread_internal_t* thread) {
+  __pthread_internal_remove(thread);
+  __pthread_internal_free(thread);
+}
+
+pthread_internal_t* __pthread_internal_find(pthread_t thread_id) {
+  pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(thread_id);
+  ScopedPthreadMutexLocker locker(&g_thread_list_lock);
+
+  for (pthread_internal_t* t = g_thread_list; t != NULL; t = t->next) {
+    if (t == thread) {
+      return thread;
+    }
+  }
+  return NULL;
 }
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index 8fbaf22..3b91e6a 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -29,6 +29,7 @@
 #define _PTHREAD_INTERNAL_H_
 
 #include <pthread.h>
+#include <stdatomic.h>
 
 #include "private/bionic_tls.h"
 
@@ -38,11 +39,17 @@
 /* Has the thread been joined by another thread? */
 #define PTHREAD_ATTR_FLAG_JOINED 0x00000002
 
-/* Did the thread exit without freeing pthread_internal_t? */
-#define PTHREAD_ATTR_FLAG_ZOMBIE 0x00000004
+struct pthread_key_data_t {
+  uintptr_t seq; // Use uintptr_t just for alignment, as we use pointer below.
+  void* data;
+};
 
-/* Is this the main thread? */
-#define PTHREAD_ATTR_FLAG_MAIN_THREAD 0x80000000
+enum ThreadJoinState {
+  THREAD_NOT_JOINED,
+  THREAD_EXITED_NOT_JOINED,
+  THREAD_JOINED,
+  THREAD_DETACHED
+};
 
 struct pthread_internal_t {
   struct pthread_internal_t* next;
@@ -72,6 +79,8 @@
 
   pthread_attr_t attr;
 
+  _Atomic(ThreadJoinState) join_state;
+
   __pthread_cleanup_t* cleanup_stack;
 
   void* (*start_routine)(void*);
@@ -86,24 +95,31 @@
 
   void* tls[BIONIC_TLS_SLOTS];
 
+  pthread_key_data_t key_data[BIONIC_PTHREAD_KEY_COUNT];
+
   /*
    * The dynamic linker implements dlerror(3), which makes it hard for us to implement this
    * per-thread buffer by simply using malloc(3) and free(3).
    */
 #define __BIONIC_DLERROR_BUFFER_SIZE 512
   char dlerror_buffer[__BIONIC_DLERROR_BUFFER_SIZE];
-} __attribute__((aligned(16))); // Align it as thread stack top below it should be aligned.
+};
 
-__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread, bool add_to_thread_list);
+__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread);
 __LIBC_HIDDEN__ void __init_tls(pthread_internal_t* thread);
 __LIBC_HIDDEN__ void __init_alternate_signal_stack(pthread_internal_t*);
-__LIBC_HIDDEN__ void _pthread_internal_add(pthread_internal_t* thread);
 
-/* Various third-party apps contain a backport of our pthread_rwlock implementation that uses this. */
-extern "C" __LIBC64_HIDDEN__ pthread_internal_t* __get_thread(void);
+__LIBC_HIDDEN__ pthread_t           __pthread_internal_add(pthread_internal_t* thread);
+__LIBC_HIDDEN__ pthread_internal_t* __pthread_internal_find(pthread_t pthread_id);
+__LIBC_HIDDEN__ void                __pthread_internal_remove(pthread_internal_t* thread);
+__LIBC_HIDDEN__ void                __pthread_internal_remove_and_free(pthread_internal_t* thread);
+
+// Make __get_thread() inlined for performance reason. See http://b/19825434.
+static inline __always_inline pthread_internal_t* __get_thread() {
+  return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
+}
 
 __LIBC_HIDDEN__ void pthread_key_clean_all(void);
-__LIBC_HIDDEN__ void _pthread_internal_remove_locked(pthread_internal_t* thread, bool free_thread);
 
 /*
  * Traditionally we gave threads a 1MiB stack. When we started
@@ -114,8 +130,8 @@
  */
 #define PTHREAD_STACK_SIZE_DEFAULT ((1 * 1024 * 1024) - SIGSTKSZ)
 
-__LIBC_HIDDEN__ extern pthread_internal_t* g_thread_list;
-__LIBC_HIDDEN__ extern pthread_mutex_t g_thread_list_lock;
+/* Leave room for a guard page in the internally created signal stacks. */
+#define SIGNAL_STACK_SIZE (SIGSTKSZ + PAGE_SIZE)
 
 /* Needed by fork. */
 __LIBC_HIDDEN__ extern void __bionic_atfork_run_prepare();
diff --git a/libc/bionic/pthread_join.cpp b/libc/bionic/pthread_join.cpp
index e3350ef..4d852cb 100644
--- a/libc/bionic/pthread_join.cpp
+++ b/libc/bionic/pthread_join.cpp
@@ -29,36 +29,31 @@
 #include <errno.h>
 
 #include "private/bionic_futex.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_join(pthread_t t, void** return_value) {
   if (t == pthread_self()) {
     return EDEADLK;
   }
 
-  pid_t tid;
-  volatile int* tid_ptr;
-  {
-    pthread_accessor thread(t);
-    if (thread.get() == NULL) {
-      return ESRCH;
-    }
-
-    if ((thread->attr.flags & PTHREAD_ATTR_FLAG_DETACHED) != 0) {
-      return EINVAL;
-    }
-
-    if ((thread->attr.flags & PTHREAD_ATTR_FLAG_JOINED) != 0) {
-      return EINVAL;
-    }
-
-    // Okay, looks like we can signal our intention to join.
-    thread->attr.flags |= PTHREAD_ATTR_FLAG_JOINED;
-    tid = thread->tid;
-    tid_ptr = &thread->tid;
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ESRCH;
   }
 
-  // We set the PTHREAD_ATTR_FLAG_JOINED flag with the lock held,
+  ThreadJoinState old_state = THREAD_NOT_JOINED;
+  while ((old_state == THREAD_NOT_JOINED || old_state == THREAD_EXITED_NOT_JOINED) &&
+         !atomic_compare_exchange_weak(&thread->join_state, &old_state, THREAD_JOINED)) {
+  }
+
+  if (old_state == THREAD_DETACHED || old_state == THREAD_JOINED) {
+    return EINVAL;
+  }
+
+  pid_t tid = thread->tid;
+  volatile int* tid_ptr = &thread->tid;
+
+  // We set thread->join_state to THREAD_JOINED with atomic operation,
   // so no one is going to remove this thread except us.
 
   // Wait for the thread to actually exit, if it hasn't already.
@@ -66,14 +61,10 @@
     __futex_wait(tid_ptr, tid, NULL);
   }
 
-  // Take the lock again so we can pull the thread's return value
-  // and remove the thread from the list.
-  pthread_accessor thread(t);
-
   if (return_value) {
     *return_value = thread->return_value;
   }
 
-  _pthread_internal_remove_locked(thread.get(), true);
+  __pthread_internal_remove_and_free(thread);
   return 0;
 }
diff --git a/libc/bionic/pthread_key.cpp b/libc/bionic/pthread_key.cpp
index 49b72e9..65e0879 100644
--- a/libc/bionic/pthread_key.cpp
+++ b/libc/bionic/pthread_key.cpp
@@ -28,175 +28,98 @@
 
 #include <errno.h>
 #include <pthread.h>
+#include <stdatomic.h>
 
 #include "private/bionic_tls.h"
 #include "pthread_internal.h"
 
-/* A technical note regarding our thread-local-storage (TLS) implementation:
- *
- * There can be up to BIONIC_TLS_SLOTS independent TLS keys in a given process,
- * The keys below TLS_SLOT_FIRST_USER_SLOT are reserved for Bionic to hold
- * special thread-specific variables like errno or a pointer to
- * the current thread's descriptor. These entries cannot be accessed through
- * pthread_getspecific() / pthread_setspecific() or pthread_key_delete()
- *
- * The 'tls_map_t' type defined below implements a shared global map of
- * currently created/allocated TLS keys and the destructors associated
- * with them.
- *
- * The global TLS map simply contains a bitmap of allocated keys, and
- * an array of destructors.
- *
- * Each thread has a TLS area that is a simple array of BIONIC_TLS_SLOTS void*
- * pointers. the TLS area of the main thread is stack-allocated in
- * __libc_init_common, while the TLS area of other threads is placed at
- * the top of their stack in pthread_create.
- *
- * When pthread_key_delete() is called it will erase the key's bitmap bit
- * and its destructor, and will also clear the key data in the TLS area of
- * all created threads. As mandated by Posix, it is the responsibility of
- * the caller of pthread_key_delete() to properly reclaim the objects that
- * were pointed to by these data fields (either before or after the call).
- */
-
-#define TLSMAP_BITS       32
-#define TLSMAP_WORDS      ((BIONIC_TLS_SLOTS+TLSMAP_BITS-1)/TLSMAP_BITS)
-#define TLSMAP_WORD(m,k)  (m).map[(k)/TLSMAP_BITS]
-#define TLSMAP_MASK(k)    (1U << ((k)&(TLSMAP_BITS-1)))
-
-static inline bool IsValidUserKey(pthread_key_t key) {
-  return (key >= TLS_SLOT_FIRST_USER_SLOT && key < BIONIC_TLS_SLOTS);
-}
-
 typedef void (*key_destructor_t)(void*);
 
-struct tls_map_t {
-  bool is_initialized;
+#define SEQ_KEY_IN_USE_BIT     0
 
-  /* bitmap of allocated keys */
-  uint32_t map[TLSMAP_WORDS];
+#define SEQ_INCREMENT_STEP  (1 << SEQ_KEY_IN_USE_BIT)
 
-  key_destructor_t key_destructors[BIONIC_TLS_SLOTS];
+// pthread_key_internal_t records the use of each pthread key slot:
+//   seq records the state of the slot.
+//      bit 0 is 1 when the key is in use, 0 when it is unused. Each time we create or delete the
+//      pthread key in the slot, we increse the seq by 1 (which inverts bit 0). The reason to use
+//      a sequence number instead of a boolean value here is that when the key slot is deleted and
+//      reused for a new key, pthread_getspecific will not return stale data.
+//   key_destructor records the destructor called at thread exit.
+struct pthread_key_internal_t {
+  atomic_uintptr_t seq;
+  atomic_uintptr_t key_destructor;
 };
 
-class ScopedTlsMapAccess {
- public:
-  ScopedTlsMapAccess() {
-    Lock();
+static pthread_key_internal_t key_map[BIONIC_PTHREAD_KEY_COUNT];
 
-    // If this is the first time the TLS map has been accessed,
-    // mark the slots belonging to well-known keys as being in use.
-    // This isn't currently necessary because the well-known keys
-    // can only be accessed directly by bionic itself, do not have
-    // destructors, and all the functions that touch the TLS map
-    // start after the maximum well-known slot.
-    if (!s_tls_map_.is_initialized) {
-      for (pthread_key_t key = 0; key < TLS_SLOT_FIRST_USER_SLOT; ++key) {
-        SetInUse(key, NULL);
-      }
-      s_tls_map_.is_initialized = true;
-    }
-  }
+static inline bool SeqOfKeyInUse(uintptr_t seq) {
+  return seq & (1 << SEQ_KEY_IN_USE_BIT);
+}
 
-  ~ScopedTlsMapAccess() {
-    Unlock();
-  }
+static inline bool KeyInValidRange(pthread_key_t key) {
+  return key >= 0 && key < BIONIC_PTHREAD_KEY_COUNT;
+}
 
-  int CreateKey(pthread_key_t* result, void (*key_destructor)(void*)) {
-    // Take the first unallocated key.
-    for (int key = 0; key < BIONIC_TLS_SLOTS; ++key) {
-      if (!IsInUse(key)) {
-        SetInUse(key, key_destructor);
-        *result = key;
-        return 0;
-      }
-    }
-
-    // We hit PTHREAD_KEYS_MAX. POSIX says EAGAIN for this case.
-    return EAGAIN;
-  }
-
-  void DeleteKey(pthread_key_t key) {
-    TLSMAP_WORD(s_tls_map_, key) &= ~TLSMAP_MASK(key);
-    s_tls_map_.key_destructors[key] = NULL;
-  }
-
-  bool IsInUse(pthread_key_t key) {
-    return (TLSMAP_WORD(s_tls_map_, key) & TLSMAP_MASK(key)) != 0;
-  }
-
-  void SetInUse(pthread_key_t key, void (*key_destructor)(void*)) {
-    TLSMAP_WORD(s_tls_map_, key) |= TLSMAP_MASK(key);
-    s_tls_map_.key_destructors[key] = key_destructor;
-  }
-
-  // Called from pthread_exit() to remove all TLS key data
-  // from this thread's TLS area. This must call the destructor of all keys
-  // that have a non-NULL data value and a non-NULL destructor.
-  void CleanAll() {
-    void** tls = __get_tls();
-
-    // Because destructors can do funky things like deleting/creating other
-    // keys, we need to implement this in a loop.
-    for (int rounds = PTHREAD_DESTRUCTOR_ITERATIONS; rounds > 0; --rounds) {
-      size_t called_destructor_count = 0;
-      for (int key = 0; key < BIONIC_TLS_SLOTS; ++key) {
-        if (IsInUse(key)) {
-          void* data = tls[key];
-          void (*key_destructor)(void*) = s_tls_map_.key_destructors[key];
-
-          if (data != NULL && key_destructor != NULL) {
-            // we need to clear the key data now, this will prevent the
-            // destructor (or a later one) from seeing the old value if
-            // it calls pthread_getspecific() for some odd reason
-
-            // we do not do this if 'key_destructor == NULL' just in case another
-            // destructor function might be responsible for manually
-            // releasing the corresponding data.
-            tls[key] = NULL;
-
-            // because the destructor is free to call pthread_key_create
-            // and/or pthread_key_delete, we need to temporarily unlock
-            // the TLS map
-            Unlock();
-            (*key_destructor)(data);
-            Lock();
-            ++called_destructor_count;
-          }
-        }
-      }
-
-      // If we didn't call any destructors, there is no need to check the TLS data again.
-      if (called_destructor_count == 0) {
-        break;
-      }
-    }
-  }
-
- private:
-  static tls_map_t s_tls_map_;
-  static pthread_mutex_t s_tls_map_lock_;
-
-  void Lock() {
-    pthread_mutex_lock(&s_tls_map_lock_);
-  }
-
-  void Unlock() {
-    pthread_mutex_unlock(&s_tls_map_lock_);
-  }
-};
-
-__LIBC_HIDDEN__ tls_map_t ScopedTlsMapAccess::s_tls_map_;
-__LIBC_HIDDEN__ pthread_mutex_t ScopedTlsMapAccess::s_tls_map_lock_;
-
+// Called from pthread_exit() to remove all pthread keys. This must call the destructor of
+// all keys that have a non-NULL data value and a non-NULL destructor.
 __LIBC_HIDDEN__ void pthread_key_clean_all() {
-  ScopedTlsMapAccess tls_map;
-  tls_map.CleanAll();
+  // Because destructors can do funky things like deleting/creating other keys,
+  // we need to implement this in a loop.
+  pthread_key_data_t* key_data = __get_thread()->key_data;
+  for (size_t rounds = PTHREAD_DESTRUCTOR_ITERATIONS; rounds > 0; --rounds) {
+    size_t called_destructor_count = 0;
+    for (size_t i = 0; i < BIONIC_PTHREAD_KEY_COUNT; ++i) {
+      uintptr_t seq = atomic_load_explicit(&key_map[i].seq, memory_order_relaxed);
+      if (SeqOfKeyInUse(seq) && seq == key_data[i].seq && key_data[i].data != NULL) {
+        // Other threads may be calling pthread_key_delete/pthread_key_create while current thread
+        // is exiting. So we need to ensure we read the right key_destructor.
+        // We can rely on a user-established happens-before relationship between the creation and
+        // use of pthread key to ensure that we're not getting an earlier key_destructor.
+        // To avoid using the key_destructor of the newly created key in the same slot, we need to
+        // recheck the sequence number after reading key_destructor. As a result, we either see the
+        // right key_destructor, or the sequence number must have changed when we reread it below.
+        key_destructor_t key_destructor = reinterpret_cast<key_destructor_t>(
+          atomic_load_explicit(&key_map[i].key_destructor, memory_order_relaxed));
+        if (key_destructor == NULL) {
+          continue;
+        }
+        atomic_thread_fence(memory_order_acquire);
+        if (atomic_load_explicit(&key_map[i].seq, memory_order_relaxed) != seq) {
+           continue;
+        }
+
+        // We need to clear the key data now, this will prevent the destructor (or a later one)
+        // from seeing the old value if it calls pthread_getspecific().
+        // We don't do this if 'key_destructor == NULL' just in case another destructor
+        // function is responsible for manually releasing the corresponding data.
+        void* data = key_data[i].data;
+        key_data[i].data = NULL;
+
+        (*key_destructor)(data);
+        ++called_destructor_count;
+      }
+    }
+
+    // If we didn't call any destructors, there is no need to check the pthread keys again.
+    if (called_destructor_count == 0) {
+      break;
+    }
+  }
 }
 
 int pthread_key_create(pthread_key_t* key, void (*key_destructor)(void*)) {
-  ScopedTlsMapAccess tls_map;
-  return tls_map.CreateKey(key, key_destructor);
+  for (size_t i = 0; i < BIONIC_PTHREAD_KEY_COUNT; ++i) {
+    uintptr_t seq = atomic_load_explicit(&key_map[i].seq, memory_order_relaxed);
+    while (!SeqOfKeyInUse(seq)) {
+      if (atomic_compare_exchange_weak(&key_map[i].seq, &seq, seq + SEQ_INCREMENT_STEP)) {
+        atomic_store(&key_map[i].key_destructor, reinterpret_cast<uintptr_t>(key_destructor));
+        *key = i;
+        return 0;
+      }
+    }
+  }
+  return EAGAIN;
 }
 
 // Deletes a pthread_key_t. note that the standard mandates that this does
@@ -204,42 +127,44 @@
 // responsibility of the caller to properly dispose of the corresponding data
 // and resources, using any means it finds suitable.
 int pthread_key_delete(pthread_key_t key) {
-  ScopedTlsMapAccess tls_map;
-
-  if (!IsValidUserKey(key) || !tls_map.IsInUse(key)) {
+  if (!KeyInValidRange(key)) {
     return EINVAL;
   }
-
-  // Clear value in all threads.
-  pthread_mutex_lock(&g_thread_list_lock);
-  for (pthread_internal_t*  t = g_thread_list; t != NULL; t = t->next) {
-    t->tls[key] = NULL;
+  // Increase seq to invalidate values in all threads.
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  if (SeqOfKeyInUse(seq)) {
+    if (atomic_compare_exchange_strong(&key_map[key].seq, &seq, seq + SEQ_INCREMENT_STEP)) {
+      return 0;
+    }
   }
-  tls_map.DeleteKey(key);
-
-  pthread_mutex_unlock(&g_thread_list_lock);
-  return 0;
+  return EINVAL;
 }
 
 void* pthread_getspecific(pthread_key_t key) {
-  if (!IsValidUserKey(key)) {
+  if (!KeyInValidRange(key)) {
     return NULL;
   }
-
-  // For performance reasons, we do not lock/unlock the global TLS map
-  // to check that the key is properly allocated. If the key was not
-  // allocated, the value read from the TLS should always be NULL
-  // due to pthread_key_delete() clearing the values for all threads.
-  return __get_tls()[key];
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+  // It is user's responsibility to synchornize between the creation and use of pthread keys,
+  // so we use memory_order_relaxed when checking the sequence number.
+  if (__predict_true(SeqOfKeyInUse(seq) && data->seq == seq)) {
+    return data->data;
+  }
+  data->data = NULL;
+  return NULL;
 }
 
 int pthread_setspecific(pthread_key_t key, const void* ptr) {
-  ScopedTlsMapAccess tls_map;
-
-  if (!IsValidUserKey(key) || !tls_map.IsInUse(key)) {
+  if (!KeyInValidRange(key)) {
     return EINVAL;
   }
-
-  __get_tls()[key] = const_cast<void*>(ptr);
-  return 0;
+  uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
+  if (SeqOfKeyInUse(seq)) {
+    pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+    data->seq = seq;
+    data->data = const_cast<void*>(ptr);
+    return 0;
+  }
+  return EINVAL;
 }
diff --git a/libc/bionic/pthread_kill.cpp b/libc/bionic/pthread_kill.cpp
index 163317e..93513fa 100644
--- a/libc/bionic/pthread_kill.cpp
+++ b/libc/bionic/pthread_kill.cpp
@@ -30,26 +30,17 @@
 #include <unistd.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 extern "C" int tgkill(int tgid, int tid, int sig);
 
 int pthread_kill(pthread_t t, int sig) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
-  // There's a race here, but it's one we share with all other C libraries.
-  pid_t tid = thread->tid;
-  thread.Unlock();
-
-  int rc = tgkill(getpid(), tid, sig);
-  if (rc == -1) {
-    return errno;
-  }
-
-  return 0;
+  return (tgkill(getpid(), thread->tid, sig) == -1) ? errno : 0;
 }
diff --git a/libc/bionic/pthread_mutex.cpp b/libc/bionic/pthread_mutex.cpp
index 83d6b54..4fec753 100644
--- a/libc/bionic/pthread_mutex.cpp
+++ b/libc/bionic/pthread_mutex.cpp
@@ -31,6 +31,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <stdatomic.h>
+#include <string.h>
 #include <sys/cdefs.h>
 #include <sys/mman.h>
 #include <unistd.h>
@@ -43,130 +44,6 @@
 #include "private/bionic_time_conversions.h"
 #include "private/bionic_tls.h"
 
-/* a mutex is implemented as a 32-bit integer holding the following fields
- *
- * bits:     name     description
- * 31-16     tid      owner thread's tid (recursive and errorcheck only)
- * 15-14     type     mutex type
- * 13        shared   process-shared flag
- * 12-2      counter  counter of recursive mutexes
- * 1-0       state    lock state (0, 1 or 2)
- */
-
-/* Convenience macro, creates a mask of 'bits' bits that starts from
- * the 'shift'-th least significant bit in a 32-bit word.
- *
- * Examples: FIELD_MASK(0,4)  -> 0xf
- *           FIELD_MASK(16,9) -> 0x1ff0000
- */
-#define  FIELD_MASK(shift,bits)           (((1 << (bits))-1) << (shift))
-
-/* This one is used to create a bit pattern from a given field value */
-#define  FIELD_TO_BITS(val,shift,bits)    (((val) & ((1 << (bits))-1)) << (shift))
-
-/* And this one does the opposite, i.e. extract a field's value from a bit pattern */
-#define  FIELD_FROM_BITS(val,shift,bits)  (((val) >> (shift)) & ((1 << (bits))-1))
-
-/* Mutex state:
- *
- * 0 for unlocked
- * 1 for locked, no waiters
- * 2 for locked, maybe waiters
- */
-#define  MUTEX_STATE_SHIFT      0
-#define  MUTEX_STATE_LEN        2
-
-#define  MUTEX_STATE_MASK           FIELD_MASK(MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-#define  MUTEX_STATE_FROM_BITS(v)   FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-#define  MUTEX_STATE_TO_BITS(v)     FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
-
-#define  MUTEX_STATE_UNLOCKED            0   /* must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
-#define  MUTEX_STATE_LOCKED_UNCONTENDED  1   /* must be 1 due to atomic dec in unlock operation */
-#define  MUTEX_STATE_LOCKED_CONTENDED    2   /* must be 1 + LOCKED_UNCONTENDED due to atomic dec */
-
-#define  MUTEX_STATE_BITS_UNLOCKED            MUTEX_STATE_TO_BITS(MUTEX_STATE_UNLOCKED)
-#define  MUTEX_STATE_BITS_LOCKED_UNCONTENDED  MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_UNCONTENDED)
-#define  MUTEX_STATE_BITS_LOCKED_CONTENDED    MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_CONTENDED)
-
-/* return true iff the mutex if locked with no waiters */
-#define  MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(v)  (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_UNCONTENDED)
-
-/* return true iff the mutex if locked with maybe waiters */
-#define  MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(v)   (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_CONTENDED)
-
-/* used to flip from LOCKED_UNCONTENDED to LOCKED_CONTENDED */
-#define  MUTEX_STATE_BITS_FLIP_CONTENTION(v)      ((v) ^ (MUTEX_STATE_BITS_LOCKED_CONTENDED ^ MUTEX_STATE_BITS_LOCKED_UNCONTENDED))
-
-/* Mutex counter:
- *
- * We need to check for overflow before incrementing, and we also need to
- * detect when the counter is 0
- */
-#define  MUTEX_COUNTER_SHIFT         2
-#define  MUTEX_COUNTER_LEN           11
-#define  MUTEX_COUNTER_MASK          FIELD_MASK(MUTEX_COUNTER_SHIFT, MUTEX_COUNTER_LEN)
-
-#define  MUTEX_COUNTER_BITS_WILL_OVERFLOW(v)    (((v) & MUTEX_COUNTER_MASK) == MUTEX_COUNTER_MASK)
-#define  MUTEX_COUNTER_BITS_IS_ZERO(v)          (((v) & MUTEX_COUNTER_MASK) == 0)
-
-/* Used to increment the counter directly after overflow has been checked */
-#define  MUTEX_COUNTER_BITS_ONE      FIELD_TO_BITS(1, MUTEX_COUNTER_SHIFT,MUTEX_COUNTER_LEN)
-
-/* Mutex shared bit flag
- *
- * This flag is set to indicate that the mutex is shared among processes.
- * This changes the futex opcode we use for futex wait/wake operations
- * (non-shared operations are much faster).
- */
-#define  MUTEX_SHARED_SHIFT    13
-#define  MUTEX_SHARED_MASK     FIELD_MASK(MUTEX_SHARED_SHIFT,1)
-
-/* Mutex type:
- *
- * We support normal, recursive and errorcheck mutexes.
- *
- * The constants defined here *cannot* be changed because they must match
- * the C library ABI which defines the following initialization values in
- * <pthread.h>:
- *
- *   __PTHREAD_MUTEX_INIT_VALUE
- *   __PTHREAD_RECURSIVE_MUTEX_VALUE
- *   __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
- */
-#define  MUTEX_TYPE_SHIFT      14
-#define  MUTEX_TYPE_LEN        2
-#define  MUTEX_TYPE_MASK       FIELD_MASK(MUTEX_TYPE_SHIFT,MUTEX_TYPE_LEN)
-
-#define  MUTEX_TYPE_NORMAL          0  /* Must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
-#define  MUTEX_TYPE_RECURSIVE       1
-#define  MUTEX_TYPE_ERRORCHECK      2
-
-#define  MUTEX_TYPE_TO_BITS(t)       FIELD_TO_BITS(t, MUTEX_TYPE_SHIFT, MUTEX_TYPE_LEN)
-
-#define  MUTEX_TYPE_BITS_NORMAL      MUTEX_TYPE_TO_BITS(MUTEX_TYPE_NORMAL)
-#define  MUTEX_TYPE_BITS_RECURSIVE   MUTEX_TYPE_TO_BITS(MUTEX_TYPE_RECURSIVE)
-#define  MUTEX_TYPE_BITS_ERRORCHECK  MUTEX_TYPE_TO_BITS(MUTEX_TYPE_ERRORCHECK)
-
-/* Mutex owner field:
- *
- * This is only used for recursive and errorcheck mutexes. It holds the
- * tid of the owning thread. We use 16 bits to represent tid here,
- * so the highest tid is 65535. There is a test to check /proc/sys/kernel/pid_max
- * to make sure it will not exceed our limit.
- */
-#define  MUTEX_OWNER_SHIFT     16
-#define  MUTEX_OWNER_LEN       16
-
-#define  MUTEX_OWNER_FROM_BITS(v)    FIELD_FROM_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
-#define  MUTEX_OWNER_TO_BITS(v)      FIELD_TO_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
-
-/* Convenience macros.
- *
- * These are used to form or modify the bit pattern of a given mutex value
- */
-
-
-
 /* a mutex attribute holds the following fields
  *
  * bits:     name       description
@@ -176,7 +53,6 @@
 #define  MUTEXATTR_TYPE_MASK   0x000f
 #define  MUTEXATTR_SHARED_MASK 0x0010
 
-
 int pthread_mutexattr_init(pthread_mutexattr_t *attr)
 {
     *attr = PTHREAD_MUTEX_DEFAULT;
@@ -237,46 +113,174 @@
     return 0;
 }
 
-static inline atomic_int* MUTEX_TO_ATOMIC_POINTER(pthread_mutex_t* mutex) {
-    static_assert(sizeof(atomic_int) == sizeof(mutex->value),
-                  "mutex->value should actually be atomic_int in implementation.");
+/* a mutex contains a state value and a owner_tid.
+ * The value is implemented as a 16-bit integer holding the following fields:
+ *
+ * bits:     name     description
+ * 15-14     type     mutex type
+ * 13        shared   process-shared flag
+ * 12-2      counter  counter of recursive mutexes
+ * 1-0       state    lock state (0, 1 or 2)
+ *
+ * The owner_tid is used only in recursive and errorcheck mutex to hold the mutex owner thread tid.
+ */
 
-    // We prefer casting to atomic_int instead of declaring mutex->value to be atomic_int directly.
-    // Because using the second method pollutes pthread.h, and causes an error when compiling libcxx.
-    return reinterpret_cast<atomic_int*>(&mutex->value);
+/* Convenience macro, creates a mask of 'bits' bits that starts from
+ * the 'shift'-th least significant bit in a 32-bit word.
+ *
+ * Examples: FIELD_MASK(0,4)  -> 0xf
+ *           FIELD_MASK(16,9) -> 0x1ff0000
+ */
+#define  FIELD_MASK(shift,bits)           (((1 << (bits))-1) << (shift))
+
+/* This one is used to create a bit pattern from a given field value */
+#define  FIELD_TO_BITS(val,shift,bits)    (((val) & ((1 << (bits))-1)) << (shift))
+
+/* And this one does the opposite, i.e. extract a field's value from a bit pattern */
+#define  FIELD_FROM_BITS(val,shift,bits)  (((val) >> (shift)) & ((1 << (bits))-1))
+
+
+/* Convenience macros.
+ *
+ * These are used to form or modify the bit pattern of a given mutex value
+ */
+
+/* Mutex state:
+ *
+ * 0 for unlocked
+ * 1 for locked, no waiters
+ * 2 for locked, maybe waiters
+ */
+#define  MUTEX_STATE_SHIFT      0
+#define  MUTEX_STATE_LEN        2
+
+#define  MUTEX_STATE_MASK           FIELD_MASK(MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_FROM_BITS(v)   FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_TO_BITS(v)     FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+
+#define  MUTEX_STATE_UNLOCKED            0   /* must be 0 to match PTHREAD_MUTEX_INITIALIZER */
+#define  MUTEX_STATE_LOCKED_UNCONTENDED  1   /* must be 1 due to atomic dec in unlock operation */
+#define  MUTEX_STATE_LOCKED_CONTENDED    2   /* must be 1 + LOCKED_UNCONTENDED due to atomic dec */
+
+#define  MUTEX_STATE_BITS_UNLOCKED            MUTEX_STATE_TO_BITS(MUTEX_STATE_UNLOCKED)
+#define  MUTEX_STATE_BITS_LOCKED_UNCONTENDED  MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_UNCONTENDED)
+#define  MUTEX_STATE_BITS_LOCKED_CONTENDED    MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_CONTENDED)
+
+/* return true iff the mutex if locked with no waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(v)  (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_UNCONTENDED)
+
+/* return true iff the mutex if locked with maybe waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(v)   (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_CONTENDED)
+
+/* used to flip from LOCKED_UNCONTENDED to LOCKED_CONTENDED */
+#define  MUTEX_STATE_BITS_FLIP_CONTENTION(v)      ((v) ^ (MUTEX_STATE_BITS_LOCKED_CONTENDED ^ MUTEX_STATE_BITS_LOCKED_UNCONTENDED))
+
+/* Mutex counter:
+ *
+ * We need to check for overflow before incrementing, and we also need to
+ * detect when the counter is 0
+ */
+#define  MUTEX_COUNTER_SHIFT         2
+#define  MUTEX_COUNTER_LEN           11
+#define  MUTEX_COUNTER_MASK          FIELD_MASK(MUTEX_COUNTER_SHIFT, MUTEX_COUNTER_LEN)
+
+#define  MUTEX_COUNTER_BITS_WILL_OVERFLOW(v)    (((v) & MUTEX_COUNTER_MASK) == MUTEX_COUNTER_MASK)
+#define  MUTEX_COUNTER_BITS_IS_ZERO(v)          (((v) & MUTEX_COUNTER_MASK) == 0)
+
+/* Used to increment the counter directly after overflow has been checked */
+#define  MUTEX_COUNTER_BITS_ONE      FIELD_TO_BITS(1, MUTEX_COUNTER_SHIFT,MUTEX_COUNTER_LEN)
+
+/* Mutex shared bit flag
+ *
+ * This flag is set to indicate that the mutex is shared among processes.
+ * This changes the futex opcode we use for futex wait/wake operations
+ * (non-shared operations are much faster).
+ */
+#define  MUTEX_SHARED_SHIFT    13
+#define  MUTEX_SHARED_MASK     FIELD_MASK(MUTEX_SHARED_SHIFT,1)
+
+/* Mutex type:
+ * We support normal, recursive and errorcheck mutexes.
+ */
+#define  MUTEX_TYPE_SHIFT      14
+#define  MUTEX_TYPE_LEN        2
+#define  MUTEX_TYPE_MASK       FIELD_MASK(MUTEX_TYPE_SHIFT,MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_TO_BITS(t)       FIELD_TO_BITS(t, MUTEX_TYPE_SHIFT, MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_BITS_NORMAL      MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_NORMAL)
+#define  MUTEX_TYPE_BITS_RECURSIVE   MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_RECURSIVE)
+#define  MUTEX_TYPE_BITS_ERRORCHECK  MUTEX_TYPE_TO_BITS(PTHREAD_MUTEX_ERRORCHECK)
+
+struct pthread_mutex_internal_t {
+  _Atomic(uint16_t) state;
+#if defined(__LP64__)
+  uint16_t __pad;
+  atomic_int owner_tid;
+  char __reserved[32];
+#else
+  _Atomic(uint16_t) owner_tid;
+#endif
+} __attribute__((aligned(4)));
+
+static_assert(sizeof(pthread_mutex_t) == sizeof(pthread_mutex_internal_t),
+              "pthread_mutex_t should actually be pthread_mutex_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_mutex_t, we can't use more strict alignment
+// than 4-byte alignment.
+static_assert(alignof(pthread_mutex_t) == 4,
+              "pthread_mutex_t should fulfill the alignment of pthread_mutex_internal_t.");
+
+static inline pthread_mutex_internal_t* __get_internal_mutex(pthread_mutex_t* mutex_interface) {
+  return reinterpret_cast<pthread_mutex_internal_t*>(mutex_interface);
 }
 
-int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr) {
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
+int pthread_mutex_init(pthread_mutex_t* mutex_interface, const pthread_mutexattr_t* attr) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    memset(mutex, 0, sizeof(pthread_mutex_internal_t));
 
     if (__predict_true(attr == NULL)) {
-        atomic_init(mutex_value_ptr, MUTEX_TYPE_BITS_NORMAL);
+        atomic_init(&mutex->state, MUTEX_TYPE_BITS_NORMAL);
         return 0;
     }
 
-    int value = 0;
+    uint16_t state = 0;
     if ((*attr & MUTEXATTR_SHARED_MASK) != 0) {
-        value |= MUTEX_SHARED_MASK;
+        state |= MUTEX_SHARED_MASK;
     }
 
     switch (*attr & MUTEXATTR_TYPE_MASK) {
     case PTHREAD_MUTEX_NORMAL:
-        value |= MUTEX_TYPE_BITS_NORMAL;
-        break;
+      state |= MUTEX_TYPE_BITS_NORMAL;
+      break;
     case PTHREAD_MUTEX_RECURSIVE:
-        value |= MUTEX_TYPE_BITS_RECURSIVE;
-        break;
+      state |= MUTEX_TYPE_BITS_RECURSIVE;
+      break;
     case PTHREAD_MUTEX_ERRORCHECK:
-        value |= MUTEX_TYPE_BITS_ERRORCHECK;
-        break;
+      state |= MUTEX_TYPE_BITS_ERRORCHECK;
+      break;
     default:
         return EINVAL;
     }
 
-    atomic_init(mutex_value_ptr, value);
+    atomic_init(&mutex->state, state);
+    atomic_init(&mutex->owner_tid, 0);
     return 0;
 }
 
+static inline __always_inline int __pthread_normal_mutex_trylock(pthread_mutex_internal_t* mutex,
+                                                                 uint16_t shared) {
+    const uint16_t unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+
+    uint16_t old_state = unlocked;
+    if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                         locked_uncontended, memory_order_acquire, memory_order_relaxed))) {
+        return 0;
+    }
+    return EBUSY;
+}
 
 /*
  * Lock a mutex of type NORMAL.
@@ -290,55 +294,59 @@
  * "type" value is zero, so the only bits that will be set are the ones in
  * the lock state field.
  */
-static inline void _normal_mutex_lock(atomic_int* mutex_value_ptr, int shared) {
-    /* convenience shortcuts */
-    const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
-    const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-
-    // The common case is an unlocked mutex, so we begin by trying to
-    // change the lock's state from unlocked to locked_uncontended.
-    // If exchanged successfully, An acquire fence is required to make
-    // all memory accesses made by other threads visible in current CPU.
-    int mvalue = unlocked;
-    if (__predict_true(atomic_compare_exchange_strong_explicit(mutex_value_ptr, &mvalue,
-                                                locked_uncontended,
-                                                memory_order_acquire,
-                                                memory_order_relaxed))) {
-        return;
+static inline __always_inline int __pthread_normal_mutex_lock(pthread_mutex_internal_t* mutex,
+                                                              uint16_t shared,
+                                                              const timespec* abs_timeout_or_null,
+                                                              clockid_t clock) {
+    if (__predict_true(__pthread_normal_mutex_trylock(mutex, shared) == 0)) {
+        return 0;
     }
 
     ScopedTrace trace("Contending for pthread mutex");
 
+    const uint16_t unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+
     // We want to go to sleep until the mutex is available, which requires
     // promoting it to locked_contended. We need to swap in the new state
-    // value and then wait until somebody wakes us up.
+    // and then wait until somebody wakes us up.
     // An atomic_exchange is used to compete with other threads for the lock.
     // If it returns unlocked, we have acquired the lock, otherwise another
     // thread still holds the lock and we should wait again.
     // If lock is acquired, an acquire fence is needed to make all memory accesses
-    // made by other threads visible in current CPU.
-    const int locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-    while (atomic_exchange_explicit(mutex_value_ptr, locked_contended,
+    // made by other threads visible to the current CPU.
+    while (atomic_exchange_explicit(&mutex->state, locked_contended,
                                     memory_order_acquire) != unlocked) {
-
-        __futex_wait_ex(mutex_value_ptr, shared, locked_contended, NULL);
+        timespec ts;
+        timespec* rel_timeout = NULL;
+        if (abs_timeout_or_null != NULL) {
+            rel_timeout = &ts;
+            if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
+                return ETIMEDOUT;
+            }
+        }
+        if (__futex_wait_ex(&mutex->state, shared, locked_contended, rel_timeout) == -ETIMEDOUT) {
+            return ETIMEDOUT;
+        }
     }
+    return 0;
 }
 
 /*
- * Release a mutex of type NORMAL.  The caller is responsible for determining
+ * Release a normal mutex.  The caller is responsible for determining
  * that we are in fact the owner of this lock.
  */
-static inline void _normal_mutex_unlock(atomic_int* mutex_value_ptr, int shared) {
-    const int unlocked         = shared | MUTEX_STATE_BITS_UNLOCKED;
-    const int locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+static inline __always_inline void __pthread_normal_mutex_unlock(pthread_mutex_internal_t* mutex,
+                                                                 uint16_t shared) {
+    const uint16_t unlocked         = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
 
     // We use an atomic_exchange to release the lock. If locked_contended state
     // is returned, some threads is waiting for the lock and we need to wake up
     // one of them.
     // A release fence is required to make previous stores visible to next
     // lock owner threads.
-    if (atomic_exchange_explicit(mutex_value_ptr, unlocked,
+    if (atomic_exchange_explicit(&mutex->state, unlocked,
                                  memory_order_release) == locked_contended) {
         // Wake up one waiting thread. We don't know which thread will be
         // woken or when it'll start executing -- futexes make no guarantees
@@ -358,79 +366,88 @@
         // we call wake, the thread we eventually wake will find an unlocked mutex
         // and will execute. Either way we have correct behavior and nobody is
         // orphaned on the wait queue.
-        __futex_wake_ex(mutex_value_ptr, shared, 1);
+        __futex_wake_ex(&mutex->state, shared, 1);
     }
 }
 
-/* This common inlined function is used to increment the counter of an
- * errorcheck or recursive mutex.
+/* This common inlined function is used to increment the counter of a recursive mutex.
  *
- * For errorcheck mutexes, it will return EDEADLK
- * If the counter overflows, it will return EAGAIN
- * Otherwise, it atomically increments the counter and returns 0
- * after providing an acquire barrier.
+ * If the counter overflows, it will return EAGAIN.
+ * Otherwise, it atomically increments the counter and returns 0.
  *
- * mtype is the current mutex type
- * mvalue is the current mutex value (already loaded)
- * mutex pointers to the mutex.
  */
-static inline __always_inline
-int _recursive_increment(atomic_int* mutex_value_ptr, int mvalue, int mtype) {
-    if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
-        // Trying to re-lock a mutex we already acquired.
-        return EDEADLK;
-    }
-
+static inline __always_inline int __recursive_increment(pthread_mutex_internal_t* mutex,
+                                                        uint16_t old_state) {
     // Detect recursive lock overflow and return EAGAIN.
     // This is safe because only the owner thread can modify the
     // counter bits in the mutex value.
-    if (MUTEX_COUNTER_BITS_WILL_OVERFLOW(mvalue)) {
+    if (MUTEX_COUNTER_BITS_WILL_OVERFLOW(old_state)) {
         return EAGAIN;
     }
 
-    // We own the mutex, but other threads are able to change the lower bits
-    // (e.g. promoting it to "contended"), so we need to use an atomic exchange
-    // loop to update the counter. The counter will not overflow in the loop,
-    // as only the owner thread can change it.
-    // The mutex is still locked, so we don't need a release fence.
-    while (!atomic_compare_exchange_weak_explicit(mutex_value_ptr, &mvalue,
-                                                  mvalue + MUTEX_COUNTER_BITS_ONE,
-                                                  memory_order_relaxed,
-                                                  memory_order_relaxed)) { }
+    // Other threads are able to change the lower bits (e.g. promoting it to "contended"),
+    // but the mutex counter will not overflow. So we use atomic_fetch_add operation here.
+    // The mutex is still locked by current thread, so we don't need a release fence.
+    atomic_fetch_add_explicit(&mutex->state, MUTEX_COUNTER_BITS_ONE, memory_order_relaxed);
     return 0;
 }
 
-int pthread_mutex_lock(pthread_mutex_t* mutex) {
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
+static inline __always_inline int __recursive_or_errorcheck_mutex_wait(
+                                                      pthread_mutex_internal_t* mutex,
+                                                      uint16_t shared,
+                                                      uint16_t old_state,
+                                                      const timespec* rel_timeout) {
+// __futex_wait always waits on a 32-bit value. But state is 16-bit. For a normal mutex, the owner_tid
+// field in mutex is not used. On 64-bit devices, the __pad field in mutex is not used.
+// But when a recursive or errorcheck mutex is used on 32-bit devices, we need to add the
+// owner_tid value in the value argument for __futex_wait, otherwise we may always get EAGAIN error.
 
-    int mvalue, mtype, tid, shared;
+#if defined(__LP64__)
+  return __futex_wait_ex(&mutex->state, shared, old_state, rel_timeout);
 
-    mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
-    mtype = (mvalue & MUTEX_TYPE_MASK);
-    shared = (mvalue & MUTEX_SHARED_MASK);
+#else
+  // This implementation works only when the layout of pthread_mutex_internal_t matches below expectation.
+  // And it is based on the assumption that Android is always in little-endian devices.
+  static_assert(offsetof(pthread_mutex_internal_t, state) == 0, "");
+  static_assert(offsetof(pthread_mutex_internal_t, owner_tid) == 2, "");
+
+  uint32_t owner_tid = atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed);
+  return __futex_wait_ex(&mutex->state, shared, (owner_tid << 16) | old_state, rel_timeout);
+#endif
+}
+
+static int __pthread_mutex_lock_with_timeout(pthread_mutex_internal_t* mutex,
+                                           const timespec* abs_timeout_or_null, clockid_t clock) {
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
 
     // Handle common case first.
     if ( __predict_true(mtype == MUTEX_TYPE_BITS_NORMAL) ) {
-        _normal_mutex_lock(mutex_value_ptr, shared);
-        return 0;
+        return __pthread_normal_mutex_lock(mutex, shared, abs_timeout_or_null, clock);
     }
 
     // Do we already own this recursive or error-check mutex?
-    tid = __get_thread()->tid;
-    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
-        return _recursive_increment(mutex_value_ptr, mvalue, mtype);
+    pid_t tid = __get_thread()->tid;
+    if (tid == atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed)) {
+        if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
+            return EDEADLK;
+        }
+        return __recursive_increment(mutex, old_state);
+    }
 
-    // Add in shared state to avoid extra 'or' operations below.
-    mtype |= shared;
+    const uint16_t unlocked           = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = mtype | shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+    const uint16_t locked_contended   = mtype | shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
 
     // First, if the mutex is unlocked, try to quickly acquire it.
     // In the optimistic case where this works, set the state to locked_uncontended.
-    if (mvalue == mtype) {
-        int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-        // If exchanged successfully, An acquire fence is required to make
-        // all memory accesses made by other threads visible in current CPU.
-        if (__predict_true(atomic_compare_exchange_strong_explicit(mutex_value_ptr, &mvalue,
-                           newval, memory_order_acquire, memory_order_relaxed))) {
+    if (old_state == unlocked) {
+        // If exchanged successfully, an acquire fence is required to make
+        // all memory accesses made by other threads visible to the current CPU.
+        if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                             locked_uncontended, memory_order_acquire, memory_order_relaxed))) {
+            atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
             return 0;
         }
     }
@@ -438,73 +455,91 @@
     ScopedTrace trace("Contending for pthread mutex");
 
     while (true) {
-        if (mvalue == mtype) {
-            // If the mutex is unlocked, its value should be 'mtype' and
-            // we try to acquire it by setting its owner and state atomically.
+        if (old_state == unlocked) {
             // NOTE: We put the state to locked_contended since we _know_ there
             // is contention when we are in this loop. This ensures all waiters
             // will be unlocked.
 
-            int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-            // If exchanged successfully, An acquire fence is required to make
-            // all memory accesses made by other threads visible in current CPU.
-            if (__predict_true(atomic_compare_exchange_weak_explicit(mutex_value_ptr,
-                                                                     &mvalue, newval,
+            // If exchanged successfully, an acquire fence is required to make
+            // all memory accesses made by other threads visible to the current CPU.
+            if (__predict_true(atomic_compare_exchange_weak_explicit(&mutex->state,
+                                                                     &old_state, locked_contended,
                                                                      memory_order_acquire,
                                                                      memory_order_relaxed))) {
+                atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
                 return 0;
             }
             continue;
-        } else if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
-            // The mutex is already locked by another thread, if the state is locked_uncontended,
-            // we should set it to locked_contended beforing going to sleep. This can make
+        } else if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(old_state)) {
+            // We should set it to locked_contended beforing going to sleep. This can make
             // sure waiters will be woken up eventually.
 
-            int newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue);
-            if (__predict_false(!atomic_compare_exchange_weak_explicit(mutex_value_ptr,
-                                                                       &mvalue, newval,
+            int new_state = MUTEX_STATE_BITS_FLIP_CONTENTION(old_state);
+            if (__predict_false(!atomic_compare_exchange_weak_explicit(&mutex->state,
+                                                                       &old_state, new_state,
                                                                        memory_order_relaxed,
                                                                        memory_order_relaxed))) {
                 continue;
             }
-            mvalue = newval;
+            old_state = new_state;
         }
 
-        // We are in locked_contended state, sleep until someone wake us up.
-        __futex_wait_ex(mutex_value_ptr, shared, mvalue, NULL);
-        mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
+        // We are in locked_contended state, sleep until someone wakes us up.
+        timespec ts;
+        timespec* rel_timeout = NULL;
+        if (abs_timeout_or_null != NULL) {
+            rel_timeout = &ts;
+            if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, clock)) {
+                return ETIMEDOUT;
+            }
+        }
+        if (__recursive_or_errorcheck_mutex_wait(mutex, shared, old_state, rel_timeout) == -ETIMEDOUT) {
+            return ETIMEDOUT;
+        }
+        old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
     }
 }
 
-int pthread_mutex_unlock(pthread_mutex_t* mutex) {
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
+int pthread_mutex_lock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
 
-    int mvalue, mtype, tid, shared;
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+    // Avoid slowing down fast path of normal mutex lock operation.
+    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
+      if (__predict_true(__pthread_normal_mutex_trylock(mutex, shared) == 0)) {
+        return 0;
+      }
+    }
+    return __pthread_mutex_lock_with_timeout(mutex, NULL, 0);
+}
 
-    mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
-    mtype  = (mvalue & MUTEX_TYPE_MASK);
-    shared = (mvalue & MUTEX_SHARED_MASK);
+int pthread_mutex_unlock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
+
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype  = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
 
     // Handle common case first.
     if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
-        _normal_mutex_unlock(mutex_value_ptr, shared);
+        __pthread_normal_mutex_unlock(mutex, shared);
         return 0;
     }
 
     // Do we already own this recursive or error-check mutex?
-    tid = __get_thread()->tid;
-    if ( tid != MUTEX_OWNER_FROM_BITS(mvalue) )
+    pid_t tid = __get_thread()->tid;
+    if ( tid != atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed) ) {
         return EPERM;
+    }
 
     // If the counter is > 0, we can simply decrement it atomically.
     // Since other threads can mutate the lower state bits (and only the
     // lower state bits), use a compare_exchange loop to do it.
-    if (!MUTEX_COUNTER_BITS_IS_ZERO(mvalue)) {
+    if (!MUTEX_COUNTER_BITS_IS_ZERO(old_state)) {
         // We still own the mutex, so a release fence is not needed.
-        while (!atomic_compare_exchange_weak_explicit(mutex_value_ptr, &mvalue,
-                                                      mvalue - MUTEX_COUNTER_BITS_ONE,
-                                                      memory_order_relaxed,
-                                                      memory_order_relaxed)) { }
+        atomic_fetch_sub_explicit(&mutex->state, MUTEX_COUNTER_BITS_ONE, memory_order_relaxed);
         return 0;
     }
 
@@ -514,172 +549,58 @@
     // to awake.
     // A release fence is required to make previous stores visible to next
     // lock owner threads.
-    mvalue = atomic_exchange_explicit(mutex_value_ptr,
-                                      mtype | shared | MUTEX_STATE_BITS_UNLOCKED,
-                                      memory_order_release);
-    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(mvalue)) {
-        __futex_wake_ex(mutex_value_ptr, shared, 1);
+    atomic_store_explicit(&mutex->owner_tid, 0, memory_order_relaxed);
+    const uint16_t unlocked = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    old_state = atomic_exchange_explicit(&mutex->state, unlocked, memory_order_release);
+    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(old_state)) {
+        __futex_wake_ex(&mutex->state, shared, 1);
     }
 
     return 0;
 }
 
-int pthread_mutex_trylock(pthread_mutex_t* mutex) {
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
+int pthread_mutex_trylock(pthread_mutex_t* mutex_interface) {
+    pthread_mutex_internal_t* mutex = __get_internal_mutex(mutex_interface);
 
-    int mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
-    int mtype  = (mvalue & MUTEX_TYPE_MASK);
-    int shared = (mvalue & MUTEX_SHARED_MASK);
+    uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
+    uint16_t mtype  = (old_state & MUTEX_TYPE_MASK);
+    uint16_t shared = (old_state & MUTEX_SHARED_MASK);
+
+    const uint16_t unlocked           = mtype | shared | MUTEX_STATE_BITS_UNLOCKED;
+    const uint16_t locked_uncontended = mtype | shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
 
     // Handle common case first.
     if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
-        mvalue = shared | MUTEX_STATE_BITS_UNLOCKED;
-        // If exchanged successfully, An acquire fence is required to make
-        // all memory accesses made by other threads visible in current CPU.
-        if (atomic_compare_exchange_strong_explicit(mutex_value_ptr,
-                                                    &mvalue,
-                                                    shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED,
-                                                    memory_order_acquire,
-                                                    memory_order_relaxed)) {
-            return 0;
-        }
-        return EBUSY;
+        return __pthread_normal_mutex_trylock(mutex, shared);
     }
 
     // Do we already own this recursive or error-check mutex?
     pid_t tid = __get_thread()->tid;
-    if (tid == MUTEX_OWNER_FROM_BITS(mvalue)) {
+    if (tid == atomic_load_explicit(&mutex->owner_tid, memory_order_relaxed)) {
         if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
             return EBUSY;
         }
-        return _recursive_increment(mutex_value_ptr, mvalue, mtype);
+        return __recursive_increment(mutex, old_state);
     }
 
     // Same as pthread_mutex_lock, except that we don't want to wait, and
     // the only operation that can succeed is a single compare_exchange to acquire the
     // lock if it is released / not owned by anyone. No need for a complex loop.
-    // If exchanged successfully, An acquire fence is required to make
-    // all memory accesses made by other threads visible in current CPU.
-    mtype |= shared | MUTEX_STATE_BITS_UNLOCKED;
-    mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-
-    if (__predict_true(atomic_compare_exchange_strong_explicit(mutex_value_ptr,
-                                                               &mtype, mvalue,
+    // If exchanged successfully, an acquire fence is required to make
+    // all memory accesses made by other threads visible to the current CPU.
+    old_state = unlocked;
+    if (__predict_true(atomic_compare_exchange_strong_explicit(&mutex->state, &old_state,
+                                                               locked_uncontended,
                                                                memory_order_acquire,
                                                                memory_order_relaxed))) {
+        atomic_store_explicit(&mutex->owner_tid, tid, memory_order_relaxed);
         return 0;
     }
     return EBUSY;
 }
 
-static int __pthread_mutex_timedlock(pthread_mutex_t* mutex, const timespec* abs_ts, clockid_t clock) {
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
-
-    timespec ts;
-
-    int mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
-    int mtype  = (mvalue & MUTEX_TYPE_MASK);
-    int shared = (mvalue & MUTEX_SHARED_MASK);
-
-    // Handle common case first.
-    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
-        const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
-        const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-        const int locked_contended   = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-
-        // If exchanged successfully, An acquire fence is required to make
-        // all memory accesses made by other threads visible in current CPU.
-        mvalue = unlocked;
-        if (atomic_compare_exchange_strong_explicit(mutex_value_ptr, &mvalue, locked_uncontended,
-                                                    memory_order_acquire, memory_order_relaxed)) {
-            return 0;
-        }
-
-        ScopedTrace trace("Contending for timed pthread mutex");
-
-        // Same as pthread_mutex_lock, except that we can only wait for a specified
-        // time interval. If lock is acquired, an acquire fence is needed to make
-        // all memory accesses made by other threads visible in current CPU.
-        while (atomic_exchange_explicit(mutex_value_ptr, locked_contended,
-                                        memory_order_acquire) != unlocked) {
-            if (!timespec_from_absolute_timespec(ts, *abs_ts, clock)) {
-                return ETIMEDOUT;
-            }
-            __futex_wait_ex(mutex_value_ptr, shared, locked_contended, &ts);
-        }
-
-        return 0;
-    }
-
-    // Do we already own this recursive or error-check mutex?
-    pid_t tid = __get_thread()->tid;
-    if (tid == MUTEX_OWNER_FROM_BITS(mvalue)) {
-        return _recursive_increment(mutex_value_ptr, mvalue, mtype);
-    }
-
-    mtype |= shared;
-
-    // First try a quick lock.
-    if (mvalue == mtype) {
-        int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
-        // If exchanged successfully, An acquire fence is required to make
-        // all memory accesses made by other threads visible in current CPU.
-        if (__predict_true(atomic_compare_exchange_strong_explicit(mutex_value_ptr,
-                                                                   &mvalue, newval,
-                                                                   memory_order_acquire,
-                                                                   memory_order_relaxed))) {
-            return 0;
-        }
-    }
-
-    ScopedTrace trace("Contending for timed pthread mutex");
-
-    // The following implements the same loop as pthread_mutex_lock,
-    // but adds checks to ensure that the operation never exceeds the
-    // absolute expiration time.
-    while (true) {
-        if (mvalue == mtype) { // Unlocked.
-            int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
-            // An acquire fence is needed for successful exchange.
-            if (!atomic_compare_exchange_strong_explicit(mutex_value_ptr, &mvalue, newval,
-                                                         memory_order_acquire,
-                                                         memory_order_relaxed)) {
-                goto check_time;
-            }
-
-            return 0;
-        } else if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
-            // The value is locked. If the state is locked_uncontended, we need to switch
-            // it to locked_contended before sleep, so we can get woken up later.
-            int newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue);
-            if (!atomic_compare_exchange_strong_explicit(mutex_value_ptr, &mvalue, newval,
-                                                         memory_order_relaxed,
-                                                         memory_order_relaxed)) {
-                goto check_time;
-            }
-            mvalue = newval;
-        }
-
-        if (!timespec_from_absolute_timespec(ts, *abs_ts, clock)) {
-            return ETIMEDOUT;
-        }
-
-        if (__futex_wait_ex(mutex_value_ptr, shared, mvalue, &ts) == -ETIMEDOUT) {
-            return ETIMEDOUT;
-        }
-
-check_time:
-        if (!timespec_from_absolute_timespec(ts, *abs_ts, clock)) {
-            return ETIMEDOUT;
-        }
-        // After futex_wait or time costly timespec_from_absolte_timespec,
-        // we'd better read mvalue again in case it is changed.
-        mvalue = atomic_load_explicit(mutex_value_ptr, memory_order_relaxed);
-    }
-}
-
 #if !defined(__LP64__)
-extern "C" int pthread_mutex_lock_timeout_np(pthread_mutex_t* mutex, unsigned ms) {
+extern "C" int pthread_mutex_lock_timeout_np(pthread_mutex_t* mutex_interface, unsigned ms) {
     timespec abs_timeout;
     clock_gettime(CLOCK_MONOTONIC, &abs_timeout);
     abs_timeout.tv_sec  += ms / 1000;
@@ -689,7 +610,8 @@
         abs_timeout.tv_nsec -= NS_PER_S;
     }
 
-    int error = __pthread_mutex_timedlock(mutex, &abs_timeout, CLOCK_MONOTONIC);
+    int error = __pthread_mutex_lock_with_timeout(__get_internal_mutex(mutex_interface),
+                                                  &abs_timeout, CLOCK_MONOTONIC);
     if (error == ETIMEDOUT) {
         error = EBUSY;
     }
@@ -697,18 +619,16 @@
 }
 #endif
 
-int pthread_mutex_timedlock(pthread_mutex_t* mutex, const timespec* abs_timeout) {
-    return __pthread_mutex_timedlock(mutex, abs_timeout, CLOCK_REALTIME);
+int pthread_mutex_timedlock(pthread_mutex_t* mutex_interface, const timespec* abs_timeout) {
+    return __pthread_mutex_lock_with_timeout(__get_internal_mutex(mutex_interface),
+                                             abs_timeout, CLOCK_REALTIME);
 }
 
-int pthread_mutex_destroy(pthread_mutex_t* mutex) {
+int pthread_mutex_destroy(pthread_mutex_t* mutex_interface) {
     // Use trylock to ensure that the mutex is valid and not already locked.
-    int error = pthread_mutex_trylock(mutex);
+    int error = pthread_mutex_trylock(mutex_interface);
     if (error != 0) {
         return error;
     }
-
-    atomic_int* mutex_value_ptr = MUTEX_TO_ATOMIC_POINTER(mutex);
-    atomic_store_explicit(mutex_value_ptr, 0xdead10cc, memory_order_relaxed);
     return 0;
 }
diff --git a/libc/bionic/pthread_rwlock.cpp b/libc/bionic/pthread_rwlock.cpp
index 0d63457..8aa40ae 100644
--- a/libc/bionic/pthread_rwlock.cpp
+++ b/libc/bionic/pthread_rwlock.cpp
@@ -27,6 +27,7 @@
  */
 
 #include <errno.h>
+#include <stdatomic.h>
 
 #include "pthread_internal.h"
 #include "private/bionic_futex.h"
@@ -52,11 +53,6 @@
  *  - This implementation will return EDEADLK in "write after write" and "read after
  *    write" cases and will deadlock in write after read case.
  *
- * TODO: VERY CAREFULLY convert this to use C++11 atomics when possible. All volatile
- * members of pthread_rwlock_t should be converted to atomics<> and __sync_bool_compare_and_swap
- * should be changed to compare_exchange_strong accompanied by the proper ordering
- * constraints (comments have been added with the intending ordering across the code).
- *
  * TODO: As it stands now, pending_readers and pending_writers could be merged into a
  * a single waiters variable.  Keeping them separate adds a bit of clarity and keeps
  * the door open for a writer-biased implementation.
@@ -66,18 +62,6 @@
 #define RWLOCKATTR_DEFAULT     0
 #define RWLOCKATTR_SHARED_MASK 0x0010
 
-static inline bool rwlock_is_shared(const pthread_rwlock_t* rwlock) {
-  return rwlock->attr == PTHREAD_PROCESS_SHARED;
-}
-
-static bool timespec_from_absolute(timespec* rel_timeout, const timespec* abs_timeout) {
-  if (abs_timeout != NULL) {
-    if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout, CLOCK_REALTIME)) {
-      return false;
-    }
-  }
-  return true;
-}
 
 int pthread_rwlockattr_init(pthread_rwlockattr_t* attr) {
   *attr = PTHREAD_PROCESS_PRIVATE;
@@ -105,8 +89,42 @@
   return 0;
 }
 
-int pthread_rwlock_init(pthread_rwlock_t* rwlock, const pthread_rwlockattr_t* attr) {
-  if (attr != NULL) {
+struct pthread_rwlock_internal_t {
+  atomic_int state; // 0=unlock, -1=writer lock, +n=reader lock
+  atomic_int writer_thread_id;
+  atomic_uint pending_readers;
+  atomic_uint pending_writers;
+  int32_t attr;
+
+  bool process_shared() const {
+    return attr == PTHREAD_PROCESS_SHARED;
+  }
+
+#if defined(__LP64__)
+  char __reserved[36];
+#else
+  char __reserved[20];
+#endif
+};
+
+static_assert(sizeof(pthread_rwlock_t) == sizeof(pthread_rwlock_internal_t),
+              "pthread_rwlock_t should actually be pthread_rwlock_internal_t in implementation.");
+
+// For binary compatibility with old version of pthread_rwlock_t, we can't use more strict
+// alignment than 4-byte alignment.
+static_assert(alignof(pthread_rwlock_t) == 4,
+             "pthread_rwlock_t should fulfill the alignment requirement of pthread_rwlock_internal_t.");
+
+static inline pthread_rwlock_internal_t* __get_internal_rwlock(pthread_rwlock_t* rwlock_interface) {
+  return reinterpret_cast<pthread_rwlock_internal_t*>(rwlock_interface);
+}
+
+int pthread_rwlock_init(pthread_rwlock_t* rwlock_interface, const pthread_rwlockattr_t* attr) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  if (__predict_true(attr == NULL)) {
+    rwlock->attr = 0;
+  } else {
     switch (*attr) {
       case PTHREAD_PROCESS_SHARED:
       case PTHREAD_PROCESS_PRIVATE:
@@ -117,165 +135,214 @@
     }
   }
 
-  rwlock->state = 0;
-  rwlock->pending_readers = 0;
-  rwlock->pending_writers = 0;
-  rwlock->writer_thread_id = 0;
+  atomic_init(&rwlock->state, 0);
+  atomic_init(&rwlock->writer_thread_id, 0);
+  atomic_init(&rwlock->pending_readers, 0);
+  atomic_init(&rwlock->pending_writers, 0);
 
   return 0;
 }
 
-int pthread_rwlock_destroy(pthread_rwlock_t* rwlock) {
-  if (rwlock->state != 0) {
+int pthread_rwlock_destroy(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  if (atomic_load_explicit(&rwlock->state, memory_order_relaxed) != 0) {
     return EBUSY;
   }
   return 0;
 }
 
-static int __pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
-  if (__predict_false(__get_thread()->tid == rwlock->writer_thread_id)) {
+static int __pthread_rwlock_timedrdlock(pthread_rwlock_internal_t* rwlock,
+                                        const timespec* abs_timeout_or_null) {
+
+  if (__predict_false(__get_thread()->tid == atomic_load_explicit(&rwlock->writer_thread_id,
+                                                                  memory_order_relaxed))) {
     return EDEADLK;
   }
 
-  timespec ts;
-  timespec* rel_timeout = (abs_timeout == NULL) ? NULL : &ts;
-  bool done = false;
-  do {
-    // This is actually a race read as there's nothing that guarantees the atomicity of integer
-    // reads / writes. However, in practice this "never" happens so until we switch to C++11 this
-    // should work fine. The same applies in the other places this idiom is used.
-    int32_t cur_state = rwlock->state;  // C++11 relaxed atomic read
-    if (__predict_true(cur_state >= 0)) {
-      // Add as an extra reader.
-      done = __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state + 1);  // C++11 memory_order_aquire
-    } else {
-      if (!timespec_from_absolute(rel_timeout, abs_timeout)) {
-        return ETIMEDOUT;
+  while (true) {
+    int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+    if (__predict_true(old_state >= 0)) {
+      if (atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state, old_state + 1,
+                                                memory_order_acquire, memory_order_relaxed)) {
+        return 0;
       }
-      // Owner holds it in write mode, hang up.
-      // To avoid losing wake ups the pending_readers update and the state read should be
-      // sequentially consistent. (currently enforced by __sync_fetch_and_add which creates a full barrier)
-      __sync_fetch_and_add(&rwlock->pending_readers, 1);  // C++11 memory_order_relaxed (if the futex_wait ensures the ordering)
-      int ret = __futex_wait_ex(&rwlock->state, rwlock_is_shared(rwlock), cur_state, rel_timeout);
-      __sync_fetch_and_sub(&rwlock->pending_readers, 1);  // C++11 memory_order_relaxed
+    } else {
+      timespec ts;
+      timespec* rel_timeout = NULL;
+
+      if (abs_timeout_or_null != NULL) {
+        rel_timeout = &ts;
+        if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, CLOCK_REALTIME)) {
+          return ETIMEDOUT;
+        }
+      }
+
+      // To avoid losing wake ups, the pending_readers increment should be observed before
+      // futex_wait by all threads. A seq_cst fence instead of a seq_cst operation is used
+      // here. Because only a seq_cst fence can ensure sequential consistency for non-atomic
+      // operations in futex_wait.
+      atomic_fetch_add_explicit(&rwlock->pending_readers, 1, memory_order_relaxed);
+
+      atomic_thread_fence(memory_order_seq_cst);
+
+      int ret = __futex_wait_ex(&rwlock->state, rwlock->process_shared(), old_state,
+                                rel_timeout);
+
+      atomic_fetch_sub_explicit(&rwlock->pending_readers, 1, memory_order_relaxed);
+
       if (ret == -ETIMEDOUT) {
         return ETIMEDOUT;
       }
     }
-  } while (!done);
-
-  return 0;
+  }
 }
 
-static int __pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
-  int tid = __get_thread()->tid;
-  if (__predict_false(tid == rwlock->writer_thread_id)) {
+static int __pthread_rwlock_timedwrlock(pthread_rwlock_internal_t* rwlock,
+                                        const timespec* abs_timeout_or_null) {
+
+  if (__predict_false(__get_thread()->tid == atomic_load_explicit(&rwlock->writer_thread_id,
+                                                                  memory_order_relaxed))) {
     return EDEADLK;
   }
 
-  timespec ts;
-  timespec* rel_timeout = (abs_timeout == NULL) ? NULL : &ts;
-  bool done = false;
-  do {
-    int32_t cur_state = rwlock->state;
-    if (__predict_true(cur_state == 0)) {
-      // Change state from 0 to -1.
-      done =  __sync_bool_compare_and_swap(&rwlock->state, 0 /* cur state */, -1 /* new state */);  // C++11 memory_order_aquire
-    } else {
-      if (!timespec_from_absolute(rel_timeout, abs_timeout)) {
-        return ETIMEDOUT;
+  while (true) {
+    int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+    if (__predict_true(old_state == 0)) {
+      if (atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state, -1,
+                                                memory_order_acquire, memory_order_relaxed)) {
+        // writer_thread_id is protected by rwlock and can only be modified in rwlock write
+        // owner thread. Other threads may read it for EDEADLK error checking, atomic operation
+        // is safe enough for it.
+        atomic_store_explicit(&rwlock->writer_thread_id, __get_thread()->tid, memory_order_relaxed);
+        return 0;
       }
-      // Failed to acquire, hang up.
-      // To avoid losing wake ups the pending_writers update and the state read should be
-      // sequentially consistent. (currently enforced by __sync_fetch_and_add which creates a full barrier)
-      __sync_fetch_and_add(&rwlock->pending_writers, 1);  // C++11 memory_order_relaxed (if the futex_wait ensures the ordering)
-      int ret = __futex_wait_ex(&rwlock->state, rwlock_is_shared(rwlock), cur_state, rel_timeout);
-      __sync_fetch_and_sub(&rwlock->pending_writers, 1);  // C++11 memory_order_relaxed
+    } else {
+      timespec ts;
+      timespec* rel_timeout = NULL;
+
+      if (abs_timeout_or_null != NULL) {
+        rel_timeout = &ts;
+        if (!timespec_from_absolute_timespec(*rel_timeout, *abs_timeout_or_null, CLOCK_REALTIME)) {
+          return ETIMEDOUT;
+        }
+      }
+
+      // To avoid losing wake ups, the pending_writers increment should be observed before
+      // futex_wait by all threads. A seq_cst fence instead of a seq_cst operation is used
+      // here. Because only a seq_cst fence can ensure sequential consistency for non-atomic
+      // operations in futex_wait.
+      atomic_fetch_add_explicit(&rwlock->pending_writers, 1, memory_order_relaxed);
+
+      atomic_thread_fence(memory_order_seq_cst);
+
+      int ret = __futex_wait_ex(&rwlock->state, rwlock->process_shared(), old_state,
+                                rel_timeout);
+
+      atomic_fetch_sub_explicit(&rwlock->pending_writers, 1, memory_order_relaxed);
+
       if (ret == -ETIMEDOUT) {
         return ETIMEDOUT;
       }
     }
-  } while (!done);
-
-  rwlock->writer_thread_id = tid;
-  return 0;
+  }
 }
 
-int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock) {
+int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedrdlock(rwlock, NULL);
 }
 
-int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
+int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock_interface, const timespec* abs_timeout) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedrdlock(rwlock, abs_timeout);
 }
 
-int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock) {
-  int32_t cur_state = rwlock->state;
-  if ((cur_state >= 0) &&
-      __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state + 1)) {  // C++11 memory_order_acquire
-    return 0;
+int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+
+  while (old_state >= 0 && !atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state,
+                             old_state + 1, memory_order_acquire, memory_order_relaxed)) {
   }
-  return EBUSY;
+  return (old_state >= 0) ? 0 : EBUSY;
 }
 
-int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock) {
+int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedwrlock(rwlock, NULL);
 }
 
-int pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) {
+int pthread_rwlock_timedwrlock(pthread_rwlock_t* rwlock_interface, const timespec* abs_timeout) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
   return __pthread_rwlock_timedwrlock(rwlock, abs_timeout);
 }
 
-int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock) {
-  int tid = __get_thread()->tid;
-  int32_t cur_state = rwlock->state;
-  if ((cur_state == 0) &&
-      __sync_bool_compare_and_swap(&rwlock->state, 0 /* cur state */, -1 /* new state */)) {  // C++11 memory_order_acquire
-    rwlock->writer_thread_id = tid;
+int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+
+  while (old_state == 0 && !atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state, -1,
+                                              memory_order_acquire, memory_order_relaxed)) {
+  }
+  if (old_state == 0) {
+    atomic_store_explicit(&rwlock->writer_thread_id, __get_thread()->tid, memory_order_relaxed);
     return 0;
   }
   return EBUSY;
 }
 
 
-int pthread_rwlock_unlock(pthread_rwlock_t* rwlock) {
-  int tid = __get_thread()->tid;
-  bool done = false;
-  do {
-    int32_t cur_state = rwlock->state;
-    if (cur_state == 0) {
+int pthread_rwlock_unlock(pthread_rwlock_t* rwlock_interface) {
+  pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface);
+
+  int old_state = atomic_load_explicit(&rwlock->state, memory_order_relaxed);
+  if (__predict_false(old_state == 0)) {
+    return EPERM;
+  } else if (old_state == -1) {
+    if (atomic_load_explicit(&rwlock->writer_thread_id, memory_order_relaxed) != __get_thread()->tid) {
       return EPERM;
     }
-    if (cur_state == -1) {
-      if (rwlock->writer_thread_id != tid) {
-        return EPERM;
-      }
-      // We're no longer the owner.
-      rwlock->writer_thread_id = 0;
-      // Change state from -1 to 0.
-      // We use __sync_bool_compare_and_swap to achieve sequential consistency of the state store and
-      // the following pendingX loads. A simple store with memory_order_release semantics
-      // is not enough to guarantee that the pendingX loads are not reordered before the
-      // store (which may lead to a lost wakeup).
-      __sync_bool_compare_and_swap( &rwlock->state, -1 /* cur state*/, 0 /* new state */);  // C++11 maybe memory_order_seq_cst?
+    // We're no longer the owner.
+    atomic_store_explicit(&rwlock->writer_thread_id, 0, memory_order_relaxed);
+    // Change state from -1 to 0.
+    atomic_store_explicit(&rwlock->state, 0, memory_order_release);
 
-      // Wake any waiters.
-      if (__predict_false(rwlock->pending_readers > 0 || rwlock->pending_writers > 0)) {
-        __futex_wake_ex(&rwlock->state, rwlock_is_shared(rwlock), INT_MAX);
-      }
-      done = true;
-    } else { // cur_state > 0
-      // Reduce state by 1.
-      // See the comment above on why we need __sync_bool_compare_and_swap.
-      done = __sync_bool_compare_and_swap(&rwlock->state, cur_state, cur_state - 1);  // C++11 maybe memory_order_seq_cst?
-      if (done && (cur_state - 1) == 0) {
-        // There are no more readers, wake any waiters.
-        if (__predict_false(rwlock->pending_readers > 0 || rwlock->pending_writers > 0)) {
-          __futex_wake_ex(&rwlock->state, rwlock_is_shared(rwlock), INT_MAX);
-        }
-      }
+  } else { // old_state > 0
+    // Reduce state by 1.
+    while (old_state > 0 && !atomic_compare_exchange_weak_explicit(&rwlock->state, &old_state,
+                               old_state - 1, memory_order_release, memory_order_relaxed)) {
     }
-  } while (!done);
 
+    if (old_state <= 0) {
+      return EPERM;
+    } else if (old_state > 1) {
+      return 0;
+    }
+    // old_state = 1, which means the last reader calling unlock. It has to wake up waiters.
+  }
+
+  // If having waiters, wake up them.
+  // To avoid losing wake ups, the update of state should be observed before reading
+  // pending_readers/pending_writers by all threads. Use read locking as an example:
+  //     read locking thread                        unlocking thread
+  //      pending_readers++;                         state = 0;
+  //      seq_cst fence                              seq_cst fence
+  //      read state for futex_wait                  read pending_readers for futex_wake
+  //
+  // So when locking and unlocking threads are running in parallel, we will not get
+  // in a situation that the locking thread reads state as negative and needs to wait,
+  // while the unlocking thread reads pending_readers as zero and doesn't need to wake up waiters.
+  atomic_thread_fence(memory_order_seq_cst);
+  if (__predict_false(atomic_load_explicit(&rwlock->pending_readers, memory_order_relaxed) > 0 ||
+                      atomic_load_explicit(&rwlock->pending_writers, memory_order_relaxed) > 0)) {
+    __futex_wake_ex(&rwlock->state, rwlock->process_shared(), INT_MAX);
+  }
   return 0;
 }
diff --git a/libc/bionic/pthread_setname_np.cpp b/libc/bionic/pthread_setname_np.cpp
index c4e9fb8..bb1114e 100644
--- a/libc/bionic/pthread_setname_np.cpp
+++ b/libc/bionic/pthread_setname_np.cpp
@@ -36,9 +36,8 @@
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "pthread_accessor.h"
-#include "pthread_internal.h"
 #include "private/ErrnoRestorer.h"
+#include "pthread_internal.h"
 
 // This value is not exported by kernel headers.
 #define MAX_TASK_COMM_LEN 16
@@ -58,14 +57,12 @@
   }
 
   // We have to change another thread's name.
-  pid_t tid = 0;
-  {
-    pthread_accessor thread(t);
-    if (thread.get() == NULL) {
-      return ENOENT;
-    }
-    tid = thread->tid;
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
+    return ENOENT;
   }
+  pid_t tid = thread->tid;
+
   char comm_name[sizeof(TASK_COMM_FMT) + 8];
   snprintf(comm_name, sizeof(comm_name), TASK_COMM_FMT, tid);
   int fd = open(comm_name, O_CLOEXEC | O_WRONLY);
diff --git a/libc/bionic/pthread_setschedparam.cpp b/libc/bionic/pthread_setschedparam.cpp
index 419cc6f..0ad68bb 100644
--- a/libc/bionic/pthread_setschedparam.cpp
+++ b/libc/bionic/pthread_setschedparam.cpp
@@ -29,13 +29,13 @@
 #include <errno.h>
 
 #include "private/ErrnoRestorer.h"
-#include "pthread_accessor.h"
+#include "pthread_internal.h"
 
 int pthread_setschedparam(pthread_t t, int policy, const sched_param* param) {
   ErrnoRestorer errno_restorer;
 
-  pthread_accessor thread(t);
-  if (thread.get() == NULL) {
+  pthread_internal_t* thread = __pthread_internal_find(t);
+  if (thread == NULL) {
     return ESRCH;
   }
 
diff --git a/libc/bionic/pty.cpp b/libc/bionic/pty.cpp
index 8847147..1a37847 100644
--- a/libc/bionic/pty.cpp
+++ b/libc/bionic/pty.cpp
@@ -38,8 +38,8 @@
 
 #include "private/ThreadLocalBuffer.h"
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(ptsname);
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(ttyname);
+static ThreadLocalBuffer<char, 32> g_ptsname_tls_buffer;
+static ThreadLocalBuffer<char, 64> g_ttyname_tls_buffer;
 
 int getpt() {
   return posix_openpt(O_RDWR|O_NOCTTY);
@@ -54,9 +54,9 @@
 }
 
 char* ptsname(int fd) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, ptsname, 32);
-  int error = ptsname_r(fd, ptsname_tls_buffer, ptsname_tls_buffer_size);
-  return (error == 0) ? ptsname_tls_buffer : NULL;
+  char* buf = g_ptsname_tls_buffer.get();
+  int error = ptsname_r(fd, buf, g_ptsname_tls_buffer.size());
+  return (error == 0) ? buf : NULL;
 }
 
 int ptsname_r(int fd, char* buf, size_t len) {
@@ -80,9 +80,9 @@
 }
 
 char* ttyname(int fd) {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, ttyname, 64);
-  int error = ttyname_r(fd, ttyname_tls_buffer, ttyname_tls_buffer_size);
-  return (error == 0) ? ttyname_tls_buffer : NULL;
+  char* buf = g_ttyname_tls_buffer.get();
+  int error = ttyname_r(fd, buf, g_ttyname_tls_buffer.size());
+  return (error == 0) ? buf : NULL;
 }
 
 int ttyname_r(int fd, char* buf, size_t len) {
diff --git a/libc/bionic/statvfs.cpp b/libc/bionic/statvfs.cpp
index f1e2833..39ffb64 100644
--- a/libc/bionic/statvfs.cpp
+++ b/libc/bionic/statvfs.cpp
@@ -21,13 +21,17 @@
 // Paper over the fact that 32-bit kernels use fstatfs64/statfs64 with an extra argument,
 // but 64-bit kernels don't have the "64" bit suffix or the extra size_t argument.
 #if __LP64__
-#  define __fstatfs64(fd,size,buf) fstatfs(fd,buf)
-#  define __statfs64(path,size,buf) statfs(path,buf)
+extern "C" int __fstatfs(int, struct statfs*);
+extern "C" int __statfs(const char*, struct statfs*);
+#  define __fstatfs64(fd,size,buf) __fstatfs(fd,buf)
+#  define __statfs64(path,size,buf) __statfs(path,buf)
 #else
 extern "C" int __fstatfs64(int, size_t, struct statfs*);
 extern "C" int __statfs64(const char*, size_t, struct statfs*);
 #endif
 
+// The kernel sets a private ST_VALID flag to signal to the C library whether the
+// f_flags field is valid. This flag should not be exposed to users of the C library.
 #define ST_VALID 0x0020
 
 static void __statfs_to_statvfs(const struct statfs& in, struct statvfs* out) {
@@ -40,13 +44,33 @@
   out->f_ffree = in.f_ffree;
   out->f_favail = in.f_ffree;
   out->f_fsid = in.f_fsid.__val[0] | (static_cast<uint64_t>(in.f_fsid.__val[1]) << 32);
-  out->f_flag = in.f_flags & ~ST_VALID;
+  out->f_flag = in.f_flags;
   out->f_namemax = in.f_namelen;
 }
 
+int fstatfs(int fd, struct statfs* result) {
+  int rc = __fstatfs64(fd, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(fstatfs64, fstatfs);
+
+int statfs(const char* path, struct statfs* result) {
+  int rc = __statfs64(path, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(statfs64, statfs);
+
 int statvfs(const char* path, struct statvfs* result) {
   struct statfs tmp;
-  int rc = __statfs64(path, sizeof(tmp), &tmp);
+  int rc = statfs(path, &tmp);
   if (rc != 0) {
     return rc;
   }
@@ -57,7 +81,7 @@
 
 int fstatvfs(int fd, struct statvfs* result) {
   struct statfs tmp;
-  int rc = __fstatfs64(fd, sizeof(tmp), &tmp);
+  int rc = fstatfs(fd, &tmp);
   if (rc != 0) {
     return rc;
   }
diff --git a/libc/bionic/strerror.cpp b/libc/bionic/strerror.cpp
index d1518ff..f74194f 100644
--- a/libc/bionic/strerror.cpp
+++ b/libc/bionic/strerror.cpp
@@ -31,16 +31,16 @@
 
 extern "C" const char* __strerror_lookup(int);
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(strerror);
+static ThreadLocalBuffer<char, NL_TEXTMAX> g_strerror_tls_buffer;
 
 char* strerror(int error_number) {
   // Just return the original constant in the easy cases.
   char* result = const_cast<char*>(__strerror_lookup(error_number));
-  if (result != NULL) {
+  if (result != nullptr) {
     return result;
   }
 
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, strerror, NL_TEXTMAX);
-  strerror_r(error_number, strerror_tls_buffer, strerror_tls_buffer_size);
-  return strerror_tls_buffer;
+  result = g_strerror_tls_buffer.get();
+  strerror_r(error_number, result, g_strerror_tls_buffer.size());
+  return result;
 }
diff --git a/libc/bionic/strsignal.cpp b/libc/bionic/strsignal.cpp
index 9f0193a..c389ddd 100644
--- a/libc/bionic/strsignal.cpp
+++ b/libc/bionic/strsignal.cpp
@@ -32,7 +32,7 @@
 extern "C" const char* __strsignal_lookup(int);
 extern "C" const char* __strsignal(int, char*, size_t);
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(strsignal);
+static ThreadLocalBuffer<char, NL_TEXTMAX> g_strsignal_tls_buffer;
 
 char* strsignal(int signal_number) {
   // Just return the original constant in the easy cases.
@@ -41,6 +41,6 @@
     return result;
   }
 
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, strsignal, NL_TEXTMAX);
-  return const_cast<char*>(__strsignal(signal_number, strsignal_tls_buffer, strsignal_tls_buffer_size));
+  return const_cast<char*>(__strsignal(signal_number, g_strsignal_tls_buffer.get(),
+                                       g_strsignal_tls_buffer.size()));
 }
diff --git a/libc/bionic/stubs.cpp b/libc/bionic/stubs.cpp
index 1264fd7..c971d1b 100644
--- a/libc/bionic/stubs.cpp
+++ b/libc/bionic/stubs.cpp
@@ -35,6 +35,7 @@
 #include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 #include "private/android_filesystem_config.h"
@@ -49,25 +50,12 @@
 // functions to share state, but <grp.h> functions can't clobber <passwd.h>
 // functions' state and vice versa.
 
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(group);
-
 struct group_state_t {
   group group_;
   char* group_members_[2];
   char group_name_buffer_[32];
 };
 
-static group_state_t* __group_state() {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(group_state_t*, group, sizeof(group_state_t));
-  if (group_tls_buffer != NULL) {
-    memset(group_tls_buffer, 0, sizeof(group_state_t));
-    group_tls_buffer->group_.gr_mem = group_tls_buffer->group_members_;
-  }
-  return group_tls_buffer;
-}
-
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(passwd);
-
 struct passwd_state_t {
   passwd passwd_;
   char name_buffer_[32];
@@ -75,9 +63,16 @@
   char sh_buffer_[32];
 };
 
-static passwd_state_t* __passwd_state() {
-  LOCAL_INIT_THREAD_LOCAL_BUFFER(passwd_state_t*, passwd, sizeof(passwd_state_t));
-  return passwd_tls_buffer;
+static ThreadLocalBuffer<group_state_t> g_group_tls_buffer;
+static ThreadLocalBuffer<passwd_state_t> g_passwd_tls_buffer;
+
+static group_state_t* __group_state() {
+  group_state_t* result = g_group_tls_buffer.get();
+  if (result != nullptr) {
+    memset(result, 0, sizeof(group_state_t));
+    result->group_.gr_mem = result->group_members_;
+  }
+  return result;
 }
 
 static int do_getpw_r(int by_name, const char* name, uid_t uid,
@@ -361,7 +356,7 @@
 }
 
 passwd* getpwuid(uid_t uid) { // NOLINT: implementing bad function.
-  passwd_state_t* state = __passwd_state();
+  passwd_state_t* state = g_passwd_tls_buffer.get();
   if (state == NULL) {
     return NULL;
   }
@@ -374,7 +369,7 @@
 }
 
 passwd* getpwnam(const char* login) { // NOLINT: implementing bad function.
-  passwd_state_t* state = __passwd_state();
+  passwd_state_t* state = g_passwd_tls_buffer.get();
   if (state == NULL) {
     return NULL;
   }
@@ -446,31 +441,6 @@
   return NULL;
 }
 
-static void unimplemented_stub(const char* function) {
-  const char* fmt = "%s(3) is not implemented on Android\n";
-  __libc_format_log(ANDROID_LOG_WARN, "libc", fmt, function);
-  fprintf(stderr, fmt, function);
-}
-
-#define UNIMPLEMENTED unimplemented_stub(__PRETTY_FUNCTION__)
-
-void endpwent() {
-  UNIMPLEMENTED;
-}
-
-char* getusershell() {
-  UNIMPLEMENTED;
-  return NULL;
-}
-
-void setusershell() {
-  UNIMPLEMENTED;
-}
-
-void endusershell() {
-  UNIMPLEMENTED;
-}
-
 // Portable code should use sysconf(_SC_PAGE_SIZE) directly instead.
 int getpagesize() {
   // We dont use sysconf(3) here because that drags in stdio, which makes static binaries fat.
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp
index 411c23a..c301b27 100644
--- a/libc/bionic/sysconf.cpp
+++ b/libc/bionic/sysconf.cpp
@@ -33,6 +33,7 @@
 #include <pthread.h>
 #include <stdio.h>  // For FOPEN_MAX.
 #include <sys/auxv.h>
+#include <sys/resource.h>
 #include <sys/sysconf.h>
 #include <sys/sysinfo.h>
 #include <time.h>
@@ -50,6 +51,12 @@
   return clock_getres(clock_id, NULL) == 0;
 }
 
+static long __sysconf_rlimit(int resource) {
+  rlimit rl;
+  getrlimit(resource, &rl);
+  return rl.rlim_cur;
+}
+
 long sysconf(int name) {
   switch (name) {
     case _SC_ARG_MAX:           return ARG_MAX;
@@ -57,13 +64,13 @@
     case _SC_BC_DIM_MAX:        return _POSIX2_BC_DIM_MAX;    // Minimum requirement.
     case _SC_BC_SCALE_MAX:      return _POSIX2_BC_SCALE_MAX;  // Minimum requirement.
     case _SC_BC_STRING_MAX:     return _POSIX2_BC_STRING_MAX; // Minimum requirement.
-    case _SC_CHILD_MAX:         return CHILD_MAX;
+    case _SC_CHILD_MAX:         return __sysconf_rlimit(RLIMIT_NPROC);
     case _SC_CLK_TCK:           return static_cast<long>(getauxval(AT_CLKTCK));
     case _SC_COLL_WEIGHTS_MAX:  return _POSIX2_COLL_WEIGHTS_MAX;  // Minimum requirement.
     case _SC_EXPR_NEST_MAX:     return _POSIX2_EXPR_NEST_MAX;     // Minimum requirement.
     case _SC_LINE_MAX:          return _POSIX2_LINE_MAX;          // Minimum requirement.
     case _SC_NGROUPS_MAX:       return NGROUPS_MAX;
-    case _SC_OPEN_MAX:          return OPEN_MAX;
+    case _SC_OPEN_MAX:          return __sysconf_rlimit(RLIMIT_NOFILE);
     case _SC_PASS_MAX:          return PASS_MAX;
     case _SC_2_C_BIND:          return _POSIX2_C_BIND;
     case _SC_2_C_DEV:           return _POSIX2_C_DEV;
diff --git a/libc/bionic/system_properties.cpp b/libc/bionic/system_properties.cpp
index 170e7ac..aae99b1 100644
--- a/libc/bionic/system_properties.cpp
+++ b/libc/bionic/system_properties.cpp
@@ -51,7 +51,6 @@
 #include <sys/_system_properties.h>
 #include <sys/system_properties.h>
 
-#include "private/bionic_atomic_inline.h"
 #include "private/bionic_futex.h"
 #include "private/bionic_macros.h"
 
@@ -80,22 +79,26 @@
     uint8_t namelen;
     uint8_t reserved[3];
 
-    // TODO: The following fields should be declared as atomic_uint32_t.
-    // They should be assigned to with release semantics, instead of using
-    // explicit fences.  Unfortunately, the read accesses are generally
-    // followed by more dependent read accesses, and the dependence
-    // is assumed to enforce memory ordering.  Which it does on supported
-    // hardware.  This technically should use memory_order_consume, if
-    // that worked as intended.
+    // The property trie is updated only by the init process (single threaded) which provides
+    // property service. And it can be read by multiple threads at the same time.
+    // As the property trie is not protected by locks, we use atomic_uint_least32_t types for the
+    // left, right, children "pointers" in the trie node. To make sure readers who see the
+    // change of "pointers" can also notice the change of prop_bt structure contents pointed by
+    // the "pointers", we always use release-consume ordering pair when accessing these "pointers".
+
+    // prop "points" to prop_info structure if there is a propery associated with the trie node.
+    // Its situation is similar to the left, right, children "pointers". So we use
+    // atomic_uint_least32_t and release-consume ordering to protect it as well.
+
     // We should also avoid rereading these fields redundantly, since not
     // all processor implementations ensure that multiple loads from the
     // same field are carried out in the right order.
-    volatile uint32_t prop;
+    atomic_uint_least32_t prop;
 
-    volatile uint32_t left;
-    volatile uint32_t right;
+    atomic_uint_least32_t left;
+    atomic_uint_least32_t right;
 
-    volatile uint32_t children;
+    atomic_uint_least32_t children;
 
     char name[0];
 
@@ -103,8 +106,6 @@
         this->namelen = name_length;
         memcpy(this->name, name, name_length);
         this->name[name_length] = '\0';
-        ANDROID_MEMBAR_FULL();  // TODO: Instead use a release store
-                                // for subsequent pointer assignment.
     }
 
 private:
@@ -143,8 +144,6 @@
         atomic_init(&this->serial, valuelen << 24);
         memcpy(this->value, value, valuelen);
         this->value[valuelen] = '\0';
-        ANDROID_MEMBAR_FULL();  // TODO: Instead use a release store
-                                // for subsequent point assignment.
     }
 private:
     DISALLOW_COPY_AND_ASSIGN(prop_info);
@@ -291,10 +290,10 @@
     return map_result;
 }
 
-static void *allocate_obj(const size_t size, uint32_t *const off)
+static void *allocate_obj(const size_t size, uint_least32_t *const off)
 {
     prop_area *pa = __system_property_area__;
-    const size_t aligned = BIONIC_ALIGN(size, sizeof(uint32_t));
+    const size_t aligned = BIONIC_ALIGN(size, sizeof(uint_least32_t));
     if (pa->bytes_used + aligned > pa_data_size) {
         return NULL;
     }
@@ -304,12 +303,12 @@
     return pa->data + *off;
 }
 
-static prop_bt *new_prop_bt(const char *name, uint8_t namelen, uint32_t *const off)
+static prop_bt *new_prop_bt(const char *name, uint8_t namelen, uint_least32_t *const off)
 {
-    uint32_t new_offset;
-    void *const offset = allocate_obj(sizeof(prop_bt) + namelen + 1, &new_offset);
-    if (offset) {
-        prop_bt* bt = new(offset) prop_bt(name, namelen);
+    uint_least32_t new_offset;
+    void *const p = allocate_obj(sizeof(prop_bt) + namelen + 1, &new_offset);
+    if (p != NULL) {
+        prop_bt* bt = new(p) prop_bt(name, namelen);
         *off = new_offset;
         return bt;
     }
@@ -318,20 +317,20 @@
 }
 
 static prop_info *new_prop_info(const char *name, uint8_t namelen,
-        const char *value, uint8_t valuelen, uint32_t *const off)
+        const char *value, uint8_t valuelen, uint_least32_t *const off)
 {
-    uint32_t off_tmp;
-    void* const offset = allocate_obj(sizeof(prop_info) + namelen + 1, &off_tmp);
-    if (offset) {
-        prop_info* info = new(offset) prop_info(name, namelen, value, valuelen);
-        *off = off_tmp;
+    uint_least32_t new_offset;
+    void* const p = allocate_obj(sizeof(prop_info) + namelen + 1, &new_offset);
+    if (p != NULL) {
+        prop_info* info = new(p) prop_info(name, namelen, value, valuelen);
+        *off = new_offset;
         return info;
     }
 
     return NULL;
 }
 
-static void *to_prop_obj(const uint32_t off)
+static void *to_prop_obj(uint_least32_t off)
 {
     if (off > pa_data_size)
         return NULL;
@@ -341,7 +340,17 @@
     return (__system_property_area__->data + off);
 }
 
-static prop_bt *root_node()
+static inline prop_bt *to_prop_bt(atomic_uint_least32_t* off_p) {
+  uint_least32_t off = atomic_load_explicit(off_p, memory_order_consume);
+  return reinterpret_cast<prop_bt*>(to_prop_obj(off));
+}
+
+static inline prop_info *to_prop_info(atomic_uint_least32_t* off_p) {
+  uint_least32_t off = atomic_load_explicit(off_p, memory_order_consume);
+  return reinterpret_cast<prop_info*>(to_prop_obj(off));
+}
+
+static inline prop_bt *root_node()
 {
     return reinterpret_cast<prop_bt*>(to_prop_obj(0));
 }
@@ -373,36 +382,34 @@
         }
 
         if (ret < 0) {
-            if (current->left) {
-                current = reinterpret_cast<prop_bt*>(to_prop_obj(current->left));
+            uint_least32_t left_offset = atomic_load_explicit(&current->left, memory_order_relaxed);
+            if (left_offset != 0) {
+                current = to_prop_bt(&current->left);
             } else {
                 if (!alloc_if_needed) {
                    return NULL;
                 }
 
-                // Note that there isn't a race condition here. "clients" never
-                // reach this code-path since It's only the (single threaded) server
-                // that allocates new nodes. Though "bt->left" is volatile, it can't
-                // have changed since the last value was last read.
-                uint32_t new_offset = 0;
+                uint_least32_t new_offset;
                 prop_bt* new_bt = new_prop_bt(name, namelen, &new_offset);
                 if (new_bt) {
-                    current->left = new_offset;
+                    atomic_store_explicit(&current->left, new_offset, memory_order_release);
                 }
                 return new_bt;
             }
         } else {
-            if (current->right) {
-                current = reinterpret_cast<prop_bt*>(to_prop_obj(current->right));
+            uint_least32_t right_offset = atomic_load_explicit(&current->right, memory_order_relaxed);
+            if (right_offset != 0) {
+                current = to_prop_bt(&current->right);
             } else {
                 if (!alloc_if_needed) {
                    return NULL;
                 }
 
-                uint32_t new_offset;
+                uint_least32_t new_offset;
                 prop_bt* new_bt = new_prop_bt(name, namelen, &new_offset);
                 if (new_bt) {
-                    current->right = new_offset;
+                    atomic_store_explicit(&current->right, new_offset, memory_order_release);
                 }
                 return new_bt;
             }
@@ -429,13 +436,14 @@
         }
 
         prop_bt* root = NULL;
-        if (current->children) {
-            root = reinterpret_cast<prop_bt*>(to_prop_obj(current->children));
+        uint_least32_t children_offset = atomic_load_explicit(&current->children, memory_order_relaxed);
+        if (children_offset != 0) {
+            root = to_prop_bt(&current->children);
         } else if (alloc_if_needed) {
-            uint32_t new_bt_offset;
-            root = new_prop_bt(remaining_name, substr_size, &new_bt_offset);
+            uint_least32_t new_offset;
+            root = new_prop_bt(remaining_name, substr_size, &new_offset);
             if (root) {
-                current->children = new_bt_offset;
+                atomic_store_explicit(&current->children, new_offset, memory_order_release);
             }
         }
 
@@ -454,13 +462,14 @@
         remaining_name = sep + 1;
     }
 
-    if (current->prop) {
-        return reinterpret_cast<prop_info*>(to_prop_obj(current->prop));
+    uint_least32_t prop_offset = atomic_load_explicit(&current->prop, memory_order_relaxed);
+    if (prop_offset != 0) {
+        return to_prop_info(&current->prop);
     } else if (alloc_if_needed) {
-        uint32_t new_info_offset;
-        prop_info* new_info = new_prop_info(name, namelen, value, valuelen, &new_info_offset);
+        uint_least32_t new_offset;
+        prop_info* new_info = new_prop_info(name, namelen, value, valuelen, &new_offset);
         if (new_info) {
-            current->prop = new_info_offset;
+            atomic_store_explicit(&current->prop, new_offset, memory_order_release);
         }
 
         return new_info;
@@ -534,31 +543,34 @@
     cookie->count++;
 }
 
-static int foreach_property(const uint32_t off,
+static int foreach_property(prop_bt *const trie,
         void (*propfn)(const prop_info *pi, void *cookie), void *cookie)
 {
-    prop_bt *trie = reinterpret_cast<prop_bt*>(to_prop_obj(off));
     if (!trie)
         return -1;
 
-    if (trie->left) {
-        const int err = foreach_property(trie->left, propfn, cookie);
+    uint_least32_t left_offset = atomic_load_explicit(&trie->left, memory_order_relaxed);
+    if (left_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->left), propfn, cookie);
         if (err < 0)
             return -1;
     }
-    if (trie->prop) {
-        prop_info *info = reinterpret_cast<prop_info*>(to_prop_obj(trie->prop));
+    uint_least32_t prop_offset = atomic_load_explicit(&trie->prop, memory_order_relaxed);
+    if (prop_offset != 0) {
+        prop_info *info = to_prop_info(&trie->prop);
         if (!info)
             return -1;
         propfn(info, cookie);
     }
-    if (trie->children) {
-        const int err = foreach_property(trie->children, propfn, cookie);
+    uint_least32_t children_offset = atomic_load_explicit(&trie->children, memory_order_relaxed);
+    if (children_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->children), propfn, cookie);
         if (err < 0)
             return -1;
     }
-    if (trie->right) {
-        const int err = foreach_property(trie->right, propfn, cookie);
+    uint_least32_t right_offset = atomic_load_explicit(&trie->right, memory_order_relaxed);
+    if (right_offset != 0) {
+        const int err = foreach_property(to_prop_bt(&trie->right), propfn, cookie);
         if (err < 0)
             return -1;
     }
@@ -766,5 +778,5 @@
         return __system_property_foreach_compat(propfn, cookie);
     }
 
-    return foreach_property(0, propfn, cookie);
+    return foreach_property(root_node(), propfn, cookie);
 }
diff --git a/libc/bionic/memchr.c b/libc/bionic/wmempcpy.cpp
similarity index 72%
copy from libc/bionic/memchr.c
copy to libc/bionic/wmempcpy.cpp
index b14167a..54ebf86 100644
--- a/libc/bionic/memchr.c
+++ b/libc/bionic/wmempcpy.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2015 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,22 +25,9 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#include <stddef.h>
-#include <string.h>
 
-void *memchr(const void *s, int c, size_t n)
-{
-    const unsigned char*  p   = s;
-    const unsigned char*  end = p + n;
+#include <wchar.h>
 
-    for (;;) {
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-        if (p >= end || p[0] == c) break; p++;
-    }
-    if (p >= end)
-        return NULL;
-    else
-        return (void*) p;
+wchar_t* wmempcpy(wchar_t* dst, const wchar_t* src, size_t n) {
+  return wmemcpy(dst, src, n) + n;
 }
diff --git a/libc/dns/resolv/res_send.c b/libc/dns/resolv/res_send.c
index 6439e31..a8da3ac 100644
--- a/libc/dns/resolv/res_send.c
+++ b/libc/dns/resolv/res_send.c
@@ -402,6 +402,10 @@
 	}
 
 	if (statp->nscount == 0) {
+		// We have no nameservers configured, so there's no point trying.
+		// Tell the cache the query failed, or any retries and anyone else asking the same
+		// question will block for PENDING_REQUEST_TIMEOUT seconds instead of failing fast.
+		_resolv_cache_query_failed(statp->netid, buf, buflen);
 		errno = ESRCH;
 		return (-1);
 	}
diff --git a/libc/dns/resolv/res_state.c b/libc/dns/resolv/res_state.c
index 7533d19..afccd99 100644
--- a/libc/dns/resolv/res_state.c
+++ b/libc/dns/resolv/res_state.c
@@ -50,8 +50,6 @@
 #  define D(...)  do{}while(0)
 #endif
 
-static pthread_key_t   _res_key;
-
 typedef struct {
     int                  _h_errno;
     // TODO: Have one __res_state per network so we don't have to repopulate frequently.
@@ -105,11 +103,10 @@
     free(rt);
 }
 
-__attribute__((constructor))
-static void
-_res_init_key( void )
-{
-    pthread_key_create( &_res_key, _res_thread_free );
+static pthread_key_t _res_key;
+
+__attribute__((constructor)) static void __res_key_init() {
+    pthread_key_create(&_res_key, _res_thread_free);
 }
 
 static _res_thread*
diff --git a/libc/include/android/dlext.h b/libc/include/android/dlext.h
index 90daf30..f10a8a2 100644
--- a/libc/include/android/dlext.h
+++ b/libc/include/android/dlext.h
@@ -59,16 +59,28 @@
   /* If opening a library using library_fd read it starting at library_fd_offset.
    * This flag is only valid when ANDROID_DLEXT_USE_LIBRARY_FD is set.
    */
-
   ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET    = 0x20,
 
+  /* When set, do not check if the library has already been loaded by file stat(2)s.
+   *
+   * This flag allows forced loading of the library in the case when for some
+   * reason multiple ELF files share the same filename (because the already-loaded
+   * library has been removed and overwritten, for example).
+   *
+   * Note that if the library has the same dt_soname as an old one and some other
+   * library has the soname in DT_NEEDED list, the first one will be used to resolve any
+   * dependencies.
+   */
+  ANDROID_DLEXT_FORCE_LOAD = 0x40,
+
   /* Mask of valid bits */
   ANDROID_DLEXT_VALID_FLAG_BITS       = ANDROID_DLEXT_RESERVED_ADDRESS |
                                         ANDROID_DLEXT_RESERVED_ADDRESS_HINT |
                                         ANDROID_DLEXT_WRITE_RELRO |
                                         ANDROID_DLEXT_USE_RELRO |
                                         ANDROID_DLEXT_USE_LIBRARY_FD |
-                                        ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET,
+                                        ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET |
+                                        ANDROID_DLEXT_FORCE_LOAD,
 };
 
 typedef struct {
diff --git a/libc/include/elf.h b/libc/include/elf.h
index a41a244..ee53ad1 100644
--- a/libc/include/elf.h
+++ b/libc/include/elf.h
@@ -94,6 +94,13 @@
 #define DT_PREINIT_ARRAY 32
 #define DT_PREINIT_ARRAYSZ 33
 
+/* Android compressed rel/rela sections */
+#define DT_ANDROID_REL (DT_LOOS + 2)
+#define DT_ANDROID_RELSZ (DT_LOOS + 3)
+
+#define DT_ANDROID_RELA (DT_LOOS + 4)
+#define DT_ANDROID_RELASZ (DT_LOOS + 5)
+
 /* gnu hash entry */
 #define DT_GNU_HASH 0x6ffffef5
 
@@ -118,4 +125,8 @@
 /* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
 #define NT_FPREGSET NT_PRFPREG
 
+#define ELF_NOTE_GNU "GNU"
+
+#define NT_GNU_BUILD_ID 3
+
 #endif /* _ELF_H */
diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 4c4cfbd..0f016d7 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -59,22 +59,29 @@
 
 extern int creat(const char*, mode_t);
 extern int creat64(const char*, mode_t);
-extern int fallocate64(int, int, off64_t, off64_t);
-extern int fallocate(int, int, off_t, off_t);
 extern int fcntl(int, int, ...);
 extern int openat(int, const char*, int, ...);
 extern int openat64(int, const char*, int, ...);
 extern int open(const char*, int, ...);
 extern int open64(const char*, int, ...);
-extern int posix_fadvise64(int, off64_t, off64_t, int);
-extern int posix_fadvise(int, off_t, off_t, int);
-extern int posix_fallocate64(int, off64_t, off64_t);
-extern int posix_fallocate(int, off_t, off_t);
 extern ssize_t splice(int, off64_t*, int, off64_t*, size_t, unsigned int);
 extern ssize_t tee(int, int, size_t, unsigned int);
 extern int unlinkat(int, const char*, int);
 extern ssize_t vmsplice(int, const struct iovec*, size_t, unsigned int);
 
+#if defined(__USE_FILE_OFFSET64)
+extern int fallocate(int, int, off_t, off_t) __RENAME(fallocate64);
+extern int posix_fadvise(int, off_t, off_t, int) __RENAME(posix_fadvise64);
+extern int posix_fallocate(int, off_t, off_t) __RENAME(posix_fallocate);
+#else
+extern int fallocate(int, int, off_t, off_t);
+extern int posix_fadvise(int, off_t, off_t, int);
+extern int posix_fallocate(int, off_t, off_t);
+#endif
+extern int fallocate64(int, int, off64_t, off64_t);
+extern int posix_fadvise64(int, off64_t, off64_t, int);
+extern int posix_fallocate64(int, off64_t, off64_t);
+
 extern int __open_2(const char*, int);
 extern int __open_real(const char*, int, ...) __RENAME(open);
 extern int __openat_2(int, const char*, int);
diff --git a/libc/include/grp.h b/libc/include/grp.h
index ab90022..df7a613 100644
--- a/libc/include/grp.h
+++ b/libc/include/grp.h
@@ -54,9 +54,9 @@
 struct group	*getgrgid(gid_t);
 struct group	*getgrnam(const char *);
 #if __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE
-struct group	*getgrent(void) __errorattr("This function is meaningless on Android.");
-__errordecl(setgrent, "This function is meaningless on Android.");
-__errordecl(endgrent, "This function is meaningless on Android.");
+struct group	*getgrent(void)  __attribute__((deprecated("getgrent is meaningless on Android")));
+void setgrent(void) __attribute__((deprecated("setgrent is meaningless on Android")));
+void endgrent(void) __attribute__((deprecated("endgrent is meaningless on Android")));
 int		 getgrgid_r(gid_t, struct group *, char *,
 		    size_t, struct group **);
 int		 getgrnam_r(const char *, struct group *, char *,
diff --git a/libc/include/paths.h b/libc/include/paths.h
index 1eba536..82c2804 100644
--- a/libc/include/paths.h
+++ b/libc/include/paths.h
@@ -32,19 +32,13 @@
 #ifndef _PATHS_H_
 #define	_PATHS_H_
 
-/* Default search path. */
-#define	_PATH_DEFPATH	"/system/bin:/system/xbin"
-
 #define	_PATH_BSHELL	"/system/bin/sh"
 #define	_PATH_CONSOLE	"/dev/console"
+#define	_PATH_DEFPATH	"/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin"
+#define	_PATH_DEV	"/dev/"
 #define	_PATH_DEVNULL	"/dev/null"
 #define	_PATH_KLOG	"/proc/kmsg"
-#define	_PATH_MEM	"/dev/mem"
-
 #define	_PATH_MOUNTED	"/proc/mounts"
 #define	_PATH_TTY	"/dev/tty"
 
-/* Provide trailing slash, since mostly used for building pathnames. */
-#define	_PATH_DEV	"/dev/"
-
 #endif /* !_PATHS_H_ */
diff --git a/libc/include/pthread.h b/libc/include/pthread.h
index 212551b..83a56d6 100644
--- a/libc/include/pthread.h
+++ b/libc/include/pthread.h
@@ -36,30 +36,15 @@
 #include <sys/types.h>
 #include <time.h>
 
-#if defined(__LP64__)
-  #define __RESERVED_INITIALIZER , {0}
-#else
-  #define __RESERVED_INITIALIZER
-#endif
-
 typedef struct {
-  int value;
-#ifdef __LP64__
-  char __reserved[36];
+#if defined(__LP64__)
+  int32_t __private[10];
+#else
+  int32_t __private[1];
 #endif
 } pthread_mutex_t;
 
-#define  __PTHREAD_MUTEX_INIT_VALUE            0
-#define  __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE  0x4000
-#define  __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
-
-#define PTHREAD_MUTEX_INITIALIZER {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-
-/* TODO: remove this namespace pollution. */
-#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
-#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+typedef long pthread_mutexattr_t;
 
 enum {
     PTHREAD_MUTEX_NORMAL = 0,
@@ -72,43 +57,33 @@
     PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
 };
 
+#define PTHREAD_MUTEX_INITIALIZER { { ((PTHREAD_MUTEX_NORMAL & 3) << 14) } }
+#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP { { ((PTHREAD_MUTEX_RECURSIVE & 3) << 14) } }
+#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { ((PTHREAD_MUTEX_ERRORCHECK & 3) << 14) } }
+
 typedef struct {
-  unsigned int value;
-#ifdef __LP64__
-  char __reserved[44];
+#if defined(__LP64__)
+  int32_t __private[12];
+#else
+  int32_t __private[1];
 #endif
 } pthread_cond_t;
 
-#define PTHREAD_COND_INITIALIZER  {0 __RESERVED_INITIALIZER}
-
-typedef long pthread_mutexattr_t;
 typedef long pthread_condattr_t;
 
+#define PTHREAD_COND_INITIALIZER  { { 0 } }
+
+typedef struct {
+#if defined(__LP64__)
+  int32_t __private[14];
+#else
+  int32_t __private[10];
+#endif
+} pthread_rwlock_t;
+
 typedef long pthread_rwlockattr_t;
 
-typedef struct {
-#if !defined(__LP64__)
-  pthread_mutex_t __unused_lock;
-  pthread_cond_t __unused_cond;
-#endif
-  volatile int32_t state; // 0=unlock, -1=writer lock, +n=reader lock
-  volatile int32_t writer_thread_id;
-  volatile int32_t pending_readers;
-  volatile int32_t pending_writers;
-  int32_t attr;
-#ifdef __LP64__
-  char __reserved[36];
-#else
-  char __reserved[12];
-#endif
-
-} pthread_rwlock_t;
-
-#ifdef __LP64__
-  #define PTHREAD_RWLOCK_INITIALIZER  { 0, 0, 0, 0, 0, { 0 } }
-#else
-  #define PTHREAD_RWLOCK_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0, 0, 0, 0, { 0 } }
-#endif
+#define PTHREAD_RWLOCK_INITIALIZER  { { 0 } }
 
 typedef int pthread_key_t;
 
diff --git a/libc/include/pwd.h b/libc/include/pwd.h
index 6d483c0..6012b96 100644
--- a/libc/include/pwd.h
+++ b/libc/include/pwd.h
@@ -119,10 +119,6 @@
 int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);
 int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);
 
-void endpwent(void);
-struct passwd* getpwent(void);
-int setpwent(void);
-
 __END_DECLS
 
 #endif
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index b04aa24..f5ed652 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -57,8 +57,6 @@
 
 __BEGIN_DECLS
 
-#define	_FSTDIO			/* Define for new stdio with functions. */
-
 typedef off_t fpos_t;		/* stdio file position type */
 
 /*
@@ -266,27 +264,38 @@
 
 #ifndef __AUDIT__
 #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
-char* gets(char*) __warnattr("gets is very unsafe; consider using fgets");
+char* gets(char*) __attribute__((deprecated("gets is unsafe, use fgets instead")));
 #endif
 int sprintf(char* __restrict, const char* __restrict, ...)
     __printflike(2, 3) __warnattr("sprintf is often misused; please use snprintf");
-char* tmpnam(char*) __warnattr("tmpnam possibly used unsafely; consider using mkstemp");
 int vsprintf(char* __restrict, const char* __restrict, __va_list)
     __printflike(2, 0) __warnattr("vsprintf is often misused; please use vsnprintf");
+char* tmpnam(char*) __attribute__((deprecated("tmpnam is unsafe, use mkstemp or tmpfile instead")));
 #if __XPG_VISIBLE
 char* tempnam(const char*, const char*)
-    __warnattr("tempnam possibly used unsafely; consider using mkstemp");
+    __attribute__((deprecated("tempnam is unsafe, use mkstemp or tmpfile instead")));
 #endif
 #endif
 
 extern int rename(const char*, const char*);
 extern int renameat(int, const char*, int, const char*);
 
+#if defined(__USE_FILE_OFFSET64)
+/* Not possible. */
+int	 fgetpos(FILE * __restrict, fpos_t * __restrict)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+int	 fsetpos(FILE *, const fpos_t *)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+int	 fseeko(FILE *, off_t, int)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+off_t	 ftello(FILE *)
+	__attribute__((__error__("not available with _FILE_OFFSET_BITS=64")));
+#else
 int	 fgetpos(FILE * __restrict, fpos_t * __restrict);
 int	 fsetpos(FILE *, const fpos_t *);
-
 int	 fseeko(FILE *, off_t, int);
 off_t	 ftello(FILE *);
+#endif
 
 #if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
 int	 snprintf(char * __restrict, size_t, const char * __restrict, ...)
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index cbd7aeb..84bf56d 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -58,7 +58,7 @@
 extern int clearenv(void);
 
 extern char* mkdtemp(char*);
-extern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp");
+extern char* mktemp(char*) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
 extern int mkostemp64(char*, int);
 extern int mkostemp(char*, int);
diff --git a/libc/include/string.h b/libc/include/string.h
index d67928c..fffe136 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -44,6 +44,9 @@
 extern void*  memrchr(const void *, int, size_t) __purefunc;
 extern int    memcmp(const void *, const void *, size_t) __purefunc;
 extern void*  memcpy(void* __restrict, const void* __restrict, size_t);
+#if defined(__USE_GNU)
+extern void*  mempcpy(void* __restrict, const void* __restrict, size_t);
+#endif
 extern void*  memmove(void *, const void *, size_t);
 extern void*  memset(void *, int, size_t);
 extern void*  memmem(const void *, size_t, const void *, size_t) __purefunc;
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 1d33895..04613f4 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -380,6 +380,15 @@
 # define __USE_BSD 1
 #endif
 
+/*
+ * _FILE_OFFSET_BITS 64 support.
+ */
+#if !defined(__LP64__) && defined(_FILE_OFFSET_BITS)
+#if _FILE_OFFSET_BITS == 64
+#define __USE_FILE_OFFSET64 1
+#endif
+#endif
+
 /*-
  * POSIX.1 requires that the macros we test be defined before any standard
  * header file is included.
diff --git a/libc/include/sys/file.h b/libc/include/sys/file.h
index cf2f4b1..f414d34 100644
--- a/libc/include/sys/file.h
+++ b/libc/include/sys/file.h
@@ -25,14 +25,19 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_FILE_H_
 #define _SYS_FILE_H_
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
 
-/* ANDROID: needed for flock() */
-#include <unistd.h>
 #include <fcntl.h>
 
+__BEGIN_DECLS
+
+int flock(int, int);
+
+__END_DECLS
+
 #endif /* _SYS_FILE_H_ */
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 1663222..6857f60 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -49,8 +49,13 @@
 #define POSIX_MADV_WILLNEED   MADV_WILLNEED
 #define POSIX_MADV_DONTNEED   MADV_DONTNEED
 
+#if defined(__USE_FILE_OFFSET64)
+extern void* mmap(void*, size_t, int, int, int, off_t) __RENAME(mmap64);
+#else
 extern void* mmap(void*, size_t, int, int, int, off_t);
+#endif
 extern void* mmap64(void*, size_t, int, int, int, off64_t);
+
 extern int munmap(void*, size_t);
 extern int msync(const void*, size_t, int);
 extern int mprotect(const void*, size_t, int);
diff --git a/libc/include/sys/mount.h b/libc/include/sys/mount.h
index 3c35d31..fd7cf17 100644
--- a/libc/include/sys/mount.h
+++ b/libc/include/sys/mount.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_MOUNT_H
 #define _SYS_MOUNT_H
 
@@ -35,9 +36,10 @@
 __BEGIN_DECLS
 
 /* umount2 flags. */
-#define MNT_FORCE	1	/* Forcibly unmount */
-#define MNT_DETACH	2	/* Detach from tree only */
-#define MNT_EXPIRE	4	/* Mark for expiry */
+#define MNT_FORCE 1
+#define MNT_DETACH 2
+#define MNT_EXPIRE 4
+#define UMOUNT_NOFOLLOW 8
 
 extern int mount(const char*, const char*, const char*, unsigned long, const void*);
 extern int umount(const char*);
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index a91fa53..3f8dd45 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -36,6 +36,10 @@
 
 __BEGIN_DECLS
 
+/* The kernel header doesn't have these, but POSIX does. */
+#define RLIM_SAVED_CUR RLIM_INFINITY
+#define RLIM_SAVED_MAX RLIM_INFINITY
+
 typedef unsigned long rlim_t;
 
 extern int getrlimit(int, struct rlimit*);
diff --git a/libc/include/sys/sendfile.h b/libc/include/sys/sendfile.h
index 81a3c44..c588e68 100644
--- a/libc/include/sys/sendfile.h
+++ b/libc/include/sys/sendfile.h
@@ -34,7 +34,11 @@
 
 __BEGIN_DECLS
 
+#if defined(__USE_FILE_OFFSET64)
+extern ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count) __RENAME(sendfile64);
+#else
 extern ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count);
+#endif
 extern ssize_t sendfile64(int out_fd, int in_fd, off64_t* offset, size_t count);
 
 __END_DECLS
diff --git a/libc/include/sys/syscall.h b/libc/include/sys/syscall.h
index 34a29df..21eaf33 100644
--- a/libc/include/sys/syscall.h
+++ b/libc/include/sys/syscall.h
@@ -25,20 +25,13 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_SYSCALL_H_
 #define _SYS_SYSCALL_H_
 
-#include <errno.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <asm/unistd.h>
+#include <asm/unistd.h> /* Linux kernel __NR_* names. */
+#include <sys/glibc-syscalls.h> /* glibc-compatible SYS_* aliases. */
 
-#include <sys/glibc-syscalls.h> /* glibc-compatible SYS_* aliases for our __NR_* names. */
-
-__BEGIN_DECLS
-
-long syscall(long number, ...);
-
-__END_DECLS
+/* The syscall function itself is declared in <unistd.h>, not here. */
 
 #endif /* _SYS_SYSCALL_H_ */
diff --git a/libc/include/sys/types.h b/libc/include/sys/types.h
index a5fa692..a6b0fd8 100644
--- a/libc/include/sys/types.h
+++ b/libc/include/sys/types.h
@@ -90,16 +90,14 @@
 typedef __kernel_time_t __time_t;
 typedef __time_t time_t;
 
-/* This historical accident means that we had a 32-bit off_t on 32-bit architectures. */
-#if !defined(__LP64__)
-typedef __kernel_off_t off_t;
-typedef __kernel_loff_t loff_t;
+#if defined(__USE_FILE_OFFSET64) || defined(__LP64__)
+typedef int64_t off_t;
+typedef off_t loff_t;
 typedef loff_t off64_t;
 #else
-/* We could re-use the LP32 definitions, but that would mean that although off_t and loff_t/off64_t
- * would be the same size, they wouldn't actually be the same type, which can lead to warnings. */
+/* This historical accident means that we had a 32-bit off_t on 32-bit architectures. */
 typedef __kernel_off_t off_t;
-typedef off_t loff_t;
+typedef __kernel_loff_t loff_t;
 typedef loff_t off64_t;
 #endif
 
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index cbceab2..8000f03 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -47,6 +47,7 @@
 
 #define LOG_PRIMASK 7
 #define LOG_PRI(x) ((x) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
 
 /* Facilities are currently ignored on Android. */
 #define LOG_KERN     0000
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index 6403d4a..92d3abe 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -116,10 +116,6 @@
 extern int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
 extern int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
 extern char* getlogin(void);
-extern char* getusershell(void);
-extern void setusershell(void);
-extern void endusershell(void);
-
 
 extern long fpathconf(int, int);
 extern long pathconf(const char*, int);
@@ -146,32 +142,40 @@
 extern int fchown(int, uid_t, gid_t);
 extern int fchownat(int, const char*, uid_t, gid_t, int);
 extern int lchown(const char *, uid_t, gid_t);
-extern int truncate(const char *, off_t);
-extern int truncate64(const char *, off64_t);
 extern char *getcwd(char *, size_t);
 
 extern int sync(void);
 
 extern int close(int);
-extern off_t lseek(int, off_t, int);
-extern off64_t lseek64(int, off64_t, int);
 
 extern ssize_t read(int, void *, size_t);
 extern ssize_t write(int, const void *, size_t);
-extern ssize_t pread(int, void *, size_t, off_t);
-extern ssize_t pread64(int, void *, size_t, off64_t);
-extern ssize_t pwrite(int, const void *, size_t, off_t);
-extern ssize_t pwrite64(int, const void *, size_t, off64_t);
 
 extern int dup(int);
 extern int dup2(int, int);
 extern int dup3(int, int, int);
 extern int fcntl(int, int, ...);
 extern int ioctl(int, int, ...);
-extern int flock(int, int);
 extern int fsync(int);
 extern int fdatasync(int);
+
+#if defined(__USE_FILE_OFFSET64)
+extern int truncate(const char *, off_t) __RENAME(truncate64);
+extern off_t lseek(int, off_t, int) __RENAME(lseek64);
+extern ssize_t pread(int, void *, size_t, off_t) __RENAME(pread64);
+extern ssize_t pwrite(int, const void *, size_t, off_t) __RENAME(pwrite64);
+extern int ftruncate(int, off_t) __RENAME(ftruncate64);
+#else
+extern int truncate(const char *, off_t);
+extern off_t lseek(int, off_t, int);
+extern ssize_t pread(int, void *, size_t, off_t);
+extern ssize_t pwrite(int, const void *, size_t, off_t);
 extern int ftruncate(int, off_t);
+#endif
+extern int truncate64(const char *, off64_t);
+extern off64_t lseek64(int, off64_t, int);
+extern ssize_t pread64(int, void *, size_t, off64_t);
+extern ssize_t pwrite64(int, const void *, size_t, off64_t);
 extern int ftruncate64(int, off64_t);
 
 extern int pause(void);
@@ -200,6 +204,8 @@
 
 long sysconf(int);
 
+long syscall(long number, ...);
+
 extern int daemon(int, int);
 
 #if defined(__arm__) || (defined(__mips__) && !defined(__LP64__))
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index cfd2299..ea6aca0 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -151,6 +151,9 @@
 extern wchar_t          *wmemchr(const wchar_t *, wchar_t, size_t);
 extern int               wmemcmp(const wchar_t *, const wchar_t *, size_t);
 extern wchar_t          *wmemcpy(wchar_t *, const wchar_t *, size_t);
+#if defined(__USE_GNU)
+extern wchar_t          *wmempcpy(wchar_t *, const wchar_t *, size_t);
+#endif
 extern wchar_t          *wmemmove(wchar_t *, const wchar_t *, size_t);
 extern wchar_t          *wmemset(wchar_t *, wchar_t, size_t);
 extern int               wprintf(const wchar_t *, ...);
diff --git a/libc/kernel/uapi/linux/can/netlink.h b/libc/kernel/uapi/linux/can/netlink.h
index 96a90ff..a1c3159 100644
--- a/libc/kernel/uapi/linux/can/netlink.h
+++ b/libc/kernel/uapi/linux/can/netlink.h
@@ -79,33 +79,35 @@
 #define CAN_CTRLMODE_BERR_REPORTING 0x10
 #define CAN_CTRLMODE_FD 0x20
 #define CAN_CTRLMODE_PRESUME_ACK 0x40
-struct can_device_stats {
+#define CAN_CTRLMODE_FD_NON_ISO 0x80
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct can_device_stats {
   __u32 bus_error;
   __u32 error_warning;
   __u32 error_passive;
-  __u32 bus_off;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 bus_off;
   __u32 arbitration_lost;
   __u32 restarts;
 };
-enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
   IFLA_CAN_UNSPEC,
   IFLA_CAN_BITTIMING,
   IFLA_CAN_BITTIMING_CONST,
-  IFLA_CAN_CLOCK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_CAN_CLOCK,
   IFLA_CAN_STATE,
   IFLA_CAN_CTRLMODE,
   IFLA_CAN_RESTART_MS,
-  IFLA_CAN_RESTART,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  IFLA_CAN_RESTART,
   IFLA_CAN_BERR_COUNTER,
   IFLA_CAN_DATA_BITTIMING,
   IFLA_CAN_DATA_BITTIMING_CONST,
-  __IFLA_CAN_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __IFLA_CAN_MAX
 };
 #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/uapi/linux/in6.h b/libc/kernel/uapi/linux/in6.h
index 15bde3d..e54bc33 100644
--- a/libc/kernel/uapi/linux/in6.h
+++ b/libc/kernel/uapi/linux/in6.h
@@ -128,84 +128,87 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_TLV_JUMBO 194
 #define IPV6_TLV_HAO 201
+#if __UAPI_DEF_IPV6_OPTIONS
 #define IPV6_ADDRFORM 1
-#define IPV6_2292PKTINFO 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_2292PKTINFO 2
 #define IPV6_2292HOPOPTS 3
 #define IPV6_2292DSTOPTS 4
 #define IPV6_2292RTHDR 5
-#define IPV6_2292PKTOPTIONS 6
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_2292PKTOPTIONS 6
 #define IPV6_CHECKSUM 7
 #define IPV6_2292HOPLIMIT 8
 #define IPV6_NEXTHOP 9
-#define IPV6_AUTHHDR 10
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_AUTHHDR 10
 #define IPV6_FLOWINFO 11
 #define IPV6_UNICAST_HOPS 16
 #define IPV6_MULTICAST_IF 17
-#define IPV6_MULTICAST_HOPS 18
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_MULTICAST_HOPS 18
 #define IPV6_MULTICAST_LOOP 19
 #define IPV6_ADD_MEMBERSHIP 20
 #define IPV6_DROP_MEMBERSHIP 21
-#define IPV6_ROUTER_ALERT 22
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_ROUTER_ALERT 22
 #define IPV6_MTU_DISCOVER 23
 #define IPV6_MTU 24
 #define IPV6_RECVERR 25
-#define IPV6_V6ONLY 26
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_V6ONLY 26
 #define IPV6_JOIN_ANYCAST 27
 #define IPV6_LEAVE_ANYCAST 28
 #define IPV6_PMTUDISC_DONT 0
-#define IPV6_PMTUDISC_WANT 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_PMTUDISC_WANT 1
 #define IPV6_PMTUDISC_DO 2
 #define IPV6_PMTUDISC_PROBE 3
 #define IPV6_PMTUDISC_INTERFACE 4
-#define IPV6_PMTUDISC_OMIT 5
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_PMTUDISC_OMIT 5
 #define IPV6_FLOWLABEL_MGR 32
 #define IPV6_FLOWINFO_SEND 33
 #define IPV6_IPSEC_POLICY 34
-#define IPV6_XFRM_POLICY 35
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPV6_XFRM_POLICY 35
+#endif
 #define IPV6_RECVPKTINFO 49
 #define IPV6_PKTINFO 50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVHOPLIMIT 51
 #define IPV6_HOPLIMIT 52
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVHOPOPTS 53
 #define IPV6_HOPOPTS 54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RTHDRDSTOPTS 55
 #define IPV6_RECVRTHDR 56
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RTHDR 57
 #define IPV6_RECVDSTOPTS 58
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_DSTOPTS 59
 #define IPV6_RECVPATHMTU 60
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PATHMTU 61
 #define IPV6_DONTFRAG 62
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVTCLASS 66
 #define IPV6_TCLASS 67
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_AUTOFLOWLABEL 70
 #define IPV6_ADDR_PREFERENCES 72
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_TMP 0x0001
 #define IPV6_PREFER_SRC_PUBLIC 0x0002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
 #define IPV6_PREFER_SRC_COA 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_HOME 0x0400
 #define IPV6_PREFER_SRC_CGA 0x0008
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_NONCGA 0x0800
 #define IPV6_MINHOPCOUNT 73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_ORIGDSTADDR 74
 #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_TRANSPARENT 75
 #define IPV6_UNICAST_IF 76
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/libc-compat.h b/libc/kernel/uapi/linux/libc-compat.h
index 7854520..b66ebe2 100644
--- a/libc/kernel/uapi/linux/libc-compat.h
+++ b/libc/kernel/uapi/linux/libc-compat.h
@@ -32,29 +32,33 @@
 #define __UAPI_DEF_IPV6_MREQ 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IPPROTO_V6 0
+#define __UAPI_DEF_IPV6_OPTIONS 0
 #else
 #define __UAPI_DEF_IN6_ADDR 1
-#define __UAPI_DEF_IN6_ADDR_ALT 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __UAPI_DEF_IN6_ADDR_ALT 1
 #define __UAPI_DEF_SOCKADDR_IN6 1
 #define __UAPI_DEF_IPV6_MREQ 1
 #define __UAPI_DEF_IPPROTO_V6 1
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#endif
 #ifdef _SYS_XATTR_H
 #define __UAPI_DEF_XATTR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define __UAPI_DEF_XATTR 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_IN6_ADDR 1
 #define __UAPI_DEF_IN6_ADDR_ALT 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UAPI_DEF_SOCKADDR_IN6 1
 #define __UAPI_DEF_IPV6_MREQ 1
-#define __UAPI_DEF_IPPROTO_V6 1
-#define __UAPI_DEF_XATTR 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __UAPI_DEF_IPPROTO_V6 1
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#define __UAPI_DEF_XATTR 1
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index ce6d26d..7e0cf43 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -21,75 +21,71 @@
 #include <linux/types.h>
 #include <linux/uio.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#ifndef __packed
-#define __packed __attribute__((packed))
-#endif
 #define TCMU_VERSION "1.0"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCMU_MAILBOX_VERSION 1
 #define ALIGN_SIZE 64
 struct tcmu_mailbox {
-  __u16 version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u16 version;
   __u16 flags;
   __u32 cmdr_off;
   __u32 cmdr_size;
-  __u32 cmd_head;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
 } __packed;
 enum tcmu_opcode {
-  TCMU_OP_PAD = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
 };
 struct tcmu_cmd_entry_hdr {
-  __u32 len_op;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 len_op;
 } __packed;
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
-struct tcmu_cmd_entry {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct tcmu_cmd_entry {
   struct tcmu_cmd_entry_hdr hdr;
   uint16_t cmd_id;
   uint16_t __pad1;
-  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
     struct {
       uint64_t cdb_off;
       uint64_t iov_cnt;
-      struct iovec iov[0];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      struct iovec iov[0];
     } req;
     struct {
       uint8_t scsi_status;
-      uint8_t __pad1;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+      uint8_t __pad1;
       uint16_t __pad2;
       uint32_t __pad3;
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
-    } rsp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    } rsp;
   };
 } __packed;
 #define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
-enum tcmu_genl_cmd {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
   TCMU_CMD_ADDED_DEVICE,
   TCMU_CMD_REMOVED_DEVICE,
-  __TCMU_CMD_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __TCMU_CMD_MAX,
 };
 #define TCMU_CMD_MAX (__TCMU_CMD_MAX - 1)
 enum tcmu_genl_attr {
-  TCMU_ATTR_UNSPEC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  TCMU_ATTR_UNSPEC,
   TCMU_ATTR_DEVICE,
   TCMU_ATTR_MINOR,
   __TCMU_ATTR_MAX,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index cb6842a..a6c6a2f 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 201219
+#define LINUX_VERSION_CODE 201226
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/private/ThreadLocalBuffer.h b/libc/private/ThreadLocalBuffer.h
index e5bd28c..5e43665 100644
--- a/libc/private/ThreadLocalBuffer.h
+++ b/libc/private/ThreadLocalBuffer.h
@@ -32,30 +32,30 @@
 #include <malloc.h>
 #include <pthread.h>
 
-// libstdc++ currently contains __cxa_guard_acquire and __cxa_guard_release,
-// so we make do with macros instead of a C++ class.
-// TODO: move __cxa_guard_acquire and __cxa_guard_release into libc.
+// TODO: use __thread instead?
 
-// We used to use pthread_once to initialize the keys, but life is more predictable
-// if we allocate them all up front when the C library starts up, via __constructor__.
-
-#define GLOBAL_INIT_THREAD_LOCAL_BUFFER(name) \
-  static pthread_key_t __bionic_tls_ ## name ## _key; \
-  static void __bionic_tls_ ## name ## _key_destroy(void* buffer) { \
-    free(buffer); \
-  } \
-  __attribute__((constructor)) static void __bionic_tls_ ## name ## _key_init() { \
-    pthread_key_create(&__bionic_tls_ ## name ## _key, __bionic_tls_ ## name ## _key_destroy); \
+template <typename T, size_t Size = sizeof(T)>
+class ThreadLocalBuffer {
+ public:
+  ThreadLocalBuffer() {
+    // We used to use pthread_once to initialize the keys, but life is more predictable
+    // if we allocate them all up front when the C library starts up, via __constructor__.
+    pthread_key_create(&key_, free);
   }
 
-// Leaves "name_tls_buffer" and "name_tls_buffer_size" defined and initialized.
-#define LOCAL_INIT_THREAD_LOCAL_BUFFER(type, name, byte_count) \
-  type name ## _tls_buffer = \
-      reinterpret_cast<type>(pthread_getspecific(__bionic_tls_ ## name ## _key)); \
-  if (name ## _tls_buffer == NULL) { \
-    name ## _tls_buffer = reinterpret_cast<type>(calloc(1, byte_count)); \
-    pthread_setspecific(__bionic_tls_ ## name ## _key, name ## _tls_buffer); \
-  } \
-  const size_t name ## _tls_buffer_size __attribute__((unused)) = byte_count
+  T* get() {
+    T* result = reinterpret_cast<T*>(pthread_getspecific(key_));
+    if (result == nullptr) {
+      result = reinterpret_cast<T*>(calloc(1, Size));
+      pthread_setspecific(key_, result);
+    }
+    return result;
+  }
+
+  size_t size() { return Size; }
+
+ private:
+  pthread_key_t key_;
+};
 
 #endif // _BIONIC_THREAD_LOCAL_BUFFER_H_included
diff --git a/libc/private/bionic_asm.h b/libc/private/bionic_asm.h
index d53ebba..5fca222 100644
--- a/libc/private/bionic_asm.h
+++ b/libc/private/bionic_asm.h
@@ -57,4 +57,8 @@
     ENTRY(f); \
     .hidden f \
 
+#define ALIAS_SYMBOL(alias, original) \
+    .globl alias; \
+    .equ alias, original
+
 #endif /* _PRIVATE_BIONIC_ASM_H_ */
diff --git a/libc/private/bionic_atomic_arm.h b/libc/private/bionic_atomic_arm.h
deleted file mode 100644
index 0cb832f..0000000
--- a/libc/private/bionic_atomic_arm.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_ARM_H
-#define BIONIC_ATOMIC_ARM_H
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __asm__ __volatile__ ( "dmb ish" : : : "memory" );
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%3]\n"
-          "mov %1, #0\n"
-          "teq %0, %4\n"
-#ifdef __thumb2__
-          "it eq\n"
-#endif
-          "strexeq %1, %5, [%3]"
-          : "=&r" (prev), "=&r" (status), "+m"(*ptr)
-          : "r" (ptr), "Ir" (old_value), "r" (new_value)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%3]\n"
-          "strex %1, %4, [%3]"
-          : "=&r" (prev), "=&r" (status), "+m" (*ptr)
-          : "r" (ptr), "r" (new_value)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, tmp, status;
-  do {
-    __asm__ __volatile__ (
-          "ldrex %0, [%4]\n"
-          "sub %1, %0, #1\n"
-          "strex %2, %1, [%4]"
-          : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
-          : "r" (ptr)
-          : "cc");
-  } while (__builtin_expect(status != 0, 0));
-  return prev;
-}
-
-#endif /* SYS_ATOMICS_ARM_H */
diff --git a/libc/private/bionic_atomic_arm64.h b/libc/private/bionic_atomic_arm64.h
deleted file mode 100644
index c3a34e1..0000000
--- a/libc/private/bionic_atomic_arm64.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.
- */
-#ifndef BIONIC_ATOMIC_AARCH64_H
-#define BIONIC_ATOMIC_AARCH64_H
-
-/* For ARMv8, we can use the 'dmb' instruction directly */
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __asm__ __volatile__ ( "dmb ish" : : : "memory" );
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t tmp, oldval;
-  __asm__ __volatile__ (
-      "// atomic_cmpxchg\n"
-      "1:  ldxr %w1, [%3]\n"
-      "    cmp %w1, %w4\n"
-      "    b.ne 2f\n"
-      "    stxr %w0, %w5, [%3]\n"
-      "    cbnz  %w0, 1b\n"
-      "2:"
-      : "=&r" (tmp), "=&r" (oldval), "+o"(*ptr)
-      : "r" (ptr), "Ir" (old_value), "r" (new_value)
-      : "cc", "memory");
-  return oldval != old_value;
-}
-
-/* Swap, without any explicit barriers.  */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ (
-      "// atomic_swap\n"
-      "1:  ldxr %w0, [%3]\n"
-      "    stxr %w1, %w4, [%3]\n"
-      "    cbnz %w1, 1b\n"
-      : "=&r" (prev), "=&r" (status), "+o" (*ptr)
-      : "r" (ptr), "r" (new_value)
-      : "cc", "memory");
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers.  */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, tmp, status;
-  __asm__ __volatile__ (
-      "1:  ldxr %w0, [%4]\n"
-      "    sub %w1, %w0, #1\n"
-      "    stxr %w2, %w1, [%4]\n"
-      "    cbnz %w2, 1b"
-      : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
-      : "r" (ptr)
-      : "cc", "memory");
-  return prev;
-}
-
-#endif /* BIONIC_ATOMICS_AARCH64_H */
diff --git a/libc/private/bionic_atomic_gcc_builtin.h b/libc/private/bionic_atomic_gcc_builtin.h
deleted file mode 100644
index 70eb861..0000000
--- a/libc/private/bionic_atomic_gcc_builtin.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_GCC_BUILTIN_H
-#define BIONIC_ATOMIC_GCC_BUILTIN_H
-
-/*
- * This header file is used by default if we don't have optimized atomic
- * routines for a given platform. See bionic_atomic_arm.h and
- * bionic_atomic_x86.h for examples.
- *
- * Note that the GCC builtins include barriers that aren't present in
- * the architecture-specific assembler versions.
- */
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __sync_synchronize();
-}
-
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  /* We must return 0 on success. */
-  return __sync_val_compare_and_swap(ptr, old_value, new_value) != old_value;
-}
-
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t old_value;
-  do {
-    old_value = *ptr;
-  } while (__sync_val_compare_and_swap(ptr, old_value, new_value) != old_value);
-  return old_value;
-}
-
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  /* We must return the old value. */
-  return __sync_fetch_and_add(ptr, -1);
-}
-
-#endif /* BIONIC_ATOMIC_GCC_BUILTIN_H */
diff --git a/libc/private/bionic_atomic_inline.h b/libc/private/bionic_atomic_inline.h
deleted file mode 100644
index f8032c3..0000000
--- a/libc/private/bionic_atomic_inline.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-
-#ifndef BIONIC_ATOMIC_INLINE_H
-#define BIONIC_ATOMIC_INLINE_H
-
-/*
- * Inline declarations and macros for some special-purpose atomic
- * operations.  These are intended for rare circumstances where a
- * memory barrier needs to be issued inline rather than as a function
- * call.
- *
- * Macros defined in this header:
- *
- * void ANDROID_MEMBAR_FULL()
- *   Full memory barrier.  Provides a compiler reordering barrier, and
- *   on SMP systems emits an appropriate instruction.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Define __ATOMIC_INLINE__ to control the inlining of all atomics
- * functions declared here. For a slight performance boost, we want
- * all of them to be always_inline
- */
-#define  __ATOMIC_INLINE__  static __inline__ __attribute__((always_inline))
-
-#if defined(__arm__)
-#  include "bionic_atomic_arm.h"
-#elif defined(__aarch64__)
-#  include "bionic_atomic_arm64.h"
-#elif defined(__i386__)
-#  include "bionic_atomic_x86.h"
-#elif defined(__mips__)
-#  include "bionic_atomic_mips.h"
-#else
-#  include "bionic_atomic_gcc_builtin.h"
-#endif
-
-#define ANDROID_MEMBAR_FULL  __bionic_memory_barrier
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // BIONIC_ATOMIC_INLINE_H
diff --git a/libc/private/bionic_atomic_mips.h b/libc/private/bionic_atomic_mips.h
deleted file mode 100644
index 83f75fe..0000000
--- a/libc/private/bionic_atomic_mips.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_MIPS_H
-#define BIONIC_ATOMIC_MIPS_H
-
-/* Define a full memory barrier, this is only needed if we build the
- * platform for a multi-core device.
- */
-
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __asm__ __volatile__ ( "sync" : : : "memory" );
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1: move %[status], %[new_value]  \n"
-                        "   ll %[prev], 0(%[ptr])         \n"
-                        "   bne %[old_value], %[prev], 2f \n"
-                        "   sc   %[status], 0(%[ptr])     \n"
-                        "   beqz %[status], 1b            \n"
-                        "2:                               \n"
-                        : [prev]"=&r"(prev), [status]"=&r"(status), "+m"(*ptr)
-                        : [new_value]"r"(new_value), [old_value]"r"(old_value), [ptr]"r"(ptr)
-                        : "memory");
-  return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1:  move %[status], %[new_value] \n"
-                        "    ll %[prev], 0(%[ptr])        \n"
-                        "    sc %[status], 0(%[ptr])      \n"
-                        "    beqz %[status], 1b           \n"
-                        : [prev]"=&r"(prev), [status]"=&r"(status), "+m"(*ptr)
-                        : [ptr]"r"(ptr), [new_value]"r"(new_value)
-                        : "memory");
-  return prev;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int32_t prev, status;
-  __asm__ __volatile__ ("1:  ll %[prev], 0(%[ptr])        \n"
-                        "    addiu %[status], %[prev], -1 \n"
-                        "    sc   %[status], 0(%[ptr])    \n"
-                        "    beqz %[status], 1b           \n"
-                        : [prev]"=&r" (prev), [status]"=&r"(status), "+m" (*ptr)
-                        : [ptr]"r"(ptr)
-                        : "memory");
-  return prev;
-}
-
-#endif /* BIONIC_ATOMIC_MIPS_H */
diff --git a/libc/private/bionic_atomic_x86.h b/libc/private/bionic_atomic_x86.h
deleted file mode 100644
index e63df93..0000000
--- a/libc/private/bionic_atomic_x86.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-#ifndef BIONIC_ATOMIC_X86_H
-#define BIONIC_ATOMIC_X86_H
-
-/* Define a full memory barrier, this is only needed if we build the
- * platform for a multi-core device.
- */
-__ATOMIC_INLINE__ void __bionic_memory_barrier() {
-  __asm__ __volatile__ ( "mfence" : : : "memory" );
-}
-
-/* Compare-and-swap, without any explicit barriers. Note that this function
- * returns 0 on success, and 1 on failure. The opposite convention is typically
- * used on other platforms.
- */
-__ATOMIC_INLINE__ int __bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr) {
-    int32_t prev;
-    __asm__ __volatile__ ("lock; cmpxchgl %1, %2"
-                          : "=a" (prev)
-                          : "q" (new_value), "m" (*ptr), "0" (old_value)
-                          : "memory");
-    return prev != old_value;
-}
-
-/* Swap, without any explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_swap(int32_t new_value, volatile int32_t *ptr) {
-  __asm__ __volatile__ ("xchgl %1, %0"
-                        : "=r" (new_value)
-                        : "m" (*ptr), "0" (new_value)
-                        : "memory");
-  return new_value;
-}
-
-/* Atomic decrement, without explicit barriers. */
-__ATOMIC_INLINE__ int32_t __bionic_atomic_dec(volatile int32_t* ptr) {
-  int increment = -1;
-  __asm__ __volatile__ ("lock; xaddl %0, %1"
-                        : "+r" (increment), "+m" (*ptr)
-                        : : "memory");
-  /* increment now holds the old value of *ptr */
-  return increment;
-}
-
-#endif /* BIONIC_ATOMIC_X86_H */
diff --git a/libc/private/bionic_futex.h b/libc/private/bionic_futex.h
index bd2bd36..401577a 100644
--- a/libc/private/bionic_futex.h
+++ b/libc/private/bionic_futex.h
@@ -34,6 +34,7 @@
 #include <stddef.h>
 #include <sys/cdefs.h>
 #include <sys/syscall.h>
+#include <unistd.h>
 
 __BEGIN_DECLS
 
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 944f957..414d171 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -67,49 +67,54 @@
   TLS_SLOT_STACK_GUARD = 5, // GCC requires this specific slot for x86.
   TLS_SLOT_DLERROR,
 
-  TLS_SLOT_FIRST_USER_SLOT // Must come last!
+  BIONIC_TLS_SLOTS // Must come last!
 };
 
 /*
- * There are two kinds of slot used internally by bionic --- there are the well-known slots
- * enumerated above, and then there are those that are allocated during startup by calls to
- * pthread_key_create; grep for GLOBAL_INIT_THREAD_LOCAL_BUFFER to find those. We need to manually
- * maintain that second number, but pthread_test will fail if we forget.
- * Following are current pthread keys used internally:
- *  basename               libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  dirname                libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  uselocale              libc
- *  getmntent_mntent       libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  getmntent_strings      libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  ptsname                libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  ttyname                libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  strerror               libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  strsignal              libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  passwd                 libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  group                  libc (GLOBAL_INIT_THREAD_LOCAL_BUFFER)
- *  _res_key               libc
+ * Bionic uses some pthread keys internally. All pthread keys used internally
+ * should be created in constructors, except for keys that may be used in or
+ * before constructors.
+ *
+ * We need to manually maintain the count of pthread keys used internally, but
+ * pthread_test should fail if we forget.
+ *
+ * These are the pthread keys currently used internally by libc:
+ *
+ *  basename               libc (ThreadLocalBuffer)
+ *  dirname                libc (ThreadLocalBuffer)
+ *  uselocale              libc (can be used in constructors)
+ *  getmntent_mntent       libc (ThreadLocalBuffer)
+ *  getmntent_strings      libc (ThreadLocalBuffer)
+ *  ptsname                libc (ThreadLocalBuffer)
+ *  ttyname                libc (ThreadLocalBuffer)
+ *  strerror               libc (ThreadLocalBuffer)
+ *  strsignal              libc (ThreadLocalBuffer)
+ *  passwd                 libc (ThreadLocalBuffer)
+ *  group                  libc (ThreadLocalBuffer)
+ *  _res_key               libc (constructor in BSD code)
+ */
+
+#define LIBC_PTHREAD_KEY_RESERVED_COUNT 12
+
+#if defined(USE_JEMALLOC)
+/* Following are current pthread keys used internally by jemalloc:
  * je_thread_allocated_tsd jemalloc
  * je_arenas_tsd           jemalloc
  * je_tcache_tsd           jemalloc
  * je_tcache_enabled_tsd   jemalloc
  * je_quarantine_tsd       jemalloc
- *
  */
-
-#define LIBC_TLS_RESERVED_SLOTS 12
-
-#if defined(USE_JEMALLOC)
-/* jemalloc uses 5 keys for itself. */
-#define BIONIC_TLS_RESERVED_SLOTS (LIBC_TLS_RESERVED_SLOTS + 5)
+#define JEMALLOC_PTHREAD_KEY_RESERVED_COUNT 5
+#define BIONIC_PTHREAD_KEY_RESERVED_COUNT (LIBC_PTHREAD_KEY_RESERVED_COUNT + JEMALLOC_PTHREAD_KEY_RESERVED_COUNT)
 #else
-#define BIONIC_TLS_RESERVED_SLOTS LIBC_TLS_RESERVED_SLOTS
+#define BIONIC_PTHREAD_KEY_RESERVED_COUNT LIBC_PTHREAD_KEY_RESERVED_COUNT
 #endif
 
 /*
- * Maximum number of elements in the TLS array.
- * This includes space for pthread keys and our own internal slots.
+ * Maximum number of pthread keys allocated.
+ * This includes pthread keys used internally and externally.
  */
-#define BIONIC_TLS_SLOTS (PTHREAD_KEYS_MAX + TLS_SLOT_FIRST_USER_SLOT + BIONIC_TLS_RESERVED_SLOTS)
+#define BIONIC_PTHREAD_KEY_COUNT (BIONIC_PTHREAD_KEY_RESERVED_COUNT + PTHREAD_KEYS_MAX)
 
 __END_DECLS
 
diff --git a/libc/stdio/fileext.h b/libc/stdio/fileext.h
index 209815a..6cacc0f 100644
--- a/libc/stdio/fileext.h
+++ b/libc/stdio/fileext.h
@@ -61,7 +61,11 @@
 	_UB(fp)._base = NULL; \
 	_UB(fp)._size = 0; \
 	WCIO_INIT(fp); \
-	_FLOCK(fp).value = __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE; \
+	pthread_mutexattr_t attr; \
+	pthread_mutexattr_init(&attr); \
+	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
+	pthread_mutex_init(&_FLOCK(fp), &attr); \
+	pthread_mutexattr_destroy(&attr); \
 	_EXT(fp)->_stdio_handles_locking = true; \
 } while (0)
 
diff --git a/libc/stdio/fread.c b/libc/stdio/fread.c
index bac8dad..f3f0127 100644
--- a/libc/stdio/fread.c
+++ b/libc/stdio/fread.c
@@ -102,6 +102,12 @@
 		 * avoid copying it through the buffer?
 		 */
 		if (total > (size_t) fp->_bf._size) {
+			/*
+			 * Make sure that fseek doesn't think it can
+			 * reuse the buffer since we are going to read
+			 * directly from the file descriptor.
+			 */
+			fp->_flags |= __SMOD;
 			break;
 		}
 
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 7e11418..4d0afe2 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -56,12 +56,6 @@
 """
 
 
-function_alias = """
-    .globl %(alias)s
-    .equ %(alias)s, %(func)s
-"""
-
-
 #
 # ARM assembler templates for each syscall stub
 #
@@ -284,7 +278,7 @@
     # Add any aliases for this syscall.
     aliases = syscall["aliases"]
     for alias in aliases:
-        stub += function_alias % { "func" : syscall["func"], "alias" : alias }
+        stub += "\nALIAS_SYMBOL(%s, %s)\n" % (alias, syscall["func"])
 
     # Use hidden visibility on LP64 for any functions beginning with underscores.
     # Force hidden visibility for any functions which begin with 3 underscores
diff --git a/libc/upstream-openbsd/lib/libc/string/memchr.c b/libc/upstream-openbsd/lib/libc/string/memchr.c
new file mode 100644
index 0000000..4573e3c
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/memchr.c
@@ -0,0 +1,48 @@
+/*	$OpenBSD: memchr.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <string.h>
+
+void *
+memchr(const void *s, int c, size_t n)
+{
+	if (n != 0) {
+		const unsigned char *p = s;
+
+		do {
+			if (*p++ == (unsigned char)c)
+				return ((void *)(p - 1));
+		} while (--n != 0);
+	}
+	return (NULL);
+}
diff --git a/libc/upstream-openbsd/lib/libc/string/memrchr.c b/libc/upstream-openbsd/lib/libc/string/memrchr.c
new file mode 100644
index 0000000..bd27ebc
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/string/memrchr.c
@@ -0,0 +1,38 @@
+/*	$OpenBSD: memrchr.c,v 1.2 2007/11/27 16:22:12 martynas Exp $	*/
+
+/*
+ * Copyright (c) 2007 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <string.h>
+
+/*
+ * Reverse memchr()
+ * Find the last occurrence of 'c' in the buffer 's' of size 'n'.
+ */
+void *
+memrchr(const void *s, int c, size_t n)
+{
+	const unsigned char *cp;
+
+	if (n != 0) {
+		cp = (unsigned char *)s + n;
+		do {
+			if (*(--cp) == (unsigned char)c)
+				return((void *)cp);
+		} while (--n != 0);
+	}
+	return(NULL);
+}
diff --git a/libc/version_script.txt b/libc/version_script.txt
new file mode 100644
index 0000000..349a2fc
--- /dev/null
+++ b/libc/version_script.txt
@@ -0,0 +1,17 @@
+LIBC {
+  global:
+    /* Work-around for http://b/20065774. */
+    __clear_cache;
+    _Unwind_Backtrace;
+    _Unwind_GetIP;
+  local:
+    _ZSt7nothrow;
+    _ZdaPv;
+    _ZdaPvRKSt9nothrow_t;
+    _ZdlPv;
+    _ZdlPvRKSt9nothrow_t;
+    _Znaj;
+    _ZnajRKSt9nothrow_t;
+    _Znwj;
+    _ZnwjRKSt9nothrow_t;
+};
diff --git a/libc/zoneinfo/tzdata b/libc/zoneinfo/tzdata
index fc6c5ba..b9a6621 100644
--- a/libc/zoneinfo/tzdata
+++ b/libc/zoneinfo/tzdata
Binary files differ
diff --git a/libm/Android.mk b/libm/Android.mk
index dc6c704..6472a15 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -21,19 +21,14 @@
     upstream-freebsd/lib/msun/bsdsrc/b_tgamma.c \
     upstream-freebsd/lib/msun/src/catrig.c \
     upstream-freebsd/lib/msun/src/catrigf.c \
-    upstream-freebsd/lib/msun/src/e_acos.c \
     upstream-freebsd/lib/msun/src/e_acosf.c \
     upstream-freebsd/lib/msun/src/e_acosh.c \
     upstream-freebsd/lib/msun/src/e_acoshf.c \
-    upstream-freebsd/lib/msun/src/e_asin.c \
     upstream-freebsd/lib/msun/src/e_asinf.c \
-    upstream-freebsd/lib/msun/src/e_atan2.c \
     upstream-freebsd/lib/msun/src/e_atan2f.c \
     upstream-freebsd/lib/msun/src/e_atanh.c \
     upstream-freebsd/lib/msun/src/e_atanhf.c \
-    upstream-freebsd/lib/msun/src/e_cosh.c \
     upstream-freebsd/lib/msun/src/e_coshf.c \
-    upstream-freebsd/lib/msun/src/e_exp.c \
     upstream-freebsd/lib/msun/src/e_expf.c \
     upstream-freebsd/lib/msun/src/e_fmod.c \
     upstream-freebsd/lib/msun/src/e_fmodf.c \
@@ -41,7 +36,6 @@
     upstream-freebsd/lib/msun/src/e_gammaf.c \
     upstream-freebsd/lib/msun/src/e_gammaf_r.c \
     upstream-freebsd/lib/msun/src/e_gamma_r.c \
-    upstream-freebsd/lib/msun/src/e_hypot.c \
     upstream-freebsd/lib/msun/src/e_hypotf.c \
     upstream-freebsd/lib/msun/src/e_j0.c \
     upstream-freebsd/lib/msun/src/e_j0f.c \
@@ -53,13 +47,10 @@
     upstream-freebsd/lib/msun/src/e_lgammaf.c \
     upstream-freebsd/lib/msun/src/e_lgammaf_r.c \
     upstream-freebsd/lib/msun/src/e_lgamma_r.c \
-    upstream-freebsd/lib/msun/src/e_log10.c \
     upstream-freebsd/lib/msun/src/e_log10f.c \
     upstream-freebsd/lib/msun/src/e_log2.c \
     upstream-freebsd/lib/msun/src/e_log2f.c \
-    upstream-freebsd/lib/msun/src/e_log.c \
     upstream-freebsd/lib/msun/src/e_logf.c \
-    upstream-freebsd/lib/msun/src/e_pow.c \
     upstream-freebsd/lib/msun/src/e_powf.c \
     upstream-freebsd/lib/msun/src/e_remainder.c \
     upstream-freebsd/lib/msun/src/e_remainderf.c \
@@ -67,10 +58,7 @@
     upstream-freebsd/lib/msun/src/e_rem_pio2f.c \
     upstream-freebsd/lib/msun/src/e_scalb.c \
     upstream-freebsd/lib/msun/src/e_scalbf.c \
-    upstream-freebsd/lib/msun/src/e_sinh.c \
     upstream-freebsd/lib/msun/src/e_sinhf.c \
-    upstream-freebsd/lib/msun/src/e_sqrt.c \
-    upstream-freebsd/lib/msun/src/e_sqrtf.c \
     upstream-freebsd/lib/msun/src/imprecise.c \
     upstream-freebsd/lib/msun/src/k_cos.c \
     upstream-freebsd/lib/msun/src/k_cosf.c \
@@ -83,17 +71,13 @@
     upstream-freebsd/lib/msun/src/k_tanf.c \
     upstream-freebsd/lib/msun/src/s_asinh.c \
     upstream-freebsd/lib/msun/src/s_asinhf.c \
-    upstream-freebsd/lib/msun/src/s_atan.c \
     upstream-freebsd/lib/msun/src/s_atanf.c \
     upstream-freebsd/lib/msun/src/s_carg.c \
     upstream-freebsd/lib/msun/src/s_cargf.c \
     upstream-freebsd/lib/msun/src/s_cargl.c \
-    upstream-freebsd/lib/msun/src/s_cbrt.c \
     upstream-freebsd/lib/msun/src/s_cbrtf.c \
     upstream-freebsd/lib/msun/src/s_ccosh.c \
     upstream-freebsd/lib/msun/src/s_ccoshf.c \
-    upstream-freebsd/lib/msun/src/s_ceil.c \
-    upstream-freebsd/lib/msun/src/s_ceilf.c \
     upstream-freebsd/lib/msun/src/s_cexp.c \
     upstream-freebsd/lib/msun/src/s_cexpf.c \
     upstream-freebsd/lib/msun/src/s_cimag.c \
@@ -104,7 +88,6 @@
     upstream-freebsd/lib/msun/src/s_conjl.c \
     upstream-freebsd/lib/msun/src/s_copysign.c \
     upstream-freebsd/lib/msun/src/s_copysignf.c \
-    upstream-freebsd/lib/msun/src/s_cos.c \
     upstream-freebsd/lib/msun/src/s_cosf.c \
     upstream-freebsd/lib/msun/src/s_cproj.c \
     upstream-freebsd/lib/msun/src/s_cprojf.c \
@@ -123,17 +106,12 @@
     upstream-freebsd/lib/msun/src/s_erff.c \
     upstream-freebsd/lib/msun/src/s_exp2.c \
     upstream-freebsd/lib/msun/src/s_exp2f.c \
-    upstream-freebsd/lib/msun/src/s_expm1.c \
     upstream-freebsd/lib/msun/src/s_expm1f.c \
     upstream-freebsd/lib/msun/src/s_fabs.c \
     upstream-freebsd/lib/msun/src/s_fabsf.c \
     upstream-freebsd/lib/msun/src/s_fdim.c \
     upstream-freebsd/lib/msun/src/s_finite.c \
     upstream-freebsd/lib/msun/src/s_finitef.c \
-    upstream-freebsd/lib/msun/src/s_floor.c \
-    upstream-freebsd/lib/msun/src/s_floorf.c \
-    upstream-freebsd/lib/msun/src/s_fma.c \
-    upstream-freebsd/lib/msun/src/s_fmaf.c \
     upstream-freebsd/lib/msun/src/s_fmax.c \
     upstream-freebsd/lib/msun/src/s_fmaxf.c \
     upstream-freebsd/lib/msun/src/s_fmin.c \
@@ -142,16 +120,11 @@
     upstream-freebsd/lib/msun/src/s_frexpf.c \
     upstream-freebsd/lib/msun/src/s_ilogb.c \
     upstream-freebsd/lib/msun/src/s_ilogbf.c \
-    upstream-freebsd/lib/msun/src/s_llrint.c \
-    upstream-freebsd/lib/msun/src/s_llrintf.c \
     upstream-freebsd/lib/msun/src/s_llround.c \
     upstream-freebsd/lib/msun/src/s_llroundf.c \
-    upstream-freebsd/lib/msun/src/s_log1p.c \
     upstream-freebsd/lib/msun/src/s_log1pf.c \
     upstream-freebsd/lib/msun/src/s_logb.c \
     upstream-freebsd/lib/msun/src/s_logbf.c \
-    upstream-freebsd/lib/msun/src/s_lrint.c \
-    upstream-freebsd/lib/msun/src/s_lrintf.c \
     upstream-freebsd/lib/msun/src/s_lround.c \
     upstream-freebsd/lib/msun/src/s_lroundf.c \
     upstream-freebsd/lib/msun/src/s_modf.c \
@@ -162,8 +135,6 @@
     upstream-freebsd/lib/msun/src/s_nextafterf.c \
     upstream-freebsd/lib/msun/src/s_remquo.c \
     upstream-freebsd/lib/msun/src/s_remquof.c \
-    upstream-freebsd/lib/msun/src/s_rint.c \
-    upstream-freebsd/lib/msun/src/s_rintf.c \
     upstream-freebsd/lib/msun/src/s_round.c \
     upstream-freebsd/lib/msun/src/s_roundf.c \
     upstream-freebsd/lib/msun/src/s_scalbln.c \
@@ -172,15 +143,10 @@
     upstream-freebsd/lib/msun/src/s_signgam.c \
     upstream-freebsd/lib/msun/src/s_significand.c \
     upstream-freebsd/lib/msun/src/s_significandf.c \
-    upstream-freebsd/lib/msun/src/s_sin.c \
     upstream-freebsd/lib/msun/src/s_sinf.c \
-    upstream-freebsd/lib/msun/src/s_tan.c \
     upstream-freebsd/lib/msun/src/s_tanf.c \
-    upstream-freebsd/lib/msun/src/s_tanh.c \
     upstream-freebsd/lib/msun/src/s_tanhf.c \
     upstream-freebsd/lib/msun/src/s_tgammaf.c \
-    upstream-freebsd/lib/msun/src/s_trunc.c \
-    upstream-freebsd/lib/msun/src/s_truncf.c \
     upstream-freebsd/lib/msun/src/w_cabs.c \
     upstream-freebsd/lib/msun/src/w_cabsf.c \
     upstream-freebsd/lib/msun/src/w_cabsl.c \
@@ -261,23 +227,251 @@
 LOCAL_SRC_FILES += \
     signbit.c \
 
+# Arch specific optimizations.
+
+# -----------------------------------------------------------------------------
+# arm
+# -----------------------------------------------------------------------------
 LOCAL_SRC_FILES_arm += \
     arm/fenv.c \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
 
+# s_floor.S requires neon instructions.
+ifdef TARGET_2ND_ARCH
+arch_variant := $(TARGET_2ND_ARCH_VARIANT)
+else
+arch_variant := $(TARGET_ARCH_VARIANT)
+endif
+
+# Use the C version on armv7-a since it doesn't support neon instructions.
+ifeq ($(arch_variant),armv7-a)
+LOCAL_SRC_FILES_arm += \
+    upstream-freebsd/lib/msun/src/e_sqrt.c \
+    upstream-freebsd/lib/msun/src/e_sqrtf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+
+else
+LOCAL_SRC_FILES_arm += \
+    arm/e_sqrt.S \
+    arm/e_sqrtf.S \
+    arm/s_floor.S \
+
+endif
+
+# -----------------------------------------------------------------------------
+# arm64
+# -----------------------------------------------------------------------------
 LOCAL_SRC_FILES_arm64 += \
+    arm64/ceil.S \
     arm64/fenv.c \
+    arm64/fma.S \
+    arm64/floor.S \
+    arm64/lrint.S \
+    arm64/rint.S \
+    arm64/sqrt.S \
+    arm64/trunc.S \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
 
-LOCAL_SRC_FILES_mips += \
+# -----------------------------------------------------------------------------
+# mips
+# -----------------------------------------------------------------------------
+libm_mips_arch_files := \
     mips/fenv.c \
+    upstream-freebsd/lib/msun/src/e_acos.c \
+    upstream-freebsd/lib/msun/src/e_asin.c \
+    upstream-freebsd/lib/msun/src/e_atan2.c \
+    upstream-freebsd/lib/msun/src/e_cosh.c \
+    upstream-freebsd/lib/msun/src/e_exp.c \
+    upstream-freebsd/lib/msun/src/e_hypot.c \
+    upstream-freebsd/lib/msun/src/e_log.c \
+    upstream-freebsd/lib/msun/src/e_log10.c \
+    upstream-freebsd/lib/msun/src/e_pow.c \
+    upstream-freebsd/lib/msun/src/e_sinh.c \
+    upstream-freebsd/lib/msun/src/e_sqrt.c \
+    upstream-freebsd/lib/msun/src/e_sqrtf.c \
+    upstream-freebsd/lib/msun/src/s_atan.c \
+    upstream-freebsd/lib/msun/src/s_cbrt.c \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_cos.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_expm1.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_log1p.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    upstream-freebsd/lib/msun/src/s_sin.c \
+    upstream-freebsd/lib/msun/src/s_tan.c \
+    upstream-freebsd/lib/msun/src/s_tanh.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
 
-LOCAL_SRC_FILES_mips64 += \
-    mips/fenv.c \
+LOCAL_SRC_FILES_mips += $(libm_mips_arch_files)
+LOCAL_SRC_FILES_mips64 += $(libm_mips_arch_files)
 
+# -----------------------------------------------------------------------------
+# x86
+# -----------------------------------------------------------------------------
 LOCAL_SRC_FILES_x86 += \
     i387/fenv.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    x86/sqrt.S \
+    x86/sqrtf.S \
+    x86/e_acos.S \
+    x86/e_asin.S \
+    x86/e_atan2.S \
+    x86/e_cosh.S \
+    x86/e_exp.S \
+    x86/e_hypot.S \
+    x86/e_log10.S \
+    x86/e_log.S \
+    x86/e_pow.S \
+    x86/e_sinh.S \
+    x86/libm_reduce_pi04l.S \
+    x86/libm_sincos_huge.S \
+    x86/libm_tancot_huge.S \
+    x86/s_atan.S \
+    x86/s_cbrt.S \
+    x86/s_cos.S \
+    x86/s_expm1.S \
+    x86/s_log1p.S \
+    x86/s_sin.S \
+    x86/s_tanh.S \
+    x86/s_tan.S \
 
+ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
+LOCAL_SRC_FILES_x86 += \
+    x86/ceil.S \
+    x86/ceilf.S \
+    x86/floor.S \
+    x86/floorf.S \
+    x86/trunc.S \
+    x86/truncf.S \
+
+else
+LOCAL_SRC_FILES_x86 += \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+endif
+
+# -----------------------------------------------------------------------------
+# x86_64
+# -----------------------------------------------------------------------------
 LOCAL_SRC_FILES_x86_64 += \
     amd64/fenv.c \
+    upstream-freebsd/lib/msun/src/s_fma.c \
+    upstream-freebsd/lib/msun/src/s_fmaf.c \
+    upstream-freebsd/lib/msun/src/s_llrint.c \
+    upstream-freebsd/lib/msun/src/s_llrintf.c \
+    upstream-freebsd/lib/msun/src/s_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.c \
+    upstream-freebsd/lib/msun/src/s_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
+    x86_64/sqrt.S \
+    x86_64/sqrtf.S \
+    x86_64/e_acos.S \
+    x86_64/e_asin.S \
+    x86_64/e_atan2.S \
+    x86_64/e_cosh.S \
+    x86_64/e_exp.S \
+    x86_64/e_hypot.S \
+    x86_64/e_log10.S \
+    x86_64/e_log.S \
+    x86_64/e_pow.S \
+    x86_64/e_sinh.S \
+    x86_64/s_atan.S \
+    x86_64/s_cbrt.S \
+    x86_64/s_cos.S \
+    x86_64/s_expm1.S \
+    x86_64/s_log1p.S \
+    x86_64/s_sin.S \
+    x86_64/s_tanh.S \
+    x86_64/s_tan.S \
+
+ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
+LOCAL_SRC_FILES_x86_64 += \
+    x86_64/ceil.S \
+    x86_64/ceilf.S \
+    x86_64/floor.S \
+    x86_64/floorf.S \
+    x86_64/trunc.S \
+    x86_64/truncf.S \
+
+else
+LOCAL_SRC_FILES_x86_64 += \
+    upstream-freebsd/lib/msun/src/s_ceil.c \
+    upstream-freebsd/lib/msun/src/s_ceilf.c \
+    upstream-freebsd/lib/msun/src/s_floor.c \
+    upstream-freebsd/lib/msun/src/s_floorf.c \
+    upstream-freebsd/lib/msun/src/s_trunc.c \
+    upstream-freebsd/lib/msun/src/s_truncf.c \
+
+endif
 
 LOCAL_C_INCLUDES_x86 += $(LOCAL_PATH)/i387
 
@@ -285,7 +479,6 @@
 LOCAL_C_INCLUDES_64 += $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
 
 LOCAL_CLANG := $(libm_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 LOCAL_ARM_MODE := arm
 LOCAL_CFLAGS := \
     -DFLT_EVAL_METHOD=0 \
@@ -297,6 +490,9 @@
     -Wno-unknown-pragmas \
     -fvisibility=hidden \
 
+LOCAL_ASFLAGS := \
+    -Ibionic/libc \
+
 # Workaround the GCC "(long)fn -> lfn" optimization bug which will result in
 # self recursions for lrint, lrintf, and lrintl.
 # BUG: 14225968
@@ -317,9 +513,11 @@
 # -----------------------------------------------------------------------------
 include $(CLEAR_VARS)
 
+# TODO: This is to work around b/19059885. Remove after root cause is fixed
+LOCAL_LDFLAGS_arm := -Wl,--hash-style=sysv
+
 LOCAL_MODULE := libm
 LOCAL_CLANG := $(libm_clang)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 LOCAL_SYSTEM_SHARED_LIBRARIES := libc
 LOCAL_WHOLE_STATIC_LIBRARIES := libm
 
diff --git a/libm/arm/e_sqrt.S b/libm/arm/e_sqrt.S
new file mode 100644
index 0000000..17312f5
--- /dev/null
+++ b/libm/arm/e_sqrt.S
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <float.h>
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+    vmov.f64    d0, r0, r1
+    vsqrt.f64   d0, d0
+    vmov.f64    r0, r1, d0
+    bx          lr
+END(sqrt)
+
+ALIAS_SYMBOL(sqrtl, sqrt);
diff --git a/libm/arm/e_sqrtf.S b/libm/arm/e_sqrtf.S
new file mode 100644
index 0000000..ddefb22
--- /dev/null
+++ b/libm/arm/e_sqrtf.S
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johhnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+    vmov.f32    s0, r0
+    vsqrt.f32   s0, s0
+    vmov.f32    r0, s0
+    bx          lr
+END(sqrtf)
diff --git a/libm/arm/s_floor.S b/libm/arm/s_floor.S
new file mode 100644
index 0000000..3af8f76
--- /dev/null
+++ b/libm/arm/s_floor.S
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+ * Johnny Qiu <joqiu@nvidia.com>
+ * Shu Zhang <chazhang@nvidia.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <float.h>
+#include <private/bionic_asm.h>
+
+ENTRY(floor)    /* x in r0, r1 */
+
+        and             r3, r1, #0x80000000     /* sign(x) */
+        bic             r1, r1, #0x80000000     /* x = abs(x) */
+
+        /* extract exp of x */
+        lsr             r2, r1, #20
+        sub             r2, r2, #0x3fc
+        subs            r2, r2, #0x3            /* r2 <- exp */
+
+        /* |x| < 1.0? */
+        blt             .Lx_lt_one
+
+        /* x < 0? */
+        cmp             r3, #0
+        bne             .Lclr_frac_neg
+
+        /* |x| <= 2^20? */
+        cmp             r2, #20
+        ble             .Lclr_frac_r1
+
+        /* |x| < 2^52? */
+        cmp             r2, #52
+        blt             .Lclr_frac_r0
+
+        /* return x */
+        bx              lr
+
+.Lclr_frac_r1:
+        rsb             r2, r2, #20
+        lsr             r1, r1, r2
+        lsl             r1, r1, r2
+        mov             r0, #0
+        bx              lr
+
+.Lclr_frac_r0:
+        rsb             r2, r2, #52
+        lsr             r0, r0, r2
+        lsl             r0, r0, r2
+        bx              lr
+
+.Lclr_frac_neg:
+        /* |x| <= 2^20? */
+        cmp             r2, #20
+        ble             .Lclr_frac_r1_neg
+
+        /* |x| < 2^52? */
+        cmp             r2, #52
+        blt             .Lclr_frac_r0_neg
+
+        /* return x */
+        orr             r1, r1, #0x80000000
+        bx              lr
+
+.Lclr_frac_r1_neg:
+        rsb             r2, r2, #20
+        mov             r3, #1
+        lsl             r3, r3, r2
+        sub             r3, r3, #1
+        and             r3, r1, r3
+        orr             r3, r3, r0
+        lsr             r1, r1, r2
+        lsl             r1, r1, r2
+        mov             r0, #0
+        b               .Lreturn_x_neg
+
+.Lclr_frac_r0_neg:
+        rsb             r2, r2, #52
+        mov             r3, #1
+        lsl             r3, r3, r2
+        sub             r3, r3, #1
+        and             r3, r0, r3
+        lsr             r0, r0, r2
+        lsl             r0, r0, r2
+        b               .Lreturn_x_neg
+
+.Lx_lt_one:
+        /* x == +-0? */
+        cmp             r0, #0
+        cmpeq           r1, #0
+        orreq           r1, r1, r3
+        bxeq            lr
+
+        /* (x > 0) ? 0 : -1 */
+        mov             r1, #0x00100000
+        mov             r0, #0
+        cmp             r3, #0
+        movne           r1, #0xc0000000
+        sub             r1, r1, #0x00100000
+        bx              lr
+
+.Lreturn_x_neg:
+        cmp             r3, #0
+        orr             r1, r1, #0x80000000
+        bxeq            lr
+
+        vmov            d16, r0, r1
+        vmov.f64        d18, #1.0
+        vsub.f64        d16, d16, d18
+        vmov            r0, r1, d16
+        bx              lr
+
+END(floor)
+
+ALIAS_SYMBOL(floorl, floor);
diff --git a/libm/arm64/ceil.S b/libm/arm64/ceil.S
new file mode 100644
index 0000000..006c988
--- /dev/null
+++ b/libm/arm64/ceil.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceil)
+  frintP d0, d0
+  ret
+END(ceil)
+
+ENTRY(ceilf)
+  frintP s0, s0
+  ret
+END(ceilf)
diff --git a/libm/arm64/floor.S b/libm/arm64/floor.S
new file mode 100644
index 0000000..2d792e5
--- /dev/null
+++ b/libm/arm64/floor.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(floor)
+  frintM d0, d0
+  ret
+END(floor)
+
+ENTRY(floorf)
+  frintM s0, s0
+  ret
+END(floorf)
diff --git a/libm/arm64/fma.S b/libm/arm64/fma.S
new file mode 100644
index 0000000..e64e807
--- /dev/null
+++ b/libm/arm64/fma.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(fma)
+  fmadd d0, d0, d1, d2
+  ret
+END(fma)
+
+ENTRY(fmaf)
+  fmadd s0, s0, s1, s2
+  ret
+END(fmaf)
diff --git a/libm/arm64/lrint.S b/libm/arm64/lrint.S
new file mode 100644
index 0000000..d642759
--- /dev/null
+++ b/libm/arm64/lrint.S
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(lrint)
+  frintX d0, d0
+  fcvtzs x0, d0
+  ret
+END(lrint)
+
+ENTRY(lrintf)
+  frintX s0, s0
+  fcvtzs x0, s0
+  ret
+END(lrintf)
+
+// sizeof(long) and sizeof(long long) are the same for aarch64
+ALIAS_SYMBOL(llrint, lrint);
+
+ALIAS_SYMBOL(llrintf, lrintf);
diff --git a/libm/arm64/rint.S b/libm/arm64/rint.S
new file mode 100644
index 0000000..0820c22
--- /dev/null
+++ b/libm/arm64/rint.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(rint)
+  frintX d0, d0
+  ret
+END(rint)
+
+ENTRY(rintf)
+  frintX s0, s0
+  ret
+END(rintf)
diff --git a/libm/arm64/sqrt.S b/libm/arm64/sqrt.S
new file mode 100644
index 0000000..fe0020b
--- /dev/null
+++ b/libm/arm64/sqrt.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+  fsqrt d0, d0
+  ret
+END(sqrt)
+
+ENTRY(sqrtf)
+  fsqrt s0, s0
+  ret
+END(sqrtf)
diff --git a/libm/arm64/trunc.S b/libm/arm64/trunc.S
new file mode 100644
index 0000000..329c08d
--- /dev/null
+++ b/libm/arm64/trunc.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2015, 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.
+ */
+
+#include <private/bionic_asm.h>
+
+ENTRY(trunc)
+  frintZ d0, d0
+  ret
+END(trunc)
+
+ENTRY(truncf)
+  frintZ s0, s0
+  ret
+END(truncf)
diff --git a/libm/x86/ceil.S b/libm/x86/ceil.S
new file mode 100644
index 0000000..6302037
--- /dev/null
+++ b/libm/x86/ceil.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceil)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x2,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(ceil)
+
+ALIAS_SYMBOL(ceill, ceil);
diff --git a/libm/x86/ceilf.S b/libm/x86/ceilf.S
new file mode 100644
index 0000000..51eb440
--- /dev/null
+++ b/libm/x86/ceilf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceilf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x2,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(ceilf)
diff --git a/libm/x86/e_acos.S b/libm/x86/e_acos.S
new file mode 100644
index 0000000..fa61853
--- /dev/null
+++ b/libm/x86/e_acos.S
@@ -0,0 +1,1929 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute acos(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//       asin(r) evaluated as a polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
+//              evaluate asin(s) as 13-degree polynomial
+//
+//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
+//  asin(q) is evaluated as 13-degree polynomial
+//      q^2=(1-|s|)/2 is obtained in advance
+//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//
+// Special cases:
+//  acos(NaN) = quiet NaN, and raise invalid exception
+//  acos(INF) = QNaN and raise invalid exception
+//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
+//  acos(1) = +0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function	
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret       
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  acos
+ENTRY(acos)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 48(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     6048(%ebx), %xmm4
+        movsd     6080(%ebx), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     6064(%ebx), %xmm2
+        movapd    %xmm0, %xmm1
+        movsd     %xmm0, 8(%esp)
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movapd    %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        movsd     3840(%ebx,%edx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        movapd    (%ebx,%edx,4), %xmm4
+        movapd    %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movapd    %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm7
+        movsd     5976(%ebx), %xmm0
+        movsd     5960(%ebx), %xmm5
+        subsd     %xmm3, %xmm1
+        psrlq     $63, %xmm2
+        movapd    %xmm1, %xmm3
+        psllq     $63, %xmm2
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm2, %xmm2
+        movsd     5968(%ebx), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm3, %xmm5
+        subpd     5888(%ebx), %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm0
+        subsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        subl      $955, %eax
+        cmpl      $65, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        psrlq     $38, %xmm7
+        psllq     $38, %xmm7
+        pmovmskb  %xmm0, %eax
+        andnpd    %xmm0, %xmm4
+        subsd     %xmm7, %xmm1
+        movapd    %xmm7, %xmm6
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        orpd      %xmm4, %xmm5
+        subsd     %xmm7, %xmm3
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm3, %xmm4
+        subsd     %xmm0, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andl      $128, %eax
+        shrl      $7, %eax
+        negl      %eax
+        movapd    %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        movd      %eax, %xmm3
+        pshufd    $0, %xmm3, %xmm3
+        subl      $65216, %edx
+        addl      %edx, %edx
+        mulsd     3840(%ebx,%edx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        andpd     5904(%ebx), %xmm3
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     5960(%ebx), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     5976(%ebx), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     5968(%ebx), %xmm2
+        addpd     (%ebx,%edx,8), %xmm3
+        movapd    %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        movapd    %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        addsd     %xmm3, %xmm4
+        subsd     %xmm4, %xmm3
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        addsd     %xmm4, %xmm0
+        xorpd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        unpcklpd  %xmm0, %xmm0
+        movapd    5984(%ebx), %xmm6
+        unpcklpd  %xmm0, %xmm1
+        movapd    6000(%ebx), %xmm2
+        movapd    6016(%ebx), %xmm4
+        mulpd     %xmm0, %xmm0
+        movapd    5888(%ebx), %xmm5
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm0
+        movapd    %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        addpd     %xmm2, %xmm6
+        mulpd     %xmm0, %xmm4
+        mulsd     %xmm3, %xmm1
+        addpd     %xmm4, %xmm6
+        pshufd    $238, %xmm5, %xmm0
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        subsd     %xmm7, %xmm0
+        pshufd    $238, %xmm1, %xmm2
+        subsd     %xmm1, %xmm5
+        subsd     %xmm0, %xmm6
+        subsd     %xmm2, %xmm5
+        subsd     %xmm6, %xmm7
+        subsd     %xmm7, %xmm5
+        addsd     %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        subl      $15356, %eax
+        cmpl      $4, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm6, %xmm6
+        andpd     6048(%ebx), %xmm7
+        movsd     6096(%ebx), %xmm4
+        movapd    5984(%ebx), %xmm1
+        mulsd     %xmm4, %xmm7
+        movapd    6000(%ebx), %xmm2
+        subsd     %xmm7, %xmm4
+        movapd    6016(%ebx), %xmm3
+        pshufd    $68, %xmm4, %xmm7
+        sqrtsd    %xmm4, %xmm4
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm7, %xmm5
+        pextrw    $3, %xmm0, %eax
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm1, %xmm2
+        movsd     5936(%ebx), %xmm1
+        mulpd     %xmm7, %xmm3
+        cmpsd     $1, %xmm6, %xmm0
+        mulsd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm2
+        pshufd    $68, %xmm0, %xmm0
+        mulsd     %xmm7, %xmm2
+        andpd     5904(%ebx), %xmm0
+        mulpd     %xmm5, %xmm2
+        andpd     %xmm4, %xmm1
+        pshufd    $68, %xmm4, %xmm3
+        subsd     %xmm1, %xmm4
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm4, %xmm3
+        subsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm4
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm4, %xmm5
+        divsd     %xmm3, %xmm5
+        addpd     %xmm3, %xmm3
+        mulpd     %xmm3, %xmm2
+        pshufd    $238, %xmm2, %xmm4
+        addsd     %xmm0, %xmm2
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm0, %xmm0
+        addsd     %xmm4, %xmm2
+        addsd     %xmm5, %xmm2
+        addsd     %xmm3, %xmm2
+        addsd     %xmm2, %xmm0
+        xorpd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        addl      $261884, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_5.0.2
+        movd      %xmm7, %ecx
+        psrlq     $32, %xmm7
+        movd      %xmm7, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_6.0.2
+        movq      8(%esp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_6.0.2:
+        pextrw    $1, %xmm7, %edx
+        shrl      $15, %edx
+        negl      %edx
+        movd      %edx, %xmm7
+        pshufd    $0, %xmm7, %xmm7
+        movsd     5920(%ebx), %xmm2
+        movsd     5928(%ebx), %xmm0
+        andpd     %xmm7, %xmm2
+        andpd     %xmm7, %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     5888(%ebx), %xmm2
+        movsd     5896(%ebx), %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      48(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(acos)
+# -- End  acos
+
+# Start file scope ASM
+ALIAS_SYMBOL(acosl, acos);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	3217380693
+	.long	858993459
+	.long	3216192307
+	.long	3067833783
+	.long	3215383405
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	4294950912
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,6112
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_asin.S b/libm/x86/e_asin.S
new file mode 100644
index 0000000..5d7f331
--- /dev/null
+++ b/libm/x86/e_asin.S
@@ -0,0 +1,2003 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute asin(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//       asin(r) evaluated as polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: evaluate as 13-degree polynomial
+//
+//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
+//         use 17-degree polynomial, get error term
+//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
+//                 ( Q(1+eps)=sqrt(1-s^2) )
+//
+// Special cases:
+//  asin(NaN) = quiet NaN, and raise invalid exception
+//  asin(INF) = QNaN and raise invalid exception
+//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
+//  asin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  asin
+ENTRY(asin)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        stmxcsr   16(%esp)
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        cmpl      %edx, 16(%esp)
+        jne       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     5984(%ebx), %xmm4
+        movsd     6016(%ebx), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     6000(%ebx), %xmm2
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm0, %xmm1
+        movsd     %xmm0, 8(%esp)
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movapd    %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movapd    %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        movsd     3936(%ebx,%edx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        movapd    96(%ebx,%edx,4), %xmm4
+        movapd    %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movapd    %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm0
+        movsd     80(%ebx), %xmm7
+        movsd     64(%ebx), %xmm5
+        subsd     %xmm3, %xmm1
+        andpd     6064(%ebx), %xmm2
+        movapd    %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        movsd     72(%ebx), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm7
+        mulsd     %xmm3, %xmm5
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm6
+        mulsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm6
+        orpd      %xmm2, %xmm4
+        addsd     %xmm6, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_3.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_2.0.2:
+        subl      $955, %eax
+        cmpl      $67, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     5984(%ebx), %xmm0
+        andpd     6048(%ebx), %xmm7
+        movapd    %xmm0, %xmm1
+        movsd     6016(%ebx), %xmm4
+        movapd    %xmm7, %xmm6
+        subsd     %xmm7, %xmm1
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        subsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        subl      $65216, %edx
+        addl      %edx, %edx
+        mulsd     3936(%ebx,%edx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        movapd    6080(%ebx), %xmm3
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     64(%ebx), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     80(%ebx), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     72(%ebx), %xmm2
+        subpd     96(%ebx,%edx,8), %xmm3
+        movapd    %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        andl      $524288, %eax
+        shrl      $4, %eax
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        pinsrw    $3, %eax, %xmm6
+        addsd     %xmm5, %xmm0
+        movapd    %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm3
+        subsd     %xmm3, %xmm5
+        subsd     %xmm5, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_6.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm4
+        subsd     %xmm4, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_7.0.2
+        unpcklpd  %xmm7, %xmm7
+        movapd    (%ebx), %xmm1
+        movapd    %xmm7, %xmm6
+        movapd    16(%ebx), %xmm2
+        movapd    32(%ebx), %xmm4
+        mulpd     %xmm7, %xmm7
+        mulpd     %xmm7, %xmm6
+        mulpd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        movapd    %xmm6, %xmm3
+        mulsd     %xmm6, %xmm6
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm6
+        addpd     %xmm4, %xmm1
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        addsd     %xmm2, %xmm1
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_8.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_8.0.2:
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        subl      $15358, %eax
+        cmpl      $2, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     6032(%ebx), %xmm7
+        pshufd    $68, %xmm3, %xmm5
+        andpd     6032(%ebx), %xmm3
+        movapd    %xmm7, %xmm1
+        movsd     6016(%ebx), %xmm4
+        movapd    %xmm7, %xmm6
+        subsd     %xmm7, %xmm0
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm1
+        subsd     %xmm7, %xmm4
+        movapd    %xmm3, %xmm6
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm0, %xmm0
+        subsd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm6
+        addsd     %xmm5, %xmm5
+        subsd     %xmm3, %xmm4
+        movapd    (%ebx), %xmm2
+        pshufd    $238, %xmm5, %xmm3
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm5
+        pshufd    $238, %xmm3, %xmm7
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm6, %xmm5
+        addsd     %xmm5, %xmm4
+        pshufd    $238, %xmm7, %xmm6
+        divsd     %xmm3, %xmm4
+        movapd    48(%ebx), %xmm1
+        movapd    16(%ebx), %xmm5
+        movapd    32(%ebx), %xmm0
+        mulpd     %xmm7, %xmm7
+        movapd    %xmm6, %xmm3
+        mulpd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm6
+        shrl      $4, %eax
+        andl      $32768, %eax
+        mulsd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm2, %xmm5
+        movapd    %xmm6, %xmm2
+        mulsd     %xmm6, %xmm6
+        mulpd     %xmm0, %xmm7
+        movapd    6080(%ebx), %xmm0
+        mulsd     %xmm6, %xmm2
+        addpd     %xmm5, %xmm7
+        pshufd    $238, %xmm1, %xmm5
+        mulsd     %xmm2, %xmm6
+        mulpd     %xmm2, %xmm7
+        addsd     %xmm5, %xmm1
+        xorpd     %xmm5, %xmm5
+        pshufd    $238, %xmm7, %xmm2
+        mulsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm2, %xmm7
+        movapd    %xmm3, %xmm2
+        pinsrw    $3, %eax, %xmm5
+        subsd     %xmm6, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm7
+        subsd     %xmm6, %xmm2
+        subsd     %xmm7, %xmm0
+        subsd     %xmm2, %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_10.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        xorpd     %xmm5, %xmm0
+        xorpd     %xmm5, %xmm3
+        subsd     %xmm3, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_9.0.2:
+        addl      $261886, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_11.0.2
+        movd      %xmm0, %ecx
+        psrlq     $32, %xmm0
+        movd      %xmm0, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_12.0.2
+        movq      8(%esp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_13.0.2
+.L_2TAG_PACKET_12.0.2:
+        movsd     5984(%ebx), %xmm1
+        movsd     6080(%ebx), %xmm2
+        movsd     6088(%ebx), %xmm0
+        movl      16(%esp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%esp), %eax
+        je        .L_2TAG_PACKET_14.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %eax
+        andl      $24576, %eax
+        orl       %eax, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_14.0.2:
+        andnpd    %xmm7, %xmm1
+        orpd      %xmm1, %xmm0
+        orpd      %xmm1, %xmm2
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_0.0.2:
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        movl      %edx, 24(%esp)
+        ldmxcsr   24(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     8(%esp), %xmm0
+        xorpd     %xmm6, %xmm6
+        movapd    %xmm0, %xmm7
+        pextrw    $3, %xmm0, %edx
+        andl      $32752, %edx
+        subl      $16, %edx
+        cmpl      $32736, %edx
+        jb        .L_2TAG_PACKET_15.0.2
+        addsd     %xmm0, %xmm6
+        orpd      %xmm6, %xmm0
+        mulsd     %xmm0, %xmm7
+.L_2TAG_PACKET_15.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_13.0.2:
+        movl      16(%esp), %edx
+        andl      $-24577, %edx
+        cmpl      16(%esp), %edx
+        je        .L_2TAG_PACKET_4.0.2
+        stmxcsr   24(%esp)
+        movl      16(%esp), %edx
+        andl      $24576, %edx
+        orl       %edx, 24(%esp)
+        ldmxcsr   24(%esp)
+.L_2TAG_PACKET_4.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(asin)
+# -- End  asin
+
+# Start file scope ASM
+ALIAS_SYMBOL(asinl, asin);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.long	1431655765
+	.long	1069897045
+	.long	858993459
+	.long	1068708659
+	.long	3067833783
+	.long	1067899757
+	.long	0
+	.long	0
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	4294950912
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	2147483584
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	static_const_table,@object
+	.size	static_const_table,6096
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
new file mode 100644
index 0000000..1efdf65
--- /dev/null
+++ b/libm/x86/e_atan2.S
@@ -0,0 +1,1221 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//
+//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
+//   as follows.
+//                   /  sign(Y) atan(|Y/X|)                if X > 0
+//       atan2(Y,X) =
+//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
+//
+//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
+//   where PI and sgn can be determined by the four possible combinations of
+//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
+//   for atan(|Y/X|).
+//
+//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
+//   if X > 0, and sign(Y)*pi otherwise.
+//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
+//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
+//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
+//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
+//   calculated using the polynomial in 4 above.
+//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
+//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
+//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
+//
+//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
+//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
+//
+//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
+//   163 possible values. These values are calculated beforehand and stored
+//   in a table. The polynomial is the one used in 4.
+//
+// Special cases:
+//  atan2(+-0, +0) = +-0
+//  atan2(+-0, -0) = +-pi
+//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
+//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
+//  atan2(+-y, +INF) = +-0, for finite y > 0
+//  atan2(+-y, -INF) = +-pi, for finite y > 0
+//  atan2(+-INF, x) = +-pi/2, for finite x
+//  atan2(+-INF, +INF) = +-pi/4
+//  atan2(+-INF, -INF) = +-3*pi/4
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  atan2
+ENTRY(atan2)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     136(%esp), %xmm1
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        movq      %xmm0, 8(%esp)
+        andl      $32752, %eax
+        movq      %xmm1, 16(%esp)
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        unpcklpd  %xmm1, %xmm0
+        xorpd     %xmm5, %xmm5
+        xorpd     %xmm3, %xmm3
+        movl      $2048, %eax
+        pinsrw    $3, %eax, %xmm5
+        paddw     %xmm1, %xmm5
+        psrlq     $29, %xmm5
+        rcpss     %xmm5, %xmm3
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        psllq     $29, %xmm3
+        paddw     %xmm4, %xmm3
+        mulsd     %xmm0, %xmm3
+        xorpd     %xmm2, %xmm2
+        xorpd     %xmm6, %xmm6
+        xorpd     %xmm7, %xmm7
+        movl      $32768, %eax
+        pinsrw    $2, %eax, %xmm6
+        movl      $32767, %ecx
+        pinsrw    $3, %ecx, %xmm7
+        paddd     %xmm6, %xmm3
+        andpd     %xmm7, %xmm3
+        movapd    %xmm3, %xmm5
+        pextrw    $3, %xmm3, %eax
+        movl      $16448, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        minsd     %xmm2, %xmm3
+        movmskpd  %xmm0, %edx
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        cmpsd     $2, %xmm2, %xmm5
+        psllq     $1, %xmm1
+        psrlq     $1, %xmm1
+        movapd    %xmm1, %xmm6
+        movapd    %xmm1, %xmm7
+        movapd    %xmm0, %xmm2
+        movl      $0, %ecx
+        pinsrw    $0, %ecx, %xmm6
+        subsd     %xmm6, %xmm7
+        movapd    %xmm0, %xmm4
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        mulsd     %xmm3, %xmm7
+        andpd     %xmm5, %xmm0
+        subsd     %xmm6, %xmm0
+        andpd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm4
+        subsd     %xmm7, %xmm0
+        andl      $32752, %eax
+        subl      $16286, %eax
+        cmpl      $1121, %eax
+        ja        .L_2TAG_PACKET_3.0.2
+        divsd     %xmm4, %xmm0
+        pextrw    $3, %xmm3, %ecx
+        movsd     2944(%ebx), %xmm2
+        movsd     2960(%ebx), %xmm3
+        pextrw    $0, %xmm5, %eax
+        addl      %edx, %edx
+        movapd    2688(%ebx,%edx,8), %xmm6
+        movapd    2752(%ebx,%edx,8), %xmm1
+        subl      $16286, %ecx
+        notl      %eax
+        andl      $1, %eax
+        addl      %eax, %ecx
+        addl      %ecx, %ecx
+        movapd    (%ebx,%ecx,8), %xmm5
+        xorpd     %xmm1, %xmm5
+        addpd     %xmm6, %xmm5
+        movapd    %xmm5, %xmm6
+        unpckhpd  %xmm5, %xmm5
+        xorpd     %xmm0, %xmm1
+        movapd    %xmm1, %xmm4
+        mulsd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm3
+        addsd     %xmm6, %xmm1
+        subsd     %xmm1, %xmm6
+        addsd     %xmm4, %xmm6
+        addsd     2952(%ebx), %xmm2
+        mulsd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm2
+        addsd     2968(%ebx), %xmm3
+        mulsd     %xmm3, %xmm2
+        addsd     %xmm6, %xmm2
+        addsd     %xmm2, %xmm1
+        movsd     %xmm1, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_3.0.2:
+        addl      $942, %eax
+        cmpl      $942, %eax
+        ja        .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm4, %xmm4
+        movl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        divsd     %xmm1, %xmm4
+        addl      %edx, %edx
+        movapd    2752(%ebx,%edx,8), %xmm6
+        unpcklpd  %xmm3, %xmm3
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm2
+        xorpd     %xmm6, %xmm3
+        movapd    2816(%ebx,%edx,8), %xmm7
+        movsd     2944(%ebx), %xmm1
+        movsd     2960(%ebx), %xmm5
+        andpd     2880(%ebx,%edx,8), %xmm3
+        mulsd     %xmm4, %xmm2
+        mulsd     %xmm4, %xmm0
+        movapd    %xmm2, %xmm6
+        mulsd     %xmm2, %xmm2
+        mulsd     %xmm2, %xmm1
+        addsd     %xmm2, %xmm5
+        mulsd     %xmm2, %xmm6
+        addsd     2952(%ebx), %xmm1
+        mulsd     %xmm2, %xmm5
+        addsd     %xmm0, %xmm7
+        addpd     %xmm3, %xmm7
+        mulsd     %xmm6, %xmm1
+        addsd     2968(%ebx), %xmm5
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm5
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm5
+        movsd     %xmm5, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     16(%esp), %xmm1
+        movsd     8(%esp), %xmm0
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      %eax, %ecx
+        jg        .L_2TAG_PACKET_6.0.2
+        pextrw    $3, %xmm1, %ecx
+        cmpl      $32767, %ecx
+        jg        .L_2TAG_PACKET_7.0.2
+        divsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        andpd     2672(%ebx), %xmm0
+        movsd     2640(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_6.0.2:
+        andpd     2672(%ebx), %xmm0
+        movsd     2624(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_0.0.2:
+.L_2TAG_PACKET_1.0.2:
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_8.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_9.0.2
+        movsd     2992(%ebx), %xmm3
+        movl      $1024, %edx
+        movsd     2976(%ebx), %xmm4
+        xorpd     %xmm6, %xmm6
+        movsd     3008(%ebx), %xmm7
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_11.0.2:
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_13.0.2:
+        addl      %ecx, %edx
+        subl      %eax, %edx
+        cmpl      $2048, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        addl      $15344, %edx
+        pinsrw    $3, %edx, %xmm6
+        andpd     %xmm4, %xmm0
+        andpd     %xmm4, %xmm1
+        orpd      %xmm6, %xmm0
+        orpd      %xmm7, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        subl      $880, %edx
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_12.0.2:
+        addl      $880, %edx
+        mulsd     %xmm3, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_15.0.2
+        jmp       .L_2TAG_PACKET_13.0.2
+.L_2TAG_PACKET_8.0.2:
+        movd      %xmm0, %edx
+        movapd    %xmm0, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $1048575, %ecx
+        orl       %edx, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_16.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $32752, %eax
+        jae       .L_2TAG_PACKET_17.0.2
+        movapd    2624(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+.L_2TAG_PACKET_18.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_16.0.2:
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_17.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_19.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_20.0.2
+        movapd    2656(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_19.0.2:
+        movapd    %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_20.0.2:
+        movapd    2656(%ebx), %xmm5
+        movapd    2624(%ebx), %xmm6
+        addpd     %xmm6, %xmm5
+        pshufd    $238, %xmm5, %xmm6
+        addpd     %xmm6, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_9.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_19.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_21.0.2
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_21.0.2:
+        movapd    2640(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_14.0.2:
+        pextrw    $3, %xmm1, %edx
+        andl      $32768, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_22.0.2
+        movapd    2640(%ebx), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        comisd    %xmm0, %xmm1
+        orpd      %xmm5, %xmm0
+        jne       .L_2TAG_PACKET_23.0.2
+.L_2TAG_PACKET_24.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_23.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_22.0.2:
+        comisd    %xmm0, %xmm1
+        jne       .L_2TAG_PACKET_23.0.2
+        je        .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_15.0.2:
+        movapd    2624(%ebx), %xmm5
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_4.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(atan2)
+# -- End  atan2
+
+# Start file scope ASM
+ALIAS_SYMBOL(atan2l, atan2);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	3390881280
+	.long	1067318733
+	.long	1411116779
+	.long	1018950063
+	.long	2985987840
+	.long	1067384211
+	.long	2088903695
+	.long	1018086027
+	.long	3148445184
+	.long	1067449685
+	.long	2044163806
+	.long	1017271335
+	.long	3667629184
+	.long	1067515494
+	.long	2353092775
+	.long	1019967309
+	.long	1546568832
+	.long	1067580954
+	.long	611991315
+	.long	1017602584
+	.long	3815996800
+	.long	1067646404
+	.long	466038598
+	.long	1019686426
+	.long	4050241920
+	.long	1067711845
+	.long	3265026328
+	.long	1019626952
+	.long	120454912
+	.long	1067777277
+	.long	1542207696
+	.long	1020155608
+	.long	2784639744
+	.long	1067842697
+	.long	3883834623
+	.long	1018602870
+	.long	1328010624
+	.long	1067908107
+	.long	1791097456
+	.long	1019053126
+	.long	2217794048
+	.long	1067973505
+	.long	551619938
+	.long	1018494194
+	.long	3333520000
+	.long	1068038891
+	.long	2390331823
+	.long	1019033022
+	.long	2557052032
+	.long	1068104265
+	.long	2423976108
+	.long	1019728674
+	.long	2067649536
+	.long	1068169626
+	.long	3757397745
+	.long	1018672362
+	.long	4047094784
+	.long	1068234973
+	.long	481613184
+	.long	1019275104
+	.long	2089853184
+	.long	1068300307
+	.long	1733914374
+	.long	1020124677
+	.long	2678003840
+	.long	1068365626
+	.long	1373600282
+	.long	1013935474
+	.long	3706496128
+	.long	1068430930
+	.long	1000610902
+	.long	1019673285
+	.long	3073179008
+	.long	1068496219
+	.long	1497143008
+	.long	1019900342
+	.long	2803716736
+	.long	1068562846
+	.long	1476677416
+	.long	1019444094
+	.long	3204984128
+	.long	1068628077
+	.long	1192335905
+	.long	1018748628
+	.long	831146624
+	.long	1068693273
+	.long	2733586224
+	.long	1018823295
+	.long	243029376
+	.long	1068758431
+	.long	950106081
+	.long	1019046675
+	.long	1735561920
+	.long	1068823549
+	.long	3546440856
+	.long	1020104712
+	.long	1339217792
+	.long	1068888626
+	.long	3028812387
+	.long	1019818321
+	.long	3706342144
+	.long	1068953659
+	.long	3814564029
+	.long	1017763871
+	.long	637726976
+	.long	1069018648
+	.long	3584007699
+	.long	1017976868
+	.long	1148779264
+	.long	1069083589
+	.long	2282532133
+	.long	1019483954
+	.long	1406131392
+	.long	1069148481
+	.long	1547359113
+	.long	1019786342
+	.long	1908875904
+	.long	1069213322
+	.long	1315508410
+	.long	1020009473
+	.long	3194947520
+	.long	1069278110
+	.long	3845393201
+	.long	1015803761
+	.long	1547487744
+	.long	1069342844
+	.long	3863107865
+	.long	1019810104
+	.long	1881061952
+	.long	1069407521
+	.long	4288343548
+	.long	1019687581
+	.long	563086336
+	.long	1069472140
+	.long	2582230241
+	.long	1020099350
+	.long	2594975552
+	.long	1069536698
+	.long	2306443764
+	.long	1019667244
+	.long	3438545024
+	.long	1069606573
+	.long	957455549
+	.long	1015587735
+	.long	4211357472
+	.long	1069670906
+	.long	2611778754
+	.long	1017877214
+	.long	3002835424
+	.long	1069735101
+	.long	235580458
+	.long	1020211685
+	.long	3905315424
+	.long	1069799150
+	.long	3630647617
+	.long	1018736849
+	.long	2849656576
+	.long	1069863047
+	.long	2412165062
+	.long	1019693004
+	.long	507429472
+	.long	1069926785
+	.long	1397750723
+	.long	1018412717
+	.long	2307470272
+	.long	1069990356
+	.long	1796470904
+	.long	1019796181
+	.long	1271814912
+	.long	1070053755
+	.long	189761565
+	.long	1016149115
+	.long	3800538144
+	.long	1070116974
+	.long	2524871582
+	.long	1018263353
+	.long	3916203552
+	.long	1070180008
+	.long	127848658
+	.long	1017672664
+	.long	457192032
+	.long	1070242851
+	.long	4020400938
+	.long	1019823010
+	.long	1385324704
+	.long	1070305495
+	.long	564511179
+	.long	1016079094
+	.long	2322869856
+	.long	1070367935
+	.long	2347103319
+	.long	1018927760
+	.long	3743438624
+	.long	1070430165
+	.long	877973862
+	.long	1019638162
+	.long	2392255552
+	.long	1070492180
+	.long	2432782267
+	.long	1018872629
+	.long	4180443328
+	.long	1070553973
+	.long	3102990015
+	.long	1020093101
+	.long	2547540832
+	.long	1070636485
+	.long	3877738253
+	.long	1017300424
+	.long	2735468912
+	.long	1070697461
+	.long	2446470256
+	.long	1019235378
+	.long	542633792
+	.long	1070757943
+	.long	583606328
+	.long	1018624131
+	.long	923265984
+	.long	1070817911
+	.long	1793926708
+	.long	1019714161
+	.long	918728448
+	.long	1070877348
+	.long	3726463586
+	.long	1019433296
+	.long	2572275008
+	.long	1070936237
+	.long	1845354238
+	.long	1019459238
+	.long	50974688
+	.long	1070994564
+	.long	983808064
+	.long	1016685418
+	.long	1105518320
+	.long	1071052313
+	.long	2357496692
+	.long	1015139882
+	.long	1264825328
+	.long	1071109472
+	.long	2244129354
+	.long	1019046344
+	.long	961157920
+	.long	1071166029
+	.long	3124185339
+	.long	1018541776
+	.long	1162701584
+	.long	1071221973
+	.long	1279780948
+	.long	1019268918
+	.long	3284935664
+	.long	1071277294
+	.long	2670033472
+	.long	1019833744
+	.long	497441888
+	.long	1071331985
+	.long	1032737410
+	.long	1019795212
+	.long	3377383904
+	.long	1071386036
+	.long	2356897182
+	.long	1020205553
+	.long	1126962000
+	.long	1071439443
+	.long	3723724586
+	.long	1015212418
+	.long	90291008
+	.long	1071492199
+	.long	4178672431
+	.long	1020186971
+	.long	190059536
+	.long	1071595741
+	.long	1763589807
+	.long	1019162163
+	.long	2497392840
+	.long	1071670654
+	.long	3036997041
+	.long	1020204325
+	.long	2616971944
+	.long	1071719773
+	.long	300151069
+	.long	1017041957
+	.long	2883518128
+	.long	1071767563
+	.long	2203981414
+	.long	1019190108
+	.long	1496354352
+	.long	1071814030
+	.long	332287966
+	.long	1016846435
+	.long	483276728
+	.long	1071859184
+	.long	653845024
+	.long	1018830914
+	.long	3097401072
+	.long	1071903039
+	.long	1514746408
+	.long	1019278972
+	.long	2737217248
+	.long	1071945615
+	.long	1358845067
+	.long	1017268275
+	.long	2072577560
+	.long	1071986933
+	.long	3041024735
+	.long	1019929672
+	.long	2266405656
+	.long	1072027017
+	.long	1271261130
+	.long	1012925070
+	.long	958652544
+	.long	1072065894
+	.long	2158017058
+	.long	1019955372
+	.long	3312993840
+	.long	1072103591
+	.long	765809169
+	.long	1019114443
+	.long	3177001304
+	.long	1072140139
+	.long	144180084
+	.long	1019822186
+	.long	3071642184
+	.long	1072175568
+	.long	4004602424
+	.long	1019420740
+	.long	4283953648
+	.long	1072209909
+	.long	1511950430
+	.long	1020176966
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	4073202944
+	.long	1072306725
+	.long	4068194804
+	.long	1019714860
+	.long	946117760
+	.long	1072366415
+	.long	694980733
+	.long	1020150135
+	.long	3980632032
+	.long	1072422512
+	.long	1313251280
+	.long	1019948709
+	.long	1468297112
+	.long	1072475260
+	.long	330111143
+	.long	1019809198
+	.long	3478063816
+	.long	1072524887
+	.long	2930067044
+	.long	1017784081
+	.long	1153979856
+	.long	1072571613
+	.long	2225786102
+	.long	1017634481
+	.long	2089828808
+	.long	1072615641
+	.long	474621367
+	.long	1017043414
+	.long	3531732632
+	.long	1072657163
+	.long	2276396220
+	.long	1018757240
+	.long	775214612
+	.long	1072694803
+	.long	3209744818
+	.long	1019963015
+	.long	662307284
+	.long	1072713319
+	.long	1381696763
+	.long	1019763781
+	.long	1192776652
+	.long	1072730830
+	.long	3017932994
+	.long	1015179769
+	.long	744202396
+	.long	1072747407
+	.long	2073854034
+	.long	1019512292
+	.long	8337908
+	.long	1072763115
+	.long	16004448
+	.long	1019599514
+	.long	3589868768
+	.long	1072778013
+	.long	1374369804
+	.long	1018019237
+	.long	121647320
+	.long	1072792159
+	.long	128481634
+	.long	1018115438
+	.long	2464923204
+	.long	1072805601
+	.long	1787331214
+	.long	1016798022
+	.long	4093304372
+	.long	1072830562
+	.long	3306868969
+	.long	1019384078
+	.long	1436891684
+	.long	1072853231
+	.long	676347266
+	.long	1017302183
+	.long	1104571840
+	.long	1072873890
+	.long	2870400285
+	.long	1019938149
+	.long	2037009832
+	.long	1072892781
+	.long	2956702105
+	.long	1016472908
+	.long	3139037960
+	.long	1072910111
+	.long	916057147
+	.long	1018364335
+	.long	1826698064
+	.long	1072926058
+	.long	2171961098
+	.long	1019669816
+	.long	1353941060
+	.long	1072940774
+	.long	1722928782
+	.long	1019926215
+	.long	1803191644
+	.long	1072954391
+	.long	1547878639
+	.long	1020259262
+	.long	1092591296
+	.long	1072967024
+	.long	3070107923
+	.long	1018320401
+	.long	2205372832
+	.long	1072978772
+	.long	787328196
+	.long	1014621351
+	.long	1291577100
+	.long	1072989723
+	.long	2964757301
+	.long	1020242528
+	.long	4234512804
+	.long	1072999952
+	.long	3136030038
+	.long	1017522144
+	.long	3248069132
+	.long	1073009528
+	.long	1506192355
+	.long	1018050472
+	.long	3932628500
+	.long	1073018509
+	.long	1045823554
+	.long	1019946655
+	.long	4195697848
+	.long	1073026948
+	.long	233443322
+	.long	1018917447
+	.long	2501811452
+	.long	1073034892
+	.long	901427976
+	.long	1017333852
+	.long	866379428
+	.long	1073049455
+	.long	2437443742
+	.long	1019678792
+	.long	1376865888
+	.long	1073062480
+	.long	3365790232
+	.long	1014547152
+	.long	3290094268
+	.long	1073074195
+	.long	3898947415
+	.long	1018683566
+	.long	354764884
+	.long	1073084787
+	.long	3854322404
+	.long	1019662058
+	.long	3332975496
+	.long	1073094406
+	.long	3171701655
+	.long	1017830922
+	.long	1141460088
+	.long	1073103181
+	.long	3946082701
+	.long	1020032019
+	.long	745761284
+	.long	1073111216
+	.long	1347210591
+	.long	1019106121
+	.long	1673304508
+	.long	1073118600
+	.long	1760606642
+	.long	1017324577
+	.long	983388240
+	.long	1073125409
+	.long	3740651204
+	.long	1019514104
+	.long	3895509100
+	.long	1073131706
+	.long	2409629983
+	.long	1020069322
+	.long	2128523668
+	.long	1073137548
+	.long	3045605368
+	.long	1018579174
+	.long	2075485692
+	.long	1073142981
+	.long	3720571789
+	.long	1017557436
+	.long	121855976
+	.long	1073148047
+	.long	2391744767
+	.long	1020160645
+	.long	4181733780
+	.long	1073152780
+	.long	995028816
+	.long	1019681295
+	.long	2887813280
+	.long	1073157214
+	.long	218733247
+	.long	1020003509
+	.long	2862180896
+	.long	1073161375
+	.long	2043806490
+	.long	1018602288
+	.long	3909375184
+	.long	1073168973
+	.long	1559903412
+	.long	1020103444
+	.long	3533966292
+	.long	1073175738
+	.long	734884149
+	.long	1018462962
+	.long	3815044608
+	.long	1073181799
+	.long	3630523428
+	.long	1017250093
+	.long	739639376
+	.long	1073187261
+	.long	4167476661
+	.long	1020008277
+	.long	1068309648
+	.long	1073192207
+	.long	2110061437
+	.long	1019295858
+	.long	2350566352
+	.long	1073196707
+	.long	582596516
+	.long	1018568821
+	.long	2529520024
+	.long	1073200819
+	.long	745552787
+	.long	1019053165
+	.long	1841667508
+	.long	1073204591
+	.long	3982568700
+	.long	1016503327
+	.long	2242261080
+	.long	1073208063
+	.long	3433582258
+	.long	1016196763
+	.long	715134328
+	.long	1073211270
+	.long	355901358
+	.long	1020087916
+	.long	2700735876
+	.long	1073214240
+	.long	3640957736
+	.long	1019780205
+	.long	141607580
+	.long	1073217000
+	.long	2488245051
+	.long	1020262395
+	.long	287934404
+	.long	1073219570
+	.long	2392691085
+	.long	1019883292
+	.long	2363373988
+	.long	1073221969
+	.long	4194561737
+	.long	1019237447
+	.long	3829340424
+	.long	1073224214
+	.long	429455526
+	.long	1019490975
+	.long	1988805928
+	.long	1073226320
+	.long	3029848706
+	.long	1018104889
+	.long	1647572320
+	.long	1073230161
+	.long	10289938
+	.long	1017394880
+	.long	3988000624
+	.long	1073233576
+	.long	1957559169
+	.long	1019434816
+	.long	4263843944
+	.long	1073236633
+	.long	204710264
+	.long	1019908761
+	.long	663197724
+	.long	1073239386
+	.long	1921757578
+	.long	1019778948
+	.long	3560800700
+	.long	1073241876
+	.long	3994348896
+	.long	1019230192
+	.long	2441785656
+	.long	1073244141
+	.long	871468611
+	.long	1014800505
+	.long	3277400272
+	.long	1073246209
+	.long	4092218139
+	.long	1020040842
+	.long	3951990120
+	.long	1073248105
+	.long	4276546478
+	.long	1019763677
+	.long	2737338540
+	.long	1073249850
+	.long	252776012
+	.long	1018794951
+	.long	1511361316
+	.long	1073251461
+	.long	3119653999
+	.long	1018514803
+	.long	3969162516
+	.long	1073252952
+	.long	1037069016
+	.long	1016792900
+	.long	413985240
+	.long	1073254338
+	.long	4110171432
+	.long	1020001345
+	.long	3681283576
+	.long	1073255627
+	.long	1463092818
+	.long	1020260354
+	.long	3146455488
+	.long	1073256831
+	.long	1031209123
+	.long	1016554799
+	.long	95214512
+	.long	1073257958
+	.long	1373808632
+	.long	1019493031
+	.long	4250240828
+	.long	1073259013
+	.long	3891047882
+	.long	1020108730
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	3164710438
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.long	4294967295
+	.long	2148532223
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,3024
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_cosh.S b/libm/x86/e_cosh.S
new file mode 100644
index 0000000..ecea8f4
--- /dev/null
+++ b/libm/x86/e_cosh.S
@@ -0,0 +1,1349 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  cosh(x)=(exp(x)+exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [1/8,3*2^8)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
+//
+//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
+//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
+//
+//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
+//  (error bound for polynomial expansion is below 0.501 ulp)
+//
+// Special cases:
+//  cosh(NaN) = quiet NaN, and raise invalid exception
+//  cosh(INF) = that INF
+//  cosh(0)=1
+//  for finite argument, only cosh(0)=1 is exact
+//  For IEEE double
+//  cosh(x) overflows
+//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cosh
+ENTRY(cosh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4240(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4192(%ebx), %xmm1
+        movsd     4200(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        andl      $32767, %ecx
+        subl      $16320, %ecx
+        cmpl      $200, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    4112(%ebx), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    4128(%ebx), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    4144(%ebx), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $184, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        mulpd     (%ebx,%edx,8), %xmm0
+        mulpd     2048(%ebx,%edx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     4176(%ebx), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movapd    %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        addpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16320, %ecx
+        cmpl      $16320, %ecx
+        ja        .L_2TAG_PACKET_3.0.2
+        cmpl      $15952, %ecx
+        jae       .L_2TAG_PACKET_4.0.2
+        addsd     %xmm2, %xmm6
+        movsd     4248(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     (%ebx,%edx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     4160(%ebx), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     4176(%ebx), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $64, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        movapd    4208(%ebx), %xmm1
+        mulpd     %xmm5, %xmm5
+        movapd    4224(%ebx), %xmm2
+        xorpd     %xmm3, %xmm3
+        movapd    %xmm5, %xmm0
+        mulpd     %xmm5, %xmm1
+        movsd     4248(%ebx), %xmm6
+        mulpd     %xmm5, %xmm5
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm3
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm5, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm0
+        addsd     %xmm6, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $64, %edx
+.L_2TAG_PACKET_5.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        mulsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_7.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cosh)
+# -- End  cosh
+
+# Start file scope ASM
+ALIAS_SYMBOL(coshl, cosh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	3212193346
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.long	3078135644
+	.long	1049787983
+	.long	381774870
+	.long	1062650220
+	.long	436314137
+	.long	1056571808
+	.long	1431655765
+	.long	1067799893
+	.long	4160749568
+	.long	2147483647
+	.long	0
+	.long	1072693248
+	.type	static_const_table,@object
+	.size	static_const_table,4256
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_exp.S b/libm/x86/e_exp.S
new file mode 100644
index 0000000..eab619d
--- /dev/null
+++ b/libm/x86/e_exp.S
@@ -0,0 +1,576 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//        x    x/log(2)     n
+//       e  = 2          = 2 * T[j] * (1 + P(y))
+//  where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//  To avoid problems with arithmetic overflow and underflow,
+//            n                        n1  n2
+//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//  where BIAS is a value of exponent bias.
+//
+// Special cases:
+//  exp(NaN) = NaN
+//  exp(+INF) = +INF
+//  exp(-INF) = 0
+//  exp(x) = 1 for subnormals
+//  for finite argument, only exp(0)=1 is exact
+//  For IEEE double
+//    if x >  709.782712893383973096 then exp(x) overflow
+//    if x < -745.133219101941108420 then exp(x) underflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  exp
+ENTRY(exp)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        unpcklpd  %xmm0, %xmm0
+        movapd    64(%ebx), %xmm1
+        movapd    48(%ebx), %xmm6
+        movapd    80(%ebx), %xmm2
+        movapd    96(%ebx), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $15504, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    128(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    144(%ebx), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        movdqa    16(%ebx), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    32(%ebx), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        subpd     %xmm3, %xmm0
+        movapd    160(%ebx,%ecx), %xmm2
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm6
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm6, %xmm6
+        mulpd     %xmm6, %xmm0
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm6, %xmm0
+        mulpd     112(%ebx), %xmm6
+        addsd     %xmm2, %xmm1
+        unpckhpd  %xmm2, %xmm2
+        mulpd     %xmm5, %xmm0
+        addsd     %xmm0, %xmm1
+        orpd      %xmm7, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        addsd     %xmm6, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        mulsd     %xmm2, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        fstcw     24(%esp)
+        movzwl    24(%esp), %edx
+        orl       $768, %edx
+        movw      %dx, 28(%esp)
+        fldcw     28(%esp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    (%ebx), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        movsd     %xmm0, 8(%esp)
+        fldl      8(%esp)
+        movsd     %xmm6, 16(%esp)
+        fldl      16(%esp)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 8(%esp)
+        fldl      8(%esp)
+        fmulp     %st, %st(1)
+        fstpl     8(%esp)
+        movsd     8(%esp), %xmm0
+        fldcw     24(%esp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_3.0.2
+        cmpl      $-1064950997, %ecx
+        jb        .L_2TAG_PACKET_2.0.2
+        ja        .L_2TAG_PACKET_4.0.2
+        movl      128(%esp), %edx
+        cmpl      $-17155601, %edx
+        jb        .L_2TAG_PACKET_2.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_3.0.2:
+        movl      $14, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_4.0.2:
+        movl      $15, %edx
+.L_2TAG_PACKET_5.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     128(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        movl      132(%esp), %eax
+        cmpl      $-2147483648, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movsd     1208(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $14, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_9.0.2:
+        movsd     1216(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $15, %edx
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_8.0.2:
+        movl      128(%esp), %edx
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_10.0.2
+        movl      132(%esp), %eax
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_11.0.2
+        movsd     1192(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     1200(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     128(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movl      132(%esp), %eax
+        andl      $2147483647, %eax
+        cmpl      $1083179008, %eax
+        jae       .L_2TAG_PACKET_7.0.2
+        movsd     128(%esp), %xmm0
+        addsd     1184(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 48(%esp)
+        fldl      48(%esp)
+.L_2TAG_PACKET_6.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(exp)
+# -- End  exp
+
+# Start file scope ASM
+ALIAS_SYMBOL(expl, exp);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	4294967294
+	.long	1071644671
+	.long	4294967294
+	.long	1071644671
+	.long	3811088480
+	.long	1062650204
+	.long	1432067621
+	.long	1067799893
+	.long	3230715663
+	.long	1065423125
+	.long	1431604129
+	.long	1069897045
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	235107661
+	.long	1018002367
+	.long	1048019040
+	.long	11418
+	.long	896005651
+	.long	1015861842
+	.long	3541402996
+	.long	22960
+	.long	1642514529
+	.long	1012987726
+	.long	410360776
+	.long	34629
+	.long	1568897900
+	.long	1016568486
+	.long	1828292879
+	.long	46424
+	.long	1882168529
+	.long	1010744893
+	.long	852742562
+	.long	58348
+	.long	509852888
+	.long	1017336174
+	.long	3490863952
+	.long	70401
+	.long	653277307
+	.long	1017431380
+	.long	2930322911
+	.long	82586
+	.long	1649557430
+	.long	1017729363
+	.long	1014845818
+	.long	94904
+	.long	1058231231
+	.long	1015777676
+	.long	3949972341
+	.long	107355
+	.long	1044000607
+	.long	1016786167
+	.long	828946858
+	.long	119943
+	.long	1151779725
+	.long	1015705409
+	.long	2288159958
+	.long	132667
+	.long	3819481236
+	.long	1016499965
+	.long	1853186616
+	.long	145530
+	.long	2552227826
+	.long	1015039787
+	.long	1709341917
+	.long	158533
+	.long	1829350193
+	.long	1015216097
+	.long	4112506593
+	.long	171677
+	.long	1913391795
+	.long	1015756674
+	.long	2799960843
+	.long	184965
+	.long	1303423926
+	.long	1015238005
+	.long	171030293
+	.long	198398
+	.long	1574172746
+	.long	1016061241
+	.long	2992903935
+	.long	211976
+	.long	3424156969
+	.long	1017196428
+	.long	926591434
+	.long	225703
+	.long	1938513547
+	.long	1017631273
+	.long	887463926
+	.long	239579
+	.long	2804567149
+	.long	1015390024
+	.long	1276261410
+	.long	253606
+	.long	631083525
+	.long	1017690182
+	.long	569847337
+	.long	267786
+	.long	1623370770
+	.long	1011049453
+	.long	1617004845
+	.long	282120
+	.long	3667985273
+	.long	1013894369
+	.long	3049340112
+	.long	296610
+	.long	3145379760
+	.long	1014403278
+	.long	3577096743
+	.long	311258
+	.long	2603100681
+	.long	1017152460
+	.long	1990012070
+	.long	326066
+	.long	3249202951
+	.long	1017448880
+	.long	1453150081
+	.long	341035
+	.long	419288974
+	.long	1016280325
+	.long	917841882
+	.long	356167
+	.long	3793507337
+	.long	1016095713
+	.long	3712504873
+	.long	371463
+	.long	728023093
+	.long	1016345318
+	.long	363667784
+	.long	386927
+	.long	2582678538
+	.long	1017123460
+	.long	2956612996
+	.long	402558
+	.long	7592966
+	.long	1016721543
+	.long	2186617380
+	.long	418360
+	.long	228611441
+	.long	1016696141
+	.long	1719614412
+	.long	434334
+	.long	2261665670
+	.long	1017457593
+	.long	1013258798
+	.long	450482
+	.long	544148907
+	.long	1017323666
+	.long	3907805043
+	.long	466805
+	.long	2383914918
+	.long	1017143586
+	.long	1447192520
+	.long	483307
+	.long	1176412038
+	.long	1017267372
+	.long	1944781190
+	.long	499988
+	.long	2882956373
+	.long	1013312481
+	.long	919555682
+	.long	516851
+	.long	3154077648
+	.long	1016528543
+	.long	2571947538
+	.long	533897
+	.long	348651999
+	.long	1016405780
+	.long	2604962540
+	.long	551129
+	.long	3253791412
+	.long	1015920431
+	.long	1110089947
+	.long	568549
+	.long	1509121860
+	.long	1014756995
+	.long	2568320822
+	.long	586158
+	.long	2617649212
+	.long	1017340090
+	.long	2966275556
+	.long	603959
+	.long	553214634
+	.long	1016457425
+	.long	2682146383
+	.long	621954
+	.long	730975783
+	.long	1014083580
+	.long	2191782032
+	.long	640145
+	.long	1486499517
+	.long	1016818996
+	.long	2069751140
+	.long	658534
+	.long	2595788928
+	.long	1016407932
+	.long	2990417244
+	.long	677123
+	.long	1853053619
+	.long	1015310724
+	.long	1434058175
+	.long	695915
+	.long	2462790535
+	.long	1015814775
+	.long	2572866477
+	.long	714911
+	.long	3693944214
+	.long	1017259110
+	.long	3092190714
+	.long	734114
+	.long	2979333550
+	.long	1017188654
+	.long	4076559942
+	.long	753526
+	.long	174054861
+	.long	1014300631
+	.long	2420883922
+	.long	773150
+	.long	816778419
+	.long	1014197934
+	.long	3716502172
+	.long	792987
+	.long	3507050924
+	.long	1015341199
+	.long	777507147
+	.long	813041
+	.long	1821514088
+	.long	1013410604
+	.long	3706687593
+	.long	833312
+	.long	920623539
+	.long	1016295433
+	.long	1242007931
+	.long	853805
+	.long	2789017511
+	.long	1014276997
+	.long	3707479175
+	.long	874520
+	.long	3586233004
+	.long	1015962192
+	.long	64696965
+	.long	895462
+	.long	474650514
+	.long	1016642419
+	.long	863738718
+	.long	916631
+	.long	1614448851
+	.long	1014281732
+	.long	3884662774
+	.long	938030
+	.long	2450082086
+	.long	1016164135
+	.long	2728693977
+	.long	959663
+	.long	1101668360
+	.long	1015989180
+	.long	3999357479
+	.long	981531
+	.long	835814894
+	.long	1015702697
+	.long	1533953344
+	.long	1003638
+	.long	1301400989
+	.long	1014466875
+	.long	2174652632
+	.long	1025985
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	2146435071
+	.long	0
+	.long	1048576
+	.type	static_const_table,@object
+	.size	static_const_table,1224
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_hypot.S b/libm/x86/e_hypot.S
new file mode 100644
index 0000000..6a143e5
--- /dev/null
+++ b/libm/x86/e_hypot.S
@@ -0,0 +1,220 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// X87 version:
+// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
+//
+// SSE version:
+// Swap x, y if |x|<|y|
+// For x=2^k*x, get y=y*2^(-k)
+// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
+//
+// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
+//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
+//
+// Result is 2^k*(S + Se),  where Se = S*e
+//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
+//
+// Return 2^k*(S+Se)
+//
+// For |y/x|<2^(-64), return x
+//
+// For cases where maximum biased exponent is either greater than 7fdh or
+// below 32, take a special path to check for special cases (0, NaN, Inf),
+// possible overflow, and more accurate computation for denormal results
+//
+// Special cases:
+//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
+//  hypot(x,+-0) is equivalent to fabs(x)
+//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
+//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
+//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  hypot
+ENTRY(hypot)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $152, %esp
+        movl      %ebx, 96(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movapd    (%ebx), %xmm3
+        movsd     160(%esp), %xmm0
+        movsd     168(%esp), %xmm1
+        andpd     %xmm3, %xmm0
+        andpd     %xmm3, %xmm1
+        pextrw    $3, %xmm0, %eax
+        pextrw    $3, %xmm1, %edx
+        cmpl      $24528, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        cmpl      $24528, %edx
+        ja        .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        fldl      160(%esp)
+        fldl      168(%esp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $32752, %eax
+        movl      %eax, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        subl      %edx, %ecx
+        cmpl      $32752, %edx
+        jae       .L_2TAG_PACKET_3.0.2
+        addl      $928, %ecx
+        addl      %edx, %eax
+        cmpl      $1856, %ecx
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $49056, %eax
+        jb        .L_2TAG_PACKET_1.0.2
+        fldl      160(%esp)
+        fldl      168(%esp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+.L_2TAG_PACKET_5.0.2:
+        fstl      (%esp)
+        fstpt     16(%esp)
+        xorl      %eax, %eax
+        movw      24(%esp), %ax
+        cmpl      $17407, %eax
+        jae       .L_2TAG_PACKET_6.0.2
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, 32(%esp)
+        movsd     %xmm1, 40(%esp)
+        fldl      32(%esp)
+        faddl     40(%esp)
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_6.0.2:
+        movl      $46, %edx
+.L_2TAG_PACKET_8.0.2:
+        movsd     160(%esp), %xmm0
+        movsd     168(%esp), %xmm1
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        shufpd    $0, %xmm1, %xmm0
+        movdqa    %xmm0, %xmm2
+        movdqa    16(%ebx), %xmm3
+        movsd     %xmm0, 32(%esp)
+        movsd     %xmm1, 40(%esp)
+        cmppd     $3, %xmm0, %xmm2
+        cmppd     $0, %xmm0, %xmm3
+        movmskpd  %xmm2, %edx
+        movmskpd  %xmm3, %eax
+        testl     %edx, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        fldl      32(%esp)
+        fmull     40(%esp)
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_10.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_11.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_9.0.2:
+        fldl      32(%esp)
+        faddl     40(%esp)
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_10.0.2:
+        fstpl     40(%esp)
+        fldl      32(%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_11.0.2:
+        fstpl     32(%esp)
+        fldl      40(%esp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_2.0.2:
+.L_2TAG_PACKET_7.0.2:
+        movl      96(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(hypot)
+# -- End  hypot
+
+# Start file scope ASM
+ALIAS_SYMBOL(hypotl, hypot);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4294967295
+	.long	2147483647
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	2146435072
+	.type	static_const_table,@object
+	.size	static_const_table,32
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_log.S b/libm/x86/e_log.S
new file mode 100644
index 0000000..a6181ca
--- /dev/null
+++ b/libm/x86/e_log.S
@@ -0,0 +1,780 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log(NaN) = quiet NaN, and raise invalid exception
+//  log(+INF) = that INF
+//  log(0) = -INF with divide-by-zero exception raised
+//  log(1) = +0
+//  log(x) = NaN with invalid exception raised if x < -0, including -INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log
+ENTRY(log)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        movl      $32768, %ecx
+        movd      %ecx, %xmm4
+        movsd     2128(%ebx), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movl      $16352, %ecx
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        paddd     %xmm4, %xmm0
+        orpd      %xmm3, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        mulpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    2112(%ebx), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     2072(%ebx), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        mulpd     %xmm5, %xmm5
+        pshufd    $228, %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        pshufd    $238, %xmm0, %xmm2
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $3, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $2, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movl      $18416, %ecx
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log)
+# -- End  log
+
+# Start file scope ASM
+ALIAS_SYMBOL(logl, log);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	4294959104
+	.type	static_const_table,@object
+	.size	static_const_table,2144
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_log10.S b/libm/x86/e_log10.S
new file mode 100644
index 0000000..09b2952
--- /dev/null
+++ b/libm/x86/e_log10.S
@@ -0,0 +1,795 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*LH*2^7+0.5))/2^7
+//    LH is a short approximation for log10(e)
+//
+//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
+//
+//    Result:  k*log10(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log10(0) = -INF with divide-by-zero exception raised                                           
+//  log10(1) = +0
+//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
+//  log10(+INF) = +INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log10
+ENTRY(log10)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1054736384, %ecx
+        movd      %ecx, %xmm7
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        movl      $32768, %edx
+        movd      %edx, %xmm4
+        movapd    2128(%ebx), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psllq     $5, %xmm0
+        movsd     2144(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        orpd      %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        paddd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm6, %xmm0
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    -1504(%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    2112(%ebx), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     2072(%ebx), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        movsd     2152(%ebx), %xmm6
+        mulpd     %xmm5, %xmm5
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        pshufd    $228, %xmm0, %xmm2
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm2
+        mulsd     %xmm1, %xmm6
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm0, %xmm2
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm6, %xmm1
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $9, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $8, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     2144(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log10)
+# -- End  log10
+
+# Start file scope ASM
+ALIAS_SYMBOL(log10l, log10);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	1352628224
+	.long	1070810131
+	.long	521319256
+	.long	1025503025
+	.long	2150839296
+	.long	1070801944
+	.long	3329350096
+	.long	3170190015
+	.long	1360613376
+	.long	1070793794
+	.long	2024059075
+	.long	1024991594
+	.long	1875350528
+	.long	1070785680
+	.long	2163882141
+	.long	3163564137
+	.long	2312126464
+	.long	1070777602
+	.long	1975711076
+	.long	1023674196
+	.long	1306336256
+	.long	1070769560
+	.long	3524899523
+	.long	3170508164
+	.long	1806334976
+	.long	1070761553
+	.long	4254777025
+	.long	1025238739
+	.long	2483193856
+	.long	1070753581
+	.long	3800671317
+	.long	3172916830
+	.long	2025350144
+	.long	1070745644
+	.long	1731514745
+	.long	1025501083
+	.long	3433285632
+	.long	1070737741
+	.long	2551857336
+	.long	3169662186
+	.long	1134317568
+	.long	1070729873
+	.long	3426297655
+	.long	3172637891
+	.long	2457152512
+	.long	1070722038
+	.long	63549415
+	.long	1025415416
+	.long	1861803008
+	.long	1070714237
+	.long	1910171636
+	.long	1023977580
+	.long	2414140416
+	.long	1070706469
+	.long	4002514337
+	.long	3170841618
+	.long	2900726784
+	.long	1070698734
+	.long	3268064083
+	.long	1022459609
+	.long	2123517952
+	.long	1070691032
+	.long	1767031218
+	.long	1022448156
+	.long	3194569728
+	.long	1070683362
+	.long	3402332618
+	.long	3171671160
+	.long	650882048
+	.long	1070675725
+	.long	4146023905
+	.long	3171023038
+	.long	1928988672
+	.long	1070668119
+	.long	1438617867
+	.long	1016360491
+	.long	1594908672
+	.long	1070660545
+	.long	971389377
+	.long	1024763979
+	.long	2818746368
+	.long	1070653002
+	.long	3555925341
+	.long	3172434821
+	.long	194584576
+	.long	1070645491
+	.long	943919215
+	.long	3172950063
+	.long	1215096832
+	.long	1070638010
+	.long	2283358588
+	.long	1022335098
+	.long	501519360
+	.long	1070630560
+	.long	480904295
+	.long	1024437959
+	.long	1278266368
+	.long	1070623140
+	.long	2755806066
+	.long	3172342012
+	.long	2487812096
+	.long	1070615750
+	.long	2489653202
+	.long	3172481099
+	.long	3085451264
+	.long	1070608390
+	.long	3759184951
+	.long	3172574892
+	.long	2039090176
+	.long	1070601060
+	.long	1361176676
+	.long	3172355319
+	.long	953057280
+	.long	1070591423
+	.long	1176587546
+	.long	3166422018
+	.long	3370524672
+	.long	1070576879
+	.long	3669570051
+	.long	1025376630
+	.long	749742080
+	.long	1070562394
+	.long	707700964
+	.long	3170814058
+	.long	4008353792
+	.long	1070547965
+	.long	3247327652
+	.long	1022431400
+	.long	2612455424
+	.long	1070533594
+	.long	2453457344
+	.long	3172322969
+	.long	3230920704
+	.long	1070519279
+	.long	1296781801
+	.long	1025115335
+	.long	3965253632
+	.long	1070505020
+	.long	373075289
+	.long	1017938528
+	.long	2593157120
+	.long	1070476669
+	.long	1068054086
+	.long	1021616576
+	.long	925962240
+	.long	1070448537
+	.long	850121213
+	.long	1023928989
+	.long	1732556800
+	.long	1070420620
+	.long	1305206740
+	.long	3172665570
+	.long	3815630848
+	.long	1070392915
+	.long	192642943
+	.long	3172699907
+	.long	2001758208
+	.long	1070365420
+	.long	2820786683
+	.long	1024704867
+	.long	16746496
+	.long	1070338131
+	.long	1399573110
+	.long	3171372773
+	.long	1886492672
+	.long	1070311044
+	.long	3621428075
+	.long	3172974358
+	.long	3338196992
+	.long	1070284157
+	.long	3793882035
+	.long	1025124701
+	.long	381769728
+	.long	1070257468
+	.long	3877933342
+	.long	3170195490
+	.long	2186491904
+	.long	1070230972
+	.long	1838687089
+	.long	1017927292
+	.long	1008330752
+	.long	1070204668
+	.long	2228321664
+	.long	1025352196
+	.long	2247065600
+	.long	1070178552
+	.long	1413900906
+	.long	3170902532
+	.long	2964070400
+	.long	1070152622
+	.long	3590454629
+	.long	1025016844
+	.long	465154048
+	.long	1070126876
+	.long	2079688550
+	.long	3172268183
+	.long	883615744
+	.long	1070101310
+	.long	989244452
+	.long	3171900485
+	.long	1993768960
+	.long	1070075922
+	.long	1124327841
+	.long	3172964992
+	.long	1794471936
+	.long	1070050710
+	.long	1140575046
+	.long	1022673726
+	.long	2797932544
+	.long	1070025671
+	.long	1894836933
+	.long	3172544059
+	.long	3433797632
+	.long	1070000803
+	.long	3221831166
+	.long	3171921685
+	.long	2338371584
+	.long	1069976104
+	.long	3732461053
+	.long	3164513518
+	.long	2644013056
+	.long	1069951571
+	.long	2519460462
+	.long	3172548740
+	.long	3383814144
+	.long	1069927202
+	.long	2290997657
+	.long	1025499649
+	.long	3781380096
+	.long	1069902995
+	.long	380479405
+	.long	1025184136
+	.long	3245785088
+	.long	1069878948
+	.long	1096398261
+	.long	3169885192
+	.long	1366712320
+	.long	1069855059
+	.long	2218343715
+	.long	3170281628
+	.long	2204717056
+	.long	1069831325
+	.long	2668334011
+	.long	1025264524
+	.long	1401772032
+	.long	1069807745
+	.long	4103993159
+	.long	1022925721
+	.long	3356721152
+	.long	1069784316
+	.long	3573790772
+	.long	3172186527
+	.long	4041148416
+	.long	1069761037
+	.long	4027691910
+	.long	3171276990
+	.long	3880151040
+	.long	1069737906
+	.long	4087118786
+	.long	3172710734
+	.long	3453364224
+	.long	1069714921
+	.long	99014299
+	.long	3172003077
+	.long	3491092480
+	.long	1069692080
+	.long	3801836701
+	.long	3172989287
+	.long	575580160
+	.long	1069669382
+	.long	1920406012
+	.long	3170874125
+	.long	22282240
+	.long	1069646824
+	.long	964193370
+	.long	1019363159
+	.long	2991429632
+	.long	1069624404
+	.long	3372589890
+	.long	1023425053
+	.long	2189645824
+	.long	1069602122
+	.long	2610503872
+	.long	1023652442
+	.long	3341467648
+	.long	1069579975
+	.long	1190292004
+	.long	1022425665
+	.long	3711293440
+	.long	1069557962
+	.long	1104795356
+	.long	1023625829
+	.long	1380401152
+	.long	1069524644
+	.long	1156998217
+	.long	1025100499
+	.long	765710336
+	.long	1069481144
+	.long	1736649113
+	.long	1024999439
+	.long	849412096
+	.long	1069437902
+	.long	2618178330
+	.long	3170853629
+	.long	1433104384
+	.long	1069394915
+	.long	43477267
+	.long	3170378811
+	.long	2548596736
+	.long	1069352180
+	.long	3967367063
+	.long	1025246584
+	.long	157577216
+	.long	1069309695
+	.long	100402533
+	.long	3172825502
+	.long	3326238720
+	.long	1069267455
+	.long	1176892909
+	.long	1025464099
+	.long	4155494400
+	.long	1069225459
+	.long	3713707617
+	.long	3172630046
+	.long	3545804800
+	.long	1069183704
+	.long	857007315
+	.long	1024965777
+	.long	2602520576
+	.long	1069142187
+	.long	2588758347
+	.long	1022463131
+	.long	2631196672
+	.long	1069100905
+	.long	2118424235
+	.long	1022490989
+	.long	838135808
+	.long	1069059856
+	.long	4117002727
+	.long	1024874520
+	.long	3210903552
+	.long	1069019036
+	.long	650070125
+	.long	3172012966
+	.long	3039211520
+	.long	1068978444
+	.long	438055812
+	.long	1017743757
+	.long	2385633280
+	.long	1068938077
+	.long	3011990369
+	.long	3171312044
+	.long	3491618816
+	.long	1068897932
+	.long	712813818
+	.long	3172720400
+	.long	183644160
+	.long	1068858008
+	.long	4287006742
+	.long	1022379728
+	.long	3639214080
+	.long	1068818300
+	.long	353762279
+	.long	3172980009
+	.long	3728416768
+	.long	1068778808
+	.long	1851367730
+	.long	1025486574
+	.long	3370094592
+	.long	1068739529
+	.long	4046594913
+	.long	3172567047
+	.long	1348407296
+	.long	1068700461
+	.long	143189675
+	.long	1025397632
+	.long	899403776
+	.long	1068661601
+	.long	3753687842
+	.long	3170772772
+	.long	1117708288
+	.long	1068622947
+	.long	1857340812
+	.long	3170782678
+	.long	1248276480
+	.long	1068584497
+	.long	1289858203
+	.long	1025222289
+	.long	683237376
+	.long	1068546249
+	.long	2356679608
+	.long	3171629170
+	.long	3253764096
+	.long	1068508200
+	.long	3267136556
+	.long	1018554987
+	.long	94478336
+	.long	1068441756
+	.long	1927868814
+	.long	3169378180
+	.long	3233144832
+	.long	1068366445
+	.long	2682188854
+	.long	1023964004
+	.long	2940297216
+	.long	1068291522
+	.long	275301289
+	.long	1023944679
+	.long	3677708288
+	.long	1068216982
+	.long	302658771
+	.long	1024465567
+	.long	1576968192
+	.long	1068142822
+	.long	3672035940
+	.long	3172254610
+	.long	1614069760
+	.long	1068069037
+	.long	480052905
+	.long	3172692062
+	.long	424435712
+	.long	1067995624
+	.long	2207869657
+	.long	3170965436
+	.long	3477782528
+	.long	1067922578
+	.long	2980661858
+	.long	3164990018
+	.long	3598401536
+	.long	1067849897
+	.long	1974393034
+	.long	3171357083
+	.long	2435235840
+	.long	1067777577
+	.long	1385289011
+	.long	1024615823
+	.long	1867333632
+	.long	1067705614
+	.long	3442236633
+	.long	1025334384
+	.long	3999301632
+	.long	1067634004
+	.long	3506472073
+	.long	1025132546
+	.long	2566971392
+	.long	1067562745
+	.long	1425757592
+	.long	3172358463
+	.long	112943104
+	.long	1067491833
+	.long	1693407156
+	.long	3172426603
+	.long	3079929856
+	.long	1067392159
+	.long	3999942455
+	.long	1018549369
+	.long	2443837440
+	.long	1067251701
+	.long	974534460
+	.long	1023963412
+	.long	359366656
+	.long	1067111917
+	.long	2204915018
+	.long	1013514416
+	.long	3564519424
+	.long	1066972799
+	.long	3977441659
+	.long	3170879860
+	.long	2011086848
+	.long	1066834343
+	.long	590145514
+	.long	1025390011
+	.long	3216982016
+	.long	1066696541
+	.long	3629120110
+	.long	1024330313
+	.long	2194128896
+	.long	1066559388
+	.long	2367098512
+	.long	3172260338
+	.long	2916220928
+	.long	1066422877
+	.long	2262431886
+	.long	1021229446
+	.long	2263941120
+	.long	1066172214
+	.long	3118507287
+	.long	1021484970
+	.long	3076292608
+	.long	1065901726
+	.long	1411737803
+	.long	3172957147
+	.long	1186136064
+	.long	1065632488
+	.long	3109349337
+	.long	1025397383
+	.long	3085303808
+	.long	1065364487
+	.long	584715031
+	.long	3172596519
+	.long	1821048832
+	.long	1064842211
+	.long	2182246895
+	.long	3172536214
+	.long	697368576
+	.long	1064311094
+	.long	3157561765
+	.long	3172716357
+	.long	894042112
+	.long	1063260131
+	.long	3237958154
+	.long	3172587292
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1352628224
+	.long	1066615827
+	.long	521319256
+	.long	1021308721
+	.long	3248877870
+	.long	1077250164
+	.long	1691676429
+	.long	3221787401
+	.long	945132465
+	.long	3223701783
+	.long	3700831335
+	.long	1073506818
+	.long	2141010593
+	.long	1075227551
+	.long	3698831637
+	.long	3220339442
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	1071366144
+	.long	3207479560
+	.long	1062894188
+	.type	static_const_table,@object
+	.size	static_const_table,2160
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_pow.S b/libm/x86/e_pow.S
new file mode 100644
index 0000000..43e30d8
--- /dev/null
+++ b/libm/x86/e_pow.S
@@ -0,0 +1,4277 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    log2(x) calculation:
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*LH*2^9+0.5))/2^9
+//    LH is a short approximation for log2(e)
+//
+//    Reduced argument, scaled by LH:
+//                r=B*mx-LH (computed accurately in high and low parts)
+//
+//    log2(x) result:  k - log2(B) + p(r)
+//             p(r) is a degree 8 polynomial
+//             -log2(B) read from data table (high, low parts)
+//             log2(x) is formed from high and low parts
+//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
+//    based om the same table design is performed.
+//
+//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
+//   to filter out all potential OF/UF cases.
+//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
+//   polynomial
+//
+// Special cases:
+//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
+//  integer < 0.
+//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
+//  not an odd integer.
+//  pow(-0,y) = -0 for y an odd integer > 0.
+//  pow(-0,y) = +0 for y > 0 and not an odd integer.
+//  pow(-1,-INF) = 1.
+//  pow(+1,y) = 1 for any y, even a NaN.
+//  pow(x,-0) = 1 for any x, even a NaN.
+//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
+//  finite non-integer y.
+//  pow(x,-INF) = +INF for |x|<1.
+//  pow(x,-INF) = +0 for |x|>1.
+//  pow(x,+INF) = +0 for |x|<1.
+//  pow(x,+INF) = +INF for |x|>1.
+//  pow(-INF,y) = -0 for y an odd integer < 0.
+//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
+//  pow(-INF,y) = -INF for y an odd integer > 0.
+//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
+//  pow(+INF,y) = +0 for y <0.
+//  pow(+INF,y) = +INF for y >0.
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  pow
+ENTRY(pow)
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        movsd     136(%esp), %xmm1
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1069088768, %ecx
+        movd      %ecx, %xmm7
+        movsd     %xmm1, 16(%esp)
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     %xmm0, 8(%esp)
+        movapd    %xmm0, %xmm3
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        movapd    8240(%ebx), %xmm6
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        psrlq     $12, %xmm3
+        movl      %esi, 24(%esp)
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        movl      $0, %esi
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        movl      $-1, %edx
+        subl      $4, %ecx
+        shll      %cl, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        subl      $16351, %eax
+        cmpl      $1, %eax
+        jbe       .L_2TAG_PACKET_2.0.2
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+.L_2TAG_PACKET_3.0.2:
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        subl      $1, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm0, %xmm3
+        movapd    8272(%ebx), %xmm1
+        subsd     %xmm2, %xmm5
+        movapd    8288(%ebx), %xmm4
+        movl      %eax, %ecx
+        sarl      $31, %eax
+        addl      %eax, %ecx
+        xorl      %ecx, %eax
+        addl      $1, %eax
+        bsr       %eax, %eax
+        unpcklpd  %xmm3, %xmm5
+        movapd    8304(%ebx), %xmm6
+        addsd     %xmm5, %xmm3
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3616(%ebx,%edx), %xmm5
+        movapd    8320(%ebx), %xmm0
+        pshufd    $68, %xmm3, %xmm2
+        mulsd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm1
+        mulpd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm5
+        mulsd     %xmm3, %xmm2
+        addpd     %xmm1, %xmm6
+        mulsd     %xmm3, %xmm3
+        addpd     %xmm4, %xmm0
+        movsd     16(%esp), %xmm1
+        movzwl    22(%esp), %ecx
+        pshufd    $238, %xmm5, %xmm7
+        movsd     8368(%ebx), %xmm4
+        mulpd     %xmm2, %xmm6
+        pshufd    $68, %xmm3, %xmm3
+        mulpd     %xmm2, %xmm0
+        shll      $4, %eax
+        subl      $15872, %eax
+        andl      $32752, %ecx
+        addl      %ecx, %eax
+        mulpd     %xmm6, %xmm3
+        cmpl      $624, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        movapd    %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm5, %xmm1
+        movapd    %xmm6, %xmm7
+        addsd     %xmm4, %xmm6
+        addpd     %xmm0, %xmm3
+        movd      %xmm6, %edx
+        subsd     %xmm7, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        subsd     %xmm6, %xmm4
+        addsd     %xmm3, %xmm0
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    8384(%ebx,%edx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        movapd    12480(%ebx), %xmm7
+        movapd    12496(%ebx), %xmm3
+        shll      $12, %ecx
+        xorl      %esi, %ecx
+        andl      $-1048576, %ecx
+        movd      %ecx, %xmm6
+        addsd     %xmm4, %xmm2
+        movsd     12512(%ebx), %xmm1
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        movl      24(%esp), %esi
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        movsd     128(%esp), %xmm0
+        movsd     136(%esp), %xmm1
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16, %eax
+        movl      $32752, %edx
+        andl      %eax, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_8.0.2
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        movl      16(%esp), %ecx
+        xorl      %edx, %edx
+        testl     %ecx, %ecx
+        movl      $1, %ecx
+        cmovne    %ecx, %edx
+        orl       20(%esp), %edx
+        cmpl      $1072693248, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    8240(%ebx), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $0, %esi
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_12.0.2:
+        movl      16(%esp), %ecx
+        xorl      %edx, %edx
+        testl     %ecx, %ecx
+        movl      $1, %ecx
+        cmovne    %ecx, %edx
+        orl       20(%esp), %edx
+        cmpl      $1072693248, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_11.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psllq     $5, %xmm0
+        movsd     8256(%ebx), %xmm2
+        psrlq     $34, %xmm0
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    8240(%ebx), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $-2147483648, %esi
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_13.0.2
+        cmpl      $736, %eax
+        jae       .L_2TAG_PACKET_14.0.2
+.L_2TAG_PACKET_15.0.2:
+        addsd     %xmm7, %xmm0
+        movsd     12544(%ebx), %xmm2
+        addpd     %xmm0, %xmm3
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm3, %xmm0
+        movapd    %xmm5, %xmm3
+        addsd     %xmm0, %xmm5
+        movapd    %xmm2, %xmm4
+        subsd     %xmm5, %xmm3
+        movapd    %xmm5, %xmm7
+        andpd     %xmm2, %xmm5
+        movapd    %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm7
+        addsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm0, %xmm2
+        movapd    %xmm6, %xmm7
+        mulsd     %xmm5, %xmm1
+        addsd     %xmm4, %xmm6
+        movd      %xmm6, %eax
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm2
+        movapd    12480(%ebx), %xmm7
+        movapd    12496(%ebx), %xmm3
+        subsd     %xmm6, %xmm4
+        pextrw    $3, %xmm6, %edx
+        movl      %eax, %ecx
+        andl      $255, %eax
+        addl      %eax, %eax
+        movapd    8384(%ebx,%eax,8), %xmm5
+        addsd     %xmm4, %xmm2
+        sarl      $8, %ecx
+        movl      %ecx, %eax
+        sarl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        xorl      %esi, %ecx
+        movd      %ecx, %xmm6
+        movsd     12512(%ebx), %xmm1
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_14.0.2
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        shll      $4, %eax
+        xorpd     %xmm4, %xmm4
+        addl      $16368, %eax
+        pinsrw    $3, %eax, %xmm4
+        addsd     %xmm1, %xmm0
+        movl      24(%esp), %esi
+        addsd     %xmm3, %xmm0
+        movapd    %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_18.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_8.0.2:
+        movsd     16(%esp), %xmm1
+        movsd     8(%esp), %xmm0
+        movapd    %xmm0, %xmm2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_19.0.2
+        addsd     %xmm0, %xmm0
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_20.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_20.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $29, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_22.0.2:
+        movsd     16(%esp), %xmm0
+        addpd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_19.0.2:
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_23.0.2
+        pextrw    $3, %xmm2, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+.L_2TAG_PACKET_24.0.2:
+        pextrw    $3, %xmm0, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_25.0.2
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_26.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_27.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_28.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_29.0.2
+        jmp       .L_2TAG_PACKET_28.0.2
+.L_2TAG_PACKET_25.0.2:
+        shrl      $20, %ecx
+        andl      $2047, %ecx
+        cmpl      $1075, %ecx
+        ja        .L_2TAG_PACKET_28.0.2
+        je        .L_2TAG_PACKET_30.0.2
+        cmpl      $1074, %ecx
+        ja        .L_2TAG_PACKET_27.0.2
+        cmpl      $1023, %ecx
+        jb        .L_2TAG_PACKET_28.0.2
+        movsd     16(%esp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movapd    %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_28.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_28.0.2
+.L_2TAG_PACKET_29.0.2:
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        je        .L_2TAG_PACKET_18.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_28.0.2:
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_26.0.2
+.L_2TAG_PACKET_31.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_30.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_28.0.2
+        jmp       .L_2TAG_PACKET_29.0.2
+.L_2TAG_PACKET_32.0.2:
+        movd      %xmm1, %eax
+        psrlq     $20, %xmm1
+        movd      %xmm1, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_33.0.2
+        movsd     16(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_33.0.2:
+        movsd     8(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        cmpl      $49136, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        movd      %xmm0, %ecx
+        psrlq     $20, %xmm0
+        movd      %xmm0, %edx
+        orl       %edx, %ecx
+        jne       .L_2TAG_PACKET_34.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_34.0.2:
+        movsd     16(%esp), %xmm1
+        andl      $32752, %eax
+        subl      $16368, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        xorl      %edx, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+        movl      $32752, %ecx
+        pinsrw    $3, %ecx, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_35.0.2:
+        movd      %xmm1, %eax
+        cmpl      $17184, %edx
+        ja        .L_2TAG_PACKET_36.0.2
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_37.0.2
+        testl     $2, %eax
+        je        .L_2TAG_PACKET_38.0.2
+        jmp       .L_2TAG_PACKET_39.0.2
+.L_2TAG_PACKET_36.0.2:
+        testl     $1, %eax
+        je        .L_2TAG_PACKET_38.0.2
+        jmp       .L_2TAG_PACKET_39.0.2
+.L_2TAG_PACKET_9.0.2:
+        movsd     8(%esp), %xmm2
+        movd      %xmm2, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_11.0.2
+        movsd     16(%esp), %xmm1
+        pextrw    $3, %xmm1, %edx
+        movd      %xmm1, %eax
+        movapd    %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        addl      %ecx, %ecx
+        orl       %eax, %ecx
+        je        .L_2TAG_PACKET_40.0.2
+        andl      $32752, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_32.0.2
+        cmpl      $17200, %edx
+        ja        .L_2TAG_PACKET_38.0.2
+        cmpl      $17184, %edx
+        jae       .L_2TAG_PACKET_35.0.2
+        cmpl      $16368, %edx
+        jb        .L_2TAG_PACKET_37.0.2
+        movl      $17208, %eax
+        xorpd     %xmm2, %xmm2
+        pinsrw    $3, %eax, %xmm2
+        movapd    %xmm2, %xmm4
+        addsd     %xmm1, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32767, %eax
+        jne       .L_2TAG_PACKET_37.0.2
+        movd      %xmm2, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_38.0.2
+.L_2TAG_PACKET_39.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     8256(%ebx), %xmm2
+        movsd     8(%esp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_12.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $-2147483648, %esi
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_37.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        xorpd     %xmm0, %xmm0
+        mulsd     %xmm1, %xmm0
+        movl      $28, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_38.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movsd     8256(%ebx), %xmm2
+        movsd     8(%esp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_10.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $0, %esi
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_23.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_26.0.2:
+        xorpd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_13.0.2:
+        addl      $384, %eax
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_41.0.2
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm0
+        shrl      $31, %esi
+        addpd     %xmm0, %xmm3
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm0, %xmm3
+        movsd     12528(%ebx,%esi,8), %xmm4
+        mulsd     %xmm3, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        shll      $15, %esi
+        orl       %esi, %eax
+        pinsrw    $3, %eax, %xmm0
+        addsd     %xmm1, %xmm5
+        movl      24(%esp), %esi
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_41.0.2:
+        movl      24(%esp), %esi
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_40.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_42.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $26, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     16(%esp), %xmm1
+        movapd    %xmm1, %xmm2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_43.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+.L_2TAG_PACKET_43.0.2:
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_42.0.2
+        shrl      $21, %edx
+        cmpl      $1075, %edx
+        ja        .L_2TAG_PACKET_44.0.2
+        je        .L_2TAG_PACKET_45.0.2
+        cmpl      $1023, %edx
+        jb        .L_2TAG_PACKET_44.0.2
+        movsd     16(%esp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movapd    %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_44.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_44.0.2
+.L_2TAG_PACKET_46.0.2:
+        movsd     8(%esp), %xmm0
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_47.0.2
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_45.0.2:
+        movsd     16(%esp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_44.0.2:
+        testl     $-2147483648, %ecx
+        je        .L_2TAG_PACKET_26.0.2
+        xorpd     %xmm0, %xmm0
+.L_2TAG_PACKET_47.0.2:
+        movl      $16368, %eax
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %eax, %xmm1
+        divsd     %xmm0, %xmm1
+        movapd    %xmm1, %xmm0
+        movl      $27, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_14.0.2:
+        movsd     8(%esp), %xmm2
+        movsd     16(%esp), %xmm6
+        pextrw    $3, %xmm2, %eax
+        pextrw    $3, %xmm6, %edx
+        movl      $32752, %ecx
+        andl      %edx, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_48.0.2
+        andl      $32752, %eax
+        subl      $16368, %eax
+        xorl      %eax, %edx
+        testl     $32768, %edx
+        jne       .L_2TAG_PACKET_49.0.2
+.L_2TAG_PACKET_50.0.2:
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        shrl      $16, %esi
+        orl       %esi, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      24(%esp), %esi
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_17.0.2:
+        movl      $24, %edx
+.L_2TAG_PACKET_21.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_49.0.2:
+        movl      $16, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        testl     $-2147483648, %esi
+        je        .L_2TAG_PACKET_51.0.2
+        movsd     12560(%ebx), %xmm2
+        xorpd     %xmm2, %xmm0
+.L_2TAG_PACKET_51.0.2:
+        movl      24(%esp), %esi
+        movl      $25, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_16.0.2:
+        pextrw    $3, %xmm5, %ecx
+        pextrw    $3, %xmm4, %edx
+        movl      $-1, %eax
+        andl      $32752, %ecx
+        subl      $16368, %ecx
+        andl      $32752, %edx
+        addl      %ecx, %edx
+        movl      $-31, %ecx
+        sarl      $4, %edx
+        subl      %edx, %ecx
+        jle       .L_2TAG_PACKET_52.0.2
+        cmpl      $20, %ecx
+        ja        .L_2TAG_PACKET_53.0.2
+        shll      %cl, %eax
+.L_2TAG_PACKET_52.0.2:
+        movd      %eax, %xmm0
+        psllq     $32, %xmm0
+        andpd     %xmm5, %xmm0
+        subsd     %xmm0, %xmm5
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm0
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+.L_2TAG_PACKET_53.0.2:
+        movl      $25, %edx
+        jmp       .L_2TAG_PACKET_21.0.2
+.L_2TAG_PACKET_2.0.2:
+        movzwl    22(%esp), %ecx
+        movl      $-2147483648, %edx
+        movd      %edx, %xmm1
+        xorpd     %xmm7, %xmm7
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        paddq     %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        andl      $32752, %ecx
+        cmpl      $16560, %ecx
+        jb        .L_2TAG_PACKET_3.0.2
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        addl      $16351, %eax
+        shrl      $4, %eax
+        subl      $1022, %eax
+        cvtsi2sdl %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        movsd     (%ebx), %xmm4
+        mulsd     %xmm0, %xmm3
+        movsd     (%ebx), %xmm6
+        subsd     %xmm2, %xmm5
+        movsd     8(%ebx), %xmm1
+        pshufd    $68, %xmm3, %xmm2
+        unpcklpd  %xmm3, %xmm5
+        addsd     %xmm5, %xmm3
+        movsd     8(%ebx), %xmm0
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3616(%ebx,%edx), %xmm7
+        mulsd     %xmm5, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        movapd    %xmm5, %xmm2
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm0, %xmm5
+        movapd    %xmm7, %xmm0
+        addsd     %xmm3, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm6
+        subsd     %xmm7, %xmm0
+        movapd    %xmm7, %xmm2
+        addsd     %xmm4, %xmm7
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm4
+        pshufd    $238, %xmm5, %xmm2
+        movapd    %xmm7, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm0, %xmm4
+        movapd    8272(%ebx), %xmm0
+        subsd     %xmm7, %xmm5
+        addsd     %xmm4, %xmm6
+        movapd    %xmm7, %xmm4
+        addsd     %xmm2, %xmm5
+        addsd     %xmm1, %xmm7
+        movapd    8336(%ebx), %xmm2
+        subsd     %xmm7, %xmm4
+        addsd     %xmm5, %xmm6
+        addsd     %xmm1, %xmm4
+        pshufd    $238, %xmm7, %xmm5
+        movapd    %xmm7, %xmm1
+        addsd     %xmm5, %xmm7
+        subsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        movapd    8352(%ebx), %xmm5
+        pshufd    $68, %xmm3, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm1, %xmm6
+        movapd    8304(%ebx), %xmm1
+        mulpd     %xmm3, %xmm0
+        mulpd     %xmm3, %xmm2
+        pshufd    $68, %xmm3, %xmm4
+        mulpd     %xmm3, %xmm3
+        addpd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm5
+        mulsd     %xmm3, %xmm4
+        movsd     16(%ebx), %xmm2
+        mulpd     %xmm3, %xmm3
+        movsd     16(%esp), %xmm1
+        movzwl    22(%esp), %ecx
+        mulpd     %xmm4, %xmm0
+        pextrw    $3, %xmm7, %eax
+        mulpd     %xmm4, %xmm5
+        mulpd     %xmm3, %xmm0
+        movsd     8376(%ebx), %xmm4
+        andpd     %xmm7, %xmm2
+        addsd     %xmm6, %xmm5
+        subsd     %xmm2, %xmm7
+        addpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      $16368, %eax
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_48.0.2
+        addl      %eax, %ecx
+        cmpl      $16576, %ecx
+        jae       .L_2TAG_PACKET_54.0.2
+        pshufd    $238, %xmm5, %xmm0
+        andpd     %xmm1, %xmm4
+        movapd    %xmm1, %xmm3
+        addsd     %xmm0, %xmm5
+        subsd     %xmm4, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        movapd    %xmm6, %xmm5
+        mulsd     %xmm7, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        movapd    12480(%ebx), %xmm7
+        movd      %xmm6, %edx
+        subsd     %xmm5, %xmm6
+        movapd    12496(%ebx), %xmm3
+        movsd     12512(%ebx), %xmm2
+        subsd     %xmm6, %xmm4
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    8384(%ebx,%edx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        pextrw    $3, %xmm6, %edx
+        shrl      $8, %ecx
+        movl      %ecx, %eax
+        shrl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        movd      %ecx, %xmm6
+        pshufd    $68, %xmm4, %xmm0
+        pshufd    $68, %xmm4, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm1, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm4, %xmm2
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_14.0.2
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm2
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm2
+        pshufd    $238, %xmm0, %xmm3
+        addl      $1023, %eax
+        shll      $20, %eax
+        orl       %esi, %eax
+        movd      %eax, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm2, %xmm0
+        psllq     $32, %xmm4
+        addsd     %xmm3, %xmm0
+        movapd    %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        movl      24(%esp), %esi
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_55.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_48.0.2:
+        movl      24(%esp), %esi
+.L_2TAG_PACKET_56.0.2:
+        movsd     8(%esp), %xmm0
+        movsd     16(%esp), %xmm1
+        addsd     %xmm1, %xmm1
+        xorpd     %xmm2, %xmm2
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm2
+        addsd     %xmm0, %xmm2
+        pextrw    $3, %xmm2, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_18.0.2
+        movd      %xmm1, %edx
+        movapd    %xmm1, %xmm3
+        psrlq     $20, %xmm3
+        movd      %xmm3, %ecx
+        orl       %edx, %ecx
+        je        .L_2TAG_PACKET_57.0.2
+        addsd     %xmm1, %xmm1
+        movapd    %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_57.0.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        subl      $16368, %eax
+        xorl      %edx, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_54.0.2:
+        pextrw    $3, %xmm1, %eax
+        pextrw    $3, %xmm2, %ecx
+        xorl      %ecx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_50.0.2
+        jmp       .L_2TAG_PACKET_49.0.2
+.L_2TAG_PACKET_6.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(pow)
+# -- End  pow
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	3218479616
+	.long	0
+	.long	3210587105
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	536870912
+	.long	1072689162
+	.long	2523013013
+	.long	1046157398
+	.long	3758096384
+	.long	1072685081
+	.long	3851513758
+	.long	3190968952
+	.long	0
+	.long	1072681007
+	.long	2241466466
+	.long	1046044599
+	.long	3221225472
+	.long	1072676937
+	.long	2990928271
+	.long	3193084984
+	.long	3758096384
+	.long	1072672873
+	.long	2905112743
+	.long	3192918576
+	.long	1610612736
+	.long	1072668815
+	.long	3370591264
+	.long	1046051793
+	.long	2147483648
+	.long	1072664762
+	.long	3272361216
+	.long	3193793653
+	.long	3758096384
+	.long	1072660714
+	.long	46546755
+	.long	1043206936
+	.long	3221225472
+	.long	1072656672
+	.long	3017067724
+	.long	3192177962
+	.long	0
+	.long	1072652636
+	.long	3688436631
+	.long	3192814956
+	.long	2684354560
+	.long	1072648604
+	.long	1707461992
+	.long	3193056712
+	.long	2684354560
+	.long	1072644578
+	.long	1188114540
+	.long	3193603086
+	.long	3758096384
+	.long	1072640557
+	.long	3533180564
+	.long	1045459375
+	.long	2684354560
+	.long	1072636542
+	.long	2000337630
+	.long	3193475557
+	.long	2684354560
+	.long	1072632532
+	.long	3698062443
+	.long	3193752766
+	.long	3758096384
+	.long	1072628527
+	.long	3161606138
+	.long	3190532995
+	.long	2147483648
+	.long	1072624528
+	.long	3165265478
+	.long	3193158459
+	.long	1610612736
+	.long	1072620534
+	.long	1600940077
+	.long	3193226777
+	.long	2147483648
+	.long	1072616545
+	.long	1363272552
+	.long	3192614278
+	.long	3758096384
+	.long	1072612561
+	.long	3966209910
+	.long	3191249654
+	.long	2147483648
+	.long	1072608583
+	.long	1093672789
+	.long	3190637330
+	.long	1610612736
+	.long	1072604610
+	.long	1735239357
+	.long	3192753616
+	.long	1610612736
+	.long	1072600642
+	.long	1470665156
+	.long	1045559697
+	.long	2684354560
+	.long	1072596679
+	.long	3840624926
+	.long	1045928953
+	.long	536870912
+	.long	1072592722
+	.long	4259072556
+	.long	3191035622
+	.long	3221225472
+	.long	1072588769
+	.long	3613088753
+	.long	3192165681
+	.long	2147483648
+	.long	1072584822
+	.long	3175234446
+	.long	1039486948
+	.long	1610612736
+	.long	1072580880
+	.long	856576441
+	.long	1045702812
+	.long	2147483648
+	.long	1072576943
+	.long	2253498719
+	.long	3193285334
+	.long	2684354560
+	.long	1072573011
+	.long	1587070728
+	.long	3190801577
+	.long	3758096384
+	.long	1072569084
+	.long	159986317
+	.long	1042519436
+	.long	1073741824
+	.long	1072565163
+	.long	3999541949
+	.long	3192020440
+	.long	2684354560
+	.long	1072561246
+	.long	3281310262
+	.long	1045586786
+	.long	536870912
+	.long	1072557335
+	.long	3775179406
+	.long	1045226055
+	.long	3221225472
+	.long	1072553428
+	.long	643472356
+	.long	3193681786
+	.long	1073741824
+	.long	1072549527
+	.long	248169775
+	.long	1045068977
+	.long	3758096384
+	.long	1072545630
+	.long	307016632
+	.long	1042640932
+	.long	2147483648
+	.long	1072541739
+	.long	3872718526
+	.long	3189781486
+	.long	536870912
+	.long	1072537853
+	.long	969711630
+	.long	3191724732
+	.long	3221225472
+	.long	1072533971
+	.long	4018820394
+	.long	3193189264
+	.long	1073741824
+	.long	1072530095
+	.long	3102233092
+	.long	1045510224
+	.long	3758096384
+	.long	1072526223
+	.long	1029307912
+	.long	3193812776
+	.long	1073741824
+	.long	1072522357
+	.long	984083153
+	.long	1045987403
+	.long	3221225472
+	.long	1072518495
+	.long	4171455401
+	.long	3193084080
+	.long	0
+	.long	1072514639
+	.long	2592660757
+	.long	1046121691
+	.long	1073741824
+	.long	1072510787
+	.long	2964365712
+	.long	1046054453
+	.long	2147483648
+	.long	1072506940
+	.long	3792777877
+	.long	3193704729
+	.long	2147483648
+	.long	1072503098
+	.long	2948536104
+	.long	3192467100
+	.long	1610612736
+	.long	1072499261
+	.long	3836005619
+	.long	1041873166
+	.long	536870912
+	.long	1072495429
+	.long	3124543160
+	.long	1044409168
+	.long	3221225472
+	.long	1072491601
+	.long	286227933
+	.long	1041065990
+	.long	1073741824
+	.long	1072487779
+	.long	2111296776
+	.long	3193604419
+	.long	2147483648
+	.long	1072483961
+	.long	2606822001
+	.long	3192940394
+	.long	2147483648
+	.long	1072480148
+	.long	194696800
+	.long	1046026063
+	.long	1610612736
+	.long	1072476340
+	.long	8535452
+	.long	1046200178
+	.long	536870912
+	.long	1072472537
+	.long	950463625
+	.long	3192731897
+	.long	2147483648
+	.long	1072468738
+	.long	973831566
+	.long	1045683197
+	.long	3221225472
+	.long	1072464944
+	.long	3330435892
+	.long	3190277577
+	.long	3221225472
+	.long	1072461155
+	.long	208692097
+	.long	3193517651
+	.long	1610612736
+	.long	1072457371
+	.long	2113097415
+	.long	1044781749
+	.long	3758096384
+	.long	1072453591
+	.long	1088808936
+	.long	3193716142
+	.long	0
+	.long	1072449817
+	.long	1443002127
+	.long	3193250205
+	.long	3221225472
+	.long	1072446046
+	.long	3967357419
+	.long	1046109477
+	.long	1610612736
+	.long	1072442281
+	.long	3013517861
+	.long	3193159691
+	.long	2147483648
+	.long	1072438520
+	.long	2524586286
+	.long	1046121951
+	.long	1610612736
+	.long	1072434764
+	.long	1476892861
+	.long	1046434731
+	.long	0
+	.long	1072431013
+	.long	3089640950
+	.long	3192305780
+	.long	536870912
+	.long	1072427266
+	.long	3812255529
+	.long	1045730879
+	.long	0
+	.long	1072423524
+	.long	995354762
+	.long	3191528673
+	.long	1610612736
+	.long	1072419786
+	.long	3260567684
+	.long	1046273695
+	.long	2147483648
+	.long	1072416053
+	.long	2738210286
+	.long	3191471516
+	.long	536870912
+	.long	1072412325
+	.long	1931849805
+	.long	1044560405
+	.long	1610612736
+	.long	1072408601
+	.long	358896655
+	.long	1044029237
+	.long	1073741824
+	.long	1072404882
+	.long	2214589842
+	.long	3193202126
+	.long	2684354560
+	.long	1072401167
+	.long	3118097363
+	.long	3192592906
+	.long	2147483648
+	.long	1072397457
+	.long	1835998884
+	.long	1045788247
+	.long	0
+	.long	1072393752
+	.long	1585488319
+	.long	1045289910
+	.long	0
+	.long	1072390051
+	.long	480160949
+	.long	1046030455
+	.long	2684354560
+	.long	1072386354
+	.long	1832959667
+	.long	3193013644
+	.long	2684354560
+	.long	1072382662
+	.long	3611346555
+	.long	1044544210
+	.long	1073741824
+	.long	1072378975
+	.long	2749418734
+	.long	3193712580
+	.long	1073741824
+	.long	1072375292
+	.long	2390043472
+	.long	3191710658
+	.long	3221225472
+	.long	1072371613
+	.long	2828199902
+	.long	1042265217
+	.long	3221225472
+	.long	1072367939
+	.long	569209321
+	.long	3191230982
+	.long	536870912
+	.long	1072364270
+	.long	236159139
+	.long	1046240123
+	.long	536870912
+	.long	1072360605
+	.long	1010656270
+	.long	3193813968
+	.long	1610612736
+	.long	1072356944
+	.long	2409080597
+	.long	1044025029
+	.long	536870912
+	.long	1072353288
+	.long	598419513
+	.long	1043327370
+	.long	1073741824
+	.long	1072349636
+	.long	4105950479
+	.long	1045747958
+	.long	3758096384
+	.long	1072345988
+	.long	343243853
+	.long	3192420172
+	.long	3221225472
+	.long	1072342345
+	.long	2088439530
+	.long	1046172091
+	.long	536870912
+	.long	1072338707
+	.long	4117721107
+	.long	1043882496
+	.long	3758096384
+	.long	1072335072
+	.long	3192032958
+	.long	3192998645
+	.long	3758096384
+	.long	1072331442
+	.long	2366522518
+	.long	1045401957
+	.long	1610612736
+	.long	1072327817
+	.long	3685533141
+	.long	3193701947
+	.long	536870912
+	.long	1072324196
+	.long	1058658672
+	.long	3193572492
+	.long	536870912
+	.long	1072320579
+	.long	166346347
+	.long	1045456348
+	.long	2147483648
+	.long	1072316966
+	.long	2027889772
+	.long	1046349302
+	.long	1073741824
+	.long	1072313358
+	.long	1079497888
+	.long	1044585259
+	.long	1073741824
+	.long	1072309754
+	.long	2189851573
+	.long	1045132990
+	.long	2684354560
+	.long	1072306154
+	.long	2486629386
+	.long	3193613625
+	.long	536870912
+	.long	1072302559
+	.long	1263686579
+	.long	1044789259
+	.long	0
+	.long	1072298968
+	.long	2412061798
+	.long	3191369627
+	.long	536870912
+	.long	1072295381
+	.long	584315716
+	.long	3193144135
+	.long	1610612736
+	.long	1072291798
+	.long	449000738
+	.long	1046330451
+	.long	0
+	.long	1072288220
+	.long	3938320157
+	.long	1044446220
+	.long	3758096384
+	.long	1072284645
+	.long	2949844595
+	.long	3193462371
+	.long	3758096384
+	.long	1072281075
+	.long	2771329642
+	.long	3192121593
+	.long	536870912
+	.long	1072277510
+	.long	3971508621
+	.long	3193002806
+	.long	2147483648
+	.long	1072273948
+	.long	4071942301
+	.long	1044952619
+	.long	536870912
+	.long	1072270391
+	.long	2090502395
+	.long	1044660556
+	.long	0
+	.long	1072266838
+	.long	3657520961
+	.long	3193770938
+	.long	3758096384
+	.long	1072263288
+	.long	1608175110
+	.long	1045543239
+	.long	0
+	.long	1072259744
+	.long	2506924180
+	.long	1045530501
+	.long	1073741824
+	.long	1072256203
+	.long	18238493
+	.long	1046305623
+	.long	3221225472
+	.long	1072252666
+	.long	3862640487
+	.long	3192882407
+	.long	1073741824
+	.long	1072249134
+	.long	3850158761
+	.long	1043656099
+	.long	3758096384
+	.long	1072245605
+	.long	2356524356
+	.long	1045915296
+	.long	3221225472
+	.long	1072242081
+	.long	936497287
+	.long	3193842353
+	.long	2147483648
+	.long	1072238561
+	.long	2840845344
+	.long	1046454771
+	.long	2147483648
+	.long	1072235045
+	.long	3688100713
+	.long	1044895451
+	.long	2684354560
+	.long	1072231533
+	.long	479979913
+	.long	3193842442
+	.long	2684354560
+	.long	1072228025
+	.long	1016321898
+	.long	1046251032
+	.long	3758096384
+	.long	1072224521
+	.long	562232474
+	.long	3191974558
+	.long	536870912
+	.long	1072221022
+	.long	3870512029
+	.long	3193113881
+	.long	1610612736
+	.long	1072217526
+	.long	1239780547
+	.long	3191583604
+	.long	2684354560
+	.long	1072214034
+	.long	2815421327
+	.long	1045873682
+	.long	0
+	.long	1072210547
+	.long	2371009561
+	.long	1041508792
+	.long	1610612736
+	.long	1072207063
+	.long	1304636524
+	.long	3192414284
+	.long	3221225472
+	.long	1072203583
+	.long	210144854
+	.long	3193327333
+	.long	0
+	.long	1072200108
+	.long	1454303272
+	.long	1046360024
+	.long	1610612736
+	.long	1072196636
+	.long	2095757548
+	.long	1044984677
+	.long	3221225472
+	.long	1072193168
+	.long	2027215580
+	.long	3192880933
+	.long	0
+	.long	1072189705
+	.long	214794880
+	.long	1043457954
+	.long	1073741824
+	.long	1072186245
+	.long	884624917
+	.long	1043497079
+	.long	2147483648
+	.long	1072182789
+	.long	2792396634
+	.long	3193171685
+	.long	2684354560
+	.long	1072179337
+	.long	4128995250
+	.long	3192103434
+	.long	2684354560
+	.long	1072175889
+	.long	333866043
+	.long	1046372325
+	.long	3221225472
+	.long	1072172445
+	.long	2194445544
+	.long	3193958905
+	.long	2684354560
+	.long	1072169005
+	.long	2316082269
+	.long	3192041703
+	.long	1610612736
+	.long	1072165569
+	.long	581005057
+	.long	1046322848
+	.long	536870912
+	.long	1072162137
+	.long	3280786513
+	.long	1045457251
+	.long	3221225472
+	.long	1072158708
+	.long	2567093361
+	.long	1044710359
+	.long	1073741824
+	.long	1072155284
+	.long	3740443584
+	.long	1044224237
+	.long	2684354560
+	.long	1072151863
+	.long	3981028272
+	.long	1042596351
+	.long	3758096384
+	.long	1072148446
+	.long	3820011120
+	.long	3191915623
+	.long	0
+	.long	1072145034
+	.long	2946439484
+	.long	3193831276
+	.long	3758096384
+	.long	1072141624
+	.long	3075274422
+	.long	3190132432
+	.long	2684354560
+	.long	1072138219
+	.long	496052167
+	.long	1043619760
+	.long	1073741824
+	.long	1072134818
+	.long	271106589
+	.long	3192265149
+	.long	2684354560
+	.long	1072131420
+	.long	2091955684
+	.long	1044443554
+	.long	3758096384
+	.long	1072128026
+	.long	723240109
+	.long	3191007419
+	.long	3758096384
+	.long	1072124636
+	.long	1748629070
+	.long	1044510075
+	.long	3221225472
+	.long	1072121250
+	.long	3289522046
+	.long	3193095178
+	.long	1610612736
+	.long	1072117868
+	.long	3599052146
+	.long	3193720427
+	.long	3221225472
+	.long	1072114489
+	.long	2446758135
+	.long	3193436303
+	.long	3758096384
+	.long	1072111114
+	.long	1652171097
+	.long	3192137173
+	.long	3221225472
+	.long	1072107743
+	.long	1353007155
+	.long	1044523902
+	.long	1610612736
+	.long	1072104376
+	.long	990601105
+	.long	1046296663
+	.long	3758096384
+	.long	1072101012
+	.long	2228627618
+	.long	3193041040
+	.long	0
+	.long	1072097653
+	.long	812484756
+	.long	3191950723
+	.long	3758096384
+	.long	1072094296
+	.long	817833130
+	.long	3192279242
+	.long	2147483648
+	.long	1072090944
+	.long	3563228521
+	.long	3193810951
+	.long	3221225472
+	.long	1072087595
+	.long	2729108859
+	.long	3190936185
+	.long	3221225472
+	.long	1072084250
+	.long	2249121662
+	.long	3190639690
+	.long	2147483648
+	.long	1072080909
+	.long	4082471745
+	.long	3193929368
+	.long	3758096384
+	.long	1072077571
+	.long	2827323806
+	.long	3193708561
+	.long	3758096384
+	.long	1072074237
+	.long	735866167
+	.long	1042434690
+	.long	2684354560
+	.long	1072070907
+	.long	3240808889
+	.long	3191918422
+	.long	0
+	.long	1072067581
+	.long	466482777
+	.long	3186962221
+	.long	0
+	.long	1072064258
+	.long	1576076296
+	.long	1045849056
+	.long	3221225472
+	.long	1072060938
+	.long	2751923560
+	.long	3191910703
+	.long	0
+	.long	1072057623
+	.long	1908755527
+	.long	1046437515
+	.long	0
+	.long	1072054311
+	.long	3175841411
+	.long	1044572886
+	.long	2684354560
+	.long	1072051002
+	.long	1633258450
+	.long	3192670420
+	.long	3221225472
+	.long	1072047697
+	.long	1867746657
+	.long	1045726209
+	.long	2684354560
+	.long	1072044396
+	.long	338968864
+	.long	3193084662
+	.long	0
+	.long	1072041099
+	.long	1501742471
+	.long	3191742031
+	.long	0
+	.long	1072037805
+	.long	4266775786
+	.long	3192686970
+	.long	2147483648
+	.long	1072034514
+	.long	4249283553
+	.long	1045769728
+	.long	2684354560
+	.long	1072031227
+	.long	2758366873
+	.long	1046402161
+	.long	1610612736
+	.long	1072027944
+	.long	2161186990
+	.long	1044736865
+	.long	2684354560
+	.long	1072024664
+	.long	810300171
+	.long	1045748777
+	.long	2147483648
+	.long	1072021388
+	.long	183688927
+	.long	3191515581
+	.long	3758096384
+	.long	1072018115
+	.long	368874072
+	.long	3192363575
+	.long	3221225472
+	.long	1072014846
+	.long	2459092970
+	.long	1041794640
+	.long	536870912
+	.long	1072011581
+	.long	867488640
+	.long	1046310291
+	.long	536870912
+	.long	1072008319
+	.long	50140871
+	.long	1043327329
+	.long	2684354560
+	.long	1072005060
+	.long	1241902518
+	.long	3192739252
+	.long	2684354560
+	.long	1072001805
+	.long	1027881659
+	.long	3193858388
+	.long	0
+	.long	1071998554
+	.long	38457322
+	.long	1045489179
+	.long	0
+	.long	1071995306
+	.long	3432963337
+	.long	3190969347
+	.long	1610612736
+	.long	1071992061
+	.long	534931792
+	.long	1046302734
+	.long	1610612736
+	.long	1071988820
+	.long	1817895268
+	.long	3192551860
+	.long	3221225472
+	.long	1071985582
+	.long	357237383
+	.long	3191870833
+	.long	2684354560
+	.long	1071982348
+	.long	108262401
+	.long	3193365867
+	.long	3758096384
+	.long	1071979117
+	.long	1964729244
+	.long	1042502249
+	.long	2684354560
+	.long	1071975890
+	.long	2088446957
+	.long	1038010503
+	.long	3221225472
+	.long	1071972666
+	.long	2947239447
+	.long	1046377845
+	.long	1610612736
+	.long	1071969446
+	.long	774932072
+	.long	1046064854
+	.long	2147483648
+	.long	1071966229
+	.long	4080937590
+	.long	3193041284
+	.long	3758096384
+	.long	1071963015
+	.long	2208251454
+	.long	1045945089
+	.long	3221225472
+	.long	1071959805
+	.long	2850924475
+	.long	1045650959
+	.long	0
+	.long	1071956599
+	.long	714040997
+	.long	1046275153
+	.long	3221225472
+	.long	1071953395
+	.long	85533782
+	.long	3192816920
+	.long	3221225472
+	.long	1071950195
+	.long	1252511005
+	.long	1044805706
+	.long	1073741824
+	.long	1071946999
+	.long	2384659038
+	.long	3193391602
+	.long	0
+	.long	1071943806
+	.long	416481813
+	.long	1043730233
+	.long	536870912
+	.long	1071940616
+	.long	1675424499
+	.long	1046348030
+	.long	3221225472
+	.long	1071937429
+	.long	1175989513
+	.long	3193009113
+	.long	2684354560
+	.long	1071934246
+	.long	2400084650
+	.long	3192451713
+	.long	3758096384
+	.long	1071931066
+	.long	1467335692
+	.long	3193350868
+	.long	1610612736
+	.long	1071927890
+	.long	266493801
+	.long	1044954481
+	.long	1073741824
+	.long	1071924717
+	.long	3919093445
+	.long	1046023575
+	.long	2147483648
+	.long	1071921547
+	.long	3017408483
+	.long	1044880828
+	.long	536870912
+	.long	1071918381
+	.long	948849966
+	.long	3193892224
+	.long	3758096384
+	.long	1071915217
+	.long	1870232600
+	.long	1045777228
+	.long	536870912
+	.long	1071912058
+	.long	822381492
+	.long	3193639186
+	.long	2147483648
+	.long	1071908901
+	.long	788243705
+	.long	1044966343
+	.long	1073741824
+	.long	1071905748
+	.long	1344278809
+	.long	1044428545
+	.long	1073741824
+	.long	1071902598
+	.long	172864300
+	.long	1045765608
+	.long	2684354560
+	.long	1071899451
+	.long	211555467
+	.long	3192963574
+	.long	536870912
+	.long	1071896308
+	.long	3373438023
+	.long	1045643168
+	.long	0
+	.long	1071893168
+	.long	2867180960
+	.long	3189945998
+	.long	536870912
+	.long	1071890031
+	.long	36724362
+	.long	3193240584
+	.long	1610612736
+	.long	1071886897
+	.long	2140176984
+	.long	1045945349
+	.long	0
+	.long	1071883767
+	.long	436842360
+	.long	1040712587
+	.long	3758096384
+	.long	1071880639
+	.long	1225147329
+	.long	3193814594
+	.long	3758096384
+	.long	1071877515
+	.long	1586157348
+	.long	3191614322
+	.long	536870912
+	.long	1071874395
+	.long	3329332918
+	.long	1041699791
+	.long	2684354560
+	.long	1071871277
+	.long	1635968041
+	.long	3191783756
+	.long	1073741824
+	.long	1071868163
+	.long	2876158382
+	.long	1046097093
+	.long	1073741824
+	.long	1071865052
+	.long	4267556964
+	.long	3193723000
+	.long	1073741824
+	.long	1071861944
+	.long	195475940
+	.long	1045520795
+	.long	2147483648
+	.long	1071858839
+	.long	2239193514
+	.long	1046478675
+	.long	0
+	.long	1071855738
+	.long	4168275596
+	.long	1044926285
+	.long	2684354560
+	.long	1071852639
+	.long	142514114
+	.long	1045595182
+	.long	2147483648
+	.long	1071849544
+	.long	1943457984
+	.long	3192930015
+	.long	2147483648
+	.long	1071846452
+	.long	202659489
+	.long	3193926317
+	.long	2684354560
+	.long	1071843363
+	.long	2208408789
+	.long	3193857484
+	.long	3758096384
+	.long	1071840277
+	.long	2237297552
+	.long	3192939576
+	.long	1073741824
+	.long	1071837195
+	.long	2726920839
+	.long	1044193954
+	.long	3758096384
+	.long	1071834115
+	.long	2337732207
+	.long	3193611773
+	.long	2147483648
+	.long	1071831039
+	.long	1390088602
+	.long	1044000317
+	.long	1610612736
+	.long	1071827966
+	.long	3806188736
+	.long	3193463913
+	.long	1073741824
+	.long	1071824896
+	.long	1795276560
+	.long	1043671965
+	.long	1073741824
+	.long	1071821829
+	.long	2960792799
+	.long	1046240474
+	.long	2147483648
+	.long	1071818765
+	.long	3350591592
+	.long	3193333939
+	.long	3221225472
+	.long	1071815704
+	.long	408870754
+	.long	3193322854
+	.long	0
+	.long	1071812647
+	.long	4146717132
+	.long	1046063520
+	.long	2147483648
+	.long	1071809592
+	.long	1681114919
+	.long	3192114313
+	.long	0
+	.long	1071806541
+	.long	1098393137
+	.long	3190846732
+	.long	2684354560
+	.long	1071803492
+	.long	2437484983
+	.long	3193448718
+	.long	1073741824
+	.long	1071800447
+	.long	1036809185
+	.long	3192023501
+	.long	0
+	.long	1071797405
+	.long	659668848
+	.long	3193596312
+	.long	3221225472
+	.long	1071794365
+	.long	1112062459
+	.long	3192773376
+	.long	2147483648
+	.long	1071791329
+	.long	4082956335
+	.long	1045830513
+	.long	1610612736
+	.long	1071788296
+	.long	2387089965
+	.long	1045532601
+	.long	1610612736
+	.long	1071785266
+	.long	1522101980
+	.long	3193941957
+	.long	1073741824
+	.long	1071782239
+	.long	2157197585
+	.long	3188193305
+	.long	1073741824
+	.long	1071779215
+	.long	946810220
+	.long	3193223819
+	.long	1073741824
+	.long	1071776194
+	.long	4069942444
+	.long	3193878549
+	.long	536870912
+	.long	1071773176
+	.long	1693463440
+	.long	1046360588
+	.long	536870912
+	.long	1071770161
+	.long	1954543254
+	.long	1046409381
+	.long	1073741824
+	.long	1071767149
+	.long	1050471249
+	.long	3193933095
+	.long	536870912
+	.long	1071764140
+	.long	1256240478
+	.long	1046456865
+	.long	536870912
+	.long	1071761134
+	.long	676764254
+	.long	1046055503
+	.long	536870912
+	.long	1071758131
+	.long	1421032967
+	.long	1044779786
+	.long	536870912
+	.long	1071755131
+	.long	38735992
+	.long	3192766355
+	.long	0
+	.long	1071752134
+	.long	2960669690
+	.long	1044484680
+	.long	3758096384
+	.long	1071749139
+	.long	788707382
+	.long	1045299895
+	.long	3221225472
+	.long	1071746148
+	.long	685689300
+	.long	1040778831
+	.long	2147483648
+	.long	1071743160
+	.long	1170994182
+	.long	1046159174
+	.long	1073741824
+	.long	1071740175
+	.long	64591436
+	.long	1046153849
+	.long	0
+	.long	1071737193
+	.long	2338031659
+	.long	3189997702
+	.long	2684354560
+	.long	1071734213
+	.long	1941624568
+	.long	3186752676
+	.long	536870912
+	.long	1071731237
+	.long	1401255580
+	.long	1046383990
+	.long	2684354560
+	.long	1071728263
+	.long	376888427
+	.long	1045896456
+	.long	536870912
+	.long	1071725293
+	.long	2831424639
+	.long	3193539109
+	.long	1610612736
+	.long	1071722325
+	.long	3303123696
+	.long	1044599415
+	.long	2684354560
+	.long	1071719360
+	.long	1077295329
+	.long	3189877372
+	.long	3221225472
+	.long	1071716398
+	.long	1434061099
+	.long	3184529771
+	.long	3221225472
+	.long	1071713439
+	.long	2104991590
+	.long	1045062074
+	.long	3221225472
+	.long	1071710483
+	.long	722060869
+	.long	3193788526
+	.long	536870912
+	.long	1071704580
+	.long	3928796486
+	.long	1046129020
+	.long	536870912
+	.long	1071698688
+	.long	588844628
+	.long	1045492135
+	.long	2684354560
+	.long	1071692807
+	.long	326739366
+	.long	3193004445
+	.long	1610612736
+	.long	1071686938
+	.long	2456436042
+	.long	1046278169
+	.long	2684354560
+	.long	1071681080
+	.long	2831303512
+	.long	1043670046
+	.long	536870912
+	.long	1071675234
+	.long	607223418
+	.long	1045507322
+	.long	0
+	.long	1071669399
+	.long	4254921332
+	.long	3193290483
+	.long	0
+	.long	1071663575
+	.long	914994333
+	.long	3191263853
+	.long	1073741824
+	.long	1071657762
+	.long	4147050180
+	.long	3193228552
+	.long	2684354560
+	.long	1071651960
+	.long	594554157
+	.long	3193503935
+	.long	0
+	.long	1071646170
+	.long	1062846796
+	.long	1045944331
+	.long	1073741824
+	.long	1071636109
+	.long	2909238893
+	.long	3193436884
+	.long	1073741824
+	.long	1071624572
+	.long	1682918119
+	.long	1042211899
+	.long	1073741824
+	.long	1071613057
+	.long	2419209426
+	.long	1045437062
+	.long	1073741824
+	.long	1071601564
+	.long	2951341321
+	.long	3190193214
+	.long	0
+	.long	1071590093
+	.long	3084900875
+	.long	3192394907
+	.long	1073741824
+	.long	1071578643
+	.long	999567454
+	.long	1046433447
+	.long	2147483648
+	.long	1071567215
+	.long	1570101857
+	.long	3193291160
+	.long	0
+	.long	1071555809
+	.long	1080647881
+	.long	3185154585
+	.long	0
+	.long	1071544424
+	.long	3526309177
+	.long	1044843640
+	.long	2147483648
+	.long	1071533060
+	.long	2213463349
+	.long	3191738930
+	.long	1073741824
+	.long	1071521718
+	.long	1039925195
+	.long	3192618353
+	.long	1073741824
+	.long	1071510397
+	.long	2115757280
+	.long	3193671567
+	.long	1073741824
+	.long	1071499097
+	.long	1188751495
+	.long	3191145560
+	.long	2147483648
+	.long	1071487818
+	.long	3983461449
+	.long	3193897029
+	.long	2147483648
+	.long	1071476560
+	.long	782141500
+	.long	1042879962
+	.long	2147483648
+	.long	1071465323
+	.long	4038904626
+	.long	1045063881
+	.long	2147483648
+	.long	1071454107
+	.long	2613036921
+	.long	3193217642
+	.long	0
+	.long	1071442912
+	.long	2095723435
+	.long	1044629175
+	.long	1073741824
+	.long	1071431737
+	.long	3879795974
+	.long	1045767874
+	.long	1073741824
+	.long	1071420583
+	.long	2662198042
+	.long	3191434637
+	.long	3221225472
+	.long	1071409449
+	.long	4037605722
+	.long	3193703090
+	.long	2147483648
+	.long	1071398336
+	.long	1860331835
+	.long	1040814822
+	.long	3221225472
+	.long	1071387243
+	.long	1522972033
+	.long	3190305974
+	.long	1073741824
+	.long	1071376171
+	.long	2361534207
+	.long	1043699366
+	.long	0
+	.long	1071365119
+	.long	4180309179
+	.long	1044142099
+	.long	0
+	.long	1071354087
+	.long	1201038528
+	.long	3192968772
+	.long	0
+	.long	1071343075
+	.long	1342478171
+	.long	3193251215
+	.long	0
+	.long	1071332083
+	.long	3836883348
+	.long	3193472007
+	.long	3221225472
+	.long	1071321110
+	.long	3864874250
+	.long	1045593126
+	.long	2147483648
+	.long	1071310158
+	.long	2169494998
+	.long	1046045346
+	.long	1073741824
+	.long	1071299226
+	.long	3785165075
+	.long	3193319246
+	.long	2147483648
+	.long	1071288313
+	.long	1137692678
+	.long	3192716779
+	.long	1073741824
+	.long	1071277420
+	.long	1752107598
+	.long	1046366120
+	.long	3221225472
+	.long	1071266546
+	.long	1912656912
+	.long	1046352281
+	.long	3221225472
+	.long	1071255692
+	.long	2882676334
+	.long	1046406353
+	.long	1073741824
+	.long	1071244858
+	.long	963612460
+	.long	1045282811
+	.long	0
+	.long	1071234043
+	.long	3811255773
+	.long	1046231636
+	.long	1073741824
+	.long	1071223247
+	.long	1126055989
+	.long	3192224037
+	.long	2147483648
+	.long	1071212470
+	.long	2079145427
+	.long	1044432413
+	.long	0
+	.long	1071201713
+	.long	3611595621
+	.long	1043358745
+	.long	2147483648
+	.long	1071190974
+	.long	390522769
+	.long	1045888252
+	.long	1073741824
+	.long	1071180255
+	.long	4087939723
+	.long	3192930745
+	.long	3221225472
+	.long	1071169554
+	.long	1451494480
+	.long	3190219274
+	.long	1073741824
+	.long	1071158873
+	.long	427176194
+	.long	3193042022
+	.long	2147483648
+	.long	1071148210
+	.long	1882381948
+	.long	3192727946
+	.long	2147483648
+	.long	1071137566
+	.long	3736313771
+	.long	3192087019
+	.long	1073741824
+	.long	1071126941
+	.long	1560398816
+	.long	3193185715
+	.long	2147483648
+	.long	1071116334
+	.long	1021942441
+	.long	1041526696
+	.long	2147483648
+	.long	1071105746
+	.long	3517080249
+	.long	3193576041
+	.long	3221225472
+	.long	1071095176
+	.long	2248589878
+	.long	1044527624
+	.long	2147483648
+	.long	1071084625
+	.long	2412896695
+	.long	1046112867
+	.long	3221225472
+	.long	1071074092
+	.long	3834725738
+	.long	1044562378
+	.long	1073741824
+	.long	1071063578
+	.long	1150920407
+	.long	1043768986
+	.long	0
+	.long	1071053082
+	.long	1379393428
+	.long	3188690690
+	.long	0
+	.long	1071042604
+	.long	3058183278
+	.long	3193617655
+	.long	0
+	.long	1071032144
+	.long	421133665
+	.long	3193417186
+	.long	0
+	.long	1071021702
+	.long	2860161357
+	.long	3191816125
+	.long	0
+	.long	1071011278
+	.long	1742405964
+	.long	1043580240
+	.long	0
+	.long	1071000872
+	.long	2821215927
+	.long	3188984273
+	.long	3221225472
+	.long	1070990483
+	.long	510275597
+	.long	1045813401
+	.long	2147483648
+	.long	1070980113
+	.long	304266588
+	.long	3191193536
+	.long	3221225472
+	.long	1070969760
+	.long	1854784211
+	.long	1046302073
+	.long	0
+	.long	1070959426
+	.long	3773082854
+	.long	3193008899
+	.long	2147483648
+	.long	1070949108
+	.long	3003572392
+	.long	1046404879
+	.long	3221225472
+	.long	1070938808
+	.long	1702149204
+	.long	1046407257
+	.long	2147483648
+	.long	1070928526
+	.long	3935314439
+	.long	1046438280
+	.long	3221225472
+	.long	1070918261
+	.long	2677087609
+	.long	1045501749
+	.long	2147483648
+	.long	1070908014
+	.long	4190598039
+	.long	3193640515
+	.long	1073741824
+	.long	1070897784
+	.long	368874072
+	.long	1044879927
+	.long	2147483648
+	.long	1070887571
+	.long	3584052697
+	.long	3192024662
+	.long	3221225472
+	.long	1070877375
+	.long	3762307829
+	.long	1045886918
+	.long	1073741824
+	.long	1070867197
+	.long	495710920
+	.long	1046317072
+	.long	0
+	.long	1070857036
+	.long	2292768238
+	.long	3190887508
+	.long	3221225472
+	.long	1070846891
+	.long	1044078151
+	.long	3193772914
+	.long	1073741824
+	.long	1070836764
+	.long	3266010457
+	.long	1043443755
+	.long	3221225472
+	.long	1070826653
+	.long	3571665822
+	.long	1045547823
+	.long	1073741824
+	.long	1070816560
+	.long	393348347
+	.long	3190525143
+	.long	2147483648
+	.long	1070806483
+	.long	4241722498
+	.long	3192084193
+	.long	2147483648
+	.long	1070796423
+	.long	1693797068
+	.long	3192807972
+	.long	0
+	.long	1070786380
+	.long	2860086745
+	.long	1046331646
+	.long	2147483648
+	.long	1070776353
+	.long	1366141759
+	.long	3192979363
+	.long	1073741824
+	.long	1070766343
+	.long	737899283
+	.long	1045853346
+	.long	3221225472
+	.long	1070756349
+	.long	88734873
+	.long	1043881257
+	.long	3221225472
+	.long	1070746372
+	.long	1438003315
+	.long	3192917101
+	.long	0
+	.long	1070736412
+	.long	1066505530
+	.long	1043896695
+	.long	3221225472
+	.long	1070726467
+	.long	2706653041
+	.long	3191113643
+	.long	3221225472
+	.long	1070716539
+	.long	1321764476
+	.long	1039573724
+	.long	0
+	.long	1070706628
+	.long	1126753211
+	.long	1044502976
+	.long	2147483648
+	.long	1070696732
+	.long	773642884
+	.long	1044110727
+	.long	1073741824
+	.long	1070686853
+	.long	1263743406
+	.long	3193115278
+	.long	0
+	.long	1070676990
+	.long	3115237732
+	.long	3193089176
+	.long	3221225472
+	.long	1070667142
+	.long	3642626838
+	.long	3191146032
+	.long	2147483648
+	.long	1070657311
+	.long	2091696428
+	.long	1044337177
+	.long	1073741824
+	.long	1070647496
+	.long	3168958391
+	.long	1044197568
+	.long	0
+	.long	1070637697
+	.long	711148669
+	.long	3193181047
+	.long	2147483648
+	.long	1070627913
+	.long	4207182773
+	.long	3193402092
+	.long	3221225472
+	.long	1070618145
+	.long	918070640
+	.long	3192902845
+	.long	3221225472
+	.long	1070608393
+	.long	3135571447
+	.long	3192193928
+	.long	2147483648
+	.long	1070598657
+	.long	1043705517
+	.long	3193188604
+	.long	2147483648
+	.long	1070581777
+	.long	1886680492
+	.long	1043890286
+	.long	2147483648
+	.long	1070562367
+	.long	3373799420
+	.long	3191917802
+	.long	2147483648
+	.long	1070542988
+	.long	2919618025
+	.long	3192461752
+	.long	2147483648
+	.long	1070523640
+	.long	2926365158
+	.long	3193113492
+	.long	0
+	.long	1070504323
+	.long	519978638
+	.long	1045918846
+	.long	0
+	.long	1070485037
+	.long	3665353151
+	.long	3193546248
+	.long	0
+	.long	1070465781
+	.long	2327718958
+	.long	1045050797
+	.long	0
+	.long	1070446556
+	.long	345326861
+	.long	3188224716
+	.long	2147483648
+	.long	1070427361
+	.long	2263747488
+	.long	3192871328
+	.long	0
+	.long	1070408197
+	.long	3894192264
+	.long	1045693123
+	.long	0
+	.long	1070389063
+	.long	994321593
+	.long	1046347203
+	.long	2147483648
+	.long	1070369959
+	.long	3540366700
+	.long	1042296230
+	.long	0
+	.long	1070350886
+	.long	966420752
+	.long	3192400412
+	.long	2147483648
+	.long	1070331842
+	.long	1954511160
+	.long	3193467762
+	.long	2147483648
+	.long	1070312828
+	.long	1875003040
+	.long	1045485629
+	.long	0
+	.long	1070293845
+	.long	4003372005
+	.long	3193714109
+	.long	2147483648
+	.long	1070274890
+	.long	2216083644
+	.long	1045720399
+	.long	0
+	.long	1070255966
+	.long	1240985743
+	.long	1045879414
+	.long	0
+	.long	1070237071
+	.long	1573064162
+	.long	1046427916
+	.long	0
+	.long	1070218206
+	.long	2500166582
+	.long	3193848169
+	.long	2147483648
+	.long	1070199369
+	.long	862131539
+	.long	1045606065
+	.long	0
+	.long	1070180563
+	.long	3733427622
+	.long	3193545988
+	.long	0
+	.long	1070161785
+	.long	124515358
+	.long	1045504766
+	.long	2147483648
+	.long	1070143036
+	.long	689228007
+	.long	1044238436
+	.long	0
+	.long	1070124317
+	.long	976284835
+	.long	3189879978
+	.long	2147483648
+	.long	1070105626
+	.long	2997446224
+	.long	3193394244
+	.long	2147483648
+	.long	1070086964
+	.long	594985163
+	.long	3190453447
+	.long	2147483648
+	.long	1070068331
+	.long	3634411091
+	.long	3193012662
+	.long	0
+	.long	1070049727
+	.long	841316482
+	.long	3192551604
+	.long	0
+	.long	1070031151
+	.long	518949849
+	.long	3189505693
+	.long	2147483648
+	.long	1070012603
+	.long	207633604
+	.long	1043791305
+	.long	2147483648
+	.long	1069994084
+	.long	925415631
+	.long	3189658670
+	.long	2147483648
+	.long	1069975593
+	.long	3348775015
+	.long	1046231055
+	.long	0
+	.long	1069957131
+	.long	4137593961
+	.long	1045760644
+	.long	2147483648
+	.long	1069938696
+	.long	3081207972
+	.long	1046319652
+	.long	2147483648
+	.long	1069920290
+	.long	2912811806
+	.long	3193250863
+	.long	0
+	.long	1069901912
+	.long	1704663230
+	.long	3192651171
+	.long	2147483648
+	.long	1069883561
+	.long	1726887473
+	.long	3193427817
+	.long	2147483648
+	.long	1069865238
+	.long	516302873
+	.long	1042556919
+	.long	2147483648
+	.long	1069846943
+	.long	3737277289
+	.long	3192083505
+	.long	0
+	.long	1069828676
+	.long	2829909067
+	.long	3191628520
+	.long	0
+	.long	1069810436
+	.long	3474800299
+	.long	3187384991
+	.long	2147483648
+	.long	1069792223
+	.long	2041291754
+	.long	3186735048
+	.long	2147483648
+	.long	1069774038
+	.long	3100739290
+	.long	3192991951
+	.long	2147483648
+	.long	1069755880
+	.long	2641686866
+	.long	1042449846
+	.long	0
+	.long	1069737750
+	.long	1353612457
+	.long	3192928544
+	.long	2147483648
+	.long	1069719646
+	.long	1823398190
+	.long	3193125156
+	.long	0
+	.long	1069701570
+	.long	2629108558
+	.long	3192983089
+	.long	2147483648
+	.long	1069683520
+	.long	314889080
+	.long	3193178947
+	.long	2147483648
+	.long	1069665497
+	.long	3426846470
+	.long	1046055034
+	.long	0
+	.long	1069647502
+	.long	2451521798
+	.long	3193081447
+	.long	2147483648
+	.long	1069629532
+	.long	963200030
+	.long	1046315089
+	.long	0
+	.long	1069611590
+	.long	3644976987
+	.long	1046450297
+	.long	2147483648
+	.long	1069593674
+	.long	1514045874
+	.long	3193337489
+	.long	0
+	.long	1069575785
+	.long	2640752615
+	.long	3192734715
+	.long	0
+	.long	1069557922
+	.long	177381730
+	.long	3193107348
+	.long	0
+	.long	1069532650
+	.long	546871269
+	.long	1045601847
+	.long	0
+	.long	1069497029
+	.long	2220408187
+	.long	1045964849
+	.long	0
+	.long	1069461461
+	.long	3101209784
+	.long	3192417098
+	.long	0
+	.long	1069425944
+	.long	3768825782
+	.long	1046196178
+	.long	0
+	.long	1069390480
+	.long	737308942
+	.long	1043872555
+	.long	0
+	.long	1069355068
+	.long	1944808119
+	.long	3193362317
+	.long	0
+	.long	1069319707
+	.long	852406261
+	.long	3191004250
+	.long	0
+	.long	1069284398
+	.long	3202370743
+	.long	3192549796
+	.long	0
+	.long	1069249140
+	.long	900633975
+	.long	1043862575
+	.long	0
+	.long	1069213934
+	.long	3417168564
+	.long	3193213168
+	.long	0
+	.long	1069178778
+	.long	2513309972
+	.long	1046051953
+	.long	0
+	.long	1069143674
+	.long	1836846968
+	.long	1044036653
+	.long	0
+	.long	1069108621
+	.long	675391362
+	.long	3193334972
+	.long	0
+	.long	1069073618
+	.long	1859398086
+	.long	3191668729
+	.long	0
+	.long	1069038666
+	.long	3835994043
+	.long	3193252196
+	.long	0
+	.long	1069003764
+	.long	563337246
+	.long	3192060530
+	.long	0
+	.long	1068968912
+	.long	3715154210
+	.long	1045592716
+	.long	0
+	.long	1068934111
+	.long	51415636
+	.long	3192193939
+	.long	0
+	.long	1068899359
+	.long	822049108
+	.long	1045846080
+	.long	0
+	.long	1068864658
+	.long	3739043340
+	.long	3193184949
+	.long	0
+	.long	1068830006
+	.long	2500828997
+	.long	3193115638
+	.long	0
+	.long	1068795403
+	.long	1479335089
+	.long	1045458233
+	.long	0
+	.long	1068760850
+	.long	1914098598
+	.long	1045079833
+	.long	0
+	.long	1068726346
+	.long	1470374909
+	.long	1046125471
+	.long	0
+	.long	1068691892
+	.long	2048101185
+	.long	3192960024
+	.long	0
+	.long	1068657486
+	.long	801101802
+	.long	1042523454
+	.long	0
+	.long	1068623129
+	.long	412171467
+	.long	1044799425
+	.long	0
+	.long	1068588821
+	.long	2124566049
+	.long	1040459843
+	.long	0
+	.long	1068554561
+	.long	2087558263
+	.long	1046083102
+	.long	0
+	.long	1068520350
+	.long	290389316
+	.long	1045220023
+	.long	0
+	.long	1068473430
+	.long	393737815
+	.long	1045770085
+	.long	0
+	.long	1068405202
+	.long	3273111658
+	.long	3193594336
+	.long	0
+	.long	1068337068
+	.long	3076935419
+	.long	3191993934
+	.long	0
+	.long	1068269030
+	.long	1564279721
+	.long	1040713632
+	.long	0
+	.long	1068201088
+	.long	1950103787
+	.long	3191285473
+	.long	0
+	.long	1068133240
+	.long	111301617
+	.long	1046140470
+	.long	0
+	.long	1068065488
+	.long	2740933659
+	.long	1046091898
+	.long	0
+	.long	1067997832
+	.long	1267131462
+	.long	3192947024
+	.long	0
+	.long	1067930268
+	.long	629787343
+	.long	1045599114
+	.long	0
+	.long	1067862800
+	.long	2943029746
+	.long	3191100621
+	.long	0
+	.long	1067795426
+	.long	2538631151
+	.long	3193953989
+	.long	0
+	.long	1067728144
+	.long	3881795033
+	.long	3191377363
+	.long	0
+	.long	1067660956
+	.long	2752747058
+	.long	3186250103
+	.long	0
+	.long	1067593862
+	.long	892170014
+	.long	3193330390
+	.long	0
+	.long	1067526860
+	.long	2000985783
+	.long	3192968647
+	.long	0
+	.long	1067459950
+	.long	1954077304
+	.long	1044399908
+	.long	0
+	.long	1067335900
+	.long	4120702847
+	.long	3193150730
+	.long	0
+	.long	1067202448
+	.long	353489980
+	.long	1045676744
+	.long	0
+	.long	1067069184
+	.long	2609643324
+	.long	3192108001
+	.long	0
+	.long	1066936100
+	.long	2904433317
+	.long	1044836541
+	.long	0
+	.long	1066803200
+	.long	319656790
+	.long	1044863904
+	.long	0
+	.long	1066670484
+	.long	2407987331
+	.long	3192995083
+	.long	0
+	.long	1066537948
+	.long	2437746120
+	.long	3193127733
+	.long	0
+	.long	1066405592
+	.long	762570215
+	.long	3189946997
+	.long	0
+	.long	1066145040
+	.long	3317159694
+	.long	1046060125
+	.long	0
+	.long	1065881056
+	.long	2317845886
+	.long	3191679176
+	.long	0
+	.long	1065617424
+	.long	3665195816
+	.long	1045633853
+	.long	0
+	.long	1065354160
+	.long	2008730355
+	.long	3193898211
+	.long	0
+	.long	1064829264
+	.long	3746236192
+	.long	1046121471
+	.long	0
+	.long	1064303680
+	.long	885296753
+	.long	3191852441
+	.long	0
+	.long	1063253696
+	.long	449976495
+	.long	3192682663
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	1073160192
+	.long	370913857
+	.long	3210587105
+	.long	1841914130
+	.long	3213059448
+	.long	3995341938
+	.long	3214607105
+	.long	2677381210
+	.long	3216320731
+	.long	3011779882
+	.long	3218479542
+	.long	1367832035
+	.long	1066403058
+	.long	2894285243
+	.long	1067936923
+	.long	1215221452
+	.long	1069835102
+	.long	370913857
+	.long	3210587105
+	.long	2677381210
+	.long	3216320731
+	.long	4172642429
+	.long	1056068382
+	.long	1215221451
+	.long	1069835102
+	.long	1092638156
+	.long	3184925618
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	4294967295
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	997195776
+	.long	4200250559
+	.long	1072696090
+	.long	2808127345
+	.long	3162830514
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	339411585
+	.long	1072701800
+	.long	264588982
+	.long	3162685233
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	772914124
+	.long	1072707540
+	.long	4004372762
+	.long	1013278737
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	1928746161
+	.long	1072713311
+	.long	983617676
+	.long	1015333753
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	238821257
+	.long	1072719114
+	.long	1469694871
+	.long	3163933563
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	728934454
+	.long	1072724948
+	.long	1413842688
+	.long	1015227188
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	4133881824
+	.long	1072730813
+	.long	2148155345
+	.long	3163979875
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	2602514713
+	.long	1072736711
+	.long	2268929336
+	.long	1015402860
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	1172597893
+	.long	1072742641
+	.long	114433263
+	.long	1016396169
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	590962156
+	.long	1072748603
+	.long	3829346666
+	.long	3164324173
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	1608493509
+	.long	1072754597
+	.long	3159622171
+	.long	3163856313
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	685187902
+	.long	1072760624
+	.long	378731989
+	.long	1015891691
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	2875075254
+	.long	1072766683
+	.long	4144233330
+	.long	3164382292
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	351405227
+	.long	1072772776
+	.long	3125337328
+	.long	3160871055
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	2471440686
+	.long	1072778901
+	.long	968836267
+	.long	3163263464
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1416741826
+	.long	1072785060
+	.long	2196380210
+	.long	1012462139
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	2257959872
+	.long	1072791252
+	.long	3802946148
+	.long	1014013503
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	1480023343
+	.long	1072797478
+	.long	2247196168
+	.long	1016376029
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	4162030108
+	.long	1072803737
+	.long	2763428480
+	.long	1016577925
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	2502433899
+	.long	1072810031
+	.long	2148595913
+	.long	1016072567
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	1588871207
+	.long	1072816359
+	.long	143439582
+	.long	3164011992
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2218315341
+	.long	1072822721
+	.long	2694295388
+	.long	3164337444
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	897099801
+	.long	1072829118
+	.long	754756297
+	.long	1016289581
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	2725843665
+	.long	1072835549
+	.long	1433917087
+	.long	1015887099
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	4219606026
+	.long	1072842015
+	.long	2434574742
+	.long	1015730124
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1897844341
+	.long	1072848517
+	.long	1254300460
+	.long	1016324514
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	874372905
+	.long	1072855054
+	.long	100263788
+	.long	1016989308
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	1972484976
+	.long	1072861626
+	.long	675290301
+	.long	3162688626
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	1724976915
+	.long	1072868234
+	.long	420909223
+	.long	3164165955
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	964107055
+	.long	1072874878
+	.long	2800439588
+	.long	3163881797
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	526652809
+	.long	1072881558
+	.long	4223459736
+	.long	1016927951
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	1253935211
+	.long	1072888274
+	.long	1395382931
+	.long	3160751189
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	3991843581
+	.long	1072895026
+	.long	4092853457
+	.long	1015634339
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	1000925746
+	.long	1072901816
+	.long	1018491672
+	.long	3164358120
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1726216749
+	.long	1072908642
+	.long	2466808228
+	.long	3162724981
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	2732492859
+	.long	1072915505
+	.long	2691479646
+	.long	3163304260
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	589198666
+	.long	1072922406
+	.long	2664346172
+	.long	3164206538
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	460407023
+	.long	1072929344
+	.long	4237175092
+	.long	3164187045
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3219942644
+	.long	1072936319
+	.long	3798990616
+	.long	1016417382
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1156440435
+	.long	1072943333
+	.long	2351451249
+	.long	1015015632
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	3743175029
+	.long	1072950384
+	.long	2072812490
+	.long	3163223651
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	3278348324
+	.long	1072957474
+	.long	3069497416
+	.long	1015799288
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	654919306
+	.long	1072964603
+	.long	3232961757
+	.long	3164096045
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1065662932
+	.long	1072971770
+	.long	2533670915
+	.long	1015578814
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	1118294578
+	.long	1072978976
+	.long	2197495694
+	.long	3160957977
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	1720398391
+	.long	1072986221
+	.long	3980678963
+	.long	3164348656
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	3784486610
+	.long	1072993505
+	.long	1581883040
+	.long	3162747529
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3933059031
+	.long	1073000829
+	.long	2133366768
+	.long	3162580408
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	3088564500
+	.long	1073008193
+	.long	1762311517
+	.long	1016094249
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	2178460671
+	.long	1073015597
+	.long	777878098
+	.long	3163891069
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2135241198
+	.long	1073023041
+	.long	1236747871
+	.long	1014637723
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	3896463087
+	.long	1073030525
+	.long	1139797873
+	.long	3162282381
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	4109806887
+	.long	1073038050
+	.long	422403966
+	.long	1015517805
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	3723038930
+	.long	1073045616
+	.long	378465264
+	.long	3163618158
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3689071823
+	.long	1073053223
+	.long	2321004996
+	.long	3163601292
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	671025100
+	.long	1073060872
+	.long	3832014351
+	.long	3164070606
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	4222122499
+	.long	1073068561
+	.long	1277378074
+	.long	3164305313
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	2425981843
+	.long	1073076293
+	.long	2830390851
+	.long	3164395175
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	551349105
+	.long	1073084067
+	.long	3821916050
+	.long	3163155165
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	3872257780
+	.long	1073091882
+	.long	1253592103
+	.long	1017006910
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	488188413
+	.long	1073099741
+	.long	3199821029
+	.long	1016612624
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	4273770423
+	.long	1073107641
+	.long	3383180809
+	.long	3164267477
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3339203574
+	.long	1073115585
+	.long	1483497780
+	.long	3163457330
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	2979960120
+	.long	1073123572
+	.long	2599109725
+	.long	1015547069
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	4201977662
+	.long	1073131602
+	.long	748330254
+	.long	1014642933
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	3721688645
+	.long	1073139676
+	.long	3069276937
+	.long	1016887977
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	2555984613
+	.long	1073147794
+	.long	2652555442
+	.long	3163601268
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	1727278727
+	.long	1073155956
+	.long	3562710623
+	.long	1012520516
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	2263535754
+	.long	1073164162
+	.long	752233586
+	.long	3163687584
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	903334909
+	.long	1073172413
+	.long	1636462108
+	.long	1016088573
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	2980802057
+	.long	1073180708
+	.long	378619896
+	.long	1016821879
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	950803702
+	.long	1073189049
+	.long	1655364926
+	.long	1016285608
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	158781403
+	.long	1073197435
+	.long	2221464712
+	.long	3164335029
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	1660913392
+	.long	1073205866
+	.long	4218599604
+	.long	1016184283
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	2224145553
+	.long	1073214343
+	.long	3482522030
+	.long	3162537745
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2916157145
+	.long	1073222866
+	.long	219487565
+	.long	1016357943
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	515457527
+	.long	1073231436
+	.long	836709333
+	.long	1016699802
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	396319521
+	.long	1073240052
+	.long	4172420816
+	.long	3160123208
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3643909174
+	.long	1073248714
+	.long	3537586109
+	.long	1015403223
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	2759350287
+	.long	1073257424
+	.long	1148526634
+	.long	1016943509
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	3134592888
+	.long	1073266181
+	.long	4232266862
+	.long	1017039710
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	1577608921
+	.long	1073274986
+	.long	1875489510
+	.long	3164016970
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	3492293770
+	.long	1073283838
+	.long	2248032210
+	.long	1016435402
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	1403662306
+	.long	1073292739
+	.long	2788809599
+	.long	3162719583
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	727685349
+	.long	1073301688
+	.long	2038246809
+	.long	3163407318
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2591453363
+	.long	1073310685
+	.long	2132396182
+	.long	3160122774
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	3833209506
+	.long	1073319731
+	.long	2722920684
+	.long	1014803418
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	1297350157
+	.long	1073328827
+	.long	1308022040
+	.long	3164461134
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	424392917
+	.long	1073337972
+	.long	2749202995
+	.long	3163887294
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2366108318
+	.long	1073347166
+	.long	2867985102
+	.long	3162810830
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3985553595
+	.long	1073356410
+	.long	4002146062
+	.long	1016882712
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2152073944
+	.long	1073365705
+	.long	1486860576
+	.long	3164252032
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	2331271250
+	.long	1073375050
+	.long	812057446
+	.long	1013256022
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1405169241
+	.long	1073384446
+	.long	2998539689
+	.long	3163879527
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	557149882
+	.long	1073393893
+	.long	3672720709
+	.long	1015585841
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	977020788
+	.long	1073403391
+	.long	3065100517
+	.long	1016590139
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	3861050111
+	.long	1073412940
+	.long	254893773
+	.long	3163861756
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	1822067026
+	.long	1073422542
+	.long	1241994956
+	.long	1016388866
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	364333489
+	.long	1073432196
+	.long	3923737744
+	.long	3162469949
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	703710506
+	.long	1073441902
+	.long	1384660846
+	.long	1016244467
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	4062661092
+	.long	1073451660
+	.long	1422616006
+	.long	3164303894
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	3080351519
+	.long	1073461472
+	.long	3379126789
+	.long	3158266577
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	3287523847
+	.long	1073471337
+	.long	1625971539
+	.long	3158058531
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	1631695677
+	.long	1073481256
+	.long	2717633076
+	.long	3163392602
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	3657065772
+	.long	1073491228
+	.long	399025623
+	.long	3164005654
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	2029714210
+	.long	1073501255
+	.long	613660079
+	.long	1016147719
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2307442995
+	.long	1073511336
+	.long	3190117721
+	.long	3163453115
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	1464976603
+	.long	1073521472
+	.long	3507292405
+	.long	3163026110
+	.long	3706687593
+	.long	1073526560
+	.long	3521726939
+	.long	1014301643
+	.long	778901109
+	.long	1073531663
+	.long	2248183954
+	.long	3162317327
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1532734324
+	.long	1073541909
+	.long	3094216535
+	.long	3164211433
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	721996136
+	.long	1073552211
+	.long	563754734
+	.long	1016419894
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3939148246
+	.long	1073562568
+	.long	3210352148
+	.long	1016322899
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	3898795731
+	.long	1073572982
+	.long	1249994144
+	.long	1012918394
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	1912561781
+	.long	1073583453
+	.long	3147495102
+	.long	1016726829
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	3594158869
+	.long	1073593980
+	.long	2456521700
+	.long	3164305137
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	1679558232
+	.long	1073604565
+	.long	2390342287
+	.long	3164382546
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	1796832535
+	.long	1073615207
+	.long	3176955716
+	.long	3161634089
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	991358482
+	.long	1073625907
+	.long	838715019
+	.long	3164206244
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	610758006
+	.long	1073636665
+	.long	1965209397
+	.long	3162914808
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2009970496
+	.long	1073647481
+	.long	2159039665
+	.long	3163621524
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	2256325230
+	.long	1073658356
+	.long	580117746
+	.long	1016365871
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	2719515920
+	.long	1073669290
+	.long	2760332941
+	.long	1016186509
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	481706282
+	.long	1073680284
+	.long	1696079173
+	.long	3163759104
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1222472308
+	.long	1073691337
+	.long	1054357470
+	.long	3162069594
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2038973688
+	.long	1073702450
+	.long	892941374
+	.long	1017095035
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	35929225
+	.long	1073713624
+	.long	2809788041
+	.long	3160485544
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	915592468
+	.long	1073724858
+	.long	352947894
+	.long	3162072947
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	1797923801
+	.long	1073736153
+	.long	1950547427
+	.long	1014277635
+	.long	3884607281
+	.long	1062590591
+	.long	3607404736
+	.long	1068264200
+	.long	1874480759
+	.long	1065595563
+	.long	4286760335
+	.long	1070514109
+	.long	4277811695
+	.long	1072049730
+	.long	0
+	.long	0
+	.long	4277811695
+	.long	1072049730
+	.long	4277811695
+	.long	3219533378
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,12576
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/e_sinh.S b/libm/x86/e_sinh.S
new file mode 100644
index 0000000..d6b04b5
--- /dev/null
+++ b/libm/x86/e_sinh.S
@@ -0,0 +1,1407 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  sinh(x)=(exp(x)-exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [23/64,3*2^7)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
+//
+//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
+//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
+//
+//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
+//  To reduce rounding errors, the p3*x^3 term is computed as
+//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
+//  where x=xh+xl, (xh are the leading 17 bits of x), and
+//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
+//  (error bound for polynomial expansion is below 0.51 ulp)
+//
+// Special cases:
+//  sinh(NaN) = quiet NaN, and raise invalid exception
+//  sinh(+/-INF) = +/-INF
+//  sinh(x) = x for subnormals
+//  for finite argument, only sinh(0)=0 is exact
+//  For IEEE double
+//    sinh(x) overflows  for x > 
+//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  sinh
+ENTRY(sinh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4272(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4192(%ebx), %xmm1
+        movsd     4200(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16343, %ecx
+        cmpl      $177, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        shll      $3, %edx
+        orl       %edx, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    4112(%ebx), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    4128(%ebx), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    4144(%ebx), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $161, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        mulpd     (%ebx,%edx,8), %xmm0
+        mulpd     2048(%ebx,%edx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     4176(%ebx), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movapd    %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        subpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        subsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     (%ebx,%edx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     4160(%ebx), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     4176(%ebx), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $127, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $16343, %ecx
+        cmpl      $16343, %ecx
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $15856, %ecx
+        jb        .L_2TAG_PACKET_5.0.2
+        movapd    4208(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm6
+        mulpd     %xmm5, %xmm5
+        movapd    4224(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm7
+        movapd    4240(%ebx), %xmm3
+        pshufd    $68, %xmm0, %xmm4
+        andpd     4256(%ebx), %xmm6
+        mulpd     %xmm5, %xmm1
+        mulsd     %xmm5, %xmm2
+        subpd     %xmm6, %xmm4
+        mulpd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm1
+        pshufd    $68, %xmm6, %xmm3
+        mulpd     %xmm5, %xmm5
+        mulsd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm0, %xmm7
+        mulsd     %xmm6, %xmm6
+        addsd     %xmm7, %xmm7
+        mulsd     %xmm4, %xmm4
+        mulpd     %xmm5, %xmm1
+        addsd     %xmm0, %xmm7
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm7
+        pshufd    $238, %xmm1, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm2, %xmm3
+        pshufd    $238, %xmm2, %xmm2
+        addsd     %xmm4, %xmm7
+        movapd    %xmm0, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm5, %xmm7
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm2, %xmm7
+        subsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm1
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $16, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        movapd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $15344, %edx
+        pinsrw    $3, %edx, %xmm3
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        orl       %edx, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $127, %edx
+.L_2TAG_PACKET_3.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm1
+        andnpd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_2.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_8.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(sinh)
+# -- End  sinh
+
+# Start file scope ASM
+ALIAS_SYMBOL(sinhl, sinh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	1064709698
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.long	329805064
+	.long	1038488134
+	.long	2773927730
+	.long	1053236707
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1744127201
+	.long	1046144581
+	.long	436314137
+	.long	1059717536
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.long	4160749568
+	.long	2147483647
+	.type	static_const_table,@object
+	.size	static_const_table,4280
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/floor.S b/libm/x86/floor.S
new file mode 100644
index 0000000..b859736
--- /dev/null
+++ b/libm/x86/floor.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(floor)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x1,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(floor)
+
+ALIAS_SYMBOL(floorl, floor);
diff --git a/libm/x86/floorf.S b/libm/x86/floorf.S
new file mode 100644
index 0000000..79b9073
--- /dev/null
+++ b/libm/x86/floorf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(floorf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x1,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(floorf)
diff --git a/libm/x86/libm_reduce_pi04l.S b/libm/x86/libm_reduce_pi04l.S
new file mode 100644
index 0000000..af6a7d0
--- /dev/null
+++ b/libm/x86/libm_reduce_pi04l.S
@@ -0,0 +1,3718 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_reduce_pi04l
+	.text
+       .align    16,0x90
+	.hidden __libm_reduce_pi04l
+	.globl __libm_reduce_pi04l
+__libm_reduce_pi04l:
+# parameter 1: 8 + %ebp
+# parameter 2: 20 + %ebp
+# parameter 3: 24 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-16, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $20, %esp
+        movzwl    16(%ebp), %ebx
+        andl      $32767, %ebx
+        movl      20(%ebp), %eax
+        cmpl      $16413, %ebx
+        movl      24(%ebp), %esi
+        call      ..L2
+..L2:
+        popl      %edi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
+        movl      %eax, 4(%esp)
+        jge       ..B1.8
+..B1.2:
+        fldt      8(%ebp)
+        fldl      __4onpi_d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fstpt     8(%esp)
+        movzwl    16(%esp), %ecx
+        negl      %ecx
+        addl      $30, %ecx
+        movl      12(%esp), %eax
+        shrl      %cl, %eax
+        cmpl      $0, 4(%esp)
+        jne       ..B1.4
+..B1.3:
+        lea       1(%eax), %ecx
+        andl      $-2, %ecx
+        jmp       ..B1.5
+..B1.4:
+        movl      %eax, %ecx
+        addl      4(%esp), %eax
+        movl      %eax, %edx
+        andl      $1, %edx
+        addl      %edx, %ecx
+..B1.5:
+        fldl      _TWO_32H@GOTOFF(%edi)
+        cmpl      $16400, %ebx
+        movl      %ecx, (%esp)
+        fildl     (%esp)
+        jge       ..B1.7
+..B1.6:
+        fldl      _pi04_3d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fsubrp    %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fld       %st(2)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fld       %st(0)
+        fxch      %st(1)
+        fsubr     %st, %st(3)
+        fldl      8+_pi04_3d@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsub      %st(2), %st
+        fsubp     %st, %st(1)
+        faddp     %st, %st(3)
+        fldl      16+_pi04_3d@GOTOFF(%edi)
+        fmulp     %st, %st(2)
+        fld       %st(1)
+        fsubr     %st(1), %st
+        fsubr     %st, %st(1)
+        fxch      %st(2)
+        fsubrp    %st, %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        jmp       ..B1.15
+..B1.7:
+        fldl      _pi04_5d@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fsubrp    %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fld       %st(2)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fld       %st(0)
+        fxch      %st(1)
+        fsubr     %st, %st(3)
+        fldl      8+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsub      %st(2), %st
+        fsubp     %st, %st(1)
+        faddp     %st, %st(3)
+        fldl      16+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fsubr     %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsubrp    %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fldl      24+_pi04_5d@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fsubr     %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        fsubrp    %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fldl      32+_pi04_5d@GOTOFF(%edi)
+        fmulp     %st, %st(2)
+        fld       %st(1)
+        fsubr     %st(1), %st
+        fsubr     %st, %st(1)
+        fxch      %st(2)
+        fsubrp    %st, %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        jmp       ..B1.15
+..B1.8:
+        fldt      8(%ebp)
+        addl      $-16417, %ebx
+        fmull     _SCALE@GOTOFF(%edi)
+        movl      $-2078209981, %eax
+        imull     %ebx
+        addl      %ebx, %edx
+        movl      %ebx, %ecx
+        sarl      $4, %edx
+        sarl      $31, %ecx
+        subl      %ecx, %edx
+        movl      %edx, %eax
+        shll      $5, %eax
+        fstpt     8(%ebp)
+        fldt      8(%ebp)
+        subl      %edx, %eax
+        movl      $0, 8(%ebp)
+        subl      %eax, %ebx
+        fldt      8(%ebp)
+        cmpl      $17, %ebx
+        fsubr     %st, %st(1)
+        jl        ..B1.10
+..B1.9:
+        lea       (,%edx,8), %eax
+        lea       (%eax,%edx,4), %ecx
+        incl      %edx
+        fldt      __4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st(2), %st
+        fldt      12+__4onpi_31l@GOTOFF(%edi,%ecx)
+        fmul      %st(2), %st
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(1)
+        fadd      %st(1), %st
+        fstpt     8(%esp)
+        andl      $-16777216, 8(%esp)
+        fldt      8(%esp)
+        fsubrp    %st, %st(1)
+        jmp       ..B1.11
+..B1.10:
+        fldl      _zeros@GOTOFF(%edi)
+        fld       %st(0)
+..B1.11:
+        fld       %st(0)
+        lea       (,%edx,8), %eax
+        fld       %st(3)
+        lea       (%eax,%edx,4), %edx
+        fldt      __4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st(6), %st
+        movl      %edx, (%esp)
+        fadd      %st, %st(2)
+        fxch      %st(2)
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fldt      12+__4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st, %st(2)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fld       %st(0)
+        fxch      %st(1)
+        fsub      %st, %st(3)
+        fxch      %st(3)
+        fchs      
+        faddp     %st, %st(4)
+        fxch      %st(3)
+        faddp     %st, %st(4)
+        fxch      %st(2)
+        fadd      %st(3), %st
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fadd      %st, %st(2)
+        fld       %st(4)
+        fldt      24+__4onpi_31l@GOTOFF(%edx,%edi)
+        fmul      %st, %st(1)
+        fxch      %st(1)
+        fadd      %st, %st(4)
+        fxch      %st(4)
+        fstpt     8(%esp)
+        movzwl    16(%esp), %ebx
+        andl      $32767, %ebx
+        cmpl      $16415, %ebx
+        jge       ..B1.13
+..B1.12:
+        negl      %ebx
+        addl      $30, %ebx
+        movl      %ebx, %ecx
+        movl      12(%esp), %eax
+        shrl      %cl, %eax
+        shll      %cl, %eax
+        movl      %eax, 12(%esp)
+        movl      $0, 8(%esp)
+        shrl      %cl, %eax
+        jmp       ..B1.14
+..B1.13:
+        negl      %ebx
+        addl      $30, %ebx
+        movl      %ebx, %ecx
+        movl      8(%esp), %edx
+        shrl      %cl, %edx
+        shll      %cl, %edx
+        negl      %ecx
+        movl      12(%esp), %eax
+        shll      %cl, %eax
+        movl      %ebx, %ecx
+        movl      %edx, 8(%esp)
+        shrl      %cl, %edx
+        orl       %edx, %eax
+..B1.14:
+        fldt      8(%esp)
+        addl      4(%esp), %eax
+        fsubrp    %st, %st(3)
+        fmul      %st(6), %st
+        fld       %st(4)
+        movl      %eax, %edx
+        andl      $1, %edx
+        fadd      %st(3), %st
+        movl      (%esp), %ecx
+        fsubr     %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(5)
+        fld       %st(1)
+        fxch      %st(3)
+        faddl     zero_none@GOTOFF(%edi,%edx,8)
+        fadd      %st, %st(3)
+        fsub      %st(3), %st
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(4)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(2)
+        fldt      36+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(1)
+        fld       %st(1)
+        fadd      %st(3), %st
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fld       %st(2)
+        fldt      48+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(1)
+        fld       %st(1)
+        fadd      %st(3), %st
+        fsubr     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fld       %st(3)
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fldt      60+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fld       %st(3)
+        fxch      %st(2)
+        fmul      %st(5), %st
+        fldt      72+__4onpi_31l@GOTOFF(%ecx,%edi)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fld       %st(0)
+        fadd      %st(2), %st
+        fsubr     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        faddp     %st, %st(3)
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        fldt      84+__4onpi_31l@GOTOFF(%edi,%ecx)
+        fmulp     %st, %st(3)
+        fxch      %st(2)
+        faddp     %st, %st(3)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fldl      _TWO_32H@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fadd      %st, %st(1)
+        fsubrp    %st, %st(1)
+        fsubr     %st, %st(2)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _pi04_2d@GOTOFF(%edi)
+        fld       %st(0)
+        fmul      %st(2), %st
+        fxch      %st(2)
+        fadd      %st(3), %st
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fmull     8+_pi04_2d@GOTOFF(%edi)
+        faddp     %st, %st(1)
+..B1.15:
+        fldl      _TWO_12H@GOTOFF(%edi)
+        fld       %st(2)
+        fadd      %st(2), %st
+        fmul      %st, %st(1)
+        fstpt     8(%esp)
+        fldt      8(%esp)
+        fadd      %st(1), %st
+        fsubp     %st, %st(1)
+        fstl      (%esi)
+        fsubrp    %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     8(%esi)
+        addl      $20, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+        .align    16,0x90
+	.type	__libm_reduce_pi04l,@function
+	.size	__libm_reduce_pi04l,.-__libm_reduce_pi04l
+	.data
+# -- End  __libm_reduce_pi04l
+	.section .rodata, "a"
+	.align 8
+	.align 8
+zero_none:
+	.long	0x00000000,0x00000000
+	.long	0x00000000,0xbff00000
+	.type	zero_none,@object
+	.size	zero_none,16
+	.align 4
+__4onpi_d:
+	.long	1841940611
+	.long	1072979760
+	.type	__4onpi_d,@object
+	.size	__4onpi_d,8
+	.align 4
+_TWO_32H:
+	.long	0
+	.long	1106771968
+	.type	_TWO_32H,@object
+	.size	_TWO_32H,8
+	.align 4
+_pi04_3d:
+	.long	1413754112
+	.long	1072243195
+	.long	2563527040
+	.long	1021855384
+	.long	3417685868
+	.long	3118450936
+	.type	_pi04_3d,@object
+	.size	_pi04_3d,24
+	.align 4
+_pi04_5d:
+	.long	1413480448
+	.long	1072243195
+	.long	442499072
+	.long	1036039265
+	.long	771751936
+	.long	999496074
+	.long	622854144
+	.long	963347354
+	.long	1396597664
+	.long	922906692
+	.type	_pi04_5d,@object
+	.size	_pi04_5d,40
+	.align 4
+_SCALE:
+	.long	0
+	.long	845152256
+	.type	_SCALE,@object
+	.size	_SCALE,8
+	.align 4
+_zeros:
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	_zeros,@object
+	.size	_zeros,16
+	.align 4
+_pi04_2d:
+	.long	1413480448
+	.long	1072243195
+	.long	442655537
+	.long	1036039265
+	.type	_pi04_2d,@object
+	.size	_pi04_2d,16
+	.align 4
+_TWO_12H:
+	.long	0
+	.long	1085800448
+	.type	_TWO_12H,@object
+	.size	_TWO_12H,8
+	.align 2
+__4onpi_31l:
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	0
+	.word	33646
+	.word	41721
+	.word	16600
+	.word	0
+	.word	0
+	.word	0
+	.word	10832
+	.word	40072
+	.word	16567
+	.word	0
+	.word	0
+	.word	0
+	.word	44008
+	.word	65043
+	.word	16537
+	.word	0
+	.word	0
+	.word	0
+	.word	28384
+	.word	64154
+	.word	16505
+	.word	0
+	.word	0
+	.word	0
+	.word	38272
+	.word	56162
+	.word	16472
+	.word	0
+	.word	0
+	.word	0
+	.word	7298
+	.word	51682
+	.word	16445
+	.word	0
+	.word	0
+	.word	0
+	.word	45504
+	.word	65320
+	.word	16409
+	.word	0
+	.word	0
+	.word	0
+	.word	61204
+	.word	44922
+	.word	16382
+	.word	0
+	.word	0
+	.word	0
+	.word	18652
+	.word	50030
+	.word	16351
+	.word	0
+	.word	0
+	.word	0
+	.word	14144
+	.word	59657
+	.word	16318
+	.word	0
+	.word	0
+	.word	0
+	.word	37450
+	.word	47105
+	.word	16290
+	.word	0
+	.word	0
+	.word	0
+	.word	14898
+	.word	56641
+	.word	16259
+	.word	0
+	.word	0
+	.word	0
+	.word	34680
+	.word	34623
+	.word	16226
+	.word	0
+	.word	0
+	.word	0
+	.word	4760
+	.word	45515
+	.word	16196
+	.word	0
+	.word	0
+	.word	0
+	.word	41480
+	.word	40187
+	.word	16166
+	.word	0
+	.word	0
+	.word	0
+	.word	47852
+	.word	55252
+	.word	16134
+	.word	0
+	.word	0
+	.word	0
+	.word	54072
+	.word	35081
+	.word	16103
+	.word	0
+	.word	0
+	.word	0
+	.word	26808
+	.word	57421
+	.word	16071
+	.word	0
+	.word	0
+	.word	0
+	.word	20068
+	.word	57232
+	.word	16042
+	.word	0
+	.word	0
+	.word	0
+	.word	49576
+	.word	60188
+	.word	16009
+	.word	0
+	.word	0
+	.word	0
+	.word	10016
+	.word	52861
+	.word	15978
+	.word	0
+	.word	0
+	.word	0
+	.word	30648
+	.word	35825
+	.word	15947
+	.word	0
+	.word	0
+	.word	0
+	.word	60542
+	.word	58528
+	.word	15918
+	.word	0
+	.word	0
+	.word	0
+	.word	65468
+	.word	61743
+	.word	15887
+	.word	0
+	.word	0
+	.word	0
+	.word	64960
+	.word	45825
+	.word	15851
+	.word	0
+	.word	0
+	.word	0
+	.word	50604
+	.word	38792
+	.word	15825
+	.word	0
+	.word	0
+	.word	0
+	.word	18394
+	.word	33435
+	.word	15794
+	.word	0
+	.word	0
+	.word	0
+	.word	55780
+	.word	42703
+	.word	15763
+	.word	0
+	.word	0
+	.word	0
+	.word	14056
+	.word	63841
+	.word	15731
+	.word	0
+	.word	0
+	.word	0
+	.word	63080
+	.word	62563
+	.word	15700
+	.word	0
+	.word	0
+	.word	0
+	.word	20840
+	.word	62207
+	.word	15669
+	.word	0
+	.word	0
+	.word	0
+	.word	30094
+	.word	59983
+	.word	15639
+	.word	0
+	.word	0
+	.word	0
+	.word	61818
+	.word	60389
+	.word	15608
+	.word	0
+	.word	0
+	.word	0
+	.word	40186
+	.word	40579
+	.word	15577
+	.word	0
+	.word	0
+	.word	0
+	.word	42170
+	.word	58004
+	.word	15546
+	.word	0
+	.word	0
+	.word	0
+	.word	55276
+	.word	39678
+	.word	15514
+	.word	0
+	.word	0
+	.word	0
+	.word	44672
+	.word	36806
+	.word	15481
+	.word	0
+	.word	0
+	.word	0
+	.word	13060
+	.word	34144
+	.word	15452
+	.word	0
+	.word	0
+	.word	0
+	.word	28016
+	.word	57231
+	.word	15419
+	.word	0
+	.word	0
+	.word	0
+	.word	16112
+	.word	44995
+	.word	15390
+	.word	0
+	.word	0
+	.word	0
+	.word	53464
+	.word	33387
+	.word	15358
+	.word	0
+	.word	0
+	.word	0
+	.word	7296
+	.word	60751
+	.word	15325
+	.word	0
+	.word	0
+	.word	0
+	.word	29452
+	.word	45231
+	.word	15297
+	.word	0
+	.word	0
+	.word	0
+	.word	26208
+	.word	49689
+	.word	15266
+	.word	0
+	.word	0
+	.word	0
+	.word	37900
+	.word	44002
+	.word	15235
+	.word	0
+	.word	0
+	.word	0
+	.word	57340
+	.word	33800
+	.word	15204
+	.word	0
+	.word	0
+	.word	0
+	.word	27544
+	.word	50178
+	.word	15173
+	.word	0
+	.word	0
+	.word	0
+	.word	6168
+	.word	40132
+	.word	15142
+	.word	0
+	.word	0
+	.word	0
+	.word	21392
+	.word	43702
+	.word	15109
+	.word	0
+	.word	0
+	.word	0
+	.word	45168
+	.word	54372
+	.word	15081
+	.word	0
+	.word	0
+	.word	0
+	.word	8986
+	.word	40688
+	.word	15050
+	.word	0
+	.word	0
+	.word	0
+	.word	1648
+	.word	53745
+	.word	15018
+	.word	0
+	.word	0
+	.word	0
+	.word	30520
+	.word	55795
+	.word	14986
+	.word	0
+	.word	0
+	.word	0
+	.word	43060
+	.word	32914
+	.word	14956
+	.word	0
+	.word	0
+	.word	0
+	.word	46172
+	.word	52771
+	.word	14925
+	.word	0
+	.word	0
+	.word	0
+	.word	14056
+	.word	45285
+	.word	14893
+	.word	0
+	.word	0
+	.word	0
+	.word	53590
+	.word	44868
+	.word	14864
+	.word	0
+	.word	0
+	.word	0
+	.word	40786
+	.word	35970
+	.word	14833
+	.word	0
+	.word	0
+	.word	0
+	.word	33436
+	.word	65411
+	.word	14801
+	.word	0
+	.word	0
+	.word	0
+	.word	32006
+	.word	61382
+	.word	14771
+	.word	0
+	.word	0
+	.word	0
+	.word	37856
+	.word	45239
+	.word	14738
+	.word	0
+	.word	0
+	.word	0
+	.word	60894
+	.word	49555
+	.word	14709
+	.word	0
+	.word	0
+	.word	0
+	.word	48064
+	.word	53065
+	.word	14674
+	.word	0
+	.word	0
+	.word	0
+	.word	48624
+	.word	54844
+	.word	14647
+	.word	0
+	.word	0
+	.word	0
+	.word	7988
+	.word	40762
+	.word	14616
+	.word	0
+	.word	0
+	.word	0
+	.word	16270
+	.word	58745
+	.word	14585
+	.word	0
+	.word	0
+	.word	0
+	.word	37064
+	.word	50168
+	.word	14553
+	.word	0
+	.word	0
+	.word	0
+	.word	18624
+	.word	63736
+	.word	14519
+	.word	0
+	.word	0
+	.word	0
+	.word	60758
+	.word	44966
+	.word	14492
+	.word	0
+	.word	0
+	.word	0
+	.word	33304
+	.word	47465
+	.word	14461
+	.word	0
+	.word	0
+	.word	0
+	.word	6226
+	.word	60503
+	.word	14430
+	.word	0
+	.word	0
+	.word	0
+	.word	26380
+	.word	54900
+	.word	14398
+	.word	0
+	.word	0
+	.word	0
+	.word	44352
+	.word	49860
+	.word	14368
+	.word	0
+	.word	0
+	.word	0
+	.word	11904
+	.word	42646
+	.word	14337
+	.word	0
+	.word	0
+	.word	0
+	.word	55296
+	.word	50279
+	.word	14300
+	.word	0
+	.word	0
+	.word	0
+	.word	15474
+	.word	50606
+	.word	14275
+	.word	0
+	.word	0
+	.word	0
+	.word	45062
+	.word	44137
+	.word	14244
+	.word	0
+	.word	0
+	.word	0
+	.word	13472
+	.word	36063
+	.word	14210
+	.word	0
+	.word	0
+	.word	0
+	.word	40658
+	.word	53854
+	.word	14182
+	.word	0
+	.word	0
+	.word	0
+	.word	28652
+	.word	43690
+	.word	14151
+	.word	0
+	.word	0
+	.word	0
+	.word	24640
+	.word	64348
+	.word	14118
+	.word	0
+	.word	0
+	.word	0
+	.word	30284
+	.word	41980
+	.word	14088
+	.word	0
+	.word	0
+	.word	0
+	.word	45652
+	.word	38222
+	.word	14057
+	.word	0
+	.word	0
+	.word	0
+	.word	15900
+	.word	62940
+	.word	14026
+	.word	0
+	.word	0
+	.word	0
+	.word	31494
+	.word	50741
+	.word	13996
+	.word	0
+	.word	0
+	.word	0
+	.word	43194
+	.word	55096
+	.word	13965
+	.word	0
+	.word	0
+	.word	0
+	.word	1740
+	.word	45646
+	.word	13933
+	.word	0
+	.word	0
+	.word	0
+	.word	28936
+	.word	44150
+	.word	13903
+	.word	0
+	.word	0
+	.word	0
+	.word	8996
+	.word	42955
+	.word	13872
+	.word	0
+	.word	0
+	.word	0
+	.word	44096
+	.word	61205
+	.word	13839
+	.word	0
+	.word	0
+	.word	0
+	.word	44614
+	.word	54550
+	.word	13810
+	.word	0
+	.word	0
+	.word	0
+	.word	24926
+	.word	57347
+	.word	13779
+	.word	0
+	.word	0
+	.word	0
+	.word	3312
+	.word	61415
+	.word	13745
+	.word	0
+	.word	0
+	.word	0
+	.word	64336
+	.word	63884
+	.word	13717
+	.word	0
+	.word	0
+	.word	0
+	.word	2748
+	.word	62259
+	.word	13685
+	.word	0
+	.word	0
+	.word	0
+	.word	56672
+	.word	51775
+	.word	13653
+	.word	0
+	.word	0
+	.word	0
+	.word	32438
+	.word	55423
+	.word	13624
+	.word	0
+	.word	0
+	.word	0
+	.word	17652
+	.word	45713
+	.word	13593
+	.word	0
+	.word	0
+	.word	0
+	.word	65408
+	.word	51586
+	.word	13558
+	.word	0
+	.word	0
+	.word	0
+	.word	40416
+	.word	55736
+	.word	13531
+	.word	0
+	.word	0
+	.word	0
+	.word	52546
+	.word	37734
+	.word	13500
+	.word	0
+	.word	0
+	.word	0
+	.word	48880
+	.word	64238
+	.word	13469
+	.word	0
+	.word	0
+	.word	0
+	.word	56004
+	.word	46833
+	.word	13437
+	.word	0
+	.word	0
+	.word	0
+	.word	61760
+	.word	38110
+	.word	13405
+	.word	0
+	.word	0
+	.word	0
+	.word	41496
+	.word	35659
+	.word	13374
+	.word	0
+	.word	0
+	.word	0
+	.word	25472
+	.word	41269
+	.word	13342
+	.word	0
+	.word	0
+	.word	0
+	.word	45444
+	.word	36018
+	.word	13314
+	.word	0
+	.word	0
+	.word	0
+	.word	6510
+	.word	56417
+	.word	13283
+	.word	0
+	.word	0
+	.word	0
+	.word	3072
+	.word	56837
+	.word	13252
+	.word	0
+	.word	0
+	.word	0
+	.word	61338
+	.word	48440
+	.word	13221
+	.word	0
+	.word	0
+	.word	0
+	.word	49568
+	.word	57088
+	.word	13189
+	.word	0
+	.word	0
+	.word	0
+	.word	4240
+	.word	39283
+	.word	13157
+	.word	0
+	.word	0
+	.word	0
+	.word	18562
+	.word	33537
+	.word	13128
+	.word	0
+	.word	0
+	.word	0
+	.word	31422
+	.word	44487
+	.word	13097
+	.word	0
+	.word	0
+	.word	0
+	.word	31930
+	.word	60459
+	.word	13066
+	.word	0
+	.word	0
+	.word	0
+	.word	42272
+	.word	36641
+	.word	13033
+	.word	0
+	.word	0
+	.word	0
+	.word	28940
+	.word	36150
+	.word	13004
+	.word	0
+	.word	0
+	.word	0
+	.word	21010
+	.word	50925
+	.word	12973
+	.word	0
+	.word	0
+	.word	0
+	.word	29448
+	.word	64886
+	.word	12941
+	.word	0
+	.word	0
+	.word	0
+	.word	20500
+	.word	54600
+	.word	12911
+	.word	0
+	.word	0
+	.word	0
+	.word	54258
+	.word	46233
+	.word	12880
+	.word	0
+	.word	0
+	.word	0
+	.word	32628
+	.word	42502
+	.word	12848
+	.word	0
+	.word	0
+	.word	0
+	.word	61608
+	.word	55072
+	.word	12818
+	.word	0
+	.word	0
+	.word	0
+	.word	6236
+	.word	57871
+	.word	12786
+	.word	0
+	.word	0
+	.word	0
+	.word	42408
+	.word	34616
+	.word	12756
+	.word	0
+	.word	0
+	.word	0
+	.word	56692
+	.word	51963
+	.word	12724
+	.word	0
+	.word	0
+	.word	0
+	.word	39094
+	.word	48526
+	.word	12694
+	.word	0
+	.word	0
+	.word	0
+	.word	59870
+	.word	38783
+	.word	12663
+	.word	0
+	.word	0
+	.word	0
+	.word	26560
+	.word	33165
+	.word	12632
+	.word	0
+	.word	0
+	.word	0
+	.word	58666
+	.word	37666
+	.word	12601
+	.word	0
+	.word	0
+	.word	0
+	.word	58728
+	.word	39788
+	.word	12569
+	.word	0
+	.word	0
+	.word	0
+	.word	9048
+	.word	43530
+	.word	12538
+	.word	0
+	.word	0
+	.word	0
+	.word	58496
+	.word	57659
+	.word	12505
+	.word	0
+	.word	0
+	.word	0
+	.word	12324
+	.word	37025
+	.word	12477
+	.word	0
+	.word	0
+	.word	0
+	.word	38432
+	.word	55856
+	.word	12445
+	.word	0
+	.word	0
+	.word	0
+	.word	35210
+	.word	45960
+	.word	12415
+	.word	0
+	.word	0
+	.word	0
+	.word	45644
+	.word	51345
+	.word	12384
+	.word	0
+	.word	0
+	.word	0
+	.word	32854
+	.word	63883
+	.word	12353
+	.word	0
+	.word	0
+	.word	0
+	.word	29348
+	.word	41450
+	.word	12321
+	.word	0
+	.word	0
+	.word	0
+	.word	27384
+	.word	38024
+	.word	12289
+	.word	0
+	.word	0
+	.word	0
+	.word	57356
+	.word	57291
+	.word	12260
+	.word	0
+	.word	0
+	.word	0
+	.word	61164
+	.word	51521
+	.word	12228
+	.word	0
+	.word	0
+	.word	0
+	.word	21472
+	.word	59151
+	.word	12196
+	.word	0
+	.word	0
+	.word	0
+	.word	36704
+	.word	39943
+	.word	12165
+	.word	0
+	.word	0
+	.word	0
+	.word	45864
+	.word	50151
+	.word	12136
+	.word	0
+	.word	0
+	.word	0
+	.word	37892
+	.word	63687
+	.word	12104
+	.word	0
+	.word	0
+	.word	0
+	.word	14560
+	.word	51615
+	.word	12073
+	.word	0
+	.word	0
+	.word	0
+	.word	38776
+	.word	55684
+	.word	12041
+	.word	0
+	.word	0
+	.word	0
+	.word	59136
+	.word	53570
+	.word	12010
+	.word	0
+	.word	0
+	.word	0
+	.word	55556
+	.word	37955
+	.word	11981
+	.word	0
+	.word	0
+	.word	0
+	.word	54458
+	.word	44670
+	.word	11950
+	.word	0
+	.word	0
+	.word	0
+	.word	36446
+	.word	34084
+	.word	11919
+	.word	0
+	.word	0
+	.word	0
+	.word	46416
+	.word	51693
+	.word	11886
+	.word	0
+	.word	0
+	.word	0
+	.word	21432
+	.word	34376
+	.word	11857
+	.word	0
+	.word	0
+	.word	0
+	.word	56036
+	.word	34809
+	.word	11826
+	.word	0
+	.word	0
+	.word	0
+	.word	10562
+	.word	55654
+	.word	11795
+	.word	0
+	.word	0
+	.word	0
+	.word	20264
+	.word	53052
+	.word	11763
+	.word	0
+	.word	0
+	.word	0
+	.word	64064
+	.word	50415
+	.word	11729
+	.word	0
+	.word	0
+	.word	0
+	.word	17444
+	.word	48295
+	.word	11701
+	.word	0
+	.word	0
+	.word	0
+	.word	11874
+	.word	52677
+	.word	11671
+	.word	0
+	.word	0
+	.word	0
+	.word	60808
+	.word	39275
+	.word	11640
+	.word	0
+	.word	0
+	.word	0
+	.word	31792
+	.word	55677
+	.word	11606
+	.word	0
+	.word	0
+	.word	0
+	.word	60710
+	.word	49006
+	.word	11578
+	.word	0
+	.word	0
+	.word	0
+	.word	10520
+	.word	37403
+	.word	11546
+	.word	0
+	.word	0
+	.word	0
+	.word	20004
+	.word	59470
+	.word	11515
+	.word	0
+	.word	0
+	.word	0
+	.word	28096
+	.word	37612
+	.word	11485
+	.word	0
+	.word	0
+	.word	0
+	.word	20268
+	.word	44280
+	.word	11453
+	.word	0
+	.word	0
+	.word	0
+	.word	50740
+	.word	61588
+	.word	11422
+	.word	0
+	.word	0
+	.word	0
+	.word	56432
+	.word	58835
+	.word	11390
+	.word	0
+	.word	0
+	.word	0
+	.word	8576
+	.word	42496
+	.word	11355
+	.word	0
+	.word	0
+	.word	0
+	.word	33920
+	.word	54912
+	.word	11324
+	.word	0
+	.word	0
+	.word	0
+	.word	35620
+	.word	54843
+	.word	11298
+	.word	0
+	.word	0
+	.word	0
+	.word	736
+	.word	43591
+	.word	11264
+	.word	0
+	.word	0
+	.word	0
+	.word	39632
+	.word	61060
+	.word	11235
+	.word	0
+	.word	0
+	.word	0
+	.word	63452
+	.word	63129
+	.word	11206
+	.word	0
+	.word	0
+	.word	0
+	.word	56798
+	.word	58512
+	.word	11175
+	.word	0
+	.word	0
+	.word	0
+	.word	13472
+	.word	46333
+	.word	11141
+	.word	0
+	.word	0
+	.word	0
+	.word	37300
+	.word	36598
+	.word	11112
+	.word	0
+	.word	0
+	.word	0
+	.word	41952
+	.word	41639
+	.word	11079
+	.word	0
+	.word	0
+	.word	0
+	.word	52452
+	.word	33459
+	.word	11050
+	.word	0
+	.word	0
+	.word	0
+	.word	58558
+	.word	33287
+	.word	11020
+	.word	0
+	.word	0
+	.word	0
+	.word	7570
+	.word	43843
+	.word	10989
+	.word	0
+	.word	0
+	.word	0
+	.word	59416
+	.word	63990
+	.word	10957
+	.word	0
+	.word	0
+	.word	0
+	.word	65298
+	.word	47744
+	.word	10927
+	.word	0
+	.word	0
+	.word	0
+	.word	21076
+	.word	34089
+	.word	10896
+	.word	0
+	.word	0
+	.word	0
+	.word	7048
+	.word	57394
+	.word	10865
+	.word	0
+	.word	0
+	.word	0
+	.word	12872
+	.word	55405
+	.word	10832
+	.word	0
+	.word	0
+	.word	0
+	.word	12608
+	.word	51669
+	.word	10798
+	.word	0
+	.word	0
+	.word	0
+	.word	5350
+	.word	48455
+	.word	10772
+	.word	0
+	.word	0
+	.word	0
+	.word	23568
+	.word	58692
+	.word	10740
+	.word	0
+	.word	0
+	.word	0
+	.word	40784
+	.word	37046
+	.word	10708
+	.word	0
+	.word	0
+	.word	0
+	.word	38992
+	.word	43861
+	.word	10678
+	.word	0
+	.word	0
+	.word	0
+	.word	10064
+	.word	40199
+	.word	10648
+	.word	0
+	.word	0
+	.word	0
+	.word	26368
+	.word	35771
+	.word	10611
+	.word	0
+	.word	0
+	.word	0
+	.word	23994
+	.word	60721
+	.word	10586
+	.word	0
+	.word	0
+	.word	0
+	.word	25052
+	.word	34302
+	.word	10554
+	.word	0
+	.word	0
+	.word	0
+	.word	39842
+	.word	54964
+	.word	10524
+	.word	0
+	.word	0
+	.word	0
+	.word	11568
+	.word	58277
+	.word	10491
+	.word	0
+	.word	0
+	.word	0
+	.word	26160
+	.word	46438
+	.word	10461
+	.word	0
+	.word	0
+	.word	0
+	.word	23252
+	.word	43049
+	.word	10431
+	.word	0
+	.word	0
+	.word	0
+	.word	35288
+	.word	58000
+	.word	10400
+	.word	0
+	.word	0
+	.word	0
+	.word	14614
+	.word	50216
+	.word	10369
+	.word	0
+	.word	0
+	.word	0
+	.word	1168
+	.word	48804
+	.word	10336
+	.word	0
+	.word	0
+	.word	0
+	.word	60934
+	.word	33006
+	.word	10307
+	.word	0
+	.word	0
+	.word	0
+	.word	64512
+	.word	62247
+	.word	10272
+	.word	0
+	.word	0
+	.word	0
+	.word	59968
+	.word	43121
+	.word	10240
+	.word	0
+	.word	0
+	.word	0
+	.word	25560
+	.word	39974
+	.word	10212
+	.word	0
+	.word	0
+	.word	0
+	.word	1978
+	.word	49353
+	.word	10183
+	.word	0
+	.word	0
+	.word	0
+	.word	16290
+	.word	38807
+	.word	10152
+	.word	0
+	.word	0
+	.word	0
+	.word	8646
+	.word	65226
+	.word	10121
+	.word	0
+	.word	0
+	.word	0
+	.word	56896
+	.word	34317
+	.word	10088
+	.word	0
+	.word	0
+	.word	0
+	.word	40136
+	.word	39118
+	.word	10057
+	.word	0
+	.word	0
+	.word	0
+	.word	14200
+	.word	41756
+	.word	10026
+	.word	0
+	.word	0
+	.word	0
+	.word	59256
+	.word	63202
+	.word	9995
+	.word	0
+	.word	0
+	.word	0
+	.word	22968
+	.word	63553
+	.word	9965
+	.word	0
+	.word	0
+	.word	0
+	.word	736
+	.word	44292
+	.word	9933
+	.word	0
+	.word	0
+	.word	0
+	.word	23186
+	.word	37760
+	.word	9904
+	.word	0
+	.word	0
+	.word	0
+	.word	51008
+	.word	34950
+	.word	9869
+	.word	0
+	.word	0
+	.word	0
+	.word	1664
+	.word	64248
+	.word	9836
+	.word	0
+	.word	0
+	.word	0
+	.word	64352
+	.word	35199
+	.word	9811
+	.word	0
+	.word	0
+	.word	0
+	.word	34656
+	.word	63747
+	.word	9780
+	.word	0
+	.word	0
+	.word	0
+	.word	44330
+	.word	49864
+	.word	9749
+	.word	0
+	.word	0
+	.word	0
+	.word	11654
+	.word	35567
+	.word	9718
+	.word	0
+	.word	0
+	.word	0
+	.word	7924
+	.word	58919
+	.word	9686
+	.word	0
+	.word	0
+	.word	0
+	.word	2532
+	.word	32800
+	.word	9655
+	.word	0
+	.word	0
+	.word	0
+	.word	30024
+	.word	53799
+	.word	9624
+	.word	0
+	.word	0
+	.word	0
+	.word	30172
+	.word	64347
+	.word	9593
+	.word	0
+	.word	0
+	.word	0
+	.word	60036
+	.word	51382
+	.word	9562
+	.word	0
+	.word	0
+	.word	0
+	.word	58576
+	.word	33093
+	.word	9531
+	.word	0
+	.word	0
+	.word	0
+	.word	13888
+	.word	38760
+	.word	9500
+	.word	0
+	.word	0
+	.word	0
+	.word	9322
+	.word	52460
+	.word	9470
+	.word	0
+	.word	0
+	.word	0
+	.word	20944
+	.word	41077
+	.word	9437
+	.word	0
+	.word	0
+	.word	0
+	.word	17976
+	.word	41861
+	.word	9407
+	.word	0
+	.word	0
+	.word	0
+	.word	55176
+	.word	55158
+	.word	9377
+	.word	0
+	.word	0
+	.word	0
+	.word	4976
+	.word	35223
+	.word	9346
+	.word	0
+	.word	0
+	.word	0
+	.word	7816
+	.word	39783
+	.word	9314
+	.word	0
+	.word	0
+	.word	0
+	.word	27656
+	.word	55669
+	.word	9284
+	.word	0
+	.word	0
+	.word	0
+	.word	64944
+	.word	53184
+	.word	9250
+	.word	0
+	.word	0
+	.word	0
+	.word	12544
+	.word	49190
+	.word	9222
+	.word	0
+	.word	0
+	.word	0
+	.word	50612
+	.word	44644
+	.word	9190
+	.word	0
+	.word	0
+	.word	0
+	.word	8832
+	.word	63111
+	.word	9155
+	.word	0
+	.word	0
+	.word	0
+	.word	11744
+	.word	36870
+	.word	9129
+	.word	0
+	.word	0
+	.word	0
+	.word	9404
+	.word	63025
+	.word	9098
+	.word	0
+	.word	0
+	.word	0
+	.word	47316
+	.word	43381
+	.word	9067
+	.word	0
+	.word	0
+	.word	0
+	.word	55716
+	.word	47433
+	.word	9035
+	.word	0
+	.word	0
+	.word	0
+	.word	46414
+	.word	48441
+	.word	9005
+	.word	0
+	.word	0
+	.word	0
+	.word	19116
+	.word	39506
+	.word	8974
+	.word	0
+	.word	0
+	.word	0
+	.word	48060
+	.word	53381
+	.word	8943
+	.word	0
+	.word	0
+	.word	0
+	.word	57112
+	.word	50739
+	.word	8911
+	.word	0
+	.word	0
+	.word	0
+	.word	5840
+	.word	60581
+	.word	8879
+	.word	0
+	.word	0
+	.word	0
+	.word	62112
+	.word	57199
+	.word	8846
+	.word	0
+	.word	0
+	.word	0
+	.word	35908
+	.word	59499
+	.word	8818
+	.word	0
+	.word	0
+	.word	0
+	.word	13760
+	.word	48116
+	.word	8787
+	.word	0
+	.word	0
+	.word	0
+	.word	3136
+	.word	56059
+	.word	8752
+	.word	0
+	.word	0
+	.word	0
+	.word	37596
+	.word	39221
+	.word	8726
+	.word	0
+	.word	0
+	.word	0
+	.word	3232
+	.word	48550
+	.word	8691
+	.word	0
+	.word	0
+	.word	0
+	.word	22872
+	.word	42749
+	.word	8662
+	.word	0
+	.word	0
+	.word	0
+	.word	41948
+	.word	40319
+	.word	8633
+	.word	0
+	.word	0
+	.word	0
+	.word	31196
+	.word	64693
+	.word	8601
+	.word	0
+	.word	0
+	.word	0
+	.word	62052
+	.word	52923
+	.word	8571
+	.word	0
+	.word	0
+	.word	0
+	.word	2750
+	.word	33544
+	.word	8540
+	.word	0
+	.word	0
+	.word	0
+	.word	12462
+	.word	46179
+	.word	8509
+	.word	0
+	.word	0
+	.word	0
+	.word	25128
+	.word	45120
+	.word	8476
+	.word	0
+	.word	0
+	.word	0
+	.word	51634
+	.word	62523
+	.word	8447
+	.word	0
+	.word	0
+	.word	0
+	.word	15758
+	.word	42163
+	.word	8416
+	.word	0
+	.word	0
+	.word	0
+	.word	34022
+	.word	36267
+	.word	8385
+	.word	0
+	.word	0
+	.word	0
+	.word	41252
+	.word	39796
+	.word	8353
+	.word	0
+	.word	0
+	.word	0
+	.word	49782
+	.word	54423
+	.word	8323
+	.word	0
+	.word	0
+	.word	0
+	.word	25428
+	.word	42086
+	.word	8291
+	.word	0
+	.word	0
+	.word	0
+	.word	34388
+	.word	44810
+	.word	8260
+	.word	0
+	.word	0
+	.word	0
+	.word	7456
+	.word	64092
+	.word	8228
+	.word	0
+	.word	0
+	.word	0
+	.word	48336
+	.word	62448
+	.word	8196
+	.word	0
+	.word	0
+	.word	0
+	.word	60912
+	.word	61622
+	.word	8167
+	.word	0
+	.word	0
+	.word	0
+	.word	17852
+	.word	37250
+	.word	8137
+	.word	0
+	.word	0
+	.word	0
+	.word	57940
+	.word	56453
+	.word	8106
+	.word	0
+	.word	0
+	.word	0
+	.word	47256
+	.word	59825
+	.word	8074
+	.word	0
+	.word	0
+	.word	0
+	.word	3774
+	.word	59120
+	.word	8044
+	.word	0
+	.word	0
+	.word	0
+	.word	43448
+	.word	62852
+	.word	8012
+	.word	0
+	.word	0
+	.word	0
+	.word	4840
+	.word	57195
+	.word	7982
+	.word	0
+	.word	0
+	.word	0
+	.word	40862
+	.word	52565
+	.word	7951
+	.word	0
+	.word	0
+	.word	0
+	.word	1440
+	.word	60474
+	.word	7919
+	.word	0
+	.word	0
+	.word	0
+	.word	55520
+	.word	38648
+	.word	7889
+	.word	0
+	.word	0
+	.word	0
+	.word	15316
+	.word	52422
+	.word	7857
+	.word	0
+	.word	0
+	.word	0
+	.word	18704
+	.word	47227
+	.word	7827
+	.word	0
+	.word	0
+	.word	0
+	.word	48892
+	.word	54283
+	.word	7795
+	.word	0
+	.word	0
+	.word	0
+	.word	12670
+	.word	41990
+	.word	7765
+	.word	0
+	.word	0
+	.word	0
+	.word	27570
+	.word	49842
+	.word	7734
+	.word	0
+	.word	0
+	.word	0
+	.word	47230
+	.word	47992
+	.word	7703
+	.word	0
+	.word	0
+	.word	0
+	.word	41020
+	.word	56253
+	.word	7671
+	.word	0
+	.word	0
+	.word	0
+	.word	23404
+	.word	58312
+	.word	7641
+	.word	0
+	.word	0
+	.word	0
+	.word	35176
+	.word	51854
+	.word	7610
+	.word	0
+	.word	0
+	.word	0
+	.word	49188
+	.word	59051
+	.word	7578
+	.word	0
+	.word	0
+	.word	0
+	.word	16656
+	.word	54507
+	.word	7546
+	.word	0
+	.word	0
+	.word	0
+	.word	41320
+	.word	48565
+	.word	7517
+	.word	0
+	.word	0
+	.word	0
+	.word	302
+	.word	42490
+	.word	7486
+	.word	0
+	.word	0
+	.word	0
+	.word	26680
+	.word	39967
+	.word	7454
+	.word	0
+	.word	0
+	.word	0
+	.word	41304
+	.word	43638
+	.word	7424
+	.word	0
+	.word	0
+	.word	0
+	.word	2314
+	.word	48533
+	.word	7393
+	.word	0
+	.word	0
+	.word	0
+	.word	63294
+	.word	35693
+	.word	7362
+	.word	0
+	.word	0
+	.word	0
+	.word	24538
+	.word	48319
+	.word	7331
+	.word	0
+	.word	0
+	.word	0
+	.word	56296
+	.word	47263
+	.word	7300
+	.word	0
+	.word	0
+	.word	0
+	.word	28236
+	.word	38599
+	.word	7268
+	.word	0
+	.word	0
+	.word	0
+	.word	6594
+	.word	62116
+	.word	7238
+	.word	0
+	.word	0
+	.word	0
+	.word	47104
+	.word	63573
+	.word	7198
+	.word	0
+	.word	0
+	.word	0
+	.word	34812
+	.word	34303
+	.word	7176
+	.word	0
+	.word	0
+	.word	0
+	.word	5144
+	.word	33695
+	.word	7145
+	.word	0
+	.word	0
+	.word	0
+	.word	24966
+	.word	55768
+	.word	7114
+	.word	0
+	.word	0
+	.word	0
+	.word	62720
+	.word	43946
+	.word	7078
+	.word	0
+	.word	0
+	.word	0
+	.word	31542
+	.word	56062
+	.word	7052
+	.word	0
+	.word	0
+	.word	0
+	.word	62356
+	.word	59096
+	.word	7020
+	.word	0
+	.word	0
+	.word	0
+	.word	28412
+	.word	40533
+	.word	6990
+	.word	0
+	.word	0
+	.word	0
+	.word	24080
+	.word	50467
+	.word	6958
+	.word	0
+	.word	0
+	.word	0
+	.word	33296
+	.word	46841
+	.word	6925
+	.word	0
+	.word	0
+	.word	0
+	.word	39600
+	.word	38627
+	.word	6897
+	.word	0
+	.word	0
+	.word	0
+	.word	14436
+	.word	37607
+	.word	6865
+	.word	0
+	.word	0
+	.word	0
+	.word	39032
+	.word	56421
+	.word	6833
+	.word	0
+	.word	0
+	.word	0
+	.word	64032
+	.word	54987
+	.word	6804
+	.word	0
+	.word	0
+	.word	0
+	.word	27648
+	.word	42212
+	.word	6768
+	.word	0
+	.word	0
+	.word	0
+	.word	43840
+	.word	46107
+	.word	6739
+	.word	0
+	.word	0
+	.word	0
+	.word	17316
+	.word	36574
+	.word	6711
+	.word	0
+	.word	0
+	.word	0
+	.word	8928
+	.word	37652
+	.word	6677
+	.word	0
+	.word	0
+	.word	0
+	.word	24944
+	.word	47433
+	.word	6648
+	.word	0
+	.word	0
+	.word	0
+	.word	27392
+	.word	57430
+	.word	6616
+	.word	0
+	.word	0
+	.word	0
+	.word	39848
+	.word	43340
+	.word	6585
+	.word	0
+	.word	0
+	.word	0
+	.word	64160
+	.word	43542
+	.word	6555
+	.word	0
+	.word	0
+	.word	0
+	.word	35226
+	.word	63015
+	.word	6525
+	.word	0
+	.word	0
+	.word	0
+	.word	40736
+	.word	64368
+	.word	6493
+	.word	0
+	.word	0
+	.word	0
+	.word	42168
+	.word	49526
+	.word	6462
+	.word	0
+	.word	0
+	.word	0
+	.word	45596
+	.word	34243
+	.word	6432
+	.word	0
+	.word	0
+	.word	0
+	.word	20690
+	.word	39705
+	.word	6401
+	.word	0
+	.word	0
+	.word	0
+	.word	54448
+	.word	46856
+	.word	6368
+	.word	0
+	.word	0
+	.word	0
+	.word	64392
+	.word	62736
+	.word	6337
+	.word	0
+	.word	0
+	.word	0
+	.word	12780
+	.word	56461
+	.word	6307
+	.word	0
+	.word	0
+	.word	0
+	.word	15360
+	.word	49145
+	.word	6277
+	.word	0
+	.word	0
+	.word	0
+	.word	20512
+	.word	49931
+	.word	6242
+	.word	0
+	.word	0
+	.word	0
+	.word	54512
+	.word	55820
+	.word	6212
+	.word	0
+	.word	0
+	.word	0
+	.word	8402
+	.word	39333
+	.word	6184
+	.word	0
+	.word	0
+	.word	0
+	.word	34094
+	.word	53593
+	.word	6153
+	.word	0
+	.word	0
+	.word	0
+	.word	31960
+	.word	38817
+	.word	6121
+	.word	0
+	.word	0
+	.word	0
+	.word	16954
+	.word	39291
+	.word	6091
+	.word	0
+	.word	0
+	.word	0
+	.word	49600
+	.word	48765
+	.word	6056
+	.word	0
+	.word	0
+	.word	0
+	.word	59580
+	.word	56541
+	.word	6029
+	.word	0
+	.word	0
+	.word	0
+	.word	35624
+	.word	44550
+	.word	5998
+	.word	0
+	.word	0
+	.word	0
+	.word	4142
+	.word	47316
+	.word	5967
+	.word	0
+	.word	0
+	.word	0
+	.word	43520
+	.word	43612
+	.word	5935
+	.word	0
+	.word	0
+	.word	0
+	.word	20976
+	.word	40896
+	.word	5902
+	.word	0
+	.word	0
+	.word	0
+	.word	63576
+	.word	57729
+	.word	5874
+	.word	0
+	.word	0
+	.word	0
+	.word	37288
+	.word	33122
+	.word	5843
+	.word	0
+	.word	0
+	.word	0
+	.word	24384
+	.word	52079
+	.word	5809
+	.word	0
+	.word	0
+	.word	0
+	.word	47952
+	.word	58719
+	.word	5779
+	.word	0
+	.word	0
+	.word	0
+	.word	44242
+	.word	55445
+	.word	5750
+	.word	0
+	.word	0
+	.word	0
+	.word	61232
+	.word	38847
+	.word	5716
+	.word	0
+	.word	0
+	.word	0
+	.word	63232
+	.word	46039
+	.word	5683
+	.word	0
+	.word	0
+	.word	0
+	.word	13396
+	.word	42933
+	.word	5657
+	.word	0
+	.word	0
+	.word	0
+	.word	27392
+	.word	43305
+	.word	5622
+	.word	0
+	.word	0
+	.word	0
+	.word	40708
+	.word	35319
+	.word	5595
+	.word	0
+	.word	0
+	.word	0
+	.word	44408
+	.word	55685
+	.word	5564
+	.word	0
+	.word	0
+	.word	0
+	.word	42090
+	.word	44607
+	.word	5533
+	.word	0
+	.word	0
+	.word	0
+	.word	25504
+	.word	53466
+	.word	5500
+	.word	0
+	.word	0
+	.word	0
+	.word	24208
+	.word	33149
+	.word	5470
+	.word	0
+	.word	0
+	.word	0
+	.word	5268
+	.word	45375
+	.word	5440
+	.word	0
+	.word	0
+	.word	0
+	.word	144
+	.word	40000
+	.word	5409
+	.word	0
+	.word	0
+	.word	0
+	.word	56688
+	.word	52358
+	.word	5376
+	.word	0
+	.word	0
+	.word	0
+	.word	25848
+	.word	56175
+	.word	5345
+	.word	0
+	.word	0
+	.word	0
+	.word	57900
+	.word	44055
+	.word	5315
+	.word	0
+	.word	0
+	.word	0
+	.word	24800
+	.word	43437
+	.word	5283
+	.word	0
+	.word	0
+	.word	0
+	.word	17984
+	.word	54872
+	.word	5249
+	.word	0
+	.word	0
+	.word	0
+	.word	25744
+	.word	41345
+	.word	5223
+	.word	0
+	.word	0
+	.word	0
+	.word	7668
+	.word	43682
+	.word	5191
+	.word	0
+	.word	0
+	.word	0
+	.word	47434
+	.word	36705
+	.word	5161
+	.word	0
+	.word	0
+	.word	0
+	.word	20888
+	.word	40323
+	.word	5129
+	.word	0
+	.word	0
+	.word	0
+	.word	3962
+	.word	43032
+	.word	5099
+	.word	0
+	.word	0
+	.word	0
+	.word	50270
+	.word	49260
+	.word	5068
+	.word	0
+	.word	0
+	.word	0
+	.word	20160
+	.word	64041
+	.word	5032
+	.word	0
+	.word	0
+	.word	0
+	.word	25624
+	.word	36013
+	.word	5004
+	.word	0
+	.word	0
+	.word	0
+	.word	48328
+	.word	59345
+	.word	4975
+	.word	0
+	.word	0
+	.word	0
+	.word	51508
+	.word	63920
+	.word	4943
+	.word	0
+	.word	0
+	.word	0
+	.word	27872
+	.word	39135
+	.word	4913
+	.word	0
+	.word	0
+	.word	0
+	.word	13590
+	.word	58857
+	.word	4882
+	.word	0
+	.word	0
+	.word	0
+	.word	50880
+	.word	61323
+	.word	4847
+	.word	0
+	.word	0
+	.word	0
+	.word	44802
+	.word	37181
+	.word	4820
+	.word	0
+	.word	0
+	.word	0
+	.word	53808
+	.word	57813
+	.word	4789
+	.word	0
+	.word	0
+	.word	0
+	.word	64424
+	.word	49714
+	.word	4757
+	.word	0
+	.word	0
+	.word	0
+	.word	31652
+	.word	44011
+	.word	4727
+	.word	0
+	.word	0
+	.word	0
+	.word	28252
+	.word	50834
+	.word	4696
+	.word	0
+	.word	0
+	.word	0
+	.word	30370
+	.word	38742
+	.word	4665
+	.word	0
+	.word	0
+	.word	0
+	.word	57728
+	.word	58403
+	.word	4628
+	.word	0
+	.word	0
+	.word	0
+	.word	35900
+	.word	37112
+	.word	4603
+	.word	0
+	.word	0
+	.word	0
+	.word	40764
+	.word	40914
+	.word	4572
+	.word	0
+	.word	0
+	.word	0
+	.word	21472
+	.word	46910
+	.word	4541
+	.word	0
+	.word	0
+	.word	0
+	.word	17854
+	.word	35030
+	.word	4510
+	.word	0
+	.word	0
+	.word	0
+	.word	4378
+	.word	35776
+	.word	4479
+	.word	0
+	.word	0
+	.word	0
+	.word	57962
+	.word	55295
+	.word	4448
+	.word	0
+	.word	0
+	.word	0
+	.word	64352
+	.word	56717
+	.word	4415
+	.word	0
+	.word	0
+	.word	0
+	.word	37744
+	.word	49416
+	.word	4384
+	.word	0
+	.word	0
+	.word	0
+	.word	38484
+	.word	35759
+	.word	4355
+	.word	0
+	.word	0
+	.word	0
+	.word	55020
+	.word	54969
+	.word	4324
+	.word	0
+	.word	0
+	.word	0
+	.word	9188
+	.word	55223
+	.word	4292
+	.word	0
+	.word	0
+	.word	0
+	.word	6822
+	.word	43079
+	.word	4262
+	.word	0
+	.word	0
+	.word	0
+	.word	48870
+	.word	40943
+	.word	4231
+	.word	0
+	.word	0
+	.word	0
+	.word	9936
+	.word	42731
+	.word	4198
+	.word	0
+	.word	0
+	.word	0
+	.word	23430
+	.word	43136
+	.word	4169
+	.word	0
+	.word	0
+	.word	0
+	.word	4700
+	.word	55665
+	.word	4137
+	.word	0
+	.word	0
+	.word	0
+	.word	8056
+	.word	40216
+	.word	4106
+	.word	0
+	.word	0
+	.word	0
+	.word	3716
+	.word	45403
+	.word	4075
+	.word	0
+	.word	0
+	.word	0
+	.word	53440
+	.word	49488
+	.word	4044
+	.word	0
+	.word	0
+	.word	0
+	.word	41776
+	.word	50188
+	.word	4013
+	.word	0
+	.word	0
+	.word	0
+	.word	20994
+	.word	64556
+	.word	3983
+	.word	0
+	.word	0
+	.word	0
+	.word	16252
+	.word	60661
+	.word	3951
+	.word	0
+	.word	0
+	.word	0
+	.word	61252
+	.word	65021
+	.word	3920
+	.word	0
+	.word	0
+	.word	0
+	.word	16236
+	.word	43803
+	.word	3889
+	.word	0
+	.word	0
+	.word	0
+	.word	63064
+	.word	35308
+	.word	3857
+	.word	0
+	.word	0
+	.word	0
+	.word	49096
+	.word	39848
+	.word	3828
+	.word	0
+	.word	0
+	.word	0
+	.word	15680
+	.word	48673
+	.word	3797
+	.word	0
+	.word	0
+	.word	0
+	.word	48068
+	.word	50957
+	.word	3766
+	.word	0
+	.word	0
+	.word	0
+	.word	20824
+	.word	56086
+	.word	3734
+	.word	0
+	.word	0
+	.word	0
+	.word	46504
+	.word	43224
+	.word	3704
+	.word	0
+	.word	0
+	.word	0
+	.word	52428
+	.word	46094
+	.word	3672
+	.word	0
+	.word	0
+	.word	0
+	.word	17548
+	.word	52066
+	.word	3642
+	.word	0
+	.word	0
+	.word	0
+	.word	61738
+	.word	35565
+	.word	3611
+	.word	0
+	.word	0
+	.word	0
+	.word	31184
+	.word	50588
+	.word	3579
+	.word	0
+	.word	0
+	.word	0
+	.word	1716
+	.word	52681
+	.word	3549
+	.word	0
+	.word	0
+	.word	0
+	.word	44656
+	.word	43385
+	.word	3518
+	.word	0
+	.word	0
+	.word	0
+	.word	12668
+	.word	43259
+	.word	3486
+	.word	0
+	.word	0
+	.word	0
+	.word	24544
+	.word	35408
+	.word	3453
+	.word	0
+	.word	0
+	.word	0
+	.word	28854
+	.word	65018
+	.word	3425
+	.word	0
+	.word	0
+	.word	0
+	.word	5696
+	.word	40391
+	.word	3393
+	.word	0
+	.word	0
+	.word	0
+	.word	39580
+	.word	56400
+	.word	3363
+	.word	0
+	.word	0
+	.word	0
+	.word	20428
+	.word	39579
+	.word	3332
+	.word	0
+	.word	0
+	.word	0
+	.word	32328
+	.word	36727
+	.word	3301
+	.word	0
+	.word	0
+	.word	0
+	.word	34020
+	.word	54457
+	.word	3270
+	.word	0
+	.word	0
+	.word	0
+	.word	34016
+	.word	48400
+	.word	3238
+	.word	0
+	.word	0
+	.word	0
+	.word	6922
+	.word	51417
+	.word	3208
+	.word	0
+	.word	0
+	.word	0
+	.word	27208
+	.word	64641
+	.word	3176
+	.word	0
+	.word	0
+	.word	0
+	.word	1802
+	.word	48886
+	.word	3146
+	.word	0
+	.word	0
+	.word	0
+	.word	35440
+	.word	61590
+	.word	3115
+	.word	0
+	.word	0
+	.word	0
+	.word	60610
+	.word	51604
+	.word	3084
+	.word	0
+	.word	0
+	.word	0
+	.word	5440
+	.word	38199
+	.word	3050
+	.word	0
+	.word	0
+	.word	0
+	.word	6914
+	.word	43867
+	.word	3022
+	.word	0
+	.word	0
+	.word	0
+	.word	24000
+	.word	45256
+	.word	2989
+	.word	0
+	.word	0
+	.word	0
+	.word	51496
+	.word	57396
+	.word	2959
+	.word	0
+	.word	0
+	.word	0
+	.word	11538
+	.word	46256
+	.word	2929
+	.word	0
+	.word	0
+	.word	0
+	.word	36802
+	.word	48020
+	.word	2898
+	.word	0
+	.word	0
+	.word	0
+	.word	57910
+	.word	57903
+	.word	2867
+	.word	0
+	.word	0
+	.word	0
+	.word	47484
+	.word	48798
+	.word	2835
+	.word	0
+	.word	0
+	.word	0
+	.word	57766
+	.word	57709
+	.word	2805
+	.word	0
+	.word	0
+	.word	0
+	.word	54064
+	.word	47856
+	.word	2774
+	.word	0
+	.word	0
+	.word	0
+	.word	49340
+	.word	48080
+	.word	2743
+	.word	0
+	.word	0
+	.word	0
+	.word	36454
+	.word	56731
+	.word	2712
+	.word	0
+	.word	0
+	.word	0
+	.word	51548
+	.word	63385
+	.word	2681
+	.word	0
+	.word	0
+	.word	0
+	.word	56000
+	.word	48716
+	.word	2645
+	.word	0
+	.word	0
+	.word	0
+	.word	44992
+	.word	50040
+	.word	2615
+	.word	0
+	.word	0
+	.word	0
+	.word	43136
+	.word	58177
+	.word	2585
+	.word	0
+	.word	0
+	.word	0
+	.word	49730
+	.word	33270
+	.word	2557
+	.word	0
+	.word	0
+	.word	0
+	.word	29808
+	.word	51063
+	.word	2526
+	.word	0
+	.word	0
+	.word	0
+	.word	25276
+	.word	46724
+	.word	2494
+	.word	0
+	.word	0
+	.word	0
+	.word	17324
+	.word	35928
+	.word	2463
+	.word	0
+	.word	0
+	.word	0
+	.word	52284
+	.word	63916
+	.word	2433
+	.word	0
+	.word	0
+	.word	0
+	.word	5414
+	.word	46704
+	.word	2402
+	.word	0
+	.word	0
+	.word	0
+	.word	51710
+	.word	57168
+	.word	2371
+	.word	0
+	.word	0
+	.word	0
+	.word	27366
+	.word	49253
+	.word	2340
+	.word	0
+	.word	0
+	.word	0
+	.word	45332
+	.word	53033
+	.word	2309
+	.word	0
+	.word	0
+	.word	0
+	.word	54152
+	.word	37418
+	.word	2276
+	.word	0
+	.word	0
+	.word	0
+	.word	53076
+	.word	47398
+	.word	2247
+	.word	0
+	.word	0
+	.word	0
+	.word	14374
+	.word	59477
+	.word	2216
+	.word	0
+	.word	0
+	.word	0
+	.word	59336
+	.word	33435
+	.word	2184
+	.word	0
+	.word	0
+	.word	0
+	.word	21612
+	.word	43267
+	.word	2154
+	.word	0
+	.word	0
+	.word	0
+	.word	34664
+	.word	39372
+	.word	2121
+	.word	0
+	.word	0
+	.word	0
+	.word	172
+	.word	62761
+	.word	2091
+	.word	0
+	.word	0
+	.word	0
+	.word	9816
+	.word	40715
+	.word	2060
+	.word	0
+	.word	0
+	.word	0
+	.word	65116
+	.word	40481
+	.word	2030
+	.word	0
+	.word	0
+	.word	0
+	.word	28066
+	.word	39184
+	.word	1999
+	.word	0
+	.word	0
+	.word	0
+	.word	37408
+	.word	63923
+	.word	1968
+	.word	0
+	.word	0
+	.word	0
+	.word	15760
+	.word	42305
+	.word	1937
+	.word	0
+	.word	0
+	.word	0
+	.word	28236
+	.word	59340
+	.word	1905
+	.word	0
+	.word	0
+	.word	0
+	.word	43258
+	.word	59402
+	.word	1875
+	.word	0
+	.word	0
+	.word	0
+	.word	19988
+	.word	50087
+	.word	1844
+	.word	0
+	.word	0
+	.word	0
+	.word	63456
+	.word	47833
+	.word	1810
+	.word	0
+	.word	0
+	.word	0
+	.word	65184
+	.word	61426
+	.word	1781
+	.word	0
+	.word	0
+	.word	0
+	.word	52982
+	.word	48456
+	.word	1751
+	.word	0
+	.word	0
+	.word	0
+	.word	30020
+	.word	62809
+	.word	1719
+	.word	0
+	.word	0
+	.word	0
+	.word	9096
+	.word	63061
+	.word	1688
+	.word	0
+	.word	0
+	.word	0
+	.word	59648
+	.word	44374
+	.word	1654
+	.word	0
+	.word	0
+	.word	0
+	.word	11456
+	.word	33847
+	.word	1625
+	.word	0
+	.word	0
+	.word	0
+	.word	12392
+	.word	50500
+	.word	1595
+	.word	0
+	.word	0
+	.word	0
+	.word	56432
+	.word	59196
+	.word	1563
+	.word	0
+	.word	0
+	.word	0
+	.word	61008
+	.word	40265
+	.word	1532
+	.word	0
+	.word	0
+	.word	0
+	.word	37842
+	.word	33270
+	.word	1503
+	.word	0
+	.word	0
+	.word	0
+	.word	37916
+	.word	44543
+	.word	1471
+	.word	0
+	.word	0
+	.word	0
+	.word	11490
+	.word	36421
+	.word	1441
+	.word	0
+	.word	0
+	.word	0
+	.word	19040
+	.word	38397
+	.word	1409
+	.word	0
+	.word	0
+	.word	0
+	.word	31224
+	.word	47162
+	.word	1379
+	.word	0
+	.word	0
+	.word	0
+	.word	52056
+	.word	41461
+	.word	1347
+	.word	0
+	.word	0
+	.word	0
+	.word	10810
+	.word	56374
+	.word	1317
+	.word	0
+	.word	0
+	.word	0
+	.word	5358
+	.word	35086
+	.word	1286
+	.word	0
+	.word	0
+	.word	0
+	.word	36640
+	.word	50226
+	.word	1251
+	.word	0
+	.word	0
+	.word	0
+	.word	33856
+	.word	45597
+	.word	1222
+	.word	0
+	.word	0
+	.word	0
+	.word	21552
+	.word	63128
+	.word	1191
+	.word	0
+	.word	0
+	.word	0
+	.word	1198
+	.word	35616
+	.word	1162
+	.word	0
+	.word	0
+	.word	0
+	.word	1232
+	.word	59506
+	.word	1131
+	.word	0
+	.word	0
+	.word	0
+	.word	51086
+	.word	34963
+	.word	1100
+	.word	0
+	.word	0
+	.word	0
+	.word	3960
+	.word	39061
+	.word	1067
+	.word	0
+	.word	0
+	.word	0
+	.word	4564
+	.word	57134
+	.word	1037
+	.word	0
+	.word	0
+	.word	0
+	.word	59468
+	.word	35285
+	.word	1007
+	.word	0
+	.word	0
+	.word	0
+	.word	63422
+	.word	35431
+	.word	976
+	.word	0
+	.word	0
+	.word	0
+	.word	38352
+	.word	51462
+	.word	945
+	.word	0
+	.word	0
+	.word	0
+	.word	25806
+	.word	55660
+	.word	914
+	.word	0
+	.word	0
+	.word	0
+	.word	38842
+	.word	41327
+	.word	883
+	.word	0
+	.word	0
+	.word	0
+	.word	17980
+	.word	50458
+	.word	852
+	.word	0
+	.word	0
+	.word	0
+	.word	61194
+	.word	59710
+	.word	821
+	.word	0
+	.word	0
+	.word	0
+	.word	21098
+	.word	42086
+	.word	790
+	.word	0
+	.word	0
+	.word	0
+	.word	16704
+	.word	43341
+	.word	757
+	.word	0
+	.word	0
+	.word	0
+	.word	46316
+	.word	52840
+	.word	728
+	.word	0
+	.word	0
+	.word	0
+	.word	20386
+	.word	33936
+	.word	697
+	.word	0
+	.word	0
+	.word	0
+	.word	20064
+	.word	51864
+	.word	664
+	.word	0
+	.word	0
+	.word	0
+	.word	2268
+	.word	57500
+	.word	634
+	.word	0
+	.word	0
+	.word	0
+	.word	11152
+	.word	51171
+	.word	604
+	.word	0
+	.word	0
+	.word	0
+	.word	23164
+	.word	63727
+	.word	572
+	.word	0
+	.word	0
+	.word	0
+	.word	20514
+	.word	40280
+	.word	542
+	.word	0
+	.word	0
+	.word	0
+	.word	21818
+	.word	57922
+	.word	511
+	.word	0
+	.word	0
+	.word	0
+	.word	32366
+	.word	46413
+	.word	480
+	.word	0
+	.word	0
+	.word	0
+	.word	53972
+	.word	43148
+	.word	449
+	.word	0
+	.word	0
+	.word	0
+	.word	30134
+	.word	65133
+	.word	418
+	.word	0
+	.word	0
+	.word	0
+	.word	15282
+	.word	61516
+	.word	387
+	.word	0
+	.word	0
+	.word	0
+	.word	49872
+	.word	49222
+	.word	355
+	.word	0
+	.word	0
+	.word	0
+	.word	9484
+	.word	63958
+	.word	325
+	.word	0
+	.word	0
+	.word	0
+	.word	47028
+	.word	35341
+	.word	294
+	.word	0
+	.word	0
+	.word	0
+	.word	6770
+	.word	58613
+	.word	263
+	.word	0
+	.word	0
+	.word	0
+	.word	33372
+	.word	43448
+	.word	232
+	.word	0
+	.word	0
+	.word	0
+	.word	27792
+	.word	51629
+	.word	198
+	.word	0
+	.word	0
+	.word	0
+	.word	19712
+	.word	53691
+	.word	170
+	.word	0
+	.word	0
+	.word	0
+	.word	42144
+	.word	60929
+	.word	135
+	.word	0
+	.word	0
+	.word	0
+	.word	35240
+	.word	48799
+	.word	107
+	.word	0
+	.word	0
+	.word	0
+	.word	910
+	.word	51212
+	.word	77
+	.word	0
+	.word	0
+	.word	0
+	.word	65062
+	.word	33668
+	.word	46
+	.word	0
+	.word	0
+	.word	0
+	.word	52624
+	.word	51799
+	.word	14
+	.word	0
+	.type	__4onpi_31l,@object
+	.size	__4onpi_31l,6444
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/libm_sincos_huge.S b/libm/x86/libm_sincos_huge.S
new file mode 100644
index 0000000..b43d193
--- /dev/null
+++ b/libm/x86/libm_sincos_huge.S
@@ -0,0 +1,668 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_sincos_huge
+	.text
+       .align    16,0x90
+	.hidden __libm_sincos_huge
+	.globl __libm_sincos_huge
+__libm_sincos_huge:
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+# parameter 3: 20 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-64, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $52, %esp
+        movl      16(%ebp), %eax
+        movl      20(%ebp), %edx
+        movl      %eax, 32(%esp)
+        movl      %edx, 36(%esp)
+..B1.2:
+        fnstcw    30(%esp)
+..B1.3:
+        call      ..L2
+..L2:
+        popl      %edi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
+        movsd     8(%ebp), %xmm1
+        movl      12(%ebp), %esi
+        movl      %esi, %eax
+        andl      $2147483647, %eax
+        andps     .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
+        shrl      $31, %esi
+        movl      %eax, 40(%esp)
+        cmpl      $1104150528, %eax
+        movsd     %xmm1, 8(%ebp)
+        jae       ..B1.11
+..B1.4:
+        movsd     _Pi4Inv@GOTOFF(%edi), %xmm0
+        mulsd     %xmm1, %xmm0
+        movzwl    30(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        movsd     %xmm0, (%esp)
+        cmpl      $768, %eax
+        je        ..B1.42
+..B1.5:
+        orl       $-64768, %edx
+        movw      %dx, 28(%esp)
+..B1.6:
+        fldcw     28(%esp)
+..B1.7:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %ebx
+..B1.8:
+        movl      %ebx, 12(%esp)
+        movl      4(%esp), %ebx
+        movl      %ebx, %eax
+        movl      %esi, 8(%esp)
+        movl      %ebx, %esi
+        shrl      $20, %esi
+        andl      $1048575, %eax
+        movl      %esi, %ecx
+        orl       $1048576, %eax
+        negl      %ecx
+        movl      %eax, %edx
+        addl      $19, %ecx
+        addl      $13, %esi
+        movl      %ecx, 24(%esp)
+        shrl      %cl, %edx
+        movl      %esi, %ecx
+        shll      %cl, %eax
+        movl      24(%esp), %ecx
+        movl      (%esp), %esi
+        shrl      %cl, %esi
+        orl       %esi, %eax
+        cmpl      $1094713344, %ebx
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        cmovb     %edx, %eax
+        movl      8(%esp), %esi
+        lea       1(%eax), %edx
+        movl      %edx, %ebx
+        andl      $-2, %ebx
+        movl      %ebx, 16(%esp)
+        fildl     16(%esp)
+        movl      12(%esp), %ebx
+        cmpl      $1094713344, 40(%esp)
+        jae       ..B1.10
+..B1.9:
+        fldl      _Pi4x3@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x3@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x3@GOTOFF(%edi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.10:
+        fldl      _Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x4@GOTOFF(%edi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      24+_Pi4x4@GOTOFF(%edi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.11:
+        movzwl    30(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        cmpl      $768, %eax
+        je        ..B1.43
+..B1.12:
+        orl       $-64768, %edx
+        movw      %dx, 28(%esp)
+..B1.13:
+        fldcw     28(%esp)
+..B1.14:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %ebx
+..B1.15:
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        addl      $-32, %esp
+        lea       32(%esp), %eax
+        fstpt     (%esp)
+        movl      $0, 12(%esp)
+        movl      %eax, 16(%esp)
+        call      __libm_reduce_pi04l
+..B1.46:
+        addl      $32, %esp
+..B1.16:
+        fldl      (%esp)
+        lea       1(%eax), %edx
+        fldl      8(%esp)
+        faddp     %st, %st(1)
+..B1.17:
+        movl      %edx, %ecx
+        addl      $3, %eax
+        shrl      $2, %ecx
+        andl      $1, %ecx
+        shrl      $2, %eax
+        xorl      %ecx, %esi
+        movl      36(%esp), %ecx
+        andl      $1, %eax
+        andl      $3, %ecx
+        cmpl      $3, %ecx
+        jne       ..B1.25
+..B1.18:
+        fldt      84+_SP@GOTOFF(%edi)
+        fld       %st(1)
+        fmul      %st(2), %st
+        testb     $2, %dl
+        fmul      %st, %st(1)
+        fldt      72+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      60+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fmul      %st, %st(1)
+        fldt      84+_CP@GOTOFF(%edi)
+        fmul      %st(1), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        je        ..B1.22
+..B1.19:
+        fmulp     %st, %st(4)
+        testl     %ebx, %ebx
+        fxch      %st(2)
+        fmul      %st(3), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        fstpl     (%eax)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.21
+..B1.20:
+        fldcw     30(%esp)
+..B1.21:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.22:
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        testl     %ebx, %ebx
+        fxch      %st(2)
+        fmul      %st(3), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(3)
+        fxch      %st(2)
+        fstpl     8(%eax)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.24
+..B1.23:
+        fldcw     30(%esp)
+..B1.24:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.25:
+        testb     $2, 36(%esp)
+        je        ..B1.33
+..B1.26:
+        fld       %st(0)
+        testb     $2, %dl
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        je        ..B1.30
+..B1.27:
+        fstp      %st(2)
+        fldt      84+_CP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(2), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        movl      32(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.29
+..B1.28:
+        fldcw     30(%esp)
+..B1.29:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.30:
+        fldt      84+_SP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(1), %st
+        fldt      72+_SP@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fldt      60+_SP@GOTOFF(%edi)
+        movl      32(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%esi,8)
+        fmulp     %st, %st(2)
+        fmul      %st(1), %st
+        faddp     %st, %st(1)
+        fstpl     8(%eax)
+        je        ..B1.32
+..B1.31:
+        fldcw     30(%esp)
+..B1.32:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.33:
+        testb     $1, 36(%esp)
+        je        ..B1.41
+..B1.34:
+        fld       %st(0)
+        testb     $2, %dl
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        je        ..B1.38
+..B1.35:
+        fldt      84+_SP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(1), %st
+        fldt      72+_SP@GOTOFF(%edi)
+        fmul      %st(2), %st
+        fldt      60+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      12+_SP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      _SP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        fmulp     %st, %st(2)
+        fmul      %st(1), %st
+        movl      32(%esp), %eax
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.37
+..B1.36:
+        fldcw     30(%esp)
+..B1.37:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.38:
+        fstp      %st(2)
+        fldt      84+_CP@GOTOFF(%edi)
+        testl     %ebx, %ebx
+        fmul      %st(2), %st
+        fldt      72+_CP@GOTOFF(%edi)
+        fmul      %st(3), %st
+        fldt      60+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      48+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      36+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      24+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(3), %st
+        fldt      12+_CP@GOTOFF(%edi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        fldt      _CP@GOTOFF(%edi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fldl      _ones@GOTOFF(%edi,%eax,8)
+        fmul      %st, %st(1)
+        movl      32(%esp), %eax
+        faddp     %st, %st(1)
+        fstpl     (%eax)
+        je        ..B1.40
+..B1.39:
+        fldcw     30(%esp)
+..B1.40:
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.41:
+        fstp      %st(0)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.42:
+        xorl      %ebx, %ebx
+        jmp       ..B1.8
+..B1.43:
+        xorl      %ebx, %ebx
+        jmp       ..B1.15
+        .align    16,0x90
+	.type	__libm_sincos_huge,@function
+	.size	__libm_sincos_huge,.-__libm_sincos_huge
+	.data
+# -- End  __libm_sincos_huge
+	.section .rodata, "a"
+	.align 16
+	.align 16
+.L_2il0floatpacket.0:
+	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
+	.type	.L_2il0floatpacket.0,@object
+	.size	.L_2il0floatpacket.0,16
+	.align 16
+_Pi4Inv:
+	.long	1841940611
+	.long	1072979760
+	.type	_Pi4Inv,@object
+	.size	_Pi4Inv,8
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x3:
+	.long	1413754880
+	.long	3219726843
+	.long	993632256
+	.long	1027030475
+	.long	3773204808
+	.long	3129236486
+	.type	_Pi4x3,@object
+	.size	_Pi4x3,24
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x4:
+	.long	1413480448
+	.long	3219726843
+	.long	442499072
+	.long	3183522913
+	.long	771751936
+	.long	3146979722
+	.long	622873025
+	.long	3110831002
+	.type	_Pi4x4,@object
+	.size	_Pi4x4,32
+	.align 16
+_SP:
+	.word	43691
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	49148
+	.word	0
+	.word	34951
+	.word	34952
+	.word	34952
+	.word	34952
+	.word	16376
+	.word	0
+	.word	50471
+	.word	3328
+	.word	208
+	.word	53261
+	.word	49138
+	.word	0
+	.word	17910
+	.word	46614
+	.word	7466
+	.word	47343
+	.word	16364
+	.word	0
+	.word	33371
+	.word	14743
+	.word	11071
+	.word	55090
+	.word	49125
+	.word	0
+	.word	48947
+	.word	35764
+	.word	12250
+	.word	45202
+	.word	16350
+	.word	0
+	.word	17574
+	.word	60698
+	.word	10735
+	.word	55102
+	.word	49110
+	.word	0
+	.word	34320
+	.word	12415
+	.word	25249
+	.word	51489
+	.word	16334
+	.word	0
+	.type	_SP,@object
+	.size	_SP,96
+	.align 16
+_CP:
+	.word	0
+	.word	0
+	.word	0
+	.word	32768
+	.word	49150
+	.word	0
+	.word	43685
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	16378
+	.word	0
+	.word	39983
+	.word	2912
+	.word	24758
+	.word	46603
+	.word	49141
+	.word	0
+	.word	61476
+	.word	3244
+	.word	208
+	.word	53261
+	.word	16367
+	.word	0
+	.word	1022
+	.word	16229
+	.word	32187
+	.word	37874
+	.word	49129
+	.word	0
+	.word	55373
+	.word	44526
+	.word	50840
+	.word	36726
+	.word	16354
+	.word	0
+	.word	55994
+	.word	65145
+	.word	59958
+	.word	51657
+	.word	49114
+	.word	0
+	.word	15046
+	.word	2976
+	.word	1998
+	.word	54661
+	.word	16338
+	.word	0
+	.type	_CP,@object
+	.size	_CP,96
+	.align 16
+_ones:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	3220176896
+	.type	_ones,@object
+	.size	_ones,16
+	.data
+	.hidden __libm_reduce_pi04l
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/libm_tancot_huge.S b/libm/x86/libm_tancot_huge.S
new file mode 100644
index 0000000..80f16d5
--- /dev/null
+++ b/libm/x86/libm_tancot_huge.S
@@ -0,0 +1,750 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+# -- Begin  __libm_tancot_huge
+	.text
+       .align    16,0x90
+	.hidden __libm_tancot_huge
+	.globl __libm_tancot_huge
+__libm_tancot_huge:
+# parameter 1: 8 + %ebp
+# parameter 2: 16 + %ebp
+# parameter 3: 20 + %ebp
+..B1.1:
+        pushl     %ebp
+        movl      %esp, %ebp
+        andl      $-64, %esp
+        pushl     %esi
+        pushl     %edi
+        pushl     %ebx
+        subl      $52, %esp
+        movl      16(%ebp), %eax
+        movl      20(%ebp), %ebx
+        movl      %eax, 40(%esp)
+..B1.2:
+        fnstcw    38(%esp)
+..B1.3:
+        movl      12(%ebp), %edx
+        movl      %edx, %eax
+        andl      $2147483647, %eax
+        shrl      $31, %edx
+        movl      %edx, 44(%esp)
+        cmpl      $1104150528, %eax
+        call      ..L2
+..L2:
+        popl      %esi
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%esi), %esi
+        jae       ..B1.11
+..B1.4:
+        movsd     8(%ebp), %xmm1
+        movzwl    38(%esp), %ecx
+        movl      %ecx, %edx
+        andl      $768, %edx
+        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm1
+        cmpl      $768, %edx
+        movsd     _Pi4Inv@GOTOFF(%esi), %xmm0
+        mulsd     %xmm1, %xmm0
+        movsd     %xmm1, 8(%ebp)
+        movsd     %xmm0, (%esp)
+        je        ..B1.39
+..B1.5:
+        orl       $-64768, %ecx
+        movw      %cx, 36(%esp)
+..B1.6:
+        fldcw     36(%esp)
+..B1.7:
+        movsd     8(%ebp), %xmm1
+        movl      $1, %edi
+..B1.8:
+        movl      %esi, 12(%esp)
+        movl      4(%esp), %esi
+        movl      %esi, %edx
+        movl      %edi, 24(%esp)
+        movl      %esi, %edi
+        shrl      $20, %edi
+        andl      $1048575, %edx
+        movl      %edi, %ecx
+        orl       $1048576, %edx
+        negl      %ecx
+        addl      $13, %edi
+        movl      %ebx, 8(%esp)
+        addl      $19, %ecx
+        movl      %edx, %ebx
+        movl      %ecx, 28(%esp)
+        shrl      %cl, %ebx
+        movl      %edi, %ecx
+        shll      %cl, %edx
+        movl      28(%esp), %ecx
+        movl      (%esp), %edi
+        shrl      %cl, %edi
+        orl       %edi, %edx
+        cmpl      $1094713344, %esi
+        movsd     %xmm1, 16(%esp)
+        fldl      16(%esp)
+        cmovb     %ebx, %edx
+        movl      24(%esp), %edi
+        movl      12(%esp), %esi
+        lea       1(%edx), %ebx
+        andl      $-2, %ebx
+        movl      %ebx, 16(%esp)
+        cmpl      $1094713344, %eax
+        fildl     16(%esp)
+        movl      8(%esp), %ebx
+        jae       ..B1.10
+..B1.9:
+        fldl      _Pi4x3@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x3@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x3@GOTOFF(%esi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.10:
+        fldl      _Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      8+_Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      16+_Pi4x4@GOTOFF(%esi)
+        fmul      %st(1), %st
+        faddp     %st, %st(2)
+        fldl      24+_Pi4x4@GOTOFF(%esi)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        jmp       ..B1.17
+..B1.11:
+        movzwl    38(%esp), %edx
+        movl      %edx, %eax
+        andl      $768, %eax
+        cmpl      $768, %eax
+        je        ..B1.40
+..B1.12:
+        orl       $-64768, %edx
+        movw      %dx, 36(%esp)
+..B1.13:
+        fldcw     36(%esp)
+..B1.14:
+        movl      $1, %edi
+..B1.15:
+        movsd     8(%ebp), %xmm0
+        addl      $-32, %esp
+        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm0
+        lea       32(%esp), %eax
+        movsd     %xmm0, 16(%eax)
+        fldl      16(%eax)
+        fstpt     (%esp)
+        movl      $0, 12(%esp)
+        movl      %eax, 16(%esp)
+        call      __libm_reduce_pi04l
+..B1.43:
+        movl      %eax, %edx
+        addl      $32, %esp
+..B1.16:
+        fldl      (%esp)
+        fldl      8(%esp)
+        faddp     %st, %st(1)
+..B1.17:
+        movl      %ebx, %eax
+        andl      $3, %eax
+        cmpl      $3, %eax
+        jne       ..B1.24
+..B1.18:
+        fldl      _ones@GOTOFF(%esi)
+        incl      %edx
+        fdiv      %st(1), %st
+        testb     $2, %dl
+        fstpt     24(%esp)
+        fld       %st(0)
+        fmul      %st(1), %st
+        fld       %st(0)
+        fmul      %st(1), %st
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(3), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(3), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(4), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(4), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(4)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(4), %st
+        fmul      %st(5), %st
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(4)
+        fxch      %st(3)
+        fmul      %st(5), %st
+        faddp     %st, %st(3)
+        je        ..B1.20
+..B1.19:
+        fldt      24(%esp)
+        fxch      %st(1)
+        fdivrp    %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(3)
+        movl      44(%esp), %eax
+        xorl      $1, %eax
+        fxch      %st(2)
+        fmul      %st(3), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fstpl     16(%esp)
+        fmul      %st(1), %st
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        movsd     16(%esp), %xmm0
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm1
+        jmp       ..B1.21
+..B1.20:
+        fdivrp    %st, %st(1)
+        fmulp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        movl      44(%esp), %eax
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmul      %st, %st(3)
+        fxch      %st(3)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        fmul      %st(1), %st
+        fldt      24(%esp)
+        fmulp     %st, %st(2)
+        movsd     16(%esp), %xmm0
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm1
+..B1.21:
+        testl     %edi, %edi
+        je        ..B1.23
+..B1.22:
+        fldcw     38(%esp)
+..B1.23:
+        movl      40(%esp), %eax
+        movsd     %xmm0, (%eax)
+        movsd     %xmm1, 8(%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.24:
+        testb     $2, %bl
+        je        ..B1.31
+..B1.25:
+        incl      %edx
+        fld       %st(0)
+        fmul      %st(1), %st
+        testb     $2, %dl
+        je        ..B1.27
+..B1.26:
+        fldl      _ones@GOTOFF(%esi)
+        fdiv      %st(2), %st
+        fld       %st(1)
+        fmul      %st(2), %st
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        xorl      $1, %eax
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(3)
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fxch      %st(2)
+        fmulp     %st, %st(3)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+        jmp       ..B1.28
+..B1.27:
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fdivp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fmul      %st(1), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+..B1.28:
+        testl     %edi, %edi
+        je        ..B1.30
+..B1.29:
+        fldcw     38(%esp)
+..B1.30:
+        movl      40(%esp), %eax
+        movsd     %xmm0, (%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.31:
+        testb     $1, %bl
+        je        ..B1.38
+..B1.32:
+        incl      %edx
+        fld       %st(0)
+        fmul      %st(1), %st
+        testb     $2, %dl
+        je        ..B1.34
+..B1.33:
+        fldt      36+_TP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      24+_TP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(1)
+        fmul      %st(1), %st
+        xorl      $1, %eax
+        fldt      36+_TQ@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      24+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      12+_TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(2), %st
+        fldt      _TQ@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fldt      12+_TP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      _TP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fdivp     %st, %st(1)
+        fmulp     %st, %st(1)
+        fmul      %st(1), %st
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(1)
+        fmulp     %st, %st(2)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+        jmp       ..B1.35
+..B1.34:
+        fldl      _ones@GOTOFF(%esi)
+        fdiv      %st(2), %st
+        fld       %st(1)
+        fmul      %st(2), %st
+        fldt      132+_GP@GOTOFF(%esi)
+        fmul      %st(1), %st
+        fldt      120+_GP@GOTOFF(%esi)
+        fmul      %st(2), %st
+        fldt      108+_GP@GOTOFF(%esi)
+        movl      44(%esp), %eax
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      96+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      84+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      72+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      60+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      48+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      36+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmul      %st(2), %st
+        fldt      24+_GP@GOTOFF(%esi)
+        faddp     %st, %st(2)
+        fxch      %st(1)
+        fmulp     %st, %st(2)
+        fldt      12+_GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmulp     %st, %st(3)
+        fldt      _GP@GOTOFF(%esi)
+        faddp     %st, %st(1)
+        fmul      %st(3), %st
+        fxch      %st(2)
+        fmulp     %st, %st(3)
+        fxch      %st(1)
+        faddp     %st, %st(2)
+        fldl      _ones@GOTOFF(%esi,%eax,8)
+        fmul      %st, %st(2)
+        fmulp     %st, %st(1)
+        faddp     %st, %st(1)
+        fstpl     16(%esp)
+        movsd     16(%esp), %xmm0
+..B1.35:
+        testl     %edi, %edi
+        je        ..B1.37
+..B1.36:
+        fldcw     38(%esp)
+..B1.37:
+        movl      40(%esp), %eax
+        movsd     %xmm0, 8(%eax)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.38:
+        fstp      %st(0)
+        addl      $52, %esp
+        popl      %ebx
+        popl      %edi
+        popl      %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B1.39:
+        xorl      %edi, %edi
+        jmp       ..B1.8
+..B1.40:
+        xorl      %edi, %edi
+        jmp       ..B1.15
+        .align    16,0x90
+	.type	__libm_tancot_huge,@function
+	.size	__libm_tancot_huge,.-__libm_tancot_huge
+	.data
+# -- End  __libm_tancot_huge
+	.section .rodata, "a"
+	.align 16
+	.align 16
+.L_2il0floatpacket.0:
+	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
+	.type	.L_2il0floatpacket.0,@object
+	.size	.L_2il0floatpacket.0,16
+	.align 16
+_Pi4Inv:
+	.long	1841940611
+	.long	1072979760
+	.type	_Pi4Inv,@object
+	.size	_Pi4Inv,8
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x3:
+	.long	1413754880
+	.long	3219726843
+	.long	993632256
+	.long	1027030475
+	.long	3773204808
+	.long	3129236486
+	.type	_Pi4x3,@object
+	.size	_Pi4x3,24
+	.space 8, 0x00 	# pad
+	.align 16
+_Pi4x4:
+	.long	1413480448
+	.long	3219726843
+	.long	442499072
+	.long	3183522913
+	.long	771751936
+	.long	3146979722
+	.long	622873025
+	.long	3110831002
+	.type	_Pi4x4,@object
+	.size	_Pi4x4,32
+	.align 16
+_ones:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	3220176896
+	.type	_ones,@object
+	.size	_ones,16
+	.align 16
+_TP:
+	.word	19670
+	.word	44908
+	.word	50960
+	.word	50786
+	.word	49149
+	.word	0
+	.word	19206
+	.word	45228
+	.word	54194
+	.word	52268
+	.word	16377
+	.word	0
+	.word	227
+	.word	51280
+	.word	43560
+	.word	38195
+	.word	49139
+	.word	0
+	.word	12272
+	.word	18029
+	.word	6715
+	.word	45670
+	.word	16357
+	.word	0
+	.type	_TP,@object
+	.size	_TP,48
+	.align 16
+_TQ:
+	.word	14748
+	.word	33681
+	.word	5452
+	.word	38090
+	.word	49151
+	.word	0
+	.word	46755
+	.word	50026
+	.word	17634
+	.word	35372
+	.word	16382
+	.word	0
+	.word	46863
+	.word	53352
+	.word	42702
+	.word	59869
+	.word	49145
+	.word	0
+	.word	33295
+	.word	20942
+	.word	32118
+	.word	39935
+	.word	16371
+	.word	0
+	.type	_TQ,@object
+	.size	_TQ,48
+	.align 16
+_GP:
+	.word	43691
+	.word	43690
+	.word	43690
+	.word	43690
+	.word	49149
+	.word	0
+	.word	46639
+	.word	2912
+	.word	24758
+	.word	46603
+	.word	49145
+	.word	0
+	.word	57255
+	.word	2218
+	.word	21984
+	.word	35507
+	.word	49142
+	.word	0
+	.word	34208
+	.word	43033
+	.word	48281
+	.word	56811
+	.word	49138
+	.word	0
+	.word	28773
+	.word	27191
+	.word	31071
+	.word	45908
+	.word	49135
+	.word	0
+	.word	43257
+	.word	33777
+	.word	11976
+	.word	37184
+	.word	49132
+	.word	0
+	.word	62410
+	.word	35990
+	.word	36363
+	.word	60269
+	.word	49128
+	.word	0
+	.word	13659
+	.word	55568
+	.word	26569
+	.word	48851
+	.word	49125
+	.word	0
+	.word	10347
+	.word	46238
+	.word	47188
+	.word	39576
+	.word	49122
+	.word	0
+	.word	2161
+	.word	6703
+	.word	25719
+	.word	64708
+	.word	49118
+	.word	0
+	.word	42329
+	.word	7593
+	.word	44754
+	.word	47734
+	.word	49115
+	.word	0
+	.word	163
+	.word	32746
+	.word	39875
+	.word	61957
+	.word	49112
+	.word	0
+	.type	_GP,@object
+	.size	_GP,144
+	.data
+	.hidden __libm_reduce_pi04l
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_atan.S b/libm/x86/s_atan.S
new file mode 100644
index 0000000..c4413f1
--- /dev/null
+++ b/libm/x86/s_atan.S
@@ -0,0 +1,934 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// This implementation uses the main path for |x| in [2^{-5},2^65).
+// For |x| in [2^{-64},2^{-5}), a secondary path is used.
+// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
+// We use the following definition of B and X` so that the formula
+// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
+//
+// X = (-1)^s * 2^k * 1. x1 x2 ... x52
+//
+// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
+// Define One = 0 if k >= 5; and One = 1 otherwise
+// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
+// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
+//
+// Tau is 0 if k <= -6;
+// Tau is atan( B )  if -5 <= k <= 4
+// Tau is pi/2 if k >= 5
+//
+// Special cases:
+//  atan(NaN) = quiet NaN
+//  atan(+/-INF) = +/-Pi/2
+//  atan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  atan
+ENTRY(atan)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 48(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     2640(%ebx), %xmm3
+        movsd     2624(%ebx), %xmm5
+        movsd     2656(%ebx), %xmm4
+        movsd     %xmm0, 8(%esp)
+        pextrw    $3, %xmm0, %edx
+        andpd     %xmm0, %xmm3
+        pshufd    $68, %xmm0, %xmm1
+        orpd      %xmm4, %xmm3
+        movl      %edx, %eax
+        andl      $32767, %edx
+        subl      $16288, %edx
+        cmpl      $159, %edx
+        ja        .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm3, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        divsd     %xmm1, %xmm0
+        addl      $1, %edx
+        movsd     2672(%ebx), %xmm2
+        movsd     2688(%ebx), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movsd     (%ebx,%edx,8), %xmm6
+        movsd     8(%ebx,%edx,8), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movsd     2680(%ebx), %xmm7
+        pshufd    $68, %xmm0, %xmm1
+        mulsd     %xmm0, %xmm0
+        pshufd    $68, %xmm1, %xmm3
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm4
+        subsd     %xmm1, %xmm6
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     2696(%ebx), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $944, %edx
+        cmpl      $1103, %edx
+        ja        .L_2TAG_PACKET_2.0.2
+        movsd     2672(%ebx), %xmm4
+        movsd     2688(%ebx), %xmm7
+        movsd     8(%esp), %xmm0
+        mulsd     %xmm1, %xmm1
+        movsd     2680(%ebx), %xmm2
+        movsd     2696(%ebx), %xmm5
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm1, %xmm7
+        movapd    %xmm1, %xmm6
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm2
+        mulsd     %xmm6, %xmm7
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15344, %edx
+        cmpl      $16368, %edx
+        ja        .L_2TAG_PACKET_3.0.2
+        movsd     8(%esp), %xmm0
+        movsd     8(%esp), %xmm1
+        cmpl      $16, %edx
+        jae       .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm0, %xmm1
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $17392, %edx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $49136, %ecx
+        pinsrw    $3, %ecx, %xmm1
+        divsd     %xmm0, %xmm1
+        movsd     2672(%ebx), %xmm2
+        movsd     2688(%ebx), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movsd     2592(%ebx), %xmm6
+        movsd     2600(%ebx), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movsd     2680(%ebx), %xmm7
+        pshufd    $68, %xmm1, %xmm0
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm0, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm1
+        addsd     2696(%ebx), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movsd     8(%esp), %xmm4
+        movsd     2608(%ebx), %xmm0
+        movsd     2592(%ebx), %xmm2
+        movsd     2600(%ebx), %xmm3
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        andl      $2147483647, %edx
+        cmpl      $2146435072, %edx
+        jae       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_7.0.2:
+        andnpd    %xmm4, %xmm0
+        orpd      %xmm0, %xmm2
+        orpd      %xmm3, %xmm0
+        addsd     %xmm2, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_6.0.2:
+        subl      $2146435072, %edx
+        orl       %edx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_7.0.2
+        movapd    %xmm4, %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      48(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(atan)
+# -- End  atan
+
+# Start file scope ASM
+ALIAS_SYMBOL(atanl, atan);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3819695742
+	.long	1067482761
+	.long	2398680355
+	.long	3155462074
+	.long	2998791009
+	.long	1067548225
+	.long	3868465248
+	.long	3157182472
+	.long	3339424991
+	.long	1067613680
+	.long	3296670360
+	.long	1010752543
+	.long	2710002256
+	.long	1067679126
+	.long	3403896007
+	.long	1010910768
+	.long	3275701428
+	.long	1067744562
+	.long	119959933
+	.long	1011482843
+	.long	2908636881
+	.long	1067809988
+	.long	2464489612
+	.long	1011545526
+	.long	3777889398
+	.long	1067875403
+	.long	3262682165
+	.long	1009703919
+	.long	3759667419
+	.long	1067940807
+	.long	1838130851
+	.long	3157373556
+	.long	732369940
+	.long	1068006200
+	.long	1203428313
+	.long	1010055371
+	.long	1166616461
+	.long	1068071580
+	.long	2901274051
+	.long	3158549977
+	.long	2945472892
+	.long	1068136947
+	.long	3726120658
+	.long	1009762715
+	.long	3954480976
+	.long	1068202301
+	.long	1289173457
+	.long	1009429861
+	.long	2081752829
+	.long	1068267642
+	.long	1836909874
+	.long	1006212095
+	.long	3807999788
+	.long	1068332968
+	.long	2172459940
+	.long	3156162078
+	.long	2731789884
+	.long	1068398280
+	.long	3450718392
+	.long	3159216547
+	.long	1044477961
+	.long	1068463577
+	.long	2230553229
+	.long	1011424339
+	.long	1486930287
+	.long	1068530218
+	.long	2861547474
+	.long	1012041376
+	.long	2293016881
+	.long	1068595466
+	.long	136843272
+	.long	1012684797
+	.long	201518157
+	.long	1068660680
+	.long	63231984
+	.long	1012427198
+	.long	4054234584
+	.long	1068725856
+	.long	3927006960
+	.long	1011878955
+	.long	1246477213
+	.long	1068790995
+	.long	1494265652
+	.long	3155219350
+	.long	678186699
+	.long	1068856093
+	.long	1264361424
+	.long	3159256693
+	.long	2690594995
+	.long	1068921148
+	.long	3906996379
+	.long	1009288267
+	.long	3362611517
+	.long	1068986159
+	.long	1650970041
+	.long	3158331771
+	.long	3102162111
+	.long	1069051124
+	.long	365917035
+	.long	3160264153
+	.long	2352611067
+	.long	1069116041
+	.long	4008970190
+	.long	3159478182
+	.long	1594134794
+	.long	1069180908
+	.long	466690178
+	.long	1012526501
+	.long	1345079306
+	.long	1069245723
+	.long	2268273568
+	.long	3160164092
+	.long	2163300970
+	.long	1069310484
+	.long	2750834800
+	.long	3158113482
+	.long	352522716
+	.long	1069375190
+	.long	1750411372
+	.long	1011790845
+	.long	848541647
+	.long	1069439838
+	.long	2164207573
+	.long	1011698350
+	.long	40647312
+	.long	1069504427
+	.long	2949165434
+	.long	3159107267
+	.long	2216766270
+	.long	1069574357
+	.long	2197920765
+	.long	3161055954
+	.long	1090914384
+	.long	1069638757
+	.long	2330454674
+	.long	1013365998
+	.long	387601244
+	.long	1069703022
+	.long	3185681168
+	.long	1013434071
+	.long	3991640484
+	.long	1069767144
+	.long	1313211590
+	.long	3161087959
+	.long	3322489502
+	.long	1069831118
+	.long	3013977995
+	.long	1013053011
+	.long	3121698570
+	.long	1069894936
+	.long	4069015667
+	.long	1013023362
+	.long	4289964660
+	.long	1069958591
+	.long	1736191156
+	.long	3158266731
+	.long	3903312386
+	.long	1070022077
+	.long	1833592413
+	.long	3159731471
+	.long	3818449864
+	.long	1070085387
+	.long	851036429
+	.long	3159730451
+	.long	2097480306
+	.long	1070148515
+	.long	3506390884
+	.long	3160462302
+	.long	1611694502
+	.long	1070211454
+	.long	2785735540
+	.long	3160465144
+	.long	1464694796
+	.long	1070274198
+	.long	4229277299
+	.long	3159907000
+	.long	1299612775
+	.long	1070336741
+	.long	4116653788
+	.long	3160427739
+	.long	1310544789
+	.long	1070399077
+	.long	1064430331
+	.long	1013218202
+	.long	2253168030
+	.long	1070461200
+	.long	1405044609
+	.long	3157623179
+	.long	1159567373
+	.long	1070523105
+	.long	2353445521
+	.long	3159992176
+	.long	1359373750
+	.long	1070605818
+	.long	1748171336
+	.long	3161879263
+	.long	908341706
+	.long	1070667034
+	.long	3372710815
+	.long	3161775245
+	.long	1743027350
+	.long	1070727765
+	.long	687089934
+	.long	3160507171
+	.long	2055355646
+	.long	1070787992
+	.long	2392855242
+	.long	1013682469
+	.long	690426164
+	.long	1070847697
+	.long	1103926666
+	.long	1014052810
+	.long	1483247847
+	.long	1070906862
+	.long	2082645847
+	.long	3161345479
+	.long	392040270
+	.long	1070965472
+	.long	2407720023
+	.long	1014053754
+	.long	2673846014
+	.long	1071023511
+	.long	1293605532
+	.long	3158464385
+	.long	1384215810
+	.long	1071080967
+	.long	2446095872
+	.long	3159216407
+	.long	3101660631
+	.long	1071137826
+	.long	698040758
+	.long	1014855328
+	.long	2094057058
+	.long	1071194078
+	.long	2282048339
+	.long	1014040385
+	.long	1712750594
+	.long	1071249712
+	.long	1204372378
+	.long	3162276464
+	.long	1411515787
+	.long	1071304719
+	.long	949080808
+	.long	1015006403
+	.long	931538085
+	.long	1071359091
+	.long	3027127039
+	.long	1014307233
+	.long	179139065
+	.long	1071412821
+	.long	4285547492
+	.long	3161934731
+	.long	3387721259
+	.long	1071465902
+	.long	373225773
+	.long	1013486625
+	.long	2132236852
+	.long	1071544299
+	.long	3250533429
+	.long	1014031677
+	.long	1942070284
+	.long	1071645596
+	.long	1237964179
+	.long	3163239113
+	.long	1532707802
+	.long	1071695380
+	.long	330645583
+	.long	1012495610
+	.long	2294184979
+	.long	1071743834
+	.long	3959472897
+	.long	1015833116
+	.long	3805060714
+	.long	1071790961
+	.long	2671256142
+	.long	1013727772
+	.long	2215037898
+	.long	1071836770
+	.long	2683359117
+	.long	1015831902
+	.long	483661594
+	.long	1071881273
+	.long	836288326
+	.long	3162648643
+	.long	1534679894
+	.long	1071924486
+	.long	373258696
+	.long	3162470096
+	.long	1538714628
+	.long	1071966430
+	.long	3199433068
+	.long	1015325501
+	.long	527642555
+	.long	1072007128
+	.long	3636832592
+	.long	3161843145
+	.long	291339150
+	.long	1072046605
+	.long	890169537
+	.long	3160586117
+	.long	2450210201
+	.long	1072084888
+	.long	1636353294
+	.long	3163193400
+	.long	2411367951
+	.long	1072122007
+	.long	374899873
+	.long	1011331750
+	.long	681549971
+	.long	1072157992
+	.long	506411689
+	.long	1015373954
+	.long	1466745541
+	.long	1072192873
+	.long	2143860931
+	.long	1013364334
+	.long	2845622366
+	.long	1072226682
+	.long	2869178209
+	.long	3162423682
+	.long	2838871438
+	.long	1072275456
+	.long	3742223599
+	.long	1014338577
+	.long	4200275274
+	.long	1072337034
+	.long	1566539915
+	.long	3161839550
+	.long	3034733530
+	.long	1072394897
+	.long	652621408
+	.long	3162261964
+	.long	3207412993
+	.long	1072449290
+	.long	3206124665
+	.long	1014408733
+	.long	624461478
+	.long	1072500450
+	.long	932437485
+	.long	1015204343
+	.long	767665908
+	.long	1072548600
+	.long	1037911952
+	.long	3163527627
+	.long	1110773639
+	.long	1072593952
+	.long	2371517912
+	.long	3160465741
+	.long	1940828530
+	.long	1072636704
+	.long	2731408428
+	.long	3162895795
+	.long	1911329388
+	.long	1072677041
+	.long	1773089615
+	.long	3159569267
+	.long	1764715788
+	.long	1072704191
+	.long	691346949
+	.long	3164069946
+	.long	3332979233
+	.long	1072722195
+	.long	3550733983
+	.long	1014770628
+	.long	1321870254
+	.long	1072739231
+	.long	1415315820
+	.long	1016224052
+	.long	3657429030
+	.long	1072755365
+	.long	3910539033
+	.long	1015966402
+	.long	4197624557
+	.long	1072770661
+	.long	2333399254
+	.long	3164546480
+	.long	1512059493
+	.long	1072785177
+	.long	2701510318
+	.long	1016178092
+	.long	453379037
+	.long	1072798965
+	.long	4046344253
+	.long	3162814364
+	.long	1942345162
+	.long	1072818388
+	.long	621134147
+	.long	1016335195
+	.long	4210176273
+	.long	1072842164
+	.long	2701013387
+	.long	3164326619
+	.long	4185644010
+	.long	1072863795
+	.long	4163699341
+	.long	1016203112
+	.long	679688788
+	.long	1072883543
+	.long	4147276762
+	.long	1014066750
+	.long	29432865
+	.long	1072901630
+	.long	970415797
+	.long	1016902063
+	.long	4070721092
+	.long	1072918247
+	.long	2539004411
+	.long	3163736096
+	.long	2252468843
+	.long	1072933561
+	.long	3424082887
+	.long	3163407177
+	.long	2929724825
+	.long	1072947712
+	.long	3661482235
+	.long	3163846989
+	.long	1377513368
+	.long	1072960824
+	.long	3987926680
+	.long	1013647908
+	.long	1031632908
+	.long	1072973003
+	.long	3672217151
+	.long	1016614619
+	.long	2516508130
+	.long	1072984342
+	.long	545855020
+	.long	3162728930
+	.long	3792452178
+	.long	1072994923
+	.long	3420119467
+	.long	1016471430
+	.long	3147791459
+	.long	1073004818
+	.long	1342204979
+	.long	1013937254
+	.long	999189752
+	.long	1073014090
+	.long	1006335472
+	.long	3162850919
+	.long	711011011
+	.long	1073022794
+	.long	4633488
+	.long	3162966895
+	.long	15640363
+	.long	1073030980
+	.long	1686389560
+	.long	3164376226
+	.long	1218463589
+	.long	1073042382
+	.long	1526837110
+	.long	3163533985
+	.long	2538470555
+	.long	1073056144
+	.long	2273304406
+	.long	3163784996
+	.long	1229720947
+	.long	1073068489
+	.long	2971628206
+	.long	3162356540
+	.long	3115427016
+	.long	1073079621
+	.long	4215132957
+	.long	3164282762
+	.long	4030612557
+	.long	1073089709
+	.long	1913251691
+	.long	3163671292
+	.long	2728521257
+	.long	1073098892
+	.long	2861089500
+	.long	1015454459
+	.long	1118696283
+	.long	1073107285
+	.long	1628948053
+	.long	1016179658
+	.long	2682711255
+	.long	1073114984
+	.long	2906306266
+	.long	1014142643
+	.long	2073898081
+	.long	1073122072
+	.long	1322740454
+	.long	3164497217
+	.long	1403700297
+	.long	1073128618
+	.long	416137895
+	.long	3162781466
+	.long	2502685617
+	.long	1073134681
+	.long	3242008732
+	.long	1014593495
+	.long	1531926851
+	.long	1073140313
+	.long	1362708094
+	.long	1016517604
+	.long	3572814411
+	.long	1073145557
+	.long	3709790527
+	.long	1012646874
+	.long	1695536111
+	.long	1073150453
+	.long	3980346340
+	.long	1016705136
+	.long	2363057203
+	.long	1073155033
+	.long	2551194792
+	.long	1012569695
+	.long	2873365682
+	.long	1073159327
+	.long	3181154748
+	.long	1017041450
+	.long	1053384691
+	.long	1073165288
+	.long	3074536879
+	.long	1016965660
+	.long	3270542712
+	.long	1073172451
+	.long	2535319415
+	.long	3163051778
+	.long	1353631484
+	.long	1073178850
+	.long	1173833755
+	.long	1015534537
+	.long	3511218460
+	.long	1073184599
+	.long	1243608109
+	.long	3161592122
+	.long	4121259284
+	.long	1073189793
+	.long	398584912
+	.long	3163829923
+	.long	1193862106
+	.long	1073194509
+	.long	1873745539
+	.long	3163802819
+	.long	3861949790
+	.long	1073198808
+	.long	3841261147
+	.long	1015587248
+	.long	1486904578
+	.long	1073202745
+	.long	1634726776
+	.long	3163847886
+	.long	2879153715
+	.long	1073206362
+	.long	200456242
+	.long	3164138657
+	.long	385353253
+	.long	1073209698
+	.long	1186355517
+	.long	1014887155
+	.long	1125865839
+	.long	1073212783
+	.long	203561262
+	.long	3161244927
+	.long	1221361475
+	.long	1073215645
+	.long	3382476563
+	.long	1014936138
+	.long	2077323573
+	.long	1073218307
+	.long	1005121005
+	.long	3164430752
+	.long	215611373
+	.long	1073220790
+	.long	353198764
+	.long	3164485137
+	.long	2347419265
+	.long	1073223110
+	.long	1103143360
+	.long	1016542137
+	.long	1379112765
+	.long	1073225284
+	.long	381583533
+	.long	3162870833
+	.long	3891198463
+	.long	1073228298
+	.long	1771275754
+	.long	1014654681
+	.long	3395914051
+	.long	1073231917
+	.long	2350900914
+	.long	3164013978
+	.long	2799919478
+	.long	1073235146
+	.long	2893950164
+	.long	3163260901
+	.long	1138673476
+	.long	1073238045
+	.long	2622204785
+	.long	3164174388
+	.long	3408855940
+	.long	1073240661
+	.long	2800881650
+	.long	1016008624
+	.long	2044858738
+	.long	1073243035
+	.long	604544785
+	.long	1017022901
+	.long	2578795176
+	.long	1073245198
+	.long	2557332925
+	.long	1016135165
+	.long	4196285314
+	.long	1073247177
+	.long	2032365307
+	.long	1016194735
+	.long	224877747
+	.long	1073248996
+	.long	497926916
+	.long	1016947111
+	.long	3271386490
+	.long	1073250671
+	.long	2689994846
+	.long	1016631513
+	.long	813635989
+	.long	1073252221
+	.long	747035277
+	.long	3164530136
+	.long	369829519
+	.long	1073253658
+	.long	2182033858
+	.long	3163190340
+	.long	1187679052
+	.long	1073254994
+	.long	673954443
+	.long	1016149821
+	.long	4232586098
+	.long	1073256239
+	.long	497775200
+	.long	3162179015
+	.long	426690558
+	.long	1073257404
+	.long	3063343247
+	.long	1016865578
+	.long	1624065902
+	.long	1073258494
+	.long	1354224996
+	.long	3163503778
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	4294901760
+	.long	0
+	.long	0
+	.long	0
+	.long	32768
+	.long	0
+	.long	0
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	static_const_table,@object
+	.size	static_const_table,2704
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_cbrt.S b/libm/x86/s_cbrt.S
new file mode 100644
index 0000000..0c98c99
--- /dev/null
+++ b/libm/x86/s_cbrt.S
@@ -0,0 +1,738 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
+//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
+//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
+//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
+//   (T stores the high 53 bits, D stores the low order bits)
+//   Result=2^k*T+(2^k*T*r)*P+2^k*D
+//   where P=p1+p2*r+..+p8*r^7
+//
+// Special cases:
+//  cbrt(NaN) = quiet NaN, and raise invalid exception
+//  cbrt(INF) = that INF
+//  cbrt(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cbrt
+ENTRY(cbrt)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %esi, 52(%esp)
+        call      static_func
+        movl      %eax, %esi
+        movsd     128(%esp), %xmm0
+        movapd    %xmm0, %xmm7
+        movsd     %xmm0, 8(%esp)
+        movl      $524032, %edx
+        movsd     64(%esi), %xmm5
+        movsd     80(%esi), %xmm3
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        movsd     96(%esi), %xmm1
+        movsd     112(%esi), %xmm2
+        movl      %ebx, 16(%esp)
+        andl      $248, %ecx
+        movsd     128(%ecx,%esi), %xmm4
+        movl      %eax, %ebx
+        andl      %eax, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_0.0.2
+        cmpl      $524032, %edx
+        je        .L_2TAG_PACKET_1.0.2
+        shrl      $8, %edx
+        shrl      $8, %ebx
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    (%esi), %xmm5
+        movl      $5462, %eax
+        movapd    16(%esi), %xmm6
+        mull      %edx
+        movl      %ebx, %edx
+        andl      $2047, %ebx
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        shll      $8, %ebx
+        addl      $682, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addl      %ebx, %ecx
+        psllq     $52, %xmm7
+.L_2TAG_PACKET_2.0.2:
+        movapd    32(%esi), %xmm2
+        movapd    48(%esi), %xmm0
+        subsd     %xmm3, %xmm1
+        movq      %xmm7, %xmm3
+        mulsd     384(%ecx,%esi), %xmm7
+        mulsd     %xmm4, %xmm1
+        mulsd     1152(%ecx,%esi), %xmm3
+        movapd    %xmm1, %xmm4
+        unpcklpd  %xmm1, %xmm1
+        mulpd     %xmm1, %xmm5
+        mulpd     %xmm1, %xmm6
+        mulpd     %xmm1, %xmm1
+        addpd     %xmm5, %xmm2
+        addpd     %xmm6, %xmm0
+        mulpd     %xmm1, %xmm2
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm7, %xmm4
+        addpd     %xmm2, %xmm0
+        movl      16(%esp), %ebx
+        mulsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm7, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_0.0.2:
+        mulsd     1984(%esi), %xmm0
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        andl      $248, %ecx
+        movsd     128(%ecx,%esi), %xmm4
+        movl      %eax, %ebx
+        andl      %eax, %edx
+        shrl      $8, %edx
+        shrl      $8, %ebx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    (%esi), %xmm5
+        movl      $5462, %eax
+        movapd    16(%esi), %xmm6
+        mull      %edx
+        movl      %ebx, %edx
+        andl      $2047, %ebx
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        subl      %eax, %ebx
+        shll      $8, %ebx
+        addl      $661, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addl      %ebx, %ecx
+        psllq     $52, %xmm7
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $0, %ebx
+        jne       .L_2TAG_PACKET_5.0.2
+        movl      16(%esp), %ebx
+        fldl      1952(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_5.0.2:
+        movl      16(%esp), %ebx
+        fldl      1968(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_1.0.2:
+        movl      16(%esp), %ebx
+        movl      132(%esp), %eax
+        movl      128(%esp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %ecx
+        cmpl      $2146435072, %ecx
+        ja        .L_2TAG_PACKET_6.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_6.0.2
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_7.0.2
+        fldl      1920(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_7.0.2:
+        fldl      1936(%esi)
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_6.0.2:
+        movsd     8(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+.L_2TAG_PACKET_3.0.2:
+        movl      52(%esp), %esi
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cbrt)
+# -- End  cbrt
+
+# Start file scope ASM
+ALIAS_SYMBOL(cbrtl, cbrt);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	1553778919
+	.long	3213899486
+	.long	3534952507
+	.long	3215266280
+	.long	1646371399
+	.long	3214412045
+	.long	477218588
+	.long	3216798151
+	.long	3582521621
+	.long	1066628362
+	.long	1007461464
+	.long	1068473053
+	.long	889629714
+	.long	1067378449
+	.long	1431655765
+	.long	1070945621
+	.long	4294967295
+	.long	1048575
+	.long	0
+	.long	0
+	.long	0
+	.long	3220193280
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1032192
+	.long	0
+	.long	0
+	.long	528611360
+	.long	3220144632
+	.long	2884679527
+	.long	3220082993
+	.long	1991868891
+	.long	3220024928
+	.long	2298714891
+	.long	3219970134
+	.long	58835168
+	.long	3219918343
+	.long	3035110223
+	.long	3219869313
+	.long	1617585086
+	.long	3219822831
+	.long	2500867033
+	.long	3219778702
+	.long	4241943008
+	.long	3219736752
+	.long	258732970
+	.long	3219696825
+	.long	404232216
+	.long	3219658776
+	.long	2172167368
+	.long	3219622476
+	.long	1544257904
+	.long	3219587808
+	.long	377579543
+	.long	3219554664
+	.long	1616385542
+	.long	3219522945
+	.long	813783277
+	.long	3219492562
+	.long	3940743189
+	.long	3219463431
+	.long	2689777499
+	.long	3219435478
+	.long	1700977147
+	.long	3219408632
+	.long	3169102082
+	.long	3219382828
+	.long	327235604
+	.long	3219358008
+	.long	1244336319
+	.long	3219334115
+	.long	1300311200
+	.long	3219311099
+	.long	3095471925
+	.long	3219288912
+	.long	2166487928
+	.long	3219267511
+	.long	2913108253
+	.long	3219246854
+	.long	293672978
+	.long	3219226904
+	.long	288737297
+	.long	3219207624
+	.long	1810275472
+	.long	3219188981
+	.long	174592167
+	.long	3219170945
+	.long	3539053052
+	.long	3219153485
+	.long	2164392968
+	.long	3219136576
+	.long	572345495
+	.long	1072698681
+	.long	1998204467
+	.long	1072709382
+	.long	3861501553
+	.long	1072719872
+	.long	2268192434
+	.long	1072730162
+	.long	2981979308
+	.long	1072740260
+	.long	270859143
+	.long	1072750176
+	.long	2958651392
+	.long	1072759916
+	.long	313113243
+	.long	1072769490
+	.long	919449400
+	.long	1072778903
+	.long	2809328903
+	.long	1072788162
+	.long	2222981587
+	.long	1072797274
+	.long	2352530781
+	.long	1072806244
+	.long	594152517
+	.long	1072815078
+	.long	1555767199
+	.long	1072823780
+	.long	4282421314
+	.long	1072832355
+	.long	2355578597
+	.long	1072840809
+	.long	1162590619
+	.long	1072849145
+	.long	797864051
+	.long	1072857367
+	.long	431273680
+	.long	1072865479
+	.long	2669831148
+	.long	1072873484
+	.long	733477752
+	.long	1072881387
+	.long	4280220604
+	.long	1072889189
+	.long	801961634
+	.long	1072896896
+	.long	2915370760
+	.long	1072904508
+	.long	1159613482
+	.long	1072912030
+	.long	2689944798
+	.long	1072919463
+	.long	1248687822
+	.long	1072926811
+	.long	2967951030
+	.long	1072934075
+	.long	630170432
+	.long	1072941259
+	.long	3760898254
+	.long	1072948363
+	.long	0
+	.long	1072955392
+	.long	2370273294
+	.long	1072962345
+	.long	1261754802
+	.long	1072972640
+	.long	546334065
+	.long	1072986123
+	.long	1054893830
+	.long	1072999340
+	.long	1571187597
+	.long	1073012304
+	.long	1107975175
+	.long	1073025027
+	.long	3606909377
+	.long	1073037519
+	.long	1113616747
+	.long	1073049792
+	.long	4154744632
+	.long	1073061853
+	.long	3358931423
+	.long	1073073713
+	.long	4060702372
+	.long	1073085379
+	.long	747576176
+	.long	1073096860
+	.long	3023138255
+	.long	1073108161
+	.long	1419988548
+	.long	1073119291
+	.long	1914185305
+	.long	1073130255
+	.long	294389948
+	.long	1073141060
+	.long	3761802570
+	.long	1073151710
+	.long	978281566
+	.long	1073162213
+	.long	823148820
+	.long	1073172572
+	.long	2420954441
+	.long	1073182792
+	.long	3815449908
+	.long	1073192878
+	.long	2046058587
+	.long	1073202835
+	.long	1807524753
+	.long	1073212666
+	.long	2628681401
+	.long	1073222375
+	.long	3225667357
+	.long	1073231966
+	.long	1555307421
+	.long	1073241443
+	.long	3454043099
+	.long	1073250808
+	.long	1208137896
+	.long	1073260066
+	.long	3659916772
+	.long	1073269218
+	.long	1886261264
+	.long	1073278269
+	.long	3593647839
+	.long	1073287220
+	.long	3086012205
+	.long	1073296075
+	.long	2769796922
+	.long	1073304836
+	.long	888716057
+	.long	1073317807
+	.long	2201465623
+	.long	1073334794
+	.long	164369365
+	.long	1073351447
+	.long	3462666733
+	.long	1073367780
+	.long	2773905457
+	.long	1073383810
+	.long	1342879088
+	.long	1073399550
+	.long	2543933975
+	.long	1073415012
+	.long	1684477781
+	.long	1073430209
+	.long	3532178543
+	.long	1073445151
+	.long	1147747300
+	.long	1073459850
+	.long	1928031793
+	.long	1073474314
+	.long	2079717015
+	.long	1073488553
+	.long	4016765315
+	.long	1073502575
+	.long	3670431139
+	.long	1073516389
+	.long	3549227225
+	.long	1073530002
+	.long	11637607
+	.long	1073543422
+	.long	588220169
+	.long	1073556654
+	.long	2635407503
+	.long	1073569705
+	.long	2042029317
+	.long	1073582582
+	.long	1925128962
+	.long	1073595290
+	.long	4136375664
+	.long	1073607834
+	.long	759964600
+	.long	1073620221
+	.long	4257606771
+	.long	1073632453
+	.long	297278907
+	.long	1073644538
+	.long	3655053093
+	.long	1073656477
+	.long	2442253172
+	.long	1073668277
+	.long	1111876799
+	.long	1073679941
+	.long	3330973139
+	.long	1073691472
+	.long	3438879452
+	.long	1073702875
+	.long	3671565478
+	.long	1073714153
+	.long	1317849547
+	.long	1073725310
+	.long	1642364115
+	.long	1073736348
+	.long	4050900474
+	.long	1014427190
+	.long	1157977860
+	.long	1016444461
+	.long	1374568199
+	.long	1017271387
+	.long	2809163288
+	.long	1016882676
+	.long	3742377377
+	.long	1013168191
+	.long	3101606597
+	.long	1017541672
+	.long	65224358
+	.long	1017217597
+	.long	2691591250
+	.long	1017266643
+	.long	4020758549
+	.long	1017689313
+	.long	1316310992
+	.long	1018030788
+	.long	1031537856
+	.long	1014090882
+	.long	3261395239
+	.long	1016413641
+	.long	886424999
+	.long	1016313335
+	.long	3114776834
+	.long	1014195875
+	.long	1681120620
+	.long	1017825416
+	.long	1329600273
+	.long	1016625740
+	.long	465474623
+	.long	1017097119
+	.long	4251633980
+	.long	1017169077
+	.long	1986990133
+	.long	1017710645
+	.long	752958613
+	.long	1017159641
+	.long	2216216792
+	.long	1018020163
+	.long	4282860129
+	.long	1015924861
+	.long	1557627859
+	.long	1016039538
+	.long	3889219754
+	.long	1018086237
+	.long	3684996408
+	.long	1017353275
+	.long	723532103
+	.long	1017717141
+	.long	2951149676
+	.long	1012528470
+	.long	831890937
+	.long	1017830553
+	.long	1031212645
+	.long	1017387331
+	.long	2741737450
+	.long	1017604974
+	.long	2863311531
+	.long	1003776682
+	.long	4276736099
+	.long	1013153088
+	.long	4111778382
+	.long	1015673686
+	.long	1728065769
+	.long	1016413986
+	.long	2708718031
+	.long	1018078833
+	.long	1069335005
+	.long	1015291224
+	.long	700037144
+	.long	1016482032
+	.long	2904566452
+	.long	1017226861
+	.long	4074156649
+	.long	1017622651
+	.long	25019565
+	.long	1015245366
+	.long	3601952608
+	.long	1015771755
+	.long	3267129373
+	.long	1017904664
+	.long	503203103
+	.long	1014921629
+	.long	2122011730
+	.long	1018027866
+	.long	3927295461
+	.long	1014189456
+	.long	2790625147
+	.long	1016024251
+	.long	1330460186
+	.long	1016940346
+	.long	4033568463
+	.long	1015538390
+	.long	3695818227
+	.long	1017509621
+	.long	257573361
+	.long	1017208868
+	.long	3227697852
+	.long	1017337964
+	.long	234118548
+	.long	1017169577
+	.long	4009025803
+	.long	1017278524
+	.long	1948343394
+	.long	1017749310
+	.long	678398162
+	.long	1018144239
+	.long	3083864863
+	.long	1016669086
+	.long	2415453452
+	.long	1017890370
+	.long	175467344
+	.long	1017330033
+	.long	3197359580
+	.long	1010339928
+	.long	2071276951
+	.long	1015941358
+	.long	268372543
+	.long	1016737773
+	.long	938132959
+	.long	1017389108
+	.long	1816750559
+	.long	1017337448
+	.long	4119203749
+	.long	1017152174
+	.long	2578653878
+	.long	1013108497
+	.long	2470331096
+	.long	1014678606
+	.long	123855735
+	.long	1016553320
+	.long	1265650889
+	.long	1014782687
+	.long	3414398172
+	.long	1017182638
+	.long	1040773369
+	.long	1016158401
+	.long	3483628886
+	.long	1016886550
+	.long	4140499405
+	.long	1016191425
+	.long	3893477850
+	.long	1016964495
+	.long	3935319771
+	.long	1009634717
+	.long	2978982660
+	.long	1015027112
+	.long	2452709923
+	.long	1017990229
+	.long	3190365712
+	.long	1015835149
+	.long	4237588139
+	.long	1015832925
+	.long	2610678389
+	.long	1017962711
+	.long	2127316774
+	.long	1017405770
+	.long	824267502
+	.long	1017959463
+	.long	2165924042
+	.long	1017912225
+	.long	2774007076
+	.long	1013257418
+	.long	4123916326
+	.long	1017582284
+	.long	1976417958
+	.long	1016959909
+	.long	4092806412
+	.long	1017711279
+	.long	119251817
+	.long	1015363631
+	.long	3475418768
+	.long	1017675415
+	.long	1972580503
+	.long	1015470684
+	.long	815541017
+	.long	1017517969
+	.long	2429917451
+	.long	1017397776
+	.long	4062888482
+	.long	1016749897
+	.long	68284153
+	.long	1017925678
+	.long	2207779246
+	.long	1016320298
+	.long	1183466520
+	.long	1017408657
+	.long	143326427
+	.long	1017060403
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	1138753536
+	.long	0
+	.long	0
+	.type	static_const_table,@object
+	.size	static_const_table,2000
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_cos.S b/libm/x86/s_cos.S
new file mode 100644
index 0000000..fd5ef5d
--- /dev/null
+++ b/libm/x86/s_cos.S
@@ -0,0 +1,892 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     Inputs with |X| < 2^-252 are treated specially as
+//     1 - |x|.
+//
+// Special cases:
+//  cos(NaN) = quiet NaN, and raise invalid exception
+//  cos(INF) = NaN and raise invalid exception
+//  cos(0) = 1
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  cos
+ENTRY(cos)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $12336, %eax
+        cmpl      $4293, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movsd     2160(%ebx), %xmm1
+        mulsd     %xmm0, %xmm1
+        movapd    2240(%ebx), %xmm5
+        movsd     2224(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        movsd     2128(%ebx), %xmm3
+        movapd    2112(%ebx), %xmm2
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sdl %edx, %xmm1
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addl      $1865232, %edx
+        movapd    %xmm0, %xmm4
+        andl      $63, %edx
+        movapd    2096(%ebx), %xmm5
+        lea       (%ebx), %eax
+        shll      $5, %edx
+        addl      %edx, %eax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     2144(%ebx), %xmm1
+        subsd     %xmm3, %xmm4
+        movsd     8(%eax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movapd    %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    2064(%ebx), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%eax), %xmm2
+        subsd     %xmm3, %xmm1
+        movsd     24(%eax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     2080(%ebx), %xmm5
+        mulsd     (%eax), %xmm4
+        addpd     2048(%ebx), %xmm6
+        mulpd     %xmm0, %xmm5
+        movapd    %xmm3, %xmm0
+        addsd     8(%eax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movapd    %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movsd     8(%eax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%eax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm4
+        movsd     %xmm4, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        pinsrw    $3, %eax, %xmm0
+        movsd     2192(%ebx), %xmm1
+        subsd     %xmm0, %xmm1
+        movsd     %xmm1, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movl      132(%esp), %eax
+        andl      $2146435072, %eax
+        cmpl      $2146435072, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $1, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_sincos_huge
+        addl      $32, %esp
+        fldl      8(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        fldl      128(%esp)
+        fmull     2208(%ebx)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(cos)
+# -- End  cos
+
+# Start file scope ASM
+ALIAS_SYMBOL(cosl, cos);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.long	1413480448
+	.long	1069097467
+	.long	0
+	.long	0
+	.long	771977331
+	.long	996350346
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	static_const_table,@object
+	.size	static_const_table,2256
+	.data
+	.hidden __libm_sincos_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_expm1.S b/libm/x86/s_expm1.S
new file mode 100644
index 0000000..1f9e87b
--- /dev/null
+++ b/libm/x86/s_expm1.S
@@ -0,0 +1,702 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//
+//  Four sub-domains:
+//    1. |x| < 1/(2*K)
+//      expm1(x) ~ P(x)
+//    2. 1/(2*K) <= |x| <= 56*log(2)
+//       x       x/log(2)    n
+//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
+//    3. 56*log(2) < x < MAX_LOG
+//       x       x   x/log(2)    n
+//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
+//    4. x < -56*log(2)
+//       x            x
+//      e - 1 = -1 + e ~ -1
+//    where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//    In case 3, to avoid problems with arithmetic overflow and underflow,
+//              n                        n1  n2
+//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//    and BIAS is a value of exponent bias.
+//
+// Special cases:
+//  expm1(NaN) is NaN
+//  expm1(+INF) is +INF
+//  expm1(-INF) is -1
+//  expm1(x) is x for subnormals
+//  for finite argument, only expm1(0)=0 is exact.
+//  For IEEE double
+//    if x > 709.782712893383973096 then expm1(x) overflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  expm1
+ENTRY(expm1)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 64(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        unpcklpd  %xmm0, %xmm0
+        movapd    64(%ebx), %xmm1
+        movapd    48(%ebx), %xmm6
+        movapd    80(%ebx), %xmm2
+        movapd    96(%ebx), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $16304, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    112(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    128(%ebx), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        subpd     %xmm3, %xmm0
+        movapd    160(%ebx,%ecx), %xmm2
+        movsd     144(%ebx), %xmm3
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm3
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm0, %xmm0
+        movapd    %xmm2, %xmm4
+        unpckhpd  %xmm2, %xmm2
+        movdqa    16(%ebx), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    32(%ebx), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        mulsd     %xmm0, %xmm3
+        mulpd     %xmm5, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        addsd     %xmm3, %xmm0
+        xorpd     %xmm3, %xmm3
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm3
+        orpd      %xmm7, %xmm2
+        mulsd     %xmm4, %xmm7
+        movapd    %xmm3, %xmm6
+        addsd     %xmm1, %xmm3
+        pextrw    $3, %xmm2, %edx
+        pshufd    $238, %xmm0, %xmm5
+        psrlq     $38, %xmm3
+        psllq     $38, %xmm3
+        movapd    %xmm2, %xmm4
+        subsd     %xmm3, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm2, %xmm3
+        xorpd     %xmm5, %xmm5
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm5
+        addsd     %xmm1, %xmm0
+        movl      $17184, %ecx
+        subl      %edx, %ecx
+        subl      $16256, %edx
+        orl       %edx, %ecx
+        jl        .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm3
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $0, %edx
+        jl        .L_2TAG_PACKET_5.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm7
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        subsd     %xmm5, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_1.0.2:
+        movl      132(%esp), %ecx
+        addsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_6.0.2
+        fstcw     24(%esp)
+        movzwl    24(%esp), %edx
+        orl       $768, %edx
+        movw      %dx, 28(%esp)
+        fldcw     28(%esp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    (%ebx), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movsd     %xmm0, 8(%esp)
+        fldl      8(%esp)
+        movsd     %xmm6, 16(%esp)
+        fldl      16(%esp)
+        movsd     %xmm4, 16(%esp)
+        fldl      16(%esp)
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        faddp     %st, %st(1)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 8(%esp)
+        fldl      8(%esp)
+        fmulp     %st, %st(1)
+        fstpl     8(%esp)
+        movsd     8(%esp), %xmm0
+        fldcw     24(%esp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_7.0.2
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        movl      $41, %edx
+.L_2TAG_PACKET_8.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     128(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_11.0.2
+        movsd     1272(%ebx), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $41, %edx
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_11.0.2:
+        movl      132(%esp), %eax
+        movl      128(%esp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %eax
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_12.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_12.0.2
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_13.0.2
+        movsd     1256(%ebx), %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_13.0.2:
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_12.0.2:
+        movsd     128(%esp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_14.0.2:
+        addl      $16304, %eax
+        cmpl      $15504, %eax
+        jb        .L_2TAG_PACKET_15.0.2
+        movapd    1184(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    1200(%ebx), %xmm3
+        movapd    1216(%ebx), %xmm4
+        movsd     1232(%ebx), %xmm5
+        mulsd     %xmm1, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm2
+        xorpd     %xmm7, %xmm7
+        movl      $16368, %edx
+        pinsrw    $3, %edx, %xmm7
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm1, %xmm5
+        pshufd    $228, %xmm1, %xmm3
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm4, %xmm2
+        movapd    %xmm7, %xmm4
+        addsd     %xmm6, %xmm7
+        mulpd     %xmm3, %xmm1
+        psrlq     $27, %xmm7
+        psllq     $27, %xmm7
+        movsd     1288(%ebx), %xmm3
+        subsd     %xmm7, %xmm4
+        mulpd     %xmm1, %xmm2
+        addsd     %xmm4, %xmm6
+        pshufd    $238, %xmm2, %xmm1
+        addsd     %xmm2, %xmm6
+        andpd     %xmm0, %xmm3
+        movapd    %xmm0, %xmm4
+        addsd     %xmm6, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        mulsd     %xmm7, %xmm3
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_15.0.2:
+        cmpl      $16, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        movapd    %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        movl      $16, %edx
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm1
+        movl      $42, %edx
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_14.0.2
+        movl      132(%esp), %eax
+        cmpl      $1083179008, %eax
+        jge       .L_2TAG_PACKET_10.0.2
+        cmpl      $-1048576, %eax
+        jae       .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_4.0.2:
+        movsd     %xmm0, 48(%esp)
+        fldl      48(%esp)
+.L_2TAG_PACKET_9.0.2:
+        movl      64(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(expm1)
+# -- End  expm1
+
+# Start file scope ASM
+ALIAS_SYMBOL(expm1l, expm1);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	1963358694
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1431655765
+	.long	1067799893
+	.long	0
+	.long	1071644672
+	.long	381774871
+	.long	1062650220
+	.long	381774871
+	.long	1062650220
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1000070955
+	.long	1042145304
+	.long	1040187392
+	.long	11418
+	.long	988267849
+	.long	1039500660
+	.long	3539992576
+	.long	22960
+	.long	36755401
+	.long	1042114290
+	.long	402653184
+	.long	34629
+	.long	3634769483
+	.long	1042178627
+	.long	1820327936
+	.long	46424
+	.long	2155991225
+	.long	1041560680
+	.long	847249408
+	.long	58348
+	.long	2766913307
+	.long	1039293264
+	.long	3489660928
+	.long	70401
+	.long	3651174602
+	.long	1040488175
+	.long	2927624192
+	.long	82586
+	.long	3073892131
+	.long	1042240606
+	.long	1006632960
+	.long	94904
+	.long	1328391742
+	.long	1042019037
+	.long	3942645760
+	.long	107355
+	.long	2650893825
+	.long	1041903210
+	.long	822083584
+	.long	119943
+	.long	2397289153
+	.long	1041802037
+	.long	2281701376
+	.long	132667
+	.long	430997175
+	.long	1042110606
+	.long	1845493760
+	.long	145530
+	.long	1230936525
+	.long	1041801015
+	.long	1702887424
+	.long	158533
+	.long	740675935
+	.long	1040178913
+	.long	4110417920
+	.long	171677
+	.long	3489810261
+	.long	1041825986
+	.long	2793406464
+	.long	184965
+	.long	2532600530
+	.long	1040767882
+	.long	167772160
+	.long	198398
+	.long	3542557060
+	.long	1041827263
+	.long	2986344448
+	.long	211976
+	.long	1401563777
+	.long	1041061093
+	.long	922746880
+	.long	225703
+	.long	3129406026
+	.long	1041852413
+	.long	880803840
+	.long	239579
+	.long	900993572
+	.long	1039283234
+	.long	1275068416
+	.long	253606
+	.long	2115029358
+	.long	1042140042
+	.long	562036736
+	.long	267786
+	.long	1086643152
+	.long	1041785419
+	.long	1610612736
+	.long	282120
+	.long	82864366
+	.long	1041256244
+	.long	3045064704
+	.long	296610
+	.long	2392968152
+	.long	1040913683
+	.long	3573547008
+	.long	311258
+	.long	2905856183
+	.long	1040002214
+	.long	1988100096
+	.long	326066
+	.long	3742008261
+	.long	1040011137
+	.long	1451229184
+	.long	341035
+	.long	863393794
+	.long	1040880621
+	.long	914358272
+	.long	356167
+	.long	1446136837
+	.long	1041372426
+	.long	3707764736
+	.long	371463
+	.long	927855201
+	.long	1040617636
+	.long	360710144
+	.long	386927
+	.long	1492679939
+	.long	1041050306
+	.long	2952790016
+	.long	402558
+	.long	608827001
+	.long	1041582217
+	.long	2181038080
+	.long	418360
+	.long	606260204
+	.long	1042271987
+	.long	1711276032
+	.long	434334
+	.long	3163044019
+	.long	1041843851
+	.long	1006632960
+	.long	450482
+	.long	4148747325
+	.long	1041962972
+	.long	3900702720
+	.long	466805
+	.long	802924201
+	.long	1041275378
+	.long	1442840576
+	.long	483307
+	.long	3052749833
+	.long	1041940577
+	.long	1937768448
+	.long	499988
+	.long	2216116399
+	.long	1041486744
+	.long	914358272
+	.long	516851
+	.long	2729697836
+	.long	1041445764
+	.long	2566914048
+	.long	533897
+	.long	540608356
+	.long	1041310907
+	.long	2600468480
+	.long	551129
+	.long	2916344493
+	.long	1040535661
+	.long	1107296256
+	.long	568549
+	.long	731391814
+	.long	1039497014
+	.long	2566914048
+	.long	586158
+	.long	1024722704
+	.long	1041461625
+	.long	2961178624
+	.long	603959
+	.long	3806831748
+	.long	1041732499
+	.long	2675965952
+	.long	621954
+	.long	238953304
+	.long	1040316488
+	.long	2189426688
+	.long	640145
+	.long	749123235
+	.long	1041725785
+	.long	2063597568
+	.long	658534
+	.long	1168187977
+	.long	1041175214
+	.long	2986344448
+	.long	677123
+	.long	3506096399
+	.long	1042186095
+	.long	1426063360
+	.long	695915
+	.long	1470221620
+	.long	1041675499
+	.long	2566914048
+	.long	714911
+	.long	3182425146
+	.long	1041483134
+	.long	3087007744
+	.long	734114
+	.long	3131698208
+	.long	1042208657
+	.long	4068474880
+	.long	753526
+	.long	2300504125
+	.long	1041428596
+	.long	2415919104
+	.long	773150
+	.long	2290297931
+	.long	1037388400
+	.long	3716153344
+	.long	792987
+	.long	3532148223
+	.long	1041626194
+	.long	771751936
+	.long	813041
+	.long	1161884404
+	.long	1042015258
+	.long	3699376128
+	.long	833312
+	.long	876383176
+	.long	1037968878
+	.long	1241513984
+	.long	853805
+	.long	3379986796
+	.long	1042213153
+	.long	3699376128
+	.long	874520
+	.long	1545797737
+	.long	1041681569
+	.long	58720256
+	.long	895462
+	.long	2925146801
+	.long	1042212567
+	.long	855638016
+	.long	916631
+	.long	1316627971
+	.long	1038516204
+	.long	3883925504
+	.long	938030
+	.long	3267869137
+	.long	1040337004
+	.long	2726297600
+	.long	959663
+	.long	3720868999
+	.long	1041782409
+	.long	3992977408
+	.long	981531
+	.long	433316142
+	.long	1041994064
+	.long	1526726656
+	.long	1003638
+	.long	781232103
+	.long	1040093400
+	.long	2172649472
+	.long	1025985
+	.long	2773927732
+	.long	1053236707
+	.long	381774871
+	.long	1062650220
+	.long	379653899
+	.long	1056571845
+	.long	286331153
+	.long	1065423121
+	.long	436314138
+	.long	1059717536
+	.long	1431655765
+	.long	1067799893
+	.long	1431655765
+	.long	1069897045
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	2146435071
+	.long	0
+	.long	1048576
+	.long	4227858432
+	.long	4294967295
+	.type	static_const_table,@object
+	.size	static_const_table,1296
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_log1p.S b/libm/x86/s_log1p.S
new file mode 100644
index 0000000..7a6d845
--- /dev/null
+++ b/libm/x86/s_log1p.S
@@ -0,0 +1,827 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//   log1p(NaN) = quiet NaN, and raise invalid exception
+//   log1p(+INF) = that INF
+//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
+//   log1p(-1) = -INF, and raises divide-by-zero exception
+//   log1p(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  log1p
+ENTRY(log1p)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $32768, %ecx
+        movd      %ecx, %xmm4
+        movsd     2128(%ebx), %xmm5
+        pshufd    $68, %xmm0, %xmm7
+        movapd    %xmm2, %xmm6
+        pextrw    $3, %xmm0, %ecx
+        addsd     %xmm2, %xmm0
+        movapd    %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        subsd     %xmm0, %xmm6
+        orpd      %xmm2, %xmm0
+        psllq     $5, %xmm0
+        psrlq     $34, %xmm0
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        addsd     %xmm6, %xmm7
+        rcpss     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        andl      $32752, %ecx
+        cmpl      $16256, %ecx
+        jb        .L_2TAG_PACKET_1.0.2
+        andl      $32752, %eax
+        movl      $32720, %ecx
+        subl      %eax, %ecx
+        pinsrw    $3, %ecx, %xmm3
+.L_2TAG_PACKET_2.0.2:
+        mulsd     %xmm3, %xmm7
+        paddd     %xmm4, %xmm0
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        orpd      %xmm2, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        paddd     %xmm4, %xmm0
+        mulsd     %xmm0, %xmm5
+        movl      $16352, %ecx
+        subl      %ecx, %eax
+        cvtsi2sdl %eax, %xmm4
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm0, %xmm1
+        movsd     2064(%ebx), %xmm6
+        movapd    2080(%ebx), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%ebx,%edx), %xmm0
+        movapd    2096(%ebx), %xmm2
+        addsd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm5
+        addsd     %xmm7, %xmm1
+        subsd     %xmm1, %xmm5
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm4, %xmm6
+        mulsd     2072(%ebx), %xmm4
+        mulsd     %xmm1, %xmm3
+        pshufd    $68, %xmm1, %xmm5
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm2
+        mulpd     %xmm5, %xmm5
+        pshufd    $228, %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     2112(%ebx), %xmm2
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm7
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm6, %xmm4
+        subsd     %xmm7, %xmm1
+        addpd     %xmm3, %xmm2
+        addsd     %xmm4, %xmm1
+        mulpd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_0.0.2:
+        movsd     112(%esp), %xmm0
+        movapd    %xmm0, %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_6.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_7.0.2:
+        ja        .L_2TAG_PACKET_6.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_6.0.2
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_4.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_7.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_8.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $141, %edx
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_9.0.2:
+        movsd     %xmm0, (%esp)
+        movsd     112(%esp), %xmm0
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $140, %edx
+        jmp       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     112(%esp), %xmm0
+        cmpl      $15504, %ecx
+        jb        .L_2TAG_PACKET_11.0.2
+        movapd    2144(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        movapd    2160(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm4
+        movapd    2176(%ebx), %xmm3
+        mulpd     %xmm0, %xmm1
+        xorpd     %xmm6, %xmm6
+        mulpd     %xmm4, %xmm4
+        addpd     %xmm2, %xmm1
+        pshufd    $68, %xmm4, %xmm5
+        mulpd     %xmm0, %xmm4
+        movl      $49120, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm1
+        mulsd     %xmm4, %xmm4
+        addpd     %xmm3, %xmm1
+        mulsd     %xmm6, %xmm5
+        mulpd     %xmm4, %xmm1
+        pshufd    $238, %xmm1, %xmm7
+        addsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_11.0.2:
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_12.0.2
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_12.0.2:
+        movapd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_3.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_10.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(log1p)
+# -- End  log1p
+
+# Start file scope ASM
+ALIAS_SYMBOL(log1pl, log1p);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	4294959104
+	.long	0
+	.long	3217031168
+	.long	2576980378
+	.long	1070176665
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1431655765
+	.long	3217380693
+	.long	1431655765
+	.long	1070945621
+	.type	static_const_table,@object
+	.size	static_const_table,2192
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_sin.S b/libm/x86/s_sin.S
new file mode 100644
index 0000000..1e6cbd4
--- /dev/null
+++ b/libm/x86/s_sin.S
@@ -0,0 +1,907 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     If |x| < SNN (SNN meaning the smallest normal number), we
+//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
+//     do 2^-55 * (2^55 * x - x).
+//
+// Special cases:
+//  sin(NaN) = quiet NaN, and raise invalid exception
+//  sin(INF) = NaN and raise invalid exception
+//  sin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  sin
+ENTRY(sin)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $12336, %eax
+        cmpl      $4293, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movsd     2160(%ebx), %xmm1
+        mulsd     %xmm0, %xmm1
+        movsd     2272(%ebx), %xmm5
+        movapd    2256(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        movsd     2128(%ebx), %xmm3
+        movapd    2112(%ebx), %xmm2
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sdl %edx, %xmm1
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addl      $1865216, %edx
+        movapd    %xmm0, %xmm4
+        andl      $63, %edx
+        movapd    2096(%ebx), %xmm5
+        lea       (%ebx), %eax
+        shll      $5, %edx
+        addl      %edx, %eax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     2144(%ebx), %xmm1
+        subsd     %xmm3, %xmm4
+        movsd     8(%eax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movapd    %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    2064(%ebx), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%eax), %xmm2
+        subsd     %xmm3, %xmm1
+        movsd     24(%eax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     2080(%ebx), %xmm5
+        mulsd     (%eax), %xmm4
+        addpd     2048(%ebx), %xmm6
+        mulpd     %xmm0, %xmm5
+        movapd    %xmm3, %xmm0
+        addsd     8(%eax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movapd    %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movsd     8(%eax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%eax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm4
+        movsd     %xmm4, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        shrl      $4, %eax
+        cmpl      $268434685, %eax
+        jne       .L_2TAG_PACKET_3.0.2
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        movsd     2192(%ebx), %xmm3
+        mulsd     %xmm0, %xmm3
+        subsd     %xmm0, %xmm3
+        mulsd     2208(%ebx), %xmm3
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movl      132(%esp), %eax
+        andl      $2146435072, %eax
+        cmpl      $2146435072, %eax
+        je        .L_2TAG_PACKET_4.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $2, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_sincos_huge
+        addl      $32, %esp
+        fldl      16(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        fldl      128(%esp)
+        fmull     2240(%ebx)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(sin)
+# -- End  sin
+
+# Start file scope ASM
+ALIAS_SYMBOL(sinl, sin);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.long	1413480448
+	.long	1069097467
+	.long	0
+	.long	0
+	.long	771977331
+	.long	996350346
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	0
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1015021568
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	1072693247
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	static_const_table,@object
+	.size	static_const_table,2288
+	.data
+	.hidden __libm_sincos_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_tan.S b/libm/x86/s_tan.S
new file mode 100644
index 0000000..3ee2107
--- /dev/null
+++ b/libm/x86/s_tan.S
@@ -0,0 +1,1766 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Polynomials coefficients and other constants.
+//
+// Note that in this algorithm, there is a different polynomial for
+// each breakpoint, so there are 32 sets of polynomial coefficients
+// as well as 32 instances of the other constants.
+//
+// The polynomial coefficients and constants are offset from the start
+// of the main block as follows:
+//
+//   0:  c8 | c0
+//  16:  c9 | c1
+//  32: c10 | c2
+//  48: c11 | c3
+//  64: c12 | c4
+//  80: c13 | c5
+//  96: c14 | c6
+// 112: c15 | c7
+// 128: T_hi
+// 136: T_lo
+// 144: Sigma
+// 152: T_hl
+// 160: Tau
+// 168: Mask
+// 176: (end of block)
+//
+// The total table size is therefore 5632 bytes.
+//
+// Note that c0 and c1 are always zero. We could try storing
+// other constants here, and just loading the low part of the
+// SIMD register in these cases, after ensuring the high part
+// is zero.
+//
+// The higher terms of the polynomial are computed in the *low*
+// part of the SIMD register. This is so we can overlap the
+// multiplication by r^8 and the unpacking of the other part.
+//
+// The constants are:
+// T_hi + T_lo = accurate constant term in power series
+// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
+// Tau = multiplier for the reciprocal, always -1 or 0
+//
+// The basic reconstruction formula using these constants is:
+//
+// High = tau * recip_hi + t_hi
+// Med = (sgn * r + t_hl * r)_hi
+// Low = (sgn * r + t_hl * r)_lo +
+//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
+//
+// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
+//
+// (c0 = c1 = 0, but using them keeps SIMD regularity)
+//
+// We then do a compensated sum High + Med, add the low parts together
+// and then do the final sum.
+//
+// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
+// modulo pi/2
+//
+// Special cases:
+//  tan(NaN) = quiet NaN, and raise invalid exception
+//  tan(INF) = NaN and raise invalid exception
+//  tan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  tan
+ENTRY(tan)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $120, %esp
+        movl      %ebx, 56(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     128(%esp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $14368, %eax
+        cmpl      $2216, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        movapd    5840(%ebx), %xmm5
+        movapd    5856(%ebx), %xmm6
+        unpcklpd  %xmm0, %xmm0
+        movapd    5712(%ebx), %xmm4
+        andpd     %xmm0, %xmm4
+        movapd    5632(%ebx), %xmm1
+        mulpd     %xmm0, %xmm1
+        orpd      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm7
+        unpckhpd  %xmm7, %xmm7
+        cvttsd2si %xmm7, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    5664(%ebx), %xmm3
+        movsd     5728(%ebx), %xmm5
+        addl      $469248, %edx
+        movapd    5680(%ebx), %xmm4
+        mulpd     %xmm1, %xmm3
+        andl      $31, %edx
+        mulsd     %xmm1, %xmm5
+        movl      %edx, %ecx
+        mulpd     %xmm1, %xmm4
+        shll      $1, %ecx
+        subpd     %xmm3, %xmm0
+        mulpd     5696(%ebx), %xmm1
+        addl      %ecx, %edx
+        shll      $2, %ecx
+        addl      %ecx, %edx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movsd     5744(%ebx), %xmm6
+        shll      $4, %edx
+        lea       (%ebx), %eax
+        andpd     5776(%ebx), %xmm5
+        movapd    %xmm0, %xmm3
+        addl      %edx, %eax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        movapd    16(%eax), %xmm7
+        subsd     %xmm5, %xmm3
+        mulpd     %xmm0, %xmm7
+        subpd     %xmm1, %xmm2
+        movapd    48(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        movapd    96(%eax), %xmm4
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%eax), %xmm7
+        addpd     32(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%eax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%eax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%eax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movapd    %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movapd    %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movapd    %xmm2, %xmm4
+        movsd     144(%eax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%eax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%eax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movsd     5744(%ebx), %xmm7
+        mulsd     %xmm6, %xmm4
+        movsd     168(%eax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%eax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%eax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movapd    %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        movsd     %xmm0, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        jg        .L_2TAG_PACKET_2.0.2
+        shrl      $4, %eax
+        cmpl      $268434558, %eax
+        jne       .L_2TAG_PACKET_3.0.2
+        movapd    %xmm0, %xmm3
+        mulsd     5808(%ebx), %xmm3
+.L_2TAG_PACKET_3.0.2:
+        movsd     5792(%ebx), %xmm3
+        mulsd     %xmm0, %xmm3
+        addsd     %xmm0, %xmm3
+        mulsd     5808(%ebx), %xmm3
+        movsd     %xmm3, (%esp)
+        fldl      (%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movq      5712(%ebx), %xmm7
+        andpd     %xmm0, %xmm7
+        xorpd     %xmm0, %xmm7
+        ucomisd   5760(%ebx), %xmm7
+        je        .L_2TAG_PACKET_4.0.2
+        subl      $32, %esp
+        movsd     %xmm0, (%esp)
+        lea       40(%esp), %eax
+        movl      %eax, 8(%esp)
+        movl      $2, %eax
+        movl      %eax, 12(%esp)
+        call      __libm_tancot_huge
+        addl      $32, %esp
+        fldl      8(%esp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        movq      %xmm0, (%esp)
+        fldl      (%esp)
+        fsubl     (%esp)
+.L_2TAG_PACKET_1.0.2:
+        movl      56(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(tan)
+# -- End  tan
+
+# Start file scope ASM
+ALIAS_SYMBOL(tanl, tan);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1066820852
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1441186365
+	.long	1065494243
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	236289504
+	.long	1064135997
+	.long	286331153
+	.long	1069617425
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1160476131
+	.long	1062722102
+	.long	463583772
+	.long	1068212666
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	1066745731
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	1065725283
+	.long	3693284251
+	.long	1069118808
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	1064664197
+	.long	3055842593
+	.long	1068578846
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	1063576465
+	.long	1046897440
+	.long	1067705865
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	1069102779
+	.long	1317599141
+	.long	1012432133
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	1068119047
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	1067254767
+	.long	3593250296
+	.long	1070233561
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	1066371299
+	.long	24583402
+	.long	1069723988
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	1065415756
+	.long	558065897
+	.long	1068949418
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	1070167541
+	.long	1497360404
+	.long	1009710547
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	1069256389
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	1068579152
+	.long	3631919291
+	.long	1070936926
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	1067799281
+	.long	1509038701
+	.long	1070601643
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	1067075736
+	.long	3233018412
+	.long	1069913186
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	1070819848
+	.long	500078909
+	.long	3161288781
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	1070398550
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	1069876531
+	.long	2616040238
+	.long	1071582937
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	1069440113
+	.long	2251697184
+	.long	1071253687
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	1068885191
+	.long	2476932470
+	.long	1070842002
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	1071284857
+	.long	3062633575
+	.long	1014008623
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	1071640847
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	1071346340
+	.long	1037049034
+	.long	1072037305
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	1071090851
+	.long	3205232916
+	.long	1071968658
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	1070871082
+	.long	1496754229
+	.long	1071807201
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	1071717047
+	.long	3451266538
+	.long	3163444811
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	1072881308
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	1072928558
+	.long	3912524733
+	.long	1072622983
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	1072976922
+	.long	946523347
+	.long	1072772766
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	1073026959
+	.long	3718905905
+	.long	1072832823
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	1071997368
+	.long	547126769
+	.long	1015523525
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	1074290212
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	1074739170
+	.long	1264738763
+	.long	1073084804
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	1075052171
+	.long	4270740730
+	.long	1073574708
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	1075420255
+	.long	1769828046
+	.long	1073938542
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	1072317184
+	.long	294527206
+	.long	3162140088
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1704352102
+	.long	1075943001
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	1076659010
+	.long	0
+	.long	1073741824
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	1077353622
+	.long	2863311531
+	.long	1074440874
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	1078115278
+	.long	95443718
+	.long	1075163227
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1330165971
+	.long	3207850745
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	3205151475
+	.long	602185705
+	.long	3215678092
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	3202470837
+	.long	3690544014
+	.long	3213150171
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	3199711161
+	.long	3759536023
+	.long	3210559989
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	3217967566
+	.long	2356426521
+	.long	1025423456
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	3207303968
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	3204528612
+	.long	2754706541
+	.long	3215359511
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	3201651479
+	.long	4097292716
+	.long	3212856302
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	3198830754
+	.long	170296152
+	.long	3210060867
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	3217669096
+	.long	1998842465
+	.long	3174703977
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	3206749304
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	3203817873
+	.long	2223654598
+	.long	3215071936
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	3200900378
+	.long	1066252975
+	.long	3212391267
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	3198004753
+	.long	1046243251
+	.long	3209678971
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	3217377742
+	.long	3205862232
+	.long	3174660915
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	3206166872
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	3203204426
+	.long	1485063559
+	.long	3214682643
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	3200223545
+	.long	2866066872
+	.long	3211982662
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	3197170774
+	.long	1948234989
+	.long	3209098147
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	3217092115
+	.long	1034046433
+	.long	3174271903
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	3205589761
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	3202507988
+	.long	3144465176
+	.long	3214191500
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	3199400272
+	.long	584032116
+	.long	3211469261
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	3196274812
+	.long	3844233498
+	.long	3208626322
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	3216590719
+	.long	3267547836
+	.long	3172163321
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	3204793485
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	3201674917
+	.long	628750575
+	.long	3213566872
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	3198516435
+	.long	1466315631
+	.long	3210837162
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	3195331491
+	.long	3695969289
+	.long	3207854418
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	3216034914
+	.long	23826559
+	.long	3172048060
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	3203672535
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	3200523326
+	.long	2507068734
+	.long	3212502004
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	3197333001
+	.long	1349489537
+	.long	3209765608
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	3194116746
+	.long	3852528092
+	.long	3206760861
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	3214984212
+	.long	3447575948
+	.long	1024675855
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	737611454
+	.long	1056336527
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3594790527
+	.long	1052911621
+	.long	381774871
+	.long	1066844524
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3303051618
+	.long	1049456050
+	.long	3154187623
+	.long	1063343722
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	528061788
+	.long	1045944910
+	.long	2469719819
+	.long	1059831159
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	1056188887
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	1053039678
+	.long	2507068734
+	.long	1065018356
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	1049849353
+	.long	1349489537
+	.long	1062281960
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	1046633098
+	.long	3852528092
+	.long	1059277213
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	1067500564
+	.long	3447575948
+	.long	3172159503
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	1057309837
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	1054191269
+	.long	628750575
+	.long	1066083224
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	1051032787
+	.long	1466315631
+	.long	1063353514
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	1047847843
+	.long	3695969289
+	.long	1060370770
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	1068551266
+	.long	23826559
+	.long	1024564412
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	1058106113
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	1055024340
+	.long	3144465176
+	.long	1066707852
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	1051916624
+	.long	584032116
+	.long	1063985613
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	1048791164
+	.long	3844233498
+	.long	1061142674
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	1069107071
+	.long	3267547836
+	.long	1024679673
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	1058683224
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	1055720778
+	.long	1485063559
+	.long	1067198995
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	1052739897
+	.long	2866066872
+	.long	1064499014
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	1049687126
+	.long	1948234989
+	.long	1061614499
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	1069608467
+	.long	1034046433
+	.long	1026788255
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	1059265656
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	1056334225
+	.long	2223654598
+	.long	1067588288
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	1053416730
+	.long	1066252975
+	.long	1064907619
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	1050521105
+	.long	1046243251
+	.long	1062195323
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	1069894094
+	.long	3205862232
+	.long	1027177267
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	1059820320
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	1057044964
+	.long	2754706541
+	.long	1067875863
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	1054167831
+	.long	4097292716
+	.long	1065372654
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	1051347106
+	.long	170296152
+	.long	1062577219
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	1070185448
+	.long	1998842465
+	.long	1027220329
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1330165971
+	.long	1060367097
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	1057667827
+	.long	602185705
+	.long	1068194444
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	1054987189
+	.long	3690544014
+	.long	1065666523
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	1052227513
+	.long	3759536023
+	.long	1063076341
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	1070483918
+	.long	2356426521
+	.long	3172907104
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1704352102
+	.long	3223426649
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	3224142658
+	.long	0
+	.long	3221225472
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	3224837270
+	.long	2863311531
+	.long	3221924522
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	3225598926
+	.long	95443718
+	.long	3222646875
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	3221773860
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	3222222818
+	.long	1264738763
+	.long	3220568452
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	3222535819
+	.long	4270740730
+	.long	3221058356
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	3222903903
+	.long	1769828046
+	.long	3221422190
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	3219800832
+	.long	294527206
+	.long	1014656440
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	3220364956
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	3220412206
+	.long	3912524733
+	.long	3220106631
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	3220460570
+	.long	946523347
+	.long	3220256414
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	3220510607
+	.long	3718905905
+	.long	3220316471
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	3219481016
+	.long	547126769
+	.long	3163007173
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	3219124495
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	3218829988
+	.long	1037049034
+	.long	3219520953
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	3218574499
+	.long	3205232916
+	.long	3219452306
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	3218354730
+	.long	1496754229
+	.long	3219290849
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	3219200695
+	.long	3451266538
+	.long	1015961163
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	3217882198
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	3217360179
+	.long	2616040238
+	.long	3219066585
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	3216923761
+	.long	2251697184
+	.long	3218737335
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	3216368839
+	.long	2476932470
+	.long	3218325650
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	3218768505
+	.long	3062633575
+	.long	3161492271
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	3216740037
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	3216062800
+	.long	3631919291
+	.long	3218420574
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	3215282929
+	.long	1509038701
+	.long	3218085291
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	3214559384
+	.long	3233018412
+	.long	3217396834
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	3218303496
+	.long	500078909
+	.long	1013805133
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	3215602695
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	3214738415
+	.long	3593250296
+	.long	3217717209
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	3213854947
+	.long	24583402
+	.long	3217207636
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	3212899404
+	.long	558065897
+	.long	3216433066
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	3217651189
+	.long	1497360404
+	.long	3157194195
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	3214229379
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	3213208931
+	.long	3693284251
+	.long	3216602456
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	3212147845
+	.long	3055842593
+	.long	3216062494
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	3211060113
+	.long	1046897440
+	.long	3215189513
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	3216586427
+	.long	1317599141
+	.long	3159915781
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1841940611
+	.long	1071931184
+	.long	1841940611
+	.long	1076125488
+	.long	0
+	.long	1131937792
+	.long	0
+	.long	1127743488
+	.long	1413758976
+	.long	1069097467
+	.long	1413742592
+	.long	1069097467
+	.long	1734819840
+	.long	3174229945
+	.long	1280049152
+	.long	1028033571
+	.long	923219018
+	.long	984130272
+	.long	57701189
+	.long	988383790
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	1734816687
+	.long	1026746297
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	0
+	.long	4294705152
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	0
+	.long	1130364928
+	.long	0
+	.long	0
+	.long	0
+	.long	1015021568
+	.long	0
+	.long	0
+	.long	0
+	.long	1017118720
+	.long	0
+	.long	0
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1076887552
+	.long	0
+	.long	1072693248
+	.type	static_const_table,@object
+	.size	static_const_table,5872
+	.data
+	.hidden __libm_tancot_huge
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/s_tanh.S b/libm/x86/s_tanh.S
new file mode 100644
index 0000000..737bcbb
--- /dev/null
+++ b/libm/x86/s_tanh.S
@@ -0,0 +1,1361 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
+//
+// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+// log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//         L2EH+L2EL (upper 26, lower 53 bits)
+//
+// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
+//                             f=0.b1 b2 ... b8, k integer
+// 2^{-f} is approximated as Tn[f]+Dn[f]
+// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
+//
+//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
+//                      for |x| in [23/64,3*2^7)
+// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
+//
+// For |x| in [2^{-4},2^5):
+//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
+//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
+//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
+//  1+T0+D0+p*(T0+D0)=KH+KL, where
+//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
+//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
+//  eps ~ (R*KH-1)+R*KL
+//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
+//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
+//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
+//    The result is formed as
+//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
+//                                                  set at the end
+//
+// For |x| in [2^{-64},2^{-4}):
+//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
+//
+// For |x|<2^{-64}:  x is returned
+//
+// For |x|>=2^32: return +/-1
+//
+// Special cases:
+//  tanh(NaN) = quiet NaN, and raise invalid exception
+//  tanh(INF) = that INF
+//  tanh(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  static_func
+        .text
+        .align __bionic_asm_align
+        .type static_func, @function
+static_func:
+..B1.1:
+        call      ..L2
+..L2:
+        popl      %eax
+        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
+        lea       static_const_table@GOTOFF(%eax), %eax
+        ret
+        .size   static_func,.-static_func
+# -- End  static_func
+
+# -- Begin  tanh
+ENTRY(tanh)
+# parameter 1: 8 + %ebp
+..B2.1:
+..B2.2:
+        pushl     %ebp
+        movl      %esp, %ebp
+        subl      $104, %esp
+        movl      %ebx, 40(%esp)
+        call      static_func
+        movl      %eax, %ebx
+        movsd     112(%esp), %xmm0
+        movsd     4256(%ebx), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     4112(%ebx), %xmm1
+        movsd     4120(%ebx), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     4096(%ebx), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16304, %ecx
+        cmpl      $144, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movapd    %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        movsd     4264(%ebx), %xmm4
+        subsd     %xmm6, %xmm3
+        xorpd     %xmm0, %xmm0
+        addsd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm7
+        movapd    4128(%ebx), %xmm6
+        addsd     %xmm7, %xmm2
+        movl      $255, %ecx
+        andl      %eax, %ecx
+        addl      %ecx, %ecx
+        movapd    (%ebx,%ecx,8), %xmm5
+        shrl      $4, %eax
+        andl      $65520, %eax
+        subl      $16368, %eax
+        negl      %eax
+        pinsrw    $3, %eax, %xmm0
+        movapd    4144(%ebx), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     %xmm5, %xmm0
+        movsd     4160(%ebx), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        movapd    %xmm4, %xmm5
+        addsd     %xmm0, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm7
+        mulpd     %xmm2, %xmm2
+        addpd     %xmm6, %xmm1
+        mulsd     %xmm2, %xmm2
+        movsd     4264(%ebx), %xmm3
+        mulpd     %xmm2, %xmm1
+        pshufd    $78, %xmm1, %xmm6
+        addsd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm6
+        addsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm1
+        andpd     4224(%ebx), %xmm4
+        divsd     %xmm1, %xmm5
+        subsd     %xmm4, %xmm3
+        pshufd    $238, %xmm0, %xmm1
+        addsd     %xmm0, %xmm3
+        movapd    %xmm4, %xmm2
+        addsd     %xmm1, %xmm3
+        mulsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm7
+        addsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm4
+        movsd     4240(%ebx), %xmm1
+        mulsd     %xmm0, %xmm6
+        andpd     4224(%ebx), %xmm4
+        addsd     %xmm6, %xmm3
+        movapd    %xmm4, %xmm6
+        subsd     %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        movsd     4264(%ebx), %xmm7
+        andpd     %xmm1, %xmm5
+        addsd     %xmm2, %xmm3
+        mulsd     %xmm5, %xmm4
+        xorpd     %xmm2, %xmm2
+        mulsd     %xmm5, %xmm3
+        subsd     4272(%ebx), %xmm6
+        subsd     %xmm7, %xmm4
+        xorl      $32768, %edx
+        pinsrw    $3, %edx, %xmm2
+        addsd     %xmm3, %xmm4
+        mulsd     %xmm5, %xmm6
+        movapd    %xmm3, %xmm1
+        mulsd     %xmm4, %xmm3
+        movapd    %xmm6, %xmm0
+        mulsd     %xmm4, %xmm6
+        subsd     %xmm3, %xmm1
+        subsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_0.0.2:
+        addl      $960, %ecx
+        cmpl      $1104, %ecx
+        jae       .L_2TAG_PACKET_2.0.2
+        movapd    4176(%ebx), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    4192(%ebx), %xmm3
+        mulpd     %xmm1, %xmm1
+        movapd    4208(%ebx), %xmm4
+        mulpd     %xmm1, %xmm2
+        pshufd    $68, %xmm1, %xmm5
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm5, %xmm5
+        mulpd     %xmm1, %xmm2
+        mulsd     %xmm5, %xmm5
+        addpd     %xmm4, %xmm2
+        mulpd     %xmm5, %xmm2
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        addl      $15344, %ecx
+        cmpl      $16448, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %eax
+        pinsrw    $3, %eax, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm2
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_4.0.2:
+        movapd    %xmm0, %xmm2
+        mulsd     %xmm2, %xmm2
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm2, %xmm2
+        movl      $15344, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        movapd    %xmm2, %xmm3
+        mulsd     %xmm2, %xmm2
+        addsd     %xmm3, %xmm2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm0, %xmm0
+        orl       $16368, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_5.0.2:
+        movapd    %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_6.0.2
+        addsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     %xmm0, 24(%esp)
+        fldl      24(%esp)
+.L_2TAG_PACKET_7.0.2:
+        movl      40(%esp), %ebx
+        movl      %ebp, %esp
+        popl      %ebp
+        ret       
+..B2.3:
+END(tanh)
+# -- End  tanh
+
+# Start file scope ASM
+ALIAS_SYMBOL(tanhl, tanh);
+# End file scope ASM
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	1797923801
+	.long	1072687577
+	.long	1950547427
+	.long	1013229059
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	915592468
+	.long	1072676282
+	.long	352947894
+	.long	3161024371
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	35929225
+	.long	1072665048
+	.long	2809788041
+	.long	3159436968
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	2038973688
+	.long	1072653874
+	.long	892941374
+	.long	1016046459
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	1222472308
+	.long	1072642761
+	.long	1054357470
+	.long	3161021018
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	481706282
+	.long	1072631708
+	.long	1696079173
+	.long	3162710528
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	2719515920
+	.long	1072620714
+	.long	2760332941
+	.long	1015137933
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2256325230
+	.long	1072609780
+	.long	580117746
+	.long	1015317295
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	2009970496
+	.long	1072598905
+	.long	2159039665
+	.long	3162572948
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	610758006
+	.long	1072588089
+	.long	1965209397
+	.long	3161866232
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	991358482
+	.long	1072577331
+	.long	838715019
+	.long	3163157668
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	1796832535
+	.long	1072566631
+	.long	3176955716
+	.long	3160585513
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	1679558232
+	.long	1072555989
+	.long	2390342287
+	.long	3163333970
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	3594158869
+	.long	1072545404
+	.long	2456521700
+	.long	3163256561
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	1912561781
+	.long	1072534877
+	.long	3147495102
+	.long	1015678253
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3898795731
+	.long	1072524406
+	.long	1249994144
+	.long	1011869818
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	3939148246
+	.long	1072513992
+	.long	3210352148
+	.long	1015274323
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	721996136
+	.long	1072503635
+	.long	563754734
+	.long	1015371318
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1532734324
+	.long	1072493333
+	.long	3094216535
+	.long	3163162857
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	778901109
+	.long	1072483087
+	.long	2248183955
+	.long	3161268751
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	1464976603
+	.long	1072472896
+	.long	3507292405
+	.long	3161977534
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	2307442995
+	.long	1072462760
+	.long	3190117721
+	.long	3162404539
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	2029714210
+	.long	1072452679
+	.long	613660079
+	.long	1015099143
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3657065772
+	.long	1072442652
+	.long	399025623
+	.long	3162957078
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1631695677
+	.long	1072432680
+	.long	2717633076
+	.long	3162344026
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	3287523847
+	.long	1072422761
+	.long	1625971539
+	.long	3157009955
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	3080351519
+	.long	1072412896
+	.long	3379126788
+	.long	3157218001
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4062661092
+	.long	1072403084
+	.long	1422616006
+	.long	3163255318
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	703710506
+	.long	1072393326
+	.long	1384660846
+	.long	1015195891
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	364333489
+	.long	1072383620
+	.long	3923737744
+	.long	3161421373
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	1822067026
+	.long	1072373966
+	.long	1241994956
+	.long	1015340290
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	3861050111
+	.long	1072364364
+	.long	254893773
+	.long	3162813180
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	977020788
+	.long	1072354815
+	.long	3065100517
+	.long	1015541563
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	557149882
+	.long	1072345317
+	.long	3672720709
+	.long	1014537265
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	1405169241
+	.long	1072335870
+	.long	2998539689
+	.long	3162830951
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2331271250
+	.long	1072326474
+	.long	812057446
+	.long	1012207446
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	2152073944
+	.long	1072317129
+	.long	1486860576
+	.long	3163203456
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	3985553595
+	.long	1072307834
+	.long	4002146062
+	.long	1015834136
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	2366108318
+	.long	1072298590
+	.long	2867985102
+	.long	3161762254
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	424392917
+	.long	1072289396
+	.long	2749202995
+	.long	3162838718
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1297350157
+	.long	1072280251
+	.long	1308022040
+	.long	3163412558
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	3833209506
+	.long	1072271155
+	.long	2722920684
+	.long	1013754842
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	2591453363
+	.long	1072262109
+	.long	2132396182
+	.long	3159074198
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	727685349
+	.long	1072253112
+	.long	2038246809
+	.long	3162358742
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	1403662306
+	.long	1072244163
+	.long	2788809599
+	.long	3161671007
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	3492293770
+	.long	1072235262
+	.long	2248032210
+	.long	1015386826
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	1577608921
+	.long	1072226410
+	.long	1875489510
+	.long	3162968394
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	3134592888
+	.long	1072217605
+	.long	4232266862
+	.long	1015991134
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	2759350287
+	.long	1072208848
+	.long	1148526634
+	.long	1015894933
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	3643909174
+	.long	1072200138
+	.long	3537586109
+	.long	1014354647
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	396319521
+	.long	1072191476
+	.long	4172420816
+	.long	3159074632
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	515457527
+	.long	1072182860
+	.long	836709333
+	.long	1015651226
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	2916157145
+	.long	1072174290
+	.long	219487565
+	.long	1015309367
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	2224145553
+	.long	1072165767
+	.long	3482522030
+	.long	3161489169
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	1660913392
+	.long	1072157290
+	.long	4218599604
+	.long	1015135707
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	158781403
+	.long	1072148859
+	.long	2221464712
+	.long	3163286453
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	950803702
+	.long	1072140473
+	.long	1655364926
+	.long	1015237032
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	2980802057
+	.long	1072132132
+	.long	378619896
+	.long	1015773303
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	903334909
+	.long	1072123837
+	.long	1636462108
+	.long	1015039997
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	2263535754
+	.long	1072115586
+	.long	752233586
+	.long	3162639008
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	1727278727
+	.long	1072107380
+	.long	3562710623
+	.long	1011471940
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	2555984613
+	.long	1072099218
+	.long	2652555442
+	.long	3162552692
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	3721688645
+	.long	1072091100
+	.long	3069276937
+	.long	1015839401
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	4201977662
+	.long	1072083026
+	.long	748330254
+	.long	1013594357
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	2979960120
+	.long	1072074996
+	.long	2599109725
+	.long	1014498493
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	3339203574
+	.long	1072067009
+	.long	1483497780
+	.long	3162408754
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	4273770423
+	.long	1072059065
+	.long	3383180809
+	.long	3163218901
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	488188413
+	.long	1072051165
+	.long	3199821029
+	.long	1015564048
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3872257780
+	.long	1072043306
+	.long	1253592103
+	.long	1015958334
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	551349105
+	.long	1072035491
+	.long	3821916050
+	.long	3162106589
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2425981843
+	.long	1072027717
+	.long	2830390851
+	.long	3163346599
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	4222122499
+	.long	1072019985
+	.long	1277378074
+	.long	3163256737
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	671025100
+	.long	1072012296
+	.long	3832014351
+	.long	3163022030
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	3689071823
+	.long	1072004647
+	.long	2321004996
+	.long	3162552716
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3723038930
+	.long	1071997040
+	.long	378465264
+	.long	3162569582
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	4109806887
+	.long	1071989474
+	.long	422403966
+	.long	1014469229
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	3896463087
+	.long	1071981949
+	.long	1139797873
+	.long	3161233805
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	2135241198
+	.long	1071974465
+	.long	1236747871
+	.long	1013589147
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2178460671
+	.long	1071967021
+	.long	777878098
+	.long	3162842493
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3088564500
+	.long	1071959617
+	.long	1762311517
+	.long	1015045673
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	3933059031
+	.long	1071952253
+	.long	2133366768
+	.long	3161531832
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3784486610
+	.long	1071944929
+	.long	1581883040
+	.long	3161698953
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	1720398391
+	.long	1071937645
+	.long	3980678963
+	.long	3163300080
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1118294578
+	.long	1071930400
+	.long	2197495694
+	.long	3159909401
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	1065662932
+	.long	1071923194
+	.long	2533670915
+	.long	1014530238
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	654919306
+	.long	1071916027
+	.long	3232961757
+	.long	3163047469
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	3278348324
+	.long	1071908898
+	.long	3069497416
+	.long	1014750712
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	3743175029
+	.long	1071901808
+	.long	2072812490
+	.long	3162175075
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	1156440435
+	.long	1071894757
+	.long	2351451249
+	.long	1013967056
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	3219942644
+	.long	1071887743
+	.long	3798990616
+	.long	1015368806
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	460407023
+	.long	1071880768
+	.long	4237175092
+	.long	3163138469
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	589198666
+	.long	1071873830
+	.long	2664346172
+	.long	3163157962
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	2732492859
+	.long	1071866929
+	.long	2691479646
+	.long	3162255684
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	1726216749
+	.long	1071860066
+	.long	2466808228
+	.long	3161676405
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	1000925746
+	.long	1071853240
+	.long	1018491672
+	.long	3163309544
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	3991843581
+	.long	1071846450
+	.long	4092853457
+	.long	1014585763
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	1253935211
+	.long	1071839698
+	.long	1395382931
+	.long	3159702613
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	526652809
+	.long	1071832982
+	.long	4223459736
+	.long	1015879375
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	964107055
+	.long	1071826302
+	.long	2800439588
+	.long	3162833221
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	1724976915
+	.long	1071819658
+	.long	420909223
+	.long	3163117379
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	1972484976
+	.long	1071813050
+	.long	675290301
+	.long	3161640050
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	874372905
+	.long	1071806478
+	.long	100263788
+	.long	1015940732
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1897844341
+	.long	1071799941
+	.long	1254300460
+	.long	1015275938
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	4219606026
+	.long	1071793439
+	.long	2434574742
+	.long	1014681548
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2725843665
+	.long	1071786973
+	.long	1433917087
+	.long	1014838523
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	897099801
+	.long	1071780542
+	.long	754756297
+	.long	1015241005
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	2218315341
+	.long	1071774145
+	.long	2694295388
+	.long	3163288868
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	1588871207
+	.long	1071767783
+	.long	143439582
+	.long	3162963416
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2502433899
+	.long	1071761455
+	.long	2148595913
+	.long	1015023991
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	4162030108
+	.long	1071755161
+	.long	2763428480
+	.long	1015529349
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	1480023343
+	.long	1071748902
+	.long	2247196168
+	.long	1015327453
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	2257959872
+	.long	1071742676
+	.long	3802946148
+	.long	1012964927
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	1416741826
+	.long	1071736484
+	.long	2196380210
+	.long	1011413563
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2471440686
+	.long	1071730325
+	.long	968836267
+	.long	3162214888
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	351405227
+	.long	1071724200
+	.long	3125337328
+	.long	3159822479
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	2875075254
+	.long	1071718107
+	.long	4144233330
+	.long	3163333716
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	685187902
+	.long	1071712048
+	.long	378731989
+	.long	1014843115
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	1608493509
+	.long	1071706021
+	.long	3159622171
+	.long	3162807737
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	590962156
+	.long	1071700027
+	.long	3829346666
+	.long	3163275597
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1172597893
+	.long	1071694065
+	.long	114433263
+	.long	1015347593
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	2602514713
+	.long	1071688135
+	.long	2268929336
+	.long	1014354284
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	4133881824
+	.long	1071682237
+	.long	2148155345
+	.long	3162931299
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	728934454
+	.long	1071676372
+	.long	1413842688
+	.long	1014178612
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	238821257
+	.long	1071670538
+	.long	1469694871
+	.long	3162884987
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	1928746161
+	.long	1071664735
+	.long	983617676
+	.long	1014285177
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	772914124
+	.long	1071658964
+	.long	4004372762
+	.long	1012230161
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	339411585
+	.long	1071653224
+	.long	264588982
+	.long	3161636657
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	4200250559
+	.long	1071647514
+	.long	2808127345
+	.long	3161781938
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.long	1610612736
+	.long	1082594631
+	.long	4166901572
+	.long	1055174155
+	.long	3884607281
+	.long	3168131199
+	.long	3607404735
+	.long	3190582024
+	.long	1874480759
+	.long	1032041131
+	.long	4286760334
+	.long	1053736893
+	.long	4277811695
+	.long	3211144770
+	.long	0
+	.long	0
+	.long	236289503
+	.long	1064135997
+	.long	463583772
+	.long	3215696314
+	.long	1441186365
+	.long	3212977891
+	.long	286331153
+	.long	1069617425
+	.long	2284589306
+	.long	1066820852
+	.long	1431655765
+	.long	3218429269
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.long	4294705152
+	.long	4294967295
+	.long	4294705152
+	.long	4294967295
+	.long	4160749568
+	.long	2147483647
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	1073741824
+	.type	static_const_table,@object
+	.size	static_const_table,4280
+	.data
+	.section .note.GNU-stack, ""
+# End
diff --git a/libm/x86/sqrt.S b/libm/x86/sqrt.S
new file mode 100644
index 0000000..c9d434d
--- /dev/null
+++ b/libm/x86/sqrt.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+	mov		%esp,%eax
+	and		$0xfffffff8,%eax
+	movsd	0x4(%esp),%xmm0
+	sqrtsd	%xmm0,%xmm0
+	movlpd	%xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(sqrt)
+
+ALIAS_SYMBOL(sqrtl, sqrt);
diff --git a/libm/x86/sqrtf.S b/libm/x86/sqrtf.S
new file mode 100644
index 0000000..78c183b
--- /dev/null
+++ b/libm/x86/sqrtf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+	movss  0x4(%esp),%xmm0
+	sqrtss %xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(sqrtf)
diff --git a/libm/x86/trunc.S b/libm/x86/trunc.S
new file mode 100644
index 0000000..da9d5fb
--- /dev/null
+++ b/libm/x86/trunc.S
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(trunc)
+	mov    %esp,%eax
+	and    $0xfffffff8,%eax
+	movsd  0x4(%esp),%xmm0
+	roundsd $0x3,%xmm0,%xmm0
+	movlpd %xmm0,-0x8(%eax)
+	fldl   -0x8(%eax)
+	ret
+END(trunc)
+
+ALIAS_SYMBOL(truncl, trunc);
diff --git a/libm/x86/truncf.S b/libm/x86/truncf.S
new file mode 100644
index 0000000..d3e3f4a
--- /dev/null
+++ b/libm/x86/truncf.S
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(truncf)
+	movss  0x4(%esp),%xmm0
+	roundss $0x3,%xmm0,%xmm0
+	movss  %xmm0,-0x4(%esp)
+	flds   -0x4(%esp)
+	ret
+END(truncf)
diff --git a/libm/x86_64/ceil.S b/libm/x86_64/ceil.S
new file mode 100644
index 0000000..d4492c4
--- /dev/null
+++ b/libm/x86_64/ceil.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceil)
+roundsd $0x2,%xmm0,%xmm0
+retq
+END(ceil)
diff --git a/libm/x86_64/ceilf.S b/libm/x86_64/ceilf.S
new file mode 100644
index 0000000..0e1ca95
--- /dev/null
+++ b/libm/x86_64/ceilf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(ceilf)
+roundss $0x2,%xmm0,%xmm0
+retq
+END(ceilf)
diff --git a/libm/x86_64/e_acos.S b/libm/x86_64/e_acos.S
new file mode 100644
index 0000000..d83c66b
--- /dev/null
+++ b/libm/x86_64/e_acos.S
@@ -0,0 +1,1957 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute acos(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//       asin(r) evaluated as a polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
+//              evaluate asin(s) as 13-degree polynomial
+//
+//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
+//  asin(q) is evaluated as 13-degree polynomial
+//      q^2=(1-|s|)/2 is obtained in advance
+//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
+//   acos(-|s|)=pi-acos(|s|)
+//       (The -PI constant, or 0, is added to the result. The sign is set at
+//        the end)
+//
+// Special cases:
+//  acos(NaN) = quiet NaN, and raise invalid exception
+//  acos(INF) = QNaN and raise invalid exception
+//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
+//  acos(1) = +0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  acos
+ENTRY(acos)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_acos.1:
+        subq      $24, %rsp
+..___tag_value_acos.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movsd     ABSVALMASK(%rip), %xmm4
+        movsd     ONEMASK(%rip), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     TMASK(%rip), %xmm2
+        movq      %xmm0, %xmm1
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movq      %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        lea       T_table(%rip), %r8
+        movsd     (%r8,%rdx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%r8,%rdx,4), %xmm4
+        movq      %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movq      %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm7
+        movsd     24+cv(%rip), %xmm0
+        movsd     8+cv(%rip), %xmm5
+        subsd     %xmm3, %xmm1
+        psrlq     $63, %xmm2
+        movq      %xmm1, %xmm3
+        psllq     $63, %xmm2
+        mulsd     %xmm1, %xmm1
+        pshufd    $68, %xmm2, %xmm2
+        movsd     16+cv(%rip), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm3, %xmm5
+        subpd     PI_BY_2(%rip), %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm0
+        subsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        subl      $955, %eax
+        cmpl      $65, %eax
+        jae       .L_2TAG_PACKET_1.0.2
+        psrlq     $38, %xmm7
+        psllq     $38, %xmm7
+        pmovmskb  %xmm0, %eax
+        andnpd    %xmm0, %xmm4
+        subsd     %xmm7, %xmm1
+        movq      %xmm7, %xmm6
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        orpd      %xmm4, %xmm5
+        subsd     %xmm7, %xmm3
+        mulsd     %xmm1, %xmm0
+        movq      %xmm3, %xmm4
+        subsd     %xmm0, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andl      $128, %eax
+        shrl      $7, %eax
+        negl      %eax
+        movq      %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        movd      %eax, %xmm3
+        pshufd    $0, %xmm3, %xmm3
+        subl      $65216, %edx
+        addl      %edx, %edx
+        lea       T_table(%rip), %r8
+        mulsd     (%r8,%rdx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        andpd     NEG_PI(%rip), %xmm3
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     8+cv(%rip), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     24+cv(%rip), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     16+cv(%rip), %xmm2
+        lea       Tbl_addr(%rip), %r8
+        addpd     (%r8,%rdx,8), %xmm3
+        movq      %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        movq      %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        addsd     %xmm3, %xmm4
+        subsd     %xmm4, %xmm3
+        addsd     %xmm3, %xmm5
+        addsd     %xmm5, %xmm0
+        addsd     %xmm4, %xmm0
+        xorpd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv2(%rip), %xmm6
+        unpcklpd  %xmm0, %xmm1
+        movapd    16+cv2(%rip), %xmm2
+        movapd    32+cv2(%rip), %xmm4
+        mulpd     %xmm0, %xmm0
+        movapd    PI_BY_2(%rip), %xmm5
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm0
+        movq      %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        addpd     %xmm2, %xmm6
+        mulpd     %xmm0, %xmm4
+        mulsd     %xmm3, %xmm1
+        addpd     %xmm4, %xmm6
+        pshufd    $238, %xmm5, %xmm0
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        subsd     %xmm7, %xmm0
+        pshufd    $238, %xmm1, %xmm2
+        subsd     %xmm1, %xmm5
+        subsd     %xmm0, %xmm6
+        subsd     %xmm2, %xmm5
+        subsd     %xmm6, %xmm7
+        subsd     %xmm7, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        subl      $15356, %eax
+        cmpl      $4, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        xorpd     %xmm6, %xmm6
+        andpd     ABSVALMASK(%rip), %xmm7
+        movsd     ONE_BY_2(%rip), %xmm4
+        movapd    cv2(%rip), %xmm1
+        mulsd     %xmm4, %xmm7
+        movapd    16+cv2(%rip), %xmm2
+        subsd     %xmm7, %xmm4
+        movapd    32+cv2(%rip), %xmm3
+        pshufd    $68, %xmm4, %xmm7
+        sqrtsd    %xmm4, %xmm4
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm7, %xmm5
+        pextrw    $3, %xmm0, %eax
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm1, %xmm2
+        movsd     HALFMASK(%rip), %xmm1
+        mulpd     %xmm7, %xmm3
+        cmpsd     $1, %xmm6, %xmm0
+        mulsd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm2
+        pshufd    $68, %xmm0, %xmm0
+        mulsd     %xmm7, %xmm2
+        andpd     NEG_PI(%rip), %xmm0
+        mulpd     %xmm5, %xmm2
+        andpd     %xmm4, %xmm1
+        pshufd    $68, %xmm4, %xmm3
+        subsd     %xmm1, %xmm4
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm4, %xmm3
+        subsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm4
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm4, %xmm5
+        divsd     %xmm3, %xmm5
+        addpd     %xmm3, %xmm3
+        mulpd     %xmm3, %xmm2
+        pshufd    $238, %xmm2, %xmm4
+        addsd     %xmm0, %xmm2
+        andl      $32768, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm0, %xmm0
+        addsd     %xmm4, %xmm2
+        addsd     %xmm5, %xmm2
+        addsd     %xmm3, %xmm2
+        addsd     %xmm2, %xmm0
+        xorpd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addl      $261884, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_4.0.2
+        movd      %xmm7, %ecx
+        psrlq     $32, %xmm7
+        movd      %xmm7, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_5.0.2
+        movsd     (%rsp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_5.0.2:
+        pextrw    $1, %xmm7, %edx
+        shrl      $15, %edx
+        negl      %edx
+        movd      %edx, %xmm7
+        pshufd    $0, %xmm7, %xmm7
+        movsd     PI(%rip), %xmm2
+        movsd     8+PI(%rip), %xmm0
+        andpd     %xmm7, %xmm2
+        andpd     %xmm7, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movsd     PI_BY_2(%rip), %xmm2
+        movsd     8+PI_BY_2(%rip), %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_7.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_8.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_acos.4:
+        ret       
+..___tag_value_acos.5:
+END(acos)
+# -- End  acos
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ABSVALMASK:
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.type	ABSVALMASK,@object
+	.size	ABSVALMASK,16
+	.align 16
+T_table:
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.type	T_table,@object
+	.size	T_table,2048
+	.align 16
+Tbl_addr:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,3840
+	.space 768, 0x00 	# pad
+	.align 16
+cv:
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	3217380693
+	.long	858993459
+	.long	3216192307
+	.long	3067833783
+	.long	3215383405
+	.type	cv,@object
+	.size	cv,32
+	.align 16
+PI_BY_2:
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	PI_BY_2,@object
+	.size	PI_BY_2,16
+	.align 16
+NEG_PI:
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.type	NEG_PI,@object
+	.size	NEG_PI,16
+	.align 16
+cv2:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.type	cv2,@object
+	.size	cv2,64
+	.align 16
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 16
+PI:
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.type	PI,@object
+	.size	PI,16
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TMASK:
+	.long	0
+	.long	4294950912
+	.type	TMASK,@object
+	.size	TMASK,8
+	.align 4
+ONE_BY_2:
+	.long	0
+	.long	1071644672
+	.type	ONE_BY_2,@object
+	.size	ONE_BY_2,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_acos.1-.
+	.4byte ..___tag_value_acos.5-..___tag_value_acos.1
+	.2byte 0x0400
+	.4byte ..___tag_value_acos.3-..___tag_value_acos.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_acos.4-..___tag_value_acos.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_asin.S b/libm/x86_64/e_asin.S
new file mode 100644
index 0000000..9f41c7c
--- /dev/null
+++ b/libm/x86_64/e_asin.S
@@ -0,0 +1,2036 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  To compute asin(s), separate schemes are used when s is in different
+//  intervals.
+//
+//  |s| in [2^{-4}, sqrt(3)/2):
+//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
+//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
+//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
+//       For the first degree term, r is evaluated as
+//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
+//       (sqrt(1-t^2) read from table)
+//  The main source of error is still R (may still be affected by up to 3 ulps
+//  of rounding error). The table size must be sufficiently large, to minimize
+//  this effect.
+//
+//  |s| in [sqrt(3)/2, 255/256):
+//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
+//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
+//       asin(r) evaluated as polynomial (same as above)
+//       The first degree term is evaluated as
+//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
+//
+//  |s|<2^{-4}: evaluate as 13-degree polynomial
+//
+//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
+//         use 17-degree polynomial, get error term
+//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
+//                 ( Q(1+eps)=sqrt(1-s^2) )
+//
+// Special cases:
+//  asin(NaN) = quiet NaN, and raise invalid exception
+//  asin(INF) = QNaN and raise invalid exception
+//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
+//  asin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  asin
+ENTRY(asin)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_asin.1:
+        subq      $24, %rsp
+..___tag_value_asin.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        stmxcsr   16(%rsp)
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        jne       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        movsd     ABSVALMASK(%rip), %xmm4
+        movsd     ONEMASK(%rip), %xmm3
+        xorpd     %xmm5, %xmm5
+        movsd     TMASK(%rip), %xmm2
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm0, %xmm1
+        psrlq     $44, %xmm0
+        movd      %xmm0, %edx
+        movq      %xmm1, %xmm7
+        movl      $8192, %ecx
+        pinsrw    $2, %ecx, %xmm5
+        movq      %xmm1, %xmm0
+        movl      $524287, %eax
+        andl      %edx, %eax
+        subl      $260864, %eax
+        cmpl      $955, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm1, %xmm1
+        andl      $65535, %edx
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        andpd     %xmm7, %xmm2
+        andl      $-4, %edx
+        subl      $64256, %edx
+        lea       T_table(%rip), %r8
+        movsd     (%r8,%rdx,2), %xmm1
+        orpd      %xmm5, %xmm2
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%r8,%rdx,4), %xmm4
+        movq      %xmm7, %xmm6
+        addsd     %xmm2, %xmm7
+        subsd     %xmm2, %xmm0
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm6
+        mulsd     %xmm2, %xmm3
+        movq      %xmm6, %xmm1
+        addsd     %xmm3, %xmm6
+        divsd     %xmm6, %xmm0
+        movsd     16+cv(%rip), %xmm7
+        movsd     cv(%rip), %xmm5
+        subsd     %xmm3, %xmm1
+        andpd     SIGNMASK(%rip), %xmm2
+        movq      %xmm1, %xmm3
+        mulsd     %xmm1, %xmm1
+        movsd     8+cv(%rip), %xmm6
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm1, %xmm7
+        mulsd     %xmm3, %xmm5
+        xorpd     %xmm2, %xmm4
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm6
+        mulsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm5
+        pshufd    $238, %xmm4, %xmm4
+        addsd     %xmm5, %xmm6
+        orpd      %xmm2, %xmm4
+        addsd     %xmm6, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_3.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        subl      $955, %eax
+        cmpl      $67, %eax
+        jae       .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     ABSVALMASK(%rip), %xmm0
+        andpd     HALFMASK2(%rip), %xmm7
+        movq      %xmm0, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        movq      %xmm7, %xmm6
+        subsd     %xmm7, %xmm1
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm6, %xmm0
+        subsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm0
+        movq      %xmm3, %xmm7
+        andpd     %xmm3, %xmm2
+        psllq     $2, %xmm3
+        pextrw    $3, %xmm3, %edx
+        orpd      %xmm5, %xmm2
+        subl      $65216, %edx
+        addl      %edx, %edx
+        lea       T_table(%rip), %r8
+        mulsd     (%r8,%rdx,4), %xmm7
+        mulsd     %xmm2, %xmm6
+        movapd    PI_BY_2(%rip), %xmm3
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm2, %xmm2
+        subsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm6
+        subsd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm7
+        movsd     cv(%rip), %xmm5
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm7
+        movsd     16+cv(%rip), %xmm0
+        divsd     %xmm7, %xmm4
+        movsd     8+cv(%rip), %xmm2
+        lea       Tbl_addr(%rip), %r8
+        subpd     (%r8,%rdx,8), %xmm3
+        movq      %xmm6, %xmm1
+        mulsd     %xmm6, %xmm6
+        andl      $524288, %eax
+        shrl      $4, %eax
+        mulsd     %xmm6, %xmm0
+        mulsd     %xmm6, %xmm1
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm6, %xmm1
+        addsd     %xmm2, %xmm0
+        pxor      %xmm6, %xmm6
+        mulsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm5
+        pinsrw    $3, %eax, %xmm6
+        addsd     %xmm5, %xmm0
+        movq      %xmm4, %xmm5
+        pshufd    $238, %xmm3, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm3
+        subsd     %xmm3, %xmm5
+        subsd     %xmm5, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_5.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm4
+        subsd     %xmm4, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        addl      $15291, %eax
+        cmpl      $14336, %eax
+        jae       .L_2TAG_PACKET_6.0.2
+        unpcklpd  %xmm7, %xmm7
+        movapd    cv2(%rip), %xmm1
+        movapd    %xmm7, %xmm6
+        movapd    16+cv2(%rip), %xmm2
+        movapd    32+cv2(%rip), %xmm4
+        mulpd     %xmm7, %xmm7
+        mulpd     %xmm7, %xmm6
+        mulpd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        movq      %xmm6, %xmm3
+        mulsd     %xmm6, %xmm6
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm6
+        addpd     %xmm4, %xmm1
+        mulpd     %xmm6, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        addsd     %xmm2, %xmm1
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_7.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_7.0.2:
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        subl      $15358, %eax
+        cmpl      $2, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        mulsd     %xmm1, %xmm1
+        subsd     %xmm1, %xmm3
+        sqrtsd    %xmm3, %xmm3
+        movl      %edx, %eax
+        andpd     HALFMASK(%rip), %xmm7
+        pshufd    $68, %xmm3, %xmm5
+        andpd     HALFMASK(%rip), %xmm3
+        movq      %xmm7, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        movq      %xmm7, %xmm6
+        subsd     %xmm7, %xmm0
+        mulsd     %xmm7, %xmm7
+        addsd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm1
+        subsd     %xmm7, %xmm4
+        movq      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm0, %xmm0
+        subsd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm6
+        addsd     %xmm5, %xmm5
+        subsd     %xmm3, %xmm4
+        movapd    cv2(%rip), %xmm2
+        pshufd    $238, %xmm5, %xmm3
+        subsd     %xmm0, %xmm4
+        addsd     %xmm6, %xmm5
+        pshufd    $238, %xmm3, %xmm7
+        addsd     %xmm3, %xmm3
+        mulsd     %xmm6, %xmm5
+        addsd     %xmm5, %xmm4
+        pshufd    $238, %xmm7, %xmm6
+        divsd     %xmm3, %xmm4
+        movapd    48+cv2(%rip), %xmm1
+        movapd    16+cv2(%rip), %xmm5
+        movapd    32+cv2(%rip), %xmm0
+        mulpd     %xmm7, %xmm7
+        movq      %xmm6, %xmm3
+        mulpd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm6
+        shrl      $4, %eax
+        andl      $32768, %eax
+        mulsd     %xmm7, %xmm1
+        mulpd     %xmm7, %xmm7
+        addpd     %xmm2, %xmm5
+        movapd    %xmm6, %xmm2
+        mulsd     %xmm6, %xmm6
+        mulpd     %xmm0, %xmm7
+        movapd    PI_BY_2(%rip), %xmm0
+        mulsd     %xmm6, %xmm2
+        addpd     %xmm5, %xmm7
+        pshufd    $238, %xmm1, %xmm5
+        mulsd     %xmm2, %xmm6
+        mulpd     %xmm2, %xmm7
+        addsd     %xmm5, %xmm1
+        xorpd     %xmm5, %xmm5
+        pshufd    $238, %xmm7, %xmm2
+        mulsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm2, %xmm7
+        movq      %xmm3, %xmm2
+        pinsrw    $3, %eax, %xmm5
+        subsd     %xmm6, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm6
+        addsd     %xmm4, %xmm7
+        subsd     %xmm6, %xmm2
+        subsd     %xmm7, %xmm0
+        subsd     %xmm2, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_9.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_9.0.2:
+        xorpd     %xmm5, %xmm0
+        xorpd     %xmm5, %xmm3
+        subsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        addl      $261886, %eax
+        cmpl      $261888, %eax
+        jb        .L_2TAG_PACKET_10.0.2
+        movd      %xmm0, %ecx
+        psrlq     $32, %xmm0
+        movd      %xmm0, %edx
+        andl      $2147483647, %edx
+        movl      $1072693248, %eax
+        subl      %edx, %eax
+        orl       %ecx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_11.0.2
+        movsd     (%rsp), %xmm2
+        movd      %xmm2, %edx
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $2147483647, %ecx
+        subl      $1, %edx
+        sbbl      $2146435072, %ecx
+        cmpl      $0, %ecx
+        jge       .L_2TAG_PACKET_10.0.2
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_11.0.2:
+        movsd     ABSVALMASK(%rip), %xmm1
+        movsd     PI_BY_2(%rip), %xmm2
+        movsd     8+PI_BY_2(%rip), %xmm0
+        addsd     %xmm2, %xmm0
+        andnpd    %xmm7, %xmm1
+        orpd      %xmm1, %xmm0
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_13.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_13.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_10.0.2:
+        movsd     (%rsp), %xmm0
+        xorpd     %xmm6, %xmm6
+        movq      %xmm0, %xmm7
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_14.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_14.0.2:
+        pextrw    $3, %xmm0, %edx
+        andl      $32752, %edx
+        subl      $16, %edx
+        cmpl      $32736, %edx
+        jb        .L_2TAG_PACKET_15.0.2
+        addsd     %xmm0, %xmm6
+        orpd      %xmm6, %xmm0
+        mulsd     %xmm0, %xmm7
+.L_2TAG_PACKET_15.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movl      %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_12.0.2:
+        movl      16(%rsp), %eax
+        andl      $-24577, %eax
+        cmpl      16(%rsp), %eax
+        je        .L_2TAG_PACKET_16.0.2
+        stmxcsr   20(%rsp)
+        movl      16(%rsp), %eax
+        andl      $24576, %eax
+        orl       %eax, 20(%rsp)
+        ldmxcsr   20(%rsp)
+.L_2TAG_PACKET_16.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_17.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_asin.4:
+        ret       
+..___tag_value_asin.5:
+END(asin)
+# -- End  asin
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ABSVALMASK:
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	0
+	.type	ABSVALMASK,@object
+	.size	ABSVALMASK,16
+	.align 16
+T_table:
+	.long	2642784509
+	.long	1072689083
+	.long	1514442531
+	.long	1072688953
+	.long	333108933
+	.long	1072688821
+	.long	3392112024
+	.long	1072688686
+	.long	2099852862
+	.long	1072688550
+	.long	749609004
+	.long	1072688412
+	.long	3634632596
+	.long	1072688271
+	.long	2163248461
+	.long	1072688129
+	.long	628657846
+	.long	1072687985
+	.long	3324036511
+	.long	1072687838
+	.long	1657632815
+	.long	1072687690
+	.long	4217538760
+	.long	1072687539
+	.long	2411951597
+	.long	1072687387
+	.long	533944872
+	.long	1072687233
+	.long	2876566508
+	.long	1072687076
+	.long	847936891
+	.long	1072686918
+	.long	3036019913
+	.long	1072686757
+	.long	848884575
+	.long	1072686595
+	.long	2874443326
+	.long	1072686430
+	.long	520713666
+	.long	1072686264
+	.long	2375556481
+	.long	1072686095
+	.long	4141904948
+	.long	1072685924
+	.long	1522666382
+	.long	1072685752
+	.long	3105624104
+	.long	1072685577
+	.long	298666327
+	.long	1072685401
+	.long	1689524500
+	.long	1072685222
+	.long	2981002200
+	.long	1072685041
+	.long	4170844284
+	.long	1072684858
+	.long	961802263
+	.long	1072684674
+	.long	1941503454
+	.long	1072684487
+	.long	2812647170
+	.long	1072684298
+	.long	3572873869
+	.long	1072684107
+	.long	4219797823
+	.long	1072683914
+	.long	456039788
+	.long	1072683720
+	.long	869096151
+	.long	1072683523
+	.long	1161535119
+	.long	1072683324
+	.long	1330865866
+	.long	1072683123
+	.long	1374571204
+	.long	1072682920
+	.long	1290107538
+	.long	1072682715
+	.long	1074904836
+	.long	1072682508
+	.long	726366587
+	.long	1072682299
+	.long	241869763
+	.long	1072682088
+	.long	3913732079
+	.long	1072681874
+	.long	3149342765
+	.long	1072681659
+	.long	2240966306
+	.long	1072681442
+	.long	1185873216
+	.long	1072681223
+	.long	4276274591
+	.long	1072681001
+	.long	2919452883
+	.long	1072680778
+	.long	1407565635
+	.long	1072680553
+	.long	4032743551
+	.long	1072680325
+	.long	2202188565
+	.long	1072680096
+	.long	207977577
+	.long	1072679865
+	.long	2342160518
+	.long	1072679631
+	.long	11858423
+	.long	1072679396
+	.long	1804034453
+	.long	1072679158
+	.long	3420722787
+	.long	1072678918
+	.long	563930456
+	.long	1072678677
+	.long	1820539192
+	.long	1072678433
+	.long	2892501606
+	.long	1072678187
+	.long	3776710320
+	.long	1072677939
+	.long	175063337
+	.long	1072677690
+	.long	674333171
+	.long	1072677438
+	.long	976363026
+	.long	1072677184
+	.long	1077935934
+	.long	1072676928
+	.long	1921075490
+	.long	1072676540
+	.long	881493302
+	.long	1072676016
+	.long	3275752439
+	.long	1072675483
+	.long	486855588
+	.long	1072674943
+	.long	1077229111
+	.long	1072674394
+	.long	723950308
+	.long	1072673837
+	.long	3693582199
+	.long	1072673271
+	.long	1367335316
+	.long	1072672698
+	.long	2305837020
+	.long	1072672116
+	.long	2184358641
+	.long	1072671526
+	.long	972682840
+	.long	1072670928
+	.long	2935101762
+	.long	1072670321
+	.long	3745513263
+	.long	1072669706
+	.long	3372320886
+	.long	1072669083
+	.long	1783464620
+	.long	1072668452
+	.long	3241386215
+	.long	1072667812
+	.long	3418125284
+	.long	1072667164
+	.long	2280219148
+	.long	1072666508
+	.long	4088700758
+	.long	1072665843
+	.long	219227400
+	.long	1072665171
+	.long	3521816918
+	.long	1072664489
+	.long	1076205279
+	.long	1072663800
+	.long	1436484616
+	.long	1072663102
+	.long	271362610
+	.long	1072662396
+	.long	1838996688
+	.long	1072661681
+	.long	1807122518
+	.long	1072660958
+	.long	137953542
+	.long	1072660227
+	.long	1088178584
+	.long	1072659487
+	.long	324057537
+	.long	1072658739
+	.long	2101288076
+	.long	1072657982
+	.long	2085133974
+	.long	1072657217
+	.long	235324451
+	.long	1072656444
+	.long	806051592
+	.long	1072655662
+	.long	3756033140
+	.long	1072654871
+	.long	453542543
+	.long	1072654073
+	.long	3741177327
+	.long	1072653265
+	.long	691216109
+	.long	1072652450
+	.long	4145223372
+	.long	1072651625
+	.long	1174439091
+	.long	1072650793
+	.long	324416139
+	.long	1072649952
+	.long	1550246310
+	.long	1072649102
+	.long	511524674
+	.long	1072648244
+	.long	1457248482
+	.long	1072647377
+	.long	45944955
+	.long	1072646502
+	.long	525537397
+	.long	1072645618
+	.long	2848440188
+	.long	1072644725
+	.long	2671555633
+	.long	1072643824
+	.long	4241172637
+	.long	1072642914
+	.long	3213094278
+	.long	1072641996
+	.long	3832503688
+	.long	1072641069
+	.long	1754091534
+	.long	1072640134
+	.long	1221921804
+	.long	1072639190
+	.long	2184526489
+	.long	1072638237
+	.long	294902089
+	.long	1072637276
+	.long	4090375270
+	.long	1072636305
+	.long	632860906
+	.long	1072635327
+	.long	2753498702
+	.long	1072634339
+	.long	1808009252
+	.long	1072633343
+	.long	2036428672
+	.long	1072632338
+	.long	3383235626
+	.long	1072631324
+	.long	1497347484
+	.long	1072630302
+	.long	617018317
+	.long	1072629271
+	.long	684933058
+	.long	1072628231
+	.long	1643170798
+	.long	1072627182
+	.long	3011066360
+	.long	1072625592
+	.long	957158713
+	.long	1072623442
+	.long	1390907941
+	.long	1072621256
+	.long	3819155270
+	.long	1072619034
+	.long	3443571196
+	.long	1072616777
+	.long	4045412458
+	.long	1072614484
+	.long	805503923
+	.long	1072612156
+	.long	1778922015
+	.long	1072609791
+	.long	2125033665
+	.long	1072607390
+	.long	1287203863
+	.long	1072604953
+	.long	2992629568
+	.long	1072602479
+	.long	2367267127
+	.long	1072599969
+	.long	3115526047
+	.long	1072597422
+	.long	340219539
+	.long	1072594839
+	.long	2017215719
+	.long	1072592218
+	.long	3225443424
+	.long	1072589560
+	.long	3326565673
+	.long	1072586865
+	.long	1669811211
+	.long	1072584133
+	.long	1886735022
+	.long	1072581363
+	.long	3301071171
+	.long	1072578555
+	.long	928514283
+	.long	1072575710
+	.long	2656364059
+	.long	1072572826
+	.long	3473490507
+	.long	1072569904
+	.long	2649965606
+	.long	1072566944
+	.long	3736819052
+	.long	1072563945
+	.long	1680885175
+	.long	1072560908
+	.long	4413771
+	.long	1072557832
+	.long	2214869753
+	.long	1072554716
+	.long	3214725184
+	.long	1072551561
+	.long	2186079903
+	.long	1072548367
+	.long	2590372131
+	.long	1072545133
+	.long	3578146079
+	.long	1072541859
+	.long	4283712755
+	.long	1072538545
+	.long	3824834510
+	.long	1072535191
+	.long	1302400298
+	.long	1072531797
+	.long	95058636
+	.long	1072528362
+	.long	3563906063
+	.long	1072524885
+	.long	2167230730
+	.long	1072521368
+	.long	3524918334
+	.long	1072517809
+	.long	2353304918
+	.long	1072514209
+	.long	1939625839
+	.long	1072510567
+	.long	1256714581
+	.long	1072506883
+	.long	3552525848
+	.long	1072503156
+	.long	3464809522
+	.long	1072499387
+	.long	4200542593
+	.long	1072495575
+	.long	355609124
+	.long	1072491721
+	.long	3684139099
+	.long	1072487822
+	.long	148355918
+	.long	1072483881
+	.long	1457689242
+	.long	1072479895
+	.long	2118591596
+	.long	1072475865
+	.long	908848089
+	.long	1072471791
+	.long	877032689
+	.long	1072467672
+	.long	752012304
+	.long	1072463508
+	.long	3532301749
+	.long	1072459298
+	.long	3600563221
+	.long	1072455043
+	.long	3902857084
+	.long	1072450742
+	.long	3063101036
+	.long	1072446395
+	.long	3972344374
+	.long	1072442001
+	.long	903183549
+	.long	1072437561
+	.long	983892938
+	.long	1072433073
+	.long	2722858568
+	.long	1072428537
+	.long	302790515
+	.long	1072423954
+	.long	759811057
+	.long	1072419322
+	.long	2507809922
+	.long	1072414641
+	.long	2388408813
+	.long	1072407528
+	.long	2084492942
+	.long	1072397870
+	.long	2435703301
+	.long	1072388010
+	.long	1935433360
+	.long	1072377945
+	.long	2742047290
+	.long	1072367671
+	.long	2053284205
+	.long	1072357185
+	.long	657783367
+	.long	1072346483
+	.long	2893664841
+	.long	1072335560
+	.long	3718906405
+	.long	1072324413
+	.long	1547896303
+	.long	1072313038
+	.long	2494058440
+	.long	1072301429
+	.long	3133238742
+	.long	1072289582
+	.long	3327000086
+	.long	1072277492
+	.long	1860667274
+	.long	1072265154
+	.long	665340747
+	.long	1072252562
+	.long	443347841
+	.long	1072239710
+	.long	581282618
+	.long	1072226592
+	.long	3349780465
+	.long	1072213201
+	.long	914217606
+	.long	1072199532
+	.long	989797661
+	.long	1072185576
+	.long	945436416
+	.long	1072171326
+	.long	549291300
+	.long	1072156774
+	.long	1814636389
+	.long	1072141911
+	.long	239092858
+	.long	1072126729
+	.long	1794680724
+	.long	1072111217
+	.long	1241534678
+	.long	1072095366
+	.long	3366566214
+	.long	1072079164
+	.long	1244090828
+	.long	1072062601
+	.long	1708448120
+	.long	1072045663
+	.long	3544260650
+	.long	1072028337
+	.long	1402741403
+	.long	1072010610
+	.long	2551936888
+	.long	1071992465
+	.long	617669739
+	.long	1071973887
+	.long	794002186
+	.long	1071954857
+	.long	2021237693
+	.long	1071935356
+	.long	540450384
+	.long	1071915364
+	.long	1920555537
+	.long	1071894857
+	.long	2879585206
+	.long	1071873811
+	.long	3000237455
+	.long	1071852199
+	.long	3352974346
+	.long	1071829991
+	.long	569629937
+	.long	1071807155
+	.long	2077237208
+	.long	1071783653
+	.long	2284891805
+	.long	1071759446
+	.long	1226651784
+	.long	1071734489
+	.long	1102047405
+	.long	1071708731
+	.long	2009896384
+	.long	1071682115
+	.long	927419082
+	.long	1071654577
+	.long	85010366
+	.long	1071607413
+	.long	696431025
+	.long	1071548180
+	.long	2611410541
+	.long	1071486585
+	.long	2612593658
+	.long	1071422396
+	.long	3548155306
+	.long	1071355336
+	.long	3887997484
+	.long	1071285073
+	.long	244854763
+	.long	1071211202
+	.long	4214445648
+	.long	1071133216
+	.long	2303966727
+	.long	1071050478
+	.long	3991040013
+	.long	1070962152
+	.long	3126952278
+	.long	1070867118
+	.long	1817448378
+	.long	1070763804
+	.long	1793814864
+	.long	1070649884
+	.long	3507224072
+	.long	1070447193
+	.long	4027609105
+	.long	1070148772
+	.long	577507993
+	.long	1069779414
+	.long	2310232419
+	.long	1068931829
+	.type	T_table,@object
+	.size	T_table,2048
+	.align 16
+Tbl_addr:
+	.long	3822952792
+	.long	1021639372
+	.long	182792448
+	.long	1068507836
+	.long	2264213271
+	.long	1019558908
+	.long	649052928
+	.long	1068524253
+	.long	1797139609
+	.long	1022295143
+	.long	1243095296
+	.long	1068540671
+	.long	1415938756
+	.long	1021439537
+	.long	2033294592
+	.long	1068557090
+	.long	2356809978
+	.long	1021777916
+	.long	3088063744
+	.long	1068573510
+	.long	2669055318
+	.long	1022124482
+	.long	180888576
+	.long	1068589932
+	.long	3566445325
+	.long	1021358712
+	.long	1970196992
+	.long	1068606354
+	.long	896980323
+	.long	1021319659
+	.long	4229555456
+	.long	1068622777
+	.long	436049712
+	.long	1021319758
+	.long	2732572160
+	.long	1068639202
+	.long	583123209
+	.long	1020797960
+	.long	1842831872
+	.long	1068655628
+	.long	1370449804
+	.long	1021429270
+	.long	1628994560
+	.long	1068672055
+	.long	2411391464
+	.long	1021057980
+	.long	2159763712
+	.long	1068688483
+	.long	1208692749
+	.long	1021943903
+	.long	3503886336
+	.long	1068704912
+	.long	538793309
+	.long	1019744063
+	.long	1435187200
+	.long	1068721343
+	.long	4085087612
+	.long	1020608419
+	.long	317469952
+	.long	1068737775
+	.long	144386942
+	.long	1021440732
+	.long	219617280
+	.long	1068754208
+	.long	2940088361
+	.long	1019981122
+	.long	1210558208
+	.long	1068770642
+	.long	2176850347
+	.long	1018373705
+	.long	3359268352
+	.long	1068787077
+	.long	2395611454
+	.long	1021889042
+	.long	2439803648
+	.long	1068803514
+	.long	1650705253
+	.long	1020227966
+	.long	2816203520
+	.long	1068819952
+	.long	3702166386
+	.long	1019379914
+	.long	262620672
+	.long	1068836392
+	.long	1855649370
+	.long	1020453124
+	.long	3438159616
+	.long	1068852832
+	.long	923063860
+	.long	1019273834
+	.long	3822105856
+	.long	1068869274
+	.long	4289947947
+	.long	1019434249
+	.long	1483729920
+	.long	1068885718
+	.long	787455814
+	.long	1020738379
+	.long	787321088
+	.long	1068902163
+	.long	3321653337
+	.long	1021842569
+	.long	1802253312
+	.long	1068918609
+	.long	2653633526
+	.long	1021821525
+	.long	302985984
+	.long	1068935057
+	.long	161272028
+	.long	1021655149
+	.long	653966080
+	.long	1068951506
+	.long	2566098667
+	.long	1020066219
+	.long	2924727296
+	.long	1068967956
+	.long	3646493722
+	.long	1014292285
+	.long	2889890304
+	.long	1068984408
+	.long	1081009196
+	.long	1022189620
+	.long	619098112
+	.long	1069000862
+	.long	4011643355
+	.long	1021773297
+	.long	477017600
+	.long	1069017317
+	.long	4030305534
+	.long	1021292252
+	.long	2533403904
+	.long	1069033773
+	.long	2645187591
+	.long	1019527099
+	.long	2563102208
+	.long	1069050231
+	.long	3857293792
+	.long	1022311697
+	.long	635982336
+	.long	1069066691
+	.long	3625936637
+	.long	1017511744
+	.long	1116940800
+	.long	1069083152
+	.long	3653872993
+	.long	1022016631
+	.long	4075964160
+	.long	1069099614
+	.long	2468900271
+	.long	1021769532
+	.long	993165568
+	.long	1069116079
+	.long	1358104224
+	.long	1021199776
+	.long	528586752
+	.long	1069132545
+	.long	2200950332
+	.long	1022024872
+	.long	2752395776
+	.long	1069149012
+	.long	3197072454
+	.long	1017751319
+	.long	3439855616
+	.long	1069165481
+	.long	1651081806
+	.long	1020809338
+	.long	2661257728
+	.long	1069181952
+	.long	539032752
+	.long	1021728805
+	.long	486957312
+	.long	1069198425
+	.long	3136045149
+	.long	1016888671
+	.long	1282340352
+	.long	1069214899
+	.long	2593963259
+	.long	1018956103
+	.long	822921728
+	.long	1069231375
+	.long	2146032737
+	.long	1022306465
+	.long	3474216192
+	.long	1069247852
+	.long	3976811625
+	.long	1021350207
+	.long	716902656
+	.long	1069264332
+	.long	718267222
+	.long	1018624727
+	.long	1211594496
+	.long	1069280813
+	.long	1485641389
+	.long	1018447451
+	.long	734070272
+	.long	1069297296
+	.long	354455128
+	.long	1021341291
+	.long	3650110720
+	.long	1069313780
+	.long	682185947
+	.long	1021651853
+	.long	1440663040
+	.long	1069330267
+	.long	3558574550
+	.long	1021615110
+	.long	2766612224
+	.long	1069346755
+	.long	874607978
+	.long	1017746872
+	.long	3404011008
+	.long	1069363245
+	.long	4154988502
+	.long	1021439906
+	.long	3423949056
+	.long	1069379737
+	.long	2263202309
+	.long	1021479615
+	.long	2897587712
+	.long	1069396231
+	.long	2562065031
+	.long	1022090363
+	.long	1896159232
+	.long	1069412727
+	.long	3836237663
+	.long	1019867288
+	.long	490968576
+	.long	1069429225
+	.long	3322056743
+	.long	1006752762
+	.long	3048360192
+	.long	1069445724
+	.long	1152314833
+	.long	1013122252
+	.long	1049850624
+	.long	1069462226
+	.long	3601590727
+	.long	1022214610
+	.long	3156899584
+	.long	1069478729
+	.long	1855169970
+	.long	1019487271
+	.long	851173376
+	.long	1069495235
+	.long	312649594
+	.long	1020868604
+	.long	2794281728
+	.long	1069511742
+	.long	1093490181
+	.long	1020777577
+	.long	468042496
+	.long	1069528252
+	.long	1152540679
+	.long	1021403732
+	.long	2534219264
+	.long	1069544763
+	.long	2292126035
+	.long	1021872430
+	.long	1376146432
+	.long	1069558527
+	.long	3293753641
+	.long	1020500454
+	.long	4175442432
+	.long	1069575044
+	.long	3626347564
+	.long	1021610969
+	.long	3523113472
+	.long	1069591566
+	.long	339956500
+	.long	1021119039
+	.long	4003350528
+	.long	1069608092
+	.long	3429333082
+	.long	1022813542
+	.long	1611067392
+	.long	1069624623
+	.long	2298017544
+	.long	1021977587
+	.long	931782144
+	.long	1069641158
+	.long	2164684743
+	.long	1021250988
+	.long	2256725504
+	.long	1069657697
+	.long	1138762335
+	.long	1021443776
+	.long	1582853120
+	.long	1069674241
+	.long	1084010382
+	.long	1022994693
+	.long	3497758720
+	.long	1069690789
+	.long	406366244
+	.long	1022713586
+	.long	3999816960
+	.long	1069707342
+	.long	1488723042
+	.long	1023381290
+	.long	3383096064
+	.long	1069723900
+	.long	2541558953
+	.long	1019137887
+	.long	1942403584
+	.long	1069740463
+	.long	1879620343
+	.long	1022653642
+	.long	4268263680
+	.long	1069757030
+	.long	3039077047
+	.long	1022252545
+	.long	2067062272
+	.long	1069773603
+	.long	4190670677
+	.long	1020725863
+	.long	4225828096
+	.long	1069790180
+	.long	1998567321
+	.long	1022014385
+	.long	2452507136
+	.long	1069806763
+	.long	1511628873
+	.long	1021900300
+	.long	1340746240
+	.long	1069823351
+	.long	788367341
+	.long	1022726208
+	.long	1190035456
+	.long	1069839944
+	.long	3856337230
+	.long	1021834118
+	.long	2300688384
+	.long	1069856542
+	.long	3211396579
+	.long	1022621365
+	.long	678886400
+	.long	1069873146
+	.long	4001011887
+	.long	1022042646
+	.long	921594112
+	.long	1069889755
+	.long	557811968
+	.long	1023065533
+	.long	3331668992
+	.long	1069906369
+	.long	1877060679
+	.long	1022419742
+	.long	3917875200
+	.long	1069922989
+	.long	1181055171
+	.long	1022752712
+	.long	2984829696
+	.long	1069939615
+	.long	4294526932
+	.long	1021499988
+	.long	838049024
+	.long	1069956247
+	.long	3658081878
+	.long	1022957952
+	.long	2078928384
+	.long	1069972884
+	.long	820353701
+	.long	1019391107
+	.long	2719854336
+	.long	1069989527
+	.long	1644022489
+	.long	1023378240
+	.long	3069117696
+	.long	1070006176
+	.long	2771393702
+	.long	1019319954
+	.long	3435962368
+	.long	1070022831
+	.long	3876394145
+	.long	1023024433
+	.long	4130595328
+	.long	1070039492
+	.long	1630447748
+	.long	1021465882
+	.long	1169236224
+	.long	1070056160
+	.long	2828355997
+	.long	1020458120
+	.long	3453997312
+	.long	1070072833
+	.long	164091641
+	.long	1020388279
+	.long	2708127744
+	.long	1070089513
+	.long	3036550223
+	.long	1023328684
+	.long	3540797696
+	.long	1070106199
+	.long	3710949463
+	.long	1022568805
+	.long	1972276736
+	.long	1070122892
+	.long	3885277950
+	.long	1019761674
+	.long	2613815552
+	.long	1070139591
+	.long	2764165077
+	.long	1022921023
+	.long	1487791616
+	.long	1070156297
+	.long	1330644769
+	.long	1023162679
+	.long	3207593472
+	.long	1070173009
+	.long	3911007221
+	.long	1022993496
+	.long	3797764608
+	.long	1070189728
+	.long	979712598
+	.long	1022554580
+	.long	3578920448
+	.long	1070206454
+	.long	2825738223
+	.long	1020223708
+	.long	2872795648
+	.long	1070223187
+	.long	392451124
+	.long	1022666279
+	.long	2002258432
+	.long	1070239927
+	.long	3730407632
+	.long	1023148291
+	.long	1291326464
+	.long	1070256674
+	.long	3723802980
+	.long	1022514089
+	.long	1065180928
+	.long	1070273428
+	.long	2635617463
+	.long	1022654470
+	.long	1650181632
+	.long	1070290189
+	.long	2061982883
+	.long	1022853411
+	.long	3373882880
+	.long	1070306957
+	.long	319732785
+	.long	1022017175
+	.long	2270081280
+	.long	1070323733
+	.long	2237757411
+	.long	1023064087
+	.long	2963732736
+	.long	1070340516
+	.long	468839165
+	.long	1023293774
+	.long	1491099904
+	.long	1070357307
+	.long	1502657946
+	.long	1021533479
+	.long	2479636480
+	.long	1070374105
+	.long	482913562
+	.long	1021986286
+	.long	1968133632
+	.long	1070390911
+	.long	3281474337
+	.long	1022646400
+	.long	291639040
+	.long	1070407725
+	.long	2453320259
+	.long	1022812423
+	.long	2081472512
+	.long	1070424546
+	.long	2939989570
+	.long	1023091888
+	.long	3380340480
+	.long	1070441375
+	.long	2850707499
+	.long	1021921109
+	.long	232287488
+	.long	1070458213
+	.long	3674625342
+	.long	1020725130
+	.long	1567614208
+	.long	1070475058
+	.long	9347334
+	.long	1022024009
+	.long	3433091072
+	.long	1070491911
+	.long	282524999
+	.long	1021433523
+	.long	1876877312
+	.long	1070508773
+	.long	3470449440
+	.long	1019309721
+	.long	1538472192
+	.long	1070525643
+	.long	2089486825
+	.long	1019698916
+	.long	2763830784
+	.long	1070542521
+	.long	443498115
+	.long	1020505194
+	.long	1605381632
+	.long	1070559408
+	.long	3018871601
+	.long	1022869913
+	.long	2706946048
+	.long	1070576303
+	.long	3936260892
+	.long	1023175875
+	.long	2123887360
+	.long	1070593207
+	.long	2994220655
+	.long	1022825948
+	.long	104015104
+	.long	1070603108
+	.long	335054493
+	.long	1023441853
+	.long	2904568832
+	.long	1070615800
+	.long	1451215633
+	.long	1023853857
+	.long	3456197120
+	.long	1070632739
+	.long	436334733
+	.long	1024026432
+	.long	252452352
+	.long	1070649697
+	.long	34596167
+	.long	1024031396
+	.long	3328018432
+	.long	1070666672
+	.long	2644547073
+	.long	1024296758
+	.long	1255829248
+	.long	1070683667
+	.long	552832586
+	.long	1023763122
+	.long	4097058560
+	.long	1070700680
+	.long	1955640623
+	.long	1021394654
+	.long	451770112
+	.long	1070717714
+	.long	3428903777
+	.long	1022941142
+	.long	408920832
+	.long	1070734767
+	.long	165503263
+	.long	1023894958
+	.long	1186960640
+	.long	1070751840
+	.long	435826450
+	.long	1024026134
+	.long	19078656
+	.long	1070768934
+	.long	1834169749
+	.long	1022899284
+	.long	2743490304
+	.long	1070786048
+	.long	494581074
+	.long	1018818479
+	.long	2328961024
+	.long	1070803184
+	.long	2987908834
+	.long	1022581110
+	.long	350011392
+	.long	1070820342
+	.long	240771184
+	.long	1024143083
+	.long	2692326912
+	.long	1070837521
+	.long	666056837
+	.long	1022394776
+	.long	2373274368
+	.long	1070854723
+	.long	2484337770
+	.long	1024228156
+	.long	1017131520
+	.long	1070871948
+	.long	3285648279
+	.long	1024025789
+	.long	265558272
+	.long	1070889196
+	.long	392241896
+	.long	1024252809
+	.long	1778008064
+	.long	1070906467
+	.long	1536107943
+	.long	1023949300
+	.long	2937184768
+	.long	1070923762
+	.long	3541062251
+	.long	1019448646
+	.long	1144442880
+	.long	1070941082
+	.long	3691683781
+	.long	1022123948
+	.long	2410165504
+	.long	1070958426
+	.long	1804181960
+	.long	1023945221
+	.long	4174350848
+	.long	1070975795
+	.long	2016094861
+	.long	1021716585
+	.long	3897012480
+	.long	1070993190
+	.long	175294410
+	.long	1023703404
+	.long	3353623040
+	.long	1071010611
+	.long	167973242
+	.long	1023240839
+	.long	45671168
+	.long	1071028059
+	.long	2166856113
+	.long	1021565413
+	.long	86063872
+	.long	1071045533
+	.long	2676254727
+	.long	1023985299
+	.long	1019772672
+	.long	1071063034
+	.long	989043593
+	.long	1021549587
+	.long	414297344
+	.long	1071080563
+	.long	3960972046
+	.long	1024307251
+	.long	155173120
+	.long	1071098120
+	.long	1830919291
+	.long	1021592251
+	.long	2151562240
+	.long	1071115705
+	.long	405408666
+	.long	1023423128
+	.long	4041854720
+	.long	1071133319
+	.long	2043497827
+	.long	1024411503
+	.long	3489224192
+	.long	1071150963
+	.long	3072215864
+	.long	1022698635
+	.long	2477196288
+	.long	1071168637
+	.long	1812195139
+	.long	1022689192
+	.long	3015298816
+	.long	1071186341
+	.long	764841969
+	.long	1021027331
+	.long	2844731136
+	.long	1071204076
+	.long	2878117321
+	.long	1019116513
+	.long	4028950528
+	.long	1071221842
+	.long	698911452
+	.long	1023265602
+	.long	69441536
+	.long	1071239641
+	.long	3253467847
+	.long	1020795075
+	.long	1676209920
+	.long	1071257471
+	.long	4272431167
+	.long	1022873982
+	.long	2408752384
+	.long	1071275334
+	.long	648519100
+	.long	1024385717
+	.long	151623680
+	.long	1071293231
+	.long	345257017
+	.long	1019561408
+	.long	1410154240
+	.long	1071311161
+	.long	197863993
+	.long	1023224207
+	.long	4131351552
+	.long	1071329125
+	.long	2620801789
+	.long	1024411169
+	.long	1999664384
+	.long	1071347125
+	.long	3952692616
+	.long	1024168086
+	.long	1617668864
+	.long	1071365160
+	.long	3019889809
+	.long	1021907692
+	.long	1032074240
+	.long	1071383231
+	.long	59469899
+	.long	1023656194
+	.long	2619492096
+	.long	1071401338
+	.long	1417526820
+	.long	1021457783
+	.long	202429440
+	.long	1071419483
+	.long	2927667935
+	.long	1019175447
+	.long	525044224
+	.long	1071437665
+	.long	38166811
+	.long	1023981879
+	.long	1779258880
+	.long	1071455885
+	.long	481252500
+	.long	1023310234
+	.long	2195673600
+	.long	1071474144
+	.long	3962395981
+	.long	1021339088
+	.long	44573696
+	.long	1071492443
+	.long	3936281395
+	.long	1023014829
+	.long	2226905344
+	.long	1071510781
+	.long	1515320476
+	.long	1024320623
+	.long	2800512512
+	.long	1071529160
+	.long	1225403697
+	.long	1021081846
+	.long	161113600
+	.long	1071547581
+	.long	3064809733
+	.long	1024173917
+	.long	1338410240
+	.long	1071566043
+	.long	2027604973
+	.long	1024362526
+	.long	522433280
+	.long	1071584548
+	.long	2055171723
+	.long	1023858825
+	.long	539595776
+	.long	1071603096
+	.long	3868820135
+	.long	1022936424
+	.long	4264017664
+	.long	1071621687
+	.long	3228065145
+	.long	1023479578
+	.long	1733924096
+	.long	1071640324
+	.long	3511934475
+	.long	1022496355
+	.long	108880384
+	.long	1071651839
+	.long	615880967
+	.long	1023519706
+	.long	3517856512
+	.long	1071661202
+	.long	3113108559
+	.long	1025190289
+	.long	4043153152
+	.long	1071670589
+	.long	1571836218
+	.long	1023106116
+	.long	3251299072
+	.long	1071680000
+	.long	3444076102
+	.long	1022187841
+	.long	2736921600
+	.long	1071689435
+	.long	272771483
+	.long	1025095280
+	.long	3897698560
+	.long	1071703633
+	.long	2075390188
+	.long	1022489022
+	.long	3209485056
+	.long	1071722652
+	.long	1438094065
+	.long	1021844944
+	.long	3781432064
+	.long	1071741774
+	.long	1675017145
+	.long	1024143828
+	.long	2684184064
+	.long	1071761003
+	.long	2259963753
+	.long	1024731393
+	.long	1840489728
+	.long	1071780342
+	.long	3372883597
+	.long	1023431408
+	.long	3764087808
+	.long	1071799794
+	.long	3307523102
+	.long	1024485788
+	.long	3006232320
+	.long	1071819364
+	.long	3088971966
+	.long	1025213251
+	.long	3374881280
+	.long	1071839055
+	.long	834437749
+	.long	1025236452
+	.long	797284864
+	.long	1071858872
+	.long	3122663941
+	.long	1025320473
+	.long	545765120
+	.long	1071878818
+	.long	826539625
+	.long	1022450955
+	.long	107562240
+	.long	1071898898
+	.long	339584600
+	.long	1022481255
+	.long	2123649024
+	.long	1071919116
+	.long	3912959833
+	.long	1024321009
+	.long	1562385664
+	.long	1071939478
+	.long	2846067230
+	.long	1023343981
+	.long	2963085824
+	.long	1071959988
+	.long	954548627
+	.long	1021475211
+	.long	3325550592
+	.long	1071980652
+	.long	3459651155
+	.long	1025305573
+	.long	775752448
+	.long	1072001476
+	.long	3582746667
+	.long	1023859460
+	.long	3238590720
+	.long	1072022464
+	.long	634636162
+	.long	1024472353
+	.long	2758801920
+	.long	1072043624
+	.long	3078216319
+	.long	1025304516
+	.long	1370319104
+	.long	1072064962
+	.long	2570569078
+	.long	1025099442
+	.long	2615805184
+	.long	1072086484
+	.long	3729933412
+	.long	1024605112
+	.long	3077336576
+	.long	1072108198
+	.long	1948916066
+	.long	1024781603
+	.long	1099528192
+	.long	1072130112
+	.long	3139143157
+	.long	1023729360
+	.long	1231903232
+	.long	1072152233
+	.long	1349513477
+	.long	1024737515
+	.long	1507504128
+	.long	1072174570
+	.long	3484516322
+	.long	1024000959
+	.long	2214659840
+	.long	1072197132
+	.long	2563820917
+	.long	1025225535
+	.long	1804739840
+	.long	1072219929
+	.long	760038746
+	.long	1024482855
+	.long	1413746688
+	.long	1072242971
+	.long	3401734714
+	.long	1025129838
+	.long	821409536
+	.long	1072266269
+	.long	3729772551
+	.long	1025484796
+	.long	3031825664
+	.long	1072289834
+	.long	122256749
+	.long	1024752594
+	.long	1710784256
+	.long	1072313680
+	.long	1518205483
+	.long	1024724809
+	.long	3025265152
+	.long	1072337819
+	.long	409951989
+	.long	1022835555
+	.long	287769088
+	.long	1072362267
+	.long	800355594
+	.long	1022484850
+	.long	198179840
+	.long	1072387038
+	.long	3502926213
+	.long	1024209373
+	.long	1909130496
+	.long	1072412149
+	.long	3064694319
+	.long	1025380823
+	.long	1941732096
+	.long	1072437619
+	.long	4112930390
+	.long	1024294679
+	.long	3492010496
+	.long	1072463467
+	.long	2684918107
+	.long	1023220233
+	.long	81959680
+	.long	1072489716
+	.long	220021366
+	.long	1020635131
+	.long	2297837056
+	.long	1072516387
+	.long	4027683826
+	.long	1021041185
+	.long	270404096
+	.long	1072543508
+	.long	2012766065
+	.long	1021780753
+	.long	3667376896
+	.long	1072571105
+	.long	2727981522
+	.long	1023009874
+	.long	330400256
+	.long	1072599212
+	.long	2940017003
+	.long	1025393439
+	.long	1119293952
+	.long	1072627861
+	.long	1608550416
+	.long	1022675612
+	.long	3536155904
+	.long	1072657091
+	.long	349665778
+	.long	1025156751
+	.long	3078046720
+	.long	1072686946
+	.long	2016159996
+	.long	1022193169
+	.long	455228416
+	.long	1072705361
+	.long	1908539328
+	.long	1026126332
+	.long	1871505664
+	.long	1072720988
+	.long	2784700894
+	.long	1025922277
+	.long	1630994432
+	.long	1072737010
+	.long	361107678
+	.long	1022887244
+	.long	2084558336
+	.long	1072753462
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,3840
+	.space 768, 0x00 	# pad
+	.align 16
+SIGNMASK:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.type	SIGNMASK,@object
+	.size	SIGNMASK,16
+	.align 16
+HALFMASK2:
+	.long	0
+	.long	2147483584
+	.long	0
+	.long	0
+	.type	HALFMASK2,@object
+	.size	HALFMASK2,16
+	.align 16
+PI_BY_2:
+	.long	856972295
+	.long	1016178214
+	.long	1413754136
+	.long	1073291771
+	.type	PI_BY_2,@object
+	.size	PI_BY_2,16
+	.align 16
+cv2:
+	.long	780903145
+	.long	1066854586
+	.long	858993459
+	.long	1068708659
+	.long	3340530119
+	.long	1067392113
+	.long	1431655765
+	.long	1069897045
+	.long	1321528399
+	.long	1066517740
+	.long	3067833783
+	.long	1067899757
+	.long	2021159460
+	.long	1065855096
+	.long	2576980378
+	.long	1066178969
+	.type	cv2,@object
+	.size	cv2,64
+	.align 16
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TMASK:
+	.long	0
+	.long	4294950912
+	.type	TMASK,@object
+	.size	TMASK,8
+	.align 4
+cv:
+	.long	1431655765
+	.long	1069897045
+	.long	858993459
+	.long	1068708659
+	.long	3067833783
+	.long	1067899757
+	.type	cv,@object
+	.size	cv,24
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_asin.1-.
+	.4byte ..___tag_value_asin.5-..___tag_value_asin.1
+	.2byte 0x0400
+	.4byte ..___tag_value_asin.3-..___tag_value_asin.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_asin.4-..___tag_value_asin.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_atan2.S b/libm/x86_64/e_atan2.S
new file mode 100644
index 0000000..f9baea9
--- /dev/null
+++ b/libm/x86_64/e_atan2.S
@@ -0,0 +1,1242 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//
+//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
+//   as follows.
+//                   /  sign(Y) atan(|Y/X|)                if X > 0
+//       atan2(Y,X) =
+//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
+//
+//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
+//   where PI and sgn can be determined by the four possible combinations of
+//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
+//   for atan(|Y/X|).
+//
+//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
+//   if X > 0, and sign(Y)*pi otherwise.
+//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
+//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
+//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
+//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
+//   calculated using the polynomial in 4 above.
+//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
+//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
+//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
+//
+//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
+//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
+//
+//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
+//   163 possible values. These values are calculated beforehand and stored
+//   in a table. The polynomial is the one used in 4.
+//
+// Special cases:
+//  atan2(+-0, +0) = +-0
+//  atan2(+-0, -0) = +-pi
+//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
+//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
+//  atan2(+-y, +INF) = +-0, for finite y > 0
+//  atan2(+-y, -INF) = +-pi, for finite y > 0
+//  atan2(+-INF, x) = +-pi/2, for finite x
+//  atan2(+-INF, +INF) = +-pi/4
+//  atan2(+-INF, -INF) = +-3*pi/4
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  atan2
+ENTRY(atan2)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_atan2.1:
+        subq      $24, %rsp
+..___tag_value_atan2.3:
+        movsd     %xmm0, (%rsp)
+        movsd     %xmm1, 8(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_0.0.2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        subl      $14448, %eax
+        cmpl      $3840, %eax
+        ja        .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        unpcklpd  %xmm1, %xmm0
+        xorpd     %xmm5, %xmm5
+        xorpd     %xmm3, %xmm3
+        movl      $2048, %eax
+        pinsrw    $3, %eax, %xmm5
+        paddw     %xmm1, %xmm5
+        psrlq     $29, %xmm5
+        rcpss     %xmm5, %xmm3
+        xorpd     %xmm4, %xmm4
+        movl      $14336, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        psllq     $29, %xmm3
+        paddw     %xmm4, %xmm3
+        mulsd     %xmm0, %xmm3
+        xorpd     %xmm2, %xmm2
+        xorpd     %xmm6, %xmm6
+        xorpd     %xmm7, %xmm7
+        movl      $32768, %eax
+        pinsrw    $2, %eax, %xmm6
+        movl      $32767, %ecx
+        pinsrw    $3, %ecx, %xmm7
+        paddd     %xmm6, %xmm3
+        andpd     %xmm7, %xmm3
+        movq      %xmm3, %xmm5
+        pextrw    $3, %xmm3, %eax
+        movl      $16448, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        minsd     %xmm2, %xmm3
+        movmskpd  %xmm0, %edx
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        cmpsd     $2, %xmm2, %xmm5
+        psllq     $1, %xmm1
+        psrlq     $1, %xmm1
+        movq      %xmm1, %xmm6
+        movq      %xmm1, %xmm7
+        movq      %xmm0, %xmm2
+        movl      $0, %ecx
+        pinsrw    $0, %ecx, %xmm6
+        subsd     %xmm6, %xmm7
+        movq      %xmm0, %xmm4
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        mulsd     %xmm3, %xmm7
+        andpd     %xmm5, %xmm0
+        subsd     %xmm6, %xmm0
+        andpd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm4
+        subsd     %xmm7, %xmm0
+        andl      $32752, %eax
+        subl      $16286, %eax
+        cmpl      $1121, %eax
+        ja        .L_2TAG_PACKET_3.0.2
+        divsd     %xmm4, %xmm0
+        pextrw    $3, %xmm3, %ecx
+        movsd     a2(%rip), %xmm2
+        movsd     b2(%rip), %xmm3
+        pextrw    $0, %xmm5, %eax
+        addl      %edx, %edx
+        lea       P_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm6
+        lea       SGN_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm1
+        subl      $16286, %ecx
+        notl      %eax
+        andl      $1, %eax
+        addl      %eax, %ecx
+        addl      %ecx, %ecx
+        lea       ATAN_TBL(%rip), %r8
+        movapd    (%r8,%rcx,8), %xmm5
+        xorpd     %xmm1, %xmm5
+        addpd     %xmm6, %xmm5
+        movq      %xmm5, %xmm6
+        unpckhpd  %xmm5, %xmm5
+        xorpd     %xmm0, %xmm1
+        movq      %xmm1, %xmm4
+        mulsd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm3
+        addsd     %xmm6, %xmm1
+        subsd     %xmm1, %xmm6
+        addsd     %xmm4, %xmm6
+        addsd     8+a2(%rip), %xmm2
+        mulsd     %xmm0, %xmm3
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     8+b2(%rip), %xmm3
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addl      $942, %eax
+        cmpl      $942, %eax
+        ja        .L_2TAG_PACKET_4.0.2
+        xorpd     %xmm4, %xmm4
+        movl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm4
+        divsd     %xmm1, %xmm4
+        addl      %edx, %edx
+        lea       SGN_TBL(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm6
+        unpcklpd  %xmm3, %xmm3
+        xorpd     %xmm6, %xmm0
+        xorpd     %xmm6, %xmm2
+        xorpd     %xmm6, %xmm3
+        lea       P_TBL2(%rip), %r8
+        movapd    (%r8,%rdx,8), %xmm7
+        movsd     a2(%rip), %xmm1
+        movsd     b2(%rip), %xmm5
+        lea       SELECT_B(%rip), %r8
+        andpd     (%r8,%rdx,8), %xmm3
+        mulsd     %xmm4, %xmm2
+        mulsd     %xmm4, %xmm0
+        movq      %xmm2, %xmm6
+        mulsd     %xmm2, %xmm2
+        mulsd     %xmm2, %xmm1
+        addsd     %xmm2, %xmm5
+        mulsd     %xmm2, %xmm6
+        addsd     8+a2(%rip), %xmm1
+        mulsd     %xmm2, %xmm5
+        addsd     %xmm0, %xmm7
+        addpd     %xmm3, %xmm7
+        mulsd     %xmm6, %xmm1
+        addsd     8+b2(%rip), %xmm5
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm5
+        pshufd    $238, %xmm7, %xmm0
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movsd     8(%rsp), %xmm1
+        movsd     (%rsp), %xmm0
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      %eax, %ecx
+        jg        .L_2TAG_PACKET_5.0.2
+        pextrw    $3, %xmm1, %ecx
+        cmpl      $32767, %ecx
+        jg        .L_2TAG_PACKET_6.0.2
+        divsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        andpd     SGNMASK(%rip), %xmm0
+        movsd     pi_table(%rip), %xmm2
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        andpd     SGNMASK(%rip), %xmm0
+        movsd     pi2_table(%rip), %xmm2
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+.L_2TAG_PACKET_1.0.2:
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_7.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_8.0.2
+        movsd     POW55(%rip), %xmm3
+        movl      $1024, %edx
+        movsd     INVEXPMASK(%rip), %xmm4
+        xorpd     %xmm6, %xmm6
+        movsd     EXPMASK(%rip), %xmm7
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_12.0.2:
+        addl      %ecx, %edx
+        subl      %eax, %edx
+        cmpl      $2048, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        addl      $15344, %edx
+        pinsrw    $3, %edx, %xmm6
+        andpd     %xmm4, %xmm0
+        andpd     %xmm4, %xmm1
+        orpd      %xmm6, %xmm0
+        orpd      %xmm7, %xmm1
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_9.0.2:
+        subl      $880, %edx
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_13.0.2
+        jmp       .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_11.0.2:
+        addl      $880, %edx
+        mulsd     %xmm3, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_7.0.2:
+        movd      %xmm0, %edx
+        movq      %xmm0, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        andl      $1048575, %ecx
+        orl       %edx, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_15.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $32752, %eax
+        jae       .L_2TAG_PACKET_16.0.2
+        movapd    pi2_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_15.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_16.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_17.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_18.0.2
+        movapd    pi4_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_17.0.2:
+        movq      %xmm1, %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_18.0.2:
+        movapd    pi4_table(%rip), %xmm5
+        movapd    pi2_table(%rip), %xmm6
+        addpd     %xmm6, %xmm5
+        pshufd    $238, %xmm5, %xmm6
+        addpd     %xmm6, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        movl      $-2147483648, %edx
+        andl      %ecx, %edx
+        andl      $1048575, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        jne       .L_2TAG_PACKET_17.0.2
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_19.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_19.0.2:
+        movapd    pi_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_13.0.2:
+        pextrw    $3, %xmm1, %edx
+        andl      $32768, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_20.0.2
+        movapd    pi_table(%rip), %xmm5
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        comisd    %xmm0, %xmm1
+        orpd      %xmm5, %xmm0
+        je        .L_2TAG_PACKET_21.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_20.0.2:
+        comisd    %xmm0, %xmm1
+        je        .L_2TAG_PACKET_21.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_14.0.2:
+        movapd    pi2_table(%rip), %xmm5
+        psrlq     $63, %xmm0
+        psllq     $63, %xmm0
+        pshufd    $238, %xmm5, %xmm4
+        addsd     %xmm4, %xmm5
+        orpd      %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_21.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_22.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_atan2.4:
+        ret       
+..___tag_value_atan2.5:
+END(atan2)
+# -- End  atan2
+	.section .rodata, "a"
+	.align 16
+	.align 16
+a2:
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.type	a2,@object
+	.size	a2,16
+	.align 16
+b2:
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	b2,@object
+	.size	b2,16
+	.align 16
+P_TBL:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	3221823995
+	.long	856972295
+	.long	3164710438
+	.type	P_TBL,@object
+	.size	P_TBL,64
+	.align 16
+SGN_TBL:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	SGN_TBL,@object
+	.size	SGN_TBL,64
+	.align 16
+ATAN_TBL:
+	.long	3390881280
+	.long	1067318733
+	.long	1411116779
+	.long	1018950063
+	.long	2985987840
+	.long	1067384211
+	.long	2088903695
+	.long	1018086027
+	.long	3148445184
+	.long	1067449685
+	.long	2044163806
+	.long	1017271335
+	.long	3667629184
+	.long	1067515494
+	.long	2353092775
+	.long	1019967309
+	.long	1546568832
+	.long	1067580954
+	.long	611991315
+	.long	1017602584
+	.long	3815996800
+	.long	1067646404
+	.long	466038598
+	.long	1019686426
+	.long	4050241920
+	.long	1067711845
+	.long	3265026328
+	.long	1019626952
+	.long	120454912
+	.long	1067777277
+	.long	1542207696
+	.long	1020155608
+	.long	2784639744
+	.long	1067842697
+	.long	3883834623
+	.long	1018602870
+	.long	1328010624
+	.long	1067908107
+	.long	1791097456
+	.long	1019053126
+	.long	2217794048
+	.long	1067973505
+	.long	551619938
+	.long	1018494194
+	.long	3333520000
+	.long	1068038891
+	.long	2390331823
+	.long	1019033022
+	.long	2557052032
+	.long	1068104265
+	.long	2423976108
+	.long	1019728674
+	.long	2067649536
+	.long	1068169626
+	.long	3757397745
+	.long	1018672362
+	.long	4047094784
+	.long	1068234973
+	.long	481613184
+	.long	1019275104
+	.long	2089853184
+	.long	1068300307
+	.long	1733914374
+	.long	1020124677
+	.long	2678003840
+	.long	1068365626
+	.long	1373600282
+	.long	1013935474
+	.long	3706496128
+	.long	1068430930
+	.long	1000610902
+	.long	1019673285
+	.long	3073179008
+	.long	1068496219
+	.long	1497143008
+	.long	1019900342
+	.long	2803716736
+	.long	1068562846
+	.long	1476677416
+	.long	1019444094
+	.long	3204984128
+	.long	1068628077
+	.long	1192335905
+	.long	1018748628
+	.long	831146624
+	.long	1068693273
+	.long	2733586224
+	.long	1018823295
+	.long	243029376
+	.long	1068758431
+	.long	950106081
+	.long	1019046675
+	.long	1735561920
+	.long	1068823549
+	.long	3546440856
+	.long	1020104712
+	.long	1339217792
+	.long	1068888626
+	.long	3028812387
+	.long	1019818321
+	.long	3706342144
+	.long	1068953659
+	.long	3814564029
+	.long	1017763871
+	.long	637726976
+	.long	1069018648
+	.long	3584007699
+	.long	1017976868
+	.long	1148779264
+	.long	1069083589
+	.long	2282532133
+	.long	1019483954
+	.long	1406131392
+	.long	1069148481
+	.long	1547359113
+	.long	1019786342
+	.long	1908875904
+	.long	1069213322
+	.long	1315508410
+	.long	1020009473
+	.long	3194947520
+	.long	1069278110
+	.long	3845393201
+	.long	1015803761
+	.long	1547487744
+	.long	1069342844
+	.long	3863107865
+	.long	1019810104
+	.long	1881061952
+	.long	1069407521
+	.long	4288343548
+	.long	1019687581
+	.long	563086336
+	.long	1069472140
+	.long	2582230241
+	.long	1020099350
+	.long	2594975552
+	.long	1069536698
+	.long	2306443764
+	.long	1019667244
+	.long	3438545024
+	.long	1069606573
+	.long	957455549
+	.long	1015587735
+	.long	4211357472
+	.long	1069670906
+	.long	2611778754
+	.long	1017877214
+	.long	3002835424
+	.long	1069735101
+	.long	235580458
+	.long	1020211685
+	.long	3905315424
+	.long	1069799150
+	.long	3630647617
+	.long	1018736849
+	.long	2849656576
+	.long	1069863047
+	.long	2412165062
+	.long	1019693004
+	.long	507429472
+	.long	1069926785
+	.long	1397750723
+	.long	1018412717
+	.long	2307470272
+	.long	1069990356
+	.long	1796470904
+	.long	1019796181
+	.long	1271814912
+	.long	1070053755
+	.long	189761565
+	.long	1016149115
+	.long	3800538144
+	.long	1070116974
+	.long	2524871582
+	.long	1018263353
+	.long	3916203552
+	.long	1070180008
+	.long	127848658
+	.long	1017672664
+	.long	457192032
+	.long	1070242851
+	.long	4020400938
+	.long	1019823010
+	.long	1385324704
+	.long	1070305495
+	.long	564511179
+	.long	1016079094
+	.long	2322869856
+	.long	1070367935
+	.long	2347103319
+	.long	1018927760
+	.long	3743438624
+	.long	1070430165
+	.long	877973862
+	.long	1019638162
+	.long	2392255552
+	.long	1070492180
+	.long	2432782267
+	.long	1018872629
+	.long	4180443328
+	.long	1070553973
+	.long	3102990015
+	.long	1020093101
+	.long	2547540832
+	.long	1070636485
+	.long	3877738253
+	.long	1017300424
+	.long	2735468912
+	.long	1070697461
+	.long	2446470256
+	.long	1019235378
+	.long	542633792
+	.long	1070757943
+	.long	583606328
+	.long	1018624131
+	.long	923265984
+	.long	1070817911
+	.long	1793926708
+	.long	1019714161
+	.long	918728448
+	.long	1070877348
+	.long	3726463586
+	.long	1019433296
+	.long	2572275008
+	.long	1070936237
+	.long	1845354238
+	.long	1019459238
+	.long	50974688
+	.long	1070994564
+	.long	983808064
+	.long	1016685418
+	.long	1105518320
+	.long	1071052313
+	.long	2357496692
+	.long	1015139882
+	.long	1264825328
+	.long	1071109472
+	.long	2244129354
+	.long	1019046344
+	.long	961157920
+	.long	1071166029
+	.long	3124185339
+	.long	1018541776
+	.long	1162701584
+	.long	1071221973
+	.long	1279780948
+	.long	1019268918
+	.long	3284935664
+	.long	1071277294
+	.long	2670033472
+	.long	1019833744
+	.long	497441888
+	.long	1071331985
+	.long	1032737410
+	.long	1019795212
+	.long	3377383904
+	.long	1071386036
+	.long	2356897182
+	.long	1020205553
+	.long	1126962000
+	.long	1071439443
+	.long	3723724586
+	.long	1015212418
+	.long	90291008
+	.long	1071492199
+	.long	4178672431
+	.long	1020186971
+	.long	190059536
+	.long	1071595741
+	.long	1763589807
+	.long	1019162163
+	.long	2497392840
+	.long	1071670654
+	.long	3036997041
+	.long	1020204325
+	.long	2616971944
+	.long	1071719773
+	.long	300151069
+	.long	1017041957
+	.long	2883518128
+	.long	1071767563
+	.long	2203981414
+	.long	1019190108
+	.long	1496354352
+	.long	1071814030
+	.long	332287966
+	.long	1016846435
+	.long	483276728
+	.long	1071859184
+	.long	653845024
+	.long	1018830914
+	.long	3097401072
+	.long	1071903039
+	.long	1514746408
+	.long	1019278972
+	.long	2737217248
+	.long	1071945615
+	.long	1358845067
+	.long	1017268275
+	.long	2072577560
+	.long	1071986933
+	.long	3041024735
+	.long	1019929672
+	.long	2266405656
+	.long	1072027017
+	.long	1271261130
+	.long	1012925070
+	.long	958652544
+	.long	1072065894
+	.long	2158017058
+	.long	1019955372
+	.long	3312993840
+	.long	1072103591
+	.long	765809169
+	.long	1019114443
+	.long	3177001304
+	.long	1072140139
+	.long	144180084
+	.long	1019822186
+	.long	3071642184
+	.long	1072175568
+	.long	4004602424
+	.long	1019420740
+	.long	4283953648
+	.long	1072209909
+	.long	1511950430
+	.long	1020176966
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.long	4073202944
+	.long	1072306725
+	.long	4068194804
+	.long	1019714860
+	.long	946117760
+	.long	1072366415
+	.long	694980733
+	.long	1020150135
+	.long	3980632032
+	.long	1072422512
+	.long	1313251280
+	.long	1019948709
+	.long	1468297112
+	.long	1072475260
+	.long	330111143
+	.long	1019809198
+	.long	3478063816
+	.long	1072524887
+	.long	2930067044
+	.long	1017784081
+	.long	1153979856
+	.long	1072571613
+	.long	2225786102
+	.long	1017634481
+	.long	2089828808
+	.long	1072615641
+	.long	474621367
+	.long	1017043414
+	.long	3531732632
+	.long	1072657163
+	.long	2276396220
+	.long	1018757240
+	.long	775214612
+	.long	1072694803
+	.long	3209744818
+	.long	1019963015
+	.long	662307284
+	.long	1072713319
+	.long	1381696763
+	.long	1019763781
+	.long	1192776652
+	.long	1072730830
+	.long	3017932994
+	.long	1015179769
+	.long	744202396
+	.long	1072747407
+	.long	2073854034
+	.long	1019512292
+	.long	8337908
+	.long	1072763115
+	.long	16004448
+	.long	1019599514
+	.long	3589868768
+	.long	1072778013
+	.long	1374369804
+	.long	1018019237
+	.long	121647320
+	.long	1072792159
+	.long	128481634
+	.long	1018115438
+	.long	2464923204
+	.long	1072805601
+	.long	1787331214
+	.long	1016798022
+	.long	4093304372
+	.long	1072830562
+	.long	3306868969
+	.long	1019384078
+	.long	1436891684
+	.long	1072853231
+	.long	676347266
+	.long	1017302183
+	.long	1104571840
+	.long	1072873890
+	.long	2870400285
+	.long	1019938149
+	.long	2037009832
+	.long	1072892781
+	.long	2956702105
+	.long	1016472908
+	.long	3139037960
+	.long	1072910111
+	.long	916057147
+	.long	1018364335
+	.long	1826698064
+	.long	1072926058
+	.long	2171961098
+	.long	1019669816
+	.long	1353941060
+	.long	1072940774
+	.long	1722928782
+	.long	1019926215
+	.long	1803191644
+	.long	1072954391
+	.long	1547878639
+	.long	1020259262
+	.long	1092591296
+	.long	1072967024
+	.long	3070107923
+	.long	1018320401
+	.long	2205372832
+	.long	1072978772
+	.long	787328196
+	.long	1014621351
+	.long	1291577100
+	.long	1072989723
+	.long	2964757301
+	.long	1020242528
+	.long	4234512804
+	.long	1072999952
+	.long	3136030038
+	.long	1017522144
+	.long	3248069132
+	.long	1073009528
+	.long	1506192355
+	.long	1018050472
+	.long	3932628500
+	.long	1073018509
+	.long	1045823554
+	.long	1019946655
+	.long	4195697848
+	.long	1073026948
+	.long	233443322
+	.long	1018917447
+	.long	2501811452
+	.long	1073034892
+	.long	901427976
+	.long	1017333852
+	.long	866379428
+	.long	1073049455
+	.long	2437443742
+	.long	1019678792
+	.long	1376865888
+	.long	1073062480
+	.long	3365790232
+	.long	1014547152
+	.long	3290094268
+	.long	1073074195
+	.long	3898947415
+	.long	1018683566
+	.long	354764884
+	.long	1073084787
+	.long	3854322404
+	.long	1019662058
+	.long	3332975496
+	.long	1073094406
+	.long	3171701655
+	.long	1017830922
+	.long	1141460088
+	.long	1073103181
+	.long	3946082701
+	.long	1020032019
+	.long	745761284
+	.long	1073111216
+	.long	1347210591
+	.long	1019106121
+	.long	1673304508
+	.long	1073118600
+	.long	1760606642
+	.long	1017324577
+	.long	983388240
+	.long	1073125409
+	.long	3740651204
+	.long	1019514104
+	.long	3895509100
+	.long	1073131706
+	.long	2409629983
+	.long	1020069322
+	.long	2128523668
+	.long	1073137548
+	.long	3045605368
+	.long	1018579174
+	.long	2075485692
+	.long	1073142981
+	.long	3720571789
+	.long	1017557436
+	.long	121855976
+	.long	1073148047
+	.long	2391744767
+	.long	1020160645
+	.long	4181733780
+	.long	1073152780
+	.long	995028816
+	.long	1019681295
+	.long	2887813280
+	.long	1073157214
+	.long	218733247
+	.long	1020003509
+	.long	2862180896
+	.long	1073161375
+	.long	2043806490
+	.long	1018602288
+	.long	3909375184
+	.long	1073168973
+	.long	1559903412
+	.long	1020103444
+	.long	3533966292
+	.long	1073175738
+	.long	734884149
+	.long	1018462962
+	.long	3815044608
+	.long	1073181799
+	.long	3630523428
+	.long	1017250093
+	.long	739639376
+	.long	1073187261
+	.long	4167476661
+	.long	1020008277
+	.long	1068309648
+	.long	1073192207
+	.long	2110061437
+	.long	1019295858
+	.long	2350566352
+	.long	1073196707
+	.long	582596516
+	.long	1018568821
+	.long	2529520024
+	.long	1073200819
+	.long	745552787
+	.long	1019053165
+	.long	1841667508
+	.long	1073204591
+	.long	3982568700
+	.long	1016503327
+	.long	2242261080
+	.long	1073208063
+	.long	3433582258
+	.long	1016196763
+	.long	715134328
+	.long	1073211270
+	.long	355901358
+	.long	1020087916
+	.long	2700735876
+	.long	1073214240
+	.long	3640957736
+	.long	1019780205
+	.long	141607580
+	.long	1073217000
+	.long	2488245051
+	.long	1020262395
+	.long	287934404
+	.long	1073219570
+	.long	2392691085
+	.long	1019883292
+	.long	2363373988
+	.long	1073221969
+	.long	4194561737
+	.long	1019237447
+	.long	3829340424
+	.long	1073224214
+	.long	429455526
+	.long	1019490975
+	.long	1988805928
+	.long	1073226320
+	.long	3029848706
+	.long	1018104889
+	.long	1647572320
+	.long	1073230161
+	.long	10289938
+	.long	1017394880
+	.long	3988000624
+	.long	1073233576
+	.long	1957559169
+	.long	1019434816
+	.long	4263843944
+	.long	1073236633
+	.long	204710264
+	.long	1019908761
+	.long	663197724
+	.long	1073239386
+	.long	1921757578
+	.long	1019778948
+	.long	3560800700
+	.long	1073241876
+	.long	3994348896
+	.long	1019230192
+	.long	2441785656
+	.long	1073244141
+	.long	871468611
+	.long	1014800505
+	.long	3277400272
+	.long	1073246209
+	.long	4092218139
+	.long	1020040842
+	.long	3951990120
+	.long	1073248105
+	.long	4276546478
+	.long	1019763677
+	.long	2737338540
+	.long	1073249850
+	.long	252776012
+	.long	1018794951
+	.long	1511361316
+	.long	1073251461
+	.long	3119653999
+	.long	1018514803
+	.long	3969162516
+	.long	1073252952
+	.long	1037069016
+	.long	1016792900
+	.long	413985240
+	.long	1073254338
+	.long	4110171432
+	.long	1020001345
+	.long	3681283576
+	.long	1073255627
+	.long	1463092818
+	.long	1020260354
+	.long	3146455488
+	.long	1073256831
+	.long	1031209123
+	.long	1016554799
+	.long	95214512
+	.long	1073257958
+	.long	1373808632
+	.long	1019493031
+	.long	4250240828
+	.long	1073259013
+	.long	3891047882
+	.long	1020108730
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	ATAN_TBL,@object
+	.size	ATAN_TBL,2624
+	.align 16
+P_TBL2:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	856972295
+	.long	1017226790
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	3164710438
+	.long	1413754136
+	.long	3221823995
+	.type	P_TBL2,@object
+	.size	P_TBL2,64
+	.align 16
+SELECT_B:
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.long	4294967295
+	.long	4294967295
+	.long	0
+	.long	0
+	.type	SELECT_B,@object
+	.size	SELECT_B,64
+	.align 16
+SGNMASK:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.type	SGNMASK,@object
+	.size	SGNMASK,16
+	.align 16
+pi_table:
+	.long	1413754136
+	.long	1074340347
+	.long	856972295
+	.long	1017226790
+	.type	pi_table,@object
+	.size	pi_table,16
+	.align 16
+pi2_table:
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	pi2_table,@object
+	.size	pi2_table,16
+	.align 16
+pi4_table:
+	.long	1413754136
+	.long	1072243195
+	.long	856972295
+	.long	1015129638
+	.type	pi4_table,@object
+	.size	pi4_table,16
+	.align 4
+POW55:
+	.long	0
+	.long	1130364928
+	.type	POW55,@object
+	.size	POW55,8
+	.align 4
+INVEXPMASK:
+	.long	4294967295
+	.long	2148532223
+	.type	INVEXPMASK,@object
+	.size	INVEXPMASK,8
+	.align 4
+EXPMASK:
+	.long	0
+	.long	1072693248
+	.type	EXPMASK,@object
+	.size	EXPMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_atan2.1-.
+	.4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
+	.2byte 0x0400
+	.4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_cosh.S b/libm/x86_64/e_cosh.S
new file mode 100644
index 0000000..8cdbca6
--- /dev/null
+++ b/libm/x86_64/e_cosh.S
@@ -0,0 +1,1372 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  cosh(x)=(exp(x)+exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [1/8,3*2^8)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
+//
+//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
+//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
+//
+//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
+//  (error bound for polynomial expansion is below 0.501 ulp)
+//
+// Special cases:
+//  cosh(NaN) = quiet NaN, and raise invalid exception
+//  cosh(INF) = that INF
+//  cosh(0)=1
+//  for finite argument, only cosh(0)=1 is exact
+//  For IEEE double
+//  cosh(x) overflows
+//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+
+# -- Begin  cosh
+ENTRY(cosh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cosh.1:
+        pushq     %rsi
+..___tag_value_cosh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        andl      $32767, %ecx
+        subl      $16320, %ecx
+        cmpl      $200, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    cv(%rip), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    16+cv(%rip), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    32+cv(%rip), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $184, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        lea       T2_neg_f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    48+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     64+cv(%rip), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movq      %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        addpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16320, %ecx
+        cmpl      $16320, %ecx
+        ja        .L_2TAG_PACKET_2.0.2
+        cmpl      $15952, %ecx
+        jae       .L_2TAG_PACKET_3.0.2
+        addsd     %xmm2, %xmm6
+        movq      ONEMASK(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     48+cv(%rip), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     64+cv(%rip), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_4.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        movapd    pv(%rip), %xmm1
+        mulpd     %xmm5, %xmm5
+        movapd    16+pv(%rip), %xmm2
+        xorpd     %xmm3, %xmm3
+        movq      %xmm5, %xmm0
+        mulpd     %xmm5, %xmm1
+        movsd     ONEMASK(%rip), %xmm6
+        mulpd     %xmm5, %xmm5
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm3
+        addpd     %xmm2, %xmm1
+        mulpd     %xmm5, %xmm1
+        pshufd    $238, %xmm1, %xmm2
+        mulsd     %xmm1, %xmm5
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm0
+        addsd     %xmm6, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        movq      %xmm0, (%rsp)
+..B1.3:
+        movq      (%rsp), %xmm0
+.L_2TAG_PACKET_6.0.2:
+..B1.5:
+        popq      %rcx
+..___tag_value_cosh.4:
+        ret       
+..___tag_value_cosh.5:
+END(cosh)
+# -- End  cosh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	3212193346
+	.type	cv,@object
+	.size	cv,80
+	.align 16
+T2f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.type	T2f,@object
+	.size	T2f,2048
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,2048
+	.align 16
+pv:
+	.long	3078135644
+	.long	1049787983
+	.long	381774870
+	.long	1062650220
+	.long	436314137
+	.long	1056571808
+	.long	1431655765
+	.long	1067799893
+	.type	pv,@object
+	.size	pv,32
+	.align 4
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cosh.1-.
+	.4byte ..___tag_value_cosh.5-..___tag_value_cosh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cosh.3-..___tag_value_cosh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_cosh.4-..___tag_value_cosh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_exp.S b/libm/x86_64/e_exp.S
new file mode 100644
index 0000000..6882dfc
--- /dev/null
+++ b/libm/x86_64/e_exp.S
@@ -0,0 +1,636 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//        x    x/log(2)     n
+//       e  = 2          = 2 * T[j] * (1 + P(y))
+//  where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//  To avoid problems with arithmetic overflow and underflow,
+//            n                        n1  n2
+//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//  where BIAS is a value of exponent bias.
+//
+// Special cases:
+//  exp(NaN) = NaN
+//  exp(+INF) = +INF
+//  exp(-INF) = 0
+//  exp(x) = 1 for subnormals
+//  for finite argument, only exp(0)=1 is exact
+//  For IEEE double
+//    if x >  709.782712893383973096 then exp(x) overflow
+//    if x < -745.133219101941108420 then exp(x) underflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  exp
+ENTRY(exp)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_exp.1:
+        subq      $24, %rsp
+..___tag_value_exp.3:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv(%rip), %xmm1
+        movapd    Shifter(%rip), %xmm6
+        movapd    16+cv(%rip), %xmm2
+        movapd    32+cv(%rip), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $15504, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    64+cv(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    80+cv(%rip), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        movdqa    mmask(%rip), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    bias(%rip), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        subpd     %xmm3, %xmm0
+        lea       Tbl_addr(%rip), %r8
+        movapd    (%rcx,%r8), %xmm2
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm6
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm6, %xmm6
+        mulpd     %xmm6, %xmm0
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm6, %xmm0
+        mulpd     48+cv(%rip), %xmm6
+        addsd     %xmm2, %xmm1
+        unpckhpd  %xmm2, %xmm2
+        mulpd     %xmm5, %xmm0
+        addsd     %xmm0, %xmm1
+        orpd      %xmm7, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        addsd     %xmm6, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        mulsd     %xmm2, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        xorpd     %xmm3, %xmm3
+        movapd    ALLONES(%rip), %xmm4
+        movl      $-1022, %edx
+        subl      %eax, %edx
+        movd      %edx, %xmm5
+        psllq     %xmm5, %xmm4
+        movl      %eax, %ecx
+        sarl      $1, %eax
+        pinsrw    $3, %eax, %xmm3
+        movapd    ebias(%rip), %xmm6
+        psllq     $4, %xmm3
+        psubd     %xmm3, %xmm2
+        mulsd     %xmm2, %xmm0
+        cmpl      $52, %edx
+        jg        .L_2TAG_PACKET_2.0.2
+        andpd     %xmm2, %xmm4
+        paddd     %xmm6, %xmm3
+        subsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        cmpl      $1023, %ecx
+        jge       .L_2TAG_PACKET_3.0.2
+        pextrw    $3, %xmm0, %ecx
+        andl      $32768, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+        movapd    %xmm0, %xmm6
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_5.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movq      %xmm6, %xmm0
+        pxor      %xmm4, %xmm6
+        psrad     $31, %xmm6
+        pshufd    $85, %xmm6, %xmm6
+        psllq     $1, %xmm0
+        psrlq     $1, %xmm0
+        pxor      %xmm6, %xmm0
+        psrlq     $63, %xmm6
+        paddq     %xmm6, %xmm0
+        paddq     %xmm4, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        addsd     %xmm4, %xmm0
+        mulsd     %xmm3, %xmm0
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jnb       .L_2TAG_PACKET_7.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        paddd     %xmm6, %xmm3
+        addpd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_8.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movl      12(%rsp), %eax
+        cmpl      $-2147483648, %eax
+        jae       .L_2TAG_PACKET_10.0.2
+        movsd     XMAX(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+.L_2TAG_PACKET_7.0.2:
+        movl      $14, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     XMIN(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $15, (%rsp)
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_9.0.2:
+        movl      8(%rsp), %edx
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_11.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_11.0.2
+        movl      12(%rsp), %eax
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_12.0.2
+        movsd     INF(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_12.0.2:
+        movsd     ZERO(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        movsd     8(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movl      12(%rsp), %eax
+        andl      $2147483647, %eax
+        cmpl      $1083179008, %eax
+        jae       .L_2TAG_PACKET_8.0.2
+        movsd     8(%rsp), %xmm0
+        addsd     ONE_val(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_13.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_exp.4:
+        ret       
+..___tag_value_exp.5:
+END(exp)
+# -- End  exp
+	.section .rodata, "a"
+	.align 16
+	.align 16
+cv:
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	4294967294
+	.long	1071644671
+	.long	4294967294
+	.long	1071644671
+	.long	3811088480
+	.long	1062650204
+	.long	1432067621
+	.long	1067799893
+	.long	3230715663
+	.long	1065423125
+	.long	1431604129
+	.long	1069897045
+	.type	cv,@object
+	.size	cv,96
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+mmask:
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.type	mmask,@object
+	.size	mmask,16
+	.align 16
+bias:
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.type	bias,@object
+	.size	bias,16
+	.align 16
+Tbl_addr:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	235107661
+	.long	1018002367
+	.long	1048019040
+	.long	11418
+	.long	896005651
+	.long	1015861842
+	.long	3541402996
+	.long	22960
+	.long	1642514529
+	.long	1012987726
+	.long	410360776
+	.long	34629
+	.long	1568897900
+	.long	1016568486
+	.long	1828292879
+	.long	46424
+	.long	1882168529
+	.long	1010744893
+	.long	852742562
+	.long	58348
+	.long	509852888
+	.long	1017336174
+	.long	3490863952
+	.long	70401
+	.long	653277307
+	.long	1017431380
+	.long	2930322911
+	.long	82586
+	.long	1649557430
+	.long	1017729363
+	.long	1014845818
+	.long	94904
+	.long	1058231231
+	.long	1015777676
+	.long	3949972341
+	.long	107355
+	.long	1044000607
+	.long	1016786167
+	.long	828946858
+	.long	119943
+	.long	1151779725
+	.long	1015705409
+	.long	2288159958
+	.long	132667
+	.long	3819481236
+	.long	1016499965
+	.long	1853186616
+	.long	145530
+	.long	2552227826
+	.long	1015039787
+	.long	1709341917
+	.long	158533
+	.long	1829350193
+	.long	1015216097
+	.long	4112506593
+	.long	171677
+	.long	1913391795
+	.long	1015756674
+	.long	2799960843
+	.long	184965
+	.long	1303423926
+	.long	1015238005
+	.long	171030293
+	.long	198398
+	.long	1574172746
+	.long	1016061241
+	.long	2992903935
+	.long	211976
+	.long	3424156969
+	.long	1017196428
+	.long	926591434
+	.long	225703
+	.long	1938513547
+	.long	1017631273
+	.long	887463926
+	.long	239579
+	.long	2804567149
+	.long	1015390024
+	.long	1276261410
+	.long	253606
+	.long	631083525
+	.long	1017690182
+	.long	569847337
+	.long	267786
+	.long	1623370770
+	.long	1011049453
+	.long	1617004845
+	.long	282120
+	.long	3667985273
+	.long	1013894369
+	.long	3049340112
+	.long	296610
+	.long	3145379760
+	.long	1014403278
+	.long	3577096743
+	.long	311258
+	.long	2603100681
+	.long	1017152460
+	.long	1990012070
+	.long	326066
+	.long	3249202951
+	.long	1017448880
+	.long	1453150081
+	.long	341035
+	.long	419288974
+	.long	1016280325
+	.long	917841882
+	.long	356167
+	.long	3793507337
+	.long	1016095713
+	.long	3712504873
+	.long	371463
+	.long	728023093
+	.long	1016345318
+	.long	363667784
+	.long	386927
+	.long	2582678538
+	.long	1017123460
+	.long	2956612996
+	.long	402558
+	.long	7592966
+	.long	1016721543
+	.long	2186617380
+	.long	418360
+	.long	228611441
+	.long	1016696141
+	.long	1719614412
+	.long	434334
+	.long	2261665670
+	.long	1017457593
+	.long	1013258798
+	.long	450482
+	.long	544148907
+	.long	1017323666
+	.long	3907805043
+	.long	466805
+	.long	2383914918
+	.long	1017143586
+	.long	1447192520
+	.long	483307
+	.long	1176412038
+	.long	1017267372
+	.long	1944781190
+	.long	499988
+	.long	2882956373
+	.long	1013312481
+	.long	919555682
+	.long	516851
+	.long	3154077648
+	.long	1016528543
+	.long	2571947538
+	.long	533897
+	.long	348651999
+	.long	1016405780
+	.long	2604962540
+	.long	551129
+	.long	3253791412
+	.long	1015920431
+	.long	1110089947
+	.long	568549
+	.long	1509121860
+	.long	1014756995
+	.long	2568320822
+	.long	586158
+	.long	2617649212
+	.long	1017340090
+	.long	2966275556
+	.long	603959
+	.long	553214634
+	.long	1016457425
+	.long	2682146383
+	.long	621954
+	.long	730975783
+	.long	1014083580
+	.long	2191782032
+	.long	640145
+	.long	1486499517
+	.long	1016818996
+	.long	2069751140
+	.long	658534
+	.long	2595788928
+	.long	1016407932
+	.long	2990417244
+	.long	677123
+	.long	1853053619
+	.long	1015310724
+	.long	1434058175
+	.long	695915
+	.long	2462790535
+	.long	1015814775
+	.long	2572866477
+	.long	714911
+	.long	3693944214
+	.long	1017259110
+	.long	3092190714
+	.long	734114
+	.long	2979333550
+	.long	1017188654
+	.long	4076559942
+	.long	753526
+	.long	174054861
+	.long	1014300631
+	.long	2420883922
+	.long	773150
+	.long	816778419
+	.long	1014197934
+	.long	3716502172
+	.long	792987
+	.long	3507050924
+	.long	1015341199
+	.long	777507147
+	.long	813041
+	.long	1821514088
+	.long	1013410604
+	.long	3706687593
+	.long	833312
+	.long	920623539
+	.long	1016295433
+	.long	1242007931
+	.long	853805
+	.long	2789017511
+	.long	1014276997
+	.long	3707479175
+	.long	874520
+	.long	3586233004
+	.long	1015962192
+	.long	64696965
+	.long	895462
+	.long	474650514
+	.long	1016642419
+	.long	863738718
+	.long	916631
+	.long	1614448851
+	.long	1014281732
+	.long	3884662774
+	.long	938030
+	.long	2450082086
+	.long	1016164135
+	.long	2728693977
+	.long	959663
+	.long	1101668360
+	.long	1015989180
+	.long	3999357479
+	.long	981531
+	.long	835814894
+	.long	1015702697
+	.long	1533953344
+	.long	1003638
+	.long	1301400989
+	.long	1014466875
+	.long	2174652632
+	.long	1025985
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,1024
+	.align 16
+ALLONES:
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.long	4294967295
+	.type	ALLONES,@object
+	.size	ALLONES,16
+	.align 16
+ebias:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	1072693248
+	.type	ebias,@object
+	.size	ebias,16
+	.align 4
+XMAX:
+	.long	4294967295
+	.long	2146435071
+	.type	XMAX,@object
+	.size	XMAX,8
+	.align 4
+XMIN:
+	.long	0
+	.long	1048576
+	.type	XMIN,@object
+	.size	XMIN,8
+	.align 4
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 4
+ZERO:
+	.long	0
+	.long	0
+	.type	ZERO,@object
+	.size	ZERO,8
+	.align 4
+ONE_val:
+	.long	0
+	.long	1072693248
+	.type	ONE_val,@object
+	.size	ONE_val,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_exp.1-.
+	.4byte ..___tag_value_exp.5-..___tag_value_exp.1
+	.2byte 0x0400
+	.4byte ..___tag_value_exp.3-..___tag_value_exp.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_exp.4-..___tag_value_exp.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_hypot.S b/libm/x86_64/e_hypot.S
new file mode 100644
index 0000000..089b2b4
--- /dev/null
+++ b/libm/x86_64/e_hypot.S
@@ -0,0 +1,210 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// X87 version:
+// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
+//
+// SSE version:
+// Swap x, y if |x|<|y|
+// For x=2^k*x, get y=y*2^(-k)
+// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
+//
+// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
+//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
+//
+// Result is 2^k*(S + Se),  where Se = S*e
+//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
+//
+// Return 2^k*(S+Se)
+//
+// For |y/x|<2^(-64), return x
+//
+// For cases where maximum biased exponent is either greater than 7fdh or
+// below 32, take a special path to check for special cases (0, NaN, Inf),
+// possible overflow, and more accurate computation for denormal results
+//
+// Special cases:
+//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
+//  hypot(x,+-0) is equivalent to fabs(x)
+//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
+//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
+//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  hypot
+ENTRY(hypot)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_hypot.1:
+..___tag_value_hypot.3:
+..B1.2:
+        subq      $64, %rsp
+        movapd    static_const_table(%rip), %xmm3
+        movsd     %xmm0, 48(%rsp)
+        movsd     %xmm1, 56(%rsp)
+        andpd     %xmm3, %xmm0
+        andpd     %xmm3, %xmm1
+        pextrw    $3, %xmm0, %eax
+        pextrw    $3, %xmm1, %edx
+        cmpl      $24528, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        cmpl      $24528, %edx
+        ja        .L_2TAG_PACKET_0.0.1
+.L_2TAG_PACKET_1.0.1:
+        fldl      48(%rsp)
+        fldl      56(%rsp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_0.0.1:
+        cmpl      $32752, %eax
+        movl      %eax, %ecx
+        jae       .L_2TAG_PACKET_3.0.1
+        subl      %edx, %ecx
+        cmpl      $32752, %edx
+        jae       .L_2TAG_PACKET_3.0.1
+        addl      $928, %ecx
+        addl      %edx, %eax
+        cmpl      $1856, %ecx
+        ja        .L_2TAG_PACKET_4.0.1
+        cmpl      $49056, %eax
+        jb        .L_2TAG_PACKET_1.0.1
+        fldl      48(%rsp)
+        fldl      56(%rsp)
+        fxch      %st(1)
+        fmul      %st(0), %st
+        fxch      %st(1)
+        nop       
+        fmul      %st(0), %st
+        faddp     %st, %st(1)
+        fsqrt     
+.L_2TAG_PACKET_5.0.1:
+        fstl      (%rsp)
+        fstpt     16(%rsp)
+        xorl      %eax, %eax
+        movw      24(%rsp), %ax
+        cmpl      $17407, %eax
+        jae       .L_2TAG_PACKET_6.0.1
+        fldl      (%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_4.0.1:
+        movsd     %xmm0, 32(%rsp)
+        movsd     %xmm1, 40(%rsp)
+        fldl      32(%rsp)
+        faddl     40(%rsp)
+        jmp       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_6.0.1:
+        fldl      (%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_3.0.1:
+        shufpd    $0, %xmm1, %xmm0
+        movdqa    %xmm0, %xmm2
+        movdqa    16+static_const_table(%rip), %xmm3
+        movsd     %xmm0, 32(%rsp)
+        movsd     %xmm1, 40(%rsp)
+        cmppd     $3, %xmm0, %xmm2
+        cmppd     $0, %xmm0, %xmm3
+        movmskpd  %xmm2, %edx
+        movmskpd  %xmm3, %rax
+        testl     %edx, %edx
+        je        .L_2TAG_PACKET_8.0.1
+        fldl      32(%rsp)
+        fmull     40(%rsp)
+        testq     $1, %rax
+        jne       .L_2TAG_PACKET_9.0.1
+        testq     $2, %rax
+        jne       .L_2TAG_PACKET_10.0.1
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_8.0.1:
+        fldl      32(%rsp)
+        faddl     40(%rsp)
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_9.0.1:
+        fstpl     40(%rsp)
+        fldl      32(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_10.0.1:
+        fstpl     32(%rsp)
+        fldl      40(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_2.0.1:
+.L_2TAG_PACKET_7.0.1:
+        fstpl     16(%rsp)
+        movq      16(%rsp), %xmm0
+        addq      $64, %rsp
+        ret       
+..B1.3:
+..___tag_value_hypot.4:
+END(hypot)
+# -- End  hypot
+	.section .rodata, "a"
+	.align 16
+	.align 16
+static_const_table:
+	.long	4294967295
+	.long	2147483647
+	.long	4294967295
+	.long	2147483647
+	.long	0
+	.long	2146435072
+	.long	0
+	.long	2146435072
+	.type	static_const_table,@object
+	.size	static_const_table,32
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x00000014
+	.4byte 0x0000001c
+	.4byte ..___tag_value_hypot.1-.
+	.4byte ..___tag_value_hypot.4-..___tag_value_hypot.1
+	.2byte 0x0400
+	.4byte ..___tag_value_hypot.3-..___tag_value_hypot.1
+	.2byte 0x100e
+# End
diff --git a/libm/x86_64/e_log.S b/libm/x86_64/e_log.S
new file mode 100644
index 0000000..40cb5e2
--- /dev/null
+++ b/libm/x86_64/e_log.S
@@ -0,0 +1,779 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log(NaN) = quiet NaN, and raise invalid exception
+//  log(+INF) = that INF
+//  log(0) = -INF with divide-by-zero exception raised
+//  log(1) = +0
+//  log(x) = NaN with invalid exception raised if x < -0, including -INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log
+ENTRY(log)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log.1:
+        subq      $24, %rsp
+..___tag_value_log.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      $0x3ff0000000000000, %rax
+        movd      %rax, %xmm2
+        movq      $0x77f0000000000000, %rdx
+        movd      %rdx, %xmm3
+        movl      $32768, %ecx
+        movd      %rcx, %xmm4
+        movq      $0xffffe00000000000, %r8
+        movd      %r8, %xmm5
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psrlq     $27, %xmm0
+        lea       L_tbl(%rip), %r11
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        paddd     %xmm4, %xmm0
+        orpd      %xmm3, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        mulpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    32+coeff(%rip), %xmm2
+        mulsd     %xmm7, %xmm6
+        movddup   %xmm1, %xmm5
+        mulsd     8+log2(%rip), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        mulpd     %xmm5, %xmm5
+        movddup   %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        pshufd    $238, %xmm0, %xmm2
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_3.0.2:
+        xorpd     %xmm1, %xmm1
+        addsd     %xmm0, %xmm1
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        psrlq     $27, %xmm0
+        movl      $18416, %ecx
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $3, 16(%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $2, 16(%rsp)
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_9.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log.4:
+        ret       
+..___tag_value_log.5:
+END(log)
+# -- End  log
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L_tbl:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.type	coeff,@object
+	.size	coeff,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log.1-.
+	.4byte ..___tag_value_log.5-..___tag_value_log.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log.3-..___tag_value_log.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log.4-..___tag_value_log.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_log10.S b/libm/x86_64/e_log10.S
new file mode 100644
index 0000000..4f43a36
--- /dev/null
+++ b/libm/x86_64/e_log10.S
@@ -0,0 +1,807 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpss instruction (B0)
+//    B = int((B0*LH*2^7+0.5))/2^7
+//    LH is a short approximation for log10(e)
+//
+//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
+//
+//    Result:  k*log10(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//  log10(0) = -INF with divide-by-zero exception raised                                           
+//  log10(1) = +0
+//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
+//  log10(+INF) = +INF
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log10
+ENTRY(log10)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log10.1:
+        subq      $24, %rsp
+..___tag_value_log10.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movl      $1054736384, %ecx
+        movd      %ecx, %xmm7
+        xorpd     %xmm3, %xmm3
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm3
+        movq      %xmm0, %xmm1
+        movl      $32768, %edx
+        movd      %edx, %xmm4
+        movapd    HIGHSIGMASK(%rip), %xmm5
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $16352, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG10_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        orpd      %xmm3, %xmm1
+        lea       L_tbl(%rip), %r11
+        andpd     %xmm1, %xmm5
+        paddd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm6, %xmm0
+        andl      $32752, %eax
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    -1504(%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm4
+        addsd     %xmm5, %xmm1
+        movapd    32+coeff(%rip), %xmm2
+        mulsd     %xmm7, %xmm6
+        pshufd    $68, %xmm1, %xmm5
+        mulsd     8+log2(%rip), %xmm7
+        mulsd     %xmm1, %xmm3
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm4
+        movq      8+LOG10_E(%rip), %xmm6
+        mulpd     %xmm5, %xmm5
+        addpd     %xmm2, %xmm4
+        mulpd     %xmm5, %xmm3
+        pshufd    $228, %xmm0, %xmm2
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm2
+        mulsd     %xmm1, %xmm6
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm0, %xmm2
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm6, %xmm1
+        addpd     %xmm3, %xmm4
+        addsd     %xmm7, %xmm1
+        mulpd     %xmm5, %xmm4
+        addsd     %xmm4, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_2.0.2
+        cmpl      $16, %eax
+        jb        .L_2TAG_PACKET_3.0.2
+.L_2TAG_PACKET_4.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        ja        .L_2TAG_PACKET_4.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_4.0.2
+        jmp       .L_2TAG_PACKET_6.0.2
+.L_2TAG_PACKET_3.0.2:
+        xorpd     %xmm1, %xmm1
+        addsd     %xmm0, %xmm1
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+        xorpd     %xmm1, %xmm1
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG10_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $78, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        movl      $9, 16(%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $8, 16(%rsp)
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 8(%rsp)
+..B1.3:
+        movq      8(%rsp), %xmm0
+.L_2TAG_PACKET_9.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log10.4:
+        ret       
+..___tag_value_log10.5:
+END(log10)
+# -- End  log10
+	.section .rodata, "a"
+	.align 16
+	.align 16
+HIGHSIGMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294959104
+	.type	HIGHSIGMASK,@object
+	.size	HIGHSIGMASK,16
+	.align 16
+LOG10_E:
+	.long	0
+	.long	1071366144
+	.long	3207479560
+	.long	1062894188
+	.type	LOG10_E,@object
+	.size	LOG10_E,16
+	.align 16
+L_tbl:
+	.long	1352628224
+	.long	1070810131
+	.long	521319256
+	.long	1025503025
+	.long	2150839296
+	.long	1070801944
+	.long	3329350096
+	.long	3170190015
+	.long	1360613376
+	.long	1070793794
+	.long	2024059075
+	.long	1024991594
+	.long	1875350528
+	.long	1070785680
+	.long	2163882141
+	.long	3163564137
+	.long	2312126464
+	.long	1070777602
+	.long	1975711076
+	.long	1023674196
+	.long	1306336256
+	.long	1070769560
+	.long	3524899523
+	.long	3170508164
+	.long	1806334976
+	.long	1070761553
+	.long	4254777025
+	.long	1025238739
+	.long	2483193856
+	.long	1070753581
+	.long	3800671317
+	.long	3172916830
+	.long	2025350144
+	.long	1070745644
+	.long	1731514745
+	.long	1025501083
+	.long	3433285632
+	.long	1070737741
+	.long	2551857336
+	.long	3169662186
+	.long	1134317568
+	.long	1070729873
+	.long	3426297655
+	.long	3172637891
+	.long	2457152512
+	.long	1070722038
+	.long	63549415
+	.long	1025415416
+	.long	1861803008
+	.long	1070714237
+	.long	1910171636
+	.long	1023977580
+	.long	2414140416
+	.long	1070706469
+	.long	4002514337
+	.long	3170841618
+	.long	2900726784
+	.long	1070698734
+	.long	3268064083
+	.long	1022459609
+	.long	2123517952
+	.long	1070691032
+	.long	1767031218
+	.long	1022448156
+	.long	3194569728
+	.long	1070683362
+	.long	3402332618
+	.long	3171671160
+	.long	650882048
+	.long	1070675725
+	.long	4146023905
+	.long	3171023038
+	.long	1928988672
+	.long	1070668119
+	.long	1438617867
+	.long	1016360491
+	.long	1594908672
+	.long	1070660545
+	.long	971389377
+	.long	1024763979
+	.long	2818746368
+	.long	1070653002
+	.long	3555925341
+	.long	3172434821
+	.long	194584576
+	.long	1070645491
+	.long	943919215
+	.long	3172950063
+	.long	1215096832
+	.long	1070638010
+	.long	2283358588
+	.long	1022335098
+	.long	501519360
+	.long	1070630560
+	.long	480904295
+	.long	1024437959
+	.long	1278266368
+	.long	1070623140
+	.long	2755806066
+	.long	3172342012
+	.long	2487812096
+	.long	1070615750
+	.long	2489653202
+	.long	3172481099
+	.long	3085451264
+	.long	1070608390
+	.long	3759184951
+	.long	3172574892
+	.long	2039090176
+	.long	1070601060
+	.long	1361176676
+	.long	3172355319
+	.long	953057280
+	.long	1070591423
+	.long	1176587546
+	.long	3166422018
+	.long	3370524672
+	.long	1070576879
+	.long	3669570051
+	.long	1025376630
+	.long	749742080
+	.long	1070562394
+	.long	707700964
+	.long	3170814058
+	.long	4008353792
+	.long	1070547965
+	.long	3247327652
+	.long	1022431400
+	.long	2612455424
+	.long	1070533594
+	.long	2453457344
+	.long	3172322969
+	.long	3230920704
+	.long	1070519279
+	.long	1296781801
+	.long	1025115335
+	.long	3965253632
+	.long	1070505020
+	.long	373075289
+	.long	1017938528
+	.long	2593157120
+	.long	1070476669
+	.long	1068054086
+	.long	1021616576
+	.long	925962240
+	.long	1070448537
+	.long	850121213
+	.long	1023928989
+	.long	1732556800
+	.long	1070420620
+	.long	1305206740
+	.long	3172665570
+	.long	3815630848
+	.long	1070392915
+	.long	192642943
+	.long	3172699907
+	.long	2001758208
+	.long	1070365420
+	.long	2820786683
+	.long	1024704867
+	.long	16746496
+	.long	1070338131
+	.long	1399573110
+	.long	3171372773
+	.long	1886492672
+	.long	1070311044
+	.long	3621428075
+	.long	3172974358
+	.long	3338196992
+	.long	1070284157
+	.long	3793882035
+	.long	1025124701
+	.long	381769728
+	.long	1070257468
+	.long	3877933342
+	.long	3170195490
+	.long	2186491904
+	.long	1070230972
+	.long	1838687089
+	.long	1017927292
+	.long	1008330752
+	.long	1070204668
+	.long	2228321664
+	.long	1025352196
+	.long	2247065600
+	.long	1070178552
+	.long	1413900906
+	.long	3170902532
+	.long	2964070400
+	.long	1070152622
+	.long	3590454629
+	.long	1025016844
+	.long	465154048
+	.long	1070126876
+	.long	2079688550
+	.long	3172268183
+	.long	883615744
+	.long	1070101310
+	.long	989244452
+	.long	3171900485
+	.long	1993768960
+	.long	1070075922
+	.long	1124327841
+	.long	3172964992
+	.long	1794471936
+	.long	1070050710
+	.long	1140575046
+	.long	1022673726
+	.long	2797932544
+	.long	1070025671
+	.long	1894836933
+	.long	3172544059
+	.long	3433797632
+	.long	1070000803
+	.long	3221831166
+	.long	3171921685
+	.long	2338371584
+	.long	1069976104
+	.long	3732461053
+	.long	3164513518
+	.long	2644013056
+	.long	1069951571
+	.long	2519460462
+	.long	3172548740
+	.long	3383814144
+	.long	1069927202
+	.long	2290997657
+	.long	1025499649
+	.long	3781380096
+	.long	1069902995
+	.long	380479405
+	.long	1025184136
+	.long	3245785088
+	.long	1069878948
+	.long	1096398261
+	.long	3169885192
+	.long	1366712320
+	.long	1069855059
+	.long	2218343715
+	.long	3170281628
+	.long	2204717056
+	.long	1069831325
+	.long	2668334011
+	.long	1025264524
+	.long	1401772032
+	.long	1069807745
+	.long	4103993159
+	.long	1022925721
+	.long	3356721152
+	.long	1069784316
+	.long	3573790772
+	.long	3172186527
+	.long	4041148416
+	.long	1069761037
+	.long	4027691910
+	.long	3171276990
+	.long	3880151040
+	.long	1069737906
+	.long	4087118786
+	.long	3172710734
+	.long	3453364224
+	.long	1069714921
+	.long	99014299
+	.long	3172003077
+	.long	3491092480
+	.long	1069692080
+	.long	3801836701
+	.long	3172989287
+	.long	575580160
+	.long	1069669382
+	.long	1920406012
+	.long	3170874125
+	.long	22282240
+	.long	1069646824
+	.long	964193370
+	.long	1019363159
+	.long	2991429632
+	.long	1069624404
+	.long	3372589890
+	.long	1023425053
+	.long	2189645824
+	.long	1069602122
+	.long	2610503872
+	.long	1023652442
+	.long	3341467648
+	.long	1069579975
+	.long	1190292004
+	.long	1022425665
+	.long	3711293440
+	.long	1069557962
+	.long	1104795356
+	.long	1023625829
+	.long	1380401152
+	.long	1069524644
+	.long	1156998217
+	.long	1025100499
+	.long	765710336
+	.long	1069481144
+	.long	1736649113
+	.long	1024999439
+	.long	849412096
+	.long	1069437902
+	.long	2618178330
+	.long	3170853629
+	.long	1433104384
+	.long	1069394915
+	.long	43477267
+	.long	3170378811
+	.long	2548596736
+	.long	1069352180
+	.long	3967367063
+	.long	1025246584
+	.long	157577216
+	.long	1069309695
+	.long	100402533
+	.long	3172825502
+	.long	3326238720
+	.long	1069267455
+	.long	1176892909
+	.long	1025464099
+	.long	4155494400
+	.long	1069225459
+	.long	3713707617
+	.long	3172630046
+	.long	3545804800
+	.long	1069183704
+	.long	857007315
+	.long	1024965777
+	.long	2602520576
+	.long	1069142187
+	.long	2588758347
+	.long	1022463131
+	.long	2631196672
+	.long	1069100905
+	.long	2118424235
+	.long	1022490989
+	.long	838135808
+	.long	1069059856
+	.long	4117002727
+	.long	1024874520
+	.long	3210903552
+	.long	1069019036
+	.long	650070125
+	.long	3172012966
+	.long	3039211520
+	.long	1068978444
+	.long	438055812
+	.long	1017743757
+	.long	2385633280
+	.long	1068938077
+	.long	3011990369
+	.long	3171312044
+	.long	3491618816
+	.long	1068897932
+	.long	712813818
+	.long	3172720400
+	.long	183644160
+	.long	1068858008
+	.long	4287006742
+	.long	1022379728
+	.long	3639214080
+	.long	1068818300
+	.long	353762279
+	.long	3172980009
+	.long	3728416768
+	.long	1068778808
+	.long	1851367730
+	.long	1025486574
+	.long	3370094592
+	.long	1068739529
+	.long	4046594913
+	.long	3172567047
+	.long	1348407296
+	.long	1068700461
+	.long	143189675
+	.long	1025397632
+	.long	899403776
+	.long	1068661601
+	.long	3753687842
+	.long	3170772772
+	.long	1117708288
+	.long	1068622947
+	.long	1857340812
+	.long	3170782678
+	.long	1248276480
+	.long	1068584497
+	.long	1289858203
+	.long	1025222289
+	.long	683237376
+	.long	1068546249
+	.long	2356679608
+	.long	3171629170
+	.long	3253764096
+	.long	1068508200
+	.long	3267136556
+	.long	1018554987
+	.long	94478336
+	.long	1068441756
+	.long	1927868814
+	.long	3169378180
+	.long	3233144832
+	.long	1068366445
+	.long	2682188854
+	.long	1023964004
+	.long	2940297216
+	.long	1068291522
+	.long	275301289
+	.long	1023944679
+	.long	3677708288
+	.long	1068216982
+	.long	302658771
+	.long	1024465567
+	.long	1576968192
+	.long	1068142822
+	.long	3672035940
+	.long	3172254610
+	.long	1614069760
+	.long	1068069037
+	.long	480052905
+	.long	3172692062
+	.long	424435712
+	.long	1067995624
+	.long	2207869657
+	.long	3170965436
+	.long	3477782528
+	.long	1067922578
+	.long	2980661858
+	.long	3164990018
+	.long	3598401536
+	.long	1067849897
+	.long	1974393034
+	.long	3171357083
+	.long	2435235840
+	.long	1067777577
+	.long	1385289011
+	.long	1024615823
+	.long	1867333632
+	.long	1067705614
+	.long	3442236633
+	.long	1025334384
+	.long	3999301632
+	.long	1067634004
+	.long	3506472073
+	.long	1025132546
+	.long	2566971392
+	.long	1067562745
+	.long	1425757592
+	.long	3172358463
+	.long	112943104
+	.long	1067491833
+	.long	1693407156
+	.long	3172426603
+	.long	3079929856
+	.long	1067392159
+	.long	3999942455
+	.long	1018549369
+	.long	2443837440
+	.long	1067251701
+	.long	974534460
+	.long	1023963412
+	.long	359366656
+	.long	1067111917
+	.long	2204915018
+	.long	1013514416
+	.long	3564519424
+	.long	1066972799
+	.long	3977441659
+	.long	3170879860
+	.long	2011086848
+	.long	1066834343
+	.long	590145514
+	.long	1025390011
+	.long	3216982016
+	.long	1066696541
+	.long	3629120110
+	.long	1024330313
+	.long	2194128896
+	.long	1066559388
+	.long	2367098512
+	.long	3172260338
+	.long	2916220928
+	.long	1066422877
+	.long	2262431886
+	.long	1021229446
+	.long	2263941120
+	.long	1066172214
+	.long	3118507287
+	.long	1021484970
+	.long	3076292608
+	.long	1065901726
+	.long	1411737803
+	.long	3172957147
+	.long	1186136064
+	.long	1065632488
+	.long	3109349337
+	.long	1025397383
+	.long	3085303808
+	.long	1065364487
+	.long	584715031
+	.long	3172596519
+	.long	1821048832
+	.long	1064842211
+	.long	2182246895
+	.long	3172536214
+	.long	697368576
+	.long	1064311094
+	.long	3157561765
+	.long	3172716357
+	.long	894042112
+	.long	1063260131
+	.long	3237958154
+	.long	3172587292
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	1352628224
+	.long	1066615827
+	.long	521319256
+	.long	1021308721
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	3248877870
+	.long	1077250164
+	.long	1691676429
+	.long	3221787401
+	.long	945132465
+	.long	3223701783
+	.long	3700831335
+	.long	1073506818
+	.long	2141010593
+	.long	1075227551
+	.long	3698831637
+	.long	3220339442
+	.type	coeff,@object
+	.size	coeff,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log10.1-.
+	.4byte ..___tag_value_log10.5-..___tag_value_log10.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log10.3-..___tag_value_log10.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log10.4-..___tag_value_log10.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_pow.S b/libm/x86_64/e_pow.S
new file mode 100644
index 0000000..9ec3828
--- /dev/null
+++ b/libm/x86_64/e_pow.S
@@ -0,0 +1,4282 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    log2(x) calculation:
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*LH*2^9+0.5))/2^9
+//    LH is a short approximation for log2(e)
+//
+//    Reduced argument, scaled by LH:
+//                r=B*mx-LH (computed accurately in high and low parts)
+//
+//    log2(x) result:  k - log2(B) + p(r)
+//             p(r) is a degree 8 polynomial
+//             -log2(B) read from data table (high, low parts)
+//             log2(x) is formed from high and low parts
+//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
+//    based om the same table design is performed.
+//
+//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
+//   to filter out all potential OF/UF cases.
+//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
+//   polynomial
+//
+// Special cases:
+//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
+//  integer < 0.
+//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
+//  not an odd integer.
+//  pow(-0,y) = -0 for y an odd integer > 0.
+//  pow(-0,y) = +0 for y > 0 and not an odd integer.
+//  pow(-1,-INF) = 1.
+//  pow(+1,y) = 1 for any y, even a NaN.
+//  pow(x,-0) = 1 for any x, even a NaN.
+//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
+//  finite non-integer y.
+//  pow(x,-INF) = +INF for |x|<1.
+//  pow(x,-INF) = +0 for |x|>1.
+//  pow(x,+INF) = +0 for |x|<1.
+//  pow(x,+INF) = +INF for |x|>1.
+//  pow(-INF,y) = -0 for y an odd integer < 0.
+//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
+//  pow(-INF,y) = -INF for y an odd integer > 0.
+//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
+//  pow(+INF,y) = +0 for y <0.
+//  pow(+INF,y) = +INF for y >0.
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  pow
+ENTRY(pow)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_pow.1:
+        subq      $40, %rsp
+..___tag_value_pow.3:
+        movsd     %xmm0, 8(%rsp)
+        movsd     %xmm1, 16(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        xorpd     %xmm2, %xmm2
+        movq      $0x3ff0000000000000, %r9
+        movd      %r9, %xmm2
+        movl      $1069088768, %r8d
+        movd      %r8, %xmm7
+        xorpd     %xmm1, %xmm1
+        movq      $0x77f0000000000000, %r10
+        movd      %r10, %xmm1
+        movq      %xmm0, %xmm3
+        movl      $32752, %edx
+        andl      %eax, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        orpd      %xmm2, %xmm0
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movl      $8192, %r11d
+        movd      %r11, %xmm4
+        psrlq     $12, %xmm3
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        movq      $0, %r8
+.L_2TAG_PACKET_1.0.2:
+        mulss     %xmm7, %xmm0
+        movl      $-1, %edx
+        subl      $4, %ecx
+        shll      %cl, %edx
+        shlq      $32, %rdx
+        movd      %rdx, %xmm5
+        orpd      %xmm1, %xmm3
+        subl      $16351, %eax
+        cmpl      $1, %eax
+        jbe       .L_2TAG_PACKET_2.0.2
+        paddd     %xmm4, %xmm0
+        andpd     %xmm3, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        subsd     %xmm5, %xmm3
+        andpd     %xmm6, %xmm0
+        subl      $1, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm0, %xmm3
+        movapd    coeff(%rip), %xmm1
+        lea       L_tbl(%rip), %r11
+        subsd     %xmm2, %xmm5
+        movapd    16+coeff(%rip), %xmm4
+        movl      %eax, %ecx
+        sarl      $31, %eax
+        addl      %eax, %ecx
+        xorl      %ecx, %eax
+        addl      $1, %eax
+        bsr       %eax, %eax
+        unpcklpd  %xmm3, %xmm5
+        movapd    32+coeff(%rip), %xmm6
+        addsd     %xmm5, %xmm3
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3648(%r11,%rdx), %xmm5
+        movapd    48+coeff(%rip), %xmm0
+        pshufd    $68, %xmm3, %xmm2
+        mulsd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm1
+        mulpd     %xmm2, %xmm4
+        addsd     %xmm7, %xmm5
+        mulsd     %xmm3, %xmm2
+        addpd     %xmm1, %xmm6
+        mulsd     %xmm3, %xmm3
+        addpd     %xmm4, %xmm0
+        movq      16(%rsp), %xmm1
+        movw      22(%rsp), %cx
+        pshufd    $238, %xmm5, %xmm7
+        movq      HIGHMASK_Y(%rip), %xmm4
+        mulpd     %xmm2, %xmm6
+        pshufd    $68, %xmm3, %xmm3
+        mulpd     %xmm2, %xmm0
+        shll      $4, %eax
+        subl      $15872, %eax
+        andl      $32752, %ecx
+        addl      %ecx, %eax
+        mulpd     %xmm6, %xmm3
+        cmpl      $624, %eax
+        jae       .L_2TAG_PACKET_5.0.2
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        movq      %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm5, %xmm1
+        movq      %xmm6, %xmm7
+        addsd     %xmm4, %xmm6
+        lea       T_exp(%rip), %r11
+        addpd     %xmm0, %xmm3
+        movd      %xmm6, %edx
+        subsd     %xmm7, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        subsd     %xmm6, %xmm4
+        addsd     %xmm3, %xmm0
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    (%r11,%rdx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        movapd    e_coeff(%rip), %xmm7
+        movapd    16+e_coeff(%rip), %xmm3
+        shll      $12, %ecx
+        xorl      %r8d, %ecx
+        andl      $-1048576, %ecx
+        movd      %rcx, %xmm6
+        addsd     %xmm4, %xmm2
+        movq      $0x3fe62e42fefa39ef, %r9
+        movd      %r9, %xmm1
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        pshufd    $17, %xmm6, %xmm6
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        paddd     %xmm6, %xmm5
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulsd     %xmm0, %xmm0
+        addpd     %xmm7, %xmm3
+        addsd     %xmm6, %xmm1
+        mulpd     %xmm3, %xmm0
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16, %eax
+        movl      $32752, %edx
+        andl      %eax, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_6.0.2
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_8.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $0, %r8d
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_10.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm3
+        movd      %xmm3, %edx
+        psrlq     $32, %xmm3
+        movd      %xmm3, %ecx
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_9.0.2
+        xorpd     %xmm3, %xmm3
+        movl      $18416, %eax
+        pinsrw    $3, %eax, %xmm3
+        mulsd     %xmm3, %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm0, %xmm3
+        pextrw    $3, %xmm0, %eax
+        orpd      %xmm2, %xmm0
+        movl      $18416, %ecx
+        psrlq     $27, %xmm0
+        movq      LOG2_E(%rip), %xmm2
+        psrld     $2, %xmm0
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm3
+        movapd    HIGHSIGMASK(%rip), %xmm6
+        psrlq     $12, %xmm3
+        mulss     %xmm7, %xmm0
+        movl      $-1024, %edx
+        movd      %edx, %xmm5
+        orpd      %xmm1, %xmm3
+        paddd     %xmm4, %xmm0
+        psllq     $32, %xmm5
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm3, %xmm5
+        movl      $-2147483648, %r8d
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        andl      $32752, %eax
+        subl      $18416, %eax
+        sarl      $4, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        jmp       .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_11.0.2
+        cmpl      $736, %eax
+        jae       .L_2TAG_PACKET_12.0.2
+        addsd     %xmm7, %xmm0
+        movq      HALFMASK(%rip), %xmm2
+        addpd     %xmm0, %xmm3
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %eax
+        pinsrw    $3, %eax, %xmm6
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm3, %xmm0
+        movq      %xmm5, %xmm3
+        addsd     %xmm0, %xmm5
+        movq      %xmm2, %xmm4
+        subsd     %xmm5, %xmm3
+        movq      %xmm5, %xmm7
+        andpd     %xmm2, %xmm5
+        movq      %xmm1, %xmm2
+        andpd     %xmm1, %xmm4
+        subsd     %xmm5, %xmm7
+        addsd     %xmm3, %xmm0
+        subsd     %xmm4, %xmm1
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm7, %xmm0
+        mulsd     %xmm0, %xmm2
+        movq      %xmm6, %xmm7
+        mulsd     %xmm5, %xmm1
+        addsd     %xmm4, %xmm6
+        movd      %xmm6, %eax
+        subsd     %xmm7, %xmm6
+        lea       T_exp(%rip), %r11
+        addsd     %xmm1, %xmm2
+        movapd    e_coeff(%rip), %xmm7
+        movapd    16+e_coeff(%rip), %xmm3
+        subsd     %xmm6, %xmm4
+        pextrw    $3, %xmm6, %edx
+        movl      %eax, %ecx
+        andl      $255, %eax
+        addl      %eax, %eax
+        movapd    (%r11,%rax,8), %xmm5
+        addsd     %xmm4, %xmm2
+        sarl      $8, %ecx
+        movl      %ecx, %eax
+        sarl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        xorl      %r8d, %ecx
+        movd      %ecx, %xmm6
+        movq      32+e_coeff(%rip), %xmm1
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_12.0.2
+        pshufd    $68, %xmm2, %xmm0
+        pshufd    $68, %xmm2, %xmm4
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm4, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm2, %xmm1
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm3
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        shll      $4, %eax
+        xorpd     %xmm4, %xmm4
+        addl      $16368, %eax
+        pinsrw    $3, %eax, %xmm4
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        movq      %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_13.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_14.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movq      16(%rsp), %xmm1
+        movq      8(%rsp), %xmm0
+        movq      %xmm0, %xmm2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_15.0.2
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_16.0.2
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_16.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $29, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_18.0.2:
+        movq      16(%rsp), %xmm0
+        addpd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_15.0.2:
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_19.0.2
+        pextrw    $3, %xmm2, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_20.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_20.0.2:
+        pextrw    $3, %xmm0, %eax
+        testl     $32768, %eax
+        jne       .L_2TAG_PACKET_21.0.2
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_22.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_23.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        testl     $2, %eax
+        jne       .L_2TAG_PACKET_25.0.2
+        jmp       .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_21.0.2:
+        shrl      $20, %ecx
+        andl      $2047, %ecx
+        cmpl      $1075, %ecx
+        ja        .L_2TAG_PACKET_24.0.2
+        je        .L_2TAG_PACKET_26.0.2
+        cmpl      $1074, %ecx
+        ja        .L_2TAG_PACKET_23.0.2
+        cmpl      $1023, %ecx
+        jb        .L_2TAG_PACKET_24.0.2
+        movq      16(%rsp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movq      %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_24.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_24.0.2
+.L_2TAG_PACKET_25.0.2:
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_27.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_27.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_24.0.2:
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32768, %eax
+        jne       .L_2TAG_PACKET_22.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_26.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_24.0.2
+        jmp       .L_2TAG_PACKET_25.0.2
+.L_2TAG_PACKET_28.0.2:
+        movd      %xmm1, %eax
+        psrlq     $20, %xmm1
+        movd      %xmm1, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_29.0.2
+        movq      16(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_29.0.2:
+        movq      8(%rsp), %xmm0
+        pextrw    $3, %xmm0, %eax
+        cmpl      $49136, %eax
+        jne       .L_2TAG_PACKET_30.0.2
+        movd      %xmm0, %ecx
+        psrlq     $20, %xmm0
+        movd      %xmm0, %edx
+        orl       %edx, %ecx
+        jne       .L_2TAG_PACKET_30.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_30.0.2:
+        movq      16(%rsp), %xmm1
+        andl      $32752, %eax
+        subl      $16368, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        xorl      %edx, %eax
+        andl      $32768, %eax
+        je        .L_2TAG_PACKET_31.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_31.0.2:
+        movl      $32752, %ecx
+        pinsrw    $3, %ecx, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_32.0.2:
+        movd      %xmm1, %eax
+        cmpl      $17184, %edx
+        ja        .L_2TAG_PACKET_33.0.2
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        testl     $2, %eax
+        je        .L_2TAG_PACKET_35.0.2
+        jmp       .L_2TAG_PACKET_36.0.2
+.L_2TAG_PACKET_33.0.2:
+        testl     $1, %eax
+        je        .L_2TAG_PACKET_35.0.2
+        jmp       .L_2TAG_PACKET_36.0.2
+.L_2TAG_PACKET_7.0.2:
+        movq      8(%rsp), %xmm2
+        movd      %xmm2, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_9.0.2
+        movq      16(%rsp), %xmm1
+        pextrw    $3, %xmm1, %edx
+        movd      %xmm1, %eax
+        movq      %xmm1, %xmm2
+        psrlq     $32, %xmm2
+        movd      %xmm2, %ecx
+        addl      %ecx, %ecx
+        orl       %eax, %ecx
+        je        .L_2TAG_PACKET_37.0.2
+        andl      $32752, %edx
+        cmpl      $32752, %edx
+        je        .L_2TAG_PACKET_28.0.2
+        cmpl      $17200, %edx
+        ja        .L_2TAG_PACKET_35.0.2
+        cmpl      $17184, %edx
+        jae       .L_2TAG_PACKET_32.0.2
+        cmpl      $16368, %edx
+        jb        .L_2TAG_PACKET_34.0.2
+        movl      $17208, %eax
+        xorpd     %xmm2, %xmm2
+        pinsrw    $3, %eax, %xmm2
+        movq      %xmm2, %xmm4
+        addsd     %xmm1, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32767, %eax
+        jne       .L_2TAG_PACKET_34.0.2
+        movd      %xmm2, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_35.0.2
+.L_2TAG_PACKET_36.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movq      LOG2_E(%rip), %xmm2
+        movq      8(%rsp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_10.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $-2147483648, %r8d
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_34.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        xorpd     %xmm0, %xmm0
+        mulsd     %xmm1, %xmm0
+        movl      $28, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_35.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $30704, %edx
+        pinsrw    $3, %edx, %xmm1
+        movq      LOG2_E(%rip), %xmm2
+        movq      8(%rsp), %xmm4
+        pextrw    $3, %xmm4, %eax
+        movl      $8192, %edx
+        movd      %edx, %xmm4
+        andl      $32767, %eax
+        subl      $16, %eax
+        jl        .L_2TAG_PACKET_8.0.2
+        movl      %eax, %edx
+        andl      $32752, %edx
+        subl      $16368, %edx
+        movl      %edx, %ecx
+        sarl      $31, %edx
+        addl      %edx, %ecx
+        xorl      %edx, %ecx
+        addl      $16, %ecx
+        bsr       %ecx, %ecx
+        movl      $0, %r8d
+        jmp       .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_19.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_22.0.2:
+        xorpd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        addl      $384, %eax
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_38.0.2
+        mulsd     %xmm1, %xmm5
+        addsd     %xmm7, %xmm0
+        shrl      $31, %r8d
+        addpd     %xmm0, %xmm3
+        pshufd    $238, %xmm3, %xmm0
+        addsd     %xmm0, %xmm3
+        lea       log2(%rip), %r11
+        movq      (%r11,%r8,8), %xmm4
+        mulsd     %xmm3, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        shll      $15, %r8d
+        orl       %r8d, %eax
+        pinsrw    $3, %eax, %xmm0
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_38.0.2:
+.L_2TAG_PACKET_37.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_39.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm0
+        movl      $26, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_9.0.2:
+        movq      16(%rsp), %xmm1
+        movq      %xmm1, %xmm2
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        jne       .L_2TAG_PACKET_40.0.2
+        movd      %xmm2, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %edx
+        orl       %edx, %eax
+        jne       .L_2TAG_PACKET_18.0.2
+.L_2TAG_PACKET_40.0.2:
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        movl      %edx, %ecx
+        addl      %edx, %edx
+        orl       %edx, %eax
+        je        .L_2TAG_PACKET_39.0.2
+        shrl      $21, %edx
+        cmpl      $1075, %edx
+        ja        .L_2TAG_PACKET_41.0.2
+        je        .L_2TAG_PACKET_42.0.2
+        cmpl      $1023, %edx
+        jb        .L_2TAG_PACKET_41.0.2
+        movq      16(%rsp), %xmm1
+        movl      $17208, %eax
+        xorpd     %xmm3, %xmm3
+        pinsrw    $3, %eax, %xmm3
+        movq      %xmm3, %xmm4
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        pextrw    $3, %xmm1, %eax
+        andl      $32752, %eax
+        jne       .L_2TAG_PACKET_41.0.2
+        movd      %xmm3, %eax
+        andl      $1, %eax
+        je        .L_2TAG_PACKET_41.0.2
+.L_2TAG_PACKET_43.0.2:
+        movq      8(%rsp), %xmm0
+        testl     $-2147483648, %ecx
+        jne       .L_2TAG_PACKET_44.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_42.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %eax
+        testl     $1, %eax
+        jne       .L_2TAG_PACKET_43.0.2
+.L_2TAG_PACKET_41.0.2:
+        testl     $-2147483648, %ecx
+        je        .L_2TAG_PACKET_22.0.2
+        xorpd     %xmm0, %xmm0
+.L_2TAG_PACKET_44.0.2:
+        movl      $16368, %eax
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %eax, %xmm1
+        divsd     %xmm0, %xmm1
+        movq      %xmm1, %xmm0
+        movl      $27, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_12.0.2:
+        movq      8(%rsp), %xmm2
+        movq      16(%rsp), %xmm6
+        pextrw    $3, %xmm2, %eax
+        pextrw    $3, %xmm6, %edx
+        movl      $32752, %ecx
+        andl      %edx, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_45.0.2
+        andl      $32752, %eax
+        subl      $16368, %eax
+        xorl      %eax, %edx
+        testl     $32768, %edx
+        jne       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_47.0.2:
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        shrl      $16, %r8d
+        orl       %r8d, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+.L_2TAG_PACKET_14.0.2:
+        movl      $24, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_46.0.2:
+        movl      $16, %eax
+        pinsrw    $3, %eax, %xmm0
+        mulsd     %xmm0, %xmm0
+        testl     $-2147483648, %r8d
+        je        .L_2TAG_PACKET_48.0.2
+        movq      $0x8000000000000000, %r9
+        movd      %r9, %xmm2
+        xorpd     %xmm2, %xmm0
+.L_2TAG_PACKET_48.0.2:
+        movl      $25, (%rsp)
+        jmp       .L_2TAG_PACKET_17.0.2
+.L_2TAG_PACKET_13.0.2:
+        pextrw    $3, %xmm5, %ecx
+        pextrw    $3, %xmm4, %edx
+        movl      $-1, %eax
+        andl      $32752, %ecx
+        subl      $16368, %ecx
+        andl      $32752, %edx
+        addl      %ecx, %edx
+        movl      $-31, %ecx
+        sarl      $4, %edx
+        subl      %edx, %ecx
+        jle       .L_2TAG_PACKET_49.0.2
+        cmpl      $20, %ecx
+        ja        .L_2TAG_PACKET_50.0.2
+        shll      %cl, %eax
+.L_2TAG_PACKET_49.0.2:
+        movd      %eax, %xmm0
+        psllq     $32, %xmm0
+        andpd     %xmm5, %xmm0
+        subsd     %xmm0, %xmm5
+        addsd     %xmm1, %xmm5
+        mulsd     %xmm4, %xmm0
+        mulsd     %xmm4, %xmm5
+        addsd     %xmm5, %xmm0
+.L_2TAG_PACKET_50.0.2:
+        jmp       .L_2TAG_PACKET_48.0.2
+.L_2TAG_PACKET_2.0.2:
+        movw      22(%rsp), %cx
+        movl      $-2147483648, %edx
+        movd      %rdx, %xmm1
+        xorpd     %xmm7, %xmm7
+        paddd     %xmm4, %xmm0
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        paddq     %xmm3, %xmm1
+        andpd     %xmm1, %xmm5
+        andw      $32752, %cx
+        cmpw      $16560, %cx
+        jb        .L_2TAG_PACKET_3.0.2
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm3
+        addl      $16351, %eax
+        shrl      $4, %eax
+        subl      $1022, %eax
+        cvtsi2sd  %eax, %xmm7
+        mulpd     %xmm0, %xmm5
+        lea       L_tbl(%rip), %r11
+        movq      coeff_h(%rip), %xmm4
+        mulsd     %xmm0, %xmm3
+        movq      coeff_h(%rip), %xmm6
+        subsd     %xmm2, %xmm5
+        movq      8+coeff_h(%rip), %xmm1
+        pshufd    $68, %xmm3, %xmm2
+        unpcklpd  %xmm3, %xmm5
+        addsd     %xmm5, %xmm3
+        movq      8+coeff_h(%rip), %xmm0
+        andl      $16760832, %edx
+        shrl      $10, %edx
+        addpd     -3648(%r11,%rdx), %xmm7
+        mulsd     %xmm5, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm1
+        movq      %xmm5, %xmm2
+        mulsd     %xmm5, %xmm4
+        addsd     %xmm0, %xmm5
+        movq      %xmm7, %xmm0
+        addsd     %xmm3, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm6
+        subsd     %xmm7, %xmm0
+        movq      %xmm7, %xmm2
+        addsd     %xmm4, %xmm7
+        addsd     %xmm5, %xmm0
+        subsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm4
+        pshufd    $238, %xmm5, %xmm2
+        movq      %xmm7, %xmm5
+        addsd     %xmm2, %xmm7
+        addsd     %xmm0, %xmm4
+        movapd    coeff(%rip), %xmm0
+        subsd     %xmm7, %xmm5
+        addsd     %xmm4, %xmm6
+        movq      %xmm7, %xmm4
+        addsd     %xmm2, %xmm5
+        addsd     %xmm1, %xmm7
+        movapd    64+coeff(%rip), %xmm2
+        subsd     %xmm7, %xmm4
+        addsd     %xmm5, %xmm6
+        addsd     %xmm1, %xmm4
+        pshufd    $238, %xmm7, %xmm5
+        movapd    %xmm7, %xmm1
+        addsd     %xmm5, %xmm7
+        subsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        movapd    80+coeff(%rip), %xmm5
+        pshufd    $68, %xmm3, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm1, %xmm6
+        movapd    32+coeff(%rip), %xmm1
+        mulpd     %xmm3, %xmm0
+        mulpd     %xmm3, %xmm2
+        pshufd    $68, %xmm3, %xmm4
+        mulpd     %xmm3, %xmm3
+        addpd     %xmm1, %xmm0
+        addpd     %xmm2, %xmm5
+        mulsd     %xmm3, %xmm4
+        movq      HIGHMASK_LOG_X(%rip), %xmm2
+        mulpd     %xmm3, %xmm3
+        movq      16(%rsp), %xmm1
+        movw      22(%rsp), %cx
+        mulpd     %xmm4, %xmm0
+        pextrw    $3, %xmm7, %eax
+        mulpd     %xmm4, %xmm5
+        mulpd     %xmm3, %xmm0
+        movq      8+HIGHMASK_Y(%rip), %xmm4
+        andpd     %xmm7, %xmm2
+        addsd     %xmm6, %xmm5
+        subsd     %xmm2, %xmm7
+        addpd     %xmm0, %xmm5
+        andl      $32752, %eax
+        subl      $16368, %eax
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        je        .L_2TAG_PACKET_45.0.2
+        addl      %eax, %ecx
+        cmpl      $16576, %ecx
+        jae       .L_2TAG_PACKET_51.0.2
+        pshufd    $238, %xmm5, %xmm0
+        andpd     %xmm1, %xmm4
+        movq      %xmm1, %xmm3
+        addsd     %xmm0, %xmm5
+        subsd     %xmm4, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $17080, %edx
+        pinsrw    $3, %edx, %xmm6
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm1
+        movq      %xmm6, %xmm5
+        mulsd     %xmm7, %xmm3
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        movapd    e_coeff(%rip), %xmm7
+        movd      %xmm6, %edx
+        subsd     %xmm5, %xmm6
+        lea       T_exp(%rip), %r11
+        movapd    16+e_coeff(%rip), %xmm3
+        movq      32+e_coeff(%rip), %xmm2
+        subsd     %xmm6, %xmm4
+        movl      %edx, %ecx
+        andl      $255, %edx
+        addl      %edx, %edx
+        movapd    (%r11,%rdx,8), %xmm5
+        addsd     %xmm1, %xmm4
+        pextrw    $3, %xmm6, %edx
+        shrl      $8, %ecx
+        movl      %ecx, %eax
+        shrl      $1, %ecx
+        subl      %ecx, %eax
+        shll      $20, %ecx
+        movd      %ecx, %xmm6
+        pshufd    $68, %xmm4, %xmm0
+        pshufd    $68, %xmm4, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulpd     %xmm1, %xmm7
+        pshufd    $17, %xmm6, %xmm6
+        mulsd     %xmm4, %xmm2
+        andl      $32767, %edx
+        cmpl      $16529, %edx
+        ja        .L_2TAG_PACKET_12.0.2
+        mulsd     %xmm0, %xmm0
+        paddd     %xmm6, %xmm5
+        addpd     %xmm7, %xmm3
+        mulsd     %xmm5, %xmm2
+        pshufd    $238, %xmm5, %xmm6
+        mulpd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm2
+        pshufd    $238, %xmm0, %xmm3
+        addl      $1023, %eax
+        shll      $20, %eax
+        orl       %r8d, %eax
+        movd      %eax, %xmm4
+        mulsd     %xmm5, %xmm0
+        mulsd     %xmm5, %xmm3
+        addsd     %xmm2, %xmm0
+        psllq     $32, %xmm4
+        addsd     %xmm3, %xmm0
+        movq      %xmm0, %xmm1
+        addsd     %xmm5, %xmm0
+        mulsd     %xmm4, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_13.0.2
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_14.0.2
+.L_2TAG_PACKET_52.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_45.0.2:
+        movq      8(%rsp), %xmm0
+        xorpd     %xmm2, %xmm2
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm2
+        addsd     %xmm0, %xmm2
+        pextrw    $3, %xmm2, %eax
+        cmpl      $0, %eax
+        jne       .L_2TAG_PACKET_53.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_53.0.2:
+        movq      16(%rsp), %xmm1
+        movd      %xmm1, %edx
+        movq      %xmm1, %xmm3
+        psrlq     $20, %xmm3
+        movd      %xmm3, %ecx
+        orl       %edx, %ecx
+        je        .L_2TAG_PACKET_54.0.2
+        addsd     %xmm1, %xmm1
+        movq      %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_51.0.2:
+        pextrw    $3, %xmm1, %eax
+        pextrw    $3, %xmm2, %ecx
+        xorl      %ecx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_47.0.2
+        jmp       .L_2TAG_PACKET_46.0.2
+.L_2TAG_PACKET_54.0.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        pextrw    $3, %xmm1, %edx
+        xorpd     %xmm0, %xmm0
+        subl      $16368, %eax
+        xorl      %edx, %eax
+        testl     $32768, %eax
+        je        .L_2TAG_PACKET_55.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_55.0.2:
+        movl      $32752, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_17.0.2:
+        movq      %xmm0, 24(%rsp)
+..B1.3:
+        movq      24(%rsp), %xmm0
+.L_2TAG_PACKET_56.0.2:
+..B1.5:
+        addq      $40, %rsp
+..___tag_value_pow.4:
+        ret       
+..___tag_value_pow.5:
+END(pow)
+# -- End  pow
+	.section .rodata, "a"
+	.align 16
+	.align 16
+HIGHSIGMASK:
+	.long	0
+	.long	4294965248
+	.long	0
+	.long	4294965248
+	.type	HIGHSIGMASK,@object
+	.size	HIGHSIGMASK,16
+	.align 16
+LOG2_E:
+	.long	0
+	.long	1073160192
+	.long	370913857
+	.long	3210587105
+	.type	LOG2_E,@object
+	.size	LOG2_E,16
+	.align 16
+coeff:
+	.long	1841914130
+	.long	3213059448
+	.long	3995341938
+	.long	3214607105
+	.long	2677381210
+	.long	3216320731
+	.long	3011779882
+	.long	3218479542
+	.long	1367832035
+	.long	1066403058
+	.long	2894285243
+	.long	1067936923
+	.long	1215221452
+	.long	1069835102
+	.long	370913857
+	.long	3210587105
+	.long	2677381210
+	.long	3216320731
+	.long	4172642429
+	.long	1056068382
+	.long	1215221451
+	.long	1069835102
+	.long	1092638156
+	.long	3184925618
+	.type	coeff,@object
+	.size	coeff,96
+	.align 16
+L_tbl:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	536870912
+	.long	1072689162
+	.long	2523013013
+	.long	1046157398
+	.long	3758096384
+	.long	1072685081
+	.long	3851513758
+	.long	3190968952
+	.long	0
+	.long	1072681007
+	.long	2241466466
+	.long	1046044599
+	.long	3221225472
+	.long	1072676937
+	.long	2990928271
+	.long	3193084984
+	.long	3758096384
+	.long	1072672873
+	.long	2905112743
+	.long	3192918576
+	.long	1610612736
+	.long	1072668815
+	.long	3370591264
+	.long	1046051793
+	.long	2147483648
+	.long	1072664762
+	.long	3272361216
+	.long	3193793653
+	.long	3758096384
+	.long	1072660714
+	.long	46546755
+	.long	1043206936
+	.long	3221225472
+	.long	1072656672
+	.long	3017067724
+	.long	3192177962
+	.long	0
+	.long	1072652636
+	.long	3688436631
+	.long	3192814956
+	.long	2684354560
+	.long	1072648604
+	.long	1707461992
+	.long	3193056712
+	.long	2684354560
+	.long	1072644578
+	.long	1188114540
+	.long	3193603086
+	.long	3758096384
+	.long	1072640557
+	.long	3533180564
+	.long	1045459375
+	.long	2684354560
+	.long	1072636542
+	.long	2000337630
+	.long	3193475557
+	.long	2684354560
+	.long	1072632532
+	.long	3698062443
+	.long	3193752766
+	.long	3758096384
+	.long	1072628527
+	.long	3161606138
+	.long	3190532995
+	.long	2147483648
+	.long	1072624528
+	.long	3165265478
+	.long	3193158459
+	.long	1610612736
+	.long	1072620534
+	.long	1600940077
+	.long	3193226777
+	.long	2147483648
+	.long	1072616545
+	.long	1363272552
+	.long	3192614278
+	.long	3758096384
+	.long	1072612561
+	.long	3966209910
+	.long	3191249654
+	.long	2147483648
+	.long	1072608583
+	.long	1093672789
+	.long	3190637330
+	.long	1610612736
+	.long	1072604610
+	.long	1735239357
+	.long	3192753616
+	.long	1610612736
+	.long	1072600642
+	.long	1470665156
+	.long	1045559697
+	.long	2684354560
+	.long	1072596679
+	.long	3840624926
+	.long	1045928953
+	.long	536870912
+	.long	1072592722
+	.long	4259072556
+	.long	3191035622
+	.long	3221225472
+	.long	1072588769
+	.long	3613088753
+	.long	3192165681
+	.long	2147483648
+	.long	1072584822
+	.long	3175234446
+	.long	1039486948
+	.long	1610612736
+	.long	1072580880
+	.long	856576441
+	.long	1045702812
+	.long	2147483648
+	.long	1072576943
+	.long	2253498719
+	.long	3193285334
+	.long	2684354560
+	.long	1072573011
+	.long	1587070728
+	.long	3190801577
+	.long	3758096384
+	.long	1072569084
+	.long	159986317
+	.long	1042519436
+	.long	1073741824
+	.long	1072565163
+	.long	3999541949
+	.long	3192020440
+	.long	2684354560
+	.long	1072561246
+	.long	3281310262
+	.long	1045586786
+	.long	536870912
+	.long	1072557335
+	.long	3775179406
+	.long	1045226055
+	.long	3221225472
+	.long	1072553428
+	.long	643472356
+	.long	3193681786
+	.long	1073741824
+	.long	1072549527
+	.long	248169775
+	.long	1045068977
+	.long	3758096384
+	.long	1072545630
+	.long	307016632
+	.long	1042640932
+	.long	2147483648
+	.long	1072541739
+	.long	3872718526
+	.long	3189781486
+	.long	536870912
+	.long	1072537853
+	.long	969711630
+	.long	3191724732
+	.long	3221225472
+	.long	1072533971
+	.long	4018820394
+	.long	3193189264
+	.long	1073741824
+	.long	1072530095
+	.long	3102233092
+	.long	1045510224
+	.long	3758096384
+	.long	1072526223
+	.long	1029307912
+	.long	3193812776
+	.long	1073741824
+	.long	1072522357
+	.long	984083153
+	.long	1045987403
+	.long	3221225472
+	.long	1072518495
+	.long	4171455401
+	.long	3193084080
+	.long	0
+	.long	1072514639
+	.long	2592660757
+	.long	1046121691
+	.long	1073741824
+	.long	1072510787
+	.long	2964365712
+	.long	1046054453
+	.long	2147483648
+	.long	1072506940
+	.long	3792777877
+	.long	3193704729
+	.long	2147483648
+	.long	1072503098
+	.long	2948536104
+	.long	3192467100
+	.long	1610612736
+	.long	1072499261
+	.long	3836005619
+	.long	1041873166
+	.long	536870912
+	.long	1072495429
+	.long	3124543160
+	.long	1044409168
+	.long	3221225472
+	.long	1072491601
+	.long	286227933
+	.long	1041065990
+	.long	1073741824
+	.long	1072487779
+	.long	2111296776
+	.long	3193604419
+	.long	2147483648
+	.long	1072483961
+	.long	2606822001
+	.long	3192940394
+	.long	2147483648
+	.long	1072480148
+	.long	194696800
+	.long	1046026063
+	.long	1610612736
+	.long	1072476340
+	.long	8535452
+	.long	1046200178
+	.long	536870912
+	.long	1072472537
+	.long	950463625
+	.long	3192731897
+	.long	2147483648
+	.long	1072468738
+	.long	973831566
+	.long	1045683197
+	.long	3221225472
+	.long	1072464944
+	.long	3330435892
+	.long	3190277577
+	.long	3221225472
+	.long	1072461155
+	.long	208692097
+	.long	3193517651
+	.long	1610612736
+	.long	1072457371
+	.long	2113097415
+	.long	1044781749
+	.long	3758096384
+	.long	1072453591
+	.long	1088808936
+	.long	3193716142
+	.long	0
+	.long	1072449817
+	.long	1443002127
+	.long	3193250205
+	.long	3221225472
+	.long	1072446046
+	.long	3967357419
+	.long	1046109477
+	.long	1610612736
+	.long	1072442281
+	.long	3013517861
+	.long	3193159691
+	.long	2147483648
+	.long	1072438520
+	.long	2524586286
+	.long	1046121951
+	.long	1610612736
+	.long	1072434764
+	.long	1476892861
+	.long	1046434731
+	.long	0
+	.long	1072431013
+	.long	3089640950
+	.long	3192305780
+	.long	536870912
+	.long	1072427266
+	.long	3812255529
+	.long	1045730879
+	.long	0
+	.long	1072423524
+	.long	995354762
+	.long	3191528673
+	.long	1610612736
+	.long	1072419786
+	.long	3260567684
+	.long	1046273695
+	.long	2147483648
+	.long	1072416053
+	.long	2738210286
+	.long	3191471516
+	.long	536870912
+	.long	1072412325
+	.long	1931849805
+	.long	1044560405
+	.long	1610612736
+	.long	1072408601
+	.long	358896655
+	.long	1044029237
+	.long	1073741824
+	.long	1072404882
+	.long	2214589842
+	.long	3193202126
+	.long	2684354560
+	.long	1072401167
+	.long	3118097363
+	.long	3192592906
+	.long	2147483648
+	.long	1072397457
+	.long	1835998884
+	.long	1045788247
+	.long	0
+	.long	1072393752
+	.long	1585488319
+	.long	1045289910
+	.long	0
+	.long	1072390051
+	.long	480160949
+	.long	1046030455
+	.long	2684354560
+	.long	1072386354
+	.long	1832959667
+	.long	3193013644
+	.long	2684354560
+	.long	1072382662
+	.long	3611346555
+	.long	1044544210
+	.long	1073741824
+	.long	1072378975
+	.long	2749418734
+	.long	3193712580
+	.long	1073741824
+	.long	1072375292
+	.long	2390043472
+	.long	3191710658
+	.long	3221225472
+	.long	1072371613
+	.long	2828199902
+	.long	1042265217
+	.long	3221225472
+	.long	1072367939
+	.long	569209321
+	.long	3191230982
+	.long	536870912
+	.long	1072364270
+	.long	236159139
+	.long	1046240123
+	.long	536870912
+	.long	1072360605
+	.long	1010656270
+	.long	3193813968
+	.long	1610612736
+	.long	1072356944
+	.long	2409080597
+	.long	1044025029
+	.long	536870912
+	.long	1072353288
+	.long	598419513
+	.long	1043327370
+	.long	1073741824
+	.long	1072349636
+	.long	4105950479
+	.long	1045747958
+	.long	3758096384
+	.long	1072345988
+	.long	343243853
+	.long	3192420172
+	.long	3221225472
+	.long	1072342345
+	.long	2088439530
+	.long	1046172091
+	.long	536870912
+	.long	1072338707
+	.long	4117721107
+	.long	1043882496
+	.long	3758096384
+	.long	1072335072
+	.long	3192032958
+	.long	3192998645
+	.long	3758096384
+	.long	1072331442
+	.long	2366522518
+	.long	1045401957
+	.long	1610612736
+	.long	1072327817
+	.long	3685533141
+	.long	3193701947
+	.long	536870912
+	.long	1072324196
+	.long	1058658672
+	.long	3193572492
+	.long	536870912
+	.long	1072320579
+	.long	166346347
+	.long	1045456348
+	.long	2147483648
+	.long	1072316966
+	.long	2027889772
+	.long	1046349302
+	.long	1073741824
+	.long	1072313358
+	.long	1079497888
+	.long	1044585259
+	.long	1073741824
+	.long	1072309754
+	.long	2189851573
+	.long	1045132990
+	.long	2684354560
+	.long	1072306154
+	.long	2486629386
+	.long	3193613625
+	.long	536870912
+	.long	1072302559
+	.long	1263686579
+	.long	1044789259
+	.long	0
+	.long	1072298968
+	.long	2412061798
+	.long	3191369627
+	.long	536870912
+	.long	1072295381
+	.long	584315716
+	.long	3193144135
+	.long	1610612736
+	.long	1072291798
+	.long	449000738
+	.long	1046330451
+	.long	0
+	.long	1072288220
+	.long	3938320157
+	.long	1044446220
+	.long	3758096384
+	.long	1072284645
+	.long	2949844595
+	.long	3193462371
+	.long	3758096384
+	.long	1072281075
+	.long	2771329642
+	.long	3192121593
+	.long	536870912
+	.long	1072277510
+	.long	3971508621
+	.long	3193002806
+	.long	2147483648
+	.long	1072273948
+	.long	4071942301
+	.long	1044952619
+	.long	536870912
+	.long	1072270391
+	.long	2090502395
+	.long	1044660556
+	.long	0
+	.long	1072266838
+	.long	3657520961
+	.long	3193770938
+	.long	3758096384
+	.long	1072263288
+	.long	1608175110
+	.long	1045543239
+	.long	0
+	.long	1072259744
+	.long	2506924180
+	.long	1045530501
+	.long	1073741824
+	.long	1072256203
+	.long	18238493
+	.long	1046305623
+	.long	3221225472
+	.long	1072252666
+	.long	3862640487
+	.long	3192882407
+	.long	1073741824
+	.long	1072249134
+	.long	3850158761
+	.long	1043656099
+	.long	3758096384
+	.long	1072245605
+	.long	2356524356
+	.long	1045915296
+	.long	3221225472
+	.long	1072242081
+	.long	936497287
+	.long	3193842353
+	.long	2147483648
+	.long	1072238561
+	.long	2840845344
+	.long	1046454771
+	.long	2147483648
+	.long	1072235045
+	.long	3688100713
+	.long	1044895451
+	.long	2684354560
+	.long	1072231533
+	.long	479979913
+	.long	3193842442
+	.long	2684354560
+	.long	1072228025
+	.long	1016321898
+	.long	1046251032
+	.long	3758096384
+	.long	1072224521
+	.long	562232474
+	.long	3191974558
+	.long	536870912
+	.long	1072221022
+	.long	3870512029
+	.long	3193113881
+	.long	1610612736
+	.long	1072217526
+	.long	1239780547
+	.long	3191583604
+	.long	2684354560
+	.long	1072214034
+	.long	2815421327
+	.long	1045873682
+	.long	0
+	.long	1072210547
+	.long	2371009561
+	.long	1041508792
+	.long	1610612736
+	.long	1072207063
+	.long	1304636524
+	.long	3192414284
+	.long	3221225472
+	.long	1072203583
+	.long	210144854
+	.long	3193327333
+	.long	0
+	.long	1072200108
+	.long	1454303272
+	.long	1046360024
+	.long	1610612736
+	.long	1072196636
+	.long	2095757548
+	.long	1044984677
+	.long	3221225472
+	.long	1072193168
+	.long	2027215580
+	.long	3192880933
+	.long	0
+	.long	1072189705
+	.long	214794880
+	.long	1043457954
+	.long	1073741824
+	.long	1072186245
+	.long	884624917
+	.long	1043497079
+	.long	2147483648
+	.long	1072182789
+	.long	2792396634
+	.long	3193171685
+	.long	2684354560
+	.long	1072179337
+	.long	4128995250
+	.long	3192103434
+	.long	2684354560
+	.long	1072175889
+	.long	333866043
+	.long	1046372325
+	.long	3221225472
+	.long	1072172445
+	.long	2194445544
+	.long	3193958905
+	.long	2684354560
+	.long	1072169005
+	.long	2316082269
+	.long	3192041703
+	.long	1610612736
+	.long	1072165569
+	.long	581005057
+	.long	1046322848
+	.long	536870912
+	.long	1072162137
+	.long	3280786513
+	.long	1045457251
+	.long	3221225472
+	.long	1072158708
+	.long	2567093361
+	.long	1044710359
+	.long	1073741824
+	.long	1072155284
+	.long	3740443584
+	.long	1044224237
+	.long	2684354560
+	.long	1072151863
+	.long	3981028272
+	.long	1042596351
+	.long	3758096384
+	.long	1072148446
+	.long	3820011120
+	.long	3191915623
+	.long	0
+	.long	1072145034
+	.long	2946439484
+	.long	3193831276
+	.long	3758096384
+	.long	1072141624
+	.long	3075274422
+	.long	3190132432
+	.long	2684354560
+	.long	1072138219
+	.long	496052167
+	.long	1043619760
+	.long	1073741824
+	.long	1072134818
+	.long	271106589
+	.long	3192265149
+	.long	2684354560
+	.long	1072131420
+	.long	2091955684
+	.long	1044443554
+	.long	3758096384
+	.long	1072128026
+	.long	723240109
+	.long	3191007419
+	.long	3758096384
+	.long	1072124636
+	.long	1748629070
+	.long	1044510075
+	.long	3221225472
+	.long	1072121250
+	.long	3289522046
+	.long	3193095178
+	.long	1610612736
+	.long	1072117868
+	.long	3599052146
+	.long	3193720427
+	.long	3221225472
+	.long	1072114489
+	.long	2446758135
+	.long	3193436303
+	.long	3758096384
+	.long	1072111114
+	.long	1652171097
+	.long	3192137173
+	.long	3221225472
+	.long	1072107743
+	.long	1353007155
+	.long	1044523902
+	.long	1610612736
+	.long	1072104376
+	.long	990601105
+	.long	1046296663
+	.long	3758096384
+	.long	1072101012
+	.long	2228627618
+	.long	3193041040
+	.long	0
+	.long	1072097653
+	.long	812484756
+	.long	3191950723
+	.long	3758096384
+	.long	1072094296
+	.long	817833130
+	.long	3192279242
+	.long	2147483648
+	.long	1072090944
+	.long	3563228521
+	.long	3193810951
+	.long	3221225472
+	.long	1072087595
+	.long	2729108859
+	.long	3190936185
+	.long	3221225472
+	.long	1072084250
+	.long	2249121662
+	.long	3190639690
+	.long	2147483648
+	.long	1072080909
+	.long	4082471745
+	.long	3193929368
+	.long	3758096384
+	.long	1072077571
+	.long	2827323806
+	.long	3193708561
+	.long	3758096384
+	.long	1072074237
+	.long	735866167
+	.long	1042434690
+	.long	2684354560
+	.long	1072070907
+	.long	3240808889
+	.long	3191918422
+	.long	0
+	.long	1072067581
+	.long	466482777
+	.long	3186962221
+	.long	0
+	.long	1072064258
+	.long	1576076296
+	.long	1045849056
+	.long	3221225472
+	.long	1072060938
+	.long	2751923560
+	.long	3191910703
+	.long	0
+	.long	1072057623
+	.long	1908755527
+	.long	1046437515
+	.long	0
+	.long	1072054311
+	.long	3175841411
+	.long	1044572886
+	.long	2684354560
+	.long	1072051002
+	.long	1633258450
+	.long	3192670420
+	.long	3221225472
+	.long	1072047697
+	.long	1867746657
+	.long	1045726209
+	.long	2684354560
+	.long	1072044396
+	.long	338968864
+	.long	3193084662
+	.long	0
+	.long	1072041099
+	.long	1501742471
+	.long	3191742031
+	.long	0
+	.long	1072037805
+	.long	4266775786
+	.long	3192686970
+	.long	2147483648
+	.long	1072034514
+	.long	4249283553
+	.long	1045769728
+	.long	2684354560
+	.long	1072031227
+	.long	2758366873
+	.long	1046402161
+	.long	1610612736
+	.long	1072027944
+	.long	2161186990
+	.long	1044736865
+	.long	2684354560
+	.long	1072024664
+	.long	810300171
+	.long	1045748777
+	.long	2147483648
+	.long	1072021388
+	.long	183688927
+	.long	3191515581
+	.long	3758096384
+	.long	1072018115
+	.long	368874072
+	.long	3192363575
+	.long	3221225472
+	.long	1072014846
+	.long	2459092970
+	.long	1041794640
+	.long	536870912
+	.long	1072011581
+	.long	867488640
+	.long	1046310291
+	.long	536870912
+	.long	1072008319
+	.long	50140871
+	.long	1043327329
+	.long	2684354560
+	.long	1072005060
+	.long	1241902518
+	.long	3192739252
+	.long	2684354560
+	.long	1072001805
+	.long	1027881659
+	.long	3193858388
+	.long	0
+	.long	1071998554
+	.long	38457322
+	.long	1045489179
+	.long	0
+	.long	1071995306
+	.long	3432963337
+	.long	3190969347
+	.long	1610612736
+	.long	1071992061
+	.long	534931792
+	.long	1046302734
+	.long	1610612736
+	.long	1071988820
+	.long	1817895268
+	.long	3192551860
+	.long	3221225472
+	.long	1071985582
+	.long	357237383
+	.long	3191870833
+	.long	2684354560
+	.long	1071982348
+	.long	108262401
+	.long	3193365867
+	.long	3758096384
+	.long	1071979117
+	.long	1964729244
+	.long	1042502249
+	.long	2684354560
+	.long	1071975890
+	.long	2088446957
+	.long	1038010503
+	.long	3221225472
+	.long	1071972666
+	.long	2947239447
+	.long	1046377845
+	.long	1610612736
+	.long	1071969446
+	.long	774932072
+	.long	1046064854
+	.long	2147483648
+	.long	1071966229
+	.long	4080937590
+	.long	3193041284
+	.long	3758096384
+	.long	1071963015
+	.long	2208251454
+	.long	1045945089
+	.long	3221225472
+	.long	1071959805
+	.long	2850924475
+	.long	1045650959
+	.long	0
+	.long	1071956599
+	.long	714040997
+	.long	1046275153
+	.long	3221225472
+	.long	1071953395
+	.long	85533782
+	.long	3192816920
+	.long	3221225472
+	.long	1071950195
+	.long	1252511005
+	.long	1044805706
+	.long	1073741824
+	.long	1071946999
+	.long	2384659038
+	.long	3193391602
+	.long	0
+	.long	1071943806
+	.long	416481813
+	.long	1043730233
+	.long	536870912
+	.long	1071940616
+	.long	1675424499
+	.long	1046348030
+	.long	3221225472
+	.long	1071937429
+	.long	1175989513
+	.long	3193009113
+	.long	2684354560
+	.long	1071934246
+	.long	2400084650
+	.long	3192451713
+	.long	3758096384
+	.long	1071931066
+	.long	1467335692
+	.long	3193350868
+	.long	1610612736
+	.long	1071927890
+	.long	266493801
+	.long	1044954481
+	.long	1073741824
+	.long	1071924717
+	.long	3919093445
+	.long	1046023575
+	.long	2147483648
+	.long	1071921547
+	.long	3017408483
+	.long	1044880828
+	.long	536870912
+	.long	1071918381
+	.long	948849966
+	.long	3193892224
+	.long	3758096384
+	.long	1071915217
+	.long	1870232600
+	.long	1045777228
+	.long	536870912
+	.long	1071912058
+	.long	822381492
+	.long	3193639186
+	.long	2147483648
+	.long	1071908901
+	.long	788243705
+	.long	1044966343
+	.long	1073741824
+	.long	1071905748
+	.long	1344278809
+	.long	1044428545
+	.long	1073741824
+	.long	1071902598
+	.long	172864300
+	.long	1045765608
+	.long	2684354560
+	.long	1071899451
+	.long	211555467
+	.long	3192963574
+	.long	536870912
+	.long	1071896308
+	.long	3373438023
+	.long	1045643168
+	.long	0
+	.long	1071893168
+	.long	2867180960
+	.long	3189945998
+	.long	536870912
+	.long	1071890031
+	.long	36724362
+	.long	3193240584
+	.long	1610612736
+	.long	1071886897
+	.long	2140176984
+	.long	1045945349
+	.long	0
+	.long	1071883767
+	.long	436842360
+	.long	1040712587
+	.long	3758096384
+	.long	1071880639
+	.long	1225147329
+	.long	3193814594
+	.long	3758096384
+	.long	1071877515
+	.long	1586157348
+	.long	3191614322
+	.long	536870912
+	.long	1071874395
+	.long	3329332918
+	.long	1041699791
+	.long	2684354560
+	.long	1071871277
+	.long	1635968041
+	.long	3191783756
+	.long	1073741824
+	.long	1071868163
+	.long	2876158382
+	.long	1046097093
+	.long	1073741824
+	.long	1071865052
+	.long	4267556964
+	.long	3193723000
+	.long	1073741824
+	.long	1071861944
+	.long	195475940
+	.long	1045520795
+	.long	2147483648
+	.long	1071858839
+	.long	2239193514
+	.long	1046478675
+	.long	0
+	.long	1071855738
+	.long	4168275596
+	.long	1044926285
+	.long	2684354560
+	.long	1071852639
+	.long	142514114
+	.long	1045595182
+	.long	2147483648
+	.long	1071849544
+	.long	1943457984
+	.long	3192930015
+	.long	2147483648
+	.long	1071846452
+	.long	202659489
+	.long	3193926317
+	.long	2684354560
+	.long	1071843363
+	.long	2208408789
+	.long	3193857484
+	.long	3758096384
+	.long	1071840277
+	.long	2237297552
+	.long	3192939576
+	.long	1073741824
+	.long	1071837195
+	.long	2726920839
+	.long	1044193954
+	.long	3758096384
+	.long	1071834115
+	.long	2337732207
+	.long	3193611773
+	.long	2147483648
+	.long	1071831039
+	.long	1390088602
+	.long	1044000317
+	.long	1610612736
+	.long	1071827966
+	.long	3806188736
+	.long	3193463913
+	.long	1073741824
+	.long	1071824896
+	.long	1795276560
+	.long	1043671965
+	.long	1073741824
+	.long	1071821829
+	.long	2960792799
+	.long	1046240474
+	.long	2147483648
+	.long	1071818765
+	.long	3350591592
+	.long	3193333939
+	.long	3221225472
+	.long	1071815704
+	.long	408870754
+	.long	3193322854
+	.long	0
+	.long	1071812647
+	.long	4146717132
+	.long	1046063520
+	.long	2147483648
+	.long	1071809592
+	.long	1681114919
+	.long	3192114313
+	.long	0
+	.long	1071806541
+	.long	1098393137
+	.long	3190846732
+	.long	2684354560
+	.long	1071803492
+	.long	2437484983
+	.long	3193448718
+	.long	1073741824
+	.long	1071800447
+	.long	1036809185
+	.long	3192023501
+	.long	0
+	.long	1071797405
+	.long	659668848
+	.long	3193596312
+	.long	3221225472
+	.long	1071794365
+	.long	1112062459
+	.long	3192773376
+	.long	2147483648
+	.long	1071791329
+	.long	4082956335
+	.long	1045830513
+	.long	1610612736
+	.long	1071788296
+	.long	2387089965
+	.long	1045532601
+	.long	1610612736
+	.long	1071785266
+	.long	1522101980
+	.long	3193941957
+	.long	1073741824
+	.long	1071782239
+	.long	2157197585
+	.long	3188193305
+	.long	1073741824
+	.long	1071779215
+	.long	946810220
+	.long	3193223819
+	.long	1073741824
+	.long	1071776194
+	.long	4069942444
+	.long	3193878549
+	.long	536870912
+	.long	1071773176
+	.long	1693463440
+	.long	1046360588
+	.long	536870912
+	.long	1071770161
+	.long	1954543254
+	.long	1046409381
+	.long	1073741824
+	.long	1071767149
+	.long	1050471249
+	.long	3193933095
+	.long	536870912
+	.long	1071764140
+	.long	1256240478
+	.long	1046456865
+	.long	536870912
+	.long	1071761134
+	.long	676764254
+	.long	1046055503
+	.long	536870912
+	.long	1071758131
+	.long	1421032967
+	.long	1044779786
+	.long	536870912
+	.long	1071755131
+	.long	38735992
+	.long	3192766355
+	.long	0
+	.long	1071752134
+	.long	2960669690
+	.long	1044484680
+	.long	3758096384
+	.long	1071749139
+	.long	788707382
+	.long	1045299895
+	.long	3221225472
+	.long	1071746148
+	.long	685689300
+	.long	1040778831
+	.long	2147483648
+	.long	1071743160
+	.long	1170994182
+	.long	1046159174
+	.long	1073741824
+	.long	1071740175
+	.long	64591436
+	.long	1046153849
+	.long	0
+	.long	1071737193
+	.long	2338031659
+	.long	3189997702
+	.long	2684354560
+	.long	1071734213
+	.long	1941624568
+	.long	3186752676
+	.long	536870912
+	.long	1071731237
+	.long	1401255580
+	.long	1046383990
+	.long	2684354560
+	.long	1071728263
+	.long	376888427
+	.long	1045896456
+	.long	536870912
+	.long	1071725293
+	.long	2831424639
+	.long	3193539109
+	.long	1610612736
+	.long	1071722325
+	.long	3303123696
+	.long	1044599415
+	.long	2684354560
+	.long	1071719360
+	.long	1077295329
+	.long	3189877372
+	.long	3221225472
+	.long	1071716398
+	.long	1434061099
+	.long	3184529771
+	.long	3221225472
+	.long	1071713439
+	.long	2104991590
+	.long	1045062074
+	.long	3221225472
+	.long	1071710483
+	.long	722060869
+	.long	3193788526
+	.long	536870912
+	.long	1071704580
+	.long	3928796486
+	.long	1046129020
+	.long	536870912
+	.long	1071698688
+	.long	588844628
+	.long	1045492135
+	.long	2684354560
+	.long	1071692807
+	.long	326739366
+	.long	3193004445
+	.long	1610612736
+	.long	1071686938
+	.long	2456436042
+	.long	1046278169
+	.long	2684354560
+	.long	1071681080
+	.long	2831303512
+	.long	1043670046
+	.long	536870912
+	.long	1071675234
+	.long	607223418
+	.long	1045507322
+	.long	0
+	.long	1071669399
+	.long	4254921332
+	.long	3193290483
+	.long	0
+	.long	1071663575
+	.long	914994333
+	.long	3191263853
+	.long	1073741824
+	.long	1071657762
+	.long	4147050180
+	.long	3193228552
+	.long	2684354560
+	.long	1071651960
+	.long	594554157
+	.long	3193503935
+	.long	0
+	.long	1071646170
+	.long	1062846796
+	.long	1045944331
+	.long	1073741824
+	.long	1071636109
+	.long	2909238893
+	.long	3193436884
+	.long	1073741824
+	.long	1071624572
+	.long	1682918119
+	.long	1042211899
+	.long	1073741824
+	.long	1071613057
+	.long	2419209426
+	.long	1045437062
+	.long	1073741824
+	.long	1071601564
+	.long	2951341321
+	.long	3190193214
+	.long	0
+	.long	1071590093
+	.long	3084900875
+	.long	3192394907
+	.long	1073741824
+	.long	1071578643
+	.long	999567454
+	.long	1046433447
+	.long	2147483648
+	.long	1071567215
+	.long	1570101857
+	.long	3193291160
+	.long	0
+	.long	1071555809
+	.long	1080647881
+	.long	3185154585
+	.long	0
+	.long	1071544424
+	.long	3526309177
+	.long	1044843640
+	.long	2147483648
+	.long	1071533060
+	.long	2213463349
+	.long	3191738930
+	.long	1073741824
+	.long	1071521718
+	.long	1039925195
+	.long	3192618353
+	.long	1073741824
+	.long	1071510397
+	.long	2115757280
+	.long	3193671567
+	.long	1073741824
+	.long	1071499097
+	.long	1188751495
+	.long	3191145560
+	.long	2147483648
+	.long	1071487818
+	.long	3983461449
+	.long	3193897029
+	.long	2147483648
+	.long	1071476560
+	.long	782141500
+	.long	1042879962
+	.long	2147483648
+	.long	1071465323
+	.long	4038904626
+	.long	1045063881
+	.long	2147483648
+	.long	1071454107
+	.long	2613036921
+	.long	3193217642
+	.long	0
+	.long	1071442912
+	.long	2095723435
+	.long	1044629175
+	.long	1073741824
+	.long	1071431737
+	.long	3879795974
+	.long	1045767874
+	.long	1073741824
+	.long	1071420583
+	.long	2662198042
+	.long	3191434637
+	.long	3221225472
+	.long	1071409449
+	.long	4037605722
+	.long	3193703090
+	.long	2147483648
+	.long	1071398336
+	.long	1860331835
+	.long	1040814822
+	.long	3221225472
+	.long	1071387243
+	.long	1522972033
+	.long	3190305974
+	.long	1073741824
+	.long	1071376171
+	.long	2361534207
+	.long	1043699366
+	.long	0
+	.long	1071365119
+	.long	4180309179
+	.long	1044142099
+	.long	0
+	.long	1071354087
+	.long	1201038528
+	.long	3192968772
+	.long	0
+	.long	1071343075
+	.long	1342478171
+	.long	3193251215
+	.long	0
+	.long	1071332083
+	.long	3836883348
+	.long	3193472007
+	.long	3221225472
+	.long	1071321110
+	.long	3864874250
+	.long	1045593126
+	.long	2147483648
+	.long	1071310158
+	.long	2169494998
+	.long	1046045346
+	.long	1073741824
+	.long	1071299226
+	.long	3785165075
+	.long	3193319246
+	.long	2147483648
+	.long	1071288313
+	.long	1137692678
+	.long	3192716779
+	.long	1073741824
+	.long	1071277420
+	.long	1752107598
+	.long	1046366120
+	.long	3221225472
+	.long	1071266546
+	.long	1912656912
+	.long	1046352281
+	.long	3221225472
+	.long	1071255692
+	.long	2882676334
+	.long	1046406353
+	.long	1073741824
+	.long	1071244858
+	.long	963612460
+	.long	1045282811
+	.long	0
+	.long	1071234043
+	.long	3811255773
+	.long	1046231636
+	.long	1073741824
+	.long	1071223247
+	.long	1126055989
+	.long	3192224037
+	.long	2147483648
+	.long	1071212470
+	.long	2079145427
+	.long	1044432413
+	.long	0
+	.long	1071201713
+	.long	3611595621
+	.long	1043358745
+	.long	2147483648
+	.long	1071190974
+	.long	390522769
+	.long	1045888252
+	.long	1073741824
+	.long	1071180255
+	.long	4087939723
+	.long	3192930745
+	.long	3221225472
+	.long	1071169554
+	.long	1451494480
+	.long	3190219274
+	.long	1073741824
+	.long	1071158873
+	.long	427176194
+	.long	3193042022
+	.long	2147483648
+	.long	1071148210
+	.long	1882381948
+	.long	3192727946
+	.long	2147483648
+	.long	1071137566
+	.long	3736313771
+	.long	3192087019
+	.long	1073741824
+	.long	1071126941
+	.long	1560398816
+	.long	3193185715
+	.long	2147483648
+	.long	1071116334
+	.long	1021942441
+	.long	1041526696
+	.long	2147483648
+	.long	1071105746
+	.long	3517080249
+	.long	3193576041
+	.long	3221225472
+	.long	1071095176
+	.long	2248589878
+	.long	1044527624
+	.long	2147483648
+	.long	1071084625
+	.long	2412896695
+	.long	1046112867
+	.long	3221225472
+	.long	1071074092
+	.long	3834725738
+	.long	1044562378
+	.long	1073741824
+	.long	1071063578
+	.long	1150920407
+	.long	1043768986
+	.long	0
+	.long	1071053082
+	.long	1379393428
+	.long	3188690690
+	.long	0
+	.long	1071042604
+	.long	3058183278
+	.long	3193617655
+	.long	0
+	.long	1071032144
+	.long	421133665
+	.long	3193417186
+	.long	0
+	.long	1071021702
+	.long	2860161357
+	.long	3191816125
+	.long	0
+	.long	1071011278
+	.long	1742405964
+	.long	1043580240
+	.long	0
+	.long	1071000872
+	.long	2821215927
+	.long	3188984273
+	.long	3221225472
+	.long	1070990483
+	.long	510275597
+	.long	1045813401
+	.long	2147483648
+	.long	1070980113
+	.long	304266588
+	.long	3191193536
+	.long	3221225472
+	.long	1070969760
+	.long	1854784211
+	.long	1046302073
+	.long	0
+	.long	1070959426
+	.long	3773082854
+	.long	3193008899
+	.long	2147483648
+	.long	1070949108
+	.long	3003572392
+	.long	1046404879
+	.long	3221225472
+	.long	1070938808
+	.long	1702149204
+	.long	1046407257
+	.long	2147483648
+	.long	1070928526
+	.long	3935314439
+	.long	1046438280
+	.long	3221225472
+	.long	1070918261
+	.long	2677087609
+	.long	1045501749
+	.long	2147483648
+	.long	1070908014
+	.long	4190598039
+	.long	3193640515
+	.long	1073741824
+	.long	1070897784
+	.long	368874072
+	.long	1044879927
+	.long	2147483648
+	.long	1070887571
+	.long	3584052697
+	.long	3192024662
+	.long	3221225472
+	.long	1070877375
+	.long	3762307829
+	.long	1045886918
+	.long	1073741824
+	.long	1070867197
+	.long	495710920
+	.long	1046317072
+	.long	0
+	.long	1070857036
+	.long	2292768238
+	.long	3190887508
+	.long	3221225472
+	.long	1070846891
+	.long	1044078151
+	.long	3193772914
+	.long	1073741824
+	.long	1070836764
+	.long	3266010457
+	.long	1043443755
+	.long	3221225472
+	.long	1070826653
+	.long	3571665822
+	.long	1045547823
+	.long	1073741824
+	.long	1070816560
+	.long	393348347
+	.long	3190525143
+	.long	2147483648
+	.long	1070806483
+	.long	4241722498
+	.long	3192084193
+	.long	2147483648
+	.long	1070796423
+	.long	1693797068
+	.long	3192807972
+	.long	0
+	.long	1070786380
+	.long	2860086745
+	.long	1046331646
+	.long	2147483648
+	.long	1070776353
+	.long	1366141759
+	.long	3192979363
+	.long	1073741824
+	.long	1070766343
+	.long	737899283
+	.long	1045853346
+	.long	3221225472
+	.long	1070756349
+	.long	88734873
+	.long	1043881257
+	.long	3221225472
+	.long	1070746372
+	.long	1438003315
+	.long	3192917101
+	.long	0
+	.long	1070736412
+	.long	1066505530
+	.long	1043896695
+	.long	3221225472
+	.long	1070726467
+	.long	2706653041
+	.long	3191113643
+	.long	3221225472
+	.long	1070716539
+	.long	1321764476
+	.long	1039573724
+	.long	0
+	.long	1070706628
+	.long	1126753211
+	.long	1044502976
+	.long	2147483648
+	.long	1070696732
+	.long	773642884
+	.long	1044110727
+	.long	1073741824
+	.long	1070686853
+	.long	1263743406
+	.long	3193115278
+	.long	0
+	.long	1070676990
+	.long	3115237732
+	.long	3193089176
+	.long	3221225472
+	.long	1070667142
+	.long	3642626838
+	.long	3191146032
+	.long	2147483648
+	.long	1070657311
+	.long	2091696428
+	.long	1044337177
+	.long	1073741824
+	.long	1070647496
+	.long	3168958391
+	.long	1044197568
+	.long	0
+	.long	1070637697
+	.long	711148669
+	.long	3193181047
+	.long	2147483648
+	.long	1070627913
+	.long	4207182773
+	.long	3193402092
+	.long	3221225472
+	.long	1070618145
+	.long	918070640
+	.long	3192902845
+	.long	3221225472
+	.long	1070608393
+	.long	3135571447
+	.long	3192193928
+	.long	2147483648
+	.long	1070598657
+	.long	1043705517
+	.long	3193188604
+	.long	2147483648
+	.long	1070581777
+	.long	1886680492
+	.long	1043890286
+	.long	2147483648
+	.long	1070562367
+	.long	3373799420
+	.long	3191917802
+	.long	2147483648
+	.long	1070542988
+	.long	2919618025
+	.long	3192461752
+	.long	2147483648
+	.long	1070523640
+	.long	2926365158
+	.long	3193113492
+	.long	0
+	.long	1070504323
+	.long	519978638
+	.long	1045918846
+	.long	0
+	.long	1070485037
+	.long	3665353151
+	.long	3193546248
+	.long	0
+	.long	1070465781
+	.long	2327718958
+	.long	1045050797
+	.long	0
+	.long	1070446556
+	.long	345326861
+	.long	3188224716
+	.long	2147483648
+	.long	1070427361
+	.long	2263747488
+	.long	3192871328
+	.long	0
+	.long	1070408197
+	.long	3894192264
+	.long	1045693123
+	.long	0
+	.long	1070389063
+	.long	994321593
+	.long	1046347203
+	.long	2147483648
+	.long	1070369959
+	.long	3540366700
+	.long	1042296230
+	.long	0
+	.long	1070350886
+	.long	966420752
+	.long	3192400412
+	.long	2147483648
+	.long	1070331842
+	.long	1954511160
+	.long	3193467762
+	.long	2147483648
+	.long	1070312828
+	.long	1875003040
+	.long	1045485629
+	.long	0
+	.long	1070293845
+	.long	4003372005
+	.long	3193714109
+	.long	2147483648
+	.long	1070274890
+	.long	2216083644
+	.long	1045720399
+	.long	0
+	.long	1070255966
+	.long	1240985743
+	.long	1045879414
+	.long	0
+	.long	1070237071
+	.long	1573064162
+	.long	1046427916
+	.long	0
+	.long	1070218206
+	.long	2500166582
+	.long	3193848169
+	.long	2147483648
+	.long	1070199369
+	.long	862131539
+	.long	1045606065
+	.long	0
+	.long	1070180563
+	.long	3733427622
+	.long	3193545988
+	.long	0
+	.long	1070161785
+	.long	124515358
+	.long	1045504766
+	.long	2147483648
+	.long	1070143036
+	.long	689228007
+	.long	1044238436
+	.long	0
+	.long	1070124317
+	.long	976284835
+	.long	3189879978
+	.long	2147483648
+	.long	1070105626
+	.long	2997446224
+	.long	3193394244
+	.long	2147483648
+	.long	1070086964
+	.long	594985163
+	.long	3190453447
+	.long	2147483648
+	.long	1070068331
+	.long	3634411091
+	.long	3193012662
+	.long	0
+	.long	1070049727
+	.long	841316482
+	.long	3192551604
+	.long	0
+	.long	1070031151
+	.long	518949849
+	.long	3189505693
+	.long	2147483648
+	.long	1070012603
+	.long	207633604
+	.long	1043791305
+	.long	2147483648
+	.long	1069994084
+	.long	925415631
+	.long	3189658670
+	.long	2147483648
+	.long	1069975593
+	.long	3348775015
+	.long	1046231055
+	.long	0
+	.long	1069957131
+	.long	4137593961
+	.long	1045760644
+	.long	2147483648
+	.long	1069938696
+	.long	3081207972
+	.long	1046319652
+	.long	2147483648
+	.long	1069920290
+	.long	2912811806
+	.long	3193250863
+	.long	0
+	.long	1069901912
+	.long	1704663230
+	.long	3192651171
+	.long	2147483648
+	.long	1069883561
+	.long	1726887473
+	.long	3193427817
+	.long	2147483648
+	.long	1069865238
+	.long	516302873
+	.long	1042556919
+	.long	2147483648
+	.long	1069846943
+	.long	3737277289
+	.long	3192083505
+	.long	0
+	.long	1069828676
+	.long	2829909067
+	.long	3191628520
+	.long	0
+	.long	1069810436
+	.long	3474800299
+	.long	3187384991
+	.long	2147483648
+	.long	1069792223
+	.long	2041291754
+	.long	3186735048
+	.long	2147483648
+	.long	1069774038
+	.long	3100739290
+	.long	3192991951
+	.long	2147483648
+	.long	1069755880
+	.long	2641686866
+	.long	1042449846
+	.long	0
+	.long	1069737750
+	.long	1353612457
+	.long	3192928544
+	.long	2147483648
+	.long	1069719646
+	.long	1823398190
+	.long	3193125156
+	.long	0
+	.long	1069701570
+	.long	2629108558
+	.long	3192983089
+	.long	2147483648
+	.long	1069683520
+	.long	314889080
+	.long	3193178947
+	.long	2147483648
+	.long	1069665497
+	.long	3426846470
+	.long	1046055034
+	.long	0
+	.long	1069647502
+	.long	2451521798
+	.long	3193081447
+	.long	2147483648
+	.long	1069629532
+	.long	963200030
+	.long	1046315089
+	.long	0
+	.long	1069611590
+	.long	3644976987
+	.long	1046450297
+	.long	2147483648
+	.long	1069593674
+	.long	1514045874
+	.long	3193337489
+	.long	0
+	.long	1069575785
+	.long	2640752615
+	.long	3192734715
+	.long	0
+	.long	1069557922
+	.long	177381730
+	.long	3193107348
+	.long	0
+	.long	1069532650
+	.long	546871269
+	.long	1045601847
+	.long	0
+	.long	1069497029
+	.long	2220408187
+	.long	1045964849
+	.long	0
+	.long	1069461461
+	.long	3101209784
+	.long	3192417098
+	.long	0
+	.long	1069425944
+	.long	3768825782
+	.long	1046196178
+	.long	0
+	.long	1069390480
+	.long	737308942
+	.long	1043872555
+	.long	0
+	.long	1069355068
+	.long	1944808119
+	.long	3193362317
+	.long	0
+	.long	1069319707
+	.long	852406261
+	.long	3191004250
+	.long	0
+	.long	1069284398
+	.long	3202370743
+	.long	3192549796
+	.long	0
+	.long	1069249140
+	.long	900633975
+	.long	1043862575
+	.long	0
+	.long	1069213934
+	.long	3417168564
+	.long	3193213168
+	.long	0
+	.long	1069178778
+	.long	2513309972
+	.long	1046051953
+	.long	0
+	.long	1069143674
+	.long	1836846968
+	.long	1044036653
+	.long	0
+	.long	1069108621
+	.long	675391362
+	.long	3193334972
+	.long	0
+	.long	1069073618
+	.long	1859398086
+	.long	3191668729
+	.long	0
+	.long	1069038666
+	.long	3835994043
+	.long	3193252196
+	.long	0
+	.long	1069003764
+	.long	563337246
+	.long	3192060530
+	.long	0
+	.long	1068968912
+	.long	3715154210
+	.long	1045592716
+	.long	0
+	.long	1068934111
+	.long	51415636
+	.long	3192193939
+	.long	0
+	.long	1068899359
+	.long	822049108
+	.long	1045846080
+	.long	0
+	.long	1068864658
+	.long	3739043340
+	.long	3193184949
+	.long	0
+	.long	1068830006
+	.long	2500828997
+	.long	3193115638
+	.long	0
+	.long	1068795403
+	.long	1479335089
+	.long	1045458233
+	.long	0
+	.long	1068760850
+	.long	1914098598
+	.long	1045079833
+	.long	0
+	.long	1068726346
+	.long	1470374909
+	.long	1046125471
+	.long	0
+	.long	1068691892
+	.long	2048101185
+	.long	3192960024
+	.long	0
+	.long	1068657486
+	.long	801101802
+	.long	1042523454
+	.long	0
+	.long	1068623129
+	.long	412171467
+	.long	1044799425
+	.long	0
+	.long	1068588821
+	.long	2124566049
+	.long	1040459843
+	.long	0
+	.long	1068554561
+	.long	2087558263
+	.long	1046083102
+	.long	0
+	.long	1068520350
+	.long	290389316
+	.long	1045220023
+	.long	0
+	.long	1068473430
+	.long	393737815
+	.long	1045770085
+	.long	0
+	.long	1068405202
+	.long	3273111658
+	.long	3193594336
+	.long	0
+	.long	1068337068
+	.long	3076935419
+	.long	3191993934
+	.long	0
+	.long	1068269030
+	.long	1564279721
+	.long	1040713632
+	.long	0
+	.long	1068201088
+	.long	1950103787
+	.long	3191285473
+	.long	0
+	.long	1068133240
+	.long	111301617
+	.long	1046140470
+	.long	0
+	.long	1068065488
+	.long	2740933659
+	.long	1046091898
+	.long	0
+	.long	1067997832
+	.long	1267131462
+	.long	3192947024
+	.long	0
+	.long	1067930268
+	.long	629787343
+	.long	1045599114
+	.long	0
+	.long	1067862800
+	.long	2943029746
+	.long	3191100621
+	.long	0
+	.long	1067795426
+	.long	2538631151
+	.long	3193953989
+	.long	0
+	.long	1067728144
+	.long	3881795033
+	.long	3191377363
+	.long	0
+	.long	1067660956
+	.long	2752747058
+	.long	3186250103
+	.long	0
+	.long	1067593862
+	.long	892170014
+	.long	3193330390
+	.long	0
+	.long	1067526860
+	.long	2000985783
+	.long	3192968647
+	.long	0
+	.long	1067459950
+	.long	1954077304
+	.long	1044399908
+	.long	0
+	.long	1067335900
+	.long	4120702847
+	.long	3193150730
+	.long	0
+	.long	1067202448
+	.long	353489980
+	.long	1045676744
+	.long	0
+	.long	1067069184
+	.long	2609643324
+	.long	3192108001
+	.long	0
+	.long	1066936100
+	.long	2904433317
+	.long	1044836541
+	.long	0
+	.long	1066803200
+	.long	319656790
+	.long	1044863904
+	.long	0
+	.long	1066670484
+	.long	2407987331
+	.long	3192995083
+	.long	0
+	.long	1066537948
+	.long	2437746120
+	.long	3193127733
+	.long	0
+	.long	1066405592
+	.long	762570215
+	.long	3189946997
+	.long	0
+	.long	1066145040
+	.long	3317159694
+	.long	1046060125
+	.long	0
+	.long	1065881056
+	.long	2317845886
+	.long	3191679176
+	.long	0
+	.long	1065617424
+	.long	3665195816
+	.long	1045633853
+	.long	0
+	.long	1065354160
+	.long	2008730355
+	.long	3193898211
+	.long	0
+	.long	1064829264
+	.long	3746236192
+	.long	1046121471
+	.long	0
+	.long	1064303680
+	.long	885296753
+	.long	3191852441
+	.long	0
+	.long	1063253696
+	.long	449976495
+	.long	3192682663
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,8208
+	.space 496, 0x00 	# pad
+	.align 16
+HIGHMASK_Y:
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	4294967295
+	.type	HIGHMASK_Y,@object
+	.size	HIGHMASK_Y,16
+	.align 16
+T_exp:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	997195776
+	.long	4200250559
+	.long	1072696090
+	.long	2808127345
+	.long	3162830514
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	339411585
+	.long	1072701800
+	.long	264588982
+	.long	3162685233
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	772914124
+	.long	1072707540
+	.long	4004372762
+	.long	1013278737
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	1928746161
+	.long	1072713311
+	.long	983617676
+	.long	1015333753
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	238821257
+	.long	1072719114
+	.long	1469694871
+	.long	3163933563
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	728934454
+	.long	1072724948
+	.long	1413842688
+	.long	1015227188
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	4133881824
+	.long	1072730813
+	.long	2148155345
+	.long	3163979875
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	2602514713
+	.long	1072736711
+	.long	2268929336
+	.long	1015402860
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	1172597893
+	.long	1072742641
+	.long	114433263
+	.long	1016396169
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	590962156
+	.long	1072748603
+	.long	3829346666
+	.long	3164324173
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	1608493509
+	.long	1072754597
+	.long	3159622171
+	.long	3163856313
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	685187902
+	.long	1072760624
+	.long	378731989
+	.long	1015891691
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	2875075254
+	.long	1072766683
+	.long	4144233330
+	.long	3164382292
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	351405227
+	.long	1072772776
+	.long	3125337328
+	.long	3160871055
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	2471440686
+	.long	1072778901
+	.long	968836267
+	.long	3163263464
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1416741826
+	.long	1072785060
+	.long	2196380210
+	.long	1012462139
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	2257959872
+	.long	1072791252
+	.long	3802946148
+	.long	1014013503
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	1480023343
+	.long	1072797478
+	.long	2247196168
+	.long	1016376029
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	4162030108
+	.long	1072803737
+	.long	2763428480
+	.long	1016577925
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	2502433899
+	.long	1072810031
+	.long	2148595913
+	.long	1016072567
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	1588871207
+	.long	1072816359
+	.long	143439582
+	.long	3164011992
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2218315341
+	.long	1072822721
+	.long	2694295388
+	.long	3164337444
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	897099801
+	.long	1072829118
+	.long	754756297
+	.long	1016289581
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	2725843665
+	.long	1072835549
+	.long	1433917087
+	.long	1015887099
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	4219606026
+	.long	1072842015
+	.long	2434574742
+	.long	1015730124
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1897844341
+	.long	1072848517
+	.long	1254300460
+	.long	1016324514
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	874372905
+	.long	1072855054
+	.long	100263788
+	.long	1016989308
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	1972484976
+	.long	1072861626
+	.long	675290301
+	.long	3162688626
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	1724976915
+	.long	1072868234
+	.long	420909223
+	.long	3164165955
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	964107055
+	.long	1072874878
+	.long	2800439588
+	.long	3163881797
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	526652809
+	.long	1072881558
+	.long	4223459736
+	.long	1016927951
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	1253935211
+	.long	1072888274
+	.long	1395382931
+	.long	3160751189
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	3991843581
+	.long	1072895026
+	.long	4092853457
+	.long	1015634339
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	1000925746
+	.long	1072901816
+	.long	1018491672
+	.long	3164358120
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1726216749
+	.long	1072908642
+	.long	2466808228
+	.long	3162724981
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	2732492859
+	.long	1072915505
+	.long	2691479646
+	.long	3163304260
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	589198666
+	.long	1072922406
+	.long	2664346172
+	.long	3164206538
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	460407023
+	.long	1072929344
+	.long	4237175092
+	.long	3164187045
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3219942644
+	.long	1072936319
+	.long	3798990616
+	.long	1016417382
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1156440435
+	.long	1072943333
+	.long	2351451249
+	.long	1015015632
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	3743175029
+	.long	1072950384
+	.long	2072812490
+	.long	3163223651
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	3278348324
+	.long	1072957474
+	.long	3069497416
+	.long	1015799288
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	654919306
+	.long	1072964603
+	.long	3232961757
+	.long	3164096045
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1065662932
+	.long	1072971770
+	.long	2533670915
+	.long	1015578814
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	1118294578
+	.long	1072978976
+	.long	2197495694
+	.long	3160957977
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	1720398391
+	.long	1072986221
+	.long	3980678963
+	.long	3164348656
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	3784486610
+	.long	1072993505
+	.long	1581883040
+	.long	3162747529
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3933059031
+	.long	1073000829
+	.long	2133366768
+	.long	3162580408
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	3088564500
+	.long	1073008193
+	.long	1762311517
+	.long	1016094249
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	2178460671
+	.long	1073015597
+	.long	777878098
+	.long	3163891069
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2135241198
+	.long	1073023041
+	.long	1236747871
+	.long	1014637723
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	3896463087
+	.long	1073030525
+	.long	1139797873
+	.long	3162282381
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	4109806887
+	.long	1073038050
+	.long	422403966
+	.long	1015517805
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	3723038930
+	.long	1073045616
+	.long	378465264
+	.long	3163618158
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3689071823
+	.long	1073053223
+	.long	2321004996
+	.long	3163601292
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	671025100
+	.long	1073060872
+	.long	3832014351
+	.long	3164070606
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	4222122499
+	.long	1073068561
+	.long	1277378074
+	.long	3164305313
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	2425981843
+	.long	1073076293
+	.long	2830390851
+	.long	3164395175
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	551349105
+	.long	1073084067
+	.long	3821916050
+	.long	3163155165
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	3872257780
+	.long	1073091882
+	.long	1253592103
+	.long	1017006910
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	488188413
+	.long	1073099741
+	.long	3199821029
+	.long	1016612624
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	4273770423
+	.long	1073107641
+	.long	3383180809
+	.long	3164267477
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3339203574
+	.long	1073115585
+	.long	1483497780
+	.long	3163457330
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	2979960120
+	.long	1073123572
+	.long	2599109725
+	.long	1015547069
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	4201977662
+	.long	1073131602
+	.long	748330254
+	.long	1014642933
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	3721688645
+	.long	1073139676
+	.long	3069276937
+	.long	1016887977
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	2555984613
+	.long	1073147794
+	.long	2652555442
+	.long	3163601268
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	1727278727
+	.long	1073155956
+	.long	3562710623
+	.long	1012520516
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	2263535754
+	.long	1073164162
+	.long	752233586
+	.long	3163687584
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	903334909
+	.long	1073172413
+	.long	1636462108
+	.long	1016088573
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	2980802057
+	.long	1073180708
+	.long	378619896
+	.long	1016821879
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	950803702
+	.long	1073189049
+	.long	1655364926
+	.long	1016285608
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	158781403
+	.long	1073197435
+	.long	2221464712
+	.long	3164335029
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	1660913392
+	.long	1073205866
+	.long	4218599604
+	.long	1016184283
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	2224145553
+	.long	1073214343
+	.long	3482522030
+	.long	3162537745
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2916157145
+	.long	1073222866
+	.long	219487565
+	.long	1016357943
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	515457527
+	.long	1073231436
+	.long	836709333
+	.long	1016699802
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	396319521
+	.long	1073240052
+	.long	4172420816
+	.long	3160123208
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3643909174
+	.long	1073248714
+	.long	3537586109
+	.long	1015403223
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	2759350287
+	.long	1073257424
+	.long	1148526634
+	.long	1016943509
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	3134592888
+	.long	1073266181
+	.long	4232266862
+	.long	1017039710
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	1577608921
+	.long	1073274986
+	.long	1875489510
+	.long	3164016970
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	3492293770
+	.long	1073283838
+	.long	2248032210
+	.long	1016435402
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	1403662306
+	.long	1073292739
+	.long	2788809599
+	.long	3162719583
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	727685349
+	.long	1073301688
+	.long	2038246809
+	.long	3163407318
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2591453363
+	.long	1073310685
+	.long	2132396182
+	.long	3160122774
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	3833209506
+	.long	1073319731
+	.long	2722920684
+	.long	1014803418
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	1297350157
+	.long	1073328827
+	.long	1308022040
+	.long	3164461134
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	424392917
+	.long	1073337972
+	.long	2749202995
+	.long	3163887294
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2366108318
+	.long	1073347166
+	.long	2867985102
+	.long	3162810830
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3985553595
+	.long	1073356410
+	.long	4002146062
+	.long	1016882712
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2152073944
+	.long	1073365705
+	.long	1486860576
+	.long	3164252032
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	2331271250
+	.long	1073375050
+	.long	812057446
+	.long	1013256022
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1405169241
+	.long	1073384446
+	.long	2998539689
+	.long	3163879527
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	557149882
+	.long	1073393893
+	.long	3672720709
+	.long	1015585841
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	977020788
+	.long	1073403391
+	.long	3065100517
+	.long	1016590139
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	3861050111
+	.long	1073412940
+	.long	254893773
+	.long	3163861756
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	1822067026
+	.long	1073422542
+	.long	1241994956
+	.long	1016388866
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	364333489
+	.long	1073432196
+	.long	3923737744
+	.long	3162469949
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	703710506
+	.long	1073441902
+	.long	1384660846
+	.long	1016244467
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	4062661092
+	.long	1073451660
+	.long	1422616006
+	.long	3164303894
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	3080351519
+	.long	1073461472
+	.long	3379126789
+	.long	3158266577
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	3287523847
+	.long	1073471337
+	.long	1625971539
+	.long	3158058531
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	1631695677
+	.long	1073481256
+	.long	2717633076
+	.long	3163392602
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	3657065772
+	.long	1073491228
+	.long	399025623
+	.long	3164005654
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	2029714210
+	.long	1073501255
+	.long	613660079
+	.long	1016147719
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2307442995
+	.long	1073511336
+	.long	3190117721
+	.long	3163453115
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	1464976603
+	.long	1073521472
+	.long	3507292405
+	.long	3163026110
+	.long	3706687593
+	.long	1073526560
+	.long	3521726939
+	.long	1014301643
+	.long	778901109
+	.long	1073531663
+	.long	2248183954
+	.long	3162317327
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1532734324
+	.long	1073541909
+	.long	3094216535
+	.long	3164211433
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	721996136
+	.long	1073552211
+	.long	563754734
+	.long	1016419894
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3939148246
+	.long	1073562568
+	.long	3210352148
+	.long	1016322899
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	3898795731
+	.long	1073572982
+	.long	1249994144
+	.long	1012918394
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	1912561781
+	.long	1073583453
+	.long	3147495102
+	.long	1016726829
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	3594158869
+	.long	1073593980
+	.long	2456521700
+	.long	3164305137
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	1679558232
+	.long	1073604565
+	.long	2390342287
+	.long	3164382546
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	1796832535
+	.long	1073615207
+	.long	3176955716
+	.long	3161634089
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	991358482
+	.long	1073625907
+	.long	838715019
+	.long	3164206244
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	610758006
+	.long	1073636665
+	.long	1965209397
+	.long	3162914808
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2009970496
+	.long	1073647481
+	.long	2159039665
+	.long	3163621524
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	2256325230
+	.long	1073658356
+	.long	580117746
+	.long	1016365871
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	2719515920
+	.long	1073669290
+	.long	2760332941
+	.long	1016186509
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	481706282
+	.long	1073680284
+	.long	1696079173
+	.long	3163759104
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1222472308
+	.long	1073691337
+	.long	1054357470
+	.long	3162069594
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2038973688
+	.long	1073702450
+	.long	892941374
+	.long	1017095035
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	35929225
+	.long	1073713624
+	.long	2809788041
+	.long	3160485544
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	915592468
+	.long	1073724858
+	.long	352947894
+	.long	3162072947
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.long	1797923801
+	.long	1073736153
+	.long	1950547427
+	.long	1014277635
+	.type	T_exp,@object
+	.size	T_exp,4096
+	.space 512, 0x00 	# pad
+	.align 16
+e_coeff:
+	.long	3884607281
+	.long	1062590591
+	.long	3607404736
+	.long	1068264200
+	.long	1874480759
+	.long	1065595563
+	.long	4286760335
+	.long	1070514109
+	.long	4277811695
+	.long	1072049730
+	.long	0
+	.long	0
+	.type	e_coeff,@object
+	.size	e_coeff,48
+	.align 16
+coeff_h:
+	.long	0
+	.long	3218479616
+	.long	0
+	.long	3210587105
+	.type	coeff_h,@object
+	.size	coeff_h,16
+	.align 16
+HIGHMASK_LOG_X:
+	.long	4160749568
+	.long	4294967295
+	.long	0
+	.long	4294965248
+	.type	HIGHMASK_LOG_X,@object
+	.size	HIGHMASK_LOG_X,16
+	.align 8
+HALFMASK:
+	.long	4160749568
+	.long	4294967295
+	.long	4160749568
+	.long	4294967295
+	.type	HALFMASK,@object
+	.size	HALFMASK,16
+	.align 8
+log2:
+	.long	4277811695
+	.long	1072049730
+	.long	4277811695
+	.long	3219533378
+	.type	log2,@object
+	.size	log2,16
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_pow.1-.
+	.4byte ..___tag_value_pow.5-..___tag_value_pow.1
+	.2byte 0x0400
+	.4byte ..___tag_value_pow.3-..___tag_value_pow.1
+	.2byte 0x300e
+	.byte 0x04
+	.4byte ..___tag_value_pow.4-..___tag_value_pow.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/e_sinh.S b/libm/x86_64/e_sinh.S
new file mode 100644
index 0000000..4d8db63
--- /dev/null
+++ b/libm/x86_64/e_sinh.S
@@ -0,0 +1,1430 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//  sinh(x)=(exp(x)-exp(-x))/2
+//
+//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//          L2EH+L2EL (upper 26, lower 53 bits)
+//
+//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
+//                              f=0.b1 b2 ... b7, k integer
+//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
+//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
+//
+//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
+//                       for |x| in [23/64,3*2^7)
+//  e^{-|x|}=2^{-k-f}*2^{-r}
+//
+//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
+//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
+//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
+//
+//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
+//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
+//
+//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
+//  the result is checked for overflow.
+//
+//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
+//  To reduce rounding errors, the p3*x^3 term is computed as
+//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
+//  where x=xh+xl, (xh are the leading 17 bits of x), and
+//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
+//  (error bound for polynomial expansion is below 0.51 ulp)
+//
+// Special cases:
+//  sinh(NaN) = quiet NaN, and raise invalid exception
+//  sinh(+/-INF) = +/-INF
+//  sinh(x) = x for subnormals
+//  for finite argument, only sinh(0)=0 is exact
+//  For IEEE double
+//    sinh(x) overflows  for x > 
+//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  sinh
+ENTRY(sinh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_sinh.1:
+        pushq     %rsi
+..___tag_value_sinh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16343, %ecx
+        cmpl      $177, %ecx
+        jae       .L_2TAG_PACKET_0.0.2
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        shll      $3, %edx
+        orl       %edx, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        xorpd     %xmm5, %xmm5
+        subsd     %xmm6, %xmm3
+        movapd    cv(%rip), %xmm4
+        addsd     %xmm1, %xmm2
+        movapd    16+cv(%rip), %xmm6
+        subsd     %xmm3, %xmm7
+        movl      $32704, %edx
+        pinsrw    $3, %edx, %xmm5
+        movapd    32+cv(%rip), %xmm1
+        addsd     %xmm7, %xmm2
+        movl      $127, %edx
+        andl      %eax, %edx
+        addl      %edx, %edx
+        shrl      $3, %eax
+        andl      $65520, %eax
+        addl      $16352, %eax
+        xorpd     %xmm0, %xmm0
+        cmpl      $161, %ecx
+        jae       .L_2TAG_PACKET_1.0.2
+        pshufd    $68, %xmm5, %xmm5
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        psubw     %xmm0, %xmm5
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        lea       T2_neg_f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm5
+        pshufd    $68, %xmm2, %xmm3
+        movapd    48+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        mulpd     %xmm3, %xmm3
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulpd     64+cv(%rip), %xmm2
+        mulpd     %xmm3, %xmm1
+        mulpd     %xmm3, %xmm7
+        mulpd     %xmm3, %xmm4
+        mulpd     %xmm3, %xmm1
+        addpd     %xmm7, %xmm6
+        movq      %xmm0, %xmm7
+        addpd     %xmm1, %xmm4
+        shufpd    $0, %xmm5, %xmm7
+        subpd     %xmm5, %xmm0
+        mulpd     %xmm7, %xmm2
+        addpd     %xmm6, %xmm4
+        subsd     %xmm0, %xmm7
+        mulpd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        subsd     %xmm5, %xmm7
+        addpd     %xmm2, %xmm4
+        addsd     %xmm6, %xmm7
+        pshufd    $238, %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        subl      $16352, %eax
+        movl      %eax, %ecx
+        andl      $32752, %eax
+        shrl      $1, %eax
+        andl      $65520, %eax
+        subl      %eax, %ecx
+        addl      $16352, %eax
+        pinsrw    $3, %eax, %xmm0
+        pshufd    $68, %xmm0, %xmm0
+        lea       T2f(%rip), %r8
+        mulpd     (%r8,%rdx,8), %xmm0
+        pshufd    $68, %xmm2, %xmm3
+        movsd     48+cv(%rip), %xmm7
+        mulsd     %xmm3, %xmm3
+        mulsd     %xmm2, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     64+cv(%rip), %xmm2
+        mulsd     %xmm3, %xmm1
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm3, %xmm4
+        addl      $16368, %ecx
+        pinsrw    $3, %ecx, %xmm5
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm7, %xmm6
+        addsd     %xmm1, %xmm4
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm6, %xmm4
+        mulsd     %xmm2, %xmm4
+        pshufd    $238, %xmm0, %xmm6
+        addsd     %xmm6, %xmm4
+        addsd     %xmm4, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm5, %xmm0
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        movl      $127, %edx
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        addl      $16343, %ecx
+        cmpl      $16343, %ecx
+        ja        .L_2TAG_PACKET_3.0.2
+        cmpl      $15856, %ecx
+        jb        .L_2TAG_PACKET_4.0.2
+        movapd    pv(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm6
+        mulpd     %xmm5, %xmm5
+        movapd    16+pv(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm7
+        movapd    32+pv(%rip), %xmm3
+        pshufd    $68, %xmm0, %xmm4
+        andpd     MASK3(%rip), %xmm6
+        mulpd     %xmm5, %xmm1
+        mulsd     %xmm5, %xmm2
+        subpd     %xmm6, %xmm4
+        mulpd     %xmm5, %xmm7
+        addpd     %xmm3, %xmm1
+        pshufd    $68, %xmm6, %xmm3
+        mulpd     %xmm5, %xmm5
+        mulsd     %xmm7, %xmm2
+        mulpd     %xmm7, %xmm1
+        pshufd    $68, %xmm0, %xmm7
+        mulsd     %xmm6, %xmm6
+        addsd     %xmm7, %xmm7
+        mulsd     %xmm4, %xmm4
+        mulpd     %xmm5, %xmm1
+        addsd     %xmm0, %xmm7
+        mulsd     %xmm3, %xmm6
+        mulsd     %xmm3, %xmm7
+        pshufd    $238, %xmm1, %xmm3
+        mulsd     %xmm5, %xmm1
+        pshufd    $238, %xmm4, %xmm5
+        addsd     %xmm2, %xmm3
+        pshufd    $238, %xmm2, %xmm2
+        addsd     %xmm4, %xmm7
+        movq      %xmm0, %xmm4
+        mulsd     %xmm2, %xmm6
+        mulsd     %xmm5, %xmm7
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm2, %xmm7
+        subsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm1
+        addsd     %xmm4, %xmm6
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        cmpl      $16, %ecx
+        jae       .L_2TAG_PACKET_5.0.2
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.5
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $15344, %edx
+        pinsrw    $3, %edx, %xmm3
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        mulsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_3.0.2:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        xorpd     %xmm0, %xmm0
+        movl      $32736, %eax
+        pinsrw    $3, %eax, %xmm0
+        orl       %edx, %eax
+        pinsrw    $3, %eax, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_6.0.2:
+        xorpd     %xmm1, %xmm1
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm1
+        andnpd    %xmm0, %xmm1
+        mulsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        movq      %xmm0, (%rsp)
+..B1.3:
+        movq      (%rsp), %xmm0
+.L_2TAG_PACKET_7.0.2:
+..B1.5:
+        popq      %rcx
+..___tag_value_sinh.4:
+        ret       
+..___tag_value_sinh.5:
+END(sinh)
+# -- End  sinh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1080497479
+	.long	4166901572
+	.long	1053077003
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3607404736
+	.long	1044146952
+	.long	3607404736
+	.long	3191630600
+	.long	4277811695
+	.long	1063661122
+	.long	4277811695
+	.long	3211144770
+	.long	2140175755
+	.long	1033864261
+	.long	2140175755
+	.long	1033864261
+	.long	4289495988
+	.long	1054113747
+	.long	4289495988
+	.long	1054113747
+	.long	4277811695
+	.long	1064709698
+	.long	4277811695
+	.long	1064709698
+	.type	cv,@object
+	.size	cv,80
+	.align 16
+T2f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	2851812149
+	.long	1072698941
+	.long	2595802551
+	.long	1016815913
+	.long	1048019041
+	.long	1072704666
+	.long	1398474845
+	.long	3161559171
+	.long	3899555717
+	.long	1072710421
+	.long	427280750
+	.long	3163595548
+	.long	3541402996
+	.long	1072716208
+	.long	2759177317
+	.long	1015903202
+	.long	702412510
+	.long	1072722027
+	.long	3803266087
+	.long	3163328991
+	.long	410360776
+	.long	1072727877
+	.long	1269990655
+	.long	1013024446
+	.long	3402036099
+	.long	1072733758
+	.long	405889334
+	.long	1016154232
+	.long	1828292879
+	.long	1072739672
+	.long	1255956747
+	.long	1016636974
+	.long	728909815
+	.long	1072745618
+	.long	383930225
+	.long	1016078044
+	.long	852742562
+	.long	1072751596
+	.long	667253586
+	.long	1010842135
+	.long	2952712987
+	.long	1072757606
+	.long	3293494651
+	.long	3161168877
+	.long	3490863953
+	.long	1072763649
+	.long	960797498
+	.long	3163997456
+	.long	3228316108
+	.long	1072769725
+	.long	3010241991
+	.long	3159471380
+	.long	2930322912
+	.long	1072775834
+	.long	2599499422
+	.long	3163762623
+	.long	3366293073
+	.long	1072781976
+	.long	3119426314
+	.long	1015169130
+	.long	1014845819
+	.long	1072788152
+	.long	3117910646
+	.long	3162607681
+	.long	948735466
+	.long	1072794361
+	.long	3516338028
+	.long	3163623459
+	.long	3949972341
+	.long	1072800603
+	.long	2068408548
+	.long	1015962444
+	.long	2214878420
+	.long	1072806880
+	.long	892270087
+	.long	3164164998
+	.long	828946858
+	.long	1072813191
+	.long	10642492
+	.long	1016988014
+	.long	586995997
+	.long	1072819536
+	.long	41662348
+	.long	3163676568
+	.long	2288159958
+	.long	1072825915
+	.long	2169144469
+	.long	1015924597
+	.long	2440944790
+	.long	1072832329
+	.long	2492769774
+	.long	1015196030
+	.long	1853186616
+	.long	1072838778
+	.long	3066496371
+	.long	1016705150
+	.long	1337108031
+	.long	1072845262
+	.long	3203724452
+	.long	1015726421
+	.long	1709341917
+	.long	1072851781
+	.long	2571168217
+	.long	1015201075
+	.long	3790955393
+	.long	1072858335
+	.long	2352942462
+	.long	3164228666
+	.long	4112506593
+	.long	1072864925
+	.long	2947355221
+	.long	1015419624
+	.long	3504003472
+	.long	1072871551
+	.long	3594001060
+	.long	3158379228
+	.long	2799960843
+	.long	1072878213
+	.long	1423655381
+	.long	1016070727
+	.long	2839424854
+	.long	1072884911
+	.long	1171596163
+	.long	1014090255
+	.long	171030293
+	.long	1072891646
+	.long	3526460132
+	.long	1015477354
+	.long	4232894513
+	.long	1072898416
+	.long	2383938684
+	.long	1015717095
+	.long	2992903935
+	.long	1072905224
+	.long	2218154406
+	.long	1016276769
+	.long	1603444721
+	.long	1072912069
+	.long	1548633640
+	.long	3163249902
+	.long	926591435
+	.long	1072918951
+	.long	3208833762
+	.long	3163962090
+	.long	1829099622
+	.long	1072925870
+	.long	1016661181
+	.long	3164509581
+	.long	887463927
+	.long	1072932827
+	.long	3596744163
+	.long	3161842742
+	.long	3272845541
+	.long	1072939821
+	.long	928852419
+	.long	3164536824
+	.long	1276261410
+	.long	1072946854
+	.long	300981948
+	.long	1015732745
+	.long	78413852
+	.long	1072953925
+	.long	4183226867
+	.long	3164065827
+	.long	569847338
+	.long	1072961034
+	.long	472945272
+	.long	3160339305
+	.long	3645941911
+	.long	1072968181
+	.long	3814685081
+	.long	3162621917
+	.long	1617004845
+	.long	1072975368
+	.long	82804944
+	.long	1011391354
+	.long	3978100823
+	.long	1072982593
+	.long	3513027190
+	.long	1016894539
+	.long	3049340112
+	.long	1072989858
+	.long	3062915824
+	.long	1014219171
+	.long	4040676318
+	.long	1072997162
+	.long	4090609238
+	.long	1016712034
+	.long	3577096743
+	.long	1073004506
+	.long	2951496418
+	.long	1014842263
+	.long	2583551245
+	.long	1073011890
+	.long	3161094195
+	.long	1016655067
+	.long	1990012071
+	.long	1073019314
+	.long	3529070563
+	.long	3163861769
+	.long	2731501122
+	.long	1073026778
+	.long	1774031855
+	.long	3163518597
+	.long	1453150082
+	.long	1073034283
+	.long	498154669
+	.long	3162536638
+	.long	3395129871
+	.long	1073041828
+	.long	4025345435
+	.long	3163383964
+	.long	917841882
+	.long	1073049415
+	.long	18715565
+	.long	1016707884
+	.long	3566716925
+	.long	1073057042
+	.long	1536826856
+	.long	1015191009
+	.long	3712504873
+	.long	1073064711
+	.long	88491949
+	.long	1016476236
+	.long	2321106615
+	.long	1073072422
+	.long	2171176610
+	.long	1010584347
+	.long	363667784
+	.long	1073080175
+	.long	813753950
+	.long	1016833785
+	.long	3111574537
+	.long	1073087969
+	.long	2606161479
+	.long	3163808322
+	.long	2956612997
+	.long	1073095806
+	.long	2118169751
+	.long	3163784129
+	.long	885834528
+	.long	1073103686
+	.long	1973258547
+	.long	3163310140
+	.long	2186617381
+	.long	1073111608
+	.long	2270764084
+	.long	3164321289
+	.long	3561793907
+	.long	1073119573
+	.long	1157054053
+	.long	1012938926
+	.long	1719614413
+	.long	1073127582
+	.long	330458198
+	.long	3164331316
+	.long	1963711167
+	.long	1073135634
+	.long	1744767757
+	.long	3161622870
+	.long	1013258799
+	.long	1073143730
+	.long	1748797611
+	.long	3161177658
+	.long	4182873220
+	.long	1073151869
+	.long	629542646
+	.long	3163044879
+	.long	3907805044
+	.long	1073160053
+	.long	2257091225
+	.long	3162598983
+	.long	1218806132
+	.long	1073168282
+	.long	1818613052
+	.long	3163597017
+	.long	1447192521
+	.long	1073176555
+	.long	1462857171
+	.long	3163563097
+	.long	1339972927
+	.long	1073184873
+	.long	167908909
+	.long	1016620728
+	.long	1944781191
+	.long	1073193236
+	.long	3993278767
+	.long	3162772855
+	.long	19972402
+	.long	1073201645
+	.long	3507899862
+	.long	1017057868
+	.long	919555682
+	.long	1073210099
+	.long	3121969534
+	.long	1013996802
+	.long	1413356050
+	.long	1073218599
+	.long	1651349291
+	.long	3163716742
+	.long	2571947539
+	.long	1073227145
+	.long	3558159064
+	.long	3164425245
+	.long	1176749997
+	.long	1073235738
+	.long	2738998779
+	.long	3163084420
+	.long	2604962541
+	.long	1073244377
+	.long	2614425274
+	.long	3164587768
+	.long	3649726105
+	.long	1073253063
+	.long	4085036346
+	.long	1016698050
+	.long	1110089947
+	.long	1073261797
+	.long	1451641639
+	.long	1016523249
+	.long	380978316
+	.long	1073270578
+	.long	854188970
+	.long	3161511262
+	.long	2568320822
+	.long	1073279406
+	.long	2732824428
+	.long	1015401491
+	.long	194117574
+	.long	1073288283
+	.long	777528612
+	.long	3164460665
+	.long	2966275557
+	.long	1073297207
+	.long	2176155324
+	.long	3160891335
+	.long	3418903055
+	.long	1073306180
+	.long	2527457337
+	.long	3161869180
+	.long	2682146384
+	.long	1073315202
+	.long	2082178513
+	.long	3164411995
+	.long	1892288442
+	.long	1073324273
+	.long	2446255666
+	.long	3163648957
+	.long	2191782032
+	.long	1073333393
+	.long	2960257726
+	.long	1014791238
+	.long	434316067
+	.long	1073342563
+	.long	2028358766
+	.long	1014506698
+	.long	2069751141
+	.long	1073351782
+	.long	1562170675
+	.long	3163773257
+	.long	3964284211
+	.long	1073361051
+	.long	2111583915
+	.long	1016475740
+	.long	2990417245
+	.long	1073370371
+	.long	3683467745
+	.long	3164417902
+	.long	321958744
+	.long	1073379742
+	.long	3401933767
+	.long	1016843134
+	.long	1434058175
+	.long	1073389163
+	.long	251133233
+	.long	1016134345
+	.long	3218338682
+	.long	1073398635
+	.long	3404164304
+	.long	3163525684
+	.long	2572866477
+	.long	1073408159
+	.long	878562433
+	.long	1016570317
+	.long	697153126
+	.long	1073417735
+	.long	1283515429
+	.long	3164331765
+	.long	3092190715
+	.long	1073427362
+	.long	814012168
+	.long	3160571998
+	.long	2380618042
+	.long	1073437042
+	.long	3149557219
+	.long	3164369375
+	.long	4076559943
+	.long	1073446774
+	.long	2119478331
+	.long	3161806927
+	.long	815859274
+	.long	1073456560
+	.long	240396590
+	.long	3164536019
+	.long	2420883922
+	.long	1073466398
+	.long	2049810052
+	.long	1015168464
+	.long	1540824585
+	.long	1073476290
+	.long	1064017011
+	.long	3164536266
+	.long	3716502172
+	.long	1073486235
+	.long	2303740125
+	.long	1015091301
+	.long	1610600570
+	.long	1073496235
+	.long	3766732298
+	.long	1016808759
+	.long	777507147
+	.long	1073506289
+	.long	4282924205
+	.long	1016236109
+	.long	2483480501
+	.long	1073516397
+	.long	1216371780
+	.long	1014082748
+	.long	3706687593
+	.long	1073526560
+	.long	3521726940
+	.long	1014301643
+	.long	1432208378
+	.long	1073536779
+	.long	1401068914
+	.long	3163412539
+	.long	1242007932
+	.long	1073547053
+	.long	1132034716
+	.long	3164388407
+	.long	135105010
+	.long	1073557383
+	.long	1906148728
+	.long	3164424315
+	.long	3707479175
+	.long	1073567768
+	.long	3613079303
+	.long	1015213314
+	.long	382305176
+	.long	1073578211
+	.long	2347622376
+	.long	3163627201
+	.long	64696965
+	.long	1073588710
+	.long	1768797490
+	.long	1016865536
+	.long	4076975200
+	.long	1073599265
+	.long	2029000899
+	.long	1016257111
+	.long	863738719
+	.long	1073609879
+	.long	1326992220
+	.long	3163661773
+	.long	351641897
+	.long	1073620550
+	.long	2172261526
+	.long	3164059175
+	.long	3884662774
+	.long	1073631278
+	.long	2158611599
+	.long	1015258761
+	.long	4224142467
+	.long	1073642065
+	.long	3389820386
+	.long	1016255778
+	.long	2728693978
+	.long	1073652911
+	.long	396109971
+	.long	3164511267
+	.long	764307441
+	.long	1073663816
+	.long	3021057420
+	.long	3164378099
+	.long	3999357479
+	.long	1073674779
+	.long	2258941616
+	.long	1016973300
+	.long	929806999
+	.long	1073685803
+	.long	3205336643
+	.long	1016308133
+	.long	1533953344
+	.long	1073696886
+	.long	769171851
+	.long	1016714209
+	.long	2912730644
+	.long	1073708029
+	.long	3490067722
+	.long	3164453650
+	.long	2174652632
+	.long	1073719233
+	.long	4087714590
+	.long	1015498835
+	.long	730821105
+	.long	1073730498
+	.long	2523232743
+	.long	1013115764
+	.type	T2f,@object
+	.size	T2f,2048
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,2048
+	.align 16
+pv:
+	.long	329805064
+	.long	1038488134
+	.long	2773927730
+	.long	1053236707
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1744127201
+	.long	1046144581
+	.long	436314137
+	.long	1059717536
+	.type	pv,@object
+	.size	pv,48
+	.align 16
+MASK3:
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.type	MASK3,@object
+	.size	MASK3,16
+	.align 8
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_sinh.1-.
+	.4byte ..___tag_value_sinh.5-..___tag_value_sinh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_sinh.3-..___tag_value_sinh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_sinh.4-..___tag_value_sinh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/floor.S b/libm/x86_64/floor.S
new file mode 100644
index 0000000..dc80e88
--- /dev/null
+++ b/libm/x86_64/floor.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(floor)
+roundsd $0x1,%xmm0,%xmm0
+retq
+END(floor)
diff --git a/libm/x86_64/floorf.S b/libm/x86_64/floorf.S
new file mode 100644
index 0000000..832f9c5
--- /dev/null
+++ b/libm/x86_64/floorf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(floorf)
+roundss $0x1,%xmm0,%xmm0
+retq
+END(floorf)
diff --git a/libm/x86_64/s_atan.S b/libm/x86_64/s_atan.S
new file mode 100644
index 0000000..2453e10
--- /dev/null
+++ b/libm/x86_64/s_atan.S
@@ -0,0 +1,927 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// This implementation uses the main path for |x| in [2^{-5},2^65).
+// For |x| in [2^{-64},2^{-5}), a secondary path is used.
+// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
+// We use the following definition of B and X` so that the formula
+// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
+//
+// X = (-1)^s * 2^k * 1. x1 x2 ... x52
+//
+// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
+// Define One = 0 if k >= 5; and One = 1 otherwise
+// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
+// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
+//
+// Tau is 0 if k <= -6;
+// Tau is atan( B )  if -5 <= k <= 4
+// Tau is pi/2 if k >= 5
+//
+// Special cases:
+//  atan(NaN) = quiet NaN
+//  atan(+/-INF) = +/-Pi/2
+//  atan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  atan
+ENTRY(atan)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_atan.1:
+        pushq     %rsi
+..___tag_value_atan.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      $0xffff000000000000, %r8
+        movd      %r8, %xmm3
+        movq      ONEMASK(%rip), %xmm5
+        movq      $0x800000000000, %r9
+        movd      %r9, %xmm4
+        pextrw    $3, %xmm0, %edx
+        andpd     %xmm0, %xmm3
+        pshufd    $68, %xmm0, %xmm1
+        orpd      %xmm4, %xmm3
+        movl      %edx, %eax
+        andl      $32767, %edx
+        subl      $16288, %edx
+        cmpl      $159, %edx
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm3, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        divsd     %xmm1, %xmm0
+        addl      $1, %edx
+        movq      a2(%rip), %xmm2
+        movq      b2(%rip), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        lea       atan_tbl(%rip), %r8
+        movq      (%r8,%rdx,8), %xmm6
+        movq      8(%r8,%rdx,8), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movq      8+a2(%rip), %xmm7
+        movddup   %xmm0, %xmm1
+        mulsd     %xmm0, %xmm0
+        movddup   %xmm1, %xmm3
+        addsd     %xmm6, %xmm1
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm4
+        subsd     %xmm1, %xmm6
+        mulsd     %xmm0, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm0
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm0
+        addsd     8+b2(%rip), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm6, %xmm0
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_0.0.1:
+        addl      $944, %edx
+        cmpl      $1103, %edx
+        ja        .L_2TAG_PACKET_2.0.1
+        movq      a2(%rip), %xmm4
+        movq      b2(%rip), %xmm7
+        movq      (%rsp), %xmm0
+        mulsd     %xmm1, %xmm1
+        movq      8+a2(%rip), %xmm2
+        movq      8+b2(%rip), %xmm5
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm1, %xmm7
+        movq      %xmm1, %xmm6
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm2
+        mulsd     %xmm6, %xmm7
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm7, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_2.0.1:
+        addl      $15344, %edx
+        cmpl      $16368, %edx
+        ja        .L_2TAG_PACKET_3.0.1
+        movq      (%rsp), %xmm0
+        movq      (%rsp), %xmm1
+        cmpl      $16, %edx
+        jae       .L_2TAG_PACKET_1.0.1
+        mulsd     %xmm0, %xmm1
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_3.0.1:
+        cmpl      $17392, %edx
+        jae       .L_2TAG_PACKET_4.0.1
+        movq      $0xbff0000000000000, %r8
+        movd      %r8, %xmm1
+        divsd     %xmm0, %xmm1
+        movq      a2(%rip), %xmm2
+        movq      b2(%rip), %xmm4
+        andl      $32768, %eax
+        xorpd     %xmm7, %xmm7
+        pinsrw    $3, %eax, %xmm7
+        addl      %edx, %edx
+        movq      pi_table(%rip), %xmm6
+        movq      8+pi_table(%rip), %xmm5
+        xorpd     %xmm7, %xmm5
+        xorpd     %xmm7, %xmm6
+        movq      8+a2(%rip), %xmm7
+        movddup   %xmm1, %xmm0
+        mulsd     %xmm1, %xmm1
+        movddup   %xmm0, %xmm3
+        addsd     %xmm6, %xmm0
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm1, %xmm4
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm7, %xmm2
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm3, %xmm6
+        mulsd     %xmm2, %xmm1
+        addsd     8+b2(%rip), %xmm4
+        addsd     %xmm5, %xmm6
+        mulsd     %xmm4, %xmm1
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_4.0.1:
+        movq      (%rsp), %xmm4
+        movq      SGNMASK(%rip), %xmm0
+        movq      pi_table(%rip), %xmm2
+        movq      8+pi_table(%rip), %xmm3
+        movd      %xmm1, %eax
+        psrlq     $32, %xmm1
+        movd      %xmm1, %edx
+        andl      $2147483647, %edx
+        cmpl      $2146435072, %edx
+        jae       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_6.0.1:
+        andnpd    %xmm4, %xmm0
+        orpd      %xmm0, %xmm2
+        orpd      %xmm3, %xmm0
+        addsd     %xmm2, %xmm0
+        jmp       .L_2TAG_PACKET_1.0.1
+.L_2TAG_PACKET_5.0.1:
+        subl      $2146435072, %edx
+        orl       %edx, %eax
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_6.0.1
+        movq      %xmm4, %xmm0
+        addsd     %xmm0, %xmm0
+.L_2TAG_PACKET_1.0.1:
+..B1.3:
+        popq      %rcx
+..___tag_value_atan.4:
+        ret       
+..___tag_value_atan.5:
+END(atan)
+# -- End  atan
+	.section .rodata, "a"
+	.align 4
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+a2:
+	.long	2006262985
+	.long	1069310863
+	.long	2358449471
+	.long	3217342131
+	.type	a2,@object
+	.size	a2,16
+	.align 4
+b2:
+	.long	3845454352
+	.long	1069952297
+	.long	2829679149
+	.long	1073771565
+	.type	b2,@object
+	.size	b2,16
+	.align 4
+atan_tbl:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3819695742
+	.long	1067482761
+	.long	2398680355
+	.long	3155462074
+	.long	2998791009
+	.long	1067548225
+	.long	3868465248
+	.long	3157182472
+	.long	3339424991
+	.long	1067613680
+	.long	3296670360
+	.long	1010752543
+	.long	2710002256
+	.long	1067679126
+	.long	3403896007
+	.long	1010910768
+	.long	3275701428
+	.long	1067744562
+	.long	119959933
+	.long	1011482843
+	.long	2908636881
+	.long	1067809988
+	.long	2464489612
+	.long	1011545526
+	.long	3777889398
+	.long	1067875403
+	.long	3262682165
+	.long	1009703919
+	.long	3759667419
+	.long	1067940807
+	.long	1838130851
+	.long	3157373556
+	.long	732369940
+	.long	1068006200
+	.long	1203428313
+	.long	1010055371
+	.long	1166616461
+	.long	1068071580
+	.long	2901274051
+	.long	3158549977
+	.long	2945472892
+	.long	1068136947
+	.long	3726120658
+	.long	1009762715
+	.long	3954480976
+	.long	1068202301
+	.long	1289173457
+	.long	1009429861
+	.long	2081752829
+	.long	1068267642
+	.long	1836909874
+	.long	1006212095
+	.long	3807999788
+	.long	1068332968
+	.long	2172459940
+	.long	3156162078
+	.long	2731789884
+	.long	1068398280
+	.long	3450718392
+	.long	3159216547
+	.long	1044477961
+	.long	1068463577
+	.long	2230553229
+	.long	1011424339
+	.long	1486930287
+	.long	1068530218
+	.long	2861547474
+	.long	1012041376
+	.long	2293016881
+	.long	1068595466
+	.long	136843272
+	.long	1012684797
+	.long	201518157
+	.long	1068660680
+	.long	63231984
+	.long	1012427198
+	.long	4054234584
+	.long	1068725856
+	.long	3927006960
+	.long	1011878955
+	.long	1246477213
+	.long	1068790995
+	.long	1494265652
+	.long	3155219350
+	.long	678186699
+	.long	1068856093
+	.long	1264361424
+	.long	3159256693
+	.long	2690594995
+	.long	1068921148
+	.long	3906996379
+	.long	1009288267
+	.long	3362611517
+	.long	1068986159
+	.long	1650970041
+	.long	3158331771
+	.long	3102162111
+	.long	1069051124
+	.long	365917035
+	.long	3160264153
+	.long	2352611067
+	.long	1069116041
+	.long	4008970190
+	.long	3159478182
+	.long	1594134794
+	.long	1069180908
+	.long	466690178
+	.long	1012526501
+	.long	1345079306
+	.long	1069245723
+	.long	2268273568
+	.long	3160164092
+	.long	2163300970
+	.long	1069310484
+	.long	2750834800
+	.long	3158113482
+	.long	352522716
+	.long	1069375190
+	.long	1750411372
+	.long	1011790845
+	.long	848541647
+	.long	1069439838
+	.long	2164207573
+	.long	1011698350
+	.long	40647312
+	.long	1069504427
+	.long	2949165434
+	.long	3159107267
+	.long	2216766270
+	.long	1069574357
+	.long	2197920765
+	.long	3161055954
+	.long	1090914384
+	.long	1069638757
+	.long	2330454674
+	.long	1013365998
+	.long	387601244
+	.long	1069703022
+	.long	3185681168
+	.long	1013434071
+	.long	3991640484
+	.long	1069767144
+	.long	1313211590
+	.long	3161087959
+	.long	3322489502
+	.long	1069831118
+	.long	3013977995
+	.long	1013053011
+	.long	3121698570
+	.long	1069894936
+	.long	4069015667
+	.long	1013023362
+	.long	4289964660
+	.long	1069958591
+	.long	1736191156
+	.long	3158266731
+	.long	3903312386
+	.long	1070022077
+	.long	1833592413
+	.long	3159731471
+	.long	3818449864
+	.long	1070085387
+	.long	851036429
+	.long	3159730451
+	.long	2097480306
+	.long	1070148515
+	.long	3506390884
+	.long	3160462302
+	.long	1611694502
+	.long	1070211454
+	.long	2785735540
+	.long	3160465144
+	.long	1464694796
+	.long	1070274198
+	.long	4229277299
+	.long	3159907000
+	.long	1299612775
+	.long	1070336741
+	.long	4116653788
+	.long	3160427739
+	.long	1310544789
+	.long	1070399077
+	.long	1064430331
+	.long	1013218202
+	.long	2253168030
+	.long	1070461200
+	.long	1405044609
+	.long	3157623179
+	.long	1159567373
+	.long	1070523105
+	.long	2353445521
+	.long	3159992176
+	.long	1359373750
+	.long	1070605818
+	.long	1748171336
+	.long	3161879263
+	.long	908341706
+	.long	1070667034
+	.long	3372710815
+	.long	3161775245
+	.long	1743027350
+	.long	1070727765
+	.long	687089934
+	.long	3160507171
+	.long	2055355646
+	.long	1070787992
+	.long	2392855242
+	.long	1013682469
+	.long	690426164
+	.long	1070847697
+	.long	1103926666
+	.long	1014052810
+	.long	1483247847
+	.long	1070906862
+	.long	2082645847
+	.long	3161345479
+	.long	392040270
+	.long	1070965472
+	.long	2407720023
+	.long	1014053754
+	.long	2673846014
+	.long	1071023511
+	.long	1293605532
+	.long	3158464385
+	.long	1384215810
+	.long	1071080967
+	.long	2446095872
+	.long	3159216407
+	.long	3101660631
+	.long	1071137826
+	.long	698040758
+	.long	1014855328
+	.long	2094057058
+	.long	1071194078
+	.long	2282048339
+	.long	1014040385
+	.long	1712750594
+	.long	1071249712
+	.long	1204372378
+	.long	3162276464
+	.long	1411515787
+	.long	1071304719
+	.long	949080808
+	.long	1015006403
+	.long	931538085
+	.long	1071359091
+	.long	3027127039
+	.long	1014307233
+	.long	179139065
+	.long	1071412821
+	.long	4285547492
+	.long	3161934731
+	.long	3387721259
+	.long	1071465902
+	.long	373225773
+	.long	1013486625
+	.long	2132236852
+	.long	1071544299
+	.long	3250533429
+	.long	1014031677
+	.long	1942070284
+	.long	1071645596
+	.long	1237964179
+	.long	3163239113
+	.long	1532707802
+	.long	1071695380
+	.long	330645583
+	.long	1012495610
+	.long	2294184979
+	.long	1071743834
+	.long	3959472897
+	.long	1015833116
+	.long	3805060714
+	.long	1071790961
+	.long	2671256142
+	.long	1013727772
+	.long	2215037898
+	.long	1071836770
+	.long	2683359117
+	.long	1015831902
+	.long	483661594
+	.long	1071881273
+	.long	836288326
+	.long	3162648643
+	.long	1534679894
+	.long	1071924486
+	.long	373258696
+	.long	3162470096
+	.long	1538714628
+	.long	1071966430
+	.long	3199433068
+	.long	1015325501
+	.long	527642555
+	.long	1072007128
+	.long	3636832592
+	.long	3161843145
+	.long	291339150
+	.long	1072046605
+	.long	890169537
+	.long	3160586117
+	.long	2450210201
+	.long	1072084888
+	.long	1636353294
+	.long	3163193400
+	.long	2411367951
+	.long	1072122007
+	.long	374899873
+	.long	1011331750
+	.long	681549971
+	.long	1072157992
+	.long	506411689
+	.long	1015373954
+	.long	1466745541
+	.long	1072192873
+	.long	2143860931
+	.long	1013364334
+	.long	2845622366
+	.long	1072226682
+	.long	2869178209
+	.long	3162423682
+	.long	2838871438
+	.long	1072275456
+	.long	3742223599
+	.long	1014338577
+	.long	4200275274
+	.long	1072337034
+	.long	1566539915
+	.long	3161839550
+	.long	3034733530
+	.long	1072394897
+	.long	652621408
+	.long	3162261964
+	.long	3207412993
+	.long	1072449290
+	.long	3206124665
+	.long	1014408733
+	.long	624461478
+	.long	1072500450
+	.long	932437485
+	.long	1015204343
+	.long	767665908
+	.long	1072548600
+	.long	1037911952
+	.long	3163527627
+	.long	1110773639
+	.long	1072593952
+	.long	2371517912
+	.long	3160465741
+	.long	1940828530
+	.long	1072636704
+	.long	2731408428
+	.long	3162895795
+	.long	1911329388
+	.long	1072677041
+	.long	1773089615
+	.long	3159569267
+	.long	1764715788
+	.long	1072704191
+	.long	691346949
+	.long	3164069946
+	.long	3332979233
+	.long	1072722195
+	.long	3550733983
+	.long	1014770628
+	.long	1321870254
+	.long	1072739231
+	.long	1415315820
+	.long	1016224052
+	.long	3657429030
+	.long	1072755365
+	.long	3910539033
+	.long	1015966402
+	.long	4197624557
+	.long	1072770661
+	.long	2333399254
+	.long	3164546480
+	.long	1512059493
+	.long	1072785177
+	.long	2701510318
+	.long	1016178092
+	.long	453379037
+	.long	1072798965
+	.long	4046344253
+	.long	3162814364
+	.long	1942345162
+	.long	1072818388
+	.long	621134147
+	.long	1016335195
+	.long	4210176273
+	.long	1072842164
+	.long	2701013387
+	.long	3164326619
+	.long	4185644010
+	.long	1072863795
+	.long	4163699341
+	.long	1016203112
+	.long	679688788
+	.long	1072883543
+	.long	4147276762
+	.long	1014066750
+	.long	29432865
+	.long	1072901630
+	.long	970415797
+	.long	1016902063
+	.long	4070721092
+	.long	1072918247
+	.long	2539004411
+	.long	3163736096
+	.long	2252468843
+	.long	1072933561
+	.long	3424082887
+	.long	3163407177
+	.long	2929724825
+	.long	1072947712
+	.long	3661482235
+	.long	3163846989
+	.long	1377513368
+	.long	1072960824
+	.long	3987926680
+	.long	1013647908
+	.long	1031632908
+	.long	1072973003
+	.long	3672217151
+	.long	1016614619
+	.long	2516508130
+	.long	1072984342
+	.long	545855020
+	.long	3162728930
+	.long	3792452178
+	.long	1072994923
+	.long	3420119467
+	.long	1016471430
+	.long	3147791459
+	.long	1073004818
+	.long	1342204979
+	.long	1013937254
+	.long	999189752
+	.long	1073014090
+	.long	1006335472
+	.long	3162850919
+	.long	711011011
+	.long	1073022794
+	.long	4633488
+	.long	3162966895
+	.long	15640363
+	.long	1073030980
+	.long	1686389560
+	.long	3164376226
+	.long	1218463589
+	.long	1073042382
+	.long	1526837110
+	.long	3163533985
+	.long	2538470555
+	.long	1073056144
+	.long	2273304406
+	.long	3163784996
+	.long	1229720947
+	.long	1073068489
+	.long	2971628206
+	.long	3162356540
+	.long	3115427016
+	.long	1073079621
+	.long	4215132957
+	.long	3164282762
+	.long	4030612557
+	.long	1073089709
+	.long	1913251691
+	.long	3163671292
+	.long	2728521257
+	.long	1073098892
+	.long	2861089500
+	.long	1015454459
+	.long	1118696283
+	.long	1073107285
+	.long	1628948053
+	.long	1016179658
+	.long	2682711255
+	.long	1073114984
+	.long	2906306266
+	.long	1014142643
+	.long	2073898081
+	.long	1073122072
+	.long	1322740454
+	.long	3164497217
+	.long	1403700297
+	.long	1073128618
+	.long	416137895
+	.long	3162781466
+	.long	2502685617
+	.long	1073134681
+	.long	3242008732
+	.long	1014593495
+	.long	1531926851
+	.long	1073140313
+	.long	1362708094
+	.long	1016517604
+	.long	3572814411
+	.long	1073145557
+	.long	3709790527
+	.long	1012646874
+	.long	1695536111
+	.long	1073150453
+	.long	3980346340
+	.long	1016705136
+	.long	2363057203
+	.long	1073155033
+	.long	2551194792
+	.long	1012569695
+	.long	2873365682
+	.long	1073159327
+	.long	3181154748
+	.long	1017041450
+	.long	1053384691
+	.long	1073165288
+	.long	3074536879
+	.long	1016965660
+	.long	3270542712
+	.long	1073172451
+	.long	2535319415
+	.long	3163051778
+	.long	1353631484
+	.long	1073178850
+	.long	1173833755
+	.long	1015534537
+	.long	3511218460
+	.long	1073184599
+	.long	1243608109
+	.long	3161592122
+	.long	4121259284
+	.long	1073189793
+	.long	398584912
+	.long	3163829923
+	.long	1193862106
+	.long	1073194509
+	.long	1873745539
+	.long	3163802819
+	.long	3861949790
+	.long	1073198808
+	.long	3841261147
+	.long	1015587248
+	.long	1486904578
+	.long	1073202745
+	.long	1634726776
+	.long	3163847886
+	.long	2879153715
+	.long	1073206362
+	.long	200456242
+	.long	3164138657
+	.long	385353253
+	.long	1073209698
+	.long	1186355517
+	.long	1014887155
+	.long	1125865839
+	.long	1073212783
+	.long	203561262
+	.long	3161244927
+	.long	1221361475
+	.long	1073215645
+	.long	3382476563
+	.long	1014936138
+	.long	2077323573
+	.long	1073218307
+	.long	1005121005
+	.long	3164430752
+	.long	215611373
+	.long	1073220790
+	.long	353198764
+	.long	3164485137
+	.long	2347419265
+	.long	1073223110
+	.long	1103143360
+	.long	1016542137
+	.long	1379112765
+	.long	1073225284
+	.long	381583533
+	.long	3162870833
+	.long	3891198463
+	.long	1073228298
+	.long	1771275754
+	.long	1014654681
+	.long	3395914051
+	.long	1073231917
+	.long	2350900914
+	.long	3164013978
+	.long	2799919478
+	.long	1073235146
+	.long	2893950164
+	.long	3163260901
+	.long	1138673476
+	.long	1073238045
+	.long	2622204785
+	.long	3164174388
+	.long	3408855940
+	.long	1073240661
+	.long	2800881650
+	.long	1016008624
+	.long	2044858738
+	.long	1073243035
+	.long	604544785
+	.long	1017022901
+	.long	2578795176
+	.long	1073245198
+	.long	2557332925
+	.long	1016135165
+	.long	4196285314
+	.long	1073247177
+	.long	2032365307
+	.long	1016194735
+	.long	224877747
+	.long	1073248996
+	.long	497926916
+	.long	1016947111
+	.long	3271386490
+	.long	1073250671
+	.long	2689994846
+	.long	1016631513
+	.long	813635989
+	.long	1073252221
+	.long	747035277
+	.long	3164530136
+	.long	369829519
+	.long	1073253658
+	.long	2182033858
+	.long	3163190340
+	.long	1187679052
+	.long	1073254994
+	.long	673954443
+	.long	1016149821
+	.long	4232586098
+	.long	1073256239
+	.long	497775200
+	.long	3162179015
+	.long	426690558
+	.long	1073257404
+	.long	3063343247
+	.long	1016865578
+	.long	1624065902
+	.long	1073258494
+	.long	1354224996
+	.long	3163503778
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	atan_tbl,@object
+	.size	atan_tbl,2592
+	.align 4
+pi_table:
+	.long	1413754136
+	.long	1073291771
+	.long	856972295
+	.long	1016178214
+	.type	pi_table,@object
+	.size	pi_table,16
+	.align 4
+SGNMASK:
+	.long	4294967295
+	.long	2147483647
+	.type	SGNMASK,@object
+	.size	SGNMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_atan.1-.
+	.4byte ..___tag_value_atan.5-..___tag_value_atan.1
+	.2byte 0x0400
+	.4byte ..___tag_value_atan.3-..___tag_value_atan.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_atan.4-..___tag_value_atan.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_cbrt.S b/libm/x86_64/s_cbrt.S
new file mode 100644
index 0000000..4aa4373
--- /dev/null
+++ b/libm/x86_64/s_cbrt.S
@@ -0,0 +1,754 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
+//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
+//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
+//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
+//   (T stores the high 53 bits, D stores the low order bits)
+//   Result=2^k*T+(2^k*T*r)*P+2^k*D
+//   where P=p1+p2*r+..+p8*r^7
+//
+// Special cases:
+//  cbrt(NaN) = quiet NaN, and raise invalid exception
+//  cbrt(INF) = that INF
+//  cbrt(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  cbrt
+ENTRY(cbrt)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cbrt.1:
+        subq      $24, %rsp
+..___tag_value_cbrt.3:
+        movsd     %xmm0, (%rsp)
+..B1.2:
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        movsd     EXP_MSK3(%rip), %xmm5
+        movsd     EXP_MSK2(%rip), %xmm3
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        movsd     EXP_MASK(%rip), %xmm1
+        movsd     SIG_MASK(%rip), %xmm2
+        andl      $248, %ecx
+        lea       rcp_table(%rip), %r8
+        movsd     (%rcx,%r8), %xmm4
+        movq      %rax, %r9
+        andl      %eax, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_0.0.1
+        cmpl      $524032, %edx
+        je        .L_2TAG_PACKET_1.0.1
+        shrl      $8, %edx
+        shrq      $8, %r9
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    coeff_table(%rip), %xmm5
+        movl      $5462, %eax
+        movapd    16+coeff_table(%rip), %xmm6
+        mull      %edx
+        movq      %r9, %rdx
+        andq      $2047, %r9
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subq      %rax, %r9
+        subq      %rax, %r9
+        subq      %rax, %r9
+        shlq      $8, %r9
+        addl      $682, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addq      %r9, %rcx
+        psllq     $52, %xmm7
+.L_2TAG_PACKET_2.0.1:
+        movapd    32+coeff_table(%rip), %xmm2
+        movapd    48+coeff_table(%rip), %xmm0
+        subsd     %xmm3, %xmm1
+        movq      %xmm7, %xmm3
+        lea       cbrt_table(%rip), %r8
+        mulsd     (%rcx,%r8), %xmm7
+        mulsd     %xmm4, %xmm1
+        lea       D_table(%rip), %r8
+        mulsd     (%rcx,%r8), %xmm3
+        movapd    %xmm1, %xmm4
+        unpcklpd  %xmm1, %xmm1
+        mulpd     %xmm1, %xmm5
+        mulpd     %xmm1, %xmm6
+        mulpd     %xmm1, %xmm1
+        addpd     %xmm5, %xmm2
+        addpd     %xmm6, %xmm0
+        mulpd     %xmm1, %xmm2
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm7, %xmm4
+        addpd     %xmm2, %xmm0
+        mulsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm7, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        mulsd     SCALE63(%rip), %xmm0
+        movq      %xmm0, %xmm7
+        movl      $524032, %edx
+        psrlq     $44, %xmm7
+        pextrw    $0, %xmm7, %ecx
+        movd      %xmm7, %eax
+        andl      $248, %ecx
+        lea       rcp_table(%rip), %r8
+        movsd     (%rcx,%r8), %xmm4
+        movq      %rax, %r9
+        andl      %eax, %edx
+        shrl      $8, %edx
+        shrq      $8, %r9
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_3.0.1
+        andpd     %xmm0, %xmm2
+        andpd     %xmm5, %xmm0
+        orpd      %xmm2, %xmm3
+        orpd      %xmm0, %xmm1
+        movapd    coeff_table(%rip), %xmm5
+        movl      $5462, %eax
+        movapd    16+coeff_table(%rip), %xmm6
+        mull      %edx
+        movq      %r9, %rdx
+        andq      $2047, %r9
+        shrl      $14, %eax
+        andl      $2048, %edx
+        subq      %rax, %r9
+        subq      %rax, %r9
+        subq      %rax, %r9
+        shlq      $8, %r9
+        addl      $661, %eax
+        orl       %edx, %eax
+        movd      %eax, %xmm7
+        addq      %r9, %rcx
+        psllq     $52, %xmm7
+        jmp       .L_2TAG_PACKET_2.0.1
+.L_2TAG_PACKET_3.0.1:
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_4.0.1
+        xorpd     %xmm0, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_4.0.1:
+        movsd     ZERON(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        movl      4(%rsp), %eax
+        movl      (%rsp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %ecx
+        cmpl      $2146435072, %ecx
+        ja        .L_2TAG_PACKET_5.0.1
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_5.0.1
+        cmpl      $2146435072, %eax
+        jne       .L_2TAG_PACKET_6.0.1
+        movsd     INF(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_6.0.1:
+        movsd     NEG_INF(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_5.0.1:
+        movsd     (%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        movq      %xmm0, 8(%rsp)
+.L_2TAG_PACKET_7.0.1:
+..B1.4:
+        addq      $24, %rsp
+..___tag_value_cbrt.4:
+        ret       
+..___tag_value_cbrt.5:
+END(cbrt)
+# -- End  cbrt
+	.section .rodata, "a"
+	.align 16
+	.align 16
+coeff_table:
+	.long	1553778919
+	.long	3213899486
+	.long	3534952507
+	.long	3215266280
+	.long	1646371399
+	.long	3214412045
+	.long	477218588
+	.long	3216798151
+	.long	3582521621
+	.long	1066628362
+	.long	1007461464
+	.long	1068473053
+	.long	889629714
+	.long	1067378449
+	.long	1431655765
+	.long	1070945621
+	.type	coeff_table,@object
+	.size	coeff_table,64
+	.align 4
+EXP_MSK3:
+	.long	4294967295
+	.long	1048575
+	.type	EXP_MSK3,@object
+	.size	EXP_MSK3,8
+	.align 4
+EXP_MSK2:
+	.long	0
+	.long	3220193280
+	.type	EXP_MSK2,@object
+	.size	EXP_MSK2,8
+	.align 4
+EXP_MASK:
+	.long	0
+	.long	3220176896
+	.type	EXP_MASK,@object
+	.size	EXP_MASK,8
+	.align 4
+SIG_MASK:
+	.long	0
+	.long	1032192
+	.type	SIG_MASK,@object
+	.size	SIG_MASK,8
+	.align 4
+rcp_table:
+	.long	528611360
+	.long	3220144632
+	.long	2884679527
+	.long	3220082993
+	.long	1991868891
+	.long	3220024928
+	.long	2298714891
+	.long	3219970134
+	.long	58835168
+	.long	3219918343
+	.long	3035110223
+	.long	3219869313
+	.long	1617585086
+	.long	3219822831
+	.long	2500867033
+	.long	3219778702
+	.long	4241943008
+	.long	3219736752
+	.long	258732970
+	.long	3219696825
+	.long	404232216
+	.long	3219658776
+	.long	2172167368
+	.long	3219622476
+	.long	1544257904
+	.long	3219587808
+	.long	377579543
+	.long	3219554664
+	.long	1616385542
+	.long	3219522945
+	.long	813783277
+	.long	3219492562
+	.long	3940743189
+	.long	3219463431
+	.long	2689777499
+	.long	3219435478
+	.long	1700977147
+	.long	3219408632
+	.long	3169102082
+	.long	3219382828
+	.long	327235604
+	.long	3219358008
+	.long	1244336319
+	.long	3219334115
+	.long	1300311200
+	.long	3219311099
+	.long	3095471925
+	.long	3219288912
+	.long	2166487928
+	.long	3219267511
+	.long	2913108253
+	.long	3219246854
+	.long	293672978
+	.long	3219226904
+	.long	288737297
+	.long	3219207624
+	.long	1810275472
+	.long	3219188981
+	.long	174592167
+	.long	3219170945
+	.long	3539053052
+	.long	3219153485
+	.long	2164392968
+	.long	3219136576
+	.type	rcp_table,@object
+	.size	rcp_table,256
+	.align 4
+cbrt_table:
+	.long	572345495
+	.long	1072698681
+	.long	1998204467
+	.long	1072709382
+	.long	3861501553
+	.long	1072719872
+	.long	2268192434
+	.long	1072730162
+	.long	2981979308
+	.long	1072740260
+	.long	270859143
+	.long	1072750176
+	.long	2958651392
+	.long	1072759916
+	.long	313113243
+	.long	1072769490
+	.long	919449400
+	.long	1072778903
+	.long	2809328903
+	.long	1072788162
+	.long	2222981587
+	.long	1072797274
+	.long	2352530781
+	.long	1072806244
+	.long	594152517
+	.long	1072815078
+	.long	1555767199
+	.long	1072823780
+	.long	4282421314
+	.long	1072832355
+	.long	2355578597
+	.long	1072840809
+	.long	1162590619
+	.long	1072849145
+	.long	797864051
+	.long	1072857367
+	.long	431273680
+	.long	1072865479
+	.long	2669831148
+	.long	1072873484
+	.long	733477752
+	.long	1072881387
+	.long	4280220604
+	.long	1072889189
+	.long	801961634
+	.long	1072896896
+	.long	2915370760
+	.long	1072904508
+	.long	1159613482
+	.long	1072912030
+	.long	2689944798
+	.long	1072919463
+	.long	1248687822
+	.long	1072926811
+	.long	2967951030
+	.long	1072934075
+	.long	630170432
+	.long	1072941259
+	.long	3760898254
+	.long	1072948363
+	.long	0
+	.long	1072955392
+	.long	2370273294
+	.long	1072962345
+	.long	1261754802
+	.long	1072972640
+	.long	546334065
+	.long	1072986123
+	.long	1054893830
+	.long	1072999340
+	.long	1571187597
+	.long	1073012304
+	.long	1107975175
+	.long	1073025027
+	.long	3606909377
+	.long	1073037519
+	.long	1113616747
+	.long	1073049792
+	.long	4154744632
+	.long	1073061853
+	.long	3358931423
+	.long	1073073713
+	.long	4060702372
+	.long	1073085379
+	.long	747576176
+	.long	1073096860
+	.long	3023138255
+	.long	1073108161
+	.long	1419988548
+	.long	1073119291
+	.long	1914185305
+	.long	1073130255
+	.long	294389948
+	.long	1073141060
+	.long	3761802570
+	.long	1073151710
+	.long	978281566
+	.long	1073162213
+	.long	823148820
+	.long	1073172572
+	.long	2420954441
+	.long	1073182792
+	.long	3815449908
+	.long	1073192878
+	.long	2046058587
+	.long	1073202835
+	.long	1807524753
+	.long	1073212666
+	.long	2628681401
+	.long	1073222375
+	.long	3225667357
+	.long	1073231966
+	.long	1555307421
+	.long	1073241443
+	.long	3454043099
+	.long	1073250808
+	.long	1208137896
+	.long	1073260066
+	.long	3659916772
+	.long	1073269218
+	.long	1886261264
+	.long	1073278269
+	.long	3593647839
+	.long	1073287220
+	.long	3086012205
+	.long	1073296075
+	.long	2769796922
+	.long	1073304836
+	.long	888716057
+	.long	1073317807
+	.long	2201465623
+	.long	1073334794
+	.long	164369365
+	.long	1073351447
+	.long	3462666733
+	.long	1073367780
+	.long	2773905457
+	.long	1073383810
+	.long	1342879088
+	.long	1073399550
+	.long	2543933975
+	.long	1073415012
+	.long	1684477781
+	.long	1073430209
+	.long	3532178543
+	.long	1073445151
+	.long	1147747300
+	.long	1073459850
+	.long	1928031793
+	.long	1073474314
+	.long	2079717015
+	.long	1073488553
+	.long	4016765315
+	.long	1073502575
+	.long	3670431139
+	.long	1073516389
+	.long	3549227225
+	.long	1073530002
+	.long	11637607
+	.long	1073543422
+	.long	588220169
+	.long	1073556654
+	.long	2635407503
+	.long	1073569705
+	.long	2042029317
+	.long	1073582582
+	.long	1925128962
+	.long	1073595290
+	.long	4136375664
+	.long	1073607834
+	.long	759964600
+	.long	1073620221
+	.long	4257606771
+	.long	1073632453
+	.long	297278907
+	.long	1073644538
+	.long	3655053093
+	.long	1073656477
+	.long	2442253172
+	.long	1073668277
+	.long	1111876799
+	.long	1073679941
+	.long	3330973139
+	.long	1073691472
+	.long	3438879452
+	.long	1073702875
+	.long	3671565478
+	.long	1073714153
+	.long	1317849547
+	.long	1073725310
+	.long	1642364115
+	.long	1073736348
+	.type	cbrt_table,@object
+	.size	cbrt_table,768
+	.align 4
+D_table:
+	.long	4050900474
+	.long	1014427190
+	.long	1157977860
+	.long	1016444461
+	.long	1374568199
+	.long	1017271387
+	.long	2809163288
+	.long	1016882676
+	.long	3742377377
+	.long	1013168191
+	.long	3101606597
+	.long	1017541672
+	.long	65224358
+	.long	1017217597
+	.long	2691591250
+	.long	1017266643
+	.long	4020758549
+	.long	1017689313
+	.long	1316310992
+	.long	1018030788
+	.long	1031537856
+	.long	1014090882
+	.long	3261395239
+	.long	1016413641
+	.long	886424999
+	.long	1016313335
+	.long	3114776834
+	.long	1014195875
+	.long	1681120620
+	.long	1017825416
+	.long	1329600273
+	.long	1016625740
+	.long	465474623
+	.long	1017097119
+	.long	4251633980
+	.long	1017169077
+	.long	1986990133
+	.long	1017710645
+	.long	752958613
+	.long	1017159641
+	.long	2216216792
+	.long	1018020163
+	.long	4282860129
+	.long	1015924861
+	.long	1557627859
+	.long	1016039538
+	.long	3889219754
+	.long	1018086237
+	.long	3684996408
+	.long	1017353275
+	.long	723532103
+	.long	1017717141
+	.long	2951149676
+	.long	1012528470
+	.long	831890937
+	.long	1017830553
+	.long	1031212645
+	.long	1017387331
+	.long	2741737450
+	.long	1017604974
+	.long	2863311531
+	.long	1003776682
+	.long	4276736099
+	.long	1013153088
+	.long	4111778382
+	.long	1015673686
+	.long	1728065769
+	.long	1016413986
+	.long	2708718031
+	.long	1018078833
+	.long	1069335005
+	.long	1015291224
+	.long	700037144
+	.long	1016482032
+	.long	2904566452
+	.long	1017226861
+	.long	4074156649
+	.long	1017622651
+	.long	25019565
+	.long	1015245366
+	.long	3601952608
+	.long	1015771755
+	.long	3267129373
+	.long	1017904664
+	.long	503203103
+	.long	1014921629
+	.long	2122011730
+	.long	1018027866
+	.long	3927295461
+	.long	1014189456
+	.long	2790625147
+	.long	1016024251
+	.long	1330460186
+	.long	1016940346
+	.long	4033568463
+	.long	1015538390
+	.long	3695818227
+	.long	1017509621
+	.long	257573361
+	.long	1017208868
+	.long	3227697852
+	.long	1017337964
+	.long	234118548
+	.long	1017169577
+	.long	4009025803
+	.long	1017278524
+	.long	1948343394
+	.long	1017749310
+	.long	678398162
+	.long	1018144239
+	.long	3083864863
+	.long	1016669086
+	.long	2415453452
+	.long	1017890370
+	.long	175467344
+	.long	1017330033
+	.long	3197359580
+	.long	1010339928
+	.long	2071276951
+	.long	1015941358
+	.long	268372543
+	.long	1016737773
+	.long	938132959
+	.long	1017389108
+	.long	1816750559
+	.long	1017337448
+	.long	4119203749
+	.long	1017152174
+	.long	2578653878
+	.long	1013108497
+	.long	2470331096
+	.long	1014678606
+	.long	123855735
+	.long	1016553320
+	.long	1265650889
+	.long	1014782687
+	.long	3414398172
+	.long	1017182638
+	.long	1040773369
+	.long	1016158401
+	.long	3483628886
+	.long	1016886550
+	.long	4140499405
+	.long	1016191425
+	.long	3893477850
+	.long	1016964495
+	.long	3935319771
+	.long	1009634717
+	.long	2978982660
+	.long	1015027112
+	.long	2452709923
+	.long	1017990229
+	.long	3190365712
+	.long	1015835149
+	.long	4237588139
+	.long	1015832925
+	.long	2610678389
+	.long	1017962711
+	.long	2127316774
+	.long	1017405770
+	.long	824267502
+	.long	1017959463
+	.long	2165924042
+	.long	1017912225
+	.long	2774007076
+	.long	1013257418
+	.long	4123916326
+	.long	1017582284
+	.long	1976417958
+	.long	1016959909
+	.long	4092806412
+	.long	1017711279
+	.long	119251817
+	.long	1015363631
+	.long	3475418768
+	.long	1017675415
+	.long	1972580503
+	.long	1015470684
+	.long	815541017
+	.long	1017517969
+	.long	2429917451
+	.long	1017397776
+	.long	4062888482
+	.long	1016749897
+	.long	68284153
+	.long	1017925678
+	.long	2207779246
+	.long	1016320298
+	.long	1183466520
+	.long	1017408657
+	.long	143326427
+	.long	1017060403
+	.type	D_table,@object
+	.size	D_table,768
+	.align 4
+SCALE63:
+	.long	0
+	.long	1138753536
+	.type	SCALE63,@object
+	.size	SCALE63,8
+	.align 4
+ZERON:
+	.long	0
+	.long	2147483648
+	.type	ZERON,@object
+	.size	ZERON,8
+	.align 4
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 4
+NEG_INF:
+	.long	0
+	.long	4293918720
+	.type	NEG_INF,@object
+	.size	NEG_INF,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cbrt.1-.
+	.4byte ..___tag_value_cbrt.5-..___tag_value_cbrt.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cbrt.3-..___tag_value_cbrt.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_cbrt.4-..___tag_value_cbrt.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_cos.S b/libm/x86_64/s_cos.S
new file mode 100644
index 0000000..ab5a0e1
--- /dev/null
+++ b/libm/x86_64/s_cos.S
@@ -0,0 +1,1275 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     Inputs with |X| < 2^-252 are treated specially as
+//     1 - |x|.
+//
+// Special cases:
+//  cos(NaN) = quiet NaN, and raise invalid exception
+//  cos(INF) = NaN and raise invalid exception
+//  cos(0) = 1
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  cos
+ENTRY(cos)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_cos.1:
+        pushq     %rbx
+..___tag_value_cos.3:
+        subq      $16, %rsp
+..___tag_value_cos.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movl      12(%rsp), %eax
+        movq      PI32INV(%rip), %xmm1
+        andl      $2147418112, %eax
+        subl      $808452096, %eax
+        cmpl      $281346048, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm0, %xmm1
+        movapd    ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movapd    P_2(%rip), %xmm2
+        movq      P_1(%rip), %xmm3
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        addq      $1865232, %rdx
+        movq      %xmm0, %xmm4
+        andq      $63, %rdx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shlq      $5, %rdx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm7, %xmm3
+        addsd     %xmm1, %xmm0
+        addsd     %xmm3, %xmm0
+        addsd     %xmm6, %xmm0
+        unpckhpd  %xmm6, %xmm6
+        addsd     %xmm6, %xmm0
+        addsd     %xmm4, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        pextrw    $3, %xmm0, %eax
+        andw      $32767, %ax
+        pinsrw    $3, %eax, %xmm0
+        movq      ONE(%rip), %xmm1
+        subsd     %xmm0, %xmm1
+        movq      %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $1, %ecx
+        jl        .L_2TAG_PACKET_3.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $536870911, %r9d
+        testl     $268435456, %r9d
+        jne       .L_2TAG_PACKET_4.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_5.0.1:
+.L_2TAG_PACKET_6.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_8.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_9.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_10.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm6
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $29, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm6
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm6
+        movq      %xmm0, %xmm2
+        addsd     %xmm6, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm6
+.L_2TAG_PACKET_11.0.1:
+        movq      PI32INV(%rip), %xmm1
+        mulsd     %xmm0, %xmm1
+        movq      ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %rdx
+        cvtsi2sdq %rdx, %xmm1
+        movq      P_1(%rip), %xmm3
+        movapd    P_2(%rip), %xmm2
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        shll      $3, %eax
+        addl      $1865232, %edx
+        movq      %xmm0, %xmm4
+        addl      %eax, %edx
+        andl      $63, %edx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shll      $5, %edx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        subsd     %xmm6, %xmm1
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_7.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_8.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_8.0.1
+        xorpd     %xmm0, %xmm0
+        xorpd     %xmm6, %xmm6
+        jmp       .L_2TAG_PACKET_11.0.1
+.L_2TAG_PACKET_9.0.1:
+        je        .L_2TAG_PACKET_10.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_10.0.1
+.L_2TAG_PACKET_3.0.1:
+        negl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_12.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $3, %rdi
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_4.0.1:
+        shrl      %cl, %r9d
+        movl      $536870912, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $536870912, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_5.0.1
+.L_2TAG_PACKET_12.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $3, %rdi
+        addl      $536870912, %edi
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_2.0.1:
+        movsd     8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_13.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_cos.6:
+        popq      %rbx
+..___tag_value_cos.8:
+        ret       
+..___tag_value_cos.9:
+END(cos)
+# -- End  cos
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+P_2:
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+SC_4:
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.type	SC_4,@object
+	.size	SC_4,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.type	Ctable,@object
+	.size	Ctable,2048
+	.align 16
+SC_2:
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.type	SC_2,@object
+	.size	SC_2,16
+	.align 16
+SC_3:
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.type	SC_3,@object
+	.size	SC_3,16
+	.align 16
+SC_1:
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.type	SC_1,@object
+	.size	SC_1,16
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	1073741824
+	.long	1072243195
+	.long	407279769
+	.long	1046758445
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+PI32INV:
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,8
+	.align 8
+SIGN_MASK:
+	.long	0
+	.long	2147483648
+	.type	SIGN_MASK,@object
+	.size	SIGN_MASK,8
+	.align 8
+P_1:
+	.long	1413480448
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,8
+	.align 8
+P_3:
+	.long	771977331
+	.long	996350346
+	.type	P_3,@object
+	.size	P_3,8
+	.align 8
+ONE:
+	.long	0
+	.long	1072693248
+	.type	ONE,@object
+	.size	ONE,8
+	.align 8
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_cos.1-.
+	.4byte ..___tag_value_cos.9-..___tag_value_cos.1
+	.2byte 0x0400
+	.4byte ..___tag_value_cos.3-..___tag_value_cos.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_cos.5-..___tag_value_cos.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_cos.6-..___tag_value_cos.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_cos.8-..___tag_value_cos.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_expm1.S b/libm/x86_64/s_expm1.S
new file mode 100644
index 0000000..9da1d9d
--- /dev/null
+++ b/libm/x86_64/s_expm1.S
@@ -0,0 +1,727 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Description:
+//  Let K = 64 (table size).
+//
+//  Four sub-domains:
+//    1. |x| < 1/(2*K)
+//      expm1(x) ~ P(x)
+//    2. 1/(2*K) <= |x| <= 56*log(2)
+//       x       x/log(2)    n
+//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
+//    3. 56*log(2) < x < MAX_LOG
+//       x       x   x/log(2)    n
+//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
+//    4. x < -56*log(2)
+//       x            x
+//      e - 1 = -1 + e ~ -1
+//    where
+//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
+//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
+//                  j/K
+//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+//       P(y) is a minimax polynomial approximation of exp(x)-1
+//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+//    In case 3, to avoid problems with arithmetic overflow and underflow,
+//              n                        n1  n2
+//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+//    and BIAS is a value of exponent bias.
+//
+// Special cases:
+//  expm1(NaN) is NaN
+//  expm1(+INF) is +INF
+//  expm1(-INF) is -1
+//  expm1(x) is x for subnormals
+//  for finite argument, only expm1(0)=0 is exact.
+//  For IEEE double
+//    if x > 709.782712893383973096 then expm1(x) overflow
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  expm1
+ENTRY(expm1)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_expm1.1:
+        subq      $56, %rsp
+..___tag_value_expm1.3:
+        movsd     %xmm0, 32(%rsp)
+..B1.2:
+        unpcklpd  %xmm0, %xmm0
+        movapd    cv(%rip), %xmm1
+        movapd    Shifter(%rip), %xmm6
+        movapd    16+cv(%rip), %xmm2
+        movapd    32+cv(%rip), %xmm3
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        movl      $16527, %edx
+        subl      %eax, %edx
+        subl      $16304, %eax
+        orl       %eax, %edx
+        cmpl      $-2147483648, %edx
+        jae       .L_2TAG_PACKET_0.0.2
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm6, %xmm1
+        movapd    %xmm1, %xmm7
+        subpd     %xmm6, %xmm1
+        mulpd     %xmm1, %xmm2
+        movapd    48+cv(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        movapd    64+cv(%rip), %xmm5
+        subpd     %xmm2, %xmm0
+        movd      %xmm7, %eax
+        movl      %eax, %ecx
+        andl      $63, %ecx
+        shll      $4, %ecx
+        sarl      $6, %eax
+        movl      %eax, %edx
+        subpd     %xmm3, %xmm0
+        lea       Tbl_addr(%rip), %r11
+        movapd    (%rcx,%r11), %xmm2
+        movq      80+cv(%rip), %xmm3
+        mulpd     %xmm0, %xmm4
+        movapd    %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        mulsd     %xmm0, %xmm3
+        addpd     %xmm4, %xmm5
+        mulsd     %xmm0, %xmm0
+        movq      %xmm2, %xmm4
+        unpckhpd  %xmm2, %xmm2
+        movdqa    mmask(%rip), %xmm6
+        pand      %xmm6, %xmm7
+        movdqa    bias(%rip), %xmm6
+        paddq     %xmm6, %xmm7
+        psllq     $46, %xmm7
+        mulsd     %xmm0, %xmm3
+        mulpd     %xmm5, %xmm0
+        addl      $894, %edx
+        cmpl      $1916, %edx
+        ja        .L_2TAG_PACKET_1.0.2
+        addsd     %xmm3, %xmm0
+        xorpd     %xmm3, %xmm3
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm3
+        orpd      %xmm7, %xmm2
+        mulsd     %xmm4, %xmm7
+        movq      %xmm3, %xmm6
+        addsd     %xmm1, %xmm3
+        pextrw    $3, %xmm2, %edx
+        pshufd    $238, %xmm0, %xmm5
+        psrlq     $38, %xmm3
+        psllq     $38, %xmm3
+        movq      %xmm2, %xmm4
+        subsd     %xmm3, %xmm6
+        addsd     %xmm5, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm3, %xmm7
+        mulsd     %xmm2, %xmm3
+        xorpd     %xmm5, %xmm5
+        movl      $16368, %eax
+        pinsrw    $3, %eax, %xmm5
+        addsd     %xmm1, %xmm0
+        movl      $17184, %ecx
+        subl      %edx, %ecx
+        subl      $16256, %edx
+        orl       %edx, %ecx
+        jl        .L_2TAG_PACKET_2.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm3
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+.L_2TAG_PACKET_3.0.2:
+        jmp       ..B1.5
+.L_2TAG_PACKET_2.0.2:
+        cmpl      $0, %edx
+        jl        .L_2TAG_PACKET_4.0.2
+        mulsd     %xmm4, %xmm0
+        subsd     %xmm5, %xmm7
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_4.0.2:
+        mulsd     %xmm4, %xmm0
+        addsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        subsd     %xmm5, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_1.0.2:
+        movl      36(%rsp), %ecx
+        addsd     %xmm0, %xmm1
+        unpckhpd  %xmm0, %xmm0
+        addsd     %xmm1, %xmm0
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_5.0.2
+        fstcw     (%rsp)
+        movw      (%rsp), %dx
+        orw       $768, %dx
+        movw      %dx, 4(%rsp)
+        fldcw     4(%rsp)
+        movl      %eax, %edx
+        sarl      $1, %eax
+        subl      %eax, %edx
+        movdqa    emask(%rip), %xmm6
+        pandn     %xmm2, %xmm6
+        addl      $1023, %eax
+        movd      %eax, %xmm3
+        psllq     $52, %xmm3
+        orpd      %xmm3, %xmm6
+        mulsd     %xmm3, %xmm4
+        movsd     %xmm0, 16(%rsp)
+        fldl      16(%rsp)
+        movsd     %xmm6, 24(%rsp)
+        fldl      24(%rsp)
+        movsd     %xmm4, 16(%rsp)
+        fldl      16(%rsp)
+        addl      $1023, %edx
+        movd      %edx, %xmm4
+        psllq     $52, %xmm4
+        faddp     %st, %st(1)
+        fmul      %st, %st(1)
+        faddp     %st, %st(1)
+        movsd     %xmm4, 24(%rsp)
+        fldl      24(%rsp)
+        fmulp     %st, %st(1)
+        fstpl     16(%rsp)
+        movsd     16(%rsp), %xmm0
+        fldcw     (%rsp)
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        jmp       ..B1.5
+        cmpl      $-2147483648, %ecx
+        jb        .L_2TAG_PACKET_6.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        movl      $41, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_8.0.2:
+        cmpl      $2146435072, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+        movsd     XMAX(%rip), %xmm0
+        mulsd     %xmm0, %xmm0
+        movl      $41, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_9.0.2:
+        movl      36(%rsp), %eax
+        movl      32(%rsp), %edx
+        movl      %eax, %ecx
+        andl      $2147483647, %eax
+        cmpl      $2146435072, %eax
+        ja        .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %edx
+        jne       .L_2TAG_PACKET_10.0.2
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_11.0.2
+        movq      INF(%rip), %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_11.0.2:
+        jmp       .L_2TAG_PACKET_5.0.2
+.L_2TAG_PACKET_10.0.2:
+        movsd     32(%rsp), %xmm0
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_12.0.2:
+        addl      $16304, %eax
+        cmpl      $15504, %eax
+        jb        .L_2TAG_PACKET_13.0.2
+        movapd    cvl(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    16+cvl(%rip), %xmm3
+        movapd    32+cvl(%rip), %xmm4
+        movq      48+cvl(%rip), %xmm5
+        mulsd     %xmm1, %xmm1
+        xorpd     %xmm6, %xmm6
+        movl      $16352, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm2
+        xorpd     %xmm7, %xmm7
+        movl      $16368, %edx
+        pinsrw    $3, %edx, %xmm7
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm1, %xmm5
+        pshufd    $228, %xmm1, %xmm3
+        mulpd     %xmm1, %xmm1
+        mulsd     %xmm0, %xmm6
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm4, %xmm2
+        movq      %xmm7, %xmm4
+        addsd     %xmm6, %xmm7
+        mulpd     %xmm3, %xmm1
+        psrlq     $27, %xmm7
+        psllq     $27, %xmm7
+        movq      HIGHMASK(%rip), %xmm3
+        subsd     %xmm7, %xmm4
+        mulpd     %xmm1, %xmm2
+        addsd     %xmm4, %xmm6
+        pshufd    $238, %xmm2, %xmm1
+        addsd     %xmm2, %xmm6
+        andpd     %xmm0, %xmm3
+        movq      %xmm0, %xmm4
+        addsd     %xmm6, %xmm1
+        subsd     %xmm3, %xmm0
+        addsd     %xmm5, %xmm1
+        mulsd     %xmm7, %xmm3
+        mulsd     %xmm7, %xmm0
+        mulsd     %xmm1, %xmm4
+        addsd     %xmm4, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_13.0.2:
+        cmpl      $16, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        movq      %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $31, %xmm2
+        movd      %xmm2, %ecx
+        orl       %ecx, %eax
+        je        .L_2TAG_PACKET_3.0.2
+        movl      $16, %edx
+        xorpd     %xmm1, %xmm1
+        pinsrw    $3, %edx, %xmm1
+        mulsd     %xmm1, %xmm1
+        movl      $42, 8(%rsp)
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_0.0.2:
+        cmpl      $0, %eax
+        jl        .L_2TAG_PACKET_12.0.2
+        movl      36(%rsp), %eax
+        cmpl      $1083179008, %eax
+        jge       .L_2TAG_PACKET_8.0.2
+        cmpl      $-1048576, %eax
+        jae       .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_5.0.2:
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_7.0.2:
+        movq      %xmm0, 40(%rsp)
+..B1.3:
+        movq      40(%rsp), %xmm0
+.L_2TAG_PACKET_14.0.2:
+..B1.5:
+        addq      $56, %rsp
+..___tag_value_expm1.4:
+        ret       
+..___tag_value_expm1.5:
+END(expm1)
+# -- End  expm1
+	.section .rodata, "a"
+	.align 16
+	.align 16
+cv:
+	.long	1697350398
+	.long	1079448903
+	.long	1697350398
+	.long	1079448903
+	.long	4277796864
+	.long	1065758274
+	.long	4277796864
+	.long	1065758274
+	.long	3164486458
+	.long	1025308570
+	.long	3164486458
+	.long	1025308570
+	.long	1963358694
+	.long	1065423121
+	.long	1431655765
+	.long	1069897045
+	.long	1431655765
+	.long	1067799893
+	.long	0
+	.long	1071644672
+	.long	381774871
+	.long	1062650220
+	.long	381774871
+	.long	1062650220
+	.type	cv,@object
+	.size	cv,96
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	1127743488
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+Tbl_addr:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1000070955
+	.long	1042145304
+	.long	1040187392
+	.long	11418
+	.long	988267849
+	.long	1039500660
+	.long	3539992576
+	.long	22960
+	.long	36755401
+	.long	1042114290
+	.long	402653184
+	.long	34629
+	.long	3634769483
+	.long	1042178627
+	.long	1820327936
+	.long	46424
+	.long	2155991225
+	.long	1041560680
+	.long	847249408
+	.long	58348
+	.long	2766913307
+	.long	1039293264
+	.long	3489660928
+	.long	70401
+	.long	3651174602
+	.long	1040488175
+	.long	2927624192
+	.long	82586
+	.long	3073892131
+	.long	1042240606
+	.long	1006632960
+	.long	94904
+	.long	1328391742
+	.long	1042019037
+	.long	3942645760
+	.long	107355
+	.long	2650893825
+	.long	1041903210
+	.long	822083584
+	.long	119943
+	.long	2397289153
+	.long	1041802037
+	.long	2281701376
+	.long	132667
+	.long	430997175
+	.long	1042110606
+	.long	1845493760
+	.long	145530
+	.long	1230936525
+	.long	1041801015
+	.long	1702887424
+	.long	158533
+	.long	740675935
+	.long	1040178913
+	.long	4110417920
+	.long	171677
+	.long	3489810261
+	.long	1041825986
+	.long	2793406464
+	.long	184965
+	.long	2532600530
+	.long	1040767882
+	.long	167772160
+	.long	198398
+	.long	3542557060
+	.long	1041827263
+	.long	2986344448
+	.long	211976
+	.long	1401563777
+	.long	1041061093
+	.long	922746880
+	.long	225703
+	.long	3129406026
+	.long	1041852413
+	.long	880803840
+	.long	239579
+	.long	900993572
+	.long	1039283234
+	.long	1275068416
+	.long	253606
+	.long	2115029358
+	.long	1042140042
+	.long	562036736
+	.long	267786
+	.long	1086643152
+	.long	1041785419
+	.long	1610612736
+	.long	282120
+	.long	82864366
+	.long	1041256244
+	.long	3045064704
+	.long	296610
+	.long	2392968152
+	.long	1040913683
+	.long	3573547008
+	.long	311258
+	.long	2905856183
+	.long	1040002214
+	.long	1988100096
+	.long	326066
+	.long	3742008261
+	.long	1040011137
+	.long	1451229184
+	.long	341035
+	.long	863393794
+	.long	1040880621
+	.long	914358272
+	.long	356167
+	.long	1446136837
+	.long	1041372426
+	.long	3707764736
+	.long	371463
+	.long	927855201
+	.long	1040617636
+	.long	360710144
+	.long	386927
+	.long	1492679939
+	.long	1041050306
+	.long	2952790016
+	.long	402558
+	.long	608827001
+	.long	1041582217
+	.long	2181038080
+	.long	418360
+	.long	606260204
+	.long	1042271987
+	.long	1711276032
+	.long	434334
+	.long	3163044019
+	.long	1041843851
+	.long	1006632960
+	.long	450482
+	.long	4148747325
+	.long	1041962972
+	.long	3900702720
+	.long	466805
+	.long	802924201
+	.long	1041275378
+	.long	1442840576
+	.long	483307
+	.long	3052749833
+	.long	1041940577
+	.long	1937768448
+	.long	499988
+	.long	2216116399
+	.long	1041486744
+	.long	914358272
+	.long	516851
+	.long	2729697836
+	.long	1041445764
+	.long	2566914048
+	.long	533897
+	.long	540608356
+	.long	1041310907
+	.long	2600468480
+	.long	551129
+	.long	2916344493
+	.long	1040535661
+	.long	1107296256
+	.long	568549
+	.long	731391814
+	.long	1039497014
+	.long	2566914048
+	.long	586158
+	.long	1024722704
+	.long	1041461625
+	.long	2961178624
+	.long	603959
+	.long	3806831748
+	.long	1041732499
+	.long	2675965952
+	.long	621954
+	.long	238953304
+	.long	1040316488
+	.long	2189426688
+	.long	640145
+	.long	749123235
+	.long	1041725785
+	.long	2063597568
+	.long	658534
+	.long	1168187977
+	.long	1041175214
+	.long	2986344448
+	.long	677123
+	.long	3506096399
+	.long	1042186095
+	.long	1426063360
+	.long	695915
+	.long	1470221620
+	.long	1041675499
+	.long	2566914048
+	.long	714911
+	.long	3182425146
+	.long	1041483134
+	.long	3087007744
+	.long	734114
+	.long	3131698208
+	.long	1042208657
+	.long	4068474880
+	.long	753526
+	.long	2300504125
+	.long	1041428596
+	.long	2415919104
+	.long	773150
+	.long	2290297931
+	.long	1037388400
+	.long	3716153344
+	.long	792987
+	.long	3532148223
+	.long	1041626194
+	.long	771751936
+	.long	813041
+	.long	1161884404
+	.long	1042015258
+	.long	3699376128
+	.long	833312
+	.long	876383176
+	.long	1037968878
+	.long	1241513984
+	.long	853805
+	.long	3379986796
+	.long	1042213153
+	.long	3699376128
+	.long	874520
+	.long	1545797737
+	.long	1041681569
+	.long	58720256
+	.long	895462
+	.long	2925146801
+	.long	1042212567
+	.long	855638016
+	.long	916631
+	.long	1316627971
+	.long	1038516204
+	.long	3883925504
+	.long	938030
+	.long	3267869137
+	.long	1040337004
+	.long	2726297600
+	.long	959663
+	.long	3720868999
+	.long	1041782409
+	.long	3992977408
+	.long	981531
+	.long	433316142
+	.long	1041994064
+	.long	1526726656
+	.long	1003638
+	.long	781232103
+	.long	1040093400
+	.long	2172649472
+	.long	1025985
+	.type	Tbl_addr,@object
+	.size	Tbl_addr,1024
+	.align 16
+mmask:
+	.long	4294967232
+	.long	0
+	.long	4294967232
+	.long	0
+	.type	mmask,@object
+	.size	mmask,16
+	.align 16
+bias:
+	.long	65472
+	.long	0
+	.long	65472
+	.long	0
+	.type	bias,@object
+	.size	bias,16
+	.align 16
+emask:
+	.long	0
+	.long	4293918720
+	.long	0
+	.long	4293918720
+	.type	emask,@object
+	.size	emask,16
+	.align 16
+cvl:
+	.long	2773927732
+	.long	1053236707
+	.long	381774871
+	.long	1062650220
+	.long	379653899
+	.long	1056571845
+	.long	286331153
+	.long	1065423121
+	.long	436314138
+	.long	1059717536
+	.long	1431655765
+	.long	1067799893
+	.long	1431655765
+	.long	1069897045
+	.long	0
+	.long	1071644672
+	.type	cvl,@object
+	.size	cvl,64
+	.align 8
+XMAX:
+	.long	4294967295
+	.long	2146435071
+	.type	XMAX,@object
+	.size	XMAX,8
+	.align 8
+INF:
+	.long	0
+	.long	2146435072
+	.type	INF,@object
+	.size	INF,8
+	.align 8
+HIGHMASK:
+	.long	4227858432
+	.long	4294967295
+	.type	HIGHMASK,@object
+	.size	HIGHMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_expm1.1-.
+	.4byte ..___tag_value_expm1.5-..___tag_value_expm1.1
+	.2byte 0x0400
+	.4byte ..___tag_value_expm1.3-..___tag_value_expm1.1
+	.2byte 0x400e
+	.byte 0x04
+	.4byte ..___tag_value_expm1.4-..___tag_value_expm1.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_log1p.S b/libm/x86_64/s_log1p.S
new file mode 100644
index 0000000..1ff2d39
--- /dev/null
+++ b/libm/x86_64/s_log1p.S
@@ -0,0 +1,829 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//    Let x=2^k * mx, mx in [1,2)
+//
+//    Get B~1/mx based on the output of rcpps instruction (B0)
+//    B = int((B0*2^7+0.5))/2^7
+//
+//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+//    Result:  k*log(2) - log(B) + p(r)
+//             p(r) is a degree 7 polynomial
+//             -log(B) read from data table (high, low parts)
+//             Result is formed from high and low parts
+//
+// Special cases:
+//   log1p(NaN) = quiet NaN, and raise invalid exception
+//   log1p(+INF) = that INF
+//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
+//   log1p(-1) = -INF, and raises divide-by-zero exception
+//   log1p(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  log1p
+ENTRY(log1p)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_log1p.1:
+        subq      $24, %rsp
+..___tag_value_log1p.3:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movq      $0x3ff0000000000000, %rax
+        movd      %rax, %xmm2
+        xorpd     %xmm3, %xmm3
+        movl      $32768, %ecx
+        movd      %rcx, %xmm4
+        movq      $0xffffe00000000000, %r8
+        movd      %r8, %xmm5
+        movddup   %xmm0, %xmm7
+        pshufd    $68, %xmm2, %xmm6
+        pextrw    $3, %xmm0, %ecx
+        addsd     %xmm2, %xmm0
+        movq      %xmm0, %xmm1
+        pextrw    $3, %xmm0, %eax
+        subsd     %xmm0, %xmm6
+        orpd      %xmm2, %xmm0
+        psrlq     $27, %xmm0
+        lea       L_tbl(%rip), %r11
+        psrld     $2, %xmm0
+        subl      $16, %eax
+        cmpl      $32736, %eax
+        jae       .L_2TAG_PACKET_0.0.2
+        addsd     %xmm6, %xmm7
+        rcpps     %xmm0, %xmm0
+        psllq     $12, %xmm1
+        pshufd    $228, %xmm5, %xmm6
+        psrlq     $12, %xmm1
+        andl      $32752, %ecx
+        cmpl      $16256, %ecx
+        jb        .L_2TAG_PACKET_1.0.2
+        andl      $32752, %eax
+        movl      $32720, %ecx
+        subl      %eax, %ecx
+        pinsrw    $3, %ecx, %xmm3
+.L_2TAG_PACKET_2.0.2:
+        mulsd     %xmm3, %xmm7
+        paddd     %xmm4, %xmm0
+        movq      $0x3800000000000000, %rcx
+        movd      %rcx, %xmm4
+        orpd      %xmm2, %xmm1
+        movd      %xmm0, %edx
+        psllq     $29, %xmm0
+        andpd     %xmm1, %xmm5
+        andpd     %xmm6, %xmm0
+        subsd     %xmm5, %xmm1
+        paddd     %xmm4, %xmm0
+        mulsd     %xmm0, %xmm5
+        movl      $16352, %ecx
+        subl      %ecx, %eax
+        cvtsi2sd  %eax, %xmm4
+        mulsd     %xmm0, %xmm7
+        mulsd     %xmm0, %xmm1
+        movq      log2(%rip), %xmm6
+        movapd    coeff(%rip), %xmm3
+        subsd     %xmm2, %xmm5
+        andl      $16711680, %edx
+        shrl      $12, %edx
+        movapd    (%r11,%rdx), %xmm0
+        movapd    16+coeff(%rip), %xmm2
+        addsd     %xmm5, %xmm1
+        movq      %xmm1, %xmm5
+        addsd     %xmm7, %xmm1
+        subsd     %xmm1, %xmm5
+        addsd     %xmm5, %xmm7
+        mulsd     %xmm4, %xmm6
+        mulsd     8+log2(%rip), %xmm4
+        mulsd     %xmm1, %xmm3
+        movddup   %xmm1, %xmm5
+        addsd     %xmm6, %xmm0
+        mulpd     %xmm5, %xmm2
+        mulpd     %xmm5, %xmm5
+        movddup   %xmm0, %xmm6
+        addsd     %xmm1, %xmm0
+        addpd     32+coeff(%rip), %xmm2
+        mulpd     %xmm5, %xmm3
+        subsd     %xmm0, %xmm6
+        mulsd     %xmm1, %xmm2
+        addsd     %xmm7, %xmm4
+        mulsd     %xmm1, %xmm7
+        addsd     %xmm6, %xmm1
+        pshufd    $238, %xmm0, %xmm6
+        mulsd     %xmm5, %xmm5
+        addsd     %xmm6, %xmm4
+        subsd     %xmm7, %xmm1
+        addpd     %xmm3, %xmm2
+        addsd     %xmm4, %xmm1
+        mulpd     %xmm5, %xmm2
+        addsd     %xmm2, %xmm1
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_0.0.2:
+        movq      8(%rsp), %xmm0
+        movq      8(%rsp), %xmm1
+        addl      $16, %eax
+        cmpl      $32768, %eax
+        jae       .L_2TAG_PACKET_3.0.2
+        cmpl      $0, %eax
+        je        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_5.0.2:
+        addsd     %xmm0, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_6.0.2:
+        ja        .L_2TAG_PACKET_5.0.2
+        cmpl      $0, %edx
+        ja        .L_2TAG_PACKET_5.0.2
+        jmp       .L_2TAG_PACKET_7.0.2
+.L_2TAG_PACKET_3.0.2:
+        movd      %xmm1, %edx
+        psrlq     $32, %xmm1
+        movd      %xmm1, %ecx
+        addl      %ecx, %ecx
+        cmpl      $-2097152, %ecx
+        jae       .L_2TAG_PACKET_6.0.2
+        orl       %ecx, %edx
+        cmpl      $0, %edx
+        je        .L_2TAG_PACKET_4.0.2
+.L_2TAG_PACKET_7.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $32752, %eax
+        pinsrw    $3, %eax, %xmm1
+        movl      $141, (%rsp)
+        mulsd     %xmm1, %xmm0
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_4.0.2:
+        xorpd     %xmm1, %xmm1
+        xorpd     %xmm0, %xmm0
+        movl      $49136, %eax
+        pinsrw    $3, %eax, %xmm0
+        divsd     %xmm1, %xmm0
+        movl      $140, (%rsp)
+        jmp       .L_2TAG_PACKET_8.0.2
+.L_2TAG_PACKET_1.0.2:
+        movq      8(%rsp), %xmm0
+        cmpl      $15504, %ecx
+        jb        .L_2TAG_PACKET_9.0.2
+        movapd    coeff2(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        movapd    16+coeff2(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm4
+        movapd    32+coeff2(%rip), %xmm3
+        mulpd     %xmm0, %xmm1
+        xorpd     %xmm6, %xmm6
+        mulpd     %xmm4, %xmm4
+        addpd     %xmm2, %xmm1
+        pshufd    $68, %xmm4, %xmm5
+        mulpd     %xmm0, %xmm4
+        movl      $49120, %eax
+        pinsrw    $3, %eax, %xmm6
+        mulpd     %xmm0, %xmm1
+        mulsd     %xmm4, %xmm4
+        addpd     %xmm3, %xmm1
+        mulsd     %xmm6, %xmm5
+        mulpd     %xmm4, %xmm1
+        pshufd    $238, %xmm1, %xmm7
+        addsd     %xmm7, %xmm1
+        addsd     %xmm5, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.5
+.L_2TAG_PACKET_9.0.2:
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_10.0.2
+        jmp       ..B1.5
+.L_2TAG_PACKET_10.0.2:
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.5
+.L_2TAG_PACKET_8.0.2:
+        movq      %xmm0, 16(%rsp)
+..B1.3:
+        movq      16(%rsp), %xmm0
+.L_2TAG_PACKET_11.0.2:
+..B1.5:
+        addq      $24, %rsp
+..___tag_value_log1p.4:
+        ret       
+..___tag_value_log1p.5:
+END(log1p)
+# -- End  log1p
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L_tbl:
+	.long	4277811200
+	.long	1072049730
+	.long	2479318832
+	.long	1026487127
+	.long	2854492160
+	.long	1072033410
+	.long	215631550
+	.long	1025638968
+	.long	1547061248
+	.long	1072017216
+	.long	2886781435
+	.long	1026423395
+	.long	649825280
+	.long	1072001146
+	.long	4281533405
+	.long	1024038923
+	.long	646346752
+	.long	1071985198
+	.long	1562735921
+	.long	1023790276
+	.long	2203734016
+	.long	1071969370
+	.long	1838397691
+	.long	3173936209
+	.long	1872169984
+	.long	1071953661
+	.long	3981202460
+	.long	1022325013
+	.long	669557760
+	.long	1071938069
+	.long	4182597802
+	.long	3173174122
+	.long	4076413952
+	.long	1071922591
+	.long	1209029111
+	.long	3170736207
+	.long	556125184
+	.long	1071907228
+	.long	821086028
+	.long	3173437049
+	.long	204914688
+	.long	1071891976
+	.long	2097025986
+	.long	3171071798
+	.long	387545088
+	.long	1071876834
+	.long	3142936996
+	.long	3173092218
+	.long	2912783360
+	.long	1071861800
+	.long	2502420140
+	.long	1024505919
+	.long	1144260608
+	.long	1071846874
+	.long	3315658140
+	.long	3173469843
+	.long	1471209472
+	.long	1071832053
+	.long	129621009
+	.long	3172443877
+	.long	1829683200
+	.long	1071817336
+	.long	3885467693
+	.long	1025535275
+	.long	288676864
+	.long	1071802722
+	.long	86139472
+	.long	3171639793
+	.long	3636378624
+	.long	1071788208
+	.long	1850238587
+	.long	1024654342
+	.long	1606817792
+	.long	1071773795
+	.long	3388899795
+	.long	3173675586
+	.long	1236164608
+	.long	1071759480
+	.long	3983599207
+	.long	1020046558
+	.long	1089616896
+	.long	1071745262
+	.long	4171974224
+	.long	1024773198
+	.long	4143093760
+	.long	1071731139
+	.long	2727587401
+	.long	3173965207
+	.long	600267776
+	.long	1071717112
+	.long	3147685042
+	.long	3173353031
+	.long	2249313280
+	.long	1071703177
+	.long	125835074
+	.long	1025255832
+	.long	3805303808
+	.long	1071689334
+	.long	2289991207
+	.long	1025460331
+	.long	87278592
+	.long	1071675583
+	.long	1106114045
+	.long	1025933602
+	.long	3195405312
+	.long	1071661920
+	.long	3885316576
+	.long	3171206239
+	.long	3853649920
+	.long	1071648346
+	.long	2977069852
+	.long	3171236771
+	.long	2944026624
+	.long	1071625048
+	.long	1008093493
+	.long	1023444474
+	.long	3993180160
+	.long	1071598247
+	.long	1862355595
+	.long	1024642533
+	.long	1454641152
+	.long	1071571617
+	.long	1514603089
+	.long	1026500596
+	.long	3286085632
+	.long	1071545154
+	.long	1400028424
+	.long	3173279056
+	.long	438773760
+	.long	1071518858
+	.long	120727864
+	.long	3172148914
+	.long	1212979200
+	.long	1071492725
+	.long	1625055594
+	.long	3172901933
+	.long	1189017600
+	.long	1071466754
+	.long	3920062376
+	.long	1025727407
+	.long	403064832
+	.long	1071440943
+	.long	1053271728
+	.long	3171391427
+	.long	3343210496
+	.long	1071415289
+	.long	3243395502
+	.long	3173627613
+	.long	1765777408
+	.long	1071389792
+	.long	2145968512
+	.long	1026354304
+	.long	461430784
+	.long	1071364449
+	.long	4094322285
+	.long	1026021467
+	.long	71706624
+	.long	1071339258
+	.long	763632021
+	.long	1024496933
+	.long	1380503552
+	.long	1071314217
+	.long	1383547992
+	.long	3173088453
+	.long	1015732224
+	.long	1071289325
+	.long	3198646877
+	.long	1025390322
+	.long	35977216
+	.long	1071264580
+	.long	2141026805
+	.long	1025754693
+	.long	3927306240
+	.long	1071239979
+	.long	282116272
+	.long	3173394334
+	.long	1125341184
+	.long	1071215523
+	.long	2768427504
+	.long	3172279059
+	.long	1666971648
+	.long	1071191208
+	.long	786837629
+	.long	3172427445
+	.long	2827694080
+	.long	1071167033
+	.long	3857122416
+	.long	3173014241
+	.long	2003683328
+	.long	1071142997
+	.long	859010954
+	.long	1026545007
+	.long	1004017664
+	.long	1071119098
+	.long	3356644970
+	.long	3173458064
+	.long	1753020416
+	.long	1071095334
+	.long	788338552
+	.long	1026157693
+	.long	1992718336
+	.long	1071071704
+	.long	1239179443
+	.long	1026394889
+	.long	3870234624
+	.long	1071048206
+	.long	2082614663
+	.long	1024926053
+	.long	1050437632
+	.long	1071024840
+	.long	660007840
+	.long	1025548499
+	.long	188395520
+	.long	1071001603
+	.long	3878792704
+	.long	3173889571
+	.long	3747176448
+	.long	1070978493
+	.long	144991708
+	.long	3171552042
+	.long	1405669376
+	.long	1070955511
+	.long	3999088879
+	.long	1025486317
+	.long	121151488
+	.long	1070932654
+	.long	2170865497
+	.long	1026473584
+	.long	2652319744
+	.long	1070909920
+	.long	453695652
+	.long	3173916809
+	.long	3262236672
+	.long	1070887309
+	.long	157800053
+	.long	3173984206
+	.long	601221120
+	.long	1070864820
+	.long	3968917661
+	.long	1023992886
+	.long	1999843328
+	.long	1070842450
+	.long	3053895004
+	.long	1024998228
+	.long	1992167424
+	.long	1070820199
+	.long	2968614856
+	.long	1024552653
+	.long	3788726272
+	.long	1070798065
+	.long	3542170808
+	.long	3173573242
+	.long	2094829568
+	.long	1070776048
+	.long	1246758132
+	.long	1026202874
+	.long	288675840
+	.long	1070754146
+	.long	3747328950
+	.long	1026331585
+	.long	1829681152
+	.long	1070732357
+	.long	3125197546
+	.long	1024100318
+	.long	1666869248
+	.long	1070710681
+	.long	1363656119
+	.long	1026336493
+	.long	3417110528
+	.long	1070689116
+	.long	4154791553
+	.long	1026267853
+	.long	2183653376
+	.long	1070667662
+	.long	1671819292
+	.long	3173785870
+	.long	1734434816
+	.long	1070646317
+	.long	373091049
+	.long	1025972363
+	.long	1615681536
+	.long	1070625080
+	.long	384650897
+	.long	1022926043
+	.long	1445382144
+	.long	1070603950
+	.long	344320330
+	.long	3172397196
+	.long	1823715328
+	.long	1070569756
+	.long	3389841200
+	.long	1025231852
+	.long	3839688704
+	.long	1070527917
+	.long	1706790417
+	.long	3167363349
+	.long	4293332992
+	.long	1070486286
+	.long	1614935088
+	.long	1019351591
+	.long	2966720512
+	.long	1070444861
+	.long	4145393717
+	.long	3173711658
+	.long	4066729984
+	.long	1070403639
+	.long	1974925028
+	.long	3171437182
+	.long	3337621504
+	.long	1070362619
+	.long	3314953170
+	.long	3169971314
+	.long	943448064
+	.long	1070321799
+	.long	1498682038
+	.long	3173862340
+	.long	1465634816
+	.long	1070281176
+	.long	1319952810
+	.long	3171693965
+	.long	1015734272
+	.long	1070240749
+	.long	1347821929
+	.long	3173544515
+	.long	118001664
+	.long	1070200516
+	.long	1751482746
+	.long	1026134093
+	.long	3707174912
+	.long	1070160474
+	.long	1486946159
+	.long	1023930920
+	.long	3946381312
+	.long	1070120623
+	.long	2867408081
+	.long	3171368276
+	.long	1699848192
+	.long	1070080961
+	.long	2590187139
+	.long	1025379803
+	.long	2235846656
+	.long	1070041485
+	.long	1888568069
+	.long	3172754960
+	.long	2339729408
+	.long	1070002194
+	.long	3852214753
+	.long	3173323149
+	.long	3196850176
+	.long	1069963086
+	.long	742141560
+	.long	1025101707
+	.long	1800683520
+	.long	1069924160
+	.long	3949500444
+	.long	3172102179
+	.long	3835801600
+	.long	1069885413
+	.long	3848895943
+	.long	1025913832
+	.long	2201202688
+	.long	1069846845
+	.long	1425913464
+	.long	1025868665
+	.long	2778279936
+	.long	1069808453
+	.long	2120889677
+	.long	3173831128
+	.long	2954203136
+	.long	1069770236
+	.long	592147081
+	.long	1019621288
+	.long	210141184
+	.long	1069732193
+	.long	3414275233
+	.long	1023647084
+	.long	709476352
+	.long	1069694321
+	.long	2413027164
+	.long	1024462115
+	.long	2116284416
+	.long	1069656619
+	.long	1144559924
+	.long	1026336654
+	.long	2183651328
+	.long	1069619086
+	.long	3459057650
+	.long	1025634168
+	.long	3047047168
+	.long	1069581720
+	.long	1879674924
+	.long	3173508573
+	.long	970711040
+	.long	1069541521
+	.long	1335954173
+	.long	3173332182
+	.long	2198478848
+	.long	1069467449
+	.long	2951103968
+	.long	3173892200
+	.long	1669611520
+	.long	1069393703
+	.long	531044147
+	.long	1025149248
+	.long	29114368
+	.long	1069320280
+	.long	3327831251
+	.long	1025918673
+	.long	2376949760
+	.long	1069247176
+	.long	737634533
+	.long	3172176000
+	.long	1085390848
+	.long	1069174390
+	.long	3108243400
+	.long	3171828406
+	.long	1566130176
+	.long	1069101918
+	.long	985483226
+	.long	1025708380
+	.long	792780800
+	.long	1069029758
+	.long	4184866295
+	.long	1024426204
+	.long	183156736
+	.long	1068957907
+	.long	2845699378
+	.long	1022107277
+	.long	1301782528
+	.long	1068886362
+	.long	1012735262
+	.long	3173804294
+	.long	1562411008
+	.long	1068815121
+	.long	2197086703
+	.long	3170187813
+	.long	2815549440
+	.long	1068744181
+	.long	2782613207
+	.long	1026345054
+	.long	2756124672
+	.long	1068673540
+	.long	2929486205
+	.long	3173037800
+	.long	3511050240
+	.long	1068603195
+	.long	1443733147
+	.long	3173331549
+	.long	3047047168
+	.long	1068533144
+	.long	1879674924
+	.long	3172459997
+	.long	3221667840
+	.long	1068427825
+	.long	1338588027
+	.long	3171815742
+	.long	3453861888
+	.long	1068288883
+	.long	1205348359
+	.long	3172624626
+	.long	3506110464
+	.long	1068150514
+	.long	893105198
+	.long	1025571866
+	.long	346013696
+	.long	1068012714
+	.long	3495569021
+	.long	3172563349
+	.long	4074029056
+	.long	1067875476
+	.long	3961106338
+	.long	3171065595
+	.long	3559784448
+	.long	1067738798
+	.long	1975385384
+	.long	3173783155
+	.long	797769728
+	.long	1067602675
+	.long	3760305787
+	.long	1026047642
+	.long	2313633792
+	.long	1067467101
+	.long	1559353171
+	.long	1023480256
+	.long	3960766464
+	.long	1067213778
+	.long	1067365107
+	.long	1025865926
+	.long	684261376
+	.long	1066944805
+	.long	844762164
+	.long	3173687482
+	.long	630718464
+	.long	1066676905
+	.long	2458269694
+	.long	1024033081
+	.long	1486061568
+	.long	1066410070
+	.long	115537874
+	.long	3173243995
+	.long	2743664640
+	.long	1065886792
+	.long	3665098304
+	.long	3173471607
+	.long	1971912704
+	.long	1065357333
+	.long	2577214440
+	.long	3171993451
+	.long	1498939392
+	.long	1064306693
+	.long	3409036923
+	.long	1025599151
+	.long	0
+	.long	0
+	.long	0
+	.long	2147483648
+	.type	L_tbl,@object
+	.size	L_tbl,2064
+	.align 16
+log2:
+	.long	4277811200
+	.long	1067855426
+	.long	2479318832
+	.long	1022292823
+	.type	log2,@object
+	.size	log2,16
+	.align 16
+coeff:
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1030730101
+	.long	3217380702
+	.long	1431655765
+	.long	1070945621
+	.long	2576980378
+	.long	1070176665
+	.long	0
+	.long	3219128320
+	.type	coeff,@object
+	.size	coeff,48
+	.align 16
+coeff2:
+	.long	0
+	.long	3217031168
+	.long	2576980378
+	.long	1070176665
+	.long	2454267026
+	.long	1069697316
+	.long	0
+	.long	3218079744
+	.long	1431655765
+	.long	3217380693
+	.long	1431655765
+	.long	1070945621
+	.type	coeff2,@object
+	.size	coeff2,48
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_log1p.1-.
+	.4byte ..___tag_value_log1p.5-..___tag_value_log1p.1
+	.2byte 0x0400
+	.4byte ..___tag_value_log1p.3-..___tag_value_log1p.1
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_log1p.4-..___tag_value_log1p.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/s_sin.S b/libm/x86_64/s_sin.S
new file mode 100644
index 0000000..2f93a34
--- /dev/null
+++ b/libm/x86_64/s_sin.S
@@ -0,0 +1,1300 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+//     1. RANGE REDUCTION
+//
+//     We perform an initial range reduction from X to r with
+//
+//          X =~= N * pi/32 + r
+//
+//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
+//     where |N| <= 932560. Beyond this, the range reduction is
+//     insufficiently accurate. For extremely small inputs, 
+//     denormalization can occur internally, impacting performance.
+//     This means that the main path is actually only taken for
+//     2^-252 <= |X| < 90112.
+//
+//     To avoid branches, we perform the range reduction to full
+//     accuracy each time.
+//
+//          X - N * (P_1 + P_2 + P_3)
+//
+//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
+//     is exact) and P_3 is a 53-bit number. Together, these
+//     approximate pi well enough for all cases in the restricted
+//     range.
+//
+//     The main reduction sequence is:
+//
+//             y = 32/pi * x
+//             N = integer(y)
+//     (computed by adding and subtracting off SHIFTER)
+//
+//             m_1 = N * P_1
+//             m_2 = N * P_2
+//             r_1 = x - m_1
+//             r = r_1 - m_2
+//     (this r can be used for most of the calculation)
+//
+//             c_1 = r_1 - r
+//             m_3 = N * P_3
+//             c_2 = c_1 - m_2
+//             c = c_2 - m_3
+//
+//     2. MAIN ALGORITHM
+//
+//     The algorithm uses a table lookup based on B = M * pi / 32
+//     where M = N mod 64. The stored values are:
+//       sigma             closest power of 2 to cos(B)
+//       C_hl              53-bit cos(B) - sigma
+//       S_hi + S_lo       2 * 53-bit sin(B)
+//
+//     The computation is organized as follows:
+//
+//          sin(B + r + c) = [sin(B) + sigma * r] +
+//                           r * (cos(B) - sigma) +
+//                           sin(B) * [cos(r + c) - 1] +
+//                           cos(B) * [sin(r + c) - r]
+//
+//     which is approximately:
+//
+//          [S_hi + sigma * r] +
+//          C_hl * r +
+//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
+//          (C_hl + sigma) * [(sin(r) - r) + c]
+//
+//     and this is what is actually computed. We separate this sum
+//     into four parts:
+//
+//          hi + med + pols + corr
+//
+//     where
+//
+//          hi       = S_hi + sigma r
+//          med      = C_hl * r
+//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+//     3. POLYNOMIAL
+//
+//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+//     (sin(r) - r) can be rearranged freely, since it is quite
+//     small, so we exploit parallelism to the fullest.
+//
+//          psc4       =   SC_4 * r_1
+//          msc4       =   psc4 * r
+//          r2         =   r * r
+//          msc2       =   SC_2 * r2
+//          r4         =   r2 * r2
+//          psc3       =   SC_3 + msc4
+//          psc1       =   SC_1 + msc2
+//          msc3       =   r4 * psc3
+//          sincospols =   psc1 + msc3
+//          pols       =   sincospols *
+//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
+//
+//     4. CORRECTION TERM
+//
+//     This is where the "c" component of the range reduction is
+//     taken into account; recall that just "r" is used for most of
+//     the calculation.
+//
+//          -c   = m_3 - c_2
+//          -d   = S_hi * r - (C_hl + sigma)
+//          corr = -c * -d + S_lo
+//
+//     5. COMPENSATED SUMMATIONS
+//
+//     The two successive compensated summations add up the high
+//     and medium parts, leaving just the low parts to add up at
+//     the end.
+//
+//          rs        =  sigma * r
+//          res_int   =  S_hi + rs
+//          k_0       =  S_hi - res_int
+//          k_2       =  k_0 + rs
+//          med       =  C_hl * r
+//          res_hi    =  res_int + med
+//          k_1       =  res_int - res_hi
+//          k_3       =  k_1 + med
+//
+//     6. FINAL SUMMATION
+//
+//     We now add up all the small parts:
+//
+//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+//     Now the overall result is just:
+//
+//          res_hi + res_lo
+//
+//     7. SMALL ARGUMENTS
+//
+//     If |x| < SNN (SNN meaning the smallest normal number), we
+//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
+//     do 2^-55 * (2^55 * x - x).
+//
+// Special cases:
+//  sin(NaN) = quiet NaN, and raise invalid exception
+//  sin(INF) = NaN and raise invalid exception
+//  sin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  sin
+ENTRY(sin)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_sin.1:
+        pushq     %rbx
+..___tag_value_sin.3:
+        subq      $16, %rsp
+..___tag_value_sin.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        movl      12(%rsp), %eax
+        movq      PI32INV(%rip), %xmm1
+        movq      SHIFTER(%rip), %xmm2
+        andl      $2147418112, %eax
+        subl      $808452096, %eax
+        cmpl      $281346048, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        mulsd     %xmm0, %xmm1
+        movapd    ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movapd    P_2(%rip), %xmm6
+        movq      $0x3fb921fb54400000, %r8
+        movd      %r8, %xmm3
+        movapd    SC_4(%rip), %xmm5
+        pshufd    $68, %xmm0, %xmm4
+        mulsd     %xmm1, %xmm3
+        movddup   %xmm1, %xmm1
+        andl      $63, %edx
+        shll      $5, %edx
+        lea       Ctable(%rip), %rax
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm6
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        subsd     %xmm3, %xmm0
+        movddup   %xmm4, %xmm3
+        subsd     %xmm6, %xmm4
+        pshufd    $68, %xmm0, %xmm0
+        movapd    (%rax), %xmm2
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm6, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm6, %xmm3
+        movapd    SC_2(%rip), %xmm6
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        shrl      $20, %eax
+        cmpw      $3325, %ax
+        jne       .L_2TAG_PACKET_2.0.1
+        mulsd     ALL_ONES(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        movq      TWO_POW_55(%rip), %xmm3
+        mulsd     %xmm0, %xmm3
+        subsd     %xmm0, %xmm3
+        mulsd     TWO_POW_M55(%rip), %xmm3
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_3.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $1, %ecx
+        jl        .L_2TAG_PACKET_4.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $536870911, %r9d
+        testl     $268435456, %r9d
+        jne       .L_2TAG_PACKET_5.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_6.0.1:
+.L_2TAG_PACKET_7.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_9.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_10.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_11.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm6
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $29, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm6
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm6
+        movq      %xmm0, %xmm2
+        addsd     %xmm6, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm6
+.L_2TAG_PACKET_12.0.1:
+        movq      PI32INV(%rip), %xmm1
+        mulsd     %xmm0, %xmm1
+        movq      ONEHALF(%rip), %xmm5
+        movq      SIGN_MASK(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        cvttsd2si %xmm1, %edx
+        cvtsi2sd  %edx, %xmm1
+        movq      P_1(%rip), %xmm3
+        movapd    P_2(%rip), %xmm2
+        mulsd     %xmm1, %xmm3
+        unpcklpd  %xmm1, %xmm1
+        shll      $3, %eax
+        addl      $1865216, %edx
+        movq      %xmm0, %xmm4
+        addl      %eax, %edx
+        andl      $63, %edx
+        movapd    SC_4(%rip), %xmm5
+        lea       Ctable(%rip), %rax
+        shll      $5, %edx
+        addq      %rdx, %rax
+        mulpd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm0
+        mulsd     P_3(%rip), %xmm1
+        subsd     %xmm3, %xmm4
+        movq      8(%rax), %xmm7
+        unpcklpd  %xmm0, %xmm0
+        movq      %xmm4, %xmm3
+        subsd     %xmm2, %xmm4
+        mulpd     %xmm0, %xmm5
+        subpd     %xmm2, %xmm0
+        mulsd     %xmm4, %xmm7
+        subsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm5
+        mulpd     %xmm0, %xmm0
+        subsd     %xmm2, %xmm3
+        movapd    (%rax), %xmm2
+        subsd     %xmm3, %xmm1
+        movq      24(%rax), %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm7
+        subsd     %xmm6, %xmm1
+        movapd    SC_2(%rip), %xmm6
+        mulsd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm6
+        mulsd     %xmm4, %xmm3
+        mulpd     %xmm0, %xmm2
+        mulpd     %xmm0, %xmm0
+        addpd     SC_3(%rip), %xmm5
+        mulsd     (%rax), %xmm4
+        addpd     SC_1(%rip), %xmm6
+        mulpd     %xmm0, %xmm5
+        movq      %xmm3, %xmm0
+        addsd     8(%rax), %xmm3
+        mulpd     %xmm7, %xmm1
+        movq      %xmm4, %xmm7
+        addsd     %xmm3, %xmm4
+        addpd     %xmm5, %xmm6
+        movq      8(%rax), %xmm5
+        subsd     %xmm3, %xmm5
+        subsd     %xmm4, %xmm3
+        addsd     16(%rax), %xmm1
+        mulpd     %xmm2, %xmm6
+        addsd     %xmm0, %xmm5
+        addsd     %xmm7, %xmm3
+        addsd     %xmm5, %xmm1
+        addsd     %xmm3, %xmm1
+        addsd     %xmm6, %xmm1
+        unpckhpd  %xmm6, %xmm6
+        movq      %xmm4, %xmm0
+        addsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_8.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_9.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_9.0.1
+        xorpd     %xmm0, %xmm0
+        xorpd     %xmm6, %xmm6
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_10.0.1:
+        je        .L_2TAG_PACKET_11.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_11.0.1
+.L_2TAG_PACKET_4.0.1:
+        negl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_13.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $3, %rdi
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_5.0.1:
+        shrl      %cl, %r9d
+        movl      $536870912, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $536870912, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_6.0.1
+.L_2TAG_PACKET_13.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $3, %rdi
+        addl      $536870912, %edi
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_3.0.1:
+        movq      8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_14.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_sin.6:
+        popq      %rbx
+..___tag_value_sin.8:
+        ret       
+..___tag_value_sin.9:
+END(sin)
+# -- End  sin
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+P_2:
+	.long	442499072
+	.long	1032893537
+	.long	442499072
+	.long	1032893537
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+SC_4:
+	.long	2773927732
+	.long	1053236707
+	.long	436314138
+	.long	1056571808
+	.type	SC_4,@object
+	.size	SC_4,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	1072693248
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	1072693248
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	1071644672
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	1071644672
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	1070596096
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	1070596096
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	1069547520
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	1072683149
+	.long	1073741824
+	.long	3163061750
+	.long	0
+	.long	3217031168
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	1072652951
+	.long	536870912
+	.long	1014325783
+	.long	0
+	.long	3218079744
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	1072602945
+	.long	3758096384
+	.long	1015505073
+	.long	0
+	.long	3218079744
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	1072533611
+	.long	536870912
+	.long	1014257638
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	1072445618
+	.long	2147483648
+	.long	3161907377
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	1072339814
+	.long	3758096384
+	.long	1010431536
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	1072217216
+	.long	536870912
+	.long	3162686945
+	.long	0
+	.long	3219128320
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	1072079006
+	.long	536870912
+	.long	3163282740
+	.long	0
+	.long	3219128320
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	1071926515
+	.long	536870912
+	.long	1013450602
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	1071761211
+	.long	536870912
+	.long	1015752157
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	1071524701
+	.long	536870912
+	.long	1012796809
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	1071152610
+	.long	3758096384
+	.long	3160878317
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	1070765062
+	.long	2684354560
+	.long	3161838221
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	1070135480
+	.long	3221225472
+	.long	3160567065
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	1069094822
+	.long	3758096384
+	.long	3158189848
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	393047345
+	.long	1064548654
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	3220176896
+	.long	18115067
+	.long	1066642694
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	3220176896
+	.long	2476548698
+	.long	1067846634
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	3220176896
+	.long	2255197647
+	.long	1068727457
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	3220176896
+	.long	1945768569
+	.long	1069431400
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	3220176896
+	.long	1539668340
+	.long	1069912679
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	3220176896
+	.long	1403757309
+	.long	1070403070
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	3220176896
+	.long	2583490354
+	.long	3217719929
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	3219128320
+	.long	2485417816
+	.long	3217109964
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	3219128320
+	.long	2598800519
+	.long	3215750067
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	3219128320
+	.long	2140183630
+	.long	1067272748
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	3219128320
+	.long	1699043957
+	.long	1069418613
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	3219128320
+	.long	1991047213
+	.long	3215237169
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	3218079744
+	.long	240740309
+	.long	1068244255
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	3218079744
+	.long	257503056
+	.long	1067164005
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	3217031168
+	.long	0
+	.long	0
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	257503056
+	.long	3214647653
+	.long	2748392742
+	.long	3220166797
+	.long	1073741824
+	.long	1015578102
+	.long	0
+	.long	1069547520
+	.long	240740309
+	.long	3215727903
+	.long	3489094832
+	.long	3220136599
+	.long	536870912
+	.long	3161809431
+	.long	0
+	.long	1070596096
+	.long	1991047213
+	.long	1067753521
+	.long	1455828442
+	.long	3220086593
+	.long	3758096384
+	.long	3162988721
+	.long	0
+	.long	1070596096
+	.long	1699043957
+	.long	3216902261
+	.long	3476196678
+	.long	3220017259
+	.long	536870912
+	.long	3161741286
+	.long	0
+	.long	1071644672
+	.long	2140183630
+	.long	3214756396
+	.long	4051746225
+	.long	3219929266
+	.long	2147483648
+	.long	1014423729
+	.long	0
+	.long	1071644672
+	.long	2598800519
+	.long	1068266419
+	.long	688824739
+	.long	3219823462
+	.long	3758096384
+	.long	3157915184
+	.long	0
+	.long	1071644672
+	.long	2485417816
+	.long	1069626316
+	.long	1796544321
+	.long	3219700864
+	.long	536870912
+	.long	1015203297
+	.long	0
+	.long	1071644672
+	.long	2583490354
+	.long	1070236281
+	.long	1719614413
+	.long	3219562654
+	.long	536870912
+	.long	1015799092
+	.long	0
+	.long	1071644672
+	.long	1403757309
+	.long	3217886718
+	.long	621354454
+	.long	3219410163
+	.long	536870912
+	.long	3160934250
+	.long	0
+	.long	1072693248
+	.long	1539668340
+	.long	3217396327
+	.long	967731400
+	.long	3219244859
+	.long	536870912
+	.long	3163235805
+	.long	0
+	.long	1072693248
+	.long	1945768569
+	.long	3216915048
+	.long	939980347
+	.long	3219008349
+	.long	536870912
+	.long	3160280457
+	.long	0
+	.long	1072693248
+	.long	2255197647
+	.long	3216211105
+	.long	2796464483
+	.long	3218636258
+	.long	3758096384
+	.long	1013394669
+	.long	0
+	.long	1072693248
+	.long	2476548698
+	.long	3215330282
+	.long	785751814
+	.long	3218248710
+	.long	2684354560
+	.long	1014354573
+	.long	0
+	.long	1072693248
+	.long	18115067
+	.long	3214126342
+	.long	1013556747
+	.long	3217619128
+	.long	3221225472
+	.long	1013083417
+	.long	0
+	.long	1072693248
+	.long	393047345
+	.long	3212032302
+	.long	3156849708
+	.long	3216578470
+	.long	3758096384
+	.long	1010706200
+	.long	0
+	.long	1072693248
+	.type	Ctable,@object
+	.size	Ctable,2048
+	.align 16
+SC_2:
+	.long	286331153
+	.long	1065423121
+	.long	1431655765
+	.long	1067799893
+	.type	SC_2,@object
+	.size	SC_2,16
+	.align 16
+SC_3:
+	.long	436314138
+	.long	3207201184
+	.long	381774871
+	.long	3210133868
+	.type	SC_3,@object
+	.size	SC_3,16
+	.align 16
+SC_1:
+	.long	1431655765
+	.long	3217380693
+	.long	0
+	.long	3219128320
+	.type	SC_1,@object
+	.size	SC_1,16
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	1073741824
+	.long	1072243195
+	.long	407279769
+	.long	1046758445
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+PI32INV:
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,8
+	.align 8
+SHIFTER:
+	.long	0
+	.long	1127743488
+	.type	SHIFTER,@object
+	.size	SHIFTER,8
+	.align 8
+SIGN_MASK:
+	.long	0
+	.long	2147483648
+	.type	SIGN_MASK,@object
+	.size	SIGN_MASK,8
+	.align 8
+P_3:
+	.long	771977331
+	.long	996350346
+	.type	P_3,@object
+	.size	P_3,8
+	.align 8
+ALL_ONES:
+	.long	4294967295
+	.long	1072693247
+	.type	ALL_ONES,@object
+	.size	ALL_ONES,8
+	.align 8
+TWO_POW_55:
+	.long	0
+	.long	1130364928
+	.type	TWO_POW_55,@object
+	.size	TWO_POW_55,8
+	.align 8
+TWO_POW_M55:
+	.long	0
+	.long	1015021568
+	.type	TWO_POW_M55,@object
+	.size	TWO_POW_M55,8
+	.align 8
+P_1:
+	.long	1413480448
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,8
+	.align 8
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_sin.1-.
+	.4byte ..___tag_value_sin.9-..___tag_value_sin.1
+	.2byte 0x0400
+	.4byte ..___tag_value_sin.3-..___tag_value_sin.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_sin.5-..___tag_value_sin.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_sin.6-..___tag_value_sin.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_sin.8-..___tag_value_sin.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_tan.S b/libm/x86_64/s_tan.S
new file mode 100644
index 0000000..74cb044
--- /dev/null
+++ b/libm/x86_64/s_tan.S
@@ -0,0 +1,2239 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// Polynomials coefficients and other constants.
+//
+// Note that in this algorithm, there is a different polynomial for
+// each breakpoint, so there are 32 sets of polynomial coefficients
+// as well as 32 instances of the other constants.
+//
+// The polynomial coefficients and constants are offset from the start
+// of the main block as follows:
+//
+//   0:  c8 | c0
+//  16:  c9 | c1
+//  32: c10 | c2
+//  48: c11 | c3
+//  64: c12 | c4
+//  80: c13 | c5
+//  96: c14 | c6
+// 112: c15 | c7
+// 128: T_hi
+// 136: T_lo
+// 144: Sigma
+// 152: T_hl
+// 160: Tau
+// 168: Mask
+// 176: (end of block)
+//
+// The total table size is therefore 5632 bytes.
+//
+// Note that c0 and c1 are always zero. We could try storing
+// other constants here, and just loading the low part of the
+// SIMD register in these cases, after ensuring the high part
+// is zero.
+//
+// The higher terms of the polynomial are computed in the *low*
+// part of the SIMD register. This is so we can overlap the
+// multiplication by r^8 and the unpacking of the other part.
+//
+// The constants are:
+// T_hi + T_lo = accurate constant term in power series
+// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
+// Tau = multiplier for the reciprocal, always -1 or 0
+//
+// The basic reconstruction formula using these constants is:
+//
+// High = tau * recip_hi + t_hi
+// Med = (sgn * r + t_hl * r)_hi
+// Low = (sgn * r + t_hl * r)_lo +
+//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
+//
+// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
+//
+// (c0 = c1 = 0, but using them keeps SIMD regularity)
+//
+// We then do a compensated sum High + Med, add the low parts together
+// and then do the final sum.
+//
+// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
+// modulo pi/2
+//
+// Special cases:
+//  tan(NaN) = quiet NaN, and raise invalid exception
+//  tan(INF) = NaN and raise invalid exception
+//  tan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  tan
+ENTRY(tan)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_tan.1:
+        pushq     %rbx
+..___tag_value_tan.3:
+        subq      $16, %rsp
+..___tag_value_tan.5:
+        movsd     %xmm0, 8(%rsp)
+..B1.2:
+        pextrw    $3, %xmm0, %eax
+        andl      $32767, %eax
+        subl      $16314, %eax
+        cmpl      $270, %eax
+        ja        .L_2TAG_PACKET_0.0.1
+        movapd    ONEHALF(%rip), %xmm5
+        movapd    MUL16(%rip), %xmm6
+        unpcklpd  %xmm0, %xmm0
+        movapd    sign_mask(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        movapd    PI32INV(%rip), %xmm1
+        mulpd     %xmm0, %xmm1
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm7
+        unpckhpd  %xmm7, %xmm7
+        cvttsd2si %xmm7, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    P_1(%rip), %xmm3
+        movq      QQ_2(%rip), %xmm5
+        addq      $469248, %rdx
+        movapd    P_2(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        andq      $31, %rdx
+        mulsd     %xmm1, %xmm5
+        movq      %rdx, %rcx
+        mulpd     %xmm1, %xmm4
+        shlq      $1, %rcx
+        subpd     %xmm3, %xmm0
+        mulpd     P_3(%rip), %xmm1
+        addq      %rcx, %rdx
+        shlq      $2, %rcx
+        addq      %rcx, %rdx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movq      ONE(%rip), %xmm6
+        shlq      $4, %rdx
+        lea       Ctable(%rip), %rax
+        andpd     MASK_35(%rip), %xmm5
+        movapd    %xmm0, %xmm3
+        addq      %rdx, %rax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        movapd    16(%rax), %xmm7
+        subsd     %xmm5, %xmm3
+        mulpd     %xmm0, %xmm7
+        subpd     %xmm1, %xmm2
+        movapd    48(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        movapd    96(%rax), %xmm4
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%rax), %xmm7
+        addpd     32(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%rax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%rax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movq      %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movq      %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movq      %xmm2, %xmm4
+        movq      144(%rax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%rax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%rax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movq      ONE(%rip), %xmm7
+        mulsd     %xmm6, %xmm4
+        movq      168(%rax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%rax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%rax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movq      %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        jg        .L_2TAG_PACKET_1.0.1
+        pextrw    $3, %xmm0, %eax
+        movl      %eax, %edx
+        andl      $32752, %eax
+        je        .L_2TAG_PACKET_2.0.1
+        andl      $32767, %edx
+        cmpl      $15904, %edx
+        jb        .L_2TAG_PACKET_3.0.1
+        movq      %xmm0, %xmm2
+        movq      %xmm0, %xmm3
+        movq      Q_11(%rip), %xmm1
+        mulsd     %xmm0, %xmm2
+        mulsd     %xmm2, %xmm3
+        mulsd     %xmm2, %xmm1
+        addsd     Q_9(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_7(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_5(%rip), %xmm1
+        mulsd     %xmm2, %xmm1
+        addsd     Q_3(%rip), %xmm1
+        mulsd     %xmm3, %xmm1
+        addsd     %xmm1, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_3.0.1:
+        movq      TWO_POW_55(%rip), %xmm3
+        mulsd     %xmm0, %xmm3
+        addsd     %xmm3, %xmm0
+        mulsd     TWO_POW_M55(%rip), %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        movq      %xmm0, %xmm1
+        mulsd     %xmm1, %xmm1
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        pextrw    $3, %xmm0, %eax
+        andl      $32752, %eax
+        cmpl      $32752, %eax
+        je        .L_2TAG_PACKET_4.0.1
+        pextrw    $3, %xmm0, %ecx
+        andl      $32752, %ecx
+        subl      $16224, %ecx
+        shrl      $7, %ecx
+        andl      $65532, %ecx
+        lea       PI_INV_TABLE(%rip), %r11
+        addq      %r11, %rcx
+        movd      %xmm0, %rax
+        movl      20(%rcx), %r10d
+        movl      24(%rcx), %r8d
+        movl      %eax, %edx
+        shrq      $21, %rax
+        orl       $-2147483648, %eax
+        shrl      $11, %eax
+        movl      %r10d, %r9d
+        imulq     %rdx, %r10
+        imulq     %rax, %r9
+        imulq     %rax, %r8
+        movl      16(%rcx), %esi
+        movl      12(%rcx), %edi
+        movl      %r10d, %r11d
+        shrq      $32, %r10
+        addq      %r10, %r9
+        addq      %r8, %r11
+        movl      %r11d, %r8d
+        shrq      $32, %r11
+        addq      %r11, %r9
+        movl      %esi, %r10d
+        imulq     %rdx, %rsi
+        imulq     %rax, %r10
+        movl      %edi, %r11d
+        imulq     %rdx, %rdi
+        movl      %esi, %ebx
+        shrq      $32, %rsi
+        addq      %rbx, %r9
+        movl      %r9d, %ebx
+        shrq      $32, %r9
+        addq      %rsi, %r10
+        addq      %r9, %r10
+        shlq      $32, %rbx
+        orq       %rbx, %r8
+        imulq     %rax, %r11
+        movl      8(%rcx), %r9d
+        movl      4(%rcx), %esi
+        movl      %edi, %ebx
+        shrq      $32, %rdi
+        addq      %rbx, %r10
+        movl      %r10d, %ebx
+        shrq      $32, %r10
+        addq      %rdi, %r11
+        addq      %r10, %r11
+        movq      %r9, %rdi
+        imulq     %rdx, %r9
+        imulq     %rax, %rdi
+        movl      %r9d, %r10d
+        shrq      $32, %r9
+        addq      %r10, %r11
+        movl      %r11d, %r10d
+        shrq      $32, %r11
+        addq      %r9, %rdi
+        addq      %r11, %rdi
+        movq      %rsi, %r9
+        imulq     %rdx, %rsi
+        imulq     %rax, %r9
+        shlq      $32, %r10
+        orq       %rbx, %r10
+        movl      (%rcx), %eax
+        movl      %esi, %r11d
+        shrq      $32, %rsi
+        addq      %r11, %rdi
+        movl      %edi, %r11d
+        shrq      $32, %rdi
+        addq      %rsi, %r9
+        addq      %rdi, %r9
+        imulq     %rax, %rdx
+        pextrw    $3, %xmm0, %ebx
+        lea       PI_INV_TABLE(%rip), %rdi
+        subq      %rdi, %rcx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      %ecx, %ecx
+        addl      $19, %ecx
+        movl      $32768, %esi
+        andl      %ebx, %esi
+        shrl      $4, %ebx
+        andl      $2047, %ebx
+        subl      $1023, %ebx
+        subl      %ebx, %ecx
+        addq      %rdx, %r9
+        movl      %ecx, %edx
+        addl      $32, %edx
+        cmpl      $0, %ecx
+        jl        .L_2TAG_PACKET_5.0.1
+        negl      %ecx
+        addl      $29, %ecx
+        shll      %cl, %r9d
+        movl      %r9d, %edi
+        andl      $1073741823, %r9d
+        testl     $536870912, %r9d
+        jne       .L_2TAG_PACKET_6.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+.L_2TAG_PACKET_7.0.1:
+.L_2TAG_PACKET_8.0.1:
+        cmpq      $0, %r9
+        je        .L_2TAG_PACKET_9.0.1
+.L_2TAG_PACKET_10.0.1:
+        bsr       %r9, %r11
+        movl      $29, %ecx
+        subl      %r11d, %ecx
+        jle       .L_2TAG_PACKET_11.0.1
+        shlq      %cl, %r9
+        movq      %r10, %rax
+        shlq      %cl, %r10
+        addl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shrq      %cl, %rax
+        shrq      %cl, %r8
+        orq       %rax, %r9
+        orq       %r8, %r10
+.L_2TAG_PACKET_12.0.1:
+        cvtsi2sdq %r9, %xmm0
+        shrq      $1, %r10
+        cvtsi2sdq %r10, %xmm3
+        xorpd     %xmm4, %xmm4
+        shll      $4, %edx
+        negl      %edx
+        addl      $16368, %edx
+        orl       %esi, %edx
+        xorl      %ebx, %edx
+        pinsrw    $3, %edx, %xmm4
+        movq      PI_4(%rip), %xmm2
+        movq      8+PI_4(%rip), %xmm7
+        xorpd     %xmm5, %xmm5
+        subl      $1008, %edx
+        pinsrw    $3, %edx, %xmm5
+        mulsd     %xmm4, %xmm0
+        shll      $16, %esi
+        sarl      $31, %esi
+        mulsd     %xmm5, %xmm3
+        movq      %xmm0, %xmm1
+        mulsd     %xmm2, %xmm0
+        shrl      $30, %edi
+        addsd     %xmm3, %xmm1
+        mulsd     %xmm2, %xmm3
+        addl      %esi, %edi
+        xorl      %esi, %edi
+        mulsd     %xmm1, %xmm7
+        movl      %edi, %eax
+        addsd     %xmm3, %xmm7
+        movq      %xmm0, %xmm2
+        addsd     %xmm7, %xmm0
+        subsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm7
+        movapd    PI32INV(%rip), %xmm1
+        movddup   %xmm0, %xmm0
+        movapd    sign_mask(%rip), %xmm4
+        andpd     %xmm0, %xmm4
+        mulpd     %xmm0, %xmm1
+        movddup   %xmm7, %xmm7
+        movapd    ONEHALF(%rip), %xmm5
+        movapd    MUL16(%rip), %xmm6
+        orps      %xmm4, %xmm5
+        addpd     %xmm5, %xmm1
+        movapd    %xmm1, %xmm5
+        unpckhpd  %xmm5, %xmm5
+        cvttsd2si %xmm5, %edx
+        cvttpd2dq %xmm1, %xmm1
+        cvtdq2pd  %xmm1, %xmm1
+        mulpd     %xmm6, %xmm1
+        movapd    P_1(%rip), %xmm3
+        movq      QQ_2(%rip), %xmm5
+        shll      $4, %eax
+        addl      $469248, %edx
+        movapd    P_2(%rip), %xmm4
+        mulpd     %xmm1, %xmm3
+        addl      %eax, %edx
+        andl      $31, %edx
+        mulsd     %xmm1, %xmm5
+        movl      %edx, %ecx
+        mulpd     %xmm1, %xmm4
+        shll      $1, %ecx
+        subpd     %xmm3, %xmm0
+        mulpd     P_3(%rip), %xmm1
+        addl      %ecx, %edx
+        shll      $2, %ecx
+        addl      %ecx, %edx
+        addsd     %xmm0, %xmm5
+        movapd    %xmm0, %xmm2
+        subpd     %xmm4, %xmm0
+        movq      ONE(%rip), %xmm6
+        shll      $4, %edx
+        lea       Ctable(%rip), %rax
+        andpd     MASK_35(%rip), %xmm5
+        movapd    %xmm0, %xmm3
+        addq      %rdx, %rax
+        subpd     %xmm0, %xmm2
+        unpckhpd  %xmm0, %xmm0
+        divsd     %xmm5, %xmm6
+        subpd     %xmm4, %xmm2
+        subsd     %xmm5, %xmm3
+        subpd     %xmm1, %xmm2
+        movapd    48(%rax), %xmm1
+        addpd     %xmm7, %xmm2
+        movapd    16(%rax), %xmm7
+        mulpd     %xmm0, %xmm7
+        movapd    96(%rax), %xmm4
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm4
+        addsd     %xmm3, %xmm2
+        movapd    %xmm0, %xmm3
+        mulpd     %xmm0, %xmm0
+        addpd     (%rax), %xmm7
+        addpd     32(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     80(%rax), %xmm4
+        addpd     %xmm1, %xmm7
+        movapd    112(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        mulpd     %xmm0, %xmm0
+        addpd     %xmm1, %xmm4
+        movapd    64(%rax), %xmm1
+        mulpd     %xmm0, %xmm1
+        addpd     %xmm1, %xmm7
+        movapd    %xmm3, %xmm1
+        mulpd     %xmm0, %xmm3
+        mulsd     %xmm0, %xmm0
+        mulpd     144(%rax), %xmm1
+        mulpd     %xmm3, %xmm4
+        movq      %xmm1, %xmm3
+        addpd     %xmm4, %xmm7
+        movq      %xmm1, %xmm4
+        mulsd     %xmm7, %xmm0
+        unpckhpd  %xmm7, %xmm7
+        addsd     %xmm7, %xmm0
+        unpckhpd  %xmm1, %xmm1
+        addsd     %xmm1, %xmm3
+        subsd     %xmm3, %xmm4
+        addsd     %xmm4, %xmm1
+        movq      %xmm2, %xmm4
+        movq      144(%rax), %xmm7
+        unpckhpd  %xmm2, %xmm2
+        addsd     152(%rax), %xmm7
+        mulsd     %xmm2, %xmm7
+        addsd     136(%rax), %xmm7
+        addsd     %xmm1, %xmm7
+        addsd     %xmm7, %xmm0
+        movq      ONE(%rip), %xmm7
+        mulsd     %xmm6, %xmm4
+        movq      168(%rax), %xmm2
+        andpd     %xmm6, %xmm2
+        mulsd     %xmm2, %xmm5
+        mulsd     160(%rax), %xmm6
+        subsd     %xmm5, %xmm7
+        subsd     128(%rax), %xmm2
+        subsd     %xmm4, %xmm7
+        mulsd     %xmm6, %xmm7
+        movq      %xmm3, %xmm4
+        subsd     %xmm2, %xmm3
+        addsd     %xmm3, %xmm2
+        subsd     %xmm2, %xmm4
+        addsd     %xmm4, %xmm0
+        subsd     %xmm7, %xmm0
+        addsd     %xmm3, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_9.0.1:
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        movq      $0, %r8
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_10.0.1
+        addl      $64, %edx
+        movq      %r10, %r9
+        movq      %r8, %r10
+        cmpq      $0, %r9
+        jne       .L_2TAG_PACKET_10.0.1
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_11.0.1:
+        je        .L_2TAG_PACKET_12.0.1
+        negl      %ecx
+        shrq      %cl, %r10
+        movq      %r9, %rax
+        shrq      %cl, %r9
+        subl      %ecx, %edx
+        negl      %ecx
+        addl      $64, %ecx
+        shlq      %cl, %rax
+        orq       %rax, %r10
+        jmp       .L_2TAG_PACKET_12.0.1
+.L_2TAG_PACKET_5.0.1:
+        notl      %ecx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      %cl, %r9
+        movq      %r9, %rdi
+        testl     $-2147483648, %r9d
+        jne       .L_2TAG_PACKET_13.0.1
+        shrl      %cl, %r9d
+        movl      $0, %ebx
+        shrq      $2, %rdi
+        jmp       .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_6.0.1:
+        shrl      %cl, %r9d
+        movl      $1073741824, %ebx
+        shrl      %cl, %ebx
+        shlq      $32, %r9
+        orq       %r11, %r9
+        shlq      $32, %rbx
+        addl      $1073741824, %edi
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        jmp       .L_2TAG_PACKET_7.0.1
+.L_2TAG_PACKET_13.0.1:
+        shrl      %cl, %r9d
+        movq      $0x100000000, %rbx
+        shrq      %cl, %rbx
+        movq      $0, %rcx
+        movq      $0, %r11
+        subq      %r8, %rcx
+        sbbq      %r10, %r11
+        sbbq      %r9, %rbx
+        movq      %rcx, %r8
+        movq      %r11, %r10
+        movq      %rbx, %r9
+        movl      $32768, %ebx
+        shrq      $2, %rdi
+        addl      $1073741824, %edi
+        jmp       .L_2TAG_PACKET_8.0.1
+.L_2TAG_PACKET_4.0.1:
+        movq      8(%rsp), %xmm0
+        mulsd     NEG_ZERO(%rip), %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_14.0.1:
+..B1.4:
+        addq      $16, %rsp
+..___tag_value_tan.6:
+        popq      %rbx
+..___tag_value_tan.8:
+        ret       
+..___tag_value_tan.9:
+END(tan)
+# -- End  tan
+	.section .rodata, "a"
+	.align 16
+	.align 16
+ONEHALF:
+	.long	0
+	.long	1071644672
+	.long	0
+	.long	1071644672
+	.type	ONEHALF,@object
+	.size	ONEHALF,16
+	.align 16
+MUL16:
+	.long	0
+	.long	1076887552
+	.long	0
+	.long	1072693248
+	.type	MUL16,@object
+	.size	MUL16,16
+	.align 16
+sign_mask:
+	.long	0
+	.long	2147483648
+	.long	0
+	.long	2147483648
+	.type	sign_mask,@object
+	.size	sign_mask,16
+	.align 16
+PI32INV:
+	.long	1841940611
+	.long	1071931184
+	.long	1841940611
+	.long	1076125488
+	.type	PI32INV,@object
+	.size	PI32INV,16
+	.align 16
+P_1:
+	.long	1413758976
+	.long	1069097467
+	.long	1413742592
+	.long	1069097467
+	.type	P_1,@object
+	.size	P_1,16
+	.align 16
+P_2:
+	.long	1734819840
+	.long	3174229945
+	.long	1280049152
+	.long	1028033571
+	.type	P_2,@object
+	.size	P_2,16
+	.align 16
+P_3:
+	.long	923219018
+	.long	984130272
+	.long	57701189
+	.long	988383790
+	.type	P_3,@object
+	.size	P_3,16
+	.align 16
+Ctable:
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1066820852
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1441186365
+	.long	1065494243
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	236289504
+	.long	1064135997
+	.long	286331153
+	.long	1069617425
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1160476131
+	.long	1062722102
+	.long	463583772
+	.long	1068212666
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	1066745731
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	1065725283
+	.long	3693284251
+	.long	1069118808
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	1064664197
+	.long	3055842593
+	.long	1068578846
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	1063576465
+	.long	1046897440
+	.long	1067705865
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	1069102779
+	.long	1317599141
+	.long	1012432133
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	1068119047
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	1067254767
+	.long	3593250296
+	.long	1070233561
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	1066371299
+	.long	24583402
+	.long	1069723988
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	1065415756
+	.long	558065897
+	.long	1068949418
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	1070167541
+	.long	1497360404
+	.long	1009710547
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	1069256389
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	1068579152
+	.long	3631919291
+	.long	1070936926
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	1067799281
+	.long	1509038701
+	.long	1070601643
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	1067075736
+	.long	3233018412
+	.long	1069913186
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	1070819848
+	.long	500078909
+	.long	3161288781
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	1070398550
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	1069876531
+	.long	2616040238
+	.long	1071582937
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	1069440113
+	.long	2251697184
+	.long	1071253687
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	1068885191
+	.long	2476932470
+	.long	1070842002
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	1071284857
+	.long	3062633575
+	.long	1014008623
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	1071640847
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	1071346340
+	.long	1037049034
+	.long	1072037305
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	1071090851
+	.long	3205232916
+	.long	1071968658
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	1070871082
+	.long	1496754229
+	.long	1071807201
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	1071717047
+	.long	3451266538
+	.long	3163444811
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	1072881308
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	1072928558
+	.long	3912524733
+	.long	1072622983
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	1072976922
+	.long	946523347
+	.long	1072772766
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	1073026959
+	.long	3718905905
+	.long	1072832823
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	1071997368
+	.long	547126769
+	.long	1015523525
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	1074290212
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	1074739170
+	.long	1264738763
+	.long	1073084804
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	1075052171
+	.long	4270740730
+	.long	1073574708
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	1075420255
+	.long	1769828046
+	.long	1073938542
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	1072317184
+	.long	294527206
+	.long	3162140088
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1704352102
+	.long	1075943001
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	1076659010
+	.long	0
+	.long	1073741824
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	1077353622
+	.long	2863311531
+	.long	1074440874
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	1078115278
+	.long	95443718
+	.long	1075163227
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1330165971
+	.long	3207850745
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	3205151475
+	.long	602185705
+	.long	3215678092
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	3202470837
+	.long	3690544014
+	.long	3213150171
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	3199711161
+	.long	3759536023
+	.long	3210559989
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	3217967566
+	.long	2356426521
+	.long	1025423456
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	3207303968
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	3204528612
+	.long	2754706541
+	.long	3215359511
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	3201651479
+	.long	4097292716
+	.long	3212856302
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	3198830754
+	.long	170296152
+	.long	3210060867
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	3217669096
+	.long	1998842465
+	.long	3174703977
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	3206749304
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	3203817873
+	.long	2223654598
+	.long	3215071936
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	3200900378
+	.long	1066252975
+	.long	3212391267
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	3198004753
+	.long	1046243251
+	.long	3209678971
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	3217377742
+	.long	3205862232
+	.long	3174660915
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	3206166872
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	3203204426
+	.long	1485063559
+	.long	3214682643
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	3200223545
+	.long	2866066872
+	.long	3211982662
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	3197170774
+	.long	1948234989
+	.long	3209098147
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	3217092115
+	.long	1034046433
+	.long	3174271903
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	3205589761
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	3202507988
+	.long	3144465176
+	.long	3214191500
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	3199400272
+	.long	584032116
+	.long	3211469261
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	3196274812
+	.long	3844233498
+	.long	3208626322
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	3216590719
+	.long	3267547836
+	.long	3172163321
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	3204793485
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	3201674917
+	.long	628750575
+	.long	3213566872
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	3198516435
+	.long	1466315631
+	.long	3210837162
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	3195331491
+	.long	3695969289
+	.long	3207854418
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	3216034914
+	.long	23826559
+	.long	3172048060
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	3203672535
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	3200523326
+	.long	2507068734
+	.long	3212502004
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	3197333001
+	.long	1349489537
+	.long	3209765608
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	3194116746
+	.long	3852528092
+	.long	3206760861
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	3214984212
+	.long	3447575948
+	.long	1024675855
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	737611454
+	.long	1056336527
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3594790527
+	.long	1052911621
+	.long	381774871
+	.long	1066844524
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3303051618
+	.long	1049456050
+	.long	3154187623
+	.long	1063343722
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	528061788
+	.long	1045944910
+	.long	2469719819
+	.long	1059831159
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1431655765
+	.long	1070945621
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1571758758
+	.long	1056188887
+	.long	0
+	.long	0
+	.long	113026373
+	.long	1056416381
+	.long	0
+	.long	0
+	.long	1913766298
+	.long	1053039678
+	.long	2507068734
+	.long	1065018356
+	.long	4000648818
+	.long	1053003803
+	.long	2446607349
+	.long	1066858259
+	.long	912662124
+	.long	1049849353
+	.long	1349489537
+	.long	1062281960
+	.long	3412972607
+	.long	1049641401
+	.long	1721283327
+	.long	1063366855
+	.long	1466691883
+	.long	1046633098
+	.long	3852528092
+	.long	1059277213
+	.long	285443293
+	.long	1046158380
+	.long	1758739894
+	.long	1059895449
+	.long	1858781184
+	.long	1067500564
+	.long	3447575948
+	.long	3172159503
+	.long	0
+	.long	0
+	.long	2242038011
+	.long	1070948320
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3290090340
+	.long	1057309837
+	.long	0
+	.long	0
+	.long	3685760367
+	.long	1056668370
+	.long	0
+	.long	0
+	.long	2655163949
+	.long	1054191269
+	.long	628750575
+	.long	1066083224
+	.long	680140505
+	.long	1053299777
+	.long	2954464709
+	.long	1066900026
+	.long	803201619
+	.long	1051032787
+	.long	1466315631
+	.long	1063353514
+	.long	1611220163
+	.long	1049972438
+	.long	2766187256
+	.long	1063437894
+	.long	1804579484
+	.long	1047847843
+	.long	3695969289
+	.long	1060370770
+	.long	2617238373
+	.long	1046675948
+	.long	3095830084
+	.long	1060095334
+	.long	3789570048
+	.long	1068551266
+	.long	23826559
+	.long	1024564412
+	.long	0
+	.long	0
+	.long	3870939386
+	.long	1070956467
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	437603223
+	.long	1058106113
+	.long	0
+	.long	0
+	.long	759330352
+	.long	1057048511
+	.long	0
+	.long	0
+	.long	3107463368
+	.long	1055024340
+	.long	3144465176
+	.long	1066707852
+	.long	2290961810
+	.long	1053841035
+	.long	1618153340
+	.long	1066971547
+	.long	3836869393
+	.long	1051916624
+	.long	584032116
+	.long	1063985613
+	.long	1245704358
+	.long	1050626462
+	.long	4247487438
+	.long	1063561943
+	.long	1669034927
+	.long	1048791164
+	.long	3844233498
+	.long	1061142674
+	.long	2706958524
+	.long	1047411374
+	.long	3857199098
+	.long	1060281647
+	.long	3593904128
+	.long	1069107071
+	.long	3267547836
+	.long	1024679673
+	.long	0
+	.long	0
+	.long	4076712227
+	.long	1070970214
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	2107155798
+	.long	1058683224
+	.long	0
+	.long	0
+	.long	2642992129
+	.long	1057424578
+	.long	0
+	.long	0
+	.long	1936992811
+	.long	1055720778
+	.long	1485063559
+	.long	1067198995
+	.long	1432914553
+	.long	1054319398
+	.long	3996381654
+	.long	1067075828
+	.long	2833029256
+	.long	1052739897
+	.long	2866066872
+	.long	1064499014
+	.long	2432888737
+	.long	1051234178
+	.long	3669764559
+	.long	1063748136
+	.long	2458496952
+	.long	1049687126
+	.long	1948234989
+	.long	1061614499
+	.long	2843698787
+	.long	1048163519
+	.long	3398041407
+	.long	1060559728
+	.long	2829230080
+	.long	1069608467
+	.long	1034046433
+	.long	1026788255
+	.long	0
+	.long	0
+	.long	298675305
+	.long	1070989821
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	3120498638
+	.long	1059265656
+	.long	0
+	.long	0
+	.long	2773578114
+	.long	1058009312
+	.long	0
+	.long	0
+	.long	2030783676
+	.long	1056334225
+	.long	2223654598
+	.long	1067588288
+	.long	2976134650
+	.long	1054987244
+	.long	706390066
+	.long	1067217386
+	.long	4258437615
+	.long	1053416730
+	.long	1066252975
+	.long	1064907619
+	.long	815777514
+	.long	1051989462
+	.long	3202745457
+	.long	1064010682
+	.long	2493556375
+	.long	1050521105
+	.long	1046243251
+	.long	1062195323
+	.long	2593078846
+	.long	1049017717
+	.long	2763962276
+	.long	1060970161
+	.long	701480960
+	.long	1069894094
+	.long	3205862232
+	.long	1027177267
+	.long	0
+	.long	0
+	.long	2267016812
+	.long	1071015664
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1398462608
+	.long	1059820320
+	.long	0
+	.long	0
+	.long	26205983
+	.long	1058461213
+	.long	0
+	.long	0
+	.long	56226238
+	.long	1057044964
+	.long	2754706541
+	.long	1067875863
+	.long	2187799823
+	.long	1055634437
+	.long	790323742
+	.long	1067402587
+	.long	1372385848
+	.long	1054167831
+	.long	4097292716
+	.long	1065372654
+	.long	3348210357
+	.long	1052830099
+	.long	2442796466
+	.long	1064337602
+	.long	862608142
+	.long	1051347106
+	.long	170296152
+	.long	1062577219
+	.long	3755571428
+	.long	1049933343
+	.long	3614866008
+	.long	1061361670
+	.long	719978496
+	.long	1070185448
+	.long	1998842465
+	.long	1027220329
+	.long	0
+	.long	0
+	.long	3749156607
+	.long	1071048258
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1330165971
+	.long	1060367097
+	.long	0
+	.long	0
+	.long	217536623
+	.long	1059109098
+	.long	0
+	.long	0
+	.long	3492120849
+	.long	1057667827
+	.long	602185705
+	.long	1068194444
+	.long	760422958
+	.long	1056312597
+	.long	555127889
+	.long	1067545266
+	.long	3139784124
+	.long	1054987189
+	.long	3690544014
+	.long	1065666523
+	.long	95707915
+	.long	1053635428
+	.long	4003114407
+	.long	1064581412
+	.long	2034926231
+	.long	1052227513
+	.long	3759536023
+	.long	1063076341
+	.long	3826928214
+	.long	1050893819
+	.long	3837960785
+	.long	1061790379
+	.long	1526325248
+	.long	1070483918
+	.long	2356426521
+	.long	3172907104
+	.long	0
+	.long	0
+	.long	457728975
+	.long	1071088276
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	4294967288
+	.long	1704352102
+	.long	3223426649
+	.long	0
+	.long	0
+	.long	2284589306
+	.long	1076258036
+	.long	0
+	.long	0
+	.long	2211264291
+	.long	3224142658
+	.long	0
+	.long	3221225472
+	.long	1441186365
+	.long	1077028579
+	.long	1431655765
+	.long	1074091349
+	.long	876943673
+	.long	3224837270
+	.long	2863311531
+	.long	3221924522
+	.long	236289504
+	.long	1077767485
+	.long	286331153
+	.long	1074860305
+	.long	2805473311
+	.long	3225598926
+	.long	95443718
+	.long	3222646875
+	.long	1160476131
+	.long	1078450742
+	.long	463583772
+	.long	1075552698
+	.long	0
+	.long	3220176896
+	.long	0
+	.long	0
+	.long	0
+	.long	1073741824
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3349892442
+	.long	3221773860
+	.long	0
+	.long	0
+	.long	3913197405
+	.long	1074501181
+	.long	0
+	.long	0
+	.long	2494034522
+	.long	3222222818
+	.long	1264738763
+	.long	3220568452
+	.long	1520293906
+	.long	1074899632
+	.long	1958936600
+	.long	1073411493
+	.long	2133649635
+	.long	3222535819
+	.long	4270740730
+	.long	3221058356
+	.long	1728930189
+	.long	1075224844
+	.long	1303998552
+	.long	1073799186
+	.long	618611933
+	.long	3222903903
+	.long	1769828046
+	.long	3221422190
+	.long	2200537986
+	.long	1075641421
+	.long	433361110
+	.long	1074105369
+	.long	719595600
+	.long	3219800832
+	.long	294527206
+	.long	1014656440
+	.long	0
+	.long	1073741824
+	.long	3811788216
+	.long	3218400550
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	724322768
+	.long	3220364956
+	.long	0
+	.long	0
+	.long	643153048
+	.long	1072905816
+	.long	0
+	.long	0
+	.long	4285079458
+	.long	3220412206
+	.long	3912524733
+	.long	3220106631
+	.long	118362272
+	.long	1072952754
+	.long	4107767972
+	.long	1072827408
+	.long	2689502883
+	.long	3220460570
+	.long	946523347
+	.long	3220256414
+	.long	573204189
+	.long	1073001761
+	.long	581531518
+	.long	1072826391
+	.long	1386236526
+	.long	3220510607
+	.long	3718905905
+	.long	3220316471
+	.long	1145558140
+	.long	1073052673
+	.long	513572637
+	.long	1072861969
+	.long	716700048
+	.long	3219481016
+	.long	547126769
+	.long	3163007173
+	.long	0
+	.long	1072693248
+	.long	1097907398
+	.long	1071420120
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	3422807297
+	.long	3219124495
+	.long	0
+	.long	0
+	.long	1151658053
+	.long	1071494715
+	.long	0
+	.long	0
+	.long	929607071
+	.long	3218829988
+	.long	1037049034
+	.long	3219520953
+	.long	2786928657
+	.long	1071215282
+	.long	1447406859
+	.long	1072265209
+	.long	3490952107
+	.long	3218574499
+	.long	3205232916
+	.long	3219452306
+	.long	1297344304
+	.long	1070977120
+	.long	1066110976
+	.long	1071946035
+	.long	3803721480
+	.long	3218354730
+	.long	1496754229
+	.long	3219290849
+	.long	2982550683
+	.long	1070773243
+	.long	4014441989
+	.long	1071736222
+	.long	419968236
+	.long	3219200695
+	.long	3451266538
+	.long	1015961163
+	.long	0
+	.long	1072693248
+	.long	2960267235
+	.long	1070745841
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1458794562
+	.long	3217882198
+	.long	0
+	.long	0
+	.long	2857777489
+	.long	1070137637
+	.long	0
+	.long	0
+	.long	1024359517
+	.long	3217360179
+	.long	2616040238
+	.long	3219066585
+	.long	1609024636
+	.long	1069675088
+	.long	2529240549
+	.long	1071836633
+	.long	1510128600
+	.long	3216923761
+	.long	2251697184
+	.long	3218737335
+	.long	1262761453
+	.long	1069142850
+	.long	1263091857
+	.long	1071190461
+	.long	3043383486
+	.long	3216368839
+	.long	2476932470
+	.long	3218325650
+	.long	3659995028
+	.long	1068669200
+	.long	855891755
+	.long	1070696894
+	.long	2583490354
+	.long	3218768505
+	.long	3062633575
+	.long	3161492271
+	.long	0
+	.long	1072693248
+	.long	2550940471
+	.long	1069938201
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	2467582782
+	.long	3216740037
+	.long	0
+	.long	0
+	.long	162150096
+	.long	1068946420
+	.long	0
+	.long	0
+	.long	3702794237
+	.long	3216062800
+	.long	3631919291
+	.long	3218420574
+	.long	3456821413
+	.long	1068217218
+	.long	2031366438
+	.long	1071495745
+	.long	1596664020
+	.long	3215282929
+	.long	1509038701
+	.long	3218085291
+	.long	583171477
+	.long	1067510148
+	.long	3785344682
+	.long	1070618476
+	.long	2402036048
+	.long	3214559384
+	.long	3233018412
+	.long	3217396834
+	.long	411280568
+	.long	1066710556
+	.long	1065584192
+	.long	1069747896
+	.long	895247324
+	.long	3218303496
+	.long	500078909
+	.long	1013805133
+	.long	0
+	.long	1072693248
+	.long	729983843
+	.long	1068994194
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1512545955
+	.long	3215602695
+	.long	0
+	.long	0
+	.long	1127048698
+	.long	1067909459
+	.long	0
+	.long	0
+	.long	2300200450
+	.long	3214738415
+	.long	3593250296
+	.long	3217717209
+	.long	3009365544
+	.long	1066902117
+	.long	1127373050
+	.long	1071173457
+	.long	3046103305
+	.long	3213854947
+	.long	24583402
+	.long	3217207636
+	.long	4082511758
+	.long	1065914199
+	.long	3223889699
+	.long	1070020367
+	.long	548927984
+	.long	3212899404
+	.long	558065897
+	.long	3216433066
+	.long	680073315
+	.long	1064940726
+	.long	388873200
+	.long	1068944270
+	.long	3763679576
+	.long	3217651189
+	.long	1497360404
+	.long	3157194195
+	.long	0
+	.long	1072693248
+	.long	64931152
+	.long	1067729411
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	1313038235
+	.long	3214229379
+	.long	0
+	.long	0
+	.long	1013878342
+	.long	1067152618
+	.long	0
+	.long	0
+	.long	3663426833
+	.long	3213208931
+	.long	3693284251
+	.long	3216602456
+	.long	650852232
+	.long	1065882376
+	.long	1996245381
+	.long	1071000265
+	.long	2008746170
+	.long	3212147845
+	.long	3055842593
+	.long	3216062494
+	.long	1495406348
+	.long	1064652437
+	.long	2269530157
+	.long	1069711235
+	.long	285563696
+	.long	3211060113
+	.long	1046897440
+	.long	3215189513
+	.long	233429731
+	.long	1063453151
+	.long	522045958
+	.long	1068476590
+	.long	2354785698
+	.long	3216586427
+	.long	1317599141
+	.long	3159915781
+	.long	0
+	.long	1072693248
+	.long	2828230105
+	.long	1065606626
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.type	Ctable,@object
+	.size	Ctable,5632
+	.align 16
+MASK_35:
+	.long	4294705152
+	.long	4294967295
+	.long	0
+	.long	0
+	.type	MASK_35,@object
+	.size	MASK_35,16
+	.align 16
+Q_11:
+	.long	3103673719
+	.long	1065509018
+	.type	Q_11,@object
+	.size	Q_11,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_9:
+	.long	3213130307
+	.long	1066820768
+	.type	Q_9,@object
+	.size	Q_9,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_7:
+	.long	1388628139
+	.long	1068212666
+	.type	Q_7,@object
+	.size	Q_7,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_5:
+	.long	285812550
+	.long	1069617425
+	.type	Q_5,@object
+	.size	Q_5,8
+	.space 8, 0x00 	# pad
+	.align 16
+Q_3:
+	.long	1431655954
+	.long	1070945621
+	.type	Q_3,@object
+	.size	Q_3,8
+	.space 8, 0x00 	# pad
+	.align 16
+PI_INV_TABLE:
+	.long	0
+	.long	0
+	.long	2734261102
+	.long	1313084713
+	.long	4230436817
+	.long	4113882560
+	.long	3680671129
+	.long	1011060801
+	.long	4266746795
+	.long	3736847713
+	.long	3072618042
+	.long	1112396512
+	.long	105459434
+	.long	164729372
+	.long	4263373596
+	.long	2972297022
+	.long	3900847605
+	.long	784024708
+	.long	3919343654
+	.long	3026157121
+	.long	965858873
+	.long	2203269620
+	.long	2625920907
+	.long	3187222587
+	.long	536385535
+	.long	3724908559
+	.long	4012839307
+	.long	1510632735
+	.long	1832287951
+	.long	667617719
+	.long	1330003814
+	.long	2657085997
+	.long	1965537991
+	.long	3957715323
+	.long	1023883767
+	.long	2320667370
+	.long	1811636145
+	.long	529358088
+	.long	1443049542
+	.long	4235946923
+	.long	4040145953
+	.type	PI_INV_TABLE,@object
+	.size	PI_INV_TABLE,164
+	.space 12, 0x00 	# pad
+	.align 16
+PI_4:
+	.long	0
+	.long	1072243195
+	.long	1175561766
+	.long	1048908043
+	.type	PI_4,@object
+	.size	PI_4,16
+	.align 8
+QQ_2:
+	.long	1734816687
+	.long	1026746297
+	.type	QQ_2,@object
+	.size	QQ_2,8
+	.align 8
+ONE:
+	.long	0
+	.long	1072693248
+	.type	ONE,@object
+	.size	ONE,8
+	.align 8
+TWO_POW_55:
+	.long	0
+	.long	1130364928
+	.type	TWO_POW_55,@object
+	.size	TWO_POW_55,8
+	.align 8
+TWO_POW_M55:
+	.long	0
+	.long	1015021568
+	.type	TWO_POW_M55,@object
+	.size	TWO_POW_M55,8
+	.align 4
+NEG_ZERO:
+	.long	0
+	.long	2147483648
+	.type	NEG_ZERO,@object
+	.size	NEG_ZERO,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000002c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_tan.1-.
+	.4byte ..___tag_value_tan.9-..___tag_value_tan.1
+	.2byte 0x0400
+	.4byte ..___tag_value_tan.3-..___tag_value_tan.1
+	.4byte 0x0283100e
+	.byte 0x04
+	.4byte ..___tag_value_tan.5-..___tag_value_tan.3
+	.2byte 0x200e
+	.byte 0x04
+	.4byte ..___tag_value_tan.6-..___tag_value_tan.5
+	.4byte 0x04c3100e
+	.4byte ..___tag_value_tan.8-..___tag_value_tan.6
+	.2byte 0x080e
+# End
diff --git a/libm/x86_64/s_tanh.S b/libm/x86_64/s_tanh.S
new file mode 100644
index 0000000..2c8f9bf
--- /dev/null
+++ b/libm/x86_64/s_tanh.S
@@ -0,0 +1,1392 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+//                     ALGORITHM DESCRIPTION
+//                     ---------------------
+//
+// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
+//
+// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
+// log2(e) rounded to 26 bits (high part) plus a double precision low part is
+//         L2EH+L2EL (upper 26, lower 53 bits)
+//
+// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
+//                             f=0.b1 b2 ... b8, k integer
+// 2^{-f} is approximated as Tn[f]+Dn[f]
+// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
+//
+//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
+//                      for |x| in [23/64,3*2^7)
+// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
+//
+// For |x| in [2^{-4},2^5):
+//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
+//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
+//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
+//  1+T0+D0+p*(T0+D0)=KH+KL, where
+//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
+//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
+//  eps ~ (R*KH-1)+R*KL
+//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
+//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
+//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
+//    The result is formed as
+//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
+//                                                  set at the end
+//
+// For |x| in [2^{-64},2^{-4}):
+//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
+//
+// For |x|<2^{-64}:  x is returned
+//
+// For |x|>=2^32: return +/-1
+//
+// Special cases:
+//  tanh(NaN) = quiet NaN, and raise invalid exception
+//  tanh(INF) = that INF
+//  tanh(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin  tanh
+ENTRY(tanh)
+# parameter 1: %xmm0
+..B1.1:
+..___tag_value_tanh.1:
+        pushq     %rsi
+..___tag_value_tanh.3:
+..B1.2:
+        movsd     HALFMASK(%rip), %xmm3
+        xorpd     %xmm4, %xmm4
+        movsd     L2E(%rip), %xmm1
+        movsd     8+L2E(%rip), %xmm2
+        movl      $32768, %eax
+        pinsrw    $3, %eax, %xmm4
+        movsd     Shifter(%rip), %xmm6
+        pextrw    $3, %xmm0, %ecx
+        andpd     %xmm0, %xmm3
+        andnpd    %xmm0, %xmm4
+        pshufd    $68, %xmm4, %xmm5
+        movl      $32768, %edx
+        andl      %ecx, %edx
+        andl      $32767, %ecx
+        subl      $16304, %ecx
+        cmpl      $144, %ecx
+        jae       .L_2TAG_PACKET_0.0.1
+        subsd     %xmm3, %xmm4
+        mulsd     %xmm1, %xmm3
+        mulsd     %xmm5, %xmm2
+        cvtsd2si  %xmm3, %eax
+        movq      %xmm3, %xmm7
+        addsd     %xmm6, %xmm3
+        mulsd     %xmm4, %xmm1
+        movsd     ONEMASK(%rip), %xmm4
+        subsd     %xmm6, %xmm3
+        xorpd     %xmm0, %xmm0
+        addsd     %xmm1, %xmm2
+        subsd     %xmm3, %xmm7
+        movapd    cv(%rip), %xmm6
+        addsd     %xmm7, %xmm2
+        movl      $255, %ecx
+        andl      %eax, %ecx
+        addl      %ecx, %ecx
+        lea       T2_neg_f(%rip), %r8
+        movapd    (%r8,%rcx,8), %xmm5
+        shrl      $4, %eax
+        andl      $65520, %eax
+        subl      $16368, %eax
+        negl      %eax
+        pinsrw    $3, %eax, %xmm0
+        movapd    16+cv(%rip), %xmm1
+        pshufd    $68, %xmm0, %xmm0
+        mulpd     %xmm5, %xmm0
+        movsd     32+cv(%rip), %xmm7
+        pshufd    $68, %xmm2, %xmm2
+        movq      %xmm4, %xmm5
+        addsd     %xmm0, %xmm4
+        mulpd     %xmm2, %xmm6
+        mulsd     %xmm2, %xmm7
+        mulpd     %xmm2, %xmm2
+        addpd     %xmm6, %xmm1
+        mulsd     %xmm2, %xmm2
+        movsd     ONEMASK(%rip), %xmm3
+        mulpd     %xmm2, %xmm1
+        pshufd    $78, %xmm1, %xmm6
+        addsd     %xmm6, %xmm1
+        movq      %xmm1, %xmm6
+        addsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm1
+        addsd     %xmm4, %xmm1
+        andpd     MASK3(%rip), %xmm4
+        divsd     %xmm1, %xmm5
+        subsd     %xmm4, %xmm3
+        pshufd    $238, %xmm0, %xmm1
+        addsd     %xmm0, %xmm3
+        movq      %xmm4, %xmm2
+        addsd     %xmm1, %xmm3
+        mulsd     %xmm7, %xmm1
+        mulsd     %xmm0, %xmm7
+        addsd     %xmm1, %xmm3
+        addsd     %xmm7, %xmm4
+        movsd     RMASK(%rip), %xmm1
+        mulsd     %xmm0, %xmm6
+        andpd     MASK3(%rip), %xmm4
+        addsd     %xmm6, %xmm3
+        movq      %xmm4, %xmm6
+        subsd     %xmm4, %xmm2
+        addsd     %xmm7, %xmm2
+        movsd     ONEMASK(%rip), %xmm7
+        andpd     %xmm1, %xmm5
+        addsd     %xmm2, %xmm3
+        mulsd     %xmm5, %xmm4
+        xorpd     %xmm2, %xmm2
+        mulsd     %xmm5, %xmm3
+        subsd     TWOMASK(%rip), %xmm6
+        subsd     %xmm7, %xmm4
+        xorl      $32768, %edx
+        pinsrw    $3, %edx, %xmm2
+        addsd     %xmm3, %xmm4
+        mulsd     %xmm5, %xmm6
+        movq      %xmm3, %xmm1
+        mulsd     %xmm4, %xmm3
+        movq      %xmm6, %xmm0
+        mulsd     %xmm4, %xmm6
+        subsd     %xmm3, %xmm1
+        subsd     %xmm6, %xmm1
+        addsd     %xmm1, %xmm0
+        xorpd     %xmm2, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_0.0.1:
+        addl      $960, %ecx
+        cmpl      $1104, %ecx
+        jae       .L_2TAG_PACKET_1.0.1
+        movapd    pv(%rip), %xmm2
+        pshufd    $68, %xmm0, %xmm1
+        movapd    16+pv(%rip), %xmm3
+        mulpd     %xmm1, %xmm1
+        movapd    32+pv(%rip), %xmm4
+        mulpd     %xmm1, %xmm2
+        pshufd    $68, %xmm1, %xmm5
+        addpd     %xmm3, %xmm2
+        mulsd     %xmm5, %xmm5
+        mulpd     %xmm1, %xmm2
+        mulsd     %xmm5, %xmm5
+        addpd     %xmm4, %xmm2
+        mulpd     %xmm5, %xmm2
+        pshufd    $238, %xmm2, %xmm5
+        addsd     %xmm5, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm2, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_1.0.1:
+        addl      $15344, %ecx
+        cmpl      $16448, %ecx
+        jae       .L_2TAG_PACKET_2.0.1
+        cmpl      $16, %ecx
+        jb        .L_2TAG_PACKET_3.0.1
+        xorpd     %xmm2, %xmm2
+        movl      $17392, %eax
+        pinsrw    $3, %eax, %xmm2
+        mulsd     %xmm0, %xmm2
+        addsd     %xmm0, %xmm2
+        jmp       ..B1.4
+.L_2TAG_PACKET_3.0.1:
+        movq      %xmm0, %xmm2
+        mulsd     %xmm2, %xmm2
+        jmp       ..B1.4
+.L_2TAG_PACKET_2.0.1:
+        cmpl      $32752, %ecx
+        jae       .L_2TAG_PACKET_4.0.1
+        xorpd     %xmm2, %xmm2
+        movl      $15344, %ecx
+        pinsrw    $3, %ecx, %xmm2
+        movq      %xmm2, %xmm3
+        mulsd     %xmm2, %xmm2
+        addsd     %xmm3, %xmm2
+.L_2TAG_PACKET_5.0.1:
+        xorpd     %xmm0, %xmm0
+        orl       $16368, %edx
+        pinsrw    $3, %edx, %xmm0
+        jmp       ..B1.4
+.L_2TAG_PACKET_4.0.1:
+        movq      %xmm0, %xmm2
+        movd      %xmm0, %eax
+        psrlq     $20, %xmm2
+        movd      %xmm2, %ecx
+        orl       %eax, %ecx
+        cmpl      $0, %ecx
+        je        .L_2TAG_PACKET_5.0.1
+        addsd     %xmm0, %xmm0
+        movq      %xmm0, (%rsp)
+.L_2TAG_PACKET_6.0.1:
+..B1.4:
+        popq      %rcx
+..___tag_value_tanh.4:
+        ret       
+..___tag_value_tanh.5:
+END(tanh)
+# -- End  tanh
+	.section .rodata, "a"
+	.align 16
+	.align 16
+L2E:
+	.long	1610612736
+	.long	1082594631
+	.long	4166901572
+	.long	1055174155
+	.type	L2E,@object
+	.size	L2E,16
+	.align 16
+Shifter:
+	.long	0
+	.long	1127743488
+	.long	0
+	.long	3275227136
+	.type	Shifter,@object
+	.size	Shifter,16
+	.align 16
+cv:
+	.long	3884607281
+	.long	3168131199
+	.long	3607404735
+	.long	3190582024
+	.long	1874480759
+	.long	1032041131
+	.long	4286760334
+	.long	1053736893
+	.long	4277811695
+	.long	3211144770
+	.long	0
+	.long	0
+	.type	cv,@object
+	.size	cv,48
+	.align 16
+T2_neg_f:
+	.long	0
+	.long	1072693248
+	.long	0
+	.long	0
+	.long	1797923801
+	.long	1072687577
+	.long	1950547427
+	.long	1013229059
+	.long	730821105
+	.long	1072681922
+	.long	2523232743
+	.long	1012067188
+	.long	915592468
+	.long	1072676282
+	.long	352947894
+	.long	3161024371
+	.long	2174652632
+	.long	1072670657
+	.long	4087714590
+	.long	1014450259
+	.long	35929225
+	.long	1072665048
+	.long	2809788041
+	.long	3159436968
+	.long	2912730644
+	.long	1072659453
+	.long	3490067722
+	.long	3163405074
+	.long	2038973688
+	.long	1072653874
+	.long	892941374
+	.long	1016046459
+	.long	1533953344
+	.long	1072648310
+	.long	769171851
+	.long	1015665633
+	.long	1222472308
+	.long	1072642761
+	.long	1054357470
+	.long	3161021018
+	.long	929806999
+	.long	1072637227
+	.long	3205336643
+	.long	1015259557
+	.long	481706282
+	.long	1072631708
+	.long	1696079173
+	.long	3162710528
+	.long	3999357479
+	.long	1072626203
+	.long	2258941616
+	.long	1015924724
+	.long	2719515920
+	.long	1072620714
+	.long	2760332941
+	.long	1015137933
+	.long	764307441
+	.long	1072615240
+	.long	3021057420
+	.long	3163329523
+	.long	2256325230
+	.long	1072609780
+	.long	580117746
+	.long	1015317295
+	.long	2728693978
+	.long	1072604335
+	.long	396109971
+	.long	3163462691
+	.long	2009970496
+	.long	1072598905
+	.long	2159039665
+	.long	3162572948
+	.long	4224142467
+	.long	1072593489
+	.long	3389820386
+	.long	1015207202
+	.long	610758006
+	.long	1072588089
+	.long	1965209397
+	.long	3161866232
+	.long	3884662774
+	.long	1072582702
+	.long	2158611599
+	.long	1014210185
+	.long	991358482
+	.long	1072577331
+	.long	838715019
+	.long	3163157668
+	.long	351641897
+	.long	1072571974
+	.long	2172261526
+	.long	3163010599
+	.long	1796832535
+	.long	1072566631
+	.long	3176955716
+	.long	3160585513
+	.long	863738719
+	.long	1072561303
+	.long	1326992220
+	.long	3162613197
+	.long	1679558232
+	.long	1072555989
+	.long	2390342287
+	.long	3163333970
+	.long	4076975200
+	.long	1072550689
+	.long	2029000899
+	.long	1015208535
+	.long	3594158869
+	.long	1072545404
+	.long	2456521700
+	.long	3163256561
+	.long	64696965
+	.long	1072540134
+	.long	1768797490
+	.long	1015816960
+	.long	1912561781
+	.long	1072534877
+	.long	3147495102
+	.long	1015678253
+	.long	382305176
+	.long	1072529635
+	.long	2347622376
+	.long	3162578625
+	.long	3898795731
+	.long	1072524406
+	.long	1249994144
+	.long	1011869818
+	.long	3707479175
+	.long	1072519192
+	.long	3613079303
+	.long	1014164738
+	.long	3939148246
+	.long	1072513992
+	.long	3210352148
+	.long	1015274323
+	.long	135105010
+	.long	1072508807
+	.long	1906148728
+	.long	3163375739
+	.long	721996136
+	.long	1072503635
+	.long	563754734
+	.long	1015371318
+	.long	1242007932
+	.long	1072498477
+	.long	1132034716
+	.long	3163339831
+	.long	1532734324
+	.long	1072493333
+	.long	3094216535
+	.long	3163162857
+	.long	1432208378
+	.long	1072488203
+	.long	1401068914
+	.long	3162363963
+	.long	778901109
+	.long	1072483087
+	.long	2248183955
+	.long	3161268751
+	.long	3706687593
+	.long	1072477984
+	.long	3521726940
+	.long	1013253067
+	.long	1464976603
+	.long	1072472896
+	.long	3507292405
+	.long	3161977534
+	.long	2483480501
+	.long	1072467821
+	.long	1216371780
+	.long	1013034172
+	.long	2307442995
+	.long	1072462760
+	.long	3190117721
+	.long	3162404539
+	.long	777507147
+	.long	1072457713
+	.long	4282924205
+	.long	1015187533
+	.long	2029714210
+	.long	1072452679
+	.long	613660079
+	.long	1015099143
+	.long	1610600570
+	.long	1072447659
+	.long	3766732298
+	.long	1015760183
+	.long	3657065772
+	.long	1072442652
+	.long	399025623
+	.long	3162957078
+	.long	3716502172
+	.long	1072437659
+	.long	2303740125
+	.long	1014042725
+	.long	1631695677
+	.long	1072432680
+	.long	2717633076
+	.long	3162344026
+	.long	1540824585
+	.long	1072427714
+	.long	1064017011
+	.long	3163487690
+	.long	3287523847
+	.long	1072422761
+	.long	1625971539
+	.long	3157009955
+	.long	2420883922
+	.long	1072417822
+	.long	2049810052
+	.long	1014119888
+	.long	3080351519
+	.long	1072412896
+	.long	3379126788
+	.long	3157218001
+	.long	815859274
+	.long	1072407984
+	.long	240396590
+	.long	3163487443
+	.long	4062661092
+	.long	1072403084
+	.long	1422616006
+	.long	3163255318
+	.long	4076559943
+	.long	1072398198
+	.long	2119478331
+	.long	3160758351
+	.long	703710506
+	.long	1072393326
+	.long	1384660846
+	.long	1015195891
+	.long	2380618042
+	.long	1072388466
+	.long	3149557219
+	.long	3163320799
+	.long	364333489
+	.long	1072383620
+	.long	3923737744
+	.long	3161421373
+	.long	3092190715
+	.long	1072378786
+	.long	814012168
+	.long	3159523422
+	.long	1822067026
+	.long	1072373966
+	.long	1241994956
+	.long	1015340290
+	.long	697153126
+	.long	1072369159
+	.long	1283515429
+	.long	3163283189
+	.long	3861050111
+	.long	1072364364
+	.long	254893773
+	.long	3162813180
+	.long	2572866477
+	.long	1072359583
+	.long	878562433
+	.long	1015521741
+	.long	977020788
+	.long	1072354815
+	.long	3065100517
+	.long	1015541563
+	.long	3218338682
+	.long	1072350059
+	.long	3404164304
+	.long	3162477108
+	.long	557149882
+	.long	1072345317
+	.long	3672720709
+	.long	1014537265
+	.long	1434058175
+	.long	1072340587
+	.long	251133233
+	.long	1015085769
+	.long	1405169241
+	.long	1072335870
+	.long	2998539689
+	.long	3162830951
+	.long	321958744
+	.long	1072331166
+	.long	3401933767
+	.long	1015794558
+	.long	2331271250
+	.long	1072326474
+	.long	812057446
+	.long	1012207446
+	.long	2990417245
+	.long	1072321795
+	.long	3683467745
+	.long	3163369326
+	.long	2152073944
+	.long	1072317129
+	.long	1486860576
+	.long	3163203456
+	.long	3964284211
+	.long	1072312475
+	.long	2111583915
+	.long	1015427164
+	.long	3985553595
+	.long	1072307834
+	.long	4002146062
+	.long	1015834136
+	.long	2069751141
+	.long	1072303206
+	.long	1562170675
+	.long	3162724681
+	.long	2366108318
+	.long	1072298590
+	.long	2867985102
+	.long	3161762254
+	.long	434316067
+	.long	1072293987
+	.long	2028358766
+	.long	1013458122
+	.long	424392917
+	.long	1072289396
+	.long	2749202995
+	.long	3162838718
+	.long	2191782032
+	.long	1072284817
+	.long	2960257726
+	.long	1013742662
+	.long	1297350157
+	.long	1072280251
+	.long	1308022040
+	.long	3163412558
+	.long	1892288442
+	.long	1072275697
+	.long	2446255666
+	.long	3162600381
+	.long	3833209506
+	.long	1072271155
+	.long	2722920684
+	.long	1013754842
+	.long	2682146384
+	.long	1072266626
+	.long	2082178513
+	.long	3163363419
+	.long	2591453363
+	.long	1072262109
+	.long	2132396182
+	.long	3159074198
+	.long	3418903055
+	.long	1072257604
+	.long	2527457337
+	.long	3160820604
+	.long	727685349
+	.long	1072253112
+	.long	2038246809
+	.long	3162358742
+	.long	2966275557
+	.long	1072248631
+	.long	2176155324
+	.long	3159842759
+	.long	1403662306
+	.long	1072244163
+	.long	2788809599
+	.long	3161671007
+	.long	194117574
+	.long	1072239707
+	.long	777528612
+	.long	3163412089
+	.long	3492293770
+	.long	1072235262
+	.long	2248032210
+	.long	1015386826
+	.long	2568320822
+	.long	1072230830
+	.long	2732824428
+	.long	1014352915
+	.long	1577608921
+	.long	1072226410
+	.long	1875489510
+	.long	3162968394
+	.long	380978316
+	.long	1072222002
+	.long	854188970
+	.long	3160462686
+	.long	3134592888
+	.long	1072217605
+	.long	4232266862
+	.long	1015991134
+	.long	1110089947
+	.long	1072213221
+	.long	1451641639
+	.long	1015474673
+	.long	2759350287
+	.long	1072208848
+	.long	1148526634
+	.long	1015894933
+	.long	3649726105
+	.long	1072204487
+	.long	4085036346
+	.long	1015649474
+	.long	3643909174
+	.long	1072200138
+	.long	3537586109
+	.long	1014354647
+	.long	2604962541
+	.long	1072195801
+	.long	2614425274
+	.long	3163539192
+	.long	396319521
+	.long	1072191476
+	.long	4172420816
+	.long	3159074632
+	.long	1176749997
+	.long	1072187162
+	.long	2738998779
+	.long	3162035844
+	.long	515457527
+	.long	1072182860
+	.long	836709333
+	.long	1015651226
+	.long	2571947539
+	.long	1072178569
+	.long	3558159064
+	.long	3163376669
+	.long	2916157145
+	.long	1072174290
+	.long	219487565
+	.long	1015309367
+	.long	1413356050
+	.long	1072170023
+	.long	1651349291
+	.long	3162668166
+	.long	2224145553
+	.long	1072165767
+	.long	3482522030
+	.long	3161489169
+	.long	919555682
+	.long	1072161523
+	.long	3121969534
+	.long	1012948226
+	.long	1660913392
+	.long	1072157290
+	.long	4218599604
+	.long	1015135707
+	.long	19972402
+	.long	1072153069
+	.long	3507899862
+	.long	1016009292
+	.long	158781403
+	.long	1072148859
+	.long	2221464712
+	.long	3163286453
+	.long	1944781191
+	.long	1072144660
+	.long	3993278767
+	.long	3161724279
+	.long	950803702
+	.long	1072140473
+	.long	1655364926
+	.long	1015237032
+	.long	1339972927
+	.long	1072136297
+	.long	167908909
+	.long	1015572152
+	.long	2980802057
+	.long	1072132132
+	.long	378619896
+	.long	1015773303
+	.long	1447192521
+	.long	1072127979
+	.long	1462857171
+	.long	3162514521
+	.long	903334909
+	.long	1072123837
+	.long	1636462108
+	.long	1015039997
+	.long	1218806132
+	.long	1072119706
+	.long	1818613052
+	.long	3162548441
+	.long	2263535754
+	.long	1072115586
+	.long	752233586
+	.long	3162639008
+	.long	3907805044
+	.long	1072111477
+	.long	2257091225
+	.long	3161550407
+	.long	1727278727
+	.long	1072107380
+	.long	3562710623
+	.long	1011471940
+	.long	4182873220
+	.long	1072103293
+	.long	629542646
+	.long	3161996303
+	.long	2555984613
+	.long	1072099218
+	.long	2652555442
+	.long	3162552692
+	.long	1013258799
+	.long	1072095154
+	.long	1748797611
+	.long	3160129082
+	.long	3721688645
+	.long	1072091100
+	.long	3069276937
+	.long	1015839401
+	.long	1963711167
+	.long	1072087058
+	.long	1744767757
+	.long	3160574294
+	.long	4201977662
+	.long	1072083026
+	.long	748330254
+	.long	1013594357
+	.long	1719614413
+	.long	1072079006
+	.long	330458198
+	.long	3163282740
+	.long	2979960120
+	.long	1072074996
+	.long	2599109725
+	.long	1014498493
+	.long	3561793907
+	.long	1072070997
+	.long	1157054053
+	.long	1011890350
+	.long	3339203574
+	.long	1072067009
+	.long	1483497780
+	.long	3162408754
+	.long	2186617381
+	.long	1072063032
+	.long	2270764084
+	.long	3163272713
+	.long	4273770423
+	.long	1072059065
+	.long	3383180809
+	.long	3163218901
+	.long	885834528
+	.long	1072055110
+	.long	1973258547
+	.long	3162261564
+	.long	488188413
+	.long	1072051165
+	.long	3199821029
+	.long	1015564048
+	.long	2956612997
+	.long	1072047230
+	.long	2118169751
+	.long	3162735553
+	.long	3872257780
+	.long	1072043306
+	.long	1253592103
+	.long	1015958334
+	.long	3111574537
+	.long	1072039393
+	.long	2606161479
+	.long	3162759746
+	.long	551349105
+	.long	1072035491
+	.long	3821916050
+	.long	3162106589
+	.long	363667784
+	.long	1072031599
+	.long	813753950
+	.long	1015785209
+	.long	2425981843
+	.long	1072027717
+	.long	2830390851
+	.long	3163346599
+	.long	2321106615
+	.long	1072023846
+	.long	2171176610
+	.long	1009535771
+	.long	4222122499
+	.long	1072019985
+	.long	1277378074
+	.long	3163256737
+	.long	3712504873
+	.long	1072016135
+	.long	88491949
+	.long	1015427660
+	.long	671025100
+	.long	1072012296
+	.long	3832014351
+	.long	3163022030
+	.long	3566716925
+	.long	1072008466
+	.long	1536826856
+	.long	1014142433
+	.long	3689071823
+	.long	1072004647
+	.long	2321004996
+	.long	3162552716
+	.long	917841882
+	.long	1072000839
+	.long	18715565
+	.long	1015659308
+	.long	3723038930
+	.long	1071997040
+	.long	378465264
+	.long	3162569582
+	.long	3395129871
+	.long	1071993252
+	.long	4025345435
+	.long	3162335388
+	.long	4109806887
+	.long	1071989474
+	.long	422403966
+	.long	1014469229
+	.long	1453150082
+	.long	1071985707
+	.long	498154669
+	.long	3161488062
+	.long	3896463087
+	.long	1071981949
+	.long	1139797873
+	.long	3161233805
+	.long	2731501122
+	.long	1071978202
+	.long	1774031855
+	.long	3162470021
+	.long	2135241198
+	.long	1071974465
+	.long	1236747871
+	.long	1013589147
+	.long	1990012071
+	.long	1071970738
+	.long	3529070563
+	.long	3162813193
+	.long	2178460671
+	.long	1071967021
+	.long	777878098
+	.long	3162842493
+	.long	2583551245
+	.long	1071963314
+	.long	3161094195
+	.long	1015606491
+	.long	3088564500
+	.long	1071959617
+	.long	1762311517
+	.long	1015045673
+	.long	3577096743
+	.long	1071955930
+	.long	2951496418
+	.long	1013793687
+	.long	3933059031
+	.long	1071952253
+	.long	2133366768
+	.long	3161531832
+	.long	4040676318
+	.long	1071948586
+	.long	4090609238
+	.long	1015663458
+	.long	3784486610
+	.long	1071944929
+	.long	1581883040
+	.long	3161698953
+	.long	3049340112
+	.long	1071941282
+	.long	3062915824
+	.long	1013170595
+	.long	1720398391
+	.long	1071937645
+	.long	3980678963
+	.long	3163300080
+	.long	3978100823
+	.long	1071934017
+	.long	3513027190
+	.long	1015845963
+	.long	1118294578
+	.long	1071930400
+	.long	2197495694
+	.long	3159909401
+	.long	1617004845
+	.long	1071926792
+	.long	82804944
+	.long	1010342778
+	.long	1065662932
+	.long	1071923194
+	.long	2533670915
+	.long	1014530238
+	.long	3645941911
+	.long	1071919605
+	.long	3814685081
+	.long	3161573341
+	.long	654919306
+	.long	1071916027
+	.long	3232961757
+	.long	3163047469
+	.long	569847338
+	.long	1071912458
+	.long	472945272
+	.long	3159290729
+	.long	3278348324
+	.long	1071908898
+	.long	3069497416
+	.long	1014750712
+	.long	78413852
+	.long	1071905349
+	.long	4183226867
+	.long	3163017251
+	.long	3743175029
+	.long	1071901808
+	.long	2072812490
+	.long	3162175075
+	.long	1276261410
+	.long	1071898278
+	.long	300981948
+	.long	1014684169
+	.long	1156440435
+	.long	1071894757
+	.long	2351451249
+	.long	1013967056
+	.long	3272845541
+	.long	1071891245
+	.long	928852419
+	.long	3163488248
+	.long	3219942644
+	.long	1071887743
+	.long	3798990616
+	.long	1015368806
+	.long	887463927
+	.long	1071884251
+	.long	3596744163
+	.long	3160794166
+	.long	460407023
+	.long	1071880768
+	.long	4237175092
+	.long	3163138469
+	.long	1829099622
+	.long	1071877294
+	.long	1016661181
+	.long	3163461005
+	.long	589198666
+	.long	1071873830
+	.long	2664346172
+	.long	3163157962
+	.long	926591435
+	.long	1071870375
+	.long	3208833762
+	.long	3162913514
+	.long	2732492859
+	.long	1071866929
+	.long	2691479646
+	.long	3162255684
+	.long	1603444721
+	.long	1071863493
+	.long	1548633640
+	.long	3162201326
+	.long	1726216749
+	.long	1071860066
+	.long	2466808228
+	.long	3161676405
+	.long	2992903935
+	.long	1071856648
+	.long	2218154406
+	.long	1015228193
+	.long	1000925746
+	.long	1071853240
+	.long	1018491672
+	.long	3163309544
+	.long	4232894513
+	.long	1071849840
+	.long	2383938684
+	.long	1014668519
+	.long	3991843581
+	.long	1071846450
+	.long	4092853457
+	.long	1014585763
+	.long	171030293
+	.long	1071843070
+	.long	3526460132
+	.long	1014428778
+	.long	1253935211
+	.long	1071839698
+	.long	1395382931
+	.long	3159702613
+	.long	2839424854
+	.long	1071836335
+	.long	1171596163
+	.long	1013041679
+	.long	526652809
+	.long	1071832982
+	.long	4223459736
+	.long	1015879375
+	.long	2799960843
+	.long	1071829637
+	.long	1423655381
+	.long	1015022151
+	.long	964107055
+	.long	1071826302
+	.long	2800439588
+	.long	3162833221
+	.long	3504003472
+	.long	1071822975
+	.long	3594001060
+	.long	3157330652
+	.long	1724976915
+	.long	1071819658
+	.long	420909223
+	.long	3163117379
+	.long	4112506593
+	.long	1071816349
+	.long	2947355221
+	.long	1014371048
+	.long	1972484976
+	.long	1071813050
+	.long	675290301
+	.long	3161640050
+	.long	3790955393
+	.long	1071809759
+	.long	2352942462
+	.long	3163180090
+	.long	874372905
+	.long	1071806478
+	.long	100263788
+	.long	1015940732
+	.long	1709341917
+	.long	1071803205
+	.long	2571168217
+	.long	1014152499
+	.long	1897844341
+	.long	1071799941
+	.long	1254300460
+	.long	1015275938
+	.long	1337108031
+	.long	1071796686
+	.long	3203724452
+	.long	1014677845
+	.long	4219606026
+	.long	1071793439
+	.long	2434574742
+	.long	1014681548
+	.long	1853186616
+	.long	1071790202
+	.long	3066496371
+	.long	1015656574
+	.long	2725843665
+	.long	1071786973
+	.long	1433917087
+	.long	1014838523
+	.long	2440944790
+	.long	1071783753
+	.long	2492769774
+	.long	1014147454
+	.long	897099801
+	.long	1071780542
+	.long	754756297
+	.long	1015241005
+	.long	2288159958
+	.long	1071777339
+	.long	2169144469
+	.long	1014876021
+	.long	2218315341
+	.long	1071774145
+	.long	2694295388
+	.long	3163288868
+	.long	586995997
+	.long	1071770960
+	.long	41662348
+	.long	3162627992
+	.long	1588871207
+	.long	1071767783
+	.long	143439582
+	.long	3162963416
+	.long	828946858
+	.long	1071764615
+	.long	10642492
+	.long	1015939438
+	.long	2502433899
+	.long	1071761455
+	.long	2148595913
+	.long	1015023991
+	.long	2214878420
+	.long	1071758304
+	.long	892270087
+	.long	3163116422
+	.long	4162030108
+	.long	1071755161
+	.long	2763428480
+	.long	1015529349
+	.long	3949972341
+	.long	1071752027
+	.long	2068408548
+	.long	1014913868
+	.long	1480023343
+	.long	1071748902
+	.long	2247196168
+	.long	1015327453
+	.long	948735466
+	.long	1071745785
+	.long	3516338028
+	.long	3162574883
+	.long	2257959872
+	.long	1071742676
+	.long	3802946148
+	.long	1012964927
+	.long	1014845819
+	.long	1071739576
+	.long	3117910646
+	.long	3161559105
+	.long	1416741826
+	.long	1071736484
+	.long	2196380210
+	.long	1011413563
+	.long	3366293073
+	.long	1071733400
+	.long	3119426314
+	.long	1014120554
+	.long	2471440686
+	.long	1071730325
+	.long	968836267
+	.long	3162214888
+	.long	2930322912
+	.long	1071727258
+	.long	2599499422
+	.long	3162714047
+	.long	351405227
+	.long	1071724200
+	.long	3125337328
+	.long	3159822479
+	.long	3228316108
+	.long	1071721149
+	.long	3010241991
+	.long	3158422804
+	.long	2875075254
+	.long	1071718107
+	.long	4144233330
+	.long	3163333716
+	.long	3490863953
+	.long	1071715073
+	.long	960797498
+	.long	3162948880
+	.long	685187902
+	.long	1071712048
+	.long	378731989
+	.long	1014843115
+	.long	2952712987
+	.long	1071709030
+	.long	3293494651
+	.long	3160120301
+	.long	1608493509
+	.long	1071706021
+	.long	3159622171
+	.long	3162807737
+	.long	852742562
+	.long	1071703020
+	.long	667253586
+	.long	1009793559
+	.long	590962156
+	.long	1071700027
+	.long	3829346666
+	.long	3163275597
+	.long	728909815
+	.long	1071697042
+	.long	383930225
+	.long	1015029468
+	.long	1172597893
+	.long	1071694065
+	.long	114433263
+	.long	1015347593
+	.long	1828292879
+	.long	1071691096
+	.long	1255956747
+	.long	1015588398
+	.long	2602514713
+	.long	1071688135
+	.long	2268929336
+	.long	1014354284
+	.long	3402036099
+	.long	1071685182
+	.long	405889334
+	.long	1015105656
+	.long	4133881824
+	.long	1071682237
+	.long	2148155345
+	.long	3162931299
+	.long	410360776
+	.long	1071679301
+	.long	1269990655
+	.long	1011975870
+	.long	728934454
+	.long	1071676372
+	.long	1413842688
+	.long	1014178612
+	.long	702412510
+	.long	1071673451
+	.long	3803266087
+	.long	3162280415
+	.long	238821257
+	.long	1071670538
+	.long	1469694871
+	.long	3162884987
+	.long	3541402996
+	.long	1071667632
+	.long	2759177317
+	.long	1014854626
+	.long	1928746161
+	.long	1071664735
+	.long	983617676
+	.long	1014285177
+	.long	3899555717
+	.long	1071661845
+	.long	427280750
+	.long	3162546972
+	.long	772914124
+	.long	1071658964
+	.long	4004372762
+	.long	1012230161
+	.long	1048019041
+	.long	1071656090
+	.long	1398474845
+	.long	3160510595
+	.long	339411585
+	.long	1071653224
+	.long	264588982
+	.long	3161636657
+	.long	2851812149
+	.long	1071650365
+	.long	2595802551
+	.long	1015767337
+	.long	4200250559
+	.long	1071647514
+	.long	2808127345
+	.long	3161781938
+	.type	T2_neg_f,@object
+	.size	T2_neg_f,4096
+	.space 512, 0x00 	# pad
+	.align 16
+MASK3:
+	.long	0
+	.long	4294967280
+	.long	0
+	.long	4294967280
+	.type	MASK3,@object
+	.size	MASK3,16
+	.align 16
+RMASK:
+	.long	4294705152
+	.long	4294967295
+	.long	4294705152
+	.long	4294967295
+	.type	RMASK,@object
+	.size	RMASK,16
+	.align 16
+pv:
+	.long	236289503
+	.long	1064135997
+	.long	463583772
+	.long	3215696314
+	.long	1441186365
+	.long	3212977891
+	.long	286331153
+	.long	1069617425
+	.long	2284589306
+	.long	1066820852
+	.long	1431655765
+	.long	3218429269
+	.type	pv,@object
+	.size	pv,48
+	.align 4
+HALFMASK:
+	.long	4160749568
+	.long	2147483647
+	.type	HALFMASK,@object
+	.size	HALFMASK,8
+	.align 4
+ONEMASK:
+	.long	0
+	.long	1072693248
+	.type	ONEMASK,@object
+	.size	ONEMASK,8
+	.align 4
+TWOMASK:
+	.long	0
+	.long	1073741824
+	.type	TWOMASK,@object
+	.size	TWOMASK,8
+	.data
+	.section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+	.section .eh_frame,"a",@progbits
+.eh_frame_seg:
+	.align 1
+	.4byte 0x00000014
+	.8byte 0x00527a0100000000
+	.8byte 0x08070c1b01107801
+	.4byte 0x00000190
+	.4byte 0x0000001c
+	.4byte 0x0000001c
+	.4byte ..___tag_value_tanh.1-.
+	.4byte ..___tag_value_tanh.5-..___tag_value_tanh.1
+	.2byte 0x0400
+	.4byte ..___tag_value_tanh.3-..___tag_value_tanh.1
+	.2byte 0x100e
+	.byte 0x04
+	.4byte ..___tag_value_tanh.4-..___tag_value_tanh.3
+	.2byte 0x080e
+	.byte 0x00
+# End
diff --git a/libm/x86_64/sqrt.S b/libm/x86_64/sqrt.S
new file mode 100644
index 0000000..ee97026
--- /dev/null
+++ b/libm/x86_64/sqrt.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrt)
+sqrtsd %xmm0,%xmm0
+retq
+END(sqrt)
diff --git a/libm/x86_64/sqrtf.S b/libm/x86_64/sqrtf.S
new file mode 100644
index 0000000..910407f
--- /dev/null
+++ b/libm/x86_64/sqrtf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(sqrtf)
+sqrtss %xmm0,%xmm0
+retq
+END(sqrtf)
diff --git a/libm/x86_64/trunc.S b/libm/x86_64/trunc.S
new file mode 100644
index 0000000..fe18b40
--- /dev/null
+++ b/libm/x86_64/trunc.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(trunc)
+roundsd $0x3,%xmm0,%xmm0
+retq
+END(trunc)
diff --git a/libm/x86_64/truncf.S b/libm/x86_64/truncf.S
new file mode 100644
index 0000000..eeee1d7
--- /dev/null
+++ b/libm/x86_64/truncf.S
@@ -0,0 +1,36 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+ENTRY(truncf)
+roundss $0x3,%xmm0,%xmm0
+retq
+END(truncf)
diff --git a/linker/Android.mk b/linker/Android.mk
index 54535fc..5bdc2f9 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -7,8 +7,10 @@
     dlfcn.cpp \
     linker.cpp \
     linker_allocator.cpp \
+    linker_block_allocator.cpp \
     linker_environ.cpp \
     linker_libc_support.c \
+    linker_memory.cpp \
     linker_phdr.cpp \
     rt.cpp \
 
@@ -55,7 +57,7 @@
 
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 
-LOCAL_STATIC_LIBRARIES := libc_nomalloc
+LOCAL_STATIC_LIBRARIES := libc_nomalloc libziparchive libutils libz liblog
 
 LOCAL_FORCE_STATIC_EXECUTABLE := true
 
@@ -68,7 +70,9 @@
 # meaningful name resolution.
 LOCAL_STRIP_MODULE := keep_symbols
 
-# Insert an extra objcopy step to add prefix to symbols.
+# Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
+# looking up symbols in the linker by mistake.
+#
 # Note we are using "=" instead of ":=" to defer the evaluation,
 # because LOCAL_2ND_ARCH_VAR_PREFIX or linked_module isn't set properly yet at this point.
 LOCAL_POST_LINK_CMD = $(hide) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY) \
diff --git a/linker/debugger.cpp b/linker/debugger.cpp
index 6fe9524..357fbdc 100644
--- a/linker/debugger.cpp
+++ b/linker/debugger.cpp
@@ -221,7 +221,7 @@
   if (ret != 0) {
     if (ret == EBUSY) {
       __libc_format_log(ANDROID_LOG_INFO, "libc",
-                        "Another thread has contacted debuggerd first, stop and wait for process to die.");
+          "Another thread contacted debuggerd first; not contacting debuggerd.");
       // This will never complete since the lock is never released.
       pthread_mutex_lock(&crash_mutex);
     } else {
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index 9a8dbc9..5ed8891 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -101,16 +101,11 @@
 
   soinfo* found = nullptr;
   ElfW(Sym)* sym = nullptr;
-  if (handle == RTLD_DEFAULT) {
-    sym = dlsym_linear_lookup(symbol, &found, nullptr);
-  } else if (handle == RTLD_NEXT) {
-    void* caller_addr = __builtin_return_address(0);
-    soinfo* si = find_containing_library(caller_addr);
+  void* caller_addr = __builtin_return_address(0);
+  soinfo* caller = find_containing_library(caller_addr);
 
-    sym = nullptr;
-    if (si && si->next) {
-      sym = dlsym_linear_lookup(symbol, &found, si->next);
-    }
+  if (handle == RTLD_DEFAULT || handle == RTLD_NEXT) {
+    sym = dlsym_linear_lookup(symbol, &found, caller, handle);
   } else {
     sym = dlsym_handle_lookup(reinterpret_cast<soinfo*>(handle), &found, symbol);
   }
@@ -141,7 +136,7 @@
 
   memset(info, 0, sizeof(Dl_info));
 
-  info->dli_fname = si->name;
+  info->dli_fname = si->get_realpath();
   // Address at which the shared object is loaded.
   info->dli_fbase = reinterpret_cast<void*>(si->base);
 
@@ -233,22 +228,28 @@
 static unsigned g_libdl_chains[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
 #endif
 
-static soinfo __libdl_info("libdl.so", nullptr, 0, RTLD_GLOBAL);
+static uint8_t __libdl_info_buf[sizeof(soinfo)] __attribute__((aligned(8)));
+static soinfo* __libdl_info = nullptr;
 
 // This is used by the dynamic linker. Every process gets these symbols for free.
 soinfo* get_libdl_info() {
-  if ((__libdl_info.flags_ & FLAG_LINKED) == 0) {
-    __libdl_info.flags_ |= FLAG_LINKED;
-    __libdl_info.strtab_ = ANDROID_LIBDL_STRTAB;
-    __libdl_info.symtab_ = g_libdl_symtab;
-    __libdl_info.nbucket_ = sizeof(g_libdl_buckets)/sizeof(unsigned);
-    __libdl_info.nchain_ = sizeof(g_libdl_chains)/sizeof(unsigned);
-    __libdl_info.bucket_ = g_libdl_buckets;
-    __libdl_info.chain_ = g_libdl_chains;
-    __libdl_info.ref_count_ = 1;
-    __libdl_info.strtab_size_ = sizeof(ANDROID_LIBDL_STRTAB);
-    __libdl_info.local_group_root_ = &__libdl_info;
+  if (__libdl_info == nullptr) {
+    __libdl_info = new (__libdl_info_buf) soinfo("libdl.so", nullptr, 0, RTLD_GLOBAL);
+    __libdl_info->flags_ |= FLAG_LINKED;
+    __libdl_info->strtab_ = ANDROID_LIBDL_STRTAB;
+    __libdl_info->symtab_ = g_libdl_symtab;
+    __libdl_info->nbucket_ = sizeof(g_libdl_buckets)/sizeof(unsigned);
+    __libdl_info->nchain_ = sizeof(g_libdl_chains)/sizeof(unsigned);
+    __libdl_info->bucket_ = g_libdl_buckets;
+    __libdl_info->chain_ = g_libdl_chains;
+    __libdl_info->ref_count_ = 1;
+    __libdl_info->strtab_size_ = sizeof(ANDROID_LIBDL_STRTAB);
+    __libdl_info->local_group_root_ = __libdl_info;
+    __libdl_info->soname_ = "libdl.so";
+#if defined(__arm__)
+    strlcpy(__libdl_info->old_name_, __libdl_info->soname_, sizeof(__libdl_info->old_name_));
+#endif
   }
 
-  return &__libdl_info;
+  return __libdl_info;
 }
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 5d2425f..3c8ba76 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -40,6 +40,8 @@
 #include <unistd.h>
 
 #include <new>
+#include <string>
+#include <vector>
 
 // Private C library headers.
 #include "private/bionic_tls.h"
@@ -50,11 +52,14 @@
 #include "private/UniquePtr.h"
 
 #include "linker.h"
+#include "linker_block_allocator.h"
 #include "linker_debug.h"
 #include "linker_environ.h"
+#include "linker_leb128.h"
 #include "linker_phdr.h"
 #include "linker_relocs.h"
-#include "linker_allocator.h"
+#include "linker_reloc_iterators.h"
+#include "ziparchive/zip_archive.h"
 
 /* >>> IMPORTANT NOTE - READ ME BEFORE MODIFYING <<<
  *
@@ -75,23 +80,10 @@
 #undef ELF_ST_TYPE
 #define ELF_ST_TYPE(x) (static_cast<uint32_t>(x) & 0xf)
 
-#if defined(__LP64__)
-#define SEARCH_NAME(x) x
-#else
-// Nvidia drivers are relying on the bug:
-// http://code.google.com/p/android/issues/detail?id=6670
-// so we continue to use base-name lookup for lp32
-static const char* get_base_name(const char* name) {
-  const char* bname = strrchr(name, '/');
-  return bname ? bname + 1 : name;
-}
-#define SEARCH_NAME(x) get_base_name(x)
-#endif
-
 static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf);
 
-static LinkerAllocator<soinfo> g_soinfo_allocator;
-static LinkerAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
+static LinkerTypeAllocator<soinfo> g_soinfo_allocator;
+static LinkerTypeAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
 
 static soinfo* solist;
 static soinfo* sonext;
@@ -108,19 +100,10 @@
   nullptr
 };
 
-#define LDPATH_BUFSIZE (LDPATH_MAX*64)
-#define LDPATH_MAX 8
+static std::vector<std::string> g_ld_library_paths;
+static std::vector<std::string> g_ld_preload_names;
 
-#define LDPRELOAD_BUFSIZE (LDPRELOAD_MAX*64)
-#define LDPRELOAD_MAX 8
-
-static char g_ld_library_paths_buffer[LDPATH_BUFSIZE];
-static const char* g_ld_library_paths[LDPATH_MAX + 1];
-
-static char g_ld_preloads_buffer[LDPRELOAD_BUFSIZE];
-static const char* g_ld_preload_names[LDPRELOAD_MAX + 1];
-
-static soinfo* g_ld_preloads[LDPRELOAD_MAX + 1];
+static std::vector<soinfo*> g_ld_preloads;
 
 __LIBC_HIDDEN__ int g_ld_debug_verbosity;
 
@@ -145,18 +128,6 @@
 uint32_t bitmask[4096];
 #endif
 
-// You shouldn't try to call memory-allocating functions in the dynamic linker.
-// Guard against the most obvious ones.
-#define DISALLOW_ALLOCATION(return_type, name, ...) \
-    return_type name __VA_ARGS__ \
-    { \
-      __libc_fatal("ERROR: " #name " called from the dynamic linker!\n"); \
-    }
-DISALLOW_ALLOCATION(void*, malloc, (size_t u __unused));
-DISALLOW_ALLOCATION(void, free, (void* u __unused));
-DISALLOW_ALLOCATION(void*, realloc, (void* u1 __unused, size_t u2 __unused));
-DISALLOW_ALLOCATION(void*, calloc, (size_t u1 __unused, size_t u2 __unused));
-
 static char __linker_dl_err_buf[768];
 
 char* linker_get_error_buffer() {
@@ -169,17 +140,21 @@
 
 // This function is an empty stub where GDB locates a breakpoint to get notified
 // about linker activity.
-extern "C" void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
+extern "C"
+void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
 
 static pthread_mutex_t g__r_debug_mutex = PTHREAD_MUTEX_INITIALIZER;
-static r_debug _r_debug = {1, nullptr, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
+static r_debug _r_debug =
+    {1, nullptr, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
+
 static link_map* r_debug_tail = 0;
 
 static void insert_soinfo_into_debug_map(soinfo* info) {
   // Copy the necessary fields into the debug structure.
   link_map* map = &(info->link_map_head);
   map->l_addr = info->load_bias;
-  map->l_name = info->name;
+  // link_map l_name field is not const.
+  map->l_name = const_cast<char*>(info->get_realpath());
   map->l_ld = info->dynamic;
 
   // Stick the new library at the end of the list.
@@ -262,8 +237,9 @@
   g_soinfo_links_allocator.free(entry);
 }
 
-static soinfo* soinfo_alloc(const char* name, struct stat* file_stat, off64_t file_offset, uint32_t rtld_flags) {
-  if (strlen(name) >= SOINFO_NAME_LEN) {
+static soinfo* soinfo_alloc(const char* name, struct stat* file_stat,
+                            off64_t file_offset, uint32_t rtld_flags) {
+  if (strlen(name) >= PATH_MAX) {
     DL_ERR("library name \"%s\" too long", name);
     return nullptr;
   }
@@ -288,7 +264,7 @@
 
   soinfo *prev = nullptr, *trav;
 
-  TRACE("name %s: freeing soinfo @ %p", si->name, si);
+  TRACE("name %s: freeing soinfo @ %p", si->get_soname(), si);
 
   for (trav = solist; trav != nullptr; trav = trav->next) {
     if (trav == si) {
@@ -299,7 +275,7 @@
 
   if (trav == nullptr) {
     // si was not in solist
-    DL_ERR("name \"%s\"@%p is not in solist!", si->name, si);
+    DL_ERR("name \"%s\"@%p is not in solist!", si->get_soname(), si);
     return;
   }
 
@@ -317,39 +293,47 @@
 }
 
 static void parse_path(const char* path, const char* delimiters,
-                       const char** array, char* buf, size_t buf_size, size_t max_count) {
+                       std::vector<std::string>* paths) {
   if (path == nullptr) {
     return;
   }
 
-  size_t len = strlcpy(buf, path, buf_size);
+  paths->clear();
 
-  size_t i = 0;
-  char* buf_p = buf;
-  while (i < max_count && (array[i] = strsep(&buf_p, delimiters))) {
-    if (*array[i] != '\0') {
-      ++i;
+  for (const char *p = path; ; ++p) {
+    size_t len = strcspn(p, delimiters);
+    // skip empty tokens
+    if (len == 0) {
+      continue;
     }
-  }
 
-  // Forget the last path if we had to truncate; this occurs if the 2nd to
-  // last char isn't '\0' (i.e. wasn't originally a delimiter).
-  if (i > 0 && len >= buf_size && buf[buf_size - 2] != '\0') {
-    array[i - 1] = nullptr;
-  } else {
-    array[i] = nullptr;
+    paths->push_back(std::string(p, len));
+    p += len;
+
+    if (*p == '\0') {
+      break;
+    }
   }
 }
 
 static void parse_LD_LIBRARY_PATH(const char* path) {
-  parse_path(path, ":", g_ld_library_paths,
-             g_ld_library_paths_buffer, sizeof(g_ld_library_paths_buffer), LDPATH_MAX);
+  parse_path(path, ":", &g_ld_library_paths);
 }
 
 static void parse_LD_PRELOAD(const char* path) {
   // We have historically supported ':' as well as ' ' in LD_PRELOAD.
-  parse_path(path, " :", g_ld_preload_names,
-             g_ld_preloads_buffer, sizeof(g_ld_preloads_buffer), LDPRELOAD_MAX);
+  parse_path(path, " :", &g_ld_preload_names);
+}
+
+static bool realpath_fd(int fd, std::string* realpath) {
+  std::vector<char> buf(PATH_MAX), proc_self_fd(PATH_MAX);
+  snprintf(&proc_self_fd[0], proc_self_fd.size(), "/proc/self/fd/%d", fd);
+  if (readlink(&proc_self_fd[0], &buf[0], buf.size()) == -1) {
+    return false;
+  }
+
+  *realpath = std::string(&buf[0]);
+  return true;
 }
 
 #if defined(__arm__)
@@ -405,7 +389,7 @@
     return s->st_shndx != SHN_UNDEF;
   } else if (ELF_ST_BIND(s->st_info) != STB_LOCAL) {
     DL_WARN("unexpected ST_BIND value: %d for '%s' in '%s'",
-        ELF_ST_BIND(s->st_info), si->get_string(s->st_name), si->name);
+        ELF_ST_BIND(s->st_info), si->get_string(s->st_name), si->get_soname());
   }
 
   return false;
@@ -419,26 +403,41 @@
   uint32_t word_num = (hash / bloom_mask_bits) & gnu_maskwords_;
   ElfW(Addr) bloom_word = gnu_bloom_filter_[word_num];
 
+  TRACE_TYPE(LOOKUP, "SEARCH %s in %s@%p (gnu)",
+      symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
   // test against bloom filter
   if ((1 & (bloom_word >> (hash % bloom_mask_bits)) & (bloom_word >> (h2 % bloom_mask_bits))) == 0) {
+    TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+        symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
     return nullptr;
   }
 
   // bloom test says "probably yes"...
-  uint32_t n = bucket_[hash % nbucket_];
+  uint32_t n = gnu_bucket_[hash % gnu_nbucket_];
 
   if (n == 0) {
+    TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+        symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
+
     return nullptr;
   }
 
   do {
     ElfW(Sym)* s = symtab_ + n;
-    if (((chain_[n] ^ hash) >> 1) == 0 &&
+    if (((gnu_chain_[n] ^ hash) >> 1) == 0 &&
         strcmp(get_string(s->st_name), symbol_name.get_name()) == 0 &&
         is_symbol_global_and_defined(this, s)) {
+      TRACE_TYPE(LOOKUP, "FOUND %s in %s (%p) %zd",
+          symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(s->st_value),
+          static_cast<size_t>(s->st_size));
       return s;
     }
-  } while ((chain_[n++] & 1) == 0);
+  } while ((gnu_chain_[n++] & 1) == 0);
+
+  TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p",
+             symbol_name.get_name(), get_soname(), reinterpret_cast<void*>(base));
 
   return nullptr;
 }
@@ -447,28 +446,36 @@
   uint32_t hash = symbol_name.elf_hash();
 
   TRACE_TYPE(LOOKUP, "SEARCH %s in %s@%p h=%x(elf) %zd",
-             symbol_name.get_name(), name, reinterpret_cast<void*>(base), hash, hash % nbucket_);
+             symbol_name.get_name(), get_soname(),
+             reinterpret_cast<void*>(base), hash, hash % nbucket_);
 
   for (uint32_t n = bucket_[hash % nbucket_]; n != 0; n = chain_[n]) {
     ElfW(Sym)* s = symtab_ + n;
-    if (strcmp(get_string(s->st_name), symbol_name.get_name()) == 0 && is_symbol_global_and_defined(this, s)) {
+    if (strcmp(get_string(s->st_name), symbol_name.get_name()) == 0 &&
+        is_symbol_global_and_defined(this, s)) {
       TRACE_TYPE(LOOKUP, "FOUND %s in %s (%p) %zd",
-               symbol_name.get_name(), name, reinterpret_cast<void*>(s->st_value),
-               static_cast<size_t>(s->st_size));
+                 symbol_name.get_name(), get_soname(),
+                 reinterpret_cast<void*>(s->st_value),
+                 static_cast<size_t>(s->st_size));
       return s;
     }
   }
 
   TRACE_TYPE(LOOKUP, "NOT FOUND %s in %s@%p %x %zd",
-             symbol_name.get_name(), name, reinterpret_cast<void*>(base), hash, hash % nbucket_);
+             symbol_name.get_name(), get_soname(),
+             reinterpret_cast<void*>(base), hash, hash % nbucket_);
 
   return nullptr;
 }
 
-soinfo::soinfo(const char* name, const struct stat* file_stat, off64_t file_offset, int rtld_flags) {
+soinfo::soinfo(const char* realpath, const struct stat* file_stat,
+               off64_t file_offset, int rtld_flags) {
   memset(this, 0, sizeof(*this));
 
-  strlcpy(this->name, name, sizeof(this->name));
+  if (realpath != nullptr) {
+    realpath_ = realpath;
+  }
+
   flags_ = FLAG_NEW_SOINFO;
   version_ = SOINFO_VERSION;
 
@@ -484,7 +491,7 @@
 
 uint32_t SymbolName::elf_hash() {
   if (!has_elf_hash_) {
-    const unsigned char* name = reinterpret_cast<const unsigned char*>(name_);
+    const uint8_t* name = reinterpret_cast<const uint8_t*>(name_);
     uint32_t h = 0, g;
 
     while (*name) {
@@ -504,7 +511,7 @@
 uint32_t SymbolName::gnu_hash() {
   if (!has_gnu_hash_) {
     uint32_t h = 5381;
-    const unsigned char* name = reinterpret_cast<const unsigned char*>(name_);
+    const uint8_t* name = reinterpret_cast<const uint8_t*>(name_);
     while (*name != 0) {
       h += (h << 5) + *name++; // h*33 + c = h + h * 32 + c = h + h << 5 + c
     }
@@ -533,7 +540,7 @@
    * relocations for -Bsymbolic linked dynamic executables.
    */
   if (si_from->has_DT_SYMBOLIC) {
-    DEBUG("%s: looking up %s in local scope (DT_SYMBOLIC)", si_from->name, name);
+    DEBUG("%s: looking up %s in local scope (DT_SYMBOLIC)", si_from->get_soname(), name);
     s = si_from->find_symbol_by_name(symbol_name);
     if (s != nullptr) {
       *si_found_in = si_from;
@@ -543,7 +550,8 @@
   // 1. Look for it in global_group
   if (s == nullptr) {
     global_group.visit([&](soinfo* global_si) {
-      DEBUG("%s: looking up %s in %s (from global group)", si_from->name, name, global_si->name);
+      DEBUG("%s: looking up %s in %s (from global group)",
+          si_from->get_soname(), name, global_si->get_soname());
       s = global_si->find_symbol_by_name(symbol_name);
       if (s != nullptr) {
         *si_found_in = global_si;
@@ -562,7 +570,8 @@
         return true;
       }
 
-      DEBUG("%s: looking up %s in %s (from local group)", si_from->name, name, local_si->name);
+      DEBUG("%s: looking up %s in %s (from local group)",
+          si_from->get_soname(), name, local_si->get_soname());
       s = local_si->find_symbol_by_name(symbol_name);
       if (s != nullptr) {
         *si_found_in = local_si;
@@ -576,8 +585,8 @@
   if (s != nullptr) {
     TRACE_TYPE(LOOKUP, "si %s sym %s s->st_value = %p, "
                "found in %s, base = %p, load bias = %p",
-               si_from->name, name, reinterpret_cast<void*>(s->st_value),
-               (*si_found_in)->name, reinterpret_cast<void*>((*si_found_in)->base),
+               si_from->get_soname(), name, reinterpret_cast<void*>(s->st_value),
+               (*si_found_in)->get_soname(), reinterpret_cast<void*>((*si_found_in)->base),
                reinterpret_cast<void*>((*si_found_in)->load_bias));
   }
 
@@ -749,15 +758,21 @@
    beginning of the global solist. Otherwise the search starts at the
    specified soinfo (for RTLD_NEXT).
  */
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start) {
+ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* caller, void* handle) {
   SymbolName symbol_name(name);
 
-  if (start == nullptr) {
-    start = solist;
+  soinfo* start = solist;
+
+  if (handle == RTLD_NEXT) {
+    if (caller == nullptr || caller->next == nullptr) {
+      return nullptr;
+    } else {
+      start = caller->next;
+    }
   }
 
   ElfW(Sym)* s = nullptr;
-  for (soinfo* si = start; (s == nullptr) && (si != nullptr); si = si->next) {
+  for (soinfo* si = start; si != nullptr; si = si->next) {
     if ((si->get_rtld_flags() & RTLD_GLOBAL) == 0) {
       continue;
     }
@@ -769,6 +784,30 @@
     }
   }
 
+  // If not found - look into local_group unless
+  // caller is part of the global group in which
+  // case we already did it.
+  if (s == nullptr && caller != nullptr &&
+      (caller->get_rtld_flags() & RTLD_GLOBAL) == 0) {
+    soinfo* local_group_root = caller->get_local_group_root();
+
+    if (handle == RTLD_DEFAULT) {
+      start = local_group_root;
+    }
+
+    for (soinfo* si = start; si != nullptr; si = si->next) {
+      if (si->get_local_group_root() != local_group_root) {
+        break;
+      }
+
+      s = si->find_symbol_by_name(symbol_name);
+      if (s != nullptr) {
+        *found = si;
+        break;
+      }
+    }
+  }
+
   if (s != nullptr) {
     TRACE_TYPE(LOOKUP, "%s s->st_value = %p, found->base = %p",
                name, reinterpret_cast<void*>(s->st_value), reinterpret_cast<void*>((*found)->base));
@@ -800,8 +839,8 @@
 ElfW(Sym)* soinfo::gnu_addr_lookup(const void* addr) {
   ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias;
 
-  for (size_t i = 0; i < nbucket_; ++i) {
-    uint32_t n = bucket_[i];
+  for (size_t i = 0; i < gnu_nbucket_; ++i) {
+    uint32_t n = gnu_bucket_[i];
 
     if (n == 0) {
       continue;
@@ -812,7 +851,7 @@
       if (symbol_matches_soaddr(sym, soaddr)) {
         return sym;
       }
-    } while ((chain_[n++] & 1) == 0);
+    } while ((gnu_chain_[n++] & 1) == 0);
   }
 
   return nullptr;
@@ -833,41 +872,141 @@
   return nullptr;
 }
 
-static int open_library_on_path(const char* name, const char* const paths[]) {
+static int open_library_in_zipfile(const char* const path,
+                                   off64_t* file_offset) {
+  TRACE("Trying zip file open from path '%s'", path);
+
+  // Treat an '!' character inside a path as the separator between the name
+  // of the zip file on disk and the subdirectory to search within it.
+  // For example, if path is "foo.zip!bar/bas/x.so", then we search for
+  // "bar/bas/x.so" within "foo.zip".
+  const char* separator = strchr(path, '!');
+  if (separator == nullptr) {
+    return -1;
+  }
+
   char buf[512];
-  for (size_t i = 0; paths[i] != nullptr; ++i) {
-    int n = __libc_format_buffer(buf, sizeof(buf), "%s/%s", paths[i], name);
-    if (n < 0 || n >= static_cast<int>(sizeof(buf))) {
-      PRINT("Warning: ignoring very long library path: %s/%s", paths[i], name);
+  if (strlcpy(buf, path, sizeof(buf)) >= sizeof(buf)) {
+    PRINT("Warning: ignoring very long library path: %s", path);
+    return -1;
+  }
+
+  buf[separator - path] = '\0';
+
+  const char* zip_path = buf;
+  const char* file_path = &buf[separator - path + 1];
+  int fd = TEMP_FAILURE_RETRY(open(zip_path, O_RDONLY | O_CLOEXEC));
+  if (fd == -1) {
+    return -1;
+  }
+
+  ZipArchiveHandle handle;
+  if (OpenArchiveFd(fd, "", &handle, false) != 0) {
+    // invalid zip-file (?)
+    close(fd);
+    return -1;
+  }
+
+  auto archive_guard = make_scope_guard([&]() {
+    CloseArchive(handle);
+  });
+
+  ZipEntry entry;
+
+  if (FindEntry(handle, ZipEntryName(file_path), &entry) != 0) {
+    // Entry was not found.
+    close(fd);
+    return -1;
+  }
+
+  // Check if it is properly stored
+  if (entry.method != kCompressStored || (entry.offset % PAGE_SIZE) != 0) {
+    close(fd);
+    return -1;
+  }
+
+  *file_offset = entry.offset;
+  return fd;
+}
+
+static bool format_path(char* buf, size_t buf_size, const char* path, const char* name) {
+  int n = __libc_format_buffer(buf, buf_size, "%s/%s", path, name);
+  if (n < 0 || n >= static_cast<int>(buf_size)) {
+    PRINT("Warning: ignoring very long library path: %s/%s", path, name);
+    return false;
+  }
+
+  return true;
+}
+
+static int open_library_on_default_path(const char* name, off64_t* file_offset) {
+  for (size_t i = 0; kDefaultLdPaths[i] != nullptr; ++i) {
+    char buf[512];
+    if (!format_path(buf, sizeof(buf), kDefaultLdPaths[i], name)) {
       continue;
     }
+
     int fd = TEMP_FAILURE_RETRY(open(buf, O_RDONLY | O_CLOEXEC));
     if (fd != -1) {
+      *file_offset = 0;
+      return fd;
+    }
+  }
+
+  return -1;
+}
+
+static int open_library_on_ld_library_path(const char* name, off64_t* file_offset) {
+  for (const auto& path_str : g_ld_library_paths) {
+    char buf[512];
+    const char* const path = path_str.c_str();
+    if (!format_path(buf, sizeof(buf), path, name)) {
+      continue;
+    }
+
+    int fd = -1;
+    if (strchr(buf, '!') != nullptr) {
+      fd = open_library_in_zipfile(buf, file_offset);
+    }
+
+    if (fd == -1) {
+      fd = TEMP_FAILURE_RETRY(open(buf, O_RDONLY | O_CLOEXEC));
+      if (fd != -1) {
+        *file_offset = 0;
+      }
+    }
+
+    if (fd != -1) {
       return fd;
     }
   }
+
   return -1;
 }
 
-static int open_library(const char* name) {
+static int open_library(const char* name, off64_t* file_offset) {
   TRACE("[ opening %s ]", name);
 
   // If the name contains a slash, we should attempt to open it directly and not search the paths.
   if (strchr(name, '/') != nullptr) {
+    if (strchr(name, '!') != nullptr) {
+      int fd = open_library_in_zipfile(name, file_offset);
+      if (fd != -1) {
+        return fd;
+      }
+    }
+
     int fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC));
     if (fd != -1) {
-      return fd;
+      *file_offset = 0;
     }
-    // ...but nvidia binary blobs (at least) rely on this behavior, so fall through for now.
-#if defined(__LP64__)
-    return -1;
-#endif
+    return fd;
   }
 
   // Otherwise we try LD_LIBRARY_PATH first, and fall back to the built-in well known paths.
-  int fd = open_library_on_path(name, g_ld_library_paths);
+  int fd = open_library_on_ld_library_path(name, file_offset);
   if (fd == -1) {
-    fd = open_library_on_path(name, kDefaultLdPaths);
+    fd = open_library_on_default_path(name, file_offset);
   }
   return fd;
 }
@@ -881,7 +1020,9 @@
   }
 }
 
-static soinfo* load_library(LoadTaskList& load_tasks, const char* name, int rtld_flags, const android_dlextinfo* extinfo) {
+static soinfo* load_library(LoadTaskList& load_tasks,
+                            const char* name, int rtld_flags,
+                            const android_dlextinfo* extinfo) {
   int fd = -1;
   off64_t file_offset = 0;
   ScopedFd file_guard(-1);
@@ -893,7 +1034,7 @@
     }
   } else {
     // Open the file.
-    fd = open_library(name);
+    fd = open_library(name, &file_offset);
     if (fd == -1) {
       DL_ERR("library \"%s\" not found", name);
       return nullptr;
@@ -917,20 +1058,24 @@
     return nullptr;
   }
   if (file_offset >= file_stat.st_size) {
-    DL_ERR("file offset for the library \"%s\" >= file size: %" PRId64 " >= %" PRId64, name, file_offset, file_stat.st_size);
+    DL_ERR("file offset for the library \"%s\" >= file size: %" PRId64 " >= %" PRId64,
+        name, file_offset, file_stat.st_size);
     return nullptr;
   }
 
   // Check for symlink and other situations where
-  // file can have different names.
-  for (soinfo* si = solist; si != nullptr; si = si->next) {
-    if (si->get_st_dev() != 0 &&
-        si->get_st_ino() != 0 &&
-        si->get_st_dev() == file_stat.st_dev &&
-        si->get_st_ino() == file_stat.st_ino &&
-        si->get_file_offset() == file_offset) {
-      TRACE("library \"%s\" is already loaded under different name/path \"%s\" - will return existing soinfo", name, si->name);
-      return si;
+  // file can have different names, unless ANDROID_DLEXT_FORCE_LOAD is set
+  if (extinfo == nullptr || (extinfo->flags & ANDROID_DLEXT_FORCE_LOAD) == 0) {
+    for (soinfo* si = solist; si != nullptr; si = si->next) {
+      if (si->get_st_dev() != 0 &&
+          si->get_st_ino() != 0 &&
+          si->get_st_dev() == file_stat.st_dev &&
+          si->get_st_ino() == file_stat.st_ino &&
+          si->get_file_offset() == file_offset) {
+        TRACE("library \"%s\" is already loaded under different name/path \"%s\" - "
+            "will return existing soinfo", name, si->get_realpath());
+        return si;
+      }
     }
   }
 
@@ -939,13 +1084,19 @@
     return nullptr;
   }
 
+  std::string realpath = name;
+  if (!realpath_fd(fd, &realpath)) {
+    PRINT("cannot resolve realpath for the library \"%s\": %s", name, strerror(errno));
+    realpath = name;
+  }
+
   // Read the ELF header and load the segments.
-  ElfReader elf_reader(name, fd, file_offset);
+  ElfReader elf_reader(realpath.c_str(), fd, file_offset);
   if (!elf_reader.Load(extinfo)) {
     return nullptr;
   }
 
-  soinfo* si = soinfo_alloc(SEARCH_NAME(name), &file_stat, file_offset, rtld_flags);
+  soinfo* si = soinfo_alloc(realpath.c_str(), &file_stat, file_offset, rtld_flags);
   if (si == nullptr) {
     return nullptr;
   }
@@ -967,24 +1118,29 @@
   return si;
 }
 
-static soinfo *find_loaded_library_by_name(const char* name) {
-  const char* search_name = SEARCH_NAME(name);
+static soinfo *find_loaded_library_by_soname(const char* name) {
+  // Ignore filename with path.
+  if (strchr(name, '/') != nullptr) {
+    return nullptr;
+  }
+
   for (soinfo* si = solist; si != nullptr; si = si->next) {
-    if (!strcmp(search_name, si->name)) {
+    const char* soname = si->get_soname();
+    if (soname != nullptr && (strcmp(name, soname) == 0)) {
       return si;
     }
   }
   return nullptr;
 }
 
-static soinfo* find_library_internal(LoadTaskList& load_tasks, const char* name, int rtld_flags, const android_dlextinfo* extinfo) {
-
-  soinfo* si = find_loaded_library_by_name(name);
+static soinfo* find_library_internal(LoadTaskList& load_tasks, const char* name,
+                                     int rtld_flags, const android_dlextinfo* extinfo) {
+  soinfo* si = find_loaded_library_by_soname(name);
 
   // Library might still be loaded, the accurate detection
   // of this fact is done by load_library.
   if (si == nullptr) {
-    TRACE("[ '%s' has not been found by name.  Trying harder...]", name);
+    TRACE("[ '%s' has not been found by soname.  Trying harder...]", name);
     si = load_library(load_tasks, name, rtld_flags, extinfo);
   }
 
@@ -1011,8 +1167,9 @@
   return global_group;
 }
 
-static bool find_libraries(soinfo* start_with, const char* const library_names[], size_t library_names_count, soinfo* soinfos[],
-    soinfo* ld_preloads[], size_t ld_preloads_count, int rtld_flags, const android_dlextinfo* extinfo) {
+static bool find_libraries(soinfo* start_with, const char* const library_names[],
+      size_t library_names_count, soinfo* soinfos[], std::vector<soinfo*>* ld_preloads,
+      size_t ld_preloads_count, int rtld_flags, const android_dlextinfo* extinfo) {
   // Step 0: prepare.
   LoadTaskList load_tasks;
   for (size_t i = 0; i < library_names_count; ++i) {
@@ -1051,7 +1208,8 @@
   });
 
   // Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
-  for (LoadTask::unique_ptr task(load_tasks.pop_front()); task.get() != nullptr; task.reset(load_tasks.pop_front())) {
+  for (LoadTask::unique_ptr task(load_tasks.pop_front());
+      task.get() != nullptr; task.reset(load_tasks.pop_front())) {
     soinfo* si = find_library_internal(load_tasks, task->get_name(), rtld_flags, extinfo);
     if (si == nullptr) {
       return false;
@@ -1075,7 +1233,7 @@
       // for this run because they are going to appear in the local
       // group in the correct order.
       si->set_dt_flags_1(si->get_dt_flags_1() | DF_1_GLOBAL);
-      ld_preloads[soinfos_count] = si;
+      ld_preloads->push_back(si);
     }
 
     if (soinfos_count < library_names_count) {
@@ -1143,7 +1301,7 @@
   }
 
   if (!root->can_unload()) {
-    TRACE("not unloading '%s' - the binary is flagged with NODELETE", root->name);
+    TRACE("not unloading '%s' - the binary is flagged with NODELETE", root->get_soname());
     return;
   }
 
@@ -1166,7 +1324,7 @@
       if (si->has_min_version(0)) {
         soinfo* child = nullptr;
         while ((child = si->get_children().pop_front()) != nullptr) {
-          TRACE("%s@%p needs to unload %s@%p", si->name, si, child->name, child);
+          TRACE("%s@%p needs to unload %s@%p", si->get_soname(), si, child->get_soname(), child);
           if (local_unload_list.contains(child)) {
             continue;
           } else if (child->is_linked() && child->get_local_group_root() != root) {
@@ -1176,17 +1334,20 @@
           }
         }
       } else {
-#ifdef __LP64__
-        __libc_fatal("soinfo for \"%s\"@%p has no version", si->name, si);
+#if !defined(__arm__)
+        __libc_fatal("soinfo for \"%s\"@%p has no version", si->get_soname(), si);
 #else
-        PRINT("warning: soinfo for \"%s\"@%p has no version", si->name, si);
+        PRINT("warning: soinfo for \"%s\"@%p has no version", si->get_soname(), si);
         for_each_dt_needed(si, [&] (const char* library_name) {
-          TRACE("deprecated (old format of soinfo): %s needs to unload %s", si->name, library_name);
+          TRACE("deprecated (old format of soinfo): %s needs to unload %s",
+              si->get_soname(), library_name);
+
           soinfo* needed = find_library(library_name, RTLD_NOLOAD, nullptr);
           if (needed != nullptr) {
             // Not found: for example if symlink was deleted between dlopen and dlclose
             // Since we cannot really handle errors at this point - print and continue.
-            PRINT("warning: couldn't find %s needed by %s on unload.", library_name, si->name);
+            PRINT("warning: couldn't find %s needed by %s on unload.",
+                library_name, si->get_soname());
             return;
           } else if (local_unload_list.contains(needed)) {
             // already visited
@@ -1216,7 +1377,7 @@
       soinfo_unload(si);
     }
   } else {
-    TRACE("not unloading '%s' group, decrementing ref_count to %zd", root->name, ref_count);
+    TRACE("not unloading '%s' group, decrementing ref_count to %zd", root->get_soname(), ref_count);
   }
 }
 
@@ -1230,8 +1391,8 @@
   // snprintf again.
   size_t required_len = strlen(kDefaultLdPaths[0]) + strlen(kDefaultLdPaths[1]) + 2;
   if (buffer_size < required_len) {
-    __libc_fatal("android_get_LD_LIBRARY_PATH failed, buffer too small: buffer len %zu, required len %zu",
-                 buffer_size, required_len);
+    __libc_fatal("android_get_LD_LIBRARY_PATH failed, buffer too small: "
+                 "buffer len %zu, required len %zu", buffer_size, required_len);
   }
   char* end = stpcpy(buffer, kDefaultLdPaths[0]);
   *end = ':';
@@ -1239,9 +1400,7 @@
 }
 
 void do_android_update_LD_LIBRARY_PATH(const char* ld_library_path) {
-  if (!get_AT_SECURE()) {
-    parse_LD_LIBRARY_PATH(ld_library_path);
-  }
+  parse_LD_LIBRARY_PATH(ld_library_path);
 }
 
 soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo) {
@@ -1256,7 +1415,8 @@
     }
     if ((extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD) == 0 &&
         (extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET) != 0) {
-      DL_ERR("invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without ANDROID_DLEXT_USE_LIBRARY_FD): 0x%" PRIx64, extinfo->flags);
+      DL_ERR("invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without "
+          "ANDROID_DLEXT_USE_LIBRARY_FD): 0x%" PRIx64, extinfo->flags);
       return nullptr;
     }
   }
@@ -1278,7 +1438,8 @@
   typedef ElfW(Addr) (*ifunc_resolver_t)(void);
   ifunc_resolver_t ifunc_resolver = reinterpret_cast<ifunc_resolver_t>(resolver_addr);
   ElfW(Addr) ifunc_addr = ifunc_resolver();
-  TRACE_TYPE(RELO, "Called ifunc_resolver@%p. The result is %p", ifunc_resolver, reinterpret_cast<void*>(ifunc_addr));
+  TRACE_TYPE(RELO, "Called ifunc_resolver@%p. The result is %p",
+      ifunc_resolver, reinterpret_cast<void*>(ifunc_addr));
 
   return ifunc_addr;
 }
@@ -1290,16 +1451,23 @@
 }
 #else
 static ElfW(Addr) get_addend(ElfW(Rel)* rel, ElfW(Addr) reloc_addr) {
-  if (ELFW(R_TYPE)(rel->r_info) == R_GENERIC_RELATIVE || ELFW(R_TYPE)(rel->r_info) == R_GENERIC_IRELATIVE) {
+  if (ELFW(R_TYPE)(rel->r_info) == R_GENERIC_RELATIVE ||
+      ELFW(R_TYPE)(rel->r_info) == R_GENERIC_IRELATIVE) {
     return *reinterpret_cast<ElfW(Addr)*>(reloc_addr);
   }
   return 0;
 }
 #endif
 
-template<typename ElfRelT>
-bool soinfo::relocate(ElfRelT* rel, unsigned count, const soinfo_list_t& global_group, const soinfo_list_t& local_group) {
-  for (size_t idx = 0; idx < count; ++idx, ++rel) {
+template<typename ElfRelIteratorT>
+bool soinfo::relocate(ElfRelIteratorT&& rel_iterator, const soinfo_list_t& global_group,
+                      const soinfo_list_t& local_group) {
+  for (size_t idx = 0; rel_iterator.has_next(); ++idx) {
+    const auto rel = rel_iterator.next();
+    if (rel == nullptr) {
+      return false;
+    }
+
     ElfW(Word) type = ELFW(R_TYPE)(rel->r_info);
     ElfW(Word) sym = ELFW(R_SYM)(rel->r_info);
 
@@ -1308,7 +1476,7 @@
     const char* sym_name = nullptr;
     ElfW(Addr) addend = get_addend(rel, reloc);
 
-    DEBUG("Processing '%s' relocation at index %zd", this->name, idx);
+    DEBUG("Processing '%s' relocation at index %zd", get_soname(), idx);
     if (type == R_GENERIC_NONE) {
       continue;
     }
@@ -1323,7 +1491,7 @@
         // We only allow an undefined symbol if this is a weak reference...
         s = &symtab_[sym];
         if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
-          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
+          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, get_soname());
           return false;
         }
 
@@ -1405,16 +1573,16 @@
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO RELATIVE %16p <- %16p\n",
                    reinterpret_cast<void*>(reloc),
-                   reinterpret_cast<void*>(base + addend));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = (base + addend);
+                   reinterpret_cast<void*>(load_bias + addend));
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = (load_bias + addend);
         break;
       case R_GENERIC_IRELATIVE:
         count_relocation(kRelocRelative);
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO IRELATIVE %16p <- %16p\n",
                     reinterpret_cast<void*>(reloc),
-                    reinterpret_cast<void*>(base + addend));
-        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(base + addend);
+                    reinterpret_cast<void*>(load_bias + addend));
+        *reinterpret_cast<ElfW(Addr)*>(reloc) = call_ifunc_resolver(load_bias + addend);
         break;
 
 #if defined(__aarch64__)
@@ -1430,15 +1598,18 @@
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO ABS32 %16llx <- %16llx %s\n",
                    reloc, (sym_addr + addend), sym_name);
-        if ((static_cast<ElfW(Addr)>(INT32_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend)) <= static_cast<ElfW(Addr)>(UINT32_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend)),
-                 static_cast<ElfW(Addr)>(INT32_MIN),
-                 static_cast<ElfW(Addr)>(UINT32_MAX));
-          return false;
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT32_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT32_MAX);
+          if ((min_value <= (reloc_value + (sym_addr + addend))) &&
+              ((reloc_value + (sym_addr + addend)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   (reloc_value + (sym_addr + addend)), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_ABS16:
@@ -1446,15 +1617,18 @@
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO ABS16 %16llx <- %16llx %s\n",
                    reloc, (sym_addr + addend), sym_name);
-        if ((static_cast<ElfW(Addr)>(INT16_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend)) <= static_cast<ElfW(Addr)>(UINT16_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + (sym_addr + addend)),
-                 static_cast<ElfW(Addr)>(INT16_MIN),
-                 static_cast<ElfW(Addr)>(UINT16_MAX));
-          return false;
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT16_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT16_MAX);
+          if ((min_value <= (reloc_value + (sym_addr + addend))) &&
+              ((reloc_value + (sym_addr + addend)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr + addend);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + (sym_addr + addend), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_PREL64:
@@ -1469,15 +1643,18 @@
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO REL32 %16llx <- %16llx - %16llx %s\n",
                    reloc, (sym_addr + addend), rel->r_offset, sym_name);
-        if ((static_cast<ElfW(Addr)>(INT32_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset)) <= static_cast<ElfW(Addr)>(UINT32_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset)),
-                 static_cast<ElfW(Addr)>(INT32_MIN),
-                 static_cast<ElfW(Addr)>(UINT32_MAX));
-          return false;
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT32_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT32_MAX);
+          if ((min_value <= (reloc_value + ((sym_addr + addend) - rel->r_offset))) &&
+              ((reloc_value + ((sym_addr + addend) - rel->r_offset)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + ((sym_addr + addend) - rel->r_offset), min_value, max_value);
+            return false;
+          }
         }
         break;
       case R_AARCH64_PREL16:
@@ -1485,15 +1662,18 @@
         MARK(rel->r_offset);
         TRACE_TYPE(RELO, "RELO REL16 %16llx <- %16llx - %16llx %s\n",
                    reloc, (sym_addr + addend), rel->r_offset, sym_name);
-        if ((static_cast<ElfW(Addr)>(INT16_MIN) <= (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset))) &&
-            ((*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset)) <= static_cast<ElfW(Addr)>(UINT16_MAX))) {
-          *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
-        } else {
-          DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
-                 (*reinterpret_cast<ElfW(Addr)*>(reloc) + ((sym_addr + addend) - rel->r_offset)),
-                 static_cast<ElfW(Addr)>(INT16_MIN),
-                 static_cast<ElfW(Addr)>(UINT16_MAX));
-          return false;
+        {
+          const ElfW(Addr) reloc_value = *reinterpret_cast<ElfW(Addr)*>(reloc);
+          const ElfW(Addr) min_value = static_cast<ElfW(Addr)>(INT16_MIN);
+          const ElfW(Addr) max_value = static_cast<ElfW(Addr)>(UINT16_MAX);
+          if ((min_value <= (reloc_value + ((sym_addr + addend) - rel->r_offset))) &&
+              ((reloc_value + ((sym_addr + addend) - rel->r_offset)) <= max_value)) {
+            *reinterpret_cast<ElfW(Addr)*>(reloc) += ((sym_addr + addend) - rel->r_offset);
+          } else {
+            DL_ERR("0x%016llx out of range 0x%016llx to 0x%016llx",
+                   reloc_value + ((sym_addr + addend) - rel->r_offset), min_value, max_value);
+            return false;
+          }
         }
         break;
 
@@ -1501,13 +1681,13 @@
         /*
          * ET_EXEC is not supported so this should not happen.
          *
-         * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
+         * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056b/IHI0056B_aaelf64.pdf
          *
-         * Section 4.7.1.10 "Dynamic relocations"
+         * Section 4.6.11 "Dynamic relocations"
          * R_AARCH64_COPY may only appear in executable objects where e_type is
          * set to ET_EXEC.
          */
-        DL_ERR("%s R_AARCH64_COPY relocations are not supported", name);
+        DL_ERR("%s R_AARCH64_COPY relocations are not supported", get_soname());
         return false;
       case R_AARCH64_TLS_TPREL64:
         TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n",
@@ -1560,11 +1740,11 @@
          *
          * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
          *
-         * Section 4.7.1.10 "Dynamic relocations"
+         * Section 4.6.1.10 "Dynamic relocations"
          * R_ARM_COPY may only appear in executable objects where e_type is
          * set to ET_EXEC.
          */
-        DL_ERR("%s R_ARM_COPY relocations are not supported", name);
+        DL_ERR("%s R_ARM_COPY relocations are not supported", get_soname());
         return false;
 #elif defined(__i386__)
       case R_386_32:
@@ -1590,12 +1770,13 @@
 }
 #endif  // !defined(__mips__)
 
-void soinfo::call_array(const char* array_name __unused, linker_function_t* functions, size_t count, bool reverse) {
+void soinfo::call_array(const char* array_name __unused, linker_function_t* functions,
+                        size_t count, bool reverse) {
   if (functions == nullptr) {
     return;
   }
 
-  TRACE("[ Calling %s (size %zd) @ %p for '%s' ]", array_name, count, functions, name);
+  TRACE("[ Calling %s (size %zd) @ %p for '%s' ]", array_name, count, functions, get_soname());
 
   int begin = reverse ? (count - 1) : 0;
   int end = reverse ? -1 : count;
@@ -1606,7 +1787,7 @@
     call_function("function", functions[i]);
   }
 
-  TRACE("[ Done calling %s for '%s' ]", array_name, name);
+  TRACE("[ Done calling %s for '%s' ]", array_name, get_soname());
 }
 
 void soinfo::call_function(const char* function_name __unused, linker_function_t function) {
@@ -1614,9 +1795,9 @@
     return;
   }
 
-  TRACE("[ Calling %s @ %p for '%s' ]", function_name, function, name);
+  TRACE("[ Calling %s @ %p for '%s' ]", function_name, function, get_soname());
   function();
-  TRACE("[ Done calling %s @ %p for '%s' ]", function_name, function, name);
+  TRACE("[ Done calling %s @ %p for '%s' ]", function_name, function, get_soname());
 }
 
 void soinfo::call_pre_init_constructors() {
@@ -1645,14 +1826,14 @@
   if (!is_main_executable() && preinit_array_ != nullptr) {
     // The GNU dynamic linker silently ignores these, but we warn the developer.
     PRINT("\"%s\": ignoring %zd-entry DT_PREINIT_ARRAY in shared library!",
-          name, preinit_array_count_);
+          get_soname(), preinit_array_count_);
   }
 
   get_children().for_each([] (soinfo* si) {
     si->call_constructors();
   });
 
-  TRACE("\"%s\": calling constructors", name);
+  TRACE("\"%s\": calling constructors", get_soname());
 
   // DT_INIT should be called before DT_INIT_ARRAY if both are present.
   call_function("DT_INIT", init_func_);
@@ -1663,7 +1844,7 @@
   if (!constructors_called) {
     return;
   }
-  TRACE("\"%s\": calling destructors", name);
+  TRACE("\"%s\": calling destructors", get_soname());
 
   // DT_FINI_ARRAY must be parsed in reverse order.
   call_array("DT_FINI_ARRAY", fini_array_, fini_array_count_, true);
@@ -1745,6 +1926,7 @@
 
   return 0;
 }
+
 void soinfo::set_dt_flags_1(uint32_t dt_flags_1) {
   if (has_min_version(1)) {
     if ((dt_flags_1 & DF_1_GLOBAL) != 0) {
@@ -1759,6 +1941,30 @@
   }
 }
 
+const char* soinfo::get_realpath() const {
+#if defined(__arm__)
+  if (has_min_version(2)) {
+    return realpath_.c_str();
+  } else {
+    return old_name_;
+  }
+#else
+  return realpath_.c_str();
+#endif
+}
+
+const char* soinfo::get_soname() const {
+#if defined(__arm__)
+  if (has_min_version(2)) {
+    return soname_;
+  } else {
+    return old_name_;
+  }
+#else
+  return soname_;
+#endif
+}
+
 // This is a return on get_children()/get_parents() if
 // 'this->flags' does not have FLAG_NEW_SOINFO set.
 static soinfo::soinfo_list_t g_empty_list;
@@ -1789,7 +1995,8 @@
 
 const char* soinfo::get_string(ElfW(Word) index) const {
   if (has_min_version(1) && (index >= strtab_size_)) {
-    __libc_fatal("%s: strtab out of bounds error; STRSZ=%zd, name=%d", name, strtab_size_, index);
+    __libc_fatal("%s: strtab out of bounds error; STRSZ=%zd, name=%d",
+        get_soname(), strtab_size_, index);
   }
 
   return strtab_ + index;
@@ -1904,13 +2111,13 @@
   /* We can't log anything until the linker is relocated */
   bool relocating_linker = (flags_ & FLAG_LINKER) != 0;
   if (!relocating_linker) {
-    INFO("[ linking %s ]", name);
+    INFO("[ linking %s ]", get_soname());
     DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags_);
   }
 
   if (dynamic == nullptr) {
     if (!relocating_linker) {
-      DL_ERR("missing PT_DYNAMIC in \"%s\"", name);
+      DL_ERR("missing PT_DYNAMIC in \"%s\"", get_soname());
     }
     return false;
   } else {
@@ -1925,22 +2132,20 @@
 #endif
 
   // Extract useful information from dynamic section.
+  // Note that: "Except for the DT_NULL element at the end of the array,
+  // and the relative order of DT_NEEDED elements, entries may appear in any order."
+  //
+  // source: http://www.sco.com/developers/gabi/1998-04-29/ch5.dynamic.html
   uint32_t needed_count = 0;
   for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
     DEBUG("d = %p, d[0](tag) = %p d[1](val) = %p",
           d, reinterpret_cast<void*>(d->d_tag), reinterpret_cast<void*>(d->d_un.d_val));
     switch (d->d_tag) {
       case DT_SONAME:
-        // TODO: glibc dynamic linker uses this name for
-        // initial library lookup; consider doing the same here.
+        // this is parsed after we have strtab initialized (see below).
         break;
 
       case DT_HASH:
-        if (nbucket_ != 0) {
-          // in case of --hash-style=both, we prefer gnu
-          break;
-        }
-
         nbucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
         nchain_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
         bucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8);
@@ -1948,23 +2153,20 @@
         break;
 
       case DT_GNU_HASH:
-        if (nbucket_ != 0) {
-          // in case of --hash-style=both, we prefer gnu
-          nchain_ = 0;
-        }
-
-        nbucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
+        gnu_nbucket_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
         // skip symndx
         gnu_maskwords_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[2];
         gnu_shift2_ = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[3];
 
         gnu_bloom_filter_ = reinterpret_cast<ElfW(Addr)*>(load_bias + d->d_un.d_ptr + 16);
-        bucket_ = reinterpret_cast<uint32_t*>(gnu_bloom_filter_ + gnu_maskwords_);
+        gnu_bucket_ = reinterpret_cast<uint32_t*>(gnu_bloom_filter_ + gnu_maskwords_);
         // amend chain for symndx = header[1]
-        chain_ = bucket_ + nbucket_ - reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
+        gnu_chain_ = gnu_bucket_ + gnu_nbucket_ -
+            reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
 
         if (!powerof2(gnu_maskwords_)) {
-          DL_ERR("invalid maskwords for gnu_hash = 0x%x, in \"%s\" expecting power to two", gnu_maskwords_, name);
+          DL_ERR("invalid maskwords for gnu_hash = 0x%x, in \"%s\" expecting power to two",
+              gnu_maskwords_, get_realpath());
           return false;
         }
         --gnu_maskwords_;
@@ -1986,7 +2188,8 @@
 
       case DT_SYMENT:
         if (d->d_un.d_val != sizeof(ElfW(Sym))) {
-          DL_ERR("invalid DT_SYMENT: %zd in \"%s\"", static_cast<size_t>(d->d_un.d_val), name);
+          DL_ERR("invalid DT_SYMENT: %zd in \"%s\"",
+              static_cast<size_t>(d->d_un.d_val), get_realpath());
           return false;
         }
         break;
@@ -1994,12 +2197,12 @@
       case DT_PLTREL:
 #if defined(USE_RELA)
         if (d->d_un.d_val != DT_RELA) {
-          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_RELA", name);
+          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_RELA", get_realpath());
           return false;
         }
 #else
         if (d->d_un.d_val != DT_REL) {
-          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_REL", name);
+          DL_ERR("unsupported DT_PLTREL in \"%s\"; expected DT_REL", get_realpath());
           return false;
         }
 #endif
@@ -2051,6 +2254,22 @@
         rela_count_ = d->d_un.d_val / sizeof(ElfW(Rela));
         break;
 
+      case DT_ANDROID_RELA:
+        android_relocs_ = reinterpret_cast<uint8_t*>(load_bias + d->d_un.d_ptr);
+        break;
+
+      case DT_ANDROID_RELASZ:
+        android_relocs_size_ = d->d_un.d_val;
+        break;
+
+      case DT_ANDROID_REL:
+        DL_ERR("unsupported DT_ANDROID_REL in \"%s\"", get_realpath());
+        return false;
+
+      case DT_ANDROID_RELSZ:
+        DL_ERR("unsupported DT_ANDROID_RELSZ in \"%s\"", get_realpath());
+        return false;
+
       case DT_RELAENT:
         if (d->d_un.d_val != sizeof(ElfW(Rela))) {
           DL_ERR("invalid DT_RELAENT: %zd", static_cast<size_t>(d->d_un.d_val));
@@ -2063,12 +2282,13 @@
         break;
 
       case DT_REL:
-        DL_ERR("unsupported DT_REL in \"%s\"", name);
+        DL_ERR("unsupported DT_REL in \"%s\"", get_realpath());
         return false;
 
       case DT_RELSZ:
-        DL_ERR("unsupported DT_RELSZ in \"%s\"", name);
+        DL_ERR("unsupported DT_RELSZ in \"%s\"", get_realpath());
         return false;
+
 #else
       case DT_REL:
         rel_ = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
@@ -2085,6 +2305,22 @@
         }
         break;
 
+      case DT_ANDROID_REL:
+        android_relocs_ = reinterpret_cast<uint8_t*>(load_bias + d->d_un.d_ptr);
+        break;
+
+      case DT_ANDROID_RELSZ:
+        android_relocs_size_ = d->d_un.d_val;
+        break;
+
+      case DT_ANDROID_RELA:
+        DL_ERR("unsupported DT_ANDROID_RELA in \"%s\"", get_realpath());
+        return false;
+
+      case DT_ANDROID_RELASZ:
+        DL_ERR("unsupported DT_ANDROID_RELASZ in \"%s\"", get_realpath());
+        return false;
+
       // "Indicates that all RELATIVE relocations have been concatenated together,
       // and specifies the RELATIVE relocation count."
       //
@@ -2092,23 +2328,29 @@
       // Not currently used by bionic linker - ignored.
       case DT_RELCOUNT:
         break;
+
       case DT_RELA:
-        DL_ERR("unsupported DT_RELA in \"%s\"", name);
+        DL_ERR("unsupported DT_RELA in \"%s\"", get_realpath());
         return false;
+
+      case DT_RELASZ:
+        DL_ERR("unsupported DT_RELASZ in \"%s\"", get_realpath());
+        return false;
+
 #endif
       case DT_INIT:
         init_func_ = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_INIT) found at %p", name, init_func_);
+        DEBUG("%s constructors (DT_INIT) found at %p", get_realpath(), init_func_);
         break;
 
       case DT_FINI:
         fini_func_ = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s destructors (DT_FINI) found at %p", name, fini_func_);
+        DEBUG("%s destructors (DT_FINI) found at %p", get_realpath(), fini_func_);
         break;
 
       case DT_INIT_ARRAY:
         init_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", name, init_array_);
+        DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", get_realpath(), init_array_);
         break;
 
       case DT_INIT_ARRAYSZ:
@@ -2117,7 +2359,7 @@
 
       case DT_FINI_ARRAY:
         fini_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", name, fini_array_);
+        DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", get_realpath(), fini_array_);
         break;
 
       case DT_FINI_ARRAYSZ:
@@ -2126,7 +2368,7 @@
 
       case DT_PREINIT_ARRAY:
         preinit_array_ = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
-        DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", name, preinit_array_);
+        DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", get_realpath(), preinit_array_);
         break;
 
       case DT_PREINIT_ARRAYSZ:
@@ -2135,7 +2377,7 @@
 
       case DT_TEXTREL:
 #if defined(__LP64__)
-        DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", name);
+        DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", get_realpath());
         return false;
 #else
         has_text_relocations = true;
@@ -2153,7 +2395,7 @@
       case DT_FLAGS:
         if (d->d_un.d_val & DF_TEXTREL) {
 #if defined(__LP64__)
-          DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", name);
+          DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", get_realpath());
           return false;
 #else
           has_text_relocations = true;
@@ -2182,7 +2424,8 @@
       case DT_MIPS_RLD_MAP2:
         // Set the DT_MIPS_RLD_MAP2 entry to the address of _r_debug for GDB.
         {
-          r_debug** dp = reinterpret_cast<r_debug**>(reinterpret_cast<ElfW(Addr)>(d) + d->d_un.d_val);
+          r_debug** dp = reinterpret_cast<r_debug**>(
+              reinterpret_cast<ElfW(Addr)>(d) + d->d_un.d_val);
           *dp = &_r_debug;
         }
         break;
@@ -2219,13 +2462,24 @@
 
       default:
         if (!relocating_linker) {
-          DL_WARN("%s: unused DT entry: type %p arg %p", name,
+          DL_WARN("%s: unused DT entry: type %p arg %p", get_realpath(),
               reinterpret_cast<void*>(d->d_tag), reinterpret_cast<void*>(d->d_un.d_val));
         }
         break;
     }
   }
 
+  // second pass - parse entries relying on strtab
+  for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
+    if (d->d_tag == DT_SONAME) {
+      soname_ = get_string(d->d_un.d_val);
+#if defined(__arm__)
+      strlcpy(old_name_, soname_, sizeof(old_name_));
+#endif
+      break;
+    }
+  }
+
   DEBUG("si->base = %p, si->strtab = %p, si->symtab = %p",
         reinterpret_cast<void*>(base), strtab_, symtab_);
 
@@ -2234,22 +2488,24 @@
     DL_ERR("linker cannot have DT_NEEDED dependencies on other libraries");
     return false;
   }
-  if (nbucket_ == 0) {
-    DL_ERR("empty/missing DT_HASH/DT_GNU_HASH in \"%s\" (new hash type from the future?)", name);
+  if (nbucket_ == 0 && gnu_nbucket_ == 0) {
+    DL_ERR("empty/missing DT_HASH/DT_GNU_HASH in \"%s\" "
+        "(new hash type from the future?)", get_soname());
     return false;
   }
   if (strtab_ == 0) {
-    DL_ERR("empty/missing DT_STRTAB in \"%s\"", name);
+    DL_ERR("empty/missing DT_STRTAB in \"%s\"", get_soname());
     return false;
   }
   if (symtab_ == 0) {
-    DL_ERR("empty/missing DT_SYMTAB in \"%s\"", name);
+    DL_ERR("empty/missing DT_SYMTAB in \"%s\"", get_soname());
     return false;
   }
   return true;
 }
 
-bool soinfo::link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group, const android_dlextinfo* extinfo) {
+bool soinfo::link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group,
+                        const android_dlextinfo* extinfo) {
 
   local_group_root_ = local_group.front();
   if (local_group_root_ == nullptr) {
@@ -2261,38 +2517,72 @@
     // Make segments writable to allow text relocations to work properly. We will later call
     // phdr_table_protect_segments() after all of them are applied and all constructors are run.
     DL_WARN("%s has text relocations. This is wasting memory and prevents "
-            "security hardening. Please fix.", name);
+            "security hardening. Please fix.", get_soname());
     if (phdr_table_unprotect_segments(phdr, phnum, load_bias) < 0) {
       DL_ERR("can't unprotect loadable segments for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
 #endif
 
+  if (android_relocs_ != nullptr) {
+    // check signature
+    if (android_relocs_size_ > 3 &&
+        android_relocs_[0] == 'A' &&
+        android_relocs_[1] == 'P' &&
+        (android_relocs_[2] == 'U' || android_relocs_[2] == 'S') &&
+        android_relocs_[3] == '2') {
+      DEBUG("[ android relocating %s ]", get_soname());
+
+      bool relocated = false;
+      const uint8_t* packed_relocs = android_relocs_ + 4;
+      const size_t packed_relocs_size = android_relocs_size_ - 4;
+
+      if (android_relocs_[2] == 'U') {
+        relocated = relocate(
+            packed_reloc_iterator<leb128_decoder>(
+              leb128_decoder(packed_relocs, packed_relocs_size)),
+            global_group, local_group);
+      } else { // android_relocs_[2] == 'S'
+        relocated = relocate(
+            packed_reloc_iterator<sleb128_decoder>(
+              sleb128_decoder(packed_relocs, packed_relocs_size)),
+            global_group, local_group);
+      }
+
+      if (!relocated) {
+        return false;
+      }
+    } else {
+      DL_ERR("bad android relocation header.");
+      return false;
+    }
+  }
+
 #if defined(USE_RELA)
   if (rela_ != nullptr) {
-    DEBUG("[ relocating %s ]", name);
-    if (!relocate(rela_, rela_count_, global_group, local_group)) {
+    DEBUG("[ relocating %s ]", get_soname());
+    if (!relocate(plain_reloc_iterator(rela_, rela_count_), global_group, local_group)) {
       return false;
     }
   }
   if (plt_rela_ != nullptr) {
-    DEBUG("[ relocating %s plt ]", name);
-    if (!relocate(plt_rela_, plt_rela_count_, global_group, local_group)) {
+    DEBUG("[ relocating %s plt ]", get_soname());
+    if (!relocate(plain_reloc_iterator(plt_rela_, plt_rela_count_), global_group, local_group)) {
       return false;
     }
   }
 #else
   if (rel_ != nullptr) {
-    DEBUG("[ relocating %s ]", name);
-    if (!relocate(rel_, rel_count_, global_group, local_group)) {
+    DEBUG("[ relocating %s ]", get_soname());
+    if (!relocate(plain_reloc_iterator(rel_, rel_count_), global_group, local_group)) {
       return false;
     }
   }
   if (plt_rel_ != nullptr) {
-    DEBUG("[ relocating %s plt ]", name);
-    if (!relocate(plt_rel_, plt_rel_count_, global_group, local_group)) {
+    DEBUG("[ relocating %s plt ]", get_soname());
+    if (!relocate(plain_reloc_iterator(plt_rel_, plt_rel_count_), global_group, local_group)) {
       return false;
     }
   }
@@ -2304,14 +2594,14 @@
   }
 #endif
 
-  DEBUG("[ finished linking %s ]", name);
+  DEBUG("[ finished linking %s ]", get_soname());
 
 #if !defined(__LP64__)
   if (has_text_relocations) {
     // All relocations are done, we can protect our segments back to read-only.
     if (phdr_table_protect_segments(phdr, phnum, load_bias) < 0) {
       DL_ERR("can't protect segments for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
@@ -2320,7 +2610,7 @@
   /* We can also turn on GNU RELRO protection */
   if (phdr_table_protect_gnu_relro(phdr, phnum, load_bias) < 0) {
     DL_ERR("can't enable GNU RELRO protection for \"%s\": %s",
-           name, strerror(errno));
+           get_soname(), strerror(errno));
     return false;
   }
 
@@ -2329,14 +2619,14 @@
     if (phdr_table_serialize_gnu_relro(phdr, phnum, load_bias,
                                        extinfo->relro_fd) < 0) {
       DL_ERR("failed serializing GNU RELRO section for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   } else if (extinfo && (extinfo->flags & ANDROID_DLEXT_USE_RELRO)) {
     if (phdr_table_map_gnu_relro(phdr, phnum, load_bias,
                                  extinfo->relro_fd) < 0) {
       DL_ERR("failed mapping GNU RELRO section for \"%s\": %s",
-             name, strerror(errno));
+             get_soname(), strerror(errno));
       return false;
     }
   }
@@ -2378,7 +2668,12 @@
 #else
 #define LINKER_PATH "/system/bin/linker"
 #endif
-static soinfo linker_soinfo_for_gdb(LINKER_PATH, nullptr, 0, 0);
+
+// This is done to avoid calling c-tor prematurely
+// because soinfo c-tor needs memory allocator
+// which might be initialized after global variables.
+static uint8_t linker_soinfo_for_gdb_buf[sizeof(soinfo)] __attribute__((aligned(8)));
+static soinfo* linker_soinfo_for_gdb = nullptr;
 
 /* gdb expects the linker to be in the debug shared object list.
  * Without this, gdb has trouble locating the linker's ".text"
@@ -2388,7 +2683,9 @@
  * be on the soinfo list.
  */
 static void init_linker_info_for_gdb(ElfW(Addr) linker_base) {
-  linker_soinfo_for_gdb.base = linker_base;
+  linker_soinfo_for_gdb = new (linker_soinfo_for_gdb_buf) soinfo(LINKER_PATH, nullptr, 0, 0);
+
+  linker_soinfo_for_gdb->base = linker_base;
 
   /*
    * Set the dynamic field in the link map otherwise gdb will complain with
@@ -2399,8 +2696,8 @@
   ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_base);
   ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_base + elf_hdr->e_phoff);
   phdr_table_get_dynamic_section(phdr, elf_hdr->e_phnum, linker_base,
-                                 &linker_soinfo_for_gdb.dynamic, nullptr);
-  insert_soinfo_into_debug_map(&linker_soinfo_for_gdb);
+                                 &linker_soinfo_for_gdb->dynamic, nullptr);
+  insert_soinfo_into_debug_map(linker_soinfo_for_gdb);
 }
 
 /*
@@ -2512,8 +2809,9 @@
   StringLinkedList needed_library_name_list;
   size_t needed_libraries_count = 0;
   size_t ld_preloads_count = 0;
-  while (g_ld_preload_names[ld_preloads_count] != nullptr) {
-    needed_library_name_list.push_back(g_ld_preload_names[ld_preloads_count++]);
+
+  for (const auto& ld_preload_name : g_ld_preload_names) {
+    needed_library_name_list.push_back(ld_preload_name.c_str());
     ++needed_libraries_count;
   }
 
@@ -2527,7 +2825,9 @@
   memset(needed_library_names, 0, sizeof(needed_library_names));
   needed_library_name_list.copy_to_array(needed_library_names, needed_libraries_count);
 
-  if (needed_libraries_count > 0 && !find_libraries(si, needed_library_names, needed_libraries_count, nullptr, g_ld_preloads, ld_preloads_count, RTLD_GLOBAL, nullptr)) {
+  if (needed_libraries_count > 0 &&
+      !find_libraries(si, needed_library_names, needed_libraries_count, nullptr,
+          &g_ld_preloads, ld_preloads_count, RTLD_GLOBAL, nullptr)) {
     __libc_format_fd(2, "CANNOT LINK EXECUTABLE: %s\n", linker_get_error_buffer());
     exit(EXIT_FAILURE);
   } else if (needed_libraries_count == 0) {
@@ -2595,7 +2895,7 @@
   fflush(stdout);
 #endif
 
-  TRACE("[ Ready to execute '%s' @ %p ]", si->name, reinterpret_cast<void*>(si->entry));
+  TRACE("[ Ready to execute '%s' @ %p ]", si->get_soname(), reinterpret_cast<void*>(si->entry));
   return si->entry;
 }
 
@@ -2641,7 +2941,7 @@
   ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_addr);
   ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_addr + elf_hdr->e_phoff);
 
-  soinfo linker_so("[dynamic linker]", nullptr, 0, 0);
+  soinfo linker_so(nullptr, nullptr, 0, 0);
 
   // If the linker is not acting as PT_INTERP entry_point is equal to
   // _start. Which means that the linker is running as an executable and
diff --git a/linker/linker.h b/linker/linker.h
index 2afbaf6..7482581 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -39,6 +39,8 @@
 #include "private/libc_logging.h"
 #include "linked_list.h"
 
+#include <string>
+
 #define DL_ERR(fmt, x...) \
     do { \
       __libc_format_buffer(linker_get_error_buffer(), linker_get_error_buffer_size(), fmt, ##x); \
@@ -92,9 +94,11 @@
 
 #define SUPPORTED_DT_FLAGS_1 (DF_1_NOW | DF_1_GLOBAL | DF_1_NODELETE)
 
-#define SOINFO_VERSION 1
+#define SOINFO_VERSION 2
 
+#if defined(__arm__)
 #define SOINFO_NAME_LEN 128
+#endif
 
 typedef void (*linker_function_t)();
 
@@ -141,21 +145,24 @@
 struct soinfo {
  public:
   typedef LinkedList<soinfo, SoinfoListAllocator> soinfo_list_t;
+#if defined(__arm__)
+ private:
+  char old_name_[SOINFO_NAME_LEN];
+#endif
  public:
-  char name[SOINFO_NAME_LEN];
   const ElfW(Phdr)* phdr;
   size_t phnum;
   ElfW(Addr) entry;
   ElfW(Addr) base;
   size_t size;
 
-#ifndef __LP64__
+#if defined(__arm__)
   uint32_t unused1;  // DO NOT USE, maintained for compatibility.
 #endif
 
   ElfW(Dyn)* dynamic;
 
-#ifndef __LP64__
+#if defined(__arm__)
   uint32_t unused2; // DO NOT USE, maintained for compatibility
   uint32_t unused3; // DO NOT USE, maintained for compatibility
 #endif
@@ -238,7 +245,8 @@
   void call_destructors();
   void call_pre_init_constructors();
   bool prelink_image();
-  bool link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group, const android_dlextinfo* extinfo);
+  bool link_image(const soinfo_list_t& global_group, const soinfo_list_t& local_group,
+                  const android_dlextinfo* extinfo);
 
   void add_child(soinfo* child);
   void remove_all_links();
@@ -262,8 +270,12 @@
   bool can_unload() const;
   bool is_gnu_hash() const;
 
-  bool inline has_min_version(uint32_t min_version) const {
+  bool inline has_min_version(uint32_t min_version __unused) const {
+#if defined(__arm__)
     return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
+#else
+    return true;
+#endif
   }
 
   bool is_linked() const;
@@ -278,6 +290,9 @@
 
   soinfo* get_local_group_root() const;
 
+  const char* get_soname() const;
+  const char* get_realpath() const;
+
  private:
   ElfW(Sym)* elf_lookup(SymbolName& symbol_name);
   ElfW(Sym)* elf_addr_lookup(const void* addr);
@@ -286,8 +301,9 @@
 
   void call_array(const char* array_name, linker_function_t* functions, size_t count, bool reverse);
   void call_function(const char* function_name, linker_function_t function);
-  template<typename ElfRelT>
-  bool relocate(ElfRelT* rel, unsigned count, const soinfo_list_t& global_group, const soinfo_list_t& local_group);
+  template<typename ElfRelIteratorT>
+  bool relocate(ElfRelIteratorT&& rel_iterator, const soinfo_list_t& global_group,
+                const soinfo_list_t& local_group);
 
  private:
   // This part of the structure is only available
@@ -309,12 +325,22 @@
   size_t strtab_size_;
 
   // version >= 2
+
+  size_t gnu_nbucket_;
+  uint32_t* gnu_bucket_;
+  uint32_t* gnu_chain_;
   uint32_t gnu_maskwords_;
   uint32_t gnu_shift2_;
   ElfW(Addr)* gnu_bloom_filter_;
 
   soinfo* local_group_root_;
 
+  uint8_t* android_relocs_;
+  size_t android_relocs_size_;
+
+  const char* soname_;
+  std::string realpath_;
+
   friend soinfo* get_libdl_info();
 };
 
@@ -338,7 +364,7 @@
 soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo);
 void do_dlclose(soinfo* si);
 
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start);
+ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* caller, void* handle);
 soinfo* find_containing_library(const void* addr);
 
 ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name);
diff --git a/linker/linker_allocator.cpp b/linker/linker_allocator.cpp
index ac11b97..1b16cf1 100644
--- a/linker/linker_allocator.cpp
+++ b/linker/linker_allocator.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 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.
@@ -15,120 +15,332 @@
  */
 
 #include "linker_allocator.h"
-#include <inttypes.h>
-#include <string.h>
+#include "linker.h"
+
+#include <algorithm>
+#include <vector>
+
+#include <stdlib.h>
 #include <sys/mman.h>
 #include <unistd.h>
 
 #include "private/bionic_prctl.h"
 
-struct LinkerAllocatorPage {
-  LinkerAllocatorPage* next;
-  uint8_t bytes[PAGE_SIZE-sizeof(LinkerAllocatorPage*)];
-};
+//
+// LinkerMemeoryAllocator is general purpose allocator
+// designed to provide the same functionality as the malloc/free/realloc
+// libc functions.
+//
+// On alloc:
+// If size is >= 1k allocator proxies malloc call directly to mmap
+// If size < 1k allocator uses SmallObjectAllocator for the size
+// rounded up to the nearest power of two.
+//
+// On free:
+//
+// For a pointer allocated using proxy-to-mmap allocator unmaps
+// the memory.
+//
+// For a pointer allocated using SmallObjectAllocator it adds
+// the block to free_blocks_list_. If the number of free pages reaches 2,
+// SmallObjectAllocator munmaps one of the pages keeping the other one
+// in reserve.
 
-struct FreeBlockInfo {
-  void* next_block;
-  size_t num_free_blocks;
-};
+static const char kSignature[4] = {'L', 'M', 'A', 1};
 
-LinkerBlockAllocator::LinkerBlockAllocator(size_t block_size)
-  : block_size_(block_size < sizeof(FreeBlockInfo) ? sizeof(FreeBlockInfo) : block_size),
-    page_list_(nullptr),
-    free_block_list_(nullptr)
-{}
+static const size_t kSmallObjectMaxSize = 1 << kSmallObjectMaxSizeLog2;
 
-void* LinkerBlockAllocator::alloc() {
-  if (free_block_list_ == nullptr) {
-    create_new_page();
-  }
+// This type is used for large allocations (with size >1k)
+static const uint32_t kLargeObject = 111;
 
-  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(free_block_list_);
-  if (block_info->num_free_blocks > 1) {
-    FreeBlockInfo* next_block_info = reinterpret_cast<FreeBlockInfo*>(
-      reinterpret_cast<char*>(free_block_list_) + block_size_);
-    next_block_info->next_block = block_info->next_block;
-    next_block_info->num_free_blocks = block_info->num_free_blocks - 1;
-    free_block_list_ = next_block_info;
-  } else {
-    free_block_list_ = block_info->next_block;
-  }
-
-  memset(block_info, 0, block_size_);
-
-  return block_info;
+bool operator<(const small_object_page_record& one, const small_object_page_record& two) {
+  return one.page_addr < two.page_addr;
 }
 
-void LinkerBlockAllocator::free(void* block) {
-  if (block == nullptr) {
+static inline uint16_t log2(size_t number) {
+  uint16_t result = 0;
+  number--;
+
+  while (number != 0) {
+    result++;
+    number >>= 1;
+  }
+
+  return result;
+}
+
+LinkerSmallObjectAllocator::LinkerSmallObjectAllocator()
+    : type_(0), name_(nullptr), block_size_(0), free_pages_cnt_(0), free_blocks_list_(nullptr) {}
+
+void* LinkerSmallObjectAllocator::alloc() {
+  if (free_blocks_list_ == nullptr) {
+    alloc_page();
+  }
+
+  small_object_block_record* block_record = free_blocks_list_;
+  if (block_record->free_blocks_cnt > 1) {
+    small_object_block_record* next_free = reinterpret_cast<small_object_block_record*>(
+        reinterpret_cast<uint8_t*>(block_record) + block_size_);
+    next_free->next = block_record->next;
+    next_free->free_blocks_cnt = block_record->free_blocks_cnt - 1;
+    free_blocks_list_ = next_free;
+  } else {
+    free_blocks_list_ = block_record->next;
+  }
+
+  // bookkeeping...
+  auto page_record = find_page_record(block_record);
+
+  if (page_record->allocated_blocks_cnt == 0) {
+    free_pages_cnt_--;
+  }
+
+  page_record->free_blocks_cnt--;
+  page_record->allocated_blocks_cnt++;
+
+  memset(block_record, 0, block_size_);
+
+  return block_record;
+}
+
+void LinkerSmallObjectAllocator::free_page(linker_vector_t::iterator page_record) {
+  void* page_start = reinterpret_cast<void*>(page_record->page_addr);
+  void* page_end = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(page_start) + PAGE_SIZE);
+
+  while (free_blocks_list_ != nullptr &&
+      free_blocks_list_ > page_start &&
+      free_blocks_list_ < page_end) {
+    free_blocks_list_ = free_blocks_list_->next;
+  }
+
+  small_object_block_record* current = free_blocks_list_;
+
+  while (current != nullptr) {
+    while (current->next > page_start && current->next < page_end) {
+      current->next = current->next->next;
+    }
+
+    current = current->next;
+  }
+
+  munmap(page_start, PAGE_SIZE);
+  page_records_.erase(page_record);
+  free_pages_cnt_--;
+}
+
+void LinkerSmallObjectAllocator::free(void* ptr) {
+  auto page_record = find_page_record(ptr);
+
+  ssize_t offset = reinterpret_cast<uintptr_t>(ptr) - sizeof(page_info);
+
+  if (offset % block_size_ != 0) {
+    __libc_fatal("invalid pointer: %p (block_size=%zd)", ptr, block_size_);
+  }
+
+  memset(ptr, 0, block_size_);
+  small_object_block_record* block_record = reinterpret_cast<small_object_block_record*>(ptr);
+
+  block_record->next = free_blocks_list_;
+  block_record->free_blocks_cnt = 1;
+
+  free_blocks_list_ = block_record;
+
+  page_record->free_blocks_cnt++;
+  page_record->allocated_blocks_cnt--;
+
+  if (page_record->allocated_blocks_cnt == 0) {
+    if (free_pages_cnt_++ > 1) {
+      // if we already have a free page - unmap this one.
+      free_page(page_record);
+    }
+  }
+}
+
+void LinkerSmallObjectAllocator::init(uint32_t type, size_t block_size, const char* name) {
+  type_ = type;
+  block_size_ = block_size;
+  name_ = name;
+}
+
+linker_vector_t::iterator LinkerSmallObjectAllocator::find_page_record(void* ptr) {
+  void* addr = reinterpret_cast<void*>(PAGE_START(reinterpret_cast<uintptr_t>(ptr)));
+  small_object_page_record boundary;
+  boundary.page_addr = addr;
+  linker_vector_t::iterator it = std::lower_bound(
+      page_records_.begin(), page_records_.end(), boundary);
+
+  if (it == page_records_.end() || it->page_addr != addr) {
+    // not found...
+    __libc_fatal("page record for %p was not found (block_size=%zd)", ptr, block_size_);
+  }
+
+  return it;
+}
+
+void LinkerSmallObjectAllocator::create_page_record(void* page_addr, size_t free_blocks_cnt) {
+  small_object_page_record record;
+  record.page_addr = page_addr;
+  record.free_blocks_cnt = free_blocks_cnt;
+  record.allocated_blocks_cnt = 0;
+
+  linker_vector_t::iterator it = std::lower_bound(
+      page_records_.begin(), page_records_.end(), record);
+  page_records_.insert(it, record);
+}
+
+void LinkerSmallObjectAllocator::alloc_page() {
+  void* map_ptr = mmap(nullptr, PAGE_SIZE,
+      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+  if (map_ptr == MAP_FAILED) {
+    __libc_fatal("mmap failed");
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, PAGE_SIZE, name_);
+
+  memset(map_ptr, 0, PAGE_SIZE);
+
+  page_info* info = reinterpret_cast<page_info*>(map_ptr);
+  memcpy(info->signature, kSignature, sizeof(kSignature));
+  info->type = type_;
+  info->allocator_addr = this;
+
+  size_t free_blocks_cnt = (PAGE_SIZE - sizeof(page_info))/block_size_;
+
+  create_page_record(map_ptr, free_blocks_cnt);
+
+  small_object_block_record* first_block = reinterpret_cast<small_object_block_record*>(info + 1);
+
+  first_block->next = free_blocks_list_;
+  first_block->free_blocks_cnt = free_blocks_cnt;
+
+  free_blocks_list_ = first_block;
+}
+
+
+LinkerMemoryAllocator::LinkerMemoryAllocator() {
+  static const char* allocator_names[kSmallObjectAllocatorsCount] = {
+    "linker_alloc_16", // 2^4
+    "linker_alloc_32", // 2^5
+    "linker_alloc_64", // and so on...
+    "linker_alloc_128",
+    "linker_alloc_256",
+    "linker_alloc_512",
+    "linker_alloc_1024", // 2^10
+  };
+
+  for (size_t i = 0; i < kSmallObjectAllocatorsCount; ++i) {
+    uint32_t type = i + kSmallObjectMinSizeLog2;
+    allocators_[i].init(type, 1 << type, allocator_names[i]);
+  }
+}
+
+void* LinkerMemoryAllocator::alloc_mmap(size_t size) {
+  size_t allocated_size = PAGE_END(size + sizeof(page_info));
+  void* map_ptr = mmap(nullptr, allocated_size,
+      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+
+  if (map_ptr == MAP_FAILED) {
+    __libc_fatal("mmap failed");
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, allocated_size, "linker_alloc_lob");
+
+  memset(map_ptr, 0, allocated_size);
+
+  page_info* info = reinterpret_cast<page_info*>(map_ptr);
+  memcpy(info->signature, kSignature, sizeof(kSignature));
+  info->type = kLargeObject;
+  info->allocated_size = allocated_size;
+
+  return info + 1;
+}
+
+void* LinkerMemoryAllocator::alloc(size_t size) {
+  // treat alloc(0) as alloc(1)
+  if (size == 0) {
+    size = 1;
+  }
+
+  if (size > kSmallObjectMaxSize) {
+    return alloc_mmap(size);
+  }
+
+  uint16_t log2_size = log2(size);
+
+  if (log2_size < kSmallObjectMinSizeLog2) {
+    log2_size = kSmallObjectMinSizeLog2;
+  }
+
+  return get_small_object_allocator(log2_size)->alloc();
+}
+
+page_info* LinkerMemoryAllocator::get_page_info(void* ptr) {
+  page_info* info = reinterpret_cast<page_info*>(PAGE_START(reinterpret_cast<size_t>(ptr)));
+  if (memcmp(info->signature, kSignature, sizeof(kSignature)) != 0) {
+    __libc_fatal("invalid pointer %p (page signature mismatch)", ptr);
+  }
+
+  return info;
+}
+
+void* LinkerMemoryAllocator::realloc(void* ptr, size_t size) {
+  if (ptr == nullptr) {
+    return alloc(size);
+  }
+
+  if (size == 0) {
+    free(ptr);
+    return nullptr;
+  }
+
+  page_info* info = get_page_info(ptr);
+
+  size_t old_size = 0;
+
+  if (info->type == kLargeObject) {
+    old_size = info->allocated_size - sizeof(page_info);
+  } else {
+    LinkerSmallObjectAllocator* allocator = get_small_object_allocator(info->type);
+    if (allocator != info->allocator_addr) {
+      __libc_fatal("invalid pointer %p (page signature mismatch)", ptr);
+    }
+
+    old_size = allocator->get_block_size();
+  }
+
+  if (old_size < size) {
+    void *result = alloc(size);
+    memcpy(result, ptr, old_size);
+    free(ptr);
+    return result;
+  }
+
+  return ptr;
+}
+
+void LinkerMemoryAllocator::free(void* ptr) {
+  if (ptr == nullptr) {
     return;
   }
 
-  LinkerAllocatorPage* page = find_page(block);
+  page_info* info = get_page_info(ptr);
 
-  if (page == nullptr) {
-    abort();
-  }
-
-  ssize_t offset = reinterpret_cast<uint8_t*>(block) - page->bytes;
-
-  if (offset % block_size_ != 0) {
-    abort();
-  }
-
-  memset(block, 0, block_size_);
-
-  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(block);
-
-  block_info->next_block = free_block_list_;
-  block_info->num_free_blocks = 1;
-
-  free_block_list_ = block_info;
-}
-
-void LinkerBlockAllocator::protect_all(int prot) {
-  for (LinkerAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
-    if (mprotect(page, PAGE_SIZE, prot) == -1) {
-      abort();
-    }
-  }
-}
-
-void LinkerBlockAllocator::create_new_page() {
-  LinkerAllocatorPage* page = reinterpret_cast<LinkerAllocatorPage*>(mmap(nullptr, PAGE_SIZE,
-      PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
-  if (page == MAP_FAILED) {
-    abort(); // oom
-  }
-
-  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, page, PAGE_SIZE, "linker_alloc");
-
-  memset(page, 0, PAGE_SIZE);
-
-  FreeBlockInfo* first_block = reinterpret_cast<FreeBlockInfo*>(page->bytes);
-  first_block->next_block = free_block_list_;
-  first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerAllocatorPage*))/block_size_;
-
-  free_block_list_ = first_block;
-
-  page->next = page_list_;
-  page_list_ = page;
-}
-
-LinkerAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
-  if (block == nullptr) {
-    abort();
-  }
-
-  LinkerAllocatorPage* page = page_list_;
-  while (page != nullptr) {
-    const uint8_t* page_ptr = reinterpret_cast<const uint8_t*>(page);
-    if (block >= (page_ptr + sizeof(page->next)) && block < (page_ptr + PAGE_SIZE)) {
-      return page;
+  if (info->type == kLargeObject) {
+    munmap(info, info->allocated_size);
+  } else {
+    LinkerSmallObjectAllocator* allocator = get_small_object_allocator(info->type);
+    if (allocator != info->allocator_addr) {
+      __libc_fatal("invalid pointer %p (invalid allocator address for the page)", ptr);
     }
 
-    page = page->next;
+    allocator->free(ptr);
+  }
+}
+
+LinkerSmallObjectAllocator* LinkerMemoryAllocator::get_small_object_allocator(uint32_t type) {
+  if (type < kSmallObjectMinSizeLog2 || type > kSmallObjectMaxSizeLog2) {
+    __libc_fatal("invalid type: %u", type);
   }
 
-  abort();
+  return &allocators_[type - kSmallObjectMinSizeLog2];
 }
diff --git a/linker/linker_allocator.h b/linker/linker_allocator.h
index 5d3563f..2adad56 100644
--- a/linker/linker_allocator.h
+++ b/linker/linker_allocator.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 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.
@@ -18,53 +18,126 @@
 #define __LINKER_ALLOCATOR_H
 
 #include <stdlib.h>
-#include <limits.h>
-#include "private/bionic_macros.h"
+#include <sys/cdefs.h>
+#include <sys/mman.h>
+#include <stddef.h>
+#include <unistd.h>
 
-struct LinkerAllocatorPage;
+#include <vector>
 
-/*
- * This class is a non-template version of the LinkerAllocator
- * It keeps code inside .cpp file by keeping the interface
- * template-free.
- *
- * Please use LinkerAllocator<type> where possible (everywhere).
- */
-class LinkerBlockAllocator {
+#include "private/bionic_prctl.h"
+#include "private/libc_logging.h"
+
+const uint32_t kSmallObjectMaxSizeLog2 = 10;
+const uint32_t kSmallObjectMinSizeLog2 = 4;
+const uint32_t kSmallObjectAllocatorsCount = kSmallObjectMaxSizeLog2 - kSmallObjectMinSizeLog2 + 1;
+
+class LinkerSmallObjectAllocator;
+
+// This structure is placed at the beginning of each addressable page
+// and has all information we need to find the corresponding memory allocator.
+struct page_info {
+  char signature[4];
+  uint32_t type;
+  union {
+    // we use allocated_size for large objects allocator
+    size_t allocated_size;
+    // and allocator_addr for small ones.
+    LinkerSmallObjectAllocator* allocator_addr;
+  };
+};
+
+struct small_object_page_record {
+  void* page_addr;
+  size_t free_blocks_cnt;
+  size_t allocated_blocks_cnt;
+};
+
+// for lower_bound...
+bool operator<(const small_object_page_record& one, const small_object_page_record& two);
+
+struct small_object_block_record {
+  small_object_block_record* next;
+  size_t free_blocks_cnt;
+};
+
+// This is implementation for std::vector allocator
+template <typename T>
+class linker_vector_allocator {
  public:
-  explicit LinkerBlockAllocator(size_t block_size);
+  typedef T value_type;
+  typedef T* pointer;
+  typedef const T* const_pointer;
+  typedef T& reference;
+  typedef const T& const_reference;
+  typedef size_t size_type;
+  typedef ptrdiff_t difference_type;
 
+  T* allocate(size_t n, const T* hint = nullptr) {
+    size_t size = n * sizeof(T);
+    void* ptr = mmap(const_cast<T*>(hint), size,
+        PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
+    if (ptr == MAP_FAILED) {
+      // Spec says we need to throw std::bad_alloc here but because our
+      // code does not support exception handling anyways - we are going to abort.
+      __libc_fatal("mmap failed");
+    }
+
+    prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ptr, size, "linker_alloc_vector");
+
+    return reinterpret_cast<T*>(ptr);
+  }
+
+  void deallocate(T* ptr, size_t n) {
+    munmap(ptr, n * sizeof(T));
+  }
+};
+
+typedef
+    std::vector<small_object_page_record, linker_vector_allocator<small_object_page_record>>
+    linker_vector_t;
+
+
+class LinkerSmallObjectAllocator {
+ public:
+  LinkerSmallObjectAllocator();
+  void init(uint32_t type, size_t block_size, const char* name);
   void* alloc();
-  void free(void* block);
-  void protect_all(int prot);
+  void free(void* ptr);
 
+  size_t get_block_size() const { return block_size_; }
  private:
-  void create_new_page();
-  LinkerAllocatorPage* find_page(void* block);
+  void alloc_page();
+  void free_page(linker_vector_t::iterator page_record);
+  linker_vector_t::iterator find_page_record(void* ptr);
+  void create_page_record(void* page_addr, size_t free_blocks_cnt);
 
+  uint32_t type_;
+  const char* name_;
   size_t block_size_;
-  LinkerAllocatorPage* page_list_;
-  void* free_block_list_;
 
-  DISALLOW_COPY_AND_ASSIGN(LinkerBlockAllocator);
+  size_t free_pages_cnt_;
+  small_object_block_record* free_blocks_list_;
+
+  // sorted vector of page records
+  linker_vector_t page_records_;
 };
 
-/*
- * We can't use malloc(3) in the dynamic linker.
- *
- * A simple allocator for the dynamic linker. An allocator allocates instances
- * of a single fixed-size type. Allocations are backed by page-sized private
- * anonymous mmaps.
- */
-template<typename T>
-class LinkerAllocator {
+class LinkerMemoryAllocator {
  public:
-  LinkerAllocator() : block_allocator_(sizeof(T)) {}
-  T* alloc() { return reinterpret_cast<T*>(block_allocator_.alloc()); }
-  void free(T* t) { block_allocator_.free(t); }
-  void protect_all(int prot) { block_allocator_.protect_all(prot); }
+  LinkerMemoryAllocator();
+  void* alloc(size_t size);
+
+  // Note that this implementation of realloc never shrinks allocation
+  void* realloc(void* ptr, size_t size);
+  void free(void* ptr);
  private:
-  LinkerBlockAllocator block_allocator_;
-  DISALLOW_COPY_AND_ASSIGN(LinkerAllocator);
+  void* alloc_mmap(size_t size);
+  page_info* get_page_info(void* ptr);
+  LinkerSmallObjectAllocator* get_small_object_allocator(uint32_t type);
+
+  LinkerSmallObjectAllocator allocators_[kSmallObjectAllocatorsCount];
 };
-#endif // __LINKER_ALLOCATOR_H
+
+
+#endif  /* __LINKER_ALLOCATOR_H */
diff --git a/linker/linker_block_allocator.cpp b/linker/linker_block_allocator.cpp
new file mode 100644
index 0000000..fc9a75b
--- /dev/null
+++ b/linker/linker_block_allocator.cpp
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+
+#include "linker_block_allocator.h"
+#include <inttypes.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+#include "private/bionic_prctl.h"
+
+struct LinkerBlockAllocatorPage {
+  LinkerBlockAllocatorPage* next;
+  uint8_t bytes[PAGE_SIZE-sizeof(LinkerBlockAllocatorPage*)];
+};
+
+struct FreeBlockInfo {
+  void* next_block;
+  size_t num_free_blocks;
+};
+
+LinkerBlockAllocator::LinkerBlockAllocator(size_t block_size)
+  : block_size_(block_size < sizeof(FreeBlockInfo) ? sizeof(FreeBlockInfo) : block_size),
+    page_list_(nullptr),
+    free_block_list_(nullptr)
+{}
+
+void* LinkerBlockAllocator::alloc() {
+  if (free_block_list_ == nullptr) {
+    create_new_page();
+  }
+
+  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(free_block_list_);
+  if (block_info->num_free_blocks > 1) {
+    FreeBlockInfo* next_block_info = reinterpret_cast<FreeBlockInfo*>(
+      reinterpret_cast<char*>(free_block_list_) + block_size_);
+    next_block_info->next_block = block_info->next_block;
+    next_block_info->num_free_blocks = block_info->num_free_blocks - 1;
+    free_block_list_ = next_block_info;
+  } else {
+    free_block_list_ = block_info->next_block;
+  }
+
+  memset(block_info, 0, block_size_);
+
+  return block_info;
+}
+
+void LinkerBlockAllocator::free(void* block) {
+  if (block == nullptr) {
+    return;
+  }
+
+  LinkerBlockAllocatorPage* page = find_page(block);
+
+  if (page == nullptr) {
+    abort();
+  }
+
+  ssize_t offset = reinterpret_cast<uint8_t*>(block) - page->bytes;
+
+  if (offset % block_size_ != 0) {
+    abort();
+  }
+
+  memset(block, 0, block_size_);
+
+  FreeBlockInfo* block_info = reinterpret_cast<FreeBlockInfo*>(block);
+
+  block_info->next_block = free_block_list_;
+  block_info->num_free_blocks = 1;
+
+  free_block_list_ = block_info;
+}
+
+void LinkerBlockAllocator::protect_all(int prot) {
+  for (LinkerBlockAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
+    if (mprotect(page, PAGE_SIZE, prot) == -1) {
+      abort();
+    }
+  }
+}
+
+void LinkerBlockAllocator::create_new_page() {
+  LinkerBlockAllocatorPage* page = reinterpret_cast<LinkerBlockAllocatorPage*>(
+      mmap(nullptr, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
+
+  if (page == MAP_FAILED) {
+    abort(); // oom
+  }
+
+  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, page, PAGE_SIZE, "linker_alloc");
+
+  memset(page, 0, PAGE_SIZE);
+
+  FreeBlockInfo* first_block = reinterpret_cast<FreeBlockInfo*>(page->bytes);
+  first_block->next_block = free_block_list_;
+  first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerBlockAllocatorPage*))/block_size_;
+
+  free_block_list_ = first_block;
+
+  page->next = page_list_;
+  page_list_ = page;
+}
+
+LinkerBlockAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
+  if (block == nullptr) {
+    abort();
+  }
+
+  LinkerBlockAllocatorPage* page = page_list_;
+  while (page != nullptr) {
+    const uint8_t* page_ptr = reinterpret_cast<const uint8_t*>(page);
+    if (block >= (page_ptr + sizeof(page->next)) && block < (page_ptr + PAGE_SIZE)) {
+      return page;
+    }
+
+    page = page->next;
+  }
+
+  abort();
+}
diff --git a/linker/linker_block_allocator.h b/linker/linker_block_allocator.h
new file mode 100644
index 0000000..4b9b995
--- /dev/null
+++ b/linker/linker_block_allocator.h
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+#ifndef __LINKER_BLOCK_ALLOCATOR_H
+#define __LINKER_BLOCK_ALLOCATOR_H
+
+#include <stdlib.h>
+#include <limits.h>
+#include "private/bionic_macros.h"
+
+struct LinkerBlockAllocatorPage;
+
+/*
+ * This class is a non-template version of the LinkerTypeAllocator
+ * It keeps code inside .cpp file by keeping the interface
+ * template-free.
+ *
+ * Please use LinkerTypeAllocator<type> where possible (everywhere).
+ */
+class LinkerBlockAllocator {
+ public:
+  explicit LinkerBlockAllocator(size_t block_size);
+
+  void* alloc();
+  void free(void* block);
+  void protect_all(int prot);
+
+ private:
+  void create_new_page();
+  LinkerBlockAllocatorPage* find_page(void* block);
+
+  size_t block_size_;
+  LinkerBlockAllocatorPage* page_list_;
+  void* free_block_list_;
+
+  DISALLOW_COPY_AND_ASSIGN(LinkerBlockAllocator);
+};
+
+/*
+ * A simple allocator for the dynamic linker. An allocator allocates instances
+ * of a single fixed-size type. Allocations are backed by page-sized private
+ * anonymous mmaps.
+ *
+ * The differences between this allocator and LinkerMemoryAllocator are:
+ * 1. This allocator manages space more efficiently. LinkerMemoryAllocator
+ *    operates in power-of-two sized blocks up to 1k, when this implementation
+ *    splits the page to aligned size of structure; For example for structures
+ *    with size 513 this allocator will use 516 (520 for lp64) bytes of data
+ *    where generalized implementation is going to use 1024 sized blocks.
+ *
+ * 2. This allocator does not munmap allocated memory, where LinkerMemoryAllocator does.
+ *
+ * 3. This allocator provides mprotect services to the user, where LinkerMemoryAllocator
+ *    always treats it's memory as READ|WRITE.
+ */
+template<typename T>
+class LinkerTypeAllocator {
+ public:
+  LinkerTypeAllocator() : block_allocator_(sizeof(T)) {}
+  T* alloc() { return reinterpret_cast<T*>(block_allocator_.alloc()); }
+  void free(T* t) { block_allocator_.free(t); }
+  void protect_all(int prot) { block_allocator_.protect_all(prot); }
+ private:
+  LinkerBlockAllocator block_allocator_;
+  DISALLOW_COPY_AND_ASSIGN(LinkerTypeAllocator);
+};
+
+#endif // __LINKER_BLOCK_ALLOCATOR_H
diff --git a/linker/linker_environ.cpp b/linker/linker_environ.cpp
index 7272f4e..9a0f009 100644
--- a/linker/linker_environ.cpp
+++ b/linker/linker_environ.cpp
@@ -115,6 +115,7 @@
       "GCONV_PATH",
       "GETCONF_DIR",
       "HOSTALIASES",
+      "JE_MALLOC_CONF",
       "LD_AOUT_LIBRARY_PATH",
       "LD_AOUT_PRELOAD",
       "LD_AUDIT",
@@ -130,6 +131,7 @@
       "LOCALDOMAIN",
       "LOCPATH",
       "MALLOC_CHECK_",
+      "MALLOC_CONF",
       "MALLOC_TRACE",
       "NIS_PATH",
       "NLSPATH",
diff --git a/linker/linker_leb128.h b/linker/linker_leb128.h
new file mode 100644
index 0000000..d5c6488
--- /dev/null
+++ b/linker/linker_leb128.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#ifndef _LINKER_LEB128_H
+#define _LINKER_LEB128_H
+
+#include <stdint.h>
+
+// Helper classes for decoding LEB128, used in packed relocation data.
+// http://en.wikipedia.org/wiki/LEB128
+
+class leb128_decoder {
+ public:
+  leb128_decoder(const uint8_t* buffer, size_t count)
+      : current_(buffer), end_(buffer + count) { }
+
+  size_t pop_front() {
+    size_t value = 0;
+
+    size_t shift = 0;
+    uint8_t byte;
+
+    do {
+      if (current_ >= end_) {
+        __libc_fatal("leb128_decoder ran out of bounds");
+      }
+      byte = *current_++;
+      value |= static_cast<size_t>(byte & 127) << shift;
+      shift += 7;
+    } while (byte & 128);
+
+    return value;
+  }
+
+ private:
+  const uint8_t* current_;
+  const uint8_t* const end_;
+};
+
+class sleb128_decoder {
+ public:
+  sleb128_decoder(const uint8_t* buffer, size_t count)
+      : current_(buffer), end_(buffer+count) { }
+
+  size_t pop_front() {
+    size_t value = 0;
+    static const size_t size = CHAR_BIT * sizeof(value);
+
+    size_t shift = 0;
+    uint8_t byte;
+
+    do {
+      if (current_ >= end_) {
+        __libc_fatal("leb128_decoder ran out of bounds");
+      }
+      byte = *current_++;
+      value |= (static_cast<size_t>(byte & 127) << shift);
+      shift += 7;
+    } while (byte & 128);
+
+    if (shift < size && (byte & 64)) {
+      value |= -(static_cast<size_t>(1) << shift);
+    }
+
+    return value;
+  }
+
+ private:
+  const uint8_t* current_;
+  const uint8_t* const end_;
+};
+
+#endif // __LINKER_LEB128_H
+
diff --git a/linker/linker_memory.cpp b/linker/linker_memory.cpp
new file mode 100644
index 0000000..1892d02
--- /dev/null
+++ b/linker/linker_memory.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#include "linker_allocator.h"
+
+#include <stdlib.h>
+
+static LinkerMemoryAllocator g_linker_allocator;
+
+void* malloc(size_t byte_count) {
+  return g_linker_allocator.alloc(byte_count);
+}
+
+void* calloc(size_t item_count, size_t item_size) {
+  return g_linker_allocator.alloc(item_count*item_size);
+}
+
+void* realloc(void* p, size_t byte_count) {
+  return g_linker_allocator.realloc(p, byte_count);
+}
+
+void free(void* ptr) {
+  g_linker_allocator.free(ptr);
+}
+
diff --git a/linker/linker_mips.cpp b/linker/linker_mips.cpp
index 7fbde3d..14f6a1b 100644
--- a/linker/linker_mips.cpp
+++ b/linker/linker_mips.cpp
@@ -29,10 +29,34 @@
 #include "linker.h"
 #include "linker_debug.h"
 #include "linker_relocs.h"
+#include "linker_reloc_iterators.h"
+#include "linker_leb128.h"
 
-template<>
-bool soinfo::relocate(ElfW(Rel)* rel, unsigned count, const soinfo_list_t& global_group, const soinfo_list_t& local_group) {
-  for (size_t idx = 0; idx < count; ++idx, ++rel) {
+template bool soinfo::relocate<plain_reloc_iterator>(plain_reloc_iterator&& rel_iterator,
+                                                     const soinfo_list_t& global_group,
+                                                     const soinfo_list_t& local_group);
+
+template bool soinfo::relocate<packed_reloc_iterator<sleb128_decoder>>(
+    packed_reloc_iterator<sleb128_decoder>&& rel_iterator,
+    const soinfo_list_t& global_group,
+    const soinfo_list_t& local_group);
+
+template bool soinfo::relocate<packed_reloc_iterator<leb128_decoder>>(
+    packed_reloc_iterator<leb128_decoder>&& rel_iterator,
+    const soinfo_list_t& global_group,
+    const soinfo_list_t& local_group);
+
+template <typename ElfRelIteratorT>
+bool soinfo::relocate(ElfRelIteratorT&& rel_iterator,
+                      const soinfo_list_t& global_group,
+                      const soinfo_list_t& local_group) {
+  for (size_t idx = 0; rel_iterator.has_next(); ++idx) {
+    const auto rel = rel_iterator.next();
+
+    if (rel == nullptr) {
+      return false;
+    }
+
     ElfW(Word) type = ELFW(R_TYPE)(rel->r_info);
     ElfW(Word) sym = ELFW(R_SYM)(rel->r_info);
 
@@ -40,7 +64,7 @@
     ElfW(Addr) sym_addr = 0;
     const char* sym_name = nullptr;
 
-    DEBUG("Processing '%s' relocation at index %zd", this->name, idx);
+    DEBUG("Processing '%s' relocation at index %zd", get_soname(), idx);
     if (type == R_GENERIC_NONE) {
       continue;
     }
@@ -53,7 +77,7 @@
       s = soinfo_do_lookup(this, sym_name, &lsi, global_group,local_group);
       if (s == nullptr) {
         // mips does not support relocation with weak-undefined symbols
-        DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
+        DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, get_soname());
         return false;
       } else {
         // We got a definition.
@@ -93,7 +117,8 @@
   return true;
 }
 
-bool soinfo::mips_relocate_got(const soinfo_list_t& global_group, const soinfo_list_t& local_group) {
+bool soinfo::mips_relocate_got(const soinfo_list_t& global_group,
+                               const soinfo_list_t& local_group) {
   ElfW(Addr)** got = plt_got_;
   if (got == nullptr) {
     return true;
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index 91a2fb8..638c9d6 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -240,7 +240,8 @@
 
   phdr_size_ = page_max - page_min;
 
-  void* mmap_result = mmap64(nullptr, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, file_offset_ + page_min);
+  void* mmap_result =
+      mmap64(nullptr, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, file_offset_ + page_min);
   if (mmap_result == MAP_FAILED) {
     DL_ERR("\"%s\" phdr mmap failed: %s", name_, strerror(errno));
     return false;
@@ -332,7 +333,7 @@
       return false;
     }
     int mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS;
-    start = mmap(addr, load_size_, PROT_NONE, mmap_flags, -1, 0);
+    start = mmap(nullptr, load_size_, PROT_NONE, mmap_flags, -1, 0);
     if (start == MAP_FAILED) {
       DL_ERR("couldn't reserve %zd bytes of address space for \"%s\"", load_size_, name_);
       return false;
@@ -428,9 +429,15 @@
     ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias;
     ElfW(Addr) seg_page_end   = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias;
 
+    int prot = PFLAGS_TO_PROT(phdr->p_flags);
+    if ((extra_prot_flags & PROT_WRITE) != 0) {
+      // make sure we're never simultaneously writable / executable
+      prot &= ~PROT_EXEC;
+    }
+
     int ret = mprotect(reinterpret_cast<void*>(seg_page_start),
                        seg_page_end - seg_page_start,
-                       PFLAGS_TO_PROT(phdr->p_flags) | extra_prot_flags);
+                       prot | extra_prot_flags);
     if (ret < 0) {
       return -1;
     }
@@ -449,7 +456,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table,
+                                size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_load_prot(phdr_table, phdr_count, load_bias, 0);
 }
 
@@ -469,7 +477,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table,
+                                  size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_load_prot(phdr_table, phdr_count, load_bias, PROT_WRITE);
 }
 
@@ -531,7 +540,8 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias) {
+int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table,
+                                 size_t phdr_count, ElfW(Addr) load_bias) {
   return _phdr_table_set_gnu_relro_prot(phdr_table, phdr_count, load_bias, PROT_READ);
 }
 
@@ -547,7 +557,9 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
+int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table,
+                                   size_t phdr_count,
+                                   ElfW(Addr) load_bias,
                                    int fd) {
   const ElfW(Phdr)* phdr = phdr_table;
   const ElfW(Phdr)* phdr_limit = phdr + phdr_count;
@@ -592,7 +604,9 @@
  * Return:
  *   0 on error, -1 on failure (error code in errno).
  */
-int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
+int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table,
+                             size_t phdr_count,
+                             ElfW(Addr) load_bias,
                              int fd) {
   // Map the file at a temporary location so we can compare its contents.
   struct stat file_stat;
@@ -725,11 +739,12 @@
                                     ElfW(Addr) load_bias, ElfW(Dyn)** dynamic,
                                     ElfW(Word)* dynamic_flags) {
   *dynamic = nullptr;
-  for (const ElfW(Phdr)* phdr = phdr_table, *phdr_limit = phdr + phdr_count; phdr < phdr_limit; phdr++) {
-    if (phdr->p_type == PT_DYNAMIC) {
-      *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr->p_vaddr);
+  for (size_t i = 0; i<phdr_count; ++i) {
+    const ElfW(Phdr)& phdr = phdr_table[i];
+    if (phdr.p_type == PT_DYNAMIC) {
+      *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr.p_vaddr);
       if (dynamic_flags) {
-        *dynamic_flags = phdr->p_flags;
+        *dynamic_flags = phdr.p_flags;
       }
       return;
     }
diff --git a/linker/linker_phdr.h b/linker/linker_phdr.h
index 6b917b4..50f2117 100644
--- a/linker/linker_phdr.h
+++ b/linker/linker_phdr.h
@@ -84,17 +84,20 @@
 size_t phdr_table_get_load_size(const ElfW(Phdr)* phdr_table, size_t phdr_count,
                                 ElfW(Addr)* min_vaddr = nullptr, ElfW(Addr)* max_vaddr = nullptr);
 
-int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table,
+                                size_t phdr_count, ElfW(Addr) load_bias);
 
-int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                  ElfW(Addr) load_bias);
 
-int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
+int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                 ElfW(Addr) load_bias);
 
-int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
-                                   int fd);
+int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                                   ElfW(Addr) load_bias, int fd);
 
-int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
-                             int fd);
+int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, size_t phdr_count,
+                             ElfW(Addr) load_bias, int fd);
 
 #if defined(__arm__)
 int phdr_table_get_arm_exidx(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias,
diff --git a/linker/linker_reloc_iterators.h b/linker/linker_reloc_iterators.h
new file mode 100644
index 0000000..f28c0e0
--- /dev/null
+++ b/linker/linker_reloc_iterators.h
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#ifndef __LINKER_RELOC_ITERATORS_H
+#define __LINKER_RELOC_ITERATORS_H
+
+#include "linker.h"
+
+#include <string.h>
+
+const size_t RELOCATION_GROUPED_BY_INFO_FLAG = 1;
+const size_t RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG = 2;
+const size_t RELOCATION_GROUPED_BY_ADDEND_FLAG = 4;
+const size_t RELOCATION_GROUP_HAS_ADDEND_FLAG = 8;
+
+class plain_reloc_iterator {
+#if defined(USE_RELA)
+  typedef ElfW(Rela) rel_t;
+#else
+  typedef ElfW(Rel) rel_t;
+#endif
+ public:
+  plain_reloc_iterator(rel_t* rel_array, size_t count)
+      : begin_(rel_array), end_(begin_ + count), current_(begin_) {}
+
+  bool has_next() {
+    return current_ < end_;
+  }
+
+  rel_t* next() {
+    return current_++;
+  }
+ private:
+  rel_t* const begin_;
+  rel_t* const end_;
+  rel_t* current_;
+
+  DISALLOW_COPY_AND_ASSIGN(plain_reloc_iterator);
+};
+
+template <typename decoder_t>
+class packed_reloc_iterator {
+#if defined(USE_RELA)
+  typedef ElfW(Rela) rel_t;
+#else
+  typedef ElfW(Rel) rel_t;
+#endif
+ public:
+  explicit packed_reloc_iterator(decoder_t&& decoder)
+      : decoder_(decoder) {
+    // initialize fields
+    memset(&reloc_, 0, sizeof(reloc_));
+    relocation_count_ = decoder_.pop_front();
+    reloc_.r_offset = decoder_.pop_front();
+    relocation_index_ = 0;
+    relocation_group_index_ = 0;
+    group_size_ = 0;
+  }
+
+  bool has_next() const {
+    return relocation_index_ < relocation_count_;
+  }
+
+  rel_t* next() {
+    if (relocation_group_index_ == group_size_) {
+      if (!read_group_fields()) {
+        // Iterator is inconsistent state; it should not be called again
+        // but in case it is let's make sure has_next() returns false.
+        relocation_index_ = relocation_count_ = 0;
+        return nullptr;
+      }
+    }
+
+    if (is_relocation_grouped_by_offset_delta()) {
+      reloc_.r_offset += group_r_offset_delta_;
+    } else {
+      reloc_.r_offset += decoder_.pop_front();
+    }
+
+    if (!is_relocation_grouped_by_info()) {
+      reloc_.r_info = decoder_.pop_front();
+    }
+
+#if defined(USE_RELA)
+    if (is_relocation_group_has_addend() &&
+        !is_relocation_grouped_by_addend()) {
+      reloc_.r_addend += decoder_.pop_front();
+    }
+#endif
+
+    relocation_index_++;
+    relocation_group_index_++;
+
+    return &reloc_;
+  }
+ private:
+  bool read_group_fields() {
+    group_size_ = decoder_.pop_front();
+    group_flags_ = decoder_.pop_front();
+
+    if (is_relocation_grouped_by_offset_delta()) {
+      group_r_offset_delta_ = decoder_.pop_front();
+    }
+
+    if (is_relocation_grouped_by_info()) {
+      reloc_.r_info = decoder_.pop_front();
+    }
+
+    if (is_relocation_group_has_addend() &&
+        is_relocation_grouped_by_addend()) {
+#if !defined(USE_RELA)
+      // This platform does not support rela, and yet we have it encoded in android_rel section.
+      DL_ERR("unexpected r_addend in android.rel section");
+      return false;
+#else
+      reloc_.r_addend += decoder_.pop_front();
+    } else if (!is_relocation_group_has_addend()) {
+      reloc_.r_addend = 0;
+#endif
+    }
+
+    relocation_group_index_ = 0;
+    return true;
+  }
+
+  bool is_relocation_grouped_by_info() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_INFO_FLAG) != 0;
+  }
+
+  bool is_relocation_grouped_by_offset_delta() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG) != 0;
+  }
+
+  bool is_relocation_grouped_by_addend() {
+    return (group_flags_ & RELOCATION_GROUPED_BY_ADDEND_FLAG) != 0;
+  }
+
+  bool is_relocation_group_has_addend() {
+    return (group_flags_ & RELOCATION_GROUP_HAS_ADDEND_FLAG) != 0;
+  }
+
+  decoder_t decoder_;
+  size_t relocation_count_;
+  size_t group_size_;
+  size_t group_flags_;
+  size_t group_r_offset_delta_;
+  size_t relocation_index_;
+  size_t relocation_group_index_;
+  rel_t reloc_;
+};
+
+#endif  // __LINKER_RELOC_ITERATORS_H
diff --git a/linker/tests/Android.mk b/linker/tests/Android.mk
index aa9491e..35992c5 100644
--- a/linker/tests/Android.mk
+++ b/linker/tests/Android.mk
@@ -28,7 +28,12 @@
 
 LOCAL_SRC_FILES := \
   linked_list_test.cpp \
-  linker_allocator_test.cpp \
+  linker_block_allocator_test.cpp \
+  ../linker_block_allocator.cpp \
+  linker_memory_allocator_test.cpp \
   ../linker_allocator.cpp
 
+# for __libc_fatal
+LOCAL_SRC_FILES += ../../libc/bionic/libc_logging.cpp
+
 include $(BUILD_NATIVE_TEST)
diff --git a/linker/tests/linker_allocator_test.cpp b/linker/tests/linker_block_allocator_test.cpp
similarity index 92%
rename from linker/tests/linker_allocator_test.cpp
rename to linker/tests/linker_block_allocator_test.cpp
index 9292a05..3ef0f36 100644
--- a/linker/tests/linker_allocator_test.cpp
+++ b/linker/tests/linker_block_allocator_test.cpp
@@ -20,7 +20,7 @@
 
 #include <gtest/gtest.h>
 
-#include "../linker_allocator.h"
+#include "../linker_block_allocator.h"
 
 #include <unistd.h>
 
@@ -49,7 +49,7 @@
 };
 
 TEST(linker_allocator, test_nominal) {
-  LinkerAllocator<test_struct_nominal> allocator;
+  LinkerTypeAllocator<test_struct_nominal> allocator;
 
   test_struct_nominal* ptr1 = allocator.alloc();
   ASSERT_TRUE(ptr1 != nullptr);
@@ -65,7 +65,7 @@
 }
 
 TEST(linker_allocator, test_small) {
-  LinkerAllocator<test_struct_small> allocator;
+  LinkerTypeAllocator<test_struct_small> allocator;
 
   char* ptr1 = reinterpret_cast<char*>(allocator.alloc());
   char* ptr2 = reinterpret_cast<char*>(allocator.alloc());
@@ -76,7 +76,7 @@
 }
 
 TEST(linker_allocator, test_larger) {
-  LinkerAllocator<test_struct_larger> allocator;
+  LinkerTypeAllocator<test_struct_larger> allocator;
 
   test_struct_larger* ptr1 = allocator.alloc();
   test_struct_larger* ptr2 = allocator.alloc();
@@ -99,7 +99,7 @@
 }
 
 static void protect_all() {
-  LinkerAllocator<test_struct_larger> allocator;
+  LinkerTypeAllocator<test_struct_larger> allocator;
 
   // number of allocs to reach the end of first page
   size_t n = kPageSize/sizeof(test_struct_larger) - 1;
diff --git a/linker/tests/linker_memory_allocator_test.cpp b/linker/tests/linker_memory_allocator_test.cpp
new file mode 100644
index 0000000..f002a0d
--- /dev/null
+++ b/linker/tests/linker_memory_allocator_test.cpp
@@ -0,0 +1,193 @@
+/*
+ * 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.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include <gtest/gtest.h>
+
+#include "../linker_allocator.h"
+
+#include <unistd.h>
+
+namespace {
+
+/*
+ * this one has size below allocator cap which is 2*sizeof(void*)
+ */
+struct test_struct_small {
+  char dummy_str[5];
+};
+
+struct test_struct_large {
+  char dummy_str[1009];
+};
+
+struct test_struct_huge {
+  char dummy_str[73939];
+};
+
+struct test_struct_512 {
+  char dummy_str[503];
+};
+
+};
+
+static size_t kPageSize = sysconf(_SC_PAGE_SIZE);
+
+TEST(linker_memory, test_alloc_0) {
+  LinkerMemoryAllocator allocator;
+  void* ptr = allocator.alloc(0);
+  ASSERT_TRUE(ptr != nullptr);
+  free(ptr);
+}
+
+TEST(linker_memory, test_free_nullptr) {
+  LinkerMemoryAllocator allocator;
+  allocator.free(nullptr);
+}
+
+TEST(linker_memory, test_realloc) {
+  LinkerMemoryAllocator allocator;
+  uint32_t* array = reinterpret_cast<uint32_t*>(allocator.alloc(512));
+  const size_t array_size = 512 / sizeof(uint32_t);
+
+  uint32_t model[1000];
+
+  model[0] = 1;
+  model[1] = 1;
+
+  for (size_t i = 2; i < 1000; ++i) {
+    model[i] = model[i - 1] + model[i - 2];
+  }
+
+  memcpy(array, model, array_size);
+
+  uint32_t* reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 1024));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, array_size) == 0);
+
+  array = reallocated_ptr;
+
+  memcpy(array, model, 2*array_size);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 62));
+
+  ASSERT_TRUE(reallocated_ptr == array);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 4000));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, array_size * 2) == 0);
+
+  array = reallocated_ptr;
+
+  memcpy(array, model, 4000);
+
+  reallocated_ptr = reinterpret_cast<uint32_t*>(allocator.realloc(array, 64000));
+
+  ASSERT_TRUE(reallocated_ptr != nullptr);
+  ASSERT_TRUE(reallocated_ptr != array);
+
+  ASSERT_TRUE(memcmp(reallocated_ptr, model, 4000) == 0);
+
+  ASSERT_EQ(nullptr, realloc(reallocated_ptr, 0));
+}
+
+TEST(linker_memory, test_small_smoke) {
+  LinkerMemoryAllocator allocator;
+
+  uint8_t zeros[16];
+  memset(zeros, 0, sizeof(zeros));
+
+  test_struct_small* ptr1 =
+      reinterpret_cast<test_struct_small*>(allocator.alloc(sizeof(test_struct_small)));
+  test_struct_small* ptr2 =
+      reinterpret_cast<test_struct_small*>(allocator.alloc(sizeof(test_struct_small)));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+  ASSERT_EQ(reinterpret_cast<uintptr_t>(ptr1)+16, reinterpret_cast<uintptr_t>(ptr2));
+  ASSERT_TRUE(memcmp(ptr1, zeros, 16) == 0);
+
+  allocator.free(ptr1);
+  allocator.free(ptr2);
+}
+
+TEST(linker_memory, test_huge_smoke) {
+  LinkerMemoryAllocator allocator;
+
+  // this should trigger proxy-to-mmap
+  test_struct_huge* ptr1 =
+      reinterpret_cast<test_struct_huge*>(allocator.alloc(sizeof(test_struct_huge)));
+  test_struct_huge* ptr2 =
+      reinterpret_cast<test_struct_huge*>(allocator.alloc(sizeof(test_struct_huge)));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+
+  ASSERT_TRUE(
+      reinterpret_cast<uintptr_t>(ptr1)/kPageSize != reinterpret_cast<uintptr_t>(ptr2)/kPageSize);
+  allocator.free(ptr2);
+  allocator.free(ptr1);
+}
+
+TEST(linker_memory, test_large) {
+  LinkerMemoryAllocator allocator;
+
+  test_struct_large* ptr1 =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+  test_struct_large* ptr2 =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(1024));
+
+  ASSERT_TRUE(ptr1 != nullptr);
+  ASSERT_TRUE(ptr2 != nullptr);
+
+  ASSERT_EQ(reinterpret_cast<uintptr_t>(ptr1) + 1024, reinterpret_cast<uintptr_t>(ptr2));
+
+  // let's allocate until we reach the next page.
+  size_t n = kPageSize / sizeof(test_struct_large) + 1 - 2;
+  test_struct_large* objects[n];
+
+  for (size_t i = 0; i < n; ++i) {
+    test_struct_large* obj_ptr =
+        reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+    ASSERT_TRUE(obj_ptr != nullptr);
+    objects[i] = obj_ptr;
+  }
+
+  test_struct_large* ptr_to_free =
+      reinterpret_cast<test_struct_large*>(allocator.alloc(sizeof(test_struct_large)));
+
+  ASSERT_TRUE(ptr_to_free != nullptr);
+
+  allocator.free(ptr1);
+
+  for (size_t i=0; i<n; ++i) {
+    allocator.free(objects[i]);
+  }
+
+  allocator.free(ptr2);
+  allocator.free(ptr_to_free);
+}
+
+
diff --git a/tests/Android.mk b/tests/Android.mk
index bd4695f..c942375 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -128,6 +128,9 @@
     bionic/libc \
     external/tinyxml2 \
 
+libBionicStandardTests_static_libraries := \
+    libbase \
+
 libBionicStandardTests_ldlibs_host := \
     -lrt \
 
@@ -211,7 +214,7 @@
 include $(LOCAL_PATH)/Android.build.mk
 
 # -----------------------------------------------------------------------------
-# Library of bionic customized gtest main function.
+# Library of bionic customized gtest main function, with simplified output format.
 # -----------------------------------------------------------------------------
 libBionicGtestMain_src_files := gtest_main.cpp
 
@@ -228,6 +231,24 @@
 include $(LOCAL_PATH)/Android.build.mk
 
 # -----------------------------------------------------------------------------
+# Library of bionic customized gtest main function, with normal gtest output format,
+# which is needed by bionic cts test.
+# -----------------------------------------------------------------------------
+libBionicCtsGtestMain_src_files := gtest_main.cpp
+
+libBionicCtsGtestMain_cflags := $(test_cflags)
+
+libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT
+
+module := libBionicCtsGtestMain
+module_tag := optional
+build_type := target
+build_target := STATIC_TEST_LIBRARY
+include $(LOCAL_PATH)/Android.build.mk
+build_type := host
+include $(LOCAL_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
 # Tests for the device using bionic's .so. Run with:
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
@@ -239,11 +260,14 @@
 bionic-unit-tests_static_libraries := \
     libtinyxml2 \
     liblog \
+    libbase \
 
+# TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+)
 bionic-unit-tests_src_files := \
     atexit_test.cpp \
     dl_test.cpp \
     dlext_test.cpp \
+    __cxa_thread_atexit_test.cpp \
     dlfcn_test.cpp \
 
 bionic-unit-tests_cflags := $(test_cflags)
@@ -267,6 +291,10 @@
     libdl_preempt_test_1 \
     libdl_preempt_test_2
 
+# TODO: clang support for thread_local on arm is done via __aeabi_read_tp()
+# which bionic does not support. Reenable this once this question is resolved.
+bionic-unit-tests_clang_target := false
+
 ifneq ($(filter $(TARGET_ARCH),arm arm64),$(TARGET_ARCH))
 bionic-unit-tests_shared_libraries_target += libdl_test_df_1_global
 endif
@@ -293,6 +321,7 @@
     libdl \
     libtinyxml2 \
     liblog \
+    libbase \
 
 bionic-unit-tests-static_force_static_executable := true
 
@@ -331,6 +360,11 @@
     libBionicGtestMain \
     $(fortify_libs) \
 
+bionic-unit-tests-glibc_static_libraries := \
+    libbase \
+    liblog \
+    libcutils \
+
 bionic-unit-tests-glibc_ldlibs := \
     -lrt -ldl -lutil \
 
@@ -370,7 +404,7 @@
 LOCAL_CLANG := false
 LOCAL_MODULE := bionic-compile-time-tests-g++
 LOCAL_CPPFLAGS := -Wall
-LOCAL_SRC_FILES := fortify_sprintf_warnings.cpp
+LOCAL_SRC_FILES := fortify_compilation_test.cpp
 include $(BUILD_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
diff --git a/tests/__cxa_thread_atexit_test.cpp b/tests/__cxa_thread_atexit_test.cpp
new file mode 100644
index 0000000..fea60b7
--- /dev/null
+++ b/tests/__cxa_thread_atexit_test.cpp
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <stdint.h>
+
+#include <string>
+
+static std::string class_with_dtor_output;
+
+class ClassWithDtor {
+ public:
+  void set_message(const std::string& msg) {
+    message = msg;
+  }
+
+  ~ClassWithDtor() {
+    class_with_dtor_output += message;
+  }
+ private:
+  std::string message;
+};
+
+thread_local ClassWithDtor class_with_dtor;
+
+static void* thread_nop(void* arg) {
+  class_with_dtor.set_message(*static_cast<std::string*>(arg));
+  return nullptr;
+}
+
+TEST(thread_local, smoke) {
+  std::string msg("dtor called.");
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, nullptr, thread_nop, &msg));
+  ASSERT_EQ(0, pthread_join(t, nullptr));
+  ASSERT_EQ("dtor called.", class_with_dtor_output);
+}
+
+extern "C" int __cxa_thread_atexit_impl(void (*fn)(void*), void* arg, void* dso_handle);
+
+static void thread_atexit_fn1(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "one, ";
+}
+
+static void thread_atexit_fn2(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "two, ";
+}
+
+static void thread_atexit_from_atexit(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "oops, ";
+}
+
+static void thread_atexit_fn3(void* arg) {
+  __cxa_thread_atexit_impl(thread_atexit_from_atexit, arg, nullptr);
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "three, ";
+}
+
+static void thread_atexit_fn4(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "four, ";
+}
+
+static void thread_atexit_fn5(void* arg) {
+  std::string* call_sequence = static_cast<std::string*>(arg);
+  *call_sequence += "five.";
+}
+
+static void* thread_main(void* arg) {
+  __cxa_thread_atexit_impl(thread_atexit_fn5, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn4, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn3, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn2, arg, nullptr);
+  __cxa_thread_atexit_impl(thread_atexit_fn1, arg, nullptr);
+  return nullptr;
+}
+
+TEST(__cxa_thread_atexit_impl, smoke) {
+  std::string atexit_call_sequence;
+
+  pthread_t t;
+  ASSERT_EQ(0, pthread_create(&t, nullptr, thread_main, &atexit_call_sequence));
+  ASSERT_EQ(0, pthread_join(t, nullptr));
+  ASSERT_EQ("one, two, three, oops, four, five.", atexit_call_sequence);
+}
+
+
diff --git a/tests/dlext_test.cpp b/tests/dlext_test.cpp
index 0849b27..7012418 100644
--- a/tests/dlext_test.cpp
+++ b/tests/dlext_test.cpp
@@ -52,9 +52,9 @@
 #define LIBSIZE 1024*1024 // how much address space to reserve for it
 
 #if defined(__LP64__)
-#define LIBPATH_PREFIX "%s/nativetest64/libdlext_test_fd/"
+#define LIBPATH_PREFIX "/nativetest64/libdlext_test_fd/"
 #else
-#define LIBPATH_PREFIX "%s/nativetest/libdlext_test_fd/"
+#define LIBPATH_PREFIX "/nativetest/libdlext_test_fd/"
 #endif
 
 #define LIBPATH LIBPATH_PREFIX "libdlext_test_fd.so"
@@ -103,16 +103,13 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFd) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBPATH;
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   ASSERT_TRUE(extinfo.library_fd != -1);
-  handle_ = android_dlopen_ext(lib_path, RTLD_NOW, &extinfo);
+  handle_ = android_dlopen_ext(lib_path.c_str(), RTLD_NOW, &extinfo);
   ASSERT_DL_NOTNULL(handle_);
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
   ASSERT_DL_NOTNULL(f);
@@ -120,18 +117,14 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFdWithOffset) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBZIPPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   extinfo.library_fd_offset = LIBZIP_OFFSET;
 
-  handle_ = android_dlopen_ext(lib_path, RTLD_NOW, &extinfo);
+  handle_ = android_dlopen_ext(lib_path.c_str(), RTLD_NOW, &extinfo);
   ASSERT_DL_NOTNULL(handle_);
 
   fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
@@ -140,15 +133,11 @@
 }
 
 TEST_F(DlExtTest, ExtInfoUseFdWithInvalidOffset) {
-  const char* android_data = getenv("ANDROID_DATA");
-  ASSERT_TRUE(android_data != nullptr);
-
-  char lib_path[PATH_MAX];
-  snprintf(lib_path, sizeof(lib_path), LIBPATH, android_data);
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
 
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
-  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path, O_RDONLY | O_CLOEXEC));
+  extinfo.library_fd = TEMP_FAILURE_RETRY(open(lib_path.c_str(), O_RDONLY | O_CLOEXEC));
   extinfo.library_fd_offset = 17;
 
   handle_ = android_dlopen_ext("libname_placeholder", RTLD_NOW, &extinfo);
@@ -167,9 +156,9 @@
   ASSERT_SUBSTR("dlopen failed: file offset for the library \"libname_placeholder\" is negative", dlerror());
 
   extinfo.library_fd_offset = PAGE_SIZE;
-  handle_ = android_dlopen_ext("libname_placeholder", RTLD_NOW, &extinfo);
+  handle_ = android_dlopen_ext("libname_ignored", RTLD_NOW, &extinfo);
   ASSERT_TRUE(handle_ == nullptr);
-  ASSERT_STREQ("dlopen failed: \"libname_placeholder\" has bad ELF magic", dlerror());
+  ASSERT_EQ("dlopen failed: \"" + lib_path + "\" has bad ELF magic", dlerror());
 
   close(extinfo.library_fd);
 }
@@ -184,6 +173,80 @@
   ASSERT_STREQ("dlopen failed: invalid extended flag combination (ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET without ANDROID_DLEXT_USE_LIBRARY_FD): 0x20", dlerror());
 }
 
+TEST(dlext, android_dlopen_ext_force_load_smoke) {
+  // 1. Open actual file
+  void* handle = dlopen("libdlext_test.so", RTLD_NOW);
+  ASSERT_DL_NOTNULL(handle);
+  // 2. Open link with force_load flag set
+  android_dlextinfo extinfo;
+  extinfo.flags = ANDROID_DLEXT_FORCE_LOAD;
+  void* handle2 = android_dlopen_ext("libdlext_test_v2.so", RTLD_NOW, &extinfo);
+  ASSERT_DL_NOTNULL(handle2);
+  ASSERT_TRUE(handle != handle2);
+
+  dlclose(handle2);
+  dlclose(handle);
+}
+
+TEST(dlext, android_dlopen_ext_force_load_soname_exception) {
+  // Check if soname lookup still returns already loaded library
+  // when ANDROID_DLEXT_FORCE_LOAD flag is specified.
+  void* handle = dlopen("libdlext_test_v2.so", RTLD_NOW);
+  ASSERT_DL_NOTNULL(handle);
+
+  android_dlextinfo extinfo;
+  extinfo.flags = ANDROID_DLEXT_FORCE_LOAD;
+
+  // Note that 'libdlext_test.so' is dt_soname for libdlext_test_v2.so
+  void* handle2 = android_dlopen_ext("libdlext_test.so", RTLD_NOW, &extinfo);
+
+  ASSERT_DL_NOTNULL(handle2);
+  ASSERT_TRUE(handle == handle2);
+
+  dlclose(handle2);
+  dlclose(handle);
+}
+
+TEST(dlfcn, dlopen_from_zip_absolute_path) {
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH;
+
+  void* handle = dlopen((lib_path + "!libdir/libdlext_test_fd.so").c_str(), RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(dlsym(handle, "getRandomNumber"));
+  ASSERT_TRUE(fn != nullptr);
+  EXPECT_EQ(4, fn());
+
+  dlclose(handle);
+}
+
+TEST(dlfcn, dlopen_from_zip_ld_library_path) {
+  const std::string lib_path = std::string(getenv("ANDROID_DATA")) + LIBZIPPATH + "!libdir";
+
+  typedef void (*fn_t)(const char*);
+  fn_t android_update_LD_LIBRARY_PATH =
+      reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"));
+
+  ASSERT_TRUE(android_update_LD_LIBRARY_PATH != nullptr) << dlerror();
+
+  void* handle = dlopen("libdlext_test_fd.so", RTLD_NOW);
+  ASSERT_TRUE(handle == nullptr);
+
+  android_update_LD_LIBRARY_PATH(lib_path.c_str());
+
+  handle = dlopen("libdlext_test_fd.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  int (*fn)(void);
+  fn = reinterpret_cast<int (*)(void)>(dlsym(handle, "getRandomNumber"));
+  ASSERT_TRUE(fn != nullptr);
+  EXPECT_EQ(4, fn());
+
+  dlclose(handle);
+}
+
+
 TEST_F(DlExtTest, Reserved) {
   void* start = mmap(nullptr, LIBSIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS,
                      -1, 0);
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index 3b1001a..1d62428 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -22,14 +22,16 @@
 #include <stdio.h>
 #include <stdint.h>
 
-#include "gtest_ex.h"
 #include "private/ScopeGuard.h"
 
 #include <string>
 
+#include "utils.h"
+
 #define ASSERT_SUBSTR(needle, haystack) \
     ASSERT_PRED_FORMAT2(::testing::IsSubstring, needle, haystack)
 
+
 static bool g_called = false;
 extern "C" void DlSymTestFunction() {
   g_called = true;
@@ -47,7 +49,7 @@
   ASSERT_EQ(17, g_ctor_function_called);
 }
 
-TEST(dlfcn, dlsym_in_self) {
+TEST(dlfcn, dlsym_in_executable) {
   dlerror(); // Clear any pending errors.
   void* self = dlopen(NULL, RTLD_NOW);
   ASSERT_TRUE(self != NULL);
@@ -65,6 +67,27 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
+TEST(dlfcn, dlsym_from_sofile) {
+  void* handle = dlopen("libtest_dlsym_from_this.so", RTLD_LAZY | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  // check that we cant find '_test_dlsym_symbol' via dlsym(RTLD_DEFAULT)
+  void* symbol = dlsym(RTLD_DEFAULT, "test_dlsym_symbol");
+  ASSERT_TRUE(symbol == nullptr);
+  ASSERT_SUBSTR("undefined symbol: test_dlsym_symbol", dlerror());
+
+  typedef int* (*fn_t)();
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "lookup_dlsym_symbol_using_RTLD_DEFAULT"));
+
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+
+  int* ptr = fn();
+  ASSERT_TRUE(ptr != nullptr) << dlerror();
+  ASSERT_EQ(42, *ptr);
+
+  dlclose(handle);
+}
+
 TEST(dlfcn, dlsym_with_dependencies) {
   void* handle = dlopen("libtest_with_dependency.so", RTLD_NOW);
   ASSERT_TRUE(handle != NULL);
@@ -90,6 +113,32 @@
   ASSERT_EQ(0, dlclose(handle2));
 }
 
+TEST(dlfcn, dlopen_by_soname) {
+  static const char* soname = "libdlext_test_soname.so";
+  static const char* filename = "libdlext_test_different_soname.so";
+  // 1. Make sure there is no library with soname in default search path
+  void* handle = dlopen(soname, RTLD_NOW);
+  ASSERT_TRUE(handle == nullptr);
+
+  // 2. Load a library using filename
+  handle = dlopen(filename, RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+
+  // 3. Find library by soname
+  void* handle_soname = dlopen(soname, RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle_soname != nullptr) << dlerror();
+  ASSERT_EQ(handle, handle_soname);
+
+  // 4. RTLD_NOLOAD should still work with filename
+  void* handle_filename = dlopen(filename, RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle_filename != nullptr) << dlerror();
+  ASSERT_EQ(handle, handle_filename);
+
+  dlclose(handle_filename);
+  dlclose(handle_soname);
+  dlclose(handle);
+}
+
 // ifuncs are only supported on intel and arm64 for now
 #if defined (__aarch64__) || defined(__i386__) || defined(__x86_64__)
 TEST(dlfcn, ifunc) {
@@ -376,33 +425,31 @@
   // Test dlopens parent1 which loads and relocates libtest_two_parents_child.so
   // as a second step it dlopens parent2 and dlcloses parent1...
 
-  test_isolated([] {
-    void* handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL);
-    ASSERT_TRUE(handle != nullptr) << dlerror();
+  void* handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
 
-    void* handle2 = dlopen("libtest_two_parents_parent2.so", RTLD_NOW | RTLD_LOCAL);
-    ASSERT_TRUE(handle2 != nullptr) << dlerror();
+  void* handle2 = dlopen("libtest_two_parents_parent2.so", RTLD_NOW | RTLD_LOCAL);
+  ASSERT_TRUE(handle2 != nullptr) << dlerror();
 
-    typedef int (*fn_t) (void);
-    fn_t fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
-    ASSERT_TRUE(fn != nullptr) << dlerror();
-    ASSERT_EQ(42, fn());
+  typedef int (*fn_t) (void);
+  fn_t fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
 
-    ASSERT_EQ(0, dlclose(handle));
+  ASSERT_EQ(0, dlclose(handle));
 
-    handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
-    ASSERT_TRUE(handle != nullptr);
-    ASSERT_EQ(0, dlclose(handle));
+  handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
+  ASSERT_TRUE(handle != nullptr);
+  ASSERT_EQ(0, dlclose(handle));
 
-    fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
-    ASSERT_TRUE(fn != nullptr) << dlerror();
-    ASSERT_EQ(42, fn());
+  fn = reinterpret_cast<fn_t>(dlsym(handle2, "check_order_reloc_get_answer"));
+  ASSERT_TRUE(fn != nullptr) << dlerror();
+  ASSERT_EQ(42, fn());
 
-    ASSERT_EQ(0, dlclose(handle2));
+  ASSERT_EQ(0, dlclose(handle2));
 
-    handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
-    ASSERT_TRUE(handle == nullptr);
-  });
+  handle = dlopen("libtest_two_parents_parent1.so", RTLD_NOW | RTLD_LOCAL | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
 }
 
 extern "C" int check_order_reloc_root_get_answer_impl() {
@@ -485,25 +532,23 @@
 // libtest_with_dependency_loop_b.so -> libtest_with_dependency_loop_c.so ->
 // libtest_with_dependency_loop_a.so
 TEST(dlfcn, dlopen_check_loop) {
-  test_isolated([] {
-    void* handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW);
-    ASSERT_TRUE(handle != nullptr) << dlerror();
-    void* f = dlsym(handle, "dlopen_test_loopy_function");
-    ASSERT_TRUE(f != nullptr) << dlerror();
-    EXPECT_TRUE(reinterpret_cast<bool (*)(void)>(f)());
-    ASSERT_EQ(0, dlclose(handle));
+  void* handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  void* f = dlsym(handle, "dlopen_test_loopy_function");
+  ASSERT_TRUE(f != nullptr) << dlerror();
+  EXPECT_TRUE(reinterpret_cast<bool (*)(void)>(f)());
+  ASSERT_EQ(0, dlclose(handle));
 
-    // dlopen second time to make sure that the library was unloaded correctly
-    handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW | RTLD_NOLOAD);
-    ASSERT_TRUE(handle == nullptr);
+  // dlopen second time to make sure that the library was unloaded correctly
+  handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
 #ifdef __BIONIC__
-    // TODO: glibc returns nullptr on dlerror() here. Is it bug?
-    ASSERT_STREQ("dlopen failed: library \"libtest_with_dependency_loop.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
+  // TODO: glibc returns nullptr on dlerror() here. Is it bug?
+  ASSERT_STREQ("dlopen failed: library \"libtest_with_dependency_loop.so\" wasn't loaded and RTLD_NOLOAD prevented it", dlerror());
 #endif
 
-    handle = dlopen("libtest_with_dependency_a.so", RTLD_NOW | RTLD_NOLOAD);
-    ASSERT_TRUE(handle == nullptr);
-  });
+  handle = dlopen("libtest_with_dependency_a.so", RTLD_NOW | RTLD_NOLOAD);
+  ASSERT_TRUE(handle == nullptr);
 }
 
 TEST(dlfcn, dlopen_nodelete) {
@@ -657,7 +702,7 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
-TEST(dlfcn, dladdr) {
+TEST(dlfcn, dladdr_executable) {
   dlerror(); // Clear any pending errors.
   void* self = dlopen(NULL, RTLD_NOW);
   ASSERT_TRUE(self != NULL);
@@ -678,13 +723,11 @@
   rc = readlink("/proc/self/exe", executable_path, sizeof(executable_path));
   ASSERT_NE(rc, -1);
   executable_path[rc] = '\0';
-  std::string executable_name(basename(executable_path));
 
   // The filename should be that of this executable.
-  // Note that we don't know whether or not we have the full path, so we want an "ends_with" test.
-  std::string dli_fname(info.dli_fname);
-  dli_fname = basename(&dli_fname[0]);
-  ASSERT_EQ(dli_fname, executable_name);
+  char dli_realpath[PATH_MAX];
+  ASSERT_TRUE(realpath(info.dli_fname, dli_realpath) != nullptr);
+  ASSERT_STREQ(executable_path, dli_realpath);
 
   // The symbol name should be the symbol we looked up.
   ASSERT_STREQ(info.dli_sname, "DlSymTestFunction");
@@ -692,22 +735,16 @@
   // The address should be the exact address of the symbol.
   ASSERT_EQ(info.dli_saddr, sym);
 
-  // Look in /proc/pid/maps to find out what address we were loaded at.
-  // TODO: factor /proc/pid/maps parsing out into a class and reuse all over bionic.
-  void* base_address = NULL;
-  char line[BUFSIZ];
-  FILE* fp = fopen("/proc/self/maps", "r");
-  ASSERT_TRUE(fp != NULL);
-  while (fgets(line, sizeof(line), fp) != NULL) {
-    uintptr_t start = strtoul(line, 0, 16);
-    line[strlen(line) - 1] = '\0'; // Chomp the '\n'.
-    char* path = strchr(line, '/');
-    if (path != NULL && strcmp(executable_path, path) == 0) {
-      base_address = reinterpret_cast<void*>(start);
+  std::vector<map_record> maps;
+  ASSERT_TRUE(Maps::parse_maps(&maps));
+
+  void* base_address = nullptr;
+  for (const map_record& rec : maps) {
+    if (executable_path == rec.pathname) {
+      base_address = reinterpret_cast<void*>(rec.addr_start);
       break;
     }
   }
-  fclose(fp);
 
   // The base address should be the address we were loaded at.
   ASSERT_EQ(info.dli_fbase, base_address);
@@ -715,6 +752,28 @@
   ASSERT_EQ(0, dlclose(self));
 }
 
+#if defined(__LP64__)
+#define BIONIC_PATH_TO_LIBC "/system/lib64/libc.so"
+#else
+#define BIONIC_PATH_TO_LIBC "/system/lib/libc.so"
+#endif
+
+TEST(dlfcn, dladdr_libc) {
+#if defined(__BIONIC__)
+  Dl_info info;
+  void* addr = reinterpret_cast<void*>(puts); // well-known libc function
+  ASSERT_TRUE(dladdr(addr, &info) != 0);
+
+  ASSERT_STREQ(BIONIC_PATH_TO_LIBC, info.dli_fname);
+  // TODO: add check for dfi_fbase
+  ASSERT_STREQ("puts", info.dli_sname);
+  ASSERT_EQ(addr, info.dli_saddr);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing for glibc. Glibc returns path from ldconfig "
+      "for libc.so, which is symlink itself (not a realpath).\n";
+#endif
+}
+
 TEST(dlfcn, dladdr_invalid) {
   Dl_info info;
 
@@ -830,15 +889,13 @@
 }
 
 TEST(dlfcn, dlopen_undefined_weak_func) {
-  test_isolated([] {
-    void* handle = dlopen("libtest_dlopen_weak_undefined_func.so", RTLD_NOW);
-    ASSERT_TRUE(handle != nullptr) << dlerror();
-    int (*weak_func)();
-    weak_func = reinterpret_cast<int (*)()>(dlsym(handle, "use_weak_undefined_func"));
-    ASSERT_TRUE(weak_func != nullptr) << dlerror();
-    EXPECT_EQ(6551, weak_func());
-    dlclose(handle);
-  });
+  void* handle = dlopen("libtest_dlopen_weak_undefined_func.so", RTLD_NOW);
+  ASSERT_TRUE(handle != nullptr) << dlerror();
+  int (*weak_func)();
+  weak_func = reinterpret_cast<int (*)()>(dlsym(handle, "use_weak_undefined_func"));
+  ASSERT_TRUE(weak_func != nullptr) << dlerror();
+  EXPECT_EQ(6551, weak_func());
+  dlclose(handle);
 }
 
 TEST(dlfcn, dlopen_symlink) {
diff --git a/tests/fortify_compilation_test.cpp b/tests/fortify_compilation_test.cpp
new file mode 100644
index 0000000..537b341
--- /dev/null
+++ b/tests/fortify_compilation_test.cpp
@@ -0,0 +1,232 @@
+/*
+ * 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.
+ */
+
+#undef _FORTIFY_SOURCE
+#define _FORTIFY_SOURCE 2
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <poll.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <unistd.h>
+
+void test_sprintf() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  sprintf(buf, "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  sprintf(buf, "%s", "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_snprintf() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "%s", "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, " %s ", "foobar");  // NOLINT(runtime/printf)
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  snprintf(buf, 5, "%d", 100000);  // NOLINT(runtime/printf)
+}
+
+void test_memcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memcpy_chk(void*, const void*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memcpy(buf, "foobar", sizeof("foobar"));
+}
+
+void test_memmove() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memmove_chk(void*, const void*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memmove(buf, "foobar", sizeof("foobar"));
+}
+
+void test_memset() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to void* __builtin___memset_chk(void*, int, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  memset(buf, 0, 6);
+}
+
+void test_strcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcpy_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strcpy(buf, "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_stpcpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to char* __builtin___stpcpy_chk(char*, const char*, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  stpcpy(buf, "foobar");
+}
+
+void test_strncpy() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to char* __builtin___strncpy_chk(char*, const char*, {{(long )?}}unsigned int, {{(long )?}}unsigned int) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strncpy(buf, "foobar", sizeof("foobar"));
+}
+
+void test_strcat() {
+  char buf[4] = "";
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcat_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  strcat(buf, "foobar");  // NOLINT(runtime/printf)
+}
+
+void test_strncat() {
+  char buf[4] = "";
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to {{(char\* __builtin___strcat_chk\(char\*, const char\*, unsigned int\))|(void\* __builtin___memcpy_chk\(void\*, const void\*, (long )?unsigned int, (long )?unsigned int\))}} will always overflow destination buffer
+  // gcc output warning with __builtin___strcat_chk for __builtin___strncat_chk.
+  // clang should emit a warning, but doesn't
+  strncat(buf, "foobar", sizeof("foobar"));
+}
+
+void test_vsprintf(const char* fmt, ...) {
+  va_list va;
+  char buf[4];
+  va_start(va, fmt);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___vsprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, {{(__va_list)|(void\*)|(char\*)|(__va_list_tag\*)}}) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  vsprintf(buf, "foobar", va);
+  va_end(va);
+}
+
+void test_vsnprintf(const char* fmt, ...) {
+  va_list va;
+  char buf[4];
+  va_start(va, fmt);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: warning: call to int __builtin___vsnprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, {{(__va_list)|(void\*)|(char\*)|(__va_list_tag\*)}}) will always overflow destination buffer
+  // clang should emit a warning, but doesn't
+  vsnprintf(buf, 5, "foobar", va);  // NOLINT(runtime/printf)
+
+  va_end(va);
+}
+
+void test_fgets() {
+  char buf[4];
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__fgets_too_small_error' declared with attribute error: fgets called with size less than zero
+  // clang should emit a warning, but doesn't
+  fgets(buf, -1, stdin);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__fgets_too_big_error' declared with attribute error: fgets called with size bigger than buffer
+  // clang should emit a warning, but doesn't
+  fgets(buf, 6, stdin);
+}
+
+void test_recvfrom() {
+  char buf[4];
+  sockaddr_in addr;
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__recvfrom_error' declared with attribute error: recvfrom called with size bigger than buffer
+  // clang should emit a warning, but doesn't
+  recvfrom(0, buf, 6, 0, reinterpret_cast<sockaddr*>(&addr), NULL);
+}
+
+void test_umask() {
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__umask_invalid_mode' declared with attribute error: umask called with invalid mode
+  // clang should emit a warning, but doesn't
+  umask(01777);
+}
+
+void test_read() {
+  char buf[4];
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__read_dest_size_error' declared with attribute error: read called with size bigger than destination
+  // clang should emit a warning, but doesn't
+  read(0, buf, 6);
+}
+
+void test_open() {
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__creat_missing_mode' declared with attribute error: called with O_CREAT, but missing mode
+  // clang should emit a warning, but doesn't
+  open("/dev/null", O_CREAT);
+
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__creat_too_many_args' declared with attribute error: too many arguments
+  // clang should emit a warning, but doesn't
+  open("/dev/null", O_CREAT, 0, 0);
+}
+
+void test_poll() {
+  pollfd fds[1];
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__poll_too_small_error' declared with attribute error: poll: pollfd array smaller than fd count
+  // clang should emit a warning, but doesn't
+  poll(fds, 2, 0);
+}
+
+void test_ppoll() {
+  pollfd fds[1];
+  timespec timeout;
+  // NOLINTNEXTLINE(whitespace/line_length)
+  // GCC: error: call to '__ppoll_too_small_error' declared with attribute error: ppoll: pollfd array smaller than fd count
+  // clang should emit a warning, but doesn't
+  ppoll(fds, 2, &timeout, NULL);
+}
diff --git a/tests/fortify_sprintf_warnings.cpp b/tests/fortify_sprintf_warnings.cpp
deleted file mode 100644
index 3a2d3c4..0000000
--- a/tests/fortify_sprintf_warnings.cpp
+++ /dev/null
@@ -1,57 +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.
- */
-
-#undef _FORTIFY_SOURCE
-#define _FORTIFY_SOURCE 2
-#include <stdio.h>
-
-void test_sprintf() {
-  char buf[4];
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  sprintf(buf, "foobar"); // NOLINT(runtime/printf)
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___sprintf_chk(char*, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  sprintf(buf, "%s", "foobar"); // NOLINT(runtime/printf)
-}
-
-void test_snprintf() {
-  char buf[4];
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  snprintf(buf, 5, "foobar"); // NOLINT(runtime/printf)
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  snprintf(buf, 5, "%s", "foobar"); // NOLINT(runtime/printf)
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  snprintf(buf, 5, " %s ", "foobar"); // NOLINT(runtime/printf)
-
-  // NOLINTNEXTLINE(whitespace/line_length)
-  // GCC: warning: call to int __builtin___snprintf_chk(char*, {{(long )?}}unsigned int, int, {{(long )?}}unsigned int, const char*, ...) will always overflow destination buffer
-  // clang should emit a warning, but doesn't
-  snprintf(buf, 5, "%d", 100000); // NOLINT(runtime/printf)
-}
diff --git a/tests/ftw_test.cpp b/tests/ftw_test.cpp
index 6741d00..b7e5bd5 100644
--- a/tests/ftw_test.cpp
+++ b/tests/ftw_test.cpp
@@ -30,11 +30,11 @@
   char path[PATH_MAX];
 
   snprintf(path, sizeof(path), "%s/dir", root);
-  ASSERT_EQ(0, mkdir(path, 0555));
+  ASSERT_EQ(0, mkdir(path, 0755)) << path;
   snprintf(path, sizeof(path), "%s/dir/sub", root);
-  ASSERT_EQ(0, mkdir(path, 0555));
+  ASSERT_EQ(0, mkdir(path, 0555)) << path;
   snprintf(path, sizeof(path), "%s/unreadable-dir", root);
-  ASSERT_EQ(0, mkdir(path, 0000));
+  ASSERT_EQ(0, mkdir(path, 0000)) << path;
 
   snprintf(path, sizeof(path), "%s/dangler", root);
   ASSERT_EQ(0, symlink("/does-not-exist", path));
diff --git a/tests/getauxval_test.cpp b/tests/getauxval_test.cpp
index b331150..6ce00f1 100644
--- a/tests/getauxval_test.cpp
+++ b/tests/getauxval_test.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <errno.h>
 #include <sys/cdefs.h>
 #include <gtest/gtest.h>
 
@@ -53,7 +54,9 @@
 
 TEST(getauxval, unexpected_values) {
 #if defined(GETAUXVAL_CAN_COMPILE)
+  errno = 0;
   ASSERT_EQ((unsigned long int) 0, getauxval(0xdeadbeef));
+  ASSERT_EQ(ENOENT, errno);
 #else
   GTEST_LOG_(INFO) << "This test does nothing.\n";
 #endif
diff --git a/tests/gtest_ex.h b/tests/gtest_ex.h
deleted file mode 100644
index fe1d894..0000000
--- a/tests/gtest_ex.h
+++ /dev/null
@@ -1,40 +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.
- */
-
-#include <gtest/gtest.h>
-
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-template<typename F>
-void test_isolated(F test) {
-  int pid = fork();
-  ASSERT_NE(-1, pid) << strerror(errno);
-
-  if (pid == 0) {
-    test();
-    _exit(testing::Test::HasFailure() ? 1 : 0);
-  }
-
-  int status;
-  ASSERT_EQ(pid, waitpid(pid, &status, 0));
-  ASSERT_TRUE(WIFEXITED(status));
-  ASSERT_EQ(0, WEXITSTATUS(status)) << "Forked test has failed, see above..";
-}
diff --git a/tests/gtest_main.cpp b/tests/gtest_main.cpp
index 86d6466..692b7e8 100644
--- a/tests/gtest_main.cpp
+++ b/tests/gtest_main.cpp
@@ -124,15 +124,15 @@
 
   int64_t GetTestTime() const { return elapsed_time_ns_; }
 
-  void AppendFailureMessage(const std::string& s) { failure_message_ += s; }
+  void AppendTestOutput(const std::string& s) { output_ += s; }
 
-  const std::string& GetFailureMessage() const { return failure_message_; }
+  const std::string& GetTestOutput() const { return output_; }
 
  private:
   const std::string name_;
   TestResult result_;
   int64_t elapsed_time_ns_;
-  std::string failure_message_;
+  std::string output_;
 };
 
 class TestCase {
@@ -196,10 +196,6 @@
   std::vector<Test> test_list_;
 };
 
-// This is the file descriptor used by the child process to write failure message.
-// The parent process will collect the information and dump to stdout / xml file.
-static int child_output_fd;
-
 class TestResultPrinter : public testing::EmptyTestEventListener {
  public:
   TestResultPrinter() : pinfo_(NULL) {}
@@ -219,25 +215,9 @@
     return;
 
   // Print failure message from the assertion (e.g. expected this and got that).
-  char buf[1024];
-  snprintf(buf, sizeof(buf), "%s:(%d) Failure in test %s.%s\n%s\n", result.file_name(),
-                                                                    result.line_number(),
-                                                                    pinfo_->test_case_name(),
-                                                                    pinfo_->name(),
-                                                                    result.message());
-
-  int towrite = strlen(buf);
-  char* p = buf;
-  while (towrite > 0) {
-    ssize_t bytes_written = TEMP_FAILURE_RETRY(write(child_output_fd, p, towrite));
-    if (bytes_written == -1) {
-      fprintf(stderr, "failed to write child_output_fd: %s\n", strerror(errno));
-      exit(1);
-    } else {
-      towrite -= bytes_written;
-      p += bytes_written;
-    }
-  }
+  printf("%s:(%d) Failure in test %s.%s\n%s\n", result.file_name(), result.line_number(),
+         pinfo_->test_case_name(), pinfo_->name(), result.message());
+  fflush(stdout);
 }
 
 static int64_t NanoTime() {
@@ -297,8 +277,8 @@
 // PrettyUnitTestResultPrinter. The reason for copy is that PrettyUnitTestResultPrinter
 // is defined and used in gtest.cc, which is hard to reuse.
 static void OnTestIterationStartPrint(const std::vector<TestCase>& testcase_list, size_t iteration,
-                                      size_t iteration_count) {
-  if (iteration_count > 1) {
+                                      int iteration_count) {
+  if (iteration_count != 1) {
     printf("\nRepeating all tests (iteration %zu) . . .\n\n", iteration);
   }
   ColoredPrintf(COLOR_GREEN,  "[==========] ");
@@ -315,6 +295,32 @@
   fflush(stdout);
 }
 
+// bionic cts test needs gtest output format.
+#if defined(USING_GTEST_OUTPUT_FORMAT)
+
+static void OnTestEndPrint(const TestCase& testcase, size_t test_id) {
+  ColoredPrintf(COLOR_GREEN, "[ RUN      ] ");
+  printf("%s\n", testcase.GetTestName(test_id).c_str());
+
+  const std::string& test_output = testcase.GetTest(test_id).GetTestOutput();
+  printf("%s", test_output.c_str());
+
+  TestResult result = testcase.GetTestResult(test_id);
+  if (result == TEST_SUCCESS) {
+    ColoredPrintf(COLOR_GREEN, "[       OK ] ");
+  } else {
+    ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+  }
+  printf("%s", testcase.GetTestName(test_id).c_str());
+  if (testing::GTEST_FLAG(print_time)) {
+    printf(" (%" PRId64 " ms)", testcase.GetTestTime(test_id) / 1000000);
+  }
+  printf("\n");
+  fflush(stdout);
+}
+
+#else  // !defined(USING_GTEST_OUTPUT_FORMAT)
+
 static void OnTestEndPrint(const TestCase& testcase, size_t test_id) {
   TestResult result = testcase.GetTestResult(test_id);
   if (result == TEST_SUCCESS) {
@@ -327,16 +333,17 @@
 
   printf("%s", testcase.GetTestName(test_id).c_str());
   if (testing::GTEST_FLAG(print_time)) {
-    printf(" (%" PRId64 " ms)\n", testcase.GetTestTime(test_id) / 1000000);
-  } else {
-    printf("\n");
+    printf(" (%" PRId64 " ms)", testcase.GetTestTime(test_id) / 1000000);
   }
+  printf("\n");
 
-  const std::string& failure_message = testcase.GetTest(test_id).GetFailureMessage();
-  printf("%s", failure_message.c_str());
+  const std::string& test_output = testcase.GetTest(test_id).GetTestOutput();
+  printf("%s", test_output.c_str());
   fflush(stdout);
 }
 
+#endif  // !defined(USING_GTEST_OUTPUT_FORMAT)
+
 static void OnTestIterationEndPrint(const std::vector<TestCase>& testcase_list, size_t /*iteration*/,
                                     int64_t elapsed_time_ns) {
 
@@ -481,8 +488,8 @@
         fputs(" />\n", fp);
       } else {
         fputs(">\n", fp);
-        const std::string& failure_message = testcase.GetTest(j).GetFailureMessage();
-        fprintf(fp, "      <failure message=\"%s\" type=\"\">\n", failure_message.c_str());
+        const std::string& test_output = testcase.GetTest(j).GetTestOutput();
+        fprintf(fp, "      <failure message=\"%s\" type=\"\">\n", test_output.c_str());
         fputs("      </failure>\n", fp);
         fputs("    </testcase>\n", fp);
       }
@@ -538,7 +545,10 @@
   } else if (pid == 0) {
     // In child process, run a single test.
     close(pipefd[0]);
-    child_output_fd = pipefd[1];
+    close(STDOUT_FILENO);
+    close(STDERR_FILENO);
+    dup2(pipefd[1], STDOUT_FILENO);
+    dup2(pipefd[1], STDERR_FILENO);
 
     if (sigprocmask(SIG_SETMASK, &sigmask, NULL) == -1) {
       perror("sigprocmask SIG_SETMASK");
@@ -692,7 +702,7 @@
     ssize_t bytes_read = TEMP_FAILURE_RETRY(read(child_proc.child_read_fd, buf, sizeof(buf) - 1));
     if (bytes_read > 0) {
       buf[bytes_read] = '\0';
-      testcase.GetTest(test_id).AppendFailureMessage(buf);
+      testcase.GetTest(test_id).AppendTestOutput(buf);
     } else if (bytes_read == 0) {
       break; // Read end.
     } else {
@@ -713,7 +723,7 @@
     char buf[1024];
     snprintf(buf, sizeof(buf), "%s killed because of timeout at %" PRId64 " ms.\n",
              testcase.GetTestName(test_id).c_str(), testcase.GetTestTime(test_id) / 1000000);
-    testcase.GetTest(test_id).AppendFailureMessage(buf);
+    testcase.GetTest(test_id).AppendTestOutput(buf);
 
   } else if (WIFSIGNALED(child_proc.exit_status)) {
     // Record signal terminated test as failed.
@@ -721,7 +731,7 @@
     char buf[1024];
     snprintf(buf, sizeof(buf), "%s terminated by signal: %s.\n",
              testcase.GetTestName(test_id).c_str(), strsignal(WTERMSIG(child_proc.exit_status)));
-    testcase.GetTest(test_id).AppendFailureMessage(buf);
+    testcase.GetTest(test_id).AppendTestOutput(buf);
 
   } else {
     testcase.SetTestResult(test_id, WEXITSTATUS(child_proc.exit_status) == 0 ?
@@ -731,8 +741,9 @@
 
 // We choose to use multi-fork and multi-wait here instead of multi-thread, because it always
 // makes deadlock to use fork in multi-thread.
-static void RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>& testcase_list,
-                                  size_t iteration_count, size_t job_count,
+// Returns true if all tests run successfully, otherwise return false.
+static bool RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>& testcase_list,
+                                  int iteration_count, size_t job_count,
                                   const std::string& xml_output_filename) {
   // Stop default result printer to avoid environment setup/teardown information for each test.
   testing::UnitTest::GetInstance()->listeners().Release(
@@ -749,7 +760,11 @@
     exit(1);
   }
 
-  for (size_t iteration = 1; iteration <= iteration_count; ++iteration) {
+  bool all_tests_passed = true;
+
+  for (size_t iteration = 1;
+       iteration_count < 0 || iteration <= static_cast<size_t>(iteration_count);
+       ++iteration) {
     OnTestIterationStartPrint(testcase_list, iteration, iteration_count);
     int64_t iteration_start_time_ns = NanoTime();
     time_t epoch_iteration_start_time = time(NULL);
@@ -796,6 +811,9 @@
           if (++finished_test_count_list[testcase_id] == testcase.TestCount()) {
             ++finished_testcase_count;
           }
+          if (testcase.GetTestResult(test_id) != TEST_SUCCESS) {
+            all_tests_passed = false;
+          }
 
           it = child_proc_list.erase(it);
         } else {
@@ -817,6 +835,8 @@
     perror("sigprocmask SIG_SETMASK");
     exit(1);
   }
+
+  return all_tests_passed;
 }
 
 static size_t GetProcessorCount() {
@@ -857,7 +877,7 @@
   int test_warnline_ms;
   std::string gtest_color;
   bool gtest_print_time;
-  size_t gtest_repeat;
+  int gtest_repeat;
   std::string gtest_output;
 };
 
@@ -975,12 +995,9 @@
     } else if (strcmp(args[i], "--gtest_print_time=0") == 0) {
       options.gtest_print_time = false;
     } else if (strncmp(args[i], "--gtest_repeat=", strlen("--gtest_repeat=")) == 0) {
-      int repeat = atoi(args[i] + strlen("--gtest_repeat="));
-      if (repeat < 0) {
-        fprintf(stderr, "invalid gtest_repeat count: %d\n", repeat);
-        return false;
-      }
-      options.gtest_repeat = repeat;
+      // If the value of gtest_repeat is < 0, then it indicates the tests
+      // should be repeated forever.
+      options.gtest_repeat = atoi(args[i] + strlen("--gtest_repeat="));
       // Remove --gtest_repeat=xx from arguments, so child process only run one iteration for a single test.
       args.erase(args.begin() + i);
       --i;
@@ -1051,15 +1068,15 @@
     if (EnumerateTests(argc, arg_list.data(), testcase_list) == false) {
       return 1;
     }
-    RunTestInSeparateProc(argc, arg_list.data(), testcase_list, options.gtest_repeat,
-                          options.job_count, options.gtest_output);
+    bool all_test_passed =  RunTestInSeparateProc(argc, arg_list.data(), testcase_list,
+                              options.gtest_repeat, options.job_count, options.gtest_output);
+    return all_test_passed ? 0 : 1;
   } else {
     argc = static_cast<int>(arg_list.size());
     arg_list.push_back(NULL);
     testing::InitGoogleTest(&argc, arg_list.data());
     return RUN_ALL_TESTS();
   }
-  return 0;
 }
 
 //################################################################################
diff --git a/tests/libs/Android.build.dlext_testzip.mk b/tests/libs/Android.build.dlext_testzip.mk
index d05927e..7cc0dae 100644
--- a/tests/libs/Android.build.dlext_testzip.mk
+++ b/tests/libs/Android.build.dlext_testzip.mk
@@ -35,7 +35,7 @@
 $(LOCAL_BUILT_MODULE): PRIVATE_ALIGNMENT := 4096 # PAGE_SIZE
 $(LOCAL_BUILT_MODULE) : $(my_shared_libs) | $(ZIPALIGN)
 	@echo "Zipalign $(PRIVATE_ALIGNMENT): $@"
-	$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
-	$(hide) cp $^ $(dir $@)
-	$(hide) (cd $(dir $@) && touch empty_file.txt && zip -rD0 $(notdir $@).unaligned empty_file.txt *.so)
+	$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)/libdir
+	$(hide) cp $^ $(dir $@)/libdir
+	$(hide) (cd $(dir $@) && touch empty_file.txt && zip -rD0 $(notdir $@).unaligned empty_file.txt libdir/*.so)
 	$(hide) $(ZIPALIGN) $(PRIVATE_ALIGNMENT) $@.unaligned $@
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
index 7ca856c..da3fb1e 100644
--- a/tests/libs/Android.mk
+++ b/tests/libs/Android.mk
@@ -117,6 +117,17 @@
 build_target := SHARED_LIBRARY
 include $(TEST_PATH)/Android.build.mk
 
+# ----------------------------------------------------------------------------
+# Library with soname which does not match filename
+# ----------------------------------------------------------------------------
+libdlext_test_different_soname_src_files := \
+    dlext_test_library.cpp \
+
+module := libdlext_test_different_soname
+module_tag := optional
+libdlext_test_different_soname_ldflags := -Wl,-soname=libdlext_test_soname.so
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
 # -----------------------------------------------------------------------------
 # Library used by dlext tests - zipped and aligned
 # -----------------------------------------------------------------------------
@@ -360,6 +371,16 @@
 include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
+# Library to check RTLD_LOCAL with dlsym in 'this'
+# -----------------------------------------------------------------------------
+libtest_dlsym_from_this_src_files := dlsym_from_this.cpp
+
+module := libtest_dlsym_from_this
+libtest_dlsym_from_this_shared_libraries_target := libdl
+
+include $(LOCAL_PATH)/Android.build.testlib.mk
+
+# -----------------------------------------------------------------------------
 # Library with weak undefined function
 # -----------------------------------------------------------------------------
 libtest_dlopen_weak_undefined_func_src_files := \
@@ -376,13 +397,9 @@
 
 module := libtest_dlopen_from_ctor
 
-build_target := SHARED_LIBRARY
-build_type := host
-include $(TEST_PATH)/Android.build.mk
+libtest_dlopen_from_ctor_shared_libraries_target := libdl
 
-libtest_dlopen_from_ctor_shared_libraries := libdl
-build_type := target
-include $(TEST_PATH)/Android.build.mk
+include $(LOCAL_PATH)/Android.build.testlib.mk
 
 # -----------------------------------------------------------------------------
 # Library that depends on the library with constructor that calls dlopen() b/7941716
diff --git a/tests/libs/dlsym_from_this.cpp b/tests/libs/dlsym_from_this.cpp
new file mode 100644
index 0000000..b5215c9
--- /dev/null
+++ b/tests/libs/dlsym_from_this.cpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+#include <dlfcn.h>
+#include <stdio.h>
+
+int test_dlsym_symbol = 42;
+
+extern "C" int* lookup_dlsym_symbol_using_RTLD_DEFAULT() {
+  dlerror();
+  int* result = static_cast<int*>(dlsym(RTLD_DEFAULT, "test_dlsym_symbol"));
+  // TODO: remove this once b/20049306 is fixed
+  if (result == nullptr) {
+    printf("Cannot find the answer\n");
+  }
+  return result;
+}
+
diff --git a/tests/math_data/acos_intel_data.h b/tests/math_data/acos_intel_data.h
new file mode 100644
index 0000000..5c177ce
--- /dev/null
+++ b/tests/math_data/acos_intel_data.h
@@ -0,0 +1,1314 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_acos_intel_data[] = {
+  { // Entry 0
+    0x1.c8a538ae83d1f7ffffffffffffcef091p-1,
+    0x1.4182199998587p-1
+  },
+  { // Entry 1
+    0x1.520dc553f6b23800000000000226b93cp-2,
+    0x1.e45a1c93651ecp-1
+  },
+  { // Entry 2
+    0x1.91e006d41d8d8fffffffffffffffe4aep0,
+    0x1.fd737be914578p-11
+  },
+  { // Entry 3
+    0x1.efeef61d39ac1ffffffffffff8244904p-3,
+    0x1.f10fc61e2c78fp-1
+  },
+  { // Entry 4
+    0x1.0c152382d8f1bff4e139b41e4025d0fcp1,
+    -0x1.00000000060p-1
+  },
+  { // Entry 5
+    0x1.0c152382e0732be923fe009ea0c7355dp1,
+    -0x1.000000002p-1
+  },
+  { // Entry 6
+    0x1.d2cf5cbe8a4768000d63bae9c7297bcfp0,
+    -0x1.00000100001p-2
+  },
+  { // Entry 7
+    0x1.0c164c45aca25370b59ffdf4a18d65a1p1,
+    -0x1.0004040p-1
+  },
+  { // Entry 8
+    0x1.a222e1630a32c8001e3ce23da074be9bp0,
+    -0x1.0007ffffffffep-4
+  },
+  { // Entry 9
+    0x1.0c75b731b9c0ceed0fc3f7c5f98c5e1bp1,
+    -0x1.014e445bdcf7dp-1
+  },
+  { // Entry 10
+    0x1.0c8df00b6a96b44b4bbb209fc767369fp1,
+    -0x1.01a2037b1bac4p-1
+  },
+  { // Entry 11
+    0x1.0de4edea718bd2db5b8f1e8d95da11f5p1,
+    -0x1.064p-1
+  },
+  { // Entry 12
+    0x1.0e4b7c84d10ff2cdc09d8629c37c6bf9p1,
+    -0x1.07ap-1
+  },
+  { // Entry 13
+    0x1.0f2e40d09060f1a3d94731a6ca70a8ddp1,
+    -0x1.0aa7f71e6e71cp-1
+  },
+  { // Entry 14
+    0x1.0f43445ef5606fffa32df1d88ff691efp1,
+    -0x1.0aefb502023b6p-1
+  },
+  { // Entry 15
+    0x1.101adb881a80b24d6b78dbda9f109728p1,
+    -0x1.0dce1b9c37387p-1
+  },
+  { // Entry 16
+    0x1.10e62fa769e6534e688c4e0e33eca505p1,
+    -0x1.108p-1
+  },
+  { // Entry 17
+    0x1.11c33797afddabbea24dc3547594c5c0p1,
+    -0x1.136ae890a0b29p-1
+  },
+  { // Entry 18
+    0x1.1bae2535eaee0c1296c6eab12d27114ap1,
+    -0x1.340p-1
+  },
+  { // Entry 19
+    0x1.238d4f63c0137461ca7c6635fd0225bcp1,
+    -0x1.4c8df30e0f9f9p-1
+  },
+  { // Entry 20
+    0x1.bd4c060e9d4fa8000ae2414e49c449dep0,
+    -0x1.57cp-3
+  },
+  { // Entry 21
+    0x1.f3739df16d5810008dbb8f86206274e3p0,
+    -0x1.7c0p-2
+  },
+  { // Entry 22
+    0x1.359d26f93b6c08001b822971ead56e4cp1,
+    -0x1.7fffffffffff9p-1
+  },
+  { // Entry 23
+    0x1.f4aa0ecbe9ca07ff5383e6cbdeda0e6fp0,
+    -0x1.808p-2
+  },
+  { // Entry 24
+    0x1.3f176283f912f4d5c7129ad9f5141c1dp1,
+    -0x1.980p-1
+  },
+  { // Entry 25
+    0x1.92398cd07734cfff8e4658afba76b963p0,
+    -0x1.9d78c29270c37p-12
+  },
+  { // Entry 26
+    0x1.0241ccc7797b28001d8b3ed530288167p1,
+    -0x1.ba7c5af7cd988p-2
+  },
+  { // Entry 27
+    0x1.a0fad7a0ff6ff7ff77e44ec7b5ef9ba3p0,
+    -0x1.db2p-5
+  },
+  { // Entry 28
+    0x1.921fb54442d18469898cc51711854bddp0,
+    -0x1.f9a2475d37a04p-101
+  },
+  { // Entry 29
+    0x1.921fb54442d18469898cc517119368e5p0,
+    -0x1.fb65e86dc7e52p-101
+  },
+  { // Entry 30
+    0x1.821f3cbecf0a577f98d9122b4f7b3737p1,
+    -0x1.fc01190c5f1d4p-1
+  },
+  { // Entry 31
+    0x1.931eb46e6d8fd80019cf2ec002d1ea6ep0,
+    -0x1.fdfdfffffffffp-9
+  },
+  { // Entry 32
+    0x1.d2bdcdea4bbff28ee1513ce0581e6b80p0,
+    -0x1.ff77fffffffffp-3
+  },
+  { // Entry 33
+    0x1.b235294c376f9ffbe3cda85efb67c658p0,
+    -0x1.ffff7ffffffffp-4
+  },
+  { // Entry 34
+    0x1.0c1523808801280001696015d499795fp1,
+    -0x1.ffffffeffffe1p-2
+  },
+  { // Entry 35
+    0x1.9a200aa3332ca8002dd33eda52daa3b5p0,
+    -0x1.ffffffffff8ffp-6
+  },
+  { // Entry 36
+    0x1.0c152382d7340fff11bb3dc1f95c2689p1,
+    -0x1.fffffffffff03p-2
+  },
+  { // Entry 37
+    0x1.9a200aa3332e67f83053ef04d0a4eb45p0,
+    -0x1.ffffffffffffep-6
+  },
+  { // Entry 38
+    0x1.921fb54442d18869898cc517019839a2p0,
+    -0x1.fffffffffffffp-55
+  },
+  { // Entry 39
+    0x1.720a392c1d8527f0766bdc231b390704p0,
+    0x1.00000000008p-3
+  },
+  { // Entry 40
+    0x1.51700e0c1325b800d16de8911c74de7dp0,
+    0x1.00000000060p-2
+  },
+  { // Entry 41
+    0x1.720a392c198d30009edc2a4283eae411p0,
+    0x1.000000002p-3
+  },
+  { // Entry 42
+    0x1.0c1523804a159000007341c4be8459a3p0,
+    0x1.000000046b404p-1
+  },
+  { // Entry 43
+    0x1.0c15235de3e7cb9bd2348617696fafccp0,
+    0x1.0000004p-1
+  },
+  { // Entry 44
+    0x1.51700cf3291357ffa4ca332eb644f0f6p0,
+    0x1.0000044p-2
+  },
+  { // Entry 45
+    0x1.911fb1199613980023854405784aadecp0,
+    0x1.0004000000050p-8
+  },
+  { // Entry 46
+    0x1.512df2849c580e80a384e0df8f8e5a29p0,
+    0x1.010p-2
+  },
+  { // Entry 47
+    0x1.0a2f22b4aaf4137fd551484ed58a9734p0,
+    0x1.0347f8edc9a96p-1
+  },
+  { // Entry 48
+    0x1.4e34727b36618e7b44a67aa702c53623p0,
+    0x1.0c8p-2
+  },
+  { // Entry 49
+    0x1.04bc2567dc9f8cd86255dcf4fafa7693p0,
+    0x1.0c9e8916420b6p-1
+  },
+  { // Entry 50
+    0x1.04014982d9ce73c468c55eb187532cd7p0,
+    0x1.0ddc68b675658p-1
+  },
+  { // Entry 51
+    0x1.81385760faf0f7fe7fd9d1f793eb6e9bp0,
+    0x1.0e4390e4390e1p-4
+  },
+  { // Entry 52
+    0x1.4d7407811e5f8f522dfdeb46952e8762p0,
+    0x1.0f6671d3cee5ep-2
+  },
+  { // Entry 53
+    0x1.4d4c369ec6516bd075addb99a8f1fdc7p0,
+    0x1.0ffffffe0p-2
+  },
+  { // Entry 54
+    0x1.899f4edc942ce80055c005582a9d9f5fp0,
+    0x1.100000004p-5
+  },
+  { // Entry 55
+    0x1.02bb48da5f7b9308fc7983b9f555bdf9p0,
+    0x1.1005a3ac6f054p-1
+  },
+  { // Entry 56
+    0x1.028b1af46d959324ee19f46a706b7d35p0,
+    0x1.1057411e5735ap-1
+  },
+  { // Entry 57
+    0x1.020b51b1f72a8c2e4de9ec5488de7857p0,
+    0x1.112f8a27ba5d5p-1
+  },
+  { // Entry 58
+    0x1.01e697d61109f3bbb99fe25e8efaf83fp0,
+    0x1.116da6bf8b495p-1
+  },
+  { // Entry 59
+    0x1.017d9b789233f3964f1c62e3d1f18bb8p0,
+    0x1.121f157cb6c0ap-1
+  },
+  { // Entry 60
+    0x1.0176c4d6b5631326381f276a1cf5aff2p0,
+    0x1.122aa2913636cp-1
+  },
+  { // Entry 61
+    0x1.00d2160daa60f2dc9c5d2070d90ff117p0,
+    0x1.134093e8f975bp-1
+  },
+  { // Entry 62
+    0x1.0067819bc0a6131b2515e089e5ffead6p0,
+    0x1.13f438738f770p-1
+  },
+  { // Entry 63
+    0x1.005af0d670a69300326d1f919e90e37ep0,
+    0x1.1409633da0018p-1
+  },
+  { // Entry 64
+    0x1.0006aaab22f953446798783c17afa73ap0,
+    0x1.149748a9f1e12p-1
+  },
+  { // Entry 65
+    0x1.8dc1a761fc3e27ffddbace0c08f7d931p0,
+    0x1.178p-6
+  },
+  { // Entry 66
+    0x1.faedbe5d362f77e0e37df0ba380d6bf2p-1,
+    0x1.18e37509b64bfp-1
+  },
+  { // Entry 67
+    0x1.f723c85457f23e048017ebac9828f74ap-1,
+    0x1.1c0c71b0d77b4p-1
+  },
+  { // Entry 68
+    0x1.f40045aa068255be54395b26191ca6ecp-1,
+    0x1.1ea7972fc8124p-1
+  },
+  { // Entry 69
+    0x1.f3e4a7973ba9f5bc588023272bfd8fefp-1,
+    0x1.1ebe78e20b1c4p-1
+  },
+  { // Entry 70
+    0x1.f35b18d9133df5c3286ad7c7f3a599ebp-1,
+    0x1.1f306490c5782p-1
+  },
+  { // Entry 71
+    0x1.edf06e518f1d7e7d6318864553757b63p-1,
+    0x1.23a83d7649788p-1
+  },
+  { // Entry 72
+    0x1.edae9bcb630d4d2d95081b152b6797a3p-1,
+    0x1.23de545deeef6p-1
+  },
+  { // Entry 73
+    0x1.eb59d70c979f2da8249d5a4f58755b8fp-1,
+    0x1.25c7dcb26a9cap-1
+  },
+  { // Entry 74
+    0x1.ea55cf128780505242c68838513032e7p-1,
+    0x1.269cae16c3f63p-1
+  },
+  { // Entry 75
+    0x1.e0c7b682b6a8581abfbc77e99954db72p-1,
+    0x1.2e6p-1
+  },
+  { // Entry 76
+    0x1.d9b299bbb4e537ac6ff62206d2da36b3p-1,
+    0x1.340fb2423c6b3p-1
+  },
+  { // Entry 77
+    0x1.d538889085d30e4ca3abe981c9888d22p-1,
+    0x1.37a0130f68f6ap-1
+  },
+  { // Entry 78
+    0x1.8d4034388cd22fff892e9180c4337f63p0,
+    0x1.37db709c37bf5p-6
+  },
+  { // Entry 79
+    0x1.c8a538ae83d1f7ffffffffffffcef091p-1,
+    0x1.4182199998587p-1
+  },
+  { // Entry 80
+    0x1.3ea71520cf3d37faeb955cf605d0a7dbp0,
+    0x1.480p-2
+  },
+  { // Entry 81
+    0x1.be76e54ddede3ffe867c8817e7c6e06fp-1,
+    0x1.495e1625f7b6fp-1
+  },
+  { // Entry 82
+    0x1.921562b09cf0e8004c5a81cf221a6e56p0,
+    0x1.4a5274a529496p-13
+  },
+  { // Entry 83
+    0x1.af9fdabd59d9e658ff0e5e8c0c145370p-1,
+    0x1.5496e087b338fp-1
+  },
+  { // Entry 84
+    0x1.91f48e0a5cec37ffff970d899abc38d6p0,
+    0x1.5939cd8c9fbedp-11
+  },
+  { // Entry 85
+    0x1.a5282161b01857fa74d0820197a14f5ep-1,
+    0x1.5c55572447fb8p-1
+  },
+  { // Entry 86
+    0x1.9c0c4195064df7ffd3c667633bf7a651p-1,
+    0x1.62f42a09bce1dp-1
+  },
+  { // Entry 87
+    0x1.91c4c20a0ea7f800004eb45095fd191ap0,
+    0x1.6bcce1297373ep-10
+  },
+  { // Entry 88
+    0x1.339d18f59afb880000d2fbce3d9c08c2p0,
+    0x1.7182fc23eb316p-2
+  },
+  { // Entry 89
+    0x1.7ad4c5762d7b6800001a3adffeded5f4p0,
+    0x1.742b66dcd4308p-4
+  },
+  { // Entry 90
+    0x1.32882c24236038000cd47b0b46bba64ep0,
+    0x1.758b345cb9f3ep-2
+  },
+  { // Entry 91
+    0x1.7f46927c463a28062e3b1b0c16ac1bdbp-1,
+    0x1.771e38e0af4fcp-1
+  },
+  { // Entry 92
+    0x1.782ebe246cbe37e3fb6a1ef678b064bfp-1,
+    0x1.7be8d3908cb27p-1
+  },
+  { // Entry 93
+    0x1.7a40db57e99637fea04162825b2bc181p0,
+    0x1.7d6p-4
+  },
+  { // Entry 94
+    0x1.720a392c1d9517f0970e86dd5de5b635p-1,
+    0x1.8000000000002p-1
+  },
+  { // Entry 95
+    0x1.2e038f4737dfb7f94f31df896ea0ac7ap0,
+    0x1.864fbb7b12ad6p-2
+  },
+  { // Entry 96
+    0x1.657df1f3a0bc08338a7af19c234dfc3ap-1,
+    0x1.882efd2dd4220p-1
+  },
+  { // Entry 97
+    0x1.85cea1911701e80000bca0371b899679p0,
+    0x1.89fb8a6df15e2p-5
+  },
+  { // Entry 98
+    0x1.2a202393ed2377fd5857f95af8665161p0,
+    0x1.94a5294a52948p-2
+  },
+  { // Entry 99
+    0x1.781e4389c0b36fff9c101747cda30edcp0,
+    0x1.9f6p-4
+  },
+  { // Entry 100
+    0x1.5d318bf3e390e7fff88af7a5da604d3ap0,
+    0x1.a46e97f496ea3p-3
+  },
+  { // Entry 101
+    0x1.1b5148dd9e1bd7b01791138f3f325580p-1,
+    0x1.b397a5f961839p-1
+  },
+  { // Entry 102
+    0x1.1a583fd138fb37a3f6d2f07dbf3ec7b3p-1,
+    0x1.b41a53773a4e3p-1
+  },
+  { // Entry 103
+    0x1.14823c2657c87f555ecd15bb19387e6bp-1,
+    0x1.b721cf87383f3p-1
+  },
+  { // Entry 104
+    0x1.1301fd2ab34e480181c3a283011497c5p-1,
+    0x1.b7e6e68840de9p-1
+  },
+  { // Entry 105
+    0x1.12e096afcb7de8799b39619a4d425055p-1,
+    0x1.b7f7fc997bfe3p-1
+  },
+  { // Entry 106
+    0x1.05b944cc4600b7f611b44550901f0ceep-1,
+    0x1.be8cd7678f521p-1
+  },
+  { // Entry 107
+    0x1.8e9f6e1d3decc7fff55630ea5ccfd289p0,
+    0x1.c01ffffffffffp-7
+  },
+  { // Entry 108
+    0x1.ffc7ad9153ff2fd7a788766680d9a358p-2,
+    0x1.c16p-1
+  },
+  { // Entry 109
+    0x1.1dc2cb388dc96800004b1ca5a21af6b0p0,
+    0x1.c196ba7c38699p-2
+  },
+  { // Entry 110
+    0x1.fb29d815d149880a7b959c1fb8374fd0p-2,
+    0x1.c27a04ea38cddp-1
+  },
+  { // Entry 111
+    0x1.fb0f38754a0cf7f96b7417b739fd6712p-2,
+    0x1.c280586977fd3p-1
+  },
+  { // Entry 112
+    0x1.f1884288008e97f81e1bbdd955287e5bp-2,
+    0x1.c4bed345ea41ap-1
+  },
+  { // Entry 113
+    0x1.eb974d89e1c136026c6858b963f4f0d2p-2,
+    0x1.c62p-1
+  },
+  { // Entry 114
+    0x1.e297da83df05f62c3022324c50ec1611p-2,
+    0x1.c82f6b1c3d906p-1
+  },
+  { // Entry 115
+    0x1.589c2963846ca801074a478b55f6b7cap0,
+    0x1.c84p-3
+  },
+  { // Entry 116
+    0x1.cdd9f8d6e777f7ffff853f09a06b5911p-2,
+    0x1.ccccccd442bf9p-1
+  },
+  { // Entry 117
+    0x1.c42907c37d1b27cc0fa3350a28179421p-2,
+    0x1.cee437c4d6115p-1
+  },
+  { // Entry 118
+    0x1.bf05da450c97f7f8826c8bfaa9e0af95p-2,
+    0x1.cffbbf702a732p-1
+  },
+  { // Entry 119
+    0x1.bedf70d3703617fac6520f0337bf4a56p-2,
+    0x1.d003ddf5923bap-1
+  },
+  { // Entry 120
+    0x1.b5d5824cd5a5b7f84e927113df50ca1dp-2,
+    0x1.d1e84213079a0p-1
+  },
+  { // Entry 121
+    0x1.a858c231190e17fa9b20a3d037ec0e43p-2,
+    0x1.d4a9c16b6b42ep-1
+  },
+  { // Entry 122
+    0x1.9f6c7fe8723777fb3d256621194eb6f1p-2,
+    0x1.d6711059b2ce3p-1
+  },
+  { // Entry 123
+    0x1.9d5978ef2047b7f97b093ad7540b39b8p-2,
+    0x1.d6d99a0c90a6ap-1
+  },
+  { // Entry 124
+    0x1.9cb189645b2df7f79b30cb75dff78e0bp-2,
+    0x1.d6fa8f01023cfp-1
+  },
+  { // Entry 125
+    0x1.97b574226c7d77fd9b3bd3bc8ba77dd9p-2,
+    0x1.d7f35e4f0e194p-1
+  },
+  { // Entry 126
+    0x1.9613e250da73e8056bef22e9fe299078p-2,
+    0x1.d8442a16f8a05p-1
+  },
+  { // Entry 127
+    0x1.95e4749133f2a806cc1561ec93381a09p-2,
+    0x1.d84d5271eccedp-1
+  },
+  { // Entry 128
+    0x1.858c8c0e0f34bf9b87be908d0e8cd365p-2,
+    0x1.db658d47a4f02p-1
+  },
+  { // Entry 129
+    0x1.6bf38913626aa7ff1b8b15b0481456e5p-2,
+    0x1.e00000007ffffp-1
+  },
+  { // Entry 130
+    0x1.3c2328dda8571001f1fa3a4b1b738ab2p-2,
+    0x1.e7cb07ba8097ap-1
+  },
+  { // Entry 131
+    0x1.37fa7f88bd54d0023b864b207af0307cp-2,
+    0x1.e86bbf35007dfp-1
+  },
+  { // Entry 132
+    0x1.29ce7191cc2fe7ff1aee4a298866fa12p-2,
+    0x1.ea7feaf29d558p-1
+  },
+  { // Entry 133
+    0x1.1cedf22edfdaee581a28423c374a63e9p-2,
+    0x1.ec4e9a59613acp-1
+  },
+  { // Entry 134
+    0x1.110e9a3d93e5d3b661dc886b7dfc0145p0,
+    0x1.eeac200629b5dp-2
+  },
+  { // Entry 135
+    0x1.ffd3bf06ed2642f1bf646de4dfb90f14p-3,
+    0x1.f018068f84bdep-1
+  },
+  { // Entry 136
+    0x1.106ef026ab7e73cb6256ab29382a05f3p0,
+    0x1.f0daf154de72cp-2
+  },
+  { // Entry 137
+    0x1.ecd91ecf5a9e8000fcf0fe2a481676b9p-3,
+    0x1.f13efac234068p-1
+  },
+  { // Entry 138
+    0x1.d75772546bfc7f3d87511ce008b8b8c3p-3,
+    0x1.f28p-1
+  },
+  { // Entry 139
+    0x1.d5b9693237ace821fe875ccefd4cc418p-3,
+    0x1.f297929fe63cap-1
+  },
+  { // Entry 140
+    0x1.af6c2d4b59de08016fcef2f0148a746dp-3,
+    0x1.f4ae875c6bacbp-1
+  },
+  { // Entry 141
+    0x1.a6be0361001ee8060af2ba4dd0c50aa9p-3,
+    0x1.f5218a91baa07p-1
+  },
+  { // Entry 142
+    0x1.0ee85baa5eb7f3fbe1fccd08bc3b4492p0,
+    0x1.f62ec3b97b60cp-2
+  },
+  { // Entry 143
+    0x1.0e9a941b232133fa63772cc6a091171bp0,
+    0x1.f73dcf73dcf70p-2
+  },
+  { // Entry 144
+    0x1.6c424b343238b7c44b51bd77c7190160p-3,
+    0x1.f7ec434d201d1p-1
+  },
+  { // Entry 145
+    0x1.6a83017dfb54de59e9192470188662cfp-3,
+    0x1.f80p-1
+  },
+  { // Entry 146
+    0x1.90252d2c42cd97ffe9be50f9322516ccp0,
+    0x1.fa86cd7cf3513p-8
+  },
+  { // Entry 147
+    0x1.0d58a360c87c4bbf3d29d0f4a82169bbp0,
+    0x1.fb9dc5ca73720p-2
+  },
+  { // Entry 148
+    0x1.fa6c651bf32d78660fb62ba8468a8cc0p-4,
+    0x1.fc1775dbef1abp-1
+  },
+  { // Entry 149
+    0x1.f7c328cf834cd87de2b639509dda5de1p-4,
+    0x1.fc21ef3b98990p-1
+  },
+  { // Entry 150
+    0x1.f3c8ed27ef9f283f2ac70ec9d6098d19p-4,
+    0x1.fc317cd691f52p-1
+  },
+  { // Entry 151
+    0x1.eea6e96b75ead807baca906e58bb8059p-4,
+    0x1.fc4560a02d712p-1
+  },
+  { // Entry 152
+    0x1.0d1a4cf1b1fd73b9c4a8b5017d645f3bp0,
+    0x1.fc76453e6bae8p-2
+  },
+  { // Entry 153
+    0x1.df3494c7556a03ecf756bf4c5c1d24b7p-4,
+    0x1.fc7ffffffffffp-1
+  },
+  { // Entry 154
+    0x1.0d05103b42c9940e6e6c705d65e17858p0,
+    0x1.fccp-2
+  },
+  { // Entry 155
+    0x1.9c9bb5b4c94c8001b817fedb0eaca0ecp-4,
+    0x1.fd678a5a7385ep-1
+  },
+  { // Entry 156
+    0x1.f4f3987cd68ff86900930a2b99148f4fp-5,
+    0x1.ff0b016f7cb8bp-1
+  },
+  { // Entry 157
+    0x1.b96fe9afa4c148152f48dd9ea74565d6p-5,
+    0x1.ff41bf1886212p-1
+  },
+  { // Entry 158
+    0x1.a38189360e584c2c315c37b74a8de324p-5,
+    0x1.ff542d4af33e4p-1
+  },
+  { // Entry 159
+    0x1.def2feb427f5869945b1e63446daac8ep-6,
+    0x1.ffc7fffffffffp-1
+  },
+  { // Entry 160
+    0x1.911fb919aa13a80003dab66eeb93af47p0,
+    0x1.fff7ffep-9
+  },
+  { // Entry 161
+    0x1.7bb96d689be7ca1030e43bc3fecb819ap-8,
+    0x1.fffdccc1d701fp-1
+  },
+  { // Entry 162
+    0x1.b95e54541a071ffcc559e575e1c45d84p-9,
+    0x1.ffff41c283750p-1
+  },
+  { // Entry 163
+    0x1.9464bc1fea5e476fc7c730847ef2072cp-9,
+    0x1.ffff604c81f35p-1
+  },
+  { // Entry 164
+    0x1.2380ce33ccc5d81a1da42a66818b51f4p-9,
+    0x1.ffffad047cd7bp-1
+  },
+  { // Entry 165
+    0x1.0c1524bceb518c3bb68d2d3c320fc558p0,
+    0x1.fffffbbffffffp-2
+  },
+  { // Entry 166
+    0x1.feffc038c368f967261955172b2d21e2p-12,
+    0x1.fffffc03fffffp-1
+  },
+  { // Entry 167
+    0x1.821d0973b4a0b0016c6b1edfcc06b6ffp0,
+    0x1.fffffe3ffffffp-5
+  },
+  { // Entry 168
+    0x1.9eb04d49b225986a90691720b967589ap-13,
+    0x1.ffffff5810533p-1
+  },
+  { // Entry 169
+    0x1.3988e15f98f3dd3665a7a72d97547617p-13,
+    0x1.ffffff9ffffffp-1
+  },
+  { // Entry 170
+    0x1.bb67aed2e237162c8ad96b5482f602bep-14,
+    0x1.ffffffcffffffp-1
+  },
+  { // Entry 171
+    0x1.6514ba909fbbf3226dfd735dfdf42191p-14,
+    0x1.ffffffe0ded2ep-1
+  },
+  { // Entry 172
+    0x1.911fb519a01327ffffaff63cfe51a6ffp0,
+    0x1.fffffff001050p-9
+  },
+  { // Entry 173
+    0x1.0c152386e1d2f41799a6b289b1db9e6cp0,
+    0x1.fffffff1fffffp-2
+  },
+  { // Entry 174
+    0x1.3988e7c8d4f60f003e750e7129eb31cdp-16,
+    0x1.fffffffe7ffffp-1
+  },
+  { // Entry 175
+    0x1.deeeb2316401cb2cb77ada03ca8dd431p-17,
+    0x1.ffffffff1ffffp-1
+  },
+  { // Entry 176
+    0x1.752ea8a9db933d7df1d6cffb00007a5ap-18,
+    0x1.ffffffffddfffp-1
+  },
+  { // Entry 177
+    0x1.deefb2c32530bab30cf8bbb0a6928f4cp-19,
+    0x1.fffffffff1fffp-1
+  },
+  { // Entry 178
+    0x1.0c152382daad2c41d08ab091f9f43ac6p0,
+    0x1.fffffffff3fffp-2
+  },
+  { // Entry 179
+    0x1.b000000000cd0800000106bc80666823p-19,
+    0x1.fffffffff49c0p-1
+  },
+  { // Entry 180
+    0x1.0c152382d7c177dbb5c7b51c4e876e71p0,
+    0x1.fffffffffe1e1p-2
+  },
+  { // Entry 181
+    0x1.911fb5199813a8003eb04539417cd403p0,
+    0x1.fffffffffffd0p-9
+  },
+  { // Entry 182
+    0x1.0c152382d736ab69cc6c36f54e0a958bp0,
+    0x1.fffffffffffeep-2
+  },
+  { // Entry 183
+    0x1.8000000000000900000000000091ccccp-25,
+    0x1.ffffffffffff7p-1
+  },
+  { // Entry 184
+    0x1.0c152382d73673fcd69b865c0010cf96p0,
+    0x1.ffffffffffffap-2
+  },
+  { // Entry 185
+    0x1.4d5341b00be8a7fed4c5dfdc2eee1ccbp-2,
+    0x1.e51cfe3b1ba8bp-1
+  },
+  { // Entry 186
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 187
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 188
+    0x1.da22859b2d5c27c2d45ce750728c8805p-1,
+    0x1.33b645a1cac08p-1
+  },
+  { // Entry 189
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 190
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 191
+    0x1.359d26f93b6c32551ad5cf63b6549b57p1,
+    -0x1.8p-1
+  },
+  { // Entry 192
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 193
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 194
+    0x1.9e7c9b89260e3bcb44d14a8fdac1fd70p-8,
+    0x1.fffd60e94ee39p-1
+  },
+  { // Entry 195
+    0x1.921fb54442d18469898c851701b839a2p0,
+    0x1.0p-82
+  },
+  { // Entry 196
+    0x1.921fb54442d18461898cc51701b839a2p0,
+    0x1.0p-61
+  },
+  { // Entry 197
+    0x1.921fb54442918469898cc51701b839a1p0,
+    0x1.0p-42
+  },
+  { // Entry 198
+    0x1.921fb14442d184697ee21a6c570d422ap0,
+    0x1.0p-22
+  },
+  { // Entry 199
+    0x1.916ab041f915522c7a634527690e82a5p0,
+    0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 200
+    0x1.916ab041f91552247a614526a90e32a5p0,
+    0x1.6a09e667f3bccp-9
+  },
+  { // Entry 201
+    0x1.916ab041f915521c7a5f4525e90de2a5p0,
+    0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 202
+    0x1.90b5aae52c79b2aa66b36d577b951ab5p0,
+    0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 203
+    0x1.90b5aae52c79b29a66a36d3f7b6d1a70p0,
+    0x1.6a09e667f3bccp-8
+  },
+  { // Entry 204
+    0x1.90b5aae52c79b28a66936d277b451a2ap0,
+    0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 205
+    0x1.8f4b9db1f59a78450728d07fcec82844p0,
+    0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 206
+    0x1.8f4b9db1f59a782506a8cd7fbac79c4cp0,
+    0x1.6a09e667f3bccp-7
+  },
+  { // Entry 207
+    0x1.8f4b9db1f59a78050628ca7fa6c71049p0,
+    0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 208
+    0x1.8c776f7d7291f51392f5b98b4f9ef640p0,
+    0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 209
+    0x1.8c776f7d7291f4d38ef559814e86d71dp0,
+    0x1.6a09e667f3bccp-6
+  },
+  { // Entry 210
+    0x1.8c776f7d7291f4938af4f9774d6eb79fp0,
+    0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 211
+    0x1.86ce747eb5cb996caf44709717fef092p0,
+    0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 212
+    0x1.86ce747eb5cb98ec8f386b94e7027fe1p0,
+    0x1.6a09e667f3bccp-5
+  },
+  { // Entry 213
+    0x1.86ce747eb5cb986c6f2c6692b6060c5ap0,
+    0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 214
+    0x1.7b77852c631c38160912d4bff04e41e2p0,
+    0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 215
+    0x1.7b77852c631c37150790505801c3579cp0,
+    0x1.6a09e667f3bccp-4
+  },
+  { // Entry 216
+    0x1.7b77852c631c3614060dcbf013385671p0,
+    0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 217
+    0x1.64a144217a8f043112de5f55544e1c28p0,
+    0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 218
+    0x1.64a144217a8f0228e1955e7984b3f71bp0,
+    0x1.6a09e667f3bccp-3
+  },
+  { // Entry 219
+    0x1.64a144217a8f0020b04c5d9db5191435p0,
+    0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 220
+    0x1.359d26f93b6c3905e6d6ef5eb0f574adp0,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 221
+    0x1.359d26f93b6c34bf331d9755a68a7afcp0,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 222
+    0x1.359d26f93b6c30787f643f4c9c1897fdp0,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 223
+    0x1.91420151498adc61fb274f09e54f1937p0,
+    0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 224
+    0x1.91420151498adc59fb244f08354e0b37p0,
+    0x1.bb67ae8584caap-9
+  },
+  { // Entry 225
+    0x1.91420151498adc51fb214f06854cfd36p0,
+    0x1.bb67ae8584cabp-9
+  },
+  { // Entry 226
+    0x1.90644cb8084a289e0fdaf319a3d72d0bp0,
+    0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 227
+    0x1.90644cb8084a288e0fc2f2e3a3502baap0,
+    0x1.bb67ae8584caap-8
+  },
+  { // Entry 228
+    0x1.90644cb8084a287e0faaf2ada2c92a48p0,
+    0x1.bb67ae8584cabp-8
+  },
+  { // Entry 229
+    0x1.8ea8def973a3419f8672de627481cc16p0,
+    0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 230
+    0x1.8ea8def973a3417f85b2d7a230ff0745p0,
+    0x1.bb67ae8584caap-7
+  },
+  { // Entry 231
+    0x1.8ea8def973a3415f84f2d0e1ed7c4267p0,
+    0x1.bb67ae8584cabp-7
+  },
+  { // Entry 232
+    0x1.8b31df18893670912b1c1be4889884efp0,
+    0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 233
+    0x1.8b31df1889367051251b43c2c30e15fcp0,
+    0x1.bb67ae8584caap-6
+  },
+  { // Entry 234
+    0x1.8b31df18893670111f1a6ba0fd83a699p0,
+    0x1.bb67ae8584cabp-6
+  },
+  { // Entry 235
+    0x1.8442bbd27f036dec946a1fbdbfe07d8fp0,
+    0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 236
+    0x1.8442bbd27f036d6c644f0ed2a561b9aap0,
+    0x1.bb67ae8584caap-5
+  },
+  { // Entry 237
+    0x1.8442bbd27f036cec3433fde78ae2f24bp0,
+    0x1.bb67ae8584cabp-5
+  },
+  { // Entry 238
+    0x1.765b4c48040219666b2fef59fcb0d2d4p0,
+    0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 239
+    0x1.765b4c4804021864e7c768f7896df8efp0,
+    0x1.bb67ae8584caap-4
+  },
+  { // Entry 240
+    0x1.765b4c4804021763645ee295162b02d4p0,
+    0x1.bb67ae8584cabp-4
+  },
+  { // Entry 241
+    0x1.5a417dae31bf8205988e1afc294b93e7p0,
+    0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 242
+    0x1.5a417dae31bf7ff92827db161a0e0411p0,
+    0x1.bb67ae8584caap-3
+  },
+  { // Entry 243
+    0x1.5a417dae31bf7decb7c19b300acf85f9p0,
+    0x1.bb67ae8584cabp-3
+  },
+  { // Entry 244
+    0x1.1f7a90695ca9046f7f711f3c5271788dp0,
+    0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 245
+    0x1.1f7a90695ca8ffff78c910422d09179bp0,
+    0x1.bb67ae8584caap-2
+  },
+  { // Entry 246
+    0x1.1f7a90695ca8fb8f72210148079740eep0,
+    0x1.bb67ae8584cabp-2
+  },
+  { // Entry 247
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.fffffffffffffp-128
+  },
+  { // Entry 248
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.0p-127
+  },
+  { // Entry 249
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.0000000000001p-127
+  },
+  { // Entry 250
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffffffffffp-127
+  },
+  { // Entry 251
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.0p-126
+  },
+  { // Entry 252
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.0000000000001p-126
+  },
+  { // Entry 253
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 254
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022
+  },
+  { // Entry 255
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 256
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0
+  },
+  { // Entry 258
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074
+  },
+  { // Entry 259
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 260
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022
+  },
+  { // Entry 261
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 262
+    0x1.921fb54042d18469898ce50c570d8ef7p0,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 263
+    0x1.921fb54042d18469898cc50c570d8ef7p0,
+    0x1.0p-30
+  },
+  { // Entry 264
+    0x1.921fb54042d18469898c850c570d8ef7p0,
+    0x1.0000000000001p-30
+  },
+  { // Entry 265
+    0x1.921fb52442d18469898dafc1ac62e44cp0,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 266
+    0x1.921fb52442d18469898cafc1ac62e44cp0,
+    0x1.0p-27
+  },
+  { // Entry 267
+    0x1.921fb52442d18469898aafc1ac62e44cp0,
+    0x1.0000000000001p-27
+  },
+  { // Entry 268
+    0x1.921fb4c442d18469898b6fc1ac62e44cp0,
+    0x1.fffffffffffffp-26
+  },
+  { // Entry 269
+    0x1.921fb4c442d1846989876fc1ac62e44cp0,
+    0x1.0p-25
+  },
+  { // Entry 270
+    0x1.921fb4c442d18469897f6fc1ac62e44bp0,
+    0x1.0000000000001p-25
+  },
+  { // Entry 271
+    0x1.921bb54442c6d9befe954da08765547fp0,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 272
+    0x1.921bb54442c6d9bede954d9f87655473p0,
+    0x1.0p-14
+  },
+  { // Entry 273
+    0x1.921bb54442c6d9be9e954d9d8765545bp0,
+    0x1.0000000000001p-14
+  },
+  { // Entry 274
+    0x1.8e1faa994b5731853e59876423331a32p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 275
+    0x1.8e1faa994b5731653d597b63832a59bcp0,
+    0x1.0p-6
+  },
+  { // Entry 276
+    0x1.8e1faa994b5731253b5963624318d8a0p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 277
+    0x1.8a1f5fe55274a09adac41ad9214797d8p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 278
+    0x1.8a1f5fe55274a05ad2c29a890fc3a730p0,
+    0x1.0p-5
+  },
+  { // Entry 279
+    0x1.8a1f5fe552749fdac2bf99e8ecbbc462p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 280
+    0x1.821d0965ad9b6ba3be317b82a5a09c93p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 281
+    0x1.821d0965ad9b6b237e01535f8603a3acp0,
+    0x1.0p-4
+  },
+  { // Entry 282
+    0x1.821d0965ad9b6a22fda1031946c9a5cep0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 283
+    0x1.720a392c1d954953c0f01dccd7296f92p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 284
+    0x1.720a392c1d954851badbd6cd2d8e792cp0,
+    0x1.0p-3
+  },
+  { // Entry 285
+    0x1.720a392c1d95464daeb348cdda582a13p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 286
+    0x1.51700e0c14b25200dff9b6fda0f736e3p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 287
+    0x1.51700e0c14b24ff015655c5ec5a7aaa3p0,
+    0x1.0p-2
+  },
+  { // Entry 288
+    0x1.51700e0c14b24bce803ca7210f054413p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 289
+    0x1.0c152382d7365ce4c584921c1d87f0edp0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 290
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.0p-1
+  },
+  { // Entry 291
+    0x1.0c152382d7364f09881065f5c83b9e1ap0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 292
+    0x1.00000000000000aaaaaaaaaaaaabddddp-26,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 293
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 294
+    0x1.921fb54442d1be716ce093b94fb839a2p-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 295
+    0x1.921fb54442d1a7d0ce7a147d853839a2p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 296
+    0x1.921fb54442d1913030139541b9b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 297
+    0x1.921fb54442d17a8f91ad1605ed3839a2p-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 298
+    0x1.921fb54442d163eef34696ca1fb839a2p-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 299
+    0x1.0c152382d736a6bca69b88f03d8186d0p-1,
+    0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 300
+    0x1.0c152382d73686bca69b88f0444486cdp-1,
+    0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 301
+    0x1.0c152382d73666bca69b88f04790b76cp-1,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 302
+    0x1.0c152382d73646bca69b88f0476618afp-1,
+    0x1.bb67ae8584cabp-1
+  },
+  { // Entry 303
+    0x1.0c152382d73626bca69b88f043c4aa95p-1,
+    0x1.bb67ae8584cacp-1
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 305
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p0
+  },
+  { // Entry 306
+    0x1.00000000000000aaaaaaaaaaaaabddddp-26,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 307
+    0x1.921fb52442d18469898cafc1ac62e44cp1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 308
+    0x1.55bcf3c4a46940e467961a6926261188p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 309
+    0x1.3cb0785319b734306fa73e7cb82eb540p1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 310
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 311
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 312
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022
+  },
+  { // Entry 313
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022
+  },
+  { // Entry 314
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 316
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 317
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 318
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1073
+  },
+  { // Entry 319
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1073
+  },
+  { // Entry 320
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074
+  },
+  { // Entry 321
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074
+  },
+  { // Entry 322
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0
+  },
+  { // Entry 323
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/acosf_intel_data.h b/tests/math_data/acosf_intel_data.h
new file mode 100644
index 0000000..1dca9a6
--- /dev/null
+++ b/tests/math_data/acosf_intel_data.h
@@ -0,0 +1,982 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_acosf_intel_data[] = {
+  { // Entry 0
+    0x1.0c257a7050fc3cea24f3029a2ad2e815p1,
+    -0x1.003898p-1
+  },
+  { // Entry 1
+    0x1.0c5f16794284a814e57dd1aeaff2935dp1,
+    -0x1.01p-1
+  },
+  { // Entry 2
+    0x1.0c8b0a779009c3775eee358be153ba65p1,
+    -0x1.0198p-1
+  },
+  { // Entry 3
+    0x1.0c9c667630ac1465b612be91f8800305p1,
+    -0x1.01d4p-1
+  },
+  { // Entry 4
+    0x1.0ca922436a0ff902c6cea7bee39f2164p1,
+    -0x1.02p-1
+  },
+  { // Entry 5
+    0x1.0cb2657e0dce844aad10d5211ad1439cp1,
+    -0x1.0220p-1
+  },
+  { // Entry 6
+    0x1.0df8b9ffd527aa217e668eed5b98130dp1,
+    -0x1.0684p-1
+  },
+  { // Entry 7
+    0x1.0e677d6ca16a0aa3a9d0e12324b56b7fp1,
+    -0x1.08p-1
+  },
+  { // Entry 8
+    0x1.b3374800692e62ccb28232cf124403efp0,
+    -0x1.08p-3
+  },
+  { // Entry 9
+    0x1.0f93197d31106d9f9dba9ce88846e520p1,
+    -0x1.0cp-1
+  },
+  { // Entry 10
+    0x1.1123e56d1de1347426f6fa3a25b95c8cp1,
+    -0x1.1150dap-1
+  },
+  { // Entry 11
+    0x1.112abd8e560b61295f76c37854cc404dp1,
+    -0x1.1168p-1
+  },
+  { // Entry 12
+    0x1.e678d3006dfeea8466508e9c6fee67a4p0,
+    -0x1.4b5228p-2
+  },
+  { // Entry 13
+    0x1.979fd100670d576688cfaa662e894818p0,
+    -0x1.60p-6
+  },
+  { // Entry 14
+    0x1.921fb60042d08469899dab0c12058f59p0,
+    -0x1.77fffep-25
+  },
+  { // Entry 15
+    0x1.07828bffbd26a9f5425b3c7691d1145fp1,
+    -0x1.e0p-2
+  },
+  { // Entry 16
+    0x1.821faef0618143c8461491fc02984220p1,
+    -0x1.fc0152p-1
+  },
+  { // Entry 17
+    0x1.854911067d00b04f895724d24d2830a4p1,
+    -0x1.fd6d40p-1
+  },
+  { // Entry 18
+    0x1.892b29068f5ed60cbc8141ceb1ff1701p1,
+    -0x1.febf58p-1
+  },
+  { // Entry 19
+    0x1.892d7afb015ab37d6eccc7ff7772b447p1,
+    -0x1.febffep-1
+  },
+  { // Entry 20
+    0x1.922fb500357c0d0df814593ed0d8a6f6p0,
+    -0x1.fff77ep-13
+  },
+  { // Entry 21
+    0x1.d2cf54ff929e2d5be1416c50d9d79662p0,
+    -0x1.ffffc6p-3
+  },
+  { // Entry 22
+    0x1.516fecff6adfa313f251aed1e1a22f51p0,
+    0x1.000080p-2
+  },
+  { // Entry 23
+    0x1.720a22ff97b83535612cba12029c626cp0,
+    0x1.0000b0p-3
+  },
+  { // Entry 24
+    0x1.920fb5000026b79d1a03feae60b3ad18p0,
+    0x1.000444p-12
+  },
+  { // Entry 25
+    0x1.0c0296fe93cb8e2df049d07fc1f71573p0,
+    0x1.002020p-1
+  },
+  { // Entry 26
+    0x1.0becac0001ed95caabc8aaf7ac71baadp0,
+    0x1.004614p-1
+  },
+  { // Entry 27
+    0x1.821444fffa502058fee64d29443f6673p0,
+    0x1.008cp-4
+  },
+  { // Entry 28
+    0x1.921fa50002d18466bc2fbaf2dfbfe5c0p0,
+    0x1.0444p-20
+  },
+  { // Entry 29
+    0x1.89fc5200006860d664f1779f6433bb6bp0,
+    0x1.04612ep-5
+  },
+  { // Entry 30
+    0x1.066d06ff24cb086507a3136cbe17f53bp0,
+    0x1.09bcp-1
+  },
+  { // Entry 31
+    0x1.004b2400184a6783cce37c77124fbad7p0,
+    0x1.1424p-1
+  },
+  { // Entry 32
+    0x1.8dce2b0000002047ed2091cba08e645dp0,
+    0x1.145f36p-6
+  },
+  { // Entry 33
+    0x1.ff4e43161f8e1568e3cef5ea955e27aep-1,
+    0x1.1538p-1
+  },
+  { // Entry 34
+    0x1.fbfd9c80230bbece7389c23697ccf2fbp-1,
+    0x1.18p-1
+  },
+  { // Entry 35
+    0x1.fb5652006b924c37b98c87daeb1d82ecp-1,
+    0x1.188cp-1
+  },
+  { // Entry 36
+    0x1.fb42a430e00edbd5da24f337e1d23079p-1,
+    0x1.189c76p-1
+  },
+  { // Entry 37
+    0x1.fa6f4f234b75986db2db5b5dc5c48cecp-1,
+    0x1.194d22p-1
+  },
+  { // Entry 38
+    0x1.f77a1830c13bdad867d6c4b90616f090p-1,
+    0x1.1bc49ep-1
+  },
+  { // Entry 39
+    0x1.f573250e683e3fad23db66c319161854p-1,
+    0x1.1d74p-1
+  },
+  { // Entry 40
+    0x1.f265000c4bfabe772e7612fd97fed272p-1,
+    0x1.1ffcp-1
+  },
+  { // Entry 41
+    0x1.f2602bf7f44f7de8784eb95d1beba89bp-1,
+    0x1.1ffffep-1
+  },
+  { // Entry 42
+    0x1.f25de4fe24f7cf27cd316d2820678f2fp-1,
+    0x1.2001e0p-1
+  },
+  { // Entry 43
+    0x1.f196d900045457fd3b54c3489c7c98bep-1,
+    0x1.20a65cp-1
+  },
+  { // Entry 44
+    0x1.ecaf3b0005b758518583cf278db2ae82p-1,
+    0x1.24b002p-1
+  },
+  { // Entry 45
+    0x1.6d695dffff9b6175c1d6960d5402e86cp0,
+    0x1.24b148p-3
+  },
+  { // Entry 46
+    0x1.e9e3edfe52297b7e3bda43edcec28af5p-1,
+    0x1.26f9cap-1
+  },
+  { // Entry 47
+    0x1.e8e04cff129c3819b1047ff1f1783828p-1,
+    0x1.27cddap-1
+  },
+  { // Entry 48
+    0x1.e859c30003395e0da55cc100bf66122ep-1,
+    0x1.283ba0p-1
+  },
+  { // Entry 49
+    0x1.e0c1d61d78cd94b9d9e6ec7562ec236fp-1,
+    0x1.2e64bep-1
+  },
+  { // Entry 50
+    0x1.ddff723813e38a441c78c70496a65788p-1,
+    0x1.309da4p-1
+  },
+  { // Entry 51
+    0x1.886e55001396e3f47532d8a787794f14p0,
+    0x1.361910p-5
+  },
+  { // Entry 52
+    0x1.d4121631cf7cf3b517f471b456bebde0p-1,
+    0x1.388980p-1
+  },
+  { // Entry 53
+    0x1.ca9495fb7b2ac583f7b612b659bb4d75p-1,
+    0x1.3ffffep-1
+  },
+  { // Entry 54
+    0x1.c4957352aa82e9e602a75716c087d355p-1,
+    0x1.44a8b6p-1
+  },
+  { // Entry 55
+    0x1.baa309030f555d66a64a3c50d49ca0e4p-1,
+    0x1.4c49ecp-1
+  },
+  { // Entry 56
+    0x1.aea132fb898a11ba65de612cf32c7f6cp-1,
+    0x1.5554dap-1
+  },
+  { // Entry 57
+    0x1.668f1f001255d1b8844c2bf7d8b804dep0,
+    0x1.5ad6b0p-3
+  },
+  { // Entry 58
+    0x1.a633baf67d350b07cd61c177ab058a1ep-1,
+    0x1.5b9108p-1
+  },
+  { // Entry 59
+    0x1.a37262f499382b280c29295c80043ef3p-1,
+    0x1.5d95aap-1
+  },
+  { // Entry 60
+    0x1.a1945af39258c47400a7049b0fa1ced0p-1,
+    0x1.5ef254p-1
+  },
+  { // Entry 61
+    0x1.a022c6f49c36ad7986e19f087aa933d9p-1,
+    0x1.5fff12p-1
+  },
+  { // Entry 62
+    0x1.37fab2ffff9477b036f349972197c2bep0,
+    0x1.612c3ap-2
+  },
+  { // Entry 63
+    0x1.65b292ffffcc939788e4b6d487fe8cdfp0,
+    0x1.61a112p-3
+  },
+  { // Entry 64
+    0x1.9b8ff4fe183afaa47464c07e624d4445p-1,
+    0x1.634db4p-1
+  },
+  { // Entry 65
+    0x1.96dc1701b6e0eb4ea1fcf021a2c3d38ap-1,
+    0x1.66acaap-1
+  },
+  { // Entry 66
+    0x1.8e32af0006512524b5cd8aeb6e63c791p-1,
+    0x1.6ccdd4p-1
+  },
+  { // Entry 67
+    0x1.804bbd016ca13c18200362deaa59fed2p-1,
+    0x1.766c48p-1
+  },
+  { // Entry 68
+    0x1.4fd532ffffd0b23ae975cddd912591b4p-1,
+    0x1.95c09ap-1
+  },
+  { // Entry 69
+    0x1.788c1b00007236e7c664a0714def797bp0,
+    0x1.988b72p-4
+  },
+  { // Entry 70
+    0x1.426b63ffff75484d98afbacb71fd1a5ap-1,
+    0x1.9dcaf8p-1
+  },
+  { // Entry 71
+    0x1.39de4eff95f8ac0807aca0b9cdd04a1dp-1,
+    0x1.a2c556p-1
+  },
+  { // Entry 72
+    0x1.38f16effff9e4e67514d5d63a0a6557dp-1,
+    0x1.a34d72p-1
+  },
+  { // Entry 73
+    0x1.1a76cb056f41ba8d9cd68713a9c2b0a3p-1,
+    0x1.b40a52p-1
+  },
+  { // Entry 74
+    0x1.1ee3e8000050338f0fc9efe7ffb60bdcp0,
+    0x1.bd8696p-2
+  },
+  { // Entry 75
+    0x1.02bedad86f18596f026ada4944e9c33dp-1,
+    0x1.bfffe2p-1
+  },
+  { // Entry 76
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-1,
+    0x1.c0p-1
+  },
+  { // Entry 77
+    0x1.ff8307c1ec4e07784126d1b4edd06823p-2,
+    0x1.c17072p-1
+  },
+  { // Entry 78
+    0x1.fe02b6529120aa515e1832349a662dfep-2,
+    0x1.c1cc5ep-1
+  },
+  { // Entry 79
+    0x1.759edd0162a92b1a62937275448bb090p0,
+    0x1.c71c72p-4
+  },
+  { // Entry 80
+    0x1.e3689a62e92c874e13f58948bcfc3f8ep-2,
+    0x1.c7fffep-1
+  },
+  { // Entry 81
+    0x1.5840c3ffff9a16c02ea4a0bc7608d63cp0,
+    0x1.cb08aep-3
+  },
+  { // Entry 82
+    0x1.75490d00012add014fd20781cfa59149p0,
+    0x1.cc70d8p-4
+  },
+  { // Entry 83
+    0x1.c2d789028d1b6bc4445359a77b66b22cp-2,
+    0x1.cf2c3cp-1
+  },
+  { // Entry 84
+    0x1.befee4fdeaa4df1ce9fca3988ffc256fp-2,
+    0x1.cffd38p-1
+  },
+  { // Entry 85
+    0x1.15851afc2ea1823412c4566b9741155ap0,
+    0x1.def7b0p-2
+  },
+  { // Entry 86
+    0x1.54cf89ffff9b35c2d6f0eec1cdddd7fcp0,
+    0x1.e5d44cp-3
+  },
+  { // Entry 87
+    0x1.736f86ffff8f1c8e0754f45ce46de0f0p0,
+    0x1.e9d60ep-4
+  },
+  { // Entry 88
+    0x1.11bd758662c5b5d2186c1d298cf7f0b2p0,
+    0x1.ec4746p-2
+  },
+  { // Entry 89
+    0x1.e0f8c30892663dadc7f43b5a93088423p-3,
+    0x1.f1f1fep-1
+  },
+  { // Entry 90
+    0x1.e007dfb3698110ebd1dc3d45233e2c73p-3,
+    0x1.f1fffep-1
+  },
+  { // Entry 91
+    0x1.d1fa8b029886129544d943c684a8ceb5p-3,
+    0x1.f2cddcp-1
+  },
+  { // Entry 92
+    0x1.b4df86024b58e8e96534a6e26d324fa2p-3,
+    0x1.f46522p-1
+  },
+  { // Entry 93
+    0x1.39d7acf9d6e48f39ad2962a89d3a8b86p-3,
+    0x1.f9fffep-1
+  },
+  { // Entry 94
+    0x1.0d6dbe7f2e341b18c74019a99120f59cp0,
+    0x1.fb5472p-2
+  },
+  { // Entry 95
+    0x1.0c5eb8f7ab8c9e685b9d22e45d04f3a2p0,
+    0x1.ff0104p-2
+  },
+  { // Entry 96
+    0x1.0c55c92a56134b333fbf4af2c68a3854p0,
+    0x1.ff1ffep-2
+  },
+  { // Entry 97
+    0x1.0c4e426ce9414f08c194150bdcbcf176p0,
+    0x1.ff3a14p-2
+  },
+  { // Entry 98
+    0x1.8220dcff801a88159a8ca341c9eec793p0,
+    0x1.ff85cap-5
+  },
+  { // Entry 99
+    0x1.0c17983d1def4e82b953bdfc7dff0dfbp0,
+    0x1.fff77ep-2
+  },
+  { // Entry 100
+    0x1.0c159a71ec12c92e12b2592f98c68b03p0,
+    0x1.fffe64p-2
+  },
+  { // Entry 101
+    0x1.800009000091ccd901171c6034e7b4d3p-9,
+    0x1.ffff70p-1
+  },
+  { // Entry 102
+    0x1.901fb3feeb35c355e40ef2b73166eccep0,
+    0x1.fffff0p-8
+  },
+  { // Entry 103
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 104
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 105
+    0x1.da2285254e79544ff70a5c48f856e1e2p-1,
+    0x1.33b646p-1
+  },
+  { // Entry 106
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 107
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 108
+    0x1.359d26f93b6c32551ad5cf63b6549b57p1,
+    -0x1.80p-1
+  },
+  { // Entry 109
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 110
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 111
+    0x1.9ec4a1ffeb4da0d834c0a89f94a8e3d5p-8,
+    0x1.fffd60p-1
+  },
+  { // Entry 112
+    0x1.921fb54442d18469898c851701b839a2p0,
+    0x1.p-82
+  },
+  { // Entry 113
+    0x1.921fb54442d18461898cc51701b839a2p0,
+    0x1.p-61
+  },
+  { // Entry 114
+    0x1.921fb54442918469898cc51701b839a1p0,
+    0x1.p-42
+  },
+  { // Entry 115
+    0x1.921fb14442d184697ee21a6c570d422ap0,
+    0x1.p-22
+  },
+  { // Entry 116
+    0x1.916ab0432d0f7d830e55bf5f9d23ea06p0,
+    0x1.6a09e4p-9
+  },
+  { // Entry 117
+    0x1.916ab0422d0f3d82f6d4f8e3e0b0161ap0,
+    0x1.6a09e6p-9
+  },
+  { // Entry 118
+    0x1.916ab0412d0efd82de9f2ced603175a1p0,
+    0x1.6a09e8p-9
+  },
+  { // Entry 119
+    0x1.90b5aae7946fd751bb3f0dd6bd9c3a5fp0,
+    0x1.6a09e4p-8
+  },
+  { // Entry 120
+    0x1.90b5aae5946dd74ebf3432e311714a32p0,
+    0x1.6a09e6p-8
+  },
+  { // Entry 121
+    0x1.90b5aae3946bd74bbd811f5ec41a8d1cp0,
+    0x1.6a09e8p-8
+  },
+  { // Entry 122
+    0x1.8f4b9db6c59531b64c9d1cca72a60098p0,
+    0x1.6a09e4p-7
+  },
+  { // Entry 123
+    0x1.8f4b9db2c585315669ef5257a125885ep0,
+    0x1.6a09e6p-7
+  },
+  { // Entry 124
+    0x1.8f4b9daec57530f659fe2c00c0828556p0,
+    0x1.6a09e8p-7
+  },
+  { // Entry 125
+    0x1.8c776f8712faf332f0569d2e2b1c8af2p0,
+    0x1.6a09e4p-6
+  },
+  { // Entry 126
+    0x1.8c776f7f127ae732aee9a38c00683c31p0,
+    0x1.6a09e6p-6
+  },
+  { // Entry 127
+    0x1.8c776f7711fadb31032ed772064bfaa2p0,
+    0x1.6a09e8p-6
+  },
+  { // Entry 128
+    0x1.86ce7491fa3b3515774393cc5a2ac8d1p0,
+    0x1.6a09e4p-5
+  },
+  { // Entry 129
+    0x1.86ce7481f639b47d2b513503952d36b3p0,
+    0x1.6a09e6p-5
+  },
+  { // Entry 130
+    0x1.86ce7471f23833d9868e1a1ce3223d95p0,
+    0x1.6a09e8p-5
+  },
+  { // Entry 131
+    0x1.7b77855309115e60277dd0adb2d211ecp0,
+    0x1.6a09e4p-4
+  },
+  { // Entry 132
+    0x1.7b778532e8e10e138c0530964bec6a45p0,
+    0x1.6a09e6p-4
+  },
+  { // Entry 133
+    0x1.7b778512c8b0bd6b5bde9418a60c5362p0,
+    0x1.6a09e8p-4
+  },
+  { // Entry 134
+    0x1.64a1446fb469cb3e8129d8af56970d03p0,
+    0x1.6a09e4p-3
+  },
+  { // Entry 135
+    0x1.64a1442eae40ad38e802ab2319096ca4p0,
+    0x1.6a09e6p-3
+  },
+  { // Entry 136
+    0x1.64a143eda8178c3be9e58f8805a8cd99p0,
+    0x1.6a09e8p-3
+  },
+  { // Entry 137
+    0x1.359d279dda2c8084c57122774bedccd7p0,
+    0x1.6a09e4p-2
+  },
+  { // Entry 138
+    0x1.359d271503b568f326aba2ee1163aa56p0,
+    0x1.6a09e6p-2
+  },
+  { // Entry 139
+    0x1.359d268c2d3e35bc4ee9def9a883b8e9p0,
+    0x1.6a09e8p-2
+  },
+  { // Entry 140
+    0x1.914201528c4dbab3248745b01274284cp0,
+    0x1.bb67acp-9
+  },
+  { // Entry 141
+    0x1.914201518c4d5ab2ef2fcf50924bc48fp0,
+    0x1.bb67aep-9
+  },
+  { // Entry 142
+    0x1.914201508c4cfab2b8faa420a6e84290p0,
+    0x1.bb67b0p-9
+  },
+  { // Entry 143
+    0x1.90644cba8dd2bb7dbce6a8d00d628b45p0,
+    0x1.bb67acp-8
+  },
+  { // Entry 144
+    0x1.90644cb88dcfbb77021b3572c356f712p0,
+    0x1.bb67aep-8
+  },
+  { // Entry 145
+    0x1.90644cb68dccbb704062042fba36ba7fp0,
+    0x1.bb67b0p-8
+  },
+  { // Entry 146
+    0x1.8ea8defe7ecb1a0937cbd2748d94a22cp0,
+    0x1.bb67acp-7
+  },
+  { // Entry 147
+    0x1.8ea8defa7eb31931598919ba7b226aebp0,
+    0x1.bb67aep-7
+  },
+  { // Entry 148
+    0x1.8ea8def67e9b185943d5855cab6b8f1ep0,
+    0x1.bb67b0p-7
+  },
+  { // Entry 149
+    0x1.8b31df22a03bceab93822903a64e5616p0,
+    0x1.bb67acp-6
+  },
+  { // Entry 150
+    0x1.8b31df1a9f7bb3a8ac8516ff422b02efp0,
+    0x1.bb67aep-6
+  },
+  { // Entry 151
+    0x1.8b31df129ebb98a409a384915d8a1e46p0,
+    0x1.bb67b0p-6
+  },
+  { // Entry 152
+    0x1.8442bbe6b2be94bbdc8bc8ce90846342p0,
+    0x1.bb67acp-5
+  },
+  { // Entry 153
+    0x1.8442bbd6acbb32a90fcd44a67b9dbfa7p0,
+    0x1.bb67aep-5
+  },
+  { // Entry 154
+    0x1.8442bbc6a6b7d088582c015aa929c60bp0,
+    0x1.bb67b0p-5
+  },
+  { // Entry 155
+    0x1.765b4c70995cb6fd1a5785f37349503ep0,
+    0x1.bb67acp-4
+  },
+  { // Entry 156
+    0x1.765b4c5068efa686a263561080ef83d3p0,
+    0x1.bb67aep-4
+  },
+  { // Entry 157
+    0x1.765b4c303882959f56467ba4dca02931p0,
+    0x1.bb67b0p-4
+  },
+  { // Entry 158
+    0x1.5a417e00d83327c69d7b1be72667fb7ap0,
+    0x1.bb67acp-3
+  },
+  { // Entry 159
+    0x1.5a417dbf4a26629ee6bfd4a919213520p0,
+    0x1.bb67aep-3
+  },
+  { // Entry 160
+    0x1.5a417d7dbc1999be28c737a49a8b1a97p0,
+    0x1.bb67b0p-3
+  },
+  { // Entry 161
+    0x1.1f7a911c6589a2670979ee4bbce207acp0,
+    0x1.bb67acp-2
+  },
+  { // Entry 162
+    0x1.1f7a908e64b4bd515e30fcb0d207f55cp0,
+    0x1.bb67aep-2
+  },
+  { // Entry 163
+    0x1.1f7a900063dfb264c88f3cfb5460a189p0,
+    0x1.bb67b0p-2
+  },
+  { // Entry 164
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.fffff8p-128
+  },
+  { // Entry 165
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.p-127
+  },
+  { // Entry 166
+    0x1.921fb54442d18469898cc51701b839a0p0,
+    0x1.000004p-127
+  },
+  { // Entry 167
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 168
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 169
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 170
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.000002p-126
+  },
+  { // Entry 171
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.p-126
+  },
+  { // Entry 172
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 173
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149
+  },
+  { // Entry 174
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0
+  },
+  { // Entry 175
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149
+  },
+  { // Entry 176
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 177
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 178
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 179
+    0x1.921fb54042d18869898cc50c570daef7p0,
+    0x1.fffffep-31
+  },
+  { // Entry 180
+    0x1.921fb54042d18469898cc50c570d8ef7p0,
+    0x1.p-30
+  },
+  { // Entry 181
+    0x1.921fb54042d17c69898cc50c570d4ef7p0,
+    0x1.000002p-30
+  },
+  { // Entry 182
+    0x1.921fb52442d1a469898cafc1aca2e44cp0,
+    0x1.fffffep-28
+  },
+  { // Entry 183
+    0x1.921fb52442d18469898cafc1ac62e44cp0,
+    0x1.p-27
+  },
+  { // Entry 184
+    0x1.921fb52442d14469898cafc1abe2e44bp0,
+    0x1.000002p-27
+  },
+  { // Entry 185
+    0x1.921fb4c442d2046989876fc1bc62e43cp0,
+    0x1.fffffep-26
+  },
+  { // Entry 186
+    0x1.921fb4c442d1846989876fc1ac62e44cp0,
+    0x1.p-25
+  },
+  { // Entry 187
+    0x1.921fb4c442d0846989876fc18c62e40cp0,
+    0x1.000002p-25
+  },
+  { // Entry 188
+    0x1.921bb54446c6d9befe954d8107655c32p0,
+    0x1.fffffep-15
+  },
+  { // Entry 189
+    0x1.921bb54442c6d9bede954d9f87655473p0,
+    0x1.p-14
+  },
+  { // Entry 190
+    0x1.921bb5443ac6d9be9e954d1c8764f2f6p0,
+    0x1.000002p-14
+  },
+  { // Entry 191
+    0x1.8e1faa9d4b7732e531579341ed5c2713p0,
+    0x1.fffffep-7
+  },
+  { // Entry 192
+    0x1.8e1faa994b5731653d597b63832a59bcp0,
+    0x1.p-6
+  },
+  { // Entry 193
+    0x1.8e1faa914b172e64954b49fe82828e16p0,
+    0x1.000002p-6
+  },
+  { // Entry 194
+    0x1.8a1f5fed5374d063d492faf2e989f5e8p0,
+    0x1.fffffep-6
+  },
+  { // Entry 195
+    0x1.8a1f5fe55274a05ad2c29a890fc3a730p0,
+    0x1.p-5
+  },
+  { // Entry 196
+    0x1.8a1f5fd550744042cce1237e8c427b18p0,
+    0x1.000002p-5
+  },
+  { // Entry 197
+    0x1.821d0975b5a1701fd5e5e3dfab724e1dp0,
+    0x1.fffffep-5
+  },
+  { // Entry 198
+    0x1.821d0965ad9b6b237e01535f8603a3acp0,
+    0x1.p-4
+  },
+  { // Entry 199
+    0x1.821d09459d8f60fa85ddb8a001b22154p0,
+    0x1.000002p-4
+  },
+  { // Entry 200
+    0x1.720a394c5e57d0f0286bae477c8095f1p0,
+    0x1.fffffep-4
+  },
+  { // Entry 201
+    0x1.720a392c1d954851badbd6cd2d8e792cp0,
+    0x1.p-3
+  },
+  { // Entry 202
+    0x1.720a38eb9c10358bb1e5dd06059098b3p0,
+    0x1.000002p-3
+  },
+  { // Entry 203
+    0x1.51700e4e2e04d90fe58757f33d17c63ep0,
+    0x1.fffffep-3
+  },
+  { // Entry 204
+    0x1.51700e0c14b24ff015655c5ec5a7aaa3p0,
+    0x1.p-2
+  },
+  { // Entry 205
+    0x1.51700d87e20d30783166a45543964e85p0,
+    0x1.000002p-2
+  },
+  { // Entry 206
+    0x1.0c152416a4706c25c04942fa8bb98d98p0,
+    0x1.fffffep-2
+  },
+  { // Entry 207
+    0x1.0c152382d73658465bb32e0f567ad116p0,
+    0x1.p-1
+  },
+  { // Entry 208
+    0x1.0c15225b3cc19cba57f7f9cdea23cba7p0,
+    0x1.000002p-1
+  },
+  { // Entry 209
+    0x1.6a09e6861f3aadd17681ee6db029b4c0p-12,
+    0x1.fffffep-1
+  },
+  { // Entry 210
+    0.0,
+    0x1.p0
+  },
+  { // Entry 211
+    0x1.921fbb7f6d0f8469b1df49c77c9d4d49p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 212
+    0x1.921fb8ab59498469901db80ff0ba49ecp-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 213
+    0x1.921fb5d7457f84698994d9949c77055ep-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 214
+    0x1.921fb30331b1846987a41075fbfb2392p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 215
+    0x1.921fb02f1ddf846973aabe148b701d17p-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 216
+    0x1.0c152c8de0a83d8e4e5b1362f47a87c2p-1,
+    0x1.bb67aap-1
+  },
+  { // Entry 217
+    0x1.0c15288de0c0a374f676f4425482c282p-1,
+    0x1.bb67acp-1
+  },
+  { // Entry 218
+    0x1.0c15248de0cb2e1ef42023dc8eb80020p-1,
+    0x1.bb67aep-1
+  },
+  { // Entry 219
+    0x1.0c15208de0c7dd8ba756ab16a2362af4p-1,
+    0x1.bb67b0p-1
+  },
+  { // Entry 220
+    0x1.0c151c8de0b6b1ba701a8724928ef46ap-1,
+    0x1.bb67b2p-1
+  },
+  { // Entry 221
+    0.0,
+    0x1.p0
+  },
+  { // Entry 222
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p0
+  },
+  { // Entry 223
+    0x1.6a09e6861f3aadd17681ee6db029b4c0p-12,
+    0x1.fffffep-1
+  },
+  { // Entry 224
+    0x1.921464f50ea08a941b0111078e4ab854p1,
+    -0x1.fffffep-1
+  },
+  { // Entry 225
+    0x1.55bcf295580042e4947664b4c398a672p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 226
+    0x1.3cb0789eecd173b0646f2be9d0d21005p1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 227
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.000002p-126
+  },
+  { // Entry 228
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.000002p-126
+  },
+  { // Entry 229
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.p-126
+  },
+  { // Entry 230
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.p-126
+  },
+  { // Entry 231
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffffcp-127
+  },
+  { // Entry 232
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 233
+    0x1.921fb54442d18469898cc51701b8399ep0,
+    0x1.fffff8p-127
+  },
+  { // Entry 234
+    0x1.921fb54442d18469898cc51701b839a6p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 235
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-148
+  },
+  { // Entry 236
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-148
+  },
+  { // Entry 237
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149
+  },
+  { // Entry 238
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149
+  },
+  { // Entry 239
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0.0f
+  },
+  { // Entry 240
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/acosh_intel_data.h b/tests/math_data/acosh_intel_data.h
new file mode 100644
index 0000000..69552f8
--- /dev/null
+++ b/tests/math_data/acosh_intel_data.h
@@ -0,0 +1,958 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_acosh_intel_data[] = {
+  { // Entry 0
+    0x1.52417db067f37fff78da0e59c786a63ep8,
+    0x1.0000000000001p487
+  },
+  { // Entry 1
+    0x1.132def2b505ebfb768161d82be1f888dp9,
+    0x1.0000000000001p793
+  },
+  { // Entry 2
+    0x1.0979b1dbc2e56800030ba9b06cf83f10p9,
+    0x1.000000000001fp765
+  },
+  { // Entry 3
+    0x1.2c2fc595456a2807214d0087f4432d47p-23,
+    0x1.000000000002cp0
+  },
+  { // Entry 4
+    0x1.7fffffffffff70000000000091ccccccp-23,
+    0x1.0000000000048p0
+  },
+  { // Entry 5
+    0x1.fffffffffffaaaaaaaaaaad111111111p-22,
+    0x1.00000000002p0
+  },
+  { // Entry 6
+    0x1.bb67ae854d5db16a878f9eb2adb06a0bp-16,
+    0x1.000000018p0
+  },
+  { // Entry 7
+    0x1.69dca2563fe028021e9094ed47ed04ecp-15,
+    0x1.00000003ff0p0
+  },
+  { // Entry 8
+    0x1.30fc1934f09c97ff42ffecad467897fdp6,
+    0x1.000000cp109
+  },
+  { // Entry 9
+    0x1.6c275e69b28b4441b5463b5476d53758p-10,
+    0x1.0000103p0
+  },
+  { // Entry 10
+    0x1.b1e5d906d5ed79cefcae2668c5f67c8ap-10,
+    0x1.000016fb5b0c4p0
+  },
+  { // Entry 11
+    0x1.deee9cb901ed887353ce5684cd29c83ep-10,
+    0x1.00001c0p0
+  },
+  { // Entry 12
+    0x1.deee5b3e7d4c333cbcba1f16d8473a1ep-8,
+    0x1.0001cp0
+  },
+  { // Entry 13
+    0x1.ffffaaaad110fa35b2e863129439b017p-8,
+    0x1.00020p0
+  },
+  { // Entry 14
+    0x1.338a7b0a9bbf4515d91fc94b631d949bp-7,
+    0x1.0002e2ec3f80cp0
+  },
+  { // Entry 15
+    0x1.398892de8eab46dddf895e6b2df71e14p-7,
+    0x1.00030p0
+  },
+  { // Entry 16
+    0x1.bb66d0d2d8d230fe173d0d972c5321a0p-7,
+    0x1.00060p0
+  },
+  { // Entry 17
+    0x1.ffdea9ecfe4a23fd37592420dd1e4aecp-7,
+    0x1.0007ff0p0
+  },
+  { // Entry 18
+    0x1.6a0803b6df85a5a6a28a7d24344fd7bcp-6,
+    0x1.001p0
+  },
+  { // Entry 19
+    0x1.13b744b6fc24081df6488fc0a0521447p-5,
+    0x1.00251f4dbf0f3p0
+  },
+  { // Entry 20
+    0x1.5164c776eb38b7a1b4e392209f7cd76cp0,
+    0x1.00380p1
+  },
+  { // Entry 21
+    0x1.74927a59064b972c627d0f8dbf3a208bp-5,
+    0x1.0043ca3ea0570p0
+  },
+  { // Entry 22
+    0x1.e9b61fa83327114a9499c4386197f7ecp-5,
+    0x1.007522166b864p0
+  },
+  { // Entry 23
+    0x1.4a6b504ae30bf818ff58df731784a2e5p-4,
+    0x1.00d55a07e7d7dp0
+  },
+  { // Entry 24
+    0x1.6e48df1bd304d83259b7350ef19d654ap-4,
+    0x1.010636f08d98cp0
+  },
+  { // Entry 25
+    0x1.86cc84485647b80c608bfc977c465c3ep-4,
+    0x1.012a83d511968p0
+  },
+  { // Entry 26
+    0x1.8c96a62f43fda829f2c6aa64fc7c3f52p-4,
+    0x1.01336eaa27065p0
+  },
+  { // Entry 27
+    0x1.c96ae158c261681aae2f1ac5b1e7b53dp-4,
+    0x1.01991427286a7p0
+  },
+  { // Entry 28
+    0x1.fd303bdcd51d207b38fd033ccca4ebe0p-4,
+    0x1.01fb0b7471c13p0
+  },
+  { // Entry 29
+    0x1.01fbf091ad42880b50591ac5a3c25a55p-3,
+    0x1.0208a7bec3ef6p0
+  },
+  { // Entry 30
+    0x1.2142780a5b4da80572f1f1e417c281e0p-3,
+    0x1.028ec4a860985p0
+  },
+  { // Entry 31
+    0x1.c6f3debc6b9baf8fd4952d3e75007116p4,
+    0x1.040p40
+  },
+  { // Entry 32
+    0x1.b776eaca67a8d81470ca11e3c19618f4p-3,
+    0x1.05ea9e87359f0p0
+  },
+  { // Entry 33
+    0x1.c738f388674bbffeab4246796640039ap-3,
+    0x1.0659a435f099fp0
+  },
+  { // Entry 34
+    0x1.f33d4f7790f6982e3cae58a8f5a4c85cp-3,
+    0x1.07a4d97d8d94cp0
+  },
+  { // Entry 35
+    0x1.f6ac7bad8b4ac7489787663c51fd8389p-3,
+    0x1.07cp0
+  },
+  { // Entry 36
+    0x1.fc25c7d91809f80c15ad7b8a098904e9p-3,
+    0x1.07ebaac665ee8p0
+  },
+  { // Entry 37
+    0x1.14d72e562b86f80b92db76914c1a8483p-2,
+    0x1.0969a517e7390p0
+  },
+  { // Entry 38
+    0x1.3724eb536abd17f3549fde7c0a8bcc78p4,
+    0x1.0a05028140ap27
+  },
+  { // Entry 39
+    0x1.424e1a83309277fc74e6252f9ccff51ep4,
+    0x1.0b31d5526e304p28
+  },
+  { // Entry 40
+    0x1.42dc24aefea4a00000f4c4c42f7676bdp-2,
+    0x1.0cd48770c2348p0
+  },
+  { // Entry 41
+    0x1.aa3dbe48def817845faa61fd5cb0449ap-2,
+    0x1.168p0
+  },
+  { // Entry 42
+    0x1.6c0ff5895036d14a54136cb97458c3a1p0,
+    0x1.18c6318c6318cp1
+  },
+  { // Entry 43
+    0x1.14aeaf2cf882b800017816b0634a51c7p1,
+    0x1.1999999a7f91bp2
+  },
+  { // Entry 44
+    0x1.c636c1b2700c78000114e5846e56f02ap-2,
+    0x1.1999999abcb84p0
+  },
+  { // Entry 45
+    0x1.c636c1b55e89800000206f2d5b63746ep-2,
+    0x1.1999999b12b2fp0
+  },
+  { // Entry 46
+    0x1.c636c1b787628800007e1a95058e28f9p-2,
+    0x1.1999999b52092p0
+  },
+  { // Entry 47
+    0x1.c636c1bc867dc0000156a1eae635a35ep-2,
+    0x1.1999999be4936p0
+  },
+  { // Entry 48
+    0x1.c636c1c7da2afffffeb98fc860cd7ceep-2,
+    0x1.1999999d30c68p0
+  },
+  { // Entry 49
+    0x1.c6d30f1d087751157fa51c32440dd291p-2,
+    0x1.19ab84ff770f9p0
+  },
+  { // Entry 50
+    0x1.38138021525b17f5a7d79c6787045fbap4,
+    0x1.19f9842cbe9dap27
+  },
+  { // Entry 51
+    0x1.cff8efdd68b8b000088f99302f13fd55p-2,
+    0x1.1abb14934c112p0
+  },
+  { // Entry 52
+    0x1.4345ce06726eeffd3deec654e93bb704p4,
+    0x1.1bd9ff3818250p28
+  },
+  { // Entry 53
+    0x1.da627b574124041f55d0b8534c07caa2p-2,
+    0x1.1bf734206562ep0
+  },
+  { // Entry 54
+    0x1.dcfa110e4d2be4e60f4c2c7b792aa979p-2,
+    0x1.1c4711c4711c4p0
+  },
+  { // Entry 55
+    0x1.e4f600bca9b43c7505820f34625aedf8p-2,
+    0x1.1d4p0
+  },
+  { // Entry 56
+    0x1.435af0cd8723f7fc0f030744eaf5e4f3p4,
+    0x1.1d51ee6904f05p28
+  },
+  { // Entry 57
+    0x1.f66cd8a589f9e801dcbbaba95fa2db1bp-2,
+    0x1.1f7p0
+  },
+  { // Entry 58
+    0x1.fb04da24bd3263c3c19595829f887623p-2,
+    0x1.2006d9ba6b627p0
+  },
+  { // Entry 59
+    0x1.fb4d685e13d1738553151c2a08436513p-2,
+    0x1.201034be9b997p0
+  },
+  { // Entry 60
+    0x1.fd9747d199d9e34b5ee5a758b3a33b2ep-2,
+    0x1.205bf510b5de4p0
+  },
+  { // Entry 61
+    0x1.fde64921f2be26d349af15c65d2baec8p-2,
+    0x1.206633589fb42p0
+  },
+  { // Entry 62
+    0x1.ff88ab5b57988a62645ec106c4097863p-2,
+    0x1.209c8ea824394p0
+  },
+  { // Entry 63
+    0x1.ffaa5d190b3e38a2f5978b0cbdef37c0p-2,
+    0x1.20a0f16a1f3a8p0
+  },
+  { // Entry 64
+    0x1.43d0ccb7eaf817fbfc58bb2d606c246ap4,
+    0x1.25a62ecd4ac96p28
+  },
+  { // Entry 65
+    0x1.25942d7ea38d3037fdf235c374a0a10ap-1,
+    0x1.2b4p0
+  },
+  { // Entry 66
+    0x1.1eb90fcb975c97e99a03cd4e9ecf7efep1,
+    0x1.30000000e4cffp2
+  },
+  { // Entry 67
+    0x1.1ed61acd1cef37f72ebe2150d786654ap1,
+    0x1.304376382bfc1p2
+  },
+  { // Entry 68
+    0x1.1f962e5c168007edbcf9aaa8334a7be8p1,
+    0x1.32032a240af45p2
+  },
+  { // Entry 69
+    0x1.1fda546800eb981039b042c0a6205a51p1,
+    0x1.32a2a7cec80a3p2
+  },
+  { // Entry 70
+    0x1.1ff53fa69f9f6813df120c0fc9a7c82fp1,
+    0x1.32e1bf98770d2p2
+  },
+  { // Entry 71
+    0x1.85a6fe5151e877fffe89df73281dac1ep0,
+    0x1.333333335c4e7p1
+  },
+  { // Entry 72
+    0x1.203dae008f42281336198904d353a9d3p1,
+    0x1.338bc6d217390p2
+  },
+  { // Entry 73
+    0x1.204200d0ad3cb80822eaaf1a8fd400eep1,
+    0x1.3395f01ec30aep2
+  },
+  { // Entry 74
+    0x1.2180ae42458557f160869fa88bfdd767p1,
+    0x1.3686b30ec28f9p2
+  },
+  { // Entry 75
+    0x1.22824d7775d127ed6249aedcd653a683p1,
+    0x1.38ecbb448bb60p2
+  },
+  { // Entry 76
+    0x1.24d7aa57e09e200f0fa51b8e122a50d1p1,
+    0x1.3e8fa3e8fa3e8p2
+  },
+  { // Entry 77
+    0x1.24ead0998b45e80c15775fe412fa3476p1,
+    0x1.3ebe5740abf57p2
+  },
+  { // Entry 78
+    0x1.9119c13a31baffe46835ab2266588de9p0,
+    0x1.4p1
+  },
+  { // Entry 79
+    0x1.638eab49216f8ee9217f986540739282p-1,
+    0x1.404p0
+  },
+  { // Entry 80
+    0x1.663100c2a4fe2251bc802e040c21517cp-1,
+    0x1.413e827d04fa0p0
+  },
+  { // Entry 81
+    0x1.2a8a45eb147ce80084d5dc0629061b72p1,
+    0x1.4cc5baf5c8392p2
+  },
+  { // Entry 82
+    0x1.834b2cacec9cf00000bf6612e57cbe8fp-1,
+    0x1.4ccccccd6481ap0
+  },
+  { // Entry 83
+    0x1.834b2cb510a9c7fffe91256bde54bbddp-1,
+    0x1.4cccccd0c613dp0
+  },
+  { // Entry 84
+    0x1.869f689d41e5ae1cbc4db884da78fec0p-1,
+    0x1.4e309016165fcp0
+  },
+  { // Entry 85
+    0x1.dfcd5df1bc2707ffd5ca5383f4cce6e7p1,
+    0x1.53d4f53d4f53cp4
+  },
+  { // Entry 86
+    0x1.2e3bb6dd0b0ae0067c5f911faaaa78ddp1,
+    0x1.5655956559564p2
+  },
+  { // Entry 87
+    0x1.30af83c42c157ff130f6bbdfb23ca759p1,
+    0x1.5cd735cd735ccp2
+  },
+  { // Entry 88
+    0x1.af87977409910c12e8a8802fd87c6abfp-1,
+    0x1.6070381c0e040p0
+  },
+  { // Entry 89
+    0x1.3bacc53061f3b7f7d9035c57315345fbp4,
+    0x1.6118461184610p27
+  },
+  { // Entry 90
+    0x1.b2066fe0952af7fd5b1a52e397d20b42p-1,
+    0x1.619f89771feaap0
+  },
+  { // Entry 91
+    0x1.b243d68391f9d80c17216d59e4919bafp-1,
+    0x1.61bccd7f349c4p0
+  },
+  { // Entry 92
+    0x1.bbe95ab6d25078000176eb5757518ce0p-1,
+    0x1.6666666a4d8cap0
+  },
+  { // Entry 93
+    0x1.bce47c50e597e80168ea6ea197b7c5fbp-1,
+    0x1.66e198e40a07cp0
+  },
+  { // Entry 94
+    0x1.c4b434e7858417fe5522bdc24515e3abp-1,
+    0x1.6ac2abcce660fp0
+  },
+  { // Entry 95
+    0x1.b4b0591fab93e80c344916601f3f98fep0,
+    0x1.6c0p1
+  },
+  { // Entry 96
+    0x1.c9e777034bed37fc519e004af23c57ecp-1,
+    0x1.6d63c0cb542d6p0
+  },
+  { // Entry 97
+    0x1.cda9310b784e5000aeae7baa2dcc4cfcp-1,
+    0x1.6f5p0
+  },
+  { // Entry 98
+    0x1.d169426b135d0bbab276664d9f830c71p-1,
+    0x1.7140727bb4fa3p0
+  },
+  { // Entry 99
+    0x1.d740fdf53668a1bcea81609db9e0db68p-1,
+    0x1.745p0
+  },
+  { // Entry 100
+    0x1.bc01207bd25b6801df8e788fb5f41357p0,
+    0x1.75e32cf383997p1
+  },
+  { // Entry 101
+    0x1.ecc2caec5160436e6ef0c4dfd37de905p-1,
+    0x1.7fffffffffffdp0
+  },
+  { // Entry 102
+    0x1.ecc2caf0a75cdffffe93419822098956p-1,
+    0x1.800000026c803p0
+  },
+  { // Entry 103
+    0x1.ee3b06ecea5ed564406442d07861a73fp-1,
+    0x1.80d2ba083b446p0
+  },
+  { // Entry 104
+    0x1.f314c9cb875be7f25915ef6fe8147ea7p-1,
+    0x1.839p0
+  },
+  { // Entry 105
+    0x1.f4ba2f1cad8f475dfb4fa048b5cece75p-1,
+    0x1.848p0
+  },
+  { // Entry 106
+    0x1.fbd18e6aa534eed05007aee3d66b990ap-1,
+    0x1.8895b461da6c6p0
+  },
+  { // Entry 107
+    0x1.9bdb225dace4b0005714c41371dff0c4p1,
+    0x1.90240902409p3
+  },
+  { // Entry 108
+    0x1.0c0616dbd301e000016d7f0d89731675p0,
+    0x1.9999999ac11f3p0
+  },
+  { // Entry 109
+    0x1.d4d19d0a825927fe1b0973d8b461e8edp0,
+    0x1.99cp1
+  },
+  { // Entry 110
+    0x1.4c703d5db8586802badfb82b797d3dc0p1,
+    0x1.b0020p2
+  },
+  { // Entry 111
+    0x1.1efb699cdcd33801fb03b9466fdd60fap0,
+    0x1.b26c9b26c9b26p0
+  },
+  { // Entry 112
+    0x1.2d72a3ace48437fde986eb51409ae273p0,
+    0x1.c6f61e8a542a8p0
+  },
+  { // Entry 113
+    0x1.f1b4656fac2777ff0b0732f4ed9eaaf0p0,
+    0x1.c86p1
+  },
+  { // Entry 114
+    0x1.5550540d3de547fce11196feb22aa2e1p1,
+    0x1.ceb1dd915e476p2
+  },
+  { // Entry 115
+    0x1.e4db571e008197fe9e09c3aa26aa7fccp3,
+    0x1.d0741d0741d04p20
+  },
+  { // Entry 116
+    0x1.07eac9f6dafa57ff028d331cb48f9038p3,
+    0x1.dd374dd374dd0p10
+  },
+  { // Entry 117
+    0x1.e784c2b3e554f800004d96919f791652p5,
+    0x1.e3920fcba08c5p86
+  },
+  { // Entry 118
+    0x1.e4bcd2d77ead3ffffa7087c93f5678b5p2,
+    0x1.e6bd865d59181p9
+  },
+  { // Entry 119
+    0x1.09ba252166ce8800003aa2a95746a4aap3,
+    0x1.f8fc7e3f1f880p10
+  },
+  { // Entry 120
+    0x1.4e6b108abebaefffc5c616605660da14p0,
+    0x1.fb5p0
+  },
+  { // Entry 121
+    0x1.2a66594f2e5b0fffff7ff379f5e243a7p9,
+    0x1.fff003fffffffp859
+  },
+  { // Entry 122
+    0x1.081ca3e524daf5a4d1e9e6092a37c659p1,
+    0x1.fff7fffffffffp1
+  },
+  { // Entry 123
+    0x1.081ce5ff7fcfd7ff29362493ef56165fp1,
+    0x1.fff8fffffffffp1
+  },
+  { // Entry 124
+    0x1.6262acbb698ca80507700d5ef3d0c5adp1,
+    0x1.fffcfffffffffp2
+  },
+  { // Entry 125
+    0x1.8e8f43d38040fffeda732c8d164c1eb5p8,
+    0x1.fffffbbffffffp573
+  },
+  { // Entry 126
+    0x1.c55179395a000800ddc334790469d4dep7,
+    0x1.fffffe3ffffffp325
+  },
+  { // Entry 127
+    0x1.27a094edef0c27ffb3d9ba9f6d2910a5p9,
+    0x1.fffffe3ffffffp851
+  },
+  { // Entry 128
+    0x1.27f94df9eaf50fbc89beac79392b0a20p9,
+    0x1.fffffe3ffffffp852
+  },
+  { // Entry 129
+    0x1.bb7d2fe3dbf7f7fee03edebc7a01d599p1,
+    0x1.fffffffbfbfffp3
+  },
+  { // Entry 130
+    0x1.62e3efef359dffffb4e2975678a61bf4p2,
+    0x1.ffffffff8ffffp6
+  },
+  { // Entry 131
+    0x1.86ef5ccdfa1b17fe78c886a9d8b2faaep7,
+    0x1.ffffffffddfffp280
+  },
+  { // Entry 132
+    0x1.62e3efef419e17fffe6390b9f02bcc28p2,
+    0x1.ffffffffeffffp6
+  },
+  { // Entry 133
+    0x1.62e3efef439dffffd26b10f8467623p2,
+    0x1.ffffffffffff1p6
+  },
+  { // Entry 134
+    0x1.419ecb712c4808035decb58386841d9dp4,
+    0x1.ffffffffffff7p27
+  },
+  { // Entry 135
+    0x1.633ce8fb9f87dafc69ac5909d3e5a6d9p9,
+    0x1.ffffffffffffap1023
+  },
+  { // Entry 136
+    0x1.62e3efef439e1800026ba0fa2d3cdb98p2,
+    0x1.ffffffffffffdp6
+  },
+  { // Entry 137
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep501
+  },
+  { // Entry 138
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 139
+    0x1.9f323ecbf9848bf835a433c0ce9aed17p-2,
+    0x1.1555555555555p0
+  },
+  { // Entry 140
+    0x1.23a4fbcdbc0835819feea2ceae6532bdp-1,
+    0x1.2aaaaaaaaaaaap0
+  },
+  { // Entry 141
+    0x1.62e42fefa39ec8ace91cbc855a44bdf6p-1,
+    0x1.3ffffffffffffp0
+  },
+  { // Entry 142
+    0x1.973a2448a635d2473522e0e7015d28f1p-1,
+    0x1.5555555555554p0
+  },
+  { // Entry 143
+    0x1.c484603eb09c0970ffa86254d6babfa5p-1,
+    0x1.6aaaaaaaaaaa9p0
+  },
+  { // Entry 144
+    0x1.ecc2caec5160600d94b684cdb2112543p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.79072028586b73758a4f622cafb07d48p-1,
+    0x1.489a5796de0b2p0
+  },
+  { // Entry 147
+    0x1.94d80f30e93e5e29997af8fe4481c88cp-1,
+    0x1.54494203c1934p0
+  },
+  { // Entry 148
+    0x1.cddcc71de32ab5ac57c13ba40ec7963bp-1,
+    0x1.6f6a8be981db0p0
+  },
+  { // Entry 149
+    0x1.8fcb9d874c026f2c12450971bb1bddfcp-1,
+    0x1.521792ea7d26ep0
+  },
+  { // Entry 150
+    0x1.8ca5043b79263a06aa0f70d7d0bda22bp-2,
+    0x1.13723f2585da2p0
+  },
+  { // Entry 151
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 152
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 153
+    0x1.0893ff7cee46eb16015477f9b6695819p0,
+    0x1.9555555555555p0
+  },
+  { // Entry 154
+    0x1.193ea7aad030a176a4198d5505137cb5p0,
+    0x1.aaaaaaaaaaaaap0
+  },
+  { // Entry 155
+    0x1.28a7cbb850061ed8cb452c64c52218c9p0,
+    0x1.bffffffffffffp0
+  },
+  { // Entry 156
+    0x1.37030b8cc93542ccc38cca9157b0f26dp0,
+    0x1.d555555555554p0
+  },
+  { // Entry 157
+    0x1.44779e1ebd847257f6c077cb3350b457p0,
+    0x1.eaaaaaaaaaaa9p0
+  },
+  { // Entry 158
+    0x1.5124271980433744c1063fe570409b9ap0,
+    0x1.ffffffffffffep0
+  },
+  { // Entry 159
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 160
+    0x1.0c2423fc001c38dcbc9cd1946000f563p0,
+    0x1.99bf25234bccap0
+  },
+  { // Entry 161
+    0x1.197e89ca48809b3746de418fbf0ee383p0,
+    0x1.aaffe573bd7bbp0
+  },
+  { // Entry 162
+    0x1.261b72900d136b90cbef8fa9a3bbd85ap0,
+    0x1.bc5ccd71976cbp0
+  },
+  { // Entry 163
+    0x1.fbbfb95324eb186f3d677aed30c35884p-1,
+    0x1.888b56d86b26ep0
+  },
+  { // Entry 164
+    0x1.4cf1a48b4bdba9043707a45b35f0d529p0,
+    0x1.f8cc6db1bbcb4p0
+  },
+  { // Entry 165
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.0p1
+  },
+  { // Entry 166
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.0p100
+  },
+  { // Entry 167
+    0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 168
+    0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    0x1.3333333333334p100
+  },
+  { // Entry 169
+    0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 170
+    0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 171
+    0x1.19a74011e314f1179b5984282f925681p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 172
+    0x1.19e95674b98dd93c68942542ae48ec14p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 173
+    0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    0x1.b333333333336p100
+  },
+  { // Entry 174
+    0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 175
+    0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 176
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.0p101
+  },
+  { // Entry 177
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p200
+  },
+  { // Entry 178
+    0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 179
+    0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 180
+    0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 181
+    0x1.17516fb9f01171b1837eee7a719450a6p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 182
+    0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 183
+    0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 184
+    0x1.17b4d824b8c26657803575163dd9b7efp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 185
+    0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 186
+    0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 187
+    0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    0x1.0p201
+  },
+  { // Entry 188
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1000
+  },
+  { // Entry 189
+    0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 190
+    0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 191
+    0x1.5b0d2502f975951f793f03445d19e143p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 192
+    0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 193
+    0x1.5b1f7623db315202ec4d72363ce36070p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 194
+    0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 195
+    0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 196
+    0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 197
+    0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 198
+    0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    0x1.0p1001
+  },
+  { // Entry 199
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 200
+    0x1.ecc2caec51607cacba7c44bb8e7ed846p-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 201
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.8p0
+  },
+  { // Entry 202
+    0x1.ecc2caec5160b5eb0607c49740e9a298p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 203
+    0x1.512427198043408194a907fefefaf99cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 204
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.0p1
+  },
+  { // Entry 205
+    0x1.5124271980435c380f91604ba8dadeb9p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 206
+    0x1.081eb4b42159138d780ef9da45476c93p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 207
+    0x1.081eb4b4215917af0d37af17fbf93f73p1,
+    0x1.0p2
+  },
+  { // Entry 208
+    0x1.081eb4b421591ff23789199368f32314p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 209
+    0x1.1542457337d4299c6b73c89d8469a171p4,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 210
+    0x1.1542457337d42a1c6b73c89d84aba171p4,
+    0x1.0p24
+  },
+  { // Entry 211
+    0x1.1542457337d42b1c6b73c89d8523a171p4,
+    0x1.0000000000001p24
+  },
+  { // Entry 212
+    0x1.3687a9f1af2b145ca14e7a4a06e617b2p4,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 213
+    0x1.3687a9f1af2b14dca14e7a4a06e917b2p4,
+    0x1.0p27
+  },
+  { // Entry 214
+    0x1.3687a9f1af2b15dca14e7a4a06e317b2p4,
+    0x1.0000000000001p27
+  },
+  { // Entry 215
+    0x1.419ecb712c480c035decb58387261d9dp4,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 216
+    0x1.419ecb712c480c835decb58387285d9dp4,
+    0x1.0p28
+  },
+  { // Entry 217
+    0x1.419ecb712c480d835decb5838720dd9dp4,
+    0x1.0000000000001p28
+  },
+  { // Entry 218
+    0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 219
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.0p63
+  },
+  { // Entry 220
+    0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    0x1.0000000000001p63
+  },
+  { // Entry 221
+    0x1.601e678fc457b550e49fd861a7d5a183p6,
+    0x1.fffffffffffffp125
+  },
+  { // Entry 222
+    0x1.601e678fc457b570e49fd861a7d62183p6,
+    0x1.0p126
+  },
+  { // Entry 223
+    0x1.601e678fc457b5b0e49fd861a7d42183p6,
+    0x1.0000000000001p126
+  },
+  { // Entry 224
+    0x1.628b76e3a7b60b96bde275563be3e3e3p9,
+    0x1.fffffffffffffp1021
+  },
+  { // Entry 225
+    0x1.628b76e3a7b60b9abde275563be3f3e3p9,
+    0x1.0p1022
+  },
+  { // Entry 226
+    0x1.628b76e3a7b60ba2bde275563be3b3e3p9,
+    0x1.0000000000001p1022
+  },
+  { // Entry 227
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 229
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 230
+    0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 231
+    0x1.cfc02f90106c17a3fd778845de3494b4p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 232
+    0x1.05f23c6cbaf30c042e32011989ade594p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 233
+    0x1.6a09e667f3bcc725fb1d3377443ae618p-26,
+    0x1.0000000000001p0
+  },
+  { // Entry 234
+    0.0,
+    0x1.0p0
+  }
+};
diff --git a/tests/math_data/acoshf_intel_data.h b/tests/math_data/acoshf_intel_data.h
new file mode 100644
index 0000000..2541aee
--- /dev/null
+++ b/tests/math_data/acoshf_intel_data.h
@@ -0,0 +1,662 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_acoshf_intel_data[] = {
+  { // Entry 0
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 1
+    0x1.7912730e9dd8c28d0c2e8851730eeb45p4,
+    0x1.000002p33
+  },
+  { // Entry 2
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 3
+    0x1.6a09dedd14b1e5d3f0a7b66fb7978e52p-9,
+    0x1.000040p0
+  },
+  { // Entry 4
+    0x1.5124710011087370bef8ff29334f0588p0,
+    0x1.000040p1
+  },
+  { // Entry 5
+    0x1.7ffff7000091ccc09884d33b64b1eb87p-9,
+    0x1.000048p0
+  },
+  { // Entry 6
+    0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    0x1.00004cp64
+  },
+  { // Entry 7
+    0x1.5125e27f7363b91a4d3149cf50666ecap0,
+    0x1.000180p1
+  },
+  { // Entry 8
+    0x1.e330350c572f333162767c36dce61564p-8,
+    0x1.0001c8p0
+  },
+  { // Entry 9
+    0x1.52a797d729941823c44aae94a78e8d74p-7,
+    0x1.000380p0
+  },
+  { // Entry 10
+    0x1.94c4db06c1e84a221d39f0a3cee05599p-7,
+    0x1.0005p0
+  },
+  { // Entry 11
+    0x1.deed89b7b3535ce83319a83454260bf8p-7,
+    0x1.0007p0
+  },
+  { // Entry 12
+    0x1.52a1ce85b747431168d159e69c1ef56ep-5,
+    0x1.0038p0
+  },
+  { // Entry 13
+    0x1.67d67454b91b1d46567f99ba2e2e100cp-5,
+    0x1.003f3cp0
+  },
+  { // Entry 14
+    0x1.deff5d6d7e77e9ef89d533cd1b4674c0p-5,
+    0x1.007010p0
+  },
+  { // Entry 15
+    0x1.03ecf505a34cdb22e926c22dafdcba93p-4,
+    0x1.0084p0
+  },
+  { // Entry 16
+    0x1.522637e146375db3d5e54da506a6da8ap0,
+    0x1.00e0p1
+  },
+  { // Entry 17
+    0x1.74d0fb045fad2bb6a0e3f2f93c3dbcc4p-4,
+    0x1.010fa8p0
+  },
+  { // Entry 18
+    0x1.90b591058df058eb707359449093e7d5p-4,
+    0x1.0139dcp0
+  },
+  { // Entry 19
+    0x1.bb67a8fd17fb152d1c73ebdb092cac1dp-4,
+    0x1.018060p0
+  },
+  { // Entry 20
+    0x1.e71f530f94e947158a386b336cdec658p-4,
+    0x1.01d0p0
+  },
+  { // Entry 21
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-4,
+    0x1.02p0
+  },
+  { // Entry 22
+    0x1.5530ccfff7ae8f7c70f1590984ee044fp0,
+    0x1.038ap1
+  },
+  { // Entry 23
+    0x1.5e4fd4ffff5dbe26d4ed5650c003b86ap0,
+    0x1.0bc0p1
+  },
+  { // Entry 24
+    0x1.5fab1f780d388e9cc57b36be3c3141c7p0,
+    0x1.0dp1
+  },
+  { // Entry 25
+    0x1.763bdf002ea17936e0bfcfe7b6511bcbp-2,
+    0x1.114986p0
+  },
+  { // Entry 26
+    0x1.a00911010f93abee028e302008964513p-2,
+    0x1.156bbcp0
+  },
+  { // Entry 27
+    0x1.94e9050d7f9b05eaab2ab578f9f7c8a9p2,
+    0x1.17a93cp8
+  },
+  { // Entry 28
+    0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    0x1.18p78
+  },
+  { // Entry 29
+    0x1.bb6f05ffddc8a6d7ec01df7072e6e0f0p-2,
+    0x1.18616cp0
+  },
+  { // Entry 30
+    0x1.6d74ee000195eb1aa7d81dd17a217ffap0,
+    0x1.1a23bap1
+  },
+  { // Entry 31
+    0x1.ca976f7083fa74fb28b04fb16943e348p1,
+    0x1.20p4
+  },
+  { // Entry 32
+    0x1.efbe20ff9b93b8c1be0904c4167348d7p2,
+    0x1.210840p10
+  },
+  { // Entry 33
+    0x1.76b1c30001e25f3c8bf59f51e1345b89p0,
+    0x1.2365e8p1
+  },
+  { // Entry 34
+    0x1.14d7f7fffe2fabae91a11982e4e616c8p-1,
+    0x1.2658p0
+  },
+  { // Entry 35
+    0x1.2693990483fd8eeb51271e2e585b684dp-1,
+    0x1.2b8d74p0
+  },
+  { // Entry 36
+    0x1.5c4e960001d47445bae41369dbff3bebp-1,
+    0x1.3d8ea8p0
+  },
+  { // Entry 37
+    0x1.6aae7300008fa4d9f021ed601c65f965p-1,
+    0x1.42f55cp0
+  },
+  { // Entry 38
+    0x1.9e86a6000ecf0210e4a6a5b7423d0413p0,
+    0x1.4fd3f0p1
+  },
+  { // Entry 39
+    0x1.8e05b6fd5d1b8aec832f758abac8fe89p-1,
+    0x1.515450p0
+  },
+  { // Entry 40
+    0x1.df328b0ba47a77279fd4ced3f49c93eap1,
+    0x1.523b56p4
+  },
+  { // Entry 41
+    0x1.9eb7a2fc5b6aa4ff59b8601984b72a68p-1,
+    0x1.58ac40p0
+  },
+  { // Entry 42
+    0x1.abc47a73960e8473135511220cc16ca9p0,
+    0x1.6058p1
+  },
+  { // Entry 43
+    0x1.83ceeb0e93a6e047b70a3145b22d0855p3,
+    0x1.660dd6p16
+  },
+  { // Entry 44
+    0x1.e7306f0ae25f79290292e6e2e6fa8ca0p1,
+    0x1.67ffc0p4
+  },
+  { // Entry 45
+    0x1.c3bf8400023ca827c6741d7e90c625f4p-1,
+    0x1.6a48p0
+  },
+  { // Entry 46
+    0x1.9036310001a25b1ccef0f5035d136dc3p1,
+    0x1.6d7680p3
+  },
+  { // Entry 47
+    0x1.cb7077ffffb491dd760b7538a02c6e3ep-1,
+    0x1.6e2c4cp0
+  },
+  { // Entry 48
+    0x1.d466eb047d3274c3f8e4ad57ff764ea1p-1,
+    0x1.72d0p0
+  },
+  { // Entry 49
+    0x1.d53c6fc6f92e0ba23b31c22d8cc254cfp-1,
+    0x1.7340p0
+  },
+  { // Entry 50
+    0x1.ec49d25fbb6766d39e90829e6e2e250cp1,
+    0x1.769da0p4
+  },
+  { // Entry 51
+    0x1.dc679d017683946d78e2a9cc803cf6c7p-1,
+    0x1.770d10p0
+  },
+  { // Entry 52
+    0x1.e8c0b0fffe1ddf6adf3d4c2f7dd95d58p-1,
+    0x1.7dc566p0
+  },
+  { // Entry 53
+    0x1.e9609b000000a0eda71092f93ae128abp-1,
+    0x1.7e1deep0
+  },
+  { // Entry 54
+    0x1.ecc2c030a30fcdab9ac241b66cd30c25p-1,
+    0x1.7ffffap0
+  },
+  { // Entry 55
+    0x1.ecc35a07f3682dbaa360587c559ccbd3p-1,
+    0x1.800050p0
+  },
+  { // Entry 56
+    0x1.ecc6dc03c34154354f855c6bd517af5dp-1,
+    0x1.800246p0
+  },
+  { // Entry 57
+    0x1.f0192f00019712eb97524c0bc702be17p-1,
+    0x1.81dfb6p0
+  },
+  { // Entry 58
+    0x1.f284540001b93c8ebe3f4affe21905a6p-1,
+    0x1.833df6p0
+  },
+  { // Entry 59
+    0x1.f4d44c1caf6cd216b634d3097e9011f1p-1,
+    0x1.848ee8p0
+  },
+  { // Entry 60
+    0x1.f4ff87d0159c59ba0482602abe442ae8p-1,
+    0x1.84a798p0
+  },
+  { // Entry 61
+    0x1.fbd18dc250d3324af75f978654b26cdfp-1,
+    0x1.8895b4p0
+  },
+  { // Entry 62
+    0x1.fc5d43a0453c54315cc3647a30e4ed2bp-1,
+    0x1.88e6fap0
+  },
+  { // Entry 63
+    0x1.feb4430000ee8977e14ac962c3ef7706p-1,
+    0x1.8a44bap0
+  },
+  { // Entry 64
+    0x1.ce51f9f47895ee807158da16a38ca157p0,
+    0x1.8ffffep1
+  },
+  { // Entry 65
+    0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    0x1.9026f4p64
+  },
+  { // Entry 66
+    0x1.47533d0000264c4cbb7c2fab58133240p1,
+    0x1.9f47e2p2
+  },
+  { // Entry 67
+    0x1.1a30b200001c3de79bc0f29982af5fc1p0,
+    0x1.abee22p0
+  },
+  { // Entry 68
+    0x1.3f6350ffda1d235a4490f7aa2ce26ae7p4,
+    0x1.bd531cp27
+  },
+  { // Entry 69
+    0x1.50eb6d04542893111cfd374dfd3d214fp1,
+    0x1.bf3baap2
+  },
+  { // Entry 70
+    0x1.2dfa93ff2c6700d1d90825d37183dcd9p2,
+    0x1.bffffep5
+  },
+  { // Entry 71
+    0x1.ecf4c21af95787266aac99616d63af21p0,
+    0x1.c053d4p1
+  },
+  { // Entry 72
+    0x1.ee596e252c01641fd16160b80bc6afe6p0,
+    0x1.c2ac2ap1
+  },
+  { // Entry 73
+    0x1.52826efff379e591193fb977ff4e6bb1p1,
+    0x1.c4c3fcp2
+  },
+  { // Entry 74
+    0x1.cb605d0b0f66c2ac5857cda13901790bp5,
+    0x1.cb0d08p81
+  },
+  { // Entry 75
+    0x1.f38fc1e25f10f5fb2271b50edba446b8p0,
+    0x1.cb9080p1
+  },
+  { // Entry 76
+    0x1.3940a3ffff65e12ff76d6976a25254bfp0,
+    0x1.d8cb54p0
+  },
+  { // Entry 77
+    0x1.40889effd28e277ad840d7466abad6ecp4,
+    0x1.de61fcp27
+  },
+  { // Entry 78
+    0x1.09aa20ff6df329fc6965c5157042b44ap3,
+    0x1.f7fffep10
+  },
+  { // Entry 79
+    0x1.dca21f00608c1d5dfa8c6e2db5abd9c0p4,
+    0x1.f7fffep41
+  },
+  { // Entry 80
+    0x1.62636e000aae80a748dcd7555caf8e89p2,
+    0x1.fbfffep6
+  },
+  { // Entry 81
+    0x1.50a2ac95684b68fdc508df40cc73323dp0,
+    0x1.ff1ffep0
+  },
+  { // Entry 82
+    0x1.50b9c8d9ac3d9fed6029492e2946e89cp0,
+    0x1.ff47f0p0
+  },
+  { // Entry 83
+    0x1.b6102affc7f74638c6d979799db2bfaap5,
+    0x1.ff9ffep77
+  },
+  { // Entry 84
+    0x1.50f6250001e11ede297c4b3f4b76e264p0,
+    0x1.ffb058p0
+  },
+  { // Entry 85
+    0x1.510a08ffff3a5b971fb41b757c6603ecp0,
+    0x1.ffd2c6p0
+  },
+  { // Entry 86
+    0x1.419ecb012c46848356c72808ab86361cp4,
+    0x1.fffff2p27
+  },
+  { // Entry 87
+    0x1.55074600473a9dd627ac47d1d2419990p6,
+    0x1.fffff8p121
+  },
+  { // Entry 88
+    0x1.640e90fffe1db3e4bbbe3d2c1b08c229p0,
+    0x1.111874p1
+  },
+  { // Entry 89
+    0.0,
+    0x1.p0
+  },
+  { // Entry 90
+    0x1.9f3245325fddd5b2c87f249c5271c1cdp-2,
+    0x1.155556p0
+  },
+  { // Entry 91
+    0x1.23a5003dc2a6d928dd921e808a9011e8p-1,
+    0x1.2aaaacp0
+  },
+  { // Entry 92
+    0x1.62e43544f8e86e9a20f297ce4a2bc5d8p-1,
+    0x1.400002p0
+  },
+  { // Entry 93
+    0x1.973a2a54caa1da0a04be159db5cae8abp-1,
+    0x1.555558p0
+  },
+  { // Entry 94
+    0x1.c48466e37608eec558429434454efbc0p-1,
+    0x1.6aaaaep0
+  },
+  { // Entry 95
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 96
+    0.0,
+    0x1.p0
+  },
+  { // Entry 97
+    0x1.7907212d9f29112f246e3e48d17cb877p-1,
+    0x1.489a58p0
+  },
+  { // Entry 98
+    0x1.94d80f28552a7960dbd361ef8d997239p-1,
+    0x1.544942p0
+  },
+  { // Entry 99
+    0x1.cddcc749958a508d272c8af1d7f4ee9fp-1,
+    0x1.6f6a8cp0
+  },
+  { // Entry 100
+    0x1.8fcba00aaf47e796d01724c28df0a8c3p-1,
+    0x1.521794p0
+  },
+  { // Entry 101
+    0x1.8ca50cd428a176f539205f3add783b57p-2,
+    0x1.137240p0
+  },
+  { // Entry 102
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 103
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 104
+    0x1.08940007f543cfa0adae2e6229dce7e2p0,
+    0x1.955556p0
+  },
+  { // Entry 105
+    0x1.193ea8aad0300976a4b6e2a99a10d315p0,
+    0x1.aaaaacp0
+  },
+  { // Entry 106
+    0x1.28a7cd1cd2d875d89ba32eb5d574ffa4p0,
+    0x1.c00002p0
+  },
+  { // Entry 107
+    0x1.37030d490f3cb36dda8e8436280f6666p0,
+    0x1.d55558p0
+  },
+  { // Entry 108
+    0x1.4477a0289e7622001965214199d0661bp0,
+    0x1.eaaaaep0
+  },
+  { // Entry 109
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 110
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 111
+    0x1.0c242312e9f147c72de6f878eed5f263p0,
+    0x1.99bf24p0
+  },
+  { // Entry 112
+    0x1.197e88b3d1486826e7557849fa8702f9p0,
+    0x1.aaffe4p0
+  },
+  { // Entry 113
+    0x1.261b718b8dc24a39a77a013459187eabp0,
+    0x1.bc5cccp0
+  },
+  { // Entry 114
+    0x1.fbbfbb4fb3c51a1a693b8538d12b2528p-1,
+    0x1.888b58p0
+  },
+  { // Entry 115
+    0x1.4cf1a4b95964bc7af475a1628b613d0bp0,
+    0x1.f8cc6ep0
+  },
+  { // Entry 116
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 117
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.p100
+  },
+  { // Entry 118
+    0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    0x1.19999ap100
+  },
+  { // Entry 119
+    0x1.18c2c05650eac97c01479a1a77caa909p6,
+    0x1.333334p100
+  },
+  { // Entry 120
+    0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    0x1.4ccccep100
+  },
+  { // Entry 121
+    0x1.19609a053a97d6f30409751e6281de59p6,
+    0x1.666668p100
+  },
+  { // Entry 122
+    0x1.19a74017386a428962791f05687972f6p6,
+    0x1.800002p100
+  },
+  { // Entry 123
+    0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    0x1.99999cp100
+  },
+  { // Entry 124
+    0x1.1a276adcd0472f52cdae405190f05814p6,
+    0x1.b33336p100
+  },
+  { // Entry 125
+    0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 126
+    0x1.1a994fffd300555a0d63481601d36422p6,
+    0x1.e6666ap100
+  },
+  { // Entry 127
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.p101
+  },
+  { // Entry 128
+    0.0,
+    0x1.p0
+  },
+  { // Entry 129
+    0x1.ecc2c7586ca3963ba572db868c3947eep-1,
+    0x1.7ffffep0
+  },
+  { // Entry 130
+    0x1.ecc2caec5160994be04204a968c7020dp-1,
+    0x1.80p0
+  },
+  { // Entry 131
+    0x1.ecc2ce80361506372c8accaeb16b83abp-1,
+    0x1.800002p0
+  },
+  { // Entry 132
+    0x1.512425f1e5ce2ba992dbea3a907450b6p0,
+    0x1.fffffep0
+  },
+  { // Entry 133
+    0x1.51242719804349be684bd0188d52ceccp0,
+    0x1.p1
+  },
+  { // Entry 134
+    0x1.51242968b528e77e4665f8cde850553dp0,
+    0x1.000002p1
+  },
+  { // Entry 135
+    0x1.081eb42feeb3ba85ed12ce4bc0fcf1eep1,
+    0x1.fffffep1
+  },
+  { // Entry 136
+    0x1.081eb4b4215917af0d37af17fbf93f73p1,
+    0x1.p2
+  },
+  { // Entry 137
+    0x1.081eb5bc86a22af8d808c499360fc118p1,
+    0x1.000002p2
+  },
+  { // Entry 138
+    0x1.1542456337d4221c6b6673481f564c03p4,
+    0x1.fffffep23
+  },
+  { // Entry 139
+    0x1.1542457337d42a1c6b73c89d84aba171p4,
+    0x1.p24
+  },
+  { // Entry 140
+    0x1.1542459337d40a1c6bae7347bf564d0ep4,
+    0x1.000002p24
+  },
+  { // Entry 141
+    0x1.3687a9e1af2b0cdca14904f4ad63c259p4,
+    0x1.fffffep26
+  },
+  { // Entry 142
+    0x1.3687a9f1af2b14dca14e7a4a06e917b2p4,
+    0x1.p27
+  },
+  { // Entry 143
+    0x1.3687aa11af2af4dca17964f470d3c2c5p4,
+    0x1.000002p27
+  },
+  { // Entry 144
+    0x1.419ecb612c4804835de7582e2dc70845p4,
+    0x1.fffffep27
+  },
+  { // Entry 145
+    0x1.419ecb712c480c835decb58387285d9dp4,
+    0x1.p28
+  },
+  { // Entry 146
+    0x1.419ecb912c47ec835e17702df1a308afp4,
+    0x1.000002p28
+  },
+  { // Entry 147
+    0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    0x1.fffffep62
+  },
+  { // Entry 148
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.p63
+  },
+  { // Entry 149
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 150
+    0x1.601e678bc457b370e49e830c5180cc2dp6,
+    0x1.fffffep125
+  },
+  { // Entry 151
+    0x1.601e678fc457b570e49fd861a7d62183p6,
+    0x1.p126
+  },
+  { // Entry 152
+    0x1.601e6797c457ad70e4aa830c4280cc48p6,
+    0x1.000002p126
+  },
+  { // Entry 153
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 154
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 155
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 156
+    0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    0x1.fffffcp127
+  },
+  { // Entry 157
+    0x1.cfc0300e23df54cd908a25ac434e488cp0,
+    0x1.921fb6p1
+  },
+  { // Entry 158
+    0x1.05f23d07b63b0afafa9ad8203dad69f2p0,
+    0x1.921fb6p0
+  },
+  { // Entry 159
+    0x1.ffffffaaaaaad11110fa35a369c3dc32p-12,
+    0x1.000002p0
+  },
+  { // Entry 160
+    0.0,
+    0x1.p0
+  }
+};
diff --git a/tests/math_data/asin_intel_data.h b/tests/math_data/asin_intel_data.h
new file mode 100644
index 0000000..7d16a4b
--- /dev/null
+++ b/tests/math_data/asin_intel_data.h
@@ -0,0 +1,2774 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_asin_intel_data[] = {
+  { // Entry 0
+    0x1.9283586503fe000000000000000e46aap-5,
+    0x1.9259e3708bd3ap-5
+  },
+  { // Entry 1
+    -0x1.9283586503fe000000000000000e46aap-5,
+    -0x1.9259e3708bd3ap-5
+  },
+  { // Entry 2
+    0x1.d7bdcd778049f00000000000000d57e1p-5,
+    0x1.d77b117f230d6p-5
+  },
+  { // Entry 3
+    -0x1.d7bdcd778049f00000000000000d57e1p-5,
+    -0x1.d77b117f230d6p-5
+  },
+  { // Entry 4
+    0x1.a202b3fb84788000000000000056edb7p-4,
+    0x1.a1490c8c06ba7p-4
+  },
+  { // Entry 5
+    -0x1.a202b3fb84788000000000000056edb7p-4,
+    -0x1.a1490c8c06ba7p-4
+  },
+  { // Entry 6
+    0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    0x1.9697cb602c582p-3
+  },
+  { // Entry 7
+    -0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    -0x1.9697cb602c582p-3
+  },
+  { // Entry 8
+    0x1.d5064e6fe82c4fffffffffffff9ed184p-3,
+    0x1.d0ef799001ba9p-3
+  },
+  { // Entry 9
+    -0x1.d5064e6fe82c4fffffffffffff9ed184p-3,
+    -0x1.d0ef799001ba9p-3
+  },
+  { // Entry 10
+    0x1.fe767739d0f6d0000000000000000458p-2,
+    0x1.e9950730c4696p-2
+  },
+  { // Entry 11
+    -0x1.fe767739d0f6d0000000000000000458p-2,
+    -0x1.e9950730c4696p-2
+  },
+  { // Entry 12
+    0x1.30706f699466d7ffffffffffff5f2011p-1,
+    0x1.1ed06d50f7e88p-1
+  },
+  { // Entry 13
+    -0x1.30706f699466d7ffffffffffff5f2011p-1,
+    -0x1.1ed06d50f7e88p-1
+  },
+  { // Entry 14
+    0x1.29517ab4c132a800000000000089db56p0,
+    0x1.d5b05a89d3e77p-1
+  },
+  { // Entry 15
+    -0x1.29517ab4c132a800000000000089db56p0,
+    -0x1.d5b05a89d3e77p-1
+  },
+  { // Entry 16
+    0x1.3aa301f6ebb1dfffffffffffff16c28cp0,
+    0x1.e264357ea0e29p-1
+  },
+  { // Entry 17
+    -0x1.3aa301f6ebb1dfffffffffffff16c28cp0,
+    -0x1.e264357ea0e29p-1
+  },
+  { // Entry 18
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 19
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 20
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 22
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 23
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 24
+    -0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    -0x1.1c0p-2
+  },
+  { // Entry 25
+    0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    0x1.1c0p-2
+  },
+  { // Entry 26
+    -0x1.322f6d8e910113592ff4014f403aad06p-1,
+    -0x1.20424621202acp-1
+  },
+  { // Entry 27
+    0x1.322f6d8e910113592ff4014f403aad06p-1,
+    0x1.20424621202acp-1
+  },
+  { // Entry 28
+    -0x1.57c8d32d4c7a763ab677a006ae66467fp-1,
+    -0x1.3e872c7cba096p-1
+  },
+  { // Entry 29
+    0x1.57c8d32d4c7a763ab677a006ae66467fp-1,
+    0x1.3e872c7cba096p-1
+  },
+  { // Entry 30
+    -0x1.759edd04f68e48001bb07775889fc8a5p-1,
+    -0x1.555555555555ap-1
+  },
+  { // Entry 31
+    0x1.759edd04f68e48001bb07775889fc8a5p-1,
+    0x1.555555555555ap-1
+  },
+  { // Entry 32
+    -0x1.782333f928813ffec11dba3a89d05c6cp-1,
+    -0x1.573489b9ae5adp-1
+  },
+  { // Entry 33
+    0x1.782333f928813ffec11dba3a89d05c6cp-1,
+    0x1.573489b9ae5adp-1
+  },
+  { // Entry 34
+    -0x1.94d8b4c7808fb7a87e757b5f42035aacp-1,
+    -0x1.6bf5707aa0f6bp-1
+  },
+  { // Entry 35
+    0x1.94d8b4c7808fb7a87e757b5f42035aacp-1,
+    0x1.6bf5707aa0f6bp-1
+  },
+  { // Entry 36
+    -0x1.b235315cc8d0081c027b42e63e305a66p-1,
+    -0x1.800000004p-1
+  },
+  { // Entry 37
+    0x1.b235315cc8d0081c027b42e63e305a66p-1,
+    0x1.800000004p-1
+  },
+  { // Entry 38
+    -0x1.96b6e8a201871000f870b24841c05f73p-4,
+    -0x1.960be5db7a892p-4
+  },
+  { // Entry 39
+    0x1.96b6e8a201871000f870b24841c05f73p-4,
+    0x1.960be5db7a892p-4
+  },
+  { // Entry 40
+    -0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    -0x1.980p-4
+  },
+  { // Entry 41
+    0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    0x1.980p-4
+  },
+  { // Entry 42
+    -0x1.aa371ee73bd1c8079ffffa36ba5e5d8cp-2,
+    -0x1.9e03d2f534734p-2
+  },
+  { // Entry 43
+    0x1.aa371ee73bd1c8079ffffa36ba5e5d8cp-2,
+    0x1.9e03d2f534734p-2
+  },
+  { // Entry 44
+    -0x1.ed27cb01adedd7ae3d6cfc08b5b1ca73p-1,
+    -0x1.a45ca57a33fcdp-1
+  },
+  { // Entry 45
+    0x1.ed27cb01adedd7ae3d6cfc08b5b1ca73p-1,
+    0x1.a45ca57a33fcdp-1
+  },
+  { // Entry 46
+    -0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    -0x1.b34p-6
+  },
+  { // Entry 47
+    0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    0x1.b34p-6
+  },
+  { // Entry 48
+    -0x1.bf79714a2c1567fffff9585f49069adbp-15,
+    -0x1.bf7971469ca1fp-15
+  },
+  { // Entry 49
+    0x1.bf79714a2c1567fffff9585f49069adbp-15,
+    0x1.bf7971469ca1fp-15
+  },
+  { // Entry 50
+    -0x1.bf79714a2c19b8000013b283b77d9f82p-15,
+    -0x1.bf7971469ca64p-15
+  },
+  { // Entry 51
+    0x1.bf79714a2c19b8000013b283b77d9f82p-15,
+    0x1.bf7971469ca64p-15
+  },
+  { // Entry 52
+    -0x1.cfaf2746103107617c4b6b2c15223d0dp-2,
+    -0x1.c0000000003ffp-2
+  },
+  { // Entry 53
+    0x1.cfaf2746103107617c4b6b2c15223d0dp-2,
+    0x1.c0000000003ffp-2
+  },
+  { // Entry 54
+    -0x1.0129be4949aae7feec564fbe5489c78ep-1,
+    -0x1.ecf8cad745f54p-2
+  },
+  { // Entry 55
+    0x1.0129be4949aae7feec564fbe5489c78ep-1,
+    0x1.ecf8cad745f54p-2
+  },
+  { // Entry 56
+    -0x1.5047d77b0f8938000011f5af41f72c88p0,
+    -0x1.ef28841197292p-1
+  },
+  { // Entry 57
+    0x1.5047d77b0f8938000011f5af41f72c88p0,
+    0x1.ef28841197292p-1
+  },
+  { // Entry 58
+    -0x1.fb9f1177a8157880070f3ad2a1f9422ep-6,
+    -0x1.fb8a474fa66d0p-6
+  },
+  { // Entry 59
+    0x1.fb9f1177a8157880070f3ad2a1f9422ep-6,
+    0x1.fb8a474fa66d0p-6
+  },
+  { // Entry 60
+    -0x1.7b9033edad533793d172bb5d680b97b4p0,
+    -0x1.fe0359a2193f8p-1
+  },
+  { // Entry 61
+    0x1.7b9033edad533793d172bb5d680b97b4p0,
+    0x1.fe0359a2193f8p-1
+  },
+  { // Entry 62
+    -0x1.7b9033f17fe8b7728028f04d5b42dfa4p0,
+    -0x1.fe0359a2c5813p-1
+  },
+  { // Entry 63
+    0x1.7b9033f17fe8b7728028f04d5b42dfa4p0,
+    0x1.fe0359a2c5813p-1
+  },
+  { // Entry 64
+    -0x1.7da665f5fe592780850c1bef60fac479p0,
+    -0x1.fe5d0b4f2f569p-1
+  },
+  { // Entry 65
+    0x1.7da665f5fe592780850c1bef60fac479p0,
+    0x1.fe5d0b4f2f569p-1
+  },
+  { // Entry 66
+    -0x1.ff348201393248a795686f3f0d307c5ap-6,
+    -0x1.ff1f4655459b6p-6
+  },
+  { // Entry 67
+    0x1.ff348201393248a795686f3f0d307c5ap-6,
+    0x1.ff1f4655459b6p-6
+  },
+  { // Entry 68
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 69
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 70
+    0x1.0c152382d736d999ee9a1f752604d40ep-1,
+    0x1.0000000000007p-1
+  },
+  { // Entry 71
+    -0x1.0c152382d736d999ee9a1f752604d40ep-1,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 72
+    0x1.0c152382d7495341342a52c5694cd736p-1,
+    0x1.0000000000107p-1
+  },
+  { // Entry 73
+    -0x1.0c152382d7495341342a52c5694cd736p-1,
+    -0x1.0000000000107p-1
+  },
+  { // Entry 74
+    0x1.0c152382d74c92a39b64abd4b3dd08c3p-1,
+    0x1.0000000000134p-1
+  },
+  { // Entry 75
+    -0x1.0c152382d74c92a39b64abd4b3dd08c3p-1,
+    -0x1.0000000000134p-1
+  },
+  { // Entry 76
+    0x1.000aabde0bba85978d6ad9f48828ec86p-5,
+    0x1.00000000001e0p-5
+  },
+  { // Entry 77
+    -0x1.000aabde0bba85978d6ad9f48828ec86p-5,
+    -0x1.00000000001e0p-5
+  },
+  { // Entry 78
+    0x1.000aabde0bbc75d5990d467c55b9ae34p-5,
+    0x1.00000000001ffp-5
+  },
+  { // Entry 79
+    -0x1.000aabde0bbc75d5990d467c55b9ae34p-5,
+    -0x1.00000000001ffp-5
+  },
+  { // Entry 80
+    0x1.000aabde0c8daffe80d2e7d3e14097d7p-5,
+    0x1.0000000000f11p-5
+  },
+  { // Entry 81
+    -0x1.000aabde0c8daffe80d2e7d3e14097d7p-5,
+    -0x1.0000000000f11p-5
+  },
+  { // Entry 82
+    0x1.02be9ce0ba0b280001c151672b571466p-2,
+    0x1.000000000181bp-2
+  },
+  { // Entry 83
+    -0x1.02be9ce0ba0b280001c151672b571466p-2,
+    -0x1.000000000181bp-2
+  },
+  { // Entry 84
+    0x1.0c152382de23f70071cd464afd26d0adp-1,
+    0x1.00000000060p-1
+  },
+  { // Entry 85
+    -0x1.0c152382de23f70071cd464afd26d0adp-1,
+    -0x1.00000000060p-1
+  },
+  { // Entry 86
+    0x1.0c152382f2ecd32eb46eb26eaa3a3436p-1,
+    0x1.00000000180p-1
+  },
+  { // Entry 87
+    -0x1.0c152382f2ecd32eb46eb26eaa3a3436p-1,
+    -0x1.00000000180p-1
+  },
+  { // Entry 88
+    0x1.0c1523836b039272e99d2aa6c733fbd4p-1,
+    0x1.000000008p-1
+  },
+  { // Entry 89
+    -0x1.0c1523836b039272e99d2aa6c733fbd4p-1,
+    -0x1.000000008p-1
+  },
+  { // Entry 90
+    0x1.0c15258825828aed7433be734fa034e0p-1,
+    0x1.000001cp-1
+  },
+  { // Entry 91
+    -0x1.0c15258825828aed7433be734fa034e0p-1,
+    -0x1.000001cp-1
+  },
+  { // Entry 92
+    0x1.0c15258d2e27e114dc33e19be219a967p-1,
+    0x1.000001c45c0p-1
+  },
+  { // Entry 93
+    -0x1.0c15258d2e27e114dc33e19be219a967p-1,
+    -0x1.000001c45c0p-1
+  },
+  { // Entry 94
+    0x1.02c23a43a81227fff55e30293b8669cfp-2,
+    0x1.00038p-2
+  },
+  { // Entry 95
+    -0x1.02c23a43a81227fff55e30293b8669cfp-2,
+    -0x1.00038p-2
+  },
+  { // Entry 96
+    0x1.0032c1ec76116800257dc6de53c0616ep-4,
+    0x1.0007fffffffd1p-4
+  },
+  { // Entry 97
+    -0x1.0032c1ec76116800257dc6de53c0616ep-4,
+    -0x1.0007fffffffd1p-4
+  },
+  { // Entry 98
+    0x1.0c279d5b633cdc69f2775e85622dc4a2p-1,
+    0x1.001p-1
+  },
+  { // Entry 99
+    -0x1.0c279d5b633cdc69f2775e85622dc4a2p-1,
+    -0x1.001p-1
+  },
+  { // Entry 100
+    0x1.0c4c923447087dae5cae7c825ed2a0ccp-1,
+    0x1.003p-1
+  },
+  { // Entry 101
+    -0x1.0c4c923447087dae5cae7c825ed2a0ccp-1,
+    -0x1.003p-1
+  },
+  { // Entry 102
+    0x1.0c55cfa828c0b38becd1409b658d6950p-1,
+    0x1.00380p-1
+  },
+  { // Entry 103
+    -0x1.0c55cfa828c0b38becd1409b658d6950p-1,
+    -0x1.00380p-1
+  },
+  { // Entry 104
+    0x1.0062da048ea0d7efd536d5c643e9f215p-4,
+    0x1.00380p-4
+  },
+  { // Entry 105
+    -0x1.0062da048ea0d7efd536d5c643e9f215p-4,
+    -0x1.00380p-4
+  },
+  { // Entry 106
+    0x1.00402aaac5e698004c94e39262202714p-8,
+    0x1.003fffep-8
+  },
+  { // Entry 107
+    -0x1.00402aaac5e698004c94e39262202714p-8,
+    -0x1.003fffep-8
+  },
+  { // Entry 108
+    0x1.0c9720590ac37fd593221825ec3a084bp-1,
+    0x1.00708a54b2c67p-1
+  },
+  { // Entry 109
+    -0x1.0c9720590ac37fd593221825ec3a084bp-1,
+    -0x1.00708a54b2c67p-1
+  },
+  { // Entry 110
+    0x1.00c00000000000000000000ac2bcaf2ap-45,
+    0x1.00cp-45
+  },
+  { // Entry 111
+    -0x1.00c00000000000000000000ac2bcaf2ap-45,
+    -0x1.00cp-45
+  },
+  { // Entry 112
+    0x1.0d96e57290c3f1c3681bab8c1f00b39cp-1,
+    0x1.014dcaa237970p-1
+  },
+  { // Entry 113
+    -0x1.0d96e57290c3f1c3681bab8c1f00b39cp-1,
+    -0x1.014dcaa237970p-1
+  },
+  { // Entry 114
+    0x1.0dabf55dce937f7558a8b531d459f15ep-1,
+    0x1.016p-1
+  },
+  { // Entry 115
+    -0x1.0dabf55dce937f7558a8b531d459f15ep-1,
+    -0x1.016p-1
+  },
+  { // Entry 116
+    0x1.0dc2ef671d6c33eaa546ddae05d5e453p-1,
+    0x1.0173dc94b6306p-1
+  },
+  { // Entry 117
+    -0x1.0dc2ef671d6c33eaa546ddae05d5e453p-1,
+    -0x1.0173dc94b6306p-1
+  },
+  { // Entry 118
+    0x1.0f1e6ec54eea2c73401f62badd2976acp-1,
+    0x1.02ap-1
+  },
+  { // Entry 119
+    -0x1.0f1e6ec54eea2c73401f62badd2976acp-1,
+    -0x1.02ap-1
+  },
+  { // Entry 120
+    0x1.0f4da9229cffec0c3743997491f11d56p-1,
+    0x1.02c8c16dc1934p-1
+  },
+  { // Entry 121
+    -0x1.0f4da9229cffec0c3743997491f11d56p-1,
+    -0x1.02c8c16dc1934p-1
+  },
+  { // Entry 122
+    0x1.0f6899dc73e34a54ad3cce806ce29011p-1,
+    0x1.02ep-1
+  },
+  { // Entry 123
+    -0x1.0f6899dc73e34a54ad3cce806ce29011p-1,
+    -0x1.02ep-1
+  },
+  { // Entry 124
+    0x1.0f838e30479aba67ec652b632028fefap-1,
+    0x1.02f740f61e37ap-1
+  },
+  { // Entry 125
+    -0x1.0f838e30479aba67ec652b632028fefap-1,
+    -0x1.02f740f61e37ap-1
+  },
+  { // Entry 126
+    0x1.0fe301c2f5be2a63ef5b2626fe19c78ap-1,
+    0x1.034993ee3b8dap-1
+  },
+  { // Entry 127
+    -0x1.0fe301c2f5be2a63ef5b2626fe19c78ap-1,
+    -0x1.034993ee3b8dap-1
+  },
+  { // Entry 128
+    0x1.1022212ba23069c4a937494d32fea558p-1,
+    0x1.038p-1
+  },
+  { // Entry 129
+    -0x1.1022212ba23069c4a937494d32fea558p-1,
+    -0x1.038p-1
+  },
+  { // Entry 130
+    0x1.10282996f9883a58886ba1799ed5dd8ep-1,
+    0x1.038533564d2f6p-1
+  },
+  { // Entry 131
+    -0x1.10282996f9883a58886ba1799ed5dd8ep-1,
+    -0x1.038533564d2f6p-1
+  },
+  { // Entry 132
+    0x1.1066e87eac0fa20763c3465fae49f6f3p-1,
+    0x1.03bb47eba27acp-1
+  },
+  { // Entry 133
+    -0x1.1066e87eac0fa20763c3465fae49f6f3p-1,
+    -0x1.03bb47eba27acp-1
+  },
+  { // Entry 134
+    0x1.10cbb4c8656620d5e25de954cc196a15p-1,
+    0x1.04122069afab2p-1
+  },
+  { // Entry 135
+    -0x1.10cbb4c8656620d5e25de954cc196a15p-1,
+    -0x1.04122069afab2p-1
+  },
+  { // Entry 136
+    0x1.116717f96556ee4420b909b7fa6b63dfp-1,
+    0x1.0497edab6ede1p-1
+  },
+  { // Entry 137
+    -0x1.116717f96556ee4420b909b7fa6b63dfp-1,
+    -0x1.0497edab6ede1p-1
+  },
+  { // Entry 138
+    0x1.1179dbb27e582d73878c014b8e3e1cc0p-1,
+    0x1.04a814758e0f8p-1
+  },
+  { // Entry 139
+    -0x1.1179dbb27e582d73878c014b8e3e1cc0p-1,
+    -0x1.04a814758e0f8p-1
+  },
+  { // Entry 140
+    0x1.1198c0d79289b2f9f277c2f3a7a05d25p-1,
+    0x1.04c2ab77cf474p-1
+  },
+  { // Entry 141
+    -0x1.1198c0d79289b2f9f277c2f3a7a05d25p-1,
+    -0x1.04c2ab77cf474p-1
+  },
+  { // Entry 142
+    0x1.196875557f2137d39d74d174f529db4bp-1,
+    0x1.0b73c2dcdc2b8p-1
+  },
+  { // Entry 143
+    -0x1.196875557f2137d39d74d174f529db4bp-1,
+    -0x1.0b73c2dcdc2b8p-1
+  },
+  { // Entry 144
+    0x1.1b553e4436fee055d4d2c67c601a0212p-1,
+    0x1.0d177bea3f610p-1
+  },
+  { // Entry 145
+    -0x1.1b553e4436fee055d4d2c67c601a0212p-1,
+    -0x1.0d177bea3f610p-1
+  },
+  { // Entry 146
+    0x1.1c38449a61c9580d6859380e343d833cp-1,
+    0x1.0dd885a3ef4fcp-1
+  },
+  { // Entry 147
+    -0x1.1c38449a61c9580d6859380e343d833cp-1,
+    -0x1.0dd885a3ef4fcp-1
+  },
+  { // Entry 148
+    0x1.1cc4b3c079836265872b7d492044d616p-1,
+    0x1.0e4fd42b1d0e6p-1
+  },
+  { // Entry 149
+    -0x1.1cc4b3c079836265872b7d492044d616p-1,
+    -0x1.0e4fd42b1d0e6p-1
+  },
+  { // Entry 150
+    0x1.1cfd6e266de95f1bf48764f46577e309p-1,
+    0x1.0e8p-1
+  },
+  { // Entry 151
+    -0x1.1cfd6e266de95f1bf48764f46577e309p-1,
+    -0x1.0e8p-1
+  },
+  { // Entry 152
+    0x1.21cdcf52000c220a966befeb62e640f6p-1,
+    0x1.129345051b29dp-1
+  },
+  { // Entry 153
+    -0x1.21cdcf52000c220a966befeb62e640f6p-1,
+    -0x1.129345051b29dp-1
+  },
+  { // Entry 154
+    0x1.130d3aa02dac280175032d7dcd901029p-5,
+    0x1.130p-5
+  },
+  { // Entry 155
+    -0x1.130d3aa02dac280175032d7dcd901029p-5,
+    -0x1.130p-5
+  },
+  { // Entry 156
+    0x1.140000000d5df80001bf7913cb80995cp-17,
+    0x1.140p-17
+  },
+  { // Entry 157
+    -0x1.140000000d5df80001bf7913cb80995cp-17,
+    -0x1.140p-17
+  },
+  { // Entry 158
+    0x1.2775c4b617d654588958a178dea861bap-1,
+    0x1.1755174d62823p-1
+  },
+  { // Entry 159
+    -0x1.2775c4b617d654588958a178dea861bap-1,
+    -0x1.1755174d62823p-1
+  },
+  { // Entry 160
+    0x1.199af8e5ca4257fcd763543b8f3fce81p-5,
+    0x1.198cc66331980p-5
+  },
+  { // Entry 161
+    -0x1.199af8e5ca4257fcd763543b8f3fce81p-5,
+    -0x1.198cc66331980p-5
+  },
+  { // Entry 162
+    0x1.2c5ab8264bdbb3e1bc65214317759a09p-1,
+    0x1.1b6bdc91e8ed8p-1
+  },
+  { // Entry 163
+    -0x1.2c5ab8264bdbb3e1bc65214317759a09p-1,
+    -0x1.1b6bdc91e8ed8p-1
+  },
+  { // Entry 164
+    0x1.2cee00a870ba528fbe6b9f3cda1408b3p-1,
+    0x1.1be67991de2d4p-1
+  },
+  { // Entry 165
+    -0x1.2cee00a870ba528fbe6b9f3cda1408b3p-1,
+    -0x1.1be67991de2d4p-1
+  },
+  { // Entry 166
+    0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    0x1.1c0p-2
+  },
+  { // Entry 167
+    -0x1.1fc5e19315892ffd69defb731e5b723ap-2,
+    -0x1.1c0p-2
+  },
+  { // Entry 168
+    0x1.2febc655185c99c444ff04c55bfb6d66p-1,
+    0x1.1e627f69af588p-1
+  },
+  { // Entry 169
+    -0x1.2febc655185c99c444ff04c55bfb6d66p-1,
+    -0x1.1e627f69af588p-1
+  },
+  { // Entry 170
+    0x1.30d8a981b9948a394e1467470cfad235p-1,
+    0x1.1f26bdf8a0343p-1
+  },
+  { // Entry 171
+    -0x1.30d8a981b9948a394e1467470cfad235p-1,
+    -0x1.1f26bdf8a0343p-1
+  },
+  { // Entry 172
+    0x1.30f8d6bccdf217fff8c0dda31391974fp-1,
+    0x1.1f41613172746p-1
+  },
+  { // Entry 173
+    -0x1.30f8d6bccdf217fff8c0dda31391974fp-1,
+    -0x1.1f41613172746p-1
+  },
+  { // Entry 174
+    0x1.3110249047eaf30fc3ba6988a43b8ccbp-1,
+    0x1.1f54ab50e347ep-1
+  },
+  { // Entry 175
+    -0x1.3110249047eaf30fc3ba6988a43b8ccbp-1,
+    -0x1.1f54ab50e347ep-1
+  },
+  { // Entry 176
+    0x1.31462f20d3145a25898cd5561126dbefp-1,
+    0x1.1f816460b6e0dp-1
+  },
+  { // Entry 177
+    -0x1.31462f20d3145a25898cd5561126dbefp-1,
+    -0x1.1f816460b6e0dp-1
+  },
+  { // Entry 178
+    0x1.31ef197bde35531a915e264fef2305e8p-1,
+    0x1.200d19c3f0b0bp-1
+  },
+  { // Entry 179
+    -0x1.31ef197bde35531a915e264fef2305e8p-1,
+    -0x1.200d19c3f0b0bp-1
+  },
+  { // Entry 180
+    0x1.321d12e54f83b31627f80c3fa62b7ca1p-1,
+    0x1.20331ab8a7458p-1
+  },
+  { // Entry 181
+    -0x1.321d12e54f83b31627f80c3fa62b7ca1p-1,
+    -0x1.20331ab8a7458p-1
+  },
+  { // Entry 182
+    0x1.2177521a338b07fff0d9c9957c5a6cebp-16,
+    0x1.21775219f5dc5p-16
+  },
+  { // Entry 183
+    -0x1.2177521a338b07fff0d9c9957c5a6cebp-16,
+    -0x1.21775219f5dc5p-16
+  },
+  { // Entry 184
+    0x1.3e67925d0e6f8bcbb21a79d27ecca7d2p-1,
+    0x1.2a46471805efdp-1
+  },
+  { // Entry 185
+    -0x1.3e67925d0e6f8bcbb21a79d27ecca7d2p-1,
+    -0x1.2a46471805efdp-1
+  },
+  { // Entry 186
+    0x1.2bb1862a568148015c0bf4a2a7154dc1p-3,
+    0x1.2aap-3
+  },
+  { // Entry 187
+    -0x1.2bb1862a568148015c0bf4a2a7154dc1p-3,
+    -0x1.2aap-3
+  },
+  { // Entry 188
+    0x1.3f6fd0f27823d7fefc74a71eccd96298p-1,
+    0x1.2b1ce548833aep-1
+  },
+  { // Entry 189
+    -0x1.3f6fd0f27823d7fefc74a71eccd96298p-1,
+    -0x1.2b1ce548833aep-1
+  },
+  { // Entry 190
+    0x1.411bb49364c5ea4184bb3805a893e054p-1,
+    0x1.2c77c3b7fadbcp-1
+  },
+  { // Entry 191
+    -0x1.411bb49364c5ea4184bb3805a893e054p-1,
+    -0x1.2c77c3b7fadbcp-1
+  },
+  { // Entry 192
+    0x1.442ff6c0f5d4d7fe7775e70c3e4e8219p-1,
+    0x1.2ef49e5511ddfp-1
+  },
+  { // Entry 193
+    -0x1.442ff6c0f5d4d7fe7775e70c3e4e8219p-1,
+    -0x1.2ef49e5511ddfp-1
+  },
+  { // Entry 194
+    0x1.443fecfebc1df7de68052624a8b1d61dp-1,
+    0x1.2f017c4fe3544p-1
+  },
+  { // Entry 195
+    -0x1.443fecfebc1df7de68052624a8b1d61dp-1,
+    -0x1.2f017c4fe3544p-1
+  },
+  { // Entry 196
+    0x1.457bf318fe516a79da6f4a61af7a7fa5p-1,
+    0x1.3p-1
+  },
+  { // Entry 197
+    -0x1.457bf318fe516a79da6f4a61af7a7fa5p-1,
+    -0x1.3p-1
+  },
+  { // Entry 198
+    0x1.5ccd5c05e68fb800000849ddd0fe2ca5p-1,
+    0x1.4270ed4aad70ep-1
+  },
+  { // Entry 199
+    -0x1.5ccd5c05e68fb800000849ddd0fe2ca5p-1,
+    -0x1.4270ed4aad70ep-1
+  },
+  { // Entry 200
+    0x1.44000000159fd80003e593b785ba9626p-17,
+    0x1.440p-17
+  },
+  { // Entry 201
+    -0x1.44000000159fd80003e593b785ba9626p-17,
+    -0x1.440p-17
+  },
+  { // Entry 202
+    0x1.63b1cbb66b8a17ae1fd76035d949e2b7p-1,
+    0x1.47c3fdc9bf433p-1
+  },
+  { // Entry 203
+    -0x1.63b1cbb66b8a17ae1fd76035d949e2b7p-1,
+    -0x1.47c3fdc9bf433p-1
+  },
+  { // Entry 204
+    0x1.65fc8f66ba692e01a5afda7ace8deae2p-1,
+    0x1.4985ec22e7bf6p-1
+  },
+  { // Entry 205
+    -0x1.65fc8f66ba692e01a5afda7ace8deae2p-1,
+    -0x1.4985ec22e7bf6p-1
+  },
+  { // Entry 206
+    0x1.4d78bac08656681847462467555e549bp-3,
+    0x1.4c0p-3
+  },
+  { // Entry 207
+    -0x1.4d78bac08656681847462467555e549bp-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 208
+    0x1.6d59bfe3f2224f6000acc00b769ed440p-1,
+    0x1.4f2p-1
+  },
+  { // Entry 209
+    -0x1.6d59bfe3f2224f6000acc00b769ed440p-1,
+    -0x1.4f2p-1
+  },
+  { // Entry 210
+    0x1.5000000000207800000013a839333343p-20,
+    0x1.4fffffffffcp-20
+  },
+  { // Entry 211
+    -0x1.5000000000207800000013a839333343p-20,
+    -0x1.4fffffffffcp-20
+  },
+  { // Entry 212
+    0x1.500000000060780000004ac83933337fp-20,
+    0x1.5p-20
+  },
+  { // Entry 213
+    -0x1.500000000060780000004ac83933337fp-20,
+    -0x1.5p-20
+  },
+  { // Entry 214
+    0x1.55277b9f38d027ffff30112bed0c9f0fp-4,
+    0x1.54c28a8e4f3e2p-4
+  },
+  { // Entry 215
+    -0x1.55277b9f38d027ffff30112bed0c9f0fp-4,
+    -0x1.54c28a8e4f3e2p-4
+  },
+  { // Entry 216
+    0x1.5ed2a392bb50f7fad69db4d959b3510ap-2,
+    0x1.580p-2
+  },
+  { // Entry 217
+    -0x1.5ed2a392bb50f7fad69db4d959b3510ap-2,
+    -0x1.580p-2
+  },
+  { // Entry 218
+    0x1.7f1f4917c72b6003b55c8200e8dcecc0p-1,
+    0x1.5c5b3407f55e1p-1
+  },
+  { // Entry 219
+    -0x1.7f1f4917c72b6003b55c8200e8dcecc0p-1,
+    -0x1.5c5b3407f55e1p-1
+  },
+  { // Entry 220
+    0x1.8b6201c0f179080000d81b7964ae4654p-1,
+    0x1.653da5baf7440p-1
+  },
+  { // Entry 221
+    -0x1.8b6201c0f179080000d81b7964ae4654p-1,
+    -0x1.653da5baf7440p-1
+  },
+  { // Entry 222
+    0x1.7250952ca29c0813f4e50a0ad18f3648p-2,
+    0x1.6a4bb63c82129p-2
+  },
+  { // Entry 223
+    -0x1.7250952ca29c0813f4e50a0ad18f3648p-2,
+    -0x1.6a4bb63c82129p-2
+  },
+  { // Entry 224
+    0x1.77b27e3a4418480d8c0062be11693e16p-2,
+    0x1.6f533603e2320p-2
+  },
+  { // Entry 225
+    -0x1.77b27e3a4418480d8c0062be11693e16p-2,
+    -0x1.6f533603e2320p-2
+  },
+  { // Entry 226
+    0x1.9e149bad9649280000eb9dad7440c574p-1,
+    0x1.7264d0bec49b2p-1
+  },
+  { // Entry 227
+    -0x1.9e149bad9649280000eb9dad7440c574p-1,
+    -0x1.7264d0bec49b2p-1
+  },
+  { // Entry 228
+    0x1.7cc0ee7ed8ad48137e185fb9156bae4cp-2,
+    0x1.740a59647d7a5p-2
+  },
+  { // Entry 229
+    -0x1.7cc0ee7ed8ad48137e185fb9156bae4cp-2,
+    -0x1.740a59647d7a5p-2
+  },
+  { // Entry 230
+    0x1.a207566488fc97fcadc30933e3392d3dp-1,
+    0x1.751bcca851309p-1
+  },
+  { // Entry 231
+    -0x1.a207566488fc97fcadc30933e3392d3dp-1,
+    -0x1.751bcca851309p-1
+  },
+  { // Entry 232
+    0x1.7e693c113d4a4814c150d8ac5b0c8d53p-2,
+    0x1.7595883b67f16p-2
+  },
+  { // Entry 233
+    -0x1.7e693c113d4a4814c150d8ac5b0c8d53p-2,
+    -0x1.7595883b67f16p-2
+  },
+  { // Entry 234
+    0x1.7ee6be5058d0201a24d137f52ff6909ep-2,
+    0x1.760a6116c7198p-2
+  },
+  { // Entry 235
+    -0x1.7ee6be5058d0201a24d137f52ff6909ep-2,
+    -0x1.760a6116c7198p-2
+  },
+  { // Entry 236
+    0x1.a6a1bef361a7d7f9c2816e02dbac1bf5p-1,
+    0x1.783ee81831665p-1
+  },
+  { // Entry 237
+    -0x1.a6a1bef361a7d7f9c2816e02dbac1bf5p-1,
+    -0x1.783ee81831665p-1
+  },
+  { // Entry 238
+    0x1.86618612c359e81481d9a7341d6a2a51p-2,
+    0x1.7cfe473430fc6p-2
+  },
+  { // Entry 239
+    -0x1.86618612c359e81481d9a7341d6a2a51p-2,
+    -0x1.7cfe473430fc6p-2
+  },
+  { // Entry 240
+    0x1.88d8a3b14d9e1ff14bbde3d33d157530p-2,
+    0x1.7f47cd10de0e8p-2
+  },
+  { // Entry 241
+    -0x1.88d8a3b14d9e1ff14bbde3d33d157530p-2,
+    -0x1.7f47cd10de0e8p-2
+  },
+  { // Entry 242
+    0x1.8988868fc564c81982b2db8ce8bc0625p-2,
+    0x1.7feae137d5ddep-2
+  },
+  { // Entry 243
+    -0x1.8988868fc564c81982b2db8ce8bc0625p-2,
+    -0x1.7feae137d5ddep-2
+  },
+  { // Entry 244
+    0x1.899fd8f017515812de14f44be98d055cp-2,
+    0x1.80007ffffffffp-2
+  },
+  { // Entry 245
+    -0x1.899fd8f017515812de14f44be98d055cp-2,
+    -0x1.80007ffffffffp-2
+  },
+  { // Entry 246
+    0x1.b27ae0f5ee6e67fffb44fb3a0cb3c215p-1,
+    0x1.802e143a91c4ep-1
+  },
+  { // Entry 247
+    -0x1.b27ae0f5ee6e67fffb44fb3a0cb3c215p-1,
+    -0x1.802e143a91c4ep-1
+  },
+  { // Entry 248
+    0x1.8b7809bb86ae17ec6c24da984138f419p-2,
+    0x1.81b612840dbaep-2
+  },
+  { // Entry 249
+    -0x1.8b7809bb86ae17ec6c24da984138f419p-2,
+    -0x1.81b612840dbaep-2
+  },
+  { // Entry 250
+    0x1.8f91c0fb8e2e97ef847eab1159f00cc6p-2,
+    0x1.8581ade28355fp-2
+  },
+  { // Entry 251
+    -0x1.8f91c0fb8e2e97ef847eab1159f00cc6p-2,
+    -0x1.8581ade28355fp-2
+  },
+  { // Entry 252
+    0x1.8c16f3fc4a5840013187c62d948aa003p-3,
+    0x1.89ap-3
+  },
+  { // Entry 253
+    -0x1.8c16f3fc4a5840013187c62d948aa003p-3,
+    -0x1.89ap-3
+  },
+  { // Entry 254
+    0x1.c1e120b980b3cf3fbf17268200fc8ffbp-1,
+    0x1.8a2f2f54d849ep-1
+  },
+  { // Entry 255
+    -0x1.c1e120b980b3cf3fbf17268200fc8ffbp-1,
+    -0x1.8a2f2f54d849ep-1
+  },
+  { // Entry 256
+    0x1.95b5a93656211806335e5300e251533cp-2,
+    0x1.8b2da077338c2p-2
+  },
+  { // Entry 257
+    -0x1.95b5a93656211806335e5300e251533cp-2,
+    -0x1.8b2da077338c2p-2
+  },
+  { // Entry 258
+    0x1.90cc7766b33bd000fff143442b4e2043p-4,
+    0x1.9028ceb4afd2cp-4
+  },
+  { // Entry 259
+    -0x1.90cc7766b33bd000fff143442b4e2043p-4,
+    -0x1.9028ceb4afd2cp-4
+  },
+  { // Entry 260
+    0x1.cbe2739ce56927fbb7d0777fc5057965p-1,
+    0x1.907e632b1000ep-1
+  },
+  { // Entry 261
+    -0x1.cbe2739ce56927fbb7d0777fc5057965p-1,
+    -0x1.907e632b1000ep-1
+  },
+  { // Entry 262
+    0x1.9eff7d224a10cffd0ccc2eea39c4ecacp-2,
+    0x1.93bb0fc0700b7p-2
+  },
+  { // Entry 263
+    -0x1.9eff7d224a10cffd0ccc2eea39c4ecacp-2,
+    -0x1.93bb0fc0700b7p-2
+  },
+  { // Entry 264
+    0x1.a0552aa49b7117fa53b105630024fe49p-2,
+    0x1.94f4f95477d9ep-2
+  },
+  { // Entry 265
+    -0x1.a0552aa49b7117fa53b105630024fe49p-2,
+    -0x1.94f4f95477d9ep-2
+  },
+  { // Entry 266
+    0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    0x1.9697cb602c582p-3
+  },
+  { // Entry 267
+    -0x1.994ffb5daf0f97ffffffffffffa81adap-3,
+    -0x1.9697cb602c582p-3
+  },
+  { // Entry 268
+    0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    0x1.980p-4
+  },
+  { // Entry 269
+    -0x1.98ad7f9954c2c000dda10069f24bfb9fp-4,
+    -0x1.980p-4
+  },
+  { // Entry 270
+    0x1.9c618aafabed50000080bb9d9c6d602ep-3,
+    0x1.999999a45e898p-3
+  },
+  { // Entry 271
+    -0x1.9c618aafabed50000080bb9d9c6d602ep-3,
+    -0x1.999999a45e898p-3
+  },
+  { // Entry 272
+    0x1.9c618aafac061003732b347dbb6bf610p-3,
+    0x1.999999a45ea1cp-3
+  },
+  { // Entry 273
+    -0x1.9c618aafac061003732b347dbb6bf610p-3,
+    -0x1.999999a45ea1cp-3
+  },
+  { // Entry 274
+    0x1.9c618ab54a7b2ffe4628191f82391647p-3,
+    0x1.999999a9e006dp-3
+  },
+  { // Entry 275
+    -0x1.9c618ab54a7b2ffe4628191f82391647p-3,
+    -0x1.999999a9e006dp-3
+  },
+  { // Entry 276
+    0x1.9c618ab55b092ffd804a3f4bc32f43c6p-3,
+    0x1.999999a9f03f3p-3
+  },
+  { // Entry 277
+    -0x1.9c618ab55b092ffd804a3f4bc32f43c6p-3,
+    -0x1.999999a9f03f3p-3
+  },
+  { // Entry 278
+    0x1.ddedf400713097ce31df0888bcde8d69p-1,
+    0x1.9b7c1d9445413p-1
+  },
+  { // Entry 279
+    -0x1.ddedf400713097ce31df0888bcde8d69p-1,
+    -0x1.9b7c1d9445413p-1
+  },
+  { // Entry 280
+    0x1.eca34562d4a0d79516186d1c200eae46p-1,
+    0x1.a410ef3ffe9b1p-1
+  },
+  { // Entry 281
+    -0x1.eca34562d4a0d79516186d1c200eae46p-1,
+    -0x1.a410ef3ffe9b1p-1
+  },
+  { // Entry 282
+    0x1.f90469438f616801edb23ef0fcf7a322p-1,
+    0x1.ab053825fa3c7p-1
+  },
+  { // Entry 283
+    -0x1.f90469438f616801edb23ef0fcf7a322p-1,
+    -0x1.ab053825fa3c7p-1
+  },
+  { // Entry 284
+    0x1.b000000000cd0800000106bc80666823p-20,
+    0x1.bp-20
+  },
+  { // Entry 285
+    -0x1.b000000000cd0800000106bc80666823p-20,
+    -0x1.bp-20
+  },
+  { // Entry 286
+    0x1.b3b0da67543b3807834a8feb1c1eba94p-3,
+    0x1.b0696dec2c0a1p-3
+  },
+  { // Entry 287
+    -0x1.b3b0da67543b3807834a8feb1c1eba94p-3,
+    -0x1.b0696dec2c0a1p-3
+  },
+  { // Entry 288
+    0x1.04179cbe1e5c1fffff818794e482d547p0,
+    0x1.b333333761245p-1
+  },
+  { // Entry 289
+    -0x1.04179cbe1e5c1fffff818794e482d547p0,
+    -0x1.b333333761245p-1
+  },
+  { // Entry 290
+    0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    0x1.b34p-6
+  },
+  { // Entry 291
+    -0x1.b34d1c29d5ccbffecdc2bdebc095bf13p-6,
+    -0x1.b34p-6
+  },
+  { // Entry 292
+    0x1.0554bb3242a2a800df4cee49ca092177p0,
+    0x1.b48p-1
+  },
+  { // Entry 293
+    -0x1.0554bb3242a2a800df4cee49ca092177p0,
+    -0x1.b48p-1
+  },
+  { // Entry 294
+    0x1.b8a88f38bc5ac8137e8c7eb54443675ep-3,
+    0x1.b54423c1483e2p-3
+  },
+  { // Entry 295
+    -0x1.b8a88f38bc5ac8137e8c7eb54443675ep-3,
+    -0x1.b54423c1483e2p-3
+  },
+  { // Entry 296
+    0x1.07d8cdf7eeee880fbc5277faa149e24ap0,
+    0x1.b71bdc2c4ecf6p-1
+  },
+  { // Entry 297
+    -0x1.07d8cdf7eeee880fbc5277faa149e24ap0,
+    -0x1.b71bdc2c4ecf6p-1
+  },
+  { // Entry 298
+    0x1.bf06ca3159a247fffd949acbf7190141p-6,
+    0x1.bef89775b5e88p-6
+  },
+  { // Entry 299
+    -0x1.bf06ca3159a247fffd949acbf7190141p-6,
+    -0x1.bef89775b5e88p-6
+  },
+  { // Entry 300
+    0x1.ce8c7a50bddbaffeae205209c4b290fcp-2,
+    0x1.befa8c764e35dp-2
+  },
+  { // Entry 301
+    -0x1.ce8c7a50bddbaffeae205209c4b290fcp-2,
+    -0x1.befa8c764e35dp-2
+  },
+  { // Entry 302
+    0x1.cf79cf3c63f057d0885a264fa7e14a24p-2,
+    0x1.bfd007a1b1a48p-2
+  },
+  { // Entry 303
+    -0x1.cf79cf3c63f057d0885a264fa7e14a24p-2,
+    -0x1.bfd007a1b1a48p-2
+  },
+  { // Entry 304
+    0x1.c0e0d42a150f980e71b5f03eded5070fp-23,
+    0x1.c0e0d42a150c0p-23
+  },
+  { // Entry 305
+    -0x1.c0e0d42a150f980e71b5f03eded5070fp-23,
+    -0x1.c0e0d42a150c0p-23
+  },
+  { // Entry 306
+    0x1.c14a6c452bfa080160389f80233eca63p-6,
+    0x1.c13c020751a78p-6
+  },
+  { // Entry 307
+    -0x1.c14a6c452bfa080160389f80233eca63p-6,
+    -0x1.c13c020751a78p-6
+  },
+  { // Entry 308
+    0x1.d11a7b81b1c1e79cf616ad2e273afb43p-2,
+    0x1.c1469a15e68f5p-2
+  },
+  { // Entry 309
+    -0x1.d11a7b81b1c1e79cf616ad2e273afb43p-2,
+    -0x1.c1469a15e68f5p-2
+  },
+  { // Entry 310
+    0x1.16f4bb864adfc800008fd38fd1e04261p0,
+    0x1.c5e01019009efp-1
+  },
+  { // Entry 311
+    -0x1.16f4bb864adfc800008fd38fd1e04261p0,
+    -0x1.c5e01019009efp-1
+  },
+  { // Entry 312
+    0x1.c678548c22ba90p-115,
+    0x1.c678548c22ba9p-115
+  },
+  { // Entry 313
+    -0x1.c678548c22ba90p-115,
+    -0x1.c678548c22ba9p-115
+  },
+  { // Entry 314
+    0x1.d7efd0e20d07d8013801e962e317e549p-2,
+    0x1.c767fffffffffp-2
+  },
+  { // Entry 315
+    -0x1.d7efd0e20d07d8013801e962e317e549p-2,
+    -0x1.c767fffffffffp-2
+  },
+  { // Entry 316
+    0x1.c9e63f1fe0f0e821b29667bc4eb4d50bp-4,
+    0x1.c8f23c8f23c8cp-4
+  },
+  { // Entry 317
+    -0x1.c9e63f1fe0f0e821b29667bc4eb4d50bp-4,
+    -0x1.c8f23c8f23c8cp-4
+  },
+  { // Entry 318
+    0x1.1ea9370e567be7ffffffe01e15866a33p0,
+    0x1.ccccccd416c08p-1
+  },
+  { // Entry 319
+    -0x1.1ea9370e567be7ffffffe01e15866a33p0,
+    -0x1.ccccccd416c08p-1
+  },
+  { // Entry 320
+    0x1.22927e6073b4c80000d27967f2a7a4f7p0,
+    0x1.d027e48f2c2bap-1
+  },
+  { // Entry 321
+    -0x1.22927e6073b4c80000d27967f2a7a4f7p0,
+    -0x1.d027e48f2c2bap-1
+  },
+  { // Entry 322
+    0x1.d2e000000102cdc6eb418359d0682dedp-20,
+    0x1.d2ep-20
+  },
+  { // Entry 323
+    -0x1.d2e000000102cdc6eb418359d0682dedp-20,
+    -0x1.d2ep-20
+  },
+  { // Entry 324
+    0x1.281b4c2fcafe57fe16b4679be76d29f5p0,
+    0x1.d4b81182fe13bp-1
+  },
+  { // Entry 325
+    -0x1.281b4c2fcafe57fe16b4679be76d29f5p0,
+    -0x1.d4b81182fe13bp-1
+  },
+  { // Entry 326
+    0x1.e70a08011eeb97fb46e212681fd509f0p-2,
+    0x1.d4e205cadb381p-2
+  },
+  { // Entry 327
+    -0x1.e70a08011eeb97fb46e212681fd509f0p-2,
+    -0x1.d4e205cadb381p-2
+  },
+  { // Entry 328
+    0x1.d90d0803393b9819fec9e92bfd414223p-4,
+    0x1.d80p-4
+  },
+  { // Entry 329
+    -0x1.d90d0803393b9819fec9e92bfd414223p-4,
+    -0x1.d80p-4
+  },
+  { // Entry 330
+    0x1.3172527a00f7e8002439c6d9f1d3590dp0,
+    0x1.dbec0e2ae5bdbp-1
+  },
+  { // Entry 331
+    -0x1.3172527a00f7e8002439c6d9f1d3590dp0,
+    -0x1.dbec0e2ae5bdbp-1
+  },
+  { // Entry 332
+    0x1.dd2bf488d4241c11bf324d508cfacbeap-11,
+    0x1.dd2bf03799278p-11
+  },
+  { // Entry 333
+    -0x1.dd2bf488d4241c11bf324d508cfacbeap-11,
+    -0x1.dd2bf03799278p-11
+  },
+  { // Entry 334
+    0x1.f192112f19e6f7fc311ba78ec60abb13p-2,
+    0x1.de386d60903a5p-2
+  },
+  { // Entry 335
+    -0x1.f192112f19e6f7fc311ba78ec60abb13p-2,
+    -0x1.de386d60903a5p-2
+  },
+  { // Entry 336
+    0x1.f408515902f777fad5cb629690c96e8cp-2,
+    0x1.e0655f628fcc4p-2
+  },
+  { // Entry 337
+    -0x1.f408515902f777fad5cb629690c96e8cp-2,
+    -0x1.e0655f628fcc4p-2
+  },
+  { // Entry 338
+    0x1.f425d0cdf031d78d14e47ef92c30410dp-2,
+    0x1.e07f6c11f3ad7p-2
+  },
+  { // Entry 339
+    -0x1.f425d0cdf031d78d14e47ef92c30410dp-2,
+    -0x1.e07f6c11f3ad7p-2
+  },
+  { // Entry 340
+    0x1.e4c86c3587e888034c71e60a370d6263p-5,
+    0x1.e48p-5
+  },
+  { // Entry 341
+    -0x1.e4c86c3587e888034c71e60a370d6263p-5,
+    -0x1.e48p-5
+  },
+  { // Entry 342
+    0x1.e6c2ee85159eeffd05dd82882578d1d4p-5,
+    0x1.e6799e6799e64p-5
+  },
+  { // Entry 343
+    -0x1.e6c2ee85159eeffd05dd82882578d1d4p-5,
+    -0x1.e6799e6799e64p-5
+  },
+  { // Entry 344
+    0x1.e92973bd05fb21d34afdf692cee7c5d5p-4,
+    0x1.e80p-4
+  },
+  { // Entry 345
+    -0x1.e92973bd05fb21d34afdf692cee7c5d5p-4,
+    -0x1.e80p-4
+  },
+  { // Entry 346
+    0x1.eb3228982dcb8aaa55776e8b9ba3cd25p-4,
+    0x1.ea04fb75153f7p-4
+  },
+  { // Entry 347
+    -0x1.eb3228982dcb8aaa55776e8b9ba3cd25p-4,
+    -0x1.ea04fb75153f7p-4
+  },
+  { // Entry 348
+    0x1.f026f488662fc51b1e6d97371bb4f957p-3,
+    0x1.eb50295fad425p-3
+  },
+  { // Entry 349
+    -0x1.f026f488662fc51b1e6d97371bb4f957p-3,
+    -0x1.eb50295fad425p-3
+  },
+  { // Entry 350
+    0x1.eb63051149d3b7822ba54208fc03580ep-6,
+    0x1.eb50295fad425p-6
+  },
+  { // Entry 351
+    -0x1.eb63051149d3b7822ba54208fc03580ep-6,
+    -0x1.eb50295fad425p-6
+  },
+  { // Entry 352
+    0x1.4a55ae332c7a4c09ea98e7d59d9872dfp0,
+    0x1.ec0p-1
+  },
+  { // Entry 353
+    -0x1.4a55ae332c7a4c09ea98e7d59d9872dfp0,
+    -0x1.ec0p-1
+  },
+  { // Entry 354
+    0x1.4c655babcbe0b41389bc82e9f12e67c7p0,
+    0x1.ed2p-1
+  },
+  { // Entry 355
+    -0x1.4c655babcbe0b41389bc82e9f12e67c7p0,
+    -0x1.ed2p-1
+  },
+  { // Entry 356
+    0x1.4ff93f191d3694ab593de5dd6371b96fp0,
+    0x1.ef00708a54b2cp-1
+  },
+  { // Entry 357
+    -0x1.4ff93f191d3694ab593de5dd6371b96fp0,
+    -0x1.ef00708a54b2cp-1
+  },
+  { // Entry 358
+    0x1.ef77ab8e8feff4c39e94fa09320902abp-21,
+    0x1.ef77ab8e8fa2ap-21
+  },
+  { // Entry 359
+    -0x1.ef77ab8e8feff4c39e94fa09320902abp-21,
+    -0x1.ef77ab8e8fa2ap-21
+  },
+  { // Entry 360
+    0x1.efe5d9610962p-114,
+    0x1.efe5d96109620p-114
+  },
+  { // Entry 361
+    -0x1.efe5d9610962p-114,
+    -0x1.efe5d96109620p-114
+  },
+  { // Entry 362
+    0x1.51f4bd13f858ebf929a2088e2df34c72p0,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 363
+    -0x1.51f4bd13f858ebf929a2088e2df34c72p0,
+    -0x1.effffffffffffp-1
+  },
+  { // Entry 364
+    0x1.52f8c72726a5343c6b1f75919edb5695p0,
+    0x1.f08p-1
+  },
+  { // Entry 365
+    -0x1.52f8c72726a5343c6b1f75919edb5695p0,
+    -0x1.f08p-1
+  },
+  { // Entry 366
+    0x1.54a5553221e80bf87bdb823192526176p0,
+    0x1.f14e94d8d2e1ep-1
+  },
+  { // Entry 367
+    -0x1.54a5553221e80bf87bdb823192526176p0,
+    -0x1.f14e94d8d2e1ep-1
+  },
+  { // Entry 368
+    0x1.5587523c7468b4173cf688f3219a184bp0,
+    0x1.f1b9535b4f194p-1
+  },
+  { // Entry 369
+    -0x1.5587523c7468b4173cf688f3219a184bp0,
+    -0x1.f1b9535b4f194p-1
+  },
+  { // Entry 370
+    0x1.56f4285735ecd7fe51444aebf353c0fbp0,
+    0x1.f26274adac979p-1
+  },
+  { // Entry 371
+    -0x1.56f4285735ecd7fe51444aebf353c0fbp0,
+    -0x1.f26274adac979p-1
+  },
+  { // Entry 372
+    0x1.6a45631fc69f340139208a9ea48fe11ap0,
+    0x1.f9cef541d5e40p-1
+  },
+  { // Entry 373
+    -0x1.6a45631fc69f340139208a9ea48fe11ap0,
+    -0x1.f9cef541d5e40p-1
+  },
+  { // Entry 374
+    0x1.fa639fc0adc0454cb19c822984da84edp-10,
+    0x1.fa638b1ceed60p-10
+  },
+  { // Entry 375
+    -0x1.fa639fc0adc0454cb19c822984da84edp-10,
+    -0x1.fa638b1ceed60p-10
+  },
+  { // Entry 376
+    0x1.fbf655a75453f895b93ae4abf4622da1p-5,
+    0x1.fba3053043e65p-5
+  },
+  { // Entry 377
+    -0x1.fbf655a75453f895b93ae4abf4622da1p-5,
+    -0x1.fba3053043e65p-5
+  },
+  { // Entry 378
+    0x1.7b802087557af76d96f304c0322df996p0,
+    0x1.fe0084356e6d3p-1
+  },
+  { // Entry 379
+    -0x1.7b802087557af76d96f304c0322df996p0,
+    -0x1.fe0084356e6d3p-1
+  },
+  { // Entry 380
+    0x1.7b8020890cf9e76f8fbc0fabd64eff53p0,
+    0x1.fe008435bc011p-1
+  },
+  { // Entry 381
+    -0x1.7b8020890cf9e76f8fbc0fabd64eff53p0,
+    -0x1.fe008435bc011p-1
+  },
+  { // Entry 382
+    0x1.7e1781bb355ec7803ff31d5be8def463p0,
+    0x1.fe6eec178dfcbp-1
+  },
+  { // Entry 383
+    -0x1.7e1781bb355ec7803ff31d5be8def463p0,
+    -0x1.fe6eec178dfcbp-1
+  },
+  { // Entry 384
+    0x1.7e2f2046c07b287fa8dea80ba23ad32dp0,
+    0x1.fe729b3d76af8p-1
+  },
+  { // Entry 385
+    -0x1.7e2f2046c07b287fa8dea80ba23ad32dp0,
+    -0x1.fe729b3d76af8p-1
+  },
+  { // Entry 386
+    0x1.7e2f2de8b8a817806d1670be6f754d6dp0,
+    0x1.fe729d5c93ad0p-1
+  },
+  { // Entry 387
+    -0x1.7e2f2de8b8a817806d1670be6f754d6dp0,
+    -0x1.fe729d5c93ad0p-1
+  },
+  { // Entry 388
+    0x1.ff49880d5a20aac3e3526e6cf9e09cb8p-10,
+    0x1.ff4972cecbed8p-10
+  },
+  { // Entry 389
+    -0x1.ff49880d5a20aac3e3526e6cf9e09cb8p-10,
+    -0x1.ff4972cecbed8p-10
+  },
+  { // Entry 390
+    0x1.ff87e144b3d5285c831c0483be2e06a7p-6,
+    0x1.ff729b33a450ap-6
+  },
+  { // Entry 391
+    -0x1.ff87e144b3d5285c831c0483be2e06a7p-6,
+    -0x1.ff729b33a450ap-6
+  },
+  { // Entry 392
+    0x1.027c7bd81acdf7fffe09c8613b3ac04ap-2,
+    0x1.ff7feffffffffp-3
+  },
+  { // Entry 393
+    -0x1.027c7bd81acdf7fffe09c8613b3ac04ap-2,
+    -0x1.ff7feffffffffp-3
+  },
+  { // Entry 394
+    0x1.ff8ffffffffff0000000551d619470aap-41,
+    0x1.ff8ffffffffffp-41
+  },
+  { // Entry 395
+    -0x1.ff8ffffffffff0000000551d619470aap-41,
+    -0x1.ff8ffffffffffp-41
+  },
+  { // Entry 396
+    0x1.0bf4cf34f3faeff2e4c6b885b77bb549p-1,
+    0x1.ffc7fffffffffp-2
+  },
+  { // Entry 397
+    -0x1.0bf4cf34f3faeff2e4c6b885b77bb549p-1,
+    -0x1.ffc7fffffffffp-2
+  },
+  { // Entry 398
+    0x1.8ab0d642e4c54804398ead7dd2453377p0,
+    0x1.ffc8c0c7e6e1ap-1
+  },
+  { // Entry 399
+    -0x1.8ab0d642e4c54804398ead7dd2453377p0,
+    -0x1.ffc8c0c7e6e1ap-1
+  },
+  { // Entry 400
+    0x1.8bbc3fa798db6800007c1f9be356a554p0,
+    0x1.ffd730634939cp-1
+  },
+  { // Entry 401
+    -0x1.8bbc3fa798db6800007c1f9be356a554p0,
+    -0x1.ffd730634939cp-1
+  },
+  { // Entry 402
+    0x1.8bc09a510098b804dee9939611959c0ep0,
+    0x1.ffd767f0eb014p-1
+  },
+  { // Entry 403
+    -0x1.8bc09a510098b804dee9939611959c0ep0,
+    -0x1.ffd767f0eb014p-1
+  },
+  { // Entry 404
+    0x1.0022b9e6710f97fcdf56a91cace59e6dp-4,
+    0x1.fff000000000ap-5
+  },
+  { // Entry 405
+    -0x1.0022b9e6710f97fcdf56a91cace59e6dp-4,
+    -0x1.fff000000000ap-5
+  },
+  { // Entry 406
+    0x1.fff1065375e97dcce338cf6e9331a5d9p-10,
+    0x1.fff0f0fffffffp-10
+  },
+  { // Entry 407
+    -0x1.fff1065375e97dcce338cf6e9331a5d9p-10,
+    -0x1.fff0f0fffffffp-10
+  },
+  { // Entry 408
+    0x1.0c10851c1a1097dc3df97865c5caec5bp-1,
+    0x1.fff7fffffffffp-2
+  },
+  { // Entry 409
+    -0x1.0c10851c1a1097dc3df97865c5caec5bp-1,
+    -0x1.fff7fffffffffp-2
+  },
+  { // Entry 410
+    0x1.02be94db85e837fffd06abd4bb6eb065p-2,
+    0x1.fffff077fffaep-3
+  },
+  { // Entry 411
+    -0x1.02be94db85e837fffd06abd4bb6eb065p-2,
+    -0x1.fffff077fffaep-3
+  },
+  { // Entry 412
+    0x1.ffffff4555553f7bbbbd352972db79p-15,
+    0x1.ffffff3ffffffp-15
+  },
+  { // Entry 413
+    -0x1.ffffff4555553f7bbbbd352972db79p-15,
+    -0x1.ffffff3ffffffp-15
+  },
+  { // Entry 414
+    0x1.00abe0c026d6980000ee7b5b3c750ee4p-3,
+    0x1.fffffffdfdf9bp-4
+  },
+  { // Entry 415
+    -0x1.00abe0c026d6980000ee7b5b3c750ee4p-3,
+    -0x1.fffffffdfdf9bp-4
+  },
+  { // Entry 416
+    0x1.921e7bbb5b08af737a8c86a1f3470fb7p0,
+    0x1.fffffffe7ffffp-1
+  },
+  { // Entry 417
+    -0x1.921e7bbb5b08af737a8c86a1f3470fb7p0,
+    -0x1.fffffffe7ffffp-1
+  },
+  { // Entry 418
+    0x1.921e91836230570dcee4fe03756f458cp0,
+    0x1.fffffffeb37ffp-1
+  },
+  { // Entry 419
+    -0x1.921e91836230570dcee4fe03756f458cp0,
+    -0x1.fffffffeb37ffp-1
+  },
+  { // Entry 420
+    0x1.0002aabdac7327ffffd50d8db1e7238cp-6,
+    0x1.ffffffff9bbffp-7
+  },
+  { // Entry 421
+    -0x1.0002aabdac7327ffffd50d8db1e7238cp-6,
+    -0x1.ffffffff9bbffp-7
+  },
+  { // Entry 422
+    0x1.00abe0c121d1a80c0ce870896b905389p-3,
+    0x1.ffffffffeffffp-4
+  },
+  { // Entry 423
+    -0x1.00abe0c121d1a80c0ce870896b905389p-3,
+    -0x1.ffffffffeffffp-4
+  },
+  { // Entry 424
+    0x1.0002aabdde7237febfdec02e5706bab1p-6,
+    0x1.ffffffffffbafp-7
+  },
+  { // Entry 425
+    -0x1.0002aabdde7237febfdec02e5706bab1p-6,
+    -0x1.ffffffffffbafp-7
+  },
+  { // Entry 426
+    0x1.002abde95358d80170fb3700a02d872dp-4,
+    0x1.ffffffffffee9p-5
+  },
+  { // Entry 427
+    -0x1.002abde95358d80170fb3700a02d872dp-4,
+    -0x1.ffffffffffee9p-5
+  },
+  { // Entry 428
+    0x1.921fb2cdef21d7febc9f3f1b1d1683b0p0,
+    0x1.fffffffffff9fp-1
+  },
+  { // Entry 429
+    -0x1.921fb2cdef21d7febc9f3f1b1d1683b0p0,
+    -0x1.fffffffffff9fp-1
+  },
+  { // Entry 430
+    0x1.921fb48f3dde506fab247b4dc86ea6e0p0,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 431
+    -0x1.921fb48f3dde506fab247b4dc86ea6e0p0,
+    -0x1.ffffffffffff8p-1
+  },
+  { // Entry 432
+    0x1.02be9ce0b87c980fa863b980f3eb6ed8p-2,
+    0x1.ffffffffffff9p-3
+  },
+  { // Entry 433
+    -0x1.02be9ce0b87c980fa863b980f3eb6ed8p-2,
+    -0x1.ffffffffffff9p-3
+  },
+  { // Entry 434
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 435
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 436
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 437
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 438
+    0x1.4a1ce4ed5846e1103ebca2dd90e3eb3fp-1,
+    0x1.33b645a1cac08p-1
+  },
+  { // Entry 439
+    -0x1.4a1ce4ed5846e1103ebca2dd90e3eb3fp-1,
+    -0x1.33b645a1cac08p-1
+  },
+  { // Entry 440
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 441
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 442
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 443
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 444
+    -0x1.b235315c680dc081583db360d5e1fa18p-1,
+    -0x1.8p-1
+  },
+  { // Entry 445
+    0x1.b235315c680dc081583db360d5e1fa18p-1,
+    0x1.8p-1
+  },
+  { // Entry 446
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 447
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 448
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 449
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 450
+    0x1.908138a8b9ab762dbe47f3cc71dd77a4p0,
+    0x1.fffd60e94ee39p-1
+  },
+  { // Entry 451
+    -0x1.908138a8b9ab762dbe47f3cc71dd77a4p0,
+    -0x1.fffd60e94ee39p-1
+  },
+  { // Entry 452
+    0x1.p-82,
+    0x1.0p-82
+  },
+  { // Entry 453
+    -0x1.p-82,
+    -0x1.0p-82
+  },
+  { // Entry 454
+    0x1.0000000000000000000000000000000ap-61,
+    0x1.0p-61
+  },
+  { // Entry 455
+    -0x1.0000000000000000000000000000000ap-61,
+    -0x1.0p-61
+  },
+  { // Entry 456
+    0x1.0000000000000000000002aaaaaaaaaap-42,
+    0x1.0p-42
+  },
+  { // Entry 457
+    -0x1.0000000000000000000002aaaaaaaaaap-42,
+    -0x1.0p-42
+  },
+  { // Entry 458
+    0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    0x1.0p-22
+  },
+  { // Entry 459
+    -0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    -0x1.0p-22
+  },
+  { // Entry 460
+    0x1.6a0a049378647a1e52ffdf31536df951p-9,
+    0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 461
+    -0x1.6a0a049378647a1e52ffdf31536df951p-9,
+    -0x1.6a09e667f3bcbp-9
+  },
+  { // Entry 462
+    0x1.6a0a049378648a1e56ffe0b1540df936p-9,
+    0x1.6a09e667f3bccp-9
+  },
+  { // Entry 463
+    -0x1.6a0a049378648a1e56ffe0b1540df936p-9,
+    -0x1.6a09e667f3bccp-9
+  },
+  { // Entry 464
+    0x1.6a0a049378649a1e5affe23154adf976p-9,
+    0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 465
+    -0x1.6a0a049378649a1e5affe23154adf976p-9,
+    -0x1.6a09e667f3bcdp-9
+  },
+  { // Entry 466
+    0x1.6a0a5f1657d1bf22d957bf86231eed1ap-8,
+    0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 467
+    -0x1.6a0a5f1657d1bf22d957bf86231eed1ap-8,
+    -0x1.6a09e667f3bcbp-8
+  },
+  { // Entry 468
+    0x1.6a0a5f1657d1cf22e957d7864b1f3199p-8,
+    0x1.6a09e667f3bccp-8
+  },
+  { // Entry 469
+    -0x1.6a0a5f1657d1cf22e957d7864b1f3199p-8,
+    -0x1.6a09e667f3bccp-8
+  },
+  { // Entry 470
+    0x1.6a0a5f1657d1df22f957ef86731f7782p-8,
+    0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 471
+    -0x1.6a0a5f1657d1df22f957ef86731f7782p-8,
+    -0x1.6a09e667f3bcdp-8
+  },
+  { // Entry 472
+    0x1.6a0bc9269b86124131fa4b997808aec8p-7,
+    0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 473
+    -0x1.6a0bc9269b86124131fa4b997808aec8p-7,
+    -0x1.6a09e667f3bcbp-7
+  },
+  { // Entry 474
+    0x1.6a0bc9269b86224171fbcba3784eaabap-7,
+    0x1.6a09e667f3bccp-7
+  },
+  { // Entry 475
+    -0x1.6a0bc9269b86224171fbcba3784eaabap-7,
+    -0x1.6a09e667f3bccp-7
+  },
+  { // Entry 476
+    0x1.6a0bc9269b863241b1fd4bad7894ac55p-7,
+    0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 477
+    -0x1.6a0bc9269b863241b1fd4bad7894ac55p-7,
+    -0x1.6a09e667f3bcdp-7
+  },
+  { // Entry 478
+    0x1.6a1171b40fe3d57da5c2e2ec8650d873p-6,
+    0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 479
+    -0x1.6a1171b40fe3d57da5c2e2ec8650d873p-6,
+    -0x1.6a09e667f3bcbp-6
+  },
+  { // Entry 480
+    0x1.6a1171b40fe3e57ea5dae56ccc58a13ep-6,
+    0x1.6a09e667f3bccp-6
+  },
+  { // Entry 481
+    -0x1.6a1171b40fe3e57ea5dae56ccc58a13ep-6,
+    -0x1.6a09e667f3bccp-6
+  },
+  { // Entry 482
+    0x1.6a1171b40fe3f57fa5f2e7ed126080afp-6,
+    0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 483
+    -0x1.6a1171b40fe3f57fa5f2e7ed126080afp-6,
+    -0x1.6a09e667f3bcdp-6
+  },
+  { // Entry 484
+    0x1.6a2818b1a0bd5f9b490a8ffd372921ffp-5,
+    0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 485
+    -0x1.6a2818b1a0bd5f9b490a8ffd372921ffp-5,
+    -0x1.6a09e667f3bcbp-5
+  },
+  { // Entry 486
+    0x1.6a2818b1a0bd6f9f4a8b304356b73812p-5,
+    0x1.6a09e667f3bccp-5
+  },
+  { // Entry 487
+    -0x1.6a2818b1a0bd6f9f4a8b304356b73812p-5,
+    -0x1.6a09e667f3bccp-5
+  },
+  { // Entry 488
+    0x1.6a2818b1a0bd7fa34c0bd0897645a8ebp-5,
+    0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 489
+    -0x1.6a2818b1a0bd7fa34c0bd0897645a8ebp-5,
+    -0x1.6a09e667f3bcdp-5
+  },
+  { // Entry 490
+    0x1.6a83017dfb54c538079f0571169f7c03p-4,
+    0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 491
+    -0x1.6a83017dfb54c538079f0571169f7c03p-4,
+    -0x1.6a09e667f3bcbp-4
+  },
+  { // Entry 492
+    0x1.6a83017dfb54d5481fc74befff4e205fp-4,
+    0x1.6a09e667f3bccp-4
+  },
+  { // Entry 493
+    -0x1.6a83017dfb54d5481fc74befff4e205fp-4,
+    -0x1.6a09e667f3bccp-4
+  },
+  { // Entry 494
+    0x1.6a83017dfb54e55837ef926ee7fe330dp-4,
+    0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 495
+    -0x1.6a83017dfb54e55837ef926ee7fe330dp-4,
+    -0x1.6a09e667f3bcdp-4
+  },
+  { // Entry 496
+    0x1.6bf38916421401c3b5732e0d6b50ebd0p-3,
+    0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 497
+    -0x1.6bf38916421401c3b5732e0d6b50ebd0p-3,
+    -0x1.6a09e667f3bcbp-3
+  },
+  { // Entry 498
+    0x1.6bf38916421412053fbb34ebe8221436p-3,
+    0x1.6a09e667f3bccp-3
+  },
+  { // Entry 499
+    -0x1.6bf38916421412053fbb34ebe8221436p-3,
+    -0x1.6a09e667f3bccp-3
+  },
+  { // Entry 500
+    0x1.6bf3891642142246ca033bca64f92b66p-3,
+    0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 501
+    -0x1.6bf3891642142246ca033bca64f92b66p-3,
+    -0x1.6a09e667f3bcdp-3
+  },
+  { // Entry 502
+    0x1.720a392c1d952d8e8ad756e1430b13d1p-2,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 503
+    -0x1.720a392c1d952d8e8ad756e1430b13d1p-2,
+    -0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 504
+    0x1.720a392c1d953ea959bcb7056cb6fa96p-2,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 505
+    -0x1.720a392c1d953ea959bcb7056cb6fa96p-2,
+    -0x1.6a09e667f3bccp-2
+  },
+  { // Entry 506
+    0x1.720a392c1d954fc428a21729967e8694p-2,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 507
+    -0x1.720a392c1d954fc428a21729967e8694p-2,
+    -0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 508
+    0x1.bb67e5f28d500f1ccaec1a38d240d53fp-9,
+    0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 509
+    -0x1.bb67e5f28d500f1ccaec1a38d240d53fp-9,
+    -0x1.bb67ae8584ca9p-9
+  },
+  { // Entry 510
+    0x1.bb67e5f28d501f1cd0ec1d98d45cd638p-9,
+    0x1.bb67ae8584caap-9
+  },
+  { // Entry 511
+    -0x1.bb67e5f28d501f1cd0ec1d98d45cd638p-9,
+    -0x1.bb67ae8584caap-9
+  },
+  { // Entry 512
+    0x1.bb67e5f28d502f1cd6ec20f8d678d7a0p-9,
+    0x1.bb67ae8584cabp-9
+  },
+  { // Entry 513
+    -0x1.bb67e5f28d502f1cd6ec20f8d678d7a0p-9,
+    -0x1.bb67ae8584cabp-9
+  },
+  { // Entry 514
+    0x1.bb688c3a875bcb79b1d1fd5de10c96d1p-8,
+    0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 515
+    -0x1.bb688c3a875bcb79b1d1fd5de10c96d1p-8,
+    -0x1.bb67ae8584ca9p-8
+  },
+  { // Entry 516
+    0x1.bb688c3a875bdb79c9d2335e680df78fp-8,
+    0x1.bb67ae8584caap-8
+  },
+  { // Entry 517
+    -0x1.bb688c3a875bdb79c9d2335e680df78fp-8,
+    -0x1.bb67ae8584caap-8
+  },
+  { // Entry 518
+    0x1.bb688c3a875beb79e1d2695eef0f5a08p-8,
+    0x1.bb67ae8584cabp-8
+  },
+  { // Entry 519
+    -0x1.bb688c3a875beb79e1d2695eef0f5a08p-8,
+    -0x1.bb67ae8584cabp-8
+  },
+  { // Entry 520
+    0x1.bb6b2567972165018cf35a469b36c5e6p-7,
+    0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 521
+    -0x1.bb6b2567972165018cf35a469b36c5e6p-7,
+    -0x1.bb67ae8584ca9p-7
+  },
+  { // Entry 522
+    0x1.bb6b256797217501ecf6ba685c992e41p-7,
+    0x1.bb67ae8584caap-7
+  },
+  { // Entry 523
+    -0x1.bb6b256797217501ecf6ba685c992e41p-7,
+    -0x1.bb67ae8584caap-7
+  },
+  { // Entry 524
+    0x1.bb6b2567972185024cfa1a8a1dfb9d8ap-7,
+    0x1.bb67ae8584cabp-7
+  },
+  { // Entry 525
+    -0x1.bb6b2567972185024cfa1a8a1dfb9d8ap-7,
+    -0x1.bb67ae8584cabp-7
+  },
+  { // Entry 526
+    0x1.bb758aee66c4f6179c2a4c9e47ed2c98p-6,
+    0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 527
+    -0x1.bb758aee66c4f6179c2a4c9e47ed2c98p-6,
+    -0x1.bb67ae8584ca9p-6
+  },
+  { // Entry 528
+    0x1.bb758aee66c506191c60550faa88e978p-6,
+    0x1.bb67ae8584caap-6
+  },
+  { // Entry 529
+    -0x1.bb758aee66c506191c60550faa88e978p-6,
+    -0x1.bb67ae8584caap-6
+  },
+  { // Entry 530
+    0x1.bb758aee66c5161a9c965d810d24c216p-6,
+    0x1.bb67ae8584cabp-6
+  },
+  { // Entry 531
+    -0x1.bb758aee66c5161a9c965d810d24c216p-6,
+    -0x1.bb67ae8584cabp-6
+  },
+  { // Entry 532
+    0x1.bb9f2e3879c2cf9ea454ab283af7825ap-5,
+    0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 533
+    -0x1.bb9f2e3879c2cf9ea454ab283af7825ap-5,
+    -0x1.bb67ae8584ca9p-5
+  },
+  { // Entry 534
+    0x1.bb9f2e3879c2dfa4a7b6c88b8acffef5p-5,
+    0x1.bb67ae8584caap-5
+  },
+  { // Entry 535
+    -0x1.bb9f2e3879c2dfa4a7b6c88b8acffef5p-5,
+    -0x1.bb67ae8584caap-5
+  },
+  { // Entry 536
+    0x1.bb9f2e3879c2efaaab18e5eedaa8eae8p-5,
+    0x1.bb67ae8584cabp-5
+  },
+  { // Entry 537
+    -0x1.bb9f2e3879c2efaaab18e5eedaa8eae8p-5,
+    -0x1.bb67ae8584cabp-5
+  },
+  { // Entry 538
+    0x1.bc468fc3ecf6b031e5cd5bd050766cd7p-4,
+    0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 539
+    -0x1.bc468fc3ecf6b031e5cd5bd050766cd7p-4,
+    -0x1.bb67ae8584ca9p-4
+  },
+  { // Entry 540
+    0x1.bc468fc3ecf6c04a1c55c1f784a40b33p-4,
+    0x1.bb67ae8584caap-4
+  },
+  { // Entry 541
+    -0x1.bc468fc3ecf6c04a1c55c1f784a40b33p-4,
+    -0x1.bb67ae8584caap-4
+  },
+  { // Entry 542
+    0x1.bc468fc3ecf6d06252de281eb8d36cdfp-4,
+    0x1.bb67ae8584cabp-4
+  },
+  { // Entry 543
+    -0x1.bc468fc3ecf6d06252de281eb8d36cdfp-4,
+    -0x1.bb67ae8584cabp-4
+  },
+  { // Entry 544
+    0x1.bef1bcb08890131f87f550d6c3652dd7p-3,
+    0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 545
+    -0x1.bef1bcb08890131f87f550d6c3652dd7p-3,
+    -0x1.bb67ae8584ca9p-3
+  },
+  { // Entry 546
+    0x1.bef1bcb0889023830b2750073d51ac87p-3,
+    0x1.bb67ae8584caap-3
+  },
+  { // Entry 547
+    -0x1.bef1bcb0889023830b2750073d51ac87p-3,
+    -0x1.bb67ae8584caap-3
+  },
+  { // Entry 548
+    0x1.bef1bcb0889033e68e594f37b7459d46p-3,
+    0x1.bb67ae8584cabp-3
+  },
+  { // Entry 549
+    -0x1.bef1bcb0889033e68e594f37b7459d46p-3,
+    -0x1.bb67ae8584cabp-3
+  },
+  { // Entry 550
+    0x1.ca94936b98a1ffe8286e976abd1b0451p-2,
+    0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 551
+    -0x1.ca94936b98a1ffe8286e976abd1b0451p-2,
+    -0x1.bb67ae8584ca9p-2
+  },
+  { // Entry 552
+    0x1.ca94936b98a211a8430ed35352bc881bp-2,
+    0x1.bb67ae8584caap-2
+  },
+  { // Entry 553
+    -0x1.ca94936b98a211a8430ed35352bc881bp-2,
+    -0x1.bb67ae8584caap-2
+  },
+  { // Entry 554
+    0x1.ca94936b98a223685daf0f3be883e2d0p-2,
+    0x1.bb67ae8584cabp-2
+  },
+  { // Entry 555
+    -0x1.ca94936b98a223685daf0f3be883e2d0p-2,
+    -0x1.bb67ae8584cabp-2
+  },
+  { // Entry 556
+    0x1.fffffffffffff0p-128,
+    0x1.fffffffffffffp-128
+  },
+  { // Entry 557
+    -0x1.fffffffffffff0p-128,
+    -0x1.fffffffffffffp-128
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.0p-127
+  },
+  { // Entry 559
+    -0x1.p-127,
+    -0x1.0p-127
+  },
+  { // Entry 560
+    0x1.00000000000010p-127,
+    0x1.0000000000001p-127
+  },
+  { // Entry 561
+    -0x1.00000000000010p-127,
+    -0x1.0000000000001p-127
+  },
+  { // Entry 562
+    0x1.fffffffffffff0p-127,
+    0x1.fffffffffffffp-127
+  },
+  { // Entry 563
+    -0x1.fffffffffffff0p-127,
+    -0x1.fffffffffffffp-127
+  },
+  { // Entry 564
+    0x1.p-126,
+    0x1.0p-126
+  },
+  { // Entry 565
+    -0x1.p-126,
+    -0x1.0p-126
+  },
+  { // Entry 566
+    0x1.00000000000010p-126,
+    0x1.0000000000001p-126
+  },
+  { // Entry 567
+    -0x1.00000000000010p-126,
+    -0x1.0000000000001p-126
+  },
+  { // Entry 568
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 569
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 570
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 571
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 572
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 573
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 574
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 575
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 576
+    -0.0,
+    -0.0
+  },
+  { // Entry 577
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 578
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 579
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 580
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 581
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 582
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 583
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 584
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 585
+    0x1.fffffffffffff005555555555554d57bp-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 586
+    -0x1.fffffffffffff005555555555554d57bp-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 587
+    0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    0x1.0p-30
+  },
+  { // Entry 588
+    -0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    -0x1.0p-30
+  },
+  { // Entry 589
+    0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 590
+    -0x1.0000000000001002aaaaaaaaaaab2abdp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 591
+    0x1.fffffffffffff155555555555537bbbbp-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 592
+    -0x1.fffffffffffff155555555555537bbbbp-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 593
+    0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    0x1.0p-27
+  },
+  { // Entry 594
+    -0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    -0x1.0p-27
+  },
+  { // Entry 595
+    0x1.00000000000010aaaaaaaaaaaacbddddp-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 596
+    -0x1.00000000000010aaaaaaaaaaaacbddddp-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 597
+    0x1.00000000000002aaaaaaaaaaaaddddddp-25,
+    0x1.fffffffffffffp-26
+  },
+  { // Entry 598
+    -0x1.00000000000002aaaaaaaaaaaaddddddp-25,
+    -0x1.fffffffffffffp-26
+  },
+  { // Entry 599
+    0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    0x1.0p-25
+  },
+  { // Entry 600
+    -0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    -0x1.0p-25
+  },
+  { // Entry 601
+    0x1.0000000000001aaaaaaaaaaaadddddddp-25,
+    0x1.0000000000001p-25
+  },
+  { // Entry 602
+    -0x1.0000000000001aaaaaaaaaaaadddddddp-25,
+    -0x1.0000000000001p-25
+  },
+  { // Entry 603
+    0x1.00000002aaaaa2bddddd9e94b9489c80p-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 604
+    -0x1.00000002aaaaa2bddddd9e94b9489c80p-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 605
+    0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    0x1.0p-14
+  },
+  { // Entry 606
+    -0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    -0x1.0p-14
+  },
+  { // Entry 607
+    0x1.00000002aaaababdddde5e94b9519c80p-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 608
+    -0x1.00000002aaaababdddde5e94b9519c80p-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 609
+    0x1.0002aabdde94b912cccf6cb7a147dbe6p-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 610
+    -0x1.0002aabdde94b912cccf6cb7a147dbe6p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 611
+    0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    0x1.0p-6
+  },
+  { // Entry 612
+    -0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    -0x1.0p-6
+  },
+  { // Entry 613
+    0x1.0002aabdde94d1138cd86d2fa7d8406cp-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 614
+    -0x1.0002aabdde94d1138cd86d2fa7d8406cp-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 615
+    0x1.000aabde0b9c79d5d91547bc0e143946p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 616
+    -0x1.000aabde0b9c79d5d91547bc0e143946p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 617
+    0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    0x1.0p-5
+  },
+  { // Entry 618
+    -0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    -0x1.0p-5
+  },
+  { // Entry 619
+    0x1.000aabde0b9c91d8d9a565c29f8ea804p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 620
+    -0x1.000aabde0b9c91d8d9a565c29f8ea804p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 621
+    0x1.002abde953618c5cb5b49945c179d0f3p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 622
+    -0x1.002abde953618c5cb5b49945c179d0f3p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 623
+    0x1.002abde953619460b8b71b77bb495f57p-4,
+    0x1.0p-4
+  },
+  { // Entry 624
+    -0x1.002abde953619460b8b71b77bb495f57p-4,
+    -0x1.0p-4
+  },
+  { // Entry 625
+    0x1.002abde95361a468bebc1fdbaee93d3fp-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 626
+    -0x1.002abde95361a468bebc1fdbaee93d3fp-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 627
+    0x1.00abe0c129e1d8ae44e53a515476507cp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 628
+    -0x1.00abe0c129e1d8ae44e53a515476507cp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 629
+    0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    0x1.0p-3
+  },
+  { // Entry 630
+    -0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    -0x1.0p-3
+  },
+  { // Entry 631
+    0x1.00abe0c129e1f0ded6cbe2493b007c79p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 632
+    -0x1.00abe0c129e1f0ded6cbe2493b007c79p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 633
+    0x1.02be9ce0b87cc9a2a64c386583040afap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 634
+    -0x1.02be9ce0b87cc9a2a64c386583040afap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 635
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    0x1.0p-2
+  },
+  { // Entry 636
+    -0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    -0x1.0p-2
+  },
+  { // Entry 637
+    0x1.02be9ce0b87ce26c254077d7cacbd63cp-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 638
+    -0x1.02be9ce0b87ce26c254077d7cacbd63cp-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 639
+    0x1.0c152382d7364f09881065f5c8609169p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 640
+    -0x1.0c152382d7364f09881065f5c8609169p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 641
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.0p-1
+  },
+  { // Entry 642
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.0p-1
+  },
+  { // Entry 643
+    0x1.0c152382d7366ac002f8be4272f9370fp-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 644
+    -0x1.0c152382d7366ac002f8be4272f9370fp-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 645
+    0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 646
+    -0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 647
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p0
+  },
+  { // Entry 648
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p0
+  },
+  { // Entry 649
+    0x1.921fb54442d14a61a638f674b3b839a2p-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 650
+    -0x1.921fb54442d14a61a638f674b3b839a2p-1,
+    -0x1.6a09e667f3bcap-1
+  },
+  { // Entry 651
+    0x1.921fb54442d16102449f75b07e3839a2p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 652
+    -0x1.921fb54442d16102449f75b07e3839a2p-1,
+    -0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 653
+    0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 654
+    -0x1.921fb54442d177a2e305f4ec49b839a2p-1,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 655
+    0x1.921fb54442d18e43816c7428163839a2p-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 656
+    -0x1.921fb54442d18e43816c7428163839a2p-1,
+    -0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 657
+    0x1.921fb54442d1a4e41fd2f363e3b839a2p-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 658
+    -0x1.921fb54442d1a4e41fd2f363e3b839a2p-1,
+    -0x1.6a09e667f3bcep-1
+  },
+  { // Entry 659
+    0x1.0c152382d736310b363f009ee2f7763ap0,
+    0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 660
+    -0x1.0c152382d736310b363f009ee2f7763ap0,
+    -0x1.bb67ae8584ca8p-1
+  },
+  { // Entry 661
+    0x1.0c152382d736410b363f009edf95f63bp0,
+    0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 662
+    -0x1.0c152382d736410b363f009edf95f63bp0,
+    -0x1.bb67ae8584ca9p-1
+  },
+  { // Entry 663
+    0x1.0c152382d736510b363f009eddefddebp0,
+    0x1.bb67ae8584caap-1
+  },
+  { // Entry 664
+    -0x1.0c152382d736510b363f009eddefddebp0,
+    -0x1.bb67ae8584caap-1
+  },
+  { // Entry 665
+    0x1.0c152382d736610b363f009ede052d4ap0,
+    0x1.bb67ae8584cabp-1
+  },
+  { // Entry 666
+    -0x1.0c152382d736610b363f009ede052d4ap0,
+    -0x1.bb67ae8584cabp-1
+  },
+  { // Entry 667
+    0x1.0c152382d736710b363f009edfd5e457p0,
+    0x1.bb67ae8584cacp-1
+  },
+  { // Entry 668
+    -0x1.0c152382d736710b363f009edfd5e457p0,
+    -0x1.bb67ae8584cacp-1
+  },
+  { // Entry 669
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p0
+  },
+  { // Entry 670
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p0
+  },
+  { // Entry 671
+    0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 672
+    -0x1.921fb50442d18469898c9a6c570d8ef7p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 673
+    0x1.ce8276c3e139c7eeab836fc4dd4a61bcp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 674
+    -0x1.ce8276c3e139c7eeab836fc4dd4a61bcp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 675
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 676
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 677
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 678
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 680
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 681
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 682
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 683
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 684
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 685
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 686
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 687
+    0.0,
+    0.0
+  },
+  { // Entry 688
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/asinf_intel_data.h b/tests/math_data/asinf_intel_data.h
new file mode 100644
index 0000000..6979a6b
--- /dev/null
+++ b/tests/math_data/asinf_intel_data.h
@@ -0,0 +1,1934 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_asinf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2
+    -0x1.0cad8e66f6fb487cf1df9ed091e4a72ep-1,
+    -0x1.0083f4p-1
+  },
+  { // Entry 3
+    0x1.0cad8e66f6fb487cf1df9ed091e4a72ep-1,
+    0x1.0083f4p-1
+  },
+  { // Entry 4
+    -0x1.103565dad7e2002283a3fac2b1d6311dp-1,
+    -0x1.03909cp-1
+  },
+  { // Entry 5
+    0x1.103565dad7e2002283a3fac2b1d6311dp-1,
+    0x1.03909cp-1
+  },
+  { // Entry 6
+    -0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    -0x1.0ep-1
+  },
+  { // Entry 7
+    0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    0x1.0ep-1
+  },
+  { // Entry 8
+    -0x1.311900012958ac30f09a111b838a00c4p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 9
+    0x1.311900012958ac30f09a111b838a00c4p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 10
+    -0x1.246f5c0000a72022c39c255ede1512d3p-3,
+    -0x1.237138p-3
+  },
+  { // Entry 11
+    0x1.246f5c0000a72022c39c255ede1512d3p-3,
+    0x1.237138p-3
+  },
+  { // Entry 12
+    -0x1.3db0900000395b4211afefffc6915c36p-3,
+    -0x1.3c6acap-3
+  },
+  { // Entry 13
+    0x1.3db0900000395b4211afefffc6915c36p-3,
+    0x1.3c6acap-3
+  },
+  { // Entry 14
+    -0x1.5e2e4b551d68af4d88152d62976726c4p-1,
+    -0x1.4382c8p-1
+  },
+  { // Entry 15
+    0x1.5e2e4b551d68af4d88152d62976726c4p-1,
+    0x1.4382c8p-1
+  },
+  { // Entry 16
+    -0x1.7be252f6f0a776a93608351ae10eb974p0,
+    -0x1.fe11b4p-1
+  },
+  { // Entry 17
+    0x1.7be252f6f0a776a93608351ae10eb974p0,
+    0x1.fe11b4p-1
+  },
+  { // Entry 18
+    -0x1.00ab00ffe5d68ab742fd93647ec0a67bp-3,
+    -0x1.fffe44p-4
+  },
+  { // Entry 19
+    0x1.00ab00ffe5d68ab742fd93647ec0a67bp-3,
+    0x1.fffe44p-4
+  },
+  { // Entry 20
+    -0x1.0c15110930220c79eb624ae419c8836cp-1,
+    -0x1.ffffe0p-2
+  },
+  { // Entry 21
+    0x1.0c15110930220c79eb624ae419c8836cp-1,
+    0x1.ffffe0p-2
+  },
+  { // Entry 22
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 23
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 24
+    0x1.02be9ef183114fc560988306f887ac74p-2,
+    0x1.000002p-2
+  },
+  { // Entry 25
+    -0x1.02be9ef183114fc560988306f887ac74p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 26
+    0x1.02bea1024da614265a59c002ae0c56a0p-2,
+    0x1.000004p-2
+  },
+  { // Entry 27
+    -0x1.02bea1024da614265a59c002ae0c56a0p-2,
+    -0x1.000004p-2
+  },
+  { // Entry 28
+    0x1.0c152a7075f75bf85c1ca9191b19a5afp-1,
+    0x1.000006p-1
+  },
+  { // Entry 29
+    -0x1.0c152a7075f75bf85c1ca9191b19a5afp-1,
+    -0x1.000006p-1
+  },
+  { // Entry 30
+    0x1.0c15315e14c63ae876f9313819157a92p-1,
+    0x1.00000cp-1
+  },
+  { // Entry 31
+    -0x1.0c15315e14c63ae876f9313819157a92p-1,
+    -0x1.00000cp-1
+  },
+  { // Entry 32
+    0x1.00ac0101ec72f1a878790d17bb281556p-3,
+    0x1.000020p-3
+  },
+  { // Entry 33
+    -0x1.00ac0101ec72f1a878790d17bb281556p-3,
+    -0x1.000020p-3
+  },
+  { // Entry 34
+    0x1.0c154ac55b88a3af9035a28322fdd9a3p-1,
+    0x1.000022p-1
+  },
+  { // Entry 35
+    -0x1.0c154ac55b88a3af9035a28322fdd9a3p-1,
+    -0x1.000022p-1
+  },
+  { // Entry 36
+    0x1.02bebffe2c7ea2805320dec66ca7844cp-2,
+    0x1.000022p-2
+  },
+  { // Entry 37
+    -0x1.02bebffe2c7ea2805320dec66ca7844cp-2,
+    -0x1.000022p-2
+  },
+  { // Entry 38
+    0x1.0c15565164aa3a55958458405a1c1e98p-1,
+    0x1.00002cp-1
+  },
+  { // Entry 39
+    -0x1.0c15565164aa3a55958458405a1c1e98p-1,
+    -0x1.00002cp-1
+  },
+  { // Entry 40
+    0x1.0c155aefcec270c5a31b3e016614b676p-1,
+    0x1.000030p-1
+  },
+  { // Entry 41
+    -0x1.0c155aefcec270c5a31b3e016614b676p-1,
+    -0x1.000030p-1
+  },
+  { // Entry 42
+    0x1.0c15667bd819ea5190d64e1eecd9d3ffp-1,
+    0x1.00003ap-1
+  },
+  { // Entry 43
+    -0x1.0c15667bd819ea5190d64e1eecd9d3ffp-1,
+    -0x1.00003ap-1
+  },
+  { // Entry 44
+    0x1.0c16deeaf496378cb0c17601a82b3ef7p-1,
+    0x1.000180p-1
+  },
+  { // Entry 45
+    -0x1.0c16deeaf496378cb0c17601a82b3ef7p-1,
+    -0x1.000180p-1
+  },
+  { // Entry 46
+    0x1.0c1772b884fb0853488f82c8eab22f06p-1,
+    0x1.0002p-1
+  },
+  { // Entry 47
+    -0x1.0c1772b884fb0853488f82c8eab22f06p-1,
+    -0x1.0002p-1
+  },
+  { // Entry 48
+    0x1.0c189a53efac87369bf73699b02aa09ep-1,
+    0x1.0003p-1
+  },
+  { // Entry 49
+    -0x1.0c189a53efac87369bf73699b02aa09ep-1,
+    -0x1.0003p-1
+  },
+  { // Entry 50
+    0x1.00aefcfffff563634fb095cc9e40dda3p-3,
+    0x1.000316p-3
+  },
+  { // Entry 51
+    -0x1.00aefcfffff563634fb095cc9e40dda3p-3,
+    -0x1.000316p-3
+  },
+  { // Entry 52
+    0x1.0c190240aa98557da9d4fe206ae66279p-1,
+    0x1.00035ap-1
+  },
+  { // Entry 53
+    -0x1.0c190240aa98557da9d4fe206ae66279p-1,
+    -0x1.00035ap-1
+  },
+  { // Entry 54
+    0x1.0c19c1efbce926ca14cb3e0b0fcfe46cp-1,
+    0x1.0004p-1
+  },
+  { // Entry 55
+    -0x1.0c19c1efbce926ca14cb3e0b0fcfe46cp-1,
+    -0x1.0004p-1
+  },
+  { // Entry 56
+    0x1.000b2b01e4072831138943d51020c3f5p-6,
+    0x1.000880p-6
+  },
+  { // Entry 57
+    -0x1.000b2b01e4072831138943d51020c3f5p-6,
+    -0x1.000880p-6
+  },
+  { // Entry 58
+    0x1.0c30da6ca06846115bb5e8040cd163a5p-1,
+    0x1.0018p-1
+  },
+  { // Entry 59
+    -0x1.0c30da6ca06846115bb5e8040cd163a5p-1,
+    -0x1.0018p-1
+  },
+  { // Entry 60
+    0x1.0c3578fe7d748ef467902185b57079a1p-1,
+    0x1.001cp-1
+  },
+  { // Entry 61
+    -0x1.0c3578fe7d748ef467902185b57079a1p-1,
+    -0x1.001cp-1
+  },
+  { // Entry 62
+    0x1.0c3a17968466fa128c82b047d29e1a81p-1,
+    0x1.0020p-1
+  },
+  { // Entry 63
+    -0x1.0c3a17968466fa128c82b047d29e1a81p-1,
+    -0x1.0020p-1
+  },
+  { // Entry 64
+    0x1.0c3b1a489846ab8835c530f3c925e48dp-1,
+    0x1.0020e0p-1
+  },
+  { // Entry 65
+    -0x1.0c3b1a489846ab8835c530f3c925e48dp-1,
+    -0x1.0020e0p-1
+  },
+  { // Entry 66
+    0x1.0c3c8bd9c9f36a99f8039f99249719a7p-1,
+    0x1.002220p-1
+  },
+  { // Entry 67
+    -0x1.0c3c8bd9c9f36a99f8039f99249719a7p-1,
+    -0x1.002220p-1
+  },
+  { // Entry 68
+    0x1.0c3eb634b570d95017c1efd1196f0188p-1,
+    0x1.0024p-1
+  },
+  { // Entry 69
+    -0x1.0c3eb634b570d95017c1efd1196f0188p-1,
+    -0x1.0024p-1
+  },
+  { // Entry 70
+    0x1.0c502e329b76cbc90d2bc2d8a46fd894p-1,
+    0x1.003320p-1
+  },
+  { // Entry 71
+    -0x1.0c502e329b76cbc90d2bc2d8a46fd894p-1,
+    -0x1.003320p-1
+  },
+  { // Entry 72
+    0x1.0c7f6563138d8ff3289425afc29cf2e4p-1,
+    0x1.005cp-1
+  },
+  { // Entry 73
+    -0x1.0c7f6563138d8ff3289425afc29cf2e4p-1,
+    -0x1.005cp-1
+  },
+  { // Entry 74
+    0x1.0c8d4265d9ee207b3dc21f1db76ede7cp-1,
+    0x1.0068p-1
+  },
+  { // Entry 75
+    -0x1.0c8d4265d9ee207b3dc21f1db76ede7cp-1,
+    -0x1.0068p-1
+  },
+  { // Entry 76
+    0x1.0c91e1732197e2a5d4dca63deb68090ap-1,
+    0x1.006cp-1
+  },
+  { // Entry 77
+    -0x1.0c91e1732197e2a5d4dca63deb68090ap-1,
+    -0x1.006cp-1
+  },
+  { // Entry 78
+    0x1.035dad0091daa5df1fc0e0e0a9fe4ed4p-2,
+    0x1.009ap-2
+  },
+  { // Entry 79
+    -0x1.035dad0091daa5df1fc0e0e0a9fe4ed4p-2,
+    -0x1.009ap-2
+  },
+  { // Entry 80
+    0x1.0d403226a827880e2ff8226ddebdcb2bp-1,
+    0x1.0102d2p-1
+  },
+  { // Entry 81
+    -0x1.0d403226a827880e2ff8226ddebdcb2bp-1,
+    -0x1.0102d2p-1
+  },
+  { // Entry 82
+    0x1.0d9488ef7d93f71e126a87e6a4df2604p-1,
+    0x1.014bc0p-1
+  },
+  { // Entry 83
+    -0x1.0d9488ef7d93f71e126a87e6a4df2604p-1,
+    -0x1.014bc0p-1
+  },
+  { // Entry 84
+    0x1.0db5367f9e64f3f50a2f70dbcc5b7254p-1,
+    0x1.0168p-1
+  },
+  { // Entry 85
+    -0x1.0db5367f9e64f3f50a2f70dbcc5b7254p-1,
+    -0x1.0168p-1
+  },
+  { // Entry 86
+    0x1.0de005001105becff3be2f022c424727p-1,
+    0x1.018dp-1
+  },
+  { // Entry 87
+    -0x1.0de005001105becff3be2f022c424727p-1,
+    -0x1.018dp-1
+  },
+  { // Entry 88
+    0x1.0f8db1c47d54f959ab0145145c67ac7cp-1,
+    0x1.03p-1
+  },
+  { // Entry 89
+    -0x1.0f8db1c47d54f959ab0145145c67ac7cp-1,
+    -0x1.03p-1
+  },
+  { // Entry 90
+    0x1.17df11023b00b60e566bcc34452d8efcp-1,
+    0x1.0a24p-1
+  },
+  { // Entry 91
+    -0x1.17df11023b00b60e566bcc34452d8efcp-1,
+    -0x1.0a24p-1
+  },
+  { // Entry 92
+    0x1.188a13003e2d6673f8b1137ddefa7ff6p-1,
+    0x1.0ab608p-1
+  },
+  { // Entry 93
+    -0x1.188a13003e2d6673f8b1137ddefa7ff6p-1,
+    -0x1.0ab608p-1
+  },
+  { // Entry 94
+    0x1.0c310bfed8146bab3eccd1f36ad598dfp-4,
+    0x1.0cp-4
+  },
+  { // Entry 95
+    -0x1.0c310bfed8146bab3eccd1f36ad598dfp-4,
+    -0x1.0cp-4
+  },
+  { // Entry 96
+    0x1.1ab071a6a6495483fb202832876267b1p-1,
+    0x1.0c8b3ap-1
+  },
+  { // Entry 97
+    -0x1.1ab071a6a6495483fb202832876267b1p-1,
+    -0x1.0c8b3ap-1
+  },
+  { // Entry 98
+    0x1.1ae03117af7650c7036eeb7f258539aep-1,
+    0x1.0cb3e0p-1
+  },
+  { // Entry 99
+    -0x1.1ae03117af7650c7036eeb7f258539aep-1,
+    -0x1.0cb3e0p-1
+  },
+  { // Entry 100
+    0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    0x1.0ep-1
+  },
+  { // Entry 101
+    -0x1.1c66b9ffd666cc7518f5aeee38193508p-1,
+    -0x1.0ep-1
+  },
+  { // Entry 102
+    0x1.0e0321004f7f95de7df856f46276d32cp-6,
+    0x1.0ep-6
+  },
+  { // Entry 103
+    -0x1.0e0321004f7f95de7df856f46276d32cp-6,
+    -0x1.0ep-6
+  },
+  { // Entry 104
+    0x1.1d19b3000a8c63dbb9cd3aa26cb93af8p-1,
+    0x1.0e98p-1
+  },
+  { // Entry 105
+    -0x1.1d19b3000a8c63dbb9cd3aa26cb93af8p-1,
+    -0x1.0e98p-1
+  },
+  { // Entry 106
+    0x1.0f37e6ffffffcadf5403653d968a2680p-5,
+    0x1.0f2b38p-5
+  },
+  { // Entry 107
+    -0x1.0f37e6ffffffcadf5403653d968a2680p-5,
+    -0x1.0f2b38p-5
+  },
+  { // Entry 108
+    0x1.1ecf67bb91057e1a4092f0d0eaea1701p-1,
+    0x1.100b32p-1
+  },
+  { // Entry 109
+    -0x1.1ecf67bb91057e1a4092f0d0eaea1701p-1,
+    -0x1.100b32p-1
+  },
+  { // Entry 110
+    0x1.1f4b64fffffffa0c91291e1431281f37p-1,
+    0x1.107434p-1
+  },
+  { // Entry 111
+    -0x1.1f4b64fffffffa0c91291e1431281f37p-1,
+    -0x1.107434p-1
+  },
+  { // Entry 112
+    0x1.1903930006f8309241827585b2c80661p-2,
+    0x1.1580p-2
+  },
+  { // Entry 113
+    -0x1.1903930006f8309241827585b2c80661p-2,
+    -0x1.1580p-2
+  },
+  { // Entry 114
+    0x1.172493fffee5a2507f132613cadeccccp-5,
+    0x1.1716c0p-5
+  },
+  { // Entry 115
+    -0x1.172493fffee5a2507f132613cadeccccp-5,
+    -0x1.1716c0p-5
+  },
+  { // Entry 116
+    0x1.1c7d46fd7b1ac4ded1655c5206e6e630p-2,
+    0x1.18d8p-2
+  },
+  { // Entry 117
+    -0x1.1c7d46fd7b1ac4ded1655c5206e6e630p-2,
+    -0x1.18d8p-2
+  },
+  { // Entry 118
+    0x1.29647a7e646f32008c8601ac04967bfcp-1,
+    0x1.18f32ep-1
+  },
+  { // Entry 119
+    -0x1.29647a7e646f32008c8601ac04967bfcp-1,
+    -0x1.18f32ep-1
+  },
+  { // Entry 120
+    0x1.311900012958ac30f09a111b838a00c4p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 121
+    -0x1.311900012958ac30f09a111b838a00c4p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 122
+    0x1.23fee9057a799bd52740b1ae1d1e9685p-2,
+    0x1.200ep-2
+  },
+  { // Entry 123
+    -0x1.23fee9057a799bd52740b1ae1d1e9685p-2,
+    -0x1.200ep-2
+  },
+  { // Entry 124
+    0x1.3cdf26fdd7f39ef9b6df17e306cf9247p-1,
+    0x1.2906fcp-1
+  },
+  { // Entry 125
+    -0x1.3cdf26fdd7f39ef9b6df17e306cf9247p-1,
+    -0x1.2906fcp-1
+  },
+  { // Entry 126
+    0x1.45311906dbb495a038edf78f3481fba9p-1,
+    0x1.2fc3c2p-1
+  },
+  { // Entry 127
+    -0x1.45311906dbb495a038edf78f3481fba9p-1,
+    -0x1.2fc3c2p-1
+  },
+  { // Entry 128
+    0x1.3644eaffff7a7a503708b5792101243fp-2,
+    0x1.318b20p-2
+  },
+  { // Entry 129
+    -0x1.3644eaffff7a7a503708b5792101243fp-2,
+    -0x1.318b20p-2
+  },
+  { // Entry 130
+    0x1.34360affff7ab0ac1a44f15312908de9p-5,
+    0x1.34236ep-5
+  },
+  { // Entry 131
+    -0x1.34360affff7ab0ac1a44f15312908de9p-5,
+    -0x1.34236ep-5
+  },
+  { // Entry 132
+    0x1.380134f73a1260de2e6015aa3c882e11p-7,
+    0x1.38p-7
+  },
+  { // Entry 133
+    -0x1.380134f73a1260de2e6015aa3c882e11p-7,
+    -0x1.38p-7
+  },
+  { // Entry 134
+    0x1.4014d8ffaf8aeb3dbd2dcdaae835ffefp-5,
+    0x1.40p-5
+  },
+  { // Entry 135
+    -0x1.4014d8ffaf8aeb3dbd2dcdaae835ffefp-5,
+    -0x1.40p-5
+  },
+  { // Entry 136
+    0x1.59ad15042743d036220b033a43e33a33p-1,
+    0x1.4001c0p-1
+  },
+  { // Entry 137
+    -0x1.59ad15042743d036220b033a43e33a33p-1,
+    -0x1.4001c0p-1
+  },
+  { // Entry 138
+    0x1.5ff1acffefe1ce301daaa4f72cee5d3ap-1,
+    0x1.44e026p-1
+  },
+  { // Entry 139
+    -0x1.5ff1acffefe1ce301daaa4f72cee5d3ap-1,
+    -0x1.44e026p-1
+  },
+  { // Entry 140
+    0x1.6eafa6f9f2763aaeabf6311f88ed3ce1p-1,
+    0x1.502232p-1
+  },
+  { // Entry 141
+    -0x1.6eafa6f9f2763aaeabf6311f88ed3ce1p-1,
+    -0x1.502232p-1
+  },
+  { // Entry 142
+    0x1.7423d70007f86d1c5c92cd2399d33f4cp-1,
+    0x1.543a76p-1
+  },
+  { // Entry 143
+    -0x1.7423d70007f86d1c5c92cd2399d33f4cp-1,
+    -0x1.543a76p-1
+  },
+  { // Entry 144
+    0x1.583dff000083fab9afb8092f68183a9fp-5,
+    0x1.582410p-5
+  },
+  { // Entry 145
+    -0x1.583dff000083fab9afb8092f68183a9fp-5,
+    -0x1.582410p-5
+  },
+  { // Entry 146
+    0x1.8f10290841d65bfd313e02877a87a22ep-1,
+    0x1.67de32p-1
+  },
+  { // Entry 147
+    -0x1.8f10290841d65bfd313e02877a87a22ep-1,
+    -0x1.67de32p-1
+  },
+  { // Entry 148
+    0x1.68ab6efc047d3ad046bd8183ec5c4d46p-4,
+    0x1.68342ap-4
+  },
+  { // Entry 149
+    -0x1.68ab6efc047d3ad046bd8183ec5c4d46p-4,
+    -0x1.68342ap-4
+  },
+  { // Entry 150
+    0x1.958d3affedd648f35110cf87a747e43dp-1,
+    0x1.6c7452p-1
+  },
+  { // Entry 151
+    -0x1.958d3affedd648f35110cf87a747e43dp-1,
+    -0x1.6c7452p-1
+  },
+  { // Entry 152
+    0x1.980272fff139547fa5ad822694b7159fp-1,
+    0x1.6e2d2ep-1
+  },
+  { // Entry 153
+    -0x1.980272fff139547fa5ad822694b7159fp-1,
+    -0x1.6e2d2ep-1
+  },
+  { // Entry 154
+    0x1.8101cefb4b74963084b66c2235b48567p-2,
+    0x1.77fffep-2
+  },
+  { // Entry 155
+    -0x1.8101cefb4b74963084b66c2235b48567p-2,
+    -0x1.77fffep-2
+  },
+  { // Entry 156
+    0x1.800001000001ccccd115f16ac09c2c1dp-10,
+    0x1.7ffff8p-10
+  },
+  { // Entry 157
+    -0x1.800001000001ccccd115f16ac09c2c1dp-10,
+    -0x1.7ffff8p-10
+  },
+  { // Entry 158
+    0x1.81f272fdf7b31c16d324f90717ad9849p-4,
+    0x1.816050p-4
+  },
+  { // Entry 159
+    -0x1.81f272fdf7b31c16d324f90717ad9849p-4,
+    -0x1.816050p-4
+  },
+  { // Entry 160
+    0x1.bce4ceffee2656af653f471f22502ccbp-1,
+    0x1.86fbe6p-1
+  },
+  { // Entry 161
+    -0x1.bce4ceffee2656af653f471f22502ccbp-1,
+    -0x1.86fbe6p-1
+  },
+  { // Entry 162
+    0x1.bd56d0ffebe6415a921b526b10cc09edp-1,
+    0x1.874578p-1
+  },
+  { // Entry 163
+    -0x1.bd56d0ffebe6415a921b526b10cc09edp-1,
+    -0x1.874578p-1
+  },
+  { // Entry 164
+    0x1.bd866affeb83a8ebf25b7e0c9b453091p-1,
+    0x1.87642ap-1
+  },
+  { // Entry 165
+    -0x1.bd866affeb83a8ebf25b7e0c9b453091p-1,
+    -0x1.87642ap-1
+  },
+  { // Entry 166
+    0x1.bdeae8ffefe79fe29894af8440b888bdp-1,
+    0x1.87a4ecp-1
+  },
+  { // Entry 167
+    -0x1.bdeae8ffefe79fe29894af8440b888bdp-1,
+    -0x1.87a4ecp-1
+  },
+  { // Entry 168
+    0x1.c0ffa2ffef29ead18ae6ab673811f725p-1,
+    0x1.899f22p-1
+  },
+  { // Entry 169
+    -0x1.c0ffa2ffef29ead18ae6ab673811f725p-1,
+    -0x1.899f22p-1
+  },
+  { // Entry 170
+    0x1.c257fb0004ddb2849076737a53acb2a8p-1,
+    0x1.8a7afep-1
+  },
+  { // Entry 171
+    -0x1.c257fb0004ddb2849076737a53acb2a8p-1,
+    -0x1.8a7afep-1
+  },
+  { // Entry 172
+    0x1.cc9d2b00116cbcf4625a1bbb3b5b4e78p-1,
+    0x1.90f29cp-1
+  },
+  { // Entry 173
+    -0x1.cc9d2b00116cbcf4625a1bbb3b5b4e78p-1,
+    -0x1.90f29cp-1
+  },
+  { // Entry 174
+    0x1.cdddf100135cb2e8716e639bb3b5249fp-1,
+    0x1.91b9cap-1
+  },
+  { // Entry 175
+    -0x1.cdddf100135cb2e8716e639bb3b5249fp-1,
+    -0x1.91b9cap-1
+  },
+  { // Entry 176
+    0x1.9dd80f000084e0c3df1946aed6d959bfp-7,
+    0x1.9dd53ep-7
+  },
+  { // Entry 177
+    -0x1.9dd80f000084e0c3df1946aed6d959bfp-7,
+    -0x1.9dd53ep-7
+  },
+  { // Entry 178
+    0x1.e5e6ecedd795023dfa3c7dc241f10438p-1,
+    0x1.a02dccp-1
+  },
+  { // Entry 179
+    -0x1.e5e6ecedd795023dfa3c7dc241f10438p-1,
+    -0x1.a02dccp-1
+  },
+  { // Entry 180
+    0x1.aa8363fe050a48c7238e23364d019995p-4,
+    0x1.a9be2ep-4
+  },
+  { // Entry 181
+    -0x1.aa8363fe050a48c7238e23364d019995p-4,
+    -0x1.a9be2ep-4
+  },
+  { // Entry 182
+    0x1.bf42d6021ad1ba9c3760e8c7cccdb6a5p-2,
+    0x1.b12cd0p-2
+  },
+  { // Entry 183
+    -0x1.bf42d6021ad1ba9c3760e8c7cccdb6a5p-2,
+    -0x1.b12cd0p-2
+  },
+  { // Entry 184
+    0x1.c43c42fc467765267b2bce544d70b0edp-2,
+    0x1.b5ad60p-2
+  },
+  { // Entry 185
+    -0x1.c43c42fc467765267b2bce544d70b0edp-2,
+    -0x1.b5ad60p-2
+  },
+  { // Entry 186
+    0x1.1094910e7fcd16c9764b4e1b76b737f6p0,
+    0x1.bfd588p-1
+  },
+  { // Entry 187
+    -0x1.1094910e7fcd16c9764b4e1b76b737f6p0,
+    -0x1.bfd588p-1
+  },
+  { // Entry 188
+    0x1.10c02f0e93e8632e646d67e9015374c9p0,
+    0x1.bfffcap-1
+  },
+  { // Entry 189
+    -0x1.10c02f0e93e8632e646d67e9015374c9p0,
+    -0x1.bfffcap-1
+  },
+  { // Entry 190
+    0x1.10c066d3e6931b76a13df3a689971ba5p0,
+    0x1.c0p-1
+  },
+  { // Entry 191
+    -0x1.10c066d3e6931b76a13df3a689971ba5p0,
+    -0x1.c0p-1
+  },
+  { // Entry 192
+    0x1.c7006b02966adf6a3df6650579596d38p-3,
+    0x1.c3448ep-3
+  },
+  { // Entry 193
+    -0x1.c7006b02966adf6a3df6650579596d38p-3,
+    -0x1.c3448ep-3
+  },
+  { // Entry 194
+    0x1.cced1cffffffead2e67aff2ed34f68fbp-4,
+    0x1.cbf43cp-4
+  },
+  { // Entry 195
+    -0x1.cced1cffffffead2e67aff2ed34f68fbp-4,
+    -0x1.cbf43cp-4
+  },
+  { // Entry 196
+    0x1.d194fd0297f56d654d767460f12bbd70p-3,
+    0x1.cd95p-3
+  },
+  { // Entry 197
+    -0x1.d194fd0297f56d654d767460f12bbd70p-3,
+    -0x1.cd95p-3
+  },
+  { // Entry 198
+    0x1.2d46e9003819962ec438e47416ebe356p0,
+    0x1.d8c8c0p-1
+  },
+  { // Entry 199
+    -0x1.2d46e9003819962ec438e47416ebe356p0,
+    -0x1.d8c8c0p-1
+  },
+  { // Entry 200
+    0x1.de1b0901f98eac7553f0e8195ad077fcp-3,
+    0x1.d9c654p-3
+  },
+  { // Entry 201
+    -0x1.de1b0901f98eac7553f0e8195ad077fcp-3,
+    -0x1.d9c654p-3
+  },
+  { // Entry 202
+    0x1.3722d2feb24c7d9ccc847f53a3a4ee80p0,
+    0x1.e0p-1
+  },
+  { // Entry 203
+    -0x1.3722d2feb24c7d9ccc847f53a3a4ee80p0,
+    -0x1.e0p-1
+  },
+  { // Entry 204
+    0x1.e481c0fce71340393796f56e26562981p-3,
+    0x1.e0p-3
+  },
+  { // Entry 205
+    -0x1.e481c0fce71340393796f56e26562981p-3,
+    -0x1.e0p-3
+  },
+  { // Entry 206
+    0x1.e2579e00010e16a23389c5d2d04cb016p-6,
+    0x1.e245c8p-6
+  },
+  { // Entry 207
+    -0x1.e2579e00010e16a23389c5d2d04cb016p-6,
+    -0x1.e245c8p-6
+  },
+  { // Entry 208
+    0x1.ebf1570082616eec6d62ca4bbe98a80ep-3,
+    0x1.e739c0p-3
+  },
+  { // Entry 209
+    -0x1.ebf1570082616eec6d62ca4bbe98a80ep-3,
+    -0x1.e739c0p-3
+  },
+  { // Entry 210
+    0x1.ec0b2efe45213aa2a5913be53fba2675p-3,
+    0x1.e752dap-3
+  },
+  { // Entry 211
+    -0x1.ec0b2efe45213aa2a5913be53fba2675p-3,
+    -0x1.e752dap-3
+  },
+  { // Entry 212
+    0x1.ed3b16ffff7cb9709229934808bd086bp-3,
+    0x1.e87a02p-3
+  },
+  { // Entry 213
+    -0x1.ed3b16ffff7cb9709229934808bd086bp-3,
+    -0x1.e87a02p-3
+  },
+  { // Entry 214
+    0x1.ffeaecffff817ca1af5df7aff71f98c6p-3,
+    0x1.fa9a82p-3
+  },
+  { // Entry 215
+    -0x1.ffeaecffff817ca1af5df7aff71f98c6p-3,
+    -0x1.fa9a82p-3
+  },
+  { // Entry 216
+    0x1.7d60c2f47c8167d9affdf68d4fdbc5d9p0,
+    0x1.fe51d8p-1
+  },
+  { // Entry 217
+    -0x1.7d60c2f47c8167d9affdf68d4fdbc5d9p0,
+    -0x1.fe51d8p-1
+  },
+  { // Entry 218
+    0x1.901f34fea94ed8bf7d5ce1e00256bec5p0,
+    0x1.fffbfep-1
+  },
+  { // Entry 219
+    -0x1.901f34fea94ed8bf7d5ce1e00256bec5p0,
+    -0x1.fffbfep-1
+  },
+  { // Entry 220
+    0x1.00ab7efcdc7e3da7637e617c6307c133p-3,
+    0x1.ffff3ep-4
+  },
+  { // Entry 221
+    -0x1.00ab7efcdc7e3da7637e617c6307c133p-3,
+    -0x1.ffff3ep-4
+  },
+  { // Entry 222
+    0x1.0c15110930220c79eb624ae419c8836cp-1,
+    0x1.ffffe0p-2
+  },
+  { // Entry 223
+    -0x1.0c15110930220c79eb624ae419c8836cp-1,
+    -0x1.ffffe0p-2
+  },
+  { // Entry 224
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 225
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 226
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 227
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 228
+    0x1.4a1ce5633729b4831c0f2de50b199161p-1,
+    0x1.33b646p-1
+  },
+  { // Entry 229
+    -0x1.4a1ce5633729b4831c0f2de50b199161p-1,
+    -0x1.33b646p-1
+  },
+  { // Entry 230
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 231
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 232
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 233
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 234
+    -0x1.b235315c680dc081583db360d5e1fa18p-1,
+    -0x1.80p-1
+  },
+  { // Entry 235
+    0x1.b235315c680dc081583db360d5e1fa18p-1,
+    0x1.80p-1
+  },
+  { // Entry 236
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 237
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 238
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 239
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 240
+    0x1.9080f0a242e636c8b158046e622390bep0,
+    0x1.fffd60p-1
+  },
+  { // Entry 241
+    -0x1.9080f0a242e636c8b158046e622390bep0,
+    -0x1.fffd60p-1
+  },
+  { // Entry 242
+    0x1.p-82,
+    0x1.p-82
+  },
+  { // Entry 243
+    -0x1.p-82,
+    -0x1.p-82
+  },
+  { // Entry 244
+    0x1.0000000000000000000000000000000ap-61,
+    0x1.p-61
+  },
+  { // Entry 245
+    -0x1.0000000000000000000000000000000ap-61,
+    -0x1.p-61
+  },
+  { // Entry 246
+    0x1.0000000000000000000002aaaaaaaaaap-42,
+    0x1.p-42
+  },
+  { // Entry 247
+    -0x1.0000000000000000000002aaaaaaaaaap-42,
+    -0x1.p-42
+  },
+  { // Entry 248
+    0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    0x1.p-22
+  },
+  { // Entry 249
+    -0x1.000000000002aaaaaaaaaabdddddddddp-22,
+    -0x1.p-22
+  },
+  { // Entry 250
+    0x1.6a0a022b840dccf66e0b6ec9289f36b5p-9,
+    0x1.6a09e4p-9
+  },
+  { // Entry 251
+    -0x1.6a0a022b840dccf66e0b6ec9289f36b5p-9,
+    -0x1.6a09e4p-9
+  },
+  { // Entry 252
+    0x1.6a0a042b848dcd256f98664210471010p-9,
+    0x1.6a09e6p-9
+  },
+  { // Entry 253
+    -0x1.6a0a042b848dcd256f98664210471010p-9,
+    -0x1.6a09e6p-9
+  },
+  { // Entry 254
+    0x1.6a0a062b850dcd55db3053430d8801dep-9,
+    0x1.6a09e8p-9
+  },
+  { // Entry 255
+    -0x1.6a0a062b850dcd55db3053430d8801dep-9,
+    -0x1.6a09e8p-9
+  },
+  { // Entry 256
+    0x1.6a0a5cae61ad17ce4db740441bff4264p-8,
+    0x1.6a09e4p-8
+  },
+  { // Entry 257
+    -0x1.6a0a5cae61ad17ce4db740441bff4264p-8,
+    -0x1.6a09e4p-8
+  },
+  { // Entry 258
+    0x1.6a0a5eae63ad1aca589233f046ef6f98p-8,
+    0x1.6a09e6p-8
+  },
+  { // Entry 259
+    -0x1.6a0a5eae63ad1aca589233f046ef6f98p-8,
+    -0x1.6a09e6p-8
+  },
+  { // Entry 260
+    0x1.6a0a60ae65ad1dcc0ba5b83d9dac8608p-8,
+    0x1.6a09e8p-8
+  },
+  { // Entry 261
+    -0x1.6a0a60ae65ad1dcc0ba5b83d9dac8608p-8,
+    -0x1.6a09e8p-8
+  },
+  { // Entry 262
+    0x1.6a0bc6be9e29599e77d42647891c84e9p-7,
+    0x1.6a09e4p-7
+  },
+  { // Entry 263
+    -0x1.6a0bc6be9e29599e77d42647891c84e9p-7,
+    -0x1.6a09e4p-7
+  },
+  { // Entry 264
+    0x1.6a0bc8bea629898fceb95fb04958a217p-7,
+    0x1.6a09e6p-7
+  },
+  { // Entry 265
+    -0x1.6a0bc8bea629898fceb95fb04958a217p-7,
+    -0x1.6a09e6p-7
+  },
+  { // Entry 266
+    0x1.6a0bcabeae29b997c74c8b209ada2625p-7,
+    0x1.6a09e8p-7
+  },
+  { // Entry 267
+    -0x1.6a0bcabeae29b997c74c8b209ada2625p-7,
+    -0x1.6a09e8p-7
+  },
+  { // Entry 268
+    0x1.6a116f4bf5a44da64d89fa35a6ebac04p-6,
+    0x1.6a09e4p-6
+  },
+  { // Entry 269
+    -0x1.6a116f4bf5a44da64d89fa35a6ebac04p-6,
+    -0x1.6a09e4p-6
+  },
+  { // Entry 270
+    0x1.6a11714c15a74db6a8c862c053ff5c47p-6,
+    0x1.6a09e6p-6
+  },
+  { // Entry 271
+    -0x1.6a11714c15a74db6a8c862c053ff5c47p-6,
+    -0x1.6a09e6p-6
+  },
+  { // Entry 272
+    0x1.6a11734c35aa4e21977b693edb0fbfedp-6,
+    0x1.6a09e8p-6
+  },
+  { // Entry 273
+    -0x1.6a11734c35aa4e21977b693edb0fbfedp-6,
+    -0x1.6a09e8p-6
+  },
+  { // Entry 274
+    0x1.6a28164912c9ea8249262954f1ae1a22p-5,
+    0x1.6a09e4p-5
+  },
+  { // Entry 275
+    -0x1.6a28164912c9ea8249262954f1ae1a22p-5,
+    -0x1.6a09e4p-5
+  },
+  { // Entry 276
+    0x1.6a28184992f9fd8bc772026d91605dcap-5,
+    0x1.6a09e6p-5
+  },
+  { // Entry 277
+    -0x1.6a28184992f9fd8bc772026d91605dcap-5,
+    -0x1.6a09e6p-5
+  },
+  { // Entry 278
+    0x1.6a281a4a132a12005fd55f43d2bf81a6p-5,
+    0x1.6a09e8p-5
+  },
+  { // Entry 279
+    -0x1.6a281a4a132a12005fd55f43d2bf81a6p-5,
+    -0x1.6a09e8p-5
+  },
+  { // Entry 280
+    0x1.6a82ff139c02609620ef4694ee627b57p-4,
+    0x1.6a09e4p-4
+  },
+  { // Entry 281
+    -0x1.6a82ff139c02609620ef4694ee627b57p-4,
+    -0x1.6a09e4p-4
+  },
+  { // Entry 282
+    0x1.6a8301159f07655fd879480b5cbcf5cbp-4,
+    0x1.6a09e6p-4
+  },
+  { // Entry 283
+    -0x1.6a8301159f07655fd879480b5cbcf5cbp-4,
+    -0x1.6a09e6p-4
+  },
+  { // Entry 284
+    0x1.6a830317a20c6fe2dae30fe5babe63f8p-4,
+    0x1.6a09e8p-4
+  },
+  { // Entry 285
+    -0x1.6a830317a20c6fe2dae30fe5babe63f8p-4,
+    -0x1.6a09e8p-4
+  },
+  { // Entry 286
+    0x1.6bf386a4733dc9584317633d590964f4p-3,
+    0x1.6a09e4p-3
+  },
+  { // Entry 287
+    -0x1.6bf386a4733dc9584317633d590964f4p-3,
+    -0x1.6a09e4p-3
+  },
+  { // Entry 288
+    0x1.6bf388aca486b9850c50cf9f457667f2p-3,
+    0x1.6a09e6p-3
+  },
+  { // Entry 289
+    -0x1.6bf388aca486b9850c50cf9f457667f2p-3,
+    -0x1.6a09e6p-3
+  },
+  { // Entry 290
+    0x1.6bf38ab4d5cfc16cfd39ac77e07b6048p-3,
+    0x1.6a09e8p-3
+  },
+  { // Entry 291
+    -0x1.6bf38ab4d5cfc16cfd39ac77e07b6048p-3,
+    -0x1.6a09e8p-3
+  },
+  { // Entry 292
+    0x1.720a3699a2940f93106e8a7ed729b32ap-2,
+    0x1.6a09e4p-2
+  },
+  { // Entry 293
+    -0x1.720a3699a2940f93106e8a7ed729b32ap-2,
+    -0x1.6a09e4p-2
+  },
+  { // Entry 294
+    0x1.720a38bcfc706dd98b8488a3c1523d31p-2,
+    0x1.6a09e6p-2
+  },
+  { // Entry 295
+    -0x1.720a38bcfc706dd98b8488a3c1523d31p-2,
+    -0x1.6a09e6p-2
+  },
+  { // Entry 296
+    0x1.720a3ae0564d3ab4ea8b987564d202e2p-2,
+    0x1.6a09e8p-2
+  },
+  { // Entry 297
+    -0x1.720a3ae0564d3ab4ea8b987564d202e2p-2,
+    -0x1.6a09e8p-2
+  },
+  { // Entry 298
+    0x1.bb67e36d07936cca0afecdde8822ac92p-9,
+    0x1.bb67acp-9
+  },
+  { // Entry 299
+    -0x1.bb67e36d07936cca0afecdde8822ac92p-9,
+    -0x1.bb67acp-9
+  },
+  { // Entry 300
+    0x1.bb67e56d08536d34b9eb8cded8ea25b3p-9,
+    0x1.bb67aep-9
+  },
+  { // Entry 301
+    -0x1.bb67e56d08536d34b9eb8cded8ea25b3p-9,
+    -0x1.bb67aep-9
+  },
+  { // Entry 302
+    0x1.bb67e76d09136da12441ecb59fee2493p-9,
+    0x1.bb67b0p-9
+  },
+  { // Entry 303
+    -0x1.bb67e76d09136da12441ecb59fee2493p-9,
+    -0x1.bb67b0p-9
+  },
+  { // Entry 304
+    0x1.bb6889b4fec8ebcca61c46f455ae5d4fp-8,
+    0x1.bb67acp-8
+  },
+  { // Entry 305
+    -0x1.bb6889b4fec8ebcca61c46f455ae5d4fp-8,
+    -0x1.bb67acp-8
+  },
+  { // Entry 306
+    0x1.bb688bb501c8f287718fa43e6142902dp-8,
+    0x1.bb67aep-8
+  },
+  { // Entry 307
+    -0x1.bb688bb501c8f287718fa43e6142902dp-8,
+    -0x1.bb67aep-8
+  },
+  { // Entry 308
+    0x1.bb688db504c8f9492ac0e747817f22a8p-8,
+    0x1.bb67b0p-8
+  },
+  { // Entry 309
+    -0x1.bb688db504c8f9492ac0e747817f22a8p-8,
+    -0x1.bb67b0p-8
+  },
+  { // Entry 310
+    0x1.bb6b22e203353028e079513a11cbbab3p-7,
+    0x1.bb67acp-7
+  },
+  { // Entry 311
+    -0x1.bb6b22e203353028e079513a11cbbab3p-7,
+    -0x1.bb67acp-7
+  },
+  { // Entry 312
+    0x1.bb6b24e20f359c1801d5ae434ae75b2dp-7,
+    0x1.bb67aep-7
+  },
+  { // Entry 313
+    -0x1.bb6b24e20f359c1801d5ae434ae75b2dp-7,
+    -0x1.bb67aep-7
+  },
+  { // Entry 314
+    0x1.bb6b26e21b360822db9fdd2b265541b5p-7,
+    0x1.bb67b0p-7
+  },
+  { // Entry 315
+    -0x1.bb6b26e21b360822db9fdd2b265541b5p-7,
+    -0x1.bb67b0p-7
+  },
+  { // Entry 316
+    0x1.bb758868a56d6f7d82a704d6da78e2fdp-6,
+    0x1.bb67acp-6
+  },
+  { // Entry 317
+    -0x1.bb758868a56d6f7d82a704d6da78e2fdp-6,
+    -0x1.bb67acp-6
+  },
+  { // Entry 318
+    0x1.bb758a68d574303741eb85efe34dac9ap-6,
+    0x1.bb67aep-6
+  },
+  { // Entry 319
+    -0x1.bb758a68d574303741eb85efe34dac9ap-6,
+    -0x1.bb67aep-6
+  },
+  { // Entry 320
+    0x1.bb758c69057af15ffa5021690b86d6e5p-6,
+    0x1.bb67b0p-6
+  },
+  { // Entry 321
+    -0x1.bb758c69057af15ffa5021690b86d6e5p-6,
+    -0x1.bb67b0p-6
+  },
+  { // Entry 322
+    0x1.bb9f2bb2025df5b5a01f890e267acbf6p-5,
+    0x1.bb67acp-5
+  },
+  { // Entry 323
+    -0x1.bb9f2bb2025df5b5a01f890e267acbf6p-5,
+    -0x1.bb67acp-5
+  },
+  { // Entry 324
+    0x1.bb9f2db2c2ca380f37f00e10c34f3f4ep-5,
+    0x1.bb67aep-5
+  },
+  { // Entry 325
+    -0x1.bb9f2db2c2ca380f37f00e10c34f3f4ep-5,
+    -0x1.bb67aep-5
+  },
+  { // Entry 326
+    0x1.bb9f2fb383367c262c18778b11ce72cap-5,
+    0x1.bb67b0p-5
+  },
+  { // Entry 327
+    -0x1.bb9f2fb383367c262c18778b11ce72cap-5,
+    -0x1.bb67b0p-5
+  },
+  { // Entry 328
+    0x1.bc468d3a974cd6c6f353f238e6ee9635p-4,
+    0x1.bb67acp-4
+  },
+  { // Entry 329
+    -0x1.bc468d3a974cd6c6f353f238e6ee9635p-4,
+    -0x1.bb67acp-4
+  },
+  { // Entry 330
+    0x1.bc468f3d9e1dde2e7296f0680c8b5cf1p-4,
+    0x1.bb67aep-4
+  },
+  { // Entry 331
+    -0x1.bc468f3d9e1dde2e7296f0680c8b5cf1p-4,
+    -0x1.bb67aep-4
+  },
+  { // Entry 332
+    0x1.bc469140a4eeeca3346497225181070ep-4,
+    0x1.bb67b0p-4
+  },
+  { // Entry 333
+    -0x1.bc469140a4eeeca3346497225181070ep-4,
+    -0x1.bb67b0p-4
+  },
+  { // Entry 334
+    0x1.bef1ba1b54f2e517608d497eda81f13ep-3,
+    0x1.bb67acp-3
+  },
+  { // Entry 335
+    -0x1.bef1ba1b54f2e517608d497eda81f13ep-3,
+    -0x1.bb67acp-3
+  },
+  { // Entry 336
+    0x1.bef1bc27c5590e551667836f44b8240bp-3,
+    0x1.bb67aep-3
+  },
+  { // Entry 337
+    -0x1.bef1bc27c5590e551667836f44b8240bp-3,
+    -0x1.bb67aep-3
+  },
+  { // Entry 338
+    0x1.bef1be3435bf555b062c6b933968f858p-3,
+    0x1.bb67b0p-3
+  },
+  { // Entry 339
+    -0x1.bef1be3435bf555b062c6b933968f858p-3,
+    -0x1.bb67b0p-3
+  },
+  { // Entry 340
+    0x1.ca94909f751f880a004b5b2d1358c7d8p-2,
+    0x1.bb67acp-2
+  },
+  { // Entry 341
+    -0x1.ca94909f751f880a004b5b2d1358c7d8p-2,
+    -0x1.bb67acp-2
+  },
+  { // Entry 342
+    0x1.ca9492d778731c60ad6f2198bec11118p-2,
+    0x1.bb67aep-2
+  },
+  { // Entry 343
+    -0x1.ca9492d778731c60ad6f2198bec11118p-2,
+    -0x1.bb67aep-2
+  },
+  { // Entry 344
+    0x1.ca94950f7bc7481303f6206eb55e6063p-2,
+    0x1.bb67b0p-2
+  },
+  { // Entry 345
+    -0x1.ca94950f7bc7481303f6206eb55e6063p-2,
+    -0x1.bb67b0p-2
+  },
+  { // Entry 346
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 347
+    -0x1.fffff8p-128,
+    -0x1.fffff8p-128
+  },
+  { // Entry 348
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 349
+    -0x1.p-127,
+    -0x1.p-127
+  },
+  { // Entry 350
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 351
+    -0x1.000004p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 352
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 353
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 354
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 355
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 356
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 357
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 358
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 359
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 360
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 361
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 362
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 363
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 364
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 365
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 366
+    0.0,
+    0.0
+  },
+  { // Entry 367
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 368
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 369
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 370
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 371
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 372
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 373
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 374
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 375
+    0x1.fffffe0000000005555545555565557bp-31,
+    0x1.fffffep-31
+  },
+  { // Entry 376
+    -0x1.fffffe0000000005555545555565557bp-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 377
+    0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    0x1.p-30
+  },
+  { // Entry 378
+    -0x1.0000000000000002aaaaaaaaaaaaaabdp-30,
+    -0x1.p-30
+  },
+  { // Entry 379
+    0x1.0000020000000002aaaabaaaaacaaabdp-30,
+    0x1.000002p-30
+  },
+  { // Entry 380
+    -0x1.0000020000000002aaaabaaaaacaaabdp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 381
+    0x1.fffffe0000000155555155555957bbbap-28,
+    0x1.fffffep-28
+  },
+  { // Entry 382
+    -0x1.fffffe0000000155555155555957bbbap-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 383
+    0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    0x1.p-27
+  },
+  { // Entry 384
+    -0x1.00000000000000aaaaaaaaaaaaabddddp-27,
+    -0x1.p-27
+  },
+  { // Entry 385
+    0x1.00000200000000aaaaaeaaaab2abdde3p-27,
+    0x1.000002p-27
+  },
+  { // Entry 386
+    -0x1.00000200000000aaaaaeaaaab2abdde3p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 387
+    0x1.fffffe00000015555515555597bbbb9ap-26,
+    0x1.fffffep-26
+  },
+  { // Entry 388
+    -0x1.fffffe00000015555515555597bbbb9ap-26,
+    -0x1.fffffep-26
+  },
+  { // Entry 389
+    0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    0x1.p-25
+  },
+  { // Entry 390
+    -0x1.0000000000000aaaaaaaaaaaabddddddp-25,
+    -0x1.p-25
+  },
+  { // Entry 391
+    0x1.0000020000000aaaaaeaaaab2bddde3fp-25,
+    0x1.000002p-25
+  },
+  { // Entry 392
+    -0x1.0000020000000aaaaaeaaaab2bddde3fp-25,
+    -0x1.000002p-25
+  },
+  { // Entry 393
+    0x1.fffffe055555457bbbcafd296eb7e3aap-15,
+    0x1.fffffep-15
+  },
+  { // Entry 394
+    -0x1.fffffe055555457bbbcafd296eb7e3aap-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 395
+    0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    0x1.p-14
+  },
+  { // Entry 396
+    -0x1.00000002aaaaaabdddddde94b94b9c80p-14,
+    -0x1.p-14
+  },
+  { // Entry 397
+    0x1.00000202aaaababdddfe9e94d1aaf1dbp-14,
+    0x1.000002p-14
+  },
+  { // Entry 398
+    -0x1.00000202aaaababdddfe9e94d1aaf1dbp-14,
+    -0x1.000002p-14
+  },
+  { // Entry 399
+    0x1.0002a9bdd69461160d4c75451704a3b7p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 400
+    -0x1.0002a9bdd69461160d4c75451704a3b7p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 401
+    0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    0x1.p-6
+  },
+  { // Entry 402
+    -0x1.0002aabdde94c1130cd26cdfa377f967p-6,
+    -0x1.p-6
+  },
+  { // Entry 403
+    0x1.0002acbdee95813d105ec61fcd6ae2fap-6,
+    0x1.000002p-6
+  },
+  { // Entry 404
+    -0x1.0002acbdee95813d105ec61fcd6ae2fap-6,
+    -0x1.000002p-6
+  },
+  { // Entry 405
+    0x1.000aaaddeb9680b69f39448305c87741p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 406
+    -0x1.000aaaddeb9680b69f39448305c87741p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 407
+    0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    0x1.p-5
+  },
+  { // Entry 408
+    -0x1.000aabde0b9c81d6d94551be3e924e2ap-5,
+    -0x1.p-5
+  },
+  { // Entry 409
+    0x1.000aadde4ba884d79574330eaeb7d132p-5,
+    0x1.000002p-5
+  },
+  { // Entry 410
+    -0x1.000aadde4ba884d79574330eaeb7d132p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 411
+    0x1.002abce8d301449b3a6e1375645eb853p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 412
+    -0x1.002abce8d301449b3a6e1375645eb853p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 413
+    0x1.002abde953619460b8b71b77bb495f57p-4,
+    0x1.p-4
+  },
+  { // Entry 414
+    -0x1.002abde953619460b8b71b77bb495f57p-4,
+    -0x1.p-4
+  },
+  { // Entry 415
+    0x1.002abfea542236f03af0c770006184e0p-4,
+    0x1.000002p-4
+  },
+  { // Entry 416
+    -0x1.002abfea542236f03af0c770006184e0p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 417
+    0x1.00abdfbf23cd9bcb0908b67c29bd1d84p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 418
+    -0x1.00abdfbf23cd9bcb0908b67c29bd1d84p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 419
+    0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    0x1.p-3
+  },
+  { // Entry 420
+    -0x1.00abe0c129e1e0be7587724ea14e03b1p-3,
+    -0x1.p-3
+  },
+  { // Entry 421
+    0x1.00abe2c5360a76eebd374087e13d0778p-3,
+    0x1.000002p-3
+  },
+  { // Entry 422
+    -0x1.00abe2c5360a76eebd374087e13d0778p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 423
+    0x1.02be9bd85332ad669015b48f1281cd8ep-2,
+    0x1.fffffep-3
+  },
+  { // Entry 424
+    -0x1.02be9bd85332ad669015b48f1281cd8ep-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 425
+    0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    0x1.p-2
+  },
+  { // Entry 426
+    -0x1.02be9ce0b87cd1e5d09da2e0f0423bfap-2,
+    -0x1.p-2
+  },
+  { // Entry 427
+    0x1.02be9ef183114fc560988306f887ac74p-2,
+    0x1.000002p-2
+  },
+  { // Entry 428
+    -0x1.02be9ef183114fc560988306f887ac74p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 429
+    0x1.0c15225b3cc2308792870438ebfd5814p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 430
+    -0x1.0c15225b3cc2308792870438ebfd5814p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 431
+    0x1.0c152382d73658465bb32e0f567ad116p-1,
+    0x1.p-1
+  },
+  { // Entry 432
+    -0x1.0c152382d73658465bb32e0f567ad116p-1,
+    -0x1.p-1
+  },
+  { // Entry 433
+    0x1.0c1525d20c1fcf5e632996922f28dbf4p-1,
+    0x1.000002p-1
+  },
+  { // Entry 434
+    -0x1.0c1525d20c1fcf5e632996922f28dbf4p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 435
+    0x1.920914a5da6f90beac755cf81add3707p0,
+    0x1.fffffep-1
+  },
+  { // Entry 436
+    -0x1.920914a5da6f90beac755cf81add3707p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 437
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p0
+  },
+  { // Entry 438
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p0
+  },
+  { // Entry 439
+    0x1.921faf0918938469613a406686d325fbp-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 440
+    -0x1.921faf0918938469613a406686d325fbp-1,
+    -0x1.6a09e2p-1
+  },
+  { // Entry 441
+    0x1.921fb1dd2c59846982fbd21e12b62957p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 442
+    -0x1.921fb1dd2c59846982fbd21e12b62957p-1,
+    -0x1.6a09e4p-1
+  },
+  { // Entry 443
+    0x1.921fb4b1402384698984b09966f96de6p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 444
+    -0x1.921fb4b1402384698984b09966f96de6p-1,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 445
+    0x1.921fb78553f184698b7579b807754fb1p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 446
+    -0x1.921fb78553f184698b7579b807754fb1p-1,
+    -0x1.6a09e8p-1
+  },
+  { // Entry 447
+    0x1.921fba5967c384699f6ecc197800562dp-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 448
+    -0x1.921fba5967c384699f6ecc197800562dp-1,
+    -0x1.6a09eap-1
+  },
+  { // Entry 449
+    0x1.0c151efd527d65a2625f3b65877af5c1p0,
+    0x1.bb67aap-1
+  },
+  { // Entry 450
+    -0x1.0c151efd527d65a2625f3b65877af5c1p0,
+    -0x1.bb67aap-1
+  },
+  { // Entry 451
+    0x1.0c1520fd527132af0e514af5d776d861p0,
+    0x1.bb67acp-1
+  },
+  { // Entry 452
+    -0x1.0c1520fd527132af0e514af5d776d861p0,
+    -0x1.bb67acp-1
+  },
+  { // Entry 453
+    0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    0x1.bb67aep-1
+  },
+  { // Entry 454
+    -0x1.0c1522fd526bed5a0f7cb328ba5c3991p0,
+    -0x1.bb67aep-1
+  },
+  { // Entry 455
+    0x1.0c1524fd526d95a3b5e16f8bb09d2428p0,
+    0x1.bb67b0p-1
+  },
+  { // Entry 456
+    -0x1.0c1524fd526d95a3b5e16f8bb09d2428p0,
+    -0x1.bb67b0p-1
+  },
+  { // Entry 457
+    0x1.0c1526fd52762b8c517f8184b870bf6dp0,
+    0x1.bb67b2p-1
+  },
+  { // Entry 458
+    -0x1.0c1526fd52762b8c517f8184b870bf6dp0,
+    -0x1.bb67b2p-1
+  },
+  { // Entry 459
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p0
+  },
+  { // Entry 460
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p0
+  },
+  { // Entry 461
+    0x1.920914a5da6f90beac755cf81add3707p0,
+    0x1.fffffep-1
+  },
+  { // Entry 462
+    -0x1.920914a5da6f90beac755cf81add3707p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 463
+    0x1.ce8277f32da2c5ee7ea325793fd7ccd1p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 464
+    -0x1.ce8277f32da2c5ee7ea325793fd7ccd1p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 465
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 466
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 467
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 468
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 469
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 470
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 471
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 472
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 473
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 474
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 475
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 476
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 477
+    0.0,
+    0.0f
+  },
+  { // Entry 478
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/asinh_intel_data.h b/tests/math_data/asinh_intel_data.h
new file mode 100644
index 0000000..98eff86
--- /dev/null
+++ b/tests/math_data/asinh_intel_data.h
@@ -0,0 +1,2042 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_asinh_intel_data[] = {
+  { // Entry 0
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 2
+    -0x1.f2eba5eb5b53c803301c0f8279efd38cp-2,
+    -0x1.0372ae11c5a53p-1
+  },
+  { // Entry 3
+    0x1.f2eba5eb5b53c803301c0f8279efd38cp-2,
+    0x1.0372ae11c5a53p-1
+  },
+  { // Entry 4
+    -0x1.f8df023d2021bc3d400b315a5494d006p-2,
+    -0x1.06c9b26c9b268p-1
+  },
+  { // Entry 5
+    0x1.f8df023d2021bc3d400b315a5494d006p-2,
+    0x1.06c9b26c9b268p-1
+  },
+  { // Entry 6
+    -0x1.fb25d3a760a193706b3228440829ee8fp-2,
+    -0x1.08116a27c1078p-1
+  },
+  { // Entry 7
+    0x1.fb25d3a760a193706b3228440829ee8fp-2,
+    0x1.08116a27c1078p-1
+  },
+  { // Entry 8
+    -0x1.fec35b3e7215a3724feecdb2518899cep-2,
+    -0x1.0a1a86a1a87p-1
+  },
+  { // Entry 9
+    0x1.fec35b3e7215a3724feecdb2518899cep-2,
+    0x1.0a1a86a1a87p-1
+  },
+  { // Entry 10
+    -0x1.ff951bb7ee7f7a1d9dcf30fb1f47bad6p-2,
+    -0x1.0a90be1c15949p-1
+  },
+  { // Entry 11
+    0x1.ff951bb7ee7f7a1d9dcf30fb1f47bad6p-2,
+    0x1.0a90be1c15949p-1
+  },
+  { // Entry 12
+    -0x1.3b60a4460a2d2800883eb5ded3be4df0p2,
+    -0x1.1421084210848p6
+  },
+  { // Entry 13
+    0x1.3b60a4460a2d2800883eb5ded3be4df0p2,
+    0x1.1421084210848p6
+  },
+  { // Entry 14
+    -0x1.138aeab017488804b338e9ac099ab687p-2,
+    -0x1.16e1400db88a8p-2
+  },
+  { // Entry 15
+    0x1.138aeab017488804b338e9ac099ab687p-2,
+    0x1.16e1400db88a8p-2
+  },
+  { // Entry 16
+    -0x1.fdbacdc8a66437ff0c93d9767a45cb0cp-1,
+    -0x1.2b1a532971568p0
+  },
+  { // Entry 17
+    0x1.fdbacdc8a66437ff0c93d9767a45cb0cp-1,
+    0x1.2b1a532971568p0
+  },
+  { // Entry 18
+    -0x1.24501dcbce83f8126c61bacbb8a27cedp1,
+    -0x1.36c03904a8e4ep2
+  },
+  { // Entry 19
+    0x1.24501dcbce83f8126c61bacbb8a27cedp1,
+    0x1.36c03904a8e4ep2
+  },
+  { // Entry 20
+    -0x1.5d36f22f9d342ff8da6ba2b17b474db8p-3,
+    -0x1.5ee8cb3c781c0p-3
+  },
+  { // Entry 21
+    0x1.5d36f22f9d342ff8da6ba2b17b474db8p-3,
+    0x1.5ee8cb3c781c0p-3
+  },
+  { // Entry 22
+    -0x1.52b6672b024fe000ae144fc9afaeaf51p-1,
+    -0x1.6bf6fdbf6fd24p-1
+  },
+  { // Entry 23
+    0x1.52b6672b024fe000ae144fc9afaeaf51p-1,
+    0x1.6bf6fdbf6fd24p-1
+  },
+  { // Entry 24
+    -0x1.3993d63acc4ba8035d2b420b1158f993p1,
+    -0x1.70000000000ffp2
+  },
+  { // Entry 25
+    0x1.3993d63acc4ba8035d2b420b1158f993p1,
+    0x1.70000000000ffp2
+  },
+  { // Entry 26
+    -0x1.97580351103362867acce504fee4245dp-9,
+    -0x1.97582e4a115p-9
+  },
+  { // Entry 27
+    0x1.97580351103362867acce504fee4245dp-9,
+    0x1.97582e4a115p-9
+  },
+  { // Entry 28
+    -0x1.97b3da2c985dc7e04ebe6b0d62a5513ap-3,
+    -0x1.9a6699a6699b0p-3
+  },
+  { // Entry 29
+    0x1.97b3da2c985dc7e04ebe6b0d62a5513ap-3,
+    0x1.9a6699a6699b0p-3
+  },
+  { // Entry 30
+    -0x1.92a338ada07c1b531a9867c9a235d502p-2,
+    -0x1.9d17d9fcad768p-2
+  },
+  { // Entry 31
+    0x1.92a338ada07c1b531a9867c9a235d502p-2,
+    0x1.9d17d9fcad768p-2
+  },
+  { // Entry 32
+    -0x1.4c76858b980217a240a5c74a2588e630p1,
+    -0x1.ab52dd08f34f4p2
+  },
+  { // Entry 33
+    0x1.4c76858b980217a240a5c74a2588e630p1,
+    0x1.ab52dd08f34f4p2
+  },
+  { // Entry 34
+    -0x1.c06f36b1bdfbf6638d2d6cdc9bc63083p-8,
+    -0x1.c0701c0701ep-8
+  },
+  { // Entry 35
+    0x1.c06f36b1bdfbf6638d2d6cdc9bc63083p-8,
+    0x1.c0701c0701ep-8
+  },
+  { // Entry 36
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 37
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 38
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 39
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 40
+    0x1.419ecb712c480f8b5decb58386dedd9dp4,
+    0x1.0000000000003p28
+  },
+  { // Entry 41
+    -0x1.419ecb712c480f8b5decb58386dedd9dp4,
+    -0x1.0000000000003p28
+  },
+  { // Entry 42
+    0x1.ecc2caec516161a5e8aa442a5078d5cfp-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 43
+    -0x1.ecc2caec516161a5e8aa442a5078d5cfp-2,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 44
+    0x1.facfb2399e674ffa702bb3c88b513063p-3,
+    0x1.0000000000020p-2
+  },
+  { // Entry 45
+    -0x1.facfb2399e674ffa702bb3c88b513063p-3,
+    -0x1.0000000000020p-2
+  },
+  { // Entry 46
+    0x1.fffaaad10fbf68e32f80487342e56091p-7,
+    0x1.00000000000e0p-6
+  },
+  { // Entry 47
+    -0x1.fffaaad10fbf68e32f80487342e56091p-7,
+    -0x1.00000000000e0p-6
+  },
+  { // Entry 48
+    0x1.ffeaad10b5eade934d677b23c2b7f1f1p-6,
+    0x1.00000000001c0p-5
+  },
+  { // Entry 49
+    -0x1.ffeaad10b5eade934d677b23c2b7f1f1p-6,
+    -0x1.00000000001c0p-5
+  },
+  { // Entry 50
+    0x1.c3436617a1808a74e9cb44e078522310p-1,
+    0x1.00000000030p0
+  },
+  { // Entry 51
+    -0x1.c3436617a1808a74e9cb44e078522310p-1,
+    -0x1.00000000030p0
+  },
+  { // Entry 52
+    0x1.ffffeaaacb7b0ce864203f798c0ce39dp-10,
+    0x1.000000000f350p-9
+  },
+  { // Entry 53
+    -0x1.ffffeaaacb7b0ce864203f798c0ce39dp-10,
+    -0x1.000000000f350p-9
+  },
+  { // Entry 54
+    0x1.ffffeaaacd310cb1a42a8370b88e1d60p-10,
+    0x1.00000000101p-9
+  },
+  { // Entry 55
+    -0x1.ffffeaaacd310cb1a42a8370b88e1d60p-10,
+    -0x1.00000000101p-9
+  },
+  { // Entry 56
+    0x1.fead0b69d618a81747624f3c7ca38382p-4,
+    0x1.000000002p-3
+  },
+  { // Entry 57
+    -0x1.fead0b69d618a81747624f3c7ca38382p-4,
+    -0x1.000000002p-3
+  },
+  { // Entry 58
+    0x1.ffeaad1131a3687962cb8ca0a64f4c60p-6,
+    0x1.000000003e0p-5
+  },
+  { // Entry 59
+    -0x1.ffeaad1131a3687962cb8ca0a64f4c60p-6,
+    -0x1.000000003e0p-5
+  },
+  { // Entry 60
+    0x1.ffeaad1135a2e8915dcc65794d5c1216p-6,
+    0x1.000000004p-5
+  },
+  { // Entry 61
+    -0x1.ffeaad1135a2e8915dcc65794d5c1216p-6,
+    -0x1.000000004p-5
+  },
+  { // Entry 62
+    0x1.fead0b6d0fabe7f7940a172c81b216a2p-4,
+    0x1.00000001cp-3
+  },
+  { // Entry 63
+    -0x1.fead0b6d0fabe7f7940a172c81b216a2p-4,
+    -0x1.00000001cp-3
+  },
+  { // Entry 64
+    0x1.719218369adf88000392d7dc8518a18fp0,
+    0x1.000000060p1
+  },
+  { // Entry 65
+    -0x1.719218369adf88000392d7dc8518a18fp0,
+    -0x1.000000060p1
+  },
+  { // Entry 66
+    0x1.ecc2cafab28f10000058d757d62be0f2p-2,
+    0x1.0000000809d7dp-1
+  },
+  { // Entry 67
+    -0x1.ecc2cafab28f10000058d757d62be0f2p-2,
+    -0x1.0000000809d7dp-1
+  },
+  { // Entry 68
+    0x1.ffeabb0ef606c7da67459428149adbadp-6,
+    0x1.0000070p-5
+  },
+  { // Entry 69
+    -0x1.ffeabb0ef606c7da67459428149adbadp-6,
+    -0x1.0000070p-5
+  },
+  { // Entry 70
+    0x1.0c1f98037ddb97ff3c5068b316a00165p1,
+    0x1.00001c0p2
+  },
+  { // Entry 71
+    -0x1.0c1f98037ddb97ff3c5068b316a00165p1,
+    -0x1.00001c0p2
+  },
+  { // Entry 72
+    0x1.fad06c7e0e0a7003b1140bc95ab405ffp-3,
+    0x1.00006p-2
+  },
+  { // Entry 73
+    -0x1.fad06c7e0e0a7003b1140bc95ab405ffp-3,
+    -0x1.00006p-2
+  },
+  { // Entry 74
+    0x1.c344d0212927f5fa42a3dd90c845aafep-1,
+    0x1.00010p0
+  },
+  { // Entry 75
+    -0x1.c344d0212927f5fa42a3dd90c845aafep-1,
+    -0x1.00010p0
+  },
+  { // Entry 76
+    0x1.5507660f47456800d91258e8755bd5f4p7,
+    0x1.001p245
+  },
+  { // Entry 77
+    -0x1.5507660f47456800d91258e8755bd5f4p7,
+    -0x1.001p245
+  },
+  { // Entry 78
+    0x1.210ae10a6cc59fbb8020167ab1dffccap9,
+    0x1.001p833
+  },
+  { // Entry 79
+    -0x1.210ae10a6cc59fbb8020167ab1dffccap9,
+    -0x1.001p833
+  },
+  { // Entry 80
+    0x1.d5f45b75d63b680001d13ac1dbe562bcp8,
+    0x1.003p677
+  },
+  { // Entry 81
+    -0x1.d5f45b75d63b680001d13ac1dbe562bcp8,
+    -0x1.003p677
+  },
+  { // Entry 82
+    0x1.ffb3c044157318449812a557bcf1706ap-4,
+    0x1.008460a44ffc1p-3
+  },
+  { // Entry 83
+    -0x1.ffb3c044157318449812a557bcf1706ap-4,
+    -0x1.008460a44ffc1p-3
+  },
+  { // Entry 84
+    0x1.edb50436723d4759390d6456c2e8adf5p-2,
+    0x1.00876f69ec52fp-1
+  },
+  { // Entry 85
+    -0x1.edb50436723d4759390d6456c2e8adf5p-2,
+    -0x1.00876f69ec52fp-1
+  },
+  { // Entry 86
+    0x1.41bb41c3f17da804e9ad14f4bd75bacep4,
+    0x1.01c8fb2951ca4p28
+  },
+  { // Entry 87
+    -0x1.41bb41c3f17da804e9ad14f4bd75bacep4,
+    -0x1.01c8fb2951ca4p28
+  },
+  { // Entry 88
+    0x1.c6dfe797565f57ffff7a8713d032c096p-1,
+    0x1.028f5c2a30342p0
+  },
+  { // Entry 89
+    -0x1.c6dfe797565f57ffff7a8713d032c096p-1,
+    -0x1.028f5c2a30342p0
+  },
+  { // Entry 90
+    0x1.c6dfe79afae7afffffa3117d3818eeecp-1,
+    0x1.028f5c2cc6e8bp0
+  },
+  { // Entry 91
+    -0x1.c6dfe79afae7afffffa3117d3818eeecp-1,
+    -0x1.028f5c2cc6e8bp0
+  },
+  { // Entry 92
+    0x1.f15897705c5497fd072c467ee385c7a0p-2,
+    0x1.0290d52c6e91cp-1
+  },
+  { // Entry 93
+    -0x1.f15897705c5497fd072c467ee385c7a0p-2,
+    -0x1.0290d52c6e91cp-1
+  },
+  { // Entry 94
+    0x1.f1760421743425feec4439805ecd1fc5p-2,
+    0x1.02a150a8542a0p-1
+  },
+  { // Entry 95
+    -0x1.f1760421743425feec4439805ecd1fc5p-2,
+    -0x1.02a150a8542a0p-1
+  },
+  { // Entry 96
+    0x1.f6bc79c87c02ec261ae70361810513bfp-2,
+    0x1.0596af363ee5ap-1
+  },
+  { // Entry 97
+    -0x1.f6bc79c87c02ec261ae70361810513bfp-2,
+    -0x1.0596af363ee5ap-1
+  },
+  { // Entry 98
+    0x1.78a6cf7b3035bce4e063abd1ab00c432p0,
+    0x1.08040201008p1
+  },
+  { // Entry 99
+    -0x1.78a6cf7b3035bce4e063abd1ab00c432p0,
+    -0x1.08040201008p1
+  },
+  { // Entry 100
+    0x1.fb18e232de8cd7fb0a7c7d40c2100415p-2,
+    0x1.080a2213c5d7fp-1
+  },
+  { // Entry 101
+    -0x1.fb18e232de8cd7fb0a7c7d40c2100415p-2,
+    -0x1.080a2213c5d7fp-1
+  },
+  { // Entry 102
+    0x1.fc36c248c852a7ffddc9062d9e764f4bp-2,
+    0x1.08aaffb099863p-1
+  },
+  { // Entry 103
+    -0x1.fc36c248c852a7ffddc9062d9e764f4bp-2,
+    -0x1.08aaffb099863p-1
+  },
+  { // Entry 104
+    0x1.0f28edd4476116d66ca78dc309cf80f9p-9,
+    0x1.0f28fa815b6c8p-9
+  },
+  { // Entry 105
+    -0x1.0f28edd4476116d66ca78dc309cf80f9p-9,
+    -0x1.0f28fa815b6c8p-9
+  },
+  { // Entry 106
+    0x1.151f44f2b4f427ffff7a41c02c5cf355p1,
+    0x1.133333335479ap2
+  },
+  { // Entry 107
+    -0x1.151f44f2b4f427ffff7a41c02c5cf355p1,
+    -0x1.133333335479ap2
+  },
+  { // Entry 108
+    0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    0x1.180p0
+  },
+  { // Entry 109
+    -0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    -0x1.180p0
+  },
+  { // Entry 110
+    0x1.434264c6fc6708034a24c8e524f5687dp4,
+    0x1.1b9d819ebf8cep28
+  },
+  { // Entry 111
+    -0x1.434264c6fc6708034a24c8e524f5687dp4,
+    -0x1.1b9d819ebf8cep28
+  },
+  { // Entry 112
+    0x1.101ff8a713880a351f47c974f12ce55ep-1,
+    0x1.1d1e74e330911p-1
+  },
+  { // Entry 113
+    -0x1.101ff8a713880a351f47c974f12ce55ep-1,
+    -0x1.1d1e74e330911p-1
+  },
+  { // Entry 114
+    0x1.1a493ab88461d7fd3beeba172ff9a7f0p-2,
+    0x1.1dep-2
+  },
+  { // Entry 115
+    -0x1.1a493ab88461d7fd3beeba172ff9a7f0p-2,
+    -0x1.1dep-2
+  },
+  { // Entry 116
+    0x1.12e044c3ab17180beb67fd37dde3818ep-1,
+    0x1.2045a703c2358p-1
+  },
+  { // Entry 117
+    -0x1.12e044c3ab17180beb67fd37dde3818ep-1,
+    -0x1.2045a703c2358p-1
+  },
+  { // Entry 118
+    0x1.134f8303f8e7d7792a8cfcae2ab188a3p-1,
+    0x1.20c557b1da1d0p-1
+  },
+  { // Entry 119
+    -0x1.134f8303f8e7d7792a8cfcae2ab188a3p-1,
+    -0x1.20c557b1da1d0p-1
+  },
+  { // Entry 120
+    0x1.13a88f92f15df43236c0af1f8703f1e3p-1,
+    0x1.212b987b85034p-1
+  },
+  { // Entry 121
+    -0x1.13a88f92f15df43236c0af1f8703f1e3p-1,
+    -0x1.212b987b85034p-1
+  },
+  { // Entry 122
+    0x1.16805e66deb3cf0b1c0ec9b60fdb7894p-1,
+    0x1.24709b4a7de54p-1
+  },
+  { // Entry 123
+    -0x1.16805e66deb3cf0b1c0ec9b60fdb7894p-1,
+    -0x1.24709b4a7de54p-1
+  },
+  { // Entry 124
+    0x1.265195db6355dfff0127bbf1e5e11703p-6,
+    0x1.2655a343af923p-6
+  },
+  { // Entry 125
+    -0x1.265195db6355dfff0127bbf1e5e11703p-6,
+    -0x1.2655a343af923p-6
+  },
+  { // Entry 126
+    0x1.43fe1550dc5730023455469bb4ddb63fp4,
+    0x1.28e9e3033b2d0p28
+  },
+  { // Entry 127
+    -0x1.43fe1550dc5730023455469bb4ddb63fp4,
+    -0x1.28e9e3033b2d0p28
+  },
+  { // Entry 128
+    0x1.218f8513eb4d27ec00b1291cfdc18d67p1,
+    0x1.300000036bf99p2
+  },
+  { // Entry 129
+    -0x1.218f8513eb4d27ec00b1291cfdc18d67p1,
+    -0x1.300000036bf99p2
+  },
+  { // Entry 130
+    0x1.22a54301136de7ee5ce85eb01455a4eep1,
+    0x1.32a4e674697e7p2
+  },
+  { // Entry 131
+    -0x1.22a54301136de7ee5ce85eb01455a4eep1,
+    -0x1.32a4e674697e7p2
+  },
+  { // Entry 132
+    0x1.24292ef03128080ed3d9b08df44f6fb7p1,
+    0x1.365fc696fa5b0p2
+  },
+  { // Entry 133
+    -0x1.24292ef03128080ed3d9b08df44f6fb7p1,
+    -0x1.365fc696fa5b0p2
+  },
+  { // Entry 134
+    0x1.2575169c887057ffff7a5b19ee86a3d5p1,
+    0x1.3999999a1ab8cp2
+  },
+  { // Entry 135
+    -0x1.2575169c887057ffff7a5b19ee86a3d5p1,
+    -0x1.3999999a1ab8cp2
+  },
+  { // Entry 136
+    0x1.25dc8638bdb2f80ff1668031438c9765p1,
+    0x1.3a9ca45e66e91p2
+  },
+  { // Entry 137
+    -0x1.25dc8638bdb2f80ff1668031438c9765p1,
+    -0x1.3a9ca45e66e91p2
+  },
+  { // Entry 138
+    0x1.26409faea12417fd5ca4674254142d91p1,
+    0x1.3b9817a24777ep2
+  },
+  { // Entry 139
+    -0x1.26409faea12417fd5ca4674254142d91p1,
+    -0x1.3b9817a24777ep2
+  },
+  { // Entry 140
+    0x1.4fffffffff9f880000004ac8393332e6p-20,
+    0x1.5p-20
+  },
+  { // Entry 141
+    -0x1.4fffffffff9f880000004ac8393332e6p-20,
+    -0x1.5p-20
+  },
+  { // Entry 142
+    0x1.2ee78375a21e580b5728c038fb225c9fp1,
+    0x1.52191d255a790p2
+  },
+  { // Entry 143
+    -0x1.2ee78375a21e580b5728c038fb225c9fp1,
+    -0x1.52191d255a790p2
+  },
+  { // Entry 144
+    0x1.3185d0f16e6b6807a095bb392a3382b4p1,
+    0x1.593552a340f40p2
+  },
+  { // Entry 145
+    -0x1.3185d0f16e6b6807a095bb392a3382b4p1,
+    -0x1.593552a340f40p2
+  },
+  { // Entry 146
+    0x1.5aa83c174d0747d7431c3ae246f0a0c0p-5,
+    0x1.5ac2b9013fba0p-5
+  },
+  { // Entry 147
+    -0x1.5aa83c174d0747d7431c3ae246f0a0c0p-5,
+    -0x1.5ac2b9013fba0p-5
+  },
+  { // Entry 148
+    0x1.339f4c2a909867fb9c10e43011125aa5p1,
+    0x1.5f03888dbf20fp2
+  },
+  { // Entry 149
+    -0x1.339f4c2a909867fb9c10e43011125aa5p1,
+    -0x1.5f03888dbf20fp2
+  },
+  { // Entry 150
+    0x1.bd38dfe35d1acaae5c9501194270a136p0,
+    0x1.6113b497290a0p1
+  },
+  { // Entry 151
+    -0x1.bd38dfe35d1acaae5c9501194270a136p0,
+    -0x1.6113b497290a0p1
+  },
+  { // Entry 152
+    0x1.c1075a363e410a8f98845c743ba3787ap0,
+    0x1.66b359acd6680p1
+  },
+  { // Entry 153
+    -0x1.c1075a363e410a8f98845c743ba3787ap0,
+    -0x1.66b359acd6680p1
+  },
+  { // Entry 154
+    0x1.c262c12766e32579979b9555c11e1726p0,
+    0x1.68b97a389b46cp1
+  },
+  { // Entry 155
+    -0x1.c262c12766e32579979b9555c11e1726p0,
+    -0x1.68b97a389b46cp1
+  },
+  { // Entry 156
+    0x1.747df23f098e1ea8bfc81fa5be8e0998p-7,
+    0x1.748p-7
+  },
+  { // Entry 157
+    -0x1.747df23f098e1ea8bfc81fa5be8e0998p-7,
+    -0x1.748p-7
+  },
+  { // Entry 158
+    0x1.734f39e590ff4c558714ce06a3e0ce12p-2,
+    0x1.7b8p-2
+  },
+  { // Entry 159
+    -0x1.734f39e590ff4c558714ce06a3e0ce12p-2,
+    -0x1.7b8p-2
+  },
+  { // Entry 160
+    0x1.84ea54e95b79d80052d4496a3b257037p-4,
+    0x1.858p-4
+  },
+  { // Entry 161
+    -0x1.84ea54e95b79d80052d4496a3b257037p-4,
+    -0x1.858p-4
+  },
+  { // Entry 162
+    0x1.8c3d8723afa7d7fe5aac8c67302c2016p-7,
+    0x1.8c4p-7
+  },
+  { // Entry 163
+    -0x1.8c3d8723afa7d7fe5aac8c67302c2016p-7,
+    -0x1.8c4p-7
+  },
+  { // Entry 164
+    0x1.6fdab10671bdb04ee0b9e2255ea89ee4p-1,
+    0x1.905415054158cp-1
+  },
+  { // Entry 165
+    -0x1.6fdab10671bdb04ee0b9e2255ea89ee4p-1,
+    -0x1.905415054158cp-1
+  },
+  { // Entry 166
+    0x1.77204b30761997ffff9f14bcadd5050ep-1,
+    0x1.9999999df31f2p-1
+  },
+  { // Entry 167
+    -0x1.77204b30761997ffff9f14bcadd5050ep-1,
+    -0x1.9999999df31f2p-1
+  },
+  { // Entry 168
+    0x1.8f656b48fdbb8800007fb53bc7f22857p-2,
+    0x1.999999a8e2404p-2
+  },
+  { // Entry 169
+    -0x1.8f656b48fdbb8800007fb53bc7f22857p-2,
+    -0x1.999999a8e2404p-2
+  },
+  { // Entry 170
+    0x1.98eb9ea8504947ffff97daef209016f0p-4,
+    0x1.999999c3bfab9p-4
+  },
+  { // Entry 171
+    -0x1.98eb9ea8504947ffff97daef209016f0p-4,
+    -0x1.999999c3bfab9p-4
+  },
+  { // Entry 172
+    0x1.98eb9eaddfeba000008e0f13b5b376e8p-4,
+    0x1.999999c95667ap-4
+  },
+  { // Entry 173
+    -0x1.98eb9eaddfeba000008e0f13b5b376e8p-4,
+    -0x1.999999c95667ap-4
+  },
+  { // Entry 174
+    0x1.796335ca772c2274edcfef9c0d7aea2ap-1,
+    0x1.9c8p-1
+  },
+  { // Entry 175
+    -0x1.796335ca772c2274edcfef9c0d7aea2ap-1,
+    -0x1.9c8p-1
+  },
+  { // Entry 176
+    0x1.a3fc70e78b72affea798fb1ed9e01b11p-7,
+    0x1.a3ff627f789p-7
+  },
+  { // Entry 177
+    -0x1.a3fc70e78b72affea798fb1ed9e01b11p-7,
+    -0x1.a3ff627f789p-7
+  },
+  { // Entry 178
+    0x1.4f0a85b0ad4857ff001b414064939016p9,
+    0x1.a6edff7a583f8p965
+  },
+  { // Entry 179
+    -0x1.4f0a85b0ad4857ff001b414064939016p9,
+    -0x1.a6edff7a583f8p965
+  },
+  { // Entry 180
+    0x1.4c2b484bc41907fe51fbf0db7eb6c058p1,
+    0x1.aa552a954aap2
+  },
+  { // Entry 181
+    -0x1.4c2b484bc41907fe51fbf0db7eb6c058p1,
+    -0x1.aa552a954aap2
+  },
+  { // Entry 182
+    0x1.8964d070b42ff2d026071f870e311b26p-1,
+    0x1.b1427cd988b8cp-1
+  },
+  { // Entry 183
+    -0x1.8964d070b42ff2d026071f870e311b26p-1,
+    -0x1.b1427cd988b8cp-1
+  },
+  { // Entry 184
+    0x1.4d02914955d62fffff71df03043350f4p0,
+    0x1.b3333337506cap0
+  },
+  { // Entry 185
+    -0x1.4d02914955d62fffff71df03043350f4p0,
+    -0x1.b3333337506cap0
+  },
+  { // Entry 186
+    0x1.b010ad38a80b2ae0fc455f9f136e746dp-2,
+    0x1.bd0p-2
+  },
+  { // Entry 187
+    -0x1.b010ad38a80b2ae0fc455f9f136e746dp-2,
+    -0x1.bd0p-2
+  },
+  { // Entry 188
+    0x1.c8543a9a9c24311233a315255f5c4651p-9,
+    0x1.c8547704cc94ap-9
+  },
+  { // Entry 189
+    -0x1.c8543a9a9c24311233a315255f5c4651p-9,
+    -0x1.c8547704cc94ap-9
+  },
+  { // Entry 190
+    0x1.c9ac0c777fff8ff9d8ee7153627176abp-4,
+    0x1.caap-4
+  },
+  { // Entry 191
+    -0x1.c9ac0c777fff8ff9d8ee7153627176abp-4,
+    -0x1.caap-4
+  },
+  { // Entry 192
+    0x1.ca6adaba65efe7f20f871de10947cd5cp-4,
+    0x1.cb5fffffe7a06p-4
+  },
+  { // Entry 193
+    -0x1.ca6adaba65efe7f20f871de10947cd5cp-4,
+    -0x1.cb5fffffe7a06p-4
+  },
+  { // Entry 194
+    0x1.ca6adaba7e28a7f59fa07b692a9fe0f9p-4,
+    0x1.cb6p-4
+  },
+  { // Entry 195
+    -0x1.ca6adaba7e28a7f59fa07b692a9fe0f9p-4,
+    -0x1.cb6p-4
+  },
+  { // Entry 196
+    0x1.e1c5c0ca279f77ff07f31b933b58d12ap2,
+    0x1.d0b42d0b42d08p9
+  },
+  { // Entry 197
+    -0x1.e1c5c0ca279f77ff07f31b933b58d12ap2,
+    -0x1.d0b42d0b42d08p9
+  },
+  { // Entry 198
+    0x1.a3e8b71cba28d7fec3d1c6454bbba99dp-1,
+    0x1.d4974eca333c3p-1
+  },
+  { // Entry 199
+    -0x1.a3e8b71cba28d7fec3d1c6454bbba99dp-1,
+    -0x1.d4974eca333c3p-1
+  },
+  { // Entry 200
+    0x1.d4ede01f10ab67b211c278274a3c64eap-5,
+    0x1.d52f71e93cb21p-5
+  },
+  { // Entry 201
+    -0x1.d4ede01f10ab67b211c278274a3c64eap-5,
+    -0x1.d52f71e93cb21p-5
+  },
+  { // Entry 202
+    0x1.a66b6c181a57eec89a856dab88260c85p-1,
+    0x1.d80p-1
+  },
+  { // Entry 203
+    -0x1.a66b6c181a57eec89a856dab88260c85p-1,
+    -0x1.d80p-1
+  },
+  { // Entry 204
+    0x1.da493afa5f7b1834c0ac9129ea3f8481p-5,
+    0x1.da8d12b111853p-5
+  },
+  { // Entry 205
+    -0x1.da493afa5f7b1834c0ac9129ea3f8481p-5,
+    -0x1.da8d12b111853p-5
+  },
+  { // Entry 206
+    0x1.d86c93088bcd89c3a7ea69e10bebc834p-3,
+    0x1.dcap-3
+  },
+  { // Entry 207
+    -0x1.d86c93088bcd89c3a7ea69e10bebc834p-3,
+    -0x1.dcap-3
+  },
+  { // Entry 208
+    0x1.5b210231129f7801b2df8c036bedd614p1,
+    0x1.dfbf7efdfbf78p2
+  },
+  { // Entry 209
+    -0x1.5b210231129f7801b2df8c036bedd614p1,
+    -0x1.dfbf7efdfbf78p2
+  },
+  { // Entry 210
+    0x1.e743ce73d923d00856cbaafe09163cdfp-3,
+    0x1.ebep-3
+  },
+  { // Entry 211
+    -0x1.e743ce73d923d00856cbaafe09163cdfp-3,
+    -0x1.ebep-3
+  },
+  { // Entry 212
+    0x1.de596b4f4d5018eb85e6571011c15683p-2,
+    0x1.efeffffffffffp-2
+  },
+  { // Entry 213
+    -0x1.de596b4f4d5018eb85e6571011c15683p-2,
+    -0x1.efeffffffffffp-2
+  },
+  { // Entry 214
+    0x1.6a6eb2ffee2edafd7fed403ad2c6d203p0,
+    0x1.f03c3f9d576bcp0
+  },
+  { // Entry 215
+    -0x1.6a6eb2ffee2edafd7fed403ad2c6d203p0,
+    -0x1.f03c3f9d576bcp0
+  },
+  { // Entry 216
+    0x1.f3df6e88a792e801ff70692e5a789f21p-5,
+    0x1.f42edbd85d9f8p-5
+  },
+  { // Entry 217
+    -0x1.f3df6e88a792e801ff70692e5a789f21p-5,
+    -0x1.f42edbd85d9f8p-5
+  },
+  { // Entry 218
+    0x1.6c59a446d1b78b1c9b74684b78b10b0fp0,
+    0x1.f46ea5f8f54e8p0
+  },
+  { // Entry 219
+    -0x1.6c59a446d1b78b1c9b74684b78b10b0fp0,
+    -0x1.f46ea5f8f54e8p0
+  },
+  { // Entry 220
+    0x1.f55afe0cccf0971d810065fd8ca51746p-7,
+    0x1.f56p-7
+  },
+  { // Entry 221
+    -0x1.f55afe0cccf0971d810065fd8ca51746p-7,
+    -0x1.f56p-7
+  },
+  { // Entry 222
+    0x1.f72c28bf439cf823462f9436177c0f68p-3,
+    0x1.fc4p-3
+  },
+  { // Entry 223
+    -0x1.f72c28bf439cf823462f9436177c0f68p-3,
+    -0x1.fc4p-3
+  },
+  { // Entry 224
+    0x1.fe3de8a25c148ff37ff3fff4ea96b0c5p-4,
+    0x1.ff8ffffffffffp-4
+  },
+  { // Entry 225
+    -0x1.fe3de8a25c148ff37ff3fff4ea96b0c5p-4,
+    -0x1.ff8ffffffffffp-4
+  },
+  { // Entry 226
+    0x1.ff7abb0b079d45b8c077c138812ef785p-6,
+    0x1.ff8ffffffffffp-6
+  },
+  { // Entry 227
+    -0x1.ff7abb0b079d45b8c077c138812ef785p-6,
+    -0x1.ff8ffffffffffp-6
+  },
+  { // Entry 228
+    0x1.ff8faae2c4a7e15f49f1e7fd10226df8p-9,
+    0x1.ff8ffffffffffp-9
+  },
+  { // Entry 229
+    -0x1.ff8faae2c4a7e15f49f1e7fd10226df8p-9,
+    -0x1.ff8ffffffffffp-9
+  },
+  { // Entry 230
+    0x1.6363716659a0d6ec9a4d1673a0c1caf9p1,
+    0x1.ffffff3ffffffp2
+  },
+  { // Entry 231
+    -0x1.6363716659a0d6ec9a4d1673a0c1caf9p1,
+    -0x1.ffffff3ffffffp2
+  },
+  { // Entry 232
+    0x1.fffaaab70073cffe1ca7af59dea383bdp-7,
+    0x1.ffffffe5effffp-7
+  },
+  { // Entry 233
+    -0x1.fffaaab70073cffe1ca7af59dea383bdp-7,
+    -0x1.ffffffe5effffp-7
+  },
+  { // Entry 234
+    0x1.ffeaad091c25f7fe78be0efb91393b35p-6,
+    0x1.fffffff8657ffp-6
+  },
+  { // Entry 235
+    -0x1.ffeaad091c25f7fe78be0efb91393b35p-6,
+    -0x1.fffffff8657ffp-6
+  },
+  { // Entry 236
+    0x1.fffaaacd0fc35843b8b9c2c8eaaf170dp-7,
+    0x1.fffffffbfffffp-7
+  },
+  { // Entry 237
+    -0x1.fffaaacd0fc35843b8b9c2c8eaaf170dp-7,
+    -0x1.fffffffbfffffp-7
+  },
+  { // Entry 238
+    0x1.c34366179ac8d01e2cd45de4745e134ap-1,
+    0x1.fffffffffc7ffp-1
+  },
+  { // Entry 239
+    -0x1.c34366179ac8d01e2cd45de4745e134ap-1,
+    -0x1.fffffffffc7ffp-1
+  },
+  { // Entry 240
+    0x1.fead0b6996797834b43bac6b0f3fe20fp-4,
+    0x1.ffffffffffe21p-4
+  },
+  { // Entry 241
+    -0x1.fead0b6996797834b43bac6b0f3fe20fp-4,
+    -0x1.ffffffffffe21p-4
+  },
+  { // Entry 242
+    0x1.c34366179d41a11c2058c40156eae780p-1,
+    0x1.fffffffffffeep-1
+  },
+  { // Entry 243
+    -0x1.c34366179d41a11c2058c40156eae780p-1,
+    -0x1.fffffffffffeep-1
+  },
+  { // Entry 244
+    0x1.ffffaaaad10fda3642e7f712ee391058p-9,
+    0x1.fffffffffffeep-9
+  },
+  { // Entry 245
+    -0x1.ffffaaaad10fda3642e7f712ee391058p-9,
+    -0x1.fffffffffffeep-9
+  },
+  { // Entry 246
+    0x1.30fc1931f09c97ff42ff5cad467897fdp7,
+    0x1.fffffffffffeep218
+  },
+  { // Entry 247
+    -0x1.30fc1931f09c97ff42ff5cad467897fdp7,
+    -0x1.fffffffffffeep218
+  },
+  { // Entry 248
+    0x1.ffaad0fa452557ff22342e0cd4997830p-5,
+    0x1.ffffffffffff3p-5
+  },
+  { // Entry 249
+    -0x1.ffaad0fa452557ff22342e0cd4997830p-5,
+    -0x1.ffffffffffff3p-5
+  },
+  { // Entry 250
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep501
+  },
+  { // Entry 251
+    -0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    -0x1.ffffffffffffep501
+  },
+  { // Entry 252
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 253
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 254
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.cp-1
+  },
+  { // Entry 255
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.cp-1
+  },
+  { // Entry 256
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.8p-1
+  },
+  { // Entry 257
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.8p-1
+  },
+  { // Entry 258
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.4p-1
+  },
+  { // Entry 259
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.4p-1
+  },
+  { // Entry 260
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 261
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 262
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.8p-2
+  },
+  { // Entry 263
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.8p-2
+  },
+  { // Entry 264
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 265
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 266
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 267
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 268
+    0.0,
+    0.0
+  },
+  { // Entry 269
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 270
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 271
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 272
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 273
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.8p-2
+  },
+  { // Entry 274
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.8p-2
+  },
+  { // Entry 275
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 276
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 277
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.4p-1
+  },
+  { // Entry 278
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.4p-1
+  },
+  { // Entry 279
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.8p-1
+  },
+  { // Entry 280
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.8p-1
+  },
+  { // Entry 281
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.cp-1
+  },
+  { // Entry 282
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.cp-1
+  },
+  { // Entry 283
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 284
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 285
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.0p100
+  },
+  { // Entry 286
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    -0x1.0p100
+  },
+  { // Entry 287
+    0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 288
+    -0x1.1869a6d0fc0c8734cff5be4c994a623cp6,
+    -0x1.199999999999ap100
+  },
+  { // Entry 289
+    0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    0x1.3333333333334p100
+  },
+  { // Entry 290
+    -0x1.18c2c053a6401fdf8f801885ecec896ep6,
+    -0x1.3333333333334p100
+  },
+  { // Entry 291
+    0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 292
+    -0x1.1914b70ad53709fc02e60c9931465d1cp6,
+    -0x1.4cccccccccccep100
+  },
+  { // Entry 293
+    0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 294
+    -0x1.19609a00a84eb5469b8a14575cfcffdcp6,
+    -0x1.6666666666668p100
+  },
+  { // Entry 295
+    0x1.19a74011e314f1179b5984282f925681p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 296
+    -0x1.19a74011e314f1179b5984282f925681p6,
+    -0x1.8000000000002p100
+  },
+  { // Entry 297
+    0x1.19e95674b98dd93c68942542ae48ec14p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 298
+    -0x1.19e95674b98dd93c68942542ae48ec14p6,
+    -0x1.999999999999cp100
+  },
+  { // Entry 299
+    0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    0x1.b333333333336p100
+  },
+  { // Entry 300
+    -0x1.1a276ad639b09e9294f7218ef587ce6cp6,
+    -0x1.b333333333336p100
+  },
+  { // Entry 301
+    0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 302
+    -0x1.1a61f2927239a4e5d75ab70952b3595ap6,
+    -0x1.cccccccccccd0p100
+  },
+  { // Entry 303
+    0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 304
+    -0x1.1a994ff83eca77f3ef91866a7b8540e2p6,
+    -0x1.e66666666666ap100
+  },
+  { // Entry 305
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.0p101
+  },
+  { // Entry 306
+    -0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    -0x1.0p101
+  },
+  { // Entry 307
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p200
+  },
+  { // Entry 308
+    -0x1.16a529a32777cd0fc3079004b633875fp7,
+    -0x1.0p200
+  },
+  { // Entry 309
+    0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 310
+    -0x1.16d5f62219f05aa89db4c3750fbb01d6p7,
+    -0x1.199999999999ap200
+  },
+  { // Entry 311
+    0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 312
+    -0x1.170282e36f0a26fdfd79f091b98c1570p7,
+    -0x1.3333333333334p200
+  },
+  { // Entry 313
+    0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 314
+    -0x1.172b7e3f06859c0c372cea9b5bb8ff47p7,
+    -0x1.4cccccccccccep200
+  },
+  { // Entry 315
+    0x1.17516fb9f01171b1837eee7a719450a6p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 316
+    -0x1.17516fb9f01171b1837eee7a719450a6p7,
+    -0x1.6666666666668p200
+  },
+  { // Entry 317
+    0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 318
+    -0x1.1774c2c28d748f9a0366a662dadefbf9p7,
+    -0x1.8000000000002p200
+  },
+  { // Entry 319
+    0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 320
+    -0x1.1795cdf3f8b103ac6a03f6f01a3a46c3p7,
+    -0x1.999999999999cp200
+  },
+  { // Entry 321
+    0x1.17b4d824b8c26657803575163dd9b7efp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 322
+    -0x1.17b4d824b8c26657803575163dd9b7efp7,
+    -0x1.b333333333336p200
+  },
+  { // Entry 323
+    0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 324
+    -0x1.17d21c02d506e98121673fd36c6f7d66p7,
+    -0x1.cccccccccccd0p200
+  },
+  { // Entry 325
+    0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 326
+    -0x1.17edcab5bb4f53082d82a78400d8712ap7,
+    -0x1.e66666666666ap200
+  },
+  { // Entry 327
+    0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    0x1.0p201
+  },
+  { // Entry 328
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp7,
+    -0x1.0p201
+  },
+  { // Entry 329
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1000
+  },
+  { // Entry 330
+    -0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    -0x1.0p1000
+  },
+  { // Entry 331
+    0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 332
+    -0x1.5af7c2fbbe5044c692e0f97aca1a61e7p9,
+    -0x1.199999999999ap1000
+  },
+  { // Entry 333
+    0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 334
+    -0x1.5b02e62c1396b7dbead244c1f48ea6cdp9,
+    -0x1.3333333333334p1000
+  },
+  { // Entry 335
+    0x1.5b0d2502f975951f793f03445d19e143p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 336
+    -0x1.5b0d2502f975951f793f03445d19e143p9,
+    -0x1.4cccccccccccep1000
+  },
+  { // Entry 337
+    0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 338
+    -0x1.5b16a161b3d88a88cc53843c2290b59bp9,
+    -0x1.6666666666668p1000
+  },
+  { // Entry 339
+    0x1.5b1f7623db315202ec4d72363ce36070p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 340
+    -0x1.5b1f7623db315202ec4d72363ce36070p9,
+    -0x1.8000000000002p1000
+  },
+  { // Entry 341
+    0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 342
+    -0x1.5b27b8f036006f0785f4c6598cba3322p9,
+    -0x1.999999999999cp1000
+  },
+  { // Entry 343
+    0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 344
+    -0x1.5b2f7b7c6604c7b24b8125e315a20f6dp9,
+    -0x1.b333333333336p1000
+  },
+  { // Entry 345
+    0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 346
+    -0x1.5b36cc73ed15e87cb3cd9892614780cbp9,
+    -0x1.cccccccccccd0p1000
+  },
+  { // Entry 347
+    0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 348
+    -0x1.5b3db820a6a802de76d4727e8661bdbcp9,
+    -0x1.e66666666666ap1000
+  },
+  { // Entry 349
+    0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    0x1.0p1001
+  },
+  { // Entry 350
+    -0x1.5b4448e7fd9b091d321a9e787fba7cc4p9,
+    -0x1.0p1001
+  },
+  { // Entry 351
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 352
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 354
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 355
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 356
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 357
+    -0.0,
+    -0.0
+  },
+  { // Entry 358
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 360
+    -0x1.0499e40c65ff571c4214191e409f886cp-1,
+    -0x1.1000000000001p-1
+  },
+  { // Entry 361
+    0x1.0499e40c65ff571c4214191e409f886cp-1,
+    0x1.1000000000001p-1
+  },
+  { // Entry 362
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.1p-1
+  },
+  { // Entry 363
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.1p-1
+  },
+  { // Entry 364
+    -0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    -0x1.0ffffffffffffp-1
+  },
+  { // Entry 365
+    0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    0x1.0ffffffffffffp-1
+  },
+  { // Entry 366
+    0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    0x1.0ffffffffffffp-1
+  },
+  { // Entry 367
+    -0x1.0499e40c65ff3ad9c62e64382526e89ap-1,
+    -0x1.0ffffffffffffp-1
+  },
+  { // Entry 368
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.1p-1
+  },
+  { // Entry 369
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.1p-1
+  },
+  { // Entry 370
+    0x1.0499e40c65ff571c4214191e409f886cp-1,
+    0x1.1000000000001p-1
+  },
+  { // Entry 371
+    -0x1.0499e40c65ff571c4214191e409f886cp-1,
+    -0x1.1000000000001p-1
+  },
+  { // Entry 372
+    0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 373
+    -0x1.62e42fefa39ef31793c7673007e4ed5ep5,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 374
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.0p63
+  },
+  { // Entry 375
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    -0x1.0p63
+  },
+  { // Entry 376
+    0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    0x1.0000000000001p63
+  },
+  { // Entry 377
+    -0x1.62e42fefa39ef3d793c7673007e1ed5ep5,
+    -0x1.0000000000001p63
+  },
+  { // Entry 378
+    0x1.419ecb712c480c0b5decb58387269d9dp4,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 379
+    -0x1.419ecb712c480c0b5decb58387269d9dp4,
+    -0x1.fffffffffffffp27
+  },
+  { // Entry 380
+    0x1.419ecb712c480c8b5decb58387285d9dp4,
+    0x1.0p28
+  },
+  { // Entry 381
+    -0x1.419ecb712c480c8b5decb58387285d9dp4,
+    -0x1.0p28
+  },
+  { // Entry 382
+    0x1.419ecb712c480d8b5decb583871fdd9dp4,
+    0x1.0000000000001p28
+  },
+  { // Entry 383
+    -0x1.419ecb712c480d8b5decb583871fdd9dp4,
+    -0x1.0000000000001p28
+  },
+  { // Entry 384
+    0x1.3687a9f1af2b147ca14e7a4a06e817b2p4,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 385
+    -0x1.3687a9f1af2b147ca14e7a4a06e817b2p4,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 386
+    0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    0x1.0p27
+  },
+  { // Entry 387
+    -0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    -0x1.0p27
+  },
+  { // Entry 388
+    0x1.3687a9f1af2b15fca14e7a4a06df17b2p4,
+    0x1.0000000000001p27
+  },
+  { // Entry 389
+    -0x1.3687a9f1af2b15fca14e7a4a06df17b2p4,
+    -0x1.0000000000001p27
+  },
+  { // Entry 390
+    0x1.1542457337d4319c6b73c89d84e9a171p4,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 391
+    -0x1.1542457337d4319c6b73c89d84e9a171p4,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 392
+    0x1.1542457337d4321c6b73c89d84aba171p4,
+    0x1.0p24
+  },
+  { // Entry 393
+    -0x1.1542457337d4321c6b73c89d84aba171p4,
+    -0x1.0p24
+  },
+  { // Entry 394
+    0x1.1542457337d4331c6b73c89d8423a171p4,
+    0x1.0000000000001p24
+  },
+  { // Entry 395
+    -0x1.1542457337d4331c6b73c89d8423a171p4,
+    -0x1.0000000000001p24
+  },
+  { // Entry 396
+    0x1.0c1f8a6e80eeae5c96894f2bffb535afp1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 397
+    -0x1.0c1f8a6e80eeae5c96894f2bffb535afp1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 398
+    0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    0x1.0p2
+  },
+  { // Entry 399
+    -0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    -0x1.0p2
+  },
+  { // Entry 400
+    0x1.0c1f8a6e80eeba00dda49e2daa18ae71p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 401
+    -0x1.0c1f8a6e80eeba00dda49e2daa18ae71p1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 402
+    0x1.719218313d086bd11ec0138398310287p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 403
+    -0x1.719218313d086bd11ec0138398310287p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 404
+    0x1.719218313d0872f8e831837f0e954189p0,
+    0x1.0p1
+  },
+  { // Entry 405
+    -0x1.719218313d0872f8e831837f0e954189p0,
+    -0x1.0p1
+  },
+  { // Entry 406
+    0x1.719218313d0881487b146375fad45d3fp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 407
+    -0x1.719218313d0881487b146375fad45d3fp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 408
+    0x1.c34366179d42617162bffd7dbe442e71p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 409
+    -0x1.c34366179d42617162bffd7dbe442e71p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 410
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 411
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 412
+    0x1.c34366179d4283625059bc5770d91d5dp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 413
+    -0x1.c34366179d4283625059bc5770d91d5dp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 414
+    0x1.ecc2caec51608afc4d5f24b27c20dc9cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 415
+    -0x1.ecc2caec51608afc4d5f24b27c20dc9cp-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 416
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.0p-1
+  },
+  { // Entry 417
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.0p-1
+  },
+  { // Entry 418
+    0x1.ecc2caec5160b5eb0607c49741ce9bc6p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 419
+    -0x1.ecc2caec5160b5eb0607c49741ce9bc6p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 420
+    0x1.facfb2399e635f07b2ecf48db28f6b82p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 421
+    -0x1.facfb2399e635f07b2ecf48db28f6b82p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 422
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.0p-2
+  },
+  { // Entry 423
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.0p-2
+  },
+  { // Entry 424
+    0x1.facfb2399e638d98cf5a30945cc1a910p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 425
+    -0x1.facfb2399e638d98cf5a30945cc1a910p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 426
+    0x1.fead0b6996971d25a6c9ee383ff9d971p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 427
+    -0x1.fead0b6996971d25a6c9ee383ff9d971p-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 428
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.0p-3
+  },
+  { // Entry 429
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.0p-3
+  },
+  { // Entry 430
+    0x1.fead0b6996974cc6c316dfa305c0f42dp-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 431
+    -0x1.fead0b6996974cc6c316dfa305c0f42dp-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 432
+    0x1.ffaad0fa4526179f69f8625dbfeb270fp-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 433
+    -0x1.ffaad0fa4526179f69f8625dbfeb270fp-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 434
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    0x1.0p-4
+  },
+  { // Entry 435
+    -0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    -0x1.0p-4
+  },
+  { // Entry 436
+    0x1.ffaad0fa452647877be96f71fab46392p-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 437
+    -0x1.ffaad0fa452647877be96f71fab46392p-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 438
+    0x1.ffeaad10b5b2d593fd4d7fd398a04e17p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 439
+    -0x1.ffeaad10b5b2d593fd4d7fd398a04e17p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 440
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.0p-5
+  },
+  { // Entry 441
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.0p-5
+  },
+  { // Entry 442
+    0x1.ffeaad10b5b3058dfe6d43e0b5accb41p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 443
+    -0x1.ffeaad10b5b3058dfe6d43e0b5accb41p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 444
+    0x1.fffaaad10fa359c3a4fad4bba332af54p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 445
+    -0x1.fffaaad10fa359c3a4fad4bba332af54p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 446
+    0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    0x1.0p-6
+  },
+  { // Entry 447
+    -0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    -0x1.0p-6
+  },
+  { // Entry 448
+    0x1.fffaaad10fa389c2250cd3cbb051e660p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 449
+    -0x1.fffaaad10fa389c2250cd3cbb051e660p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 450
+    0x1.fffffffaaaaa9ad111118fa35a2fb2e8p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 451
+    -0x1.fffffffaaaaa9ad111118fa35a2fb2e8p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 452
+    0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    0x1.0p-14
+  },
+  { // Entry 453
+    -0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    -0x1.0p-14
+  },
+  { // Entry 454
+    0x1.fffffffaaaaacad111100fa35a41b2e8p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 455
+    -0x1.fffffffaaaaacad111100fa35a41b2e8p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 456
+    0x1.ffffffffffffeeaaaaaaaaaaaacd1111p-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 457
+    -0x1.ffffffffffffeeaaaaaaaaaaaacd1111p-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 458
+    0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    0x1.0p-27
+  },
+  { // Entry 459
+    -0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    -0x1.0p-27
+  },
+  { // Entry 460
+    0x1.0000000000000f555555555555368888p-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 461
+    -0x1.0000000000000f555555555555368888p-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 462
+    0x1.ffffffffffffefaaaaaaaaaaaab2d111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 463
+    -0x1.ffffffffffffefaaaaaaaaaaaab2d111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 464
+    0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    0x1.0p-28
+  },
+  { // Entry 465
+    -0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    -0x1.0p-28
+  },
+  { // Entry 466
+    0x1.0000000000000fd555555555554d6888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 467
+    -0x1.0000000000000fd555555555554d6888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 468
+    0x1.ffffffffffffeffaaaaaaaaaaaab2ad1p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 469
+    -0x1.ffffffffffffeffaaaaaaaaaaaab2ad1p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 470
+    0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    0x1.0p-30
+  },
+  { // Entry 471
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    -0x1.0p-30
+  },
+  { // Entry 472
+    0x1.0000000000000ffd555555555554d568p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 473
+    -0x1.0000000000000ffd555555555554d568p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 474
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 475
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 476
+    0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 477
+    -0x1.633ce8fb9f87db1069ac5909d3e7d6d9p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 478
+    0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 479
+    -0x1.633ce8fb9f87db0c69ac5909d3e7a6d9p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 480
+    0x1.dcbf69f10006cbe9c11ca9a5d76ab0c1p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 481
+    -0x1.dcbf69f10006cbe9c11ca9a5d76ab0c1p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 482
+    0x1.3bc04e847ec0514731ddcb476d407d39p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 483
+    -0x1.3bc04e847ec0514731ddcb476d407d39p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 484
+    0x1.c34366179d4283625059bc5770d91d5dp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 485
+    -0x1.c34366179d4283625059bc5770d91d5dp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 486
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.0p0
+  },
+  { // Entry 487
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.0p0
+  },
+  { // Entry 488
+    0x1.c34366179d42617162bffd7dbe442e71p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 489
+    -0x1.c34366179d42617162bffd7dbe442e71p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 490
+    0x1.7144779e3f0ba7a6bf77ae922933a297p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 491
+    -0x1.7144779e3f0ba7a6bf77ae922933a297p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 492
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 493
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 494
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 495
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 496
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 497
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 498
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 499
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 500
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 501
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 502
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 503
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 504
+    0.0,
+    0.0
+  },
+  { // Entry 505
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/asinhf_intel_data.h b/tests/math_data/asinhf_intel_data.h
new file mode 100644
index 0000000..e09b2f1
--- /dev/null
+++ b/tests/math_data/asinhf_intel_data.h
@@ -0,0 +1,1650 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_asinhf_intel_data[] = {
+  { // Entry 0
+    -0x1.0f1feafffe3d1154765de9942446abdfp-2,
+    -0x1.124db8p-2
+  },
+  { // Entry 1
+    0x1.0f1feafffe3d1154765de9942446abdfp-2,
+    0x1.124db8p-2
+  },
+  { // Entry 2
+    -0x1.250abb00034e7ff129bd35187e5a90a8p-11,
+    -0x1.250abcp-11
+  },
+  { // Entry 3
+    0x1.250abb00034e7ff129bd35187e5a90a8p-11,
+    0x1.250abcp-11
+  },
+  { // Entry 4
+    -0x1.544e70ffffe14ccbadab97b65580f0f7p-5,
+    -0x1.546780p-5
+  },
+  { // Entry 5
+    0x1.544e70ffffe14ccbadab97b65580f0f7p-5,
+    0x1.546780p-5
+  },
+  { // Entry 6
+    -0x1.e4713d0abf552bdbc167e2422c33c9cbp1,
+    -0x1.60p4
+  },
+  { // Entry 7
+    0x1.e4713d0abf552bdbc167e2422c33c9cbp1,
+    0x1.60p4
+  },
+  { // Entry 8
+    -0x1.5fe9a00168f4b6cc1a76f27bb6acd88bp-4,
+    -0x1.605880p-4
+  },
+  { // Entry 9
+    0x1.5fe9a00168f4b6cc1a76f27bb6acd88bp-4,
+    0x1.605880p-4
+  },
+  { // Entry 10
+    -0x1.dade546facd5dc06721c3a76f2fa6a4cp0,
+    -0x1.8f096ep1
+  },
+  { // Entry 11
+    0x1.dade546facd5dc06721c3a76f2fa6a4cp0,
+    0x1.8f096ep1
+  },
+  { // Entry 12
+    -0x1.d4982b0c930dad1b48293ef31d693cecp-6,
+    -0x1.d4a886p-6
+  },
+  { // Entry 13
+    0x1.d4982b0c930dad1b48293ef31d693cecp-6,
+    0x1.d4a886p-6
+  },
+  { // Entry 14
+    -0x1.d9ecbcfff8be129cc3cf7bf216da5f46p-4,
+    -0x1.dafba0p-4
+  },
+  { // Entry 15
+    0x1.d9ecbcfff8be129cc3cf7bf216da5f46p-4,
+    0x1.dafba0p-4
+  },
+  { // Entry 16
+    -0x1.f95ae3069ee6ea46106060615b04d1b9p-3,
+    -0x1.fe7fc0p-3
+  },
+  { // Entry 17
+    0x1.f95ae3069ee6ea46106060615b04d1b9p-3,
+    0x1.fe7fc0p-3
+  },
+  { // Entry 18
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.p-5
+  },
+  { // Entry 19
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.p-5
+  },
+  { // Entry 20
+    0x1.ffffffffffffffffffffffffffffffffp-144,
+    0x1.p-143
+  },
+  { // Entry 21
+    -0x1.ffffffffffffffffffffffffffffffffp-144,
+    -0x1.p-143
+  },
+  { // Entry 22
+    0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    0x1.000002p-5
+  },
+  { // Entry 23
+    -0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    -0x1.000002p-5
+  },
+  { // Entry 24
+    0x1.000001fffffffffffffff55555155554p-41,
+    0x1.000002p-41
+  },
+  { // Entry 25
+    -0x1.000001fffffffffffffff55555155554p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 26
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 27
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 28
+    0x1.7912730e9dd8c28d0e2e8849730f0345p4,
+    0x1.000002p33
+  },
+  { // Entry 29
+    -0x1.7912730e9dd8c28d0e2e8849730f0345p4,
+    -0x1.000002p33
+  },
+  { // Entry 30
+    0x1.fead3b0ab2db53675e78fa2d41047d4ap-4,
+    0x1.000018p-3
+  },
+  { // Entry 31
+    -0x1.fead3b0ab2db53675e78fa2d41047d4ap-4,
+    -0x1.000018p-3
+  },
+  { // Entry 32
+    0x1.fead42fae23a4ec3ec74e75d7e6a8e01p-4,
+    0x1.00001cp-3
+  },
+  { // Entry 33
+    -0x1.fead42fae23a4ec3ec74e75d7e6a8e01p-4,
+    -0x1.00001cp-3
+  },
+  { // Entry 34
+    0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    0x1.00004cp64
+  },
+  { // Entry 35
+    -0x1.686fc30f61d32f36cebd3556647e6d85p5,
+    -0x1.00004cp64
+  },
+  { // Entry 36
+    0x1.0c1fb8ff9524366b4770e679f3d2be09p1,
+    0x1.000060p2
+  },
+  { // Entry 37
+    -0x1.0c1fb8ff9524366b4770e679f3d2be09p1,
+    -0x1.000060p2
+  },
+  { // Entry 38
+    0x1.ecc43f011e3008670443b4fad065f492p-2,
+    0x1.0000d0p-1
+  },
+  { // Entry 39
+    -0x1.ecc43f011e3008670443b4fad065f492p-2,
+    -0x1.0000d0p-1
+  },
+  { // Entry 40
+    0x1.feafbe09a9ba162c9d72e1d6bf7564a3p-4,
+    0x1.00015cp-3
+  },
+  { // Entry 41
+    -0x1.feafbe09a9ba162c9d72e1d6bf7564a3p-4,
+    -0x1.00015cp-3
+  },
+  { // Entry 42
+    0x1.c3458525ab38fbabe76fc767cf7a5730p-1,
+    0x1.000180p0
+  },
+  { // Entry 43
+    -0x1.c3458525ab38fbabe76fc767cf7a5730p-1,
+    -0x1.000180p0
+  },
+  { // Entry 44
+    0x1.fad2e50655314fc4b2c8f27b0fc674ddp-3,
+    0x1.0001a6p-2
+  },
+  { // Entry 45
+    -0x1.fad2e50655314fc4b2c8f27b0fc674ddp-3,
+    -0x1.0001a6p-2
+  },
+  { // Entry 46
+    0x1.fff8d74b7e204f81827216900ed8543fp-6,
+    0x1.000716p-5
+  },
+  { // Entry 47
+    -0x1.fff8d74b7e204f81827216900ed8543fp-6,
+    -0x1.000716p-5
+  },
+  { // Entry 48
+    0x1.ffbac9000089648597139384da627d36p-5,
+    0x1.0008p-4
+  },
+  { // Entry 49
+    -0x1.ffbac9000089648597139384da627d36p-5,
+    -0x1.0008p-4
+  },
+  { // Entry 50
+    0x1.fffb13040741e3467cc63b91d9b9d8c7p-6,
+    0x1.000834p-5
+  },
+  { // Entry 51
+    -0x1.fffb13040741e3467cc63b91d9b9d8c7p-6,
+    -0x1.000834p-5
+  },
+  { // Entry 52
+    0x1.fec8d40c701c746cf9bdcc066cc0c5bbp-4,
+    0x1.000ep-3
+  },
+  { // Entry 53
+    -0x1.fec8d40c701c746cf9bdcc066cc0c5bbp-4,
+    -0x1.000ep-3
+  },
+  { // Entry 54
+    0x1.0c3ab19e45eb29d7ac3cb690b07f2c76p1,
+    0x1.0038p2
+  },
+  { // Entry 55
+    -0x1.0c3ab19e45eb29d7ac3cb690b07f2c76p1,
+    -0x1.0038p2
+  },
+  { // Entry 56
+    0x1.c3b5a37f910bfbf8ba8ffc861755f387p-1,
+    0x1.0050cep0
+  },
+  { // Entry 57
+    -0x1.c3b5a37f910bfbf8ba8ffc861755f387p-1,
+    -0x1.0050cep0
+  },
+  { // Entry 58
+    0x1.ff9b301b22a673c34515e6fb85810f60p-4,
+    0x1.0078p-3
+  },
+  { // Entry 59
+    -0x1.ff9b301b22a673c34515e6fb85810f60p-4,
+    -0x1.0078p-3
+  },
+  { // Entry 60
+    0x1.c4bc4cfeab01d553217d775dafbe1e54p-1,
+    0x1.010ac8p0
+  },
+  { // Entry 61
+    -0x1.c4bc4cfeab01d553217d775dafbe1e54p-1,
+    -0x1.010ac8p0
+  },
+  { // Entry 62
+    0x1.fe5b8ef85ffc7ee05a4f3f96b6e60554p-3,
+    0x1.01d4p-2
+  },
+  { // Entry 63
+    -0x1.fe5b8ef85ffc7ee05a4f3f96b6e60554p-3,
+    -0x1.01d4p-2
+  },
+  { // Entry 64
+    0x1.795233437bda10a17c9819cb13d288e3p3,
+    0x1.02p16
+  },
+  { // Entry 65
+    -0x1.795233437bda10a17c9819cb13d288e3p3,
+    -0x1.02p16
+  },
+  { // Entry 66
+    0x1.7952350002c01bfe0af7d7457dbf20dap3,
+    0x1.02000ep16
+  },
+  { // Entry 67
+    -0x1.7952350002c01bfe0af7d7457dbf20dap3,
+    -0x1.02000ep16
+  },
+  { // Entry 68
+    0x1.f1abad0010bc92fb3c926eb5ded61431p-2,
+    0x1.02bf60p-1
+  },
+  { // Entry 69
+    -0x1.f1abad0010bc92fb3c926eb5ded61431p-2,
+    -0x1.02bf60p-1
+  },
+  { // Entry 70
+    0x1.ca35e4554c95b4f73f96234be8db5a0cp-1,
+    0x1.04efa8p0
+  },
+  { // Entry 71
+    -0x1.ca35e4554c95b4f73f96234be8db5a0cp-1,
+    -0x1.04efa8p0
+  },
+  { // Entry 72
+    0x1.f62556ffff16c63d4ba67855548e7a1ap-2,
+    0x1.0541d6p-1
+  },
+  { // Entry 73
+    -0x1.f62556ffff16c63d4ba67855548e7a1ap-2,
+    -0x1.0541d6p-1
+  },
+  { // Entry 74
+    0x1.cc0aec88d32a2ccff738ff8f5e116de3p-1,
+    0x1.063ef4p0
+  },
+  { // Entry 75
+    -0x1.cc0aec88d32a2ccff738ff8f5e116de3p-1,
+    -0x1.063ef4p0
+  },
+  { // Entry 76
+    0x1.06ac7a01a2b93dd343117d62da00efe9p-5,
+    0x1.06b8p-5
+  },
+  { // Entry 77
+    -0x1.06ac7a01a2b93dd343117d62da00efe9p-5,
+    -0x1.06b8p-5
+  },
+  { // Entry 78
+    0x1.78a50f013838dd4ba303180ecb0af32fp0,
+    0x1.0802p1
+  },
+  { // Entry 79
+    -0x1.78a50f013838dd4ba303180ecb0af32fp0,
+    -0x1.0802p1
+  },
+  { // Entry 80
+    0x1.104e01af3396534a594bd72c365a3eedp1,
+    0x1.08c230p2
+  },
+  { // Entry 81
+    -0x1.104e01af3396534a594bd72c365a3eedp1,
+    -0x1.08c230p2
+  },
+  { // Entry 82
+    0x1.d0517f0001a7d9a1e6f44c6bab1469eep-1,
+    0x1.0950c8p0
+  },
+  { // Entry 83
+    -0x1.d0517f0001a7d9a1e6f44c6bab1469eep-1,
+    -0x1.0950c8p0
+  },
+  { // Entry 84
+    0x1.fe0a030fb46d45fb1c02b3272bcd1914p-2,
+    0x1.09b21ap-1
+  },
+  { // Entry 85
+    -0x1.fe0a030fb46d45fb1c02b3272bcd1914p-2,
+    -0x1.09b21ap-1
+  },
+  { // Entry 86
+    0x1.fea6bc4743366aeba868336ffac3acbdp-2,
+    0x1.0a0a66p-1
+  },
+  { // Entry 87
+    -0x1.fea6bc4743366aeba868336ffac3acbdp-2,
+    -0x1.0a0a66p-1
+  },
+  { // Entry 88
+    0x1.d822f300019612b0ea114300b20b6d9dp-1,
+    0x1.0ef9fap0
+  },
+  { // Entry 89
+    -0x1.d822f300019612b0ea114300b20b6d9dp-1,
+    -0x1.0ef9fap0
+  },
+  { // Entry 90
+    0x1.d98a7896e162415f9165e41af5e889cbp-1,
+    0x1.10p0
+  },
+  { // Entry 91
+    -0x1.d98a7896e162415f9165e41af5e889cbp-1,
+    -0x1.10p0
+  },
+  { // Entry 92
+    0x1.1034b2000a6d7c1400fd184bdac732ffp-4,
+    0x1.1068p-4
+  },
+  { // Entry 93
+    -0x1.1034b2000a6d7c1400fd184bdac732ffp-4,
+    -0x1.1068p-4
+  },
+  { // Entry 94
+    0x1.de5c70fffea7cdc7698c00ca7b57f914p-1,
+    0x1.138754p0
+  },
+  { // Entry 95
+    -0x1.de5c70fffea7cdc7698c00ca7b57f914p-1,
+    -0x1.138754p0
+  },
+  { // Entry 96
+    0x1.16a7b0fce815d17a58d940605c85f9cfp-3,
+    0x1.1784p-3
+  },
+  { // Entry 97
+    -0x1.16a7b0fce815d17a58d940605c85f9cfp-3,
+    -0x1.1784p-3
+  },
+  { // Entry 98
+    0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    0x1.18p0
+  },
+  { // Entry 99
+    -0x1.e46bf608630f17f3183a7d1db5529144p-1,
+    -0x1.18p0
+  },
+  { // Entry 100
+    0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    0x1.18p78
+  },
+  { // Entry 101
+    -0x1.b6c931c025238ebcf98ef12eb28d8307p5,
+    -0x1.18p78
+  },
+  { // Entry 102
+    0x1.7bf48d0006896bad6b7e5e69afbdc70bp3,
+    0x1.1823p16
+  },
+  { // Entry 103
+    -0x1.7bf48d0006896bad6b7e5e69afbdc70bp3,
+    -0x1.1823p16
+  },
+  { // Entry 104
+    0x1.e681682e3230779582a57284cdf10552p-1,
+    0x1.198be0p0
+  },
+  { // Entry 105
+    -0x1.e681682e3230779582a57284cdf10552p-1,
+    -0x1.198be0p0
+  },
+  { // Entry 106
+    0x1.e7ff47ef1be499dbdb2d4c2dab7144d2p-1,
+    0x1.1aa8p0
+  },
+  { // Entry 107
+    -0x1.e7ff47ef1be499dbdb2d4c2dab7144d2p-1,
+    -0x1.1aa8p0
+  },
+  { // Entry 108
+    0x1.19ffa8fffcaa5a70836fe5869d6f3e64p-3,
+    0x1.1ae4p-3
+  },
+  { // Entry 109
+    -0x1.19ffa8fffcaa5a70836fe5869d6f3e64p-3,
+    -0x1.1ae4p-3
+  },
+  { // Entry 110
+    0x1.e8d45f38a22bc64723c44174227b6055p-1,
+    0x1.1b46d0p0
+  },
+  { // Entry 111
+    -0x1.e8d45f38a22bc64723c44174227b6055p-1,
+    -0x1.1b46d0p0
+  },
+  { // Entry 112
+    0x1.e8db53fe01cb2f1941b1e02656828b71p-1,
+    0x1.1b4cp0
+  },
+  { // Entry 113
+    -0x1.e8db53fe01cb2f1941b1e02656828b71p-1,
+    -0x1.1b4cp0
+  },
+  { // Entry 114
+    0x1.e93d1fffffc916cac5df6685ccfb9a95p-1,
+    0x1.1b94f4p0
+  },
+  { // Entry 115
+    -0x1.e93d1fffffc916cac5df6685ccfb9a95p-1,
+    -0x1.1b94f4p0
+  },
+  { // Entry 116
+    0x1.e9cc87321d1ed3ec8130e9128585214cp-1,
+    0x1.1cp0
+  },
+  { // Entry 117
+    -0x1.e9cc87321d1ed3ec8130e9128585214cp-1,
+    -0x1.1cp0
+  },
+  { // Entry 118
+    0x1.18760b00045eb313cf2650593887e2bep6,
+    0x1.1d0740p100
+  },
+  { // Entry 119
+    -0x1.18760b00045eb313cf2650593887e2bep6,
+    -0x1.1d0740p100
+  },
+  { // Entry 120
+    0x1.ed98b1f64a808793ae088a13d43da9c2p-1,
+    0x1.1ed8p0
+  },
+  { // Entry 121
+    -0x1.ed98b1f64a808793ae088a13d43da9c2p-1,
+    -0x1.1ed8p0
+  },
+  { // Entry 122
+    0x1.24f53378690fc7ab8aafbeb62b1c3badp-5,
+    0x1.250530p-5
+  },
+  { // Entry 123
+    -0x1.24f53378690fc7ab8aafbeb62b1c3badp-5,
+    -0x1.250530p-5
+  },
+  { // Entry 124
+    0x1.4a5b157658bb51fe2cd170c897ff9227p-5,
+    0x1.4a7202p-5
+  },
+  { // Entry 125
+    -0x1.4a5b157658bb51fe2cd170c897ff9227p-5,
+    -0x1.4a7202p-5
+  },
+  { // Entry 126
+    0x1.b736e800018136bc46678d296cd029bdp0,
+    0x1.585c20p1
+  },
+  { // Entry 127
+    -0x1.b736e800018136bc46678d296cd029bdp0,
+    -0x1.585c20p1
+  },
+  { // Entry 128
+    0x1.220b35fffea45ca3a7091d0d1dd0328dp0,
+    0x1.6433f4p0
+  },
+  { // Entry 129
+    -0x1.220b35fffea45ca3a7091d0d1dd0328dp0,
+    -0x1.6433f4p0
+  },
+  { // Entry 130
+    0x1.6b88e10b317c9c2d54079667c212fd16p-6,
+    0x1.6b9084p-6
+  },
+  { // Entry 131
+    -0x1.6b88e10b317c9c2d54079667c212fd16p-6,
+    -0x1.6b9084p-6
+  },
+  { // Entry 132
+    0x1.c570240000129c3304aa0b9915097b93p0,
+    0x1.6d505ep1
+  },
+  { // Entry 133
+    -0x1.c570240000129c3304aa0b9915097b93p0,
+    -0x1.6d505ep1
+  },
+  { // Entry 134
+    0x1.71f3de02331239b851f896c8c251b36fp-4,
+    0x1.7274b0p-4
+  },
+  { // Entry 135
+    -0x1.71f3de02331239b851f896c8c251b36fp-4,
+    -0x1.7274b0p-4
+  },
+  { // Entry 136
+    0x1.7fffff000001ccccc883a8462e52c2d1p-10,
+    0x1.800008p-10
+  },
+  { // Entry 137
+    -0x1.7fffff000001ccccc883a8462e52c2d1p-10,
+    -0x1.800008p-10
+  },
+  { // Entry 138
+    0x1.d2c365a2367e0a0f342a944b8fe912adp0,
+    0x1.81f778p1
+  },
+  { // Entry 139
+    -0x1.d2c365a2367e0a0f342a944b8fe912adp0,
+    -0x1.81f778p1
+  },
+  { // Entry 140
+    0x1.7042f9000343b85d0080af58e6ce2a5bp3,
+    0x1.84c61ep15
+  },
+  { // Entry 141
+    -0x1.7042f9000343b85d0080af58e6ce2a5bp3,
+    -0x1.84c61ep15
+  },
+  { // Entry 142
+    0x1.ca328b0b0732378d71b2ed8f94926b5cp5,
+    0x1.8c25e4p81
+  },
+  { // Entry 143
+    -0x1.ca328b0b0732378d71b2ed8f94926b5cp5,
+    -0x1.8c25e4p81
+  },
+  { // Entry 144
+    0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    0x1.9026f4p64
+  },
+  { // Entry 145
+    -0x1.6c02870f43f412f2facda9c71af64d9ap5,
+    -0x1.9026f4p64
+  },
+  { // Entry 146
+    0x1.dc29a21d978c49d5ef40e243da93e547p0,
+    0x1.912912p1
+  },
+  { // Entry 147
+    -0x1.dc29a21d978c49d5ef40e243da93e547p0,
+    -0x1.912912p1
+  },
+  { // Entry 148
+    0x1.e87da9ce17176d9508dd14c470c83b98p0,
+    0x1.a5e970p1
+  },
+  { // Entry 149
+    -0x1.e87da9ce17176d9508dd14c470c83b98p0,
+    -0x1.a5e970p1
+  },
+  { // Entry 150
+    0x1.52728c00e52ef07d6e0a17848d326ee2p1,
+    0x1.bffffep2
+  },
+  { // Entry 151
+    -0x1.52728c00e52ef07d6e0a17848d326ee2p1,
+    -0x1.bffffep2
+  },
+  { // Entry 152
+    0x1.5512b2ffffffdc9663a38b72b6dcdf6fp0,
+    0x1.c3523ep0
+  },
+  { // Entry 153
+    -0x1.5512b2ffffffdc9663a38b72b6dcdf6fp0,
+    -0x1.c3523ep0
+  },
+  { // Entry 154
+    0x1.c52b7d0f27e70062b6eeb63fbfbccb96p-6,
+    0x1.c53a48p-6
+  },
+  { // Entry 155
+    -0x1.c52b7d0f27e70062b6eeb63fbfbccb96p-6,
+    -0x1.c53a48p-6
+  },
+  { // Entry 156
+    0x1.a89b32fff40d30fcb4988c656e03af82p-1,
+    0x1.dafa74p-1
+  },
+  { // Entry 157
+    -0x1.a89b32fff40d30fcb4988c656e03af82p-1,
+    -0x1.dafa74p-1
+  },
+  { // Entry 158
+    0x1.6274b2fffe689d7abb667b3f8ab66e94p0,
+    0x1.df1344p0
+  },
+  { // Entry 159
+    -0x1.6274b2fffe689d7abb667b3f8ab66e94p0,
+    -0x1.df1344p0
+  },
+  { // Entry 160
+    0x1.e9d89afff66699a3a0a0107eec7292b8p-4,
+    0x1.eb03bcp-4
+  },
+  { // Entry 161
+    -0x1.e9d89afff66699a3a0a0107eec7292b8p-4,
+    -0x1.eb03bcp-4
+  },
+  { // Entry 162
+    0x1.baba624cf203c38bfc585ab19463e81bp-1,
+    0x1.f3fffep-1
+  },
+  { // Entry 163
+    -0x1.baba624cf203c38bfc585ab19463e81bp-1,
+    -0x1.f3fffep-1
+  },
+  { // Entry 164
+    0x1.bcc66ead9bdc7bae10b705739ce6273ap-1,
+    0x1.f6dd80p-1
+  },
+  { // Entry 165
+    -0x1.bcc66ead9bdc7bae10b705739ce6273ap-1,
+    -0x1.f6dd80p-1
+  },
+  { // Entry 166
+    0x1.dca21f00608c1d5dfa8c6eb1ce2f725cp4,
+    0x1.f7fffep41
+  },
+  { // Entry 167
+    -0x1.dca21f00608c1d5dfa8c6eb1ce2f725cp4,
+    -0x1.f7fffep41
+  },
+  { // Entry 168
+    0x1.0a2f1d0000074b9fe1702b2e3f079a3bp1,
+    0x1.f81024p1
+  },
+  { // Entry 169
+    -0x1.0a2f1d0000074b9fe1702b2e3f079a3bp1,
+    -0x1.f81024p1
+  },
+  { // Entry 170
+    0x1.f8b8c2d940b76e1cca1ebf54f4195d20p-4,
+    0x1.f9fffep-4
+  },
+  { // Entry 171
+    -0x1.f8b8c2d940b76e1cca1ebf54f4195d20p-4,
+    -0x1.f9fffep-4
+  },
+  { // Entry 172
+    0x1.fa6d06fff6691e956f3207b0a5ca4eeap-4,
+    0x1.fbb796p-4
+  },
+  { // Entry 173
+    -0x1.fa6d06fff6691e956f3207b0a5ca4eeap-4,
+    -0x1.fbb796p-4
+  },
+  { // Entry 174
+    0x1.fd26a51202d84047f50c18a4c4235d86p-6,
+    0x1.fd3ba0p-6
+  },
+  { // Entry 175
+    -0x1.fd26a51202d84047f50c18a4c4235d86p-6,
+    -0x1.fd3ba0p-6
+  },
+  { // Entry 176
+    0x1.eaf8a9005792f097e006d070ec6e7538p-2,
+    0x1.fdfffep-2
+  },
+  { // Entry 177
+    -0x1.eaf8a9005792f097e006d070ec6e7538p-2,
+    -0x1.fdfffep-2
+  },
+  { // Entry 178
+    0x1.ff322f1260d5d5168ca6d76975246012p-7,
+    0x1.ff377ep-7
+  },
+  { // Entry 179
+    -0x1.ff322f1260d5d5168ca6d76975246012p-7,
+    -0x1.ff377ep-7
+  },
+  { // Entry 180
+    0x1.b6102affc7f74638c6d979799db2bfaap5,
+    0x1.ff9ffep77
+  },
+  { // Entry 181
+    -0x1.b6102affc7f74638c6d979799db2bfaap5,
+    -0x1.ff9ffep77
+  },
+  { // Entry 182
+    0x1.ffb29911437bb58cb151e304b1fad9a8p-7,
+    0x1.ffb7ecp-7
+  },
+  { // Entry 183
+    -0x1.ffb29911437bb58cb151e304b1fad9a8p-7,
+    -0x1.ffb7ecp-7
+  },
+  { // Entry 184
+    0x1.fe8d48ac193eaa17e2bb8b9342791f2dp-4,
+    0x1.ffdffep-4
+  },
+  { // Entry 185
+    -0x1.fe8d48ac193eaa17e2bb8b9342791f2dp-4,
+    -0x1.ffdffep-4
+  },
+  { // Entry 186
+    0x1.ffdfa8bad104e0551f02b0530cfad4f8p-9,
+    0x1.ffdffep-9
+  },
+  { // Entry 187
+    -0x1.ffdfa8bad104e0551f02b0530cfad4f8p-9,
+    -0x1.ffdffep-9
+  },
+  { // Entry 188
+    0x1.fea49a3aebbc35e17238eea29547caf8p-4,
+    0x1.fff77ep-4
+  },
+  { // Entry 189
+    -0x1.fea49a3aebbc35e17238eea29547caf8p-4,
+    -0x1.fff77ep-4
+  },
+  { // Entry 190
+    0x1.facf9900599e9e6aa0b023811476fee8p-3,
+    0x1.ffffe6p-3
+  },
+  { // Entry 191
+    -0x1.facf9900599e9e6aa0b023811476fee8p-3,
+    -0x1.ffffe6p-3
+  },
+  { // Entry 192
+    0x1.ffaac50040a9c0881e560e4889792087p-5,
+    0x1.fffff4p-5
+  },
+  { // Entry 193
+    -0x1.ffaac50040a9c0881e560e4889792087p-5,
+    -0x1.fffff4p-5
+  },
+  { // Entry 194
+    0x1.ffaac8fe42289581485ee110507837f6p-5,
+    0x1.fffff8p-5
+  },
+  { // Entry 195
+    -0x1.ffaac8fe42289581485ee110507837f6p-5,
+    -0x1.fffff8p-5
+  },
+  { // Entry 196
+    0x1.c9d926ffffec577f549c952aff8ea67ep-1,
+    0x1.04ad76p0
+  },
+  { // Entry 197
+    -0x1.c9d926ffffec577f549c952aff8ea67ep-1,
+    -0x1.04ad76p0
+  },
+  { // Entry 198
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 199
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 200
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.c0p-1
+  },
+  { // Entry 201
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.c0p-1
+  },
+  { // Entry 202
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.80p-1
+  },
+  { // Entry 203
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.80p-1
+  },
+  { // Entry 204
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.40p-1
+  },
+  { // Entry 205
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.40p-1
+  },
+  { // Entry 206
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 207
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 208
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.80p-2
+  },
+  { // Entry 209
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.80p-2
+  },
+  { // Entry 210
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 211
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 212
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 213
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 214
+    0.0,
+    0.0
+  },
+  { // Entry 215
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 216
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 217
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 218
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 219
+    0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    0x1.80p-2
+  },
+  { // Entry 220
+    -0x1.7786a7973a5923b96eef2610c25e841ap-2,
+    -0x1.80p-2
+  },
+  { // Entry 221
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 222
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 223
+    0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    0x1.40p-1
+  },
+  { // Entry 224
+    -0x1.2e27502cbfb3347f6bcbf84eb95ca4a3p-1,
+    -0x1.40p-1
+  },
+  { // Entry 225
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.80p-1
+  },
+  { // Entry 226
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.80p-1
+  },
+  { // Entry 227
+    0x1.9490fec3efbe5988497c1478565aa446p-1,
+    0x1.c0p-1
+  },
+  { // Entry 228
+    -0x1.9490fec3efbe5988497c1478565aa446p-1,
+    -0x1.c0p-1
+  },
+  { // Entry 229
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 230
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 231
+    0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    0x1.p100
+  },
+  { // Entry 232
+    -0x1.18080dd3171b6c031a9b576be63b6d4cp6,
+    -0x1.p100
+  },
+  { // Entry 233
+    0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    0x1.19999ap100
+  },
+  { // Entry 234
+    -0x1.1869a6d270699e1fa7c307d5fdbce864p6,
+    -0x1.19999ap100
+  },
+  { // Entry 235
+    0x1.18c2c05650eac97c01479a1a77caa909p6,
+    0x1.333334p100
+  },
+  { // Entry 236
+    -0x1.18c2c05650eac97c01479a1a77caa909p6,
+    -0x1.333334p100
+  },
+  { // Entry 237
+    0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    0x1.4ccccep100
+  },
+  { // Entry 238
+    -0x1.1914b70e86721bbde7a2eea6f077d548p6,
+    -0x1.4ccccep100
+  },
+  { // Entry 239
+    0x1.19609a053a97d6f30409751e6281de59p6,
+    0x1.666668p100
+  },
+  { // Entry 240
+    -0x1.19609a053a97d6f30409751e6281de59p6,
+    -0x1.666668p100
+  },
+  { // Entry 241
+    0x1.19a74017386a428962791f05687972f6p6,
+    0x1.800002p100
+  },
+  { // Entry 242
+    -0x1.19a74017386a428962791f05687972f6p6,
+    -0x1.800002p100
+  },
+  { // Entry 243
+    0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    0x1.99999cp100
+  },
+  { // Entry 244
+    -0x1.19e9567ab98dd45c6898a542a93d6c1bp6,
+    -0x1.99999cp100
+  },
+  { // Entry 245
+    0x1.1a276adcd0472f52cdae405190f05814p6,
+    0x1.b33336p100
+  },
+  { // Entry 246
+    -0x1.1a276adcd0472f52cdae405190f05814p6,
+    -0x1.b33336p100
+  },
+  { // Entry 247
+    0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 248
+    -0x1.1a61f2998eab653e55cda9cf1b8d9e50p6,
+    -0x1.ccccd0p100
+  },
+  { // Entry 249
+    0x1.1a994fffd300555a0d63481601d36422p6,
+    0x1.e6666ap100
+  },
+  { // Entry 250
+    -0x1.1a994fffd300555a0d63481601d36422p6,
+    -0x1.e6666ap100
+  },
+  { // Entry 251
+    0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    0x1.p101
+  },
+  { // Entry 252
+    -0x1.1acdd632f662a9e9c9c2e63a464b3927p6,
+    -0x1.p101
+  },
+  { // Entry 253
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 254
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 255
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 256
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 257
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 258
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 259
+    0.0,
+    0.0
+  },
+  { // Entry 260
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 261
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 262
+    -0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    -0x1.100002p-1
+  },
+  { // Entry 263
+    0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    0x1.100002p-1
+  },
+  { // Entry 264
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.10p-1
+  },
+  { // Entry 265
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.10p-1
+  },
+  { // Entry 266
+    -0x1.0499e2483e40900199471311080aa3efp-1,
+    -0x1.0ffffep-1
+  },
+  { // Entry 267
+    0x1.0499e2483e40900199471311080aa3efp-1,
+    0x1.0ffffep-1
+  },
+  { // Entry 268
+    0x1.0499e2483e40900199471311080aa3efp-1,
+    0x1.0ffffep-1
+  },
+  { // Entry 269
+    -0x1.0499e2483e40900199471311080aa3efp-1,
+    -0x1.0ffffep-1
+  },
+  { // Entry 270
+    0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    0x1.10p-1
+  },
+  { // Entry 271
+    -0x1.0499e40c65ff48fb04213eab32faa345p-1,
+    -0x1.10p-1
+  },
+  { // Entry 272
+    0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    0x1.100002p-1
+  },
+  { // Entry 273
+    -0x1.0499e5d08dbd469e5c8e399d3fdaf2bap-1,
+    -0x1.100002p-1
+  },
+  { // Entry 274
+    0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    0x1.fffffep62
+  },
+  { // Entry 275
+    -0x1.62e42fe7a39eef5793c4bc855b3b42b2p5,
+    -0x1.fffffep62
+  },
+  { // Entry 276
+    0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    0x1.p63
+  },
+  { // Entry 277
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep5,
+    -0x1.p63
+  },
+  { // Entry 278
+    0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    0x1.000002p63
+  },
+  { // Entry 279
+    -0x1.62e42fffa39ee35793dcbc853d3b42e7p5,
+    -0x1.000002p63
+  },
+  { // Entry 280
+    0x1.419ecb612c48048b5de7682e2ddf0845p4,
+    0x1.fffffep27
+  },
+  { // Entry 281
+    -0x1.419ecb612c48048b5de7682e2ddf0845p4,
+    -0x1.fffffep27
+  },
+  { // Entry 282
+    0x1.419ecb712c480c8b5decb58387285d9dp4,
+    0x1.p28
+  },
+  { // Entry 283
+    -0x1.419ecb712c480c8b5decb58387285d9dp4,
+    -0x1.p28
+  },
+  { // Entry 284
+    0x1.419ecb912c47ec8b5e17502df20308aep4,
+    0x1.000002p28
+  },
+  { // Entry 285
+    -0x1.419ecb912c47ec8b5e17502df20308aep4,
+    -0x1.000002p28
+  },
+  { // Entry 286
+    0x1.3687a9e1af2b0cfca14944f4adc3c25ap4,
+    0x1.fffffep26
+  },
+  { // Entry 287
+    -0x1.3687a9e1af2b0cfca14944f4adc3c25ap4,
+    -0x1.fffffep26
+  },
+  { // Entry 288
+    0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    0x1.p27
+  },
+  { // Entry 289
+    -0x1.3687a9f1af2b14fca14e7a4a06e917b2p4,
+    -0x1.p27
+  },
+  { // Entry 290
+    0x1.3687aa11af2af4fca178e4f47253c2c1p4,
+    0x1.000002p27
+  },
+  { // Entry 291
+    -0x1.3687aa11af2af4fca178e4f47253c2c1p4,
+    -0x1.000002p27
+  },
+  { // Entry 292
+    0x1.1542456337d42a1c6b76734837564c23p4,
+    0x1.fffffep23
+  },
+  { // Entry 293
+    -0x1.1542456337d42a1c6b76734837564c23p4,
+    -0x1.fffffep23
+  },
+  { // Entry 294
+    0x1.1542457337d4321c6b73c89d84aba171p4,
+    0x1.p24
+  },
+  { // Entry 295
+    -0x1.1542457337d4321c6b73c89d84aba171p4,
+    -0x1.p24
+  },
+  { // Entry 296
+    0x1.1542459337d4121c6b8e73481f564c0ep4,
+    0x1.000002p24
+  },
+  { // Entry 297
+    -0x1.1542459337d4121c6b8e73481f564c0ep4,
+    -0x1.000002p24
+  },
+  { // Entry 298
+    0x1.0c1f89f2534d548373a25a26f285c8e4p1,
+    0x1.fffffep1
+  },
+  { // Entry 299
+    -0x1.0c1f89f2534d548373a25a26f285c8e4p1,
+    -0x1.fffffep1
+  },
+  { // Entry 300
+    0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    0x1.p2
+  },
+  { // Entry 301
+    -0x1.0c1f8a6e80eeb23e03926981e348eb2ep1,
+    -0x1.p2
+  },
+  { // Entry 302
+    0x1.0c1f8b66dc300f1430203df7b7466063p1,
+    0x1.000002p2
+  },
+  { // Entry 303
+    -0x1.0c1f8b66dc300f1430203df7b7466063p1,
+    -0x1.000002p2
+  },
+  { // Entry 304
+    0x1.7192174c43d9e96299f78116852f0226p0,
+    0x1.fffffep0
+  },
+  { // Entry 305
+    -0x1.7192174c43d9e96299f78116852f0226p0,
+    -0x1.fffffep0
+  },
+  { // Entry 306
+    0x1.719218313d0872f8e831837f0e954189p0,
+    0x1.p1
+  },
+  { // Entry 307
+    -0x1.719218313d0872f8e831837f0e954189p0,
+    -0x1.p1
+  },
+  { // Entry 308
+    0x1.719219fb2f63609c4a04634fb68878aep0,
+    0x1.000002p1
+  },
+  { // Entry 309
+    -0x1.719219fb2f63609c4a04634fb68878aep0,
+    -0x1.000002p1
+  },
+  { // Entry 310
+    0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    0x1.fffffep-1
+  },
+  { // Entry 311
+    -0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 312
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 313
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 314
+    0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    0x1.000002p0
+  },
+  { // Entry 315
+    -0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    -0x1.000002p0
+  },
+  { // Entry 316
+    0x1.ecc2c9225f040f819311fcc70a981347p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 317
+    -0x1.ecc2c9225f040f819311fcc70a981347p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 318
+    0x1.ecc2caec5160994be04204a968c7020dp-2,
+    0x1.p-1
+  },
+  { // Entry 319
+    -0x1.ecc2caec5160994be04204a968c7020dp-2,
+    -0x1.p-1
+  },
+  { // Entry 320
+    0x1.ecc2ce8036189a1bdcaca590368850b2p-2,
+    0x1.000002p-1
+  },
+  { // Entry 321
+    -0x1.ecc2ce8036189a1bdcaca590368850b2p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 322
+    0x1.facfb048e7ded2c6807bda0b8101be5ep-3,
+    0x1.fffffep-3
+  },
+  { // Entry 323
+    -0x1.facfb048e7ded2c6807bda0b8101be5ep-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 324
+    0x1.facfb2399e636e8d67115de540a778acp-3,
+    0x1.p-2
+  },
+  { // Entry 325
+    -0x1.facfb2399e636e8d67115de540a778acp-3,
+    -0x1.p-2
+  },
+  { // Entry 326
+    0x1.facfb61b0b6c4e73771a7b444600d862p-3,
+    0x1.000002p-2
+  },
+  { // Entry 327
+    -0x1.facfb61b0b6c4e73771a7b444600d862p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 328
+    0x1.fead096d8abe9f0e7222b9aab95512f1p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 329
+    -0x1.fead096d8abe9f0e7222b9aab95512f1p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 330
+    0x1.fead0b6996972d06058e3eb12c938140p-4,
+    0x1.p-3
+  },
+  { // Entry 331
+    -0x1.fead0b6996972d06058e3eb12c938140p-4,
+    -0x1.p-3
+  },
+  { // Entry 332
+    0x1.fead0f61ae4831826943c3b871be46a4p-4,
+    0x1.000002p-3
+  },
+  { // Entry 333
+    -0x1.fead0f61ae4831826943c3b871be46a4p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 334
+    0x1.ffaacefb4466c60d6ba2d2fac8774fdap-5,
+    0x1.fffffep-5
+  },
+  { // Entry 335
+    -0x1.ffaacefb4466c60d6ba2d2fac8774fdap-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 336
+    0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    0x1.p-4
+  },
+  { // Entry 337
+    -0x1.ffaad0fa452627976ff366b9d3840fd1p-5,
+    -0x1.p-4
+  },
+  { // Entry 338
+    0x1.ffaad4f846a4e4b46d5fa87174990d96p-5,
+    0x1.000002p-4
+  },
+  { // Entry 339
+    -0x1.ffaad4f846a4e4b46d5fa87174990d96p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 340
+    0x1.ffeaab10f5a6e7d189c57c0e68bbb03ap-6,
+    0x1.fffffep-6
+  },
+  { // Entry 341
+    -0x1.ffeaab10f5a6e7d189c57c0e68bbb03ap-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 342
+    0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    0x1.p-5
+  },
+  { // Entry 343
+    -0x1.ffeaad10b5b2e591fdad6bd7f7a497c3p-6,
+    -0x1.p-5
+  },
+  { // Entry 344
+    0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    0x1.000002p-5
+  },
+  { // Entry 345
+    -0x1.ffeab11035cadf93754fd9171a996c98p-6,
+    -0x1.000002p-5
+  },
+  { // Entry 346
+    0x1.fffaa8d11fa2a9bd25f4c3a139791ba3p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 347
+    -0x1.fffaa8d11fa2a9bd25f4c3a139791ba3p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 348
+    0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    0x1.p-6
+  },
+  { // Entry 349
+    -0x1.fffaaad10fa369c32500d46ba7927458p-7,
+    -0x1.p-6
+  },
+  { // Entry 350
+    0x1.fffaaed0efa4e96f2c182216a1ad2218p-7,
+    0x1.000002p-6
+  },
+  { // Entry 351
+    -0x1.fffaaed0efa4e96f2c182216a1ad2218p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 352
+    0x1.fffffdfaaaaabad111004fa36115083cp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 353
+    -0x1.fffffdfaaaaabad111004fa36115083cp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 354
+    0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    0x1.p-14
+  },
+  { // Entry 355
+    -0x1.fffffffaaaaaaad111110fa35a35b2e8p-15,
+    -0x1.p-14
+  },
+  { // Entry 356
+    0x1.000001fd55554568886947d19abb8424p-14,
+    0x1.000002p-14
+  },
+  { // Entry 357
+    -0x1.000001fd55554568886947d19abb8424p-14,
+    -0x1.000002p-14
+  },
+  { // Entry 358
+    0x1.fffffdfffffffeaaaaaeaaaaa6ad1112p-28,
+    0x1.fffffep-28
+  },
+  { // Entry 359
+    -0x1.fffffdfffffffeaaaaaeaaaaa6ad1112p-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 360
+    0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    0x1.p-27
+  },
+  { // Entry 361
+    -0x1.fffffffffffffeaaaaaaaaaaaaad1111p-28,
+    -0x1.p-27
+  },
+  { // Entry 362
+    0x1.000001ffffffff55555155554d568883p-27,
+    0x1.000002p-27
+  },
+  { // Entry 363
+    -0x1.000001ffffffff55555155554d568883p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 364
+    0x1.fffffdffffffffaaaaabaaaaa9aad111p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 365
+    -0x1.fffffdffffffffaaaaabaaaaa9aad111p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 366
+    0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    0x1.p-28
+  },
+  { // Entry 367
+    -0x1.ffffffffffffffaaaaaaaaaaaaaad111p-29,
+    -0x1.p-28
+  },
+  { // Entry 368
+    0x1.000001ffffffffd55554555553556887p-28,
+    0x1.000002p-28
+  },
+  { // Entry 369
+    -0x1.000001ffffffffd55554555553556887p-28,
+    -0x1.000002p-28
+  },
+  { // Entry 370
+    0x1.fffffdfffffffffaaaaabaaaaa9aaad1p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 371
+    -0x1.fffffdfffffffffaaaaabaaaaa9aaad1p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 372
+    0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    0x1.p-30
+  },
+  { // Entry 373
+    -0x1.fffffffffffffffaaaaaaaaaaaaaaad1p-31,
+    -0x1.p-30
+  },
+  { // Entry 374
+    0x1.000001fffffffffd5555455555355568p-30,
+    0x1.000002p-30
+  },
+  { // Entry 375
+    -0x1.000001fffffffffd5555455555355568p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 376
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 377
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 378
+    0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    0x1.fffffep127
+  },
+  { // Entry 379
+    -0x1.65a9f84b82e62f3e42eda0a911a063e3p6,
+    -0x1.fffffep127
+  },
+  { // Entry 380
+    0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    0x1.fffffcp127
+  },
+  { // Entry 381
+    -0x1.65a9f84782e6293e42e44b53ad4b0e74p6,
+    -0x1.fffffcp127
+  },
+  { // Entry 382
+    0x1.dcbf6a62e35477f9ae79be71ed97620bp0,
+    0x1.921fb6p1
+  },
+  { // Entry 383
+    -0x1.dcbf6a62e35477f9ae79be71ed97620bp0,
+    -0x1.921fb6p1
+  },
+  { // Entry 384
+    0x1.3bc04ee951032b4f7509b3b2e0f0715ap0,
+    0x1.921fb6p0
+  },
+  { // Entry 385
+    -0x1.3bc04ee951032b4f7509b3b2e0f0715ap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 386
+    0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    0x1.000002p0
+  },
+  { // Entry 387
+    -0x1.c34368ebb10dd29f459608bca43f91c8p-1,
+    -0x1.000002p0
+  },
+  { // Entry 388
+    0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    0x1.p0
+  },
+  { // Entry 389
+    -0x1.c34366179d426cc1b1f33d1ba4a314a7p-1,
+    -0x1.p0
+  },
+  { // Entry 390
+    0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    0x1.fffffep-1
+  },
+  { // Entry 391
+    -0x1.c34364ad935baa4b7b8121ba8df62b6cp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 392
+    0x1.71447831e43cde2ed30650428c5a8410p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 393
+    -0x1.71447831e43cde2ed30650428c5a8410p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 394
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 395
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 396
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 397
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 398
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 399
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 400
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 401
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 402
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 403
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 404
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 405
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 406
+    0.0,
+    0.0f
+  },
+  { // Entry 407
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/atan2_intel_data.h b/tests/math_data/atan2_intel_data.h
new file mode 100644
index 0000000..5d9eb44
--- /dev/null
+++ b/tests/math_data/atan2_intel_data.h
@@ -0,0 +1,5348 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_atan2_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffffff20000000000061fffd55p-60,
+    -0x1.0p-100,
+    0x1.0000000000007p-41
+  },
+  { // Entry 1
+    0x1.ffffffffffff20000000000061fffd55p-60,
+    0x1.0p-100,
+    0x1.0000000000007p-41
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.0p-1073,
+    0x1.0000000000001p1
+  },
+  { // Entry 3
+    0.0,
+    0x1.0p-1073,
+    0x1.0000000000001p1
+  },
+  { // Entry 4
+    -0x1.cd648010e76317fd25f197c89894a747p-1,
+    -0x1.0p10,
+    0x1.955555555555ep9
+  },
+  { // Entry 5
+    0x1.cd648010e76317fd25f197c89894a747p-1,
+    0x1.0p10,
+    0x1.955555555555ep9
+  },
+  { // Entry 6
+    -0x1.0000000000000800000000000040p-924,
+    -0x1.0p100,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 7
+    0x1.0000000000000800000000000040p-924,
+    0x1.0p100,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 8
+    -0x1.0945ca475762680110c86c82f4007bdap1,
+    -0x1.0000000000001p0,
+    -0x1.18cd584e6112bp-1
+  },
+  { // Entry 9
+    0x1.0945ca475762680110c86c82f4007bdap1,
+    0x1.0000000000001p0,
+    -0x1.18cd584e6112bp-1
+  },
+  { // Entry 10
+    -0x1.f9ca0e1dd954324b96732f0ae9c1c8ffp-3,
+    -0x1.0222222222222p0,
+    0x1.ffeffffffffffp1
+  },
+  { // Entry 11
+    0x1.f9ca0e1dd954324b96732f0ae9c1c8ffp-3,
+    0x1.0222222222222p0,
+    0x1.ffeffffffffffp1
+  },
+  { // Entry 12
+    -0x1.fff9653e6201f888937cfc2d716b4d44p-2,
+    -0x1.14171f06bfb89p-2,
+    0x1.f96902dccd29ap-2
+  },
+  { // Entry 13
+    0x1.fff9653e6201f888937cfc2d716b4d44p-2,
+    0x1.14171f06bfb89p-2,
+    0x1.f96902dccd29ap-2
+  },
+  { // Entry 14
+    -0x1.ff572aded0be932feeb4707dcb65336dp0,
+    -0x1.1999999999998p-2,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 15
+    0x1.ff572aded0be932feeb4707dcb65336dp0,
+    0x1.1999999999998p-2,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 16
+    -0x1.ff542758ef05b8e7de0d70e2d341ed67p0,
+    -0x1.1999999999999p-1,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 17
+    0x1.ff542758ef05b8e7de0d70e2d341ed67p0,
+    0x1.1999999999999p-1,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 18
+    -0x1.2fffffffffffffffffffffffffffffffp-1071,
+    -0x1.3p-1070,
+    0x1.0p1
+  },
+  { // Entry 19
+    0x1.2fffffffffffffffffffffffffffffffp-1071,
+    0x1.3p-1070,
+    0x1.0p1
+  },
+  { // Entry 20
+    -0x1.85539729ef1727fed15784b60b91b2ecp-1,
+    -0x1.3cf3cf3cf3cf4p9,
+    0x1.4d34d34d34d34p9
+  },
+  { // Entry 21
+    0x1.85539729ef1727fed15784b60b91b2ecp-1,
+    0x1.3cf3cf3cf3cf4p9,
+    0x1.4d34d34d34d34p9
+  },
+  { // Entry 22
+    -0x1.40000000000008000000000000fffd65p-59,
+    -0x1.3fffffffffffep42,
+    0x1.ffffffffffffcp100
+  },
+  { // Entry 23
+    0x1.40000000000008000000000000fffd65p-59,
+    0x1.3fffffffffffep42,
+    0x1.ffffffffffffcp100
+  },
+  { // Entry 24
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.4p-1072,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 25
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.4p-1072,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 26
+    -0x1.3fffffffffffffffffffffffffffffffp-1073,
+    -0x1.4p-1072,
+    0x1.0p1
+  },
+  { // Entry 27
+    0x1.3fffffffffffffffffffffffffffffffp-1073,
+    0x1.4p-1072,
+    0x1.0p1
+  },
+  { // Entry 28
+    -0x1.5ffe7c27a5cf37fef15668ed8bfdc92cp-1,
+    -0x1.6477c84a032cep-1,
+    0x1.b21f69ae030b0p-1
+  },
+  { // Entry 29
+    0x1.5ffe7c27a5cf37fef15668ed8bfdc92cp-1,
+    0x1.6477c84a032cep-1,
+    0x1.b21f69ae030b0p-1
+  },
+  { // Entry 30
+    -0x1.66719908f7c3b796d84184977c923894p-12,
+    -0x1.6666666665b64p-1,
+    0x1.ffeffffffffffp10
+  },
+  { // Entry 31
+    0x1.66719908f7c3b796d84184977c923894p-12,
+    0x1.6666666665b64p-1,
+    0x1.ffeffffffffffp10
+  },
+  { // Entry 32
+    -0x1.667199f33acd08010011a82e9838500dp-52,
+    -0x1.6666666666668p-1,
+    0x1.ffeffffff924fp50
+  },
+  { // Entry 33
+    0x1.667199f33acd08010011a82e9838500dp-52,
+    0x1.6666666666668p-1,
+    0x1.ffeffffff924fp50
+  },
+  { // Entry 34
+    -0x1.48ef86a5d674e7fe626345caa6dea1adp0,
+    -0x1.6e589292a58a8p3,
+    0x1.aebd9564499f0p1
+  },
+  { // Entry 35
+    0x1.48ef86a5d674e7fe626345caa6dea1adp0,
+    0x1.6e589292a58a8p3,
+    0x1.aebd9564499f0p1
+  },
+  { // Entry 36
+    -0x1.69412651b663880102057ffe2b6916e7p-2,
+    -0x1.7906fe92593dcp-2,
+    0x1.0p0
+  },
+  { // Entry 37
+    0x1.69412651b663880102057ffe2b6916e7p-2,
+    0x1.7906fe92593dcp-2,
+    0x1.0p0
+  },
+  { // Entry 38
+    -0x1.7fffffffffff97ffb800000013803a80p-33,
+    -0x1.7fffffffffffep0,
+    0x1.0000000000003p33
+  },
+  { // Entry 39
+    0x1.7fffffffffff97ffb800000013803a80p-33,
+    0x1.7fffffffffffep0,
+    0x1.0000000000003p33
+  },
+  { // Entry 40
+    -0x1.7fffffffee0020000184c84cd0a5bfb7p-18,
+    -0x1.7ffffffffffffp0,
+    0x1.ffffffffffffcp17
+  },
+  { // Entry 41
+    0x1.7fffffffee0020000184c84cd0a5bfb7p-18,
+    0x1.7ffffffffffffp0,
+    0x1.ffffffffffffcp17
+  },
+  { // Entry 42
+    -0x1.01b7ead625912801099d55f3bb6d9b74p0,
+    -0x1.8e38e38e38e39p9,
+    0x1.f7df7df7df7dep8
+  },
+  { // Entry 43
+    0x1.01b7ead625912801099d55f3bb6d9b74p0,
+    0x1.8e38e38e38e39p9,
+    0x1.f7df7df7df7dep8
+  },
+  { // Entry 44
+    -0x1.119e0f7084d96bc18bbf2e7a08cfe5adp1,
+    -0x1.9249249249246p-2,
+    -0x1.001p-2
+  },
+  { // Entry 45
+    0x1.119e0f7084d96bc18bbf2e7a08cfe5adp1,
+    0x1.9249249249246p-2,
+    -0x1.001p-2
+  },
+  { // Entry 46
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.99999999999a8p-4,
+    0x1.0p-1074
+  },
+  { // Entry 47
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.99999999999a8p-4,
+    0x1.0p-1074
+  },
+  { // Entry 48
+    -0x1.37626c23803aec7d7a70f700585852f4p-1,
+    -0x1.a77569dd5a776p8,
+    0x1.301ecc07b301ep9
+  },
+  { // Entry 49
+    0x1.37626c23803aec7d7a70f700585852f4p-1,
+    0x1.a77569dd5a776p8,
+    0x1.301ecc07b301ep9
+  },
+  { // Entry 50
+    -0x1.0ca7cc2d0d7fd03164ee3af269e6bf79p1,
+    -0x1.b6db6db6db6e0p-1,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 51
+    0x1.0ca7cc2d0d7fd03164ee3af269e6bf79p1,
+    0x1.b6db6db6db6e0p-1,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 52
+    -0x1.a271f63e34fb2fff42b98e7a5ab17eafp-2,
+    -0x1.bb67ae8584c96p-1,
+    0x1.0000000000008p1
+  },
+  { // Entry 53
+    0x1.a271f63e34fb2fff42b98e7a5ab17eafp-2,
+    0x1.bb67ae8584c96p-1,
+    0x1.0000000000008p1
+  },
+  { // Entry 54
+    -0x1.f0845de317dae782ac3e8a7eb1fadd63p-2,
+    -0x1.bed61bed61be4p7,
+    0x1.a814afd6a053bp8
+  },
+  { // Entry 55
+    0x1.f0845de317dae782ac3e8a7eb1fadd63p-2,
+    0x1.bed61bed61be4p7,
+    0x1.a814afd6a053bp8
+  },
+  { // Entry 56
+    -0x1.3a51f5f0cb5d33de07ac24a32621878dp-1,
+    -0x1.c18f9c18f9c3ep7,
+    0x1.3ef368eb04334p8
+  },
+  { // Entry 57
+    0x1.3a51f5f0cb5d33de07ac24a32621878dp-1,
+    0x1.c18f9c18f9c3ep7,
+    0x1.3ef368eb04334p8
+  },
+  { // Entry 58
+    -0x1.fcb510cd5b6bbb8cde13f46dbeeb3110p-3,
+    -0x1.d26a2bad98d68p-2,
+    0x1.cbbd407a7a5b0p0
+  },
+  { // Entry 59
+    0x1.fcb510cd5b6bbb8cde13f46dbeeb3110p-3,
+    0x1.d26a2bad98d68p-2,
+    0x1.cbbd407a7a5b0p0
+  },
+  { // Entry 60
+    -0x1.cd5de97a2e3e1859fc3e2517de7a0880p-3,
+    -0x1.d555555555555p0,
+    0x1.0000000000003p3
+  },
+  { // Entry 61
+    0x1.cd5de97a2e3e1859fc3e2517de7a0880p-3,
+    0x1.d555555555555p0,
+    0x1.0000000000003p3
+  },
+  { // Entry 62
+    -0x1.337d175e088fb7fa32fafca382768a15p-3,
+    -0x1.db8a874640569p-3,
+    0x1.88eed10e75135p0
+  },
+  { // Entry 63
+    0x1.337d175e088fb7fa32fafca382768a15p-3,
+    0x1.db8a874640569p-3,
+    0x1.88eed10e75135p0
+  },
+  { // Entry 64
+    -0x1.f9d28f3da09c8864390cd924ac658d33p0,
+    -0x1.ddddddddddde0p-2,
+    -0x1.99ce075f6fd27p-3
+  },
+  { // Entry 65
+    0x1.f9d28f3da09c8864390cd924ac658d33p0,
+    0x1.ddddddddddde0p-2,
+    -0x1.99ce075f6fd27p-3
+  },
+  { // Entry 66
+    -0x1.ae127b4fb5a7e81cc14c8d0627d18c73p-8,
+    -0x1.eccd7fdf96454p10,
+    0x1.255608e135d80p18
+  },
+  { // Entry 67
+    0x1.ae127b4fb5a7e81cc14c8d0627d18c73p-8,
+    0x1.eccd7fdf96454p10,
+    0x1.255608e135d80p18
+  },
+  { // Entry 68
+    -0x1.09121b4b0fb15403f902f2d06a8f1034p1,
+    -0x1.f5a814afd6a05p9,
+    -0x1.1219dbcc48673p9
+  },
+  { // Entry 69
+    0x1.09121b4b0fb15403f902f2d06a8f1034p1,
+    0x1.f5a814afd6a05p9,
+    -0x1.1219dbcc48673p9
+  },
+  { // Entry 70
+    -0x1.ffd55bba97625a80f03aaeebb3192417p-6,
+    -0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp4
+  },
+  { // Entry 71
+    0x1.ffd55bba97625a80f03aaeebb3192417p-6,
+    0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp4
+  },
+  { // Entry 72
+    0x1.ffffffffffffe0000000000001fffffdp-64,
+    0x1.0p-53,
+    0x1.0000000000001p10
+  },
+  { // Entry 73
+    -0x1.ffffffffffffe0000000000001fffffdp-64,
+    -0x1.0p-53,
+    0x1.0000000000001p10
+  },
+  { // Entry 74
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 75
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 76
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.99999999999a8p-4
+  },
+  { // Entry 77
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.99999999999a8p-4
+  },
+  { // Entry 78
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 80
+    0x1.ffffffffffffe0000000000001ffffffp-1074,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0000000000001ffffffp-1074,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 82
+    0.0,
+    0x1.0p-1074,
+    0x1.0222222222223p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0222222222223p0
+  },
+  { // Entry 84
+    0.0,
+    0x1.0p-1074,
+    0x1.03126e978d4fep0
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.0p-1074,
+    0x1.03126e978d4fep0
+  },
+  { // Entry 86
+    0.0,
+    0x1.0p-1074,
+    0x1.0a3d70a3d70a3p0
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0a3d70a3d70a3p0
+  },
+  { // Entry 88
+    0x1.0b833be165ccd3f3660d385792d30b1fp1,
+    0x1.0000000000001p-2,
+    -0x1.24924924924aap-3
+  },
+  { // Entry 89
+    -0x1.0b833be165ccd3f3660d385792d30b1fp1,
+    -0x1.0000000000001p-2,
+    -0x1.24924924924aap-3
+  },
+  { // Entry 90
+    0x1.5522d16b2f5a7d52fbf6dd4ea12734c4p-5,
+    0x1.0000000000001p-4,
+    0x1.8000000000001p0
+  },
+  { // Entry 91
+    -0x1.5522d16b2f5a7d52fbf6dd4ea12734c4p-5,
+    -0x1.0000000000001p-4,
+    0x1.8000000000001p0
+  },
+  { // Entry 92
+    0x1.7ffffffedfffe80184cd02ca5ef0e59ap-16,
+    0x1.0000000000001p-17,
+    0x1.5555555555558p-2
+  },
+  { // Entry 93
+    -0x1.7ffffffedfffe80184cd02ca5ef0e59ap-16,
+    -0x1.0000000000001p-17,
+    0x1.5555555555558p-2
+  },
+  { // Entry 94
+    0x1.00000000000017ffaaaaaaaaab6a92aap-32,
+    0x1.0000000000001p-31,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 95
+    -0x1.00000000000017ffaaaaaaaaab6a92aap-32,
+    -0x1.0000000000001p-31,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 96
+    0x1.00000000000027ffffffaaaaae6aaaaap-40,
+    0x1.0000000000001p-41,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 97
+    -0x1.00000000000027ffffffaaaaae6aaaaap-40,
+    -0x1.0000000000001p-41,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 98
+    0x1.000000000000680000000000103faaaap-56,
+    0x1.0000000000004p1,
+    0x1.ffffffffffffbp56
+  },
+  { // Entry 99
+    -0x1.000000000000680000000000103faaaap-56,
+    -0x1.0000000000004p1,
+    0x1.ffffffffffffbp56
+  },
+  { // Entry 100
+    0x1.fd5ba9aac2f7c8b4561b80036f0e165cp-4,
+    0x1.0000000000007p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 101
+    -0x1.fd5ba9aac2f7c8b4561b80036f0e165cp-4,
+    -0x1.0000000000007p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 102
+    0x1.ff55bb72cfe2e821e203716e1d97a257p-5,
+    0x1.000000000001cp-3,
+    0x1.ffffffffffff3p0
+  },
+  { // Entry 103
+    -0x1.ff55bb72cfe2e821e203716e1d97a257p-5,
+    -0x1.000000000001cp-3,
+    0x1.ffffffffffff3p0
+  },
+  { // Entry 104
+    0x1.38e36745aef6d7ab02058b0c0c876fc8p-9,
+    0x1.00000000004d6p-8,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 105
+    -0x1.38e36745aef6d7ab02058b0c0c876fc8p-9,
+    -0x1.00000000004d6p-8,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 106
+    0x1.3ff4325a8437500000286dff86bc02adp-1,
+    0x1.00000009f0205p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 107
+    -0x1.3ff4325a8437500000286dff86bc02adp-1,
+    -0x1.00000009f0205p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 108
+    0x1.b4f5f236308b48037fe229608c1d81fbp-2,
+    0x1.001p-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 109
+    -0x1.b4f5f236308b48037fe229608c1d81fbp-2,
+    -0x1.001p-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 110
+    0x1.9242e6442d4317ff2531ceafca8af0f4p0,
+    0x1.001p10,
+    -0x1.1999999999999p-1
+  },
+  { // Entry 111
+    -0x1.9242e6442d4317ff2531ceafca8af0f4p0,
+    -0x1.001p10,
+    -0x1.1999999999999p-1
+  },
+  { // Entry 112
+    0x1.046862a40cbe6ab9070021df9e1e411bp1,
+    0x1.0175fcd4ab261p1,
+    -0x1.01749ca942943p0
+  },
+  { // Entry 113
+    -0x1.046862a40cbe6ab9070021df9e1e411bp1,
+    -0x1.0175fcd4ab261p1,
+    -0x1.01749ca942943p0
+  },
+  { // Entry 114
+    0x1.9b2bb7e10b2677febb378df81a94d587p-1,
+    0x1.066b3f39ae7a1p0,
+    0x1.fa9c4b9f46842p-1
+  },
+  { // Entry 115
+    -0x1.9b2bb7e10b2677febb378df81a94d587p-1,
+    -0x1.066b3f39ae7a1p0,
+    0x1.fa9c4b9f46842p-1
+  },
+  { // Entry 116
+    0x1.e897850a716e4889a143afe6cdae77d1p-2,
+    0x1.08b1d3b97c955p-2,
+    0x1.0p-1
+  },
+  { // Entry 117
+    -0x1.e897850a716e4889a143afe6cdae77d1p-2,
+    -0x1.08b1d3b97c955p-2,
+    0x1.0p-1
+  },
+  { // Entry 118
+    0x1.13e7bb06113d680135e98e8c2e9c9628p-92,
+    0x1.09d89d89d89d8p9,
+    0x1.ed55555555573p100
+  },
+  { // Entry 119
+    -0x1.13e7bb06113d680135e98e8c2e9c9628p-92,
+    -0x1.09d89d89d89d8p9,
+    0x1.ed55555555573p100
+  },
+  { // Entry 120
+    0x1.ff572aded0be7136f236315e3c9eccb7p0,
+    0x1.199999999999cp-1,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 121
+    -0x1.ff572aded0be7136f236315e3c9eccb7p0,
+    -0x1.199999999999cp-1,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 122
+    0x1.196ba6878b92680ebe4a5666ff18a384p-5,
+    0x1.199999999999cp-2,
+    0x1.001p3
+  },
+  { // Entry 123
+    -0x1.196ba6878b92680ebe4a5666ff18a384p-5,
+    -0x1.199999999999cp-2,
+    0x1.001p3
+  },
+  { // Entry 124
+    0x1.1b4a29a02a9c87fffdb48e539399967ap-3,
+    0x1.1adec7d06a010p-2,
+    0x1.fbfa204c8234cp0
+  },
+  { // Entry 125
+    -0x1.1b4a29a02a9c87fffdb48e539399967ap-3,
+    -0x1.1adec7d06a010p-2,
+    0x1.fbfa204c8234cp0
+  },
+  { // Entry 126
+    0x1.19dcd054169247fffd4cc05900e64848p-2,
+    0x1.213422ec61f53p-3,
+    0x1.0p-1
+  },
+  { // Entry 127
+    -0x1.19dcd054169247fffd4cc05900e64848p-2,
+    -0x1.213422ec61f53p-3,
+    0x1.0p-1
+  },
+  { // Entry 128
+    0x1.b3b95bdcb30277fec23bb4be90b63531p-1,
+    0x1.2776fe2145bd5p0,
+    0x1.0306216790738p0
+  },
+  { // Entry 129
+    -0x1.b3b95bdcb30277fec23bb4be90b63531p-1,
+    -0x1.2776fe2145bd5p0,
+    0x1.0306216790738p0
+  },
+  { // Entry 130
+    0x1.ee0c54984cb15edcdcb239dbfffd57dep-4,
+    0x1.27fb7de0e57c8p12,
+    0x1.313f9061390p15
+  },
+  { // Entry 131
+    -0x1.ee0c54984cb15edcdcb239dbfffd57dep-4,
+    -0x1.27fb7de0e57c8p12,
+    0x1.313f9061390p15
+  },
+  { // Entry 132
+    0x1.27ff4834766d779860765d14b68788cep-8,
+    0x1.27fb7de0e57c8p12,
+    0x1.fff88d6e2d934p19
+  },
+  { // Entry 133
+    -0x1.27ff4834766d779860765d14b68788cep-8,
+    -0x1.27fb7de0e57c8p12,
+    0x1.fff88d6e2d934p19
+  },
+  { // Entry 134
+    0x1.f9c6b238c6435777790ced0df81049e2p0,
+    0x1.2aaaaaaaaaaabp0,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 135
+    -0x1.f9c6b238c6435777790ced0df81049e2p0,
+    -0x1.2aaaaaaaaaaabp0,
+    -0x1.0000000000003p-1
+  },
+  { // Entry 136
+    0x1.2aaaaaaaaaaa77ff787e6b74f9b2d658p-32,
+    0x1.2aaaaaaaaaaabp0,
+    0x1.0000000000003p32
+  },
+  { // Entry 137
+    -0x1.2aaaaaaaaaaa77ff787e6b74f9b2d658p-32,
+    -0x1.2aaaaaaaaaaabp0,
+    0x1.0000000000003p32
+  },
+  { // Entry 138
+    0x1.edae91ebbfb8780006f7e9144583c7b3p0,
+    0x1.2d66ca857bf9ap0,
+    -0x1.c28f5c28f5c28p-2
+  },
+  { // Entry 139
+    -0x1.edae91ebbfb8780006f7e9144583c7b3p0,
+    -0x1.2d66ca857bf9ap0,
+    -0x1.c28f5c28f5c28p-2
+  },
+  { // Entry 140
+    0x1.9d5a77d67cf1d7febab338e68f258f5ap-1,
+    0x1.2e12530a85951p2,
+    0x1.211a7b9611a7bp2
+  },
+  { // Entry 141
+    -0x1.9d5a77d67cf1d7febab338e68f258f5ap-1,
+    -0x1.2e12530a85951p2,
+    0x1.211a7b9611a7bp2
+  },
+  { // Entry 142
+    0x1.a244e21ebefa8fffffbfabeaba9e67acp-2,
+    0x1.3333333d813abp-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 143
+    -0x1.a244e21ebefa8fffffbfabeaba9e67acp-2,
+    -0x1.3333333d813abp-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 144
+    0x1.90a08b292067f00094284270c3b75547p-4,
+    0x1.3deb308a9c960p-4,
+    0x1.9500a27c6a82ep-1
+  },
+  { // Entry 145
+    -0x1.90a08b292067f00094284270c3b75547p-4,
+    -0x1.3deb308a9c960p-4,
+    0x1.9500a27c6a82ep-1
+  },
+  { // Entry 146
+    0x1.a896592d6fdb57b63fa6ed728b91fe47p-5,
+    0x1.420bc59c42c7cp2,
+    0x1.83fffffffffffp6
+  },
+  { // Entry 147
+    -0x1.a896592d6fdb57b63fa6ed728b91fe47p-5,
+    -0x1.420bc59c42c7cp2,
+    0x1.83fffffffffffp6
+  },
+  { // Entry 148
+    0x1.25e3010ff1ed37fe769fa76dea43608cp1,
+    0x1.494b48acbe5b0p-9,
+    -0x1.23da61f087530p-9
+  },
+  { // Entry 149
+    -0x1.25e3010ff1ed37fe769fa76dea43608cp1,
+    -0x1.494b48acbe5b0p-9,
+    -0x1.23da61f087530p-9
+  },
+  { // Entry 150
+    0x1.6d0d1984633eb80e098b6dc91f083a06p-3,
+    0x1.51ff85f2ba468p0,
+    0x1.d50692986b95dp2
+  },
+  { // Entry 151
+    -0x1.6d0d1984633eb80e098b6dc91f083a06p-3,
+    -0x1.51ff85f2ba468p0,
+    0x1.d50692986b95dp2
+  },
+  { // Entry 152
+    0x1.ccadda48d08027ff92d1bd814812ce8cp-1,
+    0x1.5412e00233d75p-1,
+    0x1.0dff2d1714940p-1
+  },
+  { // Entry 153
+    -0x1.ccadda48d08027ff92d1bd814812ce8cp-1,
+    -0x1.5412e00233d75p-1,
+    0x1.0dff2d1714940p-1
+  },
+  { // Entry 154
+    0x1.3f2496d84ac34801117f6f830c0fb201p-90,
+    0x1.5555555554c2ep8,
+    0x1.11ccccccccccdp98
+  },
+  { // Entry 155
+    -0x1.3f2496d84ac34801117f6f830c0fb201p-90,
+    -0x1.5555555554c2ep8,
+    0x1.11ccccccccccdp98
+  },
+  { // Entry 156
+    0x1.555555555555aaaaaaaaaaaab5555555p-1021,
+    0x1.5555555555558p-2,
+    0x1.ffffffffffffcp1018
+  },
+  { // Entry 157
+    -0x1.555555555555aaaaaaaaaaaab5555555p-1021,
+    -0x1.5555555555558p-2,
+    0x1.ffffffffffffcp1018
+  },
+  { // Entry 158
+    0x1.88134cb8d04e88985007b92a62b1fd1ap-8,
+    0x1.5711ef5ee1eecp-5,
+    0x1.c000000000302p2
+  },
+  { // Entry 159
+    -0x1.88134cb8d04e88985007b92a62b1fd1ap-8,
+    -0x1.5711ef5ee1eecp-5,
+    0x1.c000000000302p2
+  },
+  { // Entry 160
+    0x1.94a470782907f800006a4822bc94bc23p-1,
+    0x1.666666688d411p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 161
+    -0x1.94a470782907f800006a4822bc94bc23p-1,
+    -0x1.666666688d411p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 162
+    0x1.d7d7b672ee30c85d01819b25305f3230p-10,
+    0x1.6c9b26c9b26cap0,
+    0x1.8ba2e8ba2e8cap9
+  },
+  { // Entry 163
+    -0x1.d7d7b672ee30c85d01819b25305f3230p-10,
+    -0x1.6c9b26c9b26cap0,
+    0x1.8ba2e8ba2e8cap9
+  },
+  { // Entry 164
+    0x1.7fffffffee0030000184c60cd2a5c008p-18,
+    0x1.8p-53,
+    0x1.ffffffffffffcp-36
+  },
+  { // Entry 165
+    -0x1.7fffffffee0030000184c60cd2a5c008p-18,
+    -0x1.8p-53,
+    0x1.ffffffffffffcp-36
+  },
+  { // Entry 166
+    0x1.e7c8952cb26158012b54b9a61c08f431p-2,
+    0x1.8c46231188cp0,
+    0x1.8p1
+  },
+  { // Entry 167
+    -0x1.e7c8952cb26158012b54b9a61c08f431p-2,
+    -0x1.8c46231188cp0,
+    0x1.8p1
+  },
+  { // Entry 168
+    0x1.2b854f022de7a93cb621cb2462f86074p0,
+    0x1.8d79435e50d71p2,
+    0x1.50d79435e50d9p1
+  },
+  { // Entry 169
+    -0x1.2b854f022de7a93cb621cb2462f86074p0,
+    -0x1.8d79435e50d71p2,
+    0x1.50d79435e50d9p1
+  },
+  { // Entry 170
+    0x1.42a76a164c39c800e4405027c490bdfbp-1,
+    0x1.8dd3d2235ad60p-1,
+    0x1.10b5d1e78459cp0
+  },
+  { // Entry 171
+    -0x1.42a76a164c39c800e4405027c490bdfbp-1,
+    -0x1.8dd3d2235ad60p-1,
+    0x1.10b5d1e78459cp0
+  },
+  { // Entry 172
+    0x1.e3240e993ab957f9d76dde4a50896826p-3,
+    0x1.9p0,
+    0x1.9fffffffffffbp2
+  },
+  { // Entry 173
+    -0x1.e3240e993ab957f9d76dde4a50896826p-3,
+    -0x1.9p0,
+    0x1.9fffffffffffbp2
+  },
+  { // Entry 174
+    0x1.a335efd4da90a804f7a6dad4434f5ba0p-2,
+    0x1.920d799fda713p-3,
+    0x1.cf4cdc48f3536p-2
+  },
+  { // Entry 175
+    -0x1.a335efd4da90a804f7a6dad4434f5ba0p-2,
+    -0x1.920d799fda713p-3,
+    0x1.cf4cdc48f3536p-2
+  },
+  { // Entry 176
+    0x1.ed87f9c729d17ffe9d2f47e2fe9ecb40p-1,
+    0x1.95fad40a57ec6p9,
+    0x1.19dbcc48676f6p9
+  },
+  { // Entry 177
+    -0x1.ed87f9c729d17ffe9d2f47e2fe9ecb40p-1,
+    -0x1.95fad40a57ec6p9,
+    0x1.19dbcc48676f6p9
+  },
+  { // Entry 178
+    0x1.0bfa5f3f099e68000068d82232dc4cc7p-1,
+    0x1.9999999e37c24p-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 179
+    -0x1.0bfa5f3f099e68000068d82232dc4cc7p-1,
+    -0x1.9999999e37c24p-2,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 180
+    0x1.1fa6ac30d066d800006a5c239e5188f2p-2,
+    0x1.999999bb09140p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 181
+    -0x1.1fa6ac30d066d800006a5c239e5188f2p-2,
+    -0x1.999999bb09140p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 182
+    0x1.2570742fa4989fffff9e946c986117d9p-3,
+    0x1.999999c2f3b55p-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 183
+    -0x1.2570742fa4989fffff9e946c986117d9p-3,
+    -0x1.999999c2f3b55p-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 184
+    0x1.257074378653a7ffffffb78db995aafcp-3,
+    0x1.999999ce1b18ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 185
+    -0x1.257074378653a7ffffffb78db995aafcp-3,
+    -0x1.999999ce1b18ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 186
+    0x1.25707437a1476000006169ddb5dabdd7p-3,
+    0x1.999999ce413ccp-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 187
+    -0x1.25707437a1476000006169ddb5dabdd7p-3,
+    -0x1.999999ce413ccp-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 188
+    0x1.b6a03b0f1ff0d7fd08e9f5846ec5a75bp-1,
+    0x1.9c5c97530cc21p0,
+    0x1.6563fa1d6f518p0
+  },
+  { // Entry 189
+    -0x1.b6a03b0f1ff0d7fd08e9f5846ec5a75bp-1,
+    -0x1.9c5c97530cc21p0,
+    0x1.6563fa1d6f518p0
+  },
+  { // Entry 190
+    0x1.b80aa068167f97558972ecfed6777774p-19,
+    0x1.9f5aeae03799dp-18,
+    0x1.e346d9b2ad73ep0
+  },
+  { // Entry 191
+    -0x1.b80aa068167f97558972ecfed6777774p-19,
+    -0x1.9f5aeae03799dp-18,
+    0x1.e346d9b2ad73ep0
+  },
+  { // Entry 192
+    0x1.e5ef7b22c83b27ad34bbfda6c2383d23p-2,
+    0x1.a4d269349b66cp-3,
+    0x1.999999999999ap-2
+  },
+  { // Entry 193
+    -0x1.e5ef7b22c83b27ad34bbfda6c2383d23p-2,
+    -0x1.a4d269349b66cp-3,
+    0x1.999999999999ap-2
+  },
+  { // Entry 194
+    0x1.5e82cb51676728011e1c6ba75f3339a7p-91,
+    0x1.ad5aa6ff6335ep9,
+    0x1.3995880de757ap100
+  },
+  { // Entry 195
+    -0x1.5e82cb51676728011e1c6ba75f3339a7p-91,
+    -0x1.ad5aa6ff6335ep9,
+    0x1.3995880de757ap100
+  },
+  { // Entry 196
+    0x1.95ac93504f319fefb1b5148792dab412p-1,
+    0x1.b1427cd988b8cp-2,
+    0x1.ab4adeaf1a3eap-2
+  },
+  { // Entry 197
+    -0x1.95ac93504f319fefb1b5148792dab412p-1,
+    -0x1.b1427cd988b8cp-2,
+    0x1.ab4adeaf1a3eap-2
+  },
+  { // Entry 198
+    0x1.921fd1f09f928801088a93fc7dbba1cap0,
+    0x1.bbd49acc58d98p10,
+    -0x1.8db0a4ab22e7ep-9
+  },
+  { // Entry 199
+    -0x1.921fd1f09f928801088a93fc7dbba1cap0,
+    -0x1.bbd49acc58d98p10,
+    -0x1.8db0a4ab22e7ep-9
+  },
+  { // Entry 200
+    0x1.43e54975fb8bc8012953e9ef023f67b3p-100,
+    0x1.c37dac37dac3cp0,
+    0x1.64d9364d93659p100
+  },
+  { // Entry 201
+    -0x1.43e54975fb8bc8012953e9ef023f67b3p-100,
+    -0x1.c37dac37dac3cp0,
+    0x1.64d9364d93659p100
+  },
+  { // Entry 202
+    0x1.ab78c13521cfc80117f7fae57836356ep-98,
+    0x1.c9b26c9b26ca0p2,
+    0x1.1219dbcc48679p100
+  },
+  { // Entry 203
+    -0x1.ab78c13521cfc80117f7fae57836356ep-98,
+    -0x1.c9b26c9b26ca0p2,
+    0x1.1219dbcc48679p100
+  },
+  { // Entry 204
+    0x1.77e467d5ff6337f84f880eb86f426f87p-1,
+    0x1.ce0d5078ae3d0p0,
+    0x1.0p1
+  },
+  { // Entry 205
+    -0x1.77e467d5ff6337f84f880eb86f426f87p-1,
+    -0x1.ce0d5078ae3d0p0,
+    0x1.0p1
+  },
+  { // Entry 206
+    0x1.7ccd882d8fdbe8010d0be61f023186a5p-1,
+    0x1.dbcc48676f32ap7,
+    0x1.0295fad40a58bp8
+  },
+  { // Entry 207
+    -0x1.7ccd882d8fdbe8010d0be61f023186a5p-1,
+    -0x1.dbcc48676f32ap7,
+    0x1.0295fad40a58bp8
+  },
+  { // Entry 208
+    0x1.2d3a87e24eb319156ef615caa7abe128p0,
+    0x1.e052bf5a814b6p2,
+    0x1.8f83e0f83e0f1p1
+  },
+  { // Entry 209
+    -0x1.2d3a87e24eb319156ef615caa7abe128p0,
+    -0x1.e052bf5a814b6p2,
+    0x1.8f83e0f83e0f1p1
+  },
+  { // Entry 210
+    0x1.eb0df42c36a5f7fe1df8c86bed0a28a0p-1,
+    0x1.e0547e40e4cc8p-2,
+    0x1.50eebc195bb24p-2
+  },
+  { // Entry 211
+    -0x1.eb0df42c36a5f7fe1df8c86bed0a28a0p-1,
+    -0x1.e0547e40e4cc8p-2,
+    0x1.50eebc195bb24p-2
+  },
+  { // Entry 212
+    0x1.c7fe1dbd95349778458697fe195e4a58p-8,
+    0x1.e666666666668p1,
+    0x1.111111111196dp9
+  },
+  { // Entry 213
+    -0x1.c7fe1dbd95349778458697fe195e4a58p-8,
+    -0x1.e666666666668p1,
+    0x1.111111111196dp9
+  },
+  { // Entry 214
+    0x1.38927ede67216800006a39bb49e9c0f4p0,
+    0x1.e666666b987f5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 215
+    -0x1.38927ede67216800006a39bb49e9c0f4p0,
+    -0x1.e666666b987f5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 216
+    0x1.39fed5699428b3b69a7339d36bb044abp-1,
+    0x1.e91ee78afd1e6p-3,
+    0x1.5b7c32b32bde0p-2
+  },
+  { // Entry 217
+    -0x1.39fed5699428b3b69a7339d36bb044abp-1,
+    -0x1.e91ee78afd1e6p-3,
+    0x1.5b7c32b32bde0p-2
+  },
+  { // Entry 218
+    0x1.a127224010cba803945f315e1d0ee4b5p-1,
+    0x1.f166e1dc4499bp2,
+    0x1.d50692986b98fp2
+  },
+  { // Entry 219
+    -0x1.a127224010cba803945f315e1d0ee4b5p-1,
+    -0x1.f166e1dc4499bp2,
+    0x1.d50692986b98fp2
+  },
+  { // Entry 220
+    0x1.f1f32aa6acb70801dd4349d43d3d4c25p-3,
+    0x1.fbfffffffffffp-2,
+    0x1.ffffffffe7fffp0
+  },
+  { // Entry 221
+    -0x1.f1f32aa6acb70801dd4349d43d3d4c25p-3,
+    -0x1.fbfffffffffffp-2,
+    0x1.ffffffffe7fffp0
+  },
+  { // Entry 222
+    0x1.079c41361b6ab8115015e4f32dcfe4b3p1,
+    0x1.ff4b7c848cde6p-1,
+    -0x1.0fd6c7f44f588p-1
+  },
+  { // Entry 223
+    -0x1.079c41361b6ab8115015e4f32dcfe4b3p1,
+    -0x1.ff4b7c848cde6p-1,
+    -0x1.0fd6c7f44f588p-1
+  },
+  { // Entry 224
+    0x1.da4c6912789968011f1b516f595d868ep-2,
+    0x1.ff677ffffffffp-6,
+    0x1.ffffffff19fffp-5
+  },
+  { // Entry 225
+    -0x1.da4c6912789968011f1b516f595d868ep-2,
+    -0x1.ff677ffffffffp-6,
+    0x1.ffffffff19fffp-5
+  },
+  { // Entry 226
+    0x1.fffc80021ffc480225fc1d822a9bc5e0p-58,
+    0x1.fffc7ffffffffp-50,
+    0x1.fffffffddffffp7
+  },
+  { // Entry 227
+    -0x1.fffc80021ffc480225fc1d822a9bc5e0p-58,
+    -0x1.fffc7ffffffffp-50,
+    0x1.fffffffddffffp7
+  },
+  { // Entry 228
+    0x1.66666666666617fffffffffff8b72015p-50,
+    0x1.ffffffffffffcp50,
+    0x1.6db6db6db6db9p100
+  },
+  { // Entry 229
+    -0x1.66666666666617fffffffffff8b72015p-50,
+    -0x1.ffffffffffffcp50,
+    0x1.6db6db6db6db9p100
+  },
+  { // Entry 230
+    0x1.ff55d35ae8e467ce77407069ad013ab5p-5,
+    0x1.ffffffffffffep-3,
+    0x1.ffffe7fffffffp1
+  },
+  { // Entry 231
+    -0x1.ff55d35ae8e467ce77407069ad013ab5p-5,
+    -0x1.ffffffffffffep-3,
+    0x1.ffffe7fffffffp1
+  },
+  { // Entry 232
+    0x1.b4ddd66a37b3b335a2a5b11ceb9a4c56p-2,
+    0x1.ffffffffffffep-4,
+    0x1.199999999999cp-2
+  },
+  { // Entry 233
+    -0x1.b4ddd66a37b3b335a2a5b11ceb9a4c56p-2,
+    -0x1.ffffffffffffep-4,
+    0x1.199999999999cp-2
+  },
+  { // Entry 234
+    0x1.90e6d4253517c8010321aeae887990a9p1,
+    0x1.ffffffffffffep-7,
+    -0x1.a2e8ba2e97a22p0
+  },
+  { // Entry 235
+    -0x1.90e6d4253517c8010321aeae887990a9p1,
+    -0x1.ffffffffffffep-7,
+    -0x1.a2e8ba2e97a22p0
+  },
+  { // Entry 236
+    0x1.b6db6db6db6d281ddaaea5b12cced2a1p-25,
+    0x1.ffffffffffffep-25,
+    0x1.2aaaaaaaaaaabp0
+  },
+  { // Entry 237
+    -0x1.b6db6db6db6d281ddaaea5b12cced2a1p-25,
+    -0x1.ffffffffffffep-25,
+    0x1.2aaaaaaaaaaabp0
+  },
+  { // Entry 238
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.ffffffffffffep-807,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 239
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.ffffffffffffep-807,
+    -0x1.745d1745d173cp-3
+  },
+  { // Entry 240
+    0x1.096d05371b1c54c40f9a06c6cf2db981p1,
+    0x1.ffffffffffffep0,
+    -0x1.199999999999ap0
+  },
+  { // Entry 241
+    -0x1.096d05371b1c54c40f9a06c6cf2db981p1,
+    -0x1.ffffffffffffep0,
+    -0x1.199999999999ap0
+  },
+  { // Entry 242
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.4p-1072
+  },
+  { // Entry 243
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.4p-1072
+  },
+  { // Entry 244
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    -0x1.f4f3b198c0f168030e9490be1ea559e8p-4,
+    -0x1.08de20fafe4a2p0,
+    0x1.0d5ba77adf969p3
+  },
+  { // Entry 247
+    0x1.f4f3b198c0f168030e9490be1ea559e8p-4,
+    0x1.08de20fafe4a2p0,
+    0x1.0d5ba77adf969p3
+  },
+  { // Entry 248
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 249
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 250
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 251
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 252
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 253
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 254
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 255
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 256
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 257
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 258
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 259
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 260
+    0x1.7249faa996a216a33079d20319e727c3p0,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 261
+    -0x1.7249faa996a216a33079d20319e727c3p0,
+    -0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 262
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 263
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 264
+    0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 265
+    -0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    -0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 266
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 267
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 268
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 269
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 270
+    0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 271
+    -0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    -0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 272
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 273
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 274
+    0x1.ffffffffffffffffffffffffffffffffp-102,
+    0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 275
+    -0x1.ffffffffffffffffffffffffffffffffp-102,
+    -0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 276
+    0x1.ffffffffffffffffffffffffffffffffp-98,
+    0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 277
+    -0x1.ffffffffffffffffffffffffffffffffp-98,
+    -0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 278
+    0x1.ffffffffffffffffffffffffffffffffp-99,
+    0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 279
+    -0x1.ffffffffffffffffffffffffffffffffp-99,
+    -0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 280
+    0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 281
+    -0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    -0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 282
+    0x1.8e1fca98cb63311299ee93be01605c21p0,
+    0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 283
+    -0x1.8e1fca98cb63311299ee93be01605c21p0,
+    -0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 284
+    0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 285
+    -0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    -0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 286
+    0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 287
+    -0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    -0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 288
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 289
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 290
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 291
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 292
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 293
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 294
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 295
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 296
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 297
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 298
+    0x1.ffffffffffffffffffffffffffffffffp-93,
+    0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 299
+    -0x1.ffffffffffffffffffffffffffffffffp-93,
+    -0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 300
+    0x1.ffffffffffffffffffffffffffffffffp-91,
+    0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 301
+    -0x1.ffffffffffffffffffffffffffffffffp-91,
+    -0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 302
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 303
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 304
+    0x1.921fb54442d18469898cc516f1b839a2p0,
+    0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 305
+    -0x1.921fb54442d18469898cc516f1b839a2p0,
+    -0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 306
+    0x1.921fb54442d18469898cc51681b839a2p0,
+    0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 307
+    -0x1.921fb54442d18469898cc51681b839a2p0,
+    -0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 308
+    0x1.921fb54442d18469898cc516f9b839a2p0,
+    0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 309
+    -0x1.921fb54442d18469898cc516f9b839a2p0,
+    -0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 310
+    0x1.921fb54442d18469898cc516c1b839a2p0,
+    0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 311
+    -0x1.921fb54442d18469898cc516c1b839a2p0,
+    -0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 312
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 313
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 314
+    0x1.921fb54442d18469898cc4d701b839a2p0,
+    0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 315
+    -0x1.921fb54442d18469898cc4d701b839a2p0,
+    -0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 316
+    0x1.921fb54442d18469898cc50701b839a2p0,
+    0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 317
+    -0x1.921fb54442d18469898cc50701b839a2p0,
+    -0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 318
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 319
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 320
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 321
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 322
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 323
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 324
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 325
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 326
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 327
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 328
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 329
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 330
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 331
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 332
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 333
+    0.0,
+    0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 334
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 335
+    -0.0,
+    -0.0,
+    0x1.0p1
+  },
+  { // Entry 336
+    -0.0,
+    -0.0,
+    0x1.0000000000001p1
+  },
+  { // Entry 337
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 338
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 339
+    0.0,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 340
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 341
+    0.0,
+    0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 342
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0000000000001p1
+  },
+  { // Entry 343
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 344
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 345
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 346
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 348
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 349
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 350
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 351
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 352
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 353
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 354
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 355
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 356
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 357
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 358
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 359
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 360
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 361
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 362
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 363
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 364
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-3,
+    0x1.0p1
+  },
+  { // Entry 365
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 366
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 367
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 368
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p-3,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 369
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 370
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-3,
+    0x1.0p1
+  },
+  { // Entry 371
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 372
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p-3,
+    0x1.0000000000001p1
+  },
+  { // Entry 373
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 374
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp-4,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 375
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 376
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0p1
+  },
+  { // Entry 377
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 378
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp-4,
+    0x1.0000000000001p1
+  },
+  { // Entry 379
+    0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 380
+    -0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 381
+    0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 382
+    -0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 383
+    0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 384
+    -0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 385
+    0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 386
+    -0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 387
+    0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 388
+    -0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 389
+    0x1.a271f63e34fce0d49df838a986453485p-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 390
+    -0x1.a271f63e34fce0d49df838a986453485p-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 391
+    0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 392
+    -0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 393
+    0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 394
+    -0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 395
+    0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 396
+    -0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 397
+    -0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 398
+    0x1.a271f63e34fd114f542b2eef6a0548d3p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 399
+    -0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 400
+    0x1.a271f63e34fd05a42de44d1ff95d8a85p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0p1
+  },
+  { // Entry 401
+    -0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    -0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 402
+    0x1.a271f63e34fcee4de156898119e5b5a4p-2,
+    0x1.bb67ae8584cabp-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 403
+    -0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 404
+    0x1.a271f63e34fd03d610ccde17d587872dp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 405
+    -0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 406
+    0x1.a271f63e34fcf82aea85fc486529890cp-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0p1
+  },
+  { // Entry 407
+    -0x1.a271f63e34fce0d49df838a986453485p-2,
+    -0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 408
+    0x1.a271f63e34fce0d49df838a986453485p-2,
+    0x1.bb67ae8584caap-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 409
+    -0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 410
+    0x1.a271f63e34fcf65ccd6e8d4040e2778cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 411
+    -0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 412
+    0x1.a271f63e34fceab1a727ab70d0ce3998p-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0p1
+  },
+  { // Entry 413
+    -0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    -0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 414
+    0x1.a271f63e34fcd35b5a99e7d1f27d656cp-2,
+    0x1.bb67ae8584ca9p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 415
+    0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 416
+    -0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 417
+    0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 418
+    -0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 419
+    0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 420
+    -0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 421
+    0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 422
+    -0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 423
+    0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 424
+    -0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 425
+    0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 426
+    -0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 427
+    0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 428
+    -0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 429
+    0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 430
+    -0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 431
+    0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 432
+    -0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 433
+    -0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 434
+    0x1.e1fc084cd761b9d82d0649eb8e97a3bcp-1,
+    0x1.5f89e11a0441ep1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 435
+    -0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 436
+    0x1.e1fc084cd761b23b05b29567960b1c09p-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0p1
+  },
+  { // Entry 437
+    -0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    -0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 438
+    0x1.e1fc084cd761a300b70b2c5fa570b2aep-1,
+    0x1.5f89e11a0441ep1,
+    0x1.0000000000001p1
+  },
+  { // Entry 439
+    -0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 440
+    0x1.e1fc084cd761aec15275b5d29ba21a09p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 441
+    -0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 442
+    0x1.e1fc084cd761a7242b22014ea2fa57ebp-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0p1
+  },
+  { // Entry 443
+    -0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    -0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 444
+    0x1.e1fc084cd76197e9dc7a9846b22979b9p-1,
+    0x1.5f89e11a0441dp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 445
+    -0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 446
+    0x1.e1fc084cd761a3aa77e521b9a803b2f2p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 447
+    -0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 448
+    0x1.e1fc084cd7619c0d50916d35af40b669p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0p1
+  },
+  { // Entry 449
+    -0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    -0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 450
+    0x1.e1fc084cd7618cd301ea042dbe396361p-1,
+    0x1.5f89e11a0441cp1,
+    0x1.0000000000001p1
+  },
+  { // Entry 451
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 452
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 453
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 454
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 455
+    0x1.921fb54442d16c69898cc517021839a2p-1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 456
+    -0x1.921fb54442d16c69898cc517021839a2p-1,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 457
+    0x1.921fb54442d18c69898cc51701d839a2p-1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 458
+    -0x1.921fb54442d18c69898cc51701d839a2p-1,
+    -0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 459
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 460
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 461
+    0x1.921fb54442d17469898cc517023839a2p-1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 462
+    -0x1.921fb54442d17469898cc517023839a2p-1,
+    -0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 463
+    0x1.921fb54442d19c69898cc517015839a2p-1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 464
+    -0x1.921fb54442d19c69898cc517015839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 465
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 466
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 467
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 468
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 469
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 470
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 471
+    0x1.ffffffffffffed5555555555559bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.0p1
+  },
+  { // Entry 472
+    -0x1.ffffffffffffed5555555555559bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.0p1
+  },
+  { // Entry 473
+    0x1.ffffffffffffcd5555555555591bbbbbp-28,
+    0x1.fffffffffffffp-27,
+    0x1.0000000000001p1
+  },
+  { // Entry 474
+    -0x1.ffffffffffffcd5555555555591bbbbbp-28,
+    -0x1.fffffffffffffp-27,
+    0x1.0000000000001p1
+  },
+  { // Entry 475
+    0x1.00000000000006aaaaaaaaaaaacdddddp-27,
+    0x1.0p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 476
+    -0x1.00000000000006aaaaaaaaaaaacdddddp-27,
+    -0x1.0p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 477
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0p-26,
+    0x1.0p1
+  },
+  { // Entry 478
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0p-26,
+    0x1.0p1
+  },
+  { // Entry 479
+    0x1.ffffffffffffdd555555555557dbbbbbp-28,
+    0x1.0p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 480
+    -0x1.ffffffffffffdd555555555557dbbbbbp-28,
+    -0x1.0p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 481
+    0x1.00000000000016aaaaaaaaaaab0dddddp-27,
+    0x1.0000000000001p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 482
+    -0x1.00000000000016aaaaaaaaaaab0dddddp-27,
+    -0x1.0000000000001p-26,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 483
+    0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    0x1.0000000000001p-26,
+    0x1.0p1
+  },
+  { // Entry 484
+    -0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    -0x1.0000000000001p-26,
+    0x1.0p1
+  },
+  { // Entry 485
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0000000000001p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 486
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0000000000001p-26,
+    0x1.0000000000001p1
+  },
+  { // Entry 487
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 488
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 489
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 490
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 491
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 492
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 493
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 494
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0.0
+  },
+  { // Entry 495
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 496
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 497
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 498
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 499
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 500
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 501
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 502
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 503
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 504
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 505
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 506
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 507
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 508
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 509
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 510
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 511
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 512
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 513
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 514
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 515
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 516
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 517
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 518
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 519
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 520
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 521
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 522
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 523
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 524
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 525
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 526
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 527
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 529
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 530
+    0x1.ffffffffffffefffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 531
+    -0x1.ffffffffffffefffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 532
+    0x1.ffffffffffffd0000000000002ff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 533
+    -0x1.ffffffffffffd0000000000002ff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 534
+    0x1.000000000000080000000000003faaaap-56,
+    0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 535
+    -0x1.000000000000080000000000003faaaap-56,
+    -0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 536
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 537
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 538
+    0x1.ffffffffffffe0000000000001ff5555p-57,
+    0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 539
+    -0x1.ffffffffffffe0000000000001ff5555p-57,
+    -0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 540
+    0x1.00000000000018000000000000bfaaaap-56,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 541
+    -0x1.00000000000018000000000000bfaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 542
+    0x1.0000000000000fffffffffffffffaaaap-56,
+    0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 543
+    -0x1.0000000000000fffffffffffffffaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 544
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 545
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 546
+    -0x1.00000000000018000000000000bfaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 547
+    0x1.00000000000018000000000000bfaaaap-56,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 548
+    -0x1.0000000000000fffffffffffffffaaaap-56,
+    -0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 549
+    0x1.0000000000000fffffffffffffffaaaap-56,
+    0x1.0000000000001p1,
+    0x1.0p57
+  },
+  { // Entry 550
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 551
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0000000000001p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 552
+    -0x1.000000000000080000000000003faaaap-56,
+    -0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 553
+    0x1.000000000000080000000000003faaaap-56,
+    0x1.0p1,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 554
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 555
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.0p1,
+    0x1.0p57
+  },
+  { // Entry 556
+    -0x1.ffffffffffffe0000000000001ff5555p-57,
+    -0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 557
+    0x1.ffffffffffffe0000000000001ff5555p-57,
+    0x1.0p1,
+    0x1.0000000000001p57
+  },
+  { // Entry 558
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 559
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp56
+  },
+  { // Entry 560
+    -0x1.ffffffffffffefffffffffffffff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 561
+    0x1.ffffffffffffefffffffffffffff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0p57
+  },
+  { // Entry 562
+    -0x1.ffffffffffffd0000000000002ff5555p-57,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 563
+    0x1.ffffffffffffd0000000000002ff5555p-57,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p57
+  },
+  { // Entry 564
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 565
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 566
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.0p32
+  },
+  { // Entry 567
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.0p32
+  },
+  { // Entry 568
+    0x1.ffffffffffffcff555555555585855bbp-31,
+    0x1.fffffffffffffp1,
+    0x1.0000000000001p32
+  },
+  { // Entry 569
+    -0x1.ffffffffffffcff555555555585855bbp-31,
+    -0x1.fffffffffffffp1,
+    0x1.0000000000001p32
+  },
+  { // Entry 570
+    0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    0x1.0p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 571
+    -0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    -0x1.0p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 572
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p2,
+    0x1.0p32
+  },
+  { // Entry 573
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p2,
+    0x1.0p32
+  },
+  { // Entry 574
+    0x1.ffffffffffffdff555555555575755bbp-31,
+    0x1.0p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 575
+    -0x1.ffffffffffffdff555555555575755bbp-31,
+    -0x1.0p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 576
+    0x1.00000000000017faaaaaaaaaab692addp-30,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 577
+    -0x1.00000000000017faaaaaaaaaab692addp-30,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp31
+  },
+  { // Entry 578
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p2,
+    0x1.0p32
+  },
+  { // Entry 579
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p2,
+    0x1.0p32
+  },
+  { // Entry 580
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0000000000001p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 581
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0000000000001p2,
+    0x1.0000000000001p32
+  },
+  { // Entry 582
+    -0x1.00000000000017faaaaaaaaaab692addp-30,
+    -0x1.0000000000001p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 583
+    0x1.00000000000017faaaaaaaaaab692addp-30,
+    0x1.0000000000001p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 584
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p-2,
+    0x1.0p28
+  },
+  { // Entry 585
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p-2,
+    0x1.0p28
+  },
+  { // Entry 586
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0000000000001p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 587
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0000000000001p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 588
+    -0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    -0x1.0p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 589
+    0x1.00000000000007faaaaaaaaaaaea2addp-30,
+    0x1.0p-2,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 590
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p-2,
+    0x1.0p28
+  },
+  { // Entry 591
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p-2,
+    0x1.0p28
+  },
+  { // Entry 592
+    -0x1.ffffffffffffdff555555555575755bbp-31,
+    -0x1.0p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 593
+    0x1.ffffffffffffdff555555555575755bbp-31,
+    0x1.0p-2,
+    0x1.0000000000001p28
+  },
+  { // Entry 594
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 595
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.fffffffffffffp27
+  },
+  { // Entry 596
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.0p28
+  },
+  { // Entry 597
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.0p28
+  },
+  { // Entry 598
+    -0x1.ffffffffffffcff555555555585855bbp-31,
+    -0x1.fffffffffffffp-3,
+    0x1.0000000000001p28
+  },
+  { // Entry 599
+    0x1.ffffffffffffcff555555555585855bbp-31,
+    0x1.fffffffffffffp-3,
+    0x1.0000000000001p28
+  },
+  { // Entry 600
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 601
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 602
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.0p3
+  },
+  { // Entry 603
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.0p3
+  },
+  { // Entry 604
+    0x1.921fb54442d16c69898cc517021839a2p-1,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p3
+  },
+  { // Entry 605
+    -0x1.921fb54442d16c69898cc517021839a2p-1,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p3
+  },
+  { // Entry 606
+    0x1.921fb54442d18c69898cc51701d839a2p-1,
+    0x1.0p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 607
+    -0x1.921fb54442d18c69898cc51701d839a2p-1,
+    -0x1.0p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 608
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 609
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 610
+    0x1.921fb54442d17469898cc517023839a2p-1,
+    0x1.0p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 611
+    -0x1.921fb54442d17469898cc517023839a2p-1,
+    -0x1.0p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 612
+    0x1.921fb54442d19c69898cc517015839a2p-1,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 613
+    -0x1.921fb54442d19c69898cc517015839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 614
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p3,
+    0x1.0p3
+  },
+  { // Entry 615
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.0p3
+  },
+  { // Entry 616
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0000000000001p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 617
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 618
+    -0x1.dac670561bb51cf1462ef23fdf5661b4p-2,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 619
+    0x1.dac670561bb51cf1462ef23fdf5661b4p-2,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 620
+    -0x1.dac670561bb510247962257311bcc81bp-2,
+    -0x1.0000000000001p3,
+    0x1.0p4
+  },
+  { // Entry 621
+    0x1.dac670561bb510247962257311bcc81bp-2,
+    0x1.0000000000001p3,
+    0x1.0p4
+  },
+  { // Entry 622
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 623
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0000000000001p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 624
+    -0x1.dac670561bb50357ac9558a64593d258p-2,
+    -0x1.0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 625
+    0x1.dac670561bb50357ac9558a64593d258p-2,
+    0x1.0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 626
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p3,
+    0x1.0p4
+  },
+  { // Entry 627
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p3,
+    0x1.0p4
+  },
+  { // Entry 628
+    -0x1.dac670561bb4dcf1462ef23fe0232e81p-2,
+    -0x1.0p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 629
+    0x1.dac670561bb4dcf1462ef23fe0232e81p-2,
+    0x1.0p3,
+    0x1.0000000000001p4
+  },
+  { // Entry 630
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 631
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 632
+    -0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    -0x1.fffffffffffffp2,
+    0x1.0p4
+  },
+  { // Entry 633
+    0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    0x1.fffffffffffffp2,
+    0x1.0p4
+  },
+  { // Entry 634
+    -0x1.dac670561bb4d0247962257313bcc81bp-2,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p4
+  },
+  { // Entry 635
+    0x1.dac670561bb4d0247962257313bcc81bp-2,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p4
+  },
+  { // Entry 636
+    0x1.72c43f4b1650a9d9aea6a40b156d98c0p1,
+    0x1.fffffffffffffp2,
+    -0x1.0000000000001p5
+  },
+  { // Entry 637
+    -0x1.72c43f4b1650a9d9aea6a40b156d98c0p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0000000000001p5
+  },
+  { // Entry 638
+    0x1.72c43f4b1650a7f7ccc4c22933b558f8p1,
+    0x1.fffffffffffffp2,
+    -0x1.0p5
+  },
+  { // Entry 639
+    -0x1.72c43f4b1650a7f7ccc4c22933b558f8p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0p5
+  },
+  { // Entry 640
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 641
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 642
+    0x1.72c43f4b1650a8e8bdb5b31a24897ff2p1,
+    0x1.0p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 643
+    -0x1.72c43f4b1650a8e8bdb5b31a24897ff2p1,
+    -0x1.0p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 644
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.0p3,
+    -0x1.0p5
+  },
+  { // Entry 645
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.0p3,
+    -0x1.0p5
+  },
+  { // Entry 646
+    0x1.72c43f4b1650a615eae2e04751cbef8fp1,
+    0x1.0p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 647
+    -0x1.72c43f4b1650a615eae2e04751cbef8fp1,
+    -0x1.0p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 648
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.0000000000001p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 649
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.0000000000001p3,
+    -0x1.0000000000001p5
+  },
+  { // Entry 650
+    0x1.72c43f4b1650a524f9f1ef5660e3da4dp1,
+    0x1.0000000000001p3,
+    -0x1.0p5
+  },
+  { // Entry 651
+    -0x1.72c43f4b1650a524f9f1ef5660e3da4dp1,
+    -0x1.0000000000001p3,
+    -0x1.0p5
+  },
+  { // Entry 652
+    0x1.72c43f4b1650a4340900fe656fde89b1p1,
+    0x1.0000000000001p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 653
+    -0x1.72c43f4b1650a4340900fe656fde89b1p1,
+    -0x1.0000000000001p3,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 654
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 655
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 656
+    0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    0x1.fffffffffffffp2,
+    0x1.0p6
+  },
+  { // Entry 657
+    -0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    -0x1.fffffffffffffp2,
+    0x1.0p6
+  },
+  { // Entry 658
+    0x1.fd5ba9aac2f6ad229cffee4a50b0e5b4p-4,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p6
+  },
+  { // Entry 659
+    -0x1.fd5ba9aac2f6ad229cffee4a50b0e5b4p-4,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p6
+  },
+  { // Entry 660
+    0x1.fd5ba9aac2f6ec268d3ef23a8d4e3181p-4,
+    0x1.0p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 661
+    -0x1.fd5ba9aac2f6ec268d3ef23a8d4e3181p-4,
+    -0x1.0p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 662
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p3,
+    0x1.0p6
+  },
+  { // Entry 663
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p3,
+    0x1.0p6
+  },
+  { // Entry 664
+    0x1.fd5ba9aac2f6bce3990faf465f7f83d9p-4,
+    0x1.0p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 665
+    -0x1.fd5ba9aac2f6bce3990faf465f7f83d9p-4,
+    -0x1.0p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 666
+    0x1.fd5ba9aac2f70ba8855e7432adbcb671p-4,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 667
+    -0x1.fd5ba9aac2f70ba8855e7432adbcb671p-4,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 668
+    0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    0x1.0000000000001p3,
+    0x1.0p6
+  },
+  { // Entry 669
+    -0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    -0x1.0000000000001p3,
+    0x1.0p6
+  },
+  { // Entry 670
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0000000000001p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 671
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p6
+  },
+  { // Entry 672
+    -0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 673
+    0x1.ff55bb72cfdecc3dc61f55884da654e3p-5,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 674
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p3,
+    0x1.0p7
+  },
+  { // Entry 675
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p3,
+    0x1.0p7
+  },
+  { // Entry 676
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 677
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0000000000001p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 678
+    -0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    -0x1.0p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 679
+    0x1.ff55bb72cfdeac5da63f35a82ccb2c10p-5,
+    0x1.0p3,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 680
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p3,
+    0x1.0p7
+  },
+  { // Entry 681
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p3,
+    0x1.0p7
+  },
+  { // Entry 682
+    -0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    -0x1.0p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 683
+    0x1.ff55bb72cfde7c8d766f05d7fe7800bap-5,
+    0x1.0p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 684
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 685
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 686
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp2,
+    0x1.0p7
+  },
+  { // Entry 687
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp2,
+    0x1.0p7
+  },
+  { // Entry 688
+    -0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p7
+  },
+  { // Entry 689
+    0x1.ff55bb72cfde6c9d667ef5e7ef8476c1p-5,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p7
+  },
+  { // Entry 690
+    0x1.0468a8ace4df65d2ed8c40d37cc6e907p1,
+    0x1.fffffffffffffp2,
+    -0x1.0000000000001p2
+  },
+  { // Entry 691
+    -0x1.0468a8ace4df65d2ed8c40d37cc6e907p1,
+    -0x1.fffffffffffffp2,
+    -0x1.0000000000001p2
+  },
+  { // Entry 692
+    0x1.0468a8ace4df629fba590da0498e971cp1,
+    0x1.fffffffffffffp2,
+    -0x1.0p2
+  },
+  { // Entry 693
+    -0x1.0468a8ace4df629fba590da0498e971cp1,
+    -0x1.fffffffffffffp2,
+    -0x1.0p2
+  },
+  { // Entry 694
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 695
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.fffffffffffffp2,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 696
+    0x1.0468a8ace4df643953f2a739e313b5d4p1,
+    0x1.0p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 697
+    -0x1.0468a8ace4df643953f2a739e313b5d4p1,
+    -0x1.0p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 698
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.0p3,
+    -0x1.0p2
+  },
+  { // Entry 699
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.0p3,
+    -0x1.0p2
+  },
+  { // Entry 700
+    0x1.0468a8ace4df5f6c8725da6d164e971cp1,
+    0x1.0p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 701
+    -0x1.0468a8ace4df5f6c8725da6d164e971cp1,
+    -0x1.0p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 702
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.0000000000001p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 703
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.0000000000001p3,
+    -0x1.0000000000001p2
+  },
+  { // Entry 704
+    0x1.0468a8ace4df5dd2ed8c40d37ce082a1p1,
+    0x1.0000000000001p3,
+    -0x1.0p2
+  },
+  { // Entry 705
+    -0x1.0468a8ace4df5dd2ed8c40d37ce082a1p1,
+    -0x1.0000000000001p3,
+    -0x1.0p2
+  },
+  { // Entry 706
+    0x1.0468a8ace4df5c3953f2a739e353b5d4p1,
+    0x1.0000000000001p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 707
+    -0x1.0468a8ace4df5c3953f2a739e353b5d4p1,
+    -0x1.0000000000001p3,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 708
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 709
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 710
+    0x1.ffffffffffffefffffffffffffffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.0p-2
+  },
+  { // Entry 711
+    -0x1.ffffffffffffefffffffffffffffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.0p-2
+  },
+  { // Entry 712
+    0x1.ffffffffffffd0000000000002ffffffp-101,
+    0x1.fffffffffffffp-103,
+    0x1.0000000000001p-2
+  },
+  { // Entry 713
+    -0x1.ffffffffffffd0000000000002ffffffp-101,
+    -0x1.fffffffffffffp-103,
+    0x1.0000000000001p-2
+  },
+  { // Entry 714
+    0x1.0000000000000800000000000040p-100,
+    0x1.0p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 715
+    -0x1.0000000000000800000000000040p-100,
+    -0x1.0p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 716
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p-102,
+    0x1.0p-2
+  },
+  { // Entry 717
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p-102,
+    0x1.0p-2
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0000000000001ffffffp-101,
+    0x1.0p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 719
+    -0x1.ffffffffffffe0000000000001ffffffp-101,
+    -0x1.0p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 720
+    0x1.00000000000018000000000000c0p-100,
+    0x1.0000000000001p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 721
+    -0x1.00000000000018000000000000c0p-100,
+    -0x1.0000000000001p-102,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 722
+    0x1.0000000000000fffffffffffffffffffp-100,
+    0x1.0000000000001p-102,
+    0x1.0p-2
+  },
+  { // Entry 723
+    -0x1.0000000000000fffffffffffffffffffp-100,
+    -0x1.0000000000001p-102,
+    0x1.0p-2
+  },
+  { // Entry 724
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000001p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 725
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000001p-102,
+    0x1.0000000000001p-2
+  },
+  { // Entry 726
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 727
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 728
+    0x1.ffffffffffffefffffffffffffffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.0p-2
+  },
+  { // Entry 729
+    -0x1.ffffffffffffefffffffffffffffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.0p-2
+  },
+  { // Entry 730
+    0x1.ffffffffffffd0000000000002ffffffp-201,
+    0x1.fffffffffffffp-203,
+    0x1.0000000000001p-2
+  },
+  { // Entry 731
+    -0x1.ffffffffffffd0000000000002ffffffp-201,
+    -0x1.fffffffffffffp-203,
+    0x1.0000000000001p-2
+  },
+  { // Entry 732
+    0x1.0000000000000800000000000040p-200,
+    0x1.0p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 733
+    -0x1.0000000000000800000000000040p-200,
+    -0x1.0p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 734
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.0p-202,
+    0x1.0p-2
+  },
+  { // Entry 735
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.0p-202,
+    0x1.0p-2
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0000000000001ffffffp-201,
+    0x1.0p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 737
+    -0x1.ffffffffffffe0000000000001ffffffp-201,
+    -0x1.0p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 738
+    0x1.00000000000018000000000000c0p-200,
+    0x1.0000000000001p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 739
+    -0x1.00000000000018000000000000c0p-200,
+    -0x1.0000000000001p-202,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 740
+    0x1.0000000000000fffffffffffffffffffp-200,
+    0x1.0000000000001p-202,
+    0x1.0p-2
+  },
+  { // Entry 741
+    -0x1.0000000000000fffffffffffffffffffp-200,
+    -0x1.0000000000001p-202,
+    0x1.0p-2
+  },
+  { // Entry 742
+    0x1.ffffffffffffffffffffffffffffffffp-201,
+    0x1.0000000000001p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 743
+    -0x1.ffffffffffffffffffffffffffffffffp-201,
+    -0x1.0000000000001p-202,
+    0x1.0000000000001p-2
+  },
+  { // Entry 744
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 745
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 746
+    0x1.ffffffffffffefffffffffffffffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.0p-2
+  },
+  { // Entry 747
+    -0x1.ffffffffffffefffffffffffffffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.0p-2
+  },
+  { // Entry 748
+    0x1.ffffffffffffd0000000000002ffffffp-1001,
+    0x1.fffffffffffffp-1003,
+    0x1.0000000000001p-2
+  },
+  { // Entry 749
+    -0x1.ffffffffffffd0000000000002ffffffp-1001,
+    -0x1.fffffffffffffp-1003,
+    0x1.0000000000001p-2
+  },
+  { // Entry 750
+    0x1.0000000000000800000000000040p-1000,
+    0x1.0p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 751
+    -0x1.0000000000000800000000000040p-1000,
+    -0x1.0p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 752
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.0p-1002,
+    0x1.0p-2
+  },
+  { // Entry 753
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.0p-1002,
+    0x1.0p-2
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0000000000001ffffffp-1001,
+    0x1.0p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 755
+    -0x1.ffffffffffffe0000000000001ffffffp-1001,
+    -0x1.0p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 756
+    0x1.00000000000018000000000000c0p-1000,
+    0x1.0000000000001p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 757
+    -0x1.00000000000018000000000000c0p-1000,
+    -0x1.0000000000001p-1002,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 758
+    0x1.0000000000000fffffffffffffffffffp-1000,
+    0x1.0000000000001p-1002,
+    0x1.0p-2
+  },
+  { // Entry 759
+    -0x1.0000000000000fffffffffffffffffffp-1000,
+    -0x1.0000000000001p-1002,
+    0x1.0p-2
+  },
+  { // Entry 760
+    0x1.ffffffffffffffffffffffffffffffffp-1001,
+    0x1.0000000000001p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 761
+    -0x1.ffffffffffffffffffffffffffffffffp-1001,
+    -0x1.0000000000001p-1002,
+    0x1.0000000000001p-2
+  },
+  { // Entry 762
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 763
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 764
+    0x1.ffffffffffffefffffffffffff7fffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 765
+    -0x1.ffffffffffffefffffffffffff7fffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 766
+    0x1.ffffffffffffdfffffffffffffffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0p103
+  },
+  { // Entry 767
+    -0x1.ffffffffffffdfffffffffffffffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0p103
+  },
+  { // Entry 768
+    0x1.ffffffffffffc0000000000003ffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0000000000001p103
+  },
+  { // Entry 769
+    -0x1.ffffffffffffc0000000000003ffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0000000000001p103
+  },
+  { // Entry 770
+    0x1.ffffffffffffa000000000000bffffffp-101,
+    0x1.ffffffffffffep2,
+    0x1.0000000000002p103
+  },
+  { // Entry 771
+    -0x1.ffffffffffffa000000000000bffffffp-101,
+    -0x1.ffffffffffffep2,
+    0x1.0000000000002p103
+  },
+  { // Entry 772
+    0x1.0000000000000800000000000080p-100,
+    0x1.fffffffffffffp2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 773
+    -0x1.0000000000000800000000000080p-100,
+    -0x1.fffffffffffffp2,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 774
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 775
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 776
+    0x1.ffffffffffffefffffffffffffffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0p103
+  },
+  { // Entry 777
+    -0x1.ffffffffffffefffffffffffffffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0p103
+  },
+  { // Entry 778
+    0x1.ffffffffffffd0000000000002ffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0000000000001p103
+  },
+  { // Entry 779
+    -0x1.ffffffffffffd0000000000002ffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000001p103
+  },
+  { // Entry 780
+    0x1.ffffffffffffb0000000000009ffffffp-101,
+    0x1.fffffffffffffp2,
+    0x1.0000000000002p103
+  },
+  { // Entry 781
+    -0x1.ffffffffffffb0000000000009ffffffp-101,
+    -0x1.fffffffffffffp2,
+    0x1.0000000000002p103
+  },
+  { // Entry 782
+    0x1.00000000000010000000000001p-100,
+    0x1.0p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 783
+    -0x1.00000000000010000000000001p-100,
+    -0x1.0p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 784
+    0x1.0000000000000800000000000040p-100,
+    0x1.0p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 785
+    -0x1.0000000000000800000000000040p-100,
+    -0x1.0p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 786
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0p3,
+    0x1.0p103
+  },
+  { // Entry 787
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0p3,
+    0x1.0p103
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0000000000001ffffffp-101,
+    0x1.0p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 789
+    -0x1.ffffffffffffe0000000000001ffffffp-101,
+    -0x1.0p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 790
+    0x1.ffffffffffffc0000000000007ffffffp-101,
+    0x1.0p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 791
+    -0x1.ffffffffffffc0000000000007ffffffp-101,
+    -0x1.0p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 792
+    0x1.00000000000020000000000002p-100,
+    0x1.0000000000001p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 793
+    -0x1.00000000000020000000000002p-100,
+    -0x1.0000000000001p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 794
+    0x1.00000000000018000000000000c0p-100,
+    0x1.0000000000001p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 795
+    -0x1.00000000000018000000000000c0p-100,
+    -0x1.0000000000001p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 796
+    0x1.0000000000000fffffffffffffffffffp-100,
+    0x1.0000000000001p3,
+    0x1.0p103
+  },
+  { // Entry 797
+    -0x1.0000000000000fffffffffffffffffffp-100,
+    -0x1.0000000000001p3,
+    0x1.0p103
+  },
+  { // Entry 798
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000001p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 799
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000001p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0000000000003ffffffp-101,
+    0x1.0000000000001p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 801
+    -0x1.ffffffffffffe0000000000003ffffffp-101,
+    -0x1.0000000000001p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 802
+    0x1.00000000000030000000000003p-100,
+    0x1.0000000000002p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 803
+    -0x1.00000000000030000000000003p-100,
+    -0x1.0000000000002p3,
+    0x1.ffffffffffffep102
+  },
+  { // Entry 804
+    0x1.0000000000002800000000000140p-100,
+    0x1.0000000000002p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 805
+    -0x1.0000000000002800000000000140p-100,
+    -0x1.0000000000002p3,
+    0x1.fffffffffffffp102
+  },
+  { // Entry 806
+    0x1.0000000000001fffffffffffffffffffp-100,
+    0x1.0000000000002p3,
+    0x1.0p103
+  },
+  { // Entry 807
+    -0x1.0000000000001fffffffffffffffffffp-100,
+    -0x1.0000000000002p3,
+    0x1.0p103
+  },
+  { // Entry 808
+    0x1.0000000000000fffffffffffffp-100,
+    0x1.0000000000002p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 809
+    -0x1.0000000000000fffffffffffffp-100,
+    -0x1.0000000000002p3,
+    0x1.0000000000001p103
+  },
+  { // Entry 810
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.0000000000002p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 811
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.0000000000002p3,
+    0x1.0000000000002p103
+  },
+  { // Entry 812
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 813
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 814
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 815
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 816
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 817
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 818
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 819
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 820
+    0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 821
+    -0x1.ffffffffffffefffffffffffff7fffffp-1024,
+    -0x1.ffffffffffffep0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 822
+    0x1.0000000000000800000000000080p-1023,
+    0x1.fffffffffffffp0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 823
+    -0x1.0000000000000800000000000080p-1023,
+    -0x1.fffffffffffffp0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 824
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 825
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 826
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 827
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 828
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 829
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 830
+    0x1.ffffffffffffffffffffffffffffffffp-1024,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 831
+    -0x1.ffffffffffffffffffffffffffffffffp-1024,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 832
+    0x1.00000000000010000000000001p-1023,
+    0x1.0p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 833
+    -0x1.00000000000010000000000001p-1023,
+    -0x1.0p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 834
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 835
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 836
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 837
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 838
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    0x1.0000000000000800000000000040p-1023,
+    0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 841
+    -0x1.0000000000000800000000000040p-1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 842
+    0x1.00000000000020000000000002p-1023,
+    0x1.0000000000001p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 843
+    -0x1.00000000000020000000000002p-1023,
+    -0x1.0000000000001p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 844
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 845
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 846
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 847
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 848
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 849
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 850
+    0x1.00000000000018000000000000c0p-1023,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -0x1.00000000000018000000000000c0p-1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 852
+    0x1.00000000000030000000000003p-1023,
+    0x1.0000000000002p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 853
+    -0x1.00000000000030000000000003p-1023,
+    -0x1.0000000000002p1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 854
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 855
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 856
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 857
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 858
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 859
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 860
+    0x1.0000000000002800000000000140p-1023,
+    0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 861
+    -0x1.0000000000002800000000000140p-1023,
+    -0x1.0000000000002p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 862
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 863
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 864
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 865
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 866
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 867
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 868
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 869
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 870
+    0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 871
+    -0x1.ffffffffffffefffffffffffff7fffffp-1023,
+    -0x1.ffffffffffffep1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 872
+    0x1.0000000000000800000000000080p-1022,
+    0x1.fffffffffffffp1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 873
+    -0x1.0000000000000800000000000080p-1022,
+    -0x1.fffffffffffffp1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 874
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 875
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 876
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 877
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 878
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 879
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 880
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 881
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.fffffffffffffp1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 882
+    0x1.00000000000010000000000001p-1022,
+    0x1.0p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 883
+    -0x1.00000000000010000000000001p-1022,
+    -0x1.0p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 884
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 885
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 886
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 887
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 888
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 889
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 890
+    0x1.0000000000000800000000000040p-1022,
+    0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 891
+    -0x1.0000000000000800000000000040p-1022,
+    -0x1.0p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 892
+    0x1.00000000000020000000000002p-1022,
+    0x1.0000000000001p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 893
+    -0x1.00000000000020000000000002p-1022,
+    -0x1.0000000000001p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 894
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 895
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 896
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 897
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 898
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 899
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 900
+    0x1.00000000000018000000000000c0p-1022,
+    0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 901
+    -0x1.00000000000018000000000000c0p-1022,
+    -0x1.0000000000001p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 902
+    0x1.00000000000030000000000003p-1022,
+    0x1.0000000000002p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 903
+    -0x1.00000000000030000000000003p-1022,
+    -0x1.0000000000002p2,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 904
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 905
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 906
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 907
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 908
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 909
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 910
+    0x1.0000000000002800000000000140p-1022,
+    0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 911
+    -0x1.0000000000002800000000000140p-1022,
+    -0x1.0000000000002p2,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 912
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 913
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 914
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 915
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 916
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.0p0
+  },
+  { // Entry 917
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.0p0
+  },
+  { // Entry 918
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 919
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 920
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000002p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 921
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000002p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 922
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 923
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 924
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 925
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 926
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.0p0
+  },
+  { // Entry 927
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.0p0
+  },
+  { // Entry 928
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 929
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 930
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0000000000001p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 931
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0000000000001p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 932
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 933
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0000000000002p0
+  },
+  { // Entry 934
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 935
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0000000000001p0
+  },
+  { // Entry 936
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.0p0
+  },
+  { // Entry 937
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.0p0
+  },
+  { // Entry 938
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 939
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 940
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 941
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p1023,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 942
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 943
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 944
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 945
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 946
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.0p0
+  },
+  { // Entry 947
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.0p0
+  },
+  { // Entry 948
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 949
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 950
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 951
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 952
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 953
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000002p0
+  },
+  { // Entry 954
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 955
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p0
+  },
+  { // Entry 956
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.0p0
+  },
+  { // Entry 957
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.0p0
+  },
+  { // Entry 958
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 959
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 960
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 961
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1022,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 962
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0.0
+  },
+  { // Entry 963
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0.0
+  },
+  { // Entry 964
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 965
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 966
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 967
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 968
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 969
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 970
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 971
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 972
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 973
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 974
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 975
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 976
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 977
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 978
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 979
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 980
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 981
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 982
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 983
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 984
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 985
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 986
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 987
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 988
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 989
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 990
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 991
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 992
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 993
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 994
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 995
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 996
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 997
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 998
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 999
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1000
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1001
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1002
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1003
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1004
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1005
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1006
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1007
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1008
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1009
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1010
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1011
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1012
+    -0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1013
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1014
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1015
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1016
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1017
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1018
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1019
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1020
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1021
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1022
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1023
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1024
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1025
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1026
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1027
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1028
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1029
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1030
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1031
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1032
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1033
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1034
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1035
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1036
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1037
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1038
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1039
+    -0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1040
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1041
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1042
+    0x1.921fb54442d17469898cc51701b839a2p0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1043
+    0x1.921fb54442d19469898cc51701b839a2p0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1044
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1045
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1046
+    0x1.ffffffffffffffffffffffffff555555p-53,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1047
+    -0x1.ffffffffffffffffffffffffff555555p-53,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1048
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1049
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1050
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1051
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1052
+    0x1.921fb54442d17c69898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1053
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1054
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1055
+    -0x1.921fb54442d17469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1056
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1057
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1058
+    -0x1.921fb54442d17c69898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1059
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1060
+    -0x1.921fb54442d19469898cc51701b839a2p0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1061
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1062
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1063
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1065
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  }
+};
diff --git a/tests/math_data/atan2f_intel_data.h b/tests/math_data/atan2f_intel_data.h
new file mode 100644
index 0000000..ba9046c
--- /dev/null
+++ b/tests/math_data/atan2f_intel_data.h
@@ -0,0 +1,4703 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_atan2f_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffe4000187ffea90012c1fef963e3bp-60,
+    -0x1.p-100,
+    0x1.00000ep-41
+  },
+  { // Entry 1
+    0x1.ffffe4000187ffea90012c1fef963e3bp-60,
+    0x1.p-100,
+    0x1.00000ep-41
+  },
+  { // Entry 2
+    -0.0f,
+    -0x1.p-100,
+    0x1.00000ep50
+  },
+  { // Entry 3
+    0.0f,
+    0x1.p-100,
+    0x1.00000ep50
+  },
+  { // Entry 4
+    -0x1.7ffffffffff44cccff95f13b15ee40f3p-11,
+    -0x1.000002p-10,
+    0x1.555554p0
+  },
+  { // Entry 5
+    0x1.7ffffffffff44cccff95f13b15ee40f3p-11,
+    0x1.000002p-10,
+    0x1.555554p0
+  },
+  { // Entry 6
+    -0x1.fffffc00000d55550555571bbbb2d111p-23,
+    -0x1.000004p0,
+    0x1.000006p22
+  },
+  { // Entry 7
+    0x1.fffffc00000d55550555571bbbb2d111p-23,
+    0x1.000004p0,
+    0x1.000006p22
+  },
+  { // Entry 8
+    -0x1.dad20effbd30f4310a58502b0ff3965dp-2,
+    -0x1.000006p3,
+    0x1.fff186p3
+  },
+  { // Entry 9
+    0x1.dad20effbd30f4310a58502b0ff3965dp-2,
+    0x1.000006p3,
+    0x1.fff186p3
+  },
+  { // Entry 10
+    -0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    -0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 11
+    0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 12
+    -0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    -0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 13
+    0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 14
+    -0x1.43e6bb010a022abaa97bc92c2bf92b2dp-2,
+    -0x1.04fd14p-4,
+    0x1.8eb358p-3
+  },
+  { // Entry 15
+    0x1.43e6bb010a022abaa97bc92c2bf92b2dp-2,
+    0x1.04fd14p-4,
+    0x1.8eb358p-3
+  },
+  { // Entry 16
+    -0x1.905827610aa194066b73a36bcafa2041p-1,
+    -0x1.0596bcp-3,
+    0x1.0769dcp-3
+  },
+  { // Entry 17
+    0x1.905827610aa194066b73a36bcafa2041p-1,
+    0x1.0596bcp-3,
+    0x1.0769dcp-3
+  },
+  { // Entry 18
+    -0x1.f5b7710347b9a8b79afdefc31a2185a0p-2,
+    -0x1.111118p-2,
+    0x1.fffff8p-2
+  },
+  { // Entry 19
+    0x1.f5b7710347b9a8b79afdefc31a2185a0p-2,
+    0x1.111118p-2,
+    0x1.fffff8p-2
+  },
+  { // Entry 20
+    -0x1.151c477cb91ad4bb4a65e8d3fd3321f4p0,
+    -0x1.111118p-14,
+    0x1.222218p-15
+  },
+  { // Entry 21
+    0x1.151c477cb91ad4bb4a65e8d3fd3321f4p0,
+    0x1.111118p-14,
+    0x1.222218p-15
+  },
+  { // Entry 22
+    -0x1.520acb002e18e97cf7bea2ae9290357bp0,
+    -0x1.199994p-1,
+    0x1.20p-3
+  },
+  { // Entry 23
+    0x1.520acb002e18e97cf7bea2ae9290357bp0,
+    0x1.199994p-1,
+    0x1.20p-3
+  },
+  { // Entry 24
+    -0x1.d1a1ebad28ca743ee543132b45980d5cp-2,
+    -0x1.199998p-1,
+    0x1.20p0
+  },
+  { // Entry 25
+    0x1.d1a1ebad28ca743ee543132b45980d5cp-2,
+    0x1.199998p-1,
+    0x1.20p0
+  },
+  { // Entry 26
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.19999ap0,
+    0x1.p-149
+  },
+  { // Entry 27
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.19999ap0,
+    0x1.p-149
+  },
+  { // Entry 28
+    -0x1.922170fe86dc56969c78b959508174d3p-1,
+    -0x1.2c0202p9,
+    0x1.2bfffap9
+  },
+  { // Entry 29
+    0x1.922170fe86dc56969c78b959508174d3p-1,
+    0x1.2c0202p9,
+    0x1.2bfffap9
+  },
+  { // Entry 30
+    -0x1.8ec170fc51bb0a23bd010cc82696f548p0,
+    -0x1.2ffff0p6,
+    0x1.p0
+  },
+  { // Entry 31
+    0x1.8ec170fc51bb0a23bd010cc82696f548p0,
+    0x1.2ffff0p6,
+    0x1.p0
+  },
+  { // Entry 32
+    -0x1.2fffffffffffffffffffffffffffffffp-146,
+    -0x1.30p-145,
+    0x1.p1
+  },
+  { // Entry 33
+    0x1.2fffffffffffffffffffffffffffffffp-146,
+    0x1.30p-145,
+    0x1.p1
+  },
+  { // Entry 34
+    -0x1.2a73acfced538de0e37fe6b9b0a41ebap-2,
+    -0x1.333338p-2,
+    0x1.fffffcp-1
+  },
+  { // Entry 35
+    0x1.2a73acfced538de0e37fe6b9b0a41ebap-2,
+    0x1.333338p-2,
+    0x1.fffffcp-1
+  },
+  { // Entry 36
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.40p-147,
+    -0x1.fffffep127
+  },
+  { // Entry 37
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.40p-147,
+    -0x1.fffffep127
+  },
+  { // Entry 38
+    -0x1.3fffffffffffffffffffffffffffffffp-148,
+    -0x1.40p-147,
+    0x1.p1
+  },
+  { // Entry 39
+    0x1.3fffffffffffffffffffffffffffffffp-148,
+    0x1.40p-147,
+    0x1.p1
+  },
+  { // Entry 40
+    -0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    -0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 41
+    0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 42
+    -0x1.72eab640dab3ff16e57acdbe73e804d6p-2,
+    -0x1.7b4a16p-4,
+    0x1.f474d8p-3
+  },
+  { // Entry 43
+    0x1.72eab640dab3ff16e57acdbe73e804d6p-2,
+    0x1.7b4a16p-4,
+    0x1.f474d8p-3
+  },
+  { // Entry 44
+    -0x1.7fffad001ebebf3a599c03854b51e597p-9,
+    -0x1.7ffffep0,
+    0x1.000006p9
+  },
+  { // Entry 45
+    0x1.7fffad001ebebf3a599c03854b51e597p-9,
+    0x1.7ffffep0,
+    0x1.000006p9
+  },
+  { // Entry 46
+    -0x1.e3539c0f15f7f48eab208803a29a2c7dp0,
+    -0x1.85e85ep-1,
+    -0x1.fffffcp-3
+  },
+  { // Entry 47
+    0x1.e3539c0f15f7f48eab208803a29a2c7dp0,
+    0x1.85e85ep-1,
+    -0x1.fffffcp-3
+  },
+  { // Entry 48
+    -0x1.fff7a95adac43e9c9763981911f0af91p-6,
+    -0x1.881a4ap5,
+    0x1.88p10
+  },
+  { // Entry 49
+    0x1.fff7a95adac43e9c9763981911f0af91p-6,
+    0x1.881a4ap5,
+    0x1.88p10
+  },
+  { // Entry 50
+    -0x1.afffffffffffffffffffffffffffffffp-146,
+    -0x1.b0p-145,
+    0x1.p1
+  },
+  { // Entry 51
+    0x1.afffffffffffffffffffffffffffffffp-146,
+    0x1.b0p-145,
+    0x1.p1
+  },
+  { // Entry 52
+    -0x1.a5ce8d1a28d5bcb270bc016790eb423ap0,
+    -0x1.bbbbbcp-1,
+    -0x1.1179f8p-4
+  },
+  { // Entry 53
+    0x1.a5ce8d1a28d5bcb270bc016790eb423ap0,
+    0x1.bbbbbcp-1,
+    -0x1.1179f8p-4
+  },
+  { // Entry 54
+    -0x1.eafe7000a5dc264f70fe1dd7f684b160p-3,
+    -0x1.d55554p-1,
+    0x1.dffffep1
+  },
+  { // Entry 55
+    0x1.eafe7000a5dc264f70fe1dd7f684b160p-3,
+    0x1.d55554p-1,
+    0x1.dffffep1
+  },
+  { // Entry 56
+    -0x1.eb4a75001deee59a8f1d03f2e725b3aep-2,
+    -0x1.d5e926p-3,
+    0x1.c38dc4p-2
+  },
+  { // Entry 57
+    0x1.eb4a75001deee59a8f1d03f2e725b3aep-2,
+    0x1.d5e926p-3,
+    0x1.c38dc4p-2
+  },
+  { // Entry 58
+    -0x1.dfffffffffffffffffffffffffffffffp-147,
+    -0x1.e0p-146,
+    0x1.p1
+  },
+  { // Entry 59
+    0x1.dfffffffffffffffffffffffffffffffp-147,
+    0x1.e0p-146,
+    0x1.p1
+  },
+  { // Entry 60
+    -0x1.f12ab8f4f73d14abefa8e36cac1681p-19,
+    -0x1.f12a96p2,
+    0x1.ffffdcp20
+  },
+  { // Entry 61
+    0x1.f12ab8f4f73d14abefa8e36cac1681p-19,
+    0x1.f12a96p2,
+    0x1.ffffdcp20
+  },
+  { // Entry 62
+    -0x1.e42b250039e7dca1fe04ee304684c0edp-2,
+    -0x1.f8732ap-2,
+    0x1.ed16e2p-1
+  },
+  { // Entry 63
+    0x1.e42b250039e7dca1fe04ee304684c0edp-2,
+    0x1.f8732ap-2,
+    0x1.ed16e2p-1
+  },
+  { // Entry 64
+    -0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    -0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 65
+    0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 66
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 67
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 68
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 69
+    0x1.5ffff7c000317ffed70006f5ffd63cp-147,
+    0x1.p-149,
+    0x1.745d20p-3
+  },
+  { // Entry 70
+    -0x1.5ffff7c000317ffed70006f5ffd63cp-147,
+    -0x1.p-149,
+    0x1.745d20p-3
+  },
+  { // Entry 71
+    0x1.40000dc0009740067fc0477d431261e1p-146,
+    0x1.p-149,
+    0x1.999988p-4
+  },
+  { // Entry 72
+    -0x1.40000dc0009740067fc0477d431261e1p-146,
+    -0x1.p-149,
+    0x1.999988p-4
+  },
+  { // Entry 73
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 75
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 76
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 77
+    0x1.03a264fffa8f8262b1fabf7149142cb1p-1,
+    0x1.p9,
+    0x1.ccccd8p9
+  },
+  { // Entry 78
+    -0x1.03a264fffa8f8262b1fabf7149142cb1p-1,
+    -0x1.p9,
+    0x1.ccccd8p9
+  },
+  { // Entry 79
+    0x1.096d02910676c2be11dcfe9fe3175278p1,
+    0x1.000002p-1,
+    -0x1.19998ep-2
+  },
+  { // Entry 80
+    -0x1.096d02910676c2be11dcfe9fe3175278p1,
+    -0x1.000002p-1,
+    -0x1.19998ep-2
+  },
+  { // Entry 81
+    0x1.ff54b8d04e797f1463152a327d0b86c4p-2,
+    0x1.000002p-1,
+    0x1.d55560p-1
+  },
+  { // Entry 82
+    -0x1.ff54b8d04e797f1463152a327d0b86c4p-2,
+    -0x1.000002p-1,
+    0x1.d55560p-1
+  },
+  { // Entry 83
+    0x1.dac67522e883aedcc9c473438e936964p-2,
+    0x1.000002p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.dac67522e883aedcc9c473438e936964p-2,
+    -0x1.000002p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 85
+    0x1.f430999672c04e0df46fd1307191a380p-4,
+    0x1.000002p-3,
+    0x1.04bd9cp0
+  },
+  { // Entry 86
+    -0x1.f430999672c04e0df46fd1307191a380p-4,
+    -0x1.000002p-3,
+    0x1.04bd9cp0
+  },
+  { // Entry 87
+    0x1.7fb81eff43d4f24387e27e042d6562dbp-5,
+    0x1.000002p-5,
+    0x1.555552p-1
+  },
+  { // Entry 88
+    -0x1.7fb81eff43d4f24387e27e042d6562dbp-5,
+    -0x1.000002p-5,
+    0x1.555552p-1
+  },
+  { // Entry 89
+    0x1.000003000001aaaaa1aaaa80dddd98ddp-23,
+    0x1.000002p-23,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    -0x1.000003000001aaaaa1aaaa80dddd98ddp-23,
+    -0x1.000002p-23,
+    0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.921fb4fddc6a66f8e54f012a148cac4ep1,
+    0x1.000002p-25,
+    -0x1.d1745cp-1
+  },
+  { // Entry 92
+    -0x1.921fb4fddc6a66f8e54f012a148cac4ep1,
+    -0x1.000002p-25,
+    -0x1.d1745cp-1
+  },
+  { // Entry 93
+    0x1.0468a979b1a9f0624f4c1516d96c6422p1,
+    0x1.000002p0,
+    -0x1.000006p-1
+  },
+  { // Entry 94
+    -0x1.0468a979b1a9f0624f4c1516d96c6422p1,
+    -0x1.000002p0,
+    -0x1.000006p-1
+  },
+  { // Entry 95
+    0x1.b96e57abf90140f894091838c2b8a690p-1,
+    0x1.000002p0,
+    0x1.b6db76p-1
+  },
+  { // Entry 96
+    -0x1.b96e57abf90140f894091838c2b8a690p-1,
+    -0x1.000002p0,
+    0x1.b6db76p-1
+  },
+  { // Entry 97
+    0x1.f01ecfda25de70c3e0bfdea229510fd3p0,
+    0x1.000002p1,
+    -0x1.89d8a0p-1
+  },
+  { // Entry 98
+    -0x1.f01ecfda25de70c3e0bfdea229510fd3p0,
+    -0x1.000002p1,
+    -0x1.89d8a0p-1
+  },
+  { // Entry 99
+    0x1.ff5625094d950db0c74144886d91c14cp-5,
+    0x1.000004p-3,
+    0x1.ffff9ep0
+  },
+  { // Entry 100
+    -0x1.ff5625094d950db0c74144886d91c14cp-5,
+    -0x1.000004p-3,
+    0x1.ffff9ep0
+  },
+  { // Entry 101
+    0x1.fd5bd4fd7ac8b0cf6006c4414f743ea0p-4,
+    0x1.000006p3,
+    0x1.ffffe0p5
+  },
+  { // Entry 102
+    -0x1.fd5bd4fd7ac8b0cf6006c4414f743ea0p-4,
+    -0x1.000006p3,
+    0x1.ffffe0p5
+  },
+  { // Entry 103
+    0x1.8c4f470003e118b76491b0c859d6c053p1,
+    0x1.000008p-2,
+    -0x1.60p2
+  },
+  { // Entry 104
+    -0x1.8c4f470003e118b76491b0c859d6c053p1,
+    -0x1.000008p-2,
+    -0x1.60p2
+  },
+  { // Entry 105
+    0x1.2834603b51b0b1b7ada51badb8c5e787p-1,
+    0x1.00000ep-20,
+    0x1.88p-20
+  },
+  { // Entry 106
+    -0x1.2834603b51b0b1b7ada51badb8c5e787p-1,
+    -0x1.00000ep-20,
+    0x1.88p-20
+  },
+  { // Entry 107
+    0x1.f77e7bb64eb5f42395a6d8adcffa6337p-2,
+    0x1.00000ep-20,
+    0x1.ddfffep-20
+  },
+  { // Entry 108
+    -0x1.f77e7bb64eb5f42395a6d8adcffa6337p-2,
+    -0x1.00000ep-20,
+    0x1.ddfffep-20
+  },
+  { // Entry 109
+    0x1.ffd87cf6fd38249fc231c5402edbc122p-6,
+    0x1.000010p-3,
+    0x1.fffcfep1
+  },
+  { // Entry 110
+    -0x1.ffd87cf6fd38249fc231c5402edbc122p-6,
+    -0x1.000010p-3,
+    0x1.fffcfep1
+  },
+  { // Entry 111
+    0x1.fd5bd4fd76b8efb59210712d88b6e912p-4,
+    0x1.00001ep3,
+    0x1.000008p6
+  },
+  { // Entry 112
+    -0x1.fd5bd4fd76b8efb59210712d88b6e912p-4,
+    -0x1.00001ep3,
+    0x1.000008p6
+  },
+  { // Entry 113
+    0x1.fd5c357b879b2fe30dedcd3135cb691bp-4,
+    0x1.000038p3,
+    0x1.ffffe2p5
+  },
+  { // Entry 114
+    -0x1.fd5c357b879b2fe30dedcd3135cb691bp-4,
+    -0x1.000038p3,
+    0x1.ffffe2p5
+  },
+  { // Entry 115
+    0x1.99392cffffb1e34431dc0b78592ad27cp0,
+    0x1.000262p0,
+    -0x1.c67ffep-6
+  },
+  { // Entry 116
+    -0x1.99392cffffb1e34431dc0b78592ad27cp0,
+    -0x1.000262p0,
+    -0x1.c67ffep-6
+  },
+  { // Entry 117
+    0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 118
+    -0x1.ff654bdefc197c75159e23b86a1127c1p-5,
+    -0x1.0008p16,
+    0x1.000030p20
+  },
+  { // Entry 119
+    0x1.321a6aeab209211260a57ffa3329874ep-1,
+    0x1.000ep-20,
+    0x1.77fffep-20
+  },
+  { // Entry 120
+    -0x1.321a6aeab209211260a57ffa3329874ep-1,
+    -0x1.000ep-20,
+    0x1.77fffep-20
+  },
+  { // Entry 121
+    0x1.ff753bea780e4b6715b12898d26fada0p-5,
+    0x1.0010p-3,
+    0x1.000030p1
+  },
+  { // Entry 122
+    -0x1.ff753bea780e4b6715b12898d26fada0p-5,
+    -0x1.0010p-3,
+    0x1.000030p1
+  },
+  { // Entry 123
+    0x1.400ea9fffd0dcf2989a4e76f8aa5db51p-1,
+    0x1.001be4p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 124
+    -0x1.400ea9fffd0dcf2989a4e76f8aa5db51p-1,
+    -0x1.001be4p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 125
+    0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 126
+    -0x1.ff9b39e1a4728254bcb91f895e52abc2p-5,
+    -0x1.002304p3,
+    0x1.000022p7
+  },
+  { // Entry 127
+    0x1.943f9a4b36eb2b8033de5110689ec228p-1,
+    0x1.022228p0,
+    0x1.fffffcp-1
+  },
+  { // Entry 128
+    -0x1.943f9a4b36eb2b8033de5110689ec228p-1,
+    -0x1.022228p0,
+    0x1.fffffcp-1
+  },
+  { // Entry 129
+    0x1.c66450ffe905abdcfe0531d5f14c2238p0,
+    0x1.0b7778p-21,
+    -0x1.bb0cp-24
+  },
+  { // Entry 130
+    -0x1.c66450ffe905abdcfe0531d5f14c2238p0,
+    -0x1.0b7778p-21,
+    -0x1.bb0cp-24
+  },
+  { // Entry 131
+    0x1.f759ec36e59bd61b017b6ebaaf148489p-2,
+    0x1.0df6b0p9,
+    0x1.f83dc0p9
+  },
+  { // Entry 132
+    -0x1.f759ec36e59bd61b017b6ebaaf148489p-2,
+    -0x1.0df6b0p9,
+    0x1.f83dc0p9
+  },
+  { // Entry 133
+    0x1.0039e2465cf8081fc9c3f6acc6017e31p-1,
+    0x1.0f83dap9,
+    0x1.f07bd4p9
+  },
+  { // Entry 134
+    -0x1.0039e2465cf8081fc9c3f6acc6017e31p-1,
+    -0x1.0f83dap9,
+    0x1.f07bd4p9
+  },
+  { // Entry 135
+    0x1.32c00cffff80612ac29d96e5387e4acdp-1,
+    0x1.10cee0p1,
+    0x1.8f83e4p1
+  },
+  { // Entry 136
+    -0x1.32c00cffff80612ac29d96e5387e4acdp-1,
+    -0x1.10cee0p1,
+    0x1.8f83e4p1
+  },
+  { // Entry 137
+    0x1.fc9d3effcf63ce3c73d32f688b7e0d3ep-2,
+    0x1.133332p9,
+    0x1.fbbbacp9
+  },
+  { // Entry 138
+    -0x1.fc9d3effcf63ce3c73d32f688b7e0d3ep-2,
+    -0x1.133332p9,
+    0x1.fbbbacp9
+  },
+  { // Entry 139
+    0x1.13b7ba9cbd2bde0ae99dd5b90b6a6caep-4,
+    0x1.142288p-5,
+    0x1.p-1
+  },
+  { // Entry 140
+    -0x1.13b7ba9cbd2bde0ae99dd5b90b6a6caep-4,
+    -0x1.142288p-5,
+    0x1.p-1
+  },
+  { // Entry 141
+    0x1.9baeb903173549a4605c13cb0ec5c997p-1,
+    0x1.1a8a08p-1,
+    0x1.102e88p-1
+  },
+  { // Entry 142
+    -0x1.9baeb903173549a4605c13cb0ec5c997p-1,
+    -0x1.1a8a08p-1,
+    0x1.102e88p-1
+  },
+  { // Entry 143
+    0x1.585ed10003e25039288d2a597baabb4ep-1,
+    0x1.1aab0ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 144
+    -0x1.585ed10003e25039288d2a597baabb4ep-1,
+    -0x1.1aab0ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 145
+    0x1.fd7b30fe75452129dd4d92575b1b6643p-3,
+    0x1.20p0,
+    0x1.1b6db6p2
+  },
+  { // Entry 146
+    -0x1.fd7b30fe75452129dd4d92575b1b6643p-3,
+    -0x1.20p0,
+    0x1.1b6db6p2
+  },
+  { // Entry 147
+    0x1.5ee2abfffc833087a8462d843d375f40p-1,
+    0x1.221ffcp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 148
+    -0x1.5ee2abfffc833087a8462d843d375f40p-1,
+    -0x1.221ffcp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 149
+    0x1.922dd2fea41a07a00852062680449192p-1,
+    0x1.223224p9,
+    0x1.222224p9
+  },
+  { // Entry 150
+    -0x1.922dd2fea41a07a00852062680449192p-1,
+    -0x1.223224p9,
+    0x1.222224p9
+  },
+  { // Entry 151
+    0x1.fd98765b7a311ad974b5861737a89126p-4,
+    0x1.3024a6p-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 152
+    -0x1.fd98765b7a311ad974b5861737a89126p-4,
+    -0x1.3024a6p-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 153
+    0x1.ff173f59cb25f4362c94ce6ab39ece70p-4,
+    0x1.310b7ep-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 154
+    -0x1.ff173f59cb25f4362c94ce6ab39ece70p-4,
+    -0x1.310b7ep-1,
+    0x1.2ffffcp2
+  },
+  { // Entry 155
+    0x1.893661d985cfb6e78d6ed0749b2fd803p-1,
+    0x1.31f564p-4,
+    0x1.3ccc80p-4
+  },
+  { // Entry 156
+    -0x1.893661d985cfb6e78d6ed0749b2fd803p-1,
+    -0x1.31f564p-4,
+    0x1.3ccc80p-4
+  },
+  { // Entry 157
+    0x1.3800a6f8595ae7372b172ef6aec40af3p-28,
+    0x1.38p-20,
+    0x1.fffeeep7
+  },
+  { // Entry 158
+    -0x1.3800a6f8595ae7372b172ef6aec40af3p-28,
+    -0x1.38p-20,
+    0x1.fffeeep7
+  },
+  { // Entry 159
+    0x1.f51dec230b3dcdee4d4b104276bd091bp0,
+    0x1.3a58f8p0,
+    -0x1.p-1
+  },
+  { // Entry 160
+    -0x1.f51dec230b3dcdee4d4b104276bd091bp0,
+    -0x1.3a58f8p0,
+    -0x1.p-1
+  },
+  { // Entry 161
+    0x1.add4fcfffc818f75eda49eae0d8f98e2p-2,
+    0x1.3cc366p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 162
+    -0x1.add4fcfffc818f75eda49eae0d8f98e2p-2,
+    -0x1.3cc366p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 163
+    0x1.9d6394fffffe8990edfcf5c33f9e7bc1p0,
+    0x1.3fc2e4p3,
+    -0x1.c28f5ep-2
+  },
+  { // Entry 164
+    -0x1.9d6394fffffe8990edfcf5c33f9e7bc1p0,
+    -0x1.3fc2e4p3,
+    -0x1.c28f5ep-2
+  },
+  { // Entry 165
+    0x1.16d00513a5c2b116688fed7c9e6d7bf9p-3,
+    0x1.40a050p-6,
+    0x1.24924ap-3
+  },
+  { // Entry 166
+    -0x1.16d00513a5c2b116688fed7c9e6d7bf9p-3,
+    -0x1.40a050p-6,
+    0x1.24924ap-3
+  },
+  { // Entry 167
+    0x1.6d71ea27ddde729204699db97fdd037ep-1,
+    0x1.41f070p2,
+    0x1.73b782p2
+  },
+  { // Entry 168
+    -0x1.6d71ea27ddde729204699db97fdd037ep-1,
+    -0x1.41f070p2,
+    0x1.73b782p2
+  },
+  { // Entry 169
+    0x1.6e2ce2182a658d8450720e677f21ce61p-1,
+    0x1.429ap9,
+    0x1.7368e2p9
+  },
+  { // Entry 170
+    -0x1.6e2ce2182a658d8450720e677f21ce61p-1,
+    -0x1.429ap9,
+    0x1.7368e2p9
+  },
+  { // Entry 171
+    0x1.740a75f5e00f3c2a265818a8e05ccc99p-1,
+    0x1.435e54p0,
+    0x1.6bca20p0
+  },
+  { // Entry 172
+    -0x1.740a75f5e00f3c2a265818a8e05ccc99p-1,
+    -0x1.435e54p0,
+    0x1.6bca20p0
+  },
+  { // Entry 173
+    0x1.4eb92766fa1641bdcd6b72f3bd619251p-1,
+    0x1.5baa3ap-2,
+    0x1.c5c85cp-2
+  },
+  { // Entry 174
+    -0x1.4eb92766fa1641bdcd6b72f3bd619251p-1,
+    -0x1.5baa3ap-2,
+    0x1.c5c85cp-2
+  },
+  { // Entry 175
+    0x1.feb17ca8152a6f1c96ebab23e1ca4438p-4,
+    0x1.5d6c50p-8,
+    0x1.5c80p-5
+  },
+  { // Entry 176
+    -0x1.feb17ca8152a6f1c96ebab23e1ca4438p-4,
+    -0x1.5d6c50p-8,
+    0x1.5c80p-5
+  },
+  { // Entry 177
+    0x1.61e054ffff517564fbb75fa927e9317dp1,
+    0x1.62b140p1,
+    -0x1.c0p2
+  },
+  { // Entry 178
+    -0x1.61e054ffff517564fbb75fa927e9317dp1,
+    -0x1.62b140p1,
+    -0x1.c0p2
+  },
+  { // Entry 179
+    0x1.926064fffd342f8f129a70df92a458b3p-1,
+    0x1.633de6p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 180
+    -0x1.926064fffd342f8f129a70df92a458b3p-1,
+    -0x1.633de6p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 181
+    0x1.ddf15cfffeff907133df83405cf1c383p-2,
+    0x1.65a3e2p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 182
+    -0x1.ddf15cfffeff907133df83405cf1c383p-2,
+    -0x1.65a3e2p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 183
+    0x1.a8c692fc3efe50c92076f2cdd3f6bd92p0,
+    0x1.68b44ep0,
+    -0x1.p-3
+  },
+  { // Entry 184
+    -0x1.a8c692fc3efe50c92076f2cdd3f6bd92p0,
+    -0x1.68b44ep0,
+    -0x1.p-3
+  },
+  { // Entry 185
+    0x1.1d730dfffc0d10826bfff4268c4db210p0,
+    0x1.6a0092p0,
+    0x1.62e42ep-1
+  },
+  { // Entry 186
+    -0x1.1d730dfffc0d10826bfff4268c4db210p0,
+    -0x1.6a0092p0,
+    0x1.62e42ep-1
+  },
+  { // Entry 187
+    0x1.9a06c6fffcb000f0eb371998c338bdaep-1,
+    0x1.6e04f2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 188
+    -0x1.9a06c6fffcb000f0eb371998c338bdaep-1,
+    -0x1.6e04f2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 189
+    0x1.921f9f0000092b6cc81e3cd97531299cp0,
+    0x1.70p-1,
+    0x1.0011p-20
+  },
+  { // Entry 190
+    -0x1.921f9f0000092b6cc81e3cd97531299cp0,
+    -0x1.70p-1,
+    0x1.0011p-20
+  },
+  { // Entry 191
+    0x1.55a1f300040b007b9fcf88e0bbaa4bf9p0,
+    0x1.707652p1,
+    0x1.62e42ep-1
+  },
+  { // Entry 192
+    -0x1.55a1f300040b007b9fcf88e0bbaa4bf9p0,
+    -0x1.707652p1,
+    0x1.62e42ep-1
+  },
+  { // Entry 193
+    0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 194
+    -0x1.ffa33dcc72ce5a24fbffc472e6d8aa54p-5,
+    -0x1.77fffep-15,
+    0x1.77c6e2p-11
+  },
+  { // Entry 195
+    0x1.7702d9c0f7f4e1f5f65e806e4e9e2eb4p-3,
+    0x1.7b4274p-2,
+    0x1.000006p1
+  },
+  { // Entry 196
+    -0x1.7702d9c0f7f4e1f5f65e806e4e9e2eb4p-3,
+    -0x1.7b4274p-2,
+    0x1.000006p1
+  },
+  { // Entry 197
+    0x1.fac9255e2e84501d7f69135fa78a7842p-2,
+    0x1.7c1570p-2,
+    0x1.601e80p-1
+  },
+  { // Entry 198
+    -0x1.fac9255e2e84501d7f69135fa78a7842p-2,
+    -0x1.7c1570p-2,
+    0x1.601e80p-1
+  },
+  { // Entry 199
+    0x1.a4c2220003e9ff7184d11c11dbed790ap-1,
+    0x1.7db652p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 200
+    -0x1.a4c2220003e9ff7184d11c11dbed790ap-1,
+    -0x1.7db652p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 201
+    0x1.487f682022d3a5562109a0306dcb05a2p-1,
+    0x1.7e7a9ap-2,
+    0x1.p-1
+  },
+  { // Entry 202
+    -0x1.487f682022d3a5562109a0306dcb05a2p-1,
+    -0x1.7e7a9ap-2,
+    0x1.p-1
+  },
+  { // Entry 203
+    0x1.e48b2fddff19e1b2ad305bf85f553acfp0,
+    0x1.7fbddep0,
+    -0x1.p-1
+  },
+  { // Entry 204
+    -0x1.e48b2fddff19e1b2ad305bf85f553acfp0,
+    -0x1.7fbddep0,
+    -0x1.p-1
+  },
+  { // Entry 205
+    0x1.8000030000017ffff0ffffc44ccc87ccp-23,
+    0x1.80p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 206
+    -0x1.8000030000017ffff0ffffc44ccc87ccp-23,
+    -0x1.80p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 207
+    0x1.236ede000419f0232206a19dc1c9ba72p0,
+    0x1.807cdcp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 208
+    -0x1.236ede000419f0232206a19dc1c9ba72p0,
+    -0x1.807cdcp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 209
+    0x1.23af91000432ff7ca91b5869446d2677p0,
+    0x1.817ccep0,
+    0x1.62e42ep-1
+  },
+  { // Entry 210
+    -0x1.23af91000432ff7ca91b5869446d2677p0,
+    -0x1.817ccep0,
+    0x1.62e42ep-1
+  },
+  { // Entry 211
+    0x1.1d0d78ffde75e005ce13a48bb96c20d2p1,
+    0x1.86bcf6p-9,
+    -0x1.2cde14p-9
+  },
+  { // Entry 212
+    -0x1.1d0d78ffde75e005ce13a48bb96c20d2p1,
+    -0x1.86bcf6p-9,
+    -0x1.2cde14p-9
+  },
+  { // Entry 213
+    0x1.c40b44f7d49ec3bebbe6c143bb874988p-17,
+    0x1.88p-7,
+    0x1.bbfdfep9
+  },
+  { // Entry 214
+    -0x1.c40b44f7d49ec3bebbe6c143bb874988p-17,
+    -0x1.88p-7,
+    0x1.bbfdfep9
+  },
+  { // Entry 215
+    0x1.ac7dfffd2b94ebd2b4155d81fcb743c8p-1,
+    0x1.8ba2bcp9,
+    0x1.64d916p9
+  },
+  { // Entry 216
+    -0x1.ac7dfffd2b94ebd2b4155d81fcb743c8p-1,
+    -0x1.8ba2bcp9,
+    0x1.64d916p9
+  },
+  { // Entry 217
+    0x1.f4436c2918d5691620bddea5f0bdb99fp0,
+    0x1.904a6ap9,
+    -0x1.42e220p8
+  },
+  { // Entry 218
+    -0x1.f4436c2918d5691620bddea5f0bdb99fp0,
+    -0x1.904a6ap9,
+    -0x1.42e220p8
+  },
+  { // Entry 219
+    0x1.f280a4a85a9834808487443a22c27f9cp-4,
+    0x1.90c864p-5,
+    0x1.99999ap-2
+  },
+  { // Entry 220
+    -0x1.f280a4a85a9834808487443a22c27f9cp-4,
+    -0x1.90c864p-5,
+    0x1.99999ap-2
+  },
+  { // Entry 221
+    0x1.0a58d9000005f0ba9a470ce5241f1b9cp-1,
+    0x1.969770p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 222
+    -0x1.0a58d9000005f0ba9a470ce5241f1b9cp-1,
+    -0x1.969770p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 223
+    0x1.f730a597948e5c35433d522c24bdefa5p-1,
+    0x1.9b2698p9,
+    0x1.1219d6p9
+  },
+  { // Entry 224
+    -0x1.f730a597948e5c35433d522c24bdefa5p-1,
+    -0x1.9b2698p9,
+    0x1.1219d6p9
+  },
+  { // Entry 225
+    0x1.25c78f0002b5030803b34e0d3d565ec5p1,
+    0x1.a99552p-9,
+    -0x1.788ee0p-9
+  },
+  { // Entry 226
+    -0x1.25c78f0002b5030803b34e0d3d565ec5p1,
+    -0x1.a99552p-9,
+    -0x1.788ee0p-9
+  },
+  { // Entry 227
+    0x1.fec12756125a1c17f496ca7eff6b5d07p-4,
+    0x1.aac766p-1,
+    0x1.a99994p2
+  },
+  { // Entry 228
+    -0x1.fec12756125a1c17f496ca7eff6b5d07p-4,
+    -0x1.aac766p-1,
+    0x1.a99994p2
+  },
+  { // Entry 229
+    0x1.ff2726fffadc57a59c068daf94011a06p-2,
+    0x1.acd9c8p-2,
+    0x1.89469ep-1
+  },
+  { // Entry 230
+    -0x1.ff2726fffadc57a59c068daf94011a06p-2,
+    -0x1.acd9c8p-2,
+    0x1.89469ep-1
+  },
+  { // Entry 231
+    0x1.6cefa52cd49df53a19a9664ef79b5d21p-1,
+    0x1.ba8cp-2,
+    0x1.p-1
+  },
+  { // Entry 232
+    -0x1.6cefa52cd49df53a19a9664ef79b5d21p-1,
+    -0x1.ba8cp-2,
+    0x1.p-1
+  },
+  { // Entry 233
+    0x1.ffecd1bdfc10703be4cadb1ac64a6eacp-6,
+    0x1.bf31e2p-5,
+    0x1.bf1d60p0
+  },
+  { // Entry 234
+    -0x1.ffecd1bdfc10703be4cadb1ac64a6eacp-6,
+    -0x1.bf31e2p-5,
+    0x1.bf1d60p0
+  },
+  { // Entry 235
+    0x1.d93732f77c9157c16887ce5aa762f389p-6,
+    0x1.c1aep-5,
+    0x1.e66658p0
+  },
+  { // Entry 236
+    -0x1.d93732f77c9157c16887ce5aa762f389p-6,
+    -0x1.c1aep-5,
+    0x1.e66658p0
+  },
+  { // Entry 237
+    0x1.cea8bcf57199048990f21a209a2d2d3ep-45,
+    0x1.c25c26p-44,
+    0x1.f263a0p0
+  },
+  { // Entry 238
+    -0x1.cea8bcf57199048990f21a209a2d2d3ep-45,
+    -0x1.c25c26p-44,
+    0x1.f263a0p0
+  },
+  { // Entry 239
+    0x1.90004702e62bf58fd25e1cb1c208fb8bp-1,
+    0x1.c8dcb8p2,
+    0x1.ccaa94p2
+  },
+  { // Entry 240
+    -0x1.90004702e62bf58fd25e1cb1c208fb8bp-1,
+    -0x1.c8dcb8p2,
+    0x1.ccaa94p2
+  },
+  { // Entry 241
+    0x1.fd7c865a3e71ad0d8a724c912f6fb8b9p-4,
+    0x1.d64866p-3,
+    0x1.d629c0p0
+  },
+  { // Entry 242
+    -0x1.fd7c865a3e71ad0d8a724c912f6fb8b9p-4,
+    -0x1.d64866p-3,
+    0x1.d629c0p0
+  },
+  { // Entry 243
+    0x1.4aa669000170483715efe0528369e73ep-1,
+    0x1.d7011cp0,
+    0x1.3880c8p1
+  },
+  { // Entry 244
+    -0x1.4aa669000170483715efe0528369e73ep-1,
+    -0x1.d7011cp0,
+    0x1.3880c8p1
+  },
+  { // Entry 245
+    0x1.f420e6032da03c581c213d0cc2eacf5bp-2,
+    0x1.db6e30p-2,
+    0x1.bf62a4p-1
+  },
+  { // Entry 246
+    -0x1.f420e6032da03c581c213d0cc2eacf5bp-2,
+    -0x1.db6e30p-2,
+    0x1.bf62a4p-1
+  },
+  { // Entry 247
+    0x1.922dc15dd25e294f02361f0292bc0df8p-1,
+    0x1.dddddcp-2,
+    0x1.ddc3a4p-2
+  },
+  { // Entry 248
+    -0x1.922dc15dd25e294f02361f0292bc0df8p-1,
+    -0x1.dddddcp-2,
+    0x1.ddc3a4p-2
+  },
+  { // Entry 249
+    0x1.9d6fd902defaede7830883b7a2788da8p-1,
+    0x1.de61fcp9,
+    0x1.c9b22cp9
+  },
+  { // Entry 250
+    -0x1.9d6fd902defaede7830883b7a2788da8p-1,
+    -0x1.de61fcp9,
+    0x1.c9b22cp9
+  },
+  { // Entry 251
+    0x1.7ee180ca27095c5506b0fa68e94004d0p-4,
+    0x1.dffffep-2,
+    0x1.40p2
+  },
+  { // Entry 252
+    -0x1.7ee180ca27095c5506b0fa68e94004d0p-4,
+    -0x1.dffffep-2,
+    0x1.40p2
+  },
+  { // Entry 253
+    0x1.7d848f000bfaf243f75b3a1218dad94ep0,
+    0x1.dffffep2,
+    0x1.35c292p-1
+  },
+  { // Entry 254
+    -0x1.7d848f000bfaf243f75b3a1218dad94ep0,
+    -0x1.dffffep2,
+    0x1.35c292p-1
+  },
+  { // Entry 255
+    0x1.dfffe63601c1383bc54eea3773a4624fp-11,
+    0x1.dffffep10,
+    0x1.000008p21
+  },
+  { // Entry 256
+    -0x1.dfffe63601c1383bc54eea3773a4624fp-11,
+    -0x1.dffffep10,
+    0x1.000008p21
+  },
+  { // Entry 257
+    0x1.8f82d1b1443d17b008f18f7822175902p-4,
+    0x1.e0f078p-6,
+    0x1.333334p-2
+  },
+  { // Entry 258
+    -0x1.8f82d1b1443d17b008f18f7822175902p-4,
+    -0x1.e0f078p-6,
+    0x1.333334p-2
+  },
+  { // Entry 259
+    0x1.07795d7bc568d7597605f1e44388198ep1,
+    0x1.e2be36p-2,
+    -0x1.fffffcp-3
+  },
+  { // Entry 260
+    -0x1.07795d7bc568d7597605f1e44388198ep1,
+    -0x1.e2be36p-2,
+    -0x1.fffffcp-3
+  },
+  { // Entry 261
+    0x1.fff95e57a0b39bb8afc31a89674dc197p-92,
+    0x1.e62448p8,
+    0x1.e62a94p99
+  },
+  { // Entry 262
+    -0x1.fff95e57a0b39bb8afc31a89674dc197p-92,
+    -0x1.e62448p8,
+    0x1.e62a94p99
+  },
+  { // Entry 263
+    0x1.0e06f7000a4e54e7181ed79d635dead3p0,
+    0x1.e783d4p-1,
+    0x1.148cf8p-1
+  },
+  { // Entry 264
+    -0x1.0e06f7000a4e54e7181ed79d635dead3p0,
+    -0x1.e783d4p-1,
+    0x1.148cf8p-1
+  },
+  { // Entry 265
+    0x1.fea63fbd167cf3f4fa0987d1e28cd75fp-4,
+    0x1.e7a55ap-1,
+    0x1.e66660p2
+  },
+  { // Entry 266
+    -0x1.fea63fbd167cf3f4fa0987d1e28cd75fp-4,
+    -0x1.e7a55ap-1,
+    0x1.e66660p2
+  },
+  { // Entry 267
+    0x1.d32abcfffffee42f5ad6cc888072e445p0,
+    0x1.ece6d4p0,
+    -0x1.p-1
+  },
+  { // Entry 268
+    -0x1.d32abcfffffee42f5ad6cc888072e445p0,
+    -0x1.ece6d4p0,
+    -0x1.p-1
+  },
+  { // Entry 269
+    0x1.ecac96fad1d02ec25eecde4b7f0b97eap-4,
+    0x1.ef1060p-5,
+    0x1.p-1
+  },
+  { // Entry 270
+    -0x1.ecac96fad1d02ec25eecde4b7f0b97eap-4,
+    -0x1.ef1060p-5,
+    0x1.p-1
+  },
+  { // Entry 271
+    0x1.1202c2e6b84549d2bdd30f506adfa9d4p0,
+    0x1.f07bd2p9,
+    0x1.0f83dcp9
+  },
+  { // Entry 272
+    -0x1.1202c2e6b84549d2bdd30f506adfa9d4p0,
+    -0x1.f07bd2p9,
+    0x1.0f83dcp9
+  },
+  { // Entry 273
+    0x1.ffe7d9701b27043f401f2771fcff61aap-6,
+    0x1.fddffep15,
+    0x1.fdcd90p20
+  },
+  { // Entry 274
+    -0x1.ffe7d9701b27043f401f2771fcff61aap-6,
+    -0x1.fddffep15,
+    0x1.fdcd90p20
+  },
+  { // Entry 275
+    0x1.919c94434fc91fb77041e0d4eaadf614p-1,
+    0x1.fefffep-10,
+    0x1.0003p-9
+  },
+  { // Entry 276
+    -0x1.919c94434fc91fb77041e0d4eaadf614p-1,
+    -0x1.fefffep-10,
+    0x1.0003p-9
+  },
+  { // Entry 277
+    0x1.1b57780820085bc0391cbd61b2fd2335p0,
+    0x1.ff8ffep-20,
+    0x1.000088p-20
+  },
+  { // Entry 278
+    -0x1.1b57780820085bc0391cbd61b2fd2335p0,
+    -0x1.ff8ffep-20,
+    0x1.000088p-20
+  },
+  { // Entry 279
+    0x1.ff976af6e817ac0b343cc79da075b8a8p-6,
+    0x1.ffc0p-139,
+    0x1.fffep-134
+  },
+  { // Entry 280
+    -0x1.ff976af6e817ac0b343cc79da075b8a8p-6,
+    -0x1.ffc0p-139,
+    0x1.fffep-134
+  },
+  { // Entry 281
+    0x1.ff7fc3e4933e894c72260e0533856313p-4,
+    0x1.fff77ep-5,
+    0x1.fdcd2ep-2
+  },
+  { // Entry 282
+    -0x1.ff7fc3e4933e894c72260e0533856313p-4,
+    -0x1.fff77ep-5,
+    0x1.fdcd2ep-2
+  },
+  { // Entry 283
+    0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 284
+    -0x1.ff571a1535e84a3ed0617f7c8bd43c9dp-5,
+    -0x1.ffffdep-3,
+    0x1.fffe7ep1
+  },
+  { // Entry 285
+    0x1.fffffdfffff7ffffdfffff7ffffdffffp-127,
+    0x1.fffff6p0,
+    0x1.fffff8p126
+  },
+  { // Entry 286
+    -0x1.fffffdfffff7ffffdfffff7ffffdffffp-127,
+    -0x1.fffff6p0,
+    0x1.fffff8p126
+  },
+  { // Entry 287
+    0x1.ffffec000077fffd05556b3554a0155bp-34,
+    0x1.fffff8p-2,
+    0x1.000006p32
+  },
+  { // Entry 288
+    -0x1.ffffec000077fffd05556b3554a0155bp-34,
+    -0x1.fffff8p-2,
+    0x1.000006p32
+  },
+  { // Entry 289
+    0x1.55554fffffffffffffffffffffffffffp-104,
+    0x1.fffff8p-127,
+    0x1.80p-23
+  },
+  { // Entry 290
+    -0x1.55554fffffffffffffffffffffffffffp-104,
+    -0x1.fffff8p-127,
+    0x1.80p-23
+  },
+  { // Entry 291
+    0x1.ff54beeda807aa4ec5698ce8cc7dcba8p-2,
+    0x1.fffffcp-1,
+    0x1.d55552p0
+  },
+  { // Entry 292
+    -0x1.ff54beeda807aa4ec5698ce8cc7dcba8p-2,
+    -0x1.fffffcp-1,
+    0x1.d55552p0
+  },
+  { // Entry 293
+    0x1.fffff800000fffffe000003fffff80p-129,
+    0x1.fffffcp-2,
+    0x1.000002p127
+  },
+  { // Entry 294
+    -0x1.fffff800000fffffe000003fffff80p-129,
+    -0x1.fffffcp-2,
+    0x1.000002p127
+  },
+  { // Entry 295
+    0x1.d7625deb9d3d113e0be1ba5dac42e6c0p-2,
+    0x1.fffffcp-2,
+    0x1.022228p0
+  },
+  { // Entry 296
+    -0x1.d7625deb9d3d113e0be1ba5dac42e6c0p-2,
+    -0x1.fffffcp-2,
+    0x1.022228p0
+  },
+  { // Entry 297
+    0x1.0c30b75fc8b0637fcbaf3ed21f47bbd5p-118,
+    0x1.fffffcp-122,
+    0x1.e8ba40p-4
+  },
+  { // Entry 298
+    -0x1.0c30b75fc8b0637fcbaf3ed21f47bbd5p-118,
+    -0x1.fffffcp-122,
+    0x1.e8ba40p-4
+  },
+  { // Entry 299
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-126,
+    0x1.p1
+  },
+  { // Entry 300
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-126,
+    0x1.p1
+  },
+  { // Entry 301
+    0x1.f5b748fc32492f9b0e1a9e29c7b40a45p-3,
+    0x1.fffffcp20,
+    0x1.00000ap23
+  },
+  { // Entry 302
+    -0x1.f5b748fc32492f9b0e1a9e29c7b40a45p-3,
+    -0x1.fffffcp20,
+    0x1.00000ap23
+  },
+  { // Entry 303
+    0x1.e8009efffc72402f56046bbb3775db7ep-2,
+    0x1.6e6d52p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 304
+    -0x1.e8009efffc72402f56046bbb3775db7ep-2,
+    -0x1.6e6d52p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 305
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 306
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 307
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 308
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 309
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 310
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 311
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 312
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 313
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 314
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 315
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 316
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p0,
+    0x1.p3
+  },
+  { // Entry 317
+    0x1.7249faa996a216a33079d20319e727c3p0,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 318
+    -0x1.7249faa996a216a33079d20319e727c3p0,
+    -0x1.p3,
+    0x1.p0
+  },
+  { // Entry 319
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 320
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p3,
+    0x1.p3
+  },
+  { // Entry 321
+    0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    0x1.p0,
+    0x1.p9
+  },
+  { // Entry 322
+    -0x1.ffffd5555bbbba9729ab7aac089473a3p-10,
+    -0x1.p0,
+    0x1.p9
+  },
+  { // Entry 323
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 324
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.p0,
+    0x1.p10
+  },
+  { // Entry 325
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.p3,
+    0x1.p9
+  },
+  { // Entry 326
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.p3,
+    0x1.p9
+  },
+  { // Entry 327
+    0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 328
+    -0x1.fffd555bbba972d00c46a3f77cc15e8ep-8,
+    -0x1.p3,
+    0x1.p10
+  },
+  { // Entry 329
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 330
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p0,
+    0x1.p100
+  },
+  { // Entry 331
+    0x1.ffffffffffffffffffffffffffffffffp-102,
+    0x1.p0,
+    0x1.p101
+  },
+  { // Entry 332
+    -0x1.ffffffffffffffffffffffffffffffffp-102,
+    -0x1.p0,
+    0x1.p101
+  },
+  { // Entry 333
+    0x1.ffffffffffffffffffffffffffffffffp-98,
+    0x1.p3,
+    0x1.p100
+  },
+  { // Entry 334
+    -0x1.ffffffffffffffffffffffffffffffffp-98,
+    -0x1.p3,
+    0x1.p100
+  },
+  { // Entry 335
+    0x1.ffffffffffffffffffffffffffffffffp-99,
+    0x1.p3,
+    0x1.p101
+  },
+  { // Entry 336
+    -0x1.ffffffffffffffffffffffffffffffffp-99,
+    -0x1.p3,
+    0x1.p101
+  },
+  { // Entry 337
+    0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    0x1.p9,
+    0x1.p0
+  },
+  { // Entry 338
+    -0x1.919fb54eed7a957ae3c25a3856b61485p0,
+    -0x1.p9,
+    0x1.p0
+  },
+  { // Entry 339
+    0x1.8e1fca98cb63311299ee93be01605c21p0,
+    0x1.p9,
+    0x1.p3
+  },
+  { // Entry 340
+    -0x1.8e1fca98cb63311299ee93be01605c21p0,
+    -0x1.p9,
+    0x1.p3
+  },
+  { // Entry 341
+    0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 342
+    -0x1.91dfb5459826ccf212a796bd00187cb7p0,
+    -0x1.p10,
+    0x1.p0
+  },
+  { // Entry 343
+    0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 344
+    -0x1.901fb7eee715daf6b9807e730a3b7843p0,
+    -0x1.p10,
+    0x1.p3
+  },
+  { // Entry 345
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 346
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p9,
+    0x1.p9
+  },
+  { // Entry 347
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p9,
+    0x1.p10
+  },
+  { // Entry 348
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p9,
+    0x1.p10
+  },
+  { // Entry 349
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p10,
+    0x1.p9
+  },
+  { // Entry 350
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p10,
+    0x1.p9
+  },
+  { // Entry 351
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 352
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p10,
+    0x1.p10
+  },
+  { // Entry 353
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.p9,
+    0x1.p100
+  },
+  { // Entry 354
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.p9,
+    0x1.p100
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-93,
+    0x1.p9,
+    0x1.p101
+  },
+  { // Entry 356
+    -0x1.ffffffffffffffffffffffffffffffffp-93,
+    -0x1.p9,
+    0x1.p101
+  },
+  { // Entry 357
+    0x1.ffffffffffffffffffffffffffffffffp-91,
+    0x1.p10,
+    0x1.p100
+  },
+  { // Entry 358
+    -0x1.ffffffffffffffffffffffffffffffffp-91,
+    -0x1.p10,
+    0x1.p100
+  },
+  { // Entry 359
+    0x1.ffffffffffffffffffffffffffffffffp-92,
+    0x1.p10,
+    0x1.p101
+  },
+  { // Entry 360
+    -0x1.ffffffffffffffffffffffffffffffffp-92,
+    -0x1.p10,
+    0x1.p101
+  },
+  { // Entry 361
+    0x1.921fb54442d18469898cc516f1b839a2p0,
+    0x1.p100,
+    0x1.p0
+  },
+  { // Entry 362
+    -0x1.921fb54442d18469898cc516f1b839a2p0,
+    -0x1.p100,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.921fb54442d18469898cc51681b839a2p0,
+    0x1.p100,
+    0x1.p3
+  },
+  { // Entry 364
+    -0x1.921fb54442d18469898cc51681b839a2p0,
+    -0x1.p100,
+    0x1.p3
+  },
+  { // Entry 365
+    0x1.921fb54442d18469898cc516f9b839a2p0,
+    0x1.p101,
+    0x1.p0
+  },
+  { // Entry 366
+    -0x1.921fb54442d18469898cc516f9b839a2p0,
+    -0x1.p101,
+    0x1.p0
+  },
+  { // Entry 367
+    0x1.921fb54442d18469898cc516c1b839a2p0,
+    0x1.p101,
+    0x1.p3
+  },
+  { // Entry 368
+    -0x1.921fb54442d18469898cc516c1b839a2p0,
+    -0x1.p101,
+    0x1.p3
+  },
+  { // Entry 369
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.p100,
+    0x1.p9
+  },
+  { // Entry 370
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.p100,
+    0x1.p9
+  },
+  { // Entry 371
+    0x1.921fb54442d18469898cc4d701b839a2p0,
+    0x1.p100,
+    0x1.p10
+  },
+  { // Entry 372
+    -0x1.921fb54442d18469898cc4d701b839a2p0,
+    -0x1.p100,
+    0x1.p10
+  },
+  { // Entry 373
+    0x1.921fb54442d18469898cc50701b839a2p0,
+    0x1.p101,
+    0x1.p9
+  },
+  { // Entry 374
+    -0x1.921fb54442d18469898cc50701b839a2p0,
+    -0x1.p101,
+    0x1.p9
+  },
+  { // Entry 375
+    0x1.921fb54442d18469898cc4f701b839a2p0,
+    0x1.p101,
+    0x1.p10
+  },
+  { // Entry 376
+    -0x1.921fb54442d18469898cc4f701b839a2p0,
+    -0x1.p101,
+    0x1.p10
+  },
+  { // Entry 377
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 378
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p100,
+    0x1.p100
+  },
+  { // Entry 379
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p100,
+    0x1.p101
+  },
+  { // Entry 380
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p100,
+    0x1.p101
+  },
+  { // Entry 381
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p101,
+    0x1.p100
+  },
+  { // Entry 382
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p101,
+    0x1.p100
+  },
+  { // Entry 383
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p101,
+    0x1.p101
+  },
+  { // Entry 384
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p101,
+    0x1.p101
+  },
+  { // Entry 385
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 386
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 387
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 388
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 389
+    -0.0f,
+    -0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 390
+    0.0f,
+    0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 391
+    0.0,
+    0.0,
+    0x1.fffffep0
+  },
+  { // Entry 392
+    0.0,
+    0.0,
+    0x1.p1
+  },
+  { // Entry 393
+    0.0,
+    0.0,
+    0x1.000002p1
+  },
+  { // Entry 394
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 395
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep0
+  },
+  { // Entry 396
+    0.0f,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 397
+    -0.0f,
+    -0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 398
+    0.0f,
+    0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 399
+    -0.0f,
+    -0x1.p-149,
+    0x1.000002p1
+  },
+  { // Entry 400
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 401
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 402
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 403
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 404
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 405
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 406
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 407
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 408
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 409
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 410
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 411
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 412
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 413
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 414
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 415
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 416
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 417
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 418
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 419
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p-3,
+    0x1.fffffep0
+  },
+  { // Entry 420
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 421
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-3,
+    0x1.p1
+  },
+  { // Entry 422
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 423
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p-3,
+    0x1.000002p1
+  },
+  { // Entry 424
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 425
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p-3,
+    0x1.fffffep0
+  },
+  { // Entry 426
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 427
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-3,
+    0x1.p1
+  },
+  { // Entry 428
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 429
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p-3,
+    0x1.000002p1
+  },
+  { // Entry 430
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 431
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep-4,
+    0x1.fffffep0
+  },
+  { // Entry 432
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 433
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-4,
+    0x1.p1
+  },
+  { // Entry 434
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 435
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep-4,
+    0x1.000002p1
+  },
+  { // Entry 436
+    0x1.a271f5940186465d406645186f3ff94ap-2,
+    0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 437
+    -0x1.a271f5940186465d406645186f3ff94ap-2,
+    -0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 438
+    0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 439
+    -0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    -0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 440
+    0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 441
+    -0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    -0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 442
+    0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 443
+    -0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    -0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 444
+    0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 445
+    -0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    -0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 446
+    0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 447
+    -0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    -0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 448
+    0x1.a271f8f252607a942b743a29251f41b3p-2,
+    0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 449
+    -0x1.a271f8f252607a942b743a29251f41b3p-2,
+    -0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 450
+    0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 451
+    -0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    -0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 452
+    0x1.a271f492240706fe45667de97ee1051bp-2,
+    0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 453
+    -0x1.a271f492240706fe45667de97ee1051bp-2,
+    -0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 454
+    -0x1.a271f8f252607a942b743a29251f41b3p-2,
+    -0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 455
+    0x1.a271f8f252607a942b743a29251f41b3p-2,
+    0x1.bb67b0p-1,
+    0x1.fffffep0
+  },
+  { // Entry 456
+    -0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    -0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 457
+    0x1.a271f77ced9589d7e7784be8c59b289ep-2,
+    0x1.bb67b0p-1,
+    0x1.p1
+  },
+  { // Entry 458
+    -0x1.a271f492240706fe45667de97ee1051bp-2,
+    -0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 459
+    0x1.a271f492240706fe45667de97ee1051bp-2,
+    0x1.bb67b0p-1,
+    0x1.000002p1
+  },
+  { // Entry 460
+    -0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    -0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 461
+    0x1.a271f74329f3af14ab02f72e14627e3ep-2,
+    0x1.bb67aep-1,
+    0x1.fffffep0
+  },
+  { // Entry 462
+    -0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    -0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 463
+    0x1.a271f5cdc529e5591cbe01f0dff5d436p-2,
+    0x1.bb67aep-1,
+    0x1.p1
+  },
+  { // Entry 464
+    -0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    -0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 465
+    0x1.a271f2e2fb9db080e2f78cbaa7ae76dap-2,
+    0x1.bb67aep-1,
+    0x1.000002p1
+  },
+  { // Entry 466
+    -0x1.a271f5940186465d406645186f3ff94ap-2,
+    -0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 467
+    0x1.a271f5940186465d406645186f3ff94ap-2,
+    0x1.bb67acp-1,
+    0x1.fffffep0
+  },
+  { // Entry 468
+    -0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    -0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 469
+    0x1.a271f41e9cbda3a2694ca4df76dc4a86p-2,
+    0x1.bb67acp-1,
+    0x1.p1
+  },
+  { // Entry 470
+    -0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    -0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 471
+    0x1.a271f133d333bccb9aba4067b1d551a2p-2,
+    0x1.bb67acp-1,
+    0x1.000002p1
+  },
+  { // Entry 472
+    0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 473
+    -0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    -0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 474
+    0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 475
+    -0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    -0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 476
+    0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 477
+    -0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    -0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 478
+    0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 479
+    -0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    -0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 480
+    0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 481
+    -0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    -0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 482
+    0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 483
+    -0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    -0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 484
+    0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 485
+    -0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    -0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 486
+    0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 487
+    -0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    -0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 488
+    0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 489
+    -0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    -0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 490
+    -0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    -0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 491
+    0x1.e1fc0b42bd2dac34dc336ebe1a5dd639p-1,
+    0x1.5f89e4p1,
+    0x1.fffffep0
+  },
+  { // Entry 492
+    -0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    -0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 493
+    0x1.e1fc0a4f18437f0b6a89382bec836a03p-1,
+    0x1.5f89e4p1,
+    0x1.p1
+  },
+  { // Entry 494
+    -0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    -0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 495
+    0x1.e1fc0867ce711f50acd36ef1986a9ed3p-1,
+    0x1.5f89e4p1,
+    0x1.000002p1
+  },
+  { // Entry 496
+    -0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    -0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 497
+    0x1.e1fc09dfe1de87be63d2efa76aedeef1p-1,
+    0x1.5f89e2p1,
+    0x1.fffffep0
+  },
+  { // Entry 498
+    -0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    -0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 499
+    0x1.e1fc08ec3cf3edab43c88895dc8bd149p-1,
+    0x1.5f89e2p1,
+    0x1.p1
+  },
+  { // Entry 500
+    -0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    -0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 501
+    0x1.e1fc0704f320b41d2df91c8fc7a785a6p-1,
+    0x1.5f89e2p1,
+    0x1.000002p1
+  },
+  { // Entry 502
+    -0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    -0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 503
+    0x1.e1fc087d068cbfd25c64d0da9961de0dp-1,
+    0x1.5f89e0p1,
+    0x1.fffffep0
+  },
+  { // Entry 504
+    -0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    -0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 505
+    0x1.e1fc078961a1b8d58eff0ef3573e5ebbp-1,
+    0x1.5f89e0p1,
+    0x1.p1
+  },
+  { // Entry 506
+    -0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    -0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 507
+    0x1.e1fc05a217cda574231fab7ef56a802ep-1,
+    0x1.5f89e0p1,
+    0x1.000002p1
+  },
+  { // Entry 508
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 509
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 510
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 511
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 512
+    0x1.921fb24442d304698b0cc51401b839c8p-1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 513
+    -0x1.921fb24442d304698b0cc51401b839c8p-1,
+    -0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 514
+    0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 515
+    -0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    -0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 516
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 517
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p1,
+    0x1.p1
+  },
+  { // Entry 518
+    0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 519
+    -0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    -0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 520
+    0x1.921fb84442d00469880cc51a01b8397bp-1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 521
+    -0x1.921fb84442d00469880cc51a01b8397bp-1,
+    -0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 522
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 523
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 524
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 525
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 526
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.fffffep-13,
+    0x1.fffffep0
+  },
+  { // Entry 527
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.fffffep-13,
+    0x1.fffffep0
+  },
+  { // Entry 528
+    0x1.fffffdd55555dbbbbb1a9729e57ab751p-14,
+    0x1.fffffep-13,
+    0x1.p1
+  },
+  { // Entry 529
+    -0x1.fffffdd55555dbbbbb1a9729e57ab751p-14,
+    -0x1.fffffep-13,
+    0x1.p1
+  },
+  { // Entry 530
+    0x1.fffff9d55562dbbb9bda97790acf3db2p-14,
+    0x1.fffffep-13,
+    0x1.000002p1
+  },
+  { // Entry 531
+    -0x1.fffff9d55562dbbb9bda97790acf3db2p-14,
+    -0x1.fffffep-13,
+    0x1.000002p1
+  },
+  { // Entry 532
+    0x1.000000eaaaab6dddde6d4b951012b14cp-13,
+    0x1.p-12,
+    0x1.fffffep0
+  },
+  { // Entry 533
+    -0x1.000000eaaaab6dddde6d4b951012b14cp-13,
+    -0x1.p-12,
+    0x1.fffffep0
+  },
+  { // Entry 534
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.p-12,
+    0x1.p1
+  },
+  { // Entry 535
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.p-12,
+    0x1.p1
+  },
+  { // Entry 536
+    0x1.fffffbd5555e5bbba77a97585824f2d2p-14,
+    0x1.p-12,
+    0x1.000002p1
+  },
+  { // Entry 537
+    -0x1.fffffbd5555e5bbba77a97585824f2d2p-14,
+    -0x1.p-12,
+    0x1.000002p1
+  },
+  { // Entry 538
+    0x1.000002eaaaacedddde0d4b917d68009bp-13,
+    0x1.000002p-12,
+    0x1.fffffep0
+  },
+  { // Entry 539
+    -0x1.000002eaaaacedddde0d4b917d68009bp-13,
+    -0x1.000002p-12,
+    0x1.fffffep0
+  },
+  { // Entry 540
+    0x1.000001eaaaaa2ddddcfd4b9486bd5ca7p-13,
+    0x1.000002p-12,
+    0x1.p1
+  },
+  { // Entry 541
+    -0x1.000001eaaaaa2ddddcfd4b9486bd5ca7p-13,
+    -0x1.000002p-12,
+    0x1.p1
+  },
+  { // Entry 542
+    0x1.ffffffd555555bbbbbba972972d00dp-14,
+    0x1.000002p-12,
+    0x1.000002p1
+  },
+  { // Entry 543
+    -0x1.ffffffd555555bbbbbba972972d00dp-14,
+    -0x1.000002p-12,
+    0x1.000002p1
+  },
+  { // Entry 544
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 545
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 546
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 547
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 548
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 549
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 550
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 551
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 552
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 553
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 554
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 555
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 556
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 557
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 558
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 559
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 560
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 561
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 562
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 563
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 564
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 565
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 566
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 567
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 568
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 569
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 570
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 571
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 572
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 573
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 574
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 575
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 576
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 577
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 578
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 579
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 580
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 581
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 582
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 583
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 584
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 585
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 586
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 587
+    0x1.fffffdffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 588
+    -0x1.fffffdffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 589
+    0x1.fffffa00000bffffe800002ffffef555p-57,
+    0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 590
+    -0x1.fffffa00000bffffe800002ffffef555p-57,
+    -0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 591
+    0x1.000001000001000001000000ffffabaap-56,
+    0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 592
+    -0x1.000001000001000001000000ffffabaap-56,
+    -0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 593
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.p1,
+    0x1.p57
+  },
+  { // Entry 594
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.p1,
+    0x1.p57
+  },
+  { // Entry 595
+    0x1.fffffc000007fffff000001fffff1555p-57,
+    0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 596
+    -0x1.fffffc000007fffff000001fffff1555p-57,
+    -0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 597
+    0x1.000003000003000003000002ffffadaap-56,
+    0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 598
+    -0x1.000003000003000003000002ffffadaap-56,
+    -0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 599
+    0x1.000001ffffffffffffffffffffffaaaap-56,
+    0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 600
+    -0x1.000001ffffffffffffffffffffffaaaap-56,
+    -0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 601
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 602
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 603
+    -0x1.000003000003000003000002ffffadaap-56,
+    -0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 604
+    0x1.000003000003000003000002ffffadaap-56,
+    0x1.000002p1,
+    0x1.fffffep56
+  },
+  { // Entry 605
+    -0x1.000001ffffffffffffffffffffffaaaap-56,
+    -0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 606
+    0x1.000001ffffffffffffffffffffffaaaap-56,
+    0x1.000002p1,
+    0x1.p57
+  },
+  { // Entry 607
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 608
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.000002p1,
+    0x1.000002p57
+  },
+  { // Entry 609
+    -0x1.000001000001000001000000ffffabaap-56,
+    -0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 610
+    0x1.000001000001000001000000ffffabaap-56,
+    0x1.p1,
+    0x1.fffffep56
+  },
+  { // Entry 611
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.p1,
+    0x1.p57
+  },
+  { // Entry 612
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.p1,
+    0x1.p57
+  },
+  { // Entry 613
+    -0x1.fffffc000007fffff000001fffff1555p-57,
+    -0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 614
+    0x1.fffffc000007fffff000001fffff1555p-57,
+    0x1.p1,
+    0x1.000002p57
+  },
+  { // Entry 615
+    -0x1.ffffffffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 616
+    0x1.ffffffffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.fffffep56
+  },
+  { // Entry 617
+    -0x1.fffffdffffffffffffffffffffff5555p-57,
+    -0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 618
+    0x1.fffffdffffffffffffffffffffff5555p-57,
+    0x1.fffffep0,
+    0x1.p57
+  },
+  { // Entry 619
+    -0x1.fffffa00000bffffe800002ffffef555p-57,
+    -0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 620
+    0x1.fffffa00000bffffe800002ffffef555p-57,
+    0x1.fffffep0,
+    0x1.000002p57
+  },
+  { // Entry 621
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffep1,
+    0x1.fffffep31
+  },
+  { // Entry 622
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffep1,
+    0x1.fffffep31
+  },
+  { // Entry 623
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep1,
+    0x1.p32
+  },
+  { // Entry 624
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep1,
+    0x1.p32
+  },
+  { // Entry 625
+    0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    0x1.fffffep1,
+    0x1.000002p32
+  },
+  { // Entry 626
+    -0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    -0x1.fffffep1,
+    0x1.000002p32
+  },
+  { // Entry 627
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 628
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p2,
+    0x1.fffffep31
+  },
+  { // Entry 629
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p2,
+    0x1.p32
+  },
+  { // Entry 630
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p2,
+    0x1.p32
+  },
+  { // Entry 631
+    0x1.fffffc000007fff545559575545515bfp-31,
+    0x1.p2,
+    0x1.000002p32
+  },
+  { // Entry 632
+    -0x1.fffffc000007fff545559575545515bfp-31,
+    -0x1.p2,
+    0x1.000002p32
+  },
+  { // Entry 633
+    0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    0x1.000002p2,
+    0x1.fffffep31
+  },
+  { // Entry 634
+    -0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    -0x1.000002p2,
+    0x1.fffffep31
+  },
+  { // Entry 635
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p2,
+    0x1.p32
+  },
+  { // Entry 636
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p2,
+    0x1.p32
+  },
+  { // Entry 637
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.000002p2,
+    0x1.000002p32
+  },
+  { // Entry 638
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.000002p2,
+    0x1.000002p32
+  },
+  { // Entry 639
+    -0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    -0x1.000002p-2,
+    0x1.fffffep27
+  },
+  { // Entry 640
+    0x1.000003000002fffaadaa7aada9eaaddbp-30,
+    0x1.000002p-2,
+    0x1.fffffep27
+  },
+  { // Entry 641
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p-2,
+    0x1.p28
+  },
+  { // Entry 642
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p-2,
+    0x1.p28
+  },
+  { // Entry 643
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.000002p-2,
+    0x1.000002p28
+  },
+  { // Entry 644
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.000002p-2,
+    0x1.000002p28
+  },
+  { // Entry 645
+    -0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    -0x1.p-2,
+    0x1.fffffep27
+  },
+  { // Entry 646
+    0x1.000001000000fffaabaa9aabaa8aabddp-30,
+    0x1.p-2,
+    0x1.fffffep27
+  },
+  { // Entry 647
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p-2,
+    0x1.p28
+  },
+  { // Entry 648
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p-2,
+    0x1.p28
+  },
+  { // Entry 649
+    -0x1.fffffc000007fff545559575545515bfp-31,
+    -0x1.p-2,
+    0x1.000002p28
+  },
+  { // Entry 650
+    0x1.fffffc000007fff545559575545515bfp-31,
+    0x1.p-2,
+    0x1.000002p28
+  },
+  { // Entry 651
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.fffffep-3,
+    0x1.fffffep27
+  },
+  { // Entry 652
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.fffffep-3,
+    0x1.fffffep27
+  },
+  { // Entry 653
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep-3,
+    0x1.p28
+  },
+  { // Entry 654
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep-3,
+    0x1.p28
+  },
+  { // Entry 655
+    -0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    -0x1.fffffep-3,
+    0x1.000002p28
+  },
+  { // Entry 656
+    0x1.fffffa00000bfff53d55b5855374f5c2p-31,
+    0x1.fffffep-3,
+    0x1.000002p28
+  },
+  { // Entry 657
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 658
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 659
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep2,
+    0x1.p3
+  },
+  { // Entry 660
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep2,
+    0x1.p3
+  },
+  { // Entry 661
+    0x1.921fb24442d304698b0cc51401b839c8p-1,
+    0x1.fffffep2,
+    0x1.000002p3
+  },
+  { // Entry 662
+    -0x1.921fb24442d304698b0cc51401b839c8p-1,
+    -0x1.fffffep2,
+    0x1.000002p3
+  },
+  { // Entry 663
+    0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 664
+    -0x1.921fb64442d2046989b76fc1ac62e440p-1,
+    -0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 665
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 666
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p3,
+    0x1.p3
+  },
+  { // Entry 667
+    0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 668
+    -0x1.921fb34442d3846988376fc1ac62e5e6p-1,
+    -0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 669
+    0x1.921fb84442d00469880cc51a01b8397bp-1,
+    0x1.000002p3,
+    0x1.fffffep2
+  },
+  { // Entry 670
+    -0x1.921fb84442d00469880cc51a01b8397bp-1,
+    -0x1.000002p3,
+    0x1.fffffep2
+  },
+  { // Entry 671
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p3,
+    0x1.p3
+  },
+  { // Entry 672
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p3,
+    0x1.p3
+  },
+  { // Entry 673
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 674
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 675
+    -0x1.dac67522e883aedcc9c473438e936964p-2,
+    -0x1.000002p3,
+    0x1.fffffep3
+  },
+  { // Entry 676
+    0x1.dac67522e883aedcc9c473438e936964p-2,
+    0x1.000002p3,
+    0x1.fffffep3
+  },
+  { // Entry 677
+    -0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    -0x1.000002p3,
+    0x1.p4
+  },
+  { // Entry 678
+    0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    0x1.000002p3,
+    0x1.p4
+  },
+  { // Entry 679
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.000002p3,
+    0x1.000002p4
+  },
+  { // Entry 680
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.000002p3,
+    0x1.000002p4
+  },
+  { // Entry 681
+    -0x1.dac671efb54fd7d28ecd5330c89a3d73p-2,
+    -0x1.p3,
+    0x1.fffffep3
+  },
+  { // Entry 682
+    0x1.dac671efb54fd7d28ecd5330c89a3d73p-2,
+    0x1.p3,
+    0x1.fffffep3
+  },
+  { // Entry 683
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p3,
+    0x1.p4
+  },
+  { // Entry 684
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p3,
+    0x1.p4
+  },
+  { // Entry 685
+    -0x1.dac66d22e886e20ff6fe7a2378baf6f9p-2,
+    -0x1.p3,
+    0x1.000002p4
+  },
+  { // Entry 686
+    0x1.dac66d22e886e20ff6fe7a2378baf6f9p-2,
+    0x1.p3,
+    0x1.000002p4
+  },
+  { // Entry 687
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.fffffep2,
+    0x1.fffffep3
+  },
+  { // Entry 688
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.fffffep2,
+    0x1.fffffep3
+  },
+  { // Entry 689
+    -0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    -0x1.fffffep2,
+    0x1.p4
+  },
+  { // Entry 690
+    0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    0x1.fffffep2,
+    0x1.p4
+  },
+  { // Entry 691
+    -0x1.dac66b894eeee20ff7663e0a055c2460p-2,
+    -0x1.fffffep2,
+    0x1.000002p4
+  },
+  { // Entry 692
+    0x1.dac66b894eeee20ff7663e0a055c2460p-2,
+    0x1.fffffep2,
+    0x1.000002p4
+  },
+  { // Entry 693
+    0x1.72c43fa570aa5c9e564c7f0a5befa484p1,
+    0x1.fffffep2,
+    -0x1.000002p5
+  },
+  { // Entry 694
+    -0x1.72c43fa570aa5c9e564c7f0a5befa484p1,
+    -0x1.fffffep2,
+    -0x1.000002p5
+  },
+  { // Entry 695
+    0x1.72c43f69346ec6ea833e8c8f811d5b23p1,
+    0x1.fffffep2,
+    -0x1.p5
+  },
+  { // Entry 696
+    -0x1.72c43f69346ec6ea833e8c8f811d5b23p1,
+    -0x1.fffffep2,
+    -0x1.p5
+  },
+  { // Entry 697
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.fffffep2,
+    -0x1.fffffep4
+  },
+  { // Entry 698
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.fffffep2,
+    -0x1.fffffep4
+  },
+  { // Entry 699
+    0x1.72c43f87528c71e0c59cd3cd4eedc91cp1,
+    0x1.p3,
+    -0x1.000002p5
+  },
+  { // Entry 700
+    -0x1.72c43f87528c71e0c59cd3cd4eedc91cp1,
+    -0x1.p3,
+    -0x1.000002p5
+  },
+  { // Entry 701
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.p3,
+    -0x1.p5
+  },
+  { // Entry 702
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.p3,
+    -0x1.p5
+  },
+  { // Entry 703
+    0x1.72c43f2cf8326c9028ca86607b667a8cp1,
+    0x1.p3,
+    -0x1.fffffep4
+  },
+  { // Entry 704
+    -0x1.72c43f2cf8326c9028ca86607b667a8cp1,
+    -0x1.p3,
+    -0x1.fffffep4
+  },
+  { // Entry 705
+    0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    0x1.000002p3,
+    -0x1.000002p5
+  },
+  { // Entry 706
+    -0x1.72c43f4b1650a706dbd3d13842c3f6a5p1,
+    -0x1.000002p3,
+    -0x1.000002p5
+  },
+  { // Entry 707
+    0x1.72c43f0eda1471e0c4cf752a26ca10a6p1,
+    0x1.000002p3,
+    -0x1.p5
+  },
+  { // Entry 708
+    -0x1.72c43f0eda1471e0c4cf752a26ca10a6p1,
+    -0x1.000002p3,
+    -0x1.p5
+  },
+  { // Entry 709
+    0x1.72c43ef0bbf60243faa66eaf95b8eb8ep1,
+    0x1.000002p3,
+    -0x1.fffffep4
+  },
+  { // Entry 710
+    -0x1.72c43ef0bbf60243faa66eaf95b8eb8ep1,
+    -0x1.000002p3,
+    -0x1.fffffep4
+  },
+  { // Entry 711
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.fffffep2,
+    0x1.fffffep5
+  },
+  { // Entry 712
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.fffffep2,
+    0x1.fffffep5
+  },
+  { // Entry 713
+    0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    0x1.fffffep2,
+    0x1.p6
+  },
+  { // Entry 714
+    -0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    -0x1.fffffep2,
+    0x1.p6
+  },
+  { // Entry 715
+    0x1.fd5ba3c2647c7ef6c76d6d5ea97bab75p-4,
+    0x1.fffffep2,
+    0x1.000002p6
+  },
+  { // Entry 716
+    -0x1.fd5ba3c2647c7ef6c76d6d5ea97bab75p-4,
+    -0x1.fffffep2,
+    0x1.000002p6
+  },
+  { // Entry 717
+    0x1.fd5baba2e27ac4e31ede5c4d3485ebacp-4,
+    0x1.p3,
+    0x1.fffffep5
+  },
+  { // Entry 718
+    -0x1.fd5baba2e27ac4e31ede5c4d3485ebacp-4,
+    -0x1.p3,
+    0x1.fffffep5
+  },
+  { // Entry 719
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p3,
+    0x1.p6
+  },
+  { // Entry 720
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p3,
+    0x1.p6
+  },
+  { // Entry 721
+    0x1.fd5ba5ba83faad9ea550e6d54b02d0f9p-4,
+    0x1.p3,
+    0x1.000002p6
+  },
+  { // Entry 722
+    -0x1.fd5ba5ba83faad9ea550e6d54b02d0f9p-4,
+    -0x1.p3,
+    0x1.000002p6
+  },
+  { // Entry 723
+    0x1.fd5baf932182675568b9d1daf2fd1727p-4,
+    0x1.000002p3,
+    0x1.fffffep5
+  },
+  { // Entry 724
+    -0x1.fd5baf932182675568b9d1daf2fd1727p-4,
+    -0x1.000002p3,
+    0x1.fffffep5
+  },
+  { // Entry 725
+    0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    0x1.000002p3,
+    0x1.p6
+  },
+  { // Entry 726
+    -0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    -0x1.000002p3,
+    0x1.p6
+  },
+  { // Entry 727
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.000002p3,
+    0x1.000002p6
+  },
+  { // Entry 728
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.000002p3,
+    0x1.000002p6
+  },
+  { // Entry 729
+    -0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    -0x1.000002p3,
+    0x1.fffffep6
+  },
+  { // Entry 730
+    0x1.ff55c16cd5de8a91665b84abb95e0cc7p-5,
+    0x1.000002p3,
+    0x1.fffffep6
+  },
+  { // Entry 731
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p3,
+    0x1.p7
+  },
+  { // Entry 732
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p3,
+    0x1.p7
+  },
+  { // Entry 733
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.000002p3,
+    0x1.000002p7
+  },
+  { // Entry 734
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.000002p3,
+    0x1.000002p7
+  },
+  { // Entry 735
+    -0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    -0x1.p3,
+    0x1.fffffep6
+  },
+  { // Entry 736
+    0x1.ff55bd70d1de9a7192507f037e5414bbp-5,
+    0x1.p3,
+    0x1.fffffep6
+  },
+  { // Entry 737
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p3,
+    0x1.p7
+  },
+  { // Entry 738
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p3,
+    0x1.p7
+  },
+  { // Entry 739
+    -0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    -0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 740
+    0x1.ff55b776cbea888962afd8276c01a25ep-5,
+    0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 741
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.fffffep2,
+    0x1.fffffep6
+  },
+  { // Entry 742
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.fffffep2,
+    0x1.fffffep6
+  },
+  { // Entry 743
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep2,
+    0x1.p7
+  },
+  { // Entry 744
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep2,
+    0x1.p7
+  },
+  { // Entry 745
+    -0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    -0x1.fffffep2,
+    0x1.000002p7
+  },
+  { // Entry 746
+    0x1.ff55b578c9f078a33719a85ef29e8a20p-5,
+    0x1.fffffep2,
+    0x1.000002p7
+  },
+  { // Entry 747
+    0x1.0468a9467e7938105dfef0f3f2ae89fdp1,
+    0x1.fffffep2,
+    -0x1.000002p2
+  },
+  { // Entry 748
+    -0x1.0468a9467e7938105dfef0f3f2ae89fdp1,
+    -0x1.fffffep2,
+    -0x1.000002p2
+  },
+  { // Entry 749
+    0x1.0468a8e01812bd2f16a00cf199ef647fp1,
+    0x1.fffffep2,
+    -0x1.p2
+  },
+  { // Entry 750
+    -0x1.0468a8e01812bd2f16a00cf199ef647fp1,
+    -0x1.fffffep2,
+    -0x1.p2
+  },
+  { // Entry 751
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.fffffep2,
+    -0x1.fffffep1
+  },
+  { // Entry 752
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.fffffep2,
+    -0x1.fffffep1
+  },
+  { // Entry 753
+    0x1.0468a9134b459e76c491082a433c8899p1,
+    0x1.p3,
+    -0x1.000002p2
+  },
+  { // Entry 754
+    -0x1.0468a9134b459e76c491082a433c8899p1,
+    -0x1.p3,
+    -0x1.000002p2
+  },
+  { // Entry 755
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.p3,
+    -0x1.p2
+  },
+  { // Entry 756
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.p3,
+    -0x1.p2
+  },
+  { // Entry 757
+    0x1.0468a879b1ac23957ce9188c7ea0e2c0p1,
+    0x1.p3,
+    -0x1.fffffep1
+  },
+  { // Entry 758
+    -0x1.0468a879b1ac23957ce9188c7ea0e2c0p1,
+    -0x1.p3,
+    -0x1.fffffep1
+  },
+  { // Entry 759
+    0x1.0468a8ace4df610620bf7406afeac012p1,
+    0x1.000002p3,
+    -0x1.000002p2
+  },
+  { // Entry 760
+    -0x1.0468a8ace4df610620bf7406afeac012p1,
+    -0x1.000002p3,
+    -0x1.000002p2
+  },
+  { // Entry 761
+    0x1.0468a8467e799e76c3a631cfeff37bb0p1,
+    0x1.000002p3,
+    -0x1.p2
+  },
+  { // Entry 762
+    -0x1.0468a8467e799e76c3a631cfeff37bb0p1,
+    -0x1.000002p3,
+    -0x1.p2
+  },
+  { // Entry 763
+    0x1.0468a8134b469e76c3b32a4cc187a15dp1,
+    0x1.000002p3,
+    -0x1.fffffep1
+  },
+  { // Entry 764
+    -0x1.0468a8134b469e76c3b32a4cc187a15dp1,
+    -0x1.000002p3,
+    -0x1.fffffep1
+  },
+  { // Entry 765
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffep-103,
+    0x1.fffffep-3
+  },
+  { // Entry 766
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffep-103,
+    0x1.fffffep-3
+  },
+  { // Entry 767
+    0x1.fffffdffffffffffffffffffffffffffp-101,
+    0x1.fffffep-103,
+    0x1.p-2
+  },
+  { // Entry 768
+    -0x1.fffffdffffffffffffffffffffffffffp-101,
+    -0x1.fffffep-103,
+    0x1.p-2
+  },
+  { // Entry 769
+    0x1.fffffa00000bffffe800002fffffa0p-101,
+    0x1.fffffep-103,
+    0x1.000002p-2
+  },
+  { // Entry 770
+    -0x1.fffffa00000bffffe800002fffffa0p-101,
+    -0x1.fffffep-103,
+    0x1.000002p-2
+  },
+  { // Entry 771
+    0x1.000001000001000001000001000001p-100,
+    0x1.p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 772
+    -0x1.000001000001000001000001000001p-100,
+    -0x1.p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 773
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p-102,
+    0x1.p-2
+  },
+  { // Entry 774
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p-102,
+    0x1.p-2
+  },
+  { // Entry 775
+    0x1.fffffc000007fffff000001fffffc0p-101,
+    0x1.p-102,
+    0x1.000002p-2
+  },
+  { // Entry 776
+    -0x1.fffffc000007fffff000001fffffc0p-101,
+    -0x1.p-102,
+    0x1.000002p-2
+  },
+  { // Entry 777
+    0x1.000003000003000003000003000003p-100,
+    0x1.000002p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 778
+    -0x1.000003000003000003000003000003p-100,
+    -0x1.000002p-102,
+    0x1.fffffep-3
+  },
+  { // Entry 779
+    0x1.000001ffffffffffffffffffffffffffp-100,
+    0x1.000002p-102,
+    0x1.p-2
+  },
+  { // Entry 780
+    -0x1.000001ffffffffffffffffffffffffffp-100,
+    -0x1.000002p-102,
+    0x1.p-2
+  },
+  { // Entry 781
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000002p-102,
+    0x1.000002p-2
+  },
+  { // Entry 782
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000002p-102,
+    0x1.000002p-2
+  },
+  { // Entry 783
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffcp2,
+    0x1.fffffcp102
+  },
+  { // Entry 784
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffcp2,
+    0x1.fffffcp102
+  },
+  { // Entry 785
+    0x1.fffffdfffffdfffffdfffffdfffffdffp-101,
+    0x1.fffffcp2,
+    0x1.fffffep102
+  },
+  { // Entry 786
+    -0x1.fffffdfffffdfffffdfffffdfffffdffp-101,
+    -0x1.fffffcp2,
+    0x1.fffffep102
+  },
+  { // Entry 787
+    0x1.fffffbffffffffffffffffffffffffffp-101,
+    0x1.fffffcp2,
+    0x1.p103
+  },
+  { // Entry 788
+    -0x1.fffffbffffffffffffffffffffffffffp-101,
+    -0x1.fffffcp2,
+    0x1.p103
+  },
+  { // Entry 789
+    0x1.fffff800000fffffe000003fffff80p-101,
+    0x1.fffffcp2,
+    0x1.000002p103
+  },
+  { // Entry 790
+    -0x1.fffff800000fffffe000003fffff80p-101,
+    -0x1.fffffcp2,
+    0x1.000002p103
+  },
+  { // Entry 791
+    0x1.fffff400002fffff400002fffff4p-101,
+    0x1.fffffcp2,
+    0x1.000004p103
+  },
+  { // Entry 792
+    -0x1.fffff400002fffff400002fffff4p-101,
+    -0x1.fffffcp2,
+    0x1.000004p103
+  },
+  { // Entry 793
+    0x1.000001000002000004000008000010p-100,
+    0x1.fffffep2,
+    0x1.fffffcp102
+  },
+  { // Entry 794
+    -0x1.000001000002000004000008000010p-100,
+    -0x1.fffffep2,
+    0x1.fffffcp102
+  },
+  { // Entry 795
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.fffffep2,
+    0x1.fffffep102
+  },
+  { // Entry 796
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.fffffep2,
+    0x1.fffffep102
+  },
+  { // Entry 797
+    0x1.fffffdffffffffffffffffffffffffffp-101,
+    0x1.fffffep2,
+    0x1.p103
+  },
+  { // Entry 798
+    -0x1.fffffdffffffffffffffffffffffffffp-101,
+    -0x1.fffffep2,
+    0x1.p103
+  },
+  { // Entry 799
+    0x1.fffffa00000bffffe800002fffffa0p-101,
+    0x1.fffffep2,
+    0x1.000002p103
+  },
+  { // Entry 800
+    -0x1.fffffa00000bffffe800002fffffa0p-101,
+    -0x1.fffffep2,
+    0x1.000002p103
+  },
+  { // Entry 801
+    0x1.fffff6000027ffff6000027ffff6p-101,
+    0x1.fffffep2,
+    0x1.000004p103
+  },
+  { // Entry 802
+    -0x1.fffff6000027ffff6000027ffff6p-101,
+    -0x1.fffffep2,
+    0x1.000004p103
+  },
+  { // Entry 803
+    0x1.000002000004000008000010000020p-100,
+    0x1.p3,
+    0x1.fffffcp102
+  },
+  { // Entry 804
+    -0x1.000002000004000008000010000020p-100,
+    -0x1.p3,
+    0x1.fffffcp102
+  },
+  { // Entry 805
+    0x1.000001000001000001000001000001p-100,
+    0x1.p3,
+    0x1.fffffep102
+  },
+  { // Entry 806
+    -0x1.000001000001000001000001000001p-100,
+    -0x1.p3,
+    0x1.fffffep102
+  },
+  { // Entry 807
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.p3,
+    0x1.p103
+  },
+  { // Entry 808
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.p3,
+    0x1.p103
+  },
+  { // Entry 809
+    0x1.fffffc000007fffff000001fffffc0p-101,
+    0x1.p3,
+    0x1.000002p103
+  },
+  { // Entry 810
+    -0x1.fffffc000007fffff000001fffffc0p-101,
+    -0x1.p3,
+    0x1.000002p103
+  },
+  { // Entry 811
+    0x1.fffff800001fffff800001fffff8p-101,
+    0x1.p3,
+    0x1.000004p103
+  },
+  { // Entry 812
+    -0x1.fffff800001fffff800001fffff8p-101,
+    -0x1.p3,
+    0x1.000004p103
+  },
+  { // Entry 813
+    0x1.000004000008000010000020000040p-100,
+    0x1.000002p3,
+    0x1.fffffcp102
+  },
+  { // Entry 814
+    -0x1.000004000008000010000020000040p-100,
+    -0x1.000002p3,
+    0x1.fffffcp102
+  },
+  { // Entry 815
+    0x1.000003000003000003000003000003p-100,
+    0x1.000002p3,
+    0x1.fffffep102
+  },
+  { // Entry 816
+    -0x1.000003000003000003000003000003p-100,
+    -0x1.000002p3,
+    0x1.fffffep102
+  },
+  { // Entry 817
+    0x1.000001ffffffffffffffffffffffffffp-100,
+    0x1.000002p3,
+    0x1.p103
+  },
+  { // Entry 818
+    -0x1.000001ffffffffffffffffffffffffffp-100,
+    -0x1.000002p3,
+    0x1.p103
+  },
+  { // Entry 819
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000002p3,
+    0x1.000002p103
+  },
+  { // Entry 820
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000002p3,
+    0x1.000002p103
+  },
+  { // Entry 821
+    0x1.fffffc00000fffffc00000fffffcp-101,
+    0x1.000002p3,
+    0x1.000004p103
+  },
+  { // Entry 822
+    -0x1.fffffc00000fffffc00000fffffcp-101,
+    -0x1.000002p3,
+    0x1.000004p103
+  },
+  { // Entry 823
+    0x1.00000600000c000018000030000060p-100,
+    0x1.000004p3,
+    0x1.fffffcp102
+  },
+  { // Entry 824
+    -0x1.00000600000c000018000030000060p-100,
+    -0x1.000004p3,
+    0x1.fffffcp102
+  },
+  { // Entry 825
+    0x1.000005000005000005000005000005p-100,
+    0x1.000004p3,
+    0x1.fffffep102
+  },
+  { // Entry 826
+    -0x1.000005000005000005000005000005p-100,
+    -0x1.000004p3,
+    0x1.fffffep102
+  },
+  { // Entry 827
+    0x1.000003ffffffffffffffffffffffffffp-100,
+    0x1.000004p3,
+    0x1.p103
+  },
+  { // Entry 828
+    -0x1.000003ffffffffffffffffffffffffffp-100,
+    -0x1.000004p3,
+    0x1.p103
+  },
+  { // Entry 829
+    0x1.000001fffffc000007fffff000001fffp-100,
+    0x1.000004p3,
+    0x1.000002p103
+  },
+  { // Entry 830
+    -0x1.000001fffffc000007fffff000001fffp-100,
+    -0x1.000004p3,
+    0x1.000002p103
+  },
+  { // Entry 831
+    0x1.ffffffffffffffffffffffffffffffffp-101,
+    0x1.000004p3,
+    0x1.000004p103
+  },
+  { // Entry 832
+    -0x1.ffffffffffffffffffffffffffffffffp-101,
+    -0x1.000004p3,
+    0x1.000004p103
+  },
+  { // Entry 833
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 834
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 835
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 836
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 837
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 838
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 839
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 840
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 841
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 842
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 843
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 844
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 845
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 846
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 847
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 848
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 849
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 850
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 851
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 852
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 853
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 854
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 855
+    -0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 856
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 857
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 858
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 859
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 860
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 861
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 862
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 863
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 864
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 865
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 866
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 867
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 868
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 869
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 870
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 871
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 872
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 873
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 874
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 875
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 876
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 877
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 878
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 879
+    0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 880
+    0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 881
+    0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 882
+    -0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 883
+    -0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 884
+    -0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 885
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 886
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 887
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 888
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 889
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 890
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 891
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 892
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 893
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 894
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 895
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 896
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 897
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 898
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 899
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 900
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 901
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 902
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 903
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 904
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 905
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 906
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 907
+    0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 908
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 909
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 910
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 911
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 912
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 913
+    0x1.921fb34442d184698c376fc1ac62dde6p0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 914
+    0x1.921fb74442d1846986e21a6c570d955ep0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 915
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 916
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 917
+    0x1.fffffffffffd55555555555bbbbbbbbbp-24,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 918
+    -0x1.fffffffffffd55555555555bbbbbbbbbp-24,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 919
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 920
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 921
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 922
+    0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 923
+    0x1.921fb44442d184698ae21a6c570d8bc4p1,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 924
+    0x1.921fb54442d18469898cc51701b839a2p1,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 925
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 926
+    -0x1.921fb34442d184698c376fc1ac62dde6p0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 927
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 928
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 929
+    -0x1.921fb44442d184698ae21a6c570d8bc4p1,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 930
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 931
+    -0x1.921fb74442d1846986e21a6c570d955ep0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 932
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 933
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 934
+    -0x1.921fb54442d18469898cc51701b839a2p1,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 935
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 936
+    -0x1.2d97c7f3321d234f272993d1414a2b39p1,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  }
+};
diff --git a/tests/math_data/atan_intel_data.h b/tests/math_data/atan_intel_data.h
new file mode 100644
index 0000000..64bd607
--- /dev/null
+++ b/tests/math_data/atan_intel_data.h
@@ -0,0 +1,4646 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_atan_intel_data[] = {
+  { // Entry 0
+    0x1.0fb06ede9973a00000000000007cc060p-5,
+    0x1.0fc9f1fabe658p-5
+  },
+  { // Entry 1
+    -0x1.0fb06ede9973a00000000000007cc060p-5,
+    -0x1.0fc9f1fabe658p-5
+  },
+  { // Entry 2
+    0x1.1ba1951db1d6dfffffffffffffb8f174p-5,
+    0x1.1bbe9c255698dp-5
+  },
+  { // Entry 3
+    -0x1.1ba1951db1d6dfffffffffffffb8f174p-5,
+    -0x1.1bbe9c255698dp-5
+  },
+  { // Entry 4
+    0x1.8d8d2d4bd6fa2fffffffffffffb52a01p-5,
+    0x1.8ddd25ab90ca1p-5
+  },
+  { // Entry 5
+    -0x1.8d8d2d4bd6fa2fffffffffffffb52a01p-5,
+    -0x1.8ddd25ab90ca1p-5
+  },
+  { // Entry 6
+    0x1.52c39ef070cad0000000000000397b8dp-4,
+    0x1.5389e6df41979p-4
+  },
+  { // Entry 7
+    -0x1.52c39ef070cad0000000000000397b8dp-4,
+    -0x1.5389e6df41979p-4
+  },
+  { // Entry 8
+    0x1.a33f32ac5ceb4ffffffffffffff62c0ep-3,
+    0x1.a933fe176b375p-3
+  },
+  { // Entry 9
+    -0x1.a33f32ac5ceb4ffffffffffffff62c0ep-3,
+    -0x1.a933fe176b375p-3
+  },
+  { // Entry 10
+    0x1.09544b71ad4a6800000000000013a8d4p-2,
+    0x1.0f6e5d9960397p-2
+  },
+  { // Entry 11
+    -0x1.09544b71ad4a6800000000000013a8d4p-2,
+    -0x1.0f6e5d9960397p-2
+  },
+  { // Entry 12
+    0x1.46ac37224353600000000000000f8ab8p-1,
+    0x1.7ba49f739829fp-1
+  },
+  { // Entry 13
+    -0x1.46ac37224353600000000000000f8ab8p-1,
+    -0x1.7ba49f739829fp-1
+  },
+  { // Entry 14
+    -0x1.93d0d4b4b1dee82cea5b0c37054b40e2p-1,
+    -0x1.01b28f7519ab5p0
+  },
+  { // Entry 15
+    0x1.93d0d4b4b1dee82cea5b0c37054b40e2p-1,
+    0x1.01b28f7519ab5p0
+  },
+  { // Entry 16
+    -0x1.8e373c766a9cb7fff0093d26a3e96fdcp0,
+    -0x1.05ffffffff0p6
+  },
+  { // Entry 17
+    0x1.8e373c766a9cb7fff0093d26a3e96fdcp0,
+    0x1.05ffffffff0p6
+  },
+  { // Entry 18
+    -0x1.9a66b77f370938283db745fa4d8f6929p-1,
+    -0x1.086a05172c159p0
+  },
+  { // Entry 19
+    0x1.9a66b77f370938283db745fa4d8f6929p-1,
+    0x1.086a05172c159p0
+  },
+  { // Entry 20
+    -0x1.a1f29496a63eb7fed7941742ac25c0bcp-1,
+    -0x1.10556f1497661p0
+  },
+  { // Entry 21
+    0x1.a1f29496a63eb7fed7941742ac25c0bcp-1,
+    0x1.10556f1497661p0
+  },
+  { // Entry 22
+    -0x1.a46a24d34e9b282810adb188827a9af1p-1,
+    -0x1.12fa0d6901526p0
+  },
+  { // Entry 23
+    0x1.a46a24d34e9b282810adb188827a9af1p-1,
+    0x1.12fa0d6901526p0
+  },
+  { // Entry 24
+    -0x1.fd7343117fa575c550dcdff0fd642410p-2,
+    -0x1.160dc317bf87cp-1
+  },
+  { // Entry 25
+    0x1.fd7343117fa575c550dcdff0fd642410p-2,
+    0x1.160dc317bf87cp-1
+  },
+  { // Entry 26
+    -0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    -0x1.1b2p0
+  },
+  { // Entry 27
+    0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    0x1.1b2p0
+  },
+  { // Entry 28
+    -0x1.1b6b00f64692b8157a322d05add170c4p-2,
+    -0x1.22e245c48b894p-2
+  },
+  { // Entry 29
+    0x1.1b6b00f64692b8157a322d05add170c4p-2,
+    0x1.22e245c48b894p-2
+  },
+  { // Entry 30
+    -0x1.76f5ddc3a8b508ed9f137dea6b81e90fp0,
+    -0x1.2c72f995b1d2ep3
+  },
+  { // Entry 31
+    0x1.76f5ddc3a8b508ed9f137dea6b81e90fp0,
+    0x1.2c72f995b1d2ep3
+  },
+  { // Entry 32
+    -0x1.1e00babdefd447d7cd293fd8818ded16p-1,
+    -0x1.3fffffffffe01p-1
+  },
+  { // Entry 33
+    0x1.1e00babdefd447d7cd293fd8818ded16p-1,
+    0x1.3fffffffffe01p-1
+  },
+  { // Entry 34
+    -0x1.257cf8f86aae37fd89007cddd9fbedadp-1,
+    -0x1.4a818adf4d00cp-1
+  },
+  { // Entry 35
+    0x1.257cf8f86aae37fd89007cddd9fbedadp-1,
+    0x1.4a818adf4d00cp-1
+  },
+  { // Entry 36
+    -0x1.30ac945137336cee6dcf73db648cfcb8p-1,
+    -0x1.5a95192041f9ep-1
+  },
+  { // Entry 37
+    0x1.30ac945137336cee6dcf73db648cfcb8p-1,
+    0x1.5a95192041f9ep-1
+  },
+  { // Entry 38
+    -0x1.dfc9b7f9ab42d803453edb4156b22fe0p-1,
+    -0x1.5c634cb1dfe6bp0
+  },
+  { // Entry 39
+    0x1.dfc9b7f9ab42d803453edb4156b22fe0p-1,
+    0x1.5c634cb1dfe6bp0
+  },
+  { // Entry 40
+    -0x1.6bf3302a984a8a006c4478c0e763fab9p-2,
+    -0x1.7c1756ec12b23p-2
+  },
+  { // Entry 41
+    0x1.6bf3302a984a8a006c4478c0e763fab9p-2,
+    0x1.7c1756ec12b23p-2
+  },
+  { // Entry 42
+    -0x1.7f747c370c0727fccfb9495ede110579p-5,
+    -0x1.7fbc3df2ed276p-5
+  },
+  { // Entry 43
+    0x1.7f747c370c0727fccfb9495ede110579p-5,
+    0x1.7fbc3df2ed276p-5
+  },
+  { // Entry 44
+    -0x1.fdda4aef81e8e7fffd547e56ce08f36dp-1,
+    -0x1.8b0adc528bce4p0
+  },
+  { // Entry 45
+    0x1.fdda4aef81e8e7fffd547e56ce08f36dp-1,
+    0x1.8b0adc528bce4p0
+  },
+  { // Entry 46
+    -0x1.91cf060a572547ff8e8e829b167593fcp0,
+    -0x1.962000000000bp9
+  },
+  { // Entry 47
+    0x1.91cf060a572547ff8e8e829b167593fcp0,
+    0x1.962000000000bp9
+  },
+  { // Entry 48
+    -0x1.47c28e8c40ec280000020808fdc90264p0,
+    -0x1.ac2e0862e543ep1
+  },
+  { // Entry 49
+    0x1.47c28e8c40ec280000020808fdc90264p0,
+    0x1.ac2e0862e543ep1
+  },
+  { // Entry 50
+    -0x1.921fb54442d18469898cc516ef921439p0,
+    -0x1.c35fe0cc9d0e4p99
+  },
+  { // Entry 51
+    0x1.921fb54442d18469898cc516ef921439p0,
+    0x1.c35fe0cc9d0e4p99
+  },
+  { // Entry 52
+    -0x1.fee2431215606f9db22d52fc7e731b98p-6,
+    -0x1.ff0caaae31790p-6
+  },
+  { // Entry 53
+    0x1.fee2431215606f9db22d52fc7e731b98p-6,
+    0x1.ff0caaae31790p-6
+  },
+  { // Entry 54
+    -0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    -0x1.ffeffffffffffp0
+  },
+  { // Entry 55
+    0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    0x1.ffeffffffffffp0
+  },
+  { // Entry 56
+    -0x1.f5aa32d8a6d177fffad61b5dca0be8bfp-3,
+    -0x1.fff2007ffffffp-3
+  },
+  { // Entry 57
+    0x1.f5aa32d8a6d177fffad61b5dca0be8bfp-3,
+    0x1.fff2007ffffffp-3
+  },
+  { // Entry 58
+    -0x1.f5b39f92578e003ce025445d5448c723p-3,
+    -0x1.fffc03fffffffp-3
+  },
+  { // Entry 59
+    0x1.f5b39f92578e003ce025445d5448c723p-3,
+    0x1.fffc03fffffffp-3
+  },
+  { // Entry 60
+    0x1.fd5ba9aac2f7f7f74a4ac2f7962ea006p-4,
+    0x1.0000000000009p-3
+  },
+  { // Entry 61
+    -0x1.fd5ba9aac2f7f7f74a4ac2f7962ea006p-4,
+    -0x1.0000000000009p-3
+  },
+  { // Entry 62
+    0x1.1b6e192ebbe4b3939e676eed13ecdea5p0,
+    0x1.0000000000011p1
+  },
+  { // Entry 63
+    -0x1.1b6e192ebbe4b3939e676eed13ecdea5p0,
+    -0x1.0000000000011p1
+  },
+  { // Entry 64
+    0x1.fd5ba9aac3301779426a44d6216c0127p-4,
+    0x1.00000000001d1p-3
+  },
+  { // Entry 65
+    -0x1.fd5ba9aac3301779426a44d6216c0127p-4,
+    -0x1.00000000001d1p-3
+  },
+  { // Entry 66
+    0x1.f5b75f92c8e0a8fdae620b51cd9aff12p-3,
+    0x1.00000000007p-2
+  },
+  { // Entry 67
+    -0x1.f5b75f92c8e0a8fdae620b51cd9aff12p-3,
+    -0x1.00000000007p-2
+  },
+  { // Entry 68
+    0x1.ffd55bba9d69a8ad651d71aec988dad0p-6,
+    0x1.0000000003047p-5
+  },
+  { // Entry 69
+    -0x1.ffd55bba9d69a8ad651d71aec988dad0p-6,
+    -0x1.0000000003047p-5
+  },
+  { // Entry 70
+    0x1.911fb5999813a8003c879b1793966ea1p0,
+    0x1.0000000020017p8
+  },
+  { // Entry 71
+    -0x1.911fb5999813a8003c879b1793966ea1p0,
+    -0x1.0000000020017p8
+  },
+  { // Entry 72
+    0x1.921fb54472d18469850cc517020039a2p-1,
+    0x1.000000003p0
+  },
+  { // Entry 73
+    -0x1.921fb54472d18469850cc517020039a2p-1,
+    -0x1.000000003p0
+  },
+  { // Entry 74
+    0x1.f5b75f959ae0a8fd6e9ac1e84bceca57p-3,
+    0x1.000000018p-2
+  },
+  { // Entry 75
+    -0x1.f5b75f959ae0a8fd6e9ac1e84bceca57p-3,
+    -0x1.000000018p-2
+  },
+  { // Entry 76
+    0x1.f5b7671a4f939829143782fc6e124ccap-3,
+    0x1.0000040p-2
+  },
+  { // Entry 77
+    -0x1.f5b7671a4f939829143782fc6e124ccap-3,
+    -0x1.0000040p-2
+  },
+  { // Entry 78
+    0x1.fd5bb18b417c48ac848521bb0772d9a1p-4,
+    0x1.00000400004p-3
+  },
+  { // Entry 79
+    -0x1.fd5bb18b417c48ac848521bb0772d9a1p-4,
+    -0x1.00000400004p-3
+  },
+  { // Entry 80
+    0x1.921fc4440248282d290a616b8bd2a40fp-1,
+    0x1.00000effbfe72p0
+  },
+  { // Entry 81
+    -0x1.921fc4440248282d290a616b8bd2a40fp-1,
+    -0x1.00000effbfe72p0
+  },
+  { // Entry 82
+    0x1.921fcb4efe8b9800001979c3c14ae647p-1,
+    0x1.0000160abcad0p0
+  },
+  { // Entry 83
+    -0x1.921fcb4efe8b9800001979c3c14ae647p-1,
+    -0x1.0000160abcad0p0
+  },
+  { // Entry 84
+    0x1.fd5d9dd9fe4877fd578f460dcb83a068p-4,
+    0x1.0000fe0p-3
+  },
+  { // Entry 85
+    -0x1.fd5d9dd9fe4877fd578f460dcb83a068p-4,
+    -0x1.0000fe0p-3
+  },
+  { // Entry 86
+    0x1.1b6fb2c336d49314eac9f9c98fd7e33cp0,
+    0x1.00040p1
+  },
+  { // Entry 87
+    -0x1.1b6fb2c336d49314eac9f9c98fd7e33cp0,
+    -0x1.00040p1
+  },
+  { // Entry 88
+    0x1.8e200a90cc63080337bb5f472303d0cbp0,
+    0x1.000ffffffffe1p6
+  },
+  { // Entry 89
+    -0x1.8e200a90cc63080337bb5f472303d0cbp0,
+    -0x1.000ffffffffe1p6
+  },
+  { // Entry 90
+    0x1.924fb0c48ad183a74183edd5362486dfp-1,
+    0x1.003p0
+  },
+  { // Entry 91
+    -0x1.924fb0c48ad183a74183edd5362486dfp-1,
+    -0x1.003p0
+  },
+  { // Entry 92
+    0x1.fedc5f6aeb98186a3b0d3b954d70911cp-4,
+    0x1.00c35e9758e2cp-3
+  },
+  { // Entry 93
+    -0x1.fedc5f6aeb98186a3b0d3b954d70911cp-4,
+    -0x1.00c35e9758e2cp-3
+  },
+  { // Entry 94
+    0x1.921fb3466091e7ffbc9b8e5c6d88ce22p0,
+    0x1.011p23
+  },
+  { // Entry 95
+    -0x1.921fb3466091e7ffbc9b8e5c6d88ce22p0,
+    -0x1.011p23
+  },
+  { // Entry 96
+    0x1.1c2100958558dfff915395a5bfb4e4f7p0,
+    0x1.01c1b75a29198p1
+  },
+  { // Entry 97
+    -0x1.1c2100958558dfff915395a5bfb4e4f7p0,
+    -0x1.01c1b75a29198p1
+  },
+  { // Entry 98
+    0x1.941da6b976112800ae50a79244b2f00fp-1,
+    0x1.01fffp0
+  },
+  { // Entry 99
+    -0x1.941da6b976112800ae50a79244b2f00fp-1,
+    -0x1.01fffp0
+  },
+  { // Entry 100
+    0x1.95412c14caec68368d2352262e205e29p-1,
+    0x1.032667b38fd63p0
+  },
+  { // Entry 101
+    -0x1.95412c14caec68368d2352262e205e29p-1,
+    -0x1.032667b38fd63p0
+  },
+  { // Entry 102
+    0x1.954797156907ffe8d43c56fed8806cbap-1,
+    0x1.032ce7209e936p0
+  },
+  { // Entry 103
+    -0x1.954797156907ffe8d43c56fed8806cbap-1,
+    -0x1.032ce7209e936p0
+  },
+  { // Entry 104
+    0x1.03fe926deb87dea036ae0e5000a78179p-7,
+    0x1.03fff80p-7
+  },
+  { // Entry 105
+    -0x1.03fe926deb87dea036ae0e5000a78179p-7,
+    -0x1.03fff80p-7
+  },
+  { // Entry 106
+    0x1.fd61e4326c1e17f9be5c0e96b9e245b5p-3,
+    0x1.041391b4f6773p-2
+  },
+  { // Entry 107
+    -0x1.fd61e4326c1e17f9be5c0e96b9e245b5p-3,
+    -0x1.041391b4f6773p-2
+  },
+  { // Entry 108
+    0x1.9690e7465847a7ddc153bc6798d1b82bp-1,
+    0x1.047b2d5ac8ccbp0
+  },
+  { // Entry 109
+    -0x1.9690e7465847a7ddc153bc6798d1b82bp-1,
+    -0x1.047b2d5ac8ccbp0
+  },
+  { // Entry 110
+    0x1.96c8ea639f68cc09d44584196295df93p-1,
+    0x1.04b43403953b0p0
+  },
+  { // Entry 111
+    -0x1.96c8ea639f68cc09d44584196295df93p-1,
+    -0x1.04b43403953b0p0
+  },
+  { // Entry 112
+    0x1.96c95ba7df84f7fecf841f04a5386a95p-1,
+    0x1.04b4a761a073bp0
+  },
+  { // Entry 113
+    -0x1.96c95ba7df84f7fecf841f04a5386a95p-1,
+    -0x1.04b4a761a073bp0
+  },
+  { // Entry 114
+    0x1.ff956a68e5f5d7fa26829ba0a3287227p-3,
+    0x1.053f96b868b40p-2
+  },
+  { // Entry 115
+    -0x1.ff956a68e5f5d7fa26829ba0a3287227p-3,
+    -0x1.053f96b868b40p-2
+  },
+  { // Entry 116
+    0x1.98b0c3c0dd8917febe21b582e45bf32ap-1,
+    0x1.06a6fdd8c9be8p0
+  },
+  { // Entry 117
+    -0x1.98b0c3c0dd8917febe21b582e45bf32ap-1,
+    -0x1.06a6fdd8c9be8p0
+  },
+  { // Entry 118
+    0x1.e7e3d0910807efff992c7a274fdbed8cp-2,
+    0x1.084p-1
+  },
+  { // Entry 119
+    -0x1.e7e3d0910807efff992c7a274fdbed8cp-2,
+    -0x1.084p-1
+  },
+  { // Entry 120
+    0x1.09882f0fd878b7fc750c23c0417aa352p-5,
+    0x1.09ap-5
+  },
+  { // Entry 121
+    -0x1.09882f0fd878b7fc750c23c0417aa352p-5,
+    -0x1.09ap-5
+  },
+  { // Entry 122
+    0x1.a057e3cb74245802b71c5786bd3bf5a9p-1,
+    0x1.0ea1281786681p0
+  },
+  { // Entry 123
+    -0x1.a057e3cb74245802b71c5786bd3bf5a9p-1,
+    -0x1.0ea1281786681p0
+  },
+  { // Entry 124
+    0x1.a057e3cb7428100cde6242b3bf2d75e7p-1,
+    0x1.0ea12817866c0p0
+  },
+  { // Entry 125
+    -0x1.a057e3cb7428100cde6242b3bf2d75e7p-1,
+    -0x1.0ea12817866c0p0
+  },
+  { // Entry 126
+    0x1.09544b71ad4a6800000000000013a8d4p-2,
+    0x1.0f6e5d9960397p-2
+  },
+  { // Entry 127
+    -0x1.09544b71ad4a6800000000000013a8d4p-2,
+    -0x1.0f6e5d9960397p-2
+  },
+  { // Entry 128
+    0x1.921fb4cd9c6767fffffe6051bf1c3fecp0,
+    0x1.142c69b7200b4p25
+  },
+  { // Entry 129
+    -0x1.921fb4cd9c6767fffffe6051bf1c3fecp0,
+    -0x1.142c69b7200b4p25
+  },
+  { // Entry 130
+    0x1.a908afa5b1d49d450834540fee9c3c24p-1,
+    0x1.180p0
+  },
+  { // Entry 131
+    -0x1.a908afa5b1d49d450834540fee9c3c24p-1,
+    -0x1.180p0
+  },
+  { // Entry 132
+    0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    0x1.1b2p0
+  },
+  { // Entry 133
+    -0x1.abdcc74821485ffb3dce2c471f1d9ccdp-1,
+    -0x1.1b2p0
+  },
+  { // Entry 134
+    0x1.1ffffffffff868000000005c43999999p-22,
+    0x1.2p-22
+  },
+  { // Entry 135
+    -0x1.1ffffffffff868000000005c43999999p-22,
+    -0x1.2p-22
+  },
+  { // Entry 136
+    0x1.1231f3cf3b64080110ff41eaf08e7f52p-1,
+    0x1.2fcf7444bde76p-1
+  },
+  { // Entry 137
+    -0x1.1231f3cf3b64080110ff41eaf08e7f52p-1,
+    -0x1.2fcf7444bde76p-1
+  },
+  { // Entry 138
+    0x1.14e89198860627ffffe8602275519490p-1,
+    0x1.337d9db6d7c12p-1
+  },
+  { // Entry 139
+    -0x1.14e89198860627ffffe8602275519490p-1,
+    -0x1.337d9db6d7c12p-1
+  },
+  { // Entry 140
+    0x1.91eae7e474234800ffed4579e939b69ep0,
+    0x1.364a2f134fcc8p10
+  },
+  { // Entry 141
+    -0x1.91eae7e474234800ffed4579e939b69ep0,
+    -0x1.364a2f134fcc8p10
+  },
+  { // Entry 142
+    0x1.921fb53da9afc7ff8a7b36e49887a88cp0,
+    0x1.3663986f82220p29
+  },
+  { // Entry 143
+    -0x1.921fb53da9afc7ff8a7b36e49887a88cp0,
+    -0x1.3663986f82220p29
+  },
+  { // Entry 144
+    0x1.78c56b92f190e84a323bd5804a1c5ba6p0,
+    0x1.4210842108420p3
+  },
+  { // Entry 145
+    -0x1.78c56b92f190e84a323bd5804a1c5ba6p0,
+    -0x1.4210842108420p3
+  },
+  { // Entry 146
+    0x1.78d751494898372d0fe3af3a7837ff8fp0,
+    0x1.42f5ff15ddc08p3
+  },
+  { // Entry 147
+    -0x1.78d751494898372d0fe3af3a7837ff8fp0,
+    -0x1.42f5ff15ddc08p3
+  },
+  { // Entry 148
+    0x1.31ce4da037f1542340ee4c61421bba5ap0,
+    0x1.43fff80p1
+  },
+  { // Entry 149
+    -0x1.31ce4da037f1542340ee4c61421bba5ap0,
+    -0x1.43fff80p1
+  },
+  { // Entry 150
+    0x1.31ce4fc9313474e69b41306d82deceb0p0,
+    0x1.440p1
+  },
+  { // Entry 151
+    -0x1.31ce4fc9313474e69b41306d82deceb0p0,
+    -0x1.440p1
+  },
+  { // Entry 152
+    0x1.26b3d211bc3faaf8f037dd3421d9f962p-1,
+    0x1.4c3a987530ea6p-1
+  },
+  { // Entry 153
+    -0x1.26b3d211bc3faaf8f037dd3421d9f962p-1,
+    -0x1.4c3a987530ea6p-1
+  },
+  { // Entry 154
+    0x1.351779f072846800a9bb18d72a79814ep0,
+    0x1.5094250942508p1
+  },
+  { // Entry 155
+    -0x1.351779f072846800a9bb18d72a79814ep0,
+    -0x1.5094250942508p1
+  },
+  { // Entry 156
+    0x1.58fcecb696d827ec66c4a7bfd8ed327bp-8,
+    0x1.58fdbd8ddbbf8p-8
+  },
+  { // Entry 157
+    -0x1.58fcecb696d827ec66c4a7bfd8ed327bp-8,
+    -0x1.58fdbd8ddbbf8p-8
+  },
+  { // Entry 158
+    0x1.63398f6da2f1a7fffff2d311886948c5p0,
+    0x1.596de8ca11ae6p2
+  },
+  { // Entry 159
+    -0x1.63398f6da2f1a7fffff2d311886948c5p0,
+    -0x1.596de8ca11ae6p2
+  },
+  { // Entry 160
+    0x1.3424a0066e6a8d6e3d6901f99034cde1p-1,
+    0x1.5faa0cbf48e56p-1
+  },
+  { // Entry 161
+    -0x1.3424a0066e6a8d6e3d6901f99034cde1p-1,
+    -0x1.5faa0cbf48e56p-1
+  },
+  { // Entry 162
+    0x1.5ff223a639d5bfce7ae1cfb7516d26adp-6,
+    0x1.6p-6
+  },
+  { // Entry 163
+    -0x1.5ff223a639d5bfce7ae1cfb7516d26adp-6,
+    -0x1.6p-6
+  },
+  { // Entry 164
+    0x1.345f01cce38c8d8be40cc12c58240e15p-1,
+    0x1.600000000018dp-1
+  },
+  { // Entry 165
+    -0x1.345f01cce38c8d8be40cc12c58240e15p-1,
+    -0x1.600000000018dp-1
+  },
+  { // Entry 166
+    0x1.367cb24fdff2146a3c6863d233ff09fep-1,
+    0x1.632p-1
+  },
+  { // Entry 167
+    -0x1.367cb24fdff2146a3c6863d233ff09fep-1,
+    -0x1.632p-1
+  },
+  { // Entry 168
+    0x1.57baeb9c51db490f8249f6679768741fp-2,
+    0x1.654p-2
+  },
+  { // Entry 169
+    -0x1.57baeb9c51db490f8249f6679768741fp-2,
+    -0x1.654p-2
+  },
+  { // Entry 170
+    0x1.395006b0fd682d86f4a40f69e4dad1f3p-1,
+    0x1.675370cc217f1p-1
+  },
+  { // Entry 171
+    -0x1.395006b0fd682d86f4a40f69e4dad1f3p-1,
+    -0x1.675370cc217f1p-1
+  },
+  { // Entry 172
+    0x1.695a2c268e1e57ffee0cb8c88986dfefp-12,
+    0x1.695a2d168b440p-12
+  },
+  { // Entry 173
+    -0x1.695a2c268e1e57ffee0cb8c88986dfefp-12,
+    -0x1.695a2d168b440p-12
+  },
+  { // Entry 174
+    0x1.90b6fc0474fec7fe12f524f1b420b184p0,
+    0x1.6b5ad6b5aceb4p7
+  },
+  { // Entry 175
+    -0x1.90b6fc0474fec7fe12f524f1b420b184p0,
+    -0x1.6b5ad6b5aceb4p7
+  },
+  { // Entry 176
+    0x1.3b8f3306167a8baa368daae0bf08e86cp0,
+    0x1.6c0p1
+  },
+  { // Entry 177
+    -0x1.3b8f3306167a8baa368daae0bf08e86cp0,
+    -0x1.6c0p1
+  },
+  { // Entry 178
+    0x1.5f6bae189b51098a86d90c98da4cc877p-2,
+    0x1.6de63b148cf0bp-2
+  },
+  { // Entry 179
+    -0x1.5f6bae189b51098a86d90c98da4cc877p-2,
+    -0x1.6de63b148cf0bp-2
+  },
+  { // Entry 180
+    0x1.3de18703d42d69f55b3e6c4d1fe5629dp-1,
+    0x1.6e30022cb4501p-1
+  },
+  { // Entry 181
+    -0x1.3de18703d42d69f55b3e6c4d1fe5629dp-1,
+    -0x1.6e30022cb4501p-1
+  },
+  { // Entry 182
+    0x1.ebe5401364d0c802b6d52ee2cdf2086ep-1,
+    0x1.6e3b1e21b27ddp0
+  },
+  { // Entry 183
+    -0x1.ebe5401364d0c802b6d52ee2cdf2086ep-1,
+    -0x1.6e3b1e21b27ddp0
+  },
+  { // Entry 184
+    0x1.6310721e8d7bc04e2ae4e8cce87a1ec0p-2,
+    0x1.72036f889e86fp-2
+  },
+  { // Entry 185
+    -0x1.6310721e8d7bc04e2ae4e8cce87a1ec0p-2,
+    -0x1.72036f889e86fp-2
+  },
+  { // Entry 186
+    0x1.685c82be1d6fa902b238e87716c3bbfbp-2,
+    0x1.7803718434620p-2
+  },
+  { // Entry 187
+    -0x1.685c82be1d6fa902b238e87716c3bbfbp-2,
+    -0x1.7803718434620p-2
+  },
+  { // Entry 188
+    0x1.68c3b08c20af09be807f598cbca32cb9p-2,
+    0x1.78788d320d639p-2
+  },
+  { // Entry 189
+    -0x1.68c3b08c20af09be807f598cbca32cb9p-2,
+    -0x1.78788d320d639p-2
+  },
+  { // Entry 190
+    0x1.6b35cbad026009f12d00003f84c29caep-2,
+    0x1.7b3fe92e2fd63p-2
+  },
+  { // Entry 191
+    -0x1.6b35cbad026009f12d00003f84c29caep-2,
+    -0x1.7b3fe92e2fd63p-2
+  },
+  { // Entry 192
+    0x1.6c4b3610c42b29eabeaa35cc1b8067ecp-2,
+    0x1.7c7b80a9d788bp-2
+  },
+  { // Entry 193
+    -0x1.6c4b3610c42b29eabeaa35cc1b8067ecp-2,
+    -0x1.7c7b80a9d788bp-2
+  },
+  { // Entry 194
+    0x1.6eed6ff6cd99ca02c4d88c9aa595d5cfp-2,
+    0x1.7f7b8c648a650p-2
+  },
+  { // Entry 195
+    -0x1.6eed6ff6cd99ca02c4d88c9aa595d5cfp-2,
+    -0x1.7f7b8c648a650p-2
+  },
+  { // Entry 196
+    0x1.7fffffffffffb80000000000184cccccp-25,
+    0x1.8p-25
+  },
+  { // Entry 197
+    -0x1.7fffffffffffb80000000000184cccccp-25,
+    -0x1.8p-25
+  },
+  { // Entry 198
+    0x1.7fffffffffffc800000000000f4cccccp-25,
+    0x1.8000000000001p-25
+  },
+  { // Entry 199
+    -0x1.7fffffffffffc800000000000f4cccccp-25,
+    -0x1.8000000000001p-25
+  },
+  { // Entry 200
+    0x1.7fffffffffffd80000000000064cccccp-25,
+    0x1.8000000000002p-25
+  },
+  { // Entry 201
+    -0x1.7fffffffffffd80000000000064cccccp-25,
+    -0x1.8000000000002p-25
+  },
+  { // Entry 202
+    0x1.f7b9ef3dc65408000005e3f91e816063p-1,
+    0x1.80df4b28b5a84p0
+  },
+  { // Entry 203
+    -0x1.f7b9ef3dc65408000005e3f91e816063p-1,
+    -0x1.80df4b28b5a84p0
+  },
+  { // Entry 204
+    0x1.90ce0249811008006638702db8ae59e2p0,
+    0x1.8421084210846p7
+  },
+  { // Entry 205
+    -0x1.90ce0249811008006638702db8ae59e2p0,
+    -0x1.8421084210846p7
+  },
+  { // Entry 206
+    0x1.fb3c57dab5afa80a506e91f92e6a8df9p-1,
+    0x1.86a71395bc9b5p0
+  },
+  { // Entry 207
+    -0x1.fb3c57dab5afa80a506e91f92e6a8df9p-1,
+    -0x1.86a71395bc9b5p0
+  },
+  { // Entry 208
+    0x1.68d94312ca7f17ffeed1dd16ec2d35e6p0,
+    0x1.898p2
+  },
+  { // Entry 209
+    -0x1.68d94312ca7f17ffeed1dd16ec2d35e6p0,
+    -0x1.898p2
+  },
+  { // Entry 210
+    0x1.ff69d0cefa8a27ebf8cbf5ec1cc78342p-1,
+    0x1.8db18047c8944p0
+  },
+  { // Entry 211
+    -0x1.ff69d0cefa8a27ebf8cbf5ec1cc78342p-1,
+    -0x1.8db18047c8944p0
+  },
+  { // Entry 212
+    0x1.983e285453b3f000002efc9d654c6a32p-4,
+    0x1.999999c022342p-4
+  },
+  { // Entry 213
+    -0x1.983e285453b3f000002efc9d654c6a32p-4,
+    -0x1.999999c022342p-4
+  },
+  { // Entry 214
+    0x1.94441feb7be7180000005c46362b16d8p-3,
+    0x1.999999f951960p-3
+  },
+  { // Entry 215
+    -0x1.94441feb7be7180000005c46362b16d8p-3,
+    -0x1.999999f951960p-3
+  },
+  { // Entry 216
+    0x1.9a6a8e96c86047fffe94ba49799c011fp-3,
+    0x1.9ffffffffffddp-3
+  },
+  { // Entry 217
+    -0x1.9a6a8e96c86047fffe94ba49799c011fp-3,
+    -0x1.9ffffffffffddp-3
+  },
+  { // Entry 218
+    0x1.9e94153cfe4dc80036c037e172b7cee9p-4,
+    0x1.a0000000008p-4
+  },
+  { // Entry 219
+    -0x1.9e94153cfe4dc80036c037e172b7cee9p-4,
+    -0x1.a0000000008p-4
+  },
+  { // Entry 220
+    0x1.9fd8a4d9973e57fc465de41ddc4cbae2p-4,
+    0x1.a147eb4c17006p-4
+  },
+  { // Entry 221
+    -0x1.9fd8a4d9973e57fc465de41ddc4cbae2p-4,
+    -0x1.a147eb4c17006p-4
+  },
+  { // Entry 222
+    0x1.62e23d7da5f6d8010d5496a08573e188p-1,
+    0x1.a94678821f0e9p-1
+  },
+  { // Entry 223
+    -0x1.62e23d7da5f6d8010d5496a08573e188p-1,
+    -0x1.a94678821f0e9p-1
+  },
+  { // Entry 224
+    0x1.096fe22081e2b800007e36c682109058p0,
+    0x1.b102342163952p0
+  },
+  { // Entry 225
+    -0x1.096fe22081e2b800007e36c682109058p0,
+    -0x1.b102342163952p0
+  },
+  { // Entry 226
+    0x1.0a471736b923b1f18885a17308e12beep0,
+    0x1.b445c1ad3cad1p0
+  },
+  { // Entry 227
+    -0x1.0a471736b923b1f18885a17308e12beep0,
+    -0x1.b445c1ad3cad1p0
+  },
+  { // Entry 228
+    0x1.0a66d6f646e8d37662253bd9155a84dep0,
+    0x1.b4c1d0c10cca9p0
+  },
+  { // Entry 229
+    -0x1.0a66d6f646e8d37662253bd9155a84dep0,
+    -0x1.b4c1d0c10cca9p0
+  },
+  { // Entry 230
+    0x1.a3ad60e89da8b6f1dd20c69213b7612ap-2,
+    0x1.bcde6f379bcdep-2
+  },
+  { // Entry 231
+    -0x1.a3ad60e89da8b6f1dd20c69213b7612ap-2,
+    -0x1.bcde6f379bcdep-2
+  },
+  { // Entry 232
+    0x1.0e04a23e7337930371d81f0cf4d7e9dcp0,
+    0x1.c34p0
+  },
+  { // Entry 233
+    -0x1.0e04a23e7337930371d81f0cf4d7e9dcp0,
+    -0x1.c34p0
+  },
+  { // Entry 234
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.c77250c52a4c4p994
+  },
+  { // Entry 235
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.c77250c52a4c4p994
+  },
+  { // Entry 236
+    0x1.ad00f5422058b7f130ce2474b9fbbdf8p-2,
+    0x1.c80p-2
+  },
+  { // Entry 237
+    -0x1.ad00f5422058b7f130ce2474b9fbbdf8p-2,
+    -0x1.c80p-2
+  },
+  { // Entry 238
+    0x1.4c50697afe3227fd6af96ad804191fc4p0,
+    0x1.c9b26c9b26cb2p1
+  },
+  { // Entry 239
+    -0x1.4c50697afe3227fd6af96ad804191fc4p0,
+    -0x1.c9b26c9b26cb2p1
+  },
+  { // Entry 240
+    0x1.c287b5672b66d828ebaf4756e4f60ad1p-3,
+    0x1.c9f0f1fe648bfp-3
+  },
+  { // Entry 241
+    -0x1.c287b5672b66d828ebaf4756e4f60ad1p-3,
+    -0x1.c9f0f1fe648bfp-3
+  },
+  { // Entry 242
+    0x1.ce35e40b0af2980007f47f44f1179e69p-5,
+    0x1.ceb39ce739ce2p-5
+  },
+  { // Entry 243
+    -0x1.ce35e40b0af2980007f47f44f1179e69p-5,
+    -0x1.ceb39ce739ce2p-5
+  },
+  { // Entry 244
+    0x1.ca5072830899e807a46fd46deed06c13p-3,
+    0x1.d21f1bc07ff10p-3
+  },
+  { // Entry 245
+    -0x1.ca5072830899e807a46fd46deed06c13p-3,
+    -0x1.d21f1bc07ff10p-3
+  },
+  { // Entry 246
+    0x1.d757ad6321e1b7ff10e2bc2deea40152p-7,
+    0x1.d76p-7
+  },
+  { // Entry 247
+    -0x1.d757ad6321e1b7ff10e2bc2deea40152p-7,
+    -0x1.d76p-7
+  },
+  { // Entry 248
+    0x1.bc568fd6eb58f751409b945717d9554ap-2,
+    0x1.da8p-2
+  },
+  { // Entry 249
+    -0x1.bc568fd6eb58f751409b945717d9554ap-2,
+    -0x1.da8p-2
+  },
+  { // Entry 250
+    0x1.dcb58cdb206477fea2ac612eafe90af0p-6,
+    0x1.dcd80p-6
+  },
+  { // Entry 251
+    -0x1.dcb58cdb206477fea2ac612eafe90af0p-6,
+    -0x1.dcd80p-6
+  },
+  { // Entry 252
+    0x1.4fefc9638a79f51094053a972023f6c2p0,
+    0x1.e3fffffffffffp1
+  },
+  { // Entry 253
+    -0x1.4fefc9638a79f51094053a972023f6c2p0,
+    -0x1.e3fffffffffffp1
+  },
+  { // Entry 254
+    0x1.e559f77b3d1bc7fe0f0af62001c4d64ap-4,
+    0x1.e7a2c68ca3bbep-4
+  },
+  { // Entry 255
+    -0x1.e559f77b3d1bc7fe0f0af62001c4d64ap-4,
+    -0x1.e7a2c68ca3bbep-4
+  },
+  { // Entry 256
+    0x1.507316595911cbbe475d6a0d0c879007p0,
+    0x1.e7f3f9fcfe780p1
+  },
+  { // Entry 257
+    -0x1.507316595911cbbe475d6a0d0c879007p0,
+    -0x1.e7f3f9fcfe780p1
+  },
+  { // Entry 258
+    0x1.df110864c9d9d03004ee274a70c0ae22p-3,
+    0x1.e7fffffffffffp-3
+  },
+  { // Entry 259
+    -0x1.df110864c9d9d03004ee274a70c0ae22p-3,
+    -0x1.e7fffffffffffp-3
+  },
+  { // Entry 260
+    0x1.7145eac2088a38096a1a13357d2f5f02p0,
+    0x1.fp2
+  },
+  { // Entry 261
+    -0x1.7145eac2088a38096a1a13357d2f5f02p0,
+    -0x1.fp2
+  },
+  { // Entry 262
+    0x1.f2d88602d915b7a920d38c9f9cff16e8p-6,
+    0x1.f30p-6
+  },
+  { // Entry 263
+    -0x1.f2d88602d915b7a920d38c9f9cff16e8p-6,
+    -0x1.f30p-6
+  },
+  { // Entry 264
+    0x1.f8cda64a08edafa2039d9d8a93546545p-6,
+    0x1.f8f68ec9e17eep-6
+  },
+  { // Entry 265
+    -0x1.f8cda64a08edafa2039d9d8a93546545p-6,
+    -0x1.f8f68ec9e17eep-6
+  },
+  { // Entry 266
+    0x1.8e1199d0ffd197fffe93ecafbc7df2e1p0,
+    0x1.f8ffffeffffaep5
+  },
+  { // Entry 267
+    -0x1.8e1199d0ffd197fffe93ecafbc7df2e1p0,
+    -0x1.f8ffffeffffaep5
+  },
+  { // Entry 268
+    0x1.efc20ff0ea4347fb09f751f06225cf3ep-3,
+    0x1.f9ac87c22c381p-3
+  },
+  { // Entry 269
+    -0x1.efc20ff0ea4347fb09f751f06225cf3ep-3,
+    -0x1.f9ac87c22c381p-3
+  },
+  { // Entry 270
+    0x1.fa55579e0ba577fe929dc83eb7995abcp-6,
+    0x1.fa7e9fa7e9f89p-6
+  },
+  { // Entry 271
+    -0x1.fa55579e0ba577fe929dc83eb7995abcp-6,
+    -0x1.fa7e9fa7e9f89p-6
+  },
+  { // Entry 272
+    0x1.fa55579e0ba6f7a0b740d8dad80c76dep-6,
+    0x1.fa7e9fa7e9fa1p-6
+  },
+  { // Entry 273
+    -0x1.fa55579e0ba6f7a0b740d8dad80c76dep-6,
+    -0x1.fa7e9fa7e9fa1p-6
+  },
+  { // Entry 274
+    0x1.fdb067638eb577993194616b1f02253ep-6,
+    0x1.fdda82fef66eep-6
+  },
+  { // Entry 275
+    -0x1.fdb067638eb577993194616b1f02253ep-6,
+    -0x1.fdda82fef66eep-6
+  },
+  { // Entry 276
+    0x1.f58a3225d517f7b85d014640f929635dp-3,
+    0x1.ffcffffffffffp-3
+  },
+  { // Entry 277
+    -0x1.f58a3225d517f7b85d014640f929635dp-3,
+    -0x1.ffcffffffffffp-3
+  },
+  { // Entry 278
+    0x1.f5a8507ca2e7f74fe8389718208bcb16p-3,
+    0x1.ffeffffffffffp-3
+  },
+  { // Entry 279
+    -0x1.f5a8507ca2e7f74fe8389718208bcb16p-3,
+    -0x1.ffeffffffffffp-3
+  },
+  { // Entry 280
+    0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    0x1.ffeffffffffffp0
+  },
+  { // Entry 281
+    -0x1.1b6ae5e70d57a0024825b0cee86fd415p0,
+    -0x1.ffeffffffffffp0
+  },
+  { // Entry 282
+    0x1.822487e434a688433f85f4d9d59f5c91p0,
+    0x1.ffeffffffffffp3
+  },
+  { // Entry 283
+    -0x1.822487e434a688433f85f4d9d59f5c91p0,
+    -0x1.ffeffffffffffp3
+  },
+  { // Entry 284
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fff8e61eadcf7p1021
+  },
+  { // Entry 285
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fff8e61eadcf7p1021
+  },
+  { // Entry 286
+    0x1.f5b39f92578e003ce025445d5448c723p-3,
+    0x1.fffc03fffffffp-3
+  },
+  { // Entry 287
+    -0x1.f5b39f92578e003ce025445d5448c723p-3,
+    -0x1.fffc03fffffffp-3
+  },
+  { // Entry 288
+    0x1.1b6e0f9521925801d32b4375d240e5b1p0,
+    0x1.ffffcffffffffp0
+  },
+  { // Entry 289
+    -0x1.1b6e0f9521925801d32b4375d240e5b1p0,
+    -0x1.ffffcffffffffp0
+  },
+  { // Entry 290
+    0x1.f5b75ded226447fe90c6cb904987f275p-3,
+    0x1.fffffe3ffffbfp-3
+  },
+  { // Entry 291
+    -0x1.f5b75ded226447fe90c6cb904987f275p-3,
+    -0x1.fffffe3ffffbfp-3
+  },
+  { // Entry 292
+    0x1.8a205fd5287ff7ff262bad6513207543p0,
+    0x1.fffffff3fffffp4
+  },
+  { // Entry 293
+    -0x1.8a205fd5287ff7ff262bad6513207543p0,
+    -0x1.fffffff3fffffp4
+  },
+  { // Entry 294
+    0x1.ffd55bba962df799aa0c3a5a5edf7631p-6,
+    0x1.fffffffffecb6p-6
+  },
+  { // Entry 295
+    -0x1.ffd55bba962df799aa0c3a5a5edf7631p-6,
+    -0x1.fffffffffecb6p-6
+  },
+  { // Entry 296
+    0x1.ffd55bba972df799aa0c3a87739a477dp-6,
+    0x1.ffffffffffcbap-6
+  },
+  { // Entry 297
+    -0x1.ffd55bba972df799aa0c3a87739a477dp-6,
+    -0x1.ffffffffffcbap-6
+  },
+  { // Entry 298
+    0x1.dac670561bb3768adfc88bd930751a06p-2,
+    0x1.fffffffffffe2p-2
+  },
+  { // Entry 299
+    -0x1.dac670561bb3768adfc88bd930751a06p-2,
+    -0x1.fffffffffffe2p-2
+  },
+  { // Entry 300
+    0x1.8a205fd55873f800459be65852624b5fp0,
+    0x1.ffffffffffff3p4
+  },
+  { // Entry 301
+    -0x1.8a205fd55873f800459be65852624b5fp0,
+    -0x1.ffffffffffff3p4
+  },
+  { // Entry 302
+    0x1.fffff55555bb3bb73172cf8cfdef50f9p-11,
+    0x1.ffffffffffff8p-11
+  },
+  { // Entry 303
+    -0x1.fffff55555bb3bb73172cf8cfdef50f9p-11,
+    -0x1.ffffffffffff8p-11
+  },
+  { // Entry 304
+    0x1.f5b75f92c80db80cbd711fcdd109b918p-3,
+    0x1.ffffffffffffep-3
+  },
+  { // Entry 305
+    -0x1.f5b75f92c80db80cbd711fcdd109b918p-3,
+    -0x1.ffffffffffffep-3
+  },
+  { // Entry 306
+    0x1.ffffffffffffb5555555555563bbbbbbp-26,
+    0x1.ffffffffffffep-26
+  },
+  { // Entry 307
+    -0x1.ffffffffffffb5555555555563bbbbbbp-26,
+    -0x1.ffffffffffffep-26
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 309
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 310
+    -0.0,
+    -0.0
+  },
+  { // Entry 311
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 313
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 314
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 315
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 316
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 317
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 318
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 319
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 320
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 321
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 322
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 323
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 324
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 325
+    0x1.9999994237fab1da64992a310312505ep-13,
+    0x1.999999999999ap-13
+  },
+  { // Entry 326
+    -0x1.9999994237fab1da64992a310312505ep-13,
+    -0x1.999999999999ap-13
+  },
+  { // Entry 327
+    0x1.9999983c131f7a10c5dd5d6e7ce3cb81p-12,
+    0x1.999999999999ap-12
+  },
+  { // Entry 328
+    -0x1.9999983c131f7a10c5dd5d6e7ce3cb81p-12,
+    -0x1.999999999999ap-12
+  },
+  { // Entry 329
+    0x1.333330e560498c727e4d6265bd2ffec8p-11,
+    0x1.3333333333334p-11
+  },
+  { // Entry 330
+    -0x1.333330e560498c727e4d6265bd2ffec8p-11,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 331
+    0x1.999994237fca32b5a26ff8f7d9bd8d35p-11,
+    0x1.999999999999ap-11
+  },
+  { // Entry 332
+    -0x1.999994237fca32b5a26ff8f7d9bd8d35p-11,
+    -0x1.999999999999ap-11
+  },
+  { // Entry 333
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.0p-10
+  },
+  { // Entry 334
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.0p-10
+  },
+  { // Entry 335
+    0x1.333329fbe7ebeef09e51711b44f86539p-10,
+    0x1.3333333333333p-10
+  },
+  { // Entry 336
+    -0x1.333329fbe7ebeef09e51711b44f86539p-10,
+    -0x1.3333333333333p-10
+  },
+  { // Entry 337
+    0x1.666657c3edf5fc60e8ee22a4cfe0569cp-10,
+    0x1.6666666666666p-10
+  },
+  { // Entry 338
+    -0x1.666657c3edf5fc60e8ee22a4cfe0569cp-10,
+    -0x1.6666666666666p-10
+  },
+  { // Entry 339
+    0x1.999983c133ee81d417cae21e440492ffp-10,
+    0x1.9999999999999p-10
+  },
+  { // Entry 340
+    -0x1.999983c133ee81d417cae21e440492ffp-10,
+    -0x1.9999999999999p-10
+  },
+  { // Entry 341
+    0x1.ccccadb230d5be2055f8f3b668d57c61p-10,
+    0x1.cccccccccccccp-10
+  },
+  { // Entry 342
+    -0x1.ccccadb230d5be2055f8f3b668d57c61p-10,
+    -0x1.cccccccccccccp-10
+  },
+  { // Entry 343
+    0x1.0664f6d5e1b55939fa39d3978354fb08p-7,
+    0x1.0666666666666p-7
+  },
+  { // Entry 344
+    -0x1.0664f6d5e1b55939fa39d3978354fb08p-7,
+    -0x1.0666666666666p-7
+  },
+  { // Entry 345
+    0x1.ccc506615256b4d660acbe5536614bc0p-7,
+    0x1.cccccccccccccp-7
+  },
+  { // Entry 346
+    -0x1.ccc506615256b4d660acbe5536614bc0p-7,
+    -0x1.cccccccccccccp-7
+  },
+  { // Entry 347
+    0x1.498e385e62b42d40708322b65b9a92a2p-6,
+    0x1.4999999999999p-6
+  },
+  { // Entry 348
+    -0x1.498e385e62b42d40708322b65b9a92a2p-6,
+    -0x1.4999999999999p-6
+  },
+  { // Entry 349
+    0x1.acb3bf2888fd253cde72a65ff6b5a5edp-6,
+    0x1.accccccccccccp-6
+  },
+  { // Entry 350
+    -0x1.acb3bf2888fd253cde72a65ff6b5a5edp-6,
+    -0x1.accccccccccccp-6
+  },
+  { // Entry 351
+    0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    0x1.080p-5
+  },
+  { // Entry 352
+    -0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    -0x1.080p-5
+  },
+  { // Entry 353
+    0x1.39726b096afb5657f037d44ceabacfdep-5,
+    0x1.399999999999ap-5
+  },
+  { // Entry 354
+    -0x1.39726b096afb5657f037d44ceabacfdep-5,
+    -0x1.399999999999ap-5
+  },
+  { // Entry 355
+    0x1.6af659752a8e90e79823616d18922d06p-5,
+    0x1.6b33333333334p-5
+  },
+  { // Entry 356
+    -0x1.6af659752a8e90e79823616d18922d06p-5,
+    -0x1.6b33333333334p-5
+  },
+  { // Entry 357
+    0x1.9c737d9b4d07092c295584951a1f5a71p-5,
+    0x1.9cccccccccccep-5
+  },
+  { // Entry 358
+    -0x1.9c737d9b4d07092c295584951a1f5a71p-5,
+    -0x1.9cccccccccccep-5
+  },
+  { // Entry 359
+    0x1.cde8ec5bb65f0e742405e56b5ae426e2p-5,
+    0x1.ce66666666666p-5
+  },
+  { // Entry 360
+    -0x1.cde8ec5bb65f0e742405e56b5ae426e2p-5,
+    -0x1.ce66666666666p-5
+  },
+  { // Entry 361
+    0x1.3359bce85d4c0edf062a316ac9a3b035p-1,
+    0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 362
+    -0x1.3359bce85d4c0edf062a316ac9a3b035p-1,
+    -0x1.5e7fc4369bdadp-1
+  },
+  { // Entry 363
+    0x1.d5ca708561450bec8cd54cd06ef71588p-1,
+    0x1.4e7fc4369bdadp0
+  },
+  { // Entry 364
+    -0x1.d5ca708561450bec8cd54cd06ef71588p-1,
+    -0x1.4e7fc4369bdadp0
+  },
+  { // Entry 365
+    0x1.17ac441eeac2e0e131633d5dbda1192dp0,
+    0x1.edbfa651e9c84p0
+  },
+  { // Entry 366
+    -0x1.17ac441eeac2e0e131633d5dbda1192dp0,
+    -0x1.edbfa651e9c84p0
+  },
+  { // Entry 367
+    0x1.3279e85590bed5c0a7d465c70e9312dbp0,
+    0x1.467fc4369bdadp1
+  },
+  { // Entry 368
+    -0x1.3279e85590bed5c0a7d465c70e9312dbp0,
+    -0x1.467fc4369bdadp1
+  },
+  { // Entry 369
+    0x1.43f644a23f11312b0baeda6469939df1p0,
+    0x1.961fb54442d18p1
+  },
+  { // Entry 370
+    -0x1.43f644a23f11312b0baeda6469939df1p0,
+    -0x1.961fb54442d18p1
+  },
+  { // Entry 371
+    0x1.502a1d3da2b62cdafdfc8df896fb781ep0,
+    0x1.e5bfa651e9c83p1
+  },
+  { // Entry 372
+    -0x1.502a1d3da2b62cdafdfc8df896fb781ep0,
+    -0x1.e5bfa651e9c83p1
+  },
+  { // Entry 373
+    0x1.592066aa733e56535ef23487f1ba45abp0,
+    0x1.1aafcbafc85f7p2
+  },
+  { // Entry 374
+    -0x1.592066aa733e56535ef23487f1ba45abp0,
+    -0x1.1aafcbafc85f7p2
+  },
+  { // Entry 375
+    0x1.5ff8e2755165d95ef4dfa238b69035c3p0,
+    0x1.427fc4369bdadp2
+  },
+  { // Entry 376
+    -0x1.5ff8e2755165d95ef4dfa238b69035c3p0,
+    -0x1.427fc4369bdadp2
+  },
+  { // Entry 377
+    0x1.655d65485dc172ad1da5d376106987dep0,
+    0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 378
+    -0x1.655d65485dc172ad1da5d376106987dep0,
+    -0x1.6a4fbcbd6f562p2
+  },
+  { // Entry 379
+    0x1.65711d6bfd5303b266e1f766916353c0p0,
+    0x1.6af2eff0a2896p2
+  },
+  { // Entry 380
+    -0x1.65711d6bfd5303b266e1f766916353c0p0,
+    -0x1.6af2eff0a2896p2
+  },
+  { // Entry 381
+    0x1.602a2aaa59041e73fe9cbe5018d9258bp0,
+    0x1.43c62a9d02414p2
+  },
+  { // Entry 382
+    -0x1.602a2aaa59041e73fe9cbe5018d9258bp0,
+    -0x1.43c62a9d02414p2
+  },
+  { // Entry 383
+    0x1.597f46e10aa0ef6e7b79babd52218e41p0,
+    0x1.1c99654961f92p2
+  },
+  { // Entry 384
+    -0x1.597f46e10aa0ef6e7b79babd52218e41p0,
+    -0x1.1c99654961f92p2
+  },
+  { // Entry 385
+    0x1.50d20254a2ff42dab732523958fa024cp0,
+    0x1.ead93feb8361fp1
+  },
+  { // Entry 386
+    -0x1.50d20254a2ff42dab732523958fa024cp0,
+    -0x1.ead93feb8361fp1
+  },
+  { // Entry 387
+    0x1.45190c030df0f68611f816a36d10b59ap0,
+    0x1.9c7fb54442d1ap1
+  },
+  { // Entry 388
+    -0x1.45190c030df0f68611f816a36d10b59ap0,
+    -0x1.9c7fb54442d1ap1
+  },
+  { // Entry 389
+    0x1.34794d6993e603dc236dc9700bc984e9p0,
+    0x1.4e262a9d02415p1
+  },
+  { // Entry 390
+    -0x1.34794d6993e603dc236dc9700bc984e9p0,
+    -0x1.4e262a9d02415p1
+  },
+  { // Entry 391
+    0x1.1b598910bd9bdfeeb608b6b41a96f287p0,
+    0x1.ff993feb83620p0
+  },
+  { // Entry 392
+    -0x1.1b598910bd9bdfeeb608b6b41a96f287p0,
+    -0x1.ff993feb83620p0
+  },
+  { // Entry 393
+    0x1.e44c9309197c4f98392215a424630bb4p-1,
+    0x1.62e62a9d02416p0
+  },
+  { // Entry 394
+    -0x1.e44c9309197c4f98392215a424630bb4p-1,
+    -0x1.62e62a9d02416p0
+  },
+  { // Entry 395
+    0x1.5150f1acfb0190aa9794ba0211b4eb4bp-1,
+    0x1.8c662a9d02419p-1
+  },
+  { // Entry 396
+    -0x1.5150f1acfb0190aa9794ba0211b4eb4bp-1,
+    -0x1.8c662a9d02419p-1
+  },
+  { // Entry 397
+    -0x1.073ea15c614e11668ba9fe75888fee13p0,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 398
+    0x1.073ea15c614e11668ba9fe75888fee13p0,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 399
+    -0x1.0215495ceb1806c15504264e9f1be222p0,
+    -0x1.95ec8b9e03d54p0
+  },
+  { // Entry 400
+    0x1.0215495ceb1806c15504264e9f1be222p0,
+    0x1.95ec8b9e03d54p0
+  },
+  { // Entry 401
+    -0x1.f923661b52647e658c1f9707f87d1606p-1,
+    -0x1.832efa2a435a9p0
+  },
+  { // Entry 402
+    0x1.f923661b52647e658c1f9707f87d1606p-1,
+    0x1.832efa2a435a9p0
+  },
+  { // Entry 403
+    -0x1.ed57806b9090def7310604bffed0093dp-1,
+    -0x1.707168b682dfep0
+  },
+  { // Entry 404
+    0x1.ed57806b9090def7310604bffed0093dp-1,
+    0x1.707168b682dfep0
+  },
+  { // Entry 405
+    -0x1.e0b524b578b4212100f5f78ecd69a1ddp-1,
+    -0x1.5db3d742c2653p0
+  },
+  { // Entry 406
+    0x1.e0b524b578b4212100f5f78ecd69a1ddp-1,
+    0x1.5db3d742c2653p0
+  },
+  { // Entry 407
+    -0x1.d3290701e8ac987ea5732b16701a05fcp-1,
+    -0x1.4af645cf01ea8p0
+  },
+  { // Entry 408
+    0x1.d3290701e8ac987ea5732b16701a05fcp-1,
+    0x1.4af645cf01ea8p0
+  },
+  { // Entry 409
+    -0x1.c49e488683ace4d5fd4683f7caab7e9fp-1,
+    -0x1.3838b45b416fdp0
+  },
+  { // Entry 410
+    0x1.c49e488683ace4d5fd4683f7caab7e9fp-1,
+    0x1.3838b45b416fdp0
+  },
+  { // Entry 411
+    -0x1.b4fe843e9e803b2349ffd384aab807f3p-1,
+    -0x1.257b22e780f52p0
+  },
+  { // Entry 412
+    0x1.b4fe843e9e803b2349ffd384aab807f3p-1,
+    0x1.257b22e780f52p0
+  },
+  { // Entry 413
+    -0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 414
+    0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 415
+    -0x1.871278e2b0226c7be314f39e634cb866p-1,
+    -0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 416
+    0x1.871278e2b0226c7be314f39e634cb866p-1,
+    0x1.ea5c3ed5b3850p-1
+  },
+  { // Entry 417
+    -0x1.7b8b3be13fca614c858af0d2c2879b7ap-1,
+    -0x1.d4b87dab670a0p-1
+  },
+  { // Entry 418
+    0x1.7b8b3be13fca614c858af0d2c2879b7ap-1,
+    0x1.d4b87dab670a0p-1
+  },
+  { // Entry 419
+    -0x1.6f851ed60f1e0ce1ff2d5577433c5ab2p-1,
+    -0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 420
+    0x1.6f851ed60f1e0ce1ff2d5577433c5ab2p-1,
+    0x1.bf14bc811a8f0p-1
+  },
+  { // Entry 421
+    -0x1.62fb644de198ccbb0b7e0d32484d4ec0p-1,
+    -0x1.a970fb56ce140p-1
+  },
+  { // Entry 422
+    0x1.62fb644de198ccbb0b7e0d32484d4ec0p-1,
+    0x1.a970fb56ce140p-1
+  },
+  { // Entry 423
+    -0x1.55e986b4afe0cfdcf0138634c7c95b2bp-1,
+    -0x1.93cd3a2c81990p-1
+  },
+  { // Entry 424
+    0x1.55e986b4afe0cfdcf0138634c7c95b2bp-1,
+    0x1.93cd3a2c81990p-1
+  },
+  { // Entry 425
+    -0x1.484b52126a2735deb224632c4c2e4042p-1,
+    -0x1.7e297902351e0p-1
+  },
+  { // Entry 426
+    0x1.484b52126a2735deb224632c4c2e4042p-1,
+    0x1.7e297902351e0p-1
+  },
+  { // Entry 427
+    -0x1.3a1d01c9f4b1e99685e3fe739fdcffdap-1,
+    -0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 428
+    0x1.3a1d01c9f4b1e99685e3fe739fdcffdap-1,
+    0x1.6885b7d7e8a30p-1
+  },
+  { // Entry 429
+    -0x1.2b5b626353bb47148742f9c053cd45c3p-1,
+    -0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 430
+    0x1.2b5b626353bb47148742f9c053cd45c3p-1,
+    0x1.52e1f6ad9c280p-1
+  },
+  { // Entry 431
+    -0x1.1c03f735e818163698043ffa524dd5f7p-1,
+    -0x1.3d3e35834fad0p-1
+  },
+  { // Entry 432
+    0x1.1c03f735e818163698043ffa524dd5f7p-1,
+    0x1.3d3e35834fad0p-1
+  },
+  { // Entry 433
+    -0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 434
+    0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 435
+    -0x1.bb12f34bbefd630026b351ba15c3d256p-2,
+    -0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 436
+    0x1.bb12f34bbefd630026b351ba15c3d256p-2,
+    0x1.d8f7208e6b82cp-2
+  },
+  { // Entry 437
+    -0x1.894ae0cb0ee2f00789eee093998b4a9bp-2,
+    -0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 438
+    0x1.894ae0cb0ee2f00789eee093998b4a9bp-2,
+    0x1.9dd83c7c9e126p-2
+  },
+  { // Entry 439
+    -0x1.5579fdc3a8f3f9cf3f863dc6aa9b7198p-2,
+    -0x1.62b9586ad0a20p-2
+  },
+  { // Entry 440
+    0x1.5579fdc3a8f3f9cf3f863dc6aa9b7198p-2,
+    0x1.62b9586ad0a20p-2
+  },
+  { // Entry 441
+    -0x1.1fc79cfbf4e7b55f4dc25f1890fecd53p-2,
+    -0x1.279a74590331ap-2
+  },
+  { // Entry 442
+    0x1.1fc79cfbf4e7b55f4dc25f1890fecd53p-2,
+    0x1.279a74590331ap-2
+  },
+  { // Entry 443
+    -0x1.d0d0f85f973cce547bb0dc0a38708bffp-3,
+    -0x1.d8f7208e6b829p-3
+  },
+  { // Entry 444
+    0x1.d0d0f85f973cce547bb0dc0a38708bffp-3,
+    0x1.d8f7208e6b829p-3
+  },
+  { // Entry 445
+    -0x1.5f3d415cb47fed760072dbaeb268ceefp-3,
+    -0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 446
+    0x1.5f3d415cb47fed760072dbaeb268ceefp-3,
+    0x1.62b9586ad0a1ep-3
+  },
+  { // Entry 447
+    -0x1.d6e1431de5be5630dec33d31fb926cbfp-4,
+    -0x1.d8f7208e6b826p-4
+  },
+  { // Entry 448
+    0x1.d6e1431de5be5630dec33d31fb926cbfp-4,
+    0x1.d8f7208e6b826p-4
+  },
+  { // Entry 449
+    -0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 450
+    0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 451
+    0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 452
+    -0x1.d870dcfcfe7d4ce3742c7268f8f5e0e8p-5,
+    -0x1.d8f7208e6b82dp-5
+  },
+  { // Entry 453
+    0x1.d6e1431de5bec4b79b64ec5a67bbcc08p-4,
+    0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 454
+    -0x1.d6e1431de5bec4b79b64ec5a67bbcc08p-4,
+    -0x1.d8f7208e6b82dp-4
+  },
+  { // Entry 455
+    0x1.5f3d415cb4802b98cc41263eda7f242ap-3,
+    0x1.62b9586ad0a22p-3
+  },
+  { // Entry 456
+    -0x1.5f3d415cb4802b98cc41263eda7f242ap-3,
+    -0x1.62b9586ad0a22p-3
+  },
+  { // Entry 457
+    0x1.d0d0f85f973d0b16e9de3a03bdc6808bp-3,
+    0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 458
+    -0x1.d0d0f85f973d0b16e9de3a03bdc6808bp-3,
+    -0x1.d8f7208e6b82dp-3
+  },
+  { // Entry 459
+    0x1.1fc79cfbf4e7d2e9265fe8f12eda96cap-2,
+    0x1.279a74590331cp-2
+  },
+  { // Entry 460
+    -0x1.1fc79cfbf4e7d2e9265fe8f12eda96cap-2,
+    -0x1.279a74590331cp-2
+  },
+  { // Entry 461
+    0x1.5579fdc3a8f4166188aad00fcf71b510p-2,
+    0x1.62b9586ad0a22p-2
+  },
+  { // Entry 462
+    -0x1.5579fdc3a8f4166188aad00fcf71b510p-2,
+    -0x1.62b9586ad0a22p-2
+  },
+  { // Entry 463
+    0x1.894ae0cb0ee30b895f6381f3b133dc04p-2,
+    0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 464
+    -0x1.894ae0cb0ee30b895f6381f3b133dc04p-2,
+    -0x1.9dd83c7c9e128p-2
+  },
+  { // Entry 465
+    0x1.bb12f34bbefd7d5fccadb160103a2001p-2,
+    0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 466
+    -0x1.bb12f34bbefd7d5fccadb160103a2001p-2,
+    -0x1.d8f7208e6b82ep-2
+  },
+  { // Entry 467
+    0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    0x1.0a0b02501c799p-1
+  },
+  { // Entry 468
+    -0x1.eab7b2edbe26eb1b5fb149357f51d6c9p-2,
+    -0x1.0a0b02501c799p-1
+  },
+  { // Entry 469
+    0x1.1c03f735e817e7f7c907ff3c4e54650dp-1,
+    0x1.3d3e35834faccp-1
+  },
+  { // Entry 470
+    -0x1.1c03f735e817e7f7c907ff3c4e54650dp-1,
+    -0x1.3d3e35834faccp-1
+  },
+  { // Entry 471
+    0x1.2b5b626353bb1a939a57893481fc6efep-1,
+    0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 472
+    -0x1.2b5b626353bb1a939a57893481fc6efep-1,
+    -0x1.52e1f6ad9c27cp-1
+  },
+  { // Entry 473
+    0x1.3a1d01c9f4b1becd56338b2ff004552cp-1,
+    0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 474
+    -0x1.3a1d01c9f4b1becd56338b2ff004552cp-1,
+    -0x1.6885b7d7e8a2cp-1
+  },
+  { // Entry 475
+    0x1.484b52126a270cc4c2f0b9b8d5749c23p-1,
+    0x1.7e297902351dcp-1
+  },
+  { // Entry 476
+    -0x1.484b52126a270cc4c2f0b9b8d5749c23p-1,
+    -0x1.7e297902351dcp-1
+  },
+  { // Entry 477
+    0x1.55e986b4afe0a867e17b875f8892133ep-1,
+    0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 478
+    -0x1.55e986b4afe0a867e17b875f8892133ep-1,
+    -0x1.93cd3a2c8198cp-1
+  },
+  { // Entry 479
+    0x1.62fb644de198a6df044c5f206ab189e5p-1,
+    0x1.a970fb56ce13cp-1
+  },
+  { // Entry 480
+    -0x1.62fb644de198a6df044c5f206ab189e5p-1,
+    -0x1.a970fb56ce13cp-1
+  },
+  { // Entry 481
+    0x1.6f851ed60f1de8920ad396732d80e630p-1,
+    0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 482
+    -0x1.6f851ed60f1de8920ad396732d80e630p-1,
+    -0x1.bf14bc811a8ecp-1
+  },
+  { // Entry 483
+    0x1.7b8b3be13fca3e7ae61ece393dc20351p-1,
+    0x1.d4b87dab6709cp-1
+  },
+  { // Entry 484
+    -0x1.7b8b3be13fca3e7ae61ece393dc20351p-1,
+    -0x1.d4b87dab6709cp-1
+  },
+  { // Entry 485
+    0x1.871278e2b0224b1a57a7517aa6080561p-1,
+    0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 486
+    -0x1.871278e2b0224b1a57a7517aa6080561p-1,
+    -0x1.ea5c3ed5b384cp-1
+  },
+  { // Entry 487
+    0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    0x1.12bd9173c07abp0
+  },
+  { // Entry 488
+    -0x1.a431f39bc6f4fc2f533fb8b685f7fa56p-1,
+    -0x1.12bd9173c07abp0
+  },
+  { // Entry 489
+    0x1.b4fe843e9e8072727b4b8be7730dc9f5p-1,
+    0x1.257b22e780f56p0
+  },
+  { // Entry 490
+    -0x1.b4fe843e9e8072727b4b8be7730dc9f5p-1,
+    -0x1.257b22e780f56p0
+  },
+  { // Entry 491
+    0x1.c49e488683ad184b42699159db8963c3p-1,
+    0x1.3838b45b41701p0
+  },
+  { // Entry 492
+    -0x1.c49e488683ad184b42699159db8963c3p-1,
+    -0x1.3838b45b41701p0
+  },
+  { // Entry 493
+    0x1.d3290701e8acc868f20733059c0c608ep-1,
+    0x1.4af645cf01eacp0
+  },
+  { // Entry 494
+    -0x1.d3290701e8acc868f20733059c0c608ep-1,
+    -0x1.4af645cf01eacp0
+  },
+  { // Entry 495
+    0x1.e0b524b578b44dca424e286b8612b332p-1,
+    0x1.5db3d742c2657p0
+  },
+  { // Entry 496
+    -0x1.e0b524b578b44dca424e286b8612b332p-1,
+    -0x1.5db3d742c2657p0
+  },
+  { // Entry 497
+    0x1.ed57806b909108a3ff02c70a568bf594p-1,
+    0x1.707168b682e02p0
+  },
+  { // Entry 498
+    -0x1.ed57806b909108a3ff02c70a568bf594p-1,
+    -0x1.707168b682e02p0
+  },
+  { // Entry 499
+    0x1.f923661b5264a5551df6c3d4c279e2c6p-1,
+    0x1.832efa2a435adp0
+  },
+  { // Entry 500
+    -0x1.f923661b5264a5551df6c3d4c279e2c6p-1,
+    -0x1.832efa2a435adp0
+  },
+  { // Entry 501
+    0x1.0215495ceb1818f77c287b62995eeddbp0,
+    0x1.95ec8b9e03d58p0
+  },
+  { // Entry 502
+    -0x1.0215495ceb1818f77c287b62995eeddbp0,
+    -0x1.95ec8b9e03d58p0
+  },
+  { // Entry 503
+    0x1.073ea15c614e11668ba9fe75888fee13p0,
+    0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 504
+    -0x1.073ea15c614e11668ba9fe75888fee13p0,
+    -0x1.a8aa1d11c44ffp0
+  },
+  { // Entry 505
+    0x1.96c4c0ec290ebef92ab936700e7d3f1bp-1,
+    0x1.04aff6d330942p0
+  },
+  { // Entry 506
+    -0x1.96c4c0ec290ebef92ab936700e7d3f1bp-1,
+    -0x1.04aff6d330942p0
+  },
+  { // Entry 507
+    0x1.96c565a66992e578d5536359e24d1cffp-1,
+    0x1.04b09e98dcdb4p0
+  },
+  { // Entry 508
+    -0x1.96c565a66992e578d5536359e24d1cffp-1,
+    -0x1.04b09e98dcdb4p0
+  },
+  { // Entry 509
+    0x1.96c60a603e270ac6f5547fd0c1f8f8ecp-1,
+    0x1.04b1465e89226p0
+  },
+  { // Entry 510
+    -0x1.96c60a603e270ac6f5547fd0c1f8f8ecp-1,
+    -0x1.04b1465e89226p0
+  },
+  { // Entry 511
+    0x1.96c6af19a6cb76e043213a66372fc856p-1,
+    0x1.04b1ee2435698p0
+  },
+  { // Entry 512
+    -0x1.96c6af19a6cb76e043213a66372fc856p-1,
+    -0x1.04b1ee2435698p0
+  },
+  { // Entry 513
+    0x1.96c753d2a38071c172287dd0e901a28ep-1,
+    0x1.04b295e9e1b0ap0
+  },
+  { // Entry 514
+    -0x1.96c753d2a38071c172287dd0e901a28ep-1,
+    -0x1.04b295e9e1b0ap0
+  },
+  { // Entry 515
+    0x1.96c7f88b3446436730e2c7c9e49c64fap-1,
+    0x1.04b33daf8df7cp0
+  },
+  { // Entry 516
+    -0x1.96c7f88b3446436730e2c7c9e49c64fap-1,
+    -0x1.04b33daf8df7cp0
+  },
+  { // Entry 517
+    0x1.96c89d43591d33ce28d17fec2513bfcbp-1,
+    0x1.04b3e5753a3eep0
+  },
+  { // Entry 518
+    -0x1.96c89d43591d33ce28d17fec2513bfcbp-1,
+    -0x1.04b3e5753a3eep0
+  },
+  { // Entry 519
+    0x1.96c941fb12058af2fe7e4e965a300441p-1,
+    0x1.04b48d3ae6860p0
+  },
+  { // Entry 520
+    -0x1.96c941fb12058af2fe7e4e965a300441p-1,
+    -0x1.04b48d3ae6860p0
+  },
+  { // Entry 521
+    0x1.96c9e6b25eff61b237930a7d05a731ebp-1,
+    0x1.04b5350092ccfp0
+  },
+  { // Entry 522
+    -0x1.96c9e6b25eff61b237930a7d05a731ebp-1,
+    -0x1.04b5350092ccfp0
+  },
+  { // Entry 523
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 524
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 525
+    -0.0,
+    -0.0
+  },
+  { // Entry 526
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 527
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 528
+    0x1.0c152382d73648a8c8f9175719d84f03p-1,
+    0x1.279a74590331bp-1
+  },
+  { // Entry 529
+    -0x1.0c152382d73648a8c8f9175719d84f03p-1,
+    -0x1.279a74590331bp-1
+  },
+  { // Entry 530
+    0x1.0c152382d73654a8c8f917571a1aed4ap-1,
+    0x1.279a74590331cp-1
+  },
+  { // Entry 531
+    -0x1.0c152382d73654a8c8f917571a1aed4ap-1,
+    -0x1.279a74590331cp-1
+  },
+  { // Entry 532
+    0x1.0c152382d73660a8c8f917571a0a6821p-1,
+    0x1.279a74590331dp-1
+  },
+  { // Entry 533
+    -0x1.0c152382d73660a8c8f917571a0a6821p-1,
+    -0x1.279a74590331dp-1
+  },
+  { // Entry 534
+    0x1.0c152382d7365277925622b33812561ep0,
+    0x1.bb67ae8584ca9p0
+  },
+  { // Entry 535
+    -0x1.0c152382d7365277925622b33812561ep0,
+    -0x1.bb67ae8584ca9p0
+  },
+  { // Entry 536
+    0x1.0c152382d7365677925622b338471928p0,
+    0x1.bb67ae8584caap0
+  },
+  { // Entry 537
+    -0x1.0c152382d7365677925622b338471928p0,
+    -0x1.bb67ae8584caap0
+  },
+  { // Entry 538
+    0x1.0c152382d7365a77925622b338446f3cp0,
+    0x1.bb67ae8584cabp0
+  },
+  { // Entry 539
+    -0x1.0c152382d7365a77925622b338446f3cp0,
+    -0x1.bb67ae8584cabp0
+  },
+  { // Entry 540
+    0x1.a64eec3cc23fbdfe90b96189d12851b4p-2,
+    0x1.bffffffffffffp-2
+  },
+  { // Entry 541
+    -0x1.a64eec3cc23fbdfe90b96189d12851b4p-2,
+    -0x1.bffffffffffffp-2
+  },
+  { // Entry 542
+    0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    0x1.cp-2
+  },
+  { // Entry 543
+    -0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    -0x1.cp-2
+  },
+  { // Entry 544
+    0x1.a64eec3cc23fd8da7938f61a2f29ff73p-2,
+    0x1.c000000000001p-2
+  },
+  { // Entry 545
+    -0x1.a64eec3cc23fd8da7938f61a2f29ff73p-2,
+    -0x1.c000000000001p-2
+  },
+  { // Entry 546
+    0x1.345f01cce37ba96325eacdc6f7ceec8cp-1,
+    0x1.5ffffffffffffp-1
+  },
+  { // Entry 547
+    -0x1.345f01cce37ba96325eacdc6f7ceec8cp-1,
+    -0x1.5ffffffffffffp-1
+  },
+  { // Entry 548
+    0x1.345f01cce37bb440844df1c4409fe779p-1,
+    0x1.6p-1
+  },
+  { // Entry 549
+    -0x1.345f01cce37bb440844df1c4409fe779p-1,
+    -0x1.6p-1
+  },
+  { // Entry 550
+    0x1.345f01cce37bbf1de2b115c1891fbafap-1,
+    0x1.6000000000001p-1
+  },
+  { // Entry 551
+    -0x1.345f01cce37bbf1de2b115c1891fbafap-1,
+    -0x1.6000000000001p-1
+  },
+  { // Entry 552
+    0x1.bde70ed439fe5f73a215d6096c04b42bp-1,
+    0x1.2ffffffffffffp0
+  },
+  { // Entry 553
+    -0x1.bde70ed439fe5f73a215d6096c04b42bp-1,
+    -0x1.2ffffffffffffp0
+  },
+  { // Entry 554
+    0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    0x1.3p0
+  },
+  { // Entry 555
+    -0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    -0x1.3p0
+  },
+  { // Entry 556
+    0x1.bde70ed439fe7a01885c5ef51760662ap-1,
+    0x1.3000000000001p0
+  },
+  { // Entry 557
+    -0x1.bde70ed439fe7a01885c5ef51760662ap-1,
+    -0x1.3000000000001p0
+  },
+  { // Entry 558
+    0x1.2e75728833a53c7ab9de734b9eb4f397p0,
+    0x1.37fffffffffffp1
+  },
+  { // Entry 559
+    -0x1.2e75728833a53c7ab9de734b9eb4f397p0,
+    -0x1.37fffffffffffp1
+  },
+  { // Entry 560
+    0x1.2e75728833a54116e3ef7326bd9839p0,
+    0x1.380p1
+  },
+  { // Entry 561
+    -0x1.2e75728833a54116e3ef7326bd9839p0,
+    -0x1.380p1
+  },
+  { // Entry 562
+    0x1.2e75728833a545b30e007301dc13e399p0,
+    0x1.3800000000001p1
+  },
+  { // Entry 563
+    -0x1.2e75728833a545b30e007301dc13e399p0,
+    -0x1.3800000000001p1
+  },
+  { // Entry 564
+    0x1.0640a74d6105ee338c5bcc6c7348c123p-4,
+    0x1.069c8b46b3792p-4
+  },
+  { // Entry 565
+    -0x1.0640a74d6105ee338c5bcc6c7348c123p-4,
+    -0x1.069c8b46b3792p-4
+  },
+  { // Entry 566
+    0x1.052fab368e062e72fbf2d39fe9d18888p-3,
+    0x1.069c8b46b3792p-3
+  },
+  { // Entry 567
+    -0x1.052fab368e062e72fbf2d39fe9d18888p-3,
+    -0x1.069c8b46b3792p-3
+  },
+  { // Entry 568
+    0x1.852a21876f242e8b182abd42c41ee89dp-3,
+    0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 569
+    -0x1.852a21876f242e8b182abd42c41ee89dp-3,
+    -0x1.89ead0ea0d35bp-3
+  },
+  { // Entry 570
+    0x1.01123bc10a64bf0ab62d6ef7f32651aap-2,
+    0x1.069c8b46b3792p-2
+  },
+  { // Entry 571
+    -0x1.01123bc10a64bf0ab62d6ef7f32651aap-2,
+    -0x1.069c8b46b3792p-2
+  },
+  { // Entry 572
+    0x1.3daa733ee5357808e68aee008972c828p-2,
+    0x1.4843ae1860576p-2
+  },
+  { // Entry 573
+    -0x1.3daa733ee5357808e68aee008972c828p-2,
+    -0x1.4843ae1860576p-2
+  },
+  { // Entry 574
+    0x1.780c45b9736a9089f2fe1f8efa60bf44p-2,
+    0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 575
+    -0x1.780c45b9736a9089f2fe1f8efa60bf44p-2,
+    -0x1.89ead0ea0d35ap-2
+  },
+  { // Entry 576
+    0x1.affaac96d797029e0b8ab4083d980b68p-2,
+    0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 577
+    -0x1.affaac96d797029e0b8ab4083d980b68p-2,
+    -0x1.cb91f3bbba13ep-2
+  },
+  { // Entry 578
+    0x1.e54c7f9dac6708f315d38c8a8c2ce4d3p-2,
+    0x1.069c8b46b3791p-1
+  },
+  { // Entry 579
+    -0x1.e54c7f9dac6708f315d38c8a8c2ce4d3p-2,
+    -0x1.069c8b46b3791p-1
+  },
+  { // Entry 580
+    0x1.0bf560a09b924073e473cb0d5c32501ep-1,
+    0x1.27701caf89e83p-1
+  },
+  { // Entry 581
+    -0x1.0bf560a09b924073e473cb0d5c32501ep-1,
+    -0x1.27701caf89e83p-1
+  },
+  { // Entry 582
+    0x1.23e717d0fa7b0b8bf45d2cd120f6d29ep-1,
+    0x1.4843ae1860575p-1
+  },
+  { // Entry 583
+    -0x1.23e717d0fa7b0b8bf45d2cd120f6d29ep-1,
+    -0x1.4843ae1860575p-1
+  },
+  { // Entry 584
+    0x1.3a7e3f4793afa9a24b0112ea83035c7ep-1,
+    0x1.69173f8136c67p-1
+  },
+  { // Entry 585
+    -0x1.3a7e3f4793afa9a24b0112ea83035c7ep-1,
+    -0x1.69173f8136c67p-1
+  },
+  { // Entry 586
+    0x1.4fc2c55f7154871c8daa35843857b7ffp-1,
+    0x1.89ead0ea0d359p-1
+  },
+  { // Entry 587
+    -0x1.4fc2c55f7154871c8daa35843857b7ffp-1,
+    -0x1.89ead0ea0d359p-1
+  },
+  { // Entry 588
+    0x1.63c05ef8a353c6d1360ead977c2adb94p-1,
+    0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 589
+    -0x1.63c05ef8a353c6d1360ead977c2adb94p-1,
+    -0x1.aabe6252e3a4bp-1
+  },
+  { // Entry 590
+    0x1.7685624cb374ad8950ee302aee748ad9p-1,
+    0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 591
+    -0x1.7685624cb374ad8950ee302aee748ad9p-1,
+    -0x1.cb91f3bbba13dp-1
+  },
+  { // Entry 592
+    0x1.8821d1878dcb0371d2ed00f8bad7755ep-1,
+    0x1.ec6585249082fp-1
+  },
+  { // Entry 593
+    -0x1.8821d1878dcb0371d2ed00f8bad7755ep-1,
+    -0x1.ec6585249082fp-1
+  },
+  { // Entry 594
+    0x1.98a69592999488465c8b6185dd58b38ap-1,
+    0x1.069c8b46b3791p0
+  },
+  { // Entry 595
+    -0x1.98a69592999488465c8b6185dd58b38ap-1,
+    -0x1.069c8b46b3791p0
+  },
+  { // Entry 596
+    0x1.a824e56beafb17efb9ed12695185cc5bp-1,
+    0x1.170653fb1eb0ap0
+  },
+  { // Entry 597
+    -0x1.a824e56beafb17efb9ed12695185cc5bp-1,
+    -0x1.170653fb1eb0ap0
+  },
+  { // Entry 598
+    0x1.b6add448714e627e74ee9ce6911993e6p-1,
+    0x1.27701caf89e83p0
+  },
+  { // Entry 599
+    -0x1.b6add448714e627e74ee9ce6911993e6p-1,
+    -0x1.27701caf89e83p0
+  },
+  { // Entry 600
+    0x1.c4520007344f8b36a1c610e27f4bb57ep-1,
+    0x1.37d9e563f51fcp0
+  },
+  { // Entry 601
+    -0x1.c4520007344f8b36a1c610e27f4bb57ep-1,
+    -0x1.37d9e563f51fcp0
+  },
+  { // Entry 602
+    0x1.d12159a144ff3c88e549b6c7fe977a6bp-1,
+    0x1.4843ae1860575p0
+  },
+  { // Entry 603
+    -0x1.d12159a144ff3c88e549b6c7fe977a6bp-1,
+    -0x1.4843ae1860575p0
+  },
+  { // Entry 604
+    0x1.dd2b01e17c4270caa5ead83118478c99p-1,
+    0x1.58ad76cccb8eep0
+  },
+  { // Entry 605
+    -0x1.dd2b01e17c4270caa5ead83118478c99p-1,
+    -0x1.58ad76cccb8eep0
+  },
+  { // Entry 606
+    0x1.e87d358361bd4751c472fe76608804f7p-1,
+    0x1.69173f8136c67p0
+  },
+  { // Entry 607
+    -0x1.e87d358361bd4751c472fe76608804f7p-1,
+    -0x1.69173f8136c67p0
+  },
+  { // Entry 608
+    0x1.f32544b66aa5dfd1d5c551c7b435f099p-1,
+    0x1.79810835a1fe0p0
+  },
+  { // Entry 609
+    -0x1.f32544b66aa5dfd1d5c551c7b435f099p-1,
+    -0x1.79810835a1fe0p0
+  },
+  { // Entry 610
+    0x1.fd2f92d1f51f1d323eacb60983a6f40dp-1,
+    0x1.89ead0ea0d359p0
+  },
+  { // Entry 611
+    -0x1.fd2f92d1f51f1d323eacb60983a6f40dp-1,
+    -0x1.89ead0ea0d359p0
+  },
+  { // Entry 612
+    0x1.0353cdddc16607e33b1f4c9d55ff1784p0,
+    0x1.9a54999e786d2p0
+  },
+  { // Entry 613
+    -0x1.0353cdddc16607e33b1f4c9d55ff1784p0,
+    -0x1.9a54999e786d2p0
+  },
+  { // Entry 614
+    0x1.07cbfe8c14dd9ae6823776b5a4d81ba9p0,
+    0x1.aabe6252e3a4bp0
+  },
+  { // Entry 615
+    -0x1.07cbfe8c14dd9ae6823776b5a4d81ba9p0,
+    -0x1.aabe6252e3a4bp0
+  },
+  { // Entry 616
+    0x1.0c0540ee6eff5cb8c83f0e7e225652c0p0,
+    0x1.bb282b074edc4p0
+  },
+  { // Entry 617
+    -0x1.0c0540ee6eff5cb8c83f0e7e225652c0p0,
+    -0x1.bb282b074edc4p0
+  },
+  { // Entry 618
+    0x1.1004179915f3bd7827be1c9d557de4b1p0,
+    0x1.cb91f3bbba13dp0
+  },
+  { // Entry 619
+    -0x1.1004179915f3bd7827be1c9d557de4b1p0,
+    -0x1.cb91f3bbba13dp0
+  },
+  { // Entry 620
+    0x1.13cca8f590cdd610776bb232694ba1c1p0,
+    0x1.dbfbbc70254b6p0
+  },
+  { // Entry 621
+    -0x1.13cca8f590cdd610776bb232694ba1c1p0,
+    -0x1.dbfbbc70254b6p0
+  },
+  { // Entry 622
+    0x1.1762c60438ce2cf59a91a21864529016p0,
+    0x1.ec6585249082fp0
+  },
+  { // Entry 623
+    -0x1.1762c60438ce2cf59a91a21864529016p0,
+    -0x1.ec6585249082fp0
+  },
+  { // Entry 624
+    0x1.1ac9f0f5f0ac59ef468d0e8c13eecc94p0,
+    0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 625
+    -0x1.1ac9f0f5f0ac59ef468d0e8c13eecc94p0,
+    -0x1.fccf4dd8fbba8p0
+  },
+  { // Entry 626
+    0x1.1e05637ffc0a8a6d0a7e22324ebefacfp0,
+    0x1.069c8b46b3791p1
+  },
+  { // Entry 627
+    -0x1.1e05637ffc0a8a6d0a7e22324ebefacfp0,
+    -0x1.069c8b46b3791p1
+  },
+  { // Entry 628
+    0x1.211814d79540eebd6dda8be7ed197d84p0,
+    0x1.0ed16fa0e914ep1
+  },
+  { // Entry 629
+    -0x1.211814d79540eebd6dda8be7ed197d84p0,
+    -0x1.0ed16fa0e914ep1
+  },
+  { // Entry 630
+    0x1.2404bf4b3ead000faf892c3f4eb4bfa9p0,
+    0x1.170653fb1eb0bp1
+  },
+  { // Entry 631
+    -0x1.2404bf4b3ead000faf892c3f4eb4bfa9p0,
+    -0x1.170653fb1eb0bp1
+  },
+  { // Entry 632
+    0x1.26cde575b64162e9e462d564797a5dd7p0,
+    0x1.1f3b3855544c8p1
+  },
+  { // Entry 633
+    -0x1.26cde575b64162e9e462d564797a5dd7p0,
+    -0x1.1f3b3855544c8p1
+  },
+  { // Entry 634
+    0x1.2975d70a874ee2c0fbc4d32b9997edb4p0,
+    0x1.27701caf89e85p1
+  },
+  { // Entry 635
+    -0x1.2975d70a874ee2c0fbc4d32b9997edb4p0,
+    -0x1.27701caf89e85p1
+  },
+  { // Entry 636
+    0x1.2bfeb53ef2d629fd2ec3bbe0988ec127p0,
+    0x1.2fa50109bf842p1
+  },
+  { // Entry 637
+    -0x1.2bfeb53ef2d629fd2ec3bbe0988ec127p0,
+    -0x1.2fa50109bf842p1
+  },
+  { // Entry 638
+    0x1.2e6a76d3a7c4daa88cd0858debcbfd55p0,
+    0x1.37d9e563f51ffp1
+  },
+  { // Entry 639
+    -0x1.2e6a76d3a7c4daa88cd0858debcbfd55p0,
+    -0x1.37d9e563f51ffp1
+  },
+  { // Entry 640
+    0x1.30baebc4d0b12279c4c6a70a83ec7404p0,
+    0x1.400ec9be2abbcp1
+  },
+  { // Entry 641
+    -0x1.30baebc4d0b12279c4c6a70a83ec7404p0,
+    -0x1.400ec9be2abbcp1
+  },
+  { // Entry 642
+    0x1.32f1c0a688709db9016d269725c02a4fp0,
+    0x1.4843ae1860579p1
+  },
+  { // Entry 643
+    -0x1.32f1c0a688709db9016d269725c02a4fp0,
+    -0x1.4843ae1860579p1
+  },
+  { // Entry 644
+    0x1.351081b3f9205c658eef3c57bcc8acb2p0,
+    0x1.5078927295f36p1
+  },
+  { // Entry 645
+    -0x1.351081b3f9205c658eef3c57bcc8acb2p0,
+    -0x1.5078927295f36p1
+  },
+  { // Entry 646
+    0x1.37189d975e5f9cb962f7bf8cf038ccc8p0,
+    0x1.58ad76cccb8f3p1
+  },
+  { // Entry 647
+    -0x1.37189d975e5f9cb962f7bf8cf038ccc8p0,
+    -0x1.58ad76cccb8f3p1
+  },
+  { // Entry 648
+    0x1.390b67f0f05fe3c31d028790ff0ff571p0,
+    0x1.60e25b27012b0p1
+  },
+  { // Entry 649
+    -0x1.390b67f0f05fe3c31d028790ff0ff571p0,
+    -0x1.60e25b27012b0p1
+  },
+  { // Entry 650
+    0x1.3aea1ba270fc7663f575c66a2dbf5ff8p0,
+    0x1.69173f8136c6dp1
+  },
+  { // Entry 651
+    -0x1.3aea1ba270fc7663f575c66a2dbf5ff8p0,
+    -0x1.69173f8136c6dp1
+  },
+  { // Entry 652
+    0x1.3cb5dce4b8f630b629d722f5ae3dc757p0,
+    0x1.714c23db6c62ap1
+  },
+  { // Entry 653
+    -0x1.3cb5dce4b8f630b629d722f5ae3dc757p0,
+    -0x1.714c23db6c62ap1
+  },
+  { // Entry 654
+    0x1.3e6fbb2c41396ce4aeff19d97552d217p0,
+    0x1.79810835a1fe7p1
+  },
+  { // Entry 655
+    -0x1.3e6fbb2c41396ce4aeff19d97552d217p0,
+    -0x1.79810835a1fe7p1
+  },
+  { // Entry 656
+    0x1.4018b2e13fe932bca7539dacbfa4d09ep0,
+    0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 657
+    -0x1.4018b2e13fe932bca7539dacbfa4d09ep0,
+    -0x1.81b5ec8fd79a4p1
+  },
+  { // Entry 658
+    0x1.41b1aeef8e4ae6bd8723cc148d6caf10p0,
+    0x1.89ead0ea0d35bp1
+  },
+  { // Entry 659
+    -0x1.41b1aeef8e4ae6bd8723cc148d6caf10p0,
+    -0x1.89ead0ea0d35bp1
+  },
+  { // Entry 660
+    -0x1.6807a9c540dd353125463348a685edc8p0,
+    -0x1.81b5ec8fd799fp2
+  },
+  { // Entry 661
+    0x1.6807a9c540dd353125463348a685edc8p0,
+    0x1.81b5ec8fd799fp2
+  },
+  { // Entry 662
+    -0x1.6631e1a59590376d984470d99cc8df7bp0,
+    -0x1.714c23db6c626p2
+  },
+  { // Entry 663
+    0x1.6631e1a59590376d984470d99cc8df7bp0,
+    0x1.714c23db6c626p2
+  },
+  { // Entry 664
+    -0x1.6431bb7edf2bb723008b3c51ca448a76p0,
+    -0x1.60e25b27012adp2
+  },
+  { // Entry 665
+    0x1.6431bb7edf2bb723008b3c51ca448a76p0,
+    0x1.60e25b27012adp2
+  },
+  { // Entry 666
+    -0x1.6201493b022361bd3c406520761b65cfp0,
+    -0x1.5078927295f34p2
+  },
+  { // Entry 667
+    0x1.6201493b022361bd3c406520761b65cfp0,
+    0x1.5078927295f34p2
+  },
+  { // Entry 668
+    -0x1.5f9977a47aee17d0f12c193a7dd62259p0,
+    -0x1.400ec9be2abbbp2
+  },
+  { // Entry 669
+    0x1.5f9977a47aee17d0f12c193a7dd62259p0,
+    0x1.400ec9be2abbbp2
+  },
+  { // Entry 670
+    -0x1.5cf1c53dd9ca9fa29b3bb04ec56e073fp0,
+    -0x1.2fa50109bf842p2
+  },
+  { // Entry 671
+    0x1.5cf1c53dd9ca9fa29b3bb04ec56e073fp0,
+    0x1.2fa50109bf842p2
+  },
+  { // Entry 672
+    -0x1.59ffe278fb5d0fd66d3a875f34e955b9p0,
+    -0x1.1f3b3855544c9p2
+  },
+  { // Entry 673
+    0x1.59ffe278fb5d0fd66d3a875f34e955b9p0,
+    0x1.1f3b3855544c9p2
+  },
+  { // Entry 674
+    -0x1.56b732e5cd9e7665c855c33ec7ba86a3p0,
+    -0x1.0ed16fa0e9150p2
+  },
+  { // Entry 675
+    0x1.56b732e5cd9e7665c855c33ec7ba86a3p0,
+    0x1.0ed16fa0e9150p2
+  },
+  { // Entry 676
+    -0x1.530823483d3605b2bd96ffaf2c4679c9p0,
+    -0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 677
+    0x1.530823483d3605b2bd96ffaf2c4679c9p0,
+    0x1.fccf4dd8fbbaep1
+  },
+  { // Entry 678
+    -0x1.4edf430c0024477cefffec364da85c1dp0,
+    -0x1.dbfbbc70254bcp1
+  },
+  { // Entry 679
+    0x1.4edf430c0024477cefffec364da85c1dp0,
+    0x1.dbfbbc70254bcp1
+  },
+  { // Entry 680
+    -0x1.4a2407447a81c7dc1121259e08565d3ep0,
+    -0x1.bb282b074edcap1
+  },
+  { // Entry 681
+    0x1.4a2407447a81c7dc1121259e08565d3ep0,
+    0x1.bb282b074edcap1
+  },
+  { // Entry 682
+    -0x1.44b710bde944f5b73d2380913fb96b93p0,
+    -0x1.9a54999e786d8p1
+  },
+  { // Entry 683
+    0x1.44b710bde944f5b73d2380913fb96b93p0,
+    0x1.9a54999e786d8p1
+  },
+  { // Entry 684
+    -0x1.3e6fbb2c41396997fae3ce7cb202ab3cp0,
+    -0x1.79810835a1fe6p1
+  },
+  { // Entry 685
+    0x1.3e6fbb2c41396997fae3ce7cb202ab3cp0,
+    0x1.79810835a1fe6p1
+  },
+  { // Entry 686
+    -0x1.37189d975e5fa09a38272d7f560e0da4p0,
+    -0x1.58ad76cccb8f4p1
+  },
+  { // Entry 687
+    0x1.37189d975e5fa09a38272d7f560e0da4p0,
+    0x1.58ad76cccb8f4p1
+  },
+  { // Entry 688
+    -0x1.2e6a76d3a7c4e87fefa518c326ab6156p0,
+    -0x1.37d9e563f5202p1
+  },
+  { // Entry 689
+    0x1.2e6a76d3a7c4e87fefa518c326ab6156p0,
+    0x1.37d9e563f5202p1
+  },
+  { // Entry 690
+    -0x1.2404bf4b3ead1be0d614e16bd1916f4dp0,
+    -0x1.170653fb1eb10p1
+  },
+  { // Entry 691
+    0x1.2404bf4b3ead1be0d614e16bd1916f4dp0,
+    0x1.170653fb1eb10p1
+  },
+  { // Entry 692
+    -0x1.1762c60438ce5938069b20cf6314944ap0,
+    -0x1.ec6585249083cp0
+  },
+  { // Entry 693
+    0x1.1762c60438ce5938069b20cf6314944ap0,
+    0x1.ec6585249083cp0
+  },
+  { // Entry 694
+    -0x1.07cbfe8c14ddd1f1d38ba981b0996a1ap0,
+    -0x1.aabe6252e3a58p0
+  },
+  { // Entry 695
+    0x1.07cbfe8c14ddd1f1d38ba981b0996a1ap0,
+    0x1.aabe6252e3a58p0
+  },
+  { // Entry 696
+    -0x1.e87d358361bdd2789fd13900549104c2p-1,
+    -0x1.69173f8136c74p0
+  },
+  { // Entry 697
+    0x1.e87d358361bdd2789fd13900549104c2p-1,
+    0x1.69173f8136c74p0
+  },
+  { // Entry 698
+    -0x1.b6add448714f14e4cbd045740116f534p-1,
+    -0x1.27701caf89e90p0
+  },
+  { // Entry 699
+    0x1.b6add448714f14e4cbd045740116f534p-1,
+    0x1.27701caf89e90p0
+  },
+  { // Entry 700
+    -0x1.7685624cb37593eb960af368aeea2616p-1,
+    -0x1.cb91f3bbba157p-1
+  },
+  { // Entry 701
+    0x1.7685624cb37593eb960af368aeea2616p-1,
+    0x1.cb91f3bbba157p-1
+  },
+  { // Entry 702
+    -0x1.23e717d0fa7c2705659e11ed85e6dac4p-1,
+    -0x1.4843ae186058ep-1
+  },
+  { // Entry 703
+    0x1.23e717d0fa7c2705659e11ed85e6dac4p-1,
+    0x1.4843ae186058ep-1
+  },
+  { // Entry 704
+    -0x1.780c45b9736d2d89e5dbc5fe7167a786p-2,
+    -0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 705
+    0x1.780c45b9736d2d89e5dbc5fe7167a786p-2,
+    0x1.89ead0ea0d38ap-2
+  },
+  { // Entry 706
+    -0x1.052fab368e0bf61ea3f942bd2601e1bap-3,
+    -0x1.069c8b46b37f0p-3
+  },
+  { // Entry 707
+    0x1.052fab368e0bf61ea3f942bd2601e1bap-3,
+    0x1.069c8b46b37f0p-3
+  },
+  { // Entry 708
+    0x1.052fab368e0066c753ec64819b76a489p-3,
+    0x1.069c8b46b3734p-3
+  },
+  { // Entry 709
+    -0x1.052fab368e0066c753ec64819b76a489p-3,
+    -0x1.069c8b46b3734p-3
+  },
+  { // Entry 710
+    0x1.780c45b973680f69ff94600d976ecca3p-2,
+    0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 711
+    -0x1.780c45b973680f69ff94600d976ecca3p-2,
+    -0x1.89ead0ea0d32cp-2
+  },
+  { // Entry 712
+    0x1.23e717d0fa7a1216d86181eab105dcf9p-1,
+    0x1.4843ae186055fp-1
+  },
+  { // Entry 713
+    -0x1.23e717d0fa7a1216d86181eab105dcf9p-1,
+    -0x1.4843ae186055fp-1
+  },
+  { // Entry 714
+    0x1.7685624cb373f375056aa629c14d7f7ep-1,
+    0x1.cb91f3bbba128p-1
+  },
+  { // Entry 715
+    -0x1.7685624cb373f375056aa629c14d7f7ep-1,
+    -0x1.cb91f3bbba128p-1
+  },
+  { // Entry 716
+    0x1.b6add448714dcb8a52cd35a987330f71p-1,
+    0x1.27701caf89e78p0
+  },
+  { // Entry 717
+    -0x1.b6add448714dcb8a52cd35a987330f71p-1,
+    -0x1.27701caf89e78p0
+  },
+  { // Entry 718
+    0x1.e87d358361bcd19359996a7779c977a2p-1,
+    0x1.69173f8136c5cp0
+  },
+  { // Entry 719
+    -0x1.e87d358361bcd19359996a7779c977a2p-1,
+    -0x1.69173f8136c5cp0
+  },
+  { // Entry 720
+    0x1.07cbfe8c14dd6c531603e943f23b5395p0,
+    0x1.aabe6252e3a40p0
+  },
+  { // Entry 721
+    -0x1.07cbfe8c14dd6c531603e943f23b5395p0,
+    -0x1.aabe6252e3a40p0
+  },
+  { // Entry 722
+    0x1.1762c60438ce078252d85e42621311efp0,
+    0x1.ec65852490824p0
+  },
+  { // Entry 723
+    -0x1.1762c60438ce078252d85e42621311efp0,
+    -0x1.ec65852490824p0
+  },
+  { // Entry 724
+    0x1.2404bf4b3eacd91e132bfb674e2913adp0,
+    0x1.170653fb1eb04p1
+  },
+  { // Entry 725
+    -0x1.2404bf4b3eacd91e132bfb674e2913adp0,
+    -0x1.170653fb1eb04p1
+  },
+  { // Entry 726
+    0x1.2e6a76d3a7c4b1226452cbee254cb00ep0,
+    0x1.37d9e563f51f6p1
+  },
+  { // Entry 727
+    -0x1.2e6a76d3a7c4b1226452cbee254cb00ep0,
+    -0x1.37d9e563f51f6p1
+  },
+  { // Entry 728
+    0x1.37189d975e5f721039ee06227b2cc34ep0,
+    0x1.58ad76cccb8e8p1
+  },
+  { // Entry 729
+    -0x1.37189d975e5f721039ee06227b2cc34ep0,
+    -0x1.58ad76cccb8e8p1
+  },
+  { // Entry 730
+    0x1.3e6fbb2c413941ff899c462376afaff3p0,
+    0x1.79810835a1fdap1
+  },
+  { // Entry 731
+    -0x1.3e6fbb2c413941ff899c462376afaff3p0,
+    -0x1.79810835a1fdap1
+  },
+  { // Entry 732
+    0x1.44b710bde944d3a9aeff63d91fa1f037p0,
+    0x1.9a54999e786ccp1
+  },
+  { // Entry 733
+    -0x1.44b710bde944d3a9aeff63d91fa1f037p0,
+    -0x1.9a54999e786ccp1
+  },
+  { // Entry 734
+    0x1.4a2407447a81aa4a6751ba1c00ad16b4p0,
+    0x1.bb282b074edbep1
+  },
+  { // Entry 735
+    -0x1.4a2407447a81aa4a6751ba1c00ad16b4p0,
+    -0x1.bb282b074edbep1
+  },
+  { // Entry 736
+    0x1.4edf430c00242d9760af2ba3d134ee30p0,
+    0x1.dbfbbc70254b0p1
+  },
+  { // Entry 737
+    -0x1.4edf430c00242d9760af2ba3d134ee30p0,
+    -0x1.dbfbbc70254b0p1
+  },
+  { // Entry 738
+    0x1.530823483d35eed7bdc41c7d43d4d1bep0,
+    0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 739
+    -0x1.530823483d35eed7bdc41c7d43d4d1bep0,
+    -0x1.fccf4dd8fbba2p1
+  },
+  { // Entry 740
+    0x1.56b732e5cd9e621620c292f21c370a65p0,
+    0x1.0ed16fa0e914ap2
+  },
+  { // Entry 741
+    -0x1.56b732e5cd9e621620c292f21c370a65p0,
+    -0x1.0ed16fa0e914ap2
+  },
+  { // Entry 742
+    0x1.59ffe278fb5cfdacbc51061667641320p0,
+    0x1.1f3b3855544c3p2
+  },
+  { // Entry 743
+    -0x1.59ffe278fb5cfdacbc51061667641320p0,
+    -0x1.1f3b3855544c3p2
+  },
+  { // Entry 744
+    0x1.5cf1c53dd9ca8f4d320efaf2bed238dep0,
+    0x1.2fa50109bf83cp2
+  },
+  { // Entry 745
+    -0x1.5cf1c53dd9ca8f4d320efaf2bed238dep0,
+    -0x1.2fa50109bf83cp2
+  },
+  { // Entry 746
+    0x1.5f9977a47aee090d54ca7b763af2b8f6p0,
+    0x1.400ec9be2abb5p2
+  },
+  { // Entry 747
+    -0x1.5f9977a47aee090d54ca7b763af2b8f6p0,
+    -0x1.400ec9be2abb5p2
+  },
+  { // Entry 748
+    0x1.6201493b02235454cfe997849b56e6a4p0,
+    0x1.5078927295f2ep2
+  },
+  { // Entry 749
+    -0x1.6201493b02235454cfe997849b56e6a4p0,
+    -0x1.5078927295f2ep2
+  },
+  { // Entry 750
+    0x1.6431bb7edf2baae88464ead12ab4619ep0,
+    0x1.60e25b27012a7p2
+  },
+  { // Entry 751
+    -0x1.6431bb7edf2baae88464ead12ab4619ep0,
+    -0x1.60e25b27012a7p2
+  },
+  { // Entry 752
+    0x1.6631e1a595902c3b42171a76898ec8fbp0,
+    0x1.714c23db6c620p2
+  },
+  { // Entry 753
+    -0x1.6631e1a595902c3b42171a76898ec8fbp0,
+    -0x1.714c23db6c620p2
+  },
+  { // Entry 754
+    0x1.6807a9c540dd2ae72a3e8ad8c9147867p0,
+    0x1.81b5ec8fd7999p2
+  },
+  { // Entry 755
+    -0x1.6807a9c540dd2ae72a3e8ad8c9147867p0,
+    -0x1.81b5ec8fd7999p2
+  },
+  { // Entry 756
+    0x1.ef652dceca4daec044deb346c4b08d48p-5,
+    0x1.effffffffffffp-5
+  },
+  { // Entry 757
+    -0x1.ef652dceca4daec044deb346c4b08d48p-5,
+    -0x1.effffffffffffp-5
+  },
+  { // Entry 758
+    0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    0x1.fp-5
+  },
+  { // Entry 759
+    -0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    -0x1.fp-5
+  },
+  { // Entry 760
+    0x1.ef652dceca4dcea258f35ae476f20359p-5,
+    0x1.f000000000001p-5
+  },
+  { // Entry 761
+    -0x1.ef652dceca4dcea258f35ae476f20359p-5,
+    -0x1.f000000000001p-5
+  },
+  { // Entry 762
+    0x1.f57ab026c3a8ecb83ec0ccdd10add49ep-4,
+    0x1.f7fffffffffffp-4
+  },
+  { // Entry 763
+    -0x1.f57ab026c3a8ecb83ec0ccdd10add49ep-4,
+    -0x1.f7fffffffffffp-4
+  },
+  { // Entry 764
+    0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    0x1.f80p-4
+  },
+  { // Entry 765
+    -0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    -0x1.f80p-4
+  },
+  { // Entry 766
+    0x1.f57ab026c3a90c3e105340f690d6d5afp-4,
+    0x1.f800000000001p-4
+  },
+  { // Entry 767
+    -0x1.f57ab026c3a90c3e105340f690d6d5afp-4,
+    -0x1.f800000000001p-4
+  },
+  { // Entry 768
+    0x1.4923024ccb77ffc36091a6f234051783p-3,
+    0x1.4bfffffffffffp-3
+  },
+  { // Entry 769
+    -0x1.4923024ccb77ffc36091a6f234051783p-3,
+    -0x1.4bfffffffffffp-3
+  },
+  { // Entry 770
+    0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    0x1.4c0p-3
+  },
+  { // Entry 771
+    -0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    -0x1.4c0p-3
+  },
+  { // Entry 772
+    0x1.4923024ccb781ef19bcbb3aa2395a92bp-3,
+    0x1.4c00000000001p-3
+  },
+  { // Entry 773
+    -0x1.4923024ccb781ef19bcbb3aa2395a92bp-3,
+    -0x1.4c00000000001p-3
+  },
+  { // Entry 774
+    0x1.2a73a661eaf04c94833e0199180e931dp-2,
+    0x1.3333333333332p-2
+  },
+  { // Entry 775
+    -0x1.2a73a661eaf04c94833e0199180e931dp-2,
+    -0x1.3333333333332p-2
+  },
+  { // Entry 776
+    0x1.2a73a661eaf05b424f928e83f4ea7bc2p-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 777
+    -0x1.2a73a661eaf05b424f928e83f4ea7bc2p-2,
+    -0x1.3333333333333p-2
+  },
+  { // Entry 778
+    0x1.2a73a661eaf069f01be71b6ed1a61259p-2,
+    0x1.3333333333334p-2
+  },
+  { // Entry 779
+    -0x1.2a73a661eaf069f01be71b6ed1a61259p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 780
+    0x1.2fc48220cc1fce7fc93a77a07e48b002p-1,
+    0x1.594317acc4ef8p-1
+  },
+  { // Entry 781
+    -0x1.2fc48220cc1fce7fc93a77a07e48b002p-1,
+    -0x1.594317acc4ef8p-1
+  },
+  { // Entry 782
+    0x1.2fc48220cc1fd97f6b9419f2cefa0646p-1,
+    0x1.594317acc4ef9p-1
+  },
+  { // Entry 783
+    -0x1.2fc48220cc1fd97f6b9419f2cefa0646p-1,
+    -0x1.594317acc4ef9p-1
+  },
+  { // Entry 784
+    0x1.2fc48220cc1fe47f0dedbc451f59c99cp-1,
+    0x1.594317acc4efap-1
+  },
+  { // Entry 785
+    -0x1.2fc48220cc1fe47f0dedbc451f59c99cp-1,
+    -0x1.594317acc4efap-1
+  },
+  { // Entry 786
+    0x1.538f57b89061e1a19793adab72dc4cd0p-1,
+    0x1.8ffffffffffffp-1
+  },
+  { // Entry 787
+    -0x1.538f57b89061e1a19793adab72dc4cd0p-1,
+    -0x1.8ffffffffffffp-1
+  },
+  { // Entry 788
+    0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    0x1.9p-1
+  },
+  { // Entry 789
+    -0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    -0x1.9p-1
+  },
+  { // Entry 790
+    0x1.538f57b89061f580ae16652b86bb6353p-1,
+    0x1.9000000000001p-1
+  },
+  { // Entry 791
+    -0x1.538f57b89061f580ae16652b86bb6353p-1,
+    -0x1.9000000000001p-1
+  },
+  { // Entry 792
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 793
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 794
+    -0.0,
+    -0.0
+  },
+  { // Entry 795
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 796
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 797
+    0x1.91cd24dd4f86f3abcfa4276d83a13d73p-5,
+    0x1.921fb54442d17p-5
+  },
+  { // Entry 798
+    -0x1.91cd24dd4f86f3abcfa4276d83a13d73p-5,
+    -0x1.921fb54442d17p-5
+  },
+  { // Entry 799
+    0x1.91cd24dd4f8703a1f7188f1d645421b1p-5,
+    0x1.921fb54442d18p-5
+  },
+  { // Entry 800
+    -0x1.91cd24dd4f8703a1f7188f1d645421b1p-5,
+    -0x1.921fb54442d18p-5
+  },
+  { // Entry 801
+    0x1.91cd24dd4f8713981e8cf6cd45063dd6p-5,
+    0x1.921fb54442d19p-5
+  },
+  { // Entry 802
+    -0x1.91cd24dd4f8713981e8cf6cd45063dd6p-5,
+    -0x1.921fb54442d19p-5
+  },
+  { // Entry 803
+    0x1.90d6dfbf0463be2efc3d3ae995b9e240p-4,
+    0x1.921fb54442d17p-4
+  },
+  { // Entry 804
+    -0x1.90d6dfbf0463be2efc3d3ae995b9e240p-4,
+    -0x1.921fb54442d17p-4
+  },
+  { // Entry 805
+    0x1.90d6dfbf0463ce07e23e541458c4aa07p-4,
+    0x1.921fb54442d18p-4
+  },
+  { // Entry 806
+    -0x1.90d6dfbf0463ce07e23e541458c4aa07p-4,
+    -0x1.921fb54442d18p-4
+  },
+  { // Entry 807
+    0x1.90d6dfbf0463dde0c83f6d3f1bcc5cd7p-4,
+    0x1.921fb54442d19p-4
+  },
+  { // Entry 808
+    -0x1.90d6dfbf0463dde0c83f6d3f1bcc5cd7p-4,
+    -0x1.921fb54442d19p-4
+  },
+  { // Entry 809
+    0x1.8d128eae9561353a88062ef0a34b4e80p-3,
+    0x1.921fb54442d17p-3
+  },
+  { // Entry 810
+    -0x1.8d128eae9561353a88062ef0a34b4e80p-3,
+    -0x1.921fb54442d17p-3
+  },
+  { // Entry 811
+    0x1.8d128eae956144a27ad04eaa5b924d06p-3,
+    0x1.921fb54442d18p-3
+  },
+  { // Entry 812
+    -0x1.8d128eae956144a27ad04eaa5b924d06p-3,
+    -0x1.921fb54442d18p-3
+  },
+  { // Entry 813
+    0x1.8d128eae9561540a6d9a6e6413cda4f7p-3,
+    0x1.921fb54442d19p-3
+  },
+  { // Entry 814
+    -0x1.8d128eae9561540a6d9a6e6413cda4f7p-3,
+    -0x1.921fb54442d19p-3
+  },
+  { // Entry 815
+    0x1.7f2d6a24777e099c2376cf0898b3c360p-2,
+    0x1.921fb54442d17p-2
+  },
+  { // Entry 816
+    -0x1.7f2d6a24777e099c2376cf0898b3c360p-2,
+    -0x1.921fb54442d17p-2
+  },
+  { // Entry 817
+    0x1.7f2d6a24777e1778e0d5c62102085610p-2,
+    0x1.921fb54442d18p-2
+  },
+  { // Entry 818
+    -0x1.7f2d6a24777e1778e0d5c62102085610p-2,
+    -0x1.921fb54442d18p-2
+  },
+  { // Entry 819
+    0x1.7f2d6a24777e25559e34bd396b372d9ep-2,
+    0x1.921fb54442d19p-2
+  },
+  { // Entry 820
+    -0x1.7f2d6a24777e25559e34bd396b372d9ep-2,
+    -0x1.921fb54442d19p-2
+  },
+  { // Entry 821
+    0x1.54e04c05d069fa1ecac0c3f5d7fae70fp-1,
+    0x1.921fb54442d17p-1
+  },
+  { // Entry 822
+    -0x1.54e04c05d069fa1ecac0c3f5d7fae70fp-1,
+    -0x1.921fb54442d17p-1
+  },
+  { // Entry 823
+    0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 824
+    -0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 825
+    0x1.54e04c05d06a0de96edd9dea29d9b191p-1,
+    0x1.921fb54442d19p-1
+  },
+  { // Entry 826
+    -0x1.54e04c05d06a0de96edd9dea29d9b191p-1,
+    -0x1.921fb54442d19p-1
+  },
+  { // Entry 827
+    0x1.00fe987ed02fed962e123a7e12a6d283p0,
+    0x1.921fb54442d17p0
+  },
+  { // Entry 828
+    -0x1.00fe987ed02fed962e123a7e12a6d283p0,
+    -0x1.921fb54442d17p0
+  },
+  { // Entry 829
+    0x1.00fe987ed02ff23377d99ec36db533fep0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 830
+    -0x1.00fe987ed02ff23377d99ec36db533fep0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 831
+    0x1.00fe987ed02ff6d0c1a10308c880b0d3p0,
+    0x1.921fb54442d19p0
+  },
+  { // Entry 832
+    -0x1.00fe987ed02ff6d0c1a10308c880b0d3p0,
+    -0x1.921fb54442d19p0
+  },
+  { // Entry 833
+    0x1.433b8a322ddd266fd81ec843d7c92a7ap0,
+    0x1.921fb54442d17p1
+  },
+  { // Entry 834
+    -0x1.433b8a322ddd266fd81ec843d7c92a7ap0,
+    -0x1.921fb54442d17p1
+  },
+  { // Entry 835
+    0x1.433b8a322ddd29618168a21c962c68bcp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 836
+    -0x1.433b8a322ddd29618168a21c962c68bcp0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 837
+    0x1.433b8a322ddd2c532ab27bf55459320bp0,
+    0x1.921fb54442d19p1
+  },
+  { // Entry 838
+    -0x1.433b8a322ddd2c532ab27bf55459320bp0,
+    -0x1.921fb54442d19p1
+  },
+  { // Entry 839
+    0x1.69b8154baf42e0f527ff3f4df7a4633ep0,
+    0x1.921fb54442d17p2
+  },
+  { // Entry 840
+    -0x1.69b8154baf42e0f527ff3f4df7a4633ep0,
+    -0x1.921fb54442d17p2
+  },
+  { // Entry 841
+    0x1.69b8154baf42e289ea46de59f75a7b90p0,
+    0x1.921fb54442d18p2
+  },
+  { // Entry 842
+    -0x1.69b8154baf42e289ea46de59f75a7b90p0,
+    -0x1.921fb54442d18p2
+  },
+  { // Entry 843
+    0x1.69b8154baf42e41eac8e7d65f6f129e7p0,
+    0x1.921fb54442d19p2
+  },
+  { // Entry 844
+    -0x1.69b8154baf42e41eac8e7d65f6f129e7p0,
+    -0x1.921fb54442d19p2
+  },
+  { // Entry 845
+    0x1.7dcb7c5c399ec04ad5c1eabbb0cccf9fp0,
+    0x1.921fb54442d17p3
+  },
+  { // Entry 846
+    -0x1.7dcb7c5c399ec04ad5c1eabbb0cccf9fp0,
+    -0x1.921fb54442d17p3
+  },
+  { // Entry 847
+    0x1.7dcb7c5c399ec11908f5986443f30bdap0,
+    0x1.921fb54442d18p3
+  },
+  { // Entry 848
+    -0x1.7dcb7c5c399ec11908f5986443f30bdap0,
+    -0x1.921fb54442d18p3
+  },
+  { // Entry 849
+    0x1.7dcb7c5c399ec1e73c29460cd708f9d8p0,
+    0x1.921fb54442d19p3
+  },
+  { // Entry 850
+    -0x1.7dcb7c5c399ec1e73c29460cd708f9d8p0,
+    -0x1.921fb54442d19p3
+  },
+  { // Entry 851
+    0x1.87f17cfda0b5caf7b170dd86f8287b63p0,
+    0x1.921fb54442d17p4
+  },
+  { // Entry 852
+    -0x1.87f17cfda0b5caf7b170dd86f8287b63p0,
+    -0x1.921fb54442d17p4
+  },
+  { // Entry 853
+    0x1.87f17cfda0b5cb5f4832c04cdf736f84p0,
+    0x1.921fb54442d18p4
+  },
+  { // Entry 854
+    -0x1.87f17cfda0b5cb5f4832c04cdf736f84p0,
+    -0x1.921fb54442d18p4
+  },
+  { // Entry 855
+    0x1.87f17cfda0b5cbc6def4a312c6b628b0p0,
+    0x1.921fb54442d19p4
+  },
+  { // Entry 856
+    -0x1.87f17cfda0b5cbc6def4a312c6b628b0p0,
+    -0x1.921fb54442d19p4
+  },
+  { // Entry 857
+    0x1.8d08152eddb7a3b8c976d7e120ba1197p0,
+    0x1.921fb54442d17p5
+  },
+  { // Entry 858
+    -0x1.8d08152eddb7a3b8c976d7e120ba1197p0,
+    -0x1.921fb54442d17p5
+  },
+  { // Entry 859
+    0x1.8d08152eddb7a3eca4948f3acff50864p0,
+    0x1.921fb54442d18p5
+  },
+  { // Entry 860
+    -0x1.8d08152eddb7a3eca4948f3acff50864p0,
+    -0x1.921fb54442d18p5
+  },
+  { // Entry 861
+    0x1.8d08152eddb7a4207fb246947f2bdf35p0,
+    0x1.921fb54442d19p5
+  },
+  { // Entry 862
+    -0x1.8d08152eddb7a4207fb246947f2bdf35p0,
+    -0x1.921fb54442d19p5
+  },
+  { // Entry 863
+    0x1.8f93d4b78b7cddf446e36e538b980193p0,
+    0x1.921fb54442d17p6
+  },
+  { // Entry 864
+    -0x1.8f93d4b78b7cddf446e36e538b980193p0,
+    -0x1.921fb54442d17p6
+  },
+  { // Entry 865
+    0x1.8f93d4b78b7cde0e366aa212646d3cb6p0,
+    0x1.921fb54442d18p6
+  },
+  { // Entry 866
+    -0x1.8f93d4b78b7cde0e366aa212646d3cb6p0,
+    -0x1.921fb54442d18p6
+  },
+  { // Entry 867
+    0x1.8f93d4b78b7cde2825f1d5d13d40678bp0,
+    0x1.921fb54442d19p6
+  },
+  { // Entry 868
+    -0x1.8f93d4b78b7cde2825f1d5d13d40678bp0,
+    -0x1.921fb54442d19p6
+  },
+  { // Entry 869
+    0x1.90d9c2ed8873775a4f6e3fe4c3a5982bp0,
+    0x1.921fb54442d17p7
+  },
+  { // Entry 870
+    -0x1.90d9c2ed8873775a4f6e3fe4c3a5982bp0,
+    -0x1.921fb54442d17p7
+  },
+  { // Entry 871
+    0x1.90d9c2ed887377674770eac36c2436b5p0,
+    0x1.921fb54442d18p7
+  },
+  { // Entry 872
+    -0x1.90d9c2ed887377674770eac36c2436b5p0,
+    -0x1.921fb54442d18p7
+  },
+  { // Entry 873
+    0x1.90d9c2ed887377743f7395a214a1cd0ep0,
+    0x1.921fb54442d19p7
+  },
+  { // Entry 874
+    -0x1.90d9c2ed887377743f7395a214a1cd0ep0,
+    -0x1.921fb54442d19p7
+  },
+  { // Entry 875
+    0x1.2b5f4b53c7948df5568782d0a75b8459p0,
+    0x1.2d97c7f3321d1p1
+  },
+  { // Entry 876
+    -0x1.2b5f4b53c7948df5568782d0a75b8459p0,
+    -0x1.2d97c7f3321d1p1
+  },
+  { // Entry 877
+    0x1.2b5f4b53c79492d7b5a6cd6203c9aae2p0,
+    0x1.2d97c7f3321d2p1
+  },
+  { // Entry 878
+    -0x1.2b5f4b53c79492d7b5a6cd6203c9aae2p0,
+    -0x1.2d97c7f3321d2p1
+  },
+  { // Entry 879
+    0x1.2b5f4b53c79497ba14c617f35fc7662ep0,
+    0x1.2d97c7f3321d3p1
+  },
+  { // Entry 880
+    -0x1.2b5f4b53c79497ba14c617f35fc7662ep0,
+    -0x1.2d97c7f3321d3p1
+  },
+  { // Entry 881
+    0x1.524a69fcff2af09f5f140df341a455ddp0,
+    0x1.f6a7a2955385dp1
+  },
+  { // Entry 882
+    -0x1.524a69fcff2af09f5f140df341a455ddp0,
+    -0x1.f6a7a2955385dp1
+  },
+  { // Entry 883
+    0x1.524a69fcff2af2923cab5c00b660c55fp0,
+    0x1.f6a7a2955385ep1
+  },
+  { // Entry 884
+    -0x1.524a69fcff2af2923cab5c00b660c55fp0,
+    -0x1.f6a7a2955385ep1
+  },
+  { // Entry 885
+    0x1.524a69fcff2af4851a42aa0e2aff61bcp0,
+    0x1.f6a7a2955385fp1
+  },
+  { // Entry 886
+    -0x1.524a69fcff2af4851a42aa0e2aff61bcp0,
+    -0x1.f6a7a2955385fp1
+  },
+  { // Entry 887
+    0x1.5c97d37d98aa37af1a1b75a619098288p0,
+    0x1.2d97c7f3321d1p2
+  },
+  { // Entry 888
+    -0x1.5c97d37d98aa37af1a1b75a619098288p0,
+    -0x1.2d97c7f3321d1p2
+  },
+  { // Entry 889
+    0x1.5c97d37d98aa3a711b94359371aaf903p0,
+    0x1.2d97c7f3321d2p2
+  },
+  { // Entry 890
+    -0x1.5c97d37d98aa3a711b94359371aaf903p0,
+    -0x1.2d97c7f3321d2p2
+  },
+  { // Entry 891
+    0x1.5c97d37d98aa3d331d0cf580ca04c102p0,
+    0x1.2d97c7f3321d3p2
+  },
+  { // Entry 892
+    -0x1.5c97d37d98aa3d331d0cf580ca04c102p0,
+    -0x1.2d97c7f3321d3p2
+  },
+  { // Entry 893
+    0x1.64102fc571c7422b6ad0ed05fd24e652p0,
+    0x1.5fdbbe9bba774p2
+  },
+  { // Entry 894
+    -0x1.64102fc571c7422b6ad0ed05fd24e652p0,
+    -0x1.5fdbbe9bba774p2
+  },
+  { // Entry 895
+    0x1.64102fc571c744381d266feb08ddfcc4p0,
+    0x1.5fdbbe9bba775p2
+  },
+  { // Entry 896
+    -0x1.64102fc571c744381d266feb08ddfcc4p0,
+    -0x1.5fdbbe9bba775p2
+  },
+  { // Entry 897
+    0x1.64102fc571c74644cf7bf2d01468e265p0,
+    0x1.5fdbbe9bba776p2
+  },
+  { // Entry 898
+    -0x1.64102fc571c74644cf7bf2d01468e265p0,
+    -0x1.5fdbbe9bba776p2
+  },
+  { // Entry 899
+    0x1.6e2561a6cd2181c009d7d863e666c437p0,
+    0x1.c463abeccb2bap2
+  },
+  { // Entry 900
+    -0x1.6e2561a6cd2181c009d7d863e666c437p0,
+    -0x1.c463abeccb2bap2
+  },
+  { // Entry 901
+    0x1.6e2561a6cd21830183c87ae1761354b0p0,
+    0x1.c463abeccb2bbp2
+  },
+  { // Entry 902
+    -0x1.6e2561a6cd21830183c87ae1761354b0p0,
+    -0x1.c463abeccb2bbp2
+  },
+  { // Entry 903
+    0x1.6e2561a6cd218442fdb91d5f05a99ap0,
+    0x1.c463abeccb2bcp2
+  },
+  { // Entry 904
+    -0x1.6e2561a6cd218442fdb91d5f05a99ap0,
+    -0x1.c463abeccb2bcp2
+  },
+  { // Entry 905
+    0x1.71b4100f0956769d1c64ae4d729107a5p0,
+    0x1.f6a7a2955385dp2
+  },
+  { // Entry 906
+    -0x1.71b4100f0956769d1c64ae4d729107a5p0,
+    -0x1.f6a7a2955385dp2
+  },
+  { // Entry 907
+    0x1.71b4100f095677a27b2c03b940d5e613p0,
+    0x1.f6a7a2955385ep2
+  },
+  { // Entry 908
+    -0x1.71b4100f095677a27b2c03b940d5e613p0,
+    -0x1.f6a7a2955385ep2
+  },
+  { // Entry 909
+    0x1.71b4100f095678a7d9f359250f0a64c8p0,
+    0x1.f6a7a2955385fp2
+  },
+  { // Entry 910
+    -0x1.71b4100f095678a7d9f359250f0a64c8p0,
+    -0x1.f6a7a2955385fp2
+  },
+  { // Entry 911
+    0x1.749f96097c7015073733e2e3659a844bp0,
+    0x1.1475cc9eedeffp3
+  },
+  { // Entry 912
+    -0x1.749f96097c7015073733e2e3659a844bp0,
+    -0x1.1475cc9eedeffp3
+  },
+  { // Entry 913
+    0x1.749f96097c7016b86e95ca64b3f1546fp0,
+    0x1.1475cc9eedfp3
+  },
+  { // Entry 914
+    -0x1.749f96097c7016b86e95ca64b3f1546fp0,
+    -0x1.1475cc9eedfp3
+  },
+  { // Entry 915
+    0x1.749f96097c701869a5f7b1e60216a952p0,
+    0x1.1475cc9eedf01p3
+  },
+  { // Entry 916
+    -0x1.749f96097c701869a5f7b1e60216a952p0,
+    -0x1.1475cc9eedf01p3
+  },
+  { // Entry 917
+    0x1.77100abbdfe4f88c42b76a1a44ccb487p0,
+    0x1.2d97c7f3321d1p3
+  },
+  { // Entry 918
+    -0x1.77100abbdfe4f88c42b76a1a44ccb487p0,
+    -0x1.2d97c7f3321d1p3
+  },
+  { // Entry 919
+    0x1.77100abbdfe4f9f90d90533c02b3964ep0,
+    0x1.2d97c7f3321d2p3
+  },
+  { // Entry 920
+    -0x1.77100abbdfe4f9f90d90533c02b3964ep0,
+    -0x1.2d97c7f3321d2p3
+  },
+  { // Entry 921
+    0x1.77100abbdfe4fb65d8693c5dc07431bdp0,
+    0x1.2d97c7f3321d3p3
+  },
+  { // Entry 922
+    -0x1.77100abbdfe4fb65d8693c5dc07431bdp0,
+    -0x1.2d97c7f3321d3p3
+  },
+  { // Entry 923
+    0x1.79216b94b662deb07e2d6de7f1804507p0,
+    0x1.46b9c347764a2p3
+  },
+  { // Entry 924
+    -0x1.79216b94b662deb07e2d6de7f1804507p0,
+    -0x1.46b9c347764a2p3
+  },
+  { // Entry 925
+    0x1.79216b94b662dfe7d5a91b73c06086ebp0,
+    0x1.46b9c347764a3p3
+  },
+  { // Entry 926
+    -0x1.79216b94b662dfe7d5a91b73c06086ebp0,
+    -0x1.46b9c347764a3p3
+  },
+  { // Entry 927
+    0x1.79216b94b662e11f2d24c8ff8f2294b3p0,
+    0x1.46b9c347764a4p3
+  },
+  { // Entry 928
+    -0x1.79216b94b662e11f2d24c8ff8f2294b3p0,
+    -0x1.46b9c347764a4p3
+  },
+  { // Entry 929
+    0x1.7ae7d7e5d1f9ee2a0e89a2289062ad74p0,
+    0x1.5fdbbe9bba774p3
+  },
+  { // Entry 930
+    -0x1.7ae7d7e5d1f9ee2a0e89a2289062ad74p0,
+    -0x1.5fdbbe9bba774p3
+  },
+  { // Entry 931
+    0x1.7ae7d7e5d1f9ef36dc870ed6964fa9dfp0,
+    0x1.5fdbbe9bba775p3
+  },
+  { // Entry 932
+    -0x1.7ae7d7e5d1f9ef36dc870ed6964fa9dfp0,
+    -0x1.5fdbbe9bba775p3
+  },
+  { // Entry 933
+    0x1.7ae7d7e5d1f9f043aa847b849c24674ap0,
+    0x1.5fdbbe9bba776p3
+  },
+  { // Entry 934
+    -0x1.7ae7d7e5d1f9f043aa847b849c24674ap0,
+    -0x1.5fdbbe9bba776p3
+  },
+  { // Entry 935
+    0x1.7c722476319a280dab0b4cf4c187f8abp0,
+    0x1.78fdb9effea45p3
+  },
+  { // Entry 936
+    -0x1.7c722476319a280dab0b4cf4c187f8abp0,
+    -0x1.78fdb9effea45p3
+  },
+  { // Entry 937
+    0x1.7c722476319a28f8131f5d500f0f03e6p0,
+    0x1.78fdb9effea46p3
+  },
+  { // Entry 938
+    -0x1.7c722476319a28f8131f5d500f0f03e6p0,
+    -0x1.78fdb9effea46p3
+  },
+  { // Entry 939
+    0x1.7c722476319a29e27b336dab5c824dedp0,
+    0x1.78fdb9effea47p3
+  },
+  { // Entry 940
+    -0x1.7c722476319a29e27b336dab5c824dedp0,
+    -0x1.78fdb9effea47p3
+  },
+  { // Entry 941
+    0x1.7efc711c97aca34b1628231d4f4fabe2p0,
+    0x1.ab41b09886fe8p3
+  },
+  { // Entry 942
+    -0x1.7efc711c97aca34b1628231d4f4fabe2p0,
+    -0x1.ab41b09886fe8p3
+  },
+  { // Entry 943
+    0x1.7efc711c97aca401df609cab03bab68cp0,
+    0x1.ab41b09886fe9p3
+  },
+  { // Entry 944
+    -0x1.7efc711c97aca401df609cab03bab68cp0,
+    -0x1.ab41b09886fe9p3
+  },
+  { // Entry 945
+    0x1.7efc711c97aca4b8a8991638b818241cp0,
+    0x1.ab41b09886feap3
+  },
+  { // Entry 946
+    -0x1.7efc711c97aca4b8a8991638b818241cp0,
+    -0x1.ab41b09886feap3
+  },
+  { // Entry 947
+    0x1.800bb15ffe80dd150b83506ecafcd897p0,
+    0x1.c463abeccb2bap3
+  },
+  { // Entry 948
+    -0x1.800bb15ffe80dd150b83506ecafcd897p0,
+    -0x1.c463abeccb2bap3
+  },
+  { // Entry 949
+    0x1.800bb15ffe80ddb82f1388a941a8215cp0,
+    0x1.c463abeccb2bbp3
+  },
+  { // Entry 950
+    -0x1.800bb15ffe80ddb82f1388a941a8215cp0,
+    -0x1.c463abeccb2bbp3
+  },
+  { // Entry 951
+    0x1.800bb15ffe80de5b52a3c0e3b847eeaap0,
+    0x1.c463abeccb2bcp3
+  },
+  { // Entry 952
+    -0x1.800bb15ffe80de5b52a3c0e3b847eeaap0,
+    -0x1.c463abeccb2bcp3
+  },
+  { // Entry 953
+    0x1.80fe86b132e8f8618de08cf337993ca3p0,
+    0x1.dd85a7410f58bp3
+  },
+  { // Entry 954
+    -0x1.80fe86b132e8f8618de08cf337993ca3p0,
+    -0x1.dd85a7410f58bp3
+  },
+  { // Entry 955
+    0x1.80fe86b132e8f8f40c19d09e489d38e1p0,
+    0x1.dd85a7410f58cp3
+  },
+  { // Entry 956
+    -0x1.80fe86b132e8f8f40c19d09e489d38e1p0,
+    -0x1.dd85a7410f58cp3
+  },
+  { // Entry 957
+    0x1.80fe86b132e8f9868a53144959976f3cp0,
+    0x1.dd85a7410f58dp3
+  },
+  { // Entry 958
+    -0x1.80fe86b132e8f9868a53144959976f3cp0,
+    -0x1.dd85a7410f58dp3
+  },
+  { // Entry 959
+    0x1.81d92def25f25718c6829a063fb81fd7p0,
+    0x1.f6a7a2955385dp3
+  },
+  { // Entry 960
+    -0x1.81d92def25f25718c6829a063fb81fd7p0,
+    -0x1.f6a7a2955385dp3
+  },
+  { // Entry 961
+    0x1.81d92def25f2579d0b06bd55e5dd10d1p0,
+    0x1.f6a7a2955385ep3
+  },
+  { // Entry 962
+    -0x1.81d92def25f2579d0b06bd55e5dd10d1p0,
+    -0x1.f6a7a2955385ep3
+  },
+  { // Entry 963
+    0x1.81d92def25f258214f8ae0a58bf99edep0,
+    0x1.f6a7a2955385fp3
+  },
+  { // Entry 964
+    -0x1.81d92def25f258214f8ae0a58bf99edep0,
+    -0x1.f6a7a2955385fp3
+  },
+  { // Entry 965
+    0x1.829f16bb7d95108c0eb21238a0c53f5ep0,
+    0x1.07e4cef4cbd96p4
+  },
+  { // Entry 966
+    -0x1.829f16bb7d95108c0eb21238a0c53f5ep0,
+    -0x1.07e4cef4cbd96p4
+  },
+  { // Entry 967
+    0x1.829f16bb7d95117c16ba648f3486d718p0,
+    0x1.07e4cef4cbd97p4
+  },
+  { // Entry 968
+    -0x1.829f16bb7d95117c16ba648f3486d718p0,
+    -0x1.07e4cef4cbd97p4
+  },
+  { // Entry 969
+    0x1.829f16bb7d95126c1ec2b6e5c82b6edep0,
+    0x1.07e4cef4cbd98p4
+  },
+  { // Entry 970
+    -0x1.829f16bb7d95126c1ec2b6e5c82b6edep0,
+    -0x1.07e4cef4cbd98p4
+  },
+  { // Entry 971
+    0x1.835311c4fa5d7c37c557b7a5a3338324p0,
+    0x1.1475cc9eedeffp4
+  },
+  { // Entry 972
+    -0x1.835311c4fa5d7c37c557b7a5a3338324p0,
+    -0x1.1475cc9eedeffp4
+  },
+  { // Entry 973
+    0x1.835311c4fa5d7d128c5fa09cc922483dp0,
+    0x1.1475cc9eedfp4
+  },
+  { // Entry 974
+    -0x1.835311c4fa5d7d128c5fa09cc922483dp0,
+    -0x1.1475cc9eedfp4
+  },
+  { // Entry 975
+    0x1.835311c4fa5d7ded53678993eef7d037p0,
+    0x1.1475cc9eedf01p4
+  },
+  { // Entry 976
+    -0x1.835311c4fa5d7ded53678993eef7d037p0,
+    -0x1.1475cc9eedf01p4
+  },
+  { // Entry 977
+    0x1.83f7731825dc9d8ff5737093bb3540dep0,
+    0x1.2106ca4910068p4
+  },
+  { // Entry 978
+    -0x1.83f7731825dc9d8ff5737093bb3540dep0,
+    -0x1.2106ca4910068p4
+  },
+  { // Entry 979
+    0x1.83f7731825dc9e582ebc020978ee1a95p0,
+    0x1.2106ca4910069p4
+  },
+  { // Entry 980
+    -0x1.83f7731825dc9e582ebc020978ee1a95p0,
+    -0x1.2106ca4910069p4
+  },
+  { // Entry 981
+    0x1.83f7731825dc9f206804937f3690da9bp0,
+    0x1.2106ca491006ap4
+  },
+  { // Entry 982
+    -0x1.83f7731825dc9f206804937f3690da9bp0,
+    -0x1.2106ca491006ap4
+  },
+  { // Entry 983
+    0x1.848e2bec799ece48230ea9b4de60cfb7p0,
+    0x1.2d97c7f3321d1p4
+  },
+  { // Entry 984
+    -0x1.848e2bec799ece48230ea9b4de60cfb7p0,
+    -0x1.2d97c7f3321d1p4
+  },
+  { // Entry 985
+    0x1.848e2bec799ecf0011a08e93bfcbf6bap0,
+    0x1.2d97c7f3321d2p4
+  },
+  { // Entry 986
+    -0x1.848e2bec799ecf0011a08e93bfcbf6bap0,
+    -0x1.2d97c7f3321d2p4
+  },
+  { // Entry 987
+    0x1.848e2bec799ecfb800327372a123a7b7p0,
+    0x1.2d97c7f3321d3p4
+  },
+  { // Entry 988
+    -0x1.848e2bec799ecfb800327372a123a7b7p0,
+    -0x1.2d97c7f3321d3p4
+  },
+  { // Entry 989
+    0x1.8518de4b48e76e411ea1cdeeb59cbf77p0,
+    0x1.3a28c59d54339p4
+  },
+  { // Entry 990
+    -0x1.8518de4b48e76e411ea1cdeeb59cbf77p0,
+    -0x1.3a28c59d54339p4
+  },
+  { // Entry 991
+    0x1.8518de4b48e76eeaab2a58ab739c30cbp0,
+    0x1.3a28c59d5433ap4
+  },
+  { // Entry 992
+    -0x1.8518de4b48e76eeaab2a58ab739c30cbp0,
+    -0x1.3a28c59d5433ap4
+  },
+  { // Entry 993
+    0x1.8518de4b48e76f9437b2e368318a6869p0,
+    0x1.3a28c59d5433bp4
+  },
+  { // Entry 994
+    -0x1.8518de4b48e76f9437b2e368318a6869p0,
+    -0x1.3a28c59d5433bp4
+  },
+  { // Entry 995
+    0x1.8598ec35167127ce203d29cce66b685bp0,
+    0x1.46b9c347764a2p4
+  },
+  { // Entry 996
+    -0x1.8598ec35167127ce203d29cce66b685bp0,
+    -0x1.46b9c347764a2p4
+  },
+  { // Entry 997
+    0x1.8598ec351671286aea010a7cf15304a4p0,
+    0x1.46b9c347764a3p4
+  },
+  { // Entry 998
+    -0x1.8598ec351671286aea010a7cf15304a4p0,
+    -0x1.46b9c347764a3p4
+  },
+  { // Entry 999
+    0x1.8598ec3516712907b3c4eb2cfc2b4f2dp0,
+    0x1.46b9c347764a4p4
+  },
+  { // Entry 1000
+    -0x1.8598ec3516712907b3c4eb2cfc2b4f2dp0,
+    -0x1.46b9c347764a4p4
+  },
+  { // Entry 1001
+    0x1.860f836e59cf533a5f5acd977fb3bd1bp0,
+    0x1.534ac0f19860bp4
+  },
+  { // Entry 1002
+    -0x1.860f836e59cf533a5f5acd977fb3bd1bp0,
+    -0x1.534ac0f19860bp4
+  },
+  { // Entry 1003
+    0x1.860f836e59cf53cbc97c4e327874fe3fp0,
+    0x1.534ac0f19860cp4
+  },
+  { // Entry 1004
+    -0x1.860f836e59cf53cbc97c4e327874fe3fp0,
+    -0x1.534ac0f19860cp4
+  },
+  { // Entry 1005
+    0x1.860f836e59cf545d339dcecd7128903ap0,
+    0x1.534ac0f19860dp4
+  },
+  { // Entry 1006
+    -0x1.860f836e59cf545d339dcecd7128903ap0,
+    -0x1.534ac0f19860dp4
+  },
+  { // Entry 1007
+    0x1.867da6c87b57e8adf8990014ae6c012fp0,
+    0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1008
+    -0x1.867da6c87b57e8adf8990014ae6c012fp0,
+    -0x1.5fdbbe9bba774p4
+  },
+  { // Entry 1009
+    0x1.867da6c87b57e935349724e0cc37b311p0,
+    0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1010
+    -0x1.867da6c87b57e935349724e0cc37b311p0,
+    -0x1.5fdbbe9bba775p4
+  },
+  { // Entry 1011
+    0x1.867da6c87b57e9bc709549ace9f71ee9p0,
+    0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1012
+    -0x1.867da6c87b57e9bc709549ace9f71ee9p0,
+    -0x1.5fdbbe9bba776p4
+  },
+  { // Entry 1013
+    0x1.86e435818151b84fe25834c19a7e2e5fp0,
+    0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1014
+    -0x1.86e435818151b84fe25834c19a7e2e5fp0,
+    -0x1.6c6cbc45dc8dcp4
+  },
+  { // Entry 1015
+    0x1.86e435818151b8cdf86e6345f58c69fap0,
+    0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1016
+    -0x1.86e435818151b8cdf86e6345f58c69fap0,
+    -0x1.6c6cbc45dc8ddp4
+  },
+  { // Entry 1017
+    0x1.86e435818151b94c0e8491ca508f98b5p0,
+    0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1018
+    -0x1.86e435818151b94c0e8491ca508f98b5p0,
+    -0x1.6c6cbc45dc8dep4
+  },
+  { // Entry 1019
+    0x1.8743f12bf9fc92a7f65de8d6cd3df59dp0,
+    0x1.78fdb9effea45p4
+  },
+  { // Entry 1020
+    -0x1.8743f12bf9fc92a7f65de8d6cd3df59dp0,
+    -0x1.78fdb9effea45p4
+  },
+  { // Entry 1021
+    0x1.8743f12bf9fc931dcc400e45f1cbfd18p0,
+    0x1.78fdb9effea46p4
+  },
+  { // Entry 1022
+    -0x1.8743f12bf9fc931dcc400e45f1cbfd18p0,
+    -0x1.78fdb9effea46p4
+  },
+  { // Entry 1023
+    0x1.8743f12bf9fc9393a22233b51650089fp0,
+    0x1.78fdb9effea47p4
+  },
+  { // Entry 1024
+    -0x1.8743f12bf9fc9393a22233b51650089fp0,
+    -0x1.78fdb9effea47p4
+  },
+  { // Entry 1025
+    0x1.879d82738cdb0715c7e50907e7a87c80p0,
+    0x1.858eb79a20baep4
+  },
+  { // Entry 1026
+    -0x1.879d82738cdb0715c7e50907e7a87c80p0,
+    -0x1.858eb79a20baep4
+  },
+  { // Entry 1027
+    0x1.879d82738cdb07842634f187eb77dddcp0,
+    0x1.858eb79a20bafp4
+  },
+  { // Entry 1028
+    -0x1.879d82738cdb07842634f187eb77dddcp0,
+    -0x1.858eb79a20bafp4
+  },
+  { // Entry 1029
+    0x1.879d82738cdb07f28484da07ef3e3230p0,
+    0x1.858eb79a20bb0p4
+  },
+  { // Entry 1030
+    -0x1.879d82738cdb07f28484da07ef3e3230p0,
+    -0x1.858eb79a20bb0p4
+  },
+  { // Entry 1031
+    0x1.921fb54442d18467898cc51701b829a2p0,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 1032
+    -0x1.921fb54442d18467898cc51701b829a2p0,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 1033
+    0x1.921fb54442d18467898cc51701b839a2p0,
+    0x1.0p63
+  },
+  { // Entry 1034
+    -0x1.921fb54442d18467898cc51701b839a2p0,
+    -0x1.0p63
+  },
+  { // Entry 1035
+    0x1.921fb54442d18467898cc51701b859a2p0,
+    0x1.0000000000001p63
+  },
+  { // Entry 1036
+    -0x1.921fb54442d18467898cc51701b859a2p0,
+    -0x1.0000000000001p63
+  },
+  { // Entry 1037
+    0x1.921fb52442d18469898befc1ac62e44cp0,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 1038
+    -0x1.921fb52442d18469898befc1ac62e44cp0,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 1039
+    0x1.921fb52442d18469898cefc1ac62e44cp0,
+    0x1.0p27
+  },
+  { // Entry 1040
+    -0x1.921fb52442d18469898cefc1ac62e44cp0,
+    -0x1.0p27
+  },
+  { // Entry 1041
+    0x1.921fb52442d18469898eefc1ac62e44cp0,
+    0x1.0000000000001p27
+  },
+  { // Entry 1042
+    -0x1.921fb52442d18469898eefc1ac62e44cp0,
+    -0x1.0000000000001p27
+  },
+  { // Entry 1043
+    0x1.921fb44442d1846989da1a6c570d8eccp0,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 1044
+    -0x1.921fb44442d1846989da1a6c570d8eccp0,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 1045
+    0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    0x1.0p24
+  },
+  { // Entry 1046
+    -0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    -0x1.0p24
+  },
+  { // Entry 1047
+    0x1.921fb44442d1846989f21a6c570d8eb3p0,
+    0x1.0000000000001p24
+  },
+  { // Entry 1048
+    -0x1.921fb44442d1846989f21a6c570d8eb3p0,
+    -0x1.0000000000001p24
+  },
+  { // Entry 1049
+    0x1.5368c951e9cfc7c24c38fb77a1dfa57cp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 1050
+    -0x1.5368c951e9cfc7c24c38fb77a1dfa57cp0,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 1051
+    0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    0x1.0p2
+  },
+  { // Entry 1052
+    -0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    -0x1.0p2
+  },
+  { // Entry 1053
+    0x1.5368c951e9cfcd67f1dea11d475ac643p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 1054
+    -0x1.5368c951e9cfcd67f1dea11d475ac643p0,
+    -0x1.0000000000001p2
+  },
+  { // Entry 1055
+    0x1.1b6e192ebbe443939e676eed7053450cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 1056
+    -0x1.1b6e192ebbe443939e676eed7053450cp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 1057
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.0p1
+  },
+  { // Entry 1058
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.0p1
+  },
+  { // Entry 1059
+    0x1.1b6e192ebbe44d2d3801088709af6e01p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 1060
+    -0x1.1b6e192ebbe44d2d3801088709af6e01p0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 1061
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1062
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1063
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0
+  },
+  { // Entry 1065
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1066
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1067
+    0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 1068
+    -0x1.dac670561bb4e9be12fbbf0cab93d258p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 1069
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.0p-1
+  },
+  { // Entry 1070
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.0p-1
+  },
+  { // Entry 1071
+    0x1.dac670561bb510247962257311bcc81bp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 1072
+    -0x1.dac670561bb510247962257311bcc81bp-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 1073
+    0x1.f5b75f92c80dc71bcc802edce02e0a97p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 1074
+    -0x1.f5b75f92c80dc71bcc802edce02e0a97p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 1075
+    0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    0x1.0p-2
+  },
+  { // Entry 1076
+    -0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    -0x1.0p-2
+  },
+  { // Entry 1077
+    0x1.f5b75f92c80df448f9ad5c0a0d45f554p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1078
+    -0x1.f5b75f92c80df448f9ad5c0a0d45f554p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 1079
+    0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 1080
+    -0x1.fd5ba9aac2f6cca4951f70426d4e3181p-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 1081
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.0p-3
+  },
+  { // Entry 1082
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.0p-3
+  },
+  { // Entry 1083
+    0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 1084
+    -0x1.fd5ba9aac2f6fbe7894eb3369c8b5496p-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 1085
+    0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 1086
+    -0x1.ff55bb72cfde8c7d865f15c80c6b8bb0p-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 1087
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.0p-4
+  },
+  { // Entry 1088
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.0p-4
+  },
+  { // Entry 1089
+    0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 1090
+    -0x1.ff55bb72cfdebc4db62f45983c3a3e7cp-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 1091
+    0x1.ffd55bba97623a88ee3b2ecbb917a476p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 1092
+    -0x1.ffd55bba97623a88ee3b2ecbb917a476p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 1093
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.0p-5
+  },
+  { // Entry 1094
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.0p-5
+  },
+  { // Entry 1095
+    0x1.ffd55bba97626a7cf13a6efbad1a43e7p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 1096
+    -0x1.ffd55bba97626a7cf13a6efbad1a43e7p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 1097
+    0x1.fff555bbb7299b78cf08ad801befb881p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 1098
+    -0x1.fff555bbb7299b78cf08ad801befb881p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 1099
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.0p-6
+  },
+  { // Entry 1100
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.0p-6
+  },
+  { // Entry 1101
+    0x1.fff555bbb729cb75cf38aa804beca0b4p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 1102
+    -0x1.fff555bbb729cb75cf38aa804beca0b4p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 1103
+    0x1.fffffff5555545bbbbbcb72972876256p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 1104
+    -0x1.fffffff5555545bbbbbcb72972876256p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 1105
+    0x1.fffffff5555555bbbbbbb72972976256p-15,
+    0x1.0p-14
+  },
+  { // Entry 1106
+    -0x1.fffffff5555555bbbbbbb72972976256p-15,
+    -0x1.0p-14
+  },
+  { // Entry 1107
+    0x1.fffffff5555575bbbbb9b72972b76256p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 1108
+    -0x1.fffffff5555575bbbbb9b72972b76256p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 1109
+    0x1.ffffffffffffed5555555555559bbbbbp-28,
+    0x1.fffffffffffffp-28
+  },
+  { // Entry 1110
+    -0x1.ffffffffffffed5555555555559bbbbbp-28,
+    -0x1.fffffffffffffp-28
+  },
+  { // Entry 1111
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.0p-27
+  },
+  { // Entry 1112
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.0p-27
+  },
+  { // Entry 1113
+    0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    0x1.0000000000001p-27
+  },
+  { // Entry 1114
+    -0x1.0000000000000eaaaaaaaaaaaa6dddddp-27,
+    -0x1.0000000000001p-27
+  },
+  { // Entry 1115
+    0x1.ffffffffffffeff555555555555655bbp-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 1116
+    -0x1.ffffffffffffeff555555555555655bbp-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 1117
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.0p-30
+  },
+  { // Entry 1118
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.0p-30
+  },
+  { // Entry 1119
+    0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 1120
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaddp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 1121
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1122
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1123
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1124
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1125
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VAL
+  },
+  { // Entry 1126
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VAL
+  },
+  { // Entry 1127
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1128
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1129
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 1130
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 1131
+    0x1.433b8a322ddd29618168a21c962c68bcp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 1132
+    -0x1.433b8a322ddd29618168a21c962c68bcp0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 1133
+    0x1.00fe987ed02ff23377d99ec36db533fep0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 1134
+    -0x1.00fe987ed02ff23377d99ec36db533fep0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 1135
+    0x1.921fb54442d19469898cc517013839a2p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 1136
+    -0x1.921fb54442d19469898cc517013839a2p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 1137
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.0p0
+  },
+  { // Entry 1138
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.0p0
+  },
+  { // Entry 1139
+    0x1.921fb54442d17c69898cc517019839a2p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 1140
+    -0x1.921fb54442d17c69898cc517019839a2p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 1141
+    0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 1142
+    -0x1.54e04c05d06a04041ccf30f00110c0f6p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 1143
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1144
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1145
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1146
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1147
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1148
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1149
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1150
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 1151
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 1152
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 1153
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1154
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1155
+    0.0,
+    0.0
+  },
+  { // Entry 1156
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/atanf_intel_data.h b/tests/math_data/atanf_intel_data.h
new file mode 100644
index 0000000..85f9962
--- /dev/null
+++ b/tests/math_data/atanf_intel_data.h
@@ -0,0 +1,4350 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_atanf_intel_data[] = {
+  { // Entry 0
+    -0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    -0x1.00e0p-1
+  },
+  { // Entry 1
+    0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    0x1.00e0p-1
+  },
+  { // Entry 2
+    -0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    -0x1.01b8p0
+  },
+  { // Entry 3
+    0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    0x1.01b8p0
+  },
+  { // Entry 4
+    -0x1.93e6bcfcbf2868bf3d227ad52cc06775p-1,
+    -0x1.01c89ep0
+  },
+  { // Entry 5
+    0x1.93e6bcfcbf2868bf3d227ad52cc06775p-1,
+    0x1.01c89ep0
+  },
+  { // Entry 6
+    -0x1.e4353f004481a69e0d97136cd8302508p-2,
+    -0x1.05ec48p-1
+  },
+  { // Entry 7
+    0x1.e4353f004481a69e0d97136cd8302508p-2,
+    0x1.05ec48p-1
+  },
+  { // Entry 8
+    -0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    -0x1.06p0
+  },
+  { // Entry 9
+    0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    0x1.06p0
+  },
+  { // Entry 10
+    -0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    -0x1.065c78p-1
+  },
+  { // Entry 11
+    0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    0x1.065c78p-1
+  },
+  { // Entry 12
+    -0x1.fd08daffe290e806775f8df4ed63331fp-2,
+    -0x1.15c8e2p-1
+  },
+  { // Entry 13
+    0x1.fd08daffe290e806775f8df4ed63331fp-2,
+    0x1.15c8e2p-1
+  },
+  { // Entry 14
+    -0x1.12d0910000acd3796043ce397dc0aaf0p-1,
+    -0x1.30a612p-1
+  },
+  { // Entry 15
+    0x1.12d0910000acd3796043ce397dc0aaf0p-1,
+    0x1.30a612p-1
+  },
+  { // Entry 16
+    -0x1.8501defc40a94bd69a326f6f4efc3cabp0,
+    -0x1.3801p4
+  },
+  { // Entry 17
+    0x1.8501defc40a94bd69a326f6f4efc3cabp0,
+    0x1.3801p4
+  },
+  { // Entry 18
+    -0x1.1dbfdb002aafa34d56d4efdeb875d7ccp-1,
+    -0x1.3fa5d0p-1
+  },
+  { // Entry 19
+    0x1.1dbfdb002aafa34d56d4efdeb875d7ccp-1,
+    0x1.3fa5d0p-1
+  },
+  { // Entry 20
+    -0x1.91c7f6fffff6a5eef58d32a20cb76586p0,
+    -0x1.7573fep9
+  },
+  { // Entry 21
+    0x1.91c7f6fffff6a5eef58d32a20cb76586p0,
+    0x1.7573fep9
+  },
+  { // Entry 22
+    -0x1.f31d35b81259f5f45badc8b774241b15p-1,
+    -0x1.79743ep0
+  },
+  { // Entry 23
+    0x1.f31d35b81259f5f45badc8b774241b15p-1,
+    0x1.79743ep0
+  },
+  { // Entry 24
+    -0x1.f54b76ff8c8f4020ccc4dfba5f1dcfc4p-1,
+    -0x1.7cefc8p0
+  },
+  { // Entry 25
+    0x1.f54b76ff8c8f4020ccc4dfba5f1dcfc4p-1,
+    0x1.7cefc8p0
+  },
+  { // Entry 26
+    -0x1.921fa2ffefea1a475fc6364331e98c0fp0,
+    -0x1.c07630p19
+  },
+  { // Entry 27
+    0x1.921fa2ffefea1a475fc6364331e98c0fp0,
+    0x1.c07630p19
+  },
+  { // Entry 28
+    -0x1.c8d37cfff9732aae565e96c9ab1ae3p-4,
+    -0x1.cabad0p-4
+  },
+  { // Entry 29
+    0x1.c8d37cfff9732aae565e96c9ab1ae3p-4,
+    0x1.cabad0p-4
+  },
+  { // Entry 30
+    -0x1.8455816cd8b17910d5fb42c54a7a3f6ap-1,
+    -0x1.e52326p-1
+  },
+  { // Entry 31
+    0x1.8455816cd8b17910d5fb42c54a7a3f6ap-1,
+    0x1.e52326p-1
+  },
+  { // Entry 32
+    -0x1.87ce6ca38f66951f7d176d27e4cc7114p-1,
+    -0x1.ebc518p-1
+  },
+  { // Entry 33
+    0x1.87ce6ca38f66951f7d176d27e4cc7114p-1,
+    0x1.ebc518p-1
+  },
+  { // Entry 34
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.p-5
+  },
+  { // Entry 35
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.p-5
+  },
+  { // Entry 36
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-4
+  },
+  { // Entry 37
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 38
+    0x1.ff5632fb474b2bdff859ee6421a12d48p-5,
+    0x1.00003cp-4
+  },
+  { // Entry 39
+    -0x1.ff5632fb474b2bdff859ee6421a12d48p-5,
+    -0x1.00003cp-4
+  },
+  { // Entry 40
+    0x1.9220654406519246dee218750f6118e0p-1,
+    0x1.0000b0p0
+  },
+  { // Entry 41
+    -0x1.9220654406519246dee218750f6118e0p-1,
+    -0x1.0000b0p0
+  },
+  { // Entry 42
+    0x1.f5b8c8fc218568d2548c390de7a3dfcep-3,
+    0x1.0000c0p-2
+  },
+  { // Entry 43
+    -0x1.f5b8c8fc218568d2548c390de7a3dfcep-3,
+    -0x1.0000c0p-2
+  },
+  { // Entry 44
+    0x1.fd64d4fccffaeeedba9c9564a6730d18p-4,
+    0x1.0004a8p-3
+  },
+  { // Entry 45
+    -0x1.fd64d4fccffaeeedba9c9564a6730d18p-4,
+    -0x1.0004a8p-3
+  },
+  { // Entry 46
+    0x1.9227b5244326d9bed87bdeb00908aeb7p-1,
+    0x1.0008p0
+  },
+  { // Entry 47
+    -0x1.9227b5244326d9bed87bdeb00908aeb7p-1,
+    -0x1.0008p0
+  },
+  { // Entry 48
+    0x1.922b76ff245e6de6345559ddb2fcf536p-1,
+    0x1.000bc2p0
+  },
+  { // Entry 49
+    -0x1.922b76ff245e6de6345559ddb2fcf536p-1,
+    -0x1.000bc2p0
+  },
+  { // Entry 50
+    0x1.922b82fe9701aeaffb73a1443c0c83d0p-1,
+    0x1.000bcep0
+  },
+  { // Entry 51
+    -0x1.922b82fe9701aeaffb73a1443c0c83d0p-1,
+    -0x1.000bcep0
+  },
+  { // Entry 52
+    0x1.923faf44d816daa54d425d8045e2887dp-1,
+    0x1.001ffcp0
+  },
+  { // Entry 53
+    -0x1.923faf44d816daa54d425d8045e2887dp-1,
+    -0x1.001ffcp0
+  },
+  { // Entry 54
+    0x1.fe2484fd31d3cf098219a2af1d986eedp-4,
+    0x1.0066p-3
+  },
+  { // Entry 55
+    -0x1.fe2484fd31d3cf098219a2af1d986eedp-4,
+    -0x1.0066p-3
+  },
+  { // Entry 56
+    0x1.92939b003b069b3e275950af80cd63fcp-1,
+    0x1.0074p0
+  },
+  { // Entry 57
+    -0x1.92939b003b069b3e275950af80cd63fcp-1,
+    -0x1.0074p0
+  },
+  { // Entry 58
+    0x1.1b9d3b002159e2945b595dab6488de5bp0,
+    0x1.0076p1
+  },
+  { // Entry 59
+    -0x1.1b9d3b002159e2945b595dab6488de5bp0,
+    -0x1.0076p1
+  },
+  { // Entry 60
+    0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    0x1.00e0p-1
+  },
+  { // Entry 61
+    -0x1.dc2c98008d535c517dd9d371c44a6151p-2,
+    -0x1.00e0p-1
+  },
+  { // Entry 62
+    0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    0x1.01b8p0
+  },
+  { // Entry 63
+    -0x1.93d63bfce467ef12745bcaf164c988cdp-1,
+    -0x1.01b8p0
+  },
+  { // Entry 64
+    0x1.94167efccbc0fa6d4577f69f61e031d2p-1,
+    0x1.01f8bap0
+  },
+  { // Entry 65
+    -0x1.94167efccbc0fa6d4577f69f61e031d2p-1,
+    -0x1.01f8bap0
+  },
+  { // Entry 66
+    0x1.9672428abad4ced3d0a6e349e9bf2b3ep-1,
+    0x1.045cp0
+  },
+  { // Entry 67
+    -0x1.9672428abad4ced3d0a6e349e9bf2b3ep-1,
+    -0x1.045cp0
+  },
+  { // Entry 68
+    0x1.fe8abeff0d857adea735e07cdc25f45cp-3,
+    0x1.04b198p-2
+  },
+  { // Entry 69
+    -0x1.fe8abeff0d857adea735e07cdc25f45cp-3,
+    -0x1.04b198p-2
+  },
+  { // Entry 70
+    0x1.e3ee99003632acbd63018dcd998b0a66p-2,
+    0x1.05bfb8p-1
+  },
+  { // Entry 71
+    -0x1.e3ee99003632acbd63018dcd998b0a66p-2,
+    -0x1.05bfb8p-1
+  },
+  { // Entry 72
+    0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    0x1.06p0
+  },
+  { // Entry 73
+    -0x1.980dd942c58931ccfa88aa5714d9589bp-1,
+    -0x1.06p0
+  },
+  { // Entry 74
+    0x1.e4c00f0040fd5558135d221fc95d855ep-2,
+    0x1.0643e0p-1
+  },
+  { // Entry 75
+    -0x1.e4c00f0040fd5558135d221fc95d855ep-2,
+    -0x1.0643e0p-1
+  },
+  { // Entry 76
+    0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    0x1.065c78p-1
+  },
+  { // Entry 77
+    -0x1.e4e7050041fea5e474bc42bb3e9598edp-2,
+    -0x1.065c78p-1
+  },
+  { // Entry 78
+    0x1.067fe90007689d48fb39791c0a809723p-9,
+    0x1.0680p-9
+  },
+  { // Entry 79
+    -0x1.067fe90007689d48fb39791c0a809723p-9,
+    -0x1.0680p-9
+  },
+  { // Entry 80
+    0x1.e5f6450041f31d7a1b1ffc6626e3a3a9p-2,
+    0x1.0707ccp-1
+  },
+  { // Entry 81
+    -0x1.e5f6450041f31d7a1b1ffc6626e3a3a9p-2,
+    -0x1.0707ccp-1
+  },
+  { // Entry 82
+    0x1.9a000a935bd8e2b2823be1b99de9aa6dp-1,
+    0x1.08p0
+  },
+  { // Entry 83
+    -0x1.9a000a935bd8e2b2823be1b99de9aa6dp-1,
+    -0x1.08p0
+  },
+  { // Entry 84
+    0x1.e7e095003c972c47c7b484d1174ef8f1p-2,
+    0x1.083df4p-1
+  },
+  { // Entry 85
+    -0x1.e7e095003c972c47c7b484d1174ef8f1p-2,
+    -0x1.083df4p-1
+  },
+  { // Entry 86
+    0x1.9b95d2027f3b51c408badd232447fca7p-1,
+    0x1.09a4p0
+  },
+  { // Entry 87
+    -0x1.9b95d2027f3b51c408badd232447fca7p-1,
+    -0x1.09a4p0
+  },
+  { // Entry 88
+    0x1.9bf2349c2fe1915b2ba951f4d90c2346p-1,
+    0x1.0a04p0
+  },
+  { // Entry 89
+    -0x1.9bf2349c2fe1915b2ba951f4d90c2346p-1,
+    -0x1.0a04p0
+  },
+  { // Entry 90
+    0x1.9c0d202ee6cadb3368d0bc3bc61620f7p-1,
+    0x1.0a20p0
+  },
+  { // Entry 91
+    -0x1.9c0d202ee6cadb3368d0bc3bc61620f7p-1,
+    -0x1.0a20p0
+  },
+  { // Entry 92
+    0x1.9c0e9ebf9ee6f339b8d4eb3e3659c70ep-1,
+    0x1.0a218ep0
+  },
+  { // Entry 93
+    -0x1.9c0e9ebf9ee6f339b8d4eb3e3659c70ep-1,
+    -0x1.0a218ep0
+  },
+  { // Entry 94
+    0x1.9d252e659267619beef68e8773dc6ec3p-1,
+    0x1.0b44p0
+  },
+  { // Entry 95
+    -0x1.9d252e659267619beef68e8773dc6ec3p-1,
+    -0x1.0b44p0
+  },
+  { // Entry 96
+    0x1.ee39fb000821b1a9c00089e135f069d2p-2,
+    0x1.0c4670p-1
+  },
+  { // Entry 97
+    -0x1.ee39fb000821b1a9c00089e135f069d2p-2,
+    -0x1.0c4670p-1
+  },
+  { // Entry 98
+    0x1.eff285034b3ca346fbed2f996a1534f1p-2,
+    0x1.0d5f6ep-1
+  },
+  { // Entry 99
+    -0x1.eff285034b3ca346fbed2f996a1534f1p-2,
+    -0x1.0d5f6ep-1
+  },
+  { // Entry 100
+    0x1.f33837034c37141c6ee6c4c215ebe879p-2,
+    0x1.0f771ep-1
+  },
+  { // Entry 101
+    -0x1.f33837034c37141c6ee6c4c215ebe879p-2,
+    -0x1.0f771ep-1
+  },
+  { // Entry 102
+    0x1.a169ad8725b3aa57831d5cea9cf84a45p-1,
+    0x1.0fc3aep0
+  },
+  { // Entry 103
+    -0x1.a169ad8725b3aa57831d5cea9cf84a45p-1,
+    -0x1.0fc3aep0
+  },
+  { // Entry 104
+    0x1.a199a5013b67a3668024b5fdba537ffbp-1,
+    0x1.0ff6b6p0
+  },
+  { // Entry 105
+    -0x1.a199a5013b67a3668024b5fdba537ffbp-1,
+    -0x1.0ff6b6p0
+  },
+  { // Entry 106
+    0x1.f9ef110001fb3099dbc032baff8a7c9cp-2,
+    0x1.13c8p-1
+  },
+  { // Entry 107
+    -0x1.f9ef110001fb3099dbc032baff8a7c9cp-2,
+    -0x1.13c8p-1
+  },
+  { // Entry 108
+    0x1.fb05f2d09a4dc6b31f91eaed3651aa0fp-2,
+    0x1.147cp-1
+  },
+  { // Entry 109
+    -0x1.fb05f2d09a4dc6b31f91eaed3651aa0fp-2,
+    -0x1.147cp-1
+  },
+  { // Entry 110
+    0x1.166210ff1f27419bd56d7ad58a532203p-4,
+    0x1.16d0p-4
+  },
+  { // Entry 111
+    -0x1.166210ff1f27419bd56d7ad58a532203p-4,
+    -0x1.16d0p-4
+  },
+  { // Entry 112
+    0x1.ff14479ea0d08b305667ea1e6b71efa9p-2,
+    0x1.171cp-1
+  },
+  { // Entry 113
+    -0x1.ff14479ea0d08b305667ea1e6b71efa9p-2,
+    -0x1.171cp-1
+  },
+  { // Entry 114
+    0x1.aa655941c2ed237529659b26a6d40360p-1,
+    0x1.1980p0
+  },
+  { // Entry 115
+    -0x1.aa655941c2ed237529659b26a6d40360p-1,
+    -0x1.1980p0
+  },
+  { // Entry 116
+    0x1.1ac3c9559802914487a1a7e1b563dc42p-4,
+    0x1.1b37p-4
+  },
+  { // Entry 117
+    -0x1.1ac3c9559802914487a1a7e1b563dc42p-4,
+    -0x1.1b37p-4
+  },
+  { // Entry 118
+    0x1.ace31afd63c618792d7f004a5f20bf53p-1,
+    0x1.1c443ep0
+  },
+  { // Entry 119
+    -0x1.ace31afd63c618792d7f004a5f20bf53p-1,
+    -0x1.1c443ep0
+  },
+  { // Entry 120
+    0x1.aefd63ceeeba596e1d377ed9501f9f2dp-1,
+    0x1.1ea0p0
+  },
+  { // Entry 121
+    -0x1.aefd63ceeeba596e1d377ed9501f9f2dp-1,
+    -0x1.1ea0p0
+  },
+  { // Entry 122
+    0x1.31e3ddfffbe9c81c178270bc759875e9p-3,
+    0x1.342f6cp-3
+  },
+  { // Entry 123
+    -0x1.31e3ddfffbe9c81c178270bc759875e9p-3,
+    -0x1.342f6cp-3
+  },
+  { // Entry 124
+    0x1.30f588fffee141782f61de3b913cc344p-2,
+    0x1.3a4e82p-2
+  },
+  { // Entry 125
+    -0x1.30f588fffee141782f61de3b913cc344p-2,
+    -0x1.3a4e82p-2
+  },
+  { // Entry 126
+    0x1.26c384fe95d5e24c9c60adf93f531182p-1,
+    0x1.4c50e8p-1
+  },
+  { // Entry 127
+    -0x1.26c384fe95d5e24c9c60adf93f531182p-1,
+    -0x1.4c50e8p-1
+  },
+  { // Entry 128
+    0x1.e42856fffdaf1e270f502c72bfe272b0p-1,
+    0x1.62b140p0
+  },
+  { // Entry 129
+    -0x1.e42856fffdaf1e270f502c72bfe272b0p-1,
+    -0x1.62b140p0
+  },
+  { // Entry 130
+    0x1.6703fefed06b914b99e3124ca0c2cb58p-2,
+    0x1.767caap-2
+  },
+  { // Entry 131
+    -0x1.6703fefed06b914b99e3124ca0c2cb58p-2,
+    -0x1.767caap-2
+  },
+  { // Entry 132
+    0x1.75cb06fffffebc09be37493223d1436ap-4,
+    0x1.76d58ep-4
+  },
+  { // Entry 133
+    -0x1.75cb06fffffebc09be37493223d1436ap-4,
+    -0x1.76d58ep-4
+  },
+  { // Entry 134
+    0x1.43fdd1a6959aa989f50575cf45455d64p-1,
+    0x1.7780f2p-1
+  },
+  { // Entry 135
+    -0x1.43fdd1a6959aa989f50575cf45455d64p-1,
+    -0x1.7780f2p-1
+  },
+  { // Entry 136
+    0x1.481bba0215fb04f66252d5b8f4a0299ap-1,
+    0x1.7ddf62p-1
+  },
+  { // Entry 137
+    -0x1.481bba0215fb04f66252d5b8f4a0299ap-1,
+    -0x1.7ddf62p-1
+  },
+  { // Entry 138
+    0x1.6f946595578bf7edcadbbe6e816838dap-2,
+    0x1.8039f8p-2
+  },
+  { // Entry 139
+    -0x1.6f946595578bf7edcadbbe6e816838dap-2,
+    -0x1.8039f8p-2
+  },
+  { // Entry 140
+    0x1.6f9d299cc53084feaeb4a89dd538984cp-2,
+    0x1.8043f8p-2
+  },
+  { // Entry 141
+    -0x1.6f9d299cc53084feaeb4a89dd538984cp-2,
+    -0x1.8043f8p-2
+  },
+  { // Entry 142
+    0x1.6fa461634385621a7b4a1f3f39e69e88p-2,
+    0x1.804c34p-2
+  },
+  { // Entry 143
+    -0x1.6fa461634385621a7b4a1f3f39e69e88p-2,
+    -0x1.804c34p-2
+  },
+  { // Entry 144
+    0x1.6fedbe03cf0b00cdb648f3f58822f3c8p-2,
+    0x1.809fe8p-2
+  },
+  { // Entry 145
+    -0x1.6fedbe03cf0b00cdb648f3f58822f3c8p-2,
+    -0x1.809fe8p-2
+  },
+  { // Entry 146
+    0x1.738c297a78e8c603048015fdc8bcf4c9p-2,
+    0x1.84c270p-2
+  },
+  { // Entry 147
+    -0x1.738c297a78e8c603048015fdc8bcf4c9p-2,
+    -0x1.84c270p-2
+  },
+  { // Entry 148
+    0x1.98f0340002c61b1d33f8d1e2c1af5581p-4,
+    0x1.9a4d6ep-4
+  },
+  { // Entry 149
+    -0x1.98f0340002c61b1d33f8d1e2c1af5581p-4,
+    -0x1.9a4d6ep-4
+  },
+  { // Entry 150
+    0x1.9f8b4300038b239eb63e7be822591b5fp-4,
+    0x1.a0f9bcp-4
+  },
+  { // Entry 151
+    -0x1.9f8b4300038b239eb63e7be822591b5fp-4,
+    -0x1.a0f9bcp-4
+  },
+  { // Entry 152
+    0x1.a0fd9d00039a60bddbfddc10b05c56a3p-4,
+    0x1.a26ff0p-4
+  },
+  { // Entry 153
+    -0x1.a0fd9d00039a60bddbfddc10b05c56a3p-4,
+    -0x1.a26ff0p-4
+  },
+  { // Entry 154
+    0x1.a4728900556fc2b8a5a530e3d999b1d7p-4,
+    0x1.a5ee2cp-4
+  },
+  { // Entry 155
+    -0x1.a4728900556fc2b8a5a530e3d999b1d7p-4,
+    -0x1.a5ee2cp-4
+  },
+  { // Entry 156
+    0x1.a4728afaf537b57369dd1613673f2757p-4,
+    0x1.a5ee2ep-4
+  },
+  { // Entry 157
+    -0x1.a4728afaf537b57369dd1613673f2757p-4,
+    -0x1.a5ee2ep-4
+  },
+  { // Entry 158
+    0x1.915e19aa098cba6ef178411ea4174f67p-2,
+    0x1.a744d8p-2
+  },
+  { // Entry 159
+    -0x1.915e19aa098cba6ef178411ea4174f67p-2,
+    -0x1.a744d8p-2
+  },
+  { // Entry 160
+    0x1.a95d5effffee8dfa2a44af912ff5c6bdp-4,
+    0x1.aae686p-4
+  },
+  { // Entry 161
+    -0x1.a95d5effffee8dfa2a44af912ff5c6bdp-4,
+    -0x1.aae686p-4
+  },
+  { // Entry 162
+    0x1.b0f897fdea5769efb43b734c6f5d38fdp-4,
+    0x1.b29748p-4
+  },
+  { // Entry 163
+    -0x1.b0f897fdea5769efb43b734c6f5d38fdp-4,
+    -0x1.b29748p-4
+  },
+  { // Entry 164
+    0x1.b6fd68fffbf33784a8e129606c5a3fd4p-4,
+    0x1.b8adb0p-4
+  },
+  { // Entry 165
+    -0x1.b6fd68fffbf33784a8e129606c5a3fd4p-4,
+    -0x1.b8adb0p-4
+  },
+  { // Entry 166
+    0x1.a205342c457ac3a056abcfe7527a4453p-2,
+    0x1.bae68ep-2
+  },
+  { // Entry 167
+    -0x1.a205342c457ac3a056abcfe7527a4453p-2,
+    -0x1.bae68ep-2
+  },
+  { // Entry 168
+    0x1.a64efd063370b5e3a708b2a37ddab223p-2,
+    0x1.c00014p-2
+  },
+  { // Entry 169
+    -0x1.a64efd063370b5e3a708b2a37ddab223p-2,
+    -0x1.c00014p-2
+  },
+  { // Entry 170
+    0x1.ad00f396db03faa7f9d7e3221d4552adp-2,
+    0x1.c7fffep-2
+  },
+  { // Entry 171
+    -0x1.ad00f396db03faa7f9d7e3221d4552adp-2,
+    -0x1.c7fffep-2
+  },
+  { // Entry 172
+    0x1.6e6d5d27bd08154a6349dd2d9a311e10p0,
+    0x1.c7fffep2
+  },
+  { // Entry 173
+    -0x1.6e6d5d27bd08154a6349dd2d9a311e10p0,
+    -0x1.c7fffep2
+  },
+  { // Entry 174
+    0x1.769885e484d0999ef07a0c7cc0ce73f5p-1,
+    0x1.cbb484p-1
+  },
+  { // Entry 175
+    -0x1.769885e484d0999ef07a0c7cc0ce73f5p-1,
+    -0x1.cbb484p-1
+  },
+  { // Entry 176
+    0x1.7805f5ed5a7d34cf922043471c74eecfp-1,
+    0x1.ce4a36p-1
+  },
+  { // Entry 177
+    -0x1.7805f5ed5a7d34cf922043471c74eecfp-1,
+    -0x1.ce4a36p-1
+  },
+  { // Entry 178
+    0x1.c85b2ebda13e4f781ea65e5aa1b8b9e1p-3,
+    0x1.d00ffep-3
+  },
+  { // Entry 179
+    -0x1.c85b2ebda13e4f781ea65e5aa1b8b9e1p-3,
+    -0x1.d00ffep-3
+  },
+  { // Entry 180
+    0x1.c8df373eebdbd7d2983d9c074687b3b1p-3,
+    0x1.d09ad0p-3
+  },
+  { // Entry 181
+    -0x1.c8df373eebdbd7d2983d9c074687b3b1p-3,
+    -0x1.d09ad0p-3
+  },
+  { // Entry 182
+    0x1.8108f7001b7ce9d26ea2a770acd41044p0,
+    0x1.deaa38p3
+  },
+  { // Entry 183
+    -0x1.8108f7001b7ce9d26ea2a770acd41044p0,
+    -0x1.deaa38p3
+  },
+  { // Entry 184
+    0x1.82d6b687d8692e9aefc611be6b1d44a8p-1,
+    0x1.e24eaep-1
+  },
+  { // Entry 185
+    -0x1.82d6b687d8692e9aefc611be6b1d44a8p-1,
+    -0x1.e24eaep-1
+  },
+  { // Entry 186
+    0x1.921fb5011d0bff02f51322a08f435689p0,
+    0x1.e7fffep25
+  },
+  { // Entry 187
+    -0x1.921fb5011d0bff02f51322a08f435689p0,
+    -0x1.e7fffep25
+  },
+  { // Entry 188
+    0x1.8755f7204b35fedd69304c014ba9193ap-1,
+    0x1.eaddb6p-1
+  },
+  { // Entry 189
+    -0x1.8755f7204b35fedd69304c014ba9193ap-1,
+    -0x1.eaddb6p-1
+  },
+  { // Entry 190
+    0x1.921facfffe4d525869adf36453ac0045p0,
+    0x1.ef7bd0p20
+  },
+  { // Entry 191
+    -0x1.921facfffe4d525869adf36453ac0045p0,
+    -0x1.ef7bd0p20
+  },
+  { // Entry 192
+    0x1.f14041fffc6f93742ff15942783907eep-4,
+    0x1.f3b552p-4
+  },
+  { // Entry 193
+    -0x1.f14041fffc6f93742ff15942783907eep-4,
+    -0x1.f3b552p-4
+  },
+  { // Entry 194
+    0x1.f4bb0afed7559483e5805dd4879465bcp-6,
+    0x1.f4e2f8p-6
+  },
+  { // Entry 195
+    -0x1.f4bb0afed7559483e5805dd4879465bcp-6,
+    -0x1.f4e2f8p-6
+  },
+  { // Entry 196
+    0x1.d45aeb02a07ca4b711c2193329425c78p-2,
+    0x1.f7fffep-2
+  },
+  { // Entry 197
+    -0x1.d45aeb02a07ca4b711c2193329425c78p-2,
+    -0x1.f7fffep-2
+  },
+  { // Entry 198
+    0x1.d539bcffd5888dca7deceba8a3f2d041p-2,
+    0x1.f914e8p-2
+  },
+  { // Entry 199
+    -0x1.d539bcffd5888dca7deceba8a3f2d041p-2,
+    -0x1.f914e8p-2
+  },
+  { // Entry 200
+    0x1.8ee84f1478a25b9bfacdabb49fcea6d5p-1,
+    0x1.f99b76p-1
+  },
+  { // Entry 201
+    -0x1.8ee84f1478a25b9bfacdabb49fcea6d5p-1,
+    -0x1.f99b76p-1
+  },
+  { // Entry 202
+    0x1.fadbf0ff486b15e264c02ca39b8e6e46p-6,
+    0x1.fb055ap-6
+  },
+  { // Entry 203
+    -0x1.fadbf0ff486b15e264c02ca39b8e6e46p-6,
+    -0x1.fb055ap-6
+  },
+  { // Entry 204
+    0x1.9044df034b8d943327bee5c633b3f31cp-1,
+    0x1.fc4dc0p-1
+  },
+  { // Entry 205
+    -0x1.9044df034b8d943327bee5c633b3f31cp-1,
+    -0x1.fc4dc0p-1
+  },
+  { // Entry 206
+    0x1.921f74fffa03e701accc9d1ee3bd2f43p0,
+    0x1.fddffep17
+  },
+  { // Entry 207
+    -0x1.921f74fffa03e701accc9d1ee3bd2f43p0,
+    -0x1.fddffep17
+  },
+  { // Entry 208
+    0x1.91af9bc0400e0e21fb44692a41829c5dp-1,
+    0x1.ff1ffep-1
+  },
+  { // Entry 209
+    -0x1.91af9bc0400e0e21fb44692a41829c5dp-1,
+    -0x1.ff1ffep-1
+  },
+  { // Entry 210
+    0x1.91bfa241a2bf1c8f33e7aee3a38362fap-1,
+    0x1.ff3ffep-1
+  },
+  { // Entry 211
+    -0x1.91bfa241a2bf1c8f33e7aee3a38362fap-1,
+    -0x1.ff3ffep-1
+  },
+  { // Entry 212
+    0x1.f502a50008dcfa3d1252e8256297aa16p-3,
+    0x1.ff3ffep-3
+  },
+  { // Entry 213
+    -0x1.f502a50008dcfa3d1252e8256297aa16p-3,
+    -0x1.ff3ffep-3
+  },
+  { // Entry 214
+    0x1.1b6c658f57d1e4435c946530e7d0415cp0,
+    0x1.fff77ep0
+  },
+  { // Entry 215
+    -0x1.1b6c658f57d1e4435c946530e7d0415cp0,
+    -0x1.fff77ep0
+  },
+  { // Entry 216
+    0x1.f5b0a8fac8ee3b2a0997552183bbaf86p-3,
+    0x1.fff8dep-3
+  },
+  { // Entry 217
+    -0x1.f5b0a8fac8ee3b2a0997552183bbaf86p-3,
+    -0x1.fff8dep-3
+  },
+  { // Entry 218
+    0x1.f5b0c8fad63b565edaa4205b5787d234p-3,
+    0x1.fff9p-3
+  },
+  { // Entry 219
+    -0x1.f5b0c8fad63b565edaa4205b5787d234p-3,
+    -0x1.fff9p-3
+  },
+  { // Entry 220
+    0x1.ffd048ff42ff02270154618cac768f98p-6,
+    0x1.fffaecp-6
+  },
+  { // Entry 221
+    -0x1.ffd048ff42ff02270154618cac768f98p-6,
+    -0x1.fffaecp-6
+  },
+  { // Entry 222
+    0x1.921de5429e50865c34386a247dc4ee4ep-1,
+    0x1.fffc60p-1
+  },
+  { // Entry 223
+    -0x1.921de5429e50865c34386a247dc4ee4ep-1,
+    -0x1.fffc60p-1
+  },
+  { // Entry 224
+    0x1.921f84443e21041cf1621a6d2e90a3cap-1,
+    0x1.ffff9ep-1
+  },
+  { // Entry 225
+    -0x1.921f84443e21041cf1621a6d2e90a3cap-1,
+    -0x1.ffff9ep-1
+  },
+  { // Entry 226
+    0x1.1b6e0d95213d8e5e8acacf6ee3b5dda1p0,
+    0x1.ffffc6p0
+  },
+  { // Entry 227
+    -0x1.1b6e0d95213d8e5e8acacf6ee3b5dda1p0,
+    -0x1.ffffc6p0
+  },
+  { // Entry 228
+    0x1.5368c551e98fc9a0436ff6aed5a43bfep0,
+    0x1.ffffdep1
+  },
+  { // Entry 229
+    -0x1.5368c551e98fc9a0436ff6aed5a43bfep0,
+    -0x1.ffffdep1
+  },
+  { // Entry 230
+    0x1.1b6e15952230c1a76e364414327ae250p0,
+    0x1.ffffeep0
+  },
+  { // Entry 231
+    -0x1.1b6e15952230c1a76e364414327ae250p0,
+    -0x1.ffffeep0
+  },
+  { // Entry 232
+    0x1.921fb14442c984697ee21a6c570dc22ap-1,
+    0x1.fffff8p-1
+  },
+  { // Entry 233
+    -0x1.921fb14442c984697ee21a6c570dc22ap-1,
+    -0x1.fffff8p-1
+  },
+  { // Entry 234
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 235
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 236
+    0.0,
+    0.0
+  },
+  { // Entry 237
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 238
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 239
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 240
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 241
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 242
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 243
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 244
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 245
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 246
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 247
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 248
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 249
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 250
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 251
+    0x1.999999a89e60d0512d6b0b39bd2a565ap-13,
+    0x1.99999ap-13
+  },
+  { // Entry 252
+    -0x1.999999a89e60d0512d6b0b39bd2a565ap-13,
+    -0x1.99999ap-13
+  },
+  { // Entry 253
+    0x1.999998a27984d3ebeb1c3290cc2c5caap-12,
+    0x1.99999ap-12
+  },
+  { // Entry 254
+    -0x1.999998a27984d3ebeb1c3290cc2c5caap-12,
+    -0x1.99999ap-12
+  },
+  { // Entry 255
+    0x1.333331b22d11b0ccb2bb7ba6f63b4d3cp-11,
+    0x1.333334p-11
+  },
+  { // Entry 256
+    -0x1.333331b22d11b0ccb2bb7ba6f63b4d3cp-11,
+    -0x1.333334p-11
+  },
+  { // Entry 257
+    0x1.99999489e62c7a2256e05c49880d23d9p-11,
+    0x1.99999ap-11
+  },
+  { // Entry 258
+    -0x1.99999489e62c7a2256e05c49880d23d9p-11,
+    -0x1.99999ap-11
+  },
+  { // Entry 259
+    0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    0x1.p-10
+  },
+  { // Entry 260
+    -0x1.fffff55555bbbbb72972d00cfde752f9p-11,
+    -0x1.p-10
+  },
+  { // Entry 261
+    0x1.33332ac8b4a6505aad1a5539202df4f4p-10,
+    0x1.333334p-10
+  },
+  { // Entry 262
+    -0x1.33332ac8b4a6505aad1a5539202df4f4p-10,
+    -0x1.333334p-10
+  },
+  { // Entry 263
+    0x1.6666595d875d6f587e4d878a7b492f47p-10,
+    0x1.666668p-10
+  },
+  { // Entry 264
+    -0x1.6666595d875d6f587e4d878a7b492f47p-10,
+    -0x1.666668p-10
+  },
+  { // Entry 265
+    0x1.9999862799f2a4104ba8c411863e71f7p-10,
+    0x1.99999cp-10
+  },
+  { // Entry 266
+    -0x1.9999862799f2a4104ba8c411863e71f7p-10,
+    -0x1.99999cp-10
+  },
+  { // Entry 267
+    0x1.ccccace5643276ecd8ffae54b28b87ffp-10,
+    0x1.ccccccp-10
+  },
+  { // Entry 268
+    -0x1.ccccace5643276ecd8ffae54b28b87ffp-10,
+    -0x1.ccccccp-10
+  },
+  { // Entry 269
+    0x1.0664f66f7cfd482cf0ff4582bbeef478p-7,
+    0x1.066666p-7
+  },
+  { // Entry 270
+    -0x1.0664f66f7cfd482cf0ff4582bbeef478p-7,
+    -0x1.066666p-7
+  },
+  { // Entry 271
+    0x1.ccc505948fe7a3b8e0837445c2136897p-7,
+    0x1.ccccccp-7
+  },
+  { // Entry 272
+    -0x1.ccc505948fe7a3b8e0837445c2136897p-7,
+    -0x1.ccccccp-7
+  },
+  { // Entry 273
+    0x1.498e36c4f385d5af3b6b6480a8ebfe14p-6,
+    0x1.499998p-6
+  },
+  { // Entry 274
+    -0x1.498e36c4f385d5af3b6b6480a8ebfe14p-6,
+    -0x1.499998p-6
+  },
+  { // Entry 275
+    0x1.acb3be5be013930205335e91f230ec8bp-6,
+    0x1.acccccp-6
+  },
+  { // Entry 276
+    -0x1.acb3be5be013930205335e91f230ec8bp-6,
+    -0x1.acccccp-6
+  },
+  { // Entry 277
+    0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    0x1.08p-5
+  },
+  { // Entry 278
+    -0x1.07e89e3abee7df5bc22b883856e5d802p-5,
+    -0x1.08p-5
+  },
+  { // Entry 279
+    0x1.39726b6fab059b66dd740ae83fb565b7p-5,
+    0x1.39999ap-5
+  },
+  { // Entry 280
+    -0x1.39726b6fab059b66dd740ae83fb565b7p-5,
+    -0x1.39999ap-5
+  },
+  { // Entry 281
+    0x1.6af65a41908039c267674f356f997d4dp-5,
+    0x1.6b3334p-5
+  },
+  { // Entry 282
+    -0x1.6af65a41908039c267674f356f997d4dp-5,
+    -0x1.6b3334p-5
+  },
+  { // Entry 283
+    0x1.9c737ecdb90a7c4f9d8682bc2815635bp-5,
+    0x1.9ccccep-5
+  },
+  { // Entry 284
+    -0x1.9c737ecdb90a7c4f9d8682bc2815635bp-5,
+    -0x1.9ccccep-5
+  },
+  { // Entry 285
+    0x1.cde8ebf5a33a269c5529c53e853ce492p-5,
+    0x1.ce6666p-5
+  },
+  { // Entry 286
+    -0x1.cde8ebf5a33a269c5529c53e853ce492p-5,
+    -0x1.ce6666p-5
+  },
+  { // Entry 287
+    0x1.3359bcc32e58c6de203f8b6c19fa5ff9p-1,
+    0x1.5e7fc4p-1
+  },
+  { // Entry 288
+    -0x1.3359bcc32e58c6de203f8b6c19fa5ff9p-1,
+    -0x1.5e7fc4p-1
+  },
+  { // Entry 289
+    0x1.d5ca705d09beeec558a5b8db2d657192p-1,
+    0x1.4e7fc4p0
+  },
+  { // Entry 290
+    -0x1.d5ca705d09beeec558a5b8db2d657192p-1,
+    -0x1.4e7fc4p0
+  },
+  { // Entry 291
+    0x1.17ac440d8febeb7a1d19a5ae8faa7d7ep0,
+    0x1.edbfa6p0
+  },
+  { // Entry 292
+    -0x1.17ac440d8febeb7a1d19a5ae8faa7d7ep0,
+    -0x1.edbfa6p0
+  },
+  { // Entry 293
+    0x1.3279e84703fc9c8f702a678693102c47p0,
+    0x1.467fc4p1
+  },
+  { // Entry 294
+    -0x1.3279e84703fc9c8f702a678693102c47p0,
+    -0x1.467fc4p1
+  },
+  { // Entry 295
+    0x1.43f64467a5781271582ce61ccc6b0199p0,
+    0x1.961fb4p1
+  },
+  { // Entry 296
+    -0x1.43f64467a5781271582ce61ccc6b0199p0,
+    -0x1.961fb4p1
+  },
+  { // Entry 297
+    0x1.502a1cf082c199f85892b1763efa6c61p0,
+    0x1.e5bfa4p1
+  },
+  { // Entry 298
+    -0x1.502a1cf082c199f85892b1763efa6c61p0,
+    -0x1.e5bfa4p1
+  },
+  { // Entry 299
+    0x1.592066563d61378c65a8ef7d091bdc95p0,
+    0x1.1aafcap2
+  },
+  { // Entry 300
+    -0x1.592066563d61378c65a8ef7d091bdc95p0,
+    -0x1.1aafcap2
+  },
+  { // Entry 301
+    0x1.5ff8e21f712f9ee4424bbc711e1ef6f3p0,
+    0x1.427fc2p2
+  },
+  { // Entry 302
+    -0x1.5ff8e21f712f9ee4424bbc711e1ef6f3p0,
+    -0x1.427fc2p2
+  },
+  { // Entry 303
+    0x1.655d64f377c9e58e727f460133ed97a3p0,
+    0x1.6a4fbap2
+  },
+  { // Entry 304
+    -0x1.655d64f377c9e58e727f460133ed97a3p0,
+    -0x1.6a4fbap2
+  },
+  { // Entry 305
+    0x1.65711d6dd7ca878481fcb2ec4f9f9341p0,
+    0x1.6af2f0p2
+  },
+  { // Entry 306
+    -0x1.65711d6dd7ca878481fcb2ec4f9f9341p0,
+    -0x1.6af2f0p2
+  },
+  { // Entry 307
+    0x1.602a2a92bb3778489bbc165a7d25fb68p0,
+    0x1.43c62ap2
+  },
+  { // Entry 308
+    -0x1.602a2a92bb3778489bbc165a7d25fb68p0,
+    -0x1.43c62ap2
+  },
+  { // Entry 309
+    0x1.597f46a19f06d53bf1df42bfaedc5c4dp0,
+    0x1.1c9964p2
+  },
+  { // Entry 310
+    -0x1.597f46a19f06d53bf1df42bfaedc5c4dp0,
+    -0x1.1c9964p2
+  },
+  { // Entry 311
+    0x1.50d201d4d8188bc950ce239cd4991bb9p0,
+    0x1.ead93cp1
+  },
+  { // Entry 312
+    -0x1.50d201d4d8188bc950ce239cd4991bb9p0,
+    -0x1.ead93cp1
+  },
+  { // Entry 313
+    0x1.45190b163719c828307d6a3d0cf0b54cp0,
+    0x1.9c7fb0p1
+  },
+  { // Entry 314
+    -0x1.45190b163719c828307d6a3d0cf0b54cp0,
+    -0x1.9c7fb0p1
+  },
+  { // Entry 315
+    0x1.34794bb84d2baa02953a0a72b717f0ebp0,
+    0x1.4e2624p1
+  },
+  { // Entry 316
+    -0x1.34794bb84d2baa02953a0a72b717f0ebp0,
+    -0x1.4e2624p1
+  },
+  { // Entry 317
+    0x1.1b59864724a10efac8597e77461bc3f1p0,
+    0x1.ff9932p0
+  },
+  { // Entry 318
+    -0x1.1b59864724a10efac8597e77461bc3f1p0,
+    -0x1.ff9932p0
+  },
+  { // Entry 319
+    0x1.e44c89086d1aecac1cbe2b3941c67a0fp-1,
+    0x1.62e61cp0
+  },
+  { // Entry 320
+    -0x1.e44c89086d1aecac1cbe2b3941c67a0fp-1,
+    -0x1.62e61cp0
+  },
+  { // Entry 321
+    0x1.5150f28aee7aa819cb475b4a85ae7569p-1,
+    0x1.8c662cp-1
+  },
+  { // Entry 322
+    -0x1.5150f28aee7aa819cb475b4a85ae7569p-1,
+    -0x1.8c662cp-1
+  },
+  { // Entry 323
+    -0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 324
+    0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    0x1.a8aa1cp0
+  },
+  { // Entry 325
+    -0x1.021548e71bb3457d648c1924de4f5d65p0,
+    -0x1.95ec8ap0
+  },
+  { // Entry 326
+    0x1.021548e71bb3457d648c1924de4f5d65p0,
+    0x1.95ec8ap0
+  },
+  { // Entry 327
+    -0x1.f92364ca1fa2dabc63ba7f6e8a68d3f6p-1,
+    -0x1.832ef8p0
+  },
+  { // Entry 328
+    0x1.f92364ca1fa2dabc63ba7f6e8a68d3f6p-1,
+    0x1.832ef8p0
+  },
+  { // Entry 329
+    -0x1.ed577ea7517c28cbc891c018438dac11p-1,
+    -0x1.707166p0
+  },
+  { // Entry 330
+    0x1.ed577ea7517c28cbc891c018438dac11p-1,
+    0x1.707166p0
+  },
+  { // Entry 331
+    -0x1.e0b5226ef36d67e005a0eb9cfdb9b51ap-1,
+    -0x1.5db3d4p0
+  },
+  { // Entry 332
+    0x1.e0b5226ef36d67e005a0eb9cfdb9b51ap-1,
+    0x1.5db3d4p0
+  },
+  { // Entry 333
+    -0x1.d3290427f1d17e30a6993fbe96cc1fdfp-1,
+    -0x1.4af642p0
+  },
+  { // Entry 334
+    0x1.d3290427f1d17e30a6993fbe96cc1fdfp-1,
+    0x1.4af642p0
+  },
+  { // Entry 335
+    -0x1.c49e4505cff7e9f58be9c60ef08b794dp-1,
+    -0x1.3838b0p0
+  },
+  { // Entry 336
+    0x1.c49e4505cff7e9f58be9c60ef08b794dp-1,
+    0x1.3838b0p0
+  },
+  { // Entry 337
+    -0x1.b4fe80019a190ceb39c7cce2f0847082p-1,
+    -0x1.257b1ep0
+  },
+  { // Entry 338
+    0x1.b4fe80019a190ceb39c7cce2f0847082p-1,
+    0x1.257b1ep0
+  },
+  { // Entry 339
+    -0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 340
+    0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    0x1.12bd92p0
+  },
+  { // Entry 341
+    -0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 342
+    0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 343
+    -0x1.7b8b3af8b9278dd5c80bf4f386dc5503p-1,
+    -0x1.d4b87cp-1
+  },
+  { // Entry 344
+    0x1.7b8b3af8b9278dd5c80bf4f386dc5503p-1,
+    0x1.d4b87cp-1
+  },
+  { // Entry 345
+    -0x1.6f851d6a4f403a71ef874dcc9ed9d59ap-1,
+    -0x1.bf14bap-1
+  },
+  { // Entry 346
+    0x1.6f851d6a4f403a71ef874dcc9ed9d59ap-1,
+    0x1.bf14bap-1
+  },
+  { // Entry 347
+    -0x1.62fb625437af22ec34ce96b17c5ac9ecp-1,
+    -0x1.a970f8p-1
+  },
+  { // Entry 348
+    0x1.62fb625437af22ec34ce96b17c5ac9ecp-1,
+    0x1.a970f8p-1
+  },
+  { // Entry 349
+    -0x1.55e98421ee9465b922d19e78004b9e96p-1,
+    -0x1.93cd36p-1
+  },
+  { // Entry 350
+    0x1.55e98421ee9465b922d19e78004b9e96p-1,
+    0x1.93cd36p-1
+  },
+  { // Entry 351
+    -0x1.484b4edaf8871846261a76bd33d9f049p-1,
+    -0x1.7e2974p-1
+  },
+  { // Entry 352
+    0x1.484b4edaf8871846261a76bd33d9f049p-1,
+    0x1.7e2974p-1
+  },
+  { // Entry 353
+    -0x1.3a1cfde1e590471ac2ff5eefe745a249p-1,
+    -0x1.6885b2p-1
+  },
+  { // Entry 354
+    0x1.3a1cfde1e590471ac2ff5eefe745a249p-1,
+    0x1.6885b2p-1
+  },
+  { // Entry 355
+    -0x1.2b5b5dbe8467930df24be6b9046ddfaep-1,
+    -0x1.52e1f0p-1
+  },
+  { // Entry 356
+    0x1.2b5b5dbe8467930df24be6b9046ddfaep-1,
+    0x1.52e1f0p-1
+  },
+  { // Entry 357
+    -0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 358
+    0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 359
+    -0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 360
+    0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 361
+    -0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 362
+    0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 363
+    -0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 364
+    0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 365
+    -0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 366
+    0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    0x1.62b958p-2
+  },
+  { // Entry 367
+    -0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 368
+    0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 369
+    -0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 370
+    0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 371
+    -0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 372
+    0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 373
+    -0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 374
+    0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 375
+    -0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 376
+    0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 377
+    0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    0x1.d8f720p-5
+  },
+  { // Entry 378
+    -0x1.d870dc6f0c1b3da66fb282eb78c47134p-5,
+    -0x1.d8f720p-5
+  },
+  { // Entry 379
+    0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    0x1.d8f720p-4
+  },
+  { // Entry 380
+    -0x1.d6e1429159f6f0290cf9f2fb24bc26bdp-4,
+    -0x1.d8f720p-4
+  },
+  { // Entry 381
+    0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    0x1.62b958p-3
+  },
+  { // Entry 382
+    -0x1.5f3d40f500501f80bba7a781b1619b85p-3,
+    -0x1.62b958p-3
+  },
+  { // Entry 383
+    0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    0x1.d8f720p-3
+  },
+  { // Entry 384
+    -0x1.d0d0f7d861c753c31fa29e74145dc127p-3,
+    -0x1.d8f720p-3
+  },
+  { // Entry 385
+    0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    0x1.279a74p-2
+  },
+  { // Entry 386
+    -0x1.1fc79ca9ca92823d01375328ac472eedp-2,
+    -0x1.279a74p-2
+  },
+  { // Entry 387
+    0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    0x1.62b958p-2
+  },
+  { // Entry 388
+    -0x1.5579fd644a1a2d96faf5bb8844656d0cp-2,
+    -0x1.62b958p-2
+  },
+  { // Entry 389
+    0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    0x1.9dd83cp-2
+  },
+  { // Entry 390
+    -0x1.894ae05fefe6ee1164c3e769b2b1a84ep-2,
+    -0x1.9dd83cp-2
+  },
+  { // Entry 391
+    0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    0x1.d8f720p-2
+  },
+  { // Entry 392
+    -0x1.bb12f2d65df13ff36b74e12066022236p-2,
+    -0x1.d8f720p-2
+  },
+  { // Entry 393
+    0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    0x1.0a0b02p-1
+  },
+  { // Entry 394
+    -0x1.eab7b26f955752e78c062cb6087064d9p-2,
+    -0x1.0a0b02p-1
+  },
+  { // Entry 395
+    0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    0x1.3d3e36p-1
+  },
+  { // Entry 396
+    -0x1.1c03f7900131c7cb3fbfbb5e6c5115eap-1,
+    -0x1.3d3e36p-1
+  },
+  { // Entry 397
+    0x1.2b5b634ea20bdc86ee2a005916e6440ap-1,
+    0x1.52e1f8p-1
+  },
+  { // Entry 398
+    -0x1.2b5b634ea20bdc86ee2a005916e6440ap-1,
+    -0x1.52e1f8p-1
+  },
+  { // Entry 399
+    0x1.3a1d033b0b8af99ba311a5b2b61923fdp-1,
+    0x1.6885bap-1
+  },
+  { // Entry 400
+    -0x1.3a1d033b0b8af99ba311a5b2b61923fdp-1,
+    -0x1.6885bap-1
+  },
+  { // Entry 401
+    0x1.484b53fe3670095a8de580bd37b09834p-1,
+    0x1.7e297cp-1
+  },
+  { // Entry 402
+    -0x1.484b53fe3670095a8de580bd37b09834p-1,
+    -0x1.7e297cp-1
+  },
+  { // Entry 403
+    0x1.55e989109067d04fb47f38831112284ep-1,
+    0x1.93cd3ep-1
+  },
+  { // Entry 404
+    -0x1.55e989109067d04fb47f38831112284ep-1,
+    -0x1.93cd3ep-1
+  },
+  { // Entry 405
+    0x1.62fb670fb893cf191d38ab2f1067b2dep-1,
+    0x1.a971p-1
+  },
+  { // Entry 406
+    -0x1.62fb670fb893cf191d38ab2f1067b2dep-1,
+    -0x1.a971p-1
+  },
+  { // Entry 407
+    0x1.6f8521f44dc815420fa612edb64cbde6p-1,
+    0x1.bf14c2p-1
+  },
+  { // Entry 408
+    -0x1.6f8521f44dc815420fa612edb64cbde6p-1,
+    -0x1.bf14c2p-1
+  },
+  { // Entry 409
+    0x1.7b8b3f52ed1004e7b2fde26964f1ce72p-1,
+    0x1.d4b884p-1
+  },
+  { // Entry 410
+    -0x1.7b8b3f52ed1004e7b2fde26964f1ce72p-1,
+    -0x1.d4b884p-1
+  },
+  { // Entry 411
+    0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    0x1.ea5c3ep-1
+  },
+  { // Entry 412
+    -0x1.8712787339dc1bb28aacdbb75d0eda49p-1,
+    -0x1.ea5c3ep-1
+  },
+  { // Entry 413
+    0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    0x1.12bd92p0
+  },
+  { // Entry 414
+    -0x1.a431f41e221ee2993e28481f34f7c822p-1,
+    -0x1.12bd92p0
+  },
+  { // Entry 415
+    0x1.b4fe853106c1ee9ed92061a86abea8fbp-1,
+    0x1.257b24p0
+  },
+  { // Entry 416
+    -0x1.b4fe853106c1ee9ed92061a86abea8fbp-1,
+    -0x1.257b24p0
+  },
+  { // Entry 417
+    0x1.c49e49d8ce799df605c0c3754f12c804p-1,
+    0x1.3838b6p0
+  },
+  { // Entry 418
+    -0x1.c49e49d8ce799df605c0c3754f12c804p-1,
+    -0x1.3838b6p0
+  },
+  { // Entry 419
+    0x1.d32908a5e902e2f9d1bdd644edec4fecp-1,
+    0x1.4af648p0
+  },
+  { // Entry 420
+    -0x1.d32908a5e902e2f9d1bdd644edec4fecp-1,
+    -0x1.4af648p0
+  },
+  { // Entry 421
+    0x1.e0b5269ed18eb6e8f1b485483f950e69p-1,
+    0x1.5db3dap0
+  },
+  { // Entry 422
+    -0x1.e0b5269ed18eb6e8f1b485483f950e69p-1,
+    -0x1.5db3dap0
+  },
+  { // Entry 423
+    0x1.ed57828f84cacdec44b29eaeb9138ae7p-1,
+    0x1.70716cp0
+  },
+  { // Entry 424
+    -0x1.ed57828f84cacdec44b29eaeb9138ae7p-1,
+    -0x1.70716cp0
+  },
+  { // Entry 425
+    0x1.f9236870954c3910ae46db78e8dab4a1p-1,
+    0x1.832efep0
+  },
+  { // Entry 426
+    -0x1.f9236870954c3910ae46db78e8dab4a1p-1,
+    -0x1.832efep0
+  },
+  { // Entry 427
+    0x1.02154a9c2f5c8c14720789b394a8d71ep0,
+    0x1.95ec90p0
+  },
+  { // Entry 428
+    -0x1.02154a9c2f5c8c14720789b394a8d71ep0,
+    -0x1.95ec90p0
+  },
+  { // Entry 429
+    0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    0x1.a8aa1cp0
+  },
+  { // Entry 430
+    -0x1.073ea11368f7a47972c7a90fc77e3c33p0,
+    -0x1.a8aa1cp0
+  },
+  { // Entry 431
+    0x1.96c4c21383607ec90510b32aa175fe13p-1,
+    0x1.04aff8p0
+  },
+  { // Entry 432
+    -0x1.96c4c21383607ec90510b32aa175fe13p-1,
+    -0x1.04aff8p0
+  },
+  { // Entry 433
+    0x1.96c5670707d079f967bde56724a1508cp-1,
+    0x1.04b0a0p0
+  },
+  { // Entry 434
+    -0x1.96c5670707d079f967bde56724a1508cp-1,
+    -0x1.04b0a0p0
+  },
+  { // Entry 435
+    0x1.96c60bfa20055aa638999dba9d5b9ba4p-1,
+    0x1.04b148p0
+  },
+  { // Entry 436
+    -0x1.96c60bfa20055aa638999dba9d5b9ba4p-1,
+    -0x1.04b148p0
+  },
+  { // Entry 437
+    0x1.96c6b0eccbff69175eae7d730f2d63c8p-1,
+    0x1.04b1f0p0
+  },
+  { // Entry 438
+    -0x1.96c6b0eccbff69175eae7d730f2d63c8p-1,
+    -0x1.04b1f0p0
+  },
+  { // Entry 439
+    0x1.96c755df0bbeed94bc0a76fe6f6efe03p-1,
+    0x1.04b298p0
+  },
+  { // Entry 440
+    -0x1.96c755df0bbeed94bc0a76fe6f6efe03p-1,
+    -0x1.04b298p0
+  },
+  { // Entry 441
+    0x1.96c7fad0df4430662dbe23a125fdf4dcp-1,
+    0x1.04b340p0
+  },
+  { // Entry 442
+    -0x1.96c7fad0df4430662dbe23a125fdf4dcp-1,
+    -0x1.04b340p0
+  },
+  { // Entry 443
+    0x1.96c89fc2468f79d38bdc192ed1b15eadp-1,
+    0x1.04b3e8p0
+  },
+  { // Entry 444
+    -0x1.96c89fc2468f79d38bdc192ed1b15eadp-1,
+    -0x1.04b3e8p0
+  },
+  { // Entry 445
+    0x1.96c944b341a11224a9783fc55088730ap-1,
+    0x1.04b490p0
+  },
+  { // Entry 446
+    -0x1.96c944b341a11224a9783fc55088730ap-1,
+    -0x1.04b490p0
+  },
+  { // Entry 447
+    0x1.96c9e5b678ff391c2d3fa2849c0a25d4p-1,
+    0x1.04b534p0
+  },
+  { // Entry 448
+    -0x1.96c9e5b678ff391c2d3fa2849c0a25d4p-1,
+    -0x1.04b534p0
+  },
+  { // Entry 449
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 450
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 451
+    0.0,
+    0.0
+  },
+  { // Entry 452
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 453
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 454
+    0x1.0c1521c014d01f8a9ddecc36f1430940p-1,
+    0x1.279a72p-1
+  },
+  { // Entry 455
+    -0x1.0c1521c014d01f8a9ddecc36f1430940p-1,
+    -0x1.279a72p-1
+  },
+  { // Entry 456
+    0x1.0c15234014d0ffa236d9926a680fd817p-1,
+    0x1.279a74p-1
+  },
+  { // Entry 457
+    -0x1.0c15234014d0ffa236d9926a680fd817p-1,
+    -0x1.279a74p-1
+  },
+  { // Entry 458
+    0x1.0c1524c014d0932c0cf0350674c305cap-1,
+    0x1.279a76p-1
+  },
+  { // Entry 459
+    -0x1.0c1524c014d0932c0cf0350674c305cap-1,
+    -0x1.279a76p-1
+  },
+  { // Entry 460
+    0x1.0c1522e17602fe431351c1c08ae51ff7p0,
+    0x1.bb67acp0
+  },
+  { // Entry 461
+    -0x1.0c1522e17602fe431351c1c08ae51ff7p0,
+    -0x1.bb67acp0
+  },
+  { // Entry 462
+    0x1.0c1523617603a6edb72557e634b4b8e0p0,
+    0x1.bb67aep0
+  },
+  { // Entry 463
+    -0x1.0c1523617603a6edb72557e634b4b8e0p0,
+    -0x1.bb67aep0
+  },
+  { // Entry 464
+    0x1.0c1523e1760371e48330a6db47968a93p0,
+    0x1.bb67b0p0
+  },
+  { // Entry 465
+    -0x1.0c1523e1760371e48330a6db47968a93p0,
+    -0x1.bb67b0p0
+  },
+  { // Entry 466
+    0x1.a64eea8f03b7833c1b78f9cef282cf0fp-2,
+    0x1.bffffep-2
+  },
+  { // Entry 467
+    -0x1.a64eea8f03b7833c1b78f9cef282cf0fp-2,
+    -0x1.bffffep-2
+  },
+  { // Entry 468
+    0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    0x1.c0p-2
+  },
+  { // Entry 469
+    -0x1.a64eec3cc23fcb6c84f92bd2003ce26cp-2,
+    -0x1.c0p-2
+  },
+  { // Entry 470
+    0x1.a64eedea80c775ce2723b37d5f27788dp-2,
+    0x1.c00002p-2
+  },
+  { // Entry 471
+    -0x1.a64eedea80c775ce2723b37d5f27788dp-2,
+    -0x1.c00002p-2
+  },
+  { // Entry 472
+    0x1.345f007137aead7202d87adc5e70e53ep-1,
+    0x1.5ffffep-1
+  },
+  { // Entry 473
+    -0x1.345f007137aead7202d87adc5e70e53ep-1,
+    -0x1.5ffffep-1
+  },
+  { // Entry 474
+    0x1.345f01cce37bb440844df1c4409fe779p-1,
+    0x1.60p-1
+  },
+  { // Entry 475
+    -0x1.345f01cce37bb440844df1c4409fe779p-1,
+    -0x1.60p-1
+  },
+  { // Entry 476
+    0x1.345f03288f477671552f403f77363c6ep-1,
+    0x1.600002p-1
+  },
+  { // Entry 477
+    -0x1.345f03288f477671552f403f77363c6ep-1,
+    -0x1.600002p-1
+  },
+  { // Entry 478
+    0x1.bde70d2b5b9861800016d24f37e1f182p-1,
+    0x1.2ffffep0
+  },
+  { // Entry 479
+    -0x1.bde70d2b5b9861800016d24f37e1f182p-1,
+    -0x1.2ffffep0
+  },
+  { // Entry 480
+    0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    0x1.30p0
+  },
+  { // Entry 481
+    -0x1.bde70ed439fe6cba95391a7f421b3821p-1,
+    -0x1.30p0
+  },
+  { // Entry 482
+    0x1.bde7107d1861329d77f85e21c5cf991dp-1,
+    0x1.300002p0
+  },
+  { // Entry 483
+    -0x1.bde7107d1861329d77f85e21c5cf991dp-1,
+    -0x1.300002p0
+  },
+  { // Entry 484
+    0x1.2e7571f4ae6251e5ddb771325105495ep0,
+    0x1.37fffep1
+  },
+  { // Entry 485
+    -0x1.2e7571f4ae6251e5ddb771325105495ep0,
+    -0x1.37fffep1
+  },
+  { // Entry 486
+    0x1.2e75728833a54116e3ef7326bd9839p0,
+    0x1.38p1
+  },
+  { // Entry 487
+    -0x1.2e75728833a54116e3ef7326bd9839p0,
+    -0x1.38p1
+  },
+  { // Entry 488
+    0x1.2e75731bb8e691dca788c02332d288f0p0,
+    0x1.380002p1
+  },
+  { // Entry 489
+    -0x1.2e75731bb8e691dca788c02332d288f0p0,
+    -0x1.380002p1
+  },
+  { // Entry 490
+    0x1.0640a805eb5ac8d45f6e626469cfd37cp-4,
+    0x1.069c8cp-4
+  },
+  { // Entry 491
+    -0x1.0640a805eb5ac8d45f6e626469cfd37cp-4,
+    -0x1.069c8cp-4
+  },
+  { // Entry 492
+    0x1.052fabecdb3192006601da57b9f185bbp-3,
+    0x1.069c8cp-3
+  },
+  { // Entry 493
+    -0x1.052fabecdb3192006601da57b9f185bbp-3,
+    -0x1.069c8cp-3
+  },
+  { // Entry 494
+    0x1.852a2293776e3c2cf4b7a237dfbcac9cp-3,
+    0x1.89ead2p-3
+  },
+  { // Entry 495
+    -0x1.852a2293776e3c2cf4b7a237dfbcac9cp-3,
+    -0x1.89ead2p-3
+  },
+  { // Entry 496
+    0x1.01123c6ee78df9fddeaeaac0f651fffdp-2,
+    0x1.069c8cp-2
+  },
+  { // Entry 497
+    -0x1.01123c6ee78df9fddeaeaac0f651fffdp-2,
+    -0x1.069c8cp-2
+  },
+  { // Entry 498
+    0x1.3daa74f913ef98bebdaf6ff5fe9ed93ep-2,
+    0x1.4843b0p-2
+  },
+  { // Entry 499
+    -0x1.3daa74f913ef98bebdaf6ff5fe9ed93ep-2,
+    -0x1.4843b0p-2
+  },
+  { // Entry 500
+    0x1.780c486991daa5d72fdda5ce57d44289p-2,
+    0x1.89ead4p-2
+  },
+  { // Entry 501
+    -0x1.780c486991daa5d72fdda5ce57d44289p-2,
+    -0x1.89ead4p-2
+  },
+  { // Entry 502
+    0x1.affab023fe5819ab1f4cad60051a8345p-2,
+    0x1.cb91f8p-2
+  },
+  { // Entry 503
+    -0x1.affab023fe5819ab1f4cad60051a8345p-2,
+    -0x1.cb91f8p-2
+  },
+  { // Entry 504
+    0x1.e54c83edcc5caaa7a074644b3d2183a2p-2,
+    0x1.069c8ep-1
+  },
+  { // Entry 505
+    -0x1.e54c83edcc5caaa7a074644b3d2183a2p-2,
+    -0x1.069c8ep-1
+  },
+  { // Entry 506
+    0x1.0bf5631d21b59bea6037065bd184c7fdp-1,
+    0x1.277020p-1
+  },
+  { // Entry 507
+    -0x1.0bf5631d21b59bea6037065bd184c7fdp-1,
+    -0x1.277020p-1
+  },
+  { // Entry 508
+    0x1.23e71a9565cd2e40ee391514bdb4e6d5p-1,
+    0x1.4843b2p-1
+  },
+  { // Entry 509
+    -0x1.23e71a9565cd2e40ee391514bdb4e6d5p-1,
+    -0x1.4843b2p-1
+  },
+  { // Entry 510
+    0x1.3a7e42481b7080ceeca06ac375e2af5bp-1,
+    0x1.691744p-1
+  },
+  { // Entry 511
+    -0x1.3a7e42481b7080ceeca06ac375e2af5bp-1,
+    -0x1.691744p-1
+  },
+  { // Entry 512
+    0x1.4fc2c891491b52874ce2931f24e4b619p-1,
+    0x1.89ead6p-1
+  },
+  { // Entry 513
+    -0x1.4fc2c891491b52874ce2931f24e4b619p-1,
+    -0x1.89ead6p-1
+  },
+  { // Entry 514
+    0x1.63c0625215a8fafdacb65eebcc76d090p-1,
+    0x1.aabe68p-1
+  },
+  { // Entry 515
+    -0x1.63c0625215a8fafdacb65eebcc76d090p-1,
+    -0x1.aabe68p-1
+  },
+  { // Entry 516
+    0x1.768565c528c1c7512181ef021a9befe5p-1,
+    0x1.cb91fap-1
+  },
+  { // Entry 517
+    -0x1.768565c528c1c7512181ef021a9befe5p-1,
+    -0x1.cb91fap-1
+  },
+  { // Entry 518
+    0x1.8821d517853a9293101e345ad74f6492p-1,
+    0x1.ec658cp-1
+  },
+  { // Entry 519
+    -0x1.8821d517853a9293101e345ad74f6492p-1,
+    -0x1.ec658cp-1
+  },
+  { // Entry 520
+    0x1.98a6983a1f69e2ba7830d45b9caa2847p-1,
+    0x1.069c8ep0
+  },
+  { // Entry 521
+    -0x1.98a6983a1f69e2ba7830d45b9caa2847p-1,
+    -0x1.069c8ep0
+  },
+  { // Entry 522
+    0x1.a824e7446479e89c28c3c93afc5c60a3p-1,
+    0x1.170656p0
+  },
+  { // Entry 523
+    -0x1.a824e7446479e89c28c3c93afc5c60a3p-1,
+    -0x1.170656p0
+  },
+  { // Entry 524
+    0x1.b6add56905c11877985184b1ee5d353ap-1,
+    0x1.27701ep0
+  },
+  { // Entry 525
+    -0x1.b6add56905c11877985184b1ee5d353ap-1,
+    -0x1.27701ep0
+  },
+  { // Entry 526
+    0x1.c4520084d880847dda367ba8b7a8b21dp-1,
+    0x1.37d9e6p0
+  },
+  { // Entry 527
+    -0x1.c4520084d880847dda367ba8b7a8b21dp-1,
+    -0x1.37d9e6p0
+  },
+  { // Entry 528
+    0x1.d121598ed50fface6324aa1c21a74d23p-1,
+    0x1.4843aep0
+  },
+  { // Entry 529
+    -0x1.d121598ed50fface6324aa1c21a74d23p-1,
+    -0x1.4843aep0
+  },
+  { // Entry 530
+    0x1.dd2b014fde35d165c474a1122825802dp-1,
+    0x1.58ad76p0
+  },
+  { // Entry 531
+    -0x1.dd2b014fde35d165c474a1122825802dp-1,
+    -0x1.58ad76p0
+  },
+  { // Entry 532
+    0x1.e87d3481ac8dd5621a3b3c4f921c44fap-1,
+    0x1.69173ep0
+  },
+  { // Entry 533
+    -0x1.e87d3481ac8dd5621a3b3c4f921c44fap-1,
+    -0x1.69173ep0
+  },
+  { // Entry 534
+    0x1.f32543520ef9c5f5810f6db85d7aaf28p-1,
+    0x1.798106p0
+  },
+  { // Entry 535
+    -0x1.f32543520ef9c5f5810f6db85d7aaf28p-1,
+    -0x1.798106p0
+  },
+  { // Entry 536
+    0x1.fd2f9116e59cee8a040e62d4b5243e1ap-1,
+    0x1.89eacep0
+  },
+  { // Entry 537
+    -0x1.fd2f9116e59cee8a040e62d4b5243e1ap-1,
+    -0x1.89eacep0
+  },
+  { // Entry 538
+    0x1.0353ccda2d644d7938c482410bb91bb1p0,
+    0x1.9a5496p0
+  },
+  { // Entry 539
+    -0x1.0353ccda2d644d7938c482410bb91bb1p0,
+    -0x1.9a5496p0
+  },
+  { // Entry 540
+    0x1.07cbfd6728be1d728e6efaa566962a31p0,
+    0x1.aabe5ep0
+  },
+  { // Entry 541
+    -0x1.07cbfd6728be1d728e6efaa566962a31p0,
+    -0x1.aabe5ep0
+  },
+  { // Entry 542
+    0x1.0c053fac5615bd33ea669091fc7a90bcp0,
+    0x1.bb2826p0
+  },
+  { // Entry 543
+    -0x1.0c053fac5615bd33ea669091fc7a90bcp0,
+    -0x1.bb2826p0
+  },
+  { // Entry 544
+    0x1.1004163d82000593e7df6bce3d8cab10p0,
+    0x1.cb91eep0
+  },
+  { // Entry 545
+    -0x1.1004163d82000593e7df6bce3d8cab10p0,
+    -0x1.cb91eep0
+  },
+  { // Entry 546
+    0x1.13cca783c7bd2088b900b4113ba87852p0,
+    0x1.dbfbb6p0
+  },
+  { // Entry 547
+    -0x1.13cca783c7bd2088b900b4113ba87852p0,
+    -0x1.dbfbb6p0
+  },
+  { // Entry 548
+    0x1.1762c47f210f545ac9a8a7e0241e7259p0,
+    0x1.ec657ep0
+  },
+  { // Entry 549
+    -0x1.1762c47f210f545ac9a8a7e0241e7259p0,
+    -0x1.ec657ep0
+  },
+  { // Entry 550
+    0x1.1ac9ef601c2f97f7b0f0a6d93dd834eep0,
+    0x1.fccf46p0
+  },
+  { // Entry 551
+    -0x1.1ac9ef601c2f97f7b0f0a6d93dd834eep0,
+    -0x1.fccf46p0
+  },
+  { // Entry 552
+    0x1.1e05623dfb4cc3c6baa62e4bc279a9a4p0,
+    0x1.069c88p1
+  },
+  { // Entry 553
+    -0x1.1e05623dfb4cc3c6baa62e4bc279a9a4p0,
+    -0x1.069c88p1
+  },
+  { // Entry 554
+    0x1.21181384588be60732d01848bc71700bp0,
+    0x1.0ed16cp1
+  },
+  { // Entry 555
+    -0x1.21181384588be60732d01848bc71700bp0,
+    -0x1.0ed16cp1
+  },
+  { // Entry 556
+    0x1.2404bde8e2552de3cc50334d78b5dc4ap0,
+    0x1.170650p1
+  },
+  { // Entry 557
+    -0x1.2404bde8e2552de3cc50334d78b5dc4ap0,
+    -0x1.170650p1
+  },
+  { // Entry 558
+    0x1.26cde4061c757738e2ce7f21522b89dap0,
+    0x1.1f3b34p1
+  },
+  { // Entry 559
+    -0x1.26cde4061c757738e2ce7f21522b89dap0,
+    -0x1.1f3b34p1
+  },
+  { // Entry 560
+    0x1.2975d58f5e9bdfe1899ef21d99c49b2bp0,
+    0x1.277018p1
+  },
+  { // Entry 561
+    -0x1.2975d58f5e9bdfe1899ef21d99c49b2bp0,
+    -0x1.277018p1
+  },
+  { // Entry 562
+    0x1.2bfeb3b9bbea83cde56fbf951e871487p0,
+    0x1.2fa4fcp1
+  },
+  { // Entry 563
+    -0x1.2bfeb3b9bbea83cde56fbf951e871487p0,
+    -0x1.2fa4fcp1
+  },
+  { // Entry 564
+    0x1.2e6a7545ba88692a48d56e5581873211p0,
+    0x1.37d9e0p1
+  },
+  { // Entry 565
+    -0x1.2e6a7545ba88692a48d56e5581873211p0,
+    -0x1.37d9e0p1
+  },
+  { // Entry 566
+    0x1.30baea2f60c5a59cc6d2e94130f95768p0,
+    0x1.400ec4p1
+  },
+  { // Entry 567
+    -0x1.30baea2f60c5a59cc6d2e94130f95768p0,
+    -0x1.400ec4p1
+  },
+  { // Entry 568
+    0x1.32f1bf0aa92c8a65a6948643fdcfd255p0,
+    0x1.4843a8p1
+  },
+  { // Entry 569
+    -0x1.32f1bf0aa92c8a65a6948643fdcfd255p0,
+    -0x1.4843a8p1
+  },
+  { // Entry 570
+    0x1.35108012a113c05aaab2d146f1393f5cp0,
+    0x1.50788cp1
+  },
+  { // Entry 571
+    -0x1.35108012a113c05aaab2d146f1393f5cp0,
+    -0x1.50788cp1
+  },
+  { // Entry 572
+    0x1.37189bf16a71201adaf5b8708459828ep0,
+    0x1.58ad70p1
+  },
+  { // Entry 573
+    -0x1.37189bf16a71201adaf5b8708459828ep0,
+    -0x1.58ad70p1
+  },
+  { // Entry 574
+    0x1.390b6647268e4ff7a7fc9ad3d315ca68p0,
+    0x1.60e254p1
+  },
+  { // Entry 575
+    -0x1.390b6647268e4ff7a7fc9ad3d315ca68p0,
+    -0x1.60e254p1
+  },
+  { // Entry 576
+    0x1.3aea19f582cfb2fc7f01e690b9e61c32p0,
+    0x1.691738p1
+  },
+  { // Entry 577
+    -0x1.3aea19f582cfb2fc7f01e690b9e61c32p0,
+    -0x1.691738p1
+  },
+  { // Entry 578
+    0x1.3cb5db3545a9577b9d057ce82dc608c6p0,
+    0x1.714c1cp1
+  },
+  { // Entry 579
+    -0x1.3cb5db3545a9577b9d057ce82dc608c6p0,
+    -0x1.714c1cp1
+  },
+  { // Entry 580
+    0x1.3e6fb97ad7a66ba04c7b01d1646602e1p0,
+    0x1.7981p1
+  },
+  { // Entry 581
+    -0x1.3e6fb97ad7a66ba04c7b01d1646602e1p0,
+    -0x1.7981p1
+  },
+  { // Entry 582
+    0x1.4018b12e603d690dfd89144ca355ad7cp0,
+    0x1.81b5e4p1
+  },
+  { // Entry 583
+    -0x1.4018b12e603d690dfd89144ca355ad7cp0,
+    -0x1.81b5e4p1
+  },
+  { // Entry 584
+    0x1.41b1ad3bab8b579c71ceb89cb23a4191p0,
+    0x1.89eac8p1
+  },
+  { // Entry 585
+    -0x1.41b1ad3bab8b579c71ceb89cb23a4191p0,
+    -0x1.89eac8p1
+  },
+  { // Entry 586
+    -0x1.6807a9ecb61e7179d47b86a3d7d89614p0,
+    -0x1.81b5eep2
+  },
+  { // Entry 587
+    0x1.6807a9ecb61e7179d47b86a3d7d89614p0,
+    0x1.81b5eep2
+  },
+  { // Entry 588
+    -0x1.6631e1e590c8943bb980827585841401p0,
+    -0x1.714c26p2
+  },
+  { // Entry 589
+    0x1.6631e1e590c8943bb980827585841401p0,
+    0x1.714c26p2
+  },
+  { // Entry 590
+    -0x1.6431bbdbbb23b05a6294690cc8fe4afbp0,
+    -0x1.60e25ep2
+  },
+  { // Entry 591
+    0x1.6431bbdbbb23b05a6294690cc8fe4afbp0,
+    0x1.60e25ep2
+  },
+  { // Entry 592
+    -0x1.620149ba05b3abd7c744898b395ff078p0,
+    -0x1.507896p2
+  },
+  { // Entry 593
+    0x1.620149ba05b3abd7c744898b395ff078p0,
+    0x1.507896p2
+  },
+  { // Entry 594
+    -0x1.5f99784c16ae6ade09784989de90f9cep0,
+    -0x1.400ecep2
+  },
+  { // Entry 595
+    0x1.5f99784c16ae6ade09784989de90f9cep0,
+    0x1.400ecep2
+  },
+  { // Entry 596
+    -0x1.5cf1c615f954a1c183fa9df874538ee9p0,
+    -0x1.2fa506p2
+  },
+  { // Entry 597
+    0x1.5cf1c615f954a1c183fa9df874538ee9p0,
+    0x1.2fa506p2
+  },
+  { // Entry 598
+    -0x1.59ffe38b71898ed7998b335085e65964p0,
+    -0x1.1f3b3ep2
+  },
+  { // Entry 599
+    0x1.59ffe38b71898ed7998b335085e65964p0,
+    0x1.1f3b3ep2
+  },
+  { // Entry 600
+    -0x1.56b7343ee6671bf137c3060d6bbac90bp0,
+    -0x1.0ed176p2
+  },
+  { // Entry 601
+    0x1.56b7343ee6671bf137c3060d6bbac90bp0,
+    0x1.0ed176p2
+  },
+  { // Entry 602
+    -0x1.530824ba9228f906cf6fbbb114073212p0,
+    -0x1.fccf5ap1
+  },
+  { // Entry 603
+    0x1.530824ba9228f906cf6fbbb114073212p0,
+    0x1.fccf5ap1
+  },
+  { // Entry 604
+    -0x1.4edf449b38ca3a22476f62c7349bb773p0,
+    -0x1.dbfbc8p1
+  },
+  { // Entry 605
+    0x1.4edf449b38ca3a22476f62c7349bb773p0,
+    0x1.dbfbc8p1
+  },
+  { // Entry 606
+    -0x1.4a2408f508131a351e75bd65a563180ap0,
+    -0x1.bb2836p1
+  },
+  { // Entry 607
+    0x1.4a2408f508131a351e75bd65a563180ap0,
+    0x1.bb2836p1
+  },
+  { // Entry 608
+    -0x1.44b712953f85f723e8b9348c9f600a8cp0,
+    -0x1.9a54a4p1
+  },
+  { // Entry 609
+    0x1.44b712953f85f723e8b9348c9f600a8cp0,
+    0x1.9a54a4p1
+  },
+  { // Entry 610
+    -0x1.3e6fbd3122418ea0ac307a2ed17c0d28p0,
+    -0x1.798112p1
+  },
+  { // Entry 611
+    0x1.3e6fbd3122418ea0ac307a2ed17c0d28p0,
+    0x1.798112p1
+  },
+  { // Entry 612
+    -0x1.37189fd23f9a7ac18ff4e4c5821e80bfp0,
+    -0x1.58ad80p1
+  },
+  { // Entry 613
+    0x1.37189fd23f9a7ac18ff4e4c5821e80bfp0,
+    0x1.58ad80p1
+  },
+  { // Entry 614
+    -0x1.2e6a794f37529d7b8c78438094df8560p0,
+    -0x1.37d9eep1
+  },
+  { // Entry 615
+    0x1.2e6a794f37529d7b8c78438094df8560p0,
+    0x1.37d9eep1
+  },
+  { // Entry 616
+    -0x1.2404c2150e76f6d23e4a514c77839926p0,
+    -0x1.17065cp1
+  },
+  { // Entry 617
+    0x1.2404c2150e76f6d23e4a514c77839926p0,
+    0x1.17065cp1
+  },
+  { // Entry 618
+    -0x1.1762c92d89f7b516e38b1fadbc7c1725p0,
+    -0x1.ec6594p0
+  },
+  { // Entry 619
+    0x1.1762c92d89f7b516e38b1fadbc7c1725p0,
+    0x1.ec6594p0
+  },
+  { // Entry 620
+    -0x1.07cc022a998cd36350736775629f7411p0,
+    -0x1.aabe70p0
+  },
+  { // Entry 621
+    0x1.07cc022a998cd36350736775629f7411p0,
+    0x1.aabe70p0
+  },
+  { // Entry 622
+    -0x1.e87d3ddf5d974d08f4dd58fe2cb62a75p-1,
+    -0x1.69174cp0
+  },
+  { // Entry 623
+    0x1.e87d3ddf5d974d08f4dd58fe2cb62a75p-1,
+    0x1.69174cp0
+  },
+  { // Entry 624
+    -0x1.b6adddfcb60791bdfa29e43ae237526cp-1,
+    -0x1.277028p0
+  },
+  { // Entry 625
+    0x1.b6adddfcb60791bdfa29e43ae237526cp-1,
+    0x1.277028p0
+  },
+  { // Entry 626
+    -0x1.76856ea18da195176e0ece2cba9470a9p-1,
+    -0x1.cb920ap-1
+  },
+  { // Entry 627
+    0x1.76856ea18da195176e0ece2cba9470a9p-1,
+    0x1.cb920ap-1
+  },
+  { // Entry 628
+    -0x1.23e72757057c5809379a3139ba87791dp-1,
+    -0x1.4843c4p-1
+  },
+  { // Entry 629
+    0x1.23e72757057c5809379a3139ba87791dp-1,
+    0x1.4843c4p-1
+  },
+  { // Entry 630
+    -0x1.780c6b4190a4c02ec686d865d59869c8p-2,
+    -0x1.89eafcp-2
+  },
+  { // Entry 631
+    0x1.780c6b4190a4c02ec686d865d59869c8p-2,
+    0x1.89eafcp-2
+  },
+  { // Entry 632
+    -0x1.052ffe90feb23c1016d89c3f01bc9e1fp-3,
+    -0x1.069ce0p-3
+  },
+  { // Entry 633
+    0x1.052ffe90feb23c1016d89c3f01bc9e1fp-3,
+    0x1.069ce0p-3
+  },
+  { // Entry 634
+    0x1.052f5948b6d5f860bd33815fb4292679p-3,
+    0x1.069c38p-3
+  },
+  { // Entry 635
+    -0x1.052f5948b6d5f860bd33815fb4292679p-3,
+    -0x1.069c38p-3
+  },
+  { // Entry 636
+    0x1.780c22159221d1976cc58c067c712c12p-2,
+    0x1.89eaa8p-2
+  },
+  { // Entry 637
+    -0x1.780c22159221d1976cc58c067c712c12p-2,
+    -0x1.89eaa8p-2
+  },
+  { // Entry 638
+    0x1.23e709933aec019daf9a653afa37bd56p-1,
+    0x1.48439ap-1
+  },
+  { // Entry 639
+    -0x1.23e709933aec019daf9a653afa37bd56p-1,
+    -0x1.48439ap-1
+  },
+  { // Entry 640
+    0x1.7685575f043fc937570fbcd679218a9ep-1,
+    0x1.cb91e0p-1
+  },
+  { // Entry 641
+    -0x1.7685575f043fc937570fbcd679218a9ep-1,
+    -0x1.cb91e0p-1
+  },
+  { // Entry 642
+    0x1.b6adccd55525b9c5503e0cdc8d37e90ep-1,
+    0x1.277014p0
+  },
+  { // Entry 643
+    -0x1.b6adccd55525b9c5503e0cdc8d37e90ep-1,
+    -0x1.277014p0
+  },
+  { // Entry 644
+    0x1.e87d307e1763e6189f33adfb0e8068c9p-1,
+    0x1.691738p0
+  },
+  { // Entry 645
+    -0x1.e87d307e1763e6189f33adfb0e8068c9p-1,
+    -0x1.691738p0
+  },
+  { // Entry 646
+    0x1.07cbfcdfaa6996b12b44434dca3635e9p0,
+    0x1.aabe5cp0
+  },
+  { // Entry 647
+    -0x1.07cbfcdfaa6996b12b44434dca3635e9p0,
+    -0x1.aabe5cp0
+  },
+  { // Entry 648
+    0x1.1762c4ec13567bd7f5f799b650139ef2p0,
+    0x1.ec6580p0
+  },
+  { // Entry 649
+    -0x1.1762c4ec13567bd7f5f799b650139ef2p0,
+    -0x1.ec6580p0
+  },
+  { // Entry 650
+    0x1.2404be9ae9b56a1e7b93aab429a437dcp0,
+    0x1.170652p1
+  },
+  { // Entry 651
+    -0x1.2404be9ae9b56a1e7b93aab429a437dcp0,
+    -0x1.170652p1
+  },
+  { // Entry 652
+    0x1.2e6a766d02ca49766b8c5e064edd330ap0,
+    0x1.37d9e4p1
+  },
+  { // Entry 653
+    -0x1.2e6a766d02ca49766b8c5e064edd330ap0,
+    -0x1.37d9e4p1
+  },
+  { // Entry 654
+    0x1.37189d65ba6a203671b78263ea59150ep0,
+    0x1.58ad76p1
+  },
+  { // Entry 655
+    -0x1.37189d65ba6a203671b78263ea59150ep0,
+    -0x1.58ad76p1
+  },
+  { // Entry 656
+    0x1.3e6fbb2131bc83fb7bb1680528d88125p0,
+    0x1.798108p1
+  },
+  { // Entry 657
+    -0x1.3e6fbb2131bc83fb7bb1680528d88125p0,
+    -0x1.798108p1
+  },
+  { // Entry 658
+    0x1.44b710cf357eefd513350249454692fep0,
+    0x1.9a549ap1
+  },
+  { // Entry 659
+    -0x1.44b710cf357eefd513350249454692fep0,
+    -0x1.9a549ap1
+  },
+  { // Entry 660
+    0x1.4a24076ac744c5d206c4362f0a81c539p0,
+    0x1.bb282cp1
+  },
+  { // Entry 661
+    -0x1.4a24076ac744c5d206c4362f0a81c539p0,
+    -0x1.bb282cp1
+  },
+  { // Entry 662
+    0x1.4edf4341eeb190f38d0f628df7c0f39cp0,
+    0x1.dbfbbep1
+  },
+  { // Entry 663
+    -0x1.4edf4341eeb190f38d0f628df7c0f39cp0,
+    -0x1.dbfbbep1
+  },
+  { // Entry 664
+    0x1.53082389d4de0bf0033c96e02e4ce915p0,
+    0x1.fccf50p1
+  },
+  { // Entry 665
+    -0x1.53082389d4de0bf0033c96e02e4ce915p0,
+    -0x1.fccf50p1
+  },
+  { // Entry 666
+    0x1.56b732f9ebf592c0c94096bc1ed28a6bp0,
+    0x1.0ed170p2
+  },
+  { // Entry 667
+    -0x1.56b732f9ebf592c0c94096bc1ed28a6bp0,
+    -0x1.0ed170p2
+  },
+  { // Entry 668
+    0x1.59ffe268d6801ace03f3d195dcfe7b03p0,
+    0x1.1f3b38p2
+  },
+  { // Entry 669
+    -0x1.59ffe268d6801ace03f3d195dcfe7b03p0,
+    -0x1.1f3b38p2
+  },
+  { // Entry 670
+    0x1.5cf1c510a2c51231c77aeb5bcfdb18f6p0,
+    0x1.2fa5p2
+  },
+  { // Entry 671
+    -0x1.5cf1c510a2c51231c77aeb5bcfdb18f6p0,
+    -0x1.2fa5p2
+  },
+  { // Entry 672
+    0x1.5f99775fdcea19d02889374d890664b5p0,
+    0x1.400ec8p2
+  },
+  { // Entry 673
+    -0x1.5f99775fdcea19d02889374d890664b5p0,
+    -0x1.400ec8p2
+  },
+  { // Entry 674
+    0x1.620148e37eeeed056aad41e79a62c2c1p0,
+    0x1.507890p2
+  },
+  { // Entry 675
+    -0x1.620148e37eeeed056aad41e79a62c2c1p0,
+    -0x1.507890p2
+  },
+  { // Entry 676
+    0x1.6431bb181361216275b0d203a9331c13p0,
+    0x1.60e258p2
+  },
+  { // Entry 677
+    -0x1.6431bb181361216275b0d203a9331c13p0,
+    -0x1.60e258p2
+  },
+  { // Entry 678
+    0x1.6631e1326b64f0282c465af90d9d3bd9p0,
+    0x1.714c20p2
+  },
+  { // Entry 679
+    -0x1.6631e1326b64f0282c465af90d9d3bd9p0,
+    -0x1.714c20p2
+  },
+  { // Entry 680
+    0x1.6807a948166caac881ad676127631903p0,
+    0x1.81b5e8p2
+  },
+  { // Entry 681
+    -0x1.6807a948166caac881ad676127631903p0,
+    -0x1.81b5e8p2
+  },
+  { // Entry 682
+    0x1.ef652bd0a90c724b11a56d2fd671af31p-5,
+    0x1.effffep-5
+  },
+  { // Entry 683
+    -0x1.ef652bd0a90c724b11a56d2fd671af31p-5,
+    -0x1.effffep-5
+  },
+  { // Entry 684
+    0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    0x1.f0p-5
+  },
+  { // Entry 685
+    -0x1.ef652dceca4dbeb14ee907159dd1c369p-5,
+    -0x1.f0p-5
+  },
+  { // Entry 686
+    0x1.ef652fcceb8f073ec7ec4e0d20bb7bfbp-5,
+    0x1.f00002p-5
+  },
+  { // Entry 687
+    -0x1.ef652fcceb8f073ec7ec4e0d20bb7bfbp-5,
+    -0x1.f00002p-5
+  },
+  { // Entry 688
+    0x1.f57aae2e668fcd953f95c1400b66f69ap-4,
+    0x1.f7fffep-4
+  },
+  { // Entry 689
+    -0x1.f57aae2e668fcd953f95c1400b66f69ap-4,
+    -0x1.f7fffep-4
+  },
+  { // Entry 690
+    0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    0x1.f8p-4
+  },
+  { // Entry 691
+    -0x1.f57ab026c3a8fc7b278a06e9d0c43e3ap-4,
+    -0x1.f8p-4
+  },
+  { // Entry 692
+    0x1.f57ab21f20c21c186f960384371cb174p-4,
+    0x1.f80002p-4
+  },
+  { // Entry 693
+    -0x1.f57ab21f20c21c186f960384371cb174p-4,
+    -0x1.f80002p-4
+  },
+  { // Entry 694
+    0x1.49230059e7c45adb8ec67bfb8e8a656bp-3,
+    0x1.4bfffep-3
+  },
+  { // Entry 695
+    -0x1.49230059e7c45adb8ec67bfb8e8a656bp-3,
+    -0x1.4bfffep-3
+  },
+  { // Entry 696
+    0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    0x1.4cp-3
+  },
+  { // Entry 697
+    -0x1.4923024ccb780f5a7e2ead4e2bd24d33p-3,
+    -0x1.4cp-3
+  },
+  { // Entry 698
+    0x1.4923043faf2b9c728ca66011aefa5d95p-3,
+    0x1.4c0002p-3
+  },
+  { // Entry 699
+    -0x1.4923043faf2b9c728ca66011aefa5d95p-3,
+    -0x1.4c0002p-3
+  },
+  { // Entry 700
+    0x1.2a73a5481536bc5af06b6df4531f2c45p-2,
+    0x1.333332p-2
+  },
+  { // Entry 701
+    -0x1.2a73a5481536bc5af06b6df4531f2c45p-2,
+    -0x1.333332p-2
+  },
+  { // Entry 702
+    0x1.2a73a71dcec15ae5ead00add4294e754p-2,
+    0x1.333334p-2
+  },
+  { // Entry 703
+    -0x1.2a73a71dcec15ae5ead00add4294e754p-2,
+    -0x1.333334p-2
+  },
+  { // Entry 704
+    0x1.2a73a8f3884b7828b0c0111255103dc3p-2,
+    0x1.333336p-2
+  },
+  { // Entry 705
+    -0x1.2a73a8f3884b7828b0c0111255103dc3p-2,
+    -0x1.333336p-2
+  },
+  { // Entry 706
+    0x1.2fc480fa0e88570eda20090113e29e36p-1,
+    0x1.594316p-1
+  },
+  { // Entry 707
+    -0x1.2fc480fa0e88570eda20090113e29e36p-1,
+    -0x1.594316p-1
+  },
+  { // Entry 708
+    0x1.2fc4825a02d3f974157fe3c500a7defbp-1,
+    0x1.594318p-1
+  },
+  { // Entry 709
+    -0x1.2fc4825a02d3f974157fe3c500a7defbp-1,
+    -0x1.594318p-1
+  },
+  { // Entry 710
+    0x1.2fc483b9f71e558d99929cc8e5da29dfp-1,
+    0x1.59431ap-1
+  },
+  { // Entry 711
+    -0x1.2fc483b9f71e558d99929cc8e5da29dfp-1,
+    -0x1.59431ap-1
+  },
+  { // Entry 712
+    0x1.538f567a9ef925d9ba9a4231046e7f2cp-1,
+    0x1.8ffffep-1
+  },
+  { // Entry 713
+    -0x1.538f567a9ef925d9ba9a4231046e7f2cp-1,
+    -0x1.8ffffep-1
+  },
+  { // Entry 714
+    0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    0x1.90p-1
+  },
+  { // Entry 715
+    -0x1.538f57b89061eb9122d5096b7cf267ebp-1,
+    -0x1.90p-1
+  },
+  { // Entry 716
+    0x1.538f58f681c97cc9bd5a1277e9e2f0fbp-1,
+    0x1.900002p-1
+  },
+  { // Entry 717
+    -0x1.538f58f681c97cc9bd5a1277e9e2f0fbp-1,
+    -0x1.900002p-1
+  },
+  { // Entry 718
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 719
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 720
+    0.0,
+    0.0
+  },
+  { // Entry 721
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 722
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 723
+    0x1.91cd2399d43fabf90187544276a9fdd6p-5,
+    0x1.921fb4p-5
+  },
+  { // Entry 724
+    -0x1.91cd2399d43fabf90187544276a9fdd6p-5,
+    -0x1.921fb4p-5
+  },
+  { // Entry 725
+    0x1.91cd2598992e3959b33089adc931af1bp-5,
+    0x1.921fb6p-5
+  },
+  { // Entry 726
+    -0x1.91cd2598992e3959b33089adc931af1bp-5,
+    -0x1.921fb6p-5
+  },
+  { // Entry 727
+    0x1.91cd27975e1cc39a020e1155956c974ep-5,
+    0x1.921fb8p-5
+  },
+  { // Entry 728
+    -0x1.91cd27975e1cc39a020e1155956c974ep-5,
+    -0x1.921fb8p-5
+  },
+  { // Entry 729
+    0x1.90d6de7dda04008932bb9dc6d6663dffp-4,
+    0x1.921fb4p-4
+  },
+  { // Entry 730
+    -0x1.90d6de7dda04008932bb9dc6d6663dffp-4,
+    -0x1.921fb4p-4
+  },
+  { // Entry 731
+    0x1.90d6e078f6c425534a52900d55c07c08p-4,
+    0x1.921fb6p-4
+  },
+  { // Entry 732
+    -0x1.90d6e078f6c425534a52900d55c07c08p-4,
+    -0x1.921fb6p-4
+  },
+  { // Entry 733
+    0x1.90d6e27413843dc984d6d696c18f157ap-4,
+    0x1.921fb8p-4
+  },
+  { // Entry 734
+    -0x1.90d6e27413843dc984d6d696c18f157ap-4,
+    -0x1.921fb8p-4
+  },
+  { // Entry 735
+    0x1.8d128d765c163bb2a4684b359bc37b4ap-3,
+    0x1.921fb4p-3
+  },
+  { // Entry 736
+    -0x1.8d128d765c163bb2a4684b359bc37b4ap-3,
+    -0x1.921fb4p-3
+  },
+  { // Entry 737
+    0x1.8d128f635a6f85e06f888e0887f9908fp-3,
+    0x1.921fb6p-3
+  },
+  { // Entry 738
+    -0x1.8d128f635a6f85e06f888e0887f9908fp-3,
+    -0x1.921fb6p-3
+  },
+  { // Entry 739
+    0x1.8d12915058c8a173e6b2d7c8cf5f012ap-3,
+    0x1.921fb8p-3
+  },
+  { // Entry 740
+    -0x1.8d12915058c8a173e6b2d7c8cf5f012ap-3,
+    -0x1.921fb8p-3
+  },
+  { // Entry 741
+    0x1.7f2d690b879f26b1634350104478a209p-2,
+    0x1.921fb4p-2
+  },
+  { // Entry 742
+    -0x1.7f2d690b879f26b1634350104478a209p-2,
+    -0x1.921fb4p-2
+  },
+  { // Entry 743
+    0x1.7f2d6ac71f4b19b38cf78bbadec1435ap-2,
+    0x1.921fb6p-2
+  },
+  { // Entry 744
+    -0x1.7f2d6ac71f4b19b38cf78bbadec1435ap-2,
+    -0x1.921fb6p-2
+  },
+  { // Entry 745
+    0x1.7f2d6c82b6f675c92c9dfa635f318ed7p-2,
+    0x1.921fb8p-2
+  },
+  { // Entry 746
+    -0x1.7f2d6c82b6f675c92c9dfa635f318ed7p-2,
+    -0x1.921fb8p-2
+  },
+  { // Entry 747
+    0x1.54e04b3d43589d0cc0bd332c6a822ecfp-1,
+    0x1.921fb4p-1
+  },
+  { // Entry 748
+    -0x1.54e04b3d43589d0cc0bd332c6a822ecfp-1,
+    -0x1.921fb4p-1
+  },
+  { // Entry 749
+    0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 750
+    -0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 751
+    0x1.54e04db697db56ae489f89986a14a1b7p-1,
+    0x1.921fb8p-1
+  },
+  { // Entry 752
+    -0x1.54e04db697db56ae489f89986a14a1b7p-1,
+    -0x1.921fb8p-1
+  },
+  { // Entry 753
+    0x1.00fe98214bd47b0727cef70af68aceeep0,
+    0x1.921fb4p0
+  },
+  { // Entry 754
+    -0x1.00fe98214bd47b0727cef70af68aceeep0,
+    -0x1.921fb4p0
+  },
+  { // Entry 755
+    0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    0x1.921fb6p0
+  },
+  { // Entry 756
+    -0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 757
+    0x1.00fe99489e458fdeaf9be968cab6da63p0,
+    0x1.921fb8p0
+  },
+  { // Entry 758
+    -0x1.00fe99489e458fdeaf9be968cab6da63p0,
+    -0x1.921fb8p0
+  },
+  { // Entry 759
+    0x1.433b89f683ed7fa5817d865f4f40b772p0,
+    0x1.921fb4p1
+  },
+  { // Entry 760
+    -0x1.433b89f683ed7fa5817d865f4f40b772p0,
+    -0x1.921fb4p1
+  },
+  { // Entry 761
+    0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 762
+    -0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 763
+    0x1.433b8ab2ee3f565d04344459852fbcf4p0,
+    0x1.921fb8p1
+  },
+  { // Entry 764
+    -0x1.433b8ab2ee3f565d04344459852fbcf4p0,
+    -0x1.921fb8p1
+  },
+  { // Entry 765
+    0x1.69b8152ba44a49cab381a82d3efbf702p0,
+    0x1.921fb4p2
+  },
+  { // Entry 766
+    -0x1.69b8152ba44a49cab381a82d3efbf702p0,
+    -0x1.921fb4p2
+  },
+  { // Entry 767
+    0x1.69b8155e3c934e6ce63a344b2956ab50p0,
+    0x1.921fb6p2
+  },
+  { // Entry 768
+    -0x1.69b8155e3c934e6ce63a344b2956ab50p0,
+    -0x1.921fb6p2
+  },
+  { // Entry 769
+    0x1.69b81590d4dbd567331c0dc4b7fd047bp0,
+    0x1.921fb8p2
+  },
+  { // Entry 770
+    -0x1.69b81590d4dbd567331c0dc4b7fd047bp0,
+    -0x1.921fb8p2
+  },
+  { // Entry 771
+    0x1.7dcb7c4be6b4be644d7db098c68e6e5ep0,
+    0x1.921fb4p3
+  },
+  { // Entry 772
+    -0x1.7dcb7c4be6b4be644d7db098c68e6e5ep0,
+    -0x1.921fb4p3
+  },
+  { // Entry 773
+    0x1.7dcb7c65ad1b3ccb7360f1b9b77bc510p0,
+    0x1.921fb6p3
+  },
+  { // Entry 774
+    -0x1.7dcb7c65ad1b3ccb7360f1b9b77bc510p0,
+    -0x1.921fb6p3
+  },
+  { // Entry 775
+    0x1.7dcb7c7f738179f9a5848bd2f6ea74p0,
+    0x1.921fb8p3
+  },
+  { // Entry 776
+    -0x1.7dcb7c7f738179f9a5848bd2f6ea74p0,
+    -0x1.921fb8p3
+  },
+  { // Entry 777
+    0x1.87f17cf56d5854572d8ed4b6d7629cb7p0,
+    0x1.921fb4p4
+  },
+  { // Entry 778
+    -0x1.87f17cf56d5854572d8ed4b6d7629cb7p0,
+    -0x1.921fb4p4
+  },
+  { // Entry 779
+    0x1.87f17d026030951388edff604c5b31acp0,
+    0x1.921fb6p4
+  },
+  { // Entry 780
+    -0x1.87f17d026030951388edff604c5b31acp0,
+    -0x1.921fb6p4
+  },
+  { // Entry 781
+    0x1.87f17d0f5308b4e40d66884bfda71f16p0,
+    0x1.921fb8p4
+  },
+  { // Entry 782
+    -0x1.87f17d0f5308b4e40d66884bfda71f16p0,
+    -0x1.921fb8p4
+  },
+  { // Entry 783
+    0x1.8d08152ac2c9f80510b67fe8688fe00bp0,
+    0x1.921fb4p5
+  },
+  { // Entry 784
+    -0x1.8d08152ac2c9f80510b67fe8688fe00bp0,
+    -0x1.921fb4p5
+  },
+  { // Entry 785
+    0x1.8d0815313e2db1236b7416aaf31784edp0,
+    0x1.921fb6p5
+  },
+  { // Entry 786
+    -0x1.8d0815313e2db1236b7416aaf31784edp0,
+    -0x1.921fb6p5
+  },
+  { // Entry 787
+    0x1.8d081537b99159c1d87b49089b46259bp0,
+    0x1.921fb8p5
+  },
+  { // Entry 788
+    -0x1.8d081537b99159c1d87b49089b46259bp0,
+    -0x1.921fb8p5
+  },
+  { // Entry 789
+    0x1.8f93d4b57dde1ae888776df959240a29p0,
+    0x1.921fb4p6
+  },
+  { // Entry 790
+    -0x1.8f93d4b57dde1ae888776df959240a29p0,
+    -0x1.921fb4p6
+  },
+  { // Entry 791
+    0x1.8f93d4b8bbcf027a20c8f2f1496ed581p0,
+    0x1.921fb6p6
+  },
+  { // Entry 792
+    -0x1.8f93d4b8bbcf027a20c8f2f1496ed581p0,
+    -0x1.921fb6p6
+  },
+  { // Entry 793
+    0x1.8f93d4bbf9bfe1ca81404ffb114601efp0,
+    0x1.921fb8p6
+  },
+  { // Entry 794
+    -0x1.8f93d4bbf9bfe1ca81404ffb114601efp0,
+    -0x1.921fb8p6
+  },
+  { // Entry 795
+    0x1.90d9c2ec819f17b4d8062df65c79686ep0,
+    0x1.921fb4p7
+  },
+  { // Entry 796
+    -0x1.90d9c2ec819f17b4d8062df65c79686ep0,
+    -0x1.921fb4p7
+  },
+  { // Entry 797
+    0x1.90d9c2ee209f6d9d910babe7f62e7a71p0,
+    0x1.921fb6p7
+  },
+  { // Entry 798
+    -0x1.90d9c2ee209f6d9d910babe7f62e7a71p0,
+    -0x1.921fb6p7
+  },
+  { // Entry 799
+    0x1.90d9c2efbf9fbf6585fe7f879e30cb27p0,
+    0x1.921fb8p7
+  },
+  { // Entry 800
+    -0x1.90d9c2efbf9fbf6585fe7f879e30cb27p0,
+    -0x1.921fb8p7
+  },
+  { // Entry 801
+    0x1.2b5f4a1f186a4f4cce84633d4e88c6e3p0,
+    0x1.2d97c4p1
+  },
+  { // Entry 802
+    -0x1.2b5f4a1f186a4f4cce84633d4e88c6e3p0,
+    -0x1.2d97c4p1
+  },
+  { // Entry 803
+    0x1.2b5f4abb6450cfe394b11d0190b012a2p0,
+    0x1.2d97c6p1
+  },
+  { // Entry 804
+    -0x1.2b5f4abb6450cfe394b11d0190b012a2p0,
+    -0x1.2d97c6p1
+  },
+  { // Entry 805
+    0x1.2b5f4b57b0358ecd5c4ef2cf8eeca8b5p0,
+    0x1.2d97c8p1
+  },
+  { // Entry 806
+    -0x1.2b5f4b57b0358ecd5c4ef2cf8eeca8b5p0,
+    -0x1.2d97c8p1
+  },
+  { // Entry 807
+    0x1.524a69ac739be8aa44819da2c46ddeffp0,
+    0x1.f6a7a0p1
+  },
+  { // Entry 808
+    -0x1.524a69ac739be8aa44819da2c46ddeffp0,
+    -0x1.f6a7a0p1
+  },
+  { // Entry 809
+    0x1.524a69eacf4f30dd7930094c2c5422fap0,
+    0x1.f6a7a2p1
+  },
+  { // Entry 810
+    -0x1.524a69eacf4f30dd7930094c2c5422fap0,
+    -0x1.f6a7a2p1
+  },
+  { // Entry 811
+    0x1.524a6a292b0201c41df76f9856ea793ep0,
+    0x1.f6a7a4p1
+  },
+  { // Entry 812
+    -0x1.524a6a292b0201c41df76f9856ea793ep0,
+    -0x1.f6a7a4p1
+  },
+  { // Entry 813
+    0x1.5c97d2cf4d47c39e1d3362c5c6cb465ep0,
+    0x1.2d97c4p2
+  },
+  { // Entry 814
+    -0x1.5c97d2cf4d47c39e1d3362c5c6cb465ep0,
+    -0x1.2d97c4p2
+  },
+  { // Entry 815
+    0x1.5c97d3278d78828714e1db373c01c428p0,
+    0x1.2d97c6p2
+  },
+  { // Entry 816
+    -0x1.5c97d3278d78828714e1db373c01c428p0,
+    -0x1.2d97c6p2
+  },
+  { // Entry 817
+    0x1.5c97d37fcda822b612cc305acdb3719ap0,
+    0x1.2d97c8p2
+  },
+  { // Entry 818
+    -0x1.5c97d37fcda822b612cc305acdb3719ap0,
+    -0x1.2d97c8p2
+  },
+  { // Entry 819
+    0x1.64102f6fe89978879ec1eb938127f347p0,
+    0x1.5fdbbcp2
+  },
+  { // Entry 820
+    -0x1.64102f6fe89978879ec1eb938127f347p0,
+    -0x1.5fdbbcp2
+  },
+  { // Entry 821
+    0x1.64102fb17ee4bd784c0bc3c4b87b12dbp0,
+    0x1.5fdbbep2
+  },
+  { // Entry 822
+    -0x1.64102fb17ee4bd784c0bc3c4b87b12dbp0,
+    -0x1.5fdbbep2
+  },
+  { // Entry 823
+    0x1.64102ff3152f49a5b25bbbed0e298789p0,
+    0x1.5fdbc0p2
+  },
+  { // Entry 824
+    -0x1.64102ff3152f49a5b25bbbed0e298789p0,
+    -0x1.5fdbc0p2
+  },
+  { // Entry 825
+    0x1.6e256157f08af28f8fbcb2f100b427b2p0,
+    0x1.c463a8p2
+  },
+  { // Entry 826
+    -0x1.6e256157f08af28f8fbcb2f100b427b2p0,
+    -0x1.c463a8p2
+  },
+  { // Entry 827
+    0x1.6e2561801fc98949e471b87dd9e165adp0,
+    0x1.c463aap2
+  },
+  { // Entry 828
+    -0x1.6e2561801fc98949e471b87dd9e165adp0,
+    -0x1.c463aap2
+  },
+  { // Entry 829
+    0x1.6e2561a84f07c6d78f351f778ca48ee1p0,
+    0x1.c463acp2
+  },
+  { // Entry 830
+    -0x1.6e2561a84f07c6d78f351f778ca48ee1p0,
+    -0x1.c463acp2
+  },
+  { // Entry 831
+    0x1.71b40fe4d6264f6dcb5aa93d81eee334p0,
+    0x1.f6a7a0p2
+  },
+  { // Entry 832
+    -0x1.71b40fe4d6264f6dcb5aa93d81eee334p0,
+    -0x1.f6a7a0p2
+  },
+  { // Entry 833
+    0x1.71b4100581ff6df4d0e43adc1c6df394p0,
+    0x1.f6a7a2p2
+  },
+  { // Entry 834
+    -0x1.71b4100581ff6df4d0e43adc1c6df394p0,
+    -0x1.f6a7a2p2
+  },
+  { // Entry 835
+    0x1.71b410262dd84afcf6128b00223864d4p0,
+    0x1.f6a7a4p2
+  },
+  { // Entry 836
+    -0x1.71b410262dd84afcf6128b00223864d4p0,
+    -0x1.f6a7a4p2
+  },
+  { // Entry 837
+    0x1.749f95c28655e27185bdf7611bf6dabap0,
+    0x1.1475cap3
+  },
+  { // Entry 838
+    -0x1.749f95c28655e27185bdf7611bf6dabap0,
+    -0x1.1475cap3
+  },
+  { // Entry 839
+    0x1.749f95f8ad42bfc84cd821638d05272ep0,
+    0x1.1475ccp3
+  },
+  { // Entry 840
+    -0x1.749f95f8ad42bfc84cd821638d05272ep0,
+    -0x1.1475ccp3
+  },
+  { // Entry 841
+    0x1.749f962ed42ed732156103090043fe20p0,
+    0x1.1475cep3
+  },
+  { // Entry 842
+    -0x1.749f962ed42ed732156103090043fe20p0,
+    -0x1.1475cep3
+  },
+  { // Entry 843
+    0x1.77100a61d11bd3683ef7f13e0e2d3714p0,
+    0x1.2d97c4p3
+  },
+  { // Entry 844
+    -0x1.77100a61d11bd3683ef7f13e0e2d3714p0,
+    -0x1.2d97c4p3
+  },
+  { // Entry 845
+    0x1.77100a8f6a77d25e60c8ac6b368ced7cp0,
+    0x1.2d97c6p3
+  },
+  { // Entry 846
+    -0x1.77100a8f6a77d25e60c8ac6b368ced7cp0,
+    -0x1.2d97c6p3
+  },
+  { // Entry 847
+    0x1.77100abd03d3383b200c349a288d0858p0,
+    0x1.2d97c8p3
+  },
+  { // Entry 848
+    -0x1.77100abd03d3383b200c349a288d0858p0,
+    -0x1.2d97c8p3
+  },
+  { // Entry 849
+    0x1.79216b54e7690f5dc60c9f9ad18c2fe4p0,
+    0x1.46b9c0p3
+  },
+  { // Entry 850
+    -0x1.79216b54e7690f5dc60c9f9ad18c2fe4p0,
+    -0x1.46b9c0p3
+  },
+  { // Entry 851
+    0x1.79216b7bd2590ebc8160a2e2288b213cp0,
+    0x1.46b9c2p3
+  },
+  { // Entry 852
+    -0x1.79216b7bd2590ebc8160a2e2288b213cp0,
+    -0x1.46b9c2p3
+  },
+  { // Entry 853
+    0x1.79216ba2bd48954acc47fb24366389dcp0,
+    0x1.46b9c4p3
+  },
+  { // Entry 854
+    -0x1.79216ba2bd48954acc47fb24366389dcp0,
+    -0x1.46b9c4p3
+  },
+  { // Entry 855
+    0x1.7ae7d7b9fff1b8fc1a190cb09ec19212p0,
+    0x1.5fdbbcp3
+  },
+  { // Entry 856
+    -0x1.7ae7d7b9fff1b8fc1a190cb09ec19212p0,
+    -0x1.5fdbbcp3
+  },
+  { // Entry 857
+    0x1.7ae7d7db99b1b48f74a47550dd2775fbp0,
+    0x1.5fdbbep3
+  },
+  { // Entry 858
+    -0x1.7ae7d7db99b1b48f74a47550dd2775fbp0,
+    -0x1.5fdbbep3
+  },
+  { // Entry 859
+    0x1.7ae7d7fd33714f26d256bae7b8da269cp0,
+    0x1.5fdbc0p3
+  },
+  { // Entry 860
+    -0x1.7ae7d7fd33714f26d256bae7b8da269cp0,
+    -0x1.5fdbc0p3
+  },
+  { // Entry 861
+    0x1.7c72243c821084a80ce5911f6e3dea5dp0,
+    0x1.78fdb6p3
+  },
+  { // Entry 862
+    -0x1.7c72243c821084a80ce5911f6e3dea5dp0,
+    -0x1.78fdb6p3
+  },
+  { // Entry 863
+    0x1.7c722459cf137ac258c3b7237604e08ep0,
+    0x1.78fdb8p3
+  },
+  { // Entry 864
+    -0x1.7c722459cf137ac258c3b7237604e08ep0,
+    -0x1.78fdb8p3
+  },
+  { // Entry 865
+    0x1.7c7224771c1621d7d010891cc6cbd91ep0,
+    0x1.78fdbap3
+  },
+  { // Entry 866
+    -0x1.7c7224771c1621d7d010891cc6cbd91ep0,
+    -0x1.78fdbap3
+  },
+  { // Entry 867
+    0x1.7efc70fef0079d0f48b6d9402b26d905p0,
+    0x1.ab41aep3
+  },
+  { // Entry 868
+    -0x1.7efc70fef0079d0f48b6d9402b26d905p0,
+    -0x1.ab41aep3
+  },
+  { // Entry 869
+    0x1.7efc7115c92ed7b4199c4707127cb54bp0,
+    0x1.ab41b0p3
+  },
+  { // Entry 870
+    -0x1.7efc7115c92ed7b4199c4707127cb54bp0,
+    -0x1.ab41b0p3
+  },
+  { // Entry 871
+    0x1.7efc712ca255dbe487b8a2707e7c0319p0,
+    0x1.ab41b2p3
+  },
+  { // Entry 872
+    -0x1.7efc712ca255dbe487b8a2707e7c0319p0,
+    -0x1.ab41b2p3
+  },
+  { // Entry 873
+    0x1.800bb137f9715ad622aff2aea130dce0p0,
+    0x1.c463a8p3
+  },
+  { // Entry 874
+    -0x1.800bb137f9715ad622aff2aea130dce0p0,
+    -0x1.c463a8p3
+  },
+  { // Entry 875
+    0x1.800bb14c5de3a50924516807a2acf3fep0,
+    0x1.c463aap3
+  },
+  { // Entry 876
+    -0x1.800bb14c5de3a50924516807a2acf3fep0,
+    -0x1.c463aap3
+  },
+  { // Entry 877
+    0x1.800bb160c255c14e4e27ff1409d422e3p0,
+    0x1.c463acp3
+  },
+  { // Entry 878
+    -0x1.800bb160c255c14e4e27ff1409d422e3p0,
+    -0x1.c463acp3
+  },
+  { // Entry 879
+    0x1.80fe86936790bcf875c5fe2fb547d565p0,
+    0x1.dd85a4p3
+  },
+  { // Entry 880
+    -0x1.80fe86936790bcf875c5fe2fb547d565p0,
+    -0x1.dd85a4p3
+  },
+  { // Entry 881
+    0x1.80fe86a5b758117d0d5619d06ab27318p0,
+    0x1.dd85a6p3
+  },
+  { // Entry 882
+    -0x1.80fe86a5b758117d0d5619d06ab27318p0,
+    -0x1.dd85a6p3
+  },
+  { // Entry 883
+    0x1.80fe86b8071f3eea18b5b73ff7f2e4a9p0,
+    0x1.dd85a8p3
+  },
+  { // Entry 884
+    -0x1.80fe86b8071f3eea18b5b73ff7f2e4a9p0,
+    -0x1.dd85a8p3
+  },
+  { // Entry 885
+    0x1.81d92dd9caf1328bc6b375143237cb0fp0,
+    0x1.f6a7a0p3
+  },
+  { // Entry 886
+    -0x1.81d92dd9caf1328bc6b375143237cb0fp0,
+    -0x1.f6a7a0p3
+  },
+  { // Entry 887
+    0x1.81d92dea5381d18436c91dc15fbc646dp0,
+    0x1.f6a7a2p3
+  },
+  { // Entry 888
+    -0x1.81d92dea5381d18436c91dc15fbc646dp0,
+    -0x1.f6a7a2p3
+  },
+  { // Entry 889
+    0x1.81d92dfadc124ef0f2477e36e6f68f74p0,
+    0x1.f6a7a4p3
+  },
+  { // Entry 890
+    -0x1.81d92dfadc124ef0f2477e36e6f68f74p0,
+    -0x1.f6a7a4p3
+  },
+  { // Entry 891
+    0x1.829f168f2426e5aaade6af4c5fde890ap0,
+    0x1.07e4ccp4
+  },
+  { // Entry 892
+    -0x1.829f168f2426e5aaade6af4c5fde890ap0,
+    -0x1.07e4ccp4
+  },
+  { // Entry 893
+    0x1.829f16ad2528616b825b97261b82b069p0,
+    0x1.07e4cep4
+  },
+  { // Entry 894
+    -0x1.829f16ad2528616b825b97261b82b069p0,
+    -0x1.07e4cep4
+  },
+  { // Entry 895
+    0x1.829f16cb2629692c853c96842a0be987p0,
+    0x1.07e4d0p4
+  },
+  { // Entry 896
+    -0x1.829f16cb2629692c853c96842a0be987p0,
+    -0x1.07e4d0p4
+  },
+  { // Entry 897
+    0x1.835311a12459455ac82eb15660927ea8p0,
+    0x1.1475cap4
+  },
+  { // Entry 898
+    -0x1.835311a12459455ac82eb15660927ea8p0,
+    -0x1.1475cap4
+  },
+  { // Entry 899
+    0x1.835311bc7d3a944a470489a7e4d79c89p0,
+    0x1.1475ccp4
+  },
+  { // Entry 900
+    -0x1.835311bc7d3a944a470489a7e4d79c89p0,
+    -0x1.1475ccp4
+  },
+  { // Entry 901
+    0x1.835311d7d61b7e454afbda6fc3780f9bp0,
+    0x1.1475cep4
+  },
+  { // Entry 902
+    -0x1.835311d7d61b7e454afbda6fc3780f9bp0,
+    -0x1.1475cep4
+  },
+  { // Entry 903
+    0x1.83f772fb8c656bf286bfb98e1b6c2297p0,
+    0x1.2106c8p4
+  },
+  { // Entry 904
+    -0x1.83f772fb8c656bf286bfb98e1b6c2297p0,
+    -0x1.2106c8p4
+  },
+  { // Entry 905
+    0x1.83f77314938eb6f209e9d6f162ceb218p0,
+    0x1.2106cap4
+  },
+  { // Entry 906
+    -0x1.83f77314938eb6f209e9d6f162ceb218p0,
+    -0x1.2106cap4
+  },
+  { // Entry 907
+    0x1.83f7732d9ab7a98acc60db819db81050p0,
+    0x1.2106ccp4
+  },
+  { // Entry 908
+    -0x1.83f7732d9ab7a98acc60db819db81050p0,
+    -0x1.2106ccp4
+  },
+  { // Entry 909
+    0x1.848e2bbf112b7c2876657a2a86df9912p0,
+    0x1.2d97c4p4
+  },
+  { // Entry 910
+    -0x1.848e2bbf112b7c2876657a2a86df9912p0,
+    -0x1.2d97c4p4
+  },
+  { // Entry 911
+    0x1.848e2bd60efe2b9612b5fc806fd418d9p0,
+    0x1.2d97c6p4
+  },
+  { // Entry 912
+    -0x1.848e2bd60efe2b9612b5fc806fd418d9p0,
+    -0x1.2d97c6p4
+  },
+  { // Entry 913
+    0x1.848e2bed0cd08d2b9a9efc0954153c48p0,
+    0x1.2d97c8p4
+  },
+  { // Entry 914
+    -0x1.848e2bed0cd08d2b9a9efc0954153c48p0,
+    -0x1.2d97c8p4
+  },
+  { // Entry 915
+    0x1.8518de24fb5e23b2ff0cc417b338f410p0,
+    0x1.3a28c2p4
+  },
+  { // Entry 916
+    -0x1.8518de24fb5e23b2ff0cc417b338f410p0,
+    -0x1.3a28c2p4
+  },
+  { // Entry 917
+    0x1.8518de3a2cef8f1d8eb840c195f7aec6p0,
+    0x1.3a28c4p4
+  },
+  { // Entry 918
+    -0x1.8518de3a2cef8f1d8eb840c195f7aec6p0,
+    -0x1.3a28c4p4
+  },
+  { // Entry 919
+    0x1.8518de4f5e80b5a144ccb442286993f2p0,
+    0x1.3a28c6p4
+  },
+  { // Entry 920
+    -0x1.8518de4f5e80b5a144ccb442286993f2p0,
+    -0x1.3a28c6p4
+  },
+  { // Entry 921
+    0x1.8598ec14f4559fb7ce6f97f8b0ce9772p0,
+    0x1.46b9c0p4
+  },
+  { // Entry 922
+    -0x1.8598ec14f4559fb7ce6f97f8b0ce9772p0,
+    -0x1.46b9c0p4
+  },
+  { // Entry 923
+    0x1.8598ec288d8e61a24f31637379503fc5p0,
+    0x1.46b9c2p4
+  },
+  { // Entry 924
+    -0x1.8598ec288d8e61a24f31637379503fc5p0,
+    -0x1.46b9c2p4
+  },
+  { // Entry 925
+    0x1.8598ec3c26c6e645d117b0b4d0b90716p0,
+    0x1.46b9c4p4
+  },
+  { // Entry 926
+    -0x1.8598ec3c26c6e645d117b0b4d0b90716p0,
+    -0x1.46b9c4p4
+  },
+  { // Entry 927
+    0x1.860f835398d37040ddc2d7017bf92099p0,
+    0x1.534abep4
+  },
+  { // Entry 928
+    -0x1.860f835398d37040ddc2d7017bf92099p0,
+    -0x1.534abep4
+  },
+  { // Entry 929
+    0x1.860f8365c617d586a14b44930af2704ap0,
+    0x1.534ac0p4
+  },
+  { // Entry 930
+    -0x1.860f8365c617d586a14b44930af2704ap0,
+    -0x1.534ac0p4
+  },
+  { // Entry 931
+    0x1.860f8377f35c040fc41230db2834a379p0,
+    0x1.534ac2p4
+  },
+  { // Entry 932
+    -0x1.860f8377f35c040fc41230db2834a379p0,
+    -0x1.534ac2p4
+  },
+  { // Entry 933
+    0x1.867da6b26f9ac2fa4c1d70b7532cb6aep0,
+    0x1.5fdbbcp4
+  },
+  { // Entry 934
+    -0x1.867da6b26f9ac2fa4c1d70b7532cb6aep0,
+    -0x1.5fdbbcp4
+  },
+  { // Entry 935
+    0x1.867da6c3571aaf0e97b75fd8102e312ap0,
+    0x1.5fdbbep4
+  },
+  { // Entry 936
+    -0x1.867da6c3571aaf0e97b75fd8102e312ap0,
+    -0x1.5fdbbep4
+  },
+  { // Entry 937
+    0x1.867da6d43e9a6a0ab844221559e0ca4ep0,
+    0x1.5fdbc0p4
+  },
+  { // Entry 938
+    -0x1.867da6d43e9a6a0ab844221559e0ca4ep0,
+    -0x1.5fdbc0p4
+  },
+  { // Entry 939
+    0x1.86e4356f9805898eff739bee09b0eb2bp0,
+    0x1.6c6cbap4
+  },
+  { // Entry 940
+    -0x1.86e4356f9805898eff739bee09b0eb2bp0,
+    -0x1.6c6cbap4
+  },
+  { // Entry 941
+    0x1.86e4357f5ac86b81453a4b9f1ab42ac2p0,
+    0x1.6c6cbcp4
+  },
+  { // Entry 942
+    -0x1.86e4357f5ac86b81453a4b9f1ab42ac2p0,
+    -0x1.6c6cbcp4
+  },
+  { // Entry 943
+    0x1.86e4358f1d8b21400c5273ab23322cc4p0,
+    0x1.6c6cbep4
+  },
+  { // Entry 944
+    -0x1.86e4358f1d8b21400c5273ab23322cc4p0,
+    -0x1.6c6cbep4
+  },
+  { // Entry 945
+    0x1.8743f10efa639eaaf405e83f84a991bbp0,
+    0x1.78fdb6p4
+  },
+  { // Entry 946
+    -0x1.8743f10efa639eaaf405e83f84a991bbp0,
+    -0x1.78fdb6p4
+  },
+  { // Entry 947
+    0x1.8743f11db5201e00fba3693129ceaaadp0,
+    0x1.78fdb8p4
+  },
+  { // Entry 948
+    -0x1.8743f11db5201e00fba3693129ceaaadp0,
+    -0x1.78fdb8p4
+  },
+  { // Entry 949
+    0x1.8743f12c6fdc75672ff29ccd6d6423ccp0,
+    0x1.78fdbap4
+  },
+  { // Entry 950
+    -0x1.8743f12c6fdc75672ff29ccd6d6423ccp0,
+    -0x1.78fdbap4
+  },
+  { // Entry 951
+    0x1.879d825ab3fe49f711b2fa09df2c5726p0,
+    0x1.858eb4p4
+  },
+  { // Entry 952
+    -0x1.879d825ab3fe49f711b2fa09df2c5726p0,
+    -0x1.858eb4p4
+  },
+  { // Entry 953
+    0x1.879d82687fc876212b8475e64de596a4p0,
+    0x1.858eb6p4
+  },
+  { // Entry 954
+    -0x1.879d82687fc876212b8475e64de596a4p0,
+    -0x1.858eb6p4
+  },
+  { // Entry 955
+    0x1.879d82764b927e1728ed144f2db217ebp0,
+    0x1.858eb8p4
+  },
+  { // Entry 956
+    -0x1.879d82764b927e1728ed144f2db217ebp0,
+    -0x1.858eb8p4
+  },
+  { // Entry 957
+    0x1.921fb54442d18467898cc31701b639a2p0,
+    0x1.fffffep62
+  },
+  { // Entry 958
+    -0x1.921fb54442d18467898cc31701b639a2p0,
+    -0x1.fffffep62
+  },
+  { // Entry 959
+    0x1.921fb54442d18467898cc51701b839a2p0,
+    0x1.p63
+  },
+  { // Entry 960
+    -0x1.921fb54442d18467898cc51701b839a2p0,
+    -0x1.p63
+  },
+  { // Entry 961
+    0x1.921fb54442d18467898cc91701b039a2p0,
+    0x1.000002p63
+  },
+  { // Entry 962
+    -0x1.921fb54442d18467898cc91701b039a2p0,
+    -0x1.000002p63
+  },
+  { // Entry 963
+    0x1.921fb52442d16469896cefc18ce2e42dp0,
+    0x1.fffffep26
+  },
+  { // Entry 964
+    -0x1.921fb52442d16469896cefc18ce2e42dp0,
+    -0x1.fffffep26
+  },
+  { // Entry 965
+    0x1.921fb52442d18469898cefc1ac62e44cp0,
+    0x1.p27
+  },
+  { // Entry 966
+    -0x1.921fb52442d18469898cefc1ac62e44cp0,
+    -0x1.p27
+  },
+  { // Entry 967
+    0x1.921fb52442d1c469890cefc2ab62e250p0,
+    0x1.000002p27
+  },
+  { // Entry 968
+    -0x1.921fb52442d1c469890cefc2ab62e250p0,
+    -0x1.000002p27
+  },
+  { // Entry 969
+    0x1.921fb44442d0846988e21a6c570d8fc4p0,
+    0x1.fffffep23
+  },
+  { // Entry 970
+    -0x1.921fb44442d0846988e21a6c570d8fc4p0,
+    -0x1.fffffep23
+  },
+  { // Entry 971
+    0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    0x1.p24
+  },
+  { // Entry 972
+    -0x1.921fb44442d1846989e21a6c570d8ec4p0,
+    -0x1.p24
+  },
+  { // Entry 973
+    0x1.921fb44442d3846985e21a72570d86c4p0,
+    0x1.000002p24
+  },
+  { // Entry 974
+    -0x1.921fb44442d3846985e21a72570d86c4p0,
+    -0x1.000002p24
+  },
+  { // Entry 975
+    0x1.5368c915ad9354b6c80847a9f514bb75p0,
+    0x1.fffffep1
+  },
+  { // Entry 976
+    -0x1.5368c915ad9354b6c80847a9f514bb75p0,
+    -0x1.fffffep1
+  },
+  { // Entry 977
+    0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    0x1.p2
+  },
+  { // Entry 978
+    -0x1.5368c951e9cfc9a42e1add5983cfb3a8p0,
+    -0x1.p2
+  },
+  { // Entry 979
+    0x1.5368c9ca62475f5801ace2839c235895p0,
+    0x1.000002p2
+  },
+  { // Entry 980
+    -0x1.5368c9ca62475f5801ace2839c235895p0,
+    -0x1.000002p2
+  },
+  { // Entry 981
+    0x1.1b6e18c8557d8e74e5d9704acf91aa45p0,
+    0x1.fffffep0
+  },
+  { // Entry 982
+    -0x1.1b6e18c8557d8e74e5d9704acf91aa45p0,
+    -0x1.fffffep0
+  },
+  { // Entry 983
+    0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    0x1.p1
+  },
+  { // Entry 984
+    -0x1.1b6e192ebbe446c6d19aa220a39af320p0,
+    -0x1.p1
+  },
+  { // Entry 985
+    0x1.1b6e19fb88afcbe58bcd268e23897be3p0,
+    0x1.000002p1
+  },
+  { // Entry 986
+    -0x1.1b6e19fb88afcbe58bcd268e23897be3p0,
+    -0x1.000002p1
+  },
+  { // Entry 987
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 988
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 989
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0
+  },
+  { // Entry 990
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0
+  },
+  { // Entry 991
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p0
+  },
+  { // Entry 992
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p0
+  },
+  { // Entry 993
+    0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 994
+    -0x1.dac66ebc821b0b05c115b007ee262f78p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 995
+    0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    0x1.p-1
+  },
+  { // Entry 996
+    -0x1.dac670561bb4f68adfc88bd978751a06p-2,
+    -0x1.p-1
+  },
+  { // Entry 997
+    0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    0x1.000002p-1
+  },
+  { // Entry 998
+    -0x1.dac673894ee6e20ffe552cf613035e41p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 999
+    0x1.f5b75db0e62bd7f064e3887809ade7efp-3,
+    0x1.fffffep-3
+  },
+  { // Entry 1000
+    -0x1.f5b75db0e62bd7f064e3887809ade7efp-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 1001
+    0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    0x1.p-2
+  },
+  { // Entry 1002
+    -0x1.f5b75f92c80dd62adb8f3debef442fcbp-3,
+    -0x1.p-2
+  },
+  { // Entry 1003
+    0x1.f5b763568bd1288c4bd4fecdaee28fb5p-3,
+    0x1.000002p-2
+  },
+  { // Entry 1004
+    -0x1.f5b763568bd1288c4bd4fecdaee28fb5p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 1005
+    0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 1006
+    -0x1.fd5ba7b2a374dc8497123b64b398aae2p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 1007
+    0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    0x1.p-3
+  },
+  { // Entry 1008
+    -0x1.fd5ba9aac2f6dc65912f313e7d111defp-4,
+    -0x1.p-3
+  },
+  { // Entry 1009
+    0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    0x1.000002p-3
+  },
+  { // Entry 1010
+    -0x1.fd5bad9b01faad9eb46ef9bda99d4fdap-4,
+    -0x1.000002p-3
+  },
+  { // Entry 1011
+    0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 1012
+    -0x1.ff55b974cde098738e59c07aa48dd110p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 1013
+    0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    0x1.p-4
+  },
+  { // Entry 1014
+    -0x1.ff55bb72cfde9c6d964f25b81c5c1aa2p-5,
+    -0x1.p-4
+  },
+  { // Entry 1015
+    0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    0x1.000002p-4
+  },
+  { // Entry 1016
+    -0x1.ff55bf6ed3da98798265cc3f27c896c7p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 1017
+    0x1.ffd559bb174252032fa3014c0671336cp-6,
+    0x1.fffffep-6
+  },
+  { // Entry 1018
+    -0x1.ffd559bb174252032fa3014c0671336cp-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 1019
+    0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    0x1.p-5
+  },
+  { // Entry 1020
+    -0x1.ffd55bba97624a84ef3aeedbb518c427p-6,
+    -0x1.p-5
+  },
+  { // Entry 1021
+    0x1.ffd55fb997a23889edd9fb6b2758a63ep-6,
+    0x1.000002p-5
+  },
+  { // Entry 1022
+    -0x1.ffd55fb997a23889edd9fb6b2758a63ep-6,
+    -0x1.000002p-5
+  },
+  { // Entry 1023
+    0x1.fff553bbd727ab77d118772cd6b96490p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 1024
+    -0x1.fff553bbd727ab77d118772cd6b96490p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 1025
+    0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    0x1.p-6
+  },
+  { // Entry 1026
+    -0x1.fff555bbb729ab77cf18ac802beec090p-7,
+    -0x1.p-6
+  },
+  { // Entry 1027
+    0x1.fff559bb772daab7e316976eceda5473p-7,
+    0x1.000002p-6
+  },
+  { // Entry 1028
+    -0x1.fff559bb772daab7e316976eceda5473p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 1029
+    0x1.fffffdf5555575bbbb99b72981620cfcp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 1030
+    -0x1.fffffdf5555575bbbb99b72981620cfcp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 1031
+    0x1.fffffff5555555bbbbbbb72972976256p-15,
+    0x1.p-14
+  },
+  { // Entry 1032
+    -0x1.fffffff5555555bbbbbbb72972976256p-15,
+    -0x1.p-14
+  },
+  { // Entry 1033
+    0x1.000001faaaaa8adddd9fdb949681068fp-14,
+    0x1.000002p-14
+  },
+  { // Entry 1034
+    -0x1.000001faaaaa8adddd9fdb949681068fp-14,
+    -0x1.000002p-14
+  },
+  { // Entry 1035
+    0x1.fffffdfffffffd55555d55554d5bbbbep-28,
+    0x1.fffffep-28
+  },
+  { // Entry 1036
+    -0x1.fffffdfffffffd55555d55554d5bbbbep-28,
+    -0x1.fffffep-28
+  },
+  { // Entry 1037
+    0x1.fffffffffffffd5555555555555bbbbbp-28,
+    0x1.p-27
+  },
+  { // Entry 1038
+    -0x1.fffffffffffffd5555555555555bbbbbp-28,
+    -0x1.p-27
+  },
+  { // Entry 1039
+    0x1.000001fffffffeaaaaa2aaaa9aadddd3p-27,
+    0x1.000002p-27
+  },
+  { // Entry 1040
+    -0x1.000001fffffffeaaaaa2aaaa9aadddd3p-27,
+    -0x1.000002p-27
+  },
+  { // Entry 1041
+    0x1.fffffdfffffffff555557555553555bbp-31,
+    0x1.fffffep-31
+  },
+  { // Entry 1042
+    -0x1.fffffdfffffffff555557555553555bbp-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 1043
+    0x1.fffffffffffffff555555555555555bbp-31,
+    0x1.p-30
+  },
+  { // Entry 1044
+    -0x1.fffffffffffffff555555555555555bbp-31,
+    -0x1.p-30
+  },
+  { // Entry 1045
+    0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    0x1.000002p-30
+  },
+  { // Entry 1046
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaddp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 1047
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1048
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1049
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1050
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1051
+    0x1.921fb54442d18469898cc51701b839a2p0,
+    HUGE_VALF
+  },
+  { // Entry 1052
+    -0x1.921fb54442d18469898cc51701b839a2p0,
+    -HUGE_VALF
+  },
+  { // Entry 1053
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffep127
+  },
+  { // Entry 1054
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffep127
+  },
+  { // Entry 1055
+    0x1.921fb54442d18469898cc51701b839a1p0,
+    0x1.fffffcp127
+  },
+  { // Entry 1056
+    -0x1.921fb54442d18469898cc51701b839a1p0,
+    -0x1.fffffcp127
+  },
+  { // Entry 1057
+    0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 1058
+    -0x1.433b8a54b916d7eb27cee6293066e9f6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 1059
+    0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    0x1.921fb6p0
+  },
+  { // Entry 1060
+    -0x1.00fe98b4f50d8b3c36b9e2a180d97eeap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 1061
+    0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    0x1.000002p0
+  },
+  { // Entry 1062
+    -0x1.921fb74442cf84698ae21a6c570d8d5ep-1,
+    -0x1.000002p0
+  },
+  { // Entry 1063
+    0x1.921fb54442d18469898cc51701b839a2p-1,
+    0x1.p0
+  },
+  { // Entry 1064
+    -0x1.921fb54442d18469898cc51701b839a2p-1,
+    -0x1.p0
+  },
+  { // Entry 1065
+    0x1.921fb44442d1046989621a6c570d8f04p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 1066
+    -0x1.921fb44442d1046989621a6c570d8f04p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 1067
+    0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 1068
+    -0x1.54e04c79ed9a93b01c6a9062dbd8e0ffp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 1069
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 1070
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 1071
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 1072
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 1073
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1074
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1075
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 1076
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 1077
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 1078
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 1079
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1080
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1081
+    0.0,
+    0.0f
+  },
+  { // Entry 1082
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/atanh_intel_data.h b/tests/math_data/atanh_intel_data.h
new file mode 100644
index 0000000..6b6808b
--- /dev/null
+++ b/tests/math_data/atanh_intel_data.h
@@ -0,0 +1,2458 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_atanh_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2
+    -0x1.33c537256ac26ea1b8865a026e72c752p-1,
+    -0x1.136p-1
+  },
+  { // Entry 3
+    0x1.33c537256ac26ea1b8865a026e72c752p-1,
+    0x1.136p-1
+  },
+  { // Entry 4
+    -0x1.44767fdc853773ecd65b43b0efd1f8d6p-1,
+    -0x1.1f07c1f07c1f4p-1
+  },
+  { // Entry 5
+    0x1.44767fdc853773ecd65b43b0efd1f8d6p-1,
+    0x1.1f07c1f07c1f4p-1
+  },
+  { // Entry 6
+    -0x1.7761ddbd0573b7ff1d51e300bdb439bep-1,
+    -0x1.400000010p-1
+  },
+  { // Entry 7
+    0x1.7761ddbd0573b7ff1d51e300bdb439bep-1,
+    0x1.400000010p-1
+  },
+  { // Entry 8
+    -0x1.6259494a4bb397ff89dd84b74e230f31p-2,
+    -0x1.54d9d811468c2p-2
+  },
+  { // Entry 9
+    0x1.6259494a4bb397ff89dd84b74e230f31p-2,
+    0x1.54d9d811468c2p-2
+  },
+  { // Entry 10
+    -0x1.6719a6fbfef1d7fc326d067903183cddp-2,
+    -0x1.5911c3a70cebdp-2
+  },
+  { // Entry 11
+    0x1.6719a6fbfef1d7fc326d067903183cddp-2,
+    0x1.5911c3a70cebdp-2
+  },
+  { // Entry 12
+    -0x1.ad75b9841b24e264875483def1610c01p-1,
+    -0x1.5ece354ff80a2p-1
+  },
+  { // Entry 13
+    0x1.ad75b9841b24e264875483def1610c01p-1,
+    0x1.5ece354ff80a2p-1
+  },
+  { // Entry 14
+    -0x1.c08e6aa55e4172db4c413132b24283edp-1,
+    -0x1.68ae1ca8f6ad6p-1
+  },
+  { // Entry 15
+    0x1.c08e6aa55e4172db4c413132b24283edp-1,
+    0x1.68ae1ca8f6ad6p-1
+  },
+  { // Entry 16
+    -0x1.d6f10a7081e7ecc4a2d3d9e2371d1cb0p-1,
+    -0x1.739ce739ce73cp-1
+  },
+  { // Entry 17
+    0x1.d6f10a7081e7ecc4a2d3d9e2371d1cb0p-1,
+    0x1.739ce739ce73cp-1
+  },
+  { // Entry 18
+    -0x1.862796317ed3d7fcb8bec742b2ea5c0bp-2,
+    -0x1.744f8613c514bp-2
+  },
+  { // Entry 19
+    0x1.862796317ed3d7fcb8bec742b2ea5c0bp-2,
+    0x1.744f8613c514bp-2
+  },
+  { // Entry 20
+    -0x1.8027fe496eaad0006a3df4a7cfc399bap-5,
+    -0x1.7fdff7fffffffp-5
+  },
+  { // Entry 21
+    0x1.8027fe496eaad0006a3df4a7cfc399bap-5,
+    0x1.7fdff7fffffffp-5
+  },
+  { // Entry 22
+    -0x1.80602a138a48e581b7bf0a1d1f84769fp-10,
+    -0x1.8060180601ff6p-10
+  },
+  { // Entry 23
+    0x1.80602a138a48e581b7bf0a1d1f84769fp-10,
+    0x1.8060180601ff6p-10
+  },
+  { // Entry 24
+    -0x1.9f323ecbf984c5d61382119eafcddf36p-3,
+    -0x1.999999999999ap-3
+  },
+  { // Entry 25
+    0x1.9f323ecbf984c5d61382119eafcddf36p-3,
+    0x1.999999999999ap-3
+  },
+  { // Entry 26
+    -0x1.b7c54f4582a8f52cb0434b624cb3140bp-2,
+    -0x1.9e9703735f652p-2
+  },
+  { // Entry 27
+    0x1.b7c54f4582a8f52cb0434b624cb3140bp-2,
+    0x1.9e9703735f652p-2
+  },
+  { // Entry 28
+    -0x1.ac44a1f923250f86e06d88e6919a1a4fp-24,
+    -0x1.ac44a1f923238p-24
+  },
+  { // Entry 29
+    0x1.ac44a1f923250f86e06d88e6919a1a4fp-24,
+    0x1.ac44a1f923238p-24
+  },
+  { // Entry 30
+    -0x1.cee62c51688218abca36efcf5f6add63p-2,
+    -0x1.b1bfa1c2ff5c8p-2
+  },
+  { // Entry 31
+    0x1.cee62c51688218abca36efcf5f6add63p-2,
+    0x1.b1bfa1c2ff5c8p-2
+  },
+  { // Entry 32
+    -0x1.b4c1183827d4a805d64de6f870cd6888p-5,
+    -0x1.b45746fb45980p-5
+  },
+  { // Entry 33
+    0x1.b4c1183827d4a805d64de6f870cd6888p-5,
+    0x1.b45746fb45980p-5
+  },
+  { // Entry 34
+    -0x1.cd1ce8658f1e27f929bb26f71cf39ep-3,
+    -0x1.c579d4043e054p-3
+  },
+  { // Entry 35
+    0x1.cd1ce8658f1e27f929bb26f71cf39ep-3,
+    0x1.c579d4043e054p-3
+  },
+  { // Entry 36
+    -0x1.f4b9755f2c26e7fc906b87927f3076ecp-2,
+    -0x1.d04b9bb0bda28p-2
+  },
+  { // Entry 37
+    0x1.f4b9755f2c26e7fc906b87927f3076ecp-2,
+    0x1.d04b9bb0bda28p-2
+  },
+  { // Entry 38
+    -0x1.d49dd5cd8086d7fe196df1da63aadaf9p-4,
+    -0x1.d29523bb69328p-4
+  },
+  { // Entry 39
+    0x1.d49dd5cd8086d7fe196df1da63aadaf9p-4,
+    0x1.d29523bb69328p-4
+  },
+  { // Entry 40
+    -0x1.f7f60ac95611e75a2a085f35a7c508dcp-2,
+    -0x1.d2dce780a7304p-2
+  },
+  { // Entry 41
+    0x1.f7f60ac95611e75a2a085f35a7c508dcp-2,
+    0x1.d2dce780a7304p-2
+  },
+  { // Entry 42
+    -0x1.df875eb326b209b9c9a00f82e3dbc3bap-3,
+    -0x1.d6f41e3ea643ap-3
+  },
+  { // Entry 43
+    0x1.df875eb326b209b9c9a00f82e3dbc3bap-3,
+    0x1.d6f41e3ea643ap-3
+  },
+  { // Entry 44
+    -0x1.fe0dc4fabe81f72d042d459cdb17f7c5p-2,
+    -0x1.d7ad1055ed587p-2
+  },
+  { // Entry 45
+    0x1.fe0dc4fabe81f72d042d459cdb17f7c5p-2,
+    0x1.d7ad1055ed587p-2
+  },
+  { // Entry 46
+    -0x1.ede7fef85615d5762723a4bc9071bcfcp-4,
+    -0x1.eb86b85bf65d8p-4
+  },
+  { // Entry 47
+    0x1.ede7fef85615d5762723a4bc9071bcfcp-4,
+    0x1.eb86b85bf65d8p-4
+  },
+  { // Entry 48
+    -0x1.ffff0f05db419e0562a8a13e0c88ec0cp-3,
+    -0x1.f59707e3f49d0p-3
+  },
+  { // Entry 49
+    0x1.ffff0f05db419e0562a8a13e0c88ec0cp-3,
+    0x1.f59707e3f49d0p-3
+  },
+  { // Entry 50
+    -0x1.340af764783edfffac199b0ebf01c362p1,
+    -0x1.f7cp-1
+  },
+  { // Entry 51
+    0x1.340af764783edfffac199b0ebf01c362p1,
+    0x1.f7cp-1
+  },
+  { // Entry 52
+    -0x1.fc0000000000000000000000029aca95p-52,
+    -0x1.fc0p-52
+  },
+  { // Entry 53
+    0x1.fc0000000000000000000000029aca95p-52,
+    0x1.fc0p-52
+  },
+  { // Entry 54
+    -0x1.fdc93ea04e6030021bf3b7f1b7274addp-5,
+    -0x1.fd210af77856cp-5
+  },
+  { // Entry 55
+    0x1.fdc93ea04e6030021bf3b7f1b7274addp-5,
+    0x1.fd210af77856cp-5
+  },
+  { // Entry 56
+    -0x1.ffeaa91115a4e8716dc9f09be20a9364p-7,
+    -0x1.ffep-7
+  },
+  { // Entry 57
+    0x1.ffeaa91115a4e8716dc9f09be20a9364p-7,
+    0x1.ffep-7
+  },
+  { // Entry 58
+    -0x1.9a775e687850d877587114f931f61369p3,
+    -0x1.ffffffffe03edp-1
+  },
+  { // Entry 59
+    0x1.9a775e687850d877587114f931f61369p3,
+    0x1.ffffffffe03edp-1
+  },
+  { // Entry 60
+    -0x1.9ba863fb6bf8e791c8099e55cff570c3p3,
+    -0x1.ffffffffe2863p-1
+  },
+  { // Entry 61
+    0x1.9ba863fb6bf8e791c8099e55cff570c3p3,
+    0x1.ffffffffe2863p-1
+  },
+  { // Entry 62
+    -0x1.f369d8eedfbb384b0ee31be424423ec2p3,
+    -0x1.ffffffffffe0bp-1
+  },
+  { // Entry 63
+    0x1.f369d8eedfbb384b0ee31be424423ec2p3,
+    0x1.ffffffffffe0bp-1
+  },
+  { // Entry 64
+    -0x1.02bd22bd19797815b1ddefc90c41f8fbp4,
+    -0x1.fffffffffff5ep-1
+  },
+  { // Entry 65
+    0x1.02bd22bd19797815b1ddefc90c41f8fbp4,
+    0x1.fffffffffff5ep-1
+  },
+  { // Entry 66
+    -0x1.1841a4bab2d6d03a28537f43de9e90a4p4,
+    -0x1.ffffffffffff5p-1
+  },
+  { // Entry 67
+    0x1.1841a4bab2d6d03a28537f43de9e90a4p4,
+    0x1.ffffffffffff5p-1
+  },
+  { // Entry 68
+    0x1.p-99,
+    0x1.0p-99
+  },
+  { // Entry 69
+    -0x1.p-99,
+    -0x1.0p-99
+  },
+  { // Entry 70
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 71
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 72
+    0x1.00000000000010000000155555555555p-41,
+    0x1.0000000000001p-41
+  },
+  { // Entry 73
+    -0x1.00000000000010000000155555555555p-41,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 74
+    0x1.015891c9eaefd81f5edb9583f3871889p-3,
+    0x1.0000000000006p-3
+  },
+  { // Entry 75
+    -0x1.015891c9eaefd81f5edb9583f3871889p-3,
+    -0x1.0000000000006p-3
+  },
+  { // Entry 76
+    0x1.193ea7aad0313ecbf96ee2aa7057ee7cp-1,
+    0x1.0000000000007p-1
+  },
+  { // Entry 77
+    -0x1.193ea7aad0313ecbf96ee2aa7057ee7cp-1,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 78
+    0x1.000555888ad4c9be103a862dcf933db6p-6,
+    0x1.0000000000030p-6
+  },
+  { // Entry 79
+    -0x1.000555888ad4c9be103a862dcf933db6p-6,
+    -0x1.0000000000030p-6
+  },
+  { // Entry 80
+    0x1.0000055555a8988cd2ad575377ece0d7p-10,
+    0x1.0000000000201p-10
+  },
+  { // Entry 81
+    -0x1.0000055555a8988cd2ad575377ece0d7p-10,
+    -0x1.0000000000201p-10
+  },
+  { // Entry 82
+    0x1.015891c9f107d81f5edc2a1f85d03e57p-3,
+    0x1.00000000060p-3
+  },
+  { // Entry 83
+    -0x1.015891c9f107d81f5edc2a1f85d03e57p-3,
+    -0x1.00000000060p-3
+  },
+  { // Entry 84
+    0x1.005588ad597cefed3539549b86ce2b1bp-4,
+    0x1.00000000220p-4
+  },
+  { // Entry 85
+    -0x1.005588ad597cefed3539549b86ce2b1bp-4,
+    -0x1.00000000220p-4
+  },
+  { // Entry 86
+    0x1.0000055577888aaad1cf378dd5b4caa3p-10,
+    0x1.00000000220p-10
+  },
+  { // Entry 87
+    -0x1.0000055577888aaad1cf378dd5b4caa3p-10,
+    -0x1.00000000220p-10
+  },
+  { // Entry 88
+    0x1.193ea7fca06d7000000fd6e3e45036c3p-1,
+    0x1.0000003d5c2d9p-1
+  },
+  { // Entry 89
+    -0x1.193ea7fca06d7000000fd6e3e45036c3p-1,
+    -0x1.0000003d5c2d9p-1
+  },
+  { // Entry 90
+    0x1.0158920aeeffb7df62fc5f72d05afc8ap-3,
+    0x1.0000004p-3
+  },
+  { // Entry 91
+    -0x1.0158920aeeffb7df62fc5f72d05afc8ap-3,
+    -0x1.0000004p-3
+  },
+  { // Entry 92
+    0x1.015894d61bb2a7f0ee6532fa66c13887p-3,
+    0x1.0000030p-3
+  },
+  { // Entry 93
+    -0x1.015894d61bb2a7f0ee6532fa66c13887p-3,
+    -0x1.0000030p-3
+  },
+  { // Entry 94
+    0x1.00255c8a5b4f98134613c6ae100b17d2p-5,
+    0x1.001p-5
+  },
+  { // Entry 95
+    -0x1.00255c8a5b4f98134613c6ae100b17d2p-5,
+    -0x1.001p-5
+  },
+  { // Entry 96
+    0x1.199403c895f3b2fbd6e04ef63e5e0b99p-1,
+    0x1.003fffcp-1
+  },
+  { // Entry 97
+    -0x1.199403c895f3b2fbd6e04ef63e5e0b99p-1,
+    -0x1.003fffcp-1
+  },
+  { // Entry 98
+    0x1.00401004000480000000000005595756p-50,
+    0x1.0040100400048p-50
+  },
+  { // Entry 99
+    -0x1.00401004000480000000000005595756p-50,
+    -0x1.0040100400048p-50
+  },
+  { // Entry 100
+    0x1.00b5e931e4c3080916948fa283902fa8p-4,
+    0x1.006p-4
+  },
+  { // Entry 101
+    -0x1.00b5e931e4c3080916948fa283902fa8p-4,
+    -0x1.006p-4
+  },
+  { // Entry 102
+    0x1.021c8577650fa41d24281561edcb1273p-10,
+    0x1.021c8p-10
+  },
+  { // Entry 103
+    -0x1.021c8577650fa41d24281561edcb1273p-10,
+    -0x1.021c8p-10
+  },
+  { // Entry 104
+    0x1.03858e51088d27f9df83774139563f2cp-6,
+    0x1.038p-6
+  },
+  { // Entry 105
+    -0x1.03858e51088d27f9df83774139563f2cp-6,
+    -0x1.038p-6
+  },
+  { // Entry 106
+    0x1.1e9b2fd18d91b42e390d13e9beb6978cp-1,
+    0x1.040p-1
+  },
+  { // Entry 107
+    -0x1.1e9b2fd18d91b42e390d13e9beb6978cp-1,
+    -0x1.040p-1
+  },
+  { // Entry 108
+    0x1.0841776c420d4707689f45329a9bf2cep-7,
+    0x1.084p-7
+  },
+  { // Entry 109
+    -0x1.0841776c420d4707689f45329a9bf2cep-7,
+    -0x1.084p-7
+  },
+  { // Entry 110
+    0x1.37ed416dfaf6747b307bee589157fe93p-1,
+    0x1.1650efedb9eb2p-1
+  },
+  { // Entry 111
+    -0x1.37ed416dfaf6747b307bee589157fe93p-1,
+    -0x1.1650efedb9eb2p-1
+  },
+  { // Entry 112
+    0x1.45e1141a8c00e0b0eb767eb3382f20b8p-1,
+    0x1.1ffffffffffffp-1
+  },
+  { // Entry 113
+    -0x1.45e1141a8c00e0b0eb767eb3382f20b8p-1,
+    -0x1.1ffffffffffffp-1
+  },
+  { // Entry 114
+    0x1.45e1141a8c00f818c85ab35ce89683a2p-1,
+    0x1.2p-1
+  },
+  { // Entry 115
+    -0x1.45e1141a8c00f818c85ab35ce89683a2p-1,
+    -0x1.2p-1
+  },
+  { // Entry 116
+    0x1.2e223119d32f870a129b78a196ee4c8dp-7,
+    0x1.2e2p-7
+  },
+  { // Entry 117
+    -0x1.2e223119d32f870a129b78a196ee4c8dp-7,
+    -0x1.2e2p-7
+  },
+  { // Entry 118
+    0x1.600c9c6f70efcd85cd16189ee688ead0p-1,
+    0x1.316p-1
+  },
+  { // Entry 119
+    -0x1.600c9c6f70efcd85cd16189ee688ead0p-1,
+    -0x1.316p-1
+  },
+  { // Entry 120
+    0x1.3b5afc2b8cfd87f655c91414c5969d60p-2,
+    0x1.31cp-2
+  },
+  { // Entry 121
+    -0x1.3b5afc2b8cfd87f655c91414c5969d60p-2,
+    -0x1.31cp-2
+  },
+  { // Entry 122
+    0x1.62e4307128100800001f7881babc44f3p-1,
+    0x1.3333338617529p-1
+  },
+  { // Entry 123
+    -0x1.62e4307128100800001f7881babc44f3p-1,
+    -0x1.3333338617529p-1
+  },
+  { // Entry 124
+    0x1.33aef545bb20968537b09375e6d5c60ap-7,
+    0x1.33aca4ae2b081p-7
+  },
+  { // Entry 125
+    -0x1.33aef545bb20968537b09375e6d5c60ap-7,
+    -0x1.33aca4ae2b081p-7
+  },
+  { // Entry 126
+    0x1.9c5cfbb889a7419fe7705e893b99fbb5p-1,
+    0x1.5586ad8669418p-1
+  },
+  { // Entry 127
+    -0x1.9c5cfbb889a7419fe7705e893b99fbb5p-1,
+    -0x1.5586ad8669418p-1
+  },
+  { // Entry 128
+    0x1.9d5e0765d3182e417e4d91808f30b95fp-1,
+    0x1.56152a51dda72p-1
+  },
+  { // Entry 129
+    -0x1.9d5e0765d3182e417e4d91808f30b95fp-1,
+    -0x1.56152a51dda72p-1
+  },
+  { // Entry 130
+    0x1.9d783af9f97bce33bd221a9954befb0cp-1,
+    0x1.5623ab271fa52p-1
+  },
+  { // Entry 131
+    -0x1.9d783af9f97bce33bd221a9954befb0cp-1,
+    -0x1.5623ab271fa52p-1
+  },
+  { // Entry 132
+    0x1.56a0f0b4476de80270a6332ff4450533p-5,
+    0x1.566dd4892fab9p-5
+  },
+  { // Entry 133
+    -0x1.56a0f0b4476de80270a6332ff4450533p-5,
+    -0x1.566dd4892fab9p-5
+  },
+  { // Entry 134
+    0x1.5db43aa0e3e55fffa5ad9886e8f22cb8p-3,
+    0x1.5a582cdc4e9d4p-3
+  },
+  { // Entry 135
+    -0x1.5db43aa0e3e55fffa5ad9886e8f22cb8p-3,
+    -0x1.5a582cdc4e9d4p-3
+  },
+  { // Entry 136
+    0x1.ab9dfa0ec89b8247c03f70d6fccdfd66p-1,
+    0x1.5dd34e7af8d61p-1
+  },
+  { // Entry 137
+    -0x1.ab9dfa0ec89b8247c03f70d6fccdfd66p-1,
+    -0x1.5dd34e7af8d61p-1
+  },
+  { // Entry 138
+    0x1.67a648e5b16c6a6999d9665a8c288d27p-8,
+    0x1.67a55c49aa5d6p-8
+  },
+  { // Entry 139
+    -0x1.67a648e5b16c6a6999d9665a8c288d27p-8,
+    -0x1.67a55c49aa5d6p-8
+  },
+  { // Entry 140
+    0x1.7b57ee7bea57a7fcebaaea6f557706c2p-2,
+    0x1.6ae491f70c7cbp-2
+  },
+  { // Entry 141
+    -0x1.7b57ee7bea57a7fcebaaea6f557706c2p-2,
+    -0x1.6ae491f70c7cbp-2
+  },
+  { // Entry 142
+    0x1.7222b50fd4f8ce0954e89313933bded3p-3,
+    0x1.6e2856e2856f5p-3
+  },
+  { // Entry 143
+    -0x1.7222b50fd4f8ce0954e89313933bded3p-3,
+    -0x1.6e2856e2856f5p-3
+  },
+  { // Entry 144
+    0x1.cf6347191f5b5aba22dc8400fa882ceep-1,
+    0x1.7p-1
+  },
+  { // Entry 145
+    -0x1.cf6347191f5b5aba22dc8400fa882ceep-1,
+    -0x1.7p-1
+  },
+  { // Entry 146
+    0x1.83916f868284f882ad9463d174a59d97p-2,
+    0x1.721060c1a73cep-2
+  },
+  { // Entry 147
+    -0x1.83916f868284f882ad9463d174a59d97p-2,
+    -0x1.721060c1a73cep-2
+  },
+  { // Entry 148
+    0x1.85e0806e8e13b7fcc08479529c8104e6p-2,
+    0x1.7411d463bfe90p-2
+  },
+  { // Entry 149
+    -0x1.85e0806e8e13b7fcc08479529c8104e6p-2,
+    -0x1.7411d463bfe90p-2
+  },
+  { // Entry 150
+    0x1.f2272af46bbe08000012b87d08e7932fp-1,
+    0x1.800000078eaacp-1
+  },
+  { // Entry 151
+    -0x1.f2272af46bbe08000012b87d08e7932fp-1,
+    -0x1.800000078eaacp-1
+  },
+  { // Entry 152
+    0x1.f2272af46bbf0800001fad0fd766e8cfp-1,
+    0x1.800000078eab3p-1
+  },
+  { // Entry 153
+    -0x1.f2272af46bbf0800001fad0fd766e8cfp-1,
+    -0x1.800000078eab3p-1
+  },
+  { // Entry 154
+    0x1.83e4a353f34f3562d9d23f45dc8b2e29p-7,
+    0x1.83ep-7
+  },
+  { // Entry 155
+    -0x1.83e4a353f34f3562d9d23f45dc8b2e29p-7,
+    -0x1.83ep-7
+  },
+  { // Entry 156
+    0x1.89b541d1b39fa30a054d69c38ffbdb5ep-4,
+    0x1.888p-4
+  },
+  { // Entry 157
+    -0x1.89b541d1b39fa30a054d69c38ffbdb5ep-4,
+    -0x1.888p-4
+  },
+  { // Entry 158
+    0x1.8a08c32ee13cd9422b9ad12f398f50bbp-8,
+    0x1.8a078c03f8dcep-8
+  },
+  { // Entry 159
+    -0x1.8a08c32ee13cd9422b9ad12f398f50bbp-8,
+    -0x1.8a078c03f8dcep-8
+  },
+  { // Entry 160
+    0x1.946669a6bba909c4bc5da852e75a3d66p-8,
+    0x1.9465194651941p-8
+  },
+  { // Entry 161
+    -0x1.946669a6bba909c4bc5da852e75a3d66p-8,
+    -0x1.9465194651941p-8
+  },
+  { // Entry 162
+    0x1.9c7d184ac6505eee21ace6732a52730cp-3,
+    0x1.970p-3
+  },
+  { // Entry 163
+    -0x1.9c7d184ac6505eee21ace6732a52730cp-3,
+    -0x1.970p-3
+  },
+  { // Entry 164
+    0x1.98da3c40000e9801ec829a13899425ecp-4,
+    0x1.978p-4
+  },
+  { // Entry 165
+    -0x1.98da3c40000e9801ec829a13899425ecp-4,
+    -0x1.978p-4
+  },
+  { // Entry 166
+    0x1.9af93cdc56240000000fff41a04220ffp-4,
+    0x1.999999a3a18c2p-4
+  },
+  { // Entry 167
+    -0x1.9af93cdc56240000000fff41a04220ffp-4,
+    -0x1.999999a3a18c2p-4
+  },
+  { // Entry 168
+    0x1.9af93cdc566f000000197f297a13895cp-4,
+    0x1.999999a3a1d66p-4
+  },
+  { // Entry 169
+    -0x1.9af93cdc566f000000197f297a13895cp-4,
+    -0x1.999999a3a1d66p-4
+  },
+  { // Entry 170
+    0x1.193ea7fa8d771fffffe6de660aab4045p0,
+    0x1.999999d303287p-1
+  },
+  { // Entry 171
+    -0x1.193ea7fa8d771fffffe6de660aab4045p0,
+    -0x1.999999d303287p-1
+  },
+  { // Entry 172
+    0x1.9af93d0c9ef7d80000017b97c0c0930cp-4,
+    0x1.999999d36ec44p-4
+  },
+  { // Entry 173
+    -0x1.9af93d0c9ef7d80000017b97c0c0930cp-4,
+    -0x1.999999d36ec44p-4
+  },
+  { // Entry 174
+    0x1.9f323f7638726800001eda3701a5c338p-3,
+    0x1.99999a3d09361p-3
+  },
+  { // Entry 175
+    -0x1.9f323f7638726800001eda3701a5c338p-3,
+    -0x1.99999a3d09361p-3
+  },
+  { // Entry 176
+    0x1.9f323fd47175b7ffffe05fbf960efc6ap-3,
+    0x1.99999a977d623p-3
+  },
+  { // Entry 177
+    -0x1.9f323fd47175b7ffffe05fbf960efc6ap-3,
+    -0x1.99999a977d623p-3
+  },
+  { // Entry 178
+    0x1.9f323fe10c9a1800001efbbe0bb48ebbp-3,
+    0x1.99999aa39770ap-3
+  },
+  { // Entry 179
+    -0x1.9f323fe10c9a1800001efbbe0bb48ebbp-3,
+    -0x1.99999aa39770ap-3
+  },
+  { // Entry 180
+    0x1.9a179be1e7a6e801a0cbc1770ccc0691p-5,
+    0x1.99cp-5
+  },
+  { // Entry 181
+    -0x1.9a179be1e7a6e801a0cbc1770ccc0691p-5,
+    -0x1.99cp-5
+  },
+  { // Entry 182
+    0x1.a5256971dc6e440698f25410f9a508ffp-10,
+    0x1.a52551b31353cp-10
+  },
+  { // Entry 183
+    -0x1.a5256971dc6e440698f25410f9a508ffp-10,
+    -0x1.a52551b31353cp-10
+  },
+  { // Entry 184
+    0x1.ad6df00c82cd92c93177514dd245567bp-24,
+    0x1.ad6df00c82cc0p-24
+  },
+  { // Entry 185
+    -0x1.ad6df00c82cd92c93177514dd245567bp-24,
+    -0x1.ad6df00c82cc0p-24
+  },
+  { // Entry 186
+    0x1.aec648950aa9b6160bf45bf45b2ce0bep-8,
+    0x1.aec4b201aa53bp-8
+  },
+  { // Entry 187
+    -0x1.aec648950aa9b6160bf45bf45b2ce0bep-8,
+    -0x1.aec4b201aa53bp-8
+  },
+  { // Entry 188
+    0x1.b6cabb35f338f7fb83223470c9fbfb09p-3,
+    0x1.b032e138a539dp-3
+  },
+  { // Entry 189
+    -0x1.b6cabb35f338f7fb83223470c9fbfb09p-3,
+    -0x1.b032e138a539dp-3
+  },
+  { // Entry 190
+    0x1.d6f4c64bee95d884b07a53fe12d571f4p-2,
+    0x1.b85680001c332p-2
+  },
+  { // Entry 191
+    -0x1.d6f4c64bee95d884b07a53fe12d571f4p-2,
+    -0x1.b85680001c332p-2
+  },
+  { // Entry 192
+    0x1.c184b5fbed8192fa453d4d9c1577a9e3p-10,
+    0x1.c184991bf2fp-10
+  },
+  { // Entry 193
+    -0x1.c184b5fbed8192fa453d4d9c1577a9e3p-10,
+    -0x1.c184991bf2fp-10
+  },
+  { // Entry 194
+    0x1.e71d3517d3e01b42d5dae4c3aaf70503p-2,
+    0x1.c56b0b96cdf91p-2
+  },
+  { // Entry 195
+    -0x1.e71d3517d3e01b42d5dae4c3aaf70503p-2,
+    -0x1.c56b0b96cdf91p-2
+  },
+  { // Entry 196
+    0x1.c5e0000001db8fffed2e2b94fd54870dp-20,
+    0x1.c5ep-20
+  },
+  { // Entry 197
+    -0x1.c5e0000001db8fffed2e2b94fd54870dp-20,
+    -0x1.c5ep-20
+  },
+  { // Entry 198
+    0x1.f055451fb359e7fffffbe5195d4377e8p-2,
+    0x1.ccccccd660083p-2
+  },
+  { // Entry 199
+    -0x1.f055451fb359e7fffffbe5195d4377e8p-2,
+    -0x1.ccccccd660083p-2
+  },
+  { // Entry 200
+    0x1.f1c704e1f3c8a800b71131c90e193596p-2,
+    0x1.cdf37cdf37cd9p-2
+  },
+  { // Entry 201
+    -0x1.f1c704e1f3c8a800b71131c90e193596p-2,
+    -0x1.cdf37cdf37cd9p-2
+  },
+  { // Entry 202
+    0x1.d00a0587151948029cb1fb36b2a24903p-5,
+    0x1.cf8b2052bbb11p-5
+  },
+  { // Entry 203
+    -0x1.d00a0587151948029cb1fb36b2a24903p-5,
+    -0x1.cf8b2052bbb11p-5
+  },
+  { // Entry 204
+    0x1.f4656a69bea6d733e8f3dfaec12111c3p-2,
+    0x1.d008d55f75360p-2
+  },
+  { // Entry 205
+    -0x1.f4656a69bea6d733e8f3dfaec12111c3p-2,
+    -0x1.d008d55f75360p-2
+  },
+  { // Entry 206
+    0x1.d0cad6adc9a0c837bbecea984e9019d7p-5,
+    0x1.d04b532bd5b41p-5
+  },
+  { // Entry 207
+    -0x1.d0cad6adc9a0c837bbecea984e9019d7p-5,
+    -0x1.d04b532bd5b41p-5
+  },
+  { // Entry 208
+    0x1.f62f40794a7b089973231ae614553eb0p-2,
+    0x1.d1745d1745d11p-2
+  },
+  { // Entry 209
+    -0x1.f62f40794a7b089973231ae614553eb0p-2,
+    -0x1.d1745d1745d11p-2
+  },
+  { // Entry 210
+    0x1.d1c00000008077fe5d003fc8ce63e4a4p-21,
+    0x1.d1cp-21
+  },
+  { // Entry 211
+    -0x1.d1c00000008077fe5d003fc8ce63e4a4p-21,
+    -0x1.d1cp-21
+  },
+  { // Entry 212
+    0x1.f6beddb6ec29b749a9e4a3f67a36b414p-2,
+    0x1.d1e646f156570p-2
+  },
+  { // Entry 213
+    -0x1.f6beddb6ec29b749a9e4a3f67a36b414p-2,
+    -0x1.d1e646f156570p-2
+  },
+  { // Entry 214
+    0x1.fabc7c84166033eb57a453fd83585dc8p-2,
+    0x1.d50efa205a174p-2
+  },
+  { // Entry 215
+    -0x1.fabc7c84166033eb57a453fd83585dc8p-2,
+    -0x1.d50efa205a174p-2
+  },
+  { // Entry 216
+    0x1.d62f43b4c2c737fdd232cf2e299076f7p-11,
+    0x1.d62f3b71fca8cp-11
+  },
+  { // Entry 217
+    -0x1.d62f43b4c2c737fdd232cf2e299076f7p-11,
+    -0x1.d62f3b71fca8cp-11
+  },
+  { // Entry 218
+    0x1.e3a4b468f251480a6049e3fe17b89646p-5,
+    0x1.e3150daedb476p-5
+  },
+  { // Entry 219
+    -0x1.e3a4b468f251480a6049e3fe17b89646p-5,
+    -0x1.e3150daedb476p-5
+  },
+  { // Entry 220
+    0x1.e68e0c2de6d2280c8a117c4d61d8f42fp-5,
+    0x1.e5fbc9eecbdaep-5
+  },
+  { // Entry 221
+    -0x1.e68e0c2de6d2280c8a117c4d61d8f42fp-5,
+    -0x1.e5fbc9eecbdaep-5
+  },
+  { // Entry 222
+    0x1.e9de86e8fd3be801a9f830844ba5e501p-5,
+    0x1.e9494303cd80fp-5
+  },
+  { // Entry 223
+    -0x1.e9de86e8fd3be801a9f830844ba5e501p-5,
+    -0x1.e9494303cd80fp-5
+  },
+  { // Entry 224
+    0x1.edbcc82a00a4c001e7ac01891849800ep-5,
+    0x1.ed23f4c89da70p-5
+  },
+  { // Entry 225
+    -0x1.edbcc82a00a4c001e7ac01891849800ep-5,
+    -0x1.ed23f4c89da70p-5
+  },
+  { // Entry 226
+    0x1.fa0dc9d7131fee2b38ba993a65f82a06p-3,
+    0x1.effffffffffffp-3
+  },
+  { // Entry 227
+    -0x1.fa0dc9d7131fee2b38ba993a65f82a06p-3,
+    -0x1.effffffffffffp-3
+  },
+  { // Entry 228
+    0x1.f37429af961a9824754b77a1b593d39ap-4,
+    0x1.f0fe3530f7239p-4
+  },
+  { // Entry 229
+    -0x1.f37429af961a9824754b77a1b593d39ap-4,
+    -0x1.f0fe3530f7239p-4
+  },
+  { // Entry 230
+    0x1.f37429af961ab89edde6f4ae74375a06p-4,
+    0x1.f0fe3530f723bp-4
+  },
+  { // Entry 231
+    -0x1.f37429af961ab89edde6f4ae74375a06p-4,
+    -0x1.f0fe3530f723bp-4
+  },
+  { // Entry 232
+    0x1.f37429af961ac8dc1234b334d38f1d1bp-4,
+    0x1.f0fe3530f723cp-4
+  },
+  { // Entry 233
+    -0x1.f37429af961ac8dc1234b334d38f1d1bp-4,
+    -0x1.f0fe3530f723cp-4
+  },
+  { // Entry 234
+    0x1.f37429af962b268ac88eb6a2f4026151p-4,
+    0x1.f0fe3530f733ep-4
+  },
+  { // Entry 235
+    -0x1.f37429af962b268ac88eb6a2f4026151p-4,
+    -0x1.f0fe3530f733ep-4
+  },
+  { // Entry 236
+    0x1.f1e9c43b21348857c7e465e46799dce1p-5,
+    0x1.f14d08c7109aap-5
+  },
+  { // Entry 237
+    -0x1.f1e9c43b21348857c7e465e46799dce1p-5,
+    -0x1.f14d08c7109aap-5
+  },
+  { // Entry 238
+    0x1.f90b42375a486a39cdf9b2ccf2824fecp-4,
+    0x1.f68p-4
+  },
+  { // Entry 239
+    -0x1.f90b42375a486a39cdf9b2ccf2824fecp-4,
+    -0x1.f68p-4
+  },
+  { // Entry 240
+    0x1.f72a153ff7688808c896dd6ffe6516d4p-5,
+    0x1.f688582bdf450p-5
+  },
+  { // Entry 241
+    -0x1.f72a153ff7688808c896dd6ffe6516d4p-5,
+    -0x1.f688582bdf450p-5
+  },
+  { // Entry 242
+    0x1.f7e703f1db06e802f9321fd5e2394e07p-5,
+    0x1.f744909706414p-5
+  },
+  { // Entry 243
+    -0x1.f7e703f1db06e802f9321fd5e2394e07p-5,
+    -0x1.f744909706414p-5
+  },
+  { // Entry 244
+    0x1.340af764783edfffac199b0ebf01c362p1,
+    0x1.f7cp-1
+  },
+  { // Entry 245
+    -0x1.340af764783edfffac199b0ebf01c362p1,
+    -0x1.f7cp-1
+  },
+  { // Entry 246
+    0x1.fa24a006fb7277fe99107e535f1488d7p-5,
+    0x1.f98p-5
+  },
+  { // Entry 247
+    -0x1.fa24a006fb7277fe99107e535f1488d7p-5,
+    -0x1.f98p-5
+  },
+  { // Entry 248
+    0x1.fabe9384d8eb28030d5306c1d38ffe3cp-5,
+    0x1.fa195d3f2824ap-5
+  },
+  { // Entry 249
+    -0x1.fabe9384d8eb28030d5306c1d38ffe3cp-5,
+    -0x1.fa195d3f2824ap-5
+  },
+  { // Entry 250
+    0x1.fac53cc7f51a2825f03615ff2011a3f4p-5,
+    0x1.fa2p-5
+  },
+  { // Entry 251
+    -0x1.fac53cc7f51a2825f03615ff2011a3f4p-5,
+    -0x1.fa2p-5
+  },
+  { // Entry 252
+    0x1.fca715610d4c584a721b2c19e6223c63p-5,
+    0x1.fbfffffffffffp-5
+  },
+  { // Entry 253
+    -0x1.fca715610d4c584a721b2c19e6223c63p-5,
+    -0x1.fbfffffffffffp-5
+  },
+  { // Entry 254
+    0x1.ff2303e94a6fa776b99fdcdac342443dp-4,
+    0x1.fc7ffffffffffp-4
+  },
+  { // Entry 255
+    -0x1.ff2303e94a6fa776b99fdcdac342443dp-4,
+    -0x1.fc7ffffffffffp-4
+  },
+  { // Entry 256
+    0x1.fcca7762322a195ec28591033e93e55bp-7,
+    0x1.fccp-7
+  },
+  { // Entry 257
+    -0x1.fcca7762322a195ec28591033e93e55bp-7,
+    -0x1.fccp-7
+  },
+  { // Entry 258
+    0x1.fde34e5e71112802cd5dc4e1fb2d0640p-5,
+    0x1.fd3b00ef28dc9p-5
+  },
+  { // Entry 259
+    -0x1.fde34e5e71112802cd5dc4e1fb2d0640p-5,
+    -0x1.fd3b00ef28dc9p-5
+  },
+  { // Entry 260
+    0x1.fd5da51e6bee9b019e62cd796699df5cp-8,
+    0x1.fd5b04f37a8adp-8
+  },
+  { // Entry 261
+    -0x1.fd5da51e6bee9b019e62cd796699df5cp-8,
+    -0x1.fd5b04f37a8adp-8
+  },
+  { // Entry 262
+    0x1.ff08b9b3981768022e66dd42cd419f4cp-9,
+    0x1.ff080ffffffffp-9
+  },
+  { // Entry 263
+    -0x1.ff08b9b3981768022e66dd42cd419f4cp-9,
+    -0x1.ff080ffffffffp-9
+  },
+  { // Entry 264
+    0x1.ff782a88ba0fba00f908e16f051a1810p-10,
+    0x1.ff77fffffffffp-10
+  },
+  { // Entry 265
+    -0x1.ff782a88ba0fba00f908e16f051a1810p-10,
+    -0x1.ff77fffffffffp-10
+  },
+  { // Entry 266
+    0x1.0154818928eb11132905352501826af5p-3,
+    0x1.fff7fffffffffp-4
+  },
+  { // Entry 267
+    -0x1.0154818928eb11132905352501826af5p-3,
+    -0x1.fff7fffffffffp-4
+  },
+  { // Entry 268
+    0x1.fffca6a70d15564482dc93a139764e2dp-9,
+    0x1.fffbfbfffffffp-9
+  },
+  { // Entry 269
+    -0x1.fffca6a70d15564482dc93a139764e2dp-9,
+    -0x1.fffbfbfffffffp-9
+  },
+  { // Entry 270
+    0x1.0157cebdbc7ecff56d936def2dc90848p-3,
+    0x1.fffe7ffffffffp-4
+  },
+  { // Entry 271
+    -0x1.0157cebdbc7ecff56d936def2dc90848p-3,
+    -0x1.fffe7ffffffffp-4
+  },
+  { // Entry 272
+    0x1.ffff2aaa70e11229a646c3ea214d5c6bp-10,
+    0x1.fffeffffffcffp-10
+  },
+  { // Entry 273
+    -0x1.ffff2aaa70e11229a646c3ea214d5c6bp-10,
+    -0x1.fffeffffffcffp-10
+  },
+  { // Entry 274
+    0x1.fe849ae4ae0948fc35cd560fe0f7a64fp2,
+    0x1.fffff8170432cp-1
+  },
+  { // Entry 275
+    -0x1.fe849ae4ae0948fc35cd560fe0f7a64fp2,
+    -0x1.fffff8170432cp-1
+  },
+  { // Entry 276
+    0x1.fe8636119def0727f0b21ad8da17b705p2,
+    0x1.fffff81769d3bp-1
+  },
+  { // Entry 277
+    -0x1.fe8636119def0727f0b21ad8da17b705p2,
+    -0x1.fffff81769d3bp-1
+  },
+  { // Entry 278
+    0x1.feab0f8d089237326f5246ce7822ddcap2,
+    0x1.fffff8207ffffp-1
+  },
+  { // Entry 279
+    -0x1.feab0f8d089237326f5246ce7822ddcap2,
+    -0x1.fffff8207ffffp-1
+  },
+  { // Entry 280
+    0x1.fffffbc002aa9a99aab134f0ccf89dcfp-20,
+    0x1.fffffbbffffffp-20
+  },
+  { // Entry 281
+    -0x1.fffffbc002aa9a99aab134f0ccf89dcfp-20,
+    -0x1.fffffbbffffffp-20
+  },
+  { // Entry 282
+    0x1.38aa9bbc81de80372da066273e181f3dp3,
+    0x1.ffffffc7fffffp-1
+  },
+  { // Entry 283
+    -0x1.38aa9bbc81de80372da066273e181f3dp3,
+    -0x1.ffffffc7fffffp-1
+  },
+  { // Entry 284
+    0x1.a791d873bcf1ef6cc589b55be94c11ccp3,
+    0x1.fffffffff1fffp-1
+  },
+  { // Entry 285
+    -0x1.a791d873bcf1ef6cc589b55be94c11ccp3,
+    -0x1.fffffffff1fffp-1
+  },
+  { // Entry 286
+    0x1.048fa31ec6a076cfd26abb456c9e863ap4,
+    0x1.fffffffffff7fp-1
+  },
+  { // Entry 287
+    -0x1.048fa31ec6a076cfd26abb456c9e863ap4,
+    -0x1.fffffffffff7fp-1
+  },
+  { // Entry 288
+    0x1.ffffffffffff8aaaaaaaaaa9f1111111p-25,
+    0x1.fffffffffffeep-25
+  },
+  { // Entry 289
+    -0x1.ffffffffffff8aaaaaaaaaa9f1111111p-25,
+    -0x1.fffffffffffeep-25
+  },
+  { // Entry 290
+    -0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    -0x1.f777777777777p-1
+  },
+  { // Entry 291
+    0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    0x1.f777777777777p-1
+  },
+  { // Entry 292
+    -0x1.04f65f9c7297527749382883b8e88e33p1,
+    -0x1.eeeeeeeeeeeeep-1
+  },
+  { // Entry 293
+    0x1.04f65f9c7297527749382883b8e88e33p1,
+    0x1.eeeeeeeeeeeeep-1
+  },
+  { // Entry 294
+    -0x1.d4ef968880dcf1c48bf6d707008e71a0p0,
+    -0x1.e666666666665p-1
+  },
+  { // Entry 295
+    0x1.d4ef968880dcf1c48bf6d707008e71a0p0,
+    0x1.e666666666665p-1
+  },
+  { // Entry 296
+    -0x1.af038cbcdfe177f9b97cb13acb6a1d56p0,
+    -0x1.ddddddddddddcp-1
+  },
+  { // Entry 297
+    0x1.af038cbcdfe177f9b97cb13acb6a1d56p0,
+    0x1.ddddddddddddcp-1
+  },
+  { // Entry 298
+    -0x1.9157dfdd1b3e8bb2bc8c94b692c36c8bp0,
+    -0x1.d555555555553p-1
+  },
+  { // Entry 299
+    0x1.9157dfdd1b3e8bb2bc8c94b692c36c8bp0,
+    0x1.d555555555553p-1
+  },
+  { // Entry 300
+    -0x1.78e360604b32513afa302dd9090f54afp0,
+    -0x1.ccccccccccccap-1
+  },
+  { // Entry 301
+    0x1.78e360604b32513afa302dd9090f54afp0,
+    0x1.ccccccccccccap-1
+  },
+  { // Entry 302
+    -0x1.640775d4dd98457b36fb7ce98ec43308p0,
+    -0x1.c444444444441p-1
+  },
+  { // Entry 303
+    0x1.640775d4dd98457b36fb7ce98ec43308p0,
+    0x1.c444444444441p-1
+  },
+  { // Entry 304
+    -0x1.51cca16d7bb9ff79603c2533c5c76b7ap0,
+    -0x1.bbbbbbbbbbbb8p-1
+  },
+  { // Entry 305
+    0x1.51cca16d7bb9ff79603c2533c5c76b7ap0,
+    0x1.bbbbbbbbbbbb8p-1
+  },
+  { // Entry 306
+    -0x1.41933b0e446305a96ace1bc262cdee99p0,
+    -0x1.b33333333332fp-1
+  },
+  { // Entry 307
+    0x1.41933b0e446305a96ace1bc262cdee99p0,
+    0x1.b33333333332fp-1
+  },
+  { // Entry 308
+    -0x1.32ee3b77f374414d3a29141080dfabeap0,
+    -0x1.aaaaaaaaaaaa6p-1
+  },
+  { // Entry 309
+    0x1.32ee3b77f374414d3a29141080dfabeap0,
+    0x1.aaaaaaaaaaaa6p-1
+  },
+  { // Entry 310
+    -0x1.258fdae8372b9231a664ea76c9d6586fp0,
+    -0x1.a22222222221dp-1
+  },
+  { // Entry 311
+    0x1.258fdae8372b9231a664ea76c9d6586fp0,
+    0x1.a22222222221dp-1
+  },
+  { // Entry 312
+    -0x1.193ea7aad0302d04dcfd1b8e192ed85dp0,
+    -0x1.9999999999994p-1
+  },
+  { // Entry 313
+    0x1.193ea7aad0302d04dcfd1b8e192ed85dp0,
+    0x1.9999999999994p-1
+  },
+  { // Entry 314
+    -0x1.0dcefea4d025e0b8d09052e46fdf4f2ep0,
+    -0x1.911111111110bp-1
+  },
+  { // Entry 315
+    0x1.0dcefea4d025e0b8d09052e46fdf4f2ep0,
+    0x1.911111111110bp-1
+  },
+  { // Entry 316
+    -0x1.031ef11090f771d990e41e47d30913d6p0,
+    -0x1.8888888888882p-1
+  },
+  { // Entry 317
+    0x1.031ef11090f771d990e41e47d30913d6p0,
+    0x1.8888888888882p-1
+  },
+  { // Entry 318
+    -0x1.f2272ae325a47546f69496cf861be046p-1,
+    -0x1.7fffffffffff9p-1
+  },
+  { // Entry 319
+    0x1.f2272ae325a47546f69496cf861be046p-1,
+    0x1.7fffffffffff9p-1
+  },
+  { // Entry 320
+    -0x1.df2e6d6e5fb9a3aede73b55578f55672p-1,
+    -0x1.7777777777770p-1
+  },
+  { // Entry 321
+    0x1.df2e6d6e5fb9a3aede73b55578f55672p-1,
+    0x1.7777777777770p-1
+  },
+  { // Entry 322
+    -0x1.cd302116f50ababc40c132419e1dab2ap-1,
+    -0x1.6eeeeeeeeeee7p-1
+  },
+  { // Entry 323
+    0x1.cd302116f50ababc40c132419e1dab2ap-1,
+    0x1.6eeeeeeeeeee7p-1
+  },
+  { // Entry 324
+    -0x1.bc0ed0947fbd88e1ba52723b57950592p-1,
+    -0x1.666666666665ep-1
+  },
+  { // Entry 325
+    0x1.bc0ed0947fbd88e1ba52723b57950592p-1,
+    0x1.666666666665ep-1
+  },
+  { // Entry 326
+    -0x1.abb1c9065825972aaaf3d164ca1f5323p-1,
+    -0x1.5ddddddddddd5p-1
+  },
+  { // Entry 327
+    0x1.abb1c9065825972aaaf3d164ca1f5323p-1,
+    0x1.5ddddddddddd5p-1
+  },
+  { // Entry 328
+    -0x1.9c041f7ed8d229e312aad84998a0e008p-1,
+    -0x1.555555555554cp-1
+  },
+  { // Entry 329
+    0x1.9c041f7ed8d229e312aad84998a0e008p-1,
+    0x1.555555555554cp-1
+  },
+  { // Entry 330
+    -0x1.8cf3f3b791739ba35824b20bb67bc051p-1,
+    -0x1.4ccccccccccc3p-1
+  },
+  { // Entry 331
+    0x1.8cf3f3b791739ba35824b20bb67bc051p-1,
+    0x1.4ccccccccccc3p-1
+  },
+  { // Entry 332
+    -0x1.7e71ded66460614d3cfeeae5195853fdp-1,
+    -0x1.444444444443ap-1
+  },
+  { // Entry 333
+    0x1.7e71ded66460614d3cfeeae5195853fdp-1,
+    0x1.444444444443ap-1
+  },
+  { // Entry 334
+    -0x1.7070827f1c7ee9fc23eb09099495f760p-1,
+    -0x1.3bbbbbbbbbbb1p-1
+  },
+  { // Entry 335
+    0x1.7070827f1c7ee9fc23eb09099495f760p-1,
+    0x1.3bbbbbbbbbbb1p-1
+  },
+  { // Entry 336
+    -0x1.62e42fefa39ddb5793c7673063c5ed5ep-1,
+    -0x1.3333333333328p-1
+  },
+  { // Entry 337
+    0x1.62e42fefa39ddb5793c7673063c5ed5ep-1,
+    0x1.3333333333328p-1
+  },
+  { // Entry 338
+    -0x1.55c2a141bd913c9da91e9ba97d84ef42p-1,
+    -0x1.2aaaaaaaaaa9fp-1
+  },
+  { // Entry 339
+    0x1.55c2a141bd913c9da91e9ba97d84ef42p-1,
+    0x1.2aaaaaaaaaa9fp-1
+  },
+  { // Entry 340
+    -0x1.4902c08bec8b8d6ba2debcee67107aa5p-1,
+    -0x1.2222222222216p-1
+  },
+  { // Entry 341
+    0x1.4902c08bec8b8d6ba2debcee67107aa5p-1,
+    0x1.2222222222216p-1
+  },
+  { // Entry 342
+    -0x1.3c9c79bc8508ca2d5b90a842ee7edfa3p-1,
+    -0x1.199999999998dp-1
+  },
+  { // Entry 343
+    0x1.3c9c79bc8508ca2d5b90a842ee7edfa3p-1,
+    0x1.199999999998dp-1
+  },
+  { // Entry 344
+    -0x1.308894d710d767af349ad5664f91afbcp-1,
+    -0x1.1111111111104p-1
+  },
+  { // Entry 345
+    0x1.308894d710d767af349ad5664f91afbcp-1,
+    0x1.1111111111104p-1
+  },
+  { // Entry 346
+    -0x1.24c096cf976a96087c1335628fdc0098p-1,
+    -0x1.088888888887bp-1
+  },
+  { // Entry 347
+    0x1.24c096cf976a96087c1335628fdc0098p-1,
+    0x1.088888888887bp-1
+  },
+  { // Entry 348
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 349
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 350
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 351
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 352
+    0x1.24c096cf976bc79a7ab78995d36b066bp-1,
+    0x1.0888888888889p-1
+  },
+  { // Entry 353
+    -0x1.24c096cf976bc79a7ab78995d36b066bp-1,
+    -0x1.0888888888889p-1
+  },
+  { // Entry 354
+    0x1.308894d710d8a0ba55ff01eb87cbc220p-1,
+    0x1.1111111111112p-1
+  },
+  { // Entry 355
+    -0x1.308894d710d8a0ba55ff01eb87cbc220p-1,
+    -0x1.1111111111112p-1
+  },
+  { // Entry 356
+    0x1.3c9c79bc850a0b52fa4dacd910d12a32p-1,
+    0x1.199999999999bp-1
+  },
+  { // Entry 357
+    -0x1.3c9c79bc850a0b52fa4dacd910d12a32p-1,
+    -0x1.199999999999bp-1
+  },
+  { // Entry 358
+    0x1.4902c08bec8cd75f11102da30f1f78d7p-1,
+    0x1.2222222222224p-1
+  },
+  { // Entry 359
+    -0x1.4902c08bec8cd75f11102da30f1f78d7p-1,
+    -0x1.2222222222224p-1
+  },
+  { // Entry 360
+    0x1.55c2a141bd929027179a90e1bcdc1a2dp-1,
+    0x1.2aaaaaaaaaaadp-1
+  },
+  { // Entry 361
+    -0x1.55c2a141bd929027179a90e1bcdc1a2dp-1,
+    -0x1.2aaaaaaaaaaadp-1
+  },
+  { // Entry 362
+    0x1.62e42fefa39f395793c767300da3ed5ep-1,
+    0x1.3333333333336p-1
+  },
+  { // Entry 363
+    -0x1.62e42fefa39f395793c767300da3ed5ep-1,
+    -0x1.3333333333336p-1
+  },
+  { // Entry 364
+    0x1.7070827f1c80536feb7673dd88b946ecp-1,
+    0x1.3bbbbbbbbbbbfp-1
+  },
+  { // Entry 365
+    -0x1.7070827f1c80536feb7673dd88b946ecp-1,
+    -0x1.3bbbbbbbbbbbfp-1
+  },
+  { // Entry 366
+    0x1.7e71ded66461d753e33ac2ff618644e0p-1,
+    0x1.4444444444448p-1
+  },
+  { // Entry 367
+    -0x1.7e71ded66461d753e33ac2ff618644e0p-1,
+    -0x1.4444444444448p-1
+  },
+  { // Entry 368
+    0x1.8cf3f3b791751f845062c18f4b0d7fe7p-1,
+    0x1.4ccccccccccd1p-1
+  },
+  { // Entry 369
+    -0x1.8cf3f3b791751f845062c18f4b0d7fe7p-1,
+    -0x1.4ccccccccccd1p-1
+  },
+  { // Entry 370
+    0x1.9c041f7ed8d3bd1645de0b7c8544b713p-1,
+    0x1.555555555555ap-1
+  },
+  { // Entry 371
+    -0x1.9c041f7ed8d3bd1645de0b7c8544b713p-1,
+    -0x1.555555555555ap-1
+  },
+  { // Entry 372
+    0x1.abb1c90658273b62b26c47dabd2b16cap-1,
+    0x1.5dddddddddde3p-1
+  },
+  { // Entry 373
+    -0x1.abb1c90658273b62b26c47dabd2b16cap-1,
+    -0x1.5dddddddddde3p-1
+  },
+  { // Entry 374
+    0x1.bc0ed0947fbf4018f189a9725a0c8214p-1,
+    0x1.666666666666cp-1
+  },
+  { // Entry 375
+    -0x1.bc0ed0947fbf4018f189a9725a0c8214p-1,
+    -0x1.666666666666cp-1
+  },
+  { // Entry 376
+    0x1.cd302116f50c8745aed84bd751fb575cp-1,
+    0x1.6eeeeeeeeeef5p-1
+  },
+  { // Entry 377
+    -0x1.cd302116f50c8745aed84bd751fb575cp-1,
+    -0x1.6eeeeeeeeeef5p-1
+  },
+  { // Entry 378
+    0x1.df2e6d6e5fbb884c684c52df3b260c38p-1,
+    0x1.777777777777ep-1
+  },
+  { // Entry 379
+    -0x1.df2e6d6e5fbb884c684c52df3b260c38p-1,
+    -0x1.777777777777ep-1
+  },
+  { // Entry 380
+    0x1.f2272ae325a67546f69496cf861be046p-1,
+    0x1.8000000000007p-1
+  },
+  { // Entry 381
+    -0x1.f2272ae325a67546f69496cf861be046p-1,
+    -0x1.8000000000007p-1
+  },
+  { // Entry 382
+    0x1.031ef11090f8818c48703199fec1433ap0,
+    0x1.8888888888890p-1
+  },
+  { // Entry 383
+    -0x1.031ef11090f8818c48703199fec1433ap0,
+    -0x1.8888888888890p-1
+  },
+  { // Entry 384
+    0x1.0dcefea4d0270295d8d877b36ea1c0e3p0,
+    0x1.9111111111119p-1
+  },
+  { // Entry 385
+    -0x1.0dcefea4d0270295d8d877b36ea1c0e3p0,
+    -0x1.9111111111119p-1
+  },
+  { // Entry 386
+    0x1.193ea7aad03164214ec438001cc9b599p0,
+    0x1.99999999999a2p-1
+  },
+  { // Entry 387
+    -0x1.193ea7aad03164214ec438001cc9b599p0,
+    -0x1.99999999999a2p-1
+  },
+  { // Entry 388
+    0x1.258fdae8372ce27963c75835d46b66e6p0,
+    0x1.a22222222222bp-1
+  },
+  { // Entry 389
+    -0x1.258fdae8372ce27963c75835d46b66e6p0,
+    -0x1.a22222222222bp-1
+  },
+  { // Entry 390
+    0x1.32ee3b77f375afd8dd11ce3f9e4b9287p0,
+    0x1.aaaaaaaaaaab4p-1
+  },
+  { // Entry 391
+    -0x1.32ee3b77f375afd8dd11ce3f9e4b9287p0,
+    -0x1.aaaaaaaaaaab4p-1
+  },
+  { // Entry 392
+    0x1.41933b0e44649943f09224fce382c799p0,
+    0x1.b33333333333dp-1
+  },
+  { // Entry 393
+    -0x1.41933b0e44649943f09224fce382c799p0,
+    -0x1.b33333333333dp-1
+  },
+  { // Entry 394
+    0x1.51cca16d7bbbc179603c253505b36b7ap0,
+    0x1.bbbbbbbbbbbc6p-1
+  },
+  { // Entry 395
+    -0x1.51cca16d7bbbc179603c253505b36b7ap0,
+    -0x1.bbbbbbbbbbbc6p-1
+  },
+  { // Entry 396
+    0x1.640775d4dd9a4337400b58abfdea644fp0,
+    0x1.c44444444444fp-1
+  },
+  { // Entry 397
+    -0x1.640775d4dd9a4337400b58abfdea644fp0,
+    -0x1.c44444444444fp-1
+  },
+  { // Entry 398
+    0x1.78e360604b349eb43d8e7eb37a3c01b6p0,
+    0x1.cccccccccccd8p-1
+  },
+  { // Entry 399
+    -0x1.78e360604b349eb43d8e7eb37a3c01b6p0,
+    -0x1.cccccccccccd8p-1
+  },
+  { // Entry 400
+    0x1.9157dfdd1b4148ea63817356fc04c13bp0,
+    0x1.d555555555561p-1
+  },
+  { // Entry 401
+    -0x1.9157dfdd1b4148ea63817356fc04c13bp0,
+    -0x1.d555555555561p-1
+  },
+  { // Entry 402
+    0x1.af038cbcdfe4dcf0e5a000b57077d005p0,
+    0x1.dddddddddddeap-1
+  },
+  { // Entry 403
+    -0x1.af038cbcdfe4dcf0e5a000b57077d005p0,
+    -0x1.dddddddddddeap-1
+  },
+  { // Entry 404
+    0x1.d4ef968880e16e7c57738ee1cab27657p0,
+    0x1.e666666666673p-1
+  },
+  { // Entry 405
+    -0x1.d4ef968880e16e7c57738ee1cab27657p0,
+    -0x1.e666666666673p-1
+  },
+  { // Entry 406
+    0x1.04f65f9c729aa8b4082276b069b6c479p1,
+    0x1.eeeeeeeeeeefcp-1
+  },
+  { // Entry 407
+    -0x1.04f65f9c729aa8b4082276b069b6c479p1,
+    -0x1.eeeeeeeeeeefcp-1
+  },
+  { // Entry 408
+    0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    0x1.f777777777777p-1
+  },
+  { // Entry 409
+    -0x1.31dd28c89d64f3513ea98f014ae7630cp1,
+    -0x1.f777777777777p-1
+  },
+  { // Entry 410
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 411
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 412
+    -0x1.25e4f7b2737fa14486612173c6896892p4,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 413
+    0x1.25e4f7b2737fa14486612173c6896892p4,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 414
+    -0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    -0x1.ffffffffffffdp-1
+  },
+  { // Entry 415
+    0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 416
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 417
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 418
+    0x1.25e4f7b2737fa14486612173c6896892p4,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 419
+    -0x1.25e4f7b2737fa14486612173c6896892p4,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 420
+    0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 421
+    -0x1.22a69334db8c97a62f8f72a5de7de462p4,
+    -0x1.ffffffffffffdp-1
+  },
+  { // Entry 422
+    0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    0x1.47ae147ae147ap-3
+  },
+  { // Entry 423
+    -0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    -0x1.47ae147ae147ap-3
+  },
+  { // Entry 424
+    0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 425
+    -0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 426
+    0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    0x1.47ae147ae147cp-3
+  },
+  { // Entry 427
+    -0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    -0x1.47ae147ae147cp-3
+  },
+  { // Entry 428
+    -0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    -0x1.47ae147ae147cp-3
+  },
+  { // Entry 429
+    0x1.4a851baf27b6f620f15c0ddd2962d721p-3,
+    0x1.47ae147ae147cp-3
+  },
+  { // Entry 430
+    -0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 431
+    0x1.4a851baf27b6e5b55490996c8137296ap-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 432
+    -0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    -0x1.47ae147ae147ap-3
+  },
+  { // Entry 433
+    0x1.4a851baf27b6d549b7c524fbd91644b2p-3,
+    0x1.47ae147ae147ap-3
+  },
+  { // Entry 434
+    0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 435
+    -0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 436
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 437
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 438
+    0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 439
+    -0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 440
+    0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 441
+    -0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 442
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.0p-2
+  },
+  { // Entry 443
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.0p-2
+  },
+  { // Entry 444
+    0x1.058aefa811452b8387cd4093155eafe4p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 445
+    -0x1.058aefa811452b8387cd4093155eafe4p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 446
+    0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 447
+    -0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 448
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.0p-3
+  },
+  { // Entry 449
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.0p-3
+  },
+  { // Entry 450
+    0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 451
+    -0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 452
+    0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 453
+    -0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 454
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.0p-4
+  },
+  { // Entry 455
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.0p-4
+  },
+  { // Entry 456
+    0x1.005588ad375adddb2322b573d6963771p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 457
+    -0x1.005588ad375adddb2322b573d6963771p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 458
+    0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 459
+    -0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 460
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.0p-5
+  },
+  { // Entry 461
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.0p-5
+  },
+  { // Entry 462
+    0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 463
+    -0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 464
+    0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 465
+    -0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 466
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.0p-6
+  },
+  { // Entry 467
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.0p-6
+  },
+  { // Entry 468
+    0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 469
+    -0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 470
+    0x1.000155588891a53723d0cfc25d992fd2p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 471
+    -0x1.000155588891a53723d0cfc25d992fd2p-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 472
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.0p-7
+  },
+  { // Entry 473
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.0p-7
+  },
+  { // Entry 474
+    0x1.000155588891bd3783d24fc85db13332p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 475
+    -0x1.000155588891bd3783d24fc85db13332p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 476
+    0x1.000055558888a51ae61ef133fc078f9ap-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 477
+    -0x1.000055558888a51ae61ef133fc078f9ap-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 478
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.0p-8
+  },
+  { // Entry 479
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.0p-8
+  },
+  { // Entry 480
+    0x1.000055558888bd1afe1f09341407a85bp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 481
+    -0x1.000055558888bd1afe1f09341407a85bp-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 482
+    0x1.000015555888811acfc98c1e9ae230fcp-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 483
+    -0x1.000015555888811acfc98c1e9ae230fcp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 484
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.0p-9
+  },
+  { // Entry 485
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.0p-9
+  },
+  { // Entry 486
+    0x1.000015555888991ad5c98d9e9b423144p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 487
+    -0x1.000015555888991ad5c98d9e9b423144p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 488
+    0x1.000005555588808ad12d373b75ab20a3p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 489
+    -0x1.000005555588808ad12d373b75ab20a3p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 490
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.0p-10
+  },
+  { // Entry 491
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.0p-10
+  },
+  { // Entry 492
+    0x1.000005555588988ad2ad375375aca0afp-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 493
+    -0x1.000005555588988ad2ad375375aca0afp-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 494
+    0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 495
+    -0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 496
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.0p-14
+  },
+  { // Entry 497
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.0p-14
+  },
+  { // Entry 498
+    0x1.000000055555658888898ad1ad2aee1ep-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 499
+    -0x1.000000055555658888898ad1ad2aee1ep-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 500
+    0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 501
+    -0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 502
+    0x1.00000000000000555555555555558888p-28,
+    0x1.0p-28
+  },
+  { // Entry 503
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.0p-28
+  },
+  { // Entry 504
+    0x1.00000000000010555555555555658888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 505
+    -0x1.00000000000010555555555555658888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 506
+    0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 507
+    -0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 508
+    0x1.00000000000000055555555555555588p-30,
+    0x1.0p-30
+  },
+  { // Entry 509
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.0p-30
+  },
+  { // Entry 510
+    0x1.00000000000010055555555555565588p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 511
+    -0x1.00000000000010055555555555565588p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 512
+    -0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 513
+    0x1.193ea7aad030becbf96ee2aa5b029927p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 514
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.0p-1
+  },
+  { // Entry 515
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.0p-1
+  },
+  { // Entry 516
+    -0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 517
+    0x1.193ea7aad0309ecbf96ee2aa5aad43d2p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 518
+    -0x1.058aefa811452b8387cd4093155eafe4p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 519
+    0x1.058aefa811452b8387cd4093155eafe4p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 520
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.0p-2
+  },
+  { // Entry 521
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.0p-2
+  },
+  { // Entry 522
+    -0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 523
+    0x1.058aefa8114511e9ee33a6f97bb76f0ap-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 524
+    -0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 525
+    0x1.015891c9eaef86da4a8a506fa1b18969p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 526
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.0p-3
+  },
+  { // Entry 527
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.0p-3
+  },
+  { // Entry 528
+    -0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 529
+    0x1.015891c9eaef6e78c471eee9894ceabdp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 530
+    -0x1.005588ad375adddb2322b573d6963771p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 531
+    0x1.005588ad375adddb2322b573d6963771p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 532
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.0p-4
+  },
+  { // Entry 533
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.0p-4
+  },
+  { // Entry 534
+    -0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 535
+    0x1.005588ad375ac5c30b0a9d5bbe7d5dd7p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 536
+    -0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 537
+    0x1.001558891aee34b89ed43dd5ba702a52p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 538
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.0p-5
+  },
+  { // Entry 539
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.0p-5
+  },
+  { // Entry 540
+    -0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 541
+    0x1.001558891aee1cb29d53ddbdb46e79d9p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 542
+    -0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 543
+    0x1.000555888ad1d98f0d4a572aded438c7p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 544
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.0p-6
+  },
+  { // Entry 545
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.0p-6
+  },
+  { // Entry 546
+    -0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 547
+    0x1.000555888ad1c18d8d3255aac6d2acadp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 548
+    -0x1.000155588891bd3783d24fc85db13332p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 549
+    0x1.000155588891bd3783d24fc85db13332p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 550
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.0p-7
+  },
+  { // Entry 551
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.0p-7
+  },
+  { // Entry 552
+    -0x1.000155588891a53723d0cfc25d992fd2p-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 553
+    0x1.000155588891a53723d0cfc25d992fd2p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 554
+    -0x1.000055558888bd1afe1f09341407a85bp-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 555
+    0x1.000055558888bd1afe1f09341407a85bp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 556
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.0p-8
+  },
+  { // Entry 557
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.0p-8
+  },
+  { // Entry 558
+    -0x1.000055558888a51ae61ef133fc078f9ap-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 559
+    0x1.000055558888a51ae61ef133fc078f9ap-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 560
+    -0x1.000015555888991ad5c98d9e9b423144p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 561
+    0x1.000015555888991ad5c98d9e9b423144p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 562
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.0p-9
+  },
+  { // Entry 563
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.0p-9
+  },
+  { // Entry 564
+    -0x1.000015555888811acfc98c1e9ae230fcp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 565
+    0x1.000015555888811acfc98c1e9ae230fcp-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 566
+    -0x1.000005555588988ad2ad375375aca0afp-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 567
+    0x1.000005555588988ad2ad375375aca0afp-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 568
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.0p-10
+  },
+  { // Entry 569
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.0p-10
+  },
+  { // Entry 570
+    -0x1.000005555588808ad12d373b75ab20a3p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 571
+    0x1.000005555588808ad12d373b75ab20a3p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 572
+    -0x1.000000055555658888898ad1ad2aee1ep-14,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 573
+    0x1.000000055555658888898ad1ad2aee1ep-14,
+    0x1.0000000000001p-14
+  },
+  { // Entry 574
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.0p-14
+  },
+  { // Entry 575
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.0p-14
+  },
+  { // Entry 576
+    -0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 577
+    0x1.0000000555554d8888880ad1ad12ee1ep-14,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 578
+    -0x1.00000000000010555555555555658888p-28,
+    -0x1.0000000000001p-28
+  },
+  { // Entry 579
+    0x1.00000000000010555555555555658888p-28,
+    0x1.0000000000001p-28
+  },
+  { // Entry 580
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.0p-28
+  },
+  { // Entry 581
+    0x1.00000000000000555555555555558888p-28,
+    0x1.0p-28
+  },
+  { // Entry 582
+    -0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    -0x1.fffffffffffffp-29
+  },
+  { // Entry 583
+    0x1.fffffffffffff0aaaaaaaaaaaa9b1111p-29,
+    0x1.fffffffffffffp-29
+  },
+  { // Entry 584
+    -0x1.00000000000010055555555555565588p-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 585
+    0x1.00000000000010055555555555565588p-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 586
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.0p-30
+  },
+  { // Entry 587
+    0x1.00000000000000055555555555555588p-30,
+    0x1.0p-30
+  },
+  { // Entry 588
+    -0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 589
+    0x1.fffffffffffff00aaaaaaaaaaaa9ab11p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 590
+    HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 591
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 592
+    0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 593
+    -0x1.2b708872320e1d31e4b03f1086a9c047p4,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 594
+    0x1.0f2eb070230688149a25318fd8d4ea0fp0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 595
+    -0x1.0f2eb070230688149a25318fd8d4ea0fp0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 596
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 597
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 598
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 599
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 600
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 601
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 602
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 603
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 604
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 605
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 606
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 607
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 608
+    0.0,
+    0.0
+  },
+  { // Entry 609
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/atanhf_intel_data.h b/tests/math_data/atanhf_intel_data.h
new file mode 100644
index 0000000..9d8025a
--- /dev/null
+++ b/tests/math_data/atanhf_intel_data.h
@@ -0,0 +1,2090 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_atanhf_intel_data[] = {
+  { // Entry 0
+    -0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    -0x1.1ffcp-20
+  },
+  { // Entry 1
+    0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    0x1.1ffcp-20
+  },
+  { // Entry 2
+    -0x1.5f3287f902075197c786c1cf696101b4p-1,
+    -0x1.30d35cp-1
+  },
+  { // Entry 3
+    0x1.5f3287f902075197c786c1cf696101b4p-1,
+    0x1.30d35cp-1
+  },
+  { // Entry 4
+    -0x1.8a0ca6ffdb34c70bb4a5b23fb6e19d01p-1,
+    -0x1.4b1df6p-1
+  },
+  { // Entry 5
+    0x1.8a0ca6ffdb34c70bb4a5b23fb6e19d01p-1,
+    0x1.4b1df6p-1
+  },
+  { // Entry 6
+    -0x1.6d46ff0031931d74cbb9c2cfd9429d8cp-3,
+    -0x1.6973e0p-3
+  },
+  { // Entry 7
+    0x1.6d46ff0031931d74cbb9c2cfd9429d8cp-3,
+    0x1.6973e0p-3
+  },
+  { // Entry 8
+    -0x1.713f610010deb18ee2e239f1963a1405p-12,
+    -0x1.713f60p-12
+  },
+  { // Entry 9
+    0x1.713f610010deb18ee2e239f1963a1405p-12,
+    0x1.713f60p-12
+  },
+  { // Entry 10
+    -0x1.7141490014d5f81f903df4950464cda8p-12,
+    -0x1.714148p-12
+  },
+  { // Entry 11
+    0x1.7141490014d5f81f903df4950464cda8p-12,
+    0x1.714148p-12
+  },
+  { // Entry 12
+    -0x1.714177001535ac6e291f246ad5579b0ep-12,
+    -0x1.714176p-12
+  },
+  { // Entry 13
+    0x1.714177001535ac6e291f246ad5579b0ep-12,
+    0x1.714176p-12
+  },
+  { // Entry 14
+    -0x1.15963da938a6c10a74aafac840a012a1p0,
+    -0x1.96efa2p-1
+  },
+  { // Entry 15
+    0x1.15963da938a6c10a74aafac840a012a1p0,
+    0x1.96efa2p-1
+  },
+  { // Entry 16
+    -0x1.17f6e9a62565d644cd0022d91487ef7bp0,
+    -0x1.98acaep-1
+  },
+  { // Entry 17
+    0x1.17f6e9a62565d644cd0022d91487ef7bp0,
+    0x1.98acaep-1
+  },
+  { // Entry 18
+    -0x1.1ba0f2fffc8e369353caacfa549acbf2p0,
+    -0x1.9b4dc0p-1
+  },
+  { // Entry 19
+    0x1.1ba0f2fffc8e369353caacfa549acbf2p0,
+    0x1.9b4dc0p-1
+  },
+  { // Entry 20
+    -0x1.2dd9b663e5ae06cd47d4cca1f6139598p0,
+    -0x1.a782a6p-1
+  },
+  { // Entry 21
+    0x1.2dd9b663e5ae06cd47d4cca1f6139598p0,
+    0x1.a782a6p-1
+  },
+  { // Entry 22
+    -0x1.cd2af1003fb97ed31a696564871fd18ap-4,
+    -0x1.cb3a9ap-4
+  },
+  { // Entry 23
+    0x1.cd2af1003fb97ed31a696564871fd18ap-4,
+    0x1.cb3a9ap-4
+  },
+  { // Entry 24
+    -0x1.d077fc01fda53b80967d942b1ffe2193p-16,
+    -0x1.d077fcp-16
+  },
+  { // Entry 25
+    0x1.d077fc01fda53b80967d942b1ffe2193p-16,
+    0x1.d077fcp-16
+  },
+  { // Entry 26
+    -0x1.fb0335b41665a445bad16a5da2454d1ap-3,
+    -0x1.f0e7p-3
+  },
+  { // Entry 27
+    0x1.fb0335b41665a445bad16a5da2454d1ap-3,
+    0x1.f0e7p-3
+  },
+  { // Entry 28
+    -0x1.fbbbe9001627e7188cb48f38c4820e35p-3,
+    -0x1.f194d0p-3
+  },
+  { // Entry 29
+    0x1.fbbbe9001627e7188cb48f38c4820e35p-3,
+    0x1.f194d0p-3
+  },
+  { // Entry 30
+    -0x1.193d550095876f79105e76c75ca58b2fp-1,
+    -0x1.fffe04p-2
+  },
+  { // Entry 31
+    0x1.193d550095876f79105e76c75ca58b2fp-1,
+    0x1.fffe04p-2
+  },
+  { // Entry 32
+    -0x1.193ea5002587c5e868720bc46d87505bp-1,
+    -0x1.fffffcp-2
+  },
+  { // Entry 33
+    0x1.193ea5002587c5e868720bc46d87505bp-1,
+    0x1.fffffcp-2
+  },
+  { // Entry 34
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 35
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 36
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 37
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 38
+    0x1.00000200000000000000155555d55556p-41,
+    0x1.000002p-41
+  },
+  { // Entry 39
+    -0x1.00000200000000000000155555d55556p-41,
+    -0x1.000002p-41
+  },
+  { // Entry 40
+    0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    0x1.000010p-1
+  },
+  { // Entry 41
+    -0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    -0x1.000010p-1
+  },
+  { // Entry 42
+    0x1.05901c768a92c5a23c8e8531ffe01945p-2,
+    0x1.0004dap-2
+  },
+  { // Entry 43
+    -0x1.05901c768a92c5a23c8e8531ffe01945p-2,
+    -0x1.0004dap-2
+  },
+  { // Entry 44
+    0x1.01d972ffff40cd1cf377322d5faca975p-6,
+    0x1.01d4p-6
+  },
+  { // Entry 45
+    -0x1.01d972ffff40cd1cf377322d5faca975p-6,
+    -0x1.01d4p-6
+  },
+  { // Entry 46
+    0x1.0b4d0560a980ef9bc645b2c29563e89fp-2,
+    0x1.0564p-2
+  },
+  { // Entry 47
+    -0x1.0b4d0560a980ef9bc645b2c29563e89fp-2,
+    -0x1.0564p-2
+  },
+  { // Entry 48
+    0x1.0616e1ffd00766707c845454688ac285p-5,
+    0x1.06p-5
+  },
+  { // Entry 49
+    -0x1.0616e1ffd00766707c845454688ac285p-5,
+    -0x1.06p-5
+  },
+  { // Entry 50
+    0x1.0c1a71e0f243aaabf988a086b92d8098p-2,
+    0x1.0624p-2
+  },
+  { // Entry 51
+    -0x1.0c1a71e0f243aaabf988a086b92d8098p-2,
+    -0x1.0624p-2
+  },
+  { // Entry 52
+    0x1.068016ffffd89ea5af86d140cc4499acp-9,
+    0x1.0680p-9
+  },
+  { // Entry 53
+    -0x1.068016ffffd89ea5af86d140cc4499acp-9,
+    -0x1.0680p-9
+  },
+  { // Entry 54
+    0x1.10f99a58d073173f64d078d1921d0abdp-2,
+    0x1.0ab0p-2
+  },
+  { // Entry 55
+    -0x1.10f99a58d073173f64d078d1921d0abdp-2,
+    -0x1.0ab0p-2
+  },
+  { // Entry 56
+    0x1.10022efcd204975cd5de2eb798c5a366p-4,
+    0x1.0f9cp-4
+  },
+  { // Entry 57
+    -0x1.10022efcd204975cd5de2eb798c5a366p-4,
+    -0x1.0f9cp-4
+  },
+  { // Entry 58
+    0x1.384c7bbb40817a713670eda9b1b1aacdp-1,
+    0x1.1694p-1
+  },
+  { // Entry 59
+    -0x1.384c7bbb40817a713670eda9b1b1aacdp-1,
+    -0x1.1694p-1
+  },
+  { // Entry 60
+    0x1.189a2700033273251e12d5eba90e4465p-3,
+    0x1.16dcp-3
+  },
+  { // Entry 61
+    -0x1.189a2700033273251e12d5eba90e4465p-3,
+    -0x1.16dcp-3
+  },
+  { // Entry 62
+    0x1.3a52accbc786f237ffb73633c18324fbp-1,
+    0x1.18p-1
+  },
+  { // Entry 63
+    -0x1.3a52accbc786f237ffb73633c18324fbp-1,
+    -0x1.18p-1
+  },
+  { // Entry 64
+    0x1.19c3b0fa86d540072c08c5d6b394b165p-3,
+    0x1.18p-3
+  },
+  { // Entry 65
+    -0x1.19c3b0fa86d540072c08c5d6b394b165p-3,
+    -0x1.18p-3
+  },
+  { // Entry 66
+    0x1.1c8f7300000b7dc0ff5b03e64623dec6p-4,
+    0x1.1c1a7ap-4
+  },
+  { // Entry 67
+    -0x1.1c8f7300000b7dc0ff5b03e64623dec6p-4,
+    -0x1.1c1a7ap-4
+  },
+  { // Entry 68
+    0x1.44f16a9bea7f03af529b037b235f31b5p-1,
+    0x1.1f5cp-1
+  },
+  { // Entry 69
+    -0x1.44f16a9bea7f03af529b037b235f31b5p-1,
+    -0x1.1f5cp-1
+  },
+  { // Entry 70
+    0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    0x1.1ffcp-20
+  },
+  { // Entry 71
+    -0x1.1ffc000000797af0120046e7dc31d3f5p-20,
+    -0x1.1ffcp-20
+  },
+  { // Entry 72
+    0x1.27f9cfc34385aff96fa7a25c9010711bp-2,
+    0x1.1ffffep-2
+  },
+  { // Entry 73
+    -0x1.27f9cfc34385aff96fa7a25c9010711bp-2,
+    -0x1.1ffffep-2
+  },
+  { // Entry 74
+    0x1.5deb9a83ee95c385ba5335580af08f08p-1,
+    0x1.30p-1
+  },
+  { // Entry 75
+    -0x1.5deb9a83ee95c385ba5335580af08f08p-1,
+    -0x1.30p-1
+  },
+  { // Entry 76
+    0x1.5e0e0298d9eec3ab8b4f4e1b8d295ac3p-1,
+    0x1.301646p-1
+  },
+  { // Entry 77
+    -0x1.5e0e0298d9eec3ab8b4f4e1b8d295ac3p-1,
+    -0x1.301646p-1
+  },
+  { // Entry 78
+    0x1.5e60e400006f52cb7692b6e8a51da384p-1,
+    0x1.304be6p-1
+  },
+  { // Entry 79
+    -0x1.5e60e400006f52cb7692b6e8a51da384p-1,
+    -0x1.304be6p-1
+  },
+  { // Entry 80
+    0x1.47f5170000024233854b6203d98d324fp-5,
+    0x1.47c844p-5
+  },
+  { // Entry 81
+    -0x1.47f5170000024233854b6203d98d324fp-5,
+    -0x1.47c844p-5
+  },
+  { // Entry 82
+    0x1.48ae1cfffeff307b13c17eb56fdcf7c2p-5,
+    0x1.4880fep-5
+  },
+  { // Entry 83
+    -0x1.48ae1cfffeff307b13c17eb56fdcf7c2p-5,
+    -0x1.4880fep-5
+  },
+  { // Entry 84
+    0x1.79d4c40000354d83f4c26c097b0e75fdp-2,
+    0x1.6991dap-2
+  },
+  { // Entry 85
+    -0x1.79d4c40000354d83f4c26c097b0e75fdp-2,
+    -0x1.6991dap-2
+  },
+  { // Entry 86
+    0x1.c7139f215feb3a72cf1b5e192f938ea4p-1,
+    0x1.6bef72p-1
+  },
+  { // Entry 87
+    -0x1.c7139f215feb3a72cf1b5e192f938ea4p-1,
+    -0x1.6bef72p-1
+  },
+  { // Entry 88
+    0x1.7140e3001401c1b014172d6fd91711aep-12,
+    0x1.7140e2p-12
+  },
+  { // Entry 89
+    -0x1.7140e3001401c1b014172d6fd91711aep-12,
+    -0x1.7140e2p-12
+  },
+  { // Entry 90
+    0x1.e05648db7af67a5476dcef31c7834740p-1,
+    0x1.77fffep-1
+  },
+  { // Entry 91
+    -0x1.e05648db7af67a5476dcef31c7834740p-1,
+    -0x1.77fffep-1
+  },
+  { // Entry 92
+    0x1.77fffe0000000010e5f5104d55b356b3p-30,
+    0x1.77fffep-30
+  },
+  { // Entry 93
+    -0x1.77fffe0000000010e5f5104d55b356b3p-30,
+    -0x1.77fffep-30
+  },
+  { // Entry 94
+    0x1.93b0aee21c2c808f5840a8fdec9984e1p-2,
+    0x1.80p-2
+  },
+  { // Entry 95
+    -0x1.93b0aee21c2c808f5840a8fdec9984e1p-2,
+    -0x1.80p-2
+  },
+  { // Entry 96
+    0x1.f22781be9e69629e565cb27d7e8be241p-1,
+    0x1.800026p-1
+  },
+  { // Entry 97
+    -0x1.f22781be9e69629e565cb27d7e8be241p-1,
+    -0x1.800026p-1
+  },
+  { // Entry 98
+    0x1.f22a81c2c1df6e290a34d78c0e42165fp-1,
+    0x1.800176p-1
+  },
+  { // Entry 99
+    -0x1.f22a81c2c1df6e290a34d78c0e42165fp-1,
+    -0x1.800176p-1
+  },
+  { // Entry 100
+    0x1.f4d9b1f449f9637049f465ad813677cdp-1,
+    0x1.812ceap-1
+  },
+  { // Entry 101
+    -0x1.f4d9b1f449f9637049f465ad813677cdp-1,
+    -0x1.812ceap-1
+  },
+  { // Entry 102
+    0x1.f6a98a347aefdfbfdfc26e6c5fd39d63p-1,
+    0x1.81f5b6p-1
+  },
+  { // Entry 103
+    -0x1.f6a98a347aefdfbfdfc26e6c5fd39d63p-1,
+    -0x1.81f5b6p-1
+  },
+  { // Entry 104
+    0x1.f6b16e036a1228e2d7592b99921a73fdp-1,
+    0x1.81f91ep-1
+  },
+  { // Entry 105
+    -0x1.f6b16e036a1228e2d7592b99921a73fdp-1,
+    -0x1.81f91ep-1
+  },
+  { // Entry 106
+    0x1.879115ffff8980f9da1405781afd63e0p-3,
+    0x1.82dd3cp-3
+  },
+  { // Entry 107
+    -0x1.879115ffff8980f9da1405781afd63e0p-3,
+    -0x1.82dd3cp-3
+  },
+  { // Entry 108
+    0x1.87f3fb0000ab210be606ca39761681bdp-7,
+    0x1.87ef32p-7
+  },
+  { // Entry 109
+    -0x1.87f3fb0000ab210be606ca39761681bdp-7,
+    -0x1.87ef32p-7
+  },
+  { // Entry 110
+    0x1.8c680b3adda5a66ad6d8da856236ff97p-7,
+    0x1.8c6318p-7
+  },
+  { // Entry 111
+    -0x1.8c680b3adda5a66ad6d8da856236ff97p-7,
+    -0x1.8c6318p-7
+  },
+  { // Entry 112
+    0x1.9aa64d00181abc40f45d08711a8a0e2dp-3,
+    0x1.953bb8p-3
+  },
+  { // Entry 113
+    -0x1.9aa64d00181abc40f45d08711a8a0e2dp-3,
+    -0x1.953bb8p-3
+  },
+  { // Entry 114
+    0x1.99ba390011821eb8ba2f398e3ec3cbd2p-4,
+    0x1.985dc4p-4
+  },
+  { // Entry 115
+    -0x1.99ba390011821eb8ba2f398e3ec3cbd2p-4,
+    -0x1.985dc4p-4
+  },
+  { // Entry 116
+    0x1.a05bacfcccc788b02291ff2a73385befp-5,
+    0x1.9ffffep-5
+  },
+  { // Entry 117
+    -0x1.a05bacfcccc788b02291ff2a73385befp-5,
+    -0x1.9ffffep-5
+  },
+  { // Entry 118
+    0x1.a64fb7002d9b9b7248958431d95f77ebp-4,
+    0x1.a4d240p-4
+  },
+  { // Entry 119
+    -0x1.a64fb7002d9b9b7248958431d95f77ebp-4,
+    -0x1.a4d240p-4
+  },
+  { // Entry 120
+    0x1.a64908fbec59b6b02d326674ded2f9f2p-5,
+    0x1.a5e962p-5
+  },
+  { // Entry 121
+    -0x1.a64908fbec59b6b02d326674ded2f9f2p-5,
+    -0x1.a5e962p-5
+  },
+  { // Entry 122
+    0x1.b192470000fb2118da687cc4160f98c6p-6,
+    0x1.b17860p-6
+  },
+  { // Entry 123
+    -0x1.b192470000fb2118da687cc4160f98c6p-6,
+    -0x1.b17860p-6
+  },
+  { // Entry 124
+    0x1.d6f45cc922663f64dfff1989368eafd0p-2,
+    0x1.b8562ap-2
+  },
+  { // Entry 125
+    -0x1.d6f45cc922663f64dfff1989368eafd0p-2,
+    -0x1.b8562ap-2
+  },
+  { // Entry 126
+    0x1.dad882760031b0b207eec53f2bad3a56p-2,
+    0x1.bb80c8p-2
+  },
+  { // Entry 127
+    -0x1.dad882760031b0b207eec53f2bad3a56p-2,
+    -0x1.bb80c8p-2
+  },
+  { // Entry 128
+    0x1.bcef0900070bb4d60dba7d7916e44f1cp-11,
+    0x1.bcef02p-11
+  },
+  { // Entry 129
+    -0x1.bcef0900070bb4d60dba7d7916e44f1cp-11,
+    -0x1.bcef02p-11
+  },
+  { // Entry 130
+    0x1.e0648f29a5cb8fa830357eb28463b371p-2,
+    0x1.bfffbep-2
+  },
+  { // Entry 131
+    -0x1.e0648f29a5cb8fa830357eb28463b371p-2,
+    -0x1.bfffbep-2
+  },
+  { // Entry 132
+    0x1.c2e5e80000474fca411deeabc2d871b2p-6,
+    0x1.c2c8c6p-6
+  },
+  { // Entry 133
+    -0x1.c2e5e80000474fca411deeabc2d871b2p-6,
+    -0x1.c2c8c6p-6
+  },
+  { // Entry 134
+    0x1.c997430019b045d79984044543bd4322p-4,
+    0x1.c7b258p-4
+  },
+  { // Entry 135
+    -0x1.c997430019b045d79984044543bd4322p-4,
+    -0x1.c7b258p-4
+  },
+  { // Entry 136
+    0x1.6cc8dca857314e6901156d00f8a3b682p0,
+    0x1.c7fffep-1
+  },
+  { // Entry 137
+    -0x1.6cc8dca857314e6901156d00f8a3b682p0,
+    -0x1.c7fffep-1
+  },
+  { // Entry 138
+    0x1.c7fffe01e245f9ab162301990550caa9p-16,
+    0x1.c7fffep-16
+  },
+  { // Entry 139
+    -0x1.c7fffe01e245f9ab162301990550caa9p-16,
+    -0x1.c7fffep-16
+  },
+  { // Entry 140
+    0x1.ed65267d01a1db540b37753c51d66426p-2,
+    0x1.ca7436p-2
+  },
+  { // Entry 141
+    -0x1.ed65267d01a1db540b37753c51d66426p-2,
+    -0x1.ca7436p-2
+  },
+  { // Entry 142
+    0x1.d48af32968fa3b34457bcff03db0622dp-3,
+    0x1.cc8928p-3
+  },
+  { // Entry 143
+    -0x1.d48af32968fa3b34457bcff03db0622dp-3,
+    -0x1.cc8928p-3
+  },
+  { // Entry 144
+    0x1.f0c2d8fffefca01290c2ef36330c9115p-2,
+    0x1.cd242cp-2
+  },
+  { // Entry 145
+    -0x1.f0c2d8fffefca01290c2ef36330c9115p-2,
+    -0x1.cd242cp-2
+  },
+  { // Entry 146
+    0x1.ce535efa32f0cec15b3bccf05c079f19p-5,
+    0x1.cdd5e0p-5
+  },
+  { // Entry 147
+    -0x1.ce535efa32f0cec15b3bccf05c079f19p-5,
+    -0x1.cdd5e0p-5
+  },
+  { // Entry 148
+    0x1.d0703e01fd8bbf96395ed2f62f54fdcap-16,
+    0x1.d0703ep-16
+  },
+  { // Entry 149
+    -0x1.d0703e01fd8bbf96395ed2f62f54fdcap-16,
+    -0x1.d0703ep-16
+  },
+  { // Entry 150
+    0x1.f84fd66cf58e3da9e2d75ce683cca2d0p-2,
+    0x1.d32406p-2
+  },
+  { // Entry 151
+    -0x1.f84fd66cf58e3da9e2d75ce683cca2d0p-2,
+    -0x1.d32406p-2
+  },
+  { // Entry 152
+    0x1.dca60100427d4d26515dcb19009e0fe7p-4,
+    0x1.da822cp-4
+  },
+  { // Entry 153
+    -0x1.dca60100427d4d26515dcb19009e0fe7p-4,
+    -0x1.da822cp-4
+  },
+  { // Entry 154
+    0x1.f19057907b6a6fe84ba8e4830b7a0799p-3,
+    0x1.e7fffep-3
+  },
+  { // Entry 155
+    -0x1.f19057907b6a6fe84ba8e4830b7a0799p-3,
+    -0x1.e7fffep-3
+  },
+  { // Entry 156
+    0x1.ef311b0049dc13b5b0e01b868b4cfc92p-4,
+    0x1.eccb14p-4
+  },
+  { // Entry 157
+    -0x1.ef311b0049dc13b5b0e01b868b4cfc92p-4,
+    -0x1.eccb14p-4
+  },
+  { // Entry 158
+    0x1.ee703b40bad448188d321c9cf1c77c2fp-6,
+    0x1.ee49d2p-6
+  },
+  { // Entry 159
+    -0x1.ee703b40bad448188d321c9cf1c77c2fp-6,
+    -0x1.ee49d2p-6
+  },
+  { // Entry 160
+    0x1.efa28ecceba94af00baf6a70399b27c5p-6,
+    0x1.ef7bdep-6
+  },
+  { // Entry 161
+    -0x1.efa28ecceba94af00baf6a70399b27c5p-6,
+    -0x1.ef7bdep-6
+  },
+  { // Entry 162
+    0x1.fa0dc7b72c16fcd1b16623d79ed72b48p-3,
+    0x1.effffep-3
+  },
+  { // Entry 163
+    -0x1.fa0dc7b72c16fcd1b16623d79ed72b48p-3,
+    -0x1.effffep-3
+  },
+  { // Entry 164
+    0x1.f479ce9e62f1de793e626c5e4cd483bfp-4,
+    0x1.f1fffep-4
+  },
+  { // Entry 165
+    -0x1.f479ce9e62f1de793e626c5e4cd483bfp-4,
+    -0x1.f1fffep-4
+  },
+  { // Entry 166
+    0x1.f48dfd004492424a2242a7f1b84fde43p-4,
+    0x1.f213e0p-4
+  },
+  { // Entry 167
+    -0x1.f48dfd004492424a2242a7f1b84fde43p-4,
+    -0x1.f213e0p-4
+  },
+  { // Entry 168
+    0x1.f55565004e1ba77f8c68954d58ad9522p-4,
+    0x1.f2d854p-4
+  },
+  { // Entry 169
+    -0x1.f55565004e1ba77f8c68954d58ad9522p-4,
+    -0x1.f2d854p-4
+  },
+  { // Entry 170
+    0x1.fec794ffff80de6f133ff791c5439d8ep-3,
+    0x1.f47232p-3
+  },
+  { // Entry 171
+    -0x1.fec794ffff80de6f133ff791c5439d8ep-3,
+    -0x1.f47232p-3
+  },
+  { // Entry 172
+    0x1.f813e9004d5cdfb063728666fb66e97fp-4,
+    0x1.f58c5ep-4
+  },
+  { // Entry 173
+    -0x1.f813e9004d5cdfb063728666fb66e97fp-4,
+    -0x1.f58c5ep-4
+  },
+  { // Entry 174
+    0x1.f7b721ffff991c706d90945105ec030fp-7,
+    0x1.f7acfap-7
+  },
+  { // Entry 175
+    -0x1.f7b721ffff991c706d90945105ec030fp-7,
+    -0x1.f7acfap-7
+  },
+  { // Entry 176
+    0x1.fbd5f50051fbc9e55c8b2be9e9e21851p-4,
+    0x1.f93fe2p-4
+  },
+  { // Entry 177
+    -0x1.fbd5f50051fbc9e55c8b2be9e9e21851p-4,
+    -0x1.f93fe2p-4
+  },
+  { // Entry 178
+    0x1.fcfaff0050f8ca3009ab7b1e46b4ec9dp-4,
+    0x1.fa6074p-4
+  },
+  { // Entry 179
+    -0x1.fcfaff0050f8ca3009ab7b1e46b4ec9dp-4,
+    -0x1.fa6074p-4
+  },
+  { // Entry 180
+    0x1.03a8a30006385ed65d745b5dec7c194ep-2,
+    0x1.fc7746p-3
+  },
+  { // Entry 181
+    -0x1.03a8a30006385ed65d745b5dec7c194ep-2,
+    -0x1.fc7746p-3
+  },
+  { // Entry 182
+    0x1.fe2a317243079e4fdd1cb855c975cdf1p-6,
+    0x1.fep-6
+  },
+  { // Entry 183
+    -0x1.fe2a317243079e4fdd1cb855c975cdf1p-6,
+    -0x1.fep-6
+  },
+  { // Entry 184
+    0x1.fe82db7456cf5b9b9edf1b4b77c994bdp-6,
+    0x1.fe5894p-6
+  },
+  { // Entry 185
+    -0x1.fe82db7456cf5b9b9edf1b4b77c994bdp-6,
+    -0x1.fe5894p-6
+  },
+  { // Entry 186
+    0x1.ffeaa710f5a6e8d16dc905e338c0200fp-7,
+    0x1.ffdffep-7
+  },
+  { // Entry 187
+    -0x1.ffeaa710f5a6e8d16dc905e338c0200fp-7,
+    -0x1.ffdffep-7
+  },
+  { // Entry 188
+    0x1.7d33cb0c02505f47778ae337ae72ec1fp2,
+    0x1.fffe3ep-1
+  },
+  { // Entry 189
+    -0x1.7d33cb0c02505f47778ae337ae72ec1fp2,
+    -0x1.fffe3ep-1
+  },
+  { // Entry 190
+    0x1.193e51002cdbc475975ff766fbd1f6b5p-1,
+    0x1.ffff7ep-2
+  },
+  { // Entry 191
+    -0x1.193e51002cdbc475975ff766fbd1f6b5p-1,
+    -0x1.ffff7ep-2
+  },
+  { // Entry 192
+    0x1.000514847a91cdaebaecfa77f6111dd9p-6,
+    0x1.ffff7ep-7
+  },
+  { // Entry 193
+    -0x1.000514847a91cdaebaecfa77f6111dd9p-6,
+    -0x1.ffff7ep-7
+  },
+  { // Entry 194
+    0x1.193ea5002587c5e868720bc46d87505bp-1,
+    0x1.fffffcp-2
+  },
+  { // Entry 195
+    -0x1.193ea5002587c5e868720bc46d87505bp-1,
+    -0x1.fffffcp-2
+  },
+  { // Entry 196
+    0x1.fffffcaaaaa71111155a35aa3dc3d06cp-13,
+    0x1.fffffcp-13
+  },
+  { // Entry 197
+    -0x1.fffffcaaaaa71111155a35aa3dc3d06cp-13,
+    -0x1.fffffcp-13
+  },
+  { // Entry 198
+    -0x1.31dd2cd1386933d1d890b6a9703c16adp1,
+    -0x1.f77778p-1
+  },
+  { // Entry 199
+    0x1.31dd2cd1386933d1d890b6a9703c16adp1,
+    0x1.f77778p-1
+  },
+  { // Entry 200
+    -0x1.04f663adcdd5e8864c55a5751a0b17b7p1,
+    -0x1.eeeef0p-1
+  },
+  { // Entry 201
+    0x1.04f663adcdd5e8864c55a5751a0b17b7p1,
+    0x1.eeeef0p-1
+  },
+  { // Entry 202
+    -0x1.d4ef9ebd04658e641423a6ed3defe0dap0,
+    -0x1.e66668p-1
+  },
+  { // Entry 203
+    0x1.d4ef9ebd04658e641423a6ed3defe0dap0,
+    0x1.e66668p-1
+  },
+  { // Entry 204
+    -0x1.af0395037f075cc7baefa38ef81f508fp0,
+    -0x1.dddde0p-1
+  },
+  { // Entry 205
+    0x1.af0395037f075cc7baefa38ef81f508fp0,
+    0x1.dddde0p-1
+  },
+  { // Entry 206
+    -0x1.9157e83626a045c7caf65f13d23b0dd3p0,
+    -0x1.d55558p-1
+  },
+  { // Entry 207
+    0x1.9157e83626a045c7caf65f13d23b0dd3p0,
+    0x1.d55558p-1
+  },
+  { // Entry 208
+    -0x1.78e368cc158d8c46dcfa1f8a88963aa4p0,
+    -0x1.ccccd0p-1
+  },
+  { // Entry 209
+    0x1.78e368cc158d8c46dcfa1f8a88963aa4p0,
+    0x1.ccccd0p-1
+  },
+  { // Entry 210
+    -0x1.64077e53bbdd057c995616b489d53cf4p0,
+    -0x1.c44448p-1
+  },
+  { // Entry 211
+    0x1.64077e53bbdd057c995616b489d53cf4p0,
+    0x1.c44448p-1
+  },
+  { // Entry 212
+    -0x1.51cca9ffc51eb62dad1c2d513ab87a52p0,
+    -0x1.bbbbc0p-1
+  },
+  { // Entry 213
+    0x1.51cca9ffc51eb62dad1c2d513ab87a52p0,
+    0x1.bbbbc0p-1
+  },
+  { // Entry 214
+    -0x1.419343b452798f95458545b3a8e5c365p0,
+    -0x1.b33338p-1
+  },
+  { // Entry 215
+    0x1.419343b452798f95458545b3a8e5c365p0,
+    0x1.b33338p-1
+  },
+  { // Entry 216
+    -0x1.32ee4432223fd6ff7fc96b745a339d15p0,
+    -0x1.aaaab0p-1
+  },
+  { // Entry 217
+    0x1.32ee4432223fd6ff7fc96b745a339d15p0,
+    0x1.aaaab0p-1
+  },
+  { // Entry 218
+    -0x1.258fe3b6e537bb3292f6d7e4afbb9d07p0,
+    -0x1.a22228p-1
+  },
+  { // Entry 219
+    0x1.258fe3b6e537bb3292f6d7e4afbb9d07p0,
+    0x1.a22228p-1
+  },
+  { // Entry 220
+    -0x1.193eb08e5ea8c2c200b0e99c5a36fddep0,
+    -0x1.9999a0p-1
+  },
+  { // Entry 221
+    0x1.193eb08e5ea8c2c200b0e99c5a36fddep0,
+    0x1.9999a0p-1
+  },
+  { // Entry 222
+    -0x1.0dcf079da2f030ae3fbf6b6f92a2a743p0,
+    -0x1.911118p-1
+  },
+  { // Entry 223
+    0x1.0dcf079da2f030ae3fbf6b6f92a2a743p0,
+    0x1.911118p-1
+  },
+  { // Entry 224
+    -0x1.031efa1f0ecc8f3a906dd42d8c2123cbp0,
+    -0x1.888890p-1
+  },
+  { // Entry 225
+    0x1.031efa1f0ecc8f3a906dd42d8c2123cbp0,
+    0x1.888890p-1
+  },
+  { // Entry 226
+    -0x1.f2273d2c4ab521b4cd487640ff959135p-1,
+    -0x1.800008p-1
+  },
+  { // Entry 227
+    0x1.f2273d2c4ab521b4cd487640ff959135p-1,
+    0x1.800008p-1
+  },
+  { // Entry 228
+    -0x1.df2e7fe4879a14bed3444cebeb14e17ap-1,
+    -0x1.777780p-1
+  },
+  { // Entry 229
+    0x1.df2e7fe4879a14bed3444cebeb14e17ap-1,
+    0x1.777780p-1
+  },
+  { // Entry 230
+    -0x1.cd3033baff79597658ed84a70792b418p-1,
+    -0x1.6eeef8p-1
+  },
+  { // Entry 231
+    0x1.cd3033baff79597658ed84a70792b418p-1,
+    0x1.6eeef8p-1
+  },
+  { // Entry 232
+    -0x1.bc0ee367530d66cc841d5f9d30c2b886p-1,
+    -0x1.666670p-1
+  },
+  { // Entry 233
+    0x1.bc0ee367530d66cc841d5f9d30c2b886p-1,
+    0x1.666670p-1
+  },
+  { // Entry 234
+    -0x1.abb1dc08e18126620d575aabc793b2a9p-1,
+    -0x1.5ddde8p-1
+  },
+  { // Entry 235
+    0x1.abb1dc08e18126620d575aabc793b2a9p-1,
+    0x1.5ddde8p-1
+  },
+  { // Entry 236
+    -0x1.9c0432b20c814b3021011c479a51acefp-1,
+    -0x1.555560p-1
+  },
+  { // Entry 237
+    0x1.9c0432b20c814b3021011c479a51acefp-1,
+    0x1.555560p-1
+  },
+  { // Entry 238
+    -0x1.8cf4071c6b253657280e30019b42b6cbp-1,
+    -0x1.4cccd8p-1
+  },
+  { // Entry 239
+    0x1.8cf4071c6b253657280e30019b42b6cbp-1,
+    0x1.4cccd8p-1
+  },
+  { // Entry 240
+    -0x1.7e71f26de777bc532a40c40569e80be7p-1,
+    -0x1.444450p-1
+  },
+  { // Entry 241
+    0x1.7e71f26de777bc532a40c40569e80be7p-1,
+    0x1.444450p-1
+  },
+  { // Entry 242
+    -0x1.7070964a5465019869be4292807243adp-1,
+    -0x1.3bbbc8p-1
+  },
+  { // Entry 243
+    0x1.7070964a5465019869be4292807243adp-1,
+    0x1.3bbbc8p-1
+  },
+  { // Entry 244
+    -0x1.62e443efa416f35cfe72519ab5c49833p-1,
+    -0x1.333340p-1
+  },
+  { // Entry 245
+    0x1.62e443efa416f35cfe72519ab5c49833p-1,
+    0x1.333340p-1
+  },
+  { // Entry 246
+    -0x1.55c2b577a316f398743bc84818a8366dp-1,
+    -0x1.2aaab8p-1
+  },
+  { // Entry 247
+    0x1.55c2b577a316f398743bc84818a8366dp-1,
+    0x1.2aaab8p-1
+  },
+  { // Entry 248
+    -0x1.4902d4f8dcabba59533687adf378fc3bp-1,
+    -0x1.222230p-1
+  },
+  { // Entry 249
+    0x1.4902d4f8dcabba59533687adf378fc3bp-1,
+    0x1.222230p-1
+  },
+  { // Entry 250
+    -0x1.3c9c8e61aec973e370031a7719321089p-1,
+    -0x1.1999a8p-1
+  },
+  { // Entry 251
+    0x1.3c9c8e61aec973e370031a7719321089p-1,
+    0x1.1999a8p-1
+  },
+  { // Entry 252
+    -0x1.3088a9b5ad202b17e52d8601513662b0p-1,
+    -0x1.111120p-1
+  },
+  { // Entry 253
+    0x1.3088a9b5ad202b17e52d8601513662b0p-1,
+    0x1.111120p-1
+  },
+  { // Entry 254
+    -0x1.24c0abe8e973d6e99acbd15484fd64f1p-1,
+    -0x1.088898p-1
+  },
+  { // Entry 255
+    0x1.24c0abe8e973d6e99acbd15484fd64f1p-1,
+    0x1.088898p-1
+  },
+  { // Entry 256
+    -0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    -0x1.000010p-1
+  },
+  { // Entry 257
+    0x1.193ebd0025f7c5edf31cf5a0e285059ep-1,
+    0x1.000010p-1
+  },
+  { // Entry 258
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 259
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 260
+    0x1.24c0961556d0aa95d6fb6c106b236048p-1,
+    0x1.088888p-1
+  },
+  { // Entry 261
+    -0x1.24c0961556d0aa95d6fb6c106b236048p-1,
+    -0x1.088888p-1
+  },
+  { // Entry 262
+    0x1.30889359736e9acf9152fe43f28f7dcdp-1,
+    0x1.111110p-1
+  },
+  { // Entry 263
+    -0x1.30889359736e9acf9152fe43f28f7dcdp-1,
+    -0x1.111110p-1
+  },
+  { // Entry 264
+    0x1.3c9c77714791547aab37a433668ebfb8p-1,
+    0x1.199998p-1
+  },
+  { // Entry 265
+    -0x1.3c9c77714791547aab37a433668ebfb8p-1,
+    -0x1.199998p-1
+  },
+  { // Entry 266
+    0x1.4902bd6778eba4dde3659bd4e4b3b796p-1,
+    0x1.222220p-1
+  },
+  { // Entry 267
+    -0x1.4902bd6778eba4dde3659bd4e4b3b796p-1,
+    -0x1.222220p-1
+  },
+  { // Entry 268
+    0x1.55c29d36f62e0342a6067b58817783bep-1,
+    0x1.2aaaa8p-1
+  },
+  { // Entry 269
+    -0x1.55c29d36f62e0342a6067b58817783bep-1,
+    -0x1.2aaaa8p-1
+  },
+  { // Entry 270
+    0x1.62e42aefa3a673577e1cbcc51d3a75b3p-1,
+    0x1.333330p-1
+  },
+  { // Entry 271
+    -0x1.62e42aefa3a673577e1cbcc51d3a75b3p-1,
+    -0x1.333330p-1
+  },
+  { // Entry 272
+    0x1.70707c78ea48dcd2be90243420138634p-1,
+    0x1.3bbbb8p-1
+  },
+  { // Entry 273
+    -0x1.70707c78ea48dcd2be90243420138634p-1,
+    -0x1.3bbbb8p-1
+  },
+  { // Entry 274
+    0x1.7e71d7b69209fbf8a31f61e28fb38405p-1,
+    0x1.444440p-1
+  },
+  { // Entry 275
+    -0x1.7e71d7b69209fbf8a31f61e28fb38405p-1,
+    -0x1.444440p-1
+  },
+  { // Entry 276
+    0x1.8cf3eb67c6bcfdb506baa6ecb5f2d950p-1,
+    0x1.4cccc8p-1
+  },
+  { // Entry 277
+    -0x1.8cf3eb67c6bcfdb506baa6ecb5f2d950p-1,
+    -0x1.4cccc8p-1
+  },
+  { // Entry 278
+    0x1.9c0415e53f585567855afd0c32aa7e17p-1,
+    0x1.555550p-1
+  },
+  { // Entry 279
+    -0x1.9c0415e53f585567855afd0c32aa7e17p-1,
+    -0x1.555550p-1
+  },
+  { // Entry 280
+    0x1.abb1be04e0a675ba1948b8fb1841584cp-1,
+    0x1.5dddd8p-1
+  },
+  { // Entry 281
+    -0x1.abb1be04e0a675ba1948b8fb1841584cp-1,
+    -0x1.5dddd8p-1
+  },
+  { // Entry 282
+    0x1.bc0ec407f36921e00a5bfee526dd0834p-1,
+    0x1.666660p-1
+  },
+  { // Entry 283
+    -0x1.bc0ec407f36921e00a5bfee526dd0834p-1,
+    -0x1.666660p-1
+  },
+  { // Entry 284
+    0x1.cd3012d5c08d242886fcc0f61668a3d5p-1,
+    0x1.6eeee8p-1
+  },
+  { // Entry 285
+    -0x1.cd3012d5c08d242886fcc0f61668a3d5p-1,
+    -0x1.6eeee8p-1
+  },
+  { // Entry 286
+    0x1.df2e5d46fda42cf27a71863b4cf7c7e6p-1,
+    0x1.777770p-1
+  },
+  { // Entry 287
+    -0x1.df2e5d46fda42cf27a71863b4cf7c7e6p-1,
+    -0x1.777770p-1
+  },
+  { // Entry 288
+    0x1.f227189a01908f60f615760148cb8e3fp-1,
+    0x1.7ffff8p-1
+  },
+  { // Entry 289
+    -0x1.f227189a01908f60f615760148cb8e3fp-1,
+    -0x1.7ffff8p-1
+  },
+  { // Entry 290
+    0x1.031ee6b6dd313b8e955cf0deb74b13d5p0,
+    0x1.888880p-1
+  },
+  { // Entry 291
+    -0x1.031ee6b6dd313b8e955cf0deb74b13d5p0,
+    -0x1.888880p-1
+  },
+  { // Entry 292
+    0x1.0dcef2e94717cf54ab5e3d4ae7c6ab03p0,
+    0x1.911108p-1
+  },
+  { // Entry 293
+    -0x1.0dcef2e94717cf54ab5e3d4ae7c6ab03p0,
+    -0x1.911108p-1
+  },
+  { // Entry 294
+    0x1.193e9a557b698cfbd9d4a767ef99c767p0,
+    0x1.999990p-1
+  },
+  { // Entry 295
+    -0x1.193e9a557b698cfbd9d4a767ef99c767p0,
+    -0x1.999990p-1
+  },
+  { // Entry 296
+    0x1.258fcbb1c5e534f37ad64a1e99a869e8p0,
+    0x1.a22218p-1
+  },
+  { // Entry 297
+    -0x1.258fcbb1c5e534f37ad64a1e99a869e8p0,
+    -0x1.a22218p-1
+  },
+  { // Entry 298
+    0x1.32ee2a03975b57f64a84528990be1f9ap0,
+    0x1.aaaaa0p-1
+  },
+  { // Entry 299
+    -0x1.32ee2a03975b57f64a84528990be1f9ap0,
+    -0x1.aaaaa0p-1
+  },
+  { // Entry 300
+    0x1.419326e02573d8b3acc7cbf76968fe33p0,
+    0x1.b33328p-1
+  },
+  { // Entry 301
+    -0x1.419326e02573d8b3acc7cbf76968fe33p0,
+    -0x1.b33328p-1
+  },
+  { // Entry 302
+    0x1.51cc89db34776ccef56dd618e02f1da6p0,
+    0x1.bbbbb0p-1
+  },
+  { // Entry 303
+    -0x1.51cc89db34776ccef56dd618e02f1da6p0,
+    -0x1.bbbbb0p-1
+  },
+  { // Entry 304
+    0x1.640759eae23a226a9d7c3926242da006p0,
+    0x1.c44438p-1
+  },
+  { // Entry 305
+    -0x1.640759eae23a226a9d7c3926242da006p0,
+    -0x1.c44438p-1
+  },
+  { // Entry 306
+    0x1.78e33eb126c4263142e4f9584dfaa238p0,
+    0x1.ccccc0p-1
+  },
+  { // Entry 307
+    -0x1.78e33eb126c4263142e4f9584dfaa238p0,
+    -0x1.ccccc0p-1
+  },
+  { // Entry 308
+    0x1.9157b61fe9d5041ad9f9720e3ae0d7c0p0,
+    0x1.d55548p-1
+  },
+  { // Entry 309
+    -0x1.9157b61fe9d5041ad9f9720e3ae0d7c0p0,
+    -0x1.d55548p-1
+  },
+  { // Entry 310
+    0x1.af0356f1e19ad530d89ec545995495b6p0,
+    0x1.ddddd0p-1
+  },
+  { // Entry 311
+    -0x1.af0356f1e19ad530d89ec545995495b6p0,
+    -0x1.ddddd0p-1
+  },
+  { // Entry 312
+    0x1.d4ef4caff7901be8dda0560383f995f5p0,
+    0x1.e66658p-1
+  },
+  { // Entry 313
+    -0x1.d4ef4caff7901be8dda0560383f995f5p0,
+    -0x1.e66658p-1
+  },
+  { // Entry 314
+    0x1.04f626a98f6c7775f5aa272dfa30aa0cp1,
+    0x1.eeeee0p-1
+  },
+  { // Entry 315
+    -0x1.04f626a98f6c7775f5aa272dfa30aa0cp1,
+    -0x1.eeeee0p-1
+  },
+  { // Entry 316
+    0x1.31dcb3cf7aadccb53ddc6ab3e5f44cf1p1,
+    0x1.f77768p-1
+  },
+  { // Entry 317
+    -0x1.31dcb3cf7aadccb53ddc6ab3e5f44cf1p1,
+    -0x1.f77768p-1
+  },
+  { // Entry 318
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 319
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 320
+    -0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    -0x1.fffffcp-1
+  },
+  { // Entry 321
+    0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    0x1.fffffcp-1
+  },
+  { // Entry 322
+    -0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    -0x1.fffffap-1
+  },
+  { // Entry 323
+    0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    0x1.fffffap-1
+  },
+  { // Entry 324
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 325
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 326
+    0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    0x1.fffffcp-1
+  },
+  { // Entry 327
+    -0x1.0a2b23e3bab72e81aed0380eac971caep3,
+    -0x1.fffffcp-1
+  },
+  { // Entry 328
+    0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    0x1.fffffap-1
+  },
+  { // Entry 329
+    -0x1.03ae5ae08ad1118501202fc82197e98ep3,
+    -0x1.fffffap-1
+  },
+  { // Entry 330
+    0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 331
+    -0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 332
+    0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 333
+    -0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 334
+    0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    0x1.47ae16p-3
+  },
+  { // Entry 335
+    -0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    -0x1.47ae16p-3
+  },
+  { // Entry 336
+    -0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    -0x1.47ae16p-3
+  },
+  { // Entry 337
+    0x1.4a851d3e7f91f24c757b36332a215cb4p-3,
+    0x1.47ae16p-3
+  },
+  { // Entry 338
+    -0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 339
+    0x1.4a851b310bf87886f18db6831c7dbb5bp-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 340
+    -0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 341
+    0x1.4a851923985f29e566d100aa672e9ae3p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 342
+    0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 343
+    -0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 344
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 345
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 346
+    0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    0x1.000002p-1
+  },
+  { // Entry 347
+    -0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 348
+    0x1.058aee9700341b95bc1c097b18171158p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 349
+    -0x1.058aee9700341b95bc1c097b18171158p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 350
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.p-2
+  },
+  { // Entry 351
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.p-2
+  },
+  { // Entry 352
+    0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    0x1.000002p-2
+  },
+  { // Entry 353
+    -0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 354
+    0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 355
+    -0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 356
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.p-3
+  },
+  { // Entry 357
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.p-3
+  },
+  { // Entry 358
+    0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 359
+    -0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 360
+    0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    0x1.fffffep-5
+  },
+  { // Entry 361
+    -0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 362
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.p-4
+  },
+  { // Entry 363
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.p-4
+  },
+  { // Entry 364
+    0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    0x1.000002p-4
+  },
+  { // Entry 365
+    -0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 366
+    0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 367
+    -0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 368
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.p-5
+  },
+  { // Entry 369
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.p-5
+  },
+  { // Entry 370
+    0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    0x1.000002p-5
+  },
+  { // Entry 371
+    -0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 372
+    0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    0x1.fffffep-7
+  },
+  { // Entry 373
+    -0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 374
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.p-6
+  },
+  { // Entry 375
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.p-6
+  },
+  { // Entry 376
+    0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    0x1.000002p-6
+  },
+  { // Entry 377
+    -0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 378
+    0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 379
+    -0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 380
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.p-7
+  },
+  { // Entry 381
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.p-7
+  },
+  { // Entry 382
+    0x1.000157589091cd47c4535d7818762b69p-7,
+    0x1.000002p-7
+  },
+  { // Entry 383
+    -0x1.000157589091cd47c4535d7818762b69p-7,
+    -0x1.000002p-7
+  },
+  { // Entry 384
+    0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    0x1.fffffep-9
+  },
+  { // Entry 385
+    -0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 386
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.p-8
+  },
+  { // Entry 387
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.p-8
+  },
+  { // Entry 388
+    0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    0x1.000002p-8
+  },
+  { // Entry 389
+    -0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    -0x1.000002p-8
+  },
+  { // Entry 390
+    0x1.000014555848890b11c5ac88518c9f8bp-9,
+    0x1.fffffep-10
+  },
+  { // Entry 391
+    -0x1.000014555848890b11c5ac88518c9f8bp-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 392
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.p-9
+  },
+  { // Entry 393
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.p-9
+  },
+  { // Entry 394
+    0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    0x1.000002p-9
+  },
+  { // Entry 395
+    -0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    -0x1.000002p-9
+  },
+  { // Entry 396
+    0x1.0000045555788889e1ad293e1f844b3dp-10,
+    0x1.fffffep-11
+  },
+  { // Entry 397
+    -0x1.0000045555788889e1ad293e1f844b3dp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 398
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.p-10
+  },
+  { // Entry 399
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.p-10
+  },
+  { // Entry 400
+    0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    0x1.000002p-10
+  },
+  { // Entry 401
+    -0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 402
+    0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 403
+    -0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 404
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.p-14
+  },
+  { // Entry 405
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.p-14
+  },
+  { // Entry 406
+    0x1.000002055555758888ca8ad1dfe598dap-14,
+    0x1.000002p-14
+  },
+  { // Entry 407
+    -0x1.000002055555758888ca8ad1dfe598dap-14,
+    -0x1.000002p-14
+  },
+  { // Entry 408
+    0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 409
+    -0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 410
+    0x1.00000000000000555555555555558888p-28,
+    0x1.p-28
+  },
+  { // Entry 411
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.p-28
+  },
+  { // Entry 412
+    0x1.0000020000000055555755555955888bp-28,
+    0x1.000002p-28
+  },
+  { // Entry 413
+    -0x1.0000020000000055555755555955888bp-28,
+    -0x1.000002p-28
+  },
+  { // Entry 414
+    0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 415
+    -0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 416
+    0x1.00000000000000055555555555555588p-30,
+    0x1.p-30
+  },
+  { // Entry 417
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.p-30
+  },
+  { // Entry 418
+    0x1.00000200000000055555755555955588p-30,
+    0x1.000002p-30
+  },
+  { // Entry 419
+    -0x1.00000200000000055555755555955588p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 420
+    -0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 421
+    0x1.193eaa557add1b3dc34f47d111dfdba1p-1,
+    0x1.000002p-1
+  },
+  { // Entry 422
+    -0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    -0x1.p-1
+  },
+  { // Entry 423
+    0x1.193ea7aad030a976a4198d55053b7cb5p-1,
+    0x1.p-1
+  },
+  { // Entry 424
+    -0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 425
+    0x1.193ea6557adbc5e86add80b0ebf2cb85p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 426
+    -0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 427
+    0x1.058af1ca33678565f2fe3a2d94083376p-2,
+    0x1.000002p-2
+  },
+  { // Entry 428
+    -0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    -0x1.p-2
+  },
+  { // Entry 429
+    0x1.058aefa811451a7276bc2f82043b6a7dp-2,
+    0x1.p-2
+  },
+  { // Entry 430
+    -0x1.058aee9700341b95bc1c097b18171158p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 431
+    0x1.058aee9700341b95bc1c097b18171158p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 432
+    -0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 433
+    0x1.015893d20b718f3cd8df6c056dc045a9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 434
+    -0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    -0x1.p-3
+  },
+  { // Entry 435
+    0x1.015891c9eaef7699467a0f6b916c6494p-3,
+    0x1.p-3
+  },
+  { // Entry 436
+    -0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 437
+    0x1.015890c5daae76a9c988ea53c9fdd571p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 438
+    -0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 439
+    0x1.00558aaf395cd3d521277650da85a2b3p-4,
+    0x1.000002p-4
+  },
+  { // Entry 440
+    -0x1.005588ad375acdcb1312a563c685255ep-4,
+    -0x1.p-4
+  },
+  { // Entry 441
+    0x1.005588ad375acdcb1312a563c685255ep-4,
+    0x1.p-4
+  },
+  { // Entry 442
+    -0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 443
+    0x1.005587ac3659cdcc1515520e6dd371acp-4,
+    0x1.fffffep-5
+  },
+  { // Entry 444
+    -0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 445
+    0x1.00155a899b0e2db71e84d97e04e64ed3p-5,
+    0x1.000002p-5
+  },
+  { // Entry 446
+    -0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    -0x1.p-5
+  },
+  { // Entry 447
+    0x1.001558891aee24b49dd3fdc5b66ee9f1p-5,
+    0x1.p-5
+  },
+  { // Entry 448
+    -0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 449
+    0x1.00155788dade20f3bd9fdc4d8c702791p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 450
+    -0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 451
+    0x1.00055788aad3c9ee173b60f77d5e4818p-6,
+    0x1.000002p-6
+  },
+  { // Entry 452
+    -0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    -0x1.p-6
+  },
+  { // Entry 453
+    0x1.000555888ad1c98e0d3a562aced328b5p-6,
+    0x1.p-6
+  },
+  { // Entry 454
+    -0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 455
+    0x1.000554887ad0c98e0e3a70d6796dd00ap-6,
+    0x1.fffffep-7
+  },
+  { // Entry 456
+    -0x1.000157589091cd47c4535d7818762b69p-7,
+    -0x1.000002p-7
+  },
+  { // Entry 457
+    0x1.000157589091cd47c4535d7818762b69p-7,
+    0x1.000002p-7
+  },
+  { // Entry 458
+    -0x1.000155588891ad3743d14fc45da12ef2p-7,
+    -0x1.p-7
+  },
+  { // Entry 459
+    0x1.000155588891ad3743d14fc45da12ef2p-7,
+    0x1.p-7
+  },
+  { // Entry 460
+    -0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 461
+    0x1.0001545884919d3b03f04f2aec3aad64p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 462
+    -0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    -0x1.000002p-8
+  },
+  { // Entry 463
+    0x1.000057558a88af1ef026fdeac0c26c29p-8,
+    0x1.000002p-8
+  },
+  { // Entry 464
+    -0x1.000055558888ad1aee1ef9340407975ap-8,
+    -0x1.p-8
+  },
+  { // Entry 465
+    0x1.000055558888ad1aee1ef9340407975ap-8,
+    0x1.p-8
+  },
+  { // Entry 466
+    -0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 467
+    0x1.000054558788ac1bed20f7e1abb63c0bp-8,
+    0x1.fffffep-9
+  },
+  { // Entry 468
+    -0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    -0x1.000002p-9
+  },
+  { // Entry 469
+    0x1.000017555908893bd1d20d4b76ad6c40p-9,
+    0x1.000002p-9
+  },
+  { // Entry 470
+    -0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    -0x1.p-9
+  },
+  { // Entry 471
+    0x1.000015555888891ad1c98c9e9b0230f4p-9,
+    0x1.p-9
+  },
+  { // Entry 472
+    -0x1.000014555848890b11c5ac88518c9f8bp-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 473
+    0x1.000014555848890b11c5ac88518c9f8bp-9,
+    0x1.fffffep-10
+  },
+  { // Entry 474
+    -0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 475
+    0x1.0000075555a8888d11ad5f6e23264b7cp-10,
+    0x1.000002p-10
+  },
+  { // Entry 476
+    -0x1.000005555588888ad1ad374375aba09fp-10,
+    -0x1.p-10
+  },
+  { // Entry 477
+    0x1.000005555588888ad1ad374375aba09fp-10,
+    0x1.p-10
+  },
+  { // Entry 478
+    -0x1.0000045555788889e1ad293e1f844b3dp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 479
+    0x1.0000045555788889e1ad293e1f844b3dp-10,
+    0x1.fffffep-11
+  },
+  { // Entry 480
+    -0x1.000002055555758888ca8ad1dfe598dap-14,
+    -0x1.000002p-14
+  },
+  { // Entry 481
+    0x1.000002055555758888ca8ad1dfe598dap-14,
+    0x1.000002p-14
+  },
+  { // Entry 482
+    -0x1.000000055555558888888ad1ad1aee1ep-14,
+    -0x1.p-14
+  },
+  { // Entry 483
+    0x1.000000055555558888888ad1ad1aee1ep-14,
+    0x1.p-14
+  },
+  { // Entry 484
+    -0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 485
+    0x1.fffffe0aaaaa8b11112f15a3536b318fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 486
+    -0x1.0000020000000055555755555955888bp-28,
+    -0x1.000002p-28
+  },
+  { // Entry 487
+    0x1.0000020000000055555755555955888bp-28,
+    0x1.000002p-28
+  },
+  { // Entry 488
+    -0x1.00000000000000555555555555558888p-28,
+    -0x1.p-28
+  },
+  { // Entry 489
+    0x1.00000000000000555555555555558888p-28,
+    0x1.p-28
+  },
+  { // Entry 490
+    -0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    -0x1.fffffep-29
+  },
+  { // Entry 491
+    0x1.fffffe00000000aaaaa8aaaaacab1110p-29,
+    0x1.fffffep-29
+  },
+  { // Entry 492
+    -0x1.00000200000000055555755555955588p-30,
+    -0x1.000002p-30
+  },
+  { // Entry 493
+    0x1.00000200000000055555755555955588p-30,
+    0x1.000002p-30
+  },
+  { // Entry 494
+    -0x1.00000000000000055555555555555588p-30,
+    -0x1.p-30
+  },
+  { // Entry 495
+    0x1.00000000000000055555555555555588p-30,
+    0x1.p-30
+  },
+  { // Entry 496
+    -0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 497
+    0x1.fffffe000000000aaaaa8aaaaacaab11p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 498
+    HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 499
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 500
+    0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    0x1.fffffep-1
+  },
+  { // Entry 501
+    -0x1.1542456b37d42c1c6b731df2db40f6c7p3,
+    -0x1.fffffep-1
+  },
+  { // Entry 502
+    0x1.0f2eb16521912336da989907b42e8493p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 503
+    -0x1.0f2eb16521912336da989907b42e8493p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 504
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 505
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 506
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 507
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 508
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 509
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 510
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 511
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 513
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 514
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 515
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 516
+    0.0,
+    0.0f
+  },
+  { // Entry 517
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/cbrt_intel_data.h b/tests/math_data/cbrt_intel_data.h
new file mode 100644
index 0000000..9bb4708
--- /dev/null
+++ b/tests/math_data/cbrt_intel_data.h
@@ -0,0 +1,2274 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_cbrt_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.0p-30
+  },
+  { // Entry 1
+    0x1.p-10,
+    0x1.0p-30
+  },
+  { // Entry 2
+    -0x1.00000000007fffffffffc00000000035p-3,
+    -0x1.00000000018p-9
+  },
+  { // Entry 3
+    0x1.00000000007fffffffffc00000000035p-3,
+    0x1.00000000018p-9
+  },
+  { // Entry 4
+    -0x1.0000000007ffffffffc0000000035555p-340,
+    -0x1.00000000180p-1020
+  },
+  { // Entry 5
+    0x1.0000000007ffffffffc0000000035555p-340,
+    0x1.00000000180p-1020
+  },
+  { // Entry 6
+    -0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    -0x1.060p-40
+  },
+  { // Entry 7
+    0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    0x1.060p-40
+  },
+  { // Entry 8
+    -0x1.45abfb7ef7189911ba894c45eca1ddcap-1,
+    -0x1.0787c1fa77ce0p-2
+  },
+  { // Entry 9
+    0x1.45abfb7ef7189911ba894c45eca1ddcap-1,
+    0x1.0787c1fa77ce0p-2
+  },
+  { // Entry 10
+    -0x1.9e9ee2bee69fe80c4f73cb59ccb7f3d1p5,
+    -0x1.0fe6fc05ac8c0p17
+  },
+  { // Entry 11
+    0x1.9e9ee2bee69fe80c4f73cb59ccb7f3d1p5,
+    0x1.0fe6fc05ac8c0p17
+  },
+  { // Entry 12
+    -0x1.493b33358f83ff197c29192baacf2763p-9,
+    -0x1.10441104412p-26
+  },
+  { // Entry 13
+    0x1.493b33358f83ff197c29192baacf2763p-9,
+    0x1.10441104412p-26
+  },
+  { // Entry 14
+    -0x1.9f187bb994b4e822d4c29f84eda66145p-1,
+    -0x1.10d67c062d7e0p-1
+  },
+  { // Entry 15
+    0x1.9f187bb994b4e822d4c29f84eda66145p-1,
+    0x1.10d67c062d7e0p-1
+  },
+  { // Entry 16
+    -0x1.0af6562f82937800f6aaeb59ca8be923p-2,
+    -0x1.2250ab3726b08p-6
+  },
+  { // Entry 17
+    0x1.0af6562f82937800f6aaeb59ca8be923p-2,
+    0x1.2250ab3726b08p-6
+  },
+  { // Entry 18
+    -0x1.a9cd919402f48820501d0a16e616a1efp30,
+    -0x1.268029abf1585p92
+  },
+  { // Entry 19
+    0x1.a9cd919402f48820501d0a16e616a1efp30,
+    0x1.268029abf1585p92
+  },
+  { // Entry 20
+    -0x1.aa74fb53ace248137ec2a68f4e2c0e6ap-11,
+    -0x1.27dc102fbaaecp-31
+  },
+  { // Entry 21
+    0x1.aa74fb53ace248137ec2a68f4e2c0e6ap-11,
+    0x1.27dc102fbaaecp-31
+  },
+  { // Entry 22
+    -0x1.bfb5c1cdaa6ddfd032c8a87db7a19ca2p-5,
+    -0x1.5655956559580p-13
+  },
+  { // Entry 23
+    0x1.bfb5c1cdaa6ddfd032c8a87db7a19ca2p-5,
+    0x1.5655956559580p-13
+  },
+  { // Entry 24
+    -0x1.cb8a75541abed81fa799464451a558d3p30,
+    -0x1.7232560b9ccc6p92
+  },
+  { // Entry 25
+    0x1.cb8a75541abed81fa799464451a558d3p30,
+    0x1.7232560b9ccc6p92
+  },
+  { // Entry 26
+    -0x1.7d038d6155dc480a9f29e86566a5f43dp-356,
+    -0x1.a60p-1067
+  },
+  { // Entry 27
+    0x1.7d038d6155dc480a9f29e86566a5f43dp-356,
+    0x1.a60p-1067
+  },
+  { // Entry 28
+    -0x1.e3b9dfbcafcda8395331b22320212c4cp7,
+    -0x1.afc6abf5d0ce0p23
+  },
+  { // Entry 29
+    0x1.e3b9dfbcafcda8395331b22320212c4cp7,
+    0x1.afc6abf5d0ce0p23
+  },
+  { // Entry 30
+    -0x1.84ad603727a0508cbedd2bca0ec48725p0,
+    -0x1.bffa90d87aa98p1
+  },
+  { // Entry 31
+    0x1.84ad603727a0508cbedd2bca0ec48725p0,
+    0x1.bffa90d87aa98p1
+  },
+  { // Entry 32
+    -0x1.947c09fa258151cfeee85175bc41fb81p-3,
+    -0x1.f8e38e38e38e4p-8
+  },
+  { // Entry 33
+    0x1.947c09fa258151cfeee85175bc41fb81p-3,
+    0x1.f8e38e38e38e4p-8
+  },
+  { // Entry 34
+    -0x1.ffffffffffff9fffffffffffedffffffp-341,
+    -0x1.fffffffffffeep-1021
+  },
+  { // Entry 35
+    0x1.ffffffffffff9fffffffffffedffffffp-341,
+    0x1.fffffffffffeep-1021
+  },
+  { // Entry 36
+    0x1.428a2f98d728c24ae0d4448847c4a6bap-341,
+    0x1.0000000000003p-1022
+  },
+  { // Entry 37
+    -0x1.428a2f98d728c24ae0d4448847c4a6bap-341,
+    -0x1.0000000000003p-1022
+  },
+  { // Entry 38
+    0x1.965fea53d6e3faf702e41590b070bffbp-14,
+    0x1.0000000000006p-40
+  },
+  { // Entry 39
+    -0x1.965fea53d6e3faf702e41590b070bffbp-14,
+    -0x1.0000000000006p-40
+  },
+  { // Entry 40
+    0x1.965fea53d6e3faf702e41590b070bffbp0,
+    0x1.0000000000006p2
+  },
+  { // Entry 41
+    -0x1.965fea53d6e3faf702e41590b070bffbp0,
+    -0x1.0000000000006p2
+  },
+  { // Entry 42
+    0x1.965fea53d6e607dd91906073bf1a35edp0,
+    0x1.0000000000044p2
+  },
+  { // Entry 43
+    -0x1.965fea53d6e607dd91906073bf1a35edp0,
+    -0x1.0000000000044p2
+  },
+  { // Entry 44
+    0x1.965fea53d6e697ca348e11e2a091d5b6p0,
+    0x1.0000000000055p2
+  },
+  { // Entry 45
+    -0x1.965fea53d6e697ca348e11e2a091d5b6p0,
+    -0x1.0000000000055p2
+  },
+  { // Entry 46
+    0x1.00000000000cbfffffffff5d70p1,
+    0x1.0000000000264p3
+  },
+  { // Entry 47
+    -0x1.00000000000cbfffffffff5d70p1,
+    -0x1.0000000000264p3
+  },
+  { // Entry 48
+    0x1.965fea53d702f7bcb128b0aa890997e0p0,
+    0x1.00000000003afp2
+  },
+  { // Entry 49
+    -0x1.965fea53d702f7bcb128b0aa890997e0p0,
+    -0x1.00000000003afp2
+  },
+  { // Entry 50
+    0x1.428a2f98d75e6fd4d753df927b6b1d4fp-14,
+    0x1.00000000008p-41
+  },
+  { // Entry 51
+    -0x1.428a2f98d75e6fd4d753df927b6b1d4fp-14,
+    -0x1.00000000008p-41
+  },
+  { // Entry 52
+    0x1.00000000007fffffffffc00000000035p-3,
+    0x1.00000000018p-9
+  },
+  { // Entry 53
+    -0x1.00000000007fffffffffc00000000035p-3,
+    -0x1.00000000018p-9
+  },
+  { // Entry 54
+    0x1.965fea53da1087ffad4108c4ea80cbc2p-14,
+    0x1.00000000060p-40
+  },
+  { // Entry 55
+    -0x1.965fea53da1087ffad4108c4ea80cbc2p-14,
+    -0x1.00000000060p-40
+  },
+  { // Entry 56
+    0x1.965fea53da4af7aa8f6e6d4048e52f2bp1,
+    0x1.00000000066e7p5
+  },
+  { // Entry 57
+    -0x1.965fea53da4af7aa8f6e6d4048e52f2bp1,
+    -0x1.00000000066e7p5
+  },
+  { // Entry 58
+    0x1.0000000007ffffffffc0000000035555p-340,
+    0x1.00000000180p-1020
+  },
+  { // Entry 59
+    -0x1.0000000007ffffffffc0000000035555p-340,
+    -0x1.00000000180p-1020
+  },
+  { // Entry 60
+    0x1.965fea55f54097c36a6737d85dd006dcp-40,
+    0x1.0000000401004p-118
+  },
+  { // Entry 61
+    -0x1.965fea55f54097c36a6737d85dd006dcp-40,
+    -0x1.0000000401004p-118
+  },
+  { // Entry 62
+    0x1.428a2fa15995e7ffff68534daa2646edp0,
+    0x1.00000014430e2p1
+  },
+  { // Entry 63
+    -0x1.428a2fa15995e7ffff68534daa2646edp0,
+    -0x1.00000014430e2p1
+  },
+  { // Entry 64
+    0x1.428a2fbea35a3d9d86d0a73d050d1379p-348,
+    0x1.0000005a0p-1043
+  },
+  { // Entry 65
+    -0x1.428a2fbea35a3d9d86d0a73d050d1379p-348,
+    -0x1.0000005a0p-1043
+  },
+  { // Entry 66
+    0x1.965ff2caa42317c00ffd791c040fb91dp-34,
+    0x1.00000fff0p-100
+  },
+  { // Entry 67
+    -0x1.965ff2caa42317c00ffd791c040fb91dp-34,
+    -0x1.00000fff0p-100
+  },
+  { // Entry 68
+    0x1.965ff2cb2b9860374c7a92e3bf79265dp-14,
+    0x1.00001p-40
+  },
+  { // Entry 69
+    -0x1.965ff2cb2b9860374c7a92e3bf79265dp-14,
+    -0x1.00001p-40
+  },
+  { // Entry 70
+    0x1.9660b58366b9c81443c564c8519c1649p-341,
+    0x1.00018000008p-1021
+  },
+  { // Entry 71
+    -0x1.9660b58366b9c81443c564c8519c1649p-341,
+    -0x1.00018000008p-1021
+  },
+  { // Entry 72
+    0x1.96639e80554d07f44482ed4edeb69024p-14,
+    0x1.00070p-40
+  },
+  { // Entry 73
+    -0x1.96639e80554d07f44482ed4edeb69024p-14,
+    -0x1.00070p-40
+  },
+  { // Entry 74
+    0x1.9665b2342f8d97ab827cc907bea6a6a0p-2,
+    0x1.000aecf24b8bbp-4
+  },
+  { // Entry 75
+    -0x1.9665b2342f8d97ab827cc907bea6a6a0p-2,
+    -0x1.000aecf24b8bbp-4
+  },
+  { // Entry 76
+    0x1.96664e51470857ba927fd8c83e4a668fp-2,
+    0x1.000c14046c27cp-4
+  },
+  { // Entry 77
+    -0x1.96664e51470857ba927fd8c83e4a668fp-2,
+    -0x1.000c14046c27cp-4
+  },
+  { // Entry 78
+    0x1.9681cd4d59cf3c49d09a44a6e5a71a0bp-4,
+    0x1.00401004000dep-10
+  },
+  { // Entry 79
+    -0x1.9681cd4d59cf3c49d09a44a6e5a71a0bp-4,
+    -0x1.00401004000dep-10
+  },
+  { // Entry 80
+    0x1.00254fe4e09a28161b19a150ed679c38p-340,
+    0x1.007p-1020
+  },
+  { // Entry 81
+    -0x1.00254fe4e09a28161b19a150ed679c38p-340,
+    -0x1.007p-1020
+  },
+  { // Entry 82
+    0x1.42b9323abafd78d0666f2ca1fbd9f8b9p-341,
+    0x1.007p-1022
+  },
+  { // Entry 83
+    -0x1.42b9323abafd78d0666f2ca1fbd9f8b9p-341,
+    -0x1.007p-1022
+  },
+  { // Entry 84
+    0x1.005a8aa11fd96610f475d13eb6f8247fp-340,
+    0x1.011p-1020
+  },
+  { // Entry 85
+    -0x1.005a8aa11fd96610f475d13eb6f8247fp-340,
+    -0x1.011p-1020
+  },
+  { // Entry 86
+    0x1.976e211b4a5fda2f3d9110f59316298ap-14,
+    0x1.020p-40
+  },
+  { // Entry 87
+    -0x1.976e211b4a5fda2f3d9110f59316298ap-14,
+    -0x1.020p-40
+  },
+  { // Entry 88
+    0x1.97f4c72a4cc937c8ec5808f7e0f23f1dp334,
+    0x1.03001fc0eb6f0p1004
+  },
+  { // Entry 89
+    -0x1.97f4c72a4cc937c8ec5808f7e0f23f1dp334,
+    -0x1.03001fc0eb6f0p1004
+  },
+  { // Entry 90
+    0x1.97f5f8160b8917c80d38a6af1f6f152bp0,
+    0x1.03026484c3994p2
+  },
+  { // Entry 91
+    -0x1.97f5f8160b8917c80d38a6af1f6f152bp0,
+    -0x1.03026484c3994p2
+  },
+  { // Entry 92
+    0x1.446c1fbe1a821a88b3a25b8549559d1cp-81,
+    0x1.0482412090482p-242
+  },
+  { // Entry 93
+    -0x1.446c1fbe1a821a88b3a25b8549559d1cp-81,
+    -0x1.0482412090482p-242
+  },
+  { // Entry 94
+    0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    0x1.060p-40
+  },
+  { // Entry 95
+    -0x1.9986657fedfe4fd36e533ebb59e96ee6p-14,
+    -0x1.060p-40
+  },
+  { // Entry 96
+    0x1.454088d15010f7f343422c761e601e61p-1,
+    0x1.068341a0d0680p-2
+  },
+  { // Entry 97
+    -0x1.454088d15010f7f343422c761e601e61p-1,
+    -0x1.068341a0d0680p-2
+  },
+  { // Entry 98
+    0x1.9a92c607cfd737e7521bc7f98770b170p2,
+    0x1.08046a3c709e3p8
+  },
+  { // Entry 99
+    -0x1.9a92c607cfd737e7521bc7f98770b170p2,
+    -0x1.08046a3c709e3p8
+  },
+  { // Entry 100
+    0x1.9a93cde71ba557e6218528c1cb0d6e32p-1,
+    0x1.08066749584ddp-1
+  },
+  { // Entry 101
+    -0x1.9a93cde71ba557e6218528c1cb0d6e32p-1,
+    -0x1.08066749584ddp-1
+  },
+  { // Entry 102
+    0x1.9a952773d350c7e97b4223564fd73be7p-347,
+    0x1.080901ebap-1039
+  },
+  { // Entry 103
+    -0x1.9a952773d350c7e97b4223564fd73be7p-347,
+    -0x1.080901ebap-1039
+  },
+  { // Entry 104
+    0x1.032ee63c56e3b55628c6400c742d93edp1,
+    0x1.09ab38ed184bap3
+  },
+  { // Entry 105
+    -0x1.032ee63c56e3b55628c6400c742d93edp1,
+    -0x1.09ab38ed184bap3
+  },
+  { // Entry 106
+    0x1.9b9968457c86a7d7dbb54f5a02fc037bp4,
+    0x1.0a0056960e368p14
+  },
+  { // Entry 107
+    -0x1.9b9968457c86a7d7dbb54f5a02fc037bp4,
+    -0x1.0a0056960e368p14
+  },
+  { // Entry 108
+    0x1.9e9f1f2d0855881624b60f77c042b78dp0,
+    0x1.0fe772e9039f5p2
+  },
+  { // Entry 109
+    -0x1.9e9f1f2d0855881624b60f77c042b78dp0,
+    -0x1.0fe772e9039f5p2
+  },
+  { // Entry 110
+    0x1.9ea753cde1bd0855df2edf015f707a04p1,
+    0x1.0ff797ef1a3c3p5
+  },
+  { // Entry 111
+    -0x1.9ea753cde1bd0855df2edf015f707a04p1,
+    -0x1.0ff797ef1a3c3p5
+  },
+  { // Entry 112
+    0x1.491fc152578ca7cdd8078fdafcb33036p-357,
+    0x1.1p-1070
+  },
+  { // Entry 113
+    -0x1.491fc152578ca7cdd8078fdafcb33036p-357,
+    -0x1.1p-1070
+  },
+  { // Entry 114
+    0x1.9eac9efc6e88d7c312cafbfcbd94b5b4p0,
+    0x1.1002029e1aaddp2
+  },
+  { // Entry 115
+    -0x1.9eac9efc6e88d7c312cafbfcbd94b5b4p0,
+    -0x1.1002029e1aaddp2
+  },
+  { // Entry 116
+    0x1.9f1445f47beb881feb8cc6da6423f1fap0,
+    0x1.10ce2ee39f71bp2
+  },
+  { // Entry 117
+    -0x1.9f1445f47beb881feb8cc6da6423f1fap0,
+    -0x1.10ce2ee39f71bp2
+  },
+  { // Entry 118
+    0x1.9f16f1b3849098203460c5bf7946e9ddp-1,
+    0x1.10d37312af8fap-1
+  },
+  { // Entry 119
+    -0x1.9f16f1b3849098203460c5bf7946e9ddp-1,
+    -0x1.10d37312af8fap-1
+  },
+  { // Entry 120
+    0x1.9f22b8991664081f68f99db9a1cc0b73p0,
+    0x1.10eaac892a245p2
+  },
+  { // Entry 121
+    -0x1.9f22b8991664081f68f99db9a1cc0b73p0,
+    -0x1.10eaac892a245p2
+  },
+  { // Entry 122
+    0x1.9f458921d52a281fafef2e225aaab6c6p0,
+    0x1.112f5c03ecec0p2
+  },
+  { // Entry 123
+    -0x1.9f458921d52a281fafef2e225aaab6c6p0,
+    -0x1.112f5c03ecec0p2
+  },
+  { // Entry 124
+    0x1.4c4c991ac651a84e0ff0656285977047p1,
+    0x1.17f2cafabb46ap4
+  },
+  { // Entry 125
+    -0x1.4c4c991ac651a84e0ff0656285977047p1,
+    -0x1.17f2cafabb46ap4
+  },
+  { // Entry 126
+    0x1.a430ecfcf44ee7dc4e735762947d3dc3p0,
+    0x1.1b02602c908bfp2
+  },
+  { // Entry 127
+    -0x1.a430ecfcf44ee7dc4e735762947d3dc3p0,
+    -0x1.1b02602c908bfp2
+  },
+  { // Entry 128
+    0x1.a6a556b95dffa828a9a81a921f87fa85p-4,
+    0x1.1fff905c3adbcp-10
+  },
+  { // Entry 129
+    -0x1.a6a556b95dffa828a9a81a921f87fa85p-4,
+    -0x1.1fff905c3adbcp-10
+  },
+  { // Entry 130
+    0x1.a6a58d55e307bdded6f0c26447e14afap-14,
+    0x1.2p-40
+  },
+  { // Entry 131
+    -0x1.a6a58d55e307bdded6f0c26447e14afap-14,
+    -0x1.2p-40
+  },
+  { // Entry 132
+    0x1.a741dcaa85c507f8f476871a86c8f2fbp-14,
+    0x1.214p-40
+  },
+  { // Entry 133
+    -0x1.a741dcaa85c507f8f476871a86c8f2fbp-14,
+    -0x1.214p-40
+  },
+  { // Entry 134
+    0x1.a9b9a98cfc11381defe6253a98938775p-4,
+    0x1.2656ddd0ef9a9p-10
+  },
+  { // Entry 135
+    -0x1.a9b9a98cfc11381defe6253a98938775p-4,
+    -0x1.2656ddd0ef9a9p-10
+  },
+  { // Entry 136
+    0x1.a9ce86294341981ffbd04f46339b7ca3p0,
+    0x1.26822529cb997p2
+  },
+  { // Entry 137
+    -0x1.a9ce86294341981ffbd04f46339b7ca3p0,
+    -0x1.26822529cb997p2
+  },
+  { // Entry 138
+    0x1.aa3393610111800c773e492ba03c0bc0p-4,
+    0x1.2754041e0bd58p-10
+  },
+  { // Entry 139
+    -0x1.aa3393610111800c773e492ba03c0bc0p-4,
+    -0x1.2754041e0bd58p-10
+  },
+  { // Entry 140
+    0x1.aa6eaf149711081267d4d3bcfb21576ap-1,
+    0x1.27cef4d58fa06p-1
+  },
+  { // Entry 141
+    -0x1.aa6eaf149711081267d4d3bcfb21576ap-1,
+    -0x1.27cef4d58fa06p-1
+  },
+  { // Entry 142
+    0x1.ab0111c4f67687eab45b47dba3899345p-14,
+    0x1.290p-40
+  },
+  { // Entry 143
+    -0x1.ab0111c4f67687eab45b47dba3899345p-14,
+    -0x1.290p-40
+  },
+  { // Entry 144
+    0x1.ab7d23f59ed937e12fad7075ab2a34f5p66,
+    0x1.2a032f360b141p200
+  },
+  { // Entry 145
+    -0x1.ab7d23f59ed937e12fad7075ab2a34f5p66,
+    -0x1.2a032f360b141p200
+  },
+  { // Entry 146
+    0x1.0e7fe920f31d3746275027b3282172eep-340,
+    0x1.2e025c04b85fcp-1020
+  },
+  { // Entry 147
+    -0x1.0e7fe920f31d3746275027b3282172eep-340,
+    -0x1.2e025c04b85fcp-1020
+  },
+  { // Entry 148
+    0x1.55aaaaae387217d53fbba423cebb1a2ep-2,
+    0x1.304c1304c1304p-5
+  },
+  { // Entry 149
+    -0x1.55aaaaae387217d53fbba423cebb1a2ep-2,
+    -0x1.304c1304c1304p-5
+  },
+  { // Entry 150
+    0x1.b3dd56a2b132e7fdf10074b0924288f1p32,
+    0x1.3bdfee33b02f8p98
+  },
+  { // Entry 151
+    -0x1.b3dd56a2b132e7fdf10074b0924288f1p32,
+    -0x1.3bdfee33b02f8p98
+  },
+  { // Entry 152
+    0x1.b439df3c2659081df6a3085c877c7cffp0,
+    0x1.3ca946e736845p2
+  },
+  { // Entry 153
+    -0x1.b439df3c2659081df6a3085c877c7cffp0,
+    -0x1.3ca946e736845p2
+  },
+  { // Entry 154
+    0x1.138291eabb92efba9fe0d9849a897aa5p-340,
+    0x1.3f1aa4d984256p-1020
+  },
+  { // Entry 155
+    -0x1.138291eabb92efba9fe0d9849a897aa5p-340,
+    -0x1.3f1aa4d984256p-1020
+  },
+  { // Entry 156
+    0x1.b5695d4850bf002f93a8951840fdbdc1p-14,
+    0x1.3f4p-40
+  },
+  { // Entry 157
+    -0x1.b5695d4850bf002f93a8951840fdbdc1p-14,
+    -0x1.3f4p-40
+  },
+  { // Entry 158
+    0x1.13c484138704e8100660522ff714d063p-2,
+    0x1.3ffffffffffffp-6
+  },
+  { // Entry 159
+    -0x1.13c484138704e8100660522ff714d063p-2,
+    -0x1.3ffffffffffffp-6
+  },
+  { // Entry 160
+    0x1.b67bc3075e4107fa3e70de5d4fa75b20p0,
+    0x1.419a4a4598f5ap2
+  },
+  { // Entry 161
+    -0x1.b67bc3075e4107fa3e70de5d4fa75b20p0,
+    -0x1.419a4a4598f5ap2
+  },
+  { // Entry 162
+    0x1.b94a867d7d37304bf35180360c8f26bap-11,
+    0x1.47d1f47d1f471p-31
+  },
+  { // Entry 163
+    -0x1.b94a867d7d37304bf35180360c8f26bap-11,
+    -0x1.47d1f47d1f471p-31
+  },
+  { // Entry 164
+    0x1.ba6940f949a5f802cb51c7c838c7308dp-2,
+    0x1.4a5294a5294a5p-4
+  },
+  { // Entry 165
+    -0x1.ba6940f949a5f802cb51c7c838c7308dp-2,
+    -0x1.4a5294a5294a5p-4
+  },
+  { // Entry 166
+    0x1.1765862491b577ffff674fac52ee428ep0,
+    0x1.4ccccccf6cc89p0
+  },
+  { // Entry 167
+    -0x1.1765862491b577ffff674fac52ee428ep0,
+    -0x1.4ccccccf6cc89p0
+  },
+  { // Entry 168
+    0x1.17658624b3b6a7ffff67369ed724b90ap0,
+    0x1.4ccccccfe64bdp0
+  },
+  { // Entry 169
+    -0x1.17658624b3b6a7ffff67369ed724b90ap0,
+    -0x1.4ccccccfe64bdp0
+  },
+  { // Entry 170
+    0x1.1765862ca9ee78000097306b13e0ad9bp0,
+    0x1.4cccccec59b21p0
+  },
+  { // Entry 171
+    -0x1.1765862ca9ee78000097306b13e0ad9bp0,
+    -0x1.4cccccec59b21p0
+  },
+  { // Entry 172
+    0x1.c04d1376c37e4817e18315bd6a9e85e3p-8,
+    0x1.57b1272bb8441p-22
+  },
+  { // Entry 173
+    -0x1.c04d1376c37e4817e18315bd6a9e85e3p-8,
+    -0x1.57b1272bb8441p-22
+  },
+  { // Entry 174
+    0x1.c06ebba26ccd500a0de09b79cc640f3dp-1,
+    0x1.57fe95dbd7d28p-1
+  },
+  { // Entry 175
+    -0x1.c06ebba26ccd500a0de09b79cc640f3dp-1,
+    -0x1.57fe95dbd7d28p-1
+  },
+  { // Entry 176
+    0x1.c0e29e3b4a9e87f43c4eb9d13de23aefp0,
+    0x1.59098ae904084p2
+  },
+  { // Entry 177
+    -0x1.c0e29e3b4a9e87f43c4eb9d13de23aefp0,
+    -0x1.59098ae904084p2
+  },
+  { // Entry 178
+    0x1.c3db07e1a14ac838412532030d4d4d78p0,
+    0x1.5feea74303d38p2
+  },
+  { // Entry 179
+    -0x1.c3db07e1a14ac838412532030d4d4d78p0,
+    -0x1.5feea74303d38p2
+  },
+  { // Entry 180
+    0x1.6d73ab7df4e47b07582a3ea009214428p-14,
+    0x1.746p-41
+  },
+  { // Entry 181
+    -0x1.6d73ab7df4e47b07582a3ea009214428p-14,
+    -0x1.746p-41
+  },
+  { // Entry 182
+    0x1.22622dd15ed89a9f922c42a1b1289769p-2,
+    0x1.75ap-6
+  },
+  { // Entry 183
+    -0x1.22622dd15ed89a9f922c42a1b1289769p-2,
+    -0x1.75ap-6
+  },
+  { // Entry 184
+    0x1.cd8515b56ceb3f41561edc76c9bf01b0p-14,
+    0x1.770p-40
+  },
+  { // Entry 185
+    -0x1.cd8515b56ceb3f41561edc76c9bf01b0p-14,
+    -0x1.770p-40
+  },
+  { // Entry 186
+    0x1.d449b6dbbc459812bdd21f77ccdfd045p-4,
+    0x1.87bdb17ed3d1fp-10
+  },
+  { // Entry 187
+    -0x1.d449b6dbbc459812bdd21f77ccdfd045p-4,
+    -0x1.87bdb17ed3d1fp-10
+  },
+  { // Entry 188
+    0x1.280a36cf6379ea8fdfafc89cc9d77091p-7,
+    0x1.8be2f8be2f8b1p-21
+  },
+  { // Entry 189
+    -0x1.280a36cf6379ea8fdfafc89cc9d77091p-7,
+    -0x1.8be2f8be2f8b1p-21
+  },
+  { // Entry 190
+    0x1.75460639f871b7ffff679bb948d1e585p0,
+    0x1.8cccccd41928ap1
+  },
+  { // Entry 191
+    -0x1.75460639f871b7ffff679bb948d1e585p0,
+    -0x1.8cccccd41928ap1
+  },
+  { // Entry 192
+    0x1.d7bd00808f8337d9a59ba78f7f1d6790p-1,
+    0x1.9076c775b5273p-1
+  },
+  { // Entry 193
+    -0x1.d7bd00808f8337d9a59ba78f7f1d6790p-1,
+    -0x1.9076c775b5273p-1
+  },
+  { // Entry 194
+    0x1.d7e64dc80f7097f1129998d4da209031p-14,
+    0x1.90ep-40
+  },
+  { // Entry 195
+    -0x1.d7e64dc80f7097f1129998d4da209031p-14,
+    -0x1.90ep-40
+  },
+  { // Entry 196
+    0x1.da7c2ab04f88d7e99ecbfecf1a524bcbp-14,
+    0x1.978p-40
+  },
+  { // Entry 197
+    -0x1.da7c2ab04f88d7e99ecbfecf1a524bcbp-14,
+    -0x1.978p-40
+  },
+  { // Entry 198
+    0x1.dad49d2409c36ff2d4c9b994a1547f79p-4,
+    0x1.98640c41ec378p-10
+  },
+  { // Entry 199
+    -0x1.dad49d2409c36ff2d4c9b994a1547f79p-4,
+    -0x1.98640c41ec378p-10
+  },
+  { // Entry 200
+    0x1.79eafa03cd0c9b7054cf5184f3432188p-1,
+    0x1.9bcbd6d204234p-2
+  },
+  { // Entry 201
+    -0x1.79eafa03cd0c9b7054cf5184f3432188p-1,
+    -0x1.9bcbd6d204234p-2
+  },
+  { // Entry 202
+    0x1.7a41970365eebffe84779d36e5b55ff9p-4,
+    0x1.9ce739ce739c1p-11
+  },
+  { // Entry 203
+    -0x1.7a41970365eebffe84779d36e5b55ff9p-4,
+    -0x1.9ce739ce739c1p-11
+  },
+  { // Entry 204
+    0x1.dd182f9eccd338154df52c8068d21c58p-4,
+    0x1.9e429e92b01aap-10
+  },
+  { // Entry 205
+    -0x1.dd182f9eccd338154df52c8068d21c58p-4,
+    -0x1.9e429e92b01aap-10
+  },
+  { // Entry 206
+    0x1.7b184c99eafd98080039f19cdaba9566p-2,
+    0x1.9fa7e9fa7e9f8p-5
+  },
+  { // Entry 207
+    -0x1.7b184c99eafd98080039f19cdaba9566p-2,
+    -0x1.9fa7e9fa7e9f8p-5
+  },
+  { // Entry 208
+    0x1.2cf888f8db02e80cf78a32d60db9310ep-1,
+    0x1.ap-3
+  },
+  { // Entry 209
+    -0x1.2cf888f8db02e80cf78a32d60db9310ep-1,
+    -0x1.ap-3
+  },
+  { // Entry 210
+    0x1.7d9d668054af70ab308f4cce4f06da18p-12,
+    0x1.a80p-35
+  },
+  { // Entry 211
+    -0x1.7d9d668054af70ab308f4cce4f06da18p-12,
+    -0x1.a80p-35
+  },
+  { // Entry 212
+    0x1.7f867ca5bf7fd8000095d700659c419bp1,
+    0x1.ae666667ef215p4
+  },
+  { // Entry 213
+    -0x1.7f867ca5bf7fd8000095d700659c419bp1,
+    -0x1.ae666667ef215p4
+  },
+  { // Entry 214
+    0x1.e3ce44a1a91cb00d803d37f957814cd0p-1,
+    0x1.affd4ad81d672p-1
+  },
+  { // Entry 215
+    -0x1.e3ce44a1a91cb00d803d37f957814cd0p-1,
+    -0x1.affd4ad81d672p-1
+  },
+  { // Entry 216
+    0x1.807936a48a0f47ffff8f15d7f7433972p1,
+    0x1.b199999b7b95cp4
+  },
+  { // Entry 217
+    -0x1.807936a48a0f47ffff8f15d7f7433972p1,
+    -0x1.b199999b7b95cp4
+  },
+  { // Entry 218
+    0x1.e59391f23400e00084dca80338a86267p-14,
+    0x1.b4cp-40
+  },
+  { // Entry 219
+    -0x1.e59391f23400e00084dca80338a86267p-14,
+    -0x1.b4cp-40
+  },
+  { // Entry 220
+    0x1.32e4d254e0dc255221323a5c06838a1ap0,
+    0x1.b90bf360408b6p0
+  },
+  { // Entry 221
+    -0x1.32e4d254e0dc255221323a5c06838a1ap0,
+    -0x1.b90bf360408b6p0
+  },
+  { // Entry 222
+    0x1.e86c9f7f43066f552417904aa615b9a0p3,
+    0x1.bc7acad8dd5acp11
+  },
+  { // Entry 223
+    -0x1.e86c9f7f43066f552417904aa615b9a0p3,
+    -0x1.bc7acad8dd5acp11
+  },
+  { // Entry 224
+    0x1.e9b5dba58189dbbca0a6d76e870ebb59p-348,
+    0x1.cp-1042
+  },
+  { // Entry 225
+    -0x1.e9b5dba58189dbbca0a6d76e870ebb59p-348,
+    -0x1.cp-1042
+  },
+  { // Entry 226
+    0x1.eac78857bf50afff5f93dd134572416dp-11,
+    0x1.c2f0bc2f0bc21p-31
+  },
+  { // Entry 227
+    -0x1.eac78857bf50afff5f93dd134572416dp-11,
+    -0x1.c2f0bc2f0bc21p-31
+  },
+  { // Entry 228
+    0x1.ec05b532dfa5c62bee423818abe2bee1p-14,
+    0x1.c66p-40
+  },
+  { // Entry 229
+    -0x1.ec05b532dfa5c62bee423818abe2bee1p-14,
+    -0x1.c66p-40
+  },
+  { // Entry 230
+    0x1.ee6a99864dfff7f9fa4d2ad7424eaa16p0,
+    0x1.cd0a43a2eeb58p2
+  },
+  { // Entry 231
+    -0x1.ee6a99864dfff7f9fa4d2ad7424eaa16p0,
+    -0x1.cd0a43a2eeb58p2
+  },
+  { // Entry 232
+    0x1.3943209755b3d556bbdf7b713db939cbp0,
+    0x1.d513b4b6d224dp0
+  },
+  { // Entry 233
+    -0x1.3943209755b3d556bbdf7b713db939cbp0,
+    -0x1.d513b4b6d224dp0
+  },
+  { // Entry 234
+    0x1.396bdc60bdb41f01722a27e291122a02p0,
+    0x1.d5cac80757178p0
+  },
+  { // Entry 235
+    -0x1.396bdc60bdb41f01722a27e291122a02p0,
+    -0x1.d5cac80757178p0
+  },
+  { // Entry 236
+    0x1.8ae2d99c67b21d4a107cd7180cb6047cp0,
+    0x1.d5cac80757234p1
+  },
+  { // Entry 237
+    -0x1.8ae2d99c67b21d4a107cd7180cb6047cp0,
+    -0x1.d5cac80757234p1
+  },
+  { // Entry 238
+    0x1.8ae2d99c67b3b0c177f3b4d020019db3p0,
+    0x1.d5cac8075728ep1
+  },
+  { // Entry 239
+    -0x1.8ae2d99c67b3b0c177f3b4d020019db3p0,
+    -0x1.d5cac8075728ep1
+  },
+  { // Entry 240
+    0x1.f51a62037e9555df224a09e8431605ecp-348,
+    0x1.ep-1042
+  },
+  { // Entry 241
+    -0x1.f51a62037e9555df224a09e8431605ecp-348,
+    -0x1.ep-1042
+  },
+  { // Entry 242
+    0x1.8f1aa664697648005040ca059dec2aa7p1,
+    0x1.e501f9914b497p4
+  },
+  { // Entry 243
+    -0x1.8f1aa664697648005040ca059dec2aa7p1,
+    -0x1.e501f9914b497p4
+  },
+  { // Entry 244
+    0x1.91d389680d252578c71bd969e9e5df7cp-12,
+    0x1.ef0p-35
+  },
+  { // Entry 245
+    -0x1.91d389680d252578c71bd969e9e5df7cp-12,
+    -0x1.ef0p-35
+  },
+  { // Entry 246
+    0x1.fa9c3138585675b633ac519bbe7eb6cap-1,
+    0x1.fp-1
+  },
+  { // Entry 247
+    -0x1.fa9c3138585675b633ac519bbe7eb6cap-1,
+    -0x1.fp-1
+  },
+  { // Entry 248
+    0x1.92a20771ff112584a4790389196565d1p0,
+    0x1.f1fca6c583c30p1
+  },
+  { // Entry 249
+    -0x1.92a20771ff112584a4790389196565d1p0,
+    -0x1.f1fca6c583c30p1
+  },
+  { // Entry 250
+    0x1.fd7cd96ce16437fdae1d4bfb787b426fp-14,
+    0x1.f88p-40
+  },
+  { // Entry 251
+    -0x1.fd7cd96ce16437fdae1d4bfb787b426fp-14,
+    -0x1.f88p-40
+  },
+  { // Entry 252
+    0x1.fe9c895bb318681d0b5408d96d1beae5p-1,
+    0x1.fbd87fc327a2dp-1
+  },
+  { // Entry 253
+    -0x1.fe9c895bb318681d0b5408d96d1beae5p-1,
+    -0x1.fbd87fc327a2dp-1
+  },
+  { // Entry 254
+    0x1.feb271deb951f820004e9934bbbf7e43p-1,
+    0x1.fc19e0f734ee1p-1
+  },
+  { // Entry 255
+    -0x1.feb271deb951f820004e9934bbbf7e43p-1,
+    -0x1.fc19e0f734ee1p-1
+  },
+  { // Entry 256
+    0x1.9583540d8fdae068f8c9ddb6ceab0c37p-14,
+    0x1.fccp-41
+  },
+  { // Entry 257
+    -0x1.9583540d8fdae068f8c9ddb6ceab0c37p-14,
+    -0x1.fccp-41
+  },
+  { // Entry 258
+    0x1.feee5cca3c43bff6182abd6ea83a6125p-1,
+    0x1.fcccccccccccdp-1
+  },
+  { // Entry 259
+    -0x1.feee5cca3c43bff6182abd6ea83a6125p-1,
+    -0x1.fcccccccccccdp-1
+  },
+  { // Entry 260
+    0x1.96143e1178b6a02e01899e1296e91759p-2,
+    0x1.fee22eb294d1cp-5
+  },
+  { // Entry 261
+    -0x1.96143e1178b6a02e01899e1296e91759p-2,
+    -0x1.fee22eb294d1cp-5
+  },
+  { // Entry 262
+    0x1.ffa545425dad5803a4c5925748cce2a0p-341,
+    0x1.feeffffffffffp-1021
+  },
+  { // Entry 263
+    -0x1.ffa545425dad5803a4c5925748cce2a0p-341,
+    -0x1.feeffffffffffp-1021
+  },
+  { // Entry 264
+    0x1.ffb49f9263cfa814d8ba77ebbb974678p-4,
+    0x1.ff1e000000070p-10
+  },
+  { // Entry 265
+    -0x1.ffb49f9263cfa814d8ba77ebbb974678p-4,
+    -0x1.ff1e000000070p-10
+  },
+  { // Entry 266
+    0x1.ffc5b3203ea9282e4a10ace3963e1fbbp1,
+    0x1.ff512d4a5d2dcp5
+  },
+  { // Entry 267
+    -0x1.ffc5b3203ea9282e4a10ace3963e1fbbp1,
+    -0x1.ff512d4a5d2dcp5
+  },
+  { // Entry 268
+    0x1.965207315dc4902bd076fcf408a70902p-1,
+    0x1.ffcb843a0a6cbp-2
+  },
+  { // Entry 269
+    -0x1.965207315dc4902bd076fcf408a70902p-1,
+    -0x1.ffcb843a0a6cbp-2
+  },
+  { // Entry 270
+    0x1.965316982580502bb83c58cdaeb3a369p0,
+    0x1.ffcf85cbf1176p1
+  },
+  { // Entry 271
+    -0x1.965316982580502bb83c58cdaeb3a369p0,
+    -0x1.ffcf85cbf1176p1
+  },
+  { // Entry 272
+    0x1.42801af6b3a2a61ff5fa71d0a6845a9bp-340,
+    0x1.ffcffffffffffp-1020
+  },
+  { // Entry 273
+    -0x1.42801af6b3a2a61ff5fa71d0a6845a9bp-340,
+    -0x1.ffcffffffffffp-1020
+  },
+  { // Entry 274
+    0x1.965fea101c3caaac6eab292aa5769bcap-14,
+    0x1.fffffefffffffp-41
+  },
+  { // Entry 275
+    -0x1.965fea101c3caaac6eab292aa5769bcap-14,
+    -0x1.fffffefffffffp-41
+  },
+  { // Entry 276
+    0x1.fffffff555554fc71c718c3f35a9339fp-14,
+    0x1.ffffffdffffffp-40
+  },
+  { // Entry 277
+    -0x1.fffffff555554fc71c718c3f35a9339fp-14,
+    -0x1.ffffffdffffffp-40
+  },
+  { // Entry 278
+    0x1.965fea4d7d641a86999ad2b1b38192d3p-14,
+    0x1.ffffffe7fffffp-41
+  },
+  { // Entry 279
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p-14,
+    -0x1.ffffffe7fffffp-41
+  },
+  { // Entry 280
+    0x1.965fea4d7d641a86999ad2b1b38192d3p0,
+    0x1.ffffffe7fffffp1
+  },
+  { // Entry 281
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p0,
+    -0x1.ffffffe7fffffp1
+  },
+  { // Entry 282
+    0x1.965fea4d7d641a86999ad2b1b38192d3p13,
+    0x1.ffffffe7fffffp40
+  },
+  { // Entry 283
+    -0x1.965fea4d7d641a86999ad2b1b38192d3p13,
+    -0x1.ffffffe7fffffp40
+  },
+  { // Entry 284
+    0x1.fffffffd55554ffc71c70e30fcc8817fp-14,
+    0x1.fffffff7fffffp-40
+  },
+  { // Entry 285
+    -0x1.fffffffd55554ffc71c70e30fcc8817fp-14,
+    -0x1.fffffff7fffffp-40
+  },
+  { // Entry 286
+    0x1.fffffffffff34fffffffffaf837fffffp-1,
+    0x1.ffffffffffd9fp-1
+  },
+  { // Entry 287
+    -0x1.fffffffffff34fffffffffaf837fffffp-1,
+    -0x1.ffffffffffd9fp-1
+  },
+  { // Entry 288
+    0x1.fffffffffff9ffffffffffedffffffffp-341,
+    0x1.ffffffffffee0p-1021
+  },
+  { // Entry 289
+    -0x1.fffffffffff9ffffffffffedffffffffp-341,
+    -0x1.ffffffffffee0p-1021
+  },
+  { // Entry 290
+    0x1.ffffffffffff9fffffffffffedffffffp-341,
+    0x1.fffffffffffeep-1021
+  },
+  { // Entry 291
+    -0x1.ffffffffffff9fffffffffffedffffffp-341,
+    -0x1.fffffffffffeep-1021
+  },
+  { // Entry 292
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp-14,
+    0x1.fffffffffffefp-41
+  },
+  { // Entry 293
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp-14,
+    -0x1.fffffffffffefp-41
+  },
+  { // Entry 294
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp0,
+    0x1.fffffffffffefp1
+  },
+  { // Entry 295
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp0,
+    -0x1.fffffffffffefp1
+  },
+  { // Entry 296
+    0x1.965fea53d6e38034b41ac1fbdae9a22fp13,
+    0x1.fffffffffffefp40
+  },
+  { // Entry 297
+    -0x1.965fea53d6e38034b41ac1fbdae9a22fp13,
+    -0x1.fffffffffffefp40
+  },
+  { // Entry 298
+    0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-14,
+    0x1.ffffffffffffcp-40
+  },
+  { // Entry 299
+    -0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-14,
+    -0x1.ffffffffffffcp-40
+  },
+  { // Entry 300
+    0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-341,
+    0x1.ffffffffffffcp-1021
+  },
+  { // Entry 301
+    -0x1.ffffffffffffeaaaaaaaaaaaa9c71c71p-341,
+    -0x1.ffffffffffffcp-1021
+  },
+  { // Entry 302
+    0x1.428a2f98d728a76a078787ef8fb5d54bp-340,
+    0x1.ffffffffffffep-1020
+  },
+  { // Entry 303
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp-340,
+    -0x1.ffffffffffffep-1020
+  },
+  { // Entry 304
+    0x1.965fea53d6e3bfb3b0b7db8f7ec17d0fp-341,
+    0x1.ffffffffffffep-1022
+  },
+  { // Entry 305
+    -0x1.965fea53d6e3bfb3b0b7db8f7ec17d0fp-341,
+    -0x1.ffffffffffffep-1022
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 308
+    0x1.0ce9d573f43b4429b89ec57945e5d434p0,
+    0x1.28ba2e8ba2e8cp0
+  },
+  { // Entry 309
+    -0x1.0ce9d573f43b4429b89ec57945e5d434p0,
+    -0x1.28ba2e8ba2e8cp0
+  },
+  { // Entry 310
+    0x1.18b16f086288d6f00ce5c5780fcb86f0p0,
+    0x1.51745d1745d18p0
+  },
+  { // Entry 311
+    -0x1.18b16f086288d6f00ce5c5780fcb86f0p0,
+    -0x1.51745d1745d18p0
+  },
+  { // Entry 312
+    0x1.238f2c8477adc049b515c7f78f3ae422p0,
+    0x1.7a2e8ba2e8ba4p0
+  },
+  { // Entry 313
+    -0x1.238f2c8477adc049b515c7f78f3ae422p0,
+    -0x1.7a2e8ba2e8ba4p0
+  },
+  { // Entry 314
+    0x1.2dabb7e49e39ff2a10deddc33bc81fccp0,
+    0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 315
+    -0x1.2dabb7e49e39ff2a10deddc33bc81fccp0,
+    -0x1.a2e8ba2e8ba30p0
+  },
+  { // Entry 316
+    0x1.372579fd08bf3f740d425e125a1352ffp0,
+    0x1.cba2e8ba2e8bcp0
+  },
+  { // Entry 317
+    -0x1.372579fd08bf3f740d425e125a1352ffp0,
+    -0x1.cba2e8ba2e8bcp0
+  },
+  { // Entry 318
+    0x1.4013dac5da2a703e1c77ca4721acee1cp0,
+    0x1.f45d1745d1748p0
+  },
+  { // Entry 319
+    -0x1.4013dac5da2a703e1c77ca4721acee1cp0,
+    -0x1.f45d1745d1748p0
+  },
+  { // Entry 320
+    0x1.48894c52b3445f6f84012f405de32fa2p0,
+    0x1.0e8ba2e8ba2eap1
+  },
+  { // Entry 321
+    -0x1.48894c52b3445f6f84012f405de32fa2p0,
+    -0x1.0e8ba2e8ba2eap1
+  },
+  { // Entry 322
+    0x1.5094a1d6e6b639229cdb3810b410cd5cp0,
+    0x1.22e8ba2e8ba30p1
+  },
+  { // Entry 323
+    -0x1.5094a1d6e6b639229cdb3810b410cd5cp0,
+    -0x1.22e8ba2e8ba30p1
+  },
+  { // Entry 324
+    0x1.5841f8c61fd58c8dad04fdec3cf0af73p0,
+    0x1.3745d1745d176p1
+  },
+  { // Entry 325
+    -0x1.5841f8c61fd58c8dad04fdec3cf0af73p0,
+    -0x1.3745d1745d176p1
+  },
+  { // Entry 326
+    0x1.5f9b5c16910ae69ed06d3e621a09f184p0,
+    0x1.4ba2e8ba2e8bcp1
+  },
+  { // Entry 327
+    -0x1.5f9b5c16910ae69ed06d3e621a09f184p0,
+    -0x1.4ba2e8ba2e8bcp1
+  },
+  { // Entry 328
+    0x1.66a9398ba2a3a698c051df109f770e88p0,
+    0x1.6000000000002p1
+  },
+  { // Entry 329
+    -0x1.66a9398ba2a3a698c051df109f770e88p0,
+    -0x1.6000000000002p1
+  },
+  { // Entry 330
+    0x1.6d72b7dcc7672cfcef1093936e2afe79p0,
+    0x1.745d1745d1748p1
+  },
+  { // Entry 331
+    -0x1.6d72b7dcc7672cfcef1093936e2afe79p0,
+    -0x1.745d1745d1748p1
+  },
+  { // Entry 332
+    0x1.73fdf738e55e14736c80bd51b7812f30p0,
+    0x1.88ba2e8ba2e8ep1
+  },
+  { // Entry 333
+    -0x1.73fdf738e55e14736c80bd51b7812f30p0,
+    -0x1.88ba2e8ba2e8ep1
+  },
+  { // Entry 334
+    0x1.7a504269f3f8eaacfe698899d72d5624p0,
+    0x1.9d1745d1745d4p1
+  },
+  { // Entry 335
+    -0x1.7a504269f3f8eaacfe698899d72d5624p0,
+    -0x1.9d1745d1745d4p1
+  },
+  { // Entry 336
+    0x1.806e34d4af571a8ec04858e9296e6f3bp0,
+    0x1.b1745d1745d1ap1
+  },
+  { // Entry 337
+    -0x1.806e34d4af571a8ec04858e9296e6f3bp0,
+    -0x1.b1745d1745d1ap1
+  },
+  { // Entry 338
+    0x1.865bd841493085e78103debe7c1f93c8p0,
+    0x1.c5d1745d17460p1
+  },
+  { // Entry 339
+    -0x1.865bd841493085e78103debe7c1f93c8p0,
+    -0x1.c5d1745d17460p1
+  },
+  { // Entry 340
+    0x1.8c1cbc7cd4e55e886cb4a94f63941b44p0,
+    0x1.da2e8ba2e8ba6p1
+  },
+  { // Entry 341
+    -0x1.8c1cbc7cd4e55e886cb4a94f63941b44p0,
+    -0x1.da2e8ba2e8ba6p1
+  },
+  { // Entry 342
+    0x1.91b40a4df21132c467d86553807600cdp0,
+    0x1.ee8ba2e8ba2ecp1
+  },
+  { // Entry 343
+    -0x1.91b40a4df21132c467d86553807600cdp0,
+    -0x1.ee8ba2e8ba2ecp1
+  },
+  { // Entry 344
+    0x1.972492d08e2c99d904b83bd8d8b5b7b7p0,
+    0x1.01745d1745d19p2
+  },
+  { // Entry 345
+    -0x1.972492d08e2c99d904b83bd8d8b5b7b7p0,
+    -0x1.01745d1745d19p2
+  },
+  { // Entry 346
+    0x1.9c70dc04b206ec6b858fbed95865bda0p0,
+    0x1.0ba2e8ba2e8bcp2
+  },
+  { // Entry 347
+    -0x1.9c70dc04b206ec6b858fbed95865bda0p0,
+    -0x1.0ba2e8ba2e8bcp2
+  },
+  { // Entry 348
+    0x1.a19b2b2929306e418bc85ca14b471159p0,
+    0x1.15d1745d1745fp2
+  },
+  { // Entry 349
+    -0x1.a19b2b2929306e418bc85ca14b471159p0,
+    -0x1.15d1745d1745fp2
+  },
+  { // Entry 350
+    0x1.a6a58d55e307cd862806e73ea3aa75dcp0,
+    0x1.2000000000002p2
+  },
+  { // Entry 351
+    -0x1.a6a58d55e307cd862806e73ea3aa75dcp0,
+    -0x1.2000000000002p2
+  },
+  { // Entry 352
+    0x1.ab91deaee6e7398a4db8d908e1d20b42p0,
+    0x1.2a2e8ba2e8ba5p2
+  },
+  { // Entry 353
+    -0x1.ab91deaee6e7398a4db8d908e1d20b42p0,
+    -0x1.2a2e8ba2e8ba5p2
+  },
+  { // Entry 354
+    0x1.b061d074afb8809398fc89026fd75a85p0,
+    0x1.345d1745d1748p2
+  },
+  { // Entry 355
+    -0x1.b061d074afb8809398fc89026fd75a85p0,
+    -0x1.345d1745d1748p2
+  },
+  { // Entry 356
+    0x1.b516ee27c2d35cf59a75730f88f173e0p0,
+    0x1.3e8ba2e8ba2ebp2
+  },
+  { // Entry 357
+    -0x1.b516ee27c2d35cf59a75730f88f173e0p0,
+    -0x1.3e8ba2e8ba2ebp2
+  },
+  { // Entry 358
+    0x1.b9b2a1e9f9da334490d48cb02cb4bf58p0,
+    0x1.48ba2e8ba2e8ep2
+  },
+  { // Entry 359
+    -0x1.b9b2a1e9f9da334490d48cb02cb4bf58p0,
+    -0x1.48ba2e8ba2e8ep2
+  },
+  { // Entry 360
+    0x1.be36383f4756f16d777bfee1465b907ep0,
+    0x1.52e8ba2e8ba31p2
+  },
+  { // Entry 361
+    -0x1.be36383f4756f16d777bfee1465b907ep0,
+    -0x1.52e8ba2e8ba31p2
+  },
+  { // Entry 362
+    0x1.c2a2e349098e1ce3cf090c892ec047cap0,
+    0x1.5d1745d1745d4p2
+  },
+  { // Entry 363
+    -0x1.c2a2e349098e1ce3cf090c892ec047cap0,
+    -0x1.5d1745d1745d4p2
+  },
+  { // Entry 364
+    0x1.c6f9bd91c721629d7d05a54a3b34c8fep0,
+    0x1.6745d1745d177p2
+  },
+  { // Entry 365
+    -0x1.c6f9bd91c721629d7d05a54a3b34c8fep0,
+    -0x1.6745d1745d177p2
+  },
+  { // Entry 366
+    0x1.cb3bcc7b190568ede2e1277438cb7dc0p0,
+    0x1.71745d1745d1ap2
+  },
+  { // Entry 367
+    -0x1.cb3bcc7b190568ede2e1277438cb7dc0p0,
+    -0x1.71745d1745d1ap2
+  },
+  { // Entry 368
+    0x1.cf6a025c48d470136550753b069eb686p0,
+    0x1.7ba2e8ba2e8bdp2
+  },
+  { // Entry 369
+    -0x1.cf6a025c48d470136550753b069eb686p0,
+    -0x1.7ba2e8ba2e8bdp2
+  },
+  { // Entry 370
+    0x1.d385405d97057c2d90e63f01cb80587dp0,
+    0x1.85d1745d17460p2
+  },
+  { // Entry 371
+    -0x1.d385405d97057c2d90e63f01cb80587dp0,
+    -0x1.85d1745d17460p2
+  },
+  { // Entry 372
+    0x1.d78e581a0c130b55a8fe17e4c041698cp0,
+    0x1.9000000000003p2
+  },
+  { // Entry 373
+    -0x1.d78e581a0c130b55a8fe17e4c041698cp0,
+    -0x1.9000000000003p2
+  },
+  { // Entry 374
+    0x1.db860d100d75f2cb69726e75e5a5a9a0p0,
+    0x1.9a2e8ba2e8ba6p2
+  },
+  { // Entry 375
+    -0x1.db860d100d75f2cb69726e75e5a5a9a0p0,
+    -0x1.9a2e8ba2e8ba6p2
+  },
+  { // Entry 376
+    0x1.df6d15e795af02a9c5484050b847db7dp0,
+    0x1.a45d1745d1749p2
+  },
+  { // Entry 377
+    -0x1.df6d15e795af02a9c5484050b847db7dp0,
+    -0x1.a45d1745d1749p2
+  },
+  { // Entry 378
+    0x1.e3441d93d4a6e4350c223c240878382cp0,
+    0x1.ae8ba2e8ba2ecp2
+  },
+  { // Entry 379
+    -0x1.e3441d93d4a6e4350c223c240878382cp0,
+    -0x1.ae8ba2e8ba2ecp2
+  },
+  { // Entry 380
+    0x1.e70bc455167843aff629b746acfdb954p0,
+    0x1.b8ba2e8ba2e8fp2
+  },
+  { // Entry 381
+    -0x1.e70bc455167843aff629b746acfdb954p0,
+    -0x1.b8ba2e8ba2e8fp2
+  },
+  { // Entry 382
+    0x1.eac4a09f102dc54392e2d4473d85908cp0,
+    0x1.c2e8ba2e8ba32p2
+  },
+  { // Entry 383
+    -0x1.eac4a09f102dc54392e2d4473d85908cp0,
+    -0x1.c2e8ba2e8ba32p2
+  },
+  { // Entry 384
+    0x1.ee6f3fe7143487345a5bdd055002660cp0,
+    0x1.cd1745d1745d5p2
+  },
+  { // Entry 385
+    -0x1.ee6f3fe7143487345a5bdd055002660cp0,
+    -0x1.cd1745d1745d5p2
+  },
+  { // Entry 386
+    0x1.f20c275d2d02fed5358f1cbf6bde21f6p0,
+    0x1.d745d1745d178p2
+  },
+  { // Entry 387
+    -0x1.f20c275d2d02fed5358f1cbf6bde21f6p0,
+    -0x1.d745d1745d178p2
+  },
+  { // Entry 388
+    0x1.f59bd492aecb81e8f922dfb0a070b22cp0,
+    0x1.e1745d1745d1bp2
+  },
+  { // Entry 389
+    -0x1.f59bd492aecb81e8f922dfb0a070b22cp0,
+    -0x1.e1745d1745d1bp2
+  },
+  { // Entry 390
+    0x1.f91ebe1075131607e1dbc3ce239d00d2p0,
+    0x1.eba2e8ba2e8bep2
+  },
+  { // Entry 391
+    -0x1.f91ebe1075131607e1dbc3ce239d00d2p0,
+    -0x1.eba2e8ba2e8bep2
+  },
+  { // Entry 392
+    0x1.fc9553deb389bb042ac0e43d2dcb675dp0,
+    0x1.f5d1745d17461p2
+  },
+  { // Entry 393
+    -0x1.fc9553deb389bb042ac0e43d2dcb675dp0,
+    -0x1.f5d1745d17461p2
+  },
+  { // Entry 394
+    0x1.p1,
+    0x1.0p3
+  },
+  { // Entry 395
+    -0x1.p1,
+    -0x1.0p3
+  },
+  { // Entry 396
+    0x1.428a2f98d728ae223ddab715be250d0cp33,
+    0x1.0p100
+  },
+  { // Entry 397
+    -0x1.428a2f98d728ae223ddab715be250d0cp33,
+    -0x1.0p100
+  },
+  { // Entry 398
+    0x1.4cf38fa1af1c8e60b99ab1c90a701828p33,
+    0x1.199999999999ap100
+  },
+  { // Entry 399
+    -0x1.4cf38fa1af1c8e60b99ab1c90a701828p33,
+    -0x1.199999999999ap100
+  },
+  { // Entry 400
+    0x1.56bfea66ef78d5074657b3dee42b5e0cp33,
+    0x1.3333333333334p100
+  },
+  { // Entry 401
+    -0x1.56bfea66ef78d5074657b3dee42b5e0cp33,
+    -0x1.3333333333334p100
+  },
+  { // Entry 402
+    0x1.60048365d4c9ff9b67f93498f33785eap33,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 403
+    -0x1.60048365d4c9ff9b67f93498f33785eap33,
+    -0x1.4cccccccccccep100
+  },
+  { // Entry 404
+    0x1.68d25a9bdf483c622a268591832b9e0cp33,
+    0x1.6666666666668p100
+  },
+  { // Entry 405
+    -0x1.68d25a9bdf483c622a268591832b9e0cp33,
+    -0x1.6666666666668p100
+  },
+  { // Entry 406
+    0x1.7137449123ef700f67831ee169a0f859p33,
+    0x1.8000000000002p100
+  },
+  { // Entry 407
+    -0x1.7137449123ef700f67831ee169a0f859p33,
+    -0x1.8000000000002p100
+  },
+  { // Entry 408
+    0x1.793eace1a3426c2ab31f0f7242cbda04p33,
+    0x1.999999999999cp100
+  },
+  { // Entry 409
+    -0x1.793eace1a3426c2ab31f0f7242cbda04p33,
+    -0x1.999999999999cp100
+  },
+  { // Entry 410
+    0x1.80f22109df4e9aabf15aa42b09a56fe4p33,
+    0x1.b333333333336p100
+  },
+  { // Entry 411
+    -0x1.80f22109df4e9aabf15aa42b09a56fe4p33,
+    -0x1.b333333333336p100
+  },
+  { // Entry 412
+    0x1.8859b5bd7e46d0b16729348cdc72c851p33,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 413
+    -0x1.8859b5bd7e46d0b16729348cdc72c851p33,
+    -0x1.cccccccccccd0p100
+  },
+  { // Entry 414
+    0x1.8f7c5264003808599b16e8bbfa290ef6p33,
+    0x1.e66666666666ap100
+  },
+  { // Entry 415
+    -0x1.8f7c5264003808599b16e8bbfa290ef6p33,
+    -0x1.e66666666666ap100
+  },
+  { // Entry 416
+    0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    0x1.0p101
+  },
+  { // Entry 417
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    -0x1.0p101
+  },
+  { // Entry 418
+    0x1.965fea53d6e3c82b05999ab43dc4def1p66,
+    0x1.0p200
+  },
+  { // Entry 419
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p66,
+    -0x1.0p200
+  },
+  { // Entry 420
+    0x1.a37e13dc4b3bbdc9f070bbccaee9e708p66,
+    0x1.199999999999ap200
+  },
+  { // Entry 421
+    -0x1.a37e13dc4b3bbdc9f070bbccaee9e708p66,
+    -0x1.199999999999ap200
+  },
+  { // Entry 422
+    0x1.afd66803b2c0cb28b8149b63f2e5b8e9p66,
+    0x1.3333333333334p200
+  },
+  { // Entry 423
+    -0x1.afd66803b2c0cb28b8149b63f2e5b8e9p66,
+    -0x1.3333333333334p200
+  },
+  { // Entry 424
+    0x1.bb83b127e934396de5002f26845693c2p66,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 425
+    -0x1.bb83b127e934396de5002f26845693c2p66,
+    -0x1.4cccccccccccep200
+  },
+  { // Entry 426
+    0x1.c69b5a72f1a9a3d5297dfa071329d303p66,
+    0x1.6666666666668p200
+  },
+  { // Entry 427
+    -0x1.c69b5a72f1a9a3d5297dfa071329d303p66,
+    -0x1.6666666666668p200
+  },
+  { // Entry 428
+    0x1.d12ed0af1a27fc29a341295b82254417p66,
+    0x1.8000000000002p200
+  },
+  { // Entry 429
+    -0x1.d12ed0af1a27fc29a341295b82254417p66,
+    -0x1.8000000000002p200
+  },
+  { // Entry 430
+    0x1.db4c7760bcff3665b7f68aed854e789bp66,
+    0x1.999999999999cp200
+  },
+  { // Entry 431
+    -0x1.db4c7760bcff3665b7f68aed854e789bp66,
+    -0x1.999999999999cp200
+  },
+  { // Entry 432
+    0x1.e50057a6819032342f0b19647f70fc87p66,
+    0x1.b333333333336p200
+  },
+  { // Entry 433
+    -0x1.e50057a6819032342f0b19647f70fc87p66,
+    -0x1.b333333333336p200
+  },
+  { // Entry 434
+    0x1.ee549fe7085e87e59ca6a43631166ee4p66,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 435
+    -0x1.ee549fe7085e87e59ca6a43631166ee4p66,
+    -0x1.cccccccccccd0p200
+  },
+  { // Entry 436
+    0x1.f75202ec86e0c47a6b05c229a6b58c64p66,
+    0x1.e66666666666ap200
+  },
+  { // Entry 437
+    -0x1.f75202ec86e0c47a6b05c229a6b58c64p66,
+    -0x1.e66666666666ap200
+  },
+  { // Entry 438
+    0x1.p67,
+    0x1.0p201
+  },
+  { // Entry 439
+    -0x1.p67,
+    -0x1.0p201
+  },
+  { // Entry 440
+    0x1.428a2f98d728ae223ddab715be250d0cp333,
+    0x1.0p1000
+  },
+  { // Entry 441
+    -0x1.428a2f98d728ae223ddab715be250d0cp333,
+    -0x1.0p1000
+  },
+  { // Entry 442
+    0x1.4cf38fa1af1c8e60b99ab1c90a701828p333,
+    0x1.199999999999ap1000
+  },
+  { // Entry 443
+    -0x1.4cf38fa1af1c8e60b99ab1c90a701828p333,
+    -0x1.199999999999ap1000
+  },
+  { // Entry 444
+    0x1.56bfea66ef78d5074657b3dee42b5e0cp333,
+    0x1.3333333333334p1000
+  },
+  { // Entry 445
+    -0x1.56bfea66ef78d5074657b3dee42b5e0cp333,
+    -0x1.3333333333334p1000
+  },
+  { // Entry 446
+    0x1.60048365d4c9ff9b67f93498f33785eap333,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 447
+    -0x1.60048365d4c9ff9b67f93498f33785eap333,
+    -0x1.4cccccccccccep1000
+  },
+  { // Entry 448
+    0x1.68d25a9bdf483c622a268591832b9e0cp333,
+    0x1.6666666666668p1000
+  },
+  { // Entry 449
+    -0x1.68d25a9bdf483c622a268591832b9e0cp333,
+    -0x1.6666666666668p1000
+  },
+  { // Entry 450
+    0x1.7137449123ef700f67831ee169a0f859p333,
+    0x1.8000000000002p1000
+  },
+  { // Entry 451
+    -0x1.7137449123ef700f67831ee169a0f859p333,
+    -0x1.8000000000002p1000
+  },
+  { // Entry 452
+    0x1.793eace1a3426c2ab31f0f7242cbda04p333,
+    0x1.999999999999cp1000
+  },
+  { // Entry 453
+    -0x1.793eace1a3426c2ab31f0f7242cbda04p333,
+    -0x1.999999999999cp1000
+  },
+  { // Entry 454
+    0x1.80f22109df4e9aabf15aa42b09a56fe4p333,
+    0x1.b333333333336p1000
+  },
+  { // Entry 455
+    -0x1.80f22109df4e9aabf15aa42b09a56fe4p333,
+    -0x1.b333333333336p1000
+  },
+  { // Entry 456
+    0x1.8859b5bd7e46d0b16729348cdc72c851p333,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 457
+    -0x1.8859b5bd7e46d0b16729348cdc72c851p333,
+    -0x1.cccccccccccd0p1000
+  },
+  { // Entry 458
+    0x1.8f7c5264003808599b16e8bbfa290ef6p333,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 459
+    -0x1.8f7c5264003808599b16e8bbfa290ef6p333,
+    -0x1.e66666666666ap1000
+  },
+  { // Entry 460
+    0x1.965fea53d6e3c82b05999ab43dc4def1p333,
+    0x1.0p1001
+  },
+  { // Entry 461
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p333,
+    -0x1.0p1001
+  },
+  { // Entry 462
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 463
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p0,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 464
+    0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    0x1.0p2
+  },
+  { // Entry 465
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    -0x1.0p2
+  },
+  { // Entry 466
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 467
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p0,
+    -0x1.0000000000001p2
+  },
+  { // Entry 468
+    0x1.428a2f98d728aac622b11f82a6f666c9p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 469
+    -0x1.428a2f98d728aac622b11f82a6f666c9p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 470
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.0p1
+  },
+  { // Entry 471
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.0p1
+  },
+  { // Entry 472
+    0x1.428a2f98d728b4da742de63bec4c97dep0,
+    0x1.0000000000001p1
+  },
+  { // Entry 473
+    -0x1.428a2f98d728b4da742de63bec4c97dep0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 474
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 475
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 476
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 477
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 478
+    0x1.0000000000000555555555555538e38ep0,
+    0x1.0000000000001p0
+  },
+  { // Entry 479
+    -0x1.0000000000000555555555555538e38ep0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 480
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 481
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 482
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    0x1.0p-1
+  },
+  { // Entry 483
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    -0x1.0p-1
+  },
+  { // Entry 484
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 485
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 486
+    0x1.428a2f98d728aac622b11f82a6f666c9p-1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 487
+    -0x1.428a2f98d728aac622b11f82a6f666c9p-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 488
+    0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    0x1.0p-2
+  },
+  { // Entry 489
+    -0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    -0x1.0p-2
+  },
+  { // Entry 490
+    0x1.428a2f98d728b4da742de63bec4c97dep-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 491
+    -0x1.428a2f98d728b4da742de63bec4c97dep-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 492
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 493
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-2,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 494
+    0x1.p-1,
+    0x1.0p-3
+  },
+  { // Entry 495
+    -0x1.p-1,
+    -0x1.0p-3
+  },
+  { // Entry 496
+    0x1.0000000000000555555555555538e38ep-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 497
+    -0x1.0000000000000555555555555538e38ep-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 498
+    0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 499
+    -0x1.965fea53d6e3c3ef5b28bb21de4e77c6p-2,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 500
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    0x1.0p-4
+  },
+  { // Entry 501
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    -0x1.0p-4
+  },
+  { // Entry 502
+    0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 503
+    -0x1.965fea53d6e3d0a25a7b59d8fc6df2a0p-2,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 504
+    0x1.428a2f98d728aac622b11f82a6f666c9p-2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 505
+    -0x1.428a2f98d728aac622b11f82a6f666c9p-2,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 506
+    0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    0x1.0p-5
+  },
+  { // Entry 507
+    -0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    -0x1.0p-5
+  },
+  { // Entry 508
+    0x1.428a2f98d728b4da742de63bec4c97dep-2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 509
+    -0x1.428a2f98d728b4da742de63bec4c97dep-2,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 510
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-3,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 511
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-3,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 512
+    0x1.p-2,
+    0x1.0p-6
+  },
+  { // Entry 513
+    -0x1.p-2,
+    -0x1.0p-6
+  },
+  { // Entry 514
+    0x1.0000000000000555555555555538e38ep-2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 515
+    -0x1.0000000000000555555555555538e38ep-2,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 516
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 517
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 518
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 519
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 520
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 521
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 522
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 523
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 524
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 525
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 526
+    0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 527
+    -0x1.428a2f98d728aac622b11f82a6f666c9p341,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.428a2f98d728a76a078787ef8fb5d54bp341,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 529
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp341,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 530
+    0x1.76ef7e73104b77508331312871c1baeap0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 531
+    -0x1.76ef7e73104b77508331312871c1baeap0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 532
+    0x1.2996264e0e3fdb54d3ab251146a24027p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 533
+    -0x1.2996264e0e3fdb54d3ab251146a24027p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 534
+    0x1.d8639fdcb60ea0b871238ad028637d9fp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 535
+    -0x1.d8639fdcb60ea0b871238ad028637d9fp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 536
+    0x1.p1,
+    0x1.0p3
+  },
+  { // Entry 537
+    -0x1.p1,
+    -0x1.0p3
+  },
+  { // Entry 538
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.0p1
+  },
+  { // Entry 539
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.0p1
+  },
+  { // Entry 540
+    0x1.0000000000000555555555555538e38ep0,
+    0x1.0000000000001p0
+  },
+  { // Entry 541
+    -0x1.0000000000000555555555555538e38ep0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 542
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 543
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 544
+    0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 545
+    -0x1.fffffffffffffaaaaaaaaaaaaa9c71c7p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 546
+    0x1.428a2f98d728b4da742de63bec4c97dep-341,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 547
+    -0x1.428a2f98d728b4da742de63bec4c97dep-341,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 548
+    0x1.428a2f98d728ae223ddab715be250d0cp-341,
+    0x1.0p-1022
+  },
+  { // Entry 549
+    -0x1.428a2f98d728ae223ddab715be250d0cp-341,
+    -0x1.0p-1022
+  },
+  { // Entry 550
+    0x1.428a2f98d728a76a078787ef8fb5d54bp-341,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 551
+    -0x1.428a2f98d728a76a078787ef8fb5d54bp-341,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 552
+    0x1.428a2f98d728a0b1d13458c960fef09cp-341,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 553
+    -0x1.428a2f98d728a0b1d13458c960fef09cp-341,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 554
+    0x1.428a2f98d728ae223ddab715be250d0cp-358,
+    0x1.0p-1073
+  },
+  { // Entry 555
+    -0x1.428a2f98d728ae223ddab715be250d0cp-358,
+    -0x1.0p-1073
+  },
+  { // Entry 556
+    0x1.p-358,
+    0x1.0p-1074
+  },
+  { // Entry 557
+    -0x1.p-358,
+    -0x1.0p-1074
+  },
+  { // Entry 558
+    0.0,
+    0.0
+  },
+  { // Entry 559
+    -0.0,
+    -0.0
+  },
+  { // Entry 560
+    0x1.80p1,
+    0x1.bp4
+  },
+  { // Entry 561
+    -0x1.80p1,
+    -0x1.bp4
+  },
+  { // Entry 562
+    0x1.40p2,
+    0x1.f40p6
+  },
+  { // Entry 563
+    -0x1.40p2,
+    -0x1.f40p6
+  }
+};
diff --git a/tests/math_data/cbrtf_intel_data.h b/tests/math_data/cbrtf_intel_data.h
new file mode 100644
index 0000000..5ce73df
--- /dev/null
+++ b/tests/math_data/cbrtf_intel_data.h
@@ -0,0 +1,1754 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_cbrtf_intel_data[] = {
+  { // Entry 0
+    -0x1.00007fffc000355520003aaa663936aap-42,
+    -0x1.000180p-126
+  },
+  { // Entry 1
+    0x1.00007fffc000355520003aaa663936aap-42,
+    0x1.000180p-126
+  },
+  { // Entry 2
+    -0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    -0x1.0003p-6
+  },
+  { // Entry 3
+    0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    0x1.0003p-6
+  },
+  { // Entry 4
+    -0x1.007c2715b6911795158a4d4cc45b8d59p2,
+    -0x1.01752ap6
+  },
+  { // Entry 5
+    0x1.007c2715b6911795158a4d4cc45b8d59p2,
+    0x1.01752ap6
+  },
+  { // Entry 6
+    -0x1.0b9ccd06011fce363b7a50a0a3b8e26cp1,
+    -0x1.247112p3
+  },
+  { // Entry 7
+    0x1.0b9ccd06011fce363b7a50a0a3b8e26cp1,
+    0x1.247112p3
+  },
+  { // Entry 8
+    -0x1.aa863b0a38d00e125cbd173f60ddbb68p1,
+    -0x1.27fff8p5
+  },
+  { // Entry 9
+    0x1.aa863b0a38d00e125cbd173f60ddbb68p1,
+    0x1.27fff8p5
+  },
+  { // Entry 10
+    -0x1.b0ff4b0cf530be2de450549f985f42afp-3,
+    -0x1.35ae80p-7
+  },
+  { // Entry 11
+    0x1.b0ff4b0cf530be2de450549f985f42afp-3,
+    0x1.35ae80p-7
+  },
+  { // Entry 12
+    -0x1.d30d4d0027a339e3355b6acc1d16b858p-11,
+    -0x1.84a5b6p-31
+  },
+  { // Entry 13
+    0x1.d30d4d0027a339e3355b6acc1d16b858p-11,
+    0x1.84a5b6p-31
+  },
+  { // Entry 14
+    -0x1.7bc7460098a24fb469f60dedd0c113cep-4,
+    -0x1.a1e880p-11
+  },
+  { // Entry 15
+    0x1.7bc7460098a24fb469f60dedd0c113cep-4,
+    0x1.a1e880p-11
+  },
+  { // Entry 16
+    -0x1.e18718fd2b5e5307048d4417449467b6p-11,
+    -0x1.a9ea80p-31
+  },
+  { // Entry 17
+    0x1.e18718fd2b5e5307048d4417449467b6p-11,
+    0x1.a9ea80p-31
+  },
+  { // Entry 18
+    -0x1.e3082be3326da6c23ae338a3f121dd1fp-11,
+    -0x1.adeb80p-31
+  },
+  { // Entry 19
+    0x1.e3082be3326da6c23ae338a3f121dd1fp-11,
+    0x1.adeb80p-31
+  },
+  { // Entry 20
+    0x1.965ff706d5d0ceecd979f25d2bd0f2dcp-14,
+    0x1.000018p-40
+  },
+  { // Entry 21
+    -0x1.965ff706d5d0ceecd979f25d2bd0f2dcp-14,
+    -0x1.000018p-40
+  },
+  { // Entry 22
+    0x1.96602e0e72a7fdf15e33145af6f263d8p0,
+    0x1.000080p2
+  },
+  { // Entry 23
+    -0x1.96602e0e72a7fdf15e33145af6f263d8p0,
+    -0x1.000080p2
+  },
+  { // Entry 24
+    0x1.96603efd1611ff8ea190cefd028f4506p-14,
+    0x1.0000a0p-40
+  },
+  { // Entry 25
+    -0x1.96603efd1611ff8ea190cefd028f4506p-14,
+    -0x1.0000a0p-40
+  },
+  { // Entry 26
+    0x1.00003ffff00006aaa755572aa998e434p-2,
+    0x1.0000c0p-6
+  },
+  { // Entry 27
+    -0x1.00003ffff00006aaa755572aa998e434p-2,
+    -0x1.0000c0p-6
+  },
+  { // Entry 28
+    0x1.966060da58aa5d0c57334a9a680c3e14p-14,
+    0x1.0000e0p-40
+  },
+  { // Entry 29
+    -0x1.966060da58aa5d0c57334a9a680c3e14p-14,
+    -0x1.0000e0p-40
+  },
+  { // Entry 30
+    0x1.428ad0dd9e52d1023b2faca281049d23p-42,
+    0x1.000180p-125
+  },
+  { // Entry 31
+    -0x1.428ad0dd9e52d1023b2faca281049d23p-42,
+    -0x1.000180p-125
+  },
+  { // Entry 32
+    0x1.00007fffc000355520003aaa663936aap-42,
+    0x1.000180p-126
+  },
+  { // Entry 33
+    -0x1.00007fffc000355520003aaa663936aap-42,
+    -0x1.000180p-126
+  },
+  { // Entry 34
+    0x1.966118fd0fff4af1016786c52473d739p0,
+    0x1.00023cp2
+  },
+  { // Entry 35
+    -0x1.966118fd0fff4af1016786c52473d739p0,
+    -0x1.00023cp2
+  },
+  { // Entry 36
+    0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    0x1.0003p-6
+  },
+  { // Entry 37
+    -0x1.0000ffff0001aaa7555caa998e62715fp-2,
+    -0x1.0003p-6
+  },
+  { // Entry 38
+    0x1.9661c46c3f2accbc3b2879ecc64c5563p-42,
+    0x1.000380p-124
+  },
+  { // Entry 39
+    -0x1.9661c46c3f2accbc3b2879ecc64c5563p-42,
+    -0x1.000380p-124
+  },
+  { // Entry 40
+    0x1.000954fe3e2e3b3fc203c0f1122ef525p-2,
+    0x1.001cp-6
+  },
+  { // Entry 41
+    -0x1.000954fe3e2e3b3fc203c0f1122ef525p-2,
+    -0x1.001cp-6
+  },
+  { // Entry 42
+    0x1.000fff001aa755ca9990d15f4978c319p-1,
+    0x1.0030p-3
+  },
+  { // Entry 43
+    -0x1.000fff001aa755ca9990d15f4978c319p-1,
+    -0x1.0030p-3
+  },
+  { // Entry 44
+    0x1.000fff001aa755ca9990d15f4978c319p-2,
+    0x1.0030p-6
+  },
+  { // Entry 45
+    -0x1.000fff001aa755ca9990d15f4978c319p-2,
+    -0x1.0030p-6
+  },
+  { // Entry 46
+    0x1.96e94efe3bb4f031f6fd29764c187ba9p-14,
+    0x1.0104p-40
+  },
+  { // Entry 47
+    -0x1.96e94efe3bb4f031f6fd29764c187ba9p-14,
+    -0x1.0104p-40
+  },
+  { // Entry 48
+    0x1.4354f47046b122c8269cefa33f6945e0p-12,
+    0x1.01e4p-35
+  },
+  { // Entry 49
+    -0x1.4354f47046b122c8269cefa33f6945e0p-12,
+    -0x1.01e4p-35
+  },
+  { // Entry 50
+    0x1.435ce4ffe5df0ed6186f37c8cd55dfcdp-14,
+    0x1.01f7p-41
+  },
+  { // Entry 51
+    -0x1.435ce4ffe5df0ed6186f37c8cd55dfcdp-14,
+    -0x1.01f7p-41
+  },
+  { // Entry 52
+    0x1.43da6b00005c39b0e6c7c4cec8063f45p0,
+    0x1.0323dep1
+  },
+  { // Entry 53
+    -0x1.43da6b00005c39b0e6c7c4cec8063f45p0,
+    -0x1.0323dep1
+  },
+  { // Entry 54
+    0x1.998ca5fd9079c0acf8d0c470551815c4p-14,
+    0x1.060cp-40
+  },
+  { // Entry 55
+    -0x1.998ca5fd9079c0acf8d0c470551815c4p-14,
+    -0x1.060cp-40
+  },
+  { // Entry 56
+    0x1.998ebb71eaf54f2b63663678acd9c1b0p-14,
+    0x1.0610p-40
+  },
+  { // Entry 57
+    -0x1.998ebb71eaf54f2b63663678acd9c1b0p-14,
+    -0x1.0610p-40
+  },
+  { // Entry 58
+    0x1.454f770000009a77b66758620294365fp-1,
+    0x1.06a76ap-2
+  },
+  { // Entry 59
+    -0x1.454f770000009a77b66758620294365fp-1,
+    -0x1.06a76ap-2
+  },
+  { // Entry 60
+    0x1.9ap-4,
+    0x1.06e9aap-10
+  },
+  { // Entry 61
+    -0x1.9ap-4,
+    -0x1.06e9aap-10
+  },
+  { // Entry 62
+    0x1.9a2dc6da8c05f5e76488d08a9d68aab3p0,
+    0x1.0741c4p2
+  },
+  { // Entry 63
+    -0x1.9a2dc6da8c05f5e76488d08a9d68aab3p0,
+    -0x1.0741c4p2
+  },
+  { // Entry 64
+    0x1.9b67b1a6ed6fd1c14e0973d1bbdffc44p-14,
+    0x1.09a0p-40
+  },
+  { // Entry 65
+    -0x1.9b67b1a6ed6fd1c14e0973d1bbdffc44p-14,
+    -0x1.09a0p-40
+  },
+  { // Entry 66
+    0x1.46ffc700366b1255b7648b4899b98d5ap-14,
+    0x1.0ac4p-41
+  },
+  { // Entry 67
+    -0x1.46ffc700366b1255b7648b4899b98d5ap-14,
+    -0x1.0ac4p-41
+  },
+  { // Entry 68
+    0x1.9c1f2ad69d37542ebe215ede37325f7dp-14,
+    0x1.0b04p-40
+  },
+  { // Entry 69
+    -0x1.9c1f2ad69d37542ebe215ede37325f7dp-14,
+    -0x1.0b04p-40
+  },
+  { // Entry 70
+    0x1.9c8148004106b29bacdfd646ccb890bbp-2,
+    0x1.0bc2e2p-4
+  },
+  { // Entry 71
+    -0x1.9c8148004106b29bacdfd646ccb890bbp-2,
+    -0x1.0bc2e2p-4
+  },
+  { // Entry 72
+    0x1.478a7bb572cc90cef3596fd852b532cdp0,
+    0x1.0c1808p1
+  },
+  { // Entry 73
+    -0x1.478a7bb572cc90cef3596fd852b532cdp0,
+    -0x1.0c1808p1
+  },
+  { // Entry 74
+    0x1.9d2397032cef4ebe8a2c5c889a8876a1p-1,
+    0x1.0cff70p-1
+  },
+  { // Entry 75
+    -0x1.9d2397032cef4ebe8a2c5c889a8876a1p-1,
+    -0x1.0cff70p-1
+  },
+  { // Entry 76
+    0x1.9e20b8d6240f02f0eaf930fdf441789ep0,
+    0x1.0eef12p2
+  },
+  { // Entry 77
+    -0x1.9e20b8d6240f02f0eaf930fdf441789ep0,
+    -0x1.0eef12p2
+  },
+  { // Entry 78
+    0x1.9ead3105d958ea7ec76503944303ef7dp2,
+    0x1.100322p8
+  },
+  { // Entry 79
+    -0x1.9ead3105d958ea7ec76503944303ef7dp2,
+    -0x1.100322p8
+  },
+  { // Entry 80
+    0x1.9f2faffdef6461c09455448fa928b9c3p-1,
+    0x1.110440p-1
+  },
+  { // Entry 81
+    -0x1.9f2faffdef6461c09455448fa928b9c3p-1,
+    -0x1.110440p-1
+  },
+  { // Entry 82
+    0x1.a0dfb8137c3e91c3f3e838645b454f05p-14,
+    0x1.145cp-40
+  },
+  { // Entry 83
+    -0x1.a0dfb8137c3e91c3f3e838645b454f05p-14,
+    -0x1.145cp-40
+  },
+  { // Entry 84
+    0x1.a2311b035270313c9ca7f92e42644378p-1,
+    0x1.16fd1ep-1
+  },
+  { // Entry 85
+    -0x1.a2311b035270313c9ca7f92e42644378p-1,
+    -0x1.16fd1ep-1
+  },
+  { // Entry 86
+    0x1.a25e7efd01b4c7f69f01fe96f643494fp-14,
+    0x1.1758p-40
+  },
+  { // Entry 87
+    -0x1.a25e7efd01b4c7f69f01fe96f643494fp-14,
+    -0x1.1758p-40
+  },
+  { // Entry 88
+    0x1.a28a68ffbdfb7eb6667d2cdd341cd234p-14,
+    0x1.17b0p-40
+  },
+  { // Entry 89
+    -0x1.a28a68ffbdfb7eb6667d2cdd341cd234p-14,
+    -0x1.17b0p-40
+  },
+  { // Entry 90
+    0x1.a2b24d04a7585fdde607a7f42d370876p-42,
+    0x1.18p-124
+  },
+  { // Entry 91
+    -0x1.a2b24d04a7585fdde607a7f42d370876p-42,
+    -0x1.18p-124
+  },
+  { // Entry 92
+    0x1.a480db076345638b28d0b5d97e216402p-14,
+    0x1.1ba4p-40
+  },
+  { // Entry 93
+    -0x1.a480db076345638b28d0b5d97e216402p-14,
+    -0x1.1ba4p-40
+  },
+  { // Entry 94
+    0x1.4e11970614cfe9395e7c524b2922ed62p-14,
+    0x1.1c71c8p-41
+  },
+  { // Entry 95
+    -0x1.4e11970614cfe9395e7c524b2922ed62p-14,
+    -0x1.1c71c8p-41
+  },
+  { // Entry 96
+    0x1.a524ac009e9723d4018859285260a132p-14,
+    0x1.1cf0p-40
+  },
+  { // Entry 97
+    -0x1.a524ac009e9723d4018859285260a132p-14,
+    -0x1.1cf0p-40
+  },
+  { // Entry 98
+    0x1.a5b64e6d1ad233a593368ac2163d6b7dp-14,
+    0x1.1e18p-40
+  },
+  { // Entry 99
+    -0x1.a5b64e6d1ad233a593368ac2163d6b7dp-14,
+    -0x1.1e18p-40
+  },
+  { // Entry 100
+    0x1.a6a58c5b6df5c725e3ec4ab187301586p-14,
+    0x1.1ffffep-40
+  },
+  { // Entry 101
+    -0x1.a6a58c5b6df5c725e3ec4ab187301586p-14,
+    -0x1.1ffffep-40
+  },
+  { // Entry 102
+    0x1.acp-4,
+    0x1.2b1530p-10
+  },
+  { // Entry 103
+    -0x1.acp-4,
+    -0x1.2b1530p-10
+  },
+  { // Entry 104
+    0x1.5500563b025a26e6cde7846c60dd1a63p0,
+    0x1.2e85dcp1
+  },
+  { // Entry 105
+    -0x1.5500563b025a26e6cde7846c60dd1a63p0,
+    -0x1.2e85dcp1
+  },
+  { // Entry 106
+    0x1.57bfb300c89d535ddc61f9b3d999dc1ep0,
+    0x1.35e4f8p1
+  },
+  { // Entry 107
+    -0x1.57bfb300c89d535ddc61f9b3d999dc1ep0,
+    -0x1.35e4f8p1
+  },
+  { // Entry 108
+    0x1.b2e9430bd21aae846599fdf68e51e1e6p-1,
+    0x1.39ce70p-1
+  },
+  { // Entry 109
+    -0x1.b2e9430bd21aae846599fdf68e51e1e6p-1,
+    -0x1.39ce70p-1
+  },
+  { // Entry 110
+    0x1.b40a010c84eac96d410f8ba21fda3f22p0,
+    0x1.3c4114p2
+  },
+  { // Entry 111
+    -0x1.b40a010c84eac96d410f8ba21fda3f22p0,
+    -0x1.3c4114p2
+  },
+  { // Entry 112
+    0x1.c5d8590ca543fcb1c0bfb46e90e419bep0,
+    0x1.6499f6p2
+  },
+  { // Entry 113
+    -0x1.c5d8590ca543fcb1c0bfb46e90e419bep0,
+    -0x1.6499f6p2
+  },
+  { // Entry 114
+    0x1.c6791f0cb47f19f16d083c211d10420bp0,
+    0x1.661576p2
+  },
+  { // Entry 115
+    -0x1.c6791f0cb47f19f16d083c211d10420bp0,
+    -0x1.661576p2
+  },
+  { // Entry 116
+    0x1.c71f7f0cd5c51d6bb49a93023a9a652dp-1,
+    0x1.679f4ap-1
+  },
+  { // Entry 117
+    -0x1.c71f7f0cd5c51d6bb49a93023a9a652dp-1,
+    -0x1.679f4ap-1
+  },
+  { // Entry 118
+    0x1.c728c50c9eca36360c22256e33e42dc2p0,
+    0x1.67b546p2
+  },
+  { // Entry 119
+    -0x1.c728c50c9eca36360c22256e33e42dc2p0,
+    -0x1.67b546p2
+  },
+  { // Entry 120
+    0x1.1fb2b50224020b9a31b5e09844e1348dp-1,
+    0x1.6b5ad6p-3
+  },
+  { // Entry 121
+    -0x1.1fb2b50224020b9a31b5e09844e1348dp-1,
+    -0x1.6b5ad6p-3
+  },
+  { // Entry 122
+    0x1.6ab560ffff8428b4d453bae089599bbap-1,
+    0x1.6c0d4ap-2
+  },
+  { // Entry 123
+    -0x1.6ab560ffff8428b4d453bae089599bbap-1,
+    -0x1.6c0d4ap-2
+  },
+  { // Entry 124
+    0x1.cdee0281e74e9710c68918089b9a62f2p-42,
+    0x1.77fffep-124
+  },
+  { // Entry 125
+    -0x1.cdee0281e74e9710c68918089b9a62f2p-42,
+    -0x1.77fffep-124
+  },
+  { // Entry 126
+    0x1.d11fb6f9f76e1fd19de47cbe7090dffbp-43,
+    0x1.7fda9cp-127
+  },
+  { // Entry 127
+    -0x1.d11fb6f9f76e1fd19de47cbe7090dffbp-43,
+    -0x1.7fda9cp-127
+  },
+  { // Entry 128
+    0x1.7ad659001595cf1b272d5984d8001451p-2,
+    0x1.9ecf20p-5
+  },
+  { // Entry 129
+    -0x1.7ad659001595cf1b272d5984d8001451p-2,
+    -0x1.9ecf20p-5
+  },
+  { // Entry 130
+    0x1.7ad659001595cf1b272d5984d8001451p-41,
+    0x1.9ecf20p-122
+  },
+  { // Entry 131
+    -0x1.7ad659001595cf1b272d5984d8001451p-41,
+    -0x1.9ecf20p-122
+  },
+  { // Entry 132
+    0x1.df1025ff8b1feb85afffe8b0cce5c6c1p-1,
+    0x1.a368d0p-1
+  },
+  { // Entry 133
+    -0x1.df1025ff8b1feb85afffe8b0cce5c6c1p-1,
+    -0x1.a368d0p-1
+  },
+  { // Entry 134
+    0x1.dfa5d2ff7b31fa9b073558a718dd7beap-3,
+    0x1.a4f268p-7
+  },
+  { // Entry 135
+    -0x1.dfa5d2ff7b31fa9b073558a718dd7beap-3,
+    -0x1.a4f268p-7
+  },
+  { // Entry 136
+    0x1.e14d56805a724bfafe4ad3bdbf27694fp0,
+    0x1.a9514ep2
+  },
+  { // Entry 137
+    -0x1.e14d56805a724bfafe4ad3bdbf27694fp0,
+    -0x1.a9514ep2
+  },
+  { // Entry 138
+    0x1.e2df53063263dd47f4e3b4be5d8acd20p-2,
+    0x1.ad7e78p-4
+  },
+  { // Entry 139
+    -0x1.e2df53063263dd47f4e3b4be5d8acd20p-2,
+    -0x1.ad7e78p-4
+  },
+  { // Entry 140
+    0x1.eb5752ff94df0f59dec8df36f4cc1b31p-41,
+    0x1.c47d8cp-121
+  },
+  { // Entry 141
+    -0x1.eb5752ff94df0f59dec8df36f4cc1b31p-41,
+    -0x1.c47d8cp-121
+  },
+  { // Entry 142
+    0x1.ebe5df03d9d653e93e8fd07e1190dca7p-2,
+    0x1.c607d2p-4
+  },
+  { // Entry 143
+    -0x1.ebe5df03d9d653e93e8fd07e1190dca7p-2,
+    -0x1.c607d2p-4
+  },
+  { // Entry 144
+    0x1.ecp-3,
+    0x1.c65030p-7
+  },
+  { // Entry 145
+    -0x1.ecp-3,
+    -0x1.c65030p-7
+  },
+  { // Entry 146
+    0x1.ed53c2fed7938cfe7d57506934d72ep-43,
+    0x1.c9fff0p-127
+  },
+  { // Entry 147
+    -0x1.ed53c2fed7938cfe7d57506934d72ep-43,
+    -0x1.c9fff0p-127
+  },
+  { // Entry 148
+    0x1.87d30f000003670b89545d5765e0e462p-2,
+    0x1.caf302p-5
+  },
+  { // Entry 149
+    -0x1.87d30f000003670b89545d5765e0e462p-2,
+    -0x1.caf302p-5
+  },
+  { // Entry 150
+    0x1.37964effff778957b16b4208af77a9b9p-1,
+    0x1.cd97a8p-3
+  },
+  { // Entry 151
+    -0x1.37964effff778957b16b4208af77a9b9p-1,
+    -0x1.cd97a8p-3
+  },
+  { // Entry 152
+    0x1.ef78e20aee43030728af06495ee66d87p-14,
+    0x1.cffffep-40
+  },
+  { // Entry 153
+    -0x1.ef78e20aee43030728af06495ee66d87p-14,
+    -0x1.cffffep-40
+  },
+  { // Entry 154
+    0x1.f060ceff8db83f2f87077b938a0de67fp-1,
+    0x1.d28cc4p-1
+  },
+  { // Entry 155
+    -0x1.f060ceff8db83f2f87077b938a0de67fp-1,
+    -0x1.d28cc4p-1
+  },
+  { // Entry 156
+    0x1.f0d282ff86ba2828aff1098a7563fc5bp-1,
+    0x1.d3cdaap-1
+  },
+  { // Entry 157
+    -0x1.f0d282ff86ba2828aff1098a7563fc5bp-1,
+    -0x1.d3cdaap-1
+  },
+  { // Entry 158
+    0x1.f1a89236719cd91fce63ecac19a53d56p0,
+    0x1.d62b5ap2
+  },
+  { // Entry 159
+    -0x1.f1a89236719cd91fce63ecac19a53d56p0,
+    -0x1.d62b5ap2
+  },
+  { // Entry 160
+    0x1.f1c2bfc0386315c501e39e3ac19c4279p-1,
+    0x1.d67590p-1
+  },
+  { // Entry 161
+    -0x1.f1c2bfc0386315c501e39e3ac19c4279p-1,
+    -0x1.d67590p-1
+  },
+  { // Entry 162
+    0x1.f2p-4,
+    0x1.d72352p-10
+  },
+  { // Entry 163
+    -0x1.f2p-4,
+    -0x1.d72352p-10
+  },
+  { // Entry 164
+    0x1.f21c203557858a7f1c78b0cb14718fa0p0,
+    0x1.d7732ap2
+  },
+  { // Entry 165
+    -0x1.f21c203557858a7f1c78b0cb14718fa0p0,
+    -0x1.d7732ap2
+  },
+  { // Entry 166
+    0x1.f21cf4389d599ec5022b876e9dab8142p-8,
+    0x1.d77584p-22
+  },
+  { // Entry 167
+    -0x1.f21cf4389d599ec5022b876e9dab8142p-8,
+    -0x1.d77584p-22
+  },
+  { // Entry 168
+    0x1.f250a10528fd3cf7552e65df7a4956f7p2,
+    0x1.d8084ep8
+  },
+  { // Entry 169
+    -0x1.f250a10528fd3cf7552e65df7a4956f7p2,
+    -0x1.d8084ep8
+  },
+  { // Entry 170
+    0x1.8be60f000087a7c285d12416d0b0cb96p-5,
+    0x1.d96a4ap-14
+  },
+  { // Entry 171
+    -0x1.8be60f000087a7c285d12416d0b0cb96p-5,
+    -0x1.d96a4ap-14
+  },
+  { // Entry 172
+    0x1.3a7bb8ffff77ce75cfe33eca149a6a50p-1,
+    0x1.da956cp-3
+  },
+  { // Entry 173
+    -0x1.3a7bb8ffff77ce75cfe33eca149a6a50p-1,
+    -0x1.da956cp-3
+  },
+  { // Entry 174
+    0x1.f5477afcf320bd46a28a22db0896968ep0,
+    0x1.e081a4p2
+  },
+  { // Entry 175
+    -0x1.f5477afcf320bd46a28a22db0896968ep0,
+    -0x1.e081a4p2
+  },
+  { // Entry 176
+    0x1.f63e0aff87cf1648687fec920f40ac1ap-3,
+    0x1.e3480ap-7
+  },
+  { // Entry 177
+    -0x1.f63e0aff87cf1648687fec920f40ac1ap-3,
+    -0x1.e3480ap-7
+  },
+  { // Entry 178
+    0x1.f64d78ff83bdecdd6abbbb5c278476c2p2,
+    0x1.e37496p8
+  },
+  { // Entry 179
+    -0x1.f64d78ff83bdecdd6abbbb5c278476c2p2,
+    -0x1.e37496p8
+  },
+  { // Entry 180
+    0x1.f67dbc1e6250897b0e90aa1d01d222c7p-14,
+    0x1.e3fffep-40
+  },
+  { // Entry 181
+    -0x1.f67dbc1e6250897b0e90aa1d01d222c7p-14,
+    -0x1.e3fffep-40
+  },
+  { // Entry 182
+    0x1.f696a6ff9280045087896842b6ed5614p0,
+    0x1.e44802p2
+  },
+  { // Entry 183
+    -0x1.f696a6ff9280045087896842b6ed5614p0,
+    -0x1.e44802p2
+  },
+  { // Entry 184
+    0x1.f6b6e4ff4a938651705569091603de15p0,
+    0x1.e4a53cp2
+  },
+  { // Entry 185
+    -0x1.f6b6e4ff4a938651705569091603de15p0,
+    -0x1.e4a53cp2
+  },
+  { // Entry 186
+    0x1.3de6d50029c5bbf888e67bae14879833p-1,
+    0x1.ea3a80p-3
+  },
+  { // Entry 187
+    -0x1.3de6d50029c5bbf888e67bae14879833p-1,
+    -0x1.ea3a80p-3
+  },
+  { // Entry 188
+    0x1.fc5fc5d0ad07f38ec9b17b1f7d4e1717p0,
+    0x1.f532fep2
+  },
+  { // Entry 189
+    -0x1.fc5fc5d0ad07f38ec9b17b1f7d4e1717p0,
+    -0x1.f532fep2
+  },
+  { // Entry 190
+    0x1.fc7d65d0f6b174adf860b9de60ce7b24p-1,
+    0x1.f58aa2p-1
+  },
+  { // Entry 191
+    -0x1.fc7d65d0f6b174adf860b9de60ce7b24p-1,
+    -0x1.f58aa2p-1
+  },
+  { // Entry 192
+    0x1.40d9df284bdbddbc87772703bfc95645p-42,
+    0x1.f7fffep-126
+  },
+  { // Entry 193
+    -0x1.40d9df284bdbddbc87772703bfc95645p-42,
+    -0x1.f7fffep-126
+  },
+  { // Entry 194
+    0x1.945120ffff77f4d7e68f17a43da19205p-1,
+    0x1.f842f0p-2
+  },
+  { // Entry 195
+    -0x1.945120ffff77f4d7e68f17a43da19205p-1,
+    -0x1.f842f0p-2
+  },
+  { // Entry 196
+    0x1.fd92627ea97689afac4039869f00e4aep-43,
+    0x1.f8bffcp-127
+  },
+  { // Entry 197
+    -0x1.fd92627ea97689afac4039869f00e4aep-43,
+    -0x1.f8bffcp-127
+  },
+  { // Entry 198
+    0x1.feff7ee99408c9b222d85d44d72d687fp-14,
+    0x1.fcfffep-40
+  },
+  { // Entry 199
+    -0x1.feff7ee99408c9b222d85d44d72d687fp-14,
+    -0x1.fcfffep-40
+  },
+  { // Entry 200
+    0x1.4217cb047241feeb78c9a78591f7bc72p-42,
+    0x1.fddffep-126
+  },
+  { // Entry 201
+    -0x1.4217cb047241feeb78c9a78591f7bc72p-42,
+    -0x1.fddffep-126
+  },
+  { // Entry 202
+    0x1.fffa53efe9ebf75d6e114db81461dc7ep-43,
+    0x1.ffeefcp-127
+  },
+  { // Entry 203
+    -0x1.fffa53efe9ebf75d6e114db81461dc7ep-43,
+    -0x1.ffeefcp-127
+  },
+  { // Entry 204
+    0x1.965cbd06313b1d823e96d5c4737221fbp13,
+    0x1.fff3fep40
+  },
+  { // Entry 205
+    -0x1.965cbd06313b1d823e96d5c4737221fbp13,
+    -0x1.fff3fep40
+  },
+  { // Entry 206
+    0x1.42897306f46b887b6eb89d9b502e1782p-2,
+    0x1.fffc7ep-6
+  },
+  { // Entry 207
+    -0x1.42897306f46b887b6eb89d9b502e1782p-2,
+    -0x1.fffc7ep-6
+  },
+  { // Entry 208
+    0x1.42897306f46b887b6eb89d9b502e1782p-42,
+    0x1.fffc7ep-126
+  },
+  { // Entry 209
+    -0x1.42897306f46b887b6eb89d9b502e1782p-42,
+    -0x1.fffc7ep-126
+  },
+  { // Entry 210
+    0x1.965fb7005dcfa5daf92e3ebc255183c2p13,
+    0x1.ffff3ep40
+  },
+  { // Entry 211
+    -0x1.965fb7005dcfa5daf92e3ebc255183c2p13,
+    -0x1.ffff3ep40
+  },
+  { // Entry 212
+    0x1.fffff3ffffb7fffd2fffde3ffe427fe7p-42,
+    0x1.ffffdcp-124
+  },
+  { // Entry 213
+    -0x1.fffff3ffffb7fffd2fffde3ffe427fe7p-42,
+    -0x1.ffffdcp-124
+  },
+  { // Entry 214
+    0x1.fffffdfffffdfffffcaaaaa3fffff155p-14,
+    0x1.fffffap-40
+  },
+  { // Entry 215
+    -0x1.fffffdfffffdfffffcaaaaa3fffff155p-14,
+    -0x1.fffffap-40
+  },
+  { // Entry 216
+    0x1.965fe944ec46dbaa04d0e2812cfbefb0p-42,
+    0x1.fffffcp-125
+  },
+  { // Entry 217
+    -0x1.965fe944ec46dbaa04d0e2812cfbefb0p-42,
+    -0x1.fffffcp-125
+  },
+  { // Entry 218
+    0x1.55984b0000856675bab5f168f2e53b1ap-1,
+    0x1.301afep-2
+  },
+  { // Entry 219
+    -0x1.55984b0000856675bab5f168f2e53b1ap-1,
+    -0x1.301afep-2
+  },
+  { // Entry 220
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 221
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 222
+    0x1.0ce9d549c583299981fd71ff4fb99542p0,
+    0x1.28ba2ep0
+  },
+  { // Entry 223
+    -0x1.0ce9d549c583299981fd71ff4fb99542p0,
+    -0x1.28ba2ep0
+  },
+  { // Entry 224
+    0x1.18b16ebaf3cb379fae9ca7124ed79cffp0,
+    0x1.51745cp0
+  },
+  { // Entry 225
+    -0x1.18b16ebaf3cb379fae9ca7124ed79cffp0,
+    -0x1.51745cp0
+  },
+  { // Entry 226
+    0x1.238f2c18d09933e19014663c566270fcp0,
+    0x1.7a2e8ap0
+  },
+  { // Entry 227
+    -0x1.238f2c18d09933e19014663c566270fcp0,
+    -0x1.7a2e8ap0
+  },
+  { // Entry 228
+    0x1.2dabb75e8acb9144f6b52cda420fefaap0,
+    0x1.a2e8b8p0
+  },
+  { // Entry 229
+    -0x1.2dabb75e8acb9144f6b52cda420fefaap0,
+    -0x1.a2e8b8p0
+  },
+  { // Entry 230
+    0x1.3725795f7ddf1e78729e44a17e53d61ep0,
+    0x1.cba2e6p0
+  },
+  { // Entry 231
+    -0x1.3725795f7ddf1e78729e44a17e53d61ep0,
+    -0x1.cba2e6p0
+  },
+  { // Entry 232
+    0x1.4013da13344ab46d4137da308b33cf09p0,
+    0x1.f45d14p0
+  },
+  { // Entry 233
+    -0x1.4013da13344ab46d4137da308b33cf09p0,
+    -0x1.f45d14p0
+  },
+  { // Entry 234
+    0x1.48894bf47f0d516d9880c85daea2ba0ep0,
+    0x1.0e8ba2p1
+  },
+  { // Entry 235
+    -0x1.48894bf47f0d516d9880c85daea2ba0ep0,
+    -0x1.0e8ba2p1
+  },
+  { // Entry 236
+    0x1.5094a1c4f343bd5747ddd428a2e21726p0,
+    0x1.22e8bap1
+  },
+  { // Entry 237
+    -0x1.5094a1c4f343bd5747ddd428a2e21726p0,
+    -0x1.22e8bap1
+  },
+  { // Entry 238
+    0x1.5841f8f99a25bf1c33fed0059f449f12p0,
+    0x1.3745d2p1
+  },
+  { // Entry 239
+    -0x1.5841f8f99a25bf1c33fed0059f449f12p0,
+    -0x1.3745d2p1
+  },
+  { // Entry 240
+    0x1.5f9b5c89b6723a4740b02d00e63ed8c5p0,
+    0x1.4ba2eap1
+  },
+  { // Entry 241
+    -0x1.5f9b5c89b6723a4740b02d00e63ed8c5p0,
+    -0x1.4ba2eap1
+  },
+  { // Entry 242
+    0x1.66a93a398814835bf64bd954530c2e24p0,
+    0x1.600002p1
+  },
+  { // Entry 243
+    -0x1.66a93a398814835bf64bd954530c2e24p0,
+    -0x1.600002p1
+  },
+  { // Entry 244
+    0x1.6d72b8c12f197ccd2a891dce2b3420ccp0,
+    0x1.745d1ap1
+  },
+  { // Entry 245
+    -0x1.6d72b8c12f197ccd2a891dce2b3420ccp0,
+    -0x1.745d1ap1
+  },
+  { // Entry 246
+    0x1.73fdf8501e9f51315cd9208aeb0df5fdp0,
+    0x1.88ba32p1
+  },
+  { // Entry 247
+    -0x1.73fdf8501e9f51315cd9208aeb0df5fdp0,
+    -0x1.88ba32p1
+  },
+  { // Entry 248
+    0x1.7a5043b0c25062c3a77f012041ed0dd3p0,
+    0x1.9d174ap1
+  },
+  { // Entry 249
+    -0x1.7a5043b0c25062c3a77f012041ed0dd3p0,
+    -0x1.9d174ap1
+  },
+  { // Entry 250
+    0x1.806e3648370d0107430e69be51ba6181p0,
+    0x1.b17462p1
+  },
+  { // Entry 251
+    -0x1.806e3648370d0107430e69be51ba6181p0,
+    -0x1.b17462p1
+  },
+  { // Entry 252
+    0x1.865bd9deffdb100981101a7bb371c6b8p0,
+    0x1.c5d17ap1
+  },
+  { // Entry 253
+    -0x1.865bd9deffdb100981101a7bb371c6b8p0,
+    -0x1.c5d17ap1
+  },
+  { // Entry 254
+    0x1.8c1cbe427502dcf0e5ddaa6cde822e1fp0,
+    0x1.da2e92p1
+  },
+  { // Entry 255
+    -0x1.8c1cbe427502dcf0e5ddaa6cde822e1fp0,
+    -0x1.da2e92p1
+  },
+  { // Entry 256
+    0x1.91b40c3970fa45b45e1ec4f180366a63p0,
+    0x1.ee8baap1
+  },
+  { // Entry 257
+    -0x1.91b40c3970fa45b45e1ec4f180366a63p0,
+    -0x1.ee8baap1
+  },
+  { // Entry 258
+    0x1.9724945921484b9f5eb5ded43b84d0a6p0,
+    0x1.017460p2
+  },
+  { // Entry 259
+    -0x1.9724945921484b9f5eb5ded43b84d0a6p0,
+    -0x1.017460p2
+  },
+  { // Entry 260
+    0x1.9c70ddb3118685770f9b9f2ed474a9d0p0,
+    0x1.0ba2ecp2
+  },
+  { // Entry 261
+    -0x1.9c70ddb3118685770f9b9f2ed474a9d0p0,
+    -0x1.0ba2ecp2
+  },
+  { // Entry 262
+    0x1.a19b2cfb98d6b98fca487b40078f60f8p0,
+    0x1.15d178p2
+  },
+  { // Entry 263
+    -0x1.a19b2cfb98d6b98fca487b40078f60f8p0,
+    -0x1.15d178p2
+  },
+  { // Entry 264
+    0x1.a6a58f4acd2830ccf461068bd78b43dfp0,
+    0x1.200004p2
+  },
+  { // Entry 265
+    -0x1.a6a58f4acd2830ccf461068bd78b43dfp0,
+    -0x1.200004p2
+  },
+  { // Entry 266
+    0x1.ab91e0c4d7beb2de033eb06c97ff2623p0,
+    0x1.2a2e90p2
+  },
+  { // Entry 267
+    -0x1.ab91e0c4d7beb2de033eb06c97ff2623p0,
+    -0x1.2a2e90p2
+  },
+  { // Entry 268
+    0x1.b061d2aa517a9271e11f29270be275c2p0,
+    0x1.345d1cp2
+  },
+  { // Entry 269
+    -0x1.b061d2aa517a9271e11f29270be275c2p0,
+    -0x1.345d1cp2
+  },
+  { // Entry 270
+    0x1.b516f07bda4aaf3cbb849ded81335246p0,
+    0x1.3e8ba8p2
+  },
+  { // Entry 271
+    -0x1.b516f07bda4aaf3cbb849ded81335246p0,
+    -0x1.3e8ba8p2
+  },
+  { // Entry 272
+    0x1.b9b2a45b63834be7e92068f4eff7d21fp0,
+    0x1.48ba34p2
+  },
+  { // Entry 273
+    -0x1.b9b2a45b63834be7e92068f4eff7d21fp0,
+    -0x1.48ba34p2
+  },
+  { // Entry 274
+    0x1.be363accf4e07fa728c35cb0445f056bp0,
+    0x1.52e8c0p2
+  },
+  { // Entry 275
+    -0x1.be363accf4e07fa728c35cb0445f056bp0,
+    -0x1.52e8c0p2
+  },
+  { // Entry 276
+    0x1.c2a2e5f1ffae47369528dd6baf39165dp0,
+    0x1.5d174cp2
+  },
+  { // Entry 277
+    -0x1.c2a2e5f1ffae47369528dd6baf39165dp0,
+    -0x1.5d174cp2
+  },
+  { // Entry 278
+    0x1.c6f9c0551bb2a258d6a396ca52615749p0,
+    0x1.6745d8p2
+  },
+  { // Entry 279
+    -0x1.c6f9c0551bb2a258d6a396ca52615749p0,
+    -0x1.6745d8p2
+  },
+  { // Entry 280
+    0x1.cb3bcf57f15ff14a02f69b42213ee5c6p0,
+    0x1.717464p2
+  },
+  { // Entry 281
+    -0x1.cb3bcf57f15ff14a02f69b42213ee5c6p0,
+    -0x1.717464p2
+  },
+  { // Entry 282
+    0x1.cf6a0551d85b12144ae1377a6a9b72b2p0,
+    0x1.7ba2f0p2
+  },
+  { // Entry 283
+    -0x1.cf6a0551d85b12144ae1377a6a9b72b2p0,
+    -0x1.7ba2f0p2
+  },
+  { // Entry 284
+    0x1.d385436b1dde883e39c480d710236941p0,
+    0x1.85d17cp2
+  },
+  { // Entry 285
+    -0x1.d385436b1dde883e39c480d710236941p0,
+    -0x1.85d17cp2
+  },
+  { // Entry 286
+    0x1.d78e5b3ed606f3cb13a91f1357f91657p0,
+    0x1.900008p2
+  },
+  { // Entry 287
+    -0x1.d78e5b3ed606f3cb13a91f1357f91657p0,
+    -0x1.900008p2
+  },
+  { // Entry 288
+    0x1.db86104b70ee77d6387ad03f5a44c6b3p0,
+    0x1.9a2e94p2
+  },
+  { // Entry 289
+    -0x1.db86104b70ee77d6387ad03f5a44c6b3p0,
+    -0x1.9a2e94p2
+  },
+  { // Entry 290
+    0x1.df6d1938f2d285672ba023837c7650a3p0,
+    0x1.a45d20p2
+  },
+  { // Entry 291
+    -0x1.df6d1938f2d285672ba023837c7650a3p0,
+    -0x1.a45d20p2
+  },
+  { // Entry 292
+    0x1.e34420fa948c2d5fc8ce30e75343315bp0,
+    0x1.ae8bacp2
+  },
+  { // Entry 293
+    -0x1.e34420fa948c2d5fc8ce30e75343315bp0,
+    -0x1.ae8bacp2
+  },
+  { // Entry 294
+    0x1.e70bc7d0aa6f9a8c1a90bdfd23944160p0,
+    0x1.b8ba38p2
+  },
+  { // Entry 295
+    -0x1.e70bc7d0aa6f9a8c1a90bdfd23944160p0,
+    -0x1.b8ba38p2
+  },
+  { // Entry 296
+    0x1.eac4a42ef11caabdbf485346bb85dca9p0,
+    0x1.c2e8c4p2
+  },
+  { // Entry 297
+    -0x1.eac4a42ef11caabdbf485346bb85dca9p0,
+    -0x1.c2e8c4p2
+  },
+  { // Entry 298
+    0x1.ee6f438ac201cc83c3551ec3ec88f765p0,
+    0x1.cd1750p2
+  },
+  { // Entry 299
+    -0x1.ee6f438ac201cc83c3551ec3ec88f765p0,
+    -0x1.cd1750p2
+  },
+  { // Entry 300
+    0x1.f20c2b142e1141f944a5bd436f899fd8p0,
+    0x1.d745dcp2
+  },
+  { // Entry 301
+    -0x1.f20c2b142e1141f944a5bd436f899fd8p0,
+    -0x1.d745dcp2
+  },
+  { // Entry 302
+    0x1.f59bd85c8f80600f9a9091ac4ae69b2bp0,
+    0x1.e17468p2
+  },
+  { // Entry 303
+    -0x1.f59bd85c8f80600f9a9091ac4ae69b2bp0,
+    -0x1.e17468p2
+  },
+  { // Entry 304
+    0x1.f91ec1ecc7699ea908b3dc91bb2117d7p0,
+    0x1.eba2f4p2
+  },
+  { // Entry 305
+    -0x1.f91ec1ecc7699ea908b3dc91bb2117d7p0,
+    -0x1.eba2f4p2
+  },
+  { // Entry 306
+    0x1.fc9557cd0eaee03376a0df6d1ba5d501p0,
+    0x1.f5d180p2
+  },
+  { // Entry 307
+    -0x1.fc9557cd0eaee03376a0df6d1ba5d501p0,
+    -0x1.f5d180p2
+  },
+  { // Entry 308
+    0x1.p1,
+    0x1.p3
+  },
+  { // Entry 309
+    -0x1.p1,
+    -0x1.p3
+  },
+  { // Entry 310
+    0x1.428a2f98d728ae223ddab715be250d0cp33,
+    0x1.p100
+  },
+  { // Entry 311
+    -0x1.428a2f98d728ae223ddab715be250d0cp33,
+    -0x1.p100
+  },
+  { // Entry 312
+    0x1.4cf38fca0ab1d0dd5e3f8b10df7de89dp33,
+    0x1.19999ap100
+  },
+  { // Entry 313
+    -0x1.4cf38fca0ab1d0dd5e3f8b10df7de89dp33,
+    -0x1.19999ap100
+  },
+  { // Entry 314
+    0x1.56bfeab31a1e9d53e75261e0f714927bp33,
+    0x1.333334p100
+  },
+  { // Entry 315
+    -0x1.56bfeab31a1e9d53e75261e0f714927bp33,
+    -0x1.333334p100
+  },
+  { // Entry 316
+    0x1.600483d224f2459cbe9a69151151c908p33,
+    0x1.4ccccep100
+  },
+  { // Entry 317
+    -0x1.600483d224f2459cbe9a69151151c908p33,
+    -0x1.4ccccep100
+  },
+  { // Entry 318
+    0x1.68d25b2553fccd180af10eec660ead4dp33,
+    0x1.666668p100
+  },
+  { // Entry 319
+    -0x1.68d25b2553fccd180af10eec660ead4dp33,
+    -0x1.666668p100
+  },
+  { // Entry 320
+    0x1.713745353c7f5d6125705b069ec452b8p33,
+    0x1.800002p100
+  },
+  { // Entry 321
+    -0x1.713745353c7f5d6125705b069ec452b8p33,
+    -0x1.800002p100
+  },
+  { // Entry 322
+    0x1.793ead9e429872e2b3fe619f7f25153cp33,
+    0x1.99999cp100
+  },
+  { // Entry 323
+    -0x1.793ead9e429872e2b3fe619f7f25153cp33,
+    -0x1.99999cp100
+  },
+  { // Entry 324
+    0x1.80f221dd370feca7c7efbe496a84ee22p33,
+    0x1.b33336p100
+  },
+  { // Entry 325
+    -0x1.80f221dd370feca7c7efbe496a84ee22p33,
+    -0x1.b33336p100
+  },
+  { // Entry 326
+    0x1.8859b6a5ff499f31338b11076fb457bap33,
+    0x1.ccccd0p100
+  },
+  { // Entry 327
+    -0x1.8859b6a5ff499f31338b11076fb457bap33,
+    -0x1.ccccd0p100
+  },
+  { // Entry 328
+    0x1.8f7c53604ebc3a1267eb6083464ac3a6p33,
+    0x1.e6666ap100
+  },
+  { // Entry 329
+    -0x1.8f7c53604ebc3a1267eb6083464ac3a6p33,
+    -0x1.e6666ap100
+  },
+  { // Entry 330
+    0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    0x1.p101
+  },
+  { // Entry 331
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p33,
+    -0x1.p101
+  },
+  { // Entry 332
+    0x1.965fe9cc61957f119f89d08a8918481ep0,
+    0x1.fffffep1
+  },
+  { // Entry 333
+    -0x1.965fe9cc61957f119f89d08a8918481ep0,
+    -0x1.fffffep1
+  },
+  { // Entry 334
+    0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    0x1.p2
+  },
+  { // Entry 335
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p0,
+    -0x1.p2
+  },
+  { // Entry 336
+    0x1.965feb62c17f4b733617ccc56909e9f9p0,
+    0x1.000002p2
+  },
+  { // Entry 337
+    -0x1.965feb62c17f4b733617ccc56909e9f9p0,
+    -0x1.000002p2
+  },
+  { // Entry 338
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p0,
+    0x1.fffffep0
+  },
+  { // Entry 339
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p0,
+    -0x1.fffffep0
+  },
+  { // Entry 340
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.p1
+  },
+  { // Entry 341
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.p1
+  },
+  { // Entry 342
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp0,
+    0x1.000002p1
+  },
+  { // Entry 343
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp0,
+    -0x1.000002p1
+  },
+  { // Entry 344
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 345
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 346
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 347
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 348
+    0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    0x1.000002p0
+  },
+  { // Entry 349
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    -0x1.000002p0
+  },
+  { // Entry 350
+    0x1.965fe9cc61957f119f89d08a8918481ep-1,
+    0x1.fffffep-2
+  },
+  { // Entry 351
+    -0x1.965fe9cc61957f119f89d08a8918481ep-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 352
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    0x1.p-1
+  },
+  { // Entry 353
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-1,
+    -0x1.p-1
+  },
+  { // Entry 354
+    0x1.965feb62c17f4b733617ccc56909e9f9p-1,
+    0x1.000002p-1
+  },
+  { // Entry 355
+    -0x1.965feb62c17f4b733617ccc56909e9f9p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 356
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p-1,
+    0x1.fffffep-3
+  },
+  { // Entry 357
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 358
+    0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    0x1.p-2
+  },
+  { // Entry 359
+    -0x1.428a2f98d728ae223ddab715be250d0cp-1,
+    -0x1.p-2
+  },
+  { // Entry 360
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp-1,
+    0x1.000002p-2
+  },
+  { // Entry 361
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp-1,
+    -0x1.000002p-2
+  },
+  { // Entry 362
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-2,
+    0x1.fffffep-4
+  },
+  { // Entry 363
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-2,
+    -0x1.fffffep-4
+  },
+  { // Entry 364
+    0x1.p-1,
+    0x1.p-3
+  },
+  { // Entry 365
+    -0x1.p-1,
+    -0x1.p-3
+  },
+  { // Entry 366
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-1,
+    0x1.000002p-3
+  },
+  { // Entry 367
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-1,
+    -0x1.000002p-3
+  },
+  { // Entry 368
+    0x1.965fe9cc61957f119f89d08a8918481ep-2,
+    0x1.fffffep-5
+  },
+  { // Entry 369
+    -0x1.965fe9cc61957f119f89d08a8918481ep-2,
+    -0x1.fffffep-5
+  },
+  { // Entry 370
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    0x1.p-4
+  },
+  { // Entry 371
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-2,
+    -0x1.p-4
+  },
+  { // Entry 372
+    0x1.965feb62c17f4b733617ccc56909e9f9p-2,
+    0x1.000002p-4
+  },
+  { // Entry 373
+    -0x1.965feb62c17f4b733617ccc56909e9f9p-2,
+    -0x1.000002p-4
+  },
+  { // Entry 374
+    0x1.428a2f2d53c3575963d11c9df5d9ad83p-2,
+    0x1.fffffep-6
+  },
+  { // Entry 375
+    -0x1.428a2f2d53c3575963d11c9df5d9ad83p-2,
+    -0x1.fffffep-6
+  },
+  { // Entry 376
+    0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    0x1.p-5
+  },
+  { // Entry 377
+    -0x1.428a2f98d728ae223ddab715be250d0cp-2,
+    -0x1.p-5
+  },
+  { // Entry 378
+    0x1.428a306fddf284ad27ff7ccb79aabf3cp-2,
+    0x1.000002p-5
+  },
+  { // Entry 379
+    -0x1.428a306fddf284ad27ff7ccb79aabf3cp-2,
+    -0x1.000002p-5
+  },
+  { // Entry 380
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-3,
+    0x1.fffffep-7
+  },
+  { // Entry 381
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-3,
+    -0x1.fffffep-7
+  },
+  { // Entry 382
+    0x1.p-2,
+    0x1.p-6
+  },
+  { // Entry 383
+    -0x1.p-2,
+    -0x1.p-6
+  },
+  { // Entry 384
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-2,
+    0x1.000002p-6
+  },
+  { // Entry 385
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-2,
+    -0x1.000002p-6
+  },
+  { // Entry 386
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 387
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 388
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 389
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 390
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 391
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 392
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 393
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 394
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 395
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 396
+    0x1.965fe9cc61957f119f89d08a8918481ep42,
+    0x1.fffffep127
+  },
+  { // Entry 397
+    -0x1.965fe9cc61957f119f89d08a8918481ep42,
+    -0x1.fffffep127
+  },
+  { // Entry 398
+    0x1.965fe944ec46dbaa04d0e2812cfbefb0p42,
+    0x1.fffffcp127
+  },
+  { // Entry 399
+    -0x1.965fe944ec46dbaa04d0e2812cfbefb0p42,
+    -0x1.fffffcp127
+  },
+  { // Entry 400
+    0x1.76ef7ead6985271fe7617b1da5065543p0,
+    0x1.921fb6p1
+  },
+  { // Entry 401
+    -0x1.76ef7ead6985271fe7617b1da5065543p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 402
+    0x1.2996267c5deedc47b88ccae60aa2742ap0,
+    0x1.921fb6p0
+  },
+  { // Entry 403
+    -0x1.2996267c5deedc47b88ccae60aa2742ap0,
+    -0x1.921fb6p0
+  },
+  { // Entry 404
+    0x1.d863a02639c8222baeb0d484991e52cdp-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 405
+    -0x1.d863a02639c8222baeb0d484991e52cdp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 406
+    0x1.p1,
+    0x1.p3
+  },
+  { // Entry 407
+    -0x1.p1,
+    -0x1.p3
+  },
+  { // Entry 408
+    0x1.428a2f98d728ae223ddab715be250d0cp0,
+    0x1.p1
+  },
+  { // Entry 409
+    -0x1.428a2f98d728ae223ddab715be250d0cp0,
+    -0x1.p1
+  },
+  { // Entry 410
+    0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    0x1.000002p0
+  },
+  { // Entry 411
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp0,
+    -0x1.000002p0
+  },
+  { // Entry 412
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 413
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 414
+    0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 415
+    -0x1.ffffff5555551c71c6fcd6e9cb5339e1p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 416
+    0x1.000000aaaaaa38e38eb74f028086d9fcp-42,
+    0x1.000002p-126
+  },
+  { // Entry 417
+    -0x1.000000aaaaaa38e38eb74f028086d9fcp-42,
+    -0x1.000002p-126
+  },
+  { // Entry 418
+    0x1.p-42,
+    0x1.p-126
+  },
+  { // Entry 419
+    -0x1.p-42,
+    -0x1.p-126
+  },
+  { // Entry 420
+    0x1.fffffeaaaaa9c71c70ca45869598bfe9p-43,
+    0x1.fffffcp-127
+  },
+  { // Entry 421
+    -0x1.fffffeaaaaa9c71c70ca45869598bfe9p-43,
+    -0x1.fffffcp-127
+  },
+  { // Entry 422
+    0x1.fffffd555551c71c69e0650db20a4b26p-43,
+    0x1.fffff8p-127
+  },
+  { // Entry 423
+    -0x1.fffffd555551c71c69e0650db20a4b26p-43,
+    -0x1.fffff8p-127
+  },
+  { // Entry 424
+    0x1.965fea53d6e3c82b05999ab43dc4def1p-50,
+    0x1.p-148
+  },
+  { // Entry 425
+    -0x1.965fea53d6e3c82b05999ab43dc4def1p-50,
+    -0x1.p-148
+  },
+  { // Entry 426
+    0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    0x1.p-149
+  },
+  { // Entry 427
+    -0x1.428a2f98d728ae223ddab715be250d0cp-50,
+    -0x1.p-149
+  },
+  { // Entry 428
+    0.0,
+    0.0f
+  },
+  { // Entry 429
+    -0.0,
+    -0.0f
+  },
+  { // Entry 430
+    0x1.80p1,
+    0x1.b0p4
+  },
+  { // Entry 431
+    -0x1.80p1,
+    -0x1.b0p4
+  },
+  { // Entry 432
+    0x1.40p2,
+    0x1.f4p6
+  },
+  { // Entry 433
+    -0x1.40p2,
+    -0x1.f4p6
+  }
+};
diff --git a/tests/math_data/ceil_intel_data.h b/tests/math_data/ceil_intel_data.h
new file mode 100644
index 0000000..33096ab
--- /dev/null
+++ b/tests/math_data/ceil_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_ceil_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0x1.p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.80p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.80p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.94p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.94p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f480p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f480p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.00000000000040p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.00000000000020p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.00000004p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffffcp30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffffcp30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffffcp30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffffcp30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffffcp30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.p31,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.p31,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.p31,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.p31,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.00000002p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.00000002p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.00000002p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.00000002p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.00000002p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.40p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.20p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.10p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.08p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.04p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.02p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.01p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.0080p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.0040p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.0020p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.0010p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.40p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.20p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.10p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.08p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.04p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.02p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.01p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.0080p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.0040p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0080p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.0020p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.0010p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.p2,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p1,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0x1.p0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p1,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/ceilf_intel_data.h b/tests/math_data/ceilf_intel_data.h
new file mode 100644
index 0000000..4b52406
--- /dev/null
+++ b/tests/math_data/ceilf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_ceilf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0x1.p0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p1,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.80p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.80p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.94p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.94p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f480p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f480p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.000008p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.000004p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.40p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.20p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.10p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.08p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.04p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.02p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.01p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.0080p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.0040p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.0020p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.0010p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.40p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.20p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.10p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.08p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.04p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.02p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.01p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.0080p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.0040p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0080p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.0020p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.0010p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.p2,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p1,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0x1.p0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0x1.p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0x1.p0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p1,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/copysign_intel_data.h b/tests/math_data/copysign_intel_data.h
new file mode 100644
index 0000000..1478f1e
--- /dev/null
+++ b/tests/math_data/copysign_intel_data.h
@@ -0,0 +1,1458 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_copysign_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.0p-10,
+    -0x1.0p-10
+  },
+  { // Entry 1
+    0x1.p-10,
+    -0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 2
+    -0x1.p-10,
+    0x1.0p-10,
+    -0x1.0p-10
+  },
+  { // Entry 3
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 4
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 6
+    -0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 7
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 8
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 9
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 10
+    0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 11
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 12
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 13
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 14
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 15
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 16
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 17
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 18
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 19
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 20
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 24
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 25
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 26
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 27
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 28
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 29
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 33
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 34
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 35
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 36
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 37
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 38
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 39
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 40
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 41
+    0x1.00000000000020p-1023,
+    -0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 42
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 43
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 44
+    0x1.p-1023,
+    -0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 45
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 46
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 47
+    0x1.ffffffffffffc0p-1024,
+    -0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 48
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 49
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 50
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 51
+    0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 53
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 54
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 56
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 57
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 58
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 59
+    0x1.00000000000010p1023,
+    -0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 60
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 61
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 62
+    0x1.p1023,
+    -0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 63
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 65
+    0x1.fffffffffffff0p1022,
+    -0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 66
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 67
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.0p-1023
+  },
+  { // Entry 68
+    -0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 69
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 70
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.0p-1023
+  },
+  { // Entry 71
+    -0x1.p-1023,
+    0x1.0p-1023,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 72
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.0000000000002p-1023
+  },
+  { // Entry 73
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.0p-1023
+  },
+  { // Entry 74
+    -0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    -0x1.ffffffffffffcp-1024
+  },
+  { // Entry 75
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 85
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1023
+  },
+  { // Entry 86
+    -0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 87
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 88
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.0p1023
+  },
+  { // Entry 89
+    -0x1.p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 90
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.0000000000001p1023
+  },
+  { // Entry 91
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.0p1023
+  },
+  { // Entry 92
+    -0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 93
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 94
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 95
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 96
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 97
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 98
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 99
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 100
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 101
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 102
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 103
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 104
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 105
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 106
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 107
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 109
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 110
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 112
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 113
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 115
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 116
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 117
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 119
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 120
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 122
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 123
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 124
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 125
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 126
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 127
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 128
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 129
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 130
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 131
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 132
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 133
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 135
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 136
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 137
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 138
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 139
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 140
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 141
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 142
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 143
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 144
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 145
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 146
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 147
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 148
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 149
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 150
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 151
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 152
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 153
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 154
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 155
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 156
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 157
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 158
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 159
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 160
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 161
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 162
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 163
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 164
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 165
+    -0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 166
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 167
+    -0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 168
+    -0.0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 169
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 170
+    -0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 171
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 172
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 173
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 174
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 175
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 176
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 178
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 179
+    -0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 180
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 181
+    -0.0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 183
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 184
+    0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 185
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 187
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 188
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 189
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 190
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 193
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 194
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 196
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 198
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 199
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 200
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 201
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 202
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 203
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 205
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 206
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 207
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 208
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 210
+    0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 211
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 212
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 213
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 215
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 216
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 217
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 219
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 221
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 223
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    HUGE_VAL
+  },
+  { // Entry 224
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 226
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 227
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0.0
+  },
+  { // Entry 229
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 230
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 231
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 232
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 234
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 235
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -HUGE_VAL
+  },
+  { // Entry 236
+    0x1.p0,
+    -0x1.0p0,
+    HUGE_VAL
+  },
+  { // Entry 237
+    0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 238
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    0x1.p0,
+    -0x1.0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 240
+    0x1.p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 241
+    0x1.p0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 242
+    -0x1.p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 243
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 244
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 245
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p-1022
+  },
+  { // Entry 246
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 247
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    -0x1.p0,
+    -0x1.0p0,
+    -HUGE_VAL
+  },
+  { // Entry 249
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    HUGE_VAL
+  },
+  { // Entry 250
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 251
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1022
+  },
+  { // Entry 252
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 253
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 254
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    0.0
+  },
+  { // Entry 255
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 256
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 258
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1022
+  },
+  { // Entry 259
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 260
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 261
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -HUGE_VAL
+  },
+  { // Entry 262
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 263
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 264
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 265
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 266
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 267
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 268
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 269
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 270
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 271
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 272
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 273
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 274
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 275
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 276
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 277
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 278
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 279
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 280
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 281
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 282
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 283
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 284
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 286
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/copysignf_intel_data.h b/tests/math_data/copysignf_intel_data.h
new file mode 100644
index 0000000..58a579d
--- /dev/null
+++ b/tests/math_data/copysignf_intel_data.h
@@ -0,0 +1,1458 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_copysignf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 1
+    0x1.p-10,
+    -0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 2
+    -0x1.p-10,
+    0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 3
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 4
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 7
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 8
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 9
+    0x1.p-148,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 10
+    0x1.p-148,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 11
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 12
+    0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 13
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 14
+    -0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 15
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 16
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 17
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 19
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 20
+    -0x1.p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 21
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 22
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 23
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 24
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 25
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 26
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 27
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 28
+    -0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 29
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 30
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 31
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 34
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 35
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 36
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 38
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 39
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 40
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 41
+    0x1.000004p-127,
+    -0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 42
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 43
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 44
+    0x1.p-127,
+    -0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 45
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 46
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 47
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 48
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 49
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 50
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 51
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 52
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 53
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 54
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 55
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 56
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 57
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 58
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 59
+    0x1.000002p127,
+    -0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 60
+    0x1.p127,
+    -0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 61
+    0x1.p127,
+    -0x1.p127,
+    0x1.p127
+  },
+  { // Entry 62
+    0x1.p127,
+    -0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 63
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 64
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 65
+    0x1.fffffep126,
+    -0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 66
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.000004p-127
+  },
+  { // Entry 67
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.p-127
+  },
+  { // Entry 68
+    -0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    -0x1.fffff8p-128
+  },
+  { // Entry 69
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 70
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.p-127
+  },
+  { // Entry 71
+    -0x1.p-127,
+    0x1.p-127,
+    -0x1.fffff8p-128
+  },
+  { // Entry 72
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.000004p-127
+  },
+  { // Entry 73
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.p-127
+  },
+  { // Entry 74
+    -0x1.000004p-127,
+    0x1.000004p-127,
+    -0x1.fffff8p-128
+  },
+  { // Entry 75
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 76
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 77
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 79
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 80
+    -0x1.p0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 81
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 82
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 83
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.000002p127
+  },
+  { // Entry 85
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.p127
+  },
+  { // Entry 86
+    -0x1.fffffep126,
+    0x1.fffffep126,
+    -0x1.fffffep126
+  },
+  { // Entry 87
+    -0x1.p127,
+    0x1.p127,
+    -0x1.000002p127
+  },
+  { // Entry 88
+    -0x1.p127,
+    0x1.p127,
+    -0x1.p127
+  },
+  { // Entry 89
+    -0x1.p127,
+    0x1.p127,
+    -0x1.fffffep126
+  },
+  { // Entry 90
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.000002p127
+  },
+  { // Entry 91
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.p127
+  },
+  { // Entry 92
+    -0x1.000002p127,
+    0x1.000002p127,
+    -0x1.fffffep126
+  },
+  { // Entry 93
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 94
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 95
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 96
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 97
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 98
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 99
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 100
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 101
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 102
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 103
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 104
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 105
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 106
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 107
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 108
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 109
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 110
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 111
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 112
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 113
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 114
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 115
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 116
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 117
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 120
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 122
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 123
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 124
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 125
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 126
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 127
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 128
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 129
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 130
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 131
+    -0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 132
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 133
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 134
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 135
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 136
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 137
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 138
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 139
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 140
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 141
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 142
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 143
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 144
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 145
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 146
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 148
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 149
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 150
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 151
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 152
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 153
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 154
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 155
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 156
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 157
+    -0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 158
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 159
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 160
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 161
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 162
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 163
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 164
+    -0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 165
+    -0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 166
+    -0.0,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 167
+    -0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 168
+    -0.0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 169
+    -0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 170
+    -0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 171
+    0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 172
+    0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 173
+    0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 174
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 175
+    0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 176
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 177
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 178
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 180
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 181
+    -0.0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 183
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 184
+    0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 186
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 187
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 188
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 189
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 190
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 191
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 192
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 199
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 200
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 201
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 202
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 203
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 204
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 205
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 206
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 207
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 208
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 209
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 210
+    0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 211
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 213
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 214
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 215
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 216
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 217
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 218
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 219
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 220
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 221
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 223
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    HUGE_VALF
+  },
+  { // Entry 224
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep127
+  },
+  { // Entry 225
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-126
+  },
+  { // Entry 226
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 227
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 228
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0.0f
+  },
+  { // Entry 229
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0.0f
+  },
+  { // Entry 230
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 231
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 232
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-126
+  },
+  { // Entry 233
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 234
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 235
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -HUGE_VALF
+  },
+  { // Entry 236
+    0x1.p0,
+    -0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 237
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep127
+  },
+  { // Entry 238
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 239
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 240
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 241
+    0x1.p0,
+    -0x1.p0,
+    0.0f
+  },
+  { // Entry 242
+    -0x1.p0,
+    -0x1.p0,
+    -0.0f
+  },
+  { // Entry 243
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 244
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 245
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 246
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 247
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 248
+    -0x1.p0,
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 249
+    0x1.000002p0,
+    -0x1.000002p0,
+    HUGE_VALF
+  },
+  { // Entry 250
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep127
+  },
+  { // Entry 251
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-126
+  },
+  { // Entry 252
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 253
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 254
+    0x1.000002p0,
+    -0x1.000002p0,
+    0.0f
+  },
+  { // Entry 255
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0.0f
+  },
+  { // Entry 256
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 257
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 258
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-126
+  },
+  { // Entry 259
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 260
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 261
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -HUGE_VALF
+  },
+  { // Entry 262
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 263
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 264
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 265
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 266
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 267
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 268
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 269
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 270
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 271
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 272
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 273
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 274
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 275
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 276
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 277
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 278
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 279
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 280
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 281
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 282
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 283
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 284
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 286
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 287
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_cos_intel_data.h b/tests/math_data/cos_intel_data.h
similarity index 100%
rename from tests/math_cos_intel_data.h
rename to tests/math_data/cos_intel_data.h
diff --git a/tests/math_cosf_intel_data.h b/tests/math_data/cosf_intel_data.h
similarity index 100%
rename from tests/math_cosf_intel_data.h
rename to tests/math_data/cosf_intel_data.h
diff --git a/tests/math_data/cosh_intel_data.h b/tests/math_data/cosh_intel_data.h
new file mode 100644
index 0000000..2a8fe82
--- /dev/null
+++ b/tests/math_data/cosh_intel_data.h
@@ -0,0 +1,2934 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_cosh_intel_data[] = {
+  { // Entry 0
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    -0x1.20b0659d8a7e1p9
+  },
+  { // Entry 1
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    0x1.20b0659d8a7e1p9
+  },
+  { // Entry 2
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    -0x1.3c640p9
+  },
+  { // Entry 3
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    0x1.3c640p9
+  },
+  { // Entry 4
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    -0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 5
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 6
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    -0x1.4aa0d96719fc6p9
+  },
+  { // Entry 7
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    0x1.4aa0d96719fc6p9
+  },
+  { // Entry 8
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    -0x1.4cb09e65eb930p9
+  },
+  { // Entry 9
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    0x1.4cb09e65eb930p9
+  },
+  { // Entry 10
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    -0x1.4d5b56d5b55acp9
+  },
+  { // Entry 11
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    0x1.4d5b56d5b55acp9
+  },
+  { // Entry 12
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    -0x1.50dc3739dde8ep9
+  },
+  { // Entry 13
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    0x1.50dc3739dde8ep9
+  },
+  { // Entry 14
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    -0x1.529994bb15795p9
+  },
+  { // Entry 15
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    0x1.529994bb15795p9
+  },
+  { // Entry 16
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    -0x1.5cf9ace27d120p9
+  },
+  { // Entry 17
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    0x1.5cf9ace27d120p9
+  },
+  { // Entry 18
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    -0x1.5fc2907bbfb53p9
+  },
+  { // Entry 19
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    0x1.5fc2907bbfb53p9
+  },
+  { // Entry 20
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    -0x1.62e42fefa39eap9
+  },
+  { // Entry 21
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    0x1.62e42fefa39eap9
+  },
+  { // Entry 22
+    0x1.000004a24e558c02a9470bd8d4f869a3p0,
+    -0x1.85acfb6cf0992p-11
+  },
+  { // Entry 23
+    0x1.000004a24e558c02a9470bd8d4f869a3p0,
+    0x1.85acfb6cf0992p-11
+  },
+  { // Entry 24
+    0x1.p0,
+    -0x1.9p-1069
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.9p-1069
+  },
+  { // Entry 26
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 27
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    0x1.999999999999ap-2
+  },
+  { // Entry 28
+    0x1.580485993cf5380007b6f3dfb3426795p1,
+    -0x1.a52f2fff26658p0
+  },
+  { // Entry 29
+    0x1.580485993cf5380007b6f3dfb3426795p1,
+    0x1.a52f2fff26658p0
+  },
+  { // Entry 30
+    0x1.786cf5655ff2cf9f3e2f91013f3f8c31p9,
+    -0x1.d449f6b92fb70p2
+  },
+  { // Entry 31
+    0x1.786cf5655ff2cf9f3e2f91013f3f8c31p9,
+    0x1.d449f6b92fb70p2
+  },
+  { // Entry 32
+    0x1.072f2f89ddc2f7a6dd2420f4fde2c244p0,
+    -0x1.e411ac17c616dp-3
+  },
+  { // Entry 33
+    0x1.072f2f89ddc2f7a6dd2420f4fde2c244p0,
+    0x1.e411ac17c616dp-3
+  },
+  { // Entry 34
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    0x1.0p-21
+  },
+  { // Entry 35
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    -0x1.0p-21
+  },
+  { // Entry 36
+    0x1.000000000000080000000000000aaaaap0,
+    0x1.0p-26
+  },
+  { // Entry 37
+    0x1.000000000000080000000000000aaaaap0,
+    -0x1.0p-26
+  },
+  { // Entry 38
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 39
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 40
+    0x1.0000000000000000000020p0,
+    0x1.0000000000001p-41
+  },
+  { // Entry 41
+    0x1.0000000000000000000020p0,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.0000000000001p-352
+  },
+  { // Entry 43
+    0x1.p0,
+    -0x1.0000000000001p-352
+  },
+  { // Entry 44
+    0x1.749eaa93f4e98ffecd44eae03d0a1d5bp10,
+    0x1.0000000000003p3
+  },
+  { // Entry 45
+    0x1.749eaa93f4e98ffecd44eae03d0a1d5bp10,
+    -0x1.0000000000003p3
+  },
+  { // Entry 46
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    0x1.0000000000007p8
+  },
+  { // Entry 47
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    -0x1.0000000000007p8
+  },
+  { // Entry 48
+    0x1.000000000000080000000000110aaaaap0,
+    0x1.0000000000011p-26
+  },
+  { // Entry 49
+    0x1.000000000000080000000000110aaaaap0,
+    -0x1.0000000000011p-26
+  },
+  { // Entry 50
+    0x1.8b07551d9f67f7fdc0ff67bf92a962fdp0,
+    0x1.0000000000102p0
+  },
+  { // Entry 51
+    0x1.8b07551d9f67f7fdc0ff67bf92a962fdp0,
+    -0x1.0000000000102p0
+  },
+  { // Entry 52
+    0x1.1f43fcc5952c37ff0506eaa1b0c216eep45,
+    0x1.0000000006345p5
+  },
+  { // Entry 53
+    0x1.1f43fcc5952c37ff0506eaa1b0c216eep45,
+    -0x1.0000000006345p5
+  },
+  { // Entry 54
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    0x1.0000202p9
+  },
+  { // Entry 55
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    -0x1.0000202p9
+  },
+  { // Entry 56
+    0x1.203fc65a034d07ffda891f0ce56a69b6p45,
+    0x1.00070p5
+  },
+  { // Entry 57
+    0x1.203fc65a034d07ffda891f0ce56a69b6p45,
+    -0x1.00070p5
+  },
+  { // Entry 58
+    0x1.000000000000080100080000000aad55p0,
+    0x1.001p-26
+  },
+  { // Entry 59
+    0x1.000000000000080100080000000aad55p0,
+    -0x1.001p-26
+  },
+  { // Entry 60
+    0x1.75e54432c8551fabeec3248201e6c2ccp10,
+    0x1.001c0p3
+  },
+  { // Entry 61
+    0x1.75e54432c8551fabeec3248201e6c2ccp10,
+    -0x1.001c0p3
+  },
+  { // Entry 62
+    0x1.e708d6f7a319258034ee3b204d26ca92p1,
+    0x1.018p1
+  },
+  { // Entry 63
+    0x1.e708d6f7a319258034ee3b204d26ca92p1,
+    -0x1.018p1
+  },
+  { // Entry 64
+    0x1.0000216287cecc0d0dc2c5304f513db1p0,
+    0x1.057b17480eb6bp-9
+  },
+  { // Entry 65
+    0x1.0000216287cecc0d0dc2c5304f513db1p0,
+    -0x1.057b17480eb6bp-9
+  },
+  { // Entry 66
+    0x1.000008637bdd480001e95efd80447405p0,
+    0x1.0624dd41d1d06p-10
+  },
+  { // Entry 67
+    0x1.000008637bdd480001e95efd80447405p0,
+    -0x1.0624dd41d1d06p-10
+  },
+  { // Entry 68
+    0x1.fe87c460adc0882fbe85314df418d2b4p1,
+    0x1.07bd69f72017dp1
+  },
+  { // Entry 69
+    0x1.fe87c460adc0882fbe85314df418d2b4p1,
+    -0x1.07bd69f72017dp1
+  },
+  { // Entry 70
+    0x1.0000000000220800000000c10560p0,
+    0x1.080p-21
+  },
+  { // Entry 71
+    0x1.0000000000220800000000c10560p0,
+    -0x1.080p-21
+  },
+  { // Entry 72
+    0x1.f39a59f250416803923a1c1e1528d74dp10,
+    0x1.0962589625894p3
+  },
+  { // Entry 73
+    0x1.f39a59f250416803923a1c1e1528d74dp10,
+    -0x1.0962589625894p3
+  },
+  { // Entry 74
+    0x1.09c4fe008ebbf7feff9c55742944c979p47,
+    0x1.0a77d78f63c77p5
+  },
+  { // Entry 75
+    0x1.09c4fe008ebbf7feff9c55742944c979p47,
+    -0x1.0a77d78f63c77p5
+  },
+  { // Entry 76
+    0x1.250e830d17c53ffff0f0a7b37c3274aep0,
+    0x1.1044110441104p-1
+  },
+  { // Entry 77
+    0x1.250e830d17c53ffff0f0a7b37c3274aep0,
+    -0x1.1044110441104p-1
+  },
+  { // Entry 78
+    0x1.0000024ff524ec0206bcebcbcb8fd2d8p0,
+    0x1.1343b94c10b91p-11
+  },
+  { // Entry 79
+    0x1.0000024ff524ec0206bcebcbcb8fd2d8p0,
+    -0x1.1343b94c10b91p-11
+  },
+  { // Entry 80
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    0x1.15c18de877563p8
+  },
+  { // Entry 81
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    -0x1.15c18de877563p8
+  },
+  { // Entry 82
+    0x1.a7b0a63b771487fe7ea3e4c4c6a5986cp0,
+    0x1.170p0
+  },
+  { // Entry 83
+    0x1.a7b0a63b771487fe7ea3e4c4c6a5986cp0,
+    -0x1.170p0
+  },
+  { // Entry 84
+    0x1.2040f2a1ab52f6519acd0a68e44e2672p2,
+    0x1.17cp1
+  },
+  { // Entry 85
+    0x1.2040f2a1ab52f6519acd0a68e44e2672p2,
+    -0x1.17cp1
+  },
+  { // Entry 86
+    0x1.ffffffffffff691afdbf851f5ebecf8fp24,
+    0x1.205966f2b4f12p4
+  },
+  { // Entry 87
+    0x1.ffffffffffff691afdbf851f5ebecf8fp24,
+    -0x1.205966f2b4f12p4
+  },
+  { // Entry 88
+    0x1.79842c1bcf0097ff7fb2dd182713e67ap207,
+    0x1.2120481204831p7
+  },
+  { // Entry 89
+    0x1.79842c1bcf0097ff7fb2dd182713e67ap207,
+    -0x1.2120481204831p7
+  },
+  { // Entry 90
+    0x1.29fbb84ba8876b368d8a9db5c1e1454dp0,
+    0x1.215c31dfb06bep-1
+  },
+  { // Entry 91
+    0x1.29fbb84ba8876b368d8a9db5c1e1454dp0,
+    -0x1.215c31dfb06bep-1
+  },
+  { // Entry 92
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    0x1.2586ca9cf411bp9
+  },
+  { // Entry 93
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    -0x1.2586ca9cf411bp9
+  },
+  { // Entry 94
+    0x1.6a09e667f3b873e3fe3a64632e382c20p25,
+    0x1.25e4f7b2737f7p4
+  },
+  { // Entry 95
+    0x1.6a09e667f3b873e3fe3a64632e382c20p25,
+    -0x1.25e4f7b2737f7p4
+  },
+  { // Entry 96
+    0x1.57261d902201780090571fb5bf70f618p12,
+    0x1.29b98d2ca77bfp3
+  },
+  { // Entry 97
+    0x1.57261d902201780090571fb5bf70f618p12,
+    -0x1.29b98d2ca77bfp3
+  },
+  { // Entry 98
+    0x1.bfa86b3a08ba080003331b84fa809b78p5,
+    0x1.2dee0f9476ef0p2
+  },
+  { // Entry 99
+    0x1.bfa86b3a08ba080003331b84fa809b78p5,
+    -0x1.2dee0f9476ef0p2
+  },
+  { // Entry 100
+    0x1.ca2d30aee8c837f93c016463c234beb0p0,
+    0x1.2fap0
+  },
+  { // Entry 101
+    0x1.ca2d30aee8c837f93c016463c234beb0p0,
+    -0x1.2fap0
+  },
+  { // Entry 102
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    0x1.2fe8bcd183299p9
+  },
+  { // Entry 103
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    -0x1.2fe8bcd183299p9
+  },
+  { // Entry 104
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    0x1.30a324d6033b5p9
+  },
+  { // Entry 105
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    -0x1.30a324d6033b5p9
+  },
+  { // Entry 106
+    0x1.0000b839f863b3e4bcae71b55072ca80p0,
+    0x1.331f2adbaf98dp-8
+  },
+  { // Entry 107
+    0x1.0000b839f863b3e4bcae71b55072ca80p0,
+    -0x1.331f2adbaf98dp-8
+  },
+  { // Entry 108
+    0x1.f3a98884eba4bc32647b7ac3c5404f85p26,
+    0x1.3623c0c9e9d5ap4
+  },
+  { // Entry 109
+    0x1.f3a98884eba4bc32647b7ac3c5404f85p26,
+    -0x1.3623c0c9e9d5ap4
+  },
+  { // Entry 110
+    0x1.75a07cfb107ca6ba9dba1e2c2cedd659p453,
+    0x1.3b11206005429p8
+  },
+  { // Entry 111
+    0x1.75a07cfb107ca6ba9dba1e2c2cedd659p453,
+    -0x1.3b11206005429p8
+  },
+  { // Entry 112
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    0x1.42a565e456e04p9
+  },
+  { // Entry 113
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    -0x1.42a565e456e04p9
+  },
+  { // Entry 114
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    0x1.456bf23e02428p9
+  },
+  { // Entry 115
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    -0x1.456bf23e02428p9
+  },
+  { // Entry 116
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    0x1.45c1feef8086cp9
+  },
+  { // Entry 117
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    -0x1.45c1feef8086cp9
+  },
+  { // Entry 118
+    0x1.4dbe273792bde7fc45ff4f687bf81f94p6,
+    0x1.478p2
+  },
+  { // Entry 119
+    0x1.4dbe273792bde7fc45ff4f687bf81f94p6,
+    -0x1.478p2
+  },
+  { // Entry 120
+    0x1.a1732beffb81e80f059be59df088e0dcp2,
+    0x1.480p1
+  },
+  { // Entry 121
+    0x1.a1732beffb81e80f059be59df088e0dcp2,
+    -0x1.480p1
+  },
+  { // Entry 122
+    0x1.f292b709c70c9039aec2c978d1d7e73ep0,
+    0x1.494p0
+  },
+  { // Entry 123
+    0x1.f292b709c70c9039aec2c978d1d7e73ep0,
+    -0x1.494p0
+  },
+  { // Entry 124
+    0x1.a6c83c0fd645320793a014725c3d6e2dp2,
+    0x1.49a4d26934980p1
+  },
+  { // Entry 125
+    0x1.a6c83c0fd645320793a014725c3d6e2dp2,
+    -0x1.49a4d26934980p1
+  },
+  { // Entry 126
+    0x1.14ff8ce7eedcf7ff00c85c22990fd0fep951,
+    0x1.49fa3bc9fa3bcp9
+  },
+  { // Entry 127
+    0x1.14ff8ce7eedcf7ff00c85c22990fd0fep951,
+    -0x1.49fa3bc9fa3bcp9
+  },
+  { // Entry 128
+    0x1.f6c6651de70d704c55837250811c86ddp0,
+    0x1.4bcp0
+  },
+  { // Entry 129
+    0x1.f6c6651de70d704c55837250811c86ddp0,
+    -0x1.4bcp0
+  },
+  { // Entry 130
+    0x1.c18c56303fe66fff9d9b8c47655f12c0p2,
+    0x1.51965d2b59826p1
+  },
+  { // Entry 131
+    0x1.c18c56303fe66fff9d9b8c47655f12c0p2,
+    -0x1.51965d2b59826p1
+  },
+  { // Entry 132
+    0x1.eeac3d912b1ce80100df042cfb33c06ep59,
+    0x1.51fafb7826f27p5
+  },
+  { // Entry 133
+    0x1.eeac3d912b1ce80100df042cfb33c06ep59,
+    -0x1.51fafb7826f27p5
+  },
+  { // Entry 134
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    0x1.5807dc787a5d5p9
+  },
+  { // Entry 135
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    -0x1.5807dc787a5d5p9
+  },
+  { // Entry 136
+    0x1.000003a93be72bffaeb829ad23f9901bp0,
+    0x1.5a5c6af3cbf35p-11
+  },
+  { // Entry 137
+    0x1.000003a93be72bffaeb829ad23f9901bp0,
+    -0x1.5a5c6af3cbf35p-11
+  },
+  { // Entry 138
+    0x1.8d35b12c48404800034bee73c998316fp14,
+    0x1.5ac4908a754c1p3
+  },
+  { // Entry 139
+    0x1.8d35b12c48404800034bee73c998316fp14,
+    -0x1.5ac4908a754c1p3
+  },
+  { // Entry 140
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 141
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    -0x1.5dadf5d1e452cp9
+  },
+  { // Entry 142
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    0x1.5e056ed40e56ep9
+  },
+  { // Entry 143
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    -0x1.5e056ed40e56ep9
+  },
+  { // Entry 144
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    0x1.631f86ac0611bp9
+  },
+  { // Entry 145
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    -0x1.631f86ac0611bp9
+  },
+  { // Entry 146
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    0x1.632ba58eae071p9
+  },
+  { // Entry 147
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    -0x1.632ba58eae071p9
+  },
+  { // Entry 148
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    0x1.633ce8fb9f771p9
+  },
+  { // Entry 149
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    -0x1.633ce8fb9f771p9
+  },
+  { // Entry 150
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    0x1.633ce8fb9f840p9
+  },
+  { // Entry 151
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    -0x1.633ce8fb9f840p9
+  },
+  { // Entry 152
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    0x1.633ce8fb9f85ap9
+  },
+  { // Entry 153
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    -0x1.633ce8fb9f85ap9
+  },
+  { // Entry 154
+    0x1.1350a413023bfffffe14156b2ad2a0aap1,
+    0x1.6666666678dc9p0
+  },
+  { // Entry 155
+    0x1.1350a413023bfffffe14156b2ad2a0aap1,
+    -0x1.6666666678dc9p0
+  },
+  { // Entry 156
+    0x1.4152c1863ba8280001cbf788e6aa237cp0,
+    0x1.66666666a6b7ep-1
+  },
+  { // Entry 157
+    0x1.4152c1863ba8280001cbf788e6aa237cp0,
+    -0x1.66666666a6b7ep-1
+  },
+  { // Entry 158
+    0x1.ffffd47fb735b800740691174c7f5813p31,
+    0x1.6dfb50131e66dp4
+  },
+  { // Entry 159
+    0x1.ffffd47fb735b800740691174c7f5813p31,
+    -0x1.6dfb50131e66dp4
+  },
+  { // Entry 160
+    0x1.23aaacaf304fbfffff85f2e03f117872p3,
+    0x1.733333335c84ap1
+  },
+  { // Entry 161
+    0x1.23aaacaf304fbfffff85f2e03f117872p3,
+    -0x1.733333335c84ap1
+  },
+  { // Entry 162
+    0x1.000000000047f4008000035ee023fep0,
+    0x1.7fep-21
+  },
+  { // Entry 163
+    0x1.000000000047f4008000035ee023fep0,
+    -0x1.7fep-21
+  },
+  { // Entry 164
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    0x1.820d92fc4b42ap8
+  },
+  { // Entry 165
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    -0x1.820d92fc4b42ap8
+  },
+  { // Entry 166
+    0x1.9d55555ab98f4817a9f90acefca23523p140,
+    0x1.88d9eff243ec8p6
+  },
+  { // Entry 167
+    0x1.9d55555ab98f4817a9f90acefca23523p140,
+    -0x1.88d9eff243ec8p6
+  },
+  { // Entry 168
+    0x1.04c5f3d75091e8012559fb87285a99dep0,
+    0x1.8aep-3
+  },
+  { // Entry 169
+    0x1.04c5f3d75091e8012559fb87285a99dep0,
+    -0x1.8aep-3
+  },
+  { // Entry 170
+    0x1.50a125ad300e5802736ad2f68de9efdap0,
+    0x1.8c6318c6318c4p-1
+  },
+  { // Entry 171
+    0x1.50a125ad300e5802736ad2f68de9efdap0,
+    -0x1.8c6318c6318c4p-1
+  },
+  { // Entry 172
+    0x1.a2cc09e2e7dd780005c588bf2ebd2d28p35,
+    0x1.9720cc66f1cbbp4
+  },
+  { // Entry 173
+    0x1.a2cc09e2e7dd780005c588bf2ebd2d28p35,
+    -0x1.9720cc66f1cbbp4
+  },
+  { // Entry 174
+    0x1.49ea5b155646500001cb3c7a14d4f641p1,
+    0x1.99999999b8db8p0
+  },
+  { // Entry 175
+    0x1.49ea5b155646500001cb3c7a14d4f641p1,
+    -0x1.99999999b8db8p0
+  },
+  { // Entry 176
+    0x1.0147f40224ea77fffe35f63e0620c28ep0,
+    0x1.99999999bbe1bp-4
+  },
+  { // Entry 177
+    0x1.0147f40224ea77fffe35f63e0620c28ep0,
+    -0x1.99999999bbe1bp-4
+  },
+  { // Entry 178
+    0x1.0523184b26181ffffe5ad5f60af39607p0,
+    0x1.9999999ab6eebp-3
+  },
+  { // Entry 179
+    0x1.0523184b26181ffffe5ad5f60af39607p0,
+    -0x1.9999999ab6eebp-3
+  },
+  { // Entry 180
+    0x1.0147f4022697680001b3e13f009af80bp0,
+    0x1.9999999ac7857p-4
+  },
+  { // Entry 181
+    0x1.0147f4022697680001b3e13f009af80bp0,
+    -0x1.9999999ac7857p-4
+  },
+  { // Entry 182
+    0x1.0523184b290290000199de7723bc799dp0,
+    0x1.9999999b2aca1p-3
+  },
+  { // Entry 183
+    0x1.0523184b290290000199de7723bc799dp0,
+    -0x1.9999999b2aca1p-3
+  },
+  { // Entry 184
+    0x1.0147f402280ed80001d59eeac36ba73dp0,
+    0x1.9999999bb1c77p-4
+  },
+  { // Entry 185
+    0x1.0147f402280ed80001d59eeac36ba73dp0,
+    -0x1.9999999bb1c77p-4
+  },
+  { // Entry 186
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    0x1.9a57d76d152fcp8
+  },
+  { // Entry 187
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    -0x1.9a57d76d152fcp8
+  },
+  { // Entry 188
+    0x1.6375401c4fbbf8003386ea381d3fe669p0,
+    0x1.b5daed76bb580p-1
+  },
+  { // Entry 189
+    0x1.6375401c4fbbf8003386ea381d3fe669p0,
+    -0x1.b5daed76bb580p-1
+  },
+  { // Entry 190
+    0x1.f30605e8b5451805101b3ea033bab41cp8,
+    0x1.b9f89e22629b5p2
+  },
+  { // Entry 191
+    0x1.f30605e8b5451805101b3ea033bab41cp8,
+    -0x1.b9f89e22629b5p2
+  },
+  { // Entry 192
+    0x1.f309ebf823d108054159f278e16ad109p8,
+    0x1.b9f91e22629b5p2
+  },
+  { // Entry 193
+    0x1.f309ebf823d108054159f278e16ad109p8,
+    -0x1.b9f91e22629b5p2
+  },
+  { // Entry 194
+    0x1.185c2bf1d5276fffd73fd51a307743a4p0,
+    0x1.bb4p-2
+  },
+  { // Entry 195
+    0x1.185c2bf1d5276fffd73fd51a307743a4p0,
+    -0x1.bb4p-2
+  },
+  { // Entry 196
+    0x1.0005ffd0c797f7ff1970be180784a55cp0,
+    0x1.bb6p-7
+  },
+  { // Entry 197
+    0x1.0005ffd0c797f7ff1970be180784a55cp0,
+    -0x1.bb6p-7
+  },
+  { // Entry 198
+    0x1.968ef6ceade7f60edc2b4f0265da6ba4p640,
+    0x1.bcc517b553c93p8
+  },
+  { // Entry 199
+    0x1.968ef6ceade7f60edc2b4f0265da6ba4p640,
+    -0x1.bcc517b553c93p8
+  },
+  { // Entry 200
+    0x1.7b972e453783930f202a8aa455bb6c01p1,
+    0x1.c02p0
+  },
+  { // Entry 201
+    0x1.7b972e453783930f202a8aa455bb6c01p1,
+    -0x1.c02p0
+  },
+  { // Entry 202
+    0x1.7eec19d4dcbc738baa1a1114dee049b8p1,
+    0x1.c28p0
+  },
+  { // Entry 203
+    0x1.7eec19d4dcbc738baa1a1114dee049b8p1,
+    -0x1.c28p0
+  },
+  { // Entry 204
+    0x1.0656561cbe53c7fffdb60e1b054d8f16p0,
+    0x1.c6c2e93467e80p-3
+  },
+  { // Entry 205
+    0x1.0656561cbe53c7fffdb60e1b054d8f16p0,
+    -0x1.c6c2e93467e80p-3
+  },
+  { // Entry 206
+    0x1.06a2b3e7b603e800c2f4167761b30bf8p0,
+    0x1.d14bf83b48ec3p-3
+  },
+  { // Entry 207
+    0x1.06a2b3e7b603e800c2f4167761b30bf8p0,
+    -0x1.d14bf83b48ec3p-3
+  },
+  { // Entry 208
+    0x1.fb4d9de0ad845677ec6fc467c2ca9f9ap19,
+    0x1.d18p3
+  },
+  { // Entry 209
+    0x1.fb4d9de0ad845677ec6fc467c2ca9f9ap19,
+    -0x1.d18p3
+  },
+  { // Entry 210
+    0x1.73a6cd8f2f6d681e70f9695a25f39c35p0,
+    0x1.d60p-1
+  },
+  { // Entry 211
+    0x1.73a6cd8f2f6d681e70f9695a25f39c35p0,
+    -0x1.d60p-1
+  },
+  { // Entry 212
+    0x1.9fb7158a225e000047f44f47edad0545p1,
+    0x1.d8b5f14439f87p0
+  },
+  { // Entry 213
+    0x1.9fb7158a225e000047f44f47edad0545p1,
+    -0x1.d8b5f14439f87p0
+  },
+  { // Entry 214
+    0x1.ea40b4c3630d1000615de8737ec4857cp9,
+    0x1.e532a134b958cp2
+  },
+  { // Entry 215
+    0x1.ea40b4c3630d1000615de8737ec4857cp9,
+    -0x1.e532a134b958cp2
+  },
+  { // Entry 216
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    0x1.effffffffffffp6
+  },
+  { // Entry 217
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    -0x1.effffffffffffp6
+  },
+  { // Entry 218
+    0x1.01e4fad3b993aa1a52d036790b34e1cep0,
+    0x1.f1fffffffffffp-4
+  },
+  { // Entry 219
+    0x1.01e4fad3b993aa1a52d036790b34e1cep0,
+    -0x1.f1fffffffffffp-4
+  },
+  { // Entry 220
+    0x1.07a6bb7edb5de8000669b121a48f81e9p0,
+    0x1.f37a7a76cbc72p-3
+  },
+  { // Entry 221
+    0x1.07a6bb7edb5de8000669b121a48f81e9p0,
+    -0x1.f37a7a76cbc72p-3
+  },
+  { // Entry 222
+    0x1.d1ee8e62b2098fff7b22532973b4ccp1,
+    0x1.f73a29b8fcc22p0
+  },
+  { // Entry 223
+    0x1.d1ee8e62b2098fff7b22532973b4ccp1,
+    -0x1.f73a29b8fcc22p0
+  },
+  { // Entry 224
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    0x1.fdfffffffffffp5
+  },
+  { // Entry 225
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    -0x1.fdfffffffffffp5
+  },
+  { // Entry 226
+    0x1.000000000007f4018180a8332feed269p0,
+    0x1.fe7f9fe7f9fc1p-23
+  },
+  { // Entry 227
+    0x1.000000000007f4018180a8332feed269p0,
+    -0x1.fe7f9fe7f9fc1p-23
+  },
+  { // Entry 228
+    0x1.000007f7824c94120eb9c3be21444195p0,
+    0x1.feeffffffffffp-11
+  },
+  { // Entry 229
+    0x1.000007f7824c94120eb9c3be21444195p0,
+    -0x1.feeffffffffffp-11
+  },
+  { // Entry 230
+    0x1.dfa36f8e6bf72fa8a934ef27b5231b54p1,
+    0x1.feeffffffffffp0
+  },
+  { // Entry 231
+    0x1.dfa36f8e6bf72fa8a934ef27b5231b54p1,
+    -0x1.feeffffffffffp0
+  },
+  { // Entry 232
+    0x1.08086ec43bf6287590f3692c2b8d555dp0,
+    0x1.ffb886fe444c0p-3
+  },
+  { // Entry 233
+    0x1.08086ec43bf6287590f3692c2b8d555dp0,
+    -0x1.ffb886fe444c0p-3
+  },
+  { // Entry 234
+    0x1.080972995a2b573ac07666762f1a0b72p0,
+    0x1.ffd8af33686dbp-3
+  },
+  { // Entry 235
+    0x1.080972995a2b573ac07666762f1a0b72p0,
+    -0x1.ffd8af33686dbp-3
+  },
+  { // Entry 236
+    0x1.6d4fd9ab47c9200073aa8127a2419ac8p737,
+    0x1.ffe5effffffffp8
+  },
+  { // Entry 237
+    0x1.6d4fd9ab47c9200073aa8127a2419ac8p737,
+    -0x1.ffe5effffffffp8
+  },
+  { // Entry 238
+    0x1.74418e8eaca63c82e25a9f7d06548e5dp10,
+    0x1.ffeffffffffffp2
+  },
+  { // Entry 239
+    0x1.74418e8eaca63c82e25a9f7d06548e5dp10,
+    -0x1.ffeffffffffffp2
+  },
+  { // Entry 240
+    0x1.080a3deb46ec08a56cbd7f1bde2759b0p0,
+    0x1.fff1d77ffffffp-3
+  },
+  { // Entry 241
+    0x1.080a3deb46ec08a56cbd7f1bde2759b0p0,
+    -0x1.fff1d77ffffffp-3
+  },
+  { // Entry 242
+    0x1.941a855acbf7a7ffc58b32660a23ba32p737,
+    0x1.ffffc5dffffffp8
+  },
+  { // Entry 243
+    0x1.941a855acbf7a7ffc58b32660a23ba32p737,
+    -0x1.ffffc5dffffffp8
+  },
+  { // Entry 244
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    0x1.fffffdfffffffp6
+  },
+  { // Entry 245
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    -0x1.fffffdfffffffp6
+  },
+  { // Entry 246
+    0x1.080ab0589b61286b6d41402698d5bfeep0,
+    0x1.ffffff7ffffffp-3
+  },
+  { // Entry 247
+    0x1.080ab0589b61286b6d41402698d5bfeep0,
+    -0x1.ffffff7ffffffp-3
+  },
+  { // Entry 248
+    0x1.20ac18541756f8007b9a2f43dab0cc9cp0,
+    0x1.ffffff8ffffffp-2
+  },
+  { // Entry 249
+    0x1.20ac18541756f8007b9a2f43dab0cc9cp0,
+    -0x1.ffffff8ffffffp-2
+  },
+  { // Entry 250
+    0x1.e18fa0deb98c68008c19676612286a2dp1,
+    0x1.ffffffffbffffp0
+  },
+  { // Entry 251
+    0x1.e18fa0deb98c68008c19676612286a2dp1,
+    -0x1.ffffffffbffffp0
+  },
+  { // Entry 252
+    0x1.p0,
+    0x1.fffffffff7fffp-352
+  },
+  { // Entry 253
+    0x1.p0,
+    -0x1.fffffffff7fffp-352
+  },
+  { // Entry 254
+    0x1.0f2ebd0a7fc177f6fa2a0a4e6bb2f696p22,
+    0x1.fffffffffff7fp3
+  },
+  { // Entry 255
+    0x1.0f2ebd0a7fc177f6fa2a0a4e6bb2f696p22,
+    -0x1.fffffffffff7fp3
+  },
+  { // Entry 256
+    0x1.e18fa0df2d99b84e92f43b9b47f7341ep1,
+    0x1.fffffffffffeep0
+  },
+  { // Entry 257
+    0x1.e18fa0df2d99b84e92f43b9b47f7341ep1,
+    -0x1.fffffffffffeep0
+  },
+  { // Entry 258
+    0x1.b4ee858de3e5a800f659793765248fb4p4,
+    0x1.ffffffffffff5p1
+  },
+  { // Entry 259
+    0x1.b4ee858de3e5a800f659793765248fb4p4,
+    -0x1.ffffffffffff5p1
+  },
+  { // Entry 260
+    0x1.p0,
+    0x1.ffffffffffffdp-200
+  },
+  { // Entry 261
+    0x1.p0,
+    -0x1.ffffffffffffdp-200
+  },
+  { // Entry 262
+    0x1.0000000000001ffffffffffffcaaaaaap0,
+    0x1.ffffffffffffep-26
+  },
+  { // Entry 263
+    0x1.0000000000001ffffffffffffcaaaaaap0,
+    -0x1.ffffffffffffep-26
+  },
+  { // Entry 264
+    0x1.00000000000007ffffffffffff0aaaaap0,
+    0x1.ffffffffffffep-27
+  },
+  { // Entry 265
+    0x1.00000000000007ffffffffffff0aaaaap0,
+    -0x1.ffffffffffffep-27
+  },
+  { // Entry 266
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    0x1.ffffffffffffep8
+  },
+  { // Entry 267
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    -0x1.ffffffffffffep8
+  },
+  { // Entry 268
+    0x1.p0,
+    0.0
+  },
+  { // Entry 269
+    0x1.00a7413869e0bc675ef8f8059bcc3722p0,
+    0x1.2492492492492p-4
+  },
+  { // Entry 270
+    0x1.00a7413869e0bc675ef8f8059bcc3722p0,
+    -0x1.2492492492492p-4
+  },
+  { // Entry 271
+    0x1.029ddf6df7f29c6e5531c853aa7ef551p0,
+    0x1.2492492492492p-3
+  },
+  { // Entry 272
+    0x1.029ddf6df7f29c6e5531c853aa7ef551p0,
+    -0x1.2492492492492p-3
+  },
+  { // Entry 273
+    0x1.05e66b632df1253b01df69be9ece44e3p0,
+    0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 274
+    0x1.05e66b632df1253b01df69be9ece44e3p0,
+    -0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 275
+    0x1.0a852f6aef4fd03008a8aa0554865518p0,
+    0x1.2492492492492p-2
+  },
+  { // Entry 276
+    0x1.0a852f6aef4fd03008a8aa0554865518p0,
+    -0x1.2492492492492p-2
+  },
+  { // Entry 277
+    0x1.10803503a700f31eb1d4ed9defcba588p0,
+    0x1.6db6db6db6db6p-2
+  },
+  { // Entry 278
+    0x1.10803503a700f31eb1d4ed9defcba588p0,
+    -0x1.6db6db6db6db6p-2
+  },
+  { // Entry 279
+    0x1.17df4cbabde0a25651179bc95d273b63p0,
+    0x1.b6db6db6db6dap-2
+  },
+  { // Entry 280
+    0x1.17df4cbabde0a25651179bc95d273b63p0,
+    -0x1.b6db6db6db6dap-2
+  },
+  { // Entry 281
+    0x1.20ac1862ae8d021a4e365577227270b1p0,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 282
+    0x1.20ac1862ae8d021a4e365577227270b1p0,
+    -0x1.ffffffffffffep-2
+  },
+  { // Entry 283
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.0p-1
+  },
+  { // Entry 284
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.0p-1
+  },
+  { // Entry 285
+    0x1.2af217a90e6dec39004f56495cd43505p0,
+    0x1.2492492492492p-1
+  },
+  { // Entry 286
+    0x1.2af217a90e6dec39004f56495cd43505p0,
+    -0x1.2492492492492p-1
+  },
+  { // Entry 287
+    0x1.36beb71cfe154fa26b865cb1a3cb8a5fp0,
+    0x1.4924924924924p-1
+  },
+  { // Entry 288
+    0x1.36beb71cfe154fa26b865cb1a3cb8a5fp0,
+    -0x1.4924924924924p-1
+  },
+  { // Entry 289
+    0x1.442161b9a30711902871e6d507913362p0,
+    0x1.6db6db6db6db6p-1
+  },
+  { // Entry 290
+    0x1.442161b9a30711902871e6d507913362p0,
+    -0x1.6db6db6db6db6p-1
+  },
+  { // Entry 291
+    0x1.532b950b9683060720f579e323e93474p0,
+    0x1.9249249249248p-1
+  },
+  { // Entry 292
+    0x1.532b950b9683060720f579e323e93474p0,
+    -0x1.9249249249248p-1
+  },
+  { // Entry 293
+    0x1.63f0f80b9c6bb0519d8eae2c3ccbbd98p0,
+    0x1.b6db6db6db6dap-1
+  },
+  { // Entry 294
+    0x1.63f0f80b9c6bb0519d8eae2c3ccbbd98p0,
+    -0x1.b6db6db6db6dap-1
+  },
+  { // Entry 295
+    0x1.768774cc7f49764e7589347e3613d36bp0,
+    0x1.db6db6db6db6cp-1
+  },
+  { // Entry 296
+    0x1.768774cc7f49764e7589347e3613d36bp0,
+    -0x1.db6db6db6db6cp-1
+  },
+  { // Entry 297
+    0x1.8b07551d9f54f1f51d63c148150ff9f0p0,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 298
+    0x1.8b07551d9f54f1f51d63c148150ff9f0p0,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 299
+    0x1.p0,
+    0.0
+  },
+  { // Entry 300
+    0x1.0009a148b0e06dc3d0614c40dd1468d6p0,
+    0x1.18de5ab277f45p-6
+  },
+  { // Entry 301
+    0x1.0009a148b0e06dc3d0614c40dd1468d6p0,
+    -0x1.18de5ab277f45p-6
+  },
+  { // Entry 302
+    0x1.002685dc3cf39cdb36154a8c673f400bp0,
+    0x1.18de5ab277f45p-5
+  },
+  { // Entry 303
+    0x1.002685dc3cf39cdb36154a8c673f400bp0,
+    -0x1.18de5ab277f45p-5
+  },
+  { // Entry 304
+    0x1.0056afe71e837cc56169a00a96535d60p0,
+    0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 305
+    0x1.0056afe71e837cc56169a00a96535d60p0,
+    -0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 306
+    0x1.009a2308fa8fcdaddee63777dbb370e6p0,
+    0x1.18de5ab277f45p-4
+  },
+  { // Entry 307
+    0x1.009a2308fa8fcdaddee63777dbb370e6p0,
+    -0x1.18de5ab277f45p-4
+  },
+  { // Entry 308
+    0x1.00f0e454e69896dbe7bfa42c490502bbp0,
+    0x1.5f15f15f15f16p-4
+  },
+  { // Entry 309
+    0x1.00f0e454e69896dbe7bfa42c490502bbp0,
+    -0x1.5f15f15f15f16p-4
+  },
+  { // Entry 310
+    0x1.015afa51ca5a8c6a812cb74010fd2339p0,
+    0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 311
+    0x1.015afa51ca5a8c6a812cb74010fd2339p0,
+    -0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 312
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 313
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 314
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 315
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 316
+    0x1.02068cf05597373684859565fe36babfp0,
+    0x1.01767dce434aap-3
+  },
+  { // Entry 317
+    0x1.02068cf05597373684859565fe36babfp0,
+    -0x1.01767dce434aap-3
+  },
+  { // Entry 318
+    0x1.0236d50fb0daff9feea39dcae5219685p0,
+    0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 319
+    0x1.0236d50fb0daff9feea39dcae5219685p0,
+    -0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 320
+    0x1.026945c041710aacb6e5b3c7fb2aa37ap0,
+    0x1.18de5ab277f46p-3
+  },
+  { // Entry 321
+    0x1.026945c041710aacb6e5b3c7fb2aa37ap0,
+    -0x1.18de5ab277f46p-3
+  },
+  { // Entry 322
+    0x1.029ddf6df7f29d011dd86bfe01ec3683p0,
+    0x1.2492492492494p-3
+  },
+  { // Entry 323
+    0x1.029ddf6df7f29d011dd86bfe01ec3683p0,
+    -0x1.2492492492494p-3
+  },
+  { // Entry 324
+    0x1.02d4a289645849faf12a95a92d2534d5p0,
+    0x1.30463796ac9e2p-3
+  },
+  { // Entry 325
+    0x1.02d4a289645849faf12a95a92d2534d5p0,
+    -0x1.30463796ac9e2p-3
+  },
+  { // Entry 326
+    0x1.030d8f87b6ead4a0bc7464b33dbba3aap0,
+    0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 327
+    0x1.030d8f87b6ead4a0bc7464b33dbba3aap0,
+    -0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 328
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 329
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 330
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 331
+    0x1.0348a6e2c13df5fb3d99c361a1bb9dcbp0,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 332
+    0x1.0a19d6de605abf08129cddde1636dd2ap0,
+    0x1.1eb851eb851ecp-2
+  },
+  { // Entry 333
+    0x1.0a19d6de605abf08129cddde1636dd2ap0,
+    -0x1.1eb851eb851ecp-2
+  },
+  { // Entry 334
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    0x1.999999999999ap-2
+  },
+  { // Entry 335
+    0x1.14c128b1a7c2b69f584c42e1f5d24e43p0,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 336
+    0x1.2365ee6c60d331135d0b3ad315833363p0,
+    0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 337
+    0x1.2365ee6c60d331135d0b3ad315833363p0,
+    -0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 338
+    0x1.363e341f66160527d93c30b63d619a60p0,
+    0x1.47ae147ae147bp-1
+  },
+  { // Entry 339
+    0x1.363e341f66160527d93c30b63d619a60p0,
+    -0x1.47ae147ae147bp-1
+  },
+  { // Entry 340
+    0x1.4d8f87572582badd7439620bd7e9590bp0,
+    0x1.851eb851eb852p-1
+  },
+  { // Entry 341
+    0x1.4d8f87572582badd7439620bd7e9590bp0,
+    -0x1.851eb851eb852p-1
+  },
+  { // Entry 342
+    0x1.69aff7d0ce135dcd1a6ec2e65d0a89dfp0,
+    0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 343
+    0x1.69aff7d0ce135dcd1a6ec2e65d0a89dfp0,
+    -0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 344
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 345
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 346
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 347
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 348
+    0x1.c035cc3cf78edf8213cbad9479090d14p7,
+    0x1.86bc88cbf1b67p2
+  },
+  { // Entry 349
+    0x1.c035cc3cf78edf8213cbad9479090d14p7,
+    -0x1.86bc88cbf1b67p2
+  },
+  { // Entry 350
+    0x1.20af6cbb4ba69598ec939d7de84f588dp15,
+    0x1.66bc88cbf1b67p3
+  },
+  { // Entry 351
+    0x1.20af6cbb4ba69598ec939d7de84f588dp15,
+    -0x1.66bc88cbf1b67p3
+  },
+  { // Entry 352
+    0x1.73e096cf57b5505242fb8e3b8be68034p22,
+    0x1.050d6698f548dp4
+  },
+  { // Entry 353
+    0x1.73e096cf57b5505242fb8e3b8be68034p22,
+    -0x1.050d6698f548dp4
+  },
+  { // Entry 354
+    0x1.df0b13a84513e2dfcb4b2dd0b765caf4p29,
+    0x1.56bc88cbf1b67p4
+  },
+  { // Entry 355
+    0x1.df0b13a84513e2dfcb4b2dd0b765caf4p29,
+    -0x1.56bc88cbf1b67p4
+  },
+  { // Entry 356
+    0x1.348bc1e018bc593ce3145e9f4c06b22cp37,
+    0x1.a86baafeee241p4
+  },
+  { // Entry 357
+    0x1.348bc1e018bc593ce3145e9f4c06b22cp37,
+    -0x1.a86baafeee241p4
+  },
+  { // Entry 358
+    0x1.8d761a3398942448ea796cb7e602a205p44,
+    0x1.fa1acd31ea91bp4
+  },
+  { // Entry 359
+    0x1.8d761a3398942448ea796cb7e602a205p44,
+    -0x1.fa1acd31ea91bp4
+  },
+  { // Entry 360
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 361
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 362
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 363
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 364
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 365
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 366
+    0x1.000000010000654361c4613c7312ecfdp15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 367
+    0x1.000000010000654361c4613c7312ecfdp15,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 368
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 369
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 370
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 371
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 372
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 373
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 374
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 375
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 376
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 377
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 378
+    0x1.01000000000019378798c06e5185a376p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 379
+    0x1.01000000000019378798c06e5185a376p3,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 380
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 381
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 382
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 383
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 384
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 385
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 386
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 387
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 388
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 389
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 390
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 391
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 392
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 393
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 394
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 395
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 396
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 397
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 398
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 399
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 400
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 401
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 402
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 403
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 404
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 405
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 406
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 407
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 408
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 409
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 410
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 411
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 412
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 413
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 414
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 415
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 416
+    0x1.000f60066540a372cf2f0ea5d3ca7e8bp0,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 417
+    0x1.000f60066540a372cf2f0ea5d3ca7e8bp0,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 418
+    0x1.000f60066540a374321a5962997281b2p0,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 419
+    0x1.000f60066540a374321a5962997281b2p0,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 420
+    0x1.000f60066540a3759505a41f5f1a94dbp0,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 421
+    0x1.000f60066540a3759505a41f5f1a94dbp0,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 422
+    0x1.000000000000ca87c3898cffd1bcd954p31,
+    -0x1.62e42fefa39f0p4
+  },
+  { // Entry 423
+    0x1.000000000000ca87c3898cffd1bcd954p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 424
+    0x1.ffffffffffff950f871319ff0e6e2b95p30,
+    -0x1.62e42fefa39efp4
+  },
+  { // Entry 425
+    0x1.ffffffffffff950f871319ff0e6e2b95p30,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 426
+    0x1.fffffffffffd950f87131a007962a482p30,
+    -0x1.62e42fefa39eep4
+  },
+  { // Entry 427
+    0x1.fffffffffffd950f87131a007962a482p30,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 428
+    0x1.000000010000654361c4613c7312ecfdp15,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 429
+    0x1.000000010000654361c4613c7312ecfdp15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 430
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 431
+    0x1.00000000ffffe54361c4e13c60713c1ap15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 432
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 433
+    0x1.00000000ffff654361c5613c8dcf8b38p15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 434
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 435
+    0x1.00010000000032a17e40b25d822a36bbp7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 436
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 437
+    0x1.0000fffffffff2a1be40b25d7d81c5dap7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 438
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 439
+    0x1.0000ffffffffb2a1fe40b25d88d964f9p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 440
+    0x1.01000000000019378798c06e5185a376p3,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 441
+    0x1.01000000000019378798c06e5185a376p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 442
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 443
+    0x1.00fffffffffff9578798c06e505a5e4dp3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 444
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 445
+    0x1.00ffffffffffd9778798c06e53331924p3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 446
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 447
+    0x1.1000000000000bdde5750f42f8ed8fb8p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 448
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 449
+    0x1.0ffffffffffffcdde5750f42f89e6089p1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 450
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 451
+    0x1.0fffffffffffeddde5750f42f95f3159p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 452
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 453
+    0x1.40000000000004bf2895394dfd22cfe2p0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 454
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 455
+    0x1.3ffffffffffffebf2895394dfd0b85c5p0,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 456
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 457
+    0x1.3ffffffffffff8bf2895394dfd443ba8p0,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 458
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 459
+    0x1.0f876ccdf6cd97e4f0a1d33f20be5a0fp0,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 460
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 461
+    0x1.0f876ccdf6cd967ae6bb6b4b63f0609bp0,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 462
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 463
+    0x1.0f876ccdf6cd9510dcd50357a7335f9dp0,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 464
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 465
+    0x1.03da6eb6f9075f2fee48c07317b56aadp0,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 466
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 467
+    0x1.03da6eb6f9075ed6c364e82e43cc51c1p0,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 468
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 469
+    0x1.03da6eb6f9075e7d98810fe96fe74840p0,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 470
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 471
+    0x1.00f62557d91df38ff5c887c23bff5c07p0,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 472
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 473
+    0x1.00f62557d91df379c06a17c64244c1a5p0,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 474
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 475
+    0x1.00f62557d91df3638b0ba7ca488b2839p0,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 476
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 477
+    0x1.003d81f25e8be12f66fd52f837fadf75p0,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 478
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 479
+    0x1.003d81f25e8be129dafae45b35704d8ap0,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 480
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 481
+    0x1.003d81f25e8be1244ef875be32e5fbb0p0,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 482
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    0x1.6db6db6db6db7p7
+  },
+  { // Entry 483
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    -0x1.6db6db6db6db7p7
+  },
+  { // Entry 484
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    0x1.db6db6db6db6ep7
+  },
+  { // Entry 485
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    -0x1.db6db6db6db6ep7
+  },
+  { // Entry 486
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    0x1.2492492492492p8
+  },
+  { // Entry 487
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    -0x1.2492492492492p8
+  },
+  { // Entry 488
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    0x1.5b6db6db6db6dp8
+  },
+  { // Entry 489
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    -0x1.5b6db6db6db6dp8
+  },
+  { // Entry 490
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    0x1.9249249249248p8
+  },
+  { // Entry 491
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    -0x1.9249249249248p8
+  },
+  { // Entry 492
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    0x1.c924924924923p8
+  },
+  { // Entry 493
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    -0x1.c924924924923p8
+  },
+  { // Entry 494
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    0x1.4492492492492p9
+  },
+  { // Entry 495
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    -0x1.4492492492492p9
+  },
+  { // Entry 496
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    0x1.4924924924924p9
+  },
+  { // Entry 497
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    -0x1.4924924924924p9
+  },
+  { // Entry 498
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    0x1.4db6db6db6db6p9
+  },
+  { // Entry 499
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    -0x1.4db6db6db6db6p9
+  },
+  { // Entry 500
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    0x1.5249249249248p9
+  },
+  { // Entry 501
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    -0x1.5249249249248p9
+  },
+  { // Entry 502
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    0x1.56db6db6db6dap9
+  },
+  { // Entry 503
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    -0x1.56db6db6db6dap9
+  },
+  { // Entry 504
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    0x1.5b6db6db6db6cp9
+  },
+  { // Entry 505
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    -0x1.5b6db6db6db6cp9
+  },
+  { // Entry 506
+    HUGE_VAL,
+    0x1.76db6db6db6dbp9
+  },
+  { // Entry 507
+    HUGE_VAL,
+    -0x1.76db6db6db6dbp9
+  },
+  { // Entry 508
+    HUGE_VAL,
+    0x1.8db6db6db6db6p9
+  },
+  { // Entry 509
+    HUGE_VAL,
+    -0x1.8db6db6db6db6p9
+  },
+  { // Entry 510
+    HUGE_VAL,
+    0x1.a492492492491p9
+  },
+  { // Entry 511
+    HUGE_VAL,
+    -0x1.a492492492491p9
+  },
+  { // Entry 512
+    HUGE_VAL,
+    0x1.bb6db6db6db6cp9
+  },
+  { // Entry 513
+    HUGE_VAL,
+    -0x1.bb6db6db6db6cp9
+  },
+  { // Entry 514
+    HUGE_VAL,
+    0x1.d249249249247p9
+  },
+  { // Entry 515
+    HUGE_VAL,
+    -0x1.d249249249247p9
+  },
+  { // Entry 516
+    HUGE_VAL,
+    0x1.e924924924922p9
+  },
+  { // Entry 517
+    HUGE_VAL,
+    -0x1.e924924924922p9
+  },
+  { // Entry 518
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    -0x1.6p9
+  },
+  { // Entry 519
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    0x1.6p9
+  },
+  { // Entry 520
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    -0x1.5b6db6db6db6ep9
+  },
+  { // Entry 521
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    0x1.5b6db6db6db6ep9
+  },
+  { // Entry 522
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    -0x1.56db6db6db6dcp9
+  },
+  { // Entry 523
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    0x1.56db6db6db6dcp9
+  },
+  { // Entry 524
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    -0x1.524924924924ap9
+  },
+  { // Entry 525
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    0x1.524924924924ap9
+  },
+  { // Entry 526
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    -0x1.4db6db6db6db8p9
+  },
+  { // Entry 527
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    0x1.4db6db6db6db8p9
+  },
+  { // Entry 528
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    -0x1.4924924924926p9
+  },
+  { // Entry 529
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    0x1.4924924924926p9
+  },
+  { // Entry 530
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    -0x1.4492492492494p9
+  },
+  { // Entry 531
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    0x1.4492492492494p9
+  },
+  { // Entry 532
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    -0x1.4000000000002p9
+  },
+  { // Entry 533
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    0x1.4000000000002p9
+  },
+  { // Entry 534
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 535
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 536
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 537
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 538
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 539
+    0x1.01d86cfadd84bed563ca81e639d82de4p0,
+    0x1.eb851eb851eb7p-4
+  },
+  { // Entry 540
+    0x1.01d86cfadd84bed563ca81e639d82de4p0,
+    -0x1.eb851eb851eb7p-4
+  },
+  { // Entry 541
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 542
+    0x1.01d86cfadd84bef42effbee90fd3b265p0,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 543
+    0x1.01d86cfadd84bf12fa34fbebe5d038bep0,
+    0x1.eb851eb851eb9p-4
+  },
+  { // Entry 544
+    0x1.01d86cfadd84bf12fa34fbebe5d038bep0,
+    -0x1.eb851eb851eb9p-4
+  },
+  { // Entry 545
+    0x1.20ac1862ae8d042fe838523e9530a73ep0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 546
+    0x1.20ac1862ae8d042fe838523e9530a73ep0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 547
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.0p-1
+  },
+  { // Entry 548
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.0p-1
+  },
+  { // Entry 549
+    0x1.20ac1862ae8d0a70b63e4894edd78b6ep0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 550
+    0x1.20ac1862ae8d0a70b63e4894edd78b6ep0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 551
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 552
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 553
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 554
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 555
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 556
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 557
+    0x1.ab5adb9c435e4cc33d1386d805bcc667p30,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 558
+    0x1.ab5adb9c435e4cc33d1386d805bcc667p30,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 559
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    0x1.6p4
+  },
+  { // Entry 560
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    -0x1.6p4
+  },
+  { // Entry 561
+    0x1.ab5adb9c4361a378f44c0d97f5ef6222p30,
+    0x1.6000000000001p4
+  },
+  { // Entry 562
+    0x1.ab5adb9c4361a378f44c0d97f5ef6222p30,
+    -0x1.6000000000001p4
+  },
+  { // Entry 563
+    0x1.226af33b1fdae7ecca102ad6b7f98a06p32,
+    0x1.6ffffffffffffp4
+  },
+  { // Entry 564
+    0x1.226af33b1fdae7ecca102ad6b7f98a06p32,
+    -0x1.6ffffffffffffp4
+  },
+  { // Entry 565
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    0x1.7p4
+  },
+  { // Entry 566
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    -0x1.7p4
+  },
+  { // Entry 567
+    0x1.226af33b1fdd2cc2b0866a8ecca822f4p32,
+    0x1.7000000000001p4
+  },
+  { // Entry 568
+    0x1.226af33b1fdd2cc2b0866a8ecca822f4p32,
+    -0x1.7000000000001p4
+  },
+  { // Entry 569
+    0x1.fffffffffffb9ede67b7a313295faa73p51,
+    0x1.25e4f7b2737f9p5
+  },
+  { // Entry 570
+    0x1.fffffffffffb9ede67b7a313295faa73p51,
+    -0x1.25e4f7b2737f9p5
+  },
+  { // Entry 571
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 572
+    0x1.ffffffffffff9ede67b7a30e671c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 573
+    0x1.000000000001cf6f33dbd188d26ca4a9p52,
+    0x1.25e4f7b2737fbp5
+  },
+  { // Entry 574
+    0x1.000000000001cf6f33dbd188d26ca4a9p52,
+    -0x1.25e4f7b2737fbp5
+  },
+  { // Entry 575
+    0x1.6a09e667f3b73b2e9b132d51434e682dp52,
+    0x1.28aac01252c6cp5
+  },
+  { // Entry 576
+    0x1.6a09e667f3b73b2e9b132d51434e682dp52,
+    -0x1.28aac01252c6cp5
+  },
+  { // Entry 577
+    0x1.6a09e667f3ba0f4267e314c28dbf6b23p52,
+    0x1.28aac01252c6dp5
+  },
+  { // Entry 578
+    0x1.6a09e667f3ba0f4267e314c28dbf6b23p52,
+    -0x1.28aac01252c6dp5
+  },
+  { // Entry 579
+    0x1.6a09e667f3bce35634b2fc39805807b9p52,
+    0x1.28aac01252c6ep5
+  },
+  { // Entry 580
+    0x1.6a09e667f3bce35634b2fc39805807b9p52,
+    -0x1.28aac01252c6ep5
+  },
+  { // Entry 581
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 582
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 583
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 584
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 585
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 586
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 587
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 588
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 589
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 590
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 591
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 592
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 593
+    0x1.0000000000000007ffffffffffff800ap0,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 594
+    0x1.0000000000000007ffffffffffff800ap0,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 595
+    0x1.0000000000000008000000000000000ap0,
+    0x1.0p-30
+  },
+  { // Entry 596
+    0x1.0000000000000008000000000000000ap0,
+    -0x1.0p-30
+  },
+  { // Entry 597
+    0x1.0000000000000008000000000001000ap0,
+    0x1.0000000000001p-30
+  },
+  { // Entry 598
+    0x1.0000000000000008000000000001000ap0,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 599
+    0x1.0000000200000000aaaa8aaac16c016cp0,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 600
+    0x1.0000000200000000aaaa8aaac16c016cp0,
+    -0x1.fffffffffffffp-16
+  },
+  { // Entry 601
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    0x1.0p-15
+  },
+  { // Entry 602
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    -0x1.0p-15
+  },
+  { // Entry 603
+    0x1.0000000200000000aaaaeaaac16c416cp0,
+    0x1.0000000000001p-15
+  },
+  { // Entry 604
+    0x1.0000000200000000aaaaeaaac16c416cp0,
+    -0x1.0000000000001p-15
+  },
+  { // Entry 605
+    0x1.0008000aaab05b06d073fbf35675d3c7p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 606
+    0x1.0008000aaab05b06d073fbf35675d3c7p0,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 607
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    0x1.0p-6
+  },
+  { // Entry 608
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    -0x1.0p-6
+  },
+  { // Entry 609
+    0x1.0008000aaab05b085077fbf689aa450ep0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 610
+    0x1.0008000aaab05b085077fbf689aa450ep0,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 611
+    0x1.002000aaac16c30a31d59c22178e80d2p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 612
+    0x1.002000aaac16c30a31d59c22178e80d2p0,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 613
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    0x1.0p-5
+  },
+  { // Entry 614
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    -0x1.0p-5
+  },
+  { // Entry 615
+    0x1.002000aaac16c31032159ceee5937a38p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 616
+    0x1.002000aaac16c31032159ceee5937a38p0,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 617
+    0x1.00800aab05b1fb1c50429ea2694ccac8p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 618
+    0x1.00800aab05b1fb1c50429ea2694ccac8p0,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 619
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    0x1.0p-4
+  },
+  { // Entry 620
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    -0x1.0p-4
+  },
+  { // Entry 621
+    0x1.00800aab05b1fb345442d1d6d4983508p0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 622
+    0x1.00800aab05b1fb345442d1d6d4983508p0,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 623
+    0x1.0200aac16db6edcc80b33b1062033cc7p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 624
+    0x1.0200aac16db6edcc80b33b1062033cc7p0,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 625
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    0x1.0p-3
+  },
+  { // Entry 626
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    -0x1.0p-3
+  },
+  { // Entry 627
+    0x1.0200aac16db6ee2cc0c0091553a9d0cep0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 628
+    0x1.0200aac16db6ee2cc0c0091553a9d0cep0,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 629
+    0x1.080ab05ca6145e5b88296b187f06805fp0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 630
+    0x1.080ab05ca6145e5b88296b187f06805fp0,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 631
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    0x1.0p-2
+  },
+  { // Entry 632
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    -0x1.0p-2
+  },
+  { // Entry 633
+    0x1.080ab05ca6145fdf8b5dd6a4973a4a4ep0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 634
+    0x1.080ab05ca6145fdf8b5dd6a4973a4a4ep0,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 635
+    0x1.e18fa0df2d9ba58f58936095ae8d9969p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 636
+    0x1.e18fa0df2d9ba58f58936095ae8d9969p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 637
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    0x1.0p1
+  },
+  { // Entry 638
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    -0x1.0p1
+  },
+  { // Entry 639
+    0x1.e18fa0df2d9bfc9ac6be853a8fad8f33p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 640
+    0x1.e18fa0df2d9bfc9ac6be853a8fad8f33p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 641
+    0x1.b4ee858de3e7c9cd569e3d719b38d342p4,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 642
+    0x1.b4ee858de3e7c9cd569e3d719b38d342p4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 643
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    0x1.0p2
+  },
+  { // Entry 644
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    -0x1.0p2
+  },
+  { // Entry 645
+    0x1.b4ee858de3e86d8aa6b2deb6ca2c6104p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 646
+    0x1.b4ee858de3e86d8aa6b2deb6ca2c6104p4,
+    -0x1.0000000000001p2
+  },
+  { // Entry 647
+    0x1.749eaa93f4e703e92c604cbb82b0787ap10,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 648
+    0x1.749eaa93f4e703e92c604cbb82b0787ap10,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 649
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    0x1.0p3
+  },
+  { // Entry 650
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    -0x1.0p3
+  },
+  { // Entry 651
+    0x1.749eaa93f4e81b60282ffe386b648851p10,
+    0x1.0000000000001p3
+  },
+  { // Entry 652
+    0x1.749eaa93f4e81b60282ffe386b648851p10,
+    -0x1.0000000000001p3
+  },
+  { // Entry 653
+    0x1.0f2ebd0a800543a63cca0142899e262fp22,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 654
+    0x1.0f2ebd0a800543a63cca0142899e262fp22,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 655
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    0x1.0p4
+  },
+  { // Entry 656
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    -0x1.0p4
+  },
+  { // Entry 657
+    0x1.0f2ebd0a8006da6c5859c1404c29aff0p22,
+    0x1.0000000000001p4
+  },
+  { // Entry 658
+    0x1.0f2ebd0a8006da6c5859c1404c29aff0p22,
+    -0x1.0000000000001p4
+  },
+  { // Entry 659
+    0x1.1f43fcc4b661a8944ac389c44c1372ffp45,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 660
+    0x1.1f43fcc4b661a8944ac389c44c1372ffp45,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 661
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    0x1.0p5
+  },
+  { // Entry 662
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    -0x1.0p5
+  },
+  { // Entry 663
+    0x1.1f43fcc4b66506604111acee528244bfp45,
+    0x1.0000000000001p5
+  },
+  { // Entry 664
+    0x1.1f43fcc4b66506604111acee528244bfp45,
+    -0x1.0000000000001p5
+  },
+  { // Entry 665
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 666
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 667
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.0p6
+  },
+  { // Entry 668
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.0p6
+  },
+  { // Entry 669
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    0x1.0000000000001p6
+  },
+  { // Entry 670
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    -0x1.0000000000001p6
+  },
+  { // Entry 671
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 672
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 673
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 674
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 675
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    0x1.0000000000001p7
+  },
+  { // Entry 676
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    -0x1.0000000000001p7
+  },
+  { // Entry 677
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 678
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 679
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    0x1.0p8
+  },
+  { // Entry 680
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    -0x1.0p8
+  },
+  { // Entry 681
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    0x1.0000000000001p8
+  },
+  { // Entry 682
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    -0x1.0000000000001p8
+  },
+  { // Entry 683
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 684
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 685
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    0x1.0p9
+  },
+  { // Entry 686
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    -0x1.0p9
+  },
+  { // Entry 687
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    0x1.0000000000001p9
+  },
+  { // Entry 688
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    -0x1.0000000000001p9
+  },
+  { // Entry 689
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 690
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 691
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 692
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 693
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 694
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 695
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 696
+    0x1.72f147fee40004f636960fb65616f933p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 697
+    0x1.412cc2a8d4e9df8319ceee45d93f21f3p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 698
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 699
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.0p0
+  },
+  { // Entry 700
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 701
+    0x1.531994ce525b97d489c1beb383943240p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 702
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 703
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 704
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 705
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 706
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 707
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 708
+    0x1.p0,
+    0.0
+  },
+  { // Entry 709
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 710
+    0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 711
+    0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 712
+    0x1.p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 713
+    0x1.p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 714
+    0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 715
+    0x1.p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 716
+    0x1.531994ce525b97d489c1beb383943240p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 717
+    0x1.8b07551d9f54fb5bed45e8a4d5a91742p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 718
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.0p0
+  },
+  { // Entry 719
+    0x1.8b07551d9f5517905cec5ebb19c4fa39p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 720
+    0x1.412cc2a8d4e9df8319ceee45d93f21f3p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 721
+    0x1.72f147fee40004f636960fb65616f933p3,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 722
+    HUGE_VAL,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 723
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 724
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 725
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 726
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 727
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 728
+    HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  }
+};
diff --git a/tests/math_data/coshf_intel_data.h b/tests/math_data/coshf_intel_data.h
new file mode 100644
index 0000000..813b1b3
--- /dev/null
+++ b/tests/math_data/coshf_intel_data.h
@@ -0,0 +1,2438 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_coshf_intel_data[] = {
+  { // Entry 0
+    0x1.2ae06100e62be904fdb5bc85681d5aaep11,
+    -0x1.0f1fb2p3
+  },
+  { // Entry 1
+    0x1.2ae06100e62be904fdb5bc85681d5aaep11,
+    0x1.0f1fb2p3
+  },
+  { // Entry 2
+    0x1.0000000000000000000c87785d6188p0,
+    -0x1.405f90p-38
+  },
+  { // Entry 3
+    0x1.0000000000000000000c87785d6188p0,
+    0x1.405f90p-38
+  },
+  { // Entry 4
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    -0x1.561b10p6
+  },
+  { // Entry 5
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    0x1.561b10p6
+  },
+  { // Entry 6
+    0x1.d2f2227ae4dd65b581071b0f40467c30p122,
+    -0x1.576ebcp6
+  },
+  { // Entry 7
+    0x1.d2f2227ae4dd65b581071b0f40467c30p122,
+    0x1.576ebcp6
+  },
+  { // Entry 8
+    0x1.936b41047c7f4ef20acbfc3ab28adde1p7,
+    -0x1.7fff80p2
+  },
+  { // Entry 9
+    0x1.936b41047c7f4ef20acbfc3ab28adde1p7,
+    0x1.7fff80p2
+  },
+  { // Entry 10
+    0x1.0000017f58437ac57be86eaf878afddap0,
+    -0x1.bb06ccp-12
+  },
+  { // Entry 11
+    0x1.0000017f58437ac57be86eaf878afddap0,
+    0x1.bb06ccp-12
+  },
+  { // Entry 12
+    0x1.fbacf4ca702a97945d7c7d78c0bdad47p8,
+    -0x1.bb1240p2
+  },
+  { // Entry 13
+    0x1.fbacf4ca702a97945d7c7d78c0bdad47p8,
+    0x1.bb1240p2
+  },
+  { // Entry 14
+    0x1.0000017fb2c9b9e288983fa06ce62b04p0,
+    -0x1.bb3b18p-12
+  },
+  { // Entry 15
+    0x1.0000017fb2c9b9e288983fa06ce62b04p0,
+    0x1.bb3b18p-12
+  },
+  { // Entry 16
+    0x1.0000070003551fecea0dae6d0551de10p0,
+    -0x1.deef12p-11
+  },
+  { // Entry 17
+    0x1.0000070003551fecea0dae6d0551de10p0,
+    0x1.deef12p-11
+  },
+  { // Entry 18
+    0x1.01fe2b000874d8917b3a73fd080542f7p0,
+    -0x1.fec090p-4
+  },
+  { // Entry 19
+    0x1.01fe2b000874d8917b3a73fd080542f7p0,
+    0x1.fec090p-4
+  },
+  { // Entry 20
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    0x1.p-21
+  },
+  { // Entry 21
+    0x1.0000000000200000000000aaaaaaaaaap0,
+    -0x1.p-21
+  },
+  { // Entry 22
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 23
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 24
+    0x1.0000000000000000000020000080p0,
+    0x1.000002p-41
+  },
+  { // Entry 25
+    0x1.0000000000000000000020000080p0,
+    -0x1.000002p-41
+  },
+  { // Entry 26
+    0x1.749f1f059aafac3e3ae482f732034f99p10,
+    0x1.00000ap3
+  },
+  { // Entry 27
+    0x1.749f1f059aafac3e3ae482f732034f99p10,
+    -0x1.00000ap3
+  },
+  { // Entry 28
+    0x1.080ab13efd4e998566b0693a9a7731a8p0,
+    0x1.00000ep-2
+  },
+  { // Entry 29
+    0x1.080ab13efd4e998566b0693a9a7731a8p0,
+    -0x1.00000ep-2
+  },
+  { // Entry 30
+    0x1.0200ab01986c25f1377dd85169c7ccf5p0,
+    0x1.000010p-3
+  },
+  { // Entry 31
+    0x1.0200ab01986c25f1377dd85169c7ccf5p0,
+    -0x1.000010p-3
+  },
+  { // Entry 32
+    0x1.e190fd0d6db8db09b5aad2f89bb2ad76p1,
+    0x1.000060p1
+  },
+  { // Entry 33
+    0x1.e190fd0d6db8db09b5aad2f89bb2ad76p1,
+    -0x1.000060p1
+  },
+  { // Entry 34
+    0x1.b4f4eaff04f265d5f55aecad94412877p4,
+    0x1.0000f0p2
+  },
+  { // Entry 35
+    0x1.b4f4eaff04f265d5f55aecad94412877p4,
+    -0x1.0000f0p2
+  },
+  { // Entry 36
+    0x1.76112f028a8233c6be52ddd0d11dd50fp10,
+    0x1.001fc2p3
+  },
+  { // Entry 37
+    0x1.76112f028a8233c6be52ddd0d11dd50fp10,
+    -0x1.001fc2p3
+  },
+  { // Entry 38
+    0x1.e203bf2a6f104d990d9610afb6c8b014p1,
+    0x1.0020p1
+  },
+  { // Entry 39
+    0x1.e203bf2a6f104d990d9610afb6c8b014p1,
+    -0x1.0020p1
+  },
+  { // Entry 40
+    0x1.080cc501591cc669c4cc8cd1a5891727p0,
+    0x1.0020f0p-2
+  },
+  { // Entry 41
+    0x1.080cc501591cc669c4cc8cd1a5891727p0,
+    -0x1.0020f0p-2
+  },
+  { // Entry 42
+    0x1.7d15790923fc59b8d7d10a8c5d3adc48p10,
+    0x1.00b8p3
+  },
+  { // Entry 43
+    0x1.7d15790923fc59b8d7d10a8c5d3adc48p10,
+    -0x1.00b8p3
+  },
+  { // Entry 44
+    0x1.00818500020c06cedbd38d34eee6ab54p0,
+    0x1.0179p-4
+  },
+  { // Entry 45
+    0x1.00818500020c06cedbd38d34eee6ab54p0,
+    -0x1.0179p-4
+  },
+  { // Entry 46
+    0x1.8d17e7030b8e9690e01964bd2c8be94bp0,
+    0x1.01bfc2p0
+  },
+  { // Entry 47
+    0x1.8d17e7030b8e9690e01964bd2c8be94bp0,
+    -0x1.01bfc2p0
+  },
+  { // Entry 48
+    0x1.8e34430073e0e9199e68ad3bca9ed793p10,
+    0x1.0220p3
+  },
+  { // Entry 49
+    0x1.8e34430073e0e9199e68ad3bca9ed793p10,
+    -0x1.0220p3
+  },
+  { // Entry 50
+    0x1.93dc630008b669187e515dc7aa42f486p0,
+    0x1.0760p0
+  },
+  { // Entry 51
+    0x1.93dc630008b669187e515dc7aa42f486p0,
+    -0x1.0760p0
+  },
+  { // Entry 52
+    0x1.bf1abedb9fcde794ba793b6b505eb17bp22,
+    0x1.08p4
+  },
+  { // Entry 53
+    0x1.bf1abedb9fcde794ba793b6b505eb17bp22,
+    -0x1.08p4
+  },
+  { // Entry 54
+    0x1.89acdf26f99012ec527c5ea1162aa095p46,
+    0x1.0810eep5
+  },
+  { // Entry 55
+    0x1.89acdf26f99012ec527c5ea1162aa095p46,
+    -0x1.0810eep5
+  },
+  { // Entry 56
+    0x1.9506d202339691daa92242c890d53037p0,
+    0x1.0854p0
+  },
+  { // Entry 57
+    0x1.9506d202339691daa92242c890d53037p0,
+    -0x1.0854p0
+  },
+  { // Entry 58
+    0x1.97a75b0008810be285110dcff331ac17p0,
+    0x1.0a759cp0
+  },
+  { // Entry 59
+    0x1.97a75b0008810be285110dcff331ac17p0,
+    -0x1.0a759cp0
+  },
+  { // Entry 60
+    0x1.a229dffff61e1494787d29ddf23b0a5cp0,
+    0x1.12c4p0
+  },
+  { // Entry 61
+    0x1.a229dffff61e1494787d29ddf23b0a5cp0,
+    -0x1.12c4p0
+  },
+  { // Entry 62
+    0x1.a308650a09916a1f65dd2e3040dac8e6p0,
+    0x1.1370p0
+  },
+  { // Entry 63
+    0x1.a308650a09916a1f65dd2e3040dac8e6p0,
+    -0x1.1370p0
+  },
+  { // Entry 64
+    0x1.af7c88b59f8cb90273d971210f9ebaf1p0,
+    0x1.1cd4p0
+  },
+  { // Entry 65
+    0x1.af7c88b59f8cb90273d971210f9ebaf1p0,
+    -0x1.1cd4p0
+  },
+  { // Entry 66
+    0x1.b145deddd4b7287e0976b134aaea1e59p0,
+    0x1.1e24p0
+  },
+  { // Entry 67
+    0x1.b145deddd4b7287e0976b134aaea1e59p0,
+    -0x1.1e24p0
+  },
+  { // Entry 68
+    0x1.000002802632eecaa00848be2e43e7e8p0,
+    0x1.1e4004p-11
+  },
+  { // Entry 69
+    0x1.000002802632eecaa00848be2e43e7e8p0,
+    -0x1.1e4004p-11
+  },
+  { // Entry 70
+    0x1.00000280ae0c9376d02c0ee2eec07b9cp0,
+    0x1.1e5e62p-11
+  },
+  { // Entry 71
+    0x1.00000280ae0c9376d02c0ee2eec07b9cp0,
+    -0x1.1e5e62p-11
+  },
+  { // Entry 72
+    0x1.000a0d419b4ad7325cced6e3df2432b7p0,
+    0x1.1ef4p-6
+  },
+  { // Entry 73
+    0x1.000a0d419b4ad7325cced6e3df2432b7p0,
+    -0x1.1ef4p-6
+  },
+  { // Entry 74
+    0x1.b267ed723f88f82136ba366db2171548p0,
+    0x1.1ef8p0
+  },
+  { // Entry 75
+    0x1.b267ed723f88f82136ba366db2171548p0,
+    -0x1.1ef8p0
+  },
+  { // Entry 76
+    0x1.d7fd050e42bfb9da524bda1b668ed20ep24,
+    0x1.1f0c1cp4
+  },
+  { // Entry 77
+    0x1.d7fd050e42bfb9da524bda1b668ed20ep24,
+    -0x1.1f0c1cp4
+  },
+  { // Entry 78
+    0x1.02b05b0000fe430b8ec0ab0008934320p0,
+    0x1.2892c0p-3
+  },
+  { // Entry 79
+    0x1.02b05b0000fe430b8ec0ab0008934320p0,
+    -0x1.2892c0p-3
+  },
+  { // Entry 80
+    0x1.b56d7b0019ebe1980a88bfc98b96f903p5,
+    0x1.2c733cp2
+  },
+  { // Entry 81
+    0x1.b56d7b0019ebe1980a88bfc98b96f903p5,
+    -0x1.2c733cp2
+  },
+  { // Entry 82
+    0x1.2dde070027e555af93bf4b3a296fe1e4p0,
+    0x1.2e16d8p-1
+  },
+  { // Entry 83
+    0x1.2dde070027e555af93bf4b3a296fe1e4p0,
+    -0x1.2e16d8p-1
+  },
+  { // Entry 84
+    0x1.0bbbe7000001e6b3b455efdab53e4ee4p0,
+    0x1.34de30p-2
+  },
+  { // Entry 85
+    0x1.0bbbe7000001e6b3b455efdab53e4ee4p0,
+    -0x1.34de30p-2
+  },
+  { // Entry 86
+    0x1.d6daeadc0aa386a2df7fee2f9b758bdbp0,
+    0x1.38p0
+  },
+  { // Entry 87
+    0x1.d6daeadc0aa386a2df7fee2f9b758bdbp0,
+    -0x1.38p0
+  },
+  { // Entry 88
+    0x1.ec7e880bf432acf0cdb3055c89eca119p0,
+    0x1.459506p0
+  },
+  { // Entry 89
+    0x1.ec7e880bf432acf0cdb3055c89eca119p0,
+    -0x1.459506p0
+  },
+  { // Entry 90
+    0x1.9a74150aa235ee7c81eb0c8a84e5756ep2,
+    0x1.45cf6ap1
+  },
+  { // Entry 91
+    0x1.9a74150aa235ee7c81eb0c8a84e5756ep2,
+    -0x1.45cf6ap1
+  },
+  { // Entry 92
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    0x1.4719c6p6
+  },
+  { // Entry 93
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    -0x1.4719c6p6
+  },
+  { // Entry 94
+    0x1.feb75137e73fc5511a1cdda1ce6ea73bp116,
+    0x1.4727cap6
+  },
+  { // Entry 95
+    0x1.feb75137e73fc5511a1cdda1ce6ea73bp116,
+    -0x1.4727cap6
+  },
+  { // Entry 96
+    0x1.392fe100303ac2c0f653a3ac40bb345ep0,
+    0x1.5028p-1
+  },
+  { // Entry 97
+    0x1.392fe100303ac2c0f653a3ac40bb345ep0,
+    -0x1.5028p-1
+  },
+  { // Entry 98
+    0x1.7eca310b2cc18f1b14012b1aba75d191p6,
+    0x1.5046a4p2
+  },
+  { // Entry 99
+    0x1.7eca310b2cc18f1b14012b1aba75d191p6,
+    -0x1.5046a4p2
+  },
+  { // Entry 100
+    0x1.03b968ffff0215bfacc70c1cc8cbeb01p0,
+    0x1.5cea44p-3
+  },
+  { // Entry 101
+    0x1.03b968ffff0215bfacc70c1cc8cbeb01p0,
+    -0x1.5cea44p-3
+  },
+  { // Entry 102
+    0x1.fbdabac97ac130517ca085001de97a8dp6,
+    0x1.625ebcp2
+  },
+  { // Entry 103
+    0x1.fbdabac97ac130517ca085001de97a8dp6,
+    -0x1.625ebcp2
+  },
+  { // Entry 104
+    0x1.ffe308fff60483750a8a66c93e16da96p126,
+    0x1.62e3f6p6
+  },
+  { // Entry 105
+    0x1.ffe308fff60483750a8a66c93e16da96p126,
+    -0x1.62e3f6p6
+  },
+  { // Entry 106
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    0x1.62e4b4p6
+  },
+  { // Entry 107
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    -0x1.62e4b4p6
+  },
+  { // Entry 108
+    0x1.03dd38ffff0116b4128076a495ccd814p0,
+    0x1.636444p-3
+  },
+  { // Entry 109
+    0x1.03dd38ffff0116b4128076a495ccd814p0,
+    -0x1.636444p-3
+  },
+  { // Entry 110
+    0x1.3887c59fb04d434e609610c148d9b8cep127,
+    0x1.63b080p6
+  },
+  { // Entry 111
+    0x1.3887c59fb04d434e609610c148d9b8cep127,
+    -0x1.63b080p6
+  },
+  { // Entry 112
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    0x1.6591c4p6
+  },
+  { // Entry 113
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    -0x1.6591c4p6
+  },
+  { // Entry 114
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    0x1.65a8dap6
+  },
+  { // Entry 115
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    -0x1.65a8dap6
+  },
+  { // Entry 116
+    0x1.00fe75ffffa2579f73eddb26932641adp0,
+    0x1.68d502p-4
+  },
+  { // Entry 117
+    0x1.00fe75ffffa2579f73eddb26932641adp0,
+    -0x1.68d502p-4
+  },
+  { // Entry 118
+    0x1.00000100034d4d82cc659ba42fd9eee7p0,
+    0x1.6a0c3cp-12
+  },
+  { // Entry 119
+    0x1.00000100034d4d82cc659ba42fd9eee7p0,
+    -0x1.6a0c3cp-12
+  },
+  { // Entry 120
+    0x1.0437b0ffff6fc3960703849d04864d19p0,
+    0x1.733eaap-3
+  },
+  { // Entry 121
+    0x1.0437b0ffff6fc3960703849d04864d19p0,
+    -0x1.733eaap-3
+  },
+  { // Entry 122
+    0x1.00045900028b76cee4330cc36105004cp0,
+    0x1.797124p-7
+  },
+  { // Entry 123
+    0x1.00045900028b76cee4330cc36105004cp0,
+    -0x1.797124p-7
+  },
+  { // Entry 124
+    0x1.11aeed0000fda977f1d894606c13127ep0,
+    0x1.7a730cp-2
+  },
+  { // Entry 125
+    0x1.11aeed0000fda977f1d894606c13127ep0,
+    -0x1.7a730cp-2
+  },
+  { // Entry 126
+    0x1.01182efffcd14b33d45c900ed03e5b8dp0,
+    0x1.7a9e50p-4
+  },
+  { // Entry 127
+    0x1.01182efffcd14b33d45c900ed03e5b8dp0,
+    -0x1.7a9e50p-4
+  },
+  { // Entry 128
+    0x1.046a6700030d4af8985007e85b4af3a7p0,
+    0x1.7bd6b6p-3
+  },
+  { // Entry 129
+    0x1.046a6700030d4af8985007e85b4af3a7p0,
+    -0x1.7bd6b6p-3
+  },
+  { // Entry 130
+    0x1.5df91cfff86f7210fa16368df0698fa9p16,
+    0x1.8313eap3
+  },
+  { // Entry 131
+    0x1.5df91cfff86f7210fa16368df0698fa9p16,
+    -0x1.8313eap3
+  },
+  { // Entry 132
+    0x1.049b050001c808a9415533afc7a84886p0,
+    0x1.83e5a8p-3
+  },
+  { // Entry 133
+    0x1.049b050001c808a9415533afc7a84886p0,
+    -0x1.83e5a8p-3
+  },
+  { // Entry 134
+    0x1.04b1a500027f89a1b0fe4148983e18a2p0,
+    0x1.87970cp-3
+  },
+  { // Entry 135
+    0x1.04b1a500027f89a1b0fe4148983e18a2p0,
+    -0x1.87970cp-3
+  },
+  { // Entry 136
+    0x1.982aa4f9d6ecf2daf29ef6311c7db8e1p16,
+    0x1.88p3
+  },
+  { // Entry 137
+    0x1.982aa4f9d6ecf2daf29ef6311c7db8e1p16,
+    -0x1.88p3
+  },
+  { // Entry 138
+    0x1.d501950e8ef23c5acbb78e6bf7a4441cp7,
+    0x1.89a39ep2
+  },
+  { // Entry 139
+    0x1.d501950e8ef23c5acbb78e6bf7a4441cp7,
+    -0x1.89a39ep2
+  },
+  { // Entry 140
+    0x1.dab77d041ed5ae09f1194336e1dfeca4p16,
+    0x1.8cd558p3
+  },
+  { // Entry 141
+    0x1.dab77d041ed5ae09f1194336e1dfeca4p16,
+    -0x1.8cd558p3
+  },
+  { // Entry 142
+    0x1.0013770002a06bda5ded556406e34a54p0,
+    0x1.8f4f3ep-6
+  },
+  { // Entry 143
+    0x1.0013770002a06bda5ded556406e34a54p0,
+    -0x1.8f4f3ep-6
+  },
+  { // Entry 144
+    0x1.014a8c000001724bcf21bcc9cd4ef647p0,
+    0x1.9b3716p-4
+  },
+  { // Entry 145
+    0x1.014a8c000001724bcf21bcc9cd4ef647p0,
+    -0x1.9b3716p-4
+  },
+  { // Entry 146
+    0x1.92c1df0aa08c8949d2dbfb61712636eap3,
+    0x1.9cb164p1
+  },
+  { // Entry 147
+    0x1.92c1df0aa08c8949d2dbfb61712636eap3,
+    -0x1.9cb164p1
+  },
+  { // Entry 148
+    0x1.5b2598fffffe38fde28ab3e6f6c93922p0,
+    0x1.a4299cp-1
+  },
+  { // Entry 149
+    0x1.5b2598fffffe38fde28ab3e6f6c93922p0,
+    -0x1.a4299cp-1
+  },
+  { // Entry 150
+    0x1.056ea5020eb4607e8800e56175b95427p0,
+    0x1.a52932p-3
+  },
+  { // Entry 151
+    0x1.056ea5020eb4607e8800e56175b95427p0,
+    -0x1.a52932p-3
+  },
+  { // Entry 152
+    0x1.16928f0000bf926291ed9efa582cceabp0,
+    0x1.aaeae4p-2
+  },
+  { // Entry 153
+    0x1.16928f0000bf926291ed9efa582cceabp0,
+    -0x1.aaeae4p-2
+  },
+  { // Entry 154
+    0x1.01731affff02859bd1fc2e3d3d5c6afcp0,
+    0x1.b3b0fcp-4
+  },
+  { // Entry 155
+    0x1.01731affff02859bd1fc2e3d3d5c6afcp0,
+    -0x1.b3b0fcp-4
+  },
+  { // Entry 156
+    0x1.fc3b5ac8614a73e8394fe9e1bf341a5dp3,
+    0x1.ba8aa8p1
+  },
+  { // Entry 157
+    0x1.fc3b5ac8614a73e8394fe9e1bf341a5dp3,
+    -0x1.ba8aa8p1
+  },
+  { // Entry 158
+    0x1.fcb698cebefbdde087f940e13637b997p3,
+    0x1.baa9bep1
+  },
+  { // Entry 159
+    0x1.fcb698cebefbdde087f940e13637b997p3,
+    -0x1.baa9bep1
+  },
+  { // Entry 160
+    0x1.0062890000000a2005177a360b8dafadp0,
+    0x1.c12a50p-5
+  },
+  { // Entry 161
+    0x1.0062890000000a2005177a360b8dafadp0,
+    -0x1.c12a50p-5
+  },
+  { // Entry 162
+    0x1.861ce90a2cd945e2796a70034a062f90p1,
+    0x1.c78c2cp0
+  },
+  { // Entry 163
+    0x1.861ce90a2cd945e2796a70034a062f90p1,
+    -0x1.c78c2cp0
+  },
+  { // Entry 164
+    0x1.0000196200326194f36f87a9a10954bcp0,
+    0x1.c7fffep-10
+  },
+  { // Entry 165
+    0x1.0000196200326194f36f87a9a10954bcp0,
+    -0x1.c7fffep-10
+  },
+  { // Entry 166
+    0x1.1a6044ffff019be7fe431534c1e1e91cp0,
+    0x1.ccef52p-2
+  },
+  { // Entry 167
+    0x1.1a6044ffff019be7fe431534c1e1e91cp0,
+    -0x1.ccef52p-2
+  },
+  { // Entry 168
+    0x1.908de10afd9f5aa0badc075a8aa14ccfp1,
+    0x1.ceb1c0p0
+  },
+  { // Entry 169
+    0x1.908de10afd9f5aa0badc075a8aa14ccfp1,
+    -0x1.ceb1c0p0
+  },
+  { // Entry 170
+    0x1.a060ab08be7164a09546b5ce15970e38p1,
+    0x1.d9239cp0
+  },
+  { // Entry 171
+    0x1.a060ab08be7164a09546b5ce15970e38p1,
+    -0x1.d9239cp0
+  },
+  { // Entry 172
+    0x1.d344e10e8bcea00ac4844a3448be9a5ep9,
+    0x1.e21ff0p2
+  },
+  { // Entry 173
+    0x1.d344e10e8bcea00ac4844a3448be9a5ep9,
+    -0x1.e21ff0p2
+  },
+  { // Entry 174
+    0x1.01dbabfffffdc890992101e9e0230177p0,
+    0x1.ed342ap-4
+  },
+  { // Entry 175
+    0x1.01dbabfffffdc890992101e9e0230177p0,
+    -0x1.ed342ap-4
+  },
+  { // Entry 176
+    0x1.75caa702ac31fcaca703cb767e704732p21,
+    0x1.f4169ap3
+  },
+  { // Entry 177
+    0x1.75caa702ac31fcaca703cb767e704732p21,
+    -0x1.f4169ap3
+  },
+  { // Entry 178
+    0x1.2d11ceffa73d603eca961e07fbcd0749p89,
+    0x1.f45dp5
+  },
+  { // Entry 179
+    0x1.2d11ceffa73d603eca961e07fbcd0749p89,
+    -0x1.f45dp5
+  },
+  { // Entry 180
+    0x1.00001f0200613f54e018eaccc7690671p0,
+    0x1.f7fffep-10
+  },
+  { // Entry 181
+    0x1.00001f0200613f54e018eaccc7690671p0,
+    -0x1.f7fffep-10
+  },
+  { // Entry 182
+    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp89,
+    0x1.f896a2p5
+  },
+  { // Entry 183
+    0x1.fe8bfd38762490c7f68e80a4bdf3a17dp89,
+    -0x1.f896a2p5
+  },
+  { // Entry 184
+    0x1.d6cfcac57d6baaa29de57c93e576abc5p1,
+    0x1.f9fffep0
+  },
+  { // Entry 185
+    0x1.d6cfcac57d6baaa29de57c93e576abc5p1,
+    -0x1.f9fffep0
+  },
+  { // Entry 186
+    0x1.ddbfa30e4771719e07c1da78c0971b46p1,
+    0x1.fde37ep0
+  },
+  { // Entry 187
+    0x1.ddbfa30e4771719e07c1da78c0971b46p1,
+    -0x1.fde37ep0
+  },
+  { // Entry 188
+    0x1.007f0aff9995a3000c7c95095a06f71dp0,
+    0x1.fdfffep-5
+  },
+  { // Entry 189
+    0x1.007f0aff9995a3000c7c95095a06f71dp0,
+    -0x1.fdfffep-5
+  },
+  { // Entry 190
+    0x1.207137000101ef6a6756beb0ea45b857p0,
+    0x1.fe3b2ep-2
+  },
+  { // Entry 191
+    0x1.207137000101ef6a6756beb0ea45b857p0,
+    -0x1.fe3b2ep-2
+  },
+  { // Entry 192
+    0x1.6f8f53c3ebac6dfffe8a9b6e088ac07fp10,
+    0x1.ff1ffep2
+  },
+  { // Entry 193
+    0x1.6f8f53c3ebac6dfffe8a9b6e088ac07fp10,
+    -0x1.ff1ffep2
+  },
+  { // Entry 194
+    0x1.b261741c4fb3f1036d9f845f3564af2dp4,
+    0x1.ff3ffep1
+  },
+  { // Entry 195
+    0x1.b261741c4fb3f1036d9f845f3564af2dp4,
+    -0x1.ff3ffep1
+  },
+  { // Entry 196
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    0x1.ffdffep5
+  },
+  { // Entry 197
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    -0x1.ffdffep5
+  },
+  { // Entry 198
+    0x1.e1559d035ec13f82913aeeb61fab20d4p1,
+    0x1.ffe0p0
+  },
+  { // Entry 199
+    0x1.e1559d035ec13f82913aeeb61fab20d4p1,
+    -0x1.ffe0p0
+  },
+  { // Entry 200
+    0x1.1f0508e3c8278fe10a2e8c9020c8176dp45,
+    0x1.fffc7ep4
+  },
+  { // Entry 201
+    0x1.1f0508e3c8278fe10a2e8c9020c8176dp45,
+    -0x1.fffc7ep4
+  },
+  { // Entry 202
+    0x1.0f13feffff8e14e72398e58d6258a1dcp22,
+    0x1.fffcd8p3
+  },
+  { // Entry 203
+    0x1.0f13feffff8e14e72398e58d6258a1dcp22,
+    -0x1.fffcd8p3
+  },
+  { // Entry 204
+    0x1.e18dcd02b202413a4a76037efe716feep1,
+    0x1.fffefep0
+  },
+  { // Entry 205
+    0x1.e18dcd02b202413a4a76037efe716feep1,
+    -0x1.fffefep0
+  },
+  { // Entry 206
+    0x1.1f3661fed887e1ea6b1c49c86e62c65cp45,
+    0x1.ffff3ep4
+  },
+  { // Entry 207
+    0x1.1f3661fed887e1ea6b1c49c86e62c65cp45,
+    -0x1.ffff3ep4
+  },
+  { // Entry 208
+    0x1.20ac14ff94619db4d2e40af1cf118f50p0,
+    0x1.ffffe6p-2
+  },
+  { // Entry 209
+    0x1.20ac14ff94619db4d2e40af1cf118f50p0,
+    -0x1.ffffe6p-2
+  },
+  { // Entry 210
+    0x1.000001fffff8aaaaad6c16d05ca5ba42p0,
+    0x1.fffffcp-12
+  },
+  { // Entry 211
+    0x1.000001fffff8aaaaad6c16d05ca5ba42p0,
+    -0x1.fffffcp-12
+  },
+  { // Entry 212
+    0x1.1c74a6ffff27037aed89be799ae87d89p0,
+    0x1.de7314p-2
+  },
+  { // Entry 213
+    0x1.1c74a6ffff27037aed89be799ae87d89p0,
+    -0x1.de7314p-2
+  },
+  { // Entry 214
+    0x1.p0,
+    0.0
+  },
+  { // Entry 215
+    0x1.00a7413964dddf629669c3500f708459p0,
+    0x1.24924ap-4
+  },
+  { // Entry 216
+    0x1.00a7413964dddf629669c3500f708459p0,
+    -0x1.24924ap-4
+  },
+  { // Entry 217
+    0x1.029ddf71e67714aabadecb6c34881466p0,
+    0x1.24924ap-3
+  },
+  { // Entry 218
+    0x1.029ddf71e67714aabadecb6c34881466p0,
+    -0x1.24924ap-3
+  },
+  { // Entry 219
+    0x1.05e66b72f920ca534e1daa0b86a4e7ebp0,
+    0x1.b6db70p-3
+  },
+  { // Entry 220
+    0x1.05e66b72f920ca534e1daa0b86a4e7ebp0,
+    -0x1.b6db70p-3
+  },
+  { // Entry 221
+    0x1.0a852f7ad288abd0695c503777bc0195p0,
+    0x1.24924ap-2
+  },
+  { // Entry 222
+    0x1.0a852f7ad288abd0695c503777bc0195p0,
+    -0x1.24924ap-2
+  },
+  { // Entry 223
+    0x1.10803510fe36a3f7c842ab6a75c8b006p0,
+    0x1.6db6dcp-2
+  },
+  { // Entry 224
+    0x1.10803510fe36a3f7c842ab6a75c8b006p0,
+    -0x1.6db6dcp-2
+  },
+  { // Entry 225
+    0x1.17df4cc2d21000190b5383b6becd7becp0,
+    0x1.b6db6ep-2
+  },
+  { // Entry 226
+    0x1.17df4cc2d21000190b5383b6becd7becp0,
+    -0x1.b6db6ep-2
+  },
+  { // Entry 227
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 228
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 229
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 230
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 231
+    0x1.2af217eb37e2369650003997bb02d72cp0,
+    0x1.24924ap-1
+  },
+  { // Entry 232
+    0x1.2af217eb37e2369650003997bb02d72cp0,
+    -0x1.24924ap-1
+  },
+  { // Entry 233
+    0x1.36beb7b3f8f237e48efcda7fba85def5p0,
+    0x1.492494p-1
+  },
+  { // Entry 234
+    0x1.36beb7b3f8f237e48efcda7fba85def5p0,
+    -0x1.492494p-1
+  },
+  { // Entry 235
+    0x1.442162b93f2d4967b2bac87d988998cap0,
+    0x1.6db6dep-1
+  },
+  { // Entry 236
+    0x1.442162b93f2d4967b2bac87d988998cap0,
+    -0x1.6db6dep-1
+  },
+  { // Entry 237
+    0x1.532b9688fe84749d71a9627934d00a05p0,
+    0x1.924928p-1
+  },
+  { // Entry 238
+    0x1.532b9688fe84749d71a9627934d00a05p0,
+    -0x1.924928p-1
+  },
+  { // Entry 239
+    0x1.63f0fa1d8b27abf7928a83538f1fb402p0,
+    0x1.b6db72p-1
+  },
+  { // Entry 240
+    0x1.63f0fa1d8b27abf7928a83538f1fb402p0,
+    -0x1.b6db72p-1
+  },
+  { // Entry 241
+    0x1.7687778b78c8571fbd5f4165fc052aefp0,
+    0x1.db6dbcp-1
+  },
+  { // Entry 242
+    0x1.7687778b78c8571fbd5f4165fc052aefp0,
+    -0x1.db6dbcp-1
+  },
+  { // Entry 243
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 244
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 245
+    0x1.p0,
+    0.0
+  },
+  { // Entry 246
+    0x1.0009a148a4a36317b768fa180d3b7eb3p0,
+    0x1.18de5ap-6
+  },
+  { // Entry 247
+    0x1.0009a148a4a36317b768fa180d3b7eb3p0,
+    -0x1.18de5ap-6
+  },
+  { // Entry 248
+    0x1.002685dc0bfd9abdddd455b13ea887d9p0,
+    0x1.18de5ap-5
+  },
+  { // Entry 249
+    0x1.002685dc0bfd9abdddd455b13ea887d9p0,
+    -0x1.18de5ap-5
+  },
+  { // Entry 250
+    0x1.0056afe719b255038e559e394cf4b79ep0,
+    0x1.a54d88p-5
+  },
+  { // Entry 251
+    0x1.0056afe719b255038e559e394cf4b79ep0,
+    -0x1.a54d88p-5
+  },
+  { // Entry 252
+    0x1.009a2308369a4cbf9683178ebb9d9c79p0,
+    0x1.18de5ap-4
+  },
+  { // Entry 253
+    0x1.009a2308369a4cbf9683178ebb9d9c79p0,
+    -0x1.18de5ap-4
+  },
+  { // Entry 254
+    0x1.00f0e45304846d3a9b651810b40ff363p0,
+    0x1.5f15f0p-4
+  },
+  { // Entry 255
+    0x1.00f0e45304846d3a9b651810b40ff363p0,
+    -0x1.5f15f0p-4
+  },
+  { // Entry 256
+    0x1.015afa4e6af7cc67145b966628015d41p0,
+    0x1.a54d86p-4
+  },
+  { // Entry 257
+    0x1.015afa4e6af7cc67145b966628015d41p0,
+    -0x1.a54d86p-4
+  },
+  { // Entry 258
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    0x1.eb851cp-4
+  },
+  { // Entry 259
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    -0x1.eb851cp-4
+  },
+  { // Entry 260
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    0x1.eb851ep-4
+  },
+  { // Entry 261
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    -0x1.eb851ep-4
+  },
+  { // Entry 262
+    0x1.02068cf11e341bea4584e926b9b87a5cp0,
+    0x1.01767ep-3
+  },
+  { // Entry 263
+    0x1.02068cf11e341bea4584e926b9b87a5cp0,
+    -0x1.01767ep-3
+  },
+  { // Entry 264
+    0x1.0236d50ea15f24974c4f2f784695f8f3p0,
+    0x1.0d2a6cp-3
+  },
+  { // Entry 265
+    0x1.0236d50ea15f24974c4f2f784695f8f3p0,
+    -0x1.0d2a6cp-3
+  },
+  { // Entry 266
+    0x1.026945bd2fc314aa539bd2b0a1344e6ap0,
+    0x1.18de5ap-3
+  },
+  { // Entry 267
+    0x1.026945bd2fc314aa539bd2b0a1344e6ap0,
+    -0x1.18de5ap-3
+  },
+  { // Entry 268
+    0x1.029ddf68b9ecab97a543140ab7bc196ap0,
+    0x1.249248p-3
+  },
+  { // Entry 269
+    0x1.029ddf68b9ecab97a543140ab7bc196ap0,
+    -0x1.249248p-3
+  },
+  { // Entry 270
+    0x1.02d4a281cfc743376f69f8b9b0167a5ep0,
+    0x1.304636p-3
+  },
+  { // Entry 271
+    0x1.02d4a281cfc743376f69f8b9b0167a5ep0,
+    -0x1.304636p-3
+  },
+  { // Entry 272
+    0x1.030d8f7da18db0864f478300e780a951p0,
+    0x1.3bfa24p-3
+  },
+  { // Entry 273
+    0x1.030d8f7da18db0864f478300e780a951p0,
+    -0x1.3bfa24p-3
+  },
+  { // Entry 274
+    0x1.0348a6d600c50ac4ab832e474121e8b1p0,
+    0x1.47ae12p-3
+  },
+  { // Entry 275
+    0x1.0348a6d600c50ac4ab832e474121e8b1p0,
+    -0x1.47ae12p-3
+  },
+  { // Entry 276
+    0x1.0348a6e049689d30b2d20b0135f3fee4p0,
+    0x1.47ae14p-3
+  },
+  { // Entry 277
+    0x1.0348a6e049689d30b2d20b0135f3fee4p0,
+    -0x1.47ae14p-3
+  },
+  { // Entry 278
+    0x1.0a19d6dfd42b9ebd573de2bdeff3362ep0,
+    0x1.1eb852p-2
+  },
+  { // Entry 279
+    0x1.0a19d6dfd42b9ebd573de2bdeff3362ep0,
+    -0x1.1eb852p-2
+  },
+  { // Entry 280
+    0x1.14c128bc2baac3f4f83f16b43fc69324p0,
+    0x1.99999ap-2
+  },
+  { // Entry 281
+    0x1.14c128bc2baac3f4f83f16b43fc69324p0,
+    -0x1.99999ap-2
+  },
+  { // Entry 282
+    0x1.2365ee3fd57c998640a3796967b6c022p0,
+    0x1.0a3d70p-1
+  },
+  { // Entry 283
+    0x1.2365ee3fd57c998640a3796967b6c022p0,
+    -0x1.0a3d70p-1
+  },
+  { // Entry 284
+    0x1.363e33f5565998f1b5221773f03eea8bp0,
+    0x1.47ae14p-1
+  },
+  { // Entry 285
+    0x1.363e33f5565998f1b5221773f03eea8bp0,
+    -0x1.47ae14p-1
+  },
+  { // Entry 286
+    0x1.4d8f8734eeb43c686239fc3930bfba17p0,
+    0x1.851eb8p-1
+  },
+  { // Entry 287
+    0x1.4d8f8734eeb43c686239fc3930bfba17p0,
+    -0x1.851eb8p-1
+  },
+  { // Entry 288
+    0x1.69aff7bc5d60108b348ed38b803eb445p0,
+    0x1.c28f5cp-1
+  },
+  { // Entry 289
+    0x1.69aff7bc5d60108b348ed38b803eb445p0,
+    -0x1.c28f5cp-1
+  },
+  { // Entry 290
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 291
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 292
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 293
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 294
+    0x1.96953e5f15bebb0924d95e56e73390d3p3,
+    0x1.9de826p1
+  },
+  { // Entry 295
+    0x1.96953e5f15bebb0924d95e56e73390d3p3,
+    -0x1.9de826p1
+  },
+  { // Entry 296
+    0x1.d9a541d64593911611959440ebb98fd2p6,
+    0x1.5de826p2
+  },
+  { // Entry 297
+    0x1.d9a541d64593911611959440ebb98fd2p6,
+    -0x1.5de826p2
+  },
+  { // Entry 298
+    0x1.144daf73b05567a8ab0aec06359687bap10,
+    0x1.ecdc38p2
+  },
+  { // Entry 299
+    0x1.144daf73b05567a8ab0aec06359687bap10,
+    -0x1.ecdc38p2
+  },
+  { // Entry 300
+    0x1.425f2a5819d974b4f9180a62110d48cbp13,
+    0x1.3de826p3
+  },
+  { // Entry 301
+    0x1.425f2a5819d974b4f9180a62110d48cbp13,
+    -0x1.3de826p3
+  },
+  { // Entry 302
+    0x1.781f001bd3e350656b057368a4313822p16,
+    0x1.856230p3
+  },
+  { // Entry 303
+    0x1.781f001bd3e350656b057368a4313822p16,
+    -0x1.856230p3
+  },
+  { // Entry 304
+    0x1.b6d506c59eb76d627415a6c9ee480b4fp19,
+    0x1.ccdc3ap3
+  },
+  { // Entry 305
+    0x1.b6d506c59eb76d627415a6c9ee480b4fp19,
+    -0x1.ccdc3ap3
+  },
+  { // Entry 306
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 307
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 308
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    0x1.62e42cp3
+  },
+  { // Entry 309
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    -0x1.62e42cp3
+  },
+  { // Entry 310
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    0x1.62e42ep3
+  },
+  { // Entry 311
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    -0x1.62e42ep3
+  },
+  { // Entry 312
+    0x1.00000083e30886362db194a7754d1c73p15,
+    0x1.62e430p3
+  },
+  { // Entry 313
+    0x1.00000083e30886362db194a7754d1c73p15,
+    -0x1.62e430p3
+  },
+  { // Entry 314
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 315
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    -0x1.62e42cp2
+  },
+  { // Entry 316
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    0x1.62e42ep2
+  },
+  { // Entry 317
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    -0x1.62e42ep2
+  },
+  { // Entry 318
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    0x1.62e430p2
+  },
+  { // Entry 319
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    -0x1.62e430p2
+  },
+  { // Entry 320
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    0x1.62e42cp1
+  },
+  { // Entry 321
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    -0x1.62e42cp1
+  },
+  { // Entry 322
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    0x1.62e42ep1
+  },
+  { // Entry 323
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    -0x1.62e42ep1
+  },
+  { // Entry 324
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    0x1.62e430p1
+  },
+  { // Entry 325
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    -0x1.62e430p1
+  },
+  { // Entry 326
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    0x1.62e42cp0
+  },
+  { // Entry 327
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    -0x1.62e42cp0
+  },
+  { // Entry 328
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    0x1.62e42ep0
+  },
+  { // Entry 329
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    -0x1.62e42ep0
+  },
+  { // Entry 330
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    0x1.62e430p0
+  },
+  { // Entry 331
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    -0x1.62e430p0
+  },
+  { // Entry 332
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    0x1.62e42cp-1
+  },
+  { // Entry 333
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    -0x1.62e42cp-1
+  },
+  { // Entry 334
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 335
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    -0x1.62e42ep-1
+  },
+  { // Entry 336
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    0x1.62e430p-1
+  },
+  { // Entry 337
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    -0x1.62e430p-1
+  },
+  { // Entry 338
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    0x1.62e42cp-2
+  },
+  { // Entry 339
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    -0x1.62e42cp-2
+  },
+  { // Entry 340
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    0x1.62e42ep-2
+  },
+  { // Entry 341
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    -0x1.62e42ep-2
+  },
+  { // Entry 342
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    0x1.62e430p-2
+  },
+  { // Entry 343
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    -0x1.62e430p-2
+  },
+  { // Entry 344
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    0x1.62e42cp-3
+  },
+  { // Entry 345
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    -0x1.62e42cp-3
+  },
+  { // Entry 346
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    0x1.62e42ep-3
+  },
+  { // Entry 347
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    -0x1.62e42ep-3
+  },
+  { // Entry 348
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    0x1.62e430p-3
+  },
+  { // Entry 349
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    -0x1.62e430p-3
+  },
+  { // Entry 350
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    0x1.62e42cp-4
+  },
+  { // Entry 351
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    -0x1.62e42cp-4
+  },
+  { // Entry 352
+    0x1.00f625552927bf649d646b851be50016p0,
+    0x1.62e42ep-4
+  },
+  { // Entry 353
+    0x1.00f625552927bf649d646b851be50016p0,
+    -0x1.62e42ep-4
+  },
+  { // Entry 354
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    0x1.62e430p-4
+  },
+  { // Entry 355
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    -0x1.62e430p-4
+  },
+  { // Entry 356
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    0x1.62e42cp-5
+  },
+  { // Entry 357
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    -0x1.62e42cp-5
+  },
+  { // Entry 358
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    0x1.62e42ep-5
+  },
+  { // Entry 359
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    -0x1.62e42ep-5
+  },
+  { // Entry 360
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    0x1.62e430p-5
+  },
+  { // Entry 361
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    -0x1.62e430p-5
+  },
+  { // Entry 362
+    0x1.000f60060df0bdbdb94a9aa61dfeb8e8p0,
+    0x1.62e42cp-6
+  },
+  { // Entry 363
+    0x1.000f60060df0bdbdb94a9aa61dfeb8e8p0,
+    -0x1.62e42cp-6
+  },
+  { // Entry 364
+    0x1.000f60063a4e26b757e72d4936a13599p0,
+    0x1.62e42ep-6
+  },
+  { // Entry 365
+    0x1.000f60063a4e26b757e72d4936a13599p0,
+    -0x1.62e42ep-6
+  },
+  { // Entry 366
+    0x1.000f600666ab8ff0fa5bc17ae2cd6176p0,
+    0x1.62e430p-6
+  },
+  { // Entry 367
+    0x1.000f600666ab8ff0fa5bc17ae2cd6176p0,
+    -0x1.62e430p-6
+  },
+  { // Entry 368
+    0x1.00000105c611505e7f74a30e6d20e850p31,
+    -0x1.62e430p4
+  },
+  { // Entry 369
+    0x1.00000105c611505e7f74a30e6d20e850p31,
+    0x1.62e430p4
+  },
+  { // Entry 370
+    0x1.ffffc20b8fe12f121740ea8acb959525p30,
+    -0x1.62e42ep4
+  },
+  { // Entry 371
+    0x1.ffffc20b8fe12f121740ea8acb959525p30,
+    0x1.62e42ep4
+  },
+  { // Entry 372
+    0x1.ffff820b9b9fbc6f5ddabe5f5d55c831p30,
+    -0x1.62e42cp4
+  },
+  { // Entry 373
+    0x1.ffff820b9b9fbc6f5ddabe5f5d55c831p30,
+    0x1.62e42cp4
+  },
+  { // Entry 374
+    0x1.00000083e30886362db194a7754d1c73p15,
+    -0x1.62e430p3
+  },
+  { // Entry 375
+    0x1.00000083e30886362db194a7754d1c73p15,
+    0x1.62e430p3
+  },
+  { // Entry 376
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    -0x1.62e42ep3
+  },
+  { // Entry 377
+    0x1.ffffe107c700d006790970a8222e21d8p14,
+    0x1.62e42ep3
+  },
+  { // Entry 378
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    -0x1.62e42cp3
+  },
+  { // Entry 379
+    0x1.ffffc107c9f093819e76e37c08510f7cp14,
+    0x1.62e42cp3
+  },
+  { // Entry 380
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    -0x1.62e430p2
+  },
+  { // Entry 381
+    0x1.000100417142c97af25aac1bff8f3466p7,
+    0x1.62e430p2
+  },
+  { // Entry 382
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    -0x1.62e42ep2
+  },
+  { // Entry 383
+    0x1.0000f8417960be0c77cfbad2eff76201p7,
+    0x1.62e42ep2
+  },
+  { // Entry 384
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    -0x1.62e42cp2
+  },
+  { // Entry 385
+    0x1.0000f04181beb2dc0da3230eba1ddad8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 386
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    -0x1.62e430p1
+  },
+  { // Entry 387
+    0x1.0100002098095950f9e2bbfefca756b6p3,
+    0x1.62e430p1
+  },
+  { // Entry 388
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    -0x1.62e42ep1
+  },
+  { // Entry 389
+    0x1.00fffc249810ddeb04d17e9fa71cc514p3,
+    0x1.62e42ep1
+  },
+  { // Entry 390
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    -0x1.62e42cp1
+  },
+  { // Entry 391
+    0x1.00fff82898287284d209c2639aecd8ebp3,
+    0x1.62e42cp1
+  },
+  { // Entry 392
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    -0x1.62e430p0
+  },
+  { // Entry 393
+    0x1.1000000f569afc6c199c8b3f61f3c735p1,
+    0x1.62e430p0
+  },
+  { // Entry 394
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    -0x1.62e42ep0
+  },
+  { // Entry 395
+    0x1.0ffffe2f569cf9a7ca3f579d60a5bafap1,
+    0x1.62e42ep0
+  },
+  { // Entry 396
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    -0x1.62e42cp0
+  },
+  { // Entry 397
+    0x1.0ffffc4f56a336e3739f7e70b0a17ffcp1,
+    0x1.62e42cp0
+  },
+  { // Entry 398
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    -0x1.62e430p-1
+  },
+  { // Entry 399
+    0x1.4000000622a464e8fbafe4c819d39acfp0,
+    0x1.62e430p-1
+  },
+  { // Entry 400
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    -0x1.62e42ep-1
+  },
+  { // Entry 401
+    0x1.3fffff4622a4faaf3eeaf3be7155a93cp0,
+    0x1.62e42ep-1
+  },
+  { // Entry 402
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    -0x1.62e42cp-1
+  },
+  { // Entry 403
+    0x1.3ffffe8622a6d075816c2559de31a12ep0,
+    0x1.62e42cp-1
+  },
+  { // Entry 404
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    -0x1.62e430p-2
+  },
+  { // Entry 405
+    0x1.0f876ccf6901ca1e9e402d45dcdd46afp0,
+    0x1.62e430p-2
+  },
+  { // Entry 406
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    -0x1.62e42ep-2
+  },
+  { // Entry 407
+    0x1.0f876ca227c51ce5c5f21e4840d6475ap0,
+    0x1.62e42ep-2
+  },
+  { // Entry 408
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    -0x1.62e42cp-2
+  },
+  { // Entry 409
+    0x1.0f876c74e688b38ec8cc993bed72c369p0,
+    0x1.62e42cp-2
+  },
+  { // Entry 410
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    -0x1.62e430p-3
+  },
+  { // Entry 411
+    0x1.03da6eb75435163c736156d1d3d3308ep0,
+    0x1.62e430p-3
+  },
+  { // Entry 412
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    -0x1.62e42ep-3
+  },
+  { // Entry 413
+    0x1.03da6eac2ed8a2cdd0fa87a50311cc5dp0,
+    0x1.62e42ep-3
+  },
+  { // Entry 414
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    -0x1.62e42cp-3
+  },
+  { // Entry 415
+    0x1.03da6ea1097c3f9cd57e7b65bc92ecc4p0,
+    0x1.62e42cp-3
+  },
+  { // Entry 416
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    -0x1.62e430p-4
+  },
+  { // Entry 417
+    0x1.00f62557efd38b8308897136ee1d709ep0,
+    0x1.62e430p-4
+  },
+  { // Entry 418
+    0x1.00f625552927bf649d646b851be50016p0,
+    -0x1.62e42ep-4
+  },
+  { // Entry 419
+    0x1.00f625552927bf649d646b851be50016p0,
+    0x1.62e42ep-4
+  },
+  { // Entry 420
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    -0x1.62e42cp-4
+  },
+  { // Entry 421
+    0x1.00f62552627bf74a0ad4ba77e8ab78a2p0,
+    0x1.62e42cp-4
+  },
+  { // Entry 422
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    -0x1.62e430p-5
+  },
+  { // Entry 423
+    0x1.003d81f26437ea4cf042fce94792844bp0,
+    0x1.62e430p-5
+  },
+  { // Entry 424
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    -0x1.62e42ep-5
+  },
+  { // Entry 425
+    0x1.003d81f1b2b79cf13e8af72bdc1a3a96p0,
+    0x1.62e42ep-5
+  },
+  { // Entry 426
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    -0x1.62e42cp-5
+  },
+  { // Entry 427
+    0x1.003d81f101375095ca54e321283ef77bp0,
+    0x1.62e42cp-5
+  },
+  { // Entry 428
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 429
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 430
+    0x1.p0,
+    0.0
+  },
+  { // Entry 431
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 432
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 433
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    0x1.eb851cp-4
+  },
+  { // Entry 434
+    0x1.01d86cf5a15f8cd3898947526a322461p0,
+    -0x1.eb851cp-4
+  },
+  { // Entry 435
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    0x1.eb851ep-4
+  },
+  { // Entry 436
+    0x1.01d86cf97ac630fce74cd5d5243b3b2fp0,
+    -0x1.eb851ep-4
+  },
+  { // Entry 437
+    0x1.01d86cfd542cd92da6c44a42f7099d65p0,
+    0x1.eb8520p-4
+  },
+  { // Entry 438
+    0x1.01d86cfd542cd92da6c44a42f7099d65p0,
+    -0x1.eb8520p-4
+  },
+  { // Entry 439
+    0x1.20ac181ffb4ceac216e8b489c48dd3dfp0,
+    0x1.fffffep-2
+  },
+  { // Entry 440
+    0x1.20ac181ffb4ceac216e8b489c48dd3dfp0,
+    -0x1.fffffep-2
+  },
+  { // Entry 441
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    0x1.p-1
+  },
+  { // Entry 442
+    0x1.20ac1862ae8d0645823a4f060800e88cp0,
+    -0x1.p-1
+  },
+  { // Entry 443
+    0x1.20ac18e8150e15cd6b3833b87109804fp0,
+    0x1.000002p-1
+  },
+  { // Entry 444
+    0x1.20ac18e8150e15cd6b3833b87109804fp0,
+    -0x1.000002p-1
+  },
+  { // Entry 445
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    0x1.fffffep-1
+  },
+  { // Entry 446
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    -0x1.fffffep-1
+  },
+  { // Entry 447
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 448
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 449
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    0x1.000002p0
+  },
+  { // Entry 450
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    -0x1.000002p0
+  },
+  { // Entry 451
+    0x1.ab5aa630eb432545b54cdaf7f455210cp30,
+    0x1.5ffffep4
+  },
+  { // Entry 452
+    0x1.ab5aa630eb432545b54cdaf7f455210cp30,
+    -0x1.5ffffep4
+  },
+  { // Entry 453
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    0x1.60p4
+  },
+  { // Entry 454
+    0x1.ab5adb9c435ff81e18afca372828a676p30,
+    -0x1.60p4
+  },
+  { // Entry 455
+    0x1.ab5b1107a22a3664ed2273254e849a81p30,
+    0x1.600002p4
+  },
+  { // Entry 456
+    0x1.ab5b1107a22a3664ed2273254e849a81p30,
+    -0x1.600002p4
+  },
+  { // Entry 457
+    0x1.226aceedc3b97c2a7eac95e7562be263p32,
+    0x1.6ffffep4
+  },
+  { // Entry 458
+    0x1.226aceedc3b97c2a7eac95e7562be263p32,
+    -0x1.6ffffep4
+  },
+  { // Entry 459
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    0x1.70p4
+  },
+  { // Entry 460
+    0x1.226af33b1fdc0a57bd4b4ab2311b5cdfp32,
+    -0x1.70p4
+  },
+  { // Entry 461
+    0x1.226b178880884451e86af2dfaf4ed9e0p32,
+    0x1.700002p4
+  },
+  { // Entry 462
+    0x1.226b178880884451e86af2dfaf4ed9e0p32,
+    -0x1.700002p4
+  },
+  { // Entry 463
+    0x1.ffff8188b8b99accb59239a999795cedp22,
+    0x1.0a2b20p4
+  },
+  { // Entry 464
+    0x1.ffff8188b8b99accb59239a999795cedp22,
+    -0x1.0a2b20p4
+  },
+  { // Entry 465
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 466
+    0x1.ffffc188aceab11124fe9a02b928f7d8p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 467
+    0x1.000000c4548de32ddb90a7e53a66ba0ap23,
+    0x1.0a2b24p4
+  },
+  { // Entry 468
+    0x1.000000c4548de32ddb90a7e53a66ba0ap23,
+    -0x1.0a2b24p4
+  },
+  { // Entry 469
+    0x1.ffffc2c458b36e7e18cb1f214e7b10ffp10,
+    0x1.0a2b20p3
+  },
+  { // Entry 470
+    0x1.ffffc2c458b36e7e18cb1f214e7b10ffp10,
+    -0x1.0a2b20p3
+  },
+  { // Entry 471
+    0x1.ffffe2c4559fb3e81fbe2bbb12e12ae1p10,
+    0x1.0a2b22p3
+  },
+  { // Entry 472
+    0x1.ffffe2c4559fb3e81fbe2bbb12e12ae1p10,
+    -0x1.0a2b22p3
+  },
+  { // Entry 473
+    0x1.000001622a45fc9a75838159b3d10509p11,
+    0x1.0a2b24p3
+  },
+  { // Entry 474
+    0x1.000001622a45fc9a75838159b3d10509p11,
+    -0x1.0a2b24p3
+  },
+  { // Entry 475
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 476
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 477
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 478
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 479
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 480
+    HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 481
+    HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 482
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 483
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 484
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 485
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 486
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 487
+    0x1.0000000000000007fffff0000008000ap0,
+    0x1.fffffep-31
+  },
+  { // Entry 488
+    0x1.0000000000000007fffff0000008000ap0,
+    -0x1.fffffep-31
+  },
+  { // Entry 489
+    0x1.0000000000000008000000000000000ap0,
+    0x1.p-30
+  },
+  { // Entry 490
+    0x1.0000000000000008000000000000000ap0,
+    -0x1.p-30
+  },
+  { // Entry 491
+    0x1.0000000000000008000020000020000ap0,
+    0x1.000002p-30
+  },
+  { // Entry 492
+    0x1.0000000000000008000020000020000ap0,
+    -0x1.000002p-30
+  },
+  { // Entry 493
+    0x1.00000001fffffc00aaaca80016c56b8ep0,
+    0x1.fffffep-16
+  },
+  { // Entry 494
+    0x1.00000001fffffc00aaaca80016c56b8ep0,
+    -0x1.fffffep-16
+  },
+  { // Entry 495
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    0x1.p-15
+  },
+  { // Entry 496
+    0x1.0000000200000000aaaaaaaac16c16c1p0,
+    -0x1.p-15
+  },
+  { // Entry 497
+    0x1.0000000200000800aab2b00016d16d27p0,
+    0x1.000002p-15
+  },
+  { // Entry 498
+    0x1.0000000200000800aab2b00016d16d27p0,
+    -0x1.000002p-15
+  },
+  { // Entry 499
+    0x1.0008000a9ab0306483e877d147f6d18ap0,
+    0x1.fffffep-7
+  },
+  { // Entry 500
+    0x1.0008000a9ab0306483e877d147f6d18ap0,
+    -0x1.fffffep-7
+  },
+  { // Entry 501
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    0x1.p-6
+  },
+  { // Entry 502
+    0x1.0008000aaab05b0750755149bcdca034p0,
+    -0x1.p-6
+  },
+  { // Entry 503
+    0x1.0008000acab0b07ceb0f063ba7bbfa54p0,
+    0x1.000002p-6
+  },
+  { // Entry 504
+    0x1.0008000acab0b07ceb0f063ba7bbfa54p0,
+    -0x1.000002p-6
+  },
+  { // Entry 505
+    0x1.002000aa6c14187902aad2ffba74cf2cp0,
+    0x1.fffffep-6
+  },
+  { // Entry 506
+    0x1.002000aa6c14187902aad2ffba74cf2cp0,
+    -0x1.fffffep-6
+  },
+  { // Entry 507
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    0x1.p-5
+  },
+  { // Entry 508
+    0x1.002000aaac16c30c31eaf1bbb1901947p0,
+    -0x1.p-5
+  },
+  { // Entry 509
+    0x1.002000ab2c1c18f2a86baf44b183af72p0,
+    0x1.000002p-5
+  },
+  { // Entry 510
+    0x1.002000ab2c1c18f2a86baf44b183af72p0,
+    -0x1.000002p-5
+  },
+  { // Entry 511
+    0x1.00800aaa05874ed7b7cf8f4b5e6fdb38p0,
+    0x1.fffffep-5
+  },
+  { // Entry 512
+    0x1.00800aaa05874ed7b7cf8f4b5e6fdb38p0,
+    -0x1.fffffep-5
+  },
+  { // Entry 513
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    0x1.p-4
+  },
+  { // Entry 514
+    0x1.00800aab05b1fb245198050937bb0368p0,
+    -0x1.p-4
+  },
+  { // Entry 515
+    0x1.00800aad060756bf0548f2962af04df6p0,
+    0x1.000002p-4
+  },
+  { // Entry 516
+    0x1.00800aad060756bf0548f2962af04df6p0,
+    -0x1.000002p-4
+  },
+  { // Entry 517
+    0x1.0200aabd6b0bbcb062a61f361828f822p0,
+    0x1.fffffep-4
+  },
+  { // Entry 518
+    0x1.0200aabd6b0bbcb062a61f361828f822p0,
+    -0x1.fffffep-4
+  },
+  { // Entry 519
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    0x1.p-3
+  },
+  { // Entry 520
+    0x1.0200aac16db6edec960cd51207e46c1ep0,
+    -0x1.p-3
+  },
+  { // Entry 521
+    0x1.0200aac9730d5c7d04db61f9275b83fap0,
+    0x1.000002p-3
+  },
+  { // Entry 522
+    0x1.0200aac9730d5c7d04db61f9275b83fap0,
+    -0x1.000002p-3
+  },
+  { // Entry 523
+    0x1.080ab04c7b478d4cb3110d491046c9c9p0,
+    0x1.fffffep-3
+  },
+  { // Entry 524
+    0x1.080ab04c7b478d4cb3110d491046c9c9p0,
+    -0x1.fffffep-3
+  },
+  { // Entry 525
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    0x1.p-2
+  },
+  { // Entry 526
+    0x1.080ab05ca6145edcde90399c8713a384p0,
+    -0x1.p-2
+  },
+  { // Entry 527
+    0x1.080ab07cfbae337f36a0f41414d9d0c8p0,
+    0x1.000002p-2
+  },
+  { // Entry 528
+    0x1.080ab07cfbae337f36a0f41414d9d0c8p0,
+    -0x1.000002p-2
+  },
+  { // Entry 529
+    0x1.e18f9d3eb3b30ed6335c902418fb7234p1,
+    0x1.fffffep0
+  },
+  { // Entry 530
+    0x1.e18f9d3eb3b30ed6335c902418fb7234p1,
+    -0x1.fffffep0
+  },
+  { // Entry 531
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    0x1.p1
+  },
+  { // Entry 532
+    0x1.e18fa0df2d9bc29327f717774d0c0661p1,
+    -0x1.p1
+  },
+  { // Entry 533
+    0x1.e18fa8202183bcc8aa243133423f76ffp1,
+    0x1.000002p1
+  },
+  { // Entry 534
+    0x1.e18fa8202183bcc8aa243133423f76ffp1,
+    -0x1.000002p1
+  },
+  { // Entry 535
+    0x1.b4ee7ebb55f4cbc854b082e732092507p4,
+    0x1.fffffep1
+  },
+  { // Entry 536
+    0x1.b4ee7ebb55f4cbc854b082e732092507p4,
+    -0x1.fffffep1
+  },
+  { // Entry 537
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    0x1.p2
+  },
+  { // Entry 538
+    0x1.b4ee858de3e80061c6a51dddf960f317p4,
+    -0x1.p2
+  },
+  { // Entry 539
+    0x1.b4ee93330020564e2251f0a10e247060p4,
+    0x1.000002p2
+  },
+  { // Entry 540
+    0x1.b4ee93330020564e2251f0a10e247060p4,
+    -0x1.000002p2
+  },
+  { // Entry 541
+    0x1.749e9eeeffed4d8079070cc441b07e51p10,
+    0x1.fffffep2
+  },
+  { // Entry 542
+    0x1.749e9eeeffed4d8079070cc441b07e51p10,
+    -0x1.fffffep2
+  },
+  { // Entry 543
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    0x1.p3
+  },
+  { // Entry 544
+    0x1.749eaa93f4e76110d5a587e50e4d3dc3p10,
+    -0x1.p3
+  },
+  { // Entry 545
+    0x1.749ec1dddff2ff3467178750bda1362bp10,
+    0x1.000002p3
+  },
+  { // Entry 546
+    0x1.749ec1dddff2ff3467178750bda1362bp10,
+    -0x1.000002p3
+  },
+  { // Entry 547
+    0x1.0f2eac1794bcba9969899739333d575dp22,
+    0x1.fffffep3
+  },
+  { // Entry 548
+    0x1.0f2eac1794bcba9969899739333d575dp22,
+    -0x1.fffffep3
+  },
+  { // Entry 549
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    0x1.p4
+  },
+  { // Entry 550
+    0x1.0f2ebd0a8005cb3d9b4f414186aba4d7p22,
+    -0x1.p4
+  },
+  { // Entry 551
+    0x1.0f2edef059c578ce114742bef842a70bp22,
+    0x1.000002p4
+  },
+  { // Entry 552
+    0x1.0f2edef059c578ce114742bef842a70bp22,
+    -0x1.000002p4
+  },
+  { // Entry 553
+    0x1.1f43d8dc3908b8ed87a5abe34855b461p45,
+    0x1.fffffep4
+  },
+  { // Entry 554
+    0x1.1f43d8dc3908b8ed87a5abe34855b461p45,
+    -0x1.fffffep4
+  },
+  { // Entry 555
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    0x1.p5
+  },
+  { // Entry 556
+    0x1.1f43fcc4b662c7d8478840268449bc25p45,
+    -0x1.p5
+  },
+  { // Entry 557
+    0x1.1f444495be8e1616a1e5e396b9caac6bp45,
+    0x1.000002p5
+  },
+  { // Entry 558
+    0x1.1f444495be8e1616a1e5e396b9caac6bp45,
+    -0x1.000002p5
+  },
+  { // Entry 559
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    0x1.fffffep5
+  },
+  { // Entry 560
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    -0x1.fffffep5
+  },
+  { // Entry 561
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.p6
+  },
+  { // Entry 562
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.p6
+  },
+  { // Entry 563
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    0x1.000002p6
+  },
+  { // Entry 564
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    -0x1.000002p6
+  },
+  { // Entry 565
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 566
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 567
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 568
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 569
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 570
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 571
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 572
+    0x1.72f14a1ced856a7e65c1607d36ef64b3p3,
+    0x1.921fb6p1
+  },
+  { // Entry 573
+    0x1.412cc380da7cb6987dff68ad77932f5dp1,
+    0x1.921fb6p0
+  },
+  { // Entry 574
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    0x1.000002p0
+  },
+  { // Entry 575
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    0x1.p0
+  },
+  { // Entry 576
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    0x1.fffffep-1
+  },
+  { // Entry 577
+    0x1.5319951fdd08d95643a6762c2beffae2p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 578
+    0x1.p0,
+    0x1.000002p-126
+  },
+  { // Entry 579
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 580
+    0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 581
+    0x1.p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 582
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 583
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 584
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 585
+    0x1.p0,
+    -0.0f
+  },
+  { // Entry 586
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 587
+    0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 588
+    0x1.p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 589
+    0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 590
+    0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 591
+    0x1.p0,
+    -0x1.000002p-126
+  },
+  { // Entry 592
+    0x1.5319951fdd08d95643a6762c2beffae2p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 593
+    0x1.8b0753f0c559855acf5f13552a0c357bp0,
+    -0x1.fffffep-1
+  },
+  { // Entry 594
+    0x1.8b07551d9f5504c2bd28100196a4f66ap0,
+    -0x1.p0
+  },
+  { // Entry 595
+    0x1.8b0757775350a4a8993fc156eb4fc808p0,
+    -0x1.000002p0
+  },
+  { // Entry 596
+    0x1.412cc380da7cb6987dff68ad77932f5dp1,
+    -0x1.921fb6p0
+  },
+  { // Entry 597
+    0x1.72f14a1ced856a7e65c1607d36ef64b3p3,
+    -0x1.921fb6p1
+  },
+  { // Entry 598
+    HUGE_VALF,
+    -0x1.fffffcp127
+  },
+  { // Entry 599
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 600
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 601
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 602
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 603
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 604
+    HUGE_VALF,
+    -0x1.65a9fap6
+  }
+};
diff --git a/tests/math_data/exp2_intel_data.h b/tests/math_data/exp2_intel_data.h
new file mode 100644
index 0000000..51f2690
--- /dev/null
+++ b/tests/math_data/exp2_intel_data.h
@@ -0,0 +1,1342 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_exp2_intel_data[] = {
+  { // Entry 0
+    0x1.7550685a42c638000000000000845a47p0,
+    0x1.16a76ec41b516p-1
+  },
+  { // Entry 1
+    0x1.89d948a94fe16fffffffffffff2cd3bdp0,
+    0x1.3e34fa6ab969ep-1
+  },
+  { // Entry 2
+    0x1.90661da12d5288000000000000b1b5f1p0,
+    0x1.4a63ff1d53f53p-1
+  },
+  { // Entry 3
+    0x1.cd6b37edeceaf7ffffffffffff7681d4p0,
+    0x1.b32a6c92d1185p-1
+  },
+  { // Entry 4
+    0x1.1ba39ff28e3e9fffffffffffffc69c44p1,
+    0x1.25dd9eedac79ap0
+  },
+  { // Entry 5
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    0x1.fffffffe9d1bd010d75fee7817e4dfc0p-1,
+    -0x1.0000000000001p-32
+  },
+  { // Entry 7
+    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
+    -0x1.0000000000001p10
+  },
+  { // Entry 8
+    0x1.fe9d96b2a23d882193f7b993586f2602p-1,
+    -0x1.000000000006ap-8
+  },
+  { // Entry 9
+    0x1.ffffffff8a2a3c157c3b7f18ebab642dp-1025,
+    -0x1.0000000000154p10
+  },
+  { // Entry 10
+    0x1.ea4afa2a47b9bffeb53a92123e2892d5p-1,
+    -0x1.000000001p-4
+  },
+  { // Entry 11
+    0x1.6a09d3c7fa7857ffff5d816eb683ef4bp-1,
+    -0x1.000025fffffafp-1
+  },
+  { // Entry 12
+    0x1.fe9d966c1fb8a82de91ee9a29410d9a9p-1,
+    -0x1.0000330p-8
+  },
+  { // Entry 13
+    0x1.fa764417ff7da7fd252560ea61130296p-1,
+    -0x1.011p-6
+  },
+  { // Entry 14
+    0x1.e3ef96693f8579bbc20fc1cbf9decfc3p-1031,
+    -0x1.01853479d6414p10
+  },
+  { // Entry 15
+    0x1.171354a3dac90fb1c06ced94bc098564p-1058,
+    -0x1.0878080p10
+  },
+  { // Entry 16
+    0x1.00000000018f40b5ed994a2726414d06p-1074,
+    -0x1.0c7fffffffff7p10
+  },
+  { // Entry 17
+    0x1.00000000002c5c85fdf477b662b26945p-1074,
+    -0x1.0c7ffffffffffp10
+  },
+  { // Entry 18
+    0.0,
+    -0x1.0c80000000001p10
+  },
+  { // Entry 19
+    0.0,
+    -0x1.0c80400000001p10
+  },
+  { // Entry 20
+    0.0,
+    -0x1.0cbffffffffffp10
+  },
+  { // Entry 21
+    0.0,
+    -0x1.0ccp10
+  },
+  { // Entry 22
+    0x1.5fa21f48b380a7ff88e685255cd2b0b9p-68,
+    -0x1.0e2b14f637093p6
+  },
+  { // Entry 23
+    0x1.fffff3deb381580911bb0a338d5013d3p-1,
+    -0x1.180p-21
+  },
+  { // Entry 24
+    0x1.f220c9bfc3e5e802d3d2299f1c0cb896p-1,
+    -0x1.44ap-5
+  },
+  { // Entry 25
+    0x1.d2c416640bb58800000302d88dd4794dp-6,
+    -0x1.488a5a88d8627p2
+  },
+  { // Entry 26
+    0x1.7477fe65ed9eb801fb78e9f8195947dep-6,
+    -0x1.5d60a85cec862p2
+  },
+  { // Entry 27
+    0x1.fffffffffe01d7fb1785c9ab108f85f0p-1,
+    -0x1.7p-40
+  },
+  { // Entry 28
+    0x1.f710064ffbdf6800ff354e934260dd45p-1,
+    -0x1.a04p-6
+  },
+  { // Entry 29
+    0x1.81db2699d647e80119a5ff6578562368p-1,
+    -0x1.a1ep-2
+  },
+  { // Entry 30
+    0x1.18a82c07fc46d8033bd0fd06418f1d83p-1,
+    -0x1.bc137c829fe3fp-1
+  },
+  { // Entry 31
+    0x1.ffffd71ab8e1c7ffc23bb97e6431b6fep-1,
+    -0x1.d7ffep-20
+  },
+  { // Entry 32
+    0x1.b23dd2fbd9253801d5963064eb734a2fp-1,
+    -0x1.e6b30cdff66eap-3
+  },
+  { // Entry 33
+    0x1.9afdae5fa109f7fffb555a32c170d8b1p-32,
+    -0x1.f512959c9fef8p4
+  },
+  { // Entry 34
+    0x1.6ae5f40c2d268001595637d720fdaa90p-1,
+    -0x1.fc7f1fc7f1fc8p-2
+  },
+  { // Entry 35
+    0x1.aed49b5eb5803001fcd049a3732b31f0p-1,
+    -0x1.fdfffffffffffp-3
+  },
+  { // Entry 36
+    0x1.0000000d6a752800a91630539c6e7b0fp-1022,
+    -0x1.fefffffff6529p9
+  },
+  { // Entry 37
+    0x1.0000000c0790f7ff6249d8418e1b82c0p-1022,
+    -0x1.fefffffff7529p9
+  },
+  { // Entry 38
+    0x1.5ab07dd4854a1800e36cd5ae47a685bep-256,
+    -0x1.ff1ffffffffffp7
+  },
+  { // Entry 39
+    0x1.6a0bdc4db4d7b1f4e35e43dfc85817a7p-1,
+    -0x1.fff7fffffffffp-2
+  },
+  { // Entry 40
+    0x1.ffffffffffffffffffffffffe9d20bc1p-1,
+    -0x1.fff8e61eadd48p-101
+  },
+  { // Entry 41
+    0x1.ffd3a5705a0a3800003de8f068ba8fddp-1,
+    -0x1.ffff87bffffffp-12
+  },
+  { // Entry 42
+    0x1.fffff4e8de9f48000386a775899517eap-1,
+    -0x1.ffffffff07fffp-22
+  },
+  { // Entry 43
+    0x1.ffffd3a37bee1800966e6c9e9bb48496p-1,
+    -0x1.ffffffff3ffffp-20
+  },
+  { // Entry 44
+    0x1.0000000b561edfff7762203e6d954ab4p-1024,
+    -0x1.fffffffff7d29p9
+  },
+  { // Entry 45
+    0x1.00000004da8277ffff5d73afe24f21c3p-512,
+    -0x1.fffffffff8ff7p8
+  },
+  { // Entry 46
+    0x1.000000003851761b6d88f829becd3315p-1024,
+    -0x1.ffffffffffd76p9
+  },
+  { // Entry 47
+    0x1.000000001e533f989be7040824423450p-1024,
+    -0x1.ffffffffffea2p9
+  },
+  { // Entry 48
+    0x1.000000001111998e372040e1786d816fp-1024,
+    -0x1.fffffffffff3bp9
+  },
+  { // Entry 49
+    0x1.0000000004550915cce8b2fc4d47a539p-1024,
+    -0x1.fffffffffffcep9
+  },
+  { // Entry 50
+    0x1.0000000001fe2804e87d30cf8acc59c7p-1024,
+    -0x1.fffffffffffe9p9
+  },
+  { // Entry 51
+    0x1.0000000001205966f2b5938a5a957ce4p-1024,
+    -0x1.ffffffffffff3p9
+  },
+  { // Entry 52
+    0x1.fffffffffe9d1bd0105cdc21cead428cp-1,
+    -0x1.ffffffffffffep-41
+  },
+  { // Entry 53
+    0x1.ffffffffffa746f404171ff8a52bae95p-1,
+    -0x1.ffffffffffffep-43
+  },
+  { // Entry 54
+    0x1.0000000000162e42fefa3ae53369388cp-1024,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 55
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 56
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 57
+    0x1.00000000b17217f80f4f00c1ff23da21p0,
+    0x1.0000000000001p-32
+  },
+  { // Entry 58
+    0x1.00000000b17217f80f4f434cc820f6eep0,
+    0x1.0000000000007p-32
+  },
+  { // Entry 59
+    0x1.02c9a3e7780fe800c728e7d486fcf31cp0,
+    0x1.0000000003838p-6
+  },
+  { // Entry 60
+    0x1.6a09e66cc184b000004ee13300eefeedp0,
+    0x1.00000009cd189p-1
+  },
+  { // Entry 61
+    0x1.00b1afde7b1cb801287776b699278174p0,
+    0x1.000051bcd60e7p-8
+  },
+  { // Entry 62
+    0x1.0058c89a0da927ffd4f54c7681eb068dp0,
+    0x1.00007ffffffaep-9
+  },
+  { // Entry 63
+    0x1.059b67dbb73747ffc7559f37ef913157p0,
+    0x1.000ffffc0p-5
+  },
+  { // Entry 64
+    0x1.6b14ea048ba6b4a8a77fd275a20dcb27p0,
+    0x1.022p-1
+  },
+  { // Entry 65
+    0x1.002d711c9fe27ffffff45a9e519be99fp0,
+    0x1.0624de0b877a9p-10
+  },
+  { // Entry 66
+    0x1.002d711dd65f77fffff9a30e18baff60p0,
+    0x1.0624e50a0bee1p-10
+  },
+  { // Entry 67
+    0x1.002d711f4c5b7800000671d15bb60667p0,
+    0x1.0624ed76bb986p-10
+  },
+  { // Entry 68
+    0x1.1a7c0713c14c2fffff5e7085d7140701p4,
+    0x1.0916fbd16a4a4p2
+  },
+  { // Entry 69
+    0x1.0005f0eeca476ff5746e77918f305622p0,
+    0x1.1244912449101p-13
+  },
+  { // Entry 70
+    0x1.7550685a42c638000000000000845a47p0,
+    0x1.16a76ec41b516p-1
+  },
+  { // Entry 71
+    0x1.76e219f44e8077fffbf691327e18a6a6p0,
+    0x1.19c09494b839ep-1
+  },
+  { // Entry 72
+    0x1.3738d72e851d08007f94aec04e720143p0,
+    0x1.2090482412080p-2
+  },
+  { // Entry 73
+    0x1.5ebcb0c3a5e8cfffff403cfc89af025dp2,
+    0x1.3a24bc9f747a4p1
+  },
+  { // Entry 74
+    0x1.eff948ab8687f801d8c0b52d4fd1abc4p4,
+    0x1.3d104d551d81cp2
+  },
+  { // Entry 75
+    0x1.f662aa67062f68312afcbb64ee7a0cacp19,
+    0x1.3f8ffa3f6c716p4
+  },
+  { // Entry 76
+    0x1.3dc642457d0857ff16fb3b9bc0c86814p1,
+    0x1.4fd6031ce2f59p0
+  },
+  { // Entry 77
+    0x1.0000000075571ffffe9287b8913490cap0,
+    0x1.529297e4d4730p-33
+  },
+  { // Entry 78
+    0x1.428a2f98d728980287cd19f22ba23342p0,
+    0x1.555555555554fp-2
+  },
+  { // Entry 79
+    0x1.0792c37435e5b801a9bae4219f11a6a9p0,
+    0x1.588f0a4eac13ep-5
+  },
+  { // Entry 80
+    0x1.e0eaa5e12b62b7feff0ae982bc9b0e20p2,
+    0x1.746f2dac4c4aep1
+  },
+  { // Entry 81
+    0x1.e8f597a375b908310b9fd1892b940fddp2,
+    0x1.777f3eb118644p1
+  },
+  { // Entry 82
+    0x1.e212d1cd92af580000065ae4d335fcd5p5,
+    0x1.7a70623a65055p2
+  },
+  { // Entry 83
+    0x1.6e176769832437ff0078b13791381962p1,
+    0x1.841c84bf02c93p0
+  },
+  { // Entry 84
+    0x1.0000000010e578000152b56232aab68ep0,
+    0x1.86055129c133fp-36
+  },
+  { // Entry 85
+    0x1.1f98e30b070717f047944e564fb68949p6,
+    0x1.8abef85ac27cap2
+  },
+  { // Entry 86
+    0x1.29f209f62cd1bfffffb442fc666ab002p6,
+    0x1.8e0287eb30572p2
+  },
+  { // Entry 87
+    0x1.2e6eb60fef9e9801a703d7b8b727760dp50,
+    0x1.91ec7b1ec7c3dp5
+  },
+  { // Entry 88
+    0x1.125fbee3a8f4b000006b01ac6c39fae3p0,
+    0x1.999999b6966b1p-4
+  },
+  { // Entry 89
+    0x1.125fbef60d23f7fffff990af4ad356dep0,
+    0x1.99999b42b010ep-4
+  },
+  { // Entry 90
+    0x1.2df89d68ecd817feffbc8a02489a2c31p3,
+    0x1.9e7f87cd813d0p1
+  },
+  { // Entry 91
+    0x1.7b0837a01c4bf7fffb4b24ca92057ec8p844,
+    0x1.a64878765d9c6p9
+  },
+  { // Entry 92
+    0x1.279417bd1ee58000d657c88e959aa30ap0,
+    0x1.a8cp-3
+  },
+  { // Entry 93
+    0x1.24e4cfa950d85801e4e97cf588eae855p858,
+    0x1.ad18dca75151cp9
+  },
+  { // Entry 94
+    0x1.c9d7d9b687fd58033eb56233acd2e743p858,
+    0x1.ad6b5ad6b5ad6p9
+  },
+  { // Entry 95
+    0x1.099ad18ba452580179e84b9f367c24fcp0,
+    0x1.b34cc4566d0b8p-5
+  },
+  { // Entry 96
+    0x1.75db048626cc9801fdd8328e5e7c2ed3p55,
+    0x1.bc5ee5fb5abdfp5
+  },
+  { // Entry 97
+    0x1.04eb9df9467ea8006ec2ae40fe4aa9a2p0,
+    0x1.c20p-6
+  },
+  { // Entry 98
+    0x1.7336a662f7a3080000321c761912bb4dp3,
+    0x1.c49f19020be99p1
+  },
+  { // Entry 99
+    0x1.00051180218ca7fffffa98a0aca1602bp0,
+    0x1.d3f4cfa7e9e54p-14
+  },
+  { // Entry 100
+    0x1.0000146bb81ea0003b62e3d6d908a708p0,
+    0x1.d76p-20
+  },
+  { // Entry 101
+    0x1.e7ede8155f4148013c4232abc7194d4dp0,
+    0x1.dc6e371b8dcp-1
+  },
+  { // Entry 102
+    0x1.e96b5624c8f3e80004759e1237e298dfp1,
+    0x1.ef57627bcd18dp0
+  },
+  { // Entry 103
+    0x1.661bd0e767ee37ffff6f19dcbf13f733p0,
+    0x1.efe02bcccc3e0p-2
+  },
+  { // Entry 104
+    0x1.0b216e27ad0157ffb7b07aee744bc64bp0,
+    0x1.f70p-5
+  },
+  { // Entry 105
+    0x1.fbda9b237a1437feffee12944ccc2abep1,
+    0x1.fcff3fcff3fccp0
+  },
+  { // Entry 106
+    0x1.f0f5d9e1ab4cc825f655007e8ce8352fp7,
+    0x1.fd3f46397c92cp2
+  },
+  { // Entry 107
+    0x1.fc52e836980af7fffb69887832df36bep1,
+    0x1.fd56b236e47b0p0
+  },
+  { // Entry 108
+    0x1.fe974a46f07b082d32ce3627adbe734bp1,
+    0x1.fefb71b3e5192p0
+  },
+  { // Entry 109
+    0x1.30558126879a682ff3f16fbfef12a959p0,
+    0x1.fefffffffffffp-3
+  },
+  { // Entry 110
+    0x1.ea4afa2a3e59980143381c0d66f06241p511,
+    0x1.ffeffffffff7fp8
+  },
+  { // Entry 111
+    0x1.ffd9308364f08f6f2617da7d0b994aeep1023,
+    0x1.fffff1fffffffp9
+  },
+  { // Entry 112
+    0x1.ffffffffaa55e7ffffaa8e6b5f871352p0,
+    0x1.ffffffff84699p-1
+  },
+  { // Entry 113
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 115
+    0x1.7b29358d41a6466f059badebc0f3ef2ap-1,
+    -0x1.bbbbbbbbbbbbcp-2
+  },
+  { // Entry 116
+    0x1.8d17d2b770067dd0b560997d709462f2p-1,
+    -0x1.7777777777778p-2
+  },
+  { // Entry 117
+    0x1.9fdf8bcce533d3850499cd91b4fe1b45p-1,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 118
+    0x1.b38aa5682153ea10ec6aaf03b1e19a17p-1,
+    -0x1.ddddddddddde0p-3
+  },
+  { // Entry 119
+    0x1.c823e074ec128dd3e5a22665f53de430p-1,
+    -0x1.5555555555558p-3
+  },
+  { // Entry 120
+    0x1.ddb680117ab119ddf7de23abf70a974ap-1,
+    -0x1.999999999999fp-4
+  },
+  { // Entry 121
+    0x1.f44e4fb6c55d6f8461f0c24a6561e8cfp-1,
+    -0x1.111111111111cp-5
+  },
+  { // Entry 122
+    0x1.05fbd4d5b4d597517f2f14990c7c1d74p0,
+    0x1.1111111111106p-5
+  },
+  { // Entry 123
+    0x1.125fbee250663e39a600925ecaf87e7ap0,
+    0x1.9999999999994p-4
+  },
+  { // Entry 124
+    0x1.1f59ac3c7d6bf83c0aac08f864d917a0p0,
+    0x1.5555555555552p-3
+  },
+  { // Entry 125
+    0x1.2cf0b5245e8f288fd79fb13137352d3cp0,
+    0x1.ddddddddddddap-3
+  },
+  { // Entry 126
+    0x1.3b2c47bff8328699545ebbc1b8224569p0,
+    0x1.3333333333331p-2
+  },
+  { // Entry 127
+    0x1.4a142c2b2e71dbfc2b446735ddfe02fep0,
+    0x1.7777777777775p-2
+  },
+  { // Entry 128
+    0x1.59b088b8f29ed26e4afc853d2242f3dcp0,
+    0x1.bbbbbbbbbbbb9p-2
+  },
+  { // Entry 129
+    0x1.6a09e667f3bcbd45589bc56188452388p0,
+    0x1.ffffffffffffdp-2
+  },
+  { // Entry 130
+    0x1.p48,
+    0x1.8p5
+  },
+  { // Entry 131
+    0x1.51cb453b953666ae8a73c377e704a131p48,
+    0x1.8333333333333p5
+  },
+  { // Entry 132
+    0x1.bdb8cdadbe110aebd2ba26668f1a053fp48,
+    0x1.8666666666666p5
+  },
+  { // Entry 133
+    0x1.2611186bae6654d144153826a8cbde6ap49,
+    0x1.8999999999999p5
+  },
+  { // Entry 134
+    0x1.8406003b2ae41864a49eea54994df36fp49,
+    0x1.8ccccccccccccp5
+  },
+  { // Entry 135
+    0x1.fffffffffffd3a37a020b8c4054cb869p49,
+    0x1.8ffffffffffffp5
+  },
+  { // Entry 136
+    0x1.51cb453b953492665c6d2fb15083f6e2p50,
+    0x1.9333333333332p5
+  },
+  { // Entry 137
+    0x1.bdb8cdadbe0ea104fa428cab0d5125a2p50,
+    0x1.9666666666665p5
+  },
+  { // Entry 138
+    0x1.2611186bae64bd27820627b1e4c3f179p51,
+    0x1.9999999999998p5
+  },
+  { // Entry 139
+    0x1.8406003b2ae1fe7a7a4c90ae9e7a858ep51,
+    0x1.9cccccccccccbp5
+  },
+  { // Entry 140
+    0x1.fffffffffffa746f4041718be29130c3p51,
+    0x1.9fffffffffffep5
+  },
+  { // Entry 141
+    0x1.p-52,
+    -0x1.ap5
+  },
+  { // Entry 142
+    0x1.51cb453b953666ae8a73c377e704a131p-52,
+    -0x1.9cccccccccccdp5
+  },
+  { // Entry 143
+    0x1.bdb8cdadbe110aebd2ba26668f1a053fp-52,
+    -0x1.999999999999ap5
+  },
+  { // Entry 144
+    0x1.2611186bae6654d144153826a8cbde6ap-51,
+    -0x1.9666666666667p5
+  },
+  { // Entry 145
+    0x1.8406003b2ae41864a49eea54994df36fp-51,
+    -0x1.9333333333334p5
+  },
+  { // Entry 146
+    0x1.fffffffffffd3a37a020b8c4054cb869p-51,
+    -0x1.9000000000001p5
+  },
+  { // Entry 147
+    0x1.51cb453b953492665c6d2fb15083f6e2p-50,
+    -0x1.8cccccccccccep5
+  },
+  { // Entry 148
+    0x1.bdb8cdadbe0ea104fa428cab0d5125a2p-50,
+    -0x1.899999999999bp5
+  },
+  { // Entry 149
+    0x1.2611186bae64bd27820627b1e4c3f179p-49,
+    -0x1.8666666666668p5
+  },
+  { // Entry 150
+    0x1.8406003b2ae1fe7a7a4c90ae9e7a858ep-49,
+    -0x1.8333333333335p5
+  },
+  { // Entry 151
+    0x1.fffffffffffa746f4041718be29130c3p-49,
+    -0x1.8000000000002p5
+  },
+  { // Entry 152
+    0x1.p768,
+    0x1.8p9
+  },
+  { // Entry 153
+    0x1.p-896,
+    -0x1.cp9
+  },
+  { // Entry 154
+    HUGE_VAL,
+    0x1.4p12
+  },
+  { // Entry 155
+    0.0,
+    -0x1.6p12
+  },
+  { // Entry 156
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 157
+    0x1.p-1074,
+    -0x1.0c8p10
+  },
+  { // Entry 158
+    0x1.ffffffffffa746f404171ff3199aeed7p-1025,
+    -0x1.0000000000001p10
+  },
+  { // Entry 159
+    0x1.p-1024,
+    -0x1.0p10
+  },
+  { // Entry 160
+    0x1.0000000000162e42fefa3ae53369388cp-1024,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 161
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp-513,
+    -0x1.0000000000001p9
+  },
+  { // Entry 162
+    0x1.p-512,
+    -0x1.0p9
+  },
+  { // Entry 163
+    0x1.00000000000b17217f7d1d351a389d40p-512,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 164
+    0x1.ffffffffffe9d1bd0105c68bc97ec194p-257,
+    -0x1.0000000000001p8
+  },
+  { // Entry 165
+    0x1.p-256,
+    -0x1.0p8
+  },
+  { // Entry 166
+    0x1.0000000000058b90bfbe8e8b2d3d4edep-256,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 167
+    0x1.fffffffffff4e8de8082e32725016147p-129,
+    -0x1.0000000000001p7
+  },
+  { // Entry 168
+    0x1.p-128,
+    -0x1.0p7
+  },
+  { // Entry 169
+    0x1.000000000002c5c85fdf4741bea6e77fp-128,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 170
+    0x1.fffffffffffa746f4041718be29130c3p-65,
+    -0x1.0000000000001p6
+  },
+  { // Entry 171
+    0x1.p-64,
+    -0x1.0p6
+  },
+  { // Entry 172
+    0x1.00000000000162e42fefa39fe95583c3p-64,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 173
+    0x1.fffffffffffd3a37a020b8c4054cb869p-33,
+    -0x1.0000000000001p5
+  },
+  { // Entry 174
+    0x1.p-32,
+    -0x1.0p5
+  },
+  { // Entry 175
+    0x1.000000000000b17217f7d1cfb72b45e2p-32,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 176
+    0x1.fffffffffffe9d1bd0105c6187a76436p-17,
+    -0x1.0000000000001p4
+  },
+  { // Entry 177
+    0x1.p-16,
+    -0x1.0p4
+  },
+  { // Entry 178
+    0x1.00000000000058b90bfbe8e7cc35c3f1p-16,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 179
+    0x1.ffffffffffff4e8de8082e30a513f41bp-9,
+    -0x1.0000000000001p3
+  },
+  { // Entry 180
+    0x1.p-8,
+    -0x1.0p3
+  },
+  { // Entry 181
+    0x1.0000000000002c5c85fdf473e242ea38p-8,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 182
+    0x1.ffffffffffffa746f40417184ada0a8ep-5,
+    -0x1.0000000000001p2
+  },
+  { // Entry 183
+    0x1.p-4,
+    -0x1.0p2
+  },
+  { // Entry 184
+    0x1.000000000000162e42fefa39f02b772cp-4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 185
+    0x1.ffffffffffffd3a37a020b8c23810967p-3,
+    -0x1.0000000000001p1
+  },
+  { // Entry 186
+    0x1.p-2,
+    -0x1.0p1
+  },
+  { // Entry 187
+    0x1.0000000000000b17217f7d1cf7d83c1ap-2,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 188
+    0x1.ffffffffffffe9d1bd0105c6114585bbp-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 189
+    0x1.p-1,
+    -0x1.0p0
+  },
+  { // Entry 190
+    0x1.000000000000058b90bfbe8e7bdcbe2ep-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 191
+    0x1.ffffffffffe9d1bd0105c68bc97ec194p511,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 192
+    0x1.p512,
+    0x1.0p9
+  },
+  { // Entry 193
+    0x1.0000000000162e42fefa3ae53369388cp512,
+    0x1.0000000000001p9
+  },
+  { // Entry 194
+    0x1.fffffffffff4e8de8082e32725016147p255,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 195
+    0x1.p256,
+    0x1.0p8
+  },
+  { // Entry 196
+    0x1.00000000000b17217f7d1d351a389d40p256,
+    0x1.0000000000001p8
+  },
+  { // Entry 197
+    0x1.fffffffffffa746f4041718be29130c3p127,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 198
+    0x1.p128,
+    0x1.0p7
+  },
+  { // Entry 199
+    0x1.0000000000058b90bfbe8e8b2d3d4edep128,
+    0x1.0000000000001p7
+  },
+  { // Entry 200
+    0x1.fffffffffffd3a37a020b8c4054cb869p63,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 201
+    0x1.p64,
+    0x1.0p6
+  },
+  { // Entry 202
+    0x1.000000000002c5c85fdf4741bea6e77fp64,
+    0x1.0000000000001p6
+  },
+  { // Entry 203
+    0x1.fffffffffffe9d1bd0105c6187a76436p31,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 204
+    0x1.p32,
+    0x1.0p5
+  },
+  { // Entry 205
+    0x1.00000000000162e42fefa39fe95583c3p32,
+    0x1.0000000000001p5
+  },
+  { // Entry 206
+    0x1.ffffffffffff4e8de8082e30a513f41bp15,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 207
+    0x1.p16,
+    0x1.0p4
+  },
+  { // Entry 208
+    0x1.000000000000b17217f7d1cfb72b45e2p16,
+    0x1.0000000000001p4
+  },
+  { // Entry 209
+    0x1.ffffffffffffa746f40417184ada0a8ep7,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 210
+    0x1.p8,
+    0x1.0p3
+  },
+  { // Entry 211
+    0x1.00000000000058b90bfbe8e7cc35c3f1p8,
+    0x1.0000000000001p3
+  },
+  { // Entry 212
+    0x1.ffffffffffffd3a37a020b8c23810967p3,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 213
+    0x1.p4,
+    0x1.0p2
+  },
+  { // Entry 214
+    0x1.0000000000002c5c85fdf473e242ea38p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 215
+    0x1.ffffffffffffe9d1bd0105c6114585bbp1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p1
+  },
+  { // Entry 217
+    0x1.000000000000162e42fefa39f02b772cp2,
+    0x1.0000000000001p1
+  },
+  { // Entry 218
+    0x1.fffffffffffff4e8de8082e30884031fp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 219
+    0x1.p1,
+    0x1.0p0
+  },
+  { // Entry 220
+    0x1.0000000000000b17217f7d1cf7d83c1ap1,
+    0x1.0000000000001p0
+  },
+  { // Entry 221
+    0x1.6a09e667f3bcc131216634b8a8ffb7b0p-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 222
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 223
+    0x1.6a09e667f3bcccf47bc582be0b70aea4p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 224
+    0x1.ae89f995ad3ad13ebe2fd437cdc4d86bp-1,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 225
+    0x1.ae89f995ad3ad5e8734d1773205a7fbcp-1,
+    -0x1.0p-2
+  },
+  { // Entry 226
+    0x1.ae89f995ad3ad83d4ddbb910c9aa2c84p-1,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 227
+    0x1.d5818dcfba486fd2c0b58591353e1431p-1,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 228
+    0x1.d5818dcfba48725da05aeb66e0dca9f5p-1,
+    -0x1.0p-3
+  },
+  { // Entry 229
+    0x1.d5818dcfba4873a3102d9e51b6ad4734p-1,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 230
+    0x1.ea4afa2a490d97051edfd6f5de84f1fep-1,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 231
+    0x1.ea4afa2a490d9858f73a18f5db301f86p-1,
+    -0x1.0p-4
+  },
+  { // Entry 232
+    0x1.ea4afa2a490d9902e36739f5d9860ea0p-1,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 233
+    0x1.f50765b6e45405c75396b27147029cc0p-1,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 234
+    0x1.f50765b6e4540674f84b762862baff99p-1,
+    -0x1.0p-5
+  },
+  { // Entry 235
+    0x1.f50765b6e45406cbcaa5d803f0974796p-1,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 236
+    0x1.fa7c1819e90d8291461c9eac38e21676p-1,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 237
+    0x1.fa7c1819e90d82e90a7e74b263c1dc06p-1,
+    -0x1.0p-6
+  },
+  { // Entry 238
+    0x1.fa7c1819e90d8314ecaf5fb57931c482p-1,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 239
+    0x1.fd3c22b8f71f106b3c73a454f80c00ecp-1,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 240
+    0x1.fd3c22b8f71f10975ba4b32bcf3a5e12p-1,
+    -0x1.0p-7
+  },
+  { // Entry 241
+    0x1.fd3c22b8f71f10ad6b3d3a973ad18e15p-1,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 242
+    0x1.fe9d96b2a23d9134414ed15eb175bc62p-1,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 243
+    0x1.fe9d96b2a23d914a6037442fde31baf8p-1,
+    -0x1.0p-8
+  },
+  { // Entry 244
+    0x1.fe9d96b2a23d91556fab7d98748fba9fp-1,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 245
+    0x1.ff4eaca4391b5d982b2a046646772a87p-1,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 246
+    0x1.ff4eaca4391b5da33e743691f7298b12p-1,
+    -0x1.0p-9
+  },
+  { // Entry 247
+    0x1.ff4eaca4391b5da8c8194fa7cf82bb6ep-1,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 248
+    0x1.ffa74ea381efc2121cd91a3e6475a7d8p-1,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 249
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    -0x1.0p-10
+  },
+  { // Entry 250
+    0x1.ffa74ea381efc21a6cc15cead154662dp-1,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 251
+    0x1.fff4e8fd40080cc795b0e5e46a91f0ffp-1,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 252
+    0x1.fff4e8fd40080cc8471f25ef2480b00bp-1,
+    -0x1.0p-13
+  },
+  { // Entry 253
+    0x1.fff4e8fd40080cc89fd645f481780f90p-1,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 254
+    0x1.6a09e667f3bcc51cea30a40fc9c52aecp0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 255
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p-1
+  },
+  { // Entry 256
+    0x1.6a09e667f3bcd0e0448ff2152c56bf1fp0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 257
+    0x1.306fe0a31b7151388348ff0de074c5a3p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 258
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.0p-2
+  },
+  { // Entry 259
+    0x1.306fe0a31b71562aa17cd47554af19b4p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 260
+    0x1.172b83c7d517ad0c7647240cbf259d0dp0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 261
+    0x1.172b83c7d517adcdf7c8c50eb14a7920p0,
+    0x1.0p-3
+  },
+  { // Entry 262
+    0x1.172b83c7d517af50facc07129595c3a8p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 263
+    0x1.0b5586cf9890f5cce4ef0d92edf98f81p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 264
+    0x1.0b5586cf9890f6298b92b71842a98364p0,
+    0x1.0p-4
+  },
+  { // Entry 265
+    0x1.0b5586cf9890f6e2d8da0a22ec09cb7dp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 266
+    0x1.059b0d31585743812721a46bbd07f042p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 267
+    0x1.059b0d31585743ae7c548eb68ca417fep0,
+    0x1.0p-5
+  },
+  { // Entry 268
+    0x1.059b0d315857440926ba634c2bdc7f06p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 269
+    0x1.02c9a3e778060ed08bb2bf3a4c4bffddp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 270
+    0x1.02c9a3e778060ee6f7caca4f7a29bde9p0,
+    0x1.0p-6
+  },
+  { // Entry 271
+    0x1.02c9a3e778060f13cffae079d5e53fd5p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 272
+    0x1.0163da9fb33356cd23daa2a4de92b010p0,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 273
+    0x1.0163da9fb33356d84a66ae336dcdfa40p0,
+    0x1.0p-7
+  },
+  { // Entry 274
+    0x1.0163da9fb33356ee977ec5508c449011p0,
+    0x1.0000000000001p-7
+  },
+  { // Entry 275
+    0x1.00b1afa5abcbed5b9a41071a509ceaf7p0,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 276
+    0x1.00b1afa5abcbed6129ab13ec11dc9544p0,
+    0x1.0p-8
+  },
+  { // Entry 277
+    0x1.00b1afa5abcbed6c487f2d8f945bea39p0,
+    0x1.0000000000001p-8
+  },
+  { // Entry 278
+    0x1.0058c86da1c09e9f385b4a201180af89p0,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 279
+    0x1.0058c86da1c09ea1ff19d294cf2f679cp0,
+    0x1.0p-9
+  },
+  { // Entry 280
+    0x1.0058c86da1c09ea78c96e37e4a8cd7d8p0,
+    0x1.0000000000001p-9
+  },
+  { // Entry 281
+    0x1.002c605e2e8cec4f0a000b089708b90dp0,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 282
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.0p-10
+  },
+  { // Entry 283
+    0x1.002c605e2e8cec5333652948a0596e1cp0,
+    0x1.0000000000001p-10
+  },
+  { // Entry 284
+    0x1.00058ba01fb9f96d404f58b2f213c6ccp0,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 285
+    0x1.00058ba01fb9f96d6cacd4b180917c3ep0,
+    0x1.0p-13
+  },
+  { // Entry 286
+    0x1.00058ba01fb9f96dc567ccae9d8ce721p0,
+    0x1.0000000000001p-13
+  },
+  { // Entry 287
+    0.0,
+    -0x1.0c80000000001p10
+  },
+  { // Entry 288
+    0x1.p-1074,
+    -0x1.0c8p10
+  },
+  { // Entry 289
+    0x1.00000000002c5c85fdf477b662b26945p-1074,
+    -0x1.0c7ffffffffffp10
+  },
+  { // Entry 290
+    0.0,
+    -0x1.0cc0000000001p10
+  },
+  { // Entry 291
+    0.0,
+    -0x1.0ccp10
+  },
+  { // Entry 292
+    0.0,
+    -0x1.0cbffffffffffp10
+  },
+  { // Entry 293
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 294
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 295
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 297
+    0x1.1a6637e666f82e1bf9bdc293e110c586p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 298
+    0x1.d0231bd5e9cfd1c56d8c57fb9adc16e1p-4,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 299
+    0x1.7c3f73e5e9df4955e51db2c96c4cd483p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 300
+    0x1.58b3940afed165e46fbb76d0cb01dd87p-2,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 301
+    0x1.0000000000000b17217f7d1cf7d83c1ap1,
+    0x1.0000000000001p0
+  },
+  { // Entry 302
+    0x1.ffffffffffffe9d1bd0105c6114585bbp-2,
+    -0x1.0000000000001p0
+  },
+  { // Entry 303
+    0x1.p1,
+    0x1.0p0
+  },
+  { // Entry 304
+    0x1.p-1,
+    -0x1.0p0
+  },
+  { // Entry 305
+    0x1.fffffffffffff4e8de8082e30884031fp0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 306
+    0x1.000000000000058b90bfbe8e7bdcbe2ep-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 307
+    0x1.b93bbf8582e129341e24ff465142adfap0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 308
+    0x1.290ee6a5e83cf78da063060a3f50cc7fp-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 309
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 310
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 311
+    0x1.p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 312
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 313
+    0x1.p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 314
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 316
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 317
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 318
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1073
+  },
+  { // Entry 319
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 320
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 321
+    0x1.p0,
+    0.0
+  },
+  { // Entry 322
+    0x1.p0,
+    -0.0
+  },
+  { // Entry 323
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp1023,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 324
+    HUGE_VAL,
+    0x1.0p10
+  },
+  { // Entry 325
+    0x1.p-1022,
+    -0x1.ff0p9
+  },
+  { // Entry 326
+    0x1.ffffffffffd3a37a020b8e0d90ed7f3fp-1023,
+    -0x1.ff00000000001p9
+  },
+  { // Entry 327
+    0x1.p125,
+    0x1.f40p6
+  },
+  { // Entry 328
+    0x1.p-125,
+    -0x1.f40p6
+  },
+  { // Entry 329
+    0x1.p2,
+    0x1.0p1
+  },
+  { // Entry 330
+    0x1.p-2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/exp2f_intel_data.h b/tests/math_data/exp2f_intel_data.h
new file mode 100644
index 0000000..5dc52ac
--- /dev/null
+++ b/tests/math_data/exp2f_intel_data.h
@@ -0,0 +1,1126 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_exp2f_intel_data[] = {
+  { // Entry 0
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0x1.p-128,
+    -0x1.p7
+  },
+  { // Entry 2
+    0x1.fffe9d1c4b0f37f413d44c66c0481834p-129,
+    -0x1.000002p7
+  },
+  { // Entry 3
+    0x1.ae89930028efb7886635034db7054020p-1,
+    -0x1.000160p-2
+  },
+  { // Entry 4
+    0x1.ffa72300006e20fa0359c57f1b36a8e6p-1,
+    -0x1.007ep-10
+  },
+  { // Entry 5
+    0x1.f4f5d8ffcfec5e7b589aa48f5b5d9017p-1,
+    -0x1.019ep-5
+  },
+  { // Entry 6
+    0x1.1c0df9b94df3cdb41628976927bf54e5p-129,
+    -0x1.01b330p7
+  },
+  { // Entry 7
+    0x1.e9f0bd0139ec689f72fb67c4e2ca601cp-1,
+    -0x1.0440p-4
+  },
+  { // Entry 8
+    0x1.5effb0fffd19b4376d4e6ae2b16b3a21p-1,
+    -0x1.16e0p-1
+  },
+  { // Entry 9
+    0x1.d737a7fa4dbf2cfb6dba6ec6817ed03bp-2,
+    -0x1.1ea8p0
+  },
+  { // Entry 10
+    0x1.a4e5b30000f59daf40326c212c5a2fcbp-1,
+    -0x1.2175bcp-2
+  },
+  { // Entry 11
+    0x1.9f7f16feb25f3000d062055413068a97p-19,
+    -0x1.24d228p4
+  },
+  { // Entry 12
+    0x1.00063d164d3512a13946a9d4477d594fp-149,
+    -0x1.29ffeep7
+  },
+  { // Entry 13
+    0.0f,
+    -0x1.2a0002p7
+  },
+  { // Entry 14
+    0.0f,
+    -0x1.2a0004p7
+  },
+  { // Entry 15
+    0.0f,
+    -0x1.2a14c0p7
+  },
+  { // Entry 16
+    0.0f,
+    -0x1.2c000ap7
+  },
+  { // Entry 17
+    0x1.a0d9ecffff19d4152b82c660dc209a77p-1,
+    -0x1.2fbad0p-2
+  },
+  { // Entry 18
+    0x1.c6052f00589d4f803738f8fcf36fa00bp-1,
+    -0x1.6318d0p-3
+  },
+  { // Entry 19
+    0x1.f7cbf0fffe32af4dda01fb5554e5bdd5p-1,
+    -0x1.7dc8e6p-6
+  },
+  { // Entry 20
+    0x1.994b4f09b6ee04bdf5b421d4e95dd38ep-107,
+    -0x1.a94ac2p6
+  },
+  { // Entry 21
+    0x1.9768dd0bafc9d9b1a97a54711d499b74p-4,
+    -0x1.aa326cp1
+  },
+  { // Entry 22
+    0x1.d58197fb38fa3c1fe12e7ad59c08ff21p-8,
+    -0x1.c7fffep2
+  },
+  { // Entry 23
+    0x1.6d7a68b2e47d3110712df2595c91f23cp-1,
+    -0x1.f207fep-2
+  },
+  { // Entry 24
+    0x1.be9e93477301949016bc2c2b50bfe2cap-126,
+    -0x1.f4c9d4p6
+  },
+  { // Entry 25
+    0x1.d61027f7bae9f1964c205dfcbe3f4679p-1,
+    -0x1.f8fe40p-4
+  },
+  { // Entry 26
+    0x1.4c6fea0579dc794e989c3505e39be48fp-127,
+    -0x1.fa7e04p6
+  },
+  { // Entry 27
+    0x1.d5da00fff7fc53eb4fff78cd7d1f080bp-1,
+    -0x1.fba72ap-4
+  },
+  { // Entry 28
+    0x1.05c9d13b70cff2cde5f75b870dacca62p-127,
+    -0x1.fbdef8p6
+  },
+  { // Entry 29
+    0x1.d5d2f0fa1f23ba0b7a06c89cc0128f77p-1,
+    -0x1.fbfffep-4
+  },
+  { // Entry 30
+    0x1.ea5a64f56a7ba762fe38fe8eb4a9dd03p-1,
+    -0x1.fe8c64p-5
+  },
+  { // Entry 31
+    0x1.ea4cccf5323b8c4405f1a736e586738fp-1,
+    -0x1.ffd40cp-5
+  },
+  { // Entry 32
+    0x1.0026deff8e53c240976d296b38100d8ap-16,
+    -0x1.fff8fep3
+  },
+  { // Entry 33
+    0x1.ea4b39f81ba66804ecab3d71073e27b3p-1,
+    -0x1.fff9fep-5
+  },
+  { // Entry 34
+    0x1.007969bfdcbdfb3e58bdf333f53a3c1dp-128,
+    -0x1.fffd44p6
+  },
+  { // Entry 35
+    0x1.0056b360e5a2dfe9ee49875dd529e33bp-128,
+    -0x1.fffe0cp6
+  },
+  { // Entry 36
+    0x1.fff4e90010d7f0f5d5e88ed4851d1542p-1,
+    -0x1.ffff7ep-14
+  },
+  { // Entry 37
+    0x1.001154ba7ed485fbf804cd8280d4ca0fp-128,
+    -0x1.ffff9cp6
+  },
+  { // Entry 38
+    0x1.d58194f64f579173d9ee5d3c576ef523p-1,
+    -0x1.ffffa6p-4
+  },
+  { // Entry 39
+    0x1.f50767075372b29c5577b7a9610f8d69p-1,
+    -0x1.ffffc2p-6
+  },
+  { // Entry 40
+    0x1.6a09f2a8c76a7a3cfef0de81f2b79d8ep-1,
+    -0x1.ffffcep-2
+  },
+  { // Entry 41
+    0x1.ae89fed49903eff01fb8da20ee306a5ep-1,
+    -0x1.ffffdcp-3
+  },
+  { // Entry 42
+    0x1.00533afff5eeac6d2dc9023c0b872bdap1,
+    0x1.0078p0
+  },
+  { // Entry 43
+    0x1.6a4a9ea1370039bb654a21a808d42ea9p0,
+    0x1.0084p-1
+  },
+  { // Entry 44
+    0x1.6c0213db20e12d00b593e21b41ec6f7bp0,
+    0x1.0401e0p-1
+  },
+  { // Entry 45
+    0x1.6d7c62dea2f8a79892ffb0a423c8312dp0,
+    0x1.07p-1
+  },
+  { // Entry 46
+    0x1.02ea9d000ca7a3d1c9f2feff1d75d9e8p0,
+    0x1.0bc2f0p-6
+  },
+  { // Entry 47
+    0x1.78d0620424ed2002d0f36cb6012c092cp0,
+    0x1.1d8cp-1
+  },
+  { // Entry 48
+    0x1.8fbcc30b8a9d1ea185426ae7254fa29ap4,
+    0x1.29256ap2
+  },
+  { // Entry 49
+    0x1.39e44cfffffe38aff28704c732b540fdp0,
+    0x1.2d2eb8p-2
+  },
+  { // Entry 50
+    0x1.9394c50a159080ad377f98e1d382d21ap0,
+    0x1.503cf0p-1
+  },
+  { // Entry 51
+    0x1.96718703f6190777431ca8e9c8d1e441p0,
+    0x1.557558p-1
+  },
+  { // Entry 52
+    0x1.be25dcfffffde8b04e7c7b1baec7abdbp2,
+    0x1.669390p1
+  },
+  { // Entry 53
+    0x1.7ca40f0c7bdc8b5683fc0560c6159f18p24,
+    0x1.892816p4
+  },
+  { // Entry 54
+    0x1.2536aaffff141c8870e8d4c2352e92eap0,
+    0x1.9103c2p-3
+  },
+  { // Entry 55
+    0x1.7ca44ef297d9c32fe00db5598642e868p1,
+    0x1.92819ep0
+  },
+  { // Entry 56
+    0x1.000008ff47d7ee2ce82ae0bdaaa55772p0,
+    0x1.9f5dc8p-21
+  },
+  { // Entry 57
+    0x1.93cdf30bca3f1ccc6eeb23eb6545f0fdp6,
+    0x1.aa14b2p2
+  },
+  { // Entry 58
+    0x1.13252d0000f4b53775393a04dbee6cd3p0,
+    0x1.aa2fc0p-4
+  },
+  { // Entry 59
+    0x1.28eb540000c5e726057f3ee56612a843p0,
+    0x1.b61f44p-3
+  },
+  { // Entry 60
+    0x1.b5fead000022a86ec9bc4232da47f2fbp1,
+    0x1.c65754p0
+  },
+  { // Entry 61
+    0x1.de844cffff0b21e0a471e9d560a514cbp0,
+    0x1.ce0ac0p-1
+  },
+  { // Entry 62
+    0x1.000504ffff072985d71458d5d453850ep0,
+    0x1.cf72b2p-14
+  },
+  { // Entry 63
+    0x1.c1c278fffb6bc7da81e20c43aeb9ce92p1,
+    0x1.d02174p0
+  },
+  { // Entry 64
+    0x1.e1ae78ffff0000b5ca88867f54dcc891p0,
+    0x1.d2e940p-1
+  },
+  { // Entry 65
+    0x1.1535d3000000cd03211e77e8de4eb7d2p0,
+    0x1.d65f1cp-4
+  },
+  { // Entry 66
+    0x1.00051c0000007f998be0d45ef35f3d57p0,
+    0x1.d7be2ep-14
+  },
+  { // Entry 67
+    0x1.f294d4fffeba9ad4fe553bc197fac243p0,
+    0x1.ec62p-1
+  },
+  { // Entry 68
+    0x1.f294d4fffeba9ad4fe553bc197fac243p30,
+    0x1.ef6310p4
+  },
+  { // Entry 69
+    0x1.ea3cb509a95f60a5d4162ea7e476f787p3,
+    0x1.f7faa0p1
+  },
+  { // Entry 70
+    0x1.03343b47502c1f28eb63e7f42392c024p127,
+    0x1.fc1260p6
+  },
+  { // Entry 71
+    0x1.16fc8b0000c873958ce77b558bb04b77p0,
+    0x1.fc1d68p-4
+  },
+  { // Entry 72
+    0x1.69ea89000a943cbb444fe33ef6484b14p0,
+    0x1.ff7ffep-2
+  },
+  { // Entry 73
+    0x1.69f25d08c9bdef92b155047e4e2700f8p0,
+    0x1.ff9ff2p-2
+  },
+  { // Entry 74
+    0x1.ffef58078cd6d0d5f1fe65744c616496p3,
+    0x1.fff9fep1
+  },
+  { // Entry 75
+    0x1.fff37b0a5ebca011d756edb4d62e7666p7,
+    0x1.fffdbep2
+  },
+  { // Entry 76
+    0x1.fffe180726a04201907cd73f88488d80p31,
+    0x1.ffffeap4
+  },
+  { // Entry 77
+    0x1.00000000000000000000000000000b17p0,
+    0x1.fffffcp-117
+  },
+  { // Entry 78
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.p-1
+  },
+  { // Entry 79
+    0x1.7b29357bbc48d2953781228b2e9ba474p-1,
+    -0x1.bbbbbcp-2
+  },
+  { // Entry 80
+    0x1.8d17d292bd084f608099344c40ba156ap-1,
+    -0x1.777778p-2
+  },
+  { // Entry 81
+    0x1.9fdf8b933e38a099e8b275aa655d720dp-1,
+    -0x1.333334p-2
+  },
+  { // Entry 82
+    0x1.b38aa517a000872460ce450b415297eep-1,
+    -0x1.dddde0p-3
+  },
+  { // Entry 83
+    0x1.c823e00b880a561008d5c1556a842a74p-1,
+    -0x1.555558p-3
+  },
+  { // Entry 84
+    0x1.ddb67fb66b77c35102ce41874e657eb6p-1,
+    -0x1.99999ep-4
+  },
+  { // Entry 85
+    0x1.f44e4f6ba2528a510e8a7cb8e11930bdp-1,
+    -0x1.111118p-5
+  },
+  { // Entry 86
+    0x1.05fbd4b8f440f2c1ccdb5cddeff66b41p0,
+    0x1.11110cp-5
+  },
+  { // Entry 87
+    0x1.125fbecf4bc054e03912db82366b6cb5p0,
+    0x1.999998p-4
+  },
+  { // Entry 88
+    0x1.1f59ac1b4b3e82b6e5a66ac50a8857dbp0,
+    0x1.555554p-3
+  },
+  { // Entry 89
+    0x1.2cf0b4f3b26e63c9d3cb40b4bae31586p0,
+    0x1.dddddcp-3
+  },
+  { // Entry 90
+    0x1.3b2c477e6e5f87fea4b02ead824f269ap0,
+    0x1.333332p-2
+  },
+  { // Entry 91
+    0x1.4a142bd74a641ce0ee908779b7d214fcp0,
+    0x1.777776p-2
+  },
+  { // Entry 92
+    0x1.59b088511d77ab47295346cb3a773b28p0,
+    0x1.bbbbbap-2
+  },
+  { // Entry 93
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.fffffep-2
+  },
+  { // Entry 94
+    0x1.p48,
+    0x1.80p5
+  },
+  { // Entry 95
+    0x1.51cb5ca59853a1e54593c77e7eb8db83p48,
+    0x1.833334p5
+  },
+  { // Entry 96
+    0x1.bdb90b780b33357a359a52b9f7ce88d2p48,
+    0x1.866668p5
+  },
+  { // Entry 97
+    0x1.26115591f845278abb13016348ac2f38p49,
+    0x1.89999cp5
+  },
+  { // Entry 98
+    0x1.84066bd07579e097880a08553b47167ap49,
+    0x1.8cccd0p5
+  },
+  { // Entry 99
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp50,
+    0x1.900004p5
+  },
+  { // Entry 100
+    0x1.51cbd1b7c03c121b017b7a63e5e7df2cp50,
+    0x1.933338p5
+  },
+  { // Entry 101
+    0x1.bdb9a5f1f180173634542f42d5122e11p50,
+    0x1.96666cp5
+  },
+  { // Entry 102
+    0x1.2611bb7c8fa36f3a6c96868064ca2d31p51,
+    0x1.9999a0p5
+  },
+  { // Entry 103
+    0x1.8406f24b3ca53ff6aff423c41ab06efap51,
+    0x1.9cccd4p5
+  },
+  { // Entry 104
+    0x1.p52,
+    0x1.a0p5
+  },
+  { // Entry 105
+    0x1.p-52,
+    -0x1.a0p5
+  },
+  { // Entry 106
+    0x1.51cb5ca59853a1e54593c77e7eb8db83p-52,
+    -0x1.9cccccp5
+  },
+  { // Entry 107
+    0x1.bdb90b780b33357a359a52b9f7ce88d2p-52,
+    -0x1.999998p5
+  },
+  { // Entry 108
+    0x1.26115591f845278abb13016348ac2f38p-51,
+    -0x1.966664p5
+  },
+  { // Entry 109
+    0x1.84066bd07579e097880a08553b47167ap-51,
+    -0x1.933330p5
+  },
+  { // Entry 110
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp-50,
+    -0x1.8ffffcp5
+  },
+  { // Entry 111
+    0x1.51cbd1b7c03c121b017b7a63e5e7df2cp-50,
+    -0x1.8cccc8p5
+  },
+  { // Entry 112
+    0x1.bdb9a5f1f180173634542f42d5122e11p-50,
+    -0x1.899994p5
+  },
+  { // Entry 113
+    0x1.2611bb7c8fa36f3a6c96868064ca2d31p-49,
+    -0x1.866660p5
+  },
+  { // Entry 114
+    0x1.8406f24b3ca53ff6aff423c41ab06efap-49,
+    -0x1.83332cp5
+  },
+  { // Entry 115
+    0x1.p-48,
+    -0x1.80p5
+  },
+  { // Entry 116
+    HUGE_VALF,
+    0x1.80p9
+  },
+  { // Entry 117
+    0.0f,
+    -0x1.c0p9
+  },
+  { // Entry 118
+    HUGE_VALF,
+    0x1.40p12
+  },
+  { // Entry 119
+    0.0f,
+    -0x1.60p12
+  },
+  { // Entry 120
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
+    0x1.fffffep6
+  },
+  { // Entry 121
+    0x1.p-149,
+    -0x1.2ap7
+  },
+  { // Entry 122
+    0x1.fffe9d1c4b0f37f413d44c66c0481834p-129,
+    -0x1.000002p7
+  },
+  { // Entry 123
+    0x1.p-128,
+    -0x1.p7
+  },
+  { // Entry 124
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp-128,
+    -0x1.fffffep6
+  },
+  { // Entry 125
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-65,
+    -0x1.000002p6
+  },
+  { // Entry 126
+    0x1.p-64,
+    -0x1.p6
+  },
+  { // Entry 127
+    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p-64,
+    -0x1.fffffep5
+  },
+  { // Entry 128
+    0x1.ffffa746fbb4062677bd0f506f391265p-33,
+    -0x1.000002p5
+  },
+  { // Entry 129
+    0x1.p-32,
+    -0x1.p5
+  },
+  { // Entry 130
+    0x1.0000162e43f4f831060e02d839a9d16dp-32,
+    -0x1.fffffep4
+  },
+  { // Entry 131
+    0x1.ffffd3a37bee075de43d49b9f60d05b0p-17,
+    -0x1.000002p4
+  },
+  { // Entry 132
+    0x1.p-16,
+    -0x1.p4
+  },
+  { // Entry 133
+    0x1.00000b1721bcfc99d9f890ea06911763p-16,
+    -0x1.fffffep3
+  },
+  { // Entry 134
+    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p-9,
+    -0x1.000002p3
+  },
+  { // Entry 135
+    0x1.p-8,
+    -0x1.p3
+  },
+  { // Entry 136
+    0x1.0000058b90cf1e6d97f9ca14dbcc1628p-8,
+    -0x1.fffffep2
+  },
+  { // Entry 137
+    0x1.fffff4e8de9f42a0cf11f7912ea17ee2p-5,
+    -0x1.000002p2
+  },
+  { // Entry 138
+    0x1.p-4,
+    -0x1.p2
+  },
+  { // Entry 139
+    0x1.000002c5c863b73f016468f6bac5ca2cp-4,
+    -0x1.fffffep1
+  },
+  { // Entry 140
+    0x1.fffffa746f47f160fcf890e3b801aeddp-3,
+    -0x1.000002p1
+  },
+  { // Entry 141
+    0x1.p-2,
+    -0x1.p1
+  },
+  { // Entry 142
+    0x1.00000162e430e5a18f6119e3c02282a5p-2,
+    -0x1.fffffep0
+  },
+  { // Entry 143
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p-2,
+    -0x1.000002p0
+  },
+  { // Entry 144
+    0x1.p-1,
+    -0x1.p0
+  },
+  { // Entry 145
+    0x1.000000b1721835514b86e6d96efd1bffp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 146
+    0x1.ffffa746fbb4062677bd0f506f391265p63,
+    0x1.fffffep5
+  },
+  { // Entry 147
+    0x1.p64,
+    0x1.p6
+  },
+  { // Entry 148
+    0x1.000058b91b5bc9ae2eed81e9b7d4cfacp64,
+    0x1.000002p6
+  },
+  { // Entry 149
+    0x1.ffffd3a37bee075de43d49b9f60d05b0p31,
+    0x1.fffffep4
+  },
+  { // Entry 150
+    0x1.p32,
+    0x1.p5
+  },
+  { // Entry 151
+    0x1.00002c5c89d5ec6ca4d7c8acc017b7c9p32,
+    0x1.000002p5
+  },
+  { // Entry 152
+    0x1.ffffe9d1bd7c04bc4825147a8c0e63e3p15,
+    0x1.fffffep3
+  },
+  { // Entry 153
+    0x1.p16,
+    0x1.p4
+  },
+  { // Entry 154
+    0x1.0000162e43f4f831060e02d839a9d16dp16,
+    0x1.000002p4
+  },
+  { // Entry 155
+    0x1.fffff4e8de9f42a0cf11f7912ea17ee2p7,
+    0x1.fffffep2
+  },
+  { // Entry 156
+    0x1.p8,
+    0x1.p3
+  },
+  { // Entry 157
+    0x1.00000b1721bcfc99d9f890ea06911763p8,
+    0x1.000002p3
+  },
+  { // Entry 158
+    0x1.fffffa746f47f160fcf890e3b801aeddp3,
+    0x1.fffffep1
+  },
+  { // Entry 159
+    0x1.p4,
+    0x1.p2
+  },
+  { // Entry 160
+    0x1.0000058b90cf1e6d97f9ca14dbcc1628p4,
+    0x1.000002p2
+  },
+  { // Entry 161
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p1,
+    0x1.fffffep0
+  },
+  { // Entry 162
+    0x1.p2,
+    0x1.p1
+  },
+  { // Entry 163
+    0x1.000002c5c863b73f016468f6bac5ca2cp2,
+    0x1.000002p1
+  },
+  { // Entry 164
+    0x1.fffffe9d1bd08b5b58ee4879a122966ep0,
+    0x1.fffffep-1
+  },
+  { // Entry 165
+    0x1.p1,
+    0x1.p0
+  },
+  { // Entry 166
+    0x1.00000162e430e5a18f6119e3c02282a5p1,
+    0x1.000002p0
+  },
+  { // Entry 167
+    0x1.6a09e56d018a842b90dd06c362fef7adp-1,
+    -0x1.000002p-1
+  },
+  { // Entry 168
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    -0x1.p-1
+  },
+  { // Entry 169
+    0x1.6a09e6e56cd62cb1c0a32dacee6c1513p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 170
+    0x1.ae89f9007697475c5ad3c1ca20c5ef35p-1,
+    -0x1.000002p-2
+  },
+  { // Entry 171
+    0x1.ae89f995ad3ad5e8734d1773205a7fbcp-1,
+    -0x1.p-2
+  },
+  { // Entry 172
+    0x1.ae89f9e0488cb092fcee839efbf3fc4cp-1,
+    -0x1.fffffep-3
+  },
+  { // Entry 173
+    0x1.d5818d7e5e53ccaf85be04f92de7e9bfp-1,
+    -0x1.000002p-3
+  },
+  { // Entry 174
+    0x1.d5818dcfba48725da05aeb66e0dca9f5p-1,
+    -0x1.p-3
+  },
+  { // Entry 175
+    0x1.d5818df86842ca7e21cae1385c97eb97p-1,
+    -0x1.fffffep-4
+  },
+  { // Entry 176
+    0x1.ea4af9ffce0251f017bdb97010c11824p-1,
+    -0x1.000002p-4
+  },
+  { // Entry 177
+    0x1.ea4afa2a490d9858f73a18f5db301f86p-1,
+    -0x1.p-4
+  },
+  { // Entry 178
+    0x1.ea4afa3f86933ceebf0b1d7e2966b3fbp-1,
+    -0x1.fffffep-5
+  },
+  { // Entry 179
+    0x1.f50765a12fbd6e767118fa02bcb3a0d1p-1,
+    -0x1.000002p-5
+  },
+  { // Entry 180
+    0x1.f50765b6e4540674f84b762862baff99p-1,
+    -0x1.p-5
+  },
+  { // Entry 181
+    0x1.f50765c1be9f52ce811823dc464b40d5p-1,
+    -0x1.fffffep-6
+  },
+  { // Entry 182
+    0x1.fa7c180ef0814846b01522e83717ad71p-1,
+    -0x1.000002p-6
+  },
+  { // Entry 183
+    0x1.fa7c1819e90d82e90a7e74b263c1dc06p-1,
+    -0x1.p-6
+  },
+  { // Entry 184
+    0x1.fa7c181f6553a05107e91b90eea42d9dp-1,
+    -0x1.fffffep-7
+  },
+  { // Entry 185
+    0x1.fd3c22b37338eec4260da36a7b7f5bf3p-1,
+    -0x1.000002p-7
+  },
+  { // Entry 186
+    0x1.fd3c22b8f71f10975ba4b32bcf3a5e12p-1,
+    -0x1.p-7
+  },
+  { // Entry 187
+    0x1.fd3c22bbb9122186b26b482799ce40c7p-1,
+    -0x1.fffffep-8
+  },
+  { // Entry 188
+    0x1.fe9d96afde6082f2254715efc5f6ad7ep-1,
+    -0x1.000002p-8
+  },
+  { // Entry 189
+    0x1.fe9d96b2a23d914a6037442fde31baf8p-1,
+    -0x1.p-8
+  },
+  { // Entry 190
+    0x1.fe9d96b4042c1877edacd889b36d1cd5p-1,
+    -0x1.fffffep-9
+  },
+  { // Entry 191
+    0x1.ff4eaca2d6b2175e4332494fb1c24589p-1,
+    -0x1.000002p-9
+  },
+  { // Entry 192
+    0x1.ff4eaca4391b5da33e743691f7298b12p-1,
+    -0x1.p-9
+  },
+  { // Entry 193
+    0x1.ff4eaca4ea5000c618347451421210cbp-1,
+    -0x1.fffffep-10
+  },
+  { // Entry 194
+    0x1.ffa74ea2d09c67341271213869921167p-1,
+    -0x1.000002p-10
+  },
+  { // Entry 195
+    0x1.ffa74ea381efc217a773f15c025f7c0dp-1,
+    -0x1.p-10
+  },
+  { // Entry 196
+    0x1.ffa74ea3da996f8989012938d02dddfep-1,
+    -0x1.fffffep-11
+  },
+  { // Entry 197
+    0x1.fff4e8fd29da44c6f05c4a5baf1c2bedp-1,
+    -0x1.000002p-13
+  },
+  { // Entry 198
+    0x1.fff4e8fd40080cc8471f25ef2480b00bp-1,
+    -0x1.p-13
+  },
+  { // Entry 199
+    0x1.fff4e8fd4b1ef0c8f2dcd0f35ca5afeep-1,
+    -0x1.fffffep-14
+  },
+  { // Entry 200
+    0x1.6a09e5ea7aa390dbf868b7278b744829p0,
+    0x1.fffffep-2
+  },
+  { // Entry 201
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p-1
+  },
+  { // Entry 202
+    0x1.6a09e762e5efbbd7217018250a3ab194p0,
+    0x1.000002p-1
+  },
+  { // Entry 203
+    0x1.306fe06e5a2f2e8c620f7e55cc803dbap0,
+    0x1.fffffep-3
+  },
+  { // Entry 204
+    0x1.306fe0a31b7152de8d5a46305c85edecp0,
+    0x1.p-2
+  },
+  { // Entry 205
+    0x1.306fe10c9df5b6efbd400b7806005fa9p0,
+    0x1.000002p-2
+  },
+  { // Entry 206
+    0x1.172b83afa4e77ab9fb14ed6d59000b58p0,
+    0x1.fffffep-4
+  },
+  { // Entry 207
+    0x1.172b83c7d517adcdf7c8c50eb14a7920p0,
+    0x1.p-3
+  },
+  { // Entry 208
+    0x1.172b83f835781a3f7a959adc6f517010p0,
+    0x1.000002p-3
+  },
+  { // Entry 209
+    0x1.0b5586c403bc8139197ebf6ce09ca7f8p0,
+    0x1.fffffep-5
+  },
+  { // Entry 210
+    0x1.0b5586cf9890f6298b92b71842a98364p0,
+    0x1.p-4
+  },
+  { // Entry 211
+    0x1.0b5586e6c239e18bc2c6e6800e1a354ep0,
+    0x1.000002p-4
+  },
+  { // Entry 212
+    0x1.059b0d2badb0e674d86f3abe58578c7dp0,
+    0x1.fffffep-6
+  },
+  { // Entry 213
+    0x1.059b0d31585743ae7c548eb68ca417fep0,
+    0x1.p-5
+  },
+  { // Entry 214
+    0x1.059b0d3cada3fe80087460f12b3f85d7p0,
+    0x1.000002p-5
+  },
+  { // Entry 215
+    0x1.02c9a3e4aa830d8834bdc95da605d425p0,
+    0x1.fffffep-7
+  },
+  { // Entry 216
+    0x1.02c9a3e778060ee6f7caca4f7a29bde9p0,
+    0x1.p-6
+  },
+  { // Entry 217
+    0x1.02c9a3ed130c11bbcdfd15f6cb45777ap0,
+    0x1.000002p-6
+  },
+  { // Entry 218
+    0x1.0163da9e4e61d5676fd32618f2719b20p0,
+    0x1.fffffep-8
+  },
+  { // Entry 219
+    0x1.0163da9fb33356d84a66ae336dcdfa40p0,
+    0x1.p-7
+  },
+  { // Entry 220
+    0x1.0163daa27cd659bfcb8505a08a66849ap0,
+    0x1.000002p-7
+  },
+  { // Entry 221
+    0x1.00b1afa4f9deabc72f2d49f63a281424p0,
+    0x1.fffffep-9
+  },
+  { // Entry 222
+    0x1.00b1afa5abcbed6129ab13ec11dc9544p0,
+    0x1.p-8
+  },
+  { // Entry 223
+    0x1.00b1afa70fa6709690a3abda4929ec25p0,
+    0x1.000002p-8
+  },
+  { // Entry 224
+    0x1.0058c86d48e8cd9376c92f8fe93335b6p0,
+    0x1.fffffep-10
+  },
+  { // Entry 225
+    0x1.0058c86da1c09ea1ff19d294cf2f679cp0,
+    0x1.p-9
+  },
+  { // Entry 226
+    0x1.0058c86e537040bf6c1a50920426e07fp0,
+    0x1.000002p-9
+  },
+  { // Entry 227
+    0x1.002c605e0228b5b870970538ff3283dcp0,
+    0x1.fffffep-11
+  },
+  { // Entry 228
+    0x1.002c605e2e8cec506d21bfc89a23a010p0,
+    0x1.p-10
+  },
+  { // Entry 229
+    0x1.002c605e875559807d4b02cd5ace5723p0,
+    0x1.000002p-10
+  },
+  { // Entry 230
+    0x1.00058ba01a2e49ed9aec7e37918c1a4ap0,
+    0x1.fffffep-14
+  },
+  { // Entry 231
+    0x1.00058ba01fb9f96d6cacd4b180917c3ep0,
+    0x1.p-13
+  },
+  { // Entry 232
+    0x1.00058ba02ad1586d1089c2dee94ea420p0,
+    0x1.000002p-13
+  },
+  { // Entry 233
+    0.0f,
+    -0x1.2a0002p7
+  },
+  { // Entry 234
+    0x1.p-149,
+    -0x1.2ap7
+  },
+  { // Entry 235
+    0x1.0000b17255775c040618bf4a4ade83fcp-149,
+    -0x1.29fffep7
+  },
+  { // Entry 236
+    0.0f,
+    -0x1.2c0002p7
+  },
+  { // Entry 237
+    0.0f,
+    -0x1.2cp7
+  },
+  { // Entry 238
+    0.0f,
+    -0x1.2bfffep7
+  },
+  { // Entry 239
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 240
+    0.0,
+    -HUGE_VALF
+  },
+  { // Entry 241
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 242
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 243
+    0x1.1a66390580a2c585f3de207decb2766dp3,
+    0x1.921fb6p1
+  },
+  { // Entry 244
+    0x1.d02319fe0cc8c798aae9bec1c301fce2p-4,
+    -0x1.921fb6p1
+  },
+  { // Entry 245
+    0x1.7c3f74a733d032aa52d1a81682e9aa9cp1,
+    0x1.921fb6p0
+  },
+  { // Entry 246
+    0x1.58b3935bc68e5b61b8988445da3312edp-2,
+    -0x1.921fb6p0
+  },
+  { // Entry 247
+    0x1.00000162e430e5a18f6119e3c02282a5p1,
+    0x1.000002p0
+  },
+  { // Entry 248
+    0x1.fffffd3a37a20cb4a12e24eaf25e3907p-2,
+    -0x1.000002p0
+  },
+  { // Entry 249
+    0x1.p1,
+    0x1.p0
+  },
+  { // Entry 250
+    0x1.p-1,
+    -0x1.p0
+  },
+  { // Entry 251
+    0x1.fffffe9d1bd08b5b58ee4879a122966ep0,
+    0x1.fffffep-1
+  },
+  { // Entry 252
+    0x1.000000b1721835514b86e6d96efd1bffp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 253
+    0x1.b93bbff5a7e572bcd51227c9b33976f0p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 254
+    0x1.290ee65a6808cb3ac67a086b51909f9dp-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 255
+    0x1.00000000000000000000000000000002p0,
+    0x1.p-126
+  },
+  { // Entry 256
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.p-126
+  },
+  { // Entry 257
+    0x1.00000000000000000000000000000002p0,
+    0x1.000002p-126
+  },
+  { // Entry 258
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.000002p-126
+  },
+  { // Entry 259
+    0x1.00000000000000000000000000000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 260
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 261
+    0x1.00000000000000000000000000000002p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 262
+    0x1.fffffffffffffffffffffffffffffffap-1,
+    -0x1.fffff8p-127
+  },
+  { // Entry 263
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 264
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-148
+  },
+  { // Entry 265
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 266
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149
+  },
+  { // Entry 267
+    0x1.p0,
+    0.0f
+  },
+  { // Entry 268
+    0x1.p0,
+    -0.0f
+  },
+  { // Entry 269
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p127,
+    0x1.fffffep6
+  },
+  { // Entry 270
+    HUGE_VALF,
+    0x1.p7
+  },
+  { // Entry 271
+    0x1.p-126,
+    -0x1.f8p6
+  },
+  { // Entry 272
+    0x1.ffff4e8e06c7e8a2a84daed8ec56d6c3p-127,
+    -0x1.f80002p6
+  },
+  { // Entry 273
+    0x1.p125,
+    0x1.f4p6
+  },
+  { // Entry 274
+    0x1.p-125,
+    -0x1.f4p6
+  },
+  { // Entry 275
+    0x1.p2,
+    0x1.p1
+  },
+  { // Entry 276
+    0x1.p-2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_exp_intel_data.h b/tests/math_data/exp_intel_data.h
similarity index 100%
rename from tests/math_exp_intel_data.h
rename to tests/math_data/exp_intel_data.h
diff --git a/tests/math_expf_intel_data.h b/tests/math_data/expf_intel_data.h
similarity index 100%
rename from tests/math_expf_intel_data.h
rename to tests/math_data/expf_intel_data.h
diff --git a/tests/math_data/expm1_intel_data.h b/tests/math_data/expm1_intel_data.h
new file mode 100644
index 0000000..be90c8d
--- /dev/null
+++ b/tests/math_data/expm1_intel_data.h
@@ -0,0 +1,1570 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_expm1_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffff0000000000555555555540p-41,
+    -0x1.0p-40
+  },
+  { // Entry 1
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p30
+  },
+  { // Entry 2
+    -0x1.fe0154aaeed8738220213bf805c9a017p-8,
+    -0x1.0000000000002p-7
+  },
+  { // Entry 3
+    -0x1.ffffffffffa000000000055555555556p-42,
+    -0x1.00000000001p-41
+  },
+  { // Entry 4
+    -0x1.fe0154aaef571540b64b8485cc828f04p-8,
+    -0x1.00000000003ffp-7
+  },
+  { // Entry 5
+    -0x1.43a54e4eb0119800b5b8f35e2b4e7e81p-1,
+    -0x1.000000002p0
+  },
+  { // Entry 6
+    -0x1.bacf4c925373696fd21f24ae89354a32p-1,
+    -0x1.003p1
+  },
+  { // Entry 7
+    -0x1.fcc2556e8534300e63c12f8a5a1106b6p-7,
+    -0x1.006p-6
+  },
+  { // Entry 8
+    -0x1.bdaeea20744956636e2e888fc1809651p-1,
+    -0x1.059def2b2f2c4p1
+  },
+  { // Entry 9
+    -0x1.07ffffffff77e00000002ecafffffff3p-40,
+    -0x1.080p-40
+  },
+  { // Entry 10
+    -0x1.1b19e5e90e6538002ec4e9f63c1927a9p-3,
+    -0x1.30ae80687cd57p-3
+  },
+  { // Entry 11
+    -0x1.d23c83e5c923a8d750b23742ad5d2d3dp-1,
+    -0x1.3519530a863ffp1
+  },
+  { // Entry 12
+    -0x1.34533cf44744c7f7dfe24cc81ce93a5ep-4,
+    -0x1.408c0a43cd97cp-4
+  },
+  { // Entry 13
+    -0x1.79c6caa9e49af4463cee3d526a8e1762p-1,
+    -0x1.56bccf9c08f94p0
+  },
+  { // Entry 14
+    -0x1.7de898bb4a1814449fc9bf5a787f2ce3p-1,
+    -0x1.5ebe08ce59440p0
+  },
+  { // Entry 15
+    -0x1.fde856b4a6b0d7fc360a96572944a5edp-1,
+    -0x1.5ffffffffff80p2
+  },
+  { // Entry 16
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6p9
+  },
+  { // Entry 17
+    -0x1.7f637276db37ab8b4f8af38ad62afdb3p-1,
+    -0x1.61abd3bb638ffp0
+  },
+  { // Entry 18
+    -0x1.7fd3858818630ad9afd1179848ee2effp-1,
+    -0x1.628b4a70e8586p0
+  },
+  { // Entry 19
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62ep9
+  },
+  { // Entry 20
+    -0x1.785b18f5275d64a3f5fda9ef739d80b5p-8,
+    -0x1.7970cf2265b9ap-8
+  },
+  { // Entry 21
+    -0x1.8b92870fa2b597fe9b02c25e9ad8a3cep-4,
+    -0x1.ap-4
+  },
+  { // Entry 22
+    -0x1.b57abe9ba86d56e26962c5525f1347a7p-8,
+    -0x1.b6f238c2a040ap-8
+  },
+  { // Entry 23
+    -0x1.b57abe9ba88897ff1194f673b12e2258p-8,
+    -0x1.b6f238c2a05c1p-8
+  },
+  { // Entry 24
+    -0x1.b57abe9ba88917245435a89f6cc2597ep-8,
+    -0x1.b6f238c2a05c9p-8
+  },
+  { // Entry 25
+    -0x1.b76f5651d19c26f8956b99cf61f3f2efp-6,
+    -0x1.bd6f7bfa7895ep-6
+  },
+  { // Entry 26
+    -0x1.b76f5651d3bc6710b0229be3f9607089p-6,
+    -0x1.bd6f7bfa7ac52p-6
+  },
+  { // Entry 27
+    -0x1.a78c2b7ae21669f0f3cd37c10528267ep-1,
+    -0x1.c18p0
+  },
+  { // Entry 28
+    -0x1.2b8ded3132d61ffff49548b6ec6ec8c6p-1,
+    -0x1.c26p-1
+  },
+  { // Entry 29
+    -0x1.ac6b158d953de99425206483bdcd2b28p-1,
+    -0x1.dp0
+  },
+  { // Entry 30
+    -0x1.ffefffffffffe8007ffe000000954f55p-54,
+    -0x1.ffeffffffffffp-54
+  },
+  { // Entry 31
+    -0x1.bab52178ee9089cf090261ec85161b44p-1,
+    -0x1.ffff3ffffffffp0
+  },
+  { // Entry 32
+    -0x1.f69f5523ef47a800c36704994de6bf7cp-1,
+    -0x1.fffffffffe9efp1
+  },
+  { // Entry 33
+    -0x1.fe0154aaee98b381f5a12261d8cf0352p-8,
+    -0x1.ffffffffffcp-8
+  },
+  { // Entry 34
+    -0x1.92e9a0720d3027f60f578a2cd30d104ep-2,
+    -0x1.ffffffffffe7fp-2
+  },
+  { // Entry 35
+    -0x1.bab5557101f8c8d73cd274ba659b2727p-1,
+    -0x1.ffffffffffffep0
+  },
+  { // Entry 36
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep7
+  },
+  { // Entry 37
+    0x1.000000000080000000002aaaaaaaaab5p-40,
+    0x1.0p-40
+  },
+  { // Entry 38
+    0x1.000000000000080000000000002aaaaap-52,
+    0x1.0p-52
+  },
+  { // Entry 39
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 40
+    0x1.0f2ebb2c65d9a80081ac2e65e8025ab1p23,
+    0x1.000000020p4
+  },
+  { // Entry 41
+    0x1.e5208c8ebb607ad767c1adb2ae9616f4p739,
+    0x1.007p9
+  },
+  { // Entry 42
+    0x1.040000000084080000002cb2b5555560p-40,
+    0x1.040p-40
+  },
+  { // Entry 43
+    0x1.c61e8108cb3b100f4a9641fe4b59d5a2p0,
+    0x1.052f742bb53d6p0
+  },
+  { // Entry 44
+    0x1.06466f97b426d000000a905602d7fb69p-10,
+    0x1.0624decad85d9p-10
+  },
+  { // Entry 45
+    0x1.65591a3a7b9fabe891c2ea5f47a6bb96p-1,
+    0x1.0f0ffffffffffp-1
+  },
+  { // Entry 46
+    0x1.66f0fb901f2bd45d99c3ae0c5506ad7fp-1,
+    0x1.1p-1
+  },
+  { // Entry 47
+    0x1.26beacef84dda800ee87d91d88c199a7p-6,
+    0x1.242p-6
+  },
+  { // Entry 48
+    0x1.11f6270d25be700ef7c34d02a29974f1p53,
+    0x1.266fd7cddff42p5
+  },
+  { // Entry 49
+    0x1.2d26216139d81006bcd5c876ca600a38p53,
+    0x1.27319e818c230p5
+  },
+  { // Entry 50
+    0x1.4d13fbb1a00192785df27257f060e683p53,
+    0x1.280p5
+  },
+  { // Entry 51
+    0x1.60c9b536e33bafefc62bca96f884a22ep53,
+    0x1.2875bd6dab630p5
+  },
+  { // Entry 52
+    0x1.8244f738ab986fcb022374240d8605cap53,
+    0x1.292f6d8d306c3p5
+  },
+  { // Entry 53
+    0x1.f4b1ecd508504fdbe96629980d48a020p53,
+    0x1.2b42ce6e584ebp5
+  },
+  { // Entry 54
+    0x1.88a122d234b394b88696ada7f7c11a0ap865,
+    0x1.2c0p9
+  },
+  { // Entry 55
+    0x1.6641633703ea28000010995bb7c4b21dp-2,
+    0x1.33333342022a7p-2
+  },
+  { // Entry 56
+    0x1.04dadee28c11c800fb9094435c1de727p7,
+    0x1.38389c48b0fcep2
+  },
+  { // Entry 57
+    0x1.007848baed8b37c3e6cc3bfb1a101644p58,
+    0x1.41a28cd5395c0p5
+  },
+  { // Entry 58
+    0x1.0c719229fb04b7c21ec3e0d7f2aed918p58,
+    0x1.42000000040p5
+  },
+  { // Entry 59
+    0x1.10924600307447c139d9bb2f82ff9a27p58,
+    0x1.421f4066cf2fcp5
+  },
+  { // Entry 60
+    0x1.31d215d36b1cc7c023dacc0edfa71bebp58,
+    0x1.430af90c17e36p5
+  },
+  { // Entry 61
+    0x1.379553b19df207c01565e5f16d485d4dp58,
+    0x1.4331346ca6ce7p5
+  },
+  { // Entry 62
+    0x1.379553b498da57c00fec0a571dd48a6fp58,
+    0x1.4331346cba64fp5
+  },
+  { // Entry 63
+    0x1.4bc2fdce156117bf5a49805dd419c072p58,
+    0x1.43b1b79351f4ep5
+  },
+  { // Entry 64
+    0x1.cf392076a1bdd7bf0d53e64efec10053p58,
+    0x1.465d52b8b0596p5
+  },
+  { // Entry 65
+    0x1.df8028d08d7bf7c01a066c0bca539e5ap58,
+    0x1.46a40dae90670p5
+  },
+  { // Entry 66
+    0x1.ea57988e94c817bf8f52f84ed3df88b0p58,
+    0x1.46d1d7d9e8a98p5
+  },
+  { // Entry 67
+    0x1.cb419b9279b35763d113e6c5db79dc54p943,
+    0x1.471c71c71c71cp9
+  },
+  { // Entry 68
+    0x1.f1345355d78ba4bf7b3fd1e3ecbf7dfdp948,
+    0x1.48e2388e2391cp9
+  },
+  { // Entry 69
+    0x1.55ab836495abe800005ca6d200952433p1,
+    0x1.4cccccce8ce97p0
+  },
+  { // Entry 70
+    0x1.6a77c2478bdb150bbc8ea756bbb8570bp970,
+    0x1.5059aabfe5765p9
+  },
+  { // Entry 71
+    0x1.e1afc1f1512b7428d3d28c586dcd7da0p974,
+    0x1.51e0f4c70ecdap9
+  },
+  { // Entry 72
+    0x1.5b1bac52655bf015d0c0897352cff074p-8,
+    0x1.5a312e2d5469ep-8
+  },
+  { // Entry 73
+    0x1.5d98a8b1c5b8a043f872dce4155ba02dp-8,
+    0x1.5caacc5a85cadp-8
+  },
+  { // Entry 74
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1008,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 75
+    0x1.624ca1ace3f15973a463b539c79a29fdp-8,
+    0x1.615856f590456p-8
+  },
+  { // Entry 76
+    0x1.624ca1ace613a9790c0e0fcff924bb7fp-8,
+    0x1.615856f59264cp-8
+  },
+  { // Entry 77
+    0x1.fffffffffc72a1b0e266677220702371p1023,
+    0x1.62e42fefa39e1p9
+  },
+  { // Entry 78
+    0x1.66bb6f898c6b5fb5d846de17be366ad0p-8,
+    0x1.65c100ffac3fdp-8
+  },
+  { // Entry 79
+    0x1.03854c2737b8d7ffffa5944ecc584479p0,
+    0x1.66666668c8bc0p-1
+  },
+  { // Entry 80
+    0x1.ad445f949fa7d34496e83174e2786b07p-2,
+    0x1.668p-2
+  },
+  { // Entry 81
+    0x1.67ad945f2f1d9fe2b66dc062db7996efp-8,
+    0x1.66b1d3ec2054fp-8
+  },
+  { // Entry 82
+    0x1.ae35f07f55b872de4707744c0a26ae90p-2,
+    0x1.672a28295e9c9p-2
+  },
+  { // Entry 83
+    0x1.78a4af6b33748fe2cb05dd6a4bfa7056p-8,
+    0x1.7790abed48f5ap-8
+  },
+  { // Entry 84
+    0x1.7bcae2fa3a8cc8cce95336f706279e5ap-8,
+    0x1.7ab23f3a26807p-8
+  },
+  { // Entry 85
+    0x1.7ce527adde0b88d06ecba195c7b0aa4cp-8,
+    0x1.7bcae2fa3adbep-8
+  },
+  { // Entry 86
+    0x1.7ce527ade0f5d8d09fcd9764c82d1274p-8,
+    0x1.7bcae2fa3dc1ep-8
+  },
+  { // Entry 87
+    0x1.7e0110f8b0e678d4a8586472ae7bc1d2p-8,
+    0x1.7ce527ade25b4p-8
+  },
+  { // Entry 88
+    0x1.7f1ea28925a638dc0db4fbf091b90b09p-8,
+    0x1.7e0110f8b0c8cp-8
+  },
+  { // Entry 89
+    0x1.803de018c41128de07c3aaf8cd79d45cp-8,
+    0x1.7f1ea28926651p-8
+  },
+  { // Entry 90
+    0x1.fe31152b7ef6b1e0a8b9fec7ecdd85a4p553,
+    0x1.8p8
+  },
+  { // Entry 91
+    0x1.d38c898541cf95544db45ffc7e46fd16p-2,
+    0x1.812p-2
+  },
+  { // Entry 92
+    0x1.8527a1ecdbec28000500f2ef81065e65p-7,
+    0x1.82dcb4e52cab1p-7
+  },
+  { // Entry 93
+    0x1.8fe5e61a83cad7fcee78aa274e8dc654p-9,
+    0x1.8f4a0b9ff7ed0p-9
+  },
+  { // Entry 94
+    0x1.e9306d671550b7fce52fe384e236ed51p-2,
+    0x1.8fep-2
+  },
+  { // Entry 95
+    0x1.aec7b35c8c209fffffe76d4ac148ca7ap-4,
+    0x1.9999999be6ebep-4
+  },
+  { // Entry 96
+    0x1.c56ecf3ddea747ffffa1cfcd9266f384p-3,
+    0x1.999999a7f45f9p-3
+  },
+  { // Entry 97
+    0x1.f7a0e4d5067effffffc2bf0d03877722p-2,
+    0x1.999999a867f17p-2
+  },
+  { // Entry 98
+    0x1.f7a0e4d8af7c480000325c9866d3f666p-2,
+    0x1.999999aadc06ap-2
+  },
+  { // Entry 99
+    0x1.fc8ecabe156a92f92ccd95f742d5f70fp-2,
+    0x1.9ce61d3061544p-2
+  },
+  { // Entry 100
+    0x1.c8082a8e3022880002e39fa93786b0cep-4,
+    0x1.b062a2df1de98p-4
+  },
+  { // Entry 101
+    0x1.b5e1f0f0c1d798a5b169cb191cd0c621p-8,
+    0x1.b46d1b46e5ccep-8
+  },
+  { // Entry 102
+    0x1.b5e9fa9919edd8bafdec03458df49c11p-8,
+    0x1.b4751746e5ccdp-8
+  },
+  { // Entry 103
+    0x1.b5e9fa9919ede8d65c8bacd72cd2a89cp-8,
+    0x1.b4751746e5ccep-8
+  },
+  { // Entry 104
+    0x1.b7594565a4b428b4734e2c9b43bec612p-8,
+    0x1.b5e1f0f0af677p-8
+  },
+  { // Entry 105
+    0x1.cf7fce3931c5e7ffe406b08dc477f91bp-8,
+    0x1.cdde2e3d70c6dp-8
+  },
+  { // Entry 106
+    0x1.cf44b5362775480990d2193fdac2a6c2p-9,
+    0x1.ce739ce735ce2p-9
+  },
+  { // Entry 107
+    0x1.8260dae0f18853ff9edaf44b27ba17b2p0,
+    0x1.d70a3d70a3d71p-1
+  },
+  { // Entry 108
+    0x1.dec5c594a41bb72f3ab6a63927f8e80dp-8,
+    0x1.dd083d2908a81p-8
+  },
+  { // Entry 109
+    0x1.e08690c3fb77571e49537d4d5f69aaf2p-8,
+    0x1.dec5c594ecfbcp-8
+  },
+  { // Entry 110
+    0x1.e6f8da92954ce80b660157d3ae9f4e70p-9,
+    0x1.e611d78dcf946p-9
+  },
+  { // Entry 111
+    0x1.95e784ba628073ff77d2f7ed4d6201bcp0,
+    0x1.e65f036272239p-1
+  },
+  { // Entry 112
+    0x1.e7d8753271e7a80359bd34ac05d687f5p-9,
+    0x1.e6f09e1a48351p-9
+  },
+  { // Entry 113
+    0x1.98df5c213427f4084f77d615f3544c56p0,
+    0x1.e8a974c5d39f7p-1
+  },
+  { // Entry 114
+    0x1.9f5b8bec582e4b59bb698dbd2576ed44p0,
+    0x1.eda1b9b5dff58p-1
+  },
+  { // Entry 115
+    0x1.f1be12f8f20cf876bccb9e47e3eb30b8p-7,
+    0x1.ee0p-7
+  },
+  { // Entry 116
+    0x1.f15c950aadd3178e4e8d488691307274p-8,
+    0x1.ef7bdef7bdef2p-8
+  },
+  { // Entry 117
+    0x1.f4647ce7fdefc80415bb8c747bed498ep-9,
+    0x1.f3709599bd0a0p-9
+  },
+  { // Entry 118
+    0x1.fbfc81c0062a280bc3db8a3918010b6ap-9,
+    0x1.fb01276ad538bp-9
+  },
+  { // Entry 119
+    0x1.4231178c2348f5f77eedb27dc404f616p734,
+    0x1.fcfffffffffffp8
+  },
+  { // Entry 120
+    0x1.74218bce788eb46746b38b578759ecc0p11,
+    0x1.ffeffffffffffp2
+  },
+  { // Entry 121
+    0x1.00000000009ff7ffffffea9aaaaaaa63p-39,
+    0x1.ffffffffff3ffp-40
+  },
+  { // Entry 122
+    0x1.0000000000000ffffffffffffeaaaaaap-50,
+    0x1.ffffffffffffep-51
+  },
+  { // Entry 123
+    0x1.ffffffffffffe7ffffffffffff155555p-54,
+    0x1.ffffffffffffep-54
+  },
+  { // Entry 124
+    0x1.00000000007ff80000002aa2aaaaaab5p-40,
+    0x1.fffffffffffffp-41
+  },
+  { // Entry 125
+    0x1.304d6aeca25253146dec9182369ba415p69,
+    0x1.7ffffffffffffp5
+  },
+  { // Entry 126
+    0x1.304d6aeca254b3af43c5d6293d5f65c7p69,
+    0x1.8p5
+  },
+  { // Entry 127
+    0x1.304d6aeca257144a199f1ad50558d32cp69,
+    0x1.8000000000001p5
+  },
+  { // Entry 128
+    -0x1.ffffffffffffffffffc0e327b6954e21p-1,
+    -0x1.a000000000001p5
+  },
+  { // Entry 129
+    -0x1.ffffffffffffffffffc0e327b6954da3p-1,
+    -0x1.ap5
+  },
+  { // Entry 130
+    -0x1.ffffffffffffffffffc0e327b6954d25p-1,
+    -0x1.9ffffffffffffp5
+  },
+  { // Entry 131
+    0x1.55779b984f395dea36a277b8bee2c64cp115,
+    0x1.3ffffffffffffp6
+  },
+  { // Entry 132
+    0x1.55779b984f3eb3c8a503b4a8e2487d98p115,
+    0x1.4p6
+  },
+  { // Entry 133
+    0x1.55779b984f4409a71364f1ae5d27ee69p115,
+    0x1.4000000000001p6
+  },
+  { // Entry 134
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.6000000000001p6
+  },
+  { // Entry 135
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.6p6
+  },
+  { // Entry 136
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.5ffffffffffffp6
+  },
+  { // Entry 137
+    0x1.40a4b9c27150866176d22f2139d1d40fp923,
+    0x1.3ffffffffffffp9
+  },
+  { // Entry 138
+    0x1.40a4b9c271789af8af205bb34f743337p923,
+    0x1.4p9
+  },
+  { // Entry 139
+    0x1.40a4b9c271a0af8fe76e8d47f7fd9c26p923,
+    0x1.4000000000001p9
+  },
+  { // Entry 140
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6000000000001p9
+  },
+  { // Entry 141
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6p9
+  },
+  { // Entry 142
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5ffffffffffffp9
+  },
+  { // Entry 143
+    0x1.03996528e072b78a330480884c79baf7p75,
+    0x1.9ffffffffffffp5
+  },
+  { // Entry 144
+    0x1.03996528e074bebcfd56416fc2c0eb92p75,
+    0x1.ap5
+  },
+  { // Entry 145
+    0x1.03996528e076c5efc7a8025b476db0d0p75,
+    0x1.a000000000001p5
+  },
+  { // Entry 146
+    -0x1.fffffffffffffffff28a2a28e2df408cp-1,
+    -0x1.8000000000001p5
+  },
+  { // Entry 147
+    -0x1.fffffffffffffffff28a2a28e2df25a0p-1,
+    -0x1.8p5
+  },
+  { // Entry 148
+    -0x1.fffffffffffffffff28a2a28e2df0ab5p-1,
+    -0x1.7ffffffffffffp5
+  },
+  { // Entry 149
+    0x1.f1056dc7bf1b0fc857b67999f503526fp126,
+    0x1.5ffffffffffffp6
+  },
+  { // Entry 150
+    0x1.f1056dc7bf22d3de0ed57615bc501f87p126,
+    0x1.6p6
+  },
+  { // Entry 151
+    0x1.f1056dc7bf2a97f3c5f472b093f3c91bp126,
+    0x1.6000000000001p6
+  },
+  { // Entry 152
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.4000000000001p6
+  },
+  { // Entry 153
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.4p6
+  },
+  { // Entry 154
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.3ffffffffffffp6
+  },
+  { // Entry 155
+    0x1.93bf4ec282bd3b36cd2f4011488a8364p1015,
+    0x1.5ffffffffffffp9
+  },
+  { // Entry 156
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1015,
+    0x1.6p9
+  },
+  { // Entry 157
+    0x1.93bf4ec283222b0a7dcffbfe10b3e34ap1015,
+    0x1.6000000000001p9
+  },
+  { // Entry 158
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.4000000000001p9
+  },
+  { // Entry 159
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.4p9
+  },
+  { // Entry 160
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.3ffffffffffffp9
+  },
+  { // Entry 161
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1cb90bfbe8e7cp9
+  },
+  { // Entry 162
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.397217f7d1cf8p9
+  },
+  { // Entry 163
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.562b23f3bab73p9
+  },
+  { // Entry 164
+    -0x1.0000000000000654361c4c67fbf90232p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 165
+    -0x1.fffffffffffffca86c3898cff81747c6p-2,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 166
+    -0x1.ffffffffffffeca86c3898cff7bc8b28p-2,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 167
+    -0x1.2bec3330188676e1ed35fec1b10e40dcp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 168
+    -0x1.2bec333018866b919e02bf23cad327f3p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 169
+    -0x1.2bec3330188660414ecf7f85e46acdcdp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 170
+    -0x1.45d819a94b14b3030eebbb9c6d4a2ce8p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 171
+    -0x1.45d819a94b14a58ebf1f0e3296a2beb6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 172
+    -0x1.45d819a94b14981a6f5260c8bfe067e5p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 173
+    -0x1.53f391822dbc78ae783b45864b0aa398p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 174
+    -0x1.53f391822dbc6a026bccc7b4077bfc0ap-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 175
+    -0x1.53f391822dbc5b565f5e49e1c3dea870p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 176
+    -0x1.5b505d5b6f26868f9677878648368b11p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 177
+    -0x1.5b505d5b6f26773d3ea6353ddb75fe46p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 178
+    -0x1.5b505d5b6f2667eae6d4e2f56eadc84fp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 179
+    -0x1.5f134923757f3dc3f347d61df5fb6626p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 180
+    -0x1.5f134923757f2e1bb81a1efb55c8e21cp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 181
+    -0x1.5f134923757f1e737cec67d8b5927402p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 182
+    0x1.66c34c5615d0d7db1473bac29ad1b98dp-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 183
+    0x1.66c34c5615d0e834c546d0480f09bb89p-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 184
+    0x1.66c34c5615d0f88e7619e5cd8345d3f0p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 185
+    0x1.6ab0d9f3121eb0fea4f25282282cb459p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 186
+    0x1.6ab0d9f3121ec1b3fd5f4c0b37896101p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 187
+    0x1.6ab0d9f3121ed26955cc459446ee6856p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 188
+    0x1.72b83c7d517ac7c7c0d3432ad543afa6p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 189
+    0x1.72b83c7d517ad93a790fc07c501430c3p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 190
+    0x1.72b83c7d517aeaad314c3dcdcaf62498p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 191
+    0x1.837f0518db8a7ff3f7635f5fbe54ebe8p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 192
+    0x1.837f0518db8a92faf56d9116d367dad5p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 193
+    0x1.837f0518db8aa601f377c2cde8a0d7bep-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 194
+    0x1.a827999fcef308c835779a431e05cabbp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 195
+    0x1.a827999fcef31f68d3de197eea562ccep-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 196
+    0x1.a827999fcef33609724498bab701115ap-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 197
+    0x1.ffffffffffffd950d871319ff0ef3435p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 198
+    0x1.fffffffffffff950d871319ff039baf9p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 199
+    0x1.0000000000000ca86c3898cff84220dep0,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 200
+    0x1.7fffffffffffd950d871319ff1aa4328p1,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 201
+    0x1.7ffffffffffff950d871319ff03f50afp1,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 202
+    0x1.8000000000001950d871319ff0d45e36p1,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 203
+    0x1.dfffffffffffb2a1b0e2633fe640c21bp3,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 204
+    0x1.dffffffffffff2a1b0e2633fe094f837p3,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 205
+    0x1.e0000000000032a1b0e2633fe2e92e54p3,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 206
+    0x1.fdffffffffff654361c4c67fd8327361p7,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 207
+    0x1.fdffffffffffe54361c4c67fc1834bd3p7,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 208
+    0x1.fe0000000000654361c4c67fcad42444p7,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 209
+    0x1.fffdfffffffeca86c3898cffdf28a36fp15,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 210
+    0x1.fffdffffffffca86c3898cff846c0534p15,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 211
+    0x1.fffe00000000ca86c3898cffa9af66f9p15,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 212
+    0x1.fffffffdfffd950d87131a007960398fp31,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 213
+    0x1.fffffffdffff950d871319ff0e6dc0a3p31,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 214
+    0x1.fffffffe0001950d871319ffa37b47b6p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 215
+    0x1.ffffffffffb2a1b0e26345b8dfe00697p1023,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 216
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 217
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 218
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39f0p9
+  },
+  { // Entry 219
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39efp9
+  },
+  { // Entry 220
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39eep9
+  },
+  { // Entry 221
+    -0x1.c5041854df7d5ed1e4b8c796ef6ef281p-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 222
+    -0x1.c5041854df7d45e5f51a1b14e4b86234p-3,
+    -0x1.0p-2
+  },
+  { // Entry 223
+    -0x1.c5041854df7d396ffd4ac4d3df37b827p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 224
+    -0x1.e14aed893eef58797f12838f2b969ac0p-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 225
+    -0x1.e14aed893eef3c3c14ed960d0a2b5054p-4,
+    -0x1.0p-3
+  },
+  { // Entry 226
+    -0x1.e14aed893eef2e1d5fdb1f4bf9607d0ep-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 227
+    -0x1.f0540438fd5c4fb179fdc0f96e33a687p-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 228
+    -0x1.f0540438fd5c31a1ce01f9f6ca74502bp-5,
+    -0x1.0p-4
+  },
+  { // Entry 229
+    -0x1.f0540438fd5c2299f804167578895f1dp-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 230
+    -0x1.f8152aee9450fc6df41295c712a2cfcbp-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 231
+    -0x1.f8152aee9450dd69fea80d113b1945c7p-6,
+    -0x1.0p-5
+  },
+  { // Entry 232
+    -0x1.f8152aee9450cde803f2c8b64f4eb008p-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 233
+    -0x1.fc055004416dd58cbbb4a9b4ef23fb67p-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 234
+    -0x1.fc055004416db60bbd08aac54a956e76p-7,
+    -0x1.0p-6
+  },
+  { // Entry 235
+    -0x1.fc055004416da64b3db2ab4d784b33e6p-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 236
+    -0x1.fe0154aaeed853c1e04bd155e0d61457p-8,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 237
+    -0x1.fe0154aaeed83401a07666b3bbde908fp-8,
+    -0x1.0p-7
+  },
+  { // Entry 238
+    -0x1.fe0154aaeed82421808bb162a96151a8p-8,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 239
+    -0x1.ff0055400443ae32f1e9274ffa299d5dp-9,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 240
+    -0x1.ff00554004438e52e1ee7b503e63818cp-9,
+    -0x1.0p-8
+  },
+  { // Entry 241
+    -0x1.ff00554004437e62d9f12550607fb463p-9,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 242
+    -0x1.ff801552aaef092effe8945b04b60168p-10,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 243
+    -0x1.ff801552aaeee93efbe93ef05c2dcb20p-10,
+    -0x1.0p-9
+  },
+  { // Entry 244
+    -0x1.ff801552aaeed946f9e9943b07e9502cp-10,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 245
+    -0x1.ffc005550004640ec40c0e6e9887b0c9p-11,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 246
+    -0x1.ffc0055500044416c30c23c298990114p-11,
+    -0x1.0p-10
+  },
+  { // Entry 247
+    -0x1.ffc005550004341ac28c2e6c98a17946p-11,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 248
+    -0x1.fff80015552acaedee97e99bef6c42ffp-14,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 249
+    -0x1.fff80015552aaaeeee93e9a69a01a076p-14,
+    -0x1.0p-13
+  },
+  { // Entry 250
+    -0x1.fff80015552a9aef6e91e9abef4c4932p-14,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 251
+    0x1.22d78f0fa0618f943ff0bb2de7cfdf0cp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 252
+    0x1.22d78f0fa06199d9ef0eda6eaaf94d3bp-2,
+    0x1.0p-2
+  },
+  { // Entry 253
+    0x1.22d78f0fa061ae654d4b18f03189cbb3p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 254
+    0x1.10b022db7ae673d6bb2140ac1ce40bp-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 255
+    0x1.10b022db7ae67ce76b441c27035c6a13p-3,
+    0x1.0p-3
+  },
+  { // Entry 256
+    0x1.10b022db7ae68f08cb89d31cd0685a4ap-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 257
+    0x1.082b577d34ed74d70455df87e5de0894p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 258
+    0x1.082b577d34ed7d5b1a019e225c9a951bp-4,
+    0x1.0p-4
+  },
+  { // Entry 259
+    0x1.082b577d34ed8e6345591b574a20744bp-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 260
+    0x1.040ac0224fd9298077606ce10b478c97p-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 261
+    0x1.040ac0224fd931c17a1075750192f4d5p-5,
+    0x1.0p-5
+  },
+  { // Entry 262
+    0x1.040ac0224fd942437f70869cee2ff613p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 263
+    0x1.0202ad5778e4568dd8d74f51f70f7d9cp-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 264
+    0x1.0202ad5778e45eae192cfa41139ad15bp-6,
+    0x1.0p-6
+  },
+  { // Entry 265
+    0x1.0202ad5778e46eee99d8501f4cb484f2p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 266
+    0x1.0100ab00222d7e0921b6ae3791767825p-7,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 267
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.0p-7
+  },
+  { // Entry 268
+    0x1.0100ab00222d963951d6be3dfa005e5fp-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 269
+    0x1.00802ab55777ca8226417cbfee2ff38bp-8,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 270
+    0x1.00802ab55777d28a2a42d26aa9ee67bcp-8,
+    0x1.0p-8
+  },
+  { // Entry 271
+    0x1.00802ab55777e29a32457dc0216c10dfp-8,
+    0x1.0000000000001p-8
+  },
+  { // Entry 272
+    0x1.00400aac00221cf682ab5035e9096355p-9,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 273
+    0x1.00400aac002224fa83ab7ae5e991e737p-9,
+    0x1.0p-9
+  },
+  { // Entry 274
+    0x1.00400aac0022350285abd045eaa34f2bp-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 275
+    0x1.002002aad5576f8c39739c649f2fc237p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 276
+    0x1.002002aad557778e39b3a1ba49dea952p-10,
+    0x1.0p-10
+  },
+  { // Entry 277
+    0x1.002002aad55787923a33ac659f3ca792p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 278
+    0x1.0004000aaabff821e24ea52ba86932b8p-13,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 279
+    0x1.0004000aaac00022224fa52e531931c1p-13,
+    0x1.0p-13
+  },
+  { // Entry 280
+    0x1.0004000aaac01022a251a533a87935d2p-13,
+    0x1.0000000000001p-13
+  },
+  { // Entry 281
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p9
+  },
+  { // Entry 282
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p9
+  },
+  { // Entry 283
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p8
+  },
+  { // Entry 285
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p8
+  },
+  { // Entry 286
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 287
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p7
+  },
+  { // Entry 288
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p7
+  },
+  { // Entry 289
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 290
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.0000000000001p6
+  },
+  { // Entry 291
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.0p6
+  },
+  { // Entry 292
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 293
+    -0x1.fffffffffff8dee6c227a6f43aa81530p-1,
+    -0x1.0000000000001p5
+  },
+  { // Entry 294
+    -0x1.fffffffffff8dee6c227a6e5f875997fp-1,
+    -0x1.0p5
+  },
+  { // Entry 295
+    -0x1.fffffffffff8dee6c227a6ded75c5ba7p-1,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 296
+    -0x1.fffffc395488a22f4a6b5eb875ea5a66p-1,
+    -0x1.0000000000001p4
+  },
+  { // Entry 297
+    -0x1.fffffc395488a22f46a4b3411819a2eep-1,
+    -0x1.0p4
+  },
+  { // Entry 298
+    -0x1.fffffc395488a22f44c15d85693145c7p-1,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 299
+    -0x1.ffd407bdf7dfb0bc84275b4125a96eb7p-1,
+    -0x1.0000000000001p3
+  },
+  { // Entry 300
+    -0x1.ffd407bdf7dfb0a688065730fe0231c2p-1,
+    -0x1.0p3
+  },
+  { // Entry 301
+    -0x1.ffd407bdf7dfb09b89f5d528ea2a7402p-1,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 302
+    -0x1.f69f5523ef61881c365f838e3cece5d4p-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 303
+    -0x1.f69f5523ef6185c40ba87f669ea8ee15p-1,
+    -0x1.0p2
+  },
+  { // Entry 304
+    -0x1.f69f5523ef618497f64cfd52cf4eae35p-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 305
+    -0x1.bab5557101f8da29e776343c313b029ep-1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 306
+    -0x1.bab5557101f8d1809224547b4bf5aa38p-1,
+    -0x1.0p1
+  },
+  { // Entry 307
+    -0x1.bab5557101f8cd2be77b649ad8eb0e05p-1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 308
+    -0x1.43a54e4e98864d90355d87727adb37e7p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 309
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.0p0
+  },
+  { // Entry 310
+    -0x1.43a54e4e98863be7b4b4e5bf114cd6e0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 311
+    0x1.9476504ba8399f5b97cae35beb78c3c5p738,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 312
+    0x1.9476504ba852e6c09c8567c01c5a6648p738,
+    0x1.0p9
+  },
+  { // Entry 313
+    0x1.9476504ba885758aa5fa7545e10e8e46p738,
+    0x1.0000000000001p9
+  },
+  { // Entry 314
+    0x1.41c7a8814be192a5df25b042af824efdp369,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 315
+    0x1.41c7a8814beba0e323300f777da65854p369,
+    0x1.0p8
+  },
+  { // Entry 316
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp369,
+    0x1.0000000000001p8
+  },
+  { // Entry 317
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p184,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 318
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp184,
+    0x1.0p7
+  },
+  { // Entry 319
+    0x1.95e54c5dd42e271fa23bf3585b655060p184,
+    0x1.0000000000001p7
+  },
+  { // Entry 320
+    0x1.425982cf597a4d52c89ea847bbaa807ap92,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 321
+    0x1.425982cf597cd205ce3d5b3edb031756p92,
+    0x1.0p6
+  },
+  { // Entry 322
+    0x1.425982cf5981db6bd97ac13c35e666c6p92,
+    0x1.0000000000001p6
+  },
+  { // Entry 323
+    0x1.1f43fcc4b65da8944ac389b609e0f74ep46,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 324
+    0x1.1f43fcc4b65ec7d84788401842174074p46,
+    0x1.0p5
+  },
+  { // Entry 325
+    0x1.1f43fcc4b66106604111ace0104fc90ep46,
+    0x1.0000000000001p5
+  },
+  { // Entry 326
+    0x1.0f2ebb0a80017cfac56c30874afbab98p23,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 327
+    0x1.0f2ebb0a8002049223f170882b5ee5efp23,
+    0x1.0p4
+  },
+  { // Entry 328
+    0x1.0f2ebb0a800313c0e0fbf08ab7886866p23,
+    0x1.0000000000001p4
+  },
+  { // Entry 329
+    0x1.747ea7d470c681e43618ec18d53f1b21p11,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 330
+    0x1.747ea7d470c6df0be00e084a815d1de6p11,
+    0x1.0p3
+  },
+  { // Entry 331
+    0x1.747ea7d470c7995b33f840ae1f76e2e7p11,
+    0x1.0000000000001p3
+  },
+  { // Entry 332
+    0x1.acc902e273a54fdfb6777166e6760dfbp5,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 333
+    0x1.acc902e273a58678d6d3bfdb93db96d0p5,
+    0x1.0p2
+  },
+  { // Entry 334
+    0x1.acc902e273a5f3ab178c5cc50320149cp5,
+    0x1.0000000000001p2
+  },
+  { // Entry 335
+    0x1.98e64b8d4ddabf34d582cd2909aafb2ap2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 336
+    0x1.98e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.0p1
+  },
+  { // Entry 337
+    0x1.98e64b8d4ddb17e003ad4bc215d4ef86p2,
+    0x1.0000000000001p1
+  },
+  { // Entry 338
+    0x1.b7e151628aed14abb4e6442933f899f6p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 339
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.0p0
+  },
+  { // Entry 340
+    0x1.b7e151628aed55e8d487812f70f79067p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 341
+    0x1.ffc045692fc9dbc7b7e032576e5e26f8p1023,
+    0x1.62e41ffffffffp9
+  },
+  { // Entry 342
+    0x1.ffc045693009d3d065062f9267dff55ep1023,
+    0x1.62e42p9
+  },
+  { // Entry 343
+    0x1.ffc045693049cbd9122c34cc62776884p1023,
+    0x1.62e4200000001p9
+  },
+  { // Entry 344
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e4200000001p9
+  },
+  { // Entry 345
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42p9
+  },
+  { // Entry 346
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e41ffffffffp9
+  },
+  { // Entry 347
+    HUGE_VAL,
+    0x1.0p1020
+  },
+  { // Entry 348
+    HUGE_VAL,
+    0x1.999999999999ap1020
+  },
+  { // Entry 349
+    HUGE_VAL,
+    0x1.199999999999ap1021
+  },
+  { // Entry 350
+    HUGE_VAL,
+    0x1.6666666666667p1021
+  },
+  { // Entry 351
+    HUGE_VAL,
+    0x1.b333333333334p1021
+  },
+  { // Entry 352
+    HUGE_VAL,
+    0x1.0p1022
+  },
+  { // Entry 353
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 354
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 355
+    -0x1.p0,
+    -HUGE_VAL
+  },
+  { // Entry 356
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 357
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 358
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 359
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 360
+    0x1.624046eb09338d2991a30893e7f4108dp4,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 361
+    -0x1.e9dfdd84a671066b619f1bb23ba2eb2fp-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 362
+    0x1.e7bdb90ab26bdf555eaf19da7f043f2cp1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 363
+    -0x1.9590cee42260813cac44f53b3217ed19p-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 364
+    0x1.b7e151628aed55e8d487812f70f79067p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 365
+    -0x1.43a54e4e98864d90355d87727adb37e7p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 366
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.0p0
+  },
+  { // Entry 367
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.0p0
+  },
+  { // Entry 368
+    0x1.b7e151628aed14abb4e6442933f899f6p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 369
+    -0x1.43a54e4e98863be7b4b4e5bf114cd6e0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 370
+    0x1.317acd28e3954ab0b8e398654f25590ap0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 371
+    -0x1.168f47187dbc360f4ac035fc8ff9e913p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 372
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 373
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 374
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 375
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 376
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 377
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 378
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 379
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 380
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 381
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 382
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 383
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 384
+    0.0,
+    0.0
+  },
+  { // Entry 385
+    -0.0,
+    -0.0
+  },
+  { // Entry 386
+    0x1.fffffffffff2a1b0e263400d15fc52ffp1023,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 387
+    HUGE_VAL,
+    0x1.62e42fefa39f0p9
+  }
+};
diff --git a/tests/math_data/expm1f_intel_data.h b/tests/math_data/expm1f_intel_data.h
new file mode 100644
index 0000000..f6f6bc2
--- /dev/null
+++ b/tests/math_data/expm1f_intel_data.h
@@ -0,0 +1,1182 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_expm1f_intel_data[] = {
+  { // Entry 0
+    -0x1.fffff00000555554000004444438e38ep-21,
+    -0x1.p-20
+  },
+  { // Entry 1
+    -0x1.fffff800001555552aaaaaeeeeee93e9p-22,
+    -0x1.p-21
+  },
+  { // Entry 2
+    -0x1.ffffff00000055555540000004444443p-25,
+    -0x1.p-24
+  },
+  { // Entry 3
+    -0x1.fffff40000155555bffffd99999b8e38p-21,
+    -0x1.000002p-20
+  },
+  { // Entry 4
+    -0x1.000000fffffcaaaaaa55555acccccb6cp-23,
+    -0x1.000002p-23
+  },
+  { // Entry 5
+    -0x1.92ead6fcef62fa8ffd6dddea52cb775dp-2,
+    -0x1.0001p-1
+  },
+  { // Entry 6
+    -0x1.0003ffffff7ffbfff8002aacaab2aaaap-40,
+    -0x1.0004p-40
+  },
+  { // Entry 7
+    -0x1.43eb2700073d423819fa85ce534f3bf1p-1,
+    -0x1.005fp0
+  },
+  { // Entry 8
+    -0x1.c59998f074353c5d0492e23cfecbc1f5p-3,
+    -0x1.0060p-2
+  },
+  { // Entry 9
+    -0x1.f48a2ae5cc72d28e4ff5d3940c608146p-5,
+    -0x1.023ep-4
+  },
+  { // Entry 10
+    -0x1.f2be57002fc371093dd9623ec6cdcf88p-4,
+    -0x1.09e940p-3
+  },
+  { // Entry 11
+    -0x1.4b3b8cffff78b97a60ce841d99138e34p-1,
+    -0x1.0a866cp0
+  },
+  { // Entry 12
+    -0x1.1e37fafffb5de84ddb61ac58d96c6109p-21,
+    -0x1.1e38p-21
+  },
+  { // Entry 13
+    -0x1.c96006fff735d59b28cc8226e99bd811p-2,
+    -0x1.2efd0ap-1
+  },
+  { // Entry 14
+    -0x1.d30023003cc4589a4a217749a50959dcp-1,
+    -0x1.374118p1
+  },
+  { // Entry 15
+    -0x1.7e8bcef9c4fe9e0ac2d05310f5cbd8f2p-1,
+    -0x1.60p0
+  },
+  { // Entry 16
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.60p6
+  },
+  { // Entry 17
+    -0x1.9758b6f38b012949e7b93c7f27202a48p-3,
+    -0x1.c62ee0p-3
+  },
+  { // Entry 18
+    -0x1.751b2169ee200a7bb4f26bccb619a80ep-2,
+    -0x1.cffffep-2
+  },
+  { // Entry 19
+    -0x1.a066d300130ff4e4fc65bad0a7f72ca1p-3,
+    -0x1.d1848cp-3
+  },
+  { // Entry 20
+    -0x1.fffff6ffff2933320eb3310fc95c97a5p-1,
+    -0x1.e434dep3
+  },
+  { // Entry 21
+    -0x1.fffff7fffffffffffffffffffffffffcp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 22
+    -0x1.ffffffffffffffffffffffe6961ed7f0p-1,
+    -0x1.fffffcp5
+  },
+  { // Entry 23
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.p-7
+  },
+  { // Entry 24
+    0x1.00000400000aaaaac000002222224fa4p-21,
+    0x1.p-21
+  },
+  { // Entry 25
+    0x1.bcab8900011ff456b56212f998951e38p0,
+    0x1.01c18ep0
+  },
+  { // Entry 26
+    0x1.b61e5ca3a5e30b2f0a03f28af9ce0084p93,
+    0x1.04p6
+  },
+  { // Entry 27
+    0x1.c62b1d7eea9cc6f6ea3ff782be73b0cbp0,
+    0x1.0534p0
+  },
+  { // Entry 28
+    0x1.aef1abc1b1c54e2429d81ddb79775eefp94,
+    0x1.06b4e0p6
+  },
+  { // Entry 29
+    0x1.94c2590c0ac9993e93aa8acaf1046c73p96,
+    0x1.0c0040p6
+  },
+  { // Entry 30
+    0x1.2a7938fffec9616b4d631cb33d990160p-3,
+    0x1.16a150p-3
+  },
+  { // Entry 31
+    0x1.752a64ffff6149fa0bd6f95bb10bf8e8p-1,
+    0x1.184b62p-1
+  },
+  { // Entry 32
+    0x1.37703d00002d814e4605b09d7ef15368p-4,
+    0x1.2c2a90p-4
+  },
+  { // Entry 33
+    0x1.44835afffef0f01e2e400989de81bd82p-3,
+    0x1.2d3b76p-3
+  },
+  { // Entry 34
+    0x1.021c84fffff5d54e4229ede943f4a168p7,
+    0x1.378cb4p2
+  },
+  { // Entry 35
+    0x1.ff2ac4707dee3cd35848bdb4d4296824p124,
+    0x1.5a912cp6
+  },
+  { // Entry 36
+    0x1.7ff7f6932445d2e31f1b7c20d7c7d871p126,
+    0x1.5ef7bcp6
+  },
+  { // Entry 37
+    0x1.f916467349b058b9c38906911b856052p126,
+    0x1.60107cp6
+  },
+  { // Entry 38
+    0x1.f76ba46733f4146a0f94b3d1311494bap127,
+    0x1.62d2e2p6
+  },
+  { // Entry 39
+    0x1.fff1086632b0e9b93bc5be44d9c1dea5p127,
+    0x1.62e412p6
+  },
+  { // Entry 40
+    0x1.8dbe63000000d7dc67e2e67575c06599p-3,
+    0x1.6b7d8ap-3
+  },
+  { // Entry 41
+    0x1.9185a8fffe5a4f000eb5ab63da3bfa3fp-3,
+    0x1.6ea6e2p-3
+  },
+  { // Entry 42
+    0x1.e5fa73631c80571bb785e84b1dff0fb4p70,
+    0x1.894a52p5
+  },
+  { // Entry 43
+    0x1.dfc5e500a0d64765f069273b7e215719p-2,
+    0x1.897ba8p-2
+  },
+  { // Entry 44
+    0x1.9a6e870bbb7b2779cded78be9b91a2dap71,
+    0x1.8d7bdep5
+  },
+  { // Entry 45
+    0x1.fb180600000c0175ee1c8855daaebdb6p1,
+    0x1.9a0bccp0
+  },
+  { // Entry 46
+    0x1.00f200ffff918c60a6f122a3b475e0fep-1,
+    0x1.a074b8p-2
+  },
+  { // Entry 47
+    0x1.c6b4aa00000bf2d58223ca9249b47316p-4,
+    0x1.af311ap-4
+  },
+  { // Entry 48
+    0x1.e1bcd4fffe314487556a09bb0c8a7551p-3,
+    0x1.b0a4d4p-3
+  },
+  { // Entry 49
+    0x1.d62649fffff82b1e6698411a08145a29p-4,
+    0x1.bd11a8p-4
+  },
+  { // Entry 50
+    0x1.05161b00011b9313efed24a09a8cb044p-2,
+    0x1.d11ebap-3
+  },
+  { // Entry 51
+    0x1.9a92e90baa2969fa8c71bb3c2be8bb40p85,
+    0x1.db1e7ep5
+  },
+  { // Entry 52
+    0x1.e63ebcfffee84008206c45435ee52722p-14,
+    0x1.e63786p-14
+  },
+  { // Entry 53
+    0x1.9768d30002d89bbd7f87c2131074c9c5p0,
+    0x1.e788b8p-1
+  },
+  { // Entry 54
+    0x1.6e23d980dd2d2fba285ff30446a78914p5,
+    0x1.ec2f24p1
+  },
+  { // Entry 55
+    0x1.a664d8ed7cc33ede965392722b0d87bfp22,
+    0x1.f7fffep3
+  },
+  { // Entry 56
+    0x1.b6904dfffe42514279db71397b7ffb45p0,
+    0x1.ff07cep-1
+  },
+  { // Entry 57
+    0x1.b6b11ea799b7c71cf2f6b9659c8155c6p0,
+    0x1.ff1ffep-1
+  },
+  { // Entry 58
+    0x1.3d59d2d8b22b41c2bb6334b9be7be902p92,
+    0x1.ffdffep5
+  },
+  { // Entry 59
+    0x1.00000b00000aaaa78fffe97777a4d832p-19,
+    0x1.fffff6p-20
+  },
+  { // Entry 60
+    0x1.fffff800000000000000000000000003p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 61
+    0x1.000001fffffaaaaa8ffffff77777fa4fp-21,
+    0x1.fffffcp-22
+  },
+  { // Entry 62
+    0x1.4258e1a2c0604eea1e874d7004e6dfb9p92,
+    0x1.fffffcp5
+  },
+  { // Entry 63
+    0x1.00000700001aaaaadd55554ccccba7d2p-20,
+    0x1.fffffep-21
+  },
+  { // Entry 64
+    0x1.304d1ed9511bf5a69db20e4cdbf6d8ffp69,
+    0x1.7ffffep5
+  },
+  { // Entry 65
+    0x1.304d6aeca254b3af43c5d6293d5f65c7p69,
+    0x1.80p5
+  },
+  { // Entry 66
+    0x1.304db70006924866b41845097c91e488p69,
+    0x1.800002p5
+  },
+  { // Entry 67
+    -0x1.ffffffffffffffffffc0e3377dc96717p-1,
+    -0x1.a00002p5
+  },
+  { // Entry 68
+    -0x1.ffffffffffffffffffc0e327b6954da3p-1,
+    -0x1.a0p5
+  },
+  { // Entry 69
+    -0x1.ffffffffffffffffffc0e317ef5d4261p-1,
+    -0x1.9ffffep5
+  },
+  { // Entry 70
+    0x1.5576f0dcac21787f2d57b14a700204e3p115,
+    0x1.3ffffep6
+  },
+  { // Entry 71
+    0x1.55779b984f3eb3c8a503b4a8e2487d98p115,
+    0x1.40p6
+  },
+  { // Entry 72
+    0x1.5578465447b9d5f83246af1e48e8025bp115,
+    0x1.400002p6
+  },
+  { // Entry 73
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.600002p6
+  },
+  { // Entry 74
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.60p6
+  },
+  { // Entry 75
+    -0x1.fffffffffffffffffffffffffffffffbp-1,
+    -0x1.5ffffep6
+  },
+  { // Entry 76
+    0x1.039924428f47511c03c75dd623bc47e1p75,
+    0x1.9ffffep5
+  },
+  { // Entry 77
+    0x1.03996528e074bebcfd56416fc2c0eb92p75,
+    0x1.a0p5
+  },
+  { // Entry 78
+    0x1.0399a60f41dbc2b085021312f505089dp75,
+    0x1.a00002p5
+  },
+  { // Entry 79
+    -0x1.fffffffffffffffff28a2d8657e93e43p-1,
+    -0x1.800002p5
+  },
+  { // Entry 80
+    -0x1.fffffffffffffffff28a2a28e2df25a0p-1,
+    -0x1.80p5
+  },
+  { // Entry 81
+    -0x1.fffffffffffffffff28a26cb6cfdafa0p-1,
+    -0x1.7ffffep5
+  },
+  { // Entry 82
+    0x1.f1047545465f97aad6774dfe16b960dep126,
+    0x1.5ffffep6
+  },
+  { // Entry 83
+    0x1.f1056dc7bf22d3de0ed57615bc501f87p126,
+    0x1.60p6
+  },
+  { // Entry 84
+    0x1.f106664ab4276b833993050c9aa09a91p126,
+    0x1.600002p6
+  },
+  { // Entry 85
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.400002p6
+  },
+  { // Entry 86
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.40p6
+  },
+  { // Entry 87
+    -0x1.ffffffffffffffffffffffffffffd004p-1,
+    -0x1.3ffffep6
+  },
+  { // Entry 88
+    -0x1.ffffffffffffffffffffffffffa57347p-1,
+    -0x1.274768p6
+  },
+  { // Entry 89
+    -0x1.fffffffffffffffffffffffffffffebdp-1,
+    -0x1.4e8ed0p6
+  },
+  { // Entry 90
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.75d638p6
+  },
+  { // Entry 91
+    -0x1.000000082e308632c06d5d65136575eap-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 92
+    -0x1.fffffe105c601cc1e199f9261fc7dbe6p-2,
+    -0x1.62e42ep-1
+  },
+  { // Entry 93
+    -0x1.fffffc105c5d2d1e406993e20adc02bfp-2,
+    -0x1.62e42cp-1
+  },
+  { // Entry 94
+    -0x1.2bec333baa280850b6bf9111bb873f60p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 95
+    -0x1.2bec31d1a0414ba3511c18f32bb55d63p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 96
+    -0x1.2bec30679659d9f0f7ed08e4eb06dfefp-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 97
+    -0x1.45d819b70d12db9f1551331188790df6p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 98
+    -0x1.45d81808831913911ad15724d9d51211p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 99
+    -0x1.45d81659f91edfe0a1d20369bbdaa485p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 100
+    -0x1.53f391912e7f21ab50219d67aa32363ap-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 101
+    -0x1.53f38fbbacf136790727bc2da36b8afcp-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 102
+    -0x1.53f38de62b6310968c6cc9a7616b33cbp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 103
+    -0x1.5b505d6b19f4b405dbb6b9ef18ad9e35p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 104
+    -0x1.5b505b80cefa7b6523305e22a4c06c28p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 105
+    -0x1.5b5059968400241fbb0583252b4c1185p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 106
+    -0x1.5f1349337820aba6ac332ded98347904p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 107
+    -0x1.5f13473e70baed6e4fa19cb1aefb9a04p-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 108
+    -0x1.5f13454969551f8db7e1db11f47dc315p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 109
+    0x1.66c3485061b3fe6a5d2f2e20f3da3783p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 110
+    0x1.66c34a5b97ce491a4338414cff9666e6p-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 111
+    0x1.66c34c66cde8a423da13eb5efee5340ep-6,
+    0x1.62e430p-6
+  },
+  { // Entry 112
+    0x1.6ab0d5d6d1d44992503e4b6f3b09f07ep-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 113
+    0x1.6ab0d7ed7ce1b7b4c5ee2919ab4f11e6p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 114
+    0x1.6ab0da0427ef4741ec75f440fd4eb0f9p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 115
+    0x1.72b838327ae1f9d7e70418a476da480dp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 116
+    0x1.72b83a60d1e9230cb3b52cd1200b8dcdp-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 117
+    0x1.72b83c8f28f0920c614fc4456de049fcp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 118
+    0x1.837f006a90e2d9adf9b9b9c5850970d1p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 119
+    0x1.837f02cb70a3406e2a79d1750af1d7e2p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 120
+    0x1.837f052c50643f664b66a02ec5ac16dbp-3,
+    0x1.62e430p-3
+  },
+  { // Entry 121
+    0x1.a827940eca9f76673e51d2c4569cfb3ap-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 122
+    0x1.a82796e2de6a32d180ad0b353267983bp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 123
+    0x1.a82799b6f2365945a8c0fb40a27174dap-2,
+    0x1.62e430p-2
+  },
+  { // Entry 124
+    0x1.fffff820b8c9d86525e55f587e34861ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 125
+    0x1.fffffc20b8c3f91dec78cb8cd53a92e3p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 126
+    0x1.000000105c610ceb57967842bd59f094p0,
+    0x1.62e430p-1
+  },
+  { // Entry 127
+    0x1.7ffff820b8d19779692fb0fcc0281246p1,
+    0x1.62e42cp0
+  },
+  { // Entry 128
+    0x1.7ffffc20b8c5d8eaff4ac013cf734639p1,
+    0x1.62e42ep0
+  },
+  { // Entry 129
+    0x1.80000020b8c21a5c85e8b244ed151cd8p1,
+    0x1.62e430p0
+  },
+  { // Entry 130
+    0x1.dffff04171c22b43a28d8088c347bf1fp3,
+    0x1.62e42cp1
+  },
+  { // Entry 131
+    0x1.dffff8417193310a429b71e70d792186p3,
+    0x1.62e42ep1
+  },
+  { // Entry 132
+    0x1.e0000041718436d066c07ca312f8b318p3,
+    0x1.62e430p1
+  },
+  { // Entry 133
+    0x1.fdffe082e40047c89dfa41d09c1e1ef8p7,
+    0x1.62e42cp2
+  },
+  { // Entry 134
+    0x1.fdfff082e3445ee55b3fa84a5dd849c9p7,
+    0x1.62e42ep2
+  },
+  { // Entry 135
+    0x1.fe000082e30875fe393de286837f485dp7,
+    0x1.62e430p2
+  },
+  { // Entry 136
+    0x1.fffdc105c9f0548760a823b0dfdaeb66p15,
+    0x1.62e42cp3
+  },
+  { // Entry 137
+    0x1.fffde105c700b10c3e2a549fbdebb0dap15,
+    0x1.62e42ep3
+  },
+  { // Entry 138
+    0x1.fffe0105c6110d722173b0ea5050713ap15,
+    0x1.62e430p3
+  },
+  { // Entry 139
+    0x1.ffff82099b9fbc6d5dda406ad9f93354p31,
+    0x1.62e42cp4
+  },
+  { // Entry 140
+    0x1.ffffc2098fe12f101740ac9653f78fe3p31,
+    0x1.62e42ep4
+  },
+  { // Entry 141
+    0x1.00000104c611505d7f74a41433312dp32,
+    0x1.62e430p4
+  },
+  { // Entry 142
+    0x1.fffe082f28688d3872ab8aa69f3dc356p127,
+    0x1.62e42cp6
+  },
+  { // Entry 143
+    0x1.ffff082e6c7fed1d3fd5cff7e1f6058fp127,
+    0x1.62e42ep6
+  },
+  { // Entry 144
+    HUGE_VALF,
+    0x1.62e430p6
+  },
+  { // Entry 145
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da2p6
+  },
+  { // Entry 146
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da0p6
+  },
+  { // Entry 147
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1d9ep6
+  },
+  { // Entry 148
+    -0x1.c5041b725d705416b9a2fe9ecfd0f12fp-3,
+    -0x1.000002p-2
+  },
+  { // Entry 149
+    -0x1.c5041854df7d45e5f51a1b14e4b86234p-3,
+    -0x1.p-2
+  },
+  { // Entry 150
+    -0x1.c50416c620832945f52a143b7ab9cc40p-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 151
+    -0x1.e14af110ec3368f6b0943acd54603c38p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 152
+    -0x1.e14aed893eef3c3c14ed960d0a2b5054p-4,
+    -0x1.p-3
+  },
+  { // Entry 153
+    -0x1.e14aebc5684cd12688af02d3c4c33ae5p-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 154
+    -0x1.f05407faf2db6e62ca86b906177f8ab4p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 155
+    -0x1.f0540438fd5c31a1ce01f9f6ca74502bp-5,
+    -0x1.p-4
+  },
+  { // Entry 156
+    -0x1.f0540258029c6629cdc6e0688e0c17d1p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 157
+    -0x1.f8152ecf12fe0f7cc4305325eb3cc27ep-6,
+    -0x1.000002p-5
+  },
+  { // Entry 158
+    -0x1.f8152aee9450dd69fea80d113b1945c7p-6,
+    -0x1.p-5
+  },
+  { // Entry 159
+    -0x1.f81528fe54fa2d1da3d441866c2e2c68p-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 160
+    -0x1.fc0553f461432629324524f0e3968455p-7,
+    -0x1.000002p-6
+  },
+  { // Entry 161
+    -0x1.fc055004416db60bbd08aac54a956e76p-7,
+    -0x1.p-6
+  },
+  { // Entry 162
+    -0x1.fc054e0c3182f22ca2e9fdd61fb3c4d6p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 163
+    -0x1.fe0158a2f6d2d965d520469a1b630418p-8,
+    -0x1.000002p-7
+  },
+  { // Entry 164
+    -0x1.fe0154aaeed83401a07666b3bbde908fp-8,
+    -0x1.p-7
+  },
+  { // Entry 165
+    -0x1.fe0152aeeadadb5b7a2976ba2d283634p-8,
+    -0x1.fffffep-8
+  },
+  { // Entry 166
+    -0x1.ff00593c0642dfd6d7680bd2846289e8p-9,
+    -0x1.000002p-8
+  },
+  { // Entry 167
+    -0x1.ff00554004438e52e1ee7b503e63818cp-9,
+    -0x1.p-8
+  },
+  { // Entry 168
+    -0x1.ff0053420343e293e5b233ee2249277bp-9,
+    -0x1.fffffep-9
+  },
+  { // Entry 169
+    -0x1.ff801950ab6ed1ed50ba61050b26a7c2p-10,
+    -0x1.000002p-9
+  },
+  { // Entry 170
+    -0x1.ff801552aaeee93efbe93ef05c2dcb20p-10,
+    -0x1.p-9
+  },
+  { // Entry 171
+    -0x1.ff801353aaaef3689150b624e4d2f2dap-10,
+    -0x1.fffffep-10
+  },
+  { // Entry 172
+    -0x1.ffc009540024406c8302028c7714cceap-11,
+    -0x1.000002p-10
+  },
+  { // Entry 173
+    -0x1.ffc0055500044416c30c23c298990114p-11,
+    -0x1.p-10
+  },
+  { // Entry 174
+    -0x1.ffc003557ff4452c130b34ed9d5c017ep-11,
+    -0x1.fffffep-11
+  },
+  { // Entry 175
+    -0x1.fff80415352b2acd9a413af860684c9cp-14,
+    -0x1.000002p-13
+  },
+  { // Entry 176
+    -0x1.fff80015552aaaeeee93e9a69a01a076p-14,
+    -0x1.p-13
+  },
+  { // Entry 177
+    -0x1.fff7fe15652a6ae7997d3dfdfecc3a6bp-14,
+    -0x1.fffffep-14
+  },
+  { // Entry 178
+    0x1.22d78dc6ea7dff08931d74663f93346dp-2,
+    0x1.fffffep-3
+  },
+  { // Entry 179
+    0x1.22d78f0fa06199d9ef0eda6eaaf94d3bp-2,
+    0x1.p-2
+  },
+  { // Entry 180
+    0x1.22d791a10c29c60511d91ff00eb6fedap-2,
+    0x1.000002p-2
+  },
+  { // Entry 181
+    0x1.10b021b964e233996eb974cb64f11f96p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 182
+    0x1.10b022db7ae67ce76b441c27035c6a13p-3,
+    0x1.p-3
+  },
+  { // Entry 183
+    0x1.10b0251fa6ef7c4ba6003cf91fe85dc9p-3,
+    0x1.000002p-3
+  },
+  { // Entry 184
+    0x1.082b566cb2380e0be0d559a0150172f7p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 185
+    0x1.082b577d34ed7d5b1a019e225c9a951bp-4,
+    0x1.p-4
+  },
+  { // Entry 186
+    0x1.082b599e3a588f120e61af4869c98421p-4,
+    0x1.000002p-4
+  },
+  { // Entry 187
+    0x1.040abf1a2f8334cf7c9ee0b1d34ae144p-5,
+    0x1.fffffep-6
+  },
+  { // Entry 188
+    0x1.040ac0224fd931c17a1075750192f4d5p-5,
+    0x1.p-5
+  },
+  { // Entry 189
+    0x1.040ac232908544687d03fabf568a3de2p-5,
+    0x1.000002p-5
+  },
+  { // Entry 190
+    0x1.0202ac5370d9ab5845b0e78f0b42a783p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 191
+    0x1.0202ad5778e45eae192cfa41139ad15bp-6,
+    0x1.p-6
+  },
+  { // Entry 192
+    0x1.0202af5f88f9d18a20a5b04c4fc86c51p-6,
+    0x1.000002p-6
+  },
+  { // Entry 193
+    0x1.0100a9fe202c311aef67a75b93d0aff7p-7,
+    0x1.fffffep-8
+  },
+  { // Entry 194
+    0x1.0100ab00222d861931c15e39b44e9937p-7,
+    0x1.p-7
+  },
+  { // Entry 195
+    0x1.0100ad0426303621c27cd3ff977212f4p-7,
+    0x1.000002p-7
+  },
+  { // Entry 196
+    0x1.008029b456f7a855530b151055fcccd9p-8,
+    0x1.fffffep-9
+  },
+  { // Entry 197
+    0x1.00802ab55777d28a2a42d26aa9ee67bcp-8,
+    0x1.p-8
+  },
+  { // Entry 198
+    0x1.00802cb7587829f6da32ce4058b94099p-8,
+    0x1.000002p-8
+  },
+  { // Entry 199
+    0x1.004009ab80021fe4a3a269b377bf18d6p-9,
+    0x1.fffffep-10
+  },
+  { // Entry 200
+    0x1.00400aac002224fa83ab7ae5e991e737p-9,
+    0x1.p-9
+  },
+  { // Entry 201
+    0x1.00400cad006230a703eda58bed592121p-9,
+    0x1.000002p-9
+  },
+  { // Entry 202
+    0x1.002001aa954f77038c5ec3e966c711f3p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 203
+    0x1.002002aad557778e39b3a1ba49dea952p-10,
+    0x1.p-10
+  },
+  { // Entry 204
+    0x1.002004ab55677963c4635dec1c0ebe87p-10,
+    0x1.000002p-10
+  },
+  { // Entry 205
+    0x1.0003ff0aa2bfe025cd19a5ad38b10c96p-13,
+    0x1.fffffep-14
+  },
+  { // Entry 206
+    0x1.0004000aaac00022224fa52e531931c1p-13,
+    0x1.p-13
+  },
+  { // Entry 207
+    0x1.0004020abac04032cd7ba730cfeb8c1ep-13,
+    0x1.000002p-13
+  },
+  { // Entry 208
+    -0x1.ffffffffffffffffffffffe6963841c5p-1,
+    -0x1.000002p6
+  },
+  { // Entry 209
+    -0x1.ffffffffffffffffffffffe6962b8cdep-1,
+    -0x1.p6
+  },
+  { // Entry 210
+    -0x1.ffffffffffffffffffffffe696253268p-1,
+    -0x1.fffffep5
+  },
+  { // Entry 211
+    -0x1.fffffffffff8dee88a6dbd53498e13ccp-1,
+    -0x1.000002p5
+  },
+  { // Entry 212
+    -0x1.fffffffffff8dee6c227a6e5f875997fp-1,
+    -0x1.p5
+  },
+  { // Entry 213
+    -0x1.fffffffffff8dee5de0470e8ba3e9067p-1,
+    -0x1.fffffep4
+  },
+  { // Entry 214
+    -0x1.fffffc3955017796a5082c3f27acd321p-1,
+    -0x1.000002p4
+  },
+  { // Entry 215
+    -0x1.fffffc395488a22f46a4b3411819a2eep-1,
+    -0x1.p4
+  },
+  { // Entry 216
+    -0x1.fffffc39544c3775ed71e1eab18a7021p-1,
+    -0x1.fffffep3
+  },
+  { // Entry 217
+    -0x1.ffd407c0b763bb2c6c6d1f372c7be8d8p-1,
+    -0x1.000002p3
+  },
+  { // Entry 218
+    -0x1.ffd407bdf7dfb0a688065730fe0231c2p-1,
+    -0x1.p3
+  },
+  { // Entry 219
+    -0x1.ffd407bc981d9ae67d3bdf5125871e80p-1,
+    -0x1.fffffep2
+  },
+  { // Entry 220
+    -0x1.f69f556ef4b73a33a7188427d84778e4p-1,
+    -0x1.000002p2
+  },
+  { // Entry 221
+    -0x1.f69f5523ef6185c40ba87f669ea8ee15p-1,
+    -0x1.p2
+  },
+  { // Entry 222
+    -0x1.f69f54fe6cb5ca7c3a7b03828a0e81ebp-1,
+    -0x1.fffffep1
+  },
+  { // Entry 223
+    -0x1.bab556862ca0e3235d497e670376d71fp-1,
+    -0x1.000002p1
+  },
+  { // Entry 224
+    -0x1.bab5557101f8d1809224547b4bf5aa38p-1,
+    -0x1.p1
+  },
+  { // Entry 225
+    -0x1.bab554e66ca328ef2e4cf602f5709f13p-1,
+    -0x1.fffffep0
+  },
+  { // Entry 226
+    -0x1.43a54fc74de82be41b573089f7ac0364p-1,
+    -0x1.000002p0
+  },
+  { // Entry 227
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.p0
+  },
+  { // Entry 228
+    -0x1.43a54d923dd43235b78c235547ec9cdcp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 229
+    0x1.4259323902dbc6e62e3e07be26cd904cp92,
+    0x1.fffffep5
+  },
+  { // Entry 230
+    0x1.425982cf597cd205ce3d5b3edb031756p92,
+    0x1.p6
+  },
+  { // Entry 231
+    0x1.425a23fc432fb5d556006a3d8e7ee11bp92,
+    0x1.000002p6
+  },
+  { // Entry 232
+    0x1.1f43d8dc3904b8ed87a5abd50621706ap46,
+    0x1.fffffep4
+  },
+  { // Entry 233
+    0x1.1f43fcc4b65ec7d84788401842174074p46,
+    0x1.p5
+  },
+  { // Entry 234
+    0x1.1f444495be8a1616a1e5e388779bc146p46,
+    0x1.000002p5
+  },
+  { // Entry 235
+    0x1.0f2eaa1794b8f3edb5c10d26a51f420fp23,
+    0x1.fffffep3
+  },
+  { // Entry 236
+    0x1.0f2ebb0a8002049223f170882b5ee5efp23,
+    0x1.p4
+  },
+  { // Entry 237
+    0x1.0f2edcf059c1b22312bed964006ee633p23,
+    0x1.000002p4
+  },
+  { // Entry 238
+    0x1.747e9c2f7bb6cf5a276ee08236c2d6c3p11,
+    0x1.fffffep2
+  },
+  { // Entry 239
+    0x1.747ea7d470c6df0be00e084a815d1de6p11,
+    0x1.p3
+  },
+  { // Entry 240
+    0x1.747ebf1e5bfe757019de4e22b113fde9p11,
+    0x1.000002p3
+  },
+  { // Entry 241
+    0x1.acc8fc0f4fa7a2f2459a6ef53c315f0fp5,
+    0x1.fffffep1
+  },
+  { // Entry 242
+    0x1.acc902e273a58678d6d3bfdb93db96d0p5,
+    0x1.p2
+  },
+  { // Entry 243
+    0x1.acc91088bbf33336f0ee52b1ad858e43p5,
+    0x1.000002p2
+  },
+  { // Entry 244
+    0x1.98e647db814773f419262ee477a98616p2,
+    0x1.fffffep0
+  },
+  { // Entry 245
+    0x1.98e64b8d4ddadcc33a3ba206b68abba8p2,
+    0x1.p1
+  },
+  { // Entry 246
+    0x1.98e652f0e717d92d15cd610022ae51e3p2,
+    0x1.000002p1
+  },
+  { // Entry 247
+    0x1.b7e14eaaa99d23d07a843854f80eb965p0,
+    0x1.fffffep-1
+  },
+  { // Entry 248
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.p0
+  },
+  { // Entry 249
+    0x1.b7e156d24d955f43402b1af2d27591c2p0,
+    0x1.000002p0
+  },
+  { // Entry 250
+    HUGE_VALF,
+    0x1.p124
+  },
+  { // Entry 251
+    HUGE_VALF,
+    0x1.99999ap124
+  },
+  { // Entry 252
+    HUGE_VALF,
+    0x1.19999ap125
+  },
+  { // Entry 253
+    HUGE_VALF,
+    0x1.666668p125
+  },
+  { // Entry 254
+    HUGE_VALF,
+    0x1.b33334p125
+  },
+  { // Entry 255
+    HUGE_VALF,
+    0x1.p126
+  },
+  { // Entry 256
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 257
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 258
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 259
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 260
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 261
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 262
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 263
+    0x1.6240490a165620d9b922aaa22a8e4c09p4,
+    0x1.921fb6p1
+  },
+  { // Entry 264
+    -0x1.e9dfdda51a16cb6a6c29449e73dceabap-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 265
+    0x1.e7bdbace4109994c2555657347d02f77p1,
+    0x1.921fb6p0
+  },
+  { // Entry 266
+    -0x1.9590cf323040b06ca55a506162a742f5p-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 267
+    0x1.b7e156d24d955f43402b1af2d27591c2p0,
+    0x1.000002p0
+  },
+  { // Entry 268
+    -0x1.43a54fc74de82be41b573089f7ac0364p-1,
+    -0x1.000002p0
+  },
+  { // Entry 269
+    0x1.b7e151628aed2a6abf7158809cf4f3c7p0,
+    0x1.p0
+  },
+  { // Entry 270
+    -0x1.43a54e4e988641ca8a4270fadf560de4p-1,
+    -0x1.p0
+  },
+  { // Entry 271
+    0x1.b7e14eaaa99d23d07a843854f80eb965p0,
+    0x1.fffffep-1
+  },
+  { // Entry 272
+    -0x1.43a54d923dd43235b78c235547ec9cdcp-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 273
+    0x1.317acdf6c5663201980ec69bd74868acp0,
+    0x1.921fb6p-1
+  },
+  { // Entry 274
+    -0x1.168f476e16a8feaa2183b486fed0e5cep-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 275
+    0x1.00000200000000000000000000000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 276
+    -0x1.000001fffffffffffffffffffffffffdp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 277
+    0x1.00000000000000000000000000000002p-126,
+    0x1.p-126
+  },
+  { // Entry 278
+    -0x1.fffffffffffffffffffffffffffffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 279
+    0x1.fffffc00000000000000000000000003p-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 280
+    -0x1.fffffbfffffffffffffffffffffffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 281
+    0x1.fffff800000000000000000000000003p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 282
+    -0x1.fffff7fffffffffffffffffffffffffcp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 283
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 285
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 286
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 287
+    0.0,
+    0.0f
+  },
+  { // Entry 288
+    -0.0,
+    -0.0f
+  },
+  { // Entry 289
+    0x1.ffff082e6c7fed1d3fd5cff7e1f6058fp127,
+    0x1.62e42ep6
+  },
+  { // Entry 290
+    HUGE_VALF,
+    0x1.62e430p6
+  }
+};
diff --git a/tests/math_data/fabs_intel_data.h b/tests/math_data/fabs_intel_data.h
new file mode 100644
index 0000000..92db0ca
--- /dev/null
+++ b/tests/math_data/fabs_intel_data.h
@@ -0,0 +1,494 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_fabs_intel_data[] = {
+  { // Entry 0
+    0x1.p-10,
+    -0x1.0p-10
+  },
+  { // Entry 1
+    0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2
+    0.0,
+    -0.0
+  },
+  { // Entry 3
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 4
+    0x1.fffffffffffff0p999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 5
+    0x1.p1000,
+    0x1.0p1000
+  },
+  { // Entry 6
+    0x1.00000000000010p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 7
+    0x1.fffffffffffff0p199,
+    0x1.fffffffffffffp199
+  },
+  { // Entry 8
+    0x1.p200,
+    0x1.0p200
+  },
+  { // Entry 9
+    0x1.00000000000010p200,
+    0x1.0000000000001p200
+  },
+  { // Entry 10
+    0x1.fffffffffffff0p99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 11
+    0x1.p100,
+    0x1.0p100
+  },
+  { // Entry 12
+    0x1.00000000000010p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 13
+    0x1.fffffffffffff0p19,
+    0x1.fffffffffffffp19
+  },
+  { // Entry 14
+    0x1.p20,
+    0x1.0p20
+  },
+  { // Entry 15
+    0x1.00000000000010p20,
+    0x1.0000000000001p20
+  },
+  { // Entry 16
+    0x1.fffffffffffff0p14,
+    0x1.fffffffffffffp14
+  },
+  { // Entry 17
+    0x1.p15,
+    0x1.0p15
+  },
+  { // Entry 18
+    0x1.00000000000010p15,
+    0x1.0000000000001p15
+  },
+  { // Entry 19
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 20
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 21
+    0x1.00000000000010p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 22
+    0x1.fffffffffffff0p8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 23
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 24
+    0x1.00000000000010p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 25
+    0x1.fffffffffffff0p6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 26
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 27
+    0x1.00000000000010p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 28
+    0x1.fffffffffffff0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 29
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 30
+    0x1.00000000000010p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 31
+    0x1.fffffffffffff0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 32
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 33
+    0x1.00000000000010p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 34
+    0x1.fffffffffffff0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 35
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 36
+    0x1.00000000000010p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 37
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 38
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 39
+    0x1.00000000000010p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 40
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 41
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 42
+    0x1.00000000000010p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 43
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 44
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 45
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 46
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 47
+    0x1.p-1,
+    0x1.0p-1
+  },
+  { // Entry 48
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 49
+    0x1.fffffffffffff0p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 50
+    0x1.p-2,
+    0x1.0p-2
+  },
+  { // Entry 51
+    0x1.00000000000010p-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 52
+    0x1.fffffffffffff0p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 53
+    0x1.p-3,
+    0x1.0p-3
+  },
+  { // Entry 54
+    0x1.00000000000010p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 56
+    0x1.p-4,
+    0x1.0p-4
+  },
+  { // Entry 57
+    0x1.00000000000010p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 59
+    0x1.p-5,
+    0x1.0p-5
+  },
+  { // Entry 60
+    0x1.00000000000010p-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 61
+    0x1.fffffffffffff0p-8,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 62
+    0x1.p-7,
+    0x1.0p-7
+  },
+  { // Entry 63
+    0x1.00000000000010p-7,
+    0x1.0000000000001p-7
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p-10,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 65
+    0x1.p-9,
+    0x1.0p-9
+  },
+  { // Entry 66
+    0x1.00000000000010p-9,
+    0x1.0000000000001p-9
+  },
+  { // Entry 67
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 68
+    0x1.p-10,
+    0x1.0p-10
+  },
+  { // Entry 69
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 70
+    0x1.fffffffffffff0p-16,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 71
+    0x1.p-15,
+    0x1.0p-15
+  },
+  { // Entry 72
+    0x1.00000000000010p-15,
+    0x1.0000000000001p-15
+  },
+  { // Entry 73
+    0x1.fffffffffffff0p-21,
+    0x1.fffffffffffffp-21
+  },
+  { // Entry 74
+    0x1.p-20,
+    0x1.0p-20
+  },
+  { // Entry 75
+    0x1.00000000000010p-20,
+    0x1.0000000000001p-20
+  },
+  { // Entry 76
+    0x1.fffffffffffff0p-101,
+    0x1.fffffffffffffp-101
+  },
+  { // Entry 77
+    0x1.p-100,
+    0x1.0p-100
+  },
+  { // Entry 78
+    0x1.00000000000010p-100,
+    0x1.0000000000001p-100
+  },
+  { // Entry 79
+    0x1.fffffffffffff0p-201,
+    0x1.fffffffffffffp-201
+  },
+  { // Entry 80
+    0x1.p-200,
+    0x1.0p-200
+  },
+  { // Entry 81
+    0x1.00000000000010p-200,
+    0x1.0000000000001p-200
+  },
+  { // Entry 82
+    0x1.fffffffffffff0p-1001,
+    0x1.fffffffffffffp-1001
+  },
+  { // Entry 83
+    0x1.p-1000,
+    0x1.0p-1000
+  },
+  { // Entry 84
+    0x1.00000000000010p-1000,
+    0x1.0000000000001p-1000
+  },
+  { // Entry 85
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 87
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 88
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 91
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 92
+    0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 93
+    0x1.921fb54442d180p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 94
+    0x1.921fb54442d180p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 95
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 96
+    0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 97
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 98
+    0x1.00000000000010p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 99
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 100
+    0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.921fb54442d180p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 104
+    0x1.921fb54442d180p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 105
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 106
+    0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 107
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 108
+    0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 109
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 110
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 111
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 112
+    0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 113
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 114
+    0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 115
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 116
+    0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    0.0,
+    0.0
+  },
+  { // Entry 118
+    0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/fabsf_intel_data.h b/tests/math_data/fabsf_intel_data.h
new file mode 100644
index 0000000..eb426b6
--- /dev/null
+++ b/tests/math_data/fabsf_intel_data.h
@@ -0,0 +1,446 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_fabsf_intel_data[] = {
+  { // Entry 0
+    0x1.p-10,
+    -0x1.p-10
+  },
+  { // Entry 1
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2
+    0.0,
+    0.0
+  },
+  { // Entry 3
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 4
+    0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 5
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 6
+    0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 7
+    0x1.fffffep19,
+    0x1.fffffep19
+  },
+  { // Entry 8
+    0x1.p20,
+    0x1.p20
+  },
+  { // Entry 9
+    0x1.000002p20,
+    0x1.000002p20
+  },
+  { // Entry 10
+    0x1.fffffep14,
+    0x1.fffffep14
+  },
+  { // Entry 11
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 12
+    0x1.000002p15,
+    0x1.000002p15
+  },
+  { // Entry 13
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 14
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 15
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 16
+    0x1.fffffep8,
+    0x1.fffffep8
+  },
+  { // Entry 17
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 18
+    0x1.000002p9,
+    0x1.000002p9
+  },
+  { // Entry 19
+    0x1.fffffep6,
+    0x1.fffffep6
+  },
+  { // Entry 20
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 21
+    0x1.000002p7,
+    0x1.000002p7
+  },
+  { // Entry 22
+    0x1.fffffep4,
+    0x1.fffffep4
+  },
+  { // Entry 23
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 24
+    0x1.000002p5,
+    0x1.000002p5
+  },
+  { // Entry 25
+    0x1.fffffep3,
+    0x1.fffffep3
+  },
+  { // Entry 26
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 27
+    0x1.000002p4,
+    0x1.000002p4
+  },
+  { // Entry 28
+    0x1.fffffep2,
+    0x1.fffffep2
+  },
+  { // Entry 29
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 30
+    0x1.000002p3,
+    0x1.000002p3
+  },
+  { // Entry 31
+    0x1.fffffep1,
+    0x1.fffffep1
+  },
+  { // Entry 32
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 33
+    0x1.000002p2,
+    0x1.000002p2
+  },
+  { // Entry 34
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 35
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 36
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 37
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 38
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 39
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 40
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 41
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 42
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 43
+    0x1.fffffep-3,
+    0x1.fffffep-3
+  },
+  { // Entry 44
+    0x1.p-2,
+    0x1.p-2
+  },
+  { // Entry 45
+    0x1.000002p-2,
+    0x1.000002p-2
+  },
+  { // Entry 46
+    0x1.fffffep-4,
+    0x1.fffffep-4
+  },
+  { // Entry 47
+    0x1.p-3,
+    0x1.p-3
+  },
+  { // Entry 48
+    0x1.000002p-3,
+    0x1.000002p-3
+  },
+  { // Entry 49
+    0x1.fffffep-5,
+    0x1.fffffep-5
+  },
+  { // Entry 50
+    0x1.p-4,
+    0x1.p-4
+  },
+  { // Entry 51
+    0x1.000002p-4,
+    0x1.000002p-4
+  },
+  { // Entry 52
+    0x1.fffffep-6,
+    0x1.fffffep-6
+  },
+  { // Entry 53
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 54
+    0x1.000002p-5,
+    0x1.000002p-5
+  },
+  { // Entry 55
+    0x1.fffffep-8,
+    0x1.fffffep-8
+  },
+  { // Entry 56
+    0x1.p-7,
+    0x1.p-7
+  },
+  { // Entry 57
+    0x1.000002p-7,
+    0x1.000002p-7
+  },
+  { // Entry 58
+    0x1.fffffep-10,
+    0x1.fffffep-10
+  },
+  { // Entry 59
+    0x1.p-9,
+    0x1.p-9
+  },
+  { // Entry 60
+    0x1.000002p-9,
+    0x1.000002p-9
+  },
+  { // Entry 61
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-16,
+    0x1.fffffep-16
+  },
+  { // Entry 65
+    0x1.p-15,
+    0x1.p-15
+  },
+  { // Entry 66
+    0x1.000002p-15,
+    0x1.000002p-15
+  },
+  { // Entry 67
+    0x1.fffffep-21,
+    0x1.fffffep-21
+  },
+  { // Entry 68
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 69
+    0x1.000002p-20,
+    0x1.000002p-20
+  },
+  { // Entry 70
+    0x1.fffffep-101,
+    0x1.fffffep-101
+  },
+  { // Entry 71
+    0x1.p-100,
+    0x1.p-100
+  },
+  { // Entry 72
+    0x1.000002p-100,
+    0x1.000002p-100
+  },
+  { // Entry 73
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 74
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 75
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 76
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 77
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 78
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 79
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 80
+    0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 81
+    0x1.921fb6p1,
+    0x1.921fb6p1
+  },
+  { // Entry 82
+    0x1.921fb6p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 83
+    0x1.921fb6p0,
+    0x1.921fb6p0
+  },
+  { // Entry 84
+    0x1.921fb6p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 85
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 86
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 87
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 89
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.921fb6p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 92
+    0x1.921fb6p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 93
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 94
+    0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 95
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 96
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 97
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 98
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 99
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 100
+    0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 101
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 102
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 103
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 104
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 105
+    0.0,
+    0.0f
+  },
+  { // Entry 106
+    0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/fdim_intel_data.h b/tests/math_data/fdim_intel_data.h
new file mode 100644
index 0000000..c448d96
--- /dev/null
+++ b/tests/math_data/fdim_intel_data.h
@@ -0,0 +1,1788 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_fdim_intel_data[] = {
+  { // Entry 0
+    0x1.334d6a161e4f48p-2,
+    -0x1.999999999999fp-3,
+    -0x1.000d1b71758e2p-1
+  },
+  { // Entry 1
+    0x1.99b3d07c84b5c8p-2,
+    -0x1.999999999999fp-3,
+    -0x1.33404ea4a8c16p-1
+  },
+  { // Entry 2
+    0x1.99999999999988p-12,
+    -0x1.999999999999fp-13,
+    -0x1.3333333333334p-11
+  },
+  { // Entry 3
+    0x1.f07c1f07c1f0f8p-12,
+    -0x1.dbcc48676f2f9p-13,
+    -0x1.6f31219dbcc46p-11
+  },
+  { // Entry 4
+    0x1.111e2c82869f18p-1,
+    -0x1.ddddddddddde1p-2,
+    -0x1.00068db8bac71p0
+  },
+  { // Entry 5
+    0x1.111e2c82869ea8p-1,
+    -0x1.dddddddddddefp-2,
+    -0x1.00068db8bac71p0
+  },
+  { // Entry 6
+    0x1.p1,
+    0x1.0p-1074,
+    -0x1.0p1
+  },
+  { // Entry 7
+    0x1.af286bca1af30800000000000080p-4,
+    0x1.0000000000001p-57,
+    -0x1.af286bca1af30p-4
+  },
+  { // Entry 8
+    0x1.0000000000000fffffffffffffffffffp350,
+    0x1.0000000000001p350,
+    0x1.af286bca1af20p-4
+  },
+  { // Entry 9
+    0x1.af286bca1af30800800000000080p-4,
+    0x1.0010000000001p-57,
+    -0x1.af286bca1af30p-4
+  },
+  { // Entry 10
+    0x1.0c30c30c30c308p-10,
+    0x1.8618618618610p-15,
+    -0x1.0p-10
+  },
+  { // Entry 11
+    0x1.a4924924924938p-2,
+    0x1.ffffffffffffep-4,
+    -0x1.2492492492494p-2
+  },
+  { // Entry 12
+    0x1.7ffffffffffff8p-51,
+    0x1.ffffffffffffep-53,
+    -0x1.0p-51
+  },
+  { // Entry 13
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.9p-1068
+  },
+  { // Entry 14
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 15
+    0.0,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 16
+    0x1.p1,
+    -0x1.0p3,
+    -0x1.4p3
+  },
+  { // Entry 17
+    0x1.p2,
+    -0x1.8p2,
+    -0x1.4p3
+  },
+  { // Entry 18
+    0x1.80p2,
+    -0x1.0p2,
+    -0x1.4p3
+  },
+  { // Entry 19
+    0x1.p3,
+    -0x1.0p1,
+    -0x1.4p3
+  },
+  { // Entry 20
+    0x1.40p3,
+    0.0,
+    -0x1.4p3
+  },
+  { // Entry 21
+    0x1.80p3,
+    0x1.0p1,
+    -0x1.4p3
+  },
+  { // Entry 22
+    0x1.c0p3,
+    0x1.0p2,
+    -0x1.4p3
+  },
+  { // Entry 23
+    0x1.p4,
+    0x1.8p2,
+    -0x1.4p3
+  },
+  { // Entry 24
+    0x1.20p4,
+    0x1.0p3,
+    -0x1.4p3
+  },
+  { // Entry 25
+    0x1.40p4,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 26
+    0.0,
+    -0x1.8p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 27
+    0.0,
+    -0x1.8p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 28
+    0.0,
+    -0x1.8p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 29
+    0.0,
+    -0x1.8p-1073,
+    -0.0
+  },
+  { // Entry 30
+    0.0,
+    -0x1.8p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 31
+    0.0,
+    -0x1.8p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 32
+    0.0,
+    -0x1.8p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 33
+    0x1.p-1074,
+    -0x1.0p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 34
+    0.0,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 35
+    0.0,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 36
+    0.0,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 37
+    0.0,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 38
+    0.0,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 39
+    0.0,
+    -0x1.0p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 40
+    0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.8p-1073
+  },
+  { // Entry 41
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 42
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 43
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 44
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 45
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 46
+    0.0,
+    -0x1.0p-1074,
+    0x1.8p-1073
+  },
+  { // Entry 47
+    0x1.80p-1073,
+    -0.0,
+    -0x1.8p-1073
+  },
+  { // Entry 48
+    0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 49
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 50
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 51
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 52
+    0.0,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 53
+    0.0,
+    -0.0,
+    0x1.8p-1073
+  },
+  { // Entry 54
+    0x1.p-1072,
+    0x1.0p-1074,
+    -0x1.8p-1073
+  },
+  { // Entry 55
+    0x1.80p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 56
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 57
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 58
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 59
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 60
+    0.0,
+    0x1.0p-1074,
+    0x1.8p-1073
+  },
+  { // Entry 61
+    0x1.40p-1072,
+    0x1.0p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 62
+    0x1.p-1072,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 63
+    0x1.80p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 64
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 65
+    0x1.p-1074,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 66
+    0.0,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 67
+    0.0,
+    0x1.0p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 68
+    0x1.80p-1072,
+    0x1.8p-1073,
+    -0x1.8p-1073
+  },
+  { // Entry 69
+    0x1.40p-1072,
+    0x1.8p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 70
+    0x1.p-1072,
+    0x1.8p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 71
+    0x1.80p-1073,
+    0x1.8p-1073,
+    -0.0
+  },
+  { // Entry 72
+    0x1.p-1073,
+    0x1.8p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 73
+    0x1.p-1074,
+    0x1.8p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 74
+    0.0,
+    0x1.8p-1073,
+    0x1.8p-1073
+  },
+  { // Entry 75
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 76
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 77
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 78
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 79
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 82
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 83
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 84
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 85
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp1022
+  },
+  { // Entry 87
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 88
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 89
+    0.0,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 90
+    0x1.p-1074,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 91
+    0.0,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 92
+    0.0,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 93
+    0x1.p-1073,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 94
+    0x1.p-1074,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 95
+    0.0,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 96
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 98
+    0.0,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 99
+    0x1.p-103,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 100
+    0.0,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 101
+    0.0,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 102
+    0x1.80p-102,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 103
+    0x1.p-102,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 104
+    0.0,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 105
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 108
+    0x1.p-63,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 109
+    0.0,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 110
+    0.0,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 111
+    0x1.80p-62,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 112
+    0x1.p-62,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 113
+    0.0,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 114
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 116
+    0.0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 117
+    0x1.p-54,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 118
+    0.0,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 119
+    0.0,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 120
+    0x1.80p-53,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 121
+    0x1.p-53,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 122
+    0.0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 123
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 126
+    0x1.p-52,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 127
+    0.0,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 128
+    0.0,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 129
+    0x1.80p-51,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 130
+    0x1.p-51,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 131
+    0.0,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 132
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 133
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 134
+    0.0,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 135
+    0x1.p-43,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 136
+    0.0,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 137
+    0.0,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 138
+    0x1.80p-42,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 139
+    0x1.p-42,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 140
+    0.0,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 142
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 143
+    0.0,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 144
+    0x1.p-3,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 146
+    0.0,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 147
+    0x1.80p-2,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 148
+    0x1.p-2,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 149
+    0.0,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 150
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 151
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 152
+    0.0,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 153
+    0x1.p970,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 154
+    0.0,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 155
+    0.0,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 156
+    0x1.80p971,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 157
+    0x1.p971,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 158
+    0.0,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 159
+    0.0,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 160
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 161
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 162
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 163
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 164
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 165
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 166
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 167
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 168
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 169
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 170
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 171
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 172
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 173
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 174
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 175
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 176
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 177
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 178
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 179
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 180
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 182
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 183
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 184
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 185
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 186
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 187
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 188
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 189
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 190
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 191
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 192
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 193
+    0x1.fffffffffffff0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 194
+    0x1.p-1021,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 195
+    0x1.p0,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 196
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 197
+    HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 198
+    0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 201
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 202
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 203
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 204
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 205
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 206
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 207
+    0x1.fffffffffffff0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 208
+    0x1.p0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 209
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 210
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 211
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 212
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 213
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 214
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 215
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 217
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 218
+    0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 219
+    0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 220
+    0x1.00000000000010p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 221
+    0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 222
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 224
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 225
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 227
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 228
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 229
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 230
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 231
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 233
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 234
+    0x1.p0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 235
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 236
+    HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 237
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 238
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 239
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 240
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 241
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 242
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 243
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 244
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 245
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 246
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 247
+    0x1.p0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 248
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 250
+    0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 251
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 252
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 253
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 254
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 255
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 256
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 257
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 258
+    0x1.ffffffffffffc0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 259
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 260
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 261
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 262
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 263
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 264
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 265
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 266
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 267
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 268
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 269
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 270
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 271
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 272
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 273
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 274
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 275
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 276
+    0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 277
+    0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 278
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 279
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 280
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 281
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 282
+    0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 283
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 284
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 285
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 286
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 287
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 289
+    0.0,
+    -0x1.fffffffffffffp-1,
+    HUGE_VAL
+  },
+  { // Entry 290
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 291
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1022
+  },
+  { // Entry 292
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 293
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 294
+    0.0,
+    -0x1.fffffffffffffp-1,
+    0.0
+  },
+  { // Entry 295
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 297
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 298
+    0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1022
+  },
+  { // Entry 299
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 300
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 301
+    HUGE_VAL,
+    -0x1.fffffffffffffp-1,
+    -HUGE_VAL
+  },
+  { // Entry 302
+    0.0,
+    -0x1.0p0,
+    HUGE_VAL
+  },
+  { // Entry 303
+    0.0,
+    -0x1.0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 304
+    0.0,
+    -0x1.0p0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    0.0,
+    -0x1.0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 306
+    0.0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 307
+    0.0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 308
+    0.0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 309
+    0.0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 310
+    0.0,
+    -0x1.0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 311
+    0.0,
+    -0x1.0p0,
+    -0x1.0p-1022
+  },
+  { // Entry 312
+    0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 313
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 314
+    HUGE_VAL,
+    -0x1.0p0,
+    -HUGE_VAL
+  },
+  { // Entry 315
+    0.0,
+    -0x1.0000000000001p0,
+    HUGE_VAL
+  },
+  { // Entry 316
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 317
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.0p-1022
+  },
+  { // Entry 318
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 319
+    0.0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 320
+    0.0,
+    -0x1.0000000000001p0,
+    0.0
+  },
+  { // Entry 321
+    0.0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 322
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 323
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 324
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1022
+  },
+  { // Entry 325
+    0.0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 326
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 327
+    HUGE_VAL,
+    -0x1.0000000000001p0,
+    -HUGE_VAL
+  },
+  { // Entry 328
+    0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 329
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 330
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 331
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 332
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 333
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 334
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 335
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 336
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 337
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 338
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 339
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 340
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 341
+    0.0,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 342
+    0.0,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 343
+    0.0,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 344
+    0.0,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 345
+    0.0,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 346
+    0.0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 347
+    0.0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 348
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 349
+    0.0,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 350
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 351
+    0.0,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 352
+    0.0,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    0.0,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/fdimf_intel_data.h b/tests/math_data/fdimf_intel_data.h
new file mode 100644
index 0000000..eb05983
--- /dev/null
+++ b/tests/math_data/fdimf_intel_data.h
@@ -0,0 +1,1793 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_fdimf_intel_data[] = {
+  { // Entry 0
+    0x1.861861p-14,
+    -0x1.86187ep-15,
+    -0x1.249250p-13
+  },
+  { // Entry 1
+    0x1.334d69p-2,
+    -0x1.99999ep-3,
+    -0x1.000d1cp-1
+  },
+  { // Entry 2
+    0x1.99b3d1p-2,
+    -0x1.99999ep-3,
+    -0x1.334050p-1
+  },
+  { // Entry 3
+    0x1.999999p-12,
+    -0x1.99999ep-13,
+    -0x1.333334p-11
+  },
+  { // Entry 4
+    0x1.111e2bp-1,
+    -0x1.dddde2p-2,
+    -0x1.00068ep0
+  },
+  { // Entry 5
+    0x1.111e29p-1,
+    -0x1.dddde6p-2,
+    -0x1.00068ep0
+  },
+  { // Entry 6
+    0x1.04a781p-11,
+    -0x1.f6b0fep-12,
+    -0x1.p-10
+  },
+  { // Entry 7
+    0x1.02960bp-11,
+    -0x1.fad3eap-12,
+    -0x1.p-10
+  },
+  { // Entry 8
+    0x1.p1,
+    0x1.p-149,
+    -0x1.p1
+  },
+  { // Entry 9
+    0x1.000001fffffffffffff286bac0p73,
+    0x1.000002p73,
+    0x1.af28a8p-4
+  },
+  { // Entry 10
+    0x1.249269p-2,
+    0x1.08p-21,
+    -0x1.249248p-2
+  },
+  { // Entry 11
+    0x1.af2851p-4,
+    0x1.08p-23,
+    -0x1.af2830p-4
+  },
+  { // Entry 12
+    0x1.000021p-24,
+    0x1.08p-43,
+    -0x1.p-24
+  },
+  { // Entry 13
+    0x1.4ff4d3p3,
+    0x1.083d28p2,
+    -0x1.97ac7ep2
+  },
+  { // Entry 14
+    0x1.fffffcp127,
+    0x1.fffffcp127,
+    -0x1.90p-143
+  },
+  { // Entry 15
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 16
+    0.0,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 17
+    0x1.p1,
+    -0x1.p3,
+    -0x1.40p3
+  },
+  { // Entry 18
+    0x1.p2,
+    -0x1.80p2,
+    -0x1.40p3
+  },
+  { // Entry 19
+    0x1.80p2,
+    -0x1.p2,
+    -0x1.40p3
+  },
+  { // Entry 20
+    0x1.p3,
+    -0x1.p1,
+    -0x1.40p3
+  },
+  { // Entry 21
+    0x1.40p3,
+    0.0,
+    -0x1.40p3
+  },
+  { // Entry 22
+    0x1.80p3,
+    0x1.p1,
+    -0x1.40p3
+  },
+  { // Entry 23
+    0x1.c0p3,
+    0x1.p2,
+    -0x1.40p3
+  },
+  { // Entry 24
+    0x1.p4,
+    0x1.80p2,
+    -0x1.40p3
+  },
+  { // Entry 25
+    0x1.20p4,
+    0x1.p3,
+    -0x1.40p3
+  },
+  { // Entry 26
+    0x1.40p4,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 27
+    0.0,
+    -0x1.80p-148,
+    -0x1.80p-148
+  },
+  { // Entry 28
+    0.0,
+    -0x1.80p-148,
+    -0x1.p-148
+  },
+  { // Entry 29
+    0.0,
+    -0x1.80p-148,
+    -0x1.p-149
+  },
+  { // Entry 30
+    0.0,
+    -0x1.80p-148,
+    0.0
+  },
+  { // Entry 31
+    0.0,
+    -0x1.80p-148,
+    0x1.p-149
+  },
+  { // Entry 32
+    0.0,
+    -0x1.80p-148,
+    0x1.p-148
+  },
+  { // Entry 33
+    0.0,
+    -0x1.80p-148,
+    0x1.80p-148
+  },
+  { // Entry 34
+    0x1.p-149,
+    -0x1.p-148,
+    -0x1.80p-148
+  },
+  { // Entry 35
+    0.0,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 36
+    0.0,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0.0,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 38
+    0.0,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 39
+    0.0,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 40
+    0.0,
+    -0x1.p-148,
+    0x1.80p-148
+  },
+  { // Entry 41
+    0x1.p-148,
+    -0x1.p-149,
+    -0x1.80p-148
+  },
+  { // Entry 42
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 43
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 44
+    0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 45
+    0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 46
+    0.0,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 47
+    0.0,
+    -0x1.p-149,
+    0x1.80p-148
+  },
+  { // Entry 48
+    0x1.80p-148,
+    0.0,
+    -0x1.80p-148
+  },
+  { // Entry 49
+    0x1.p-148,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 50
+    0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 51
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 52
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 53
+    0.0,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 54
+    0.0,
+    0.0,
+    0x1.80p-148
+  },
+  { // Entry 55
+    0x1.p-147,
+    0x1.p-149,
+    -0x1.80p-148
+  },
+  { // Entry 56
+    0x1.80p-148,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 57
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 58
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 59
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 60
+    0.0,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 61
+    0.0,
+    0x1.p-149,
+    0x1.80p-148
+  },
+  { // Entry 62
+    0x1.40p-147,
+    0x1.p-148,
+    -0x1.80p-148
+  },
+  { // Entry 63
+    0x1.p-147,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 64
+    0x1.80p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 65
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 66
+    0x1.p-149,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 67
+    0.0,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 68
+    0.0,
+    0x1.p-148,
+    0x1.80p-148
+  },
+  { // Entry 69
+    0x1.80p-147,
+    0x1.80p-148,
+    -0x1.80p-148
+  },
+  { // Entry 70
+    0x1.40p-147,
+    0x1.80p-148,
+    -0x1.p-148
+  },
+  { // Entry 71
+    0x1.p-147,
+    0x1.80p-148,
+    -0x1.p-149
+  },
+  { // Entry 72
+    0x1.80p-148,
+    0x1.80p-148,
+    0.0
+  },
+  { // Entry 73
+    0x1.p-148,
+    0x1.80p-148,
+    0x1.p-149
+  },
+  { // Entry 74
+    0x1.p-149,
+    0x1.80p-148,
+    0x1.p-148
+  },
+  { // Entry 75
+    0.0,
+    0x1.80p-148,
+    0x1.80p-148
+  },
+  { // Entry 76
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 77
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 78
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 79
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 80
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 81
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 82
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 83
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 84
+    0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 85
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 86
+    0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 87
+    0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.fffffep126
+  },
+  { // Entry 88
+    0.0,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 90
+    0.0,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 91
+    0x1.p-149,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 92
+    0.0,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 93
+    0.0,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 94
+    0x1.p-148,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 95
+    0x1.p-149,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 96
+    0.0,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 98
+    0.0,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 100
+    0x1.p-74,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 101
+    0.0,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 102
+    0.0,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 103
+    0x1.80p-73,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 104
+    0x1.p-73,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 105
+    0.0,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 108
+    0.0,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 109
+    0x1.p-34,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 110
+    0.0,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 111
+    0.0,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 112
+    0x1.80p-33,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 113
+    0x1.p-33,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 114
+    0.0,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 116
+    0.0,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 117
+    0.0,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 118
+    0x1.p-25,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 119
+    0.0,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 120
+    0.0,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 121
+    0x1.80p-24,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 122
+    0x1.p-24,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 123
+    0.0,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 127
+    0x1.p-23,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 128
+    0.0,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 129
+    0.0,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 130
+    0x1.80p-22,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 131
+    0x1.p-22,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 132
+    0.0,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 133
+    0.0,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 134
+    0.0,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 135
+    0.0,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 136
+    0x1.p-14,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 137
+    0.0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 138
+    0.0,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 139
+    0x1.80p-13,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 140
+    0x1.p-13,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 141
+    0.0,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 142
+    0.0,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 143
+    0.0,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 144
+    0.0,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 145
+    0x1.p26,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 146
+    0.0,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 147
+    0.0,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 148
+    0x1.80p27,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 149
+    0x1.p27,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 150
+    0.0,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 151
+    0.0,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 152
+    0.0,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 153
+    0.0,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 154
+    0x1.p103,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 155
+    0.0,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 156
+    0.0,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 157
+    0x1.80p104,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 158
+    0x1.p104,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 159
+    0.0,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 160
+    0.0,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 161
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 162
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 163
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 164
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 165
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 166
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 167
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 168
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 169
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 170
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 171
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 172
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 173
+    0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 174
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 175
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 176
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 177
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 178
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 179
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 180
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 181
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 182
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 183
+    0x1.fffffe00000000000000000000000002p127,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 184
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 185
+    HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 187
+    0.0,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 188
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 189
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 190
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 191
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 192
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 193
+    0x1.000002p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 194
+    0x1.fffffep-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 195
+    0x1.p-125,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 196
+    0x1.00000000000000000000000000000004p0,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 197
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 198
+    HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 202
+    0.0,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 203
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 204
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 205
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 206
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 207
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 208
+    0x1.fffffep-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 209
+    0x1.00000000000000000000000000000003p0,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 210
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 211
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 212
+    0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 213
+    0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 214
+    0.0,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 215
+    0.0,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 216
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 217
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 218
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 219
+    0x1.p-148,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 220
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 221
+    0x1.000002p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 222
+    0x1.p0,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 223
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 225
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 226
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 227
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 228
+    0.0,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 230
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 231
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 232
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 233
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 234
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0x1.p0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 236
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 237
+    HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 238
+    0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 239
+    0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 240
+    0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 241
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 242
+    0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 243
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 244
+    0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 245
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 246
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 247
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 248
+    0x1.p0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 249
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 250
+    HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 251
+    0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 252
+    0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 253
+    0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 254
+    0.0,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 255
+    0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 256
+    0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 257
+    0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 258
+    0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 259
+    0x1.fffff8p-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 260
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 261
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 262
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 263
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 264
+    0.0,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 265
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 266
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 267
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 268
+    0.0,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 269
+    0.0,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 270
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 271
+    0.0,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 272
+    0.0,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 273
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 274
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 275
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 276
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 277
+    0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 278
+    0.0,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 279
+    0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 280
+    0.0,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 281
+    0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 282
+    0.0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 283
+    0.0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 284
+    0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 285
+    0.0,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 286
+    0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 287
+    0x1.fffffffffffffffffffffffffffffff8p-1,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 288
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 289
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 290
+    0.0,
+    -0x1.fffffep-1,
+    HUGE_VALF
+  },
+  { // Entry 291
+    0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep127
+  },
+  { // Entry 292
+    0.0,
+    -0x1.fffffep-1,
+    0x1.p-126
+  },
+  { // Entry 293
+    0.0,
+    -0x1.fffffep-1,
+    0x1.fffffcp-127
+  },
+  { // Entry 294
+    0.0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 295
+    0.0,
+    -0x1.fffffep-1,
+    0.0f
+  },
+  { // Entry 296
+    0.0,
+    -0x1.fffffep-1,
+    -0.0f
+  },
+  { // Entry 297
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 298
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffcp-127
+  },
+  { // Entry 299
+    0.0,
+    -0x1.fffffep-1,
+    -0x1.p-126
+  },
+  { // Entry 300
+    0x1.p-24,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 301
+    0x1.fffffdfffffffffffffffffffffffffep127,
+    -0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 302
+    HUGE_VALF,
+    -0x1.fffffep-1,
+    -HUGE_VALF
+  },
+  { // Entry 303
+    0.0,
+    -0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 304
+    0.0,
+    -0x1.p0,
+    0x1.fffffep127
+  },
+  { // Entry 305
+    0.0,
+    -0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    -0x1.p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    0.0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 308
+    0.0,
+    -0x1.p0,
+    0.0f
+  },
+  { // Entry 309
+    0.0,
+    -0x1.p0,
+    -0.0f
+  },
+  { // Entry 310
+    0.0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 311
+    0.0,
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 312
+    0.0,
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 313
+    0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 314
+    0x1.fffffdfffffffffffffffffffffffffep127,
+    -0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 315
+    HUGE_VALF,
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 316
+    0.0,
+    -0x1.000002p0,
+    HUGE_VALF
+  },
+  { // Entry 317
+    0.0,
+    -0x1.000002p0,
+    0x1.fffffep127
+  },
+  { // Entry 318
+    0.0,
+    -0x1.000002p0,
+    0x1.p-126
+  },
+  { // Entry 319
+    0.0,
+    -0x1.000002p0,
+    0x1.fffffcp-127
+  },
+  { // Entry 320
+    0.0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 321
+    0.0,
+    -0x1.000002p0,
+    0.0f
+  },
+  { // Entry 322
+    0.0,
+    -0x1.000002p0,
+    -0.0f
+  },
+  { // Entry 323
+    0.0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 324
+    0.0,
+    -0x1.000002p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 325
+    0.0,
+    -0x1.000002p0,
+    -0x1.p-126
+  },
+  { // Entry 326
+    0.0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 327
+    0x1.fffffdfffffffffffffffffffffffffdp127,
+    -0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 328
+    HUGE_VALF,
+    -0x1.000002p0,
+    -HUGE_VALF
+  },
+  { // Entry 329
+    0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 330
+    0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 331
+    0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 332
+    0.0,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 333
+    0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 334
+    0.0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 335
+    0.0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 336
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 337
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 338
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 339
+    0.0,
+    -0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 340
+    0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 341
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 342
+    0.0,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 343
+    0.0,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 344
+    0.0,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 345
+    0.0,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 346
+    0.0,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 347
+    0.0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 348
+    0.0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 349
+    0.0,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 350
+    0.0,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 351
+    0.0,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 352
+    0.0,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 353
+    0.0,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 354
+    0.0,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_data/floor_intel_data.h b/tests/math_data/floor_intel_data.h
new file mode 100644
index 0000000..a1216df
--- /dev/null
+++ b/tests/math_data/floor_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_floor_intel_data[] = {
+  { // Entry 0
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0x1.p0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p1,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.80p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.80p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.94p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.94p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f480p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f480p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.00000000000040p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.00000000000020p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.00000004p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffffcp30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffffcp30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffffcp30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffffcp30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffffcp30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.p31,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.p31,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.p31,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.p31,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.00000002p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.00000002p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.00000002p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.00000002p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.00000002p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.00000002p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.p2,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0x1.p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0x1.p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0x1.p0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p1,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/floorf_intel_data.h b/tests/math_data/floorf_intel_data.h
new file mode 100644
index 0000000..3bf2c9f
--- /dev/null
+++ b/tests/math_data/floorf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_floorf_intel_data[] = {
+  { // Entry 0
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0x1.p0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p1,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p1,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.80p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.80p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.94p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.94p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f480p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f480p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.000008p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.000004p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.p2,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p1,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0x1.p0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0x1.p0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0x1.p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0x1.p0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p1,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/fma_intel_data.h b/tests/math_data/fma_intel_data.h
new file mode 100644
index 0000000..6f05997
--- /dev/null
+++ b/tests/math_data/fma_intel_data.h
@@ -0,0 +1,13830 @@
+/*
+ * 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.
+ */
+
+static data_1_3_t<double, double, double, double> g_fma_intel_data[] = {
+  { // Entry 0
+    -0x1.e6666666666660p0,
+    0x1.0p-1074,
+    -0x1.ccccccccccccdp-1,
+    -0x1.e666666666666p0
+  },
+  { // Entry 1
+    0x1.15f15f15f15edfffffffffffffffffffp-2,
+    0x1.0p-1074,
+    -0x1.ccccccccccccdp-1,
+    0x1.15f15f15f15eep-2
+  },
+  { // Entry 2
+    0x1.0000000000002fffffffffffffffffffp-41,
+    0x1.0p-1074,
+    -0x1.e666666666666p-1,
+    0x1.0000000000003p-41
+  },
+  { // Entry 3
+    -0x1.e666666666665fffffffffffffffffffp0,
+    0x1.0p-1074,
+    0x1.0750750750756p-3,
+    -0x1.e666666666666p0
+  },
+  { // Entry 4
+    0x1.00000000000030p-41,
+    0x1.0p-1074,
+    0x1.4444444444430p-4,
+    0x1.0000000000003p-41
+  },
+  { // Entry 5
+    -0x1.f4ccccccccccc766666666666668p0,
+    0x1.0000000000001p-4,
+    -0x1.ccccccccccccdp-1,
+    -0x1.e666666666666p0
+  },
+  { // Entry 6
+    0x1.1be9c07bef3aa00000000ca3acc0p0,
+    0x1.333334be90b7dp-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 7
+    0x1.2da85c2c93416ffffffffd1b42c0p0,
+    0x1.6666670f24aa5p-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 8
+    0x1.6ce999999999c802333333333480p16,
+    0x1.8000000000001p4,
+    0x1.e666666666669p11,
+    0x1.ccccccccccccfp4
+  },
+  { // Entry 9
+    0x1.62b83c4461cc280000000001bc40p0,
+    0x1.ff812e8bc2d1fp-1,
+    0x1.62e42fefa39efp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 10
+    0x1.0942b0df6a30e7ff3586fb5fb5p39,
+    0x1.ffe7fffffffffp40,
+    0x1.094f2094f2096p-2,
+    -0x1.ba2e8ba2e8ba2p-2
+  },
+  { // Entry 11
+    0x1.06fb586fb586f8p-51,
+    0x1.ffffffffffffcp-1,
+    -0x1.8df6b0df6b0dfp-1,
+    0x1.8df6b0df6b0e0p-1
+  },
+  { // Entry 12
+    0x1.ffffffffffff70000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 13
+    0x1.ffffffffffff80000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 14
+    0x1.ffffffffffffa0000000000004p-1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 15
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 17
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 18
+    0x1.00000000000037fffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 19
+    0x1.0000000000003ffffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 20
+    0x1.0000000000004ffffffffffffep0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 21
+    0x1.ffffffffffff70000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 22
+    0x1.ffffffffffff80000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 23
+    0x1.ffffffffffffa0000000000008p-2,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 24
+    0x1.fffffffffffff0p-2,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 25
+    0x1.p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 26
+    0x1.00000000000010p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 27
+    0x1.00000000000037fffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 28
+    0x1.0000000000003ffffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 29
+    0x1.0000000000004ffffffffffffcp-1,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 30
+    0x1.ffffffffffff70000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 31
+    0x1.ffffffffffff80000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 32
+    0x1.ffffffffffffa0000000000004p-2,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 33
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 34
+    0x1.p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 35
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 36
+    0x1.00000000000037fffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 37
+    0x1.0000000000003ffffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 38
+    0x1.0000000000004ffffffffffffep-1,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 39
+    0x1.ffffffffffff70p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 40
+    0x1.ffffffffffff80p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 41
+    0x1.ffffffffffffa0p-2,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p-2,
+    0x1.0p1023,
+    -0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 43
+    0x1.p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.0p-1
+  },
+  { // Entry 44
+    0x1.00000000000010p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 45
+    0x1.00000000000038p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 46
+    0x1.00000000000040p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0p-1
+  },
+  { // Entry 47
+    0x1.00000000000050p-1,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0000000000001p-1
+  },
+  { // Entry 48
+    0x1.ffffffffffffb0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 49
+    0x1.ffffffffffffc0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 50
+    0x1.ffffffffffffe0000000000004p-1,
+    0x1.ffffffffffffep1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 51
+    0x1.fffffffffffff0p-1,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    0x1.p0,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 53
+    0x1.00000000000010p0,
+    0x1.ffffffffffffep1022,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 54
+    0x1.00000000000017fffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    0x1.0000000000001ffffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 56
+    0x1.0000000000002ffffffffffffep0,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 57
+    0x1.ffffffffffffb0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 58
+    0x1.ffffffffffffc0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 59
+    0x1.ffffffffffffe0000000000002p-1,
+    0x1.fffffffffffffp1022,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 60
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 61
+    0x1.p0,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 62
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp1022,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 63
+    0x1.00000000000017ffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 64
+    0x1.0000000000001fffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 65
+    0x1.0000000000002fffffffffffffp0,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 66
+    0x1.ffffffffffffb0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 67
+    0x1.ffffffffffffc0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 68
+    0x1.ffffffffffffe0p-1,
+    0x1.0p1023,
+    -0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 69
+    0x1.fffffffffffff0p-1,
+    0x1.0p1023,
+    -0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 70
+    0x1.p0,
+    0x1.0p1023,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 71
+    0x1.00000000000010p0,
+    0x1.0p1023,
+    -0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 72
+    0x1.00000000000018p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 73
+    0x1.00000000000020p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 74
+    0x1.00000000000030p0,
+    0x1.0p1023,
+    0x1.0p-1074,
+    0x1.0000000000001p0
+  },
+  { // Entry 75
+    0x1.ffffffffffffe00000000000007fffffp-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 76
+    0x1.ffffffffffffe000000000000080p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 77
+    0x1.ffffffffffffe000000000000080p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 78
+    0x1.ffffffffffffefffffffffffffffffffp-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 79
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 81
+    0x1.00000000000007ffffffffffff7fffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 82
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 83
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 84
+    0x1.ffffffffffffefffffffffffffffffffp-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 85
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 87
+    0x1.ffffffffffffffffffffffffffffffffp-2,
+    0x1.0p-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 88
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 89
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 90
+    0x1.0000000000000fffffffffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 91
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 92
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 93
+    0x1.00000000000007ffffffffffff7fffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 94
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 95
+    0x1.00000000000007ffffffffffff80p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 96
+    0x1.0000000000000fffffffffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 97
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 98
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 99
+    0x1.00000000000020000000000000ffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 100
+    0x1.00000000000020000000000001p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 101
+    0x1.00000000000020000000000001p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 102
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 103
+    0x1.0000000000001000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 104
+    0x1.0000000000001000000000000240p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 105
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 106
+    0x1.00000000000018p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 107
+    0x1.00000000000018000000000002p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 108
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 109
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 110
+    0x1.0000000000002800000000000180p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 111
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 112
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 113
+    0x1.00000000000018000000000002p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 114
+    0x1.0000000000001fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 115
+    0x1.00000000000020p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 116
+    0x1.00000000000020000000000002p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 117
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 118
+    0x1.00000000000030p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 119
+    0x1.00000000000030000000000002p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 120
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 121
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 122
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 123
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 124
+    0x1.00000000000030p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 125
+    0x1.00000000000030000000000002p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 126
+    0x1.00000000000040p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 127
+    0x1.00000000000040000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 128
+    0x1.00000000000040000000000003p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 129
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 130
+    0x1.0000000000001000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 131
+    0x1.0000000000001000000000000240p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 132
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 133
+    0x1.00000000000018p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 134
+    0x1.00000000000018000000000002p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 135
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 136
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 137
+    0x1.0000000000002800000000000180p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 138
+    0x1.00000000000017ffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 139
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 140
+    0x1.00000000000018000000000002p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 141
+    0x1.0000000000001fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 142
+    0x1.00000000000020p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 143
+    0x1.00000000000020000000000002p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 144
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 145
+    0x1.00000000000030p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 146
+    0x1.00000000000030000000000002p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 147
+    0x1.00000000000027fffffffffffe80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 148
+    0x1.00000000000027ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-52
+  },
+  { // Entry 149
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-52
+  },
+  { // Entry 150
+    0x1.0000000000002fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 151
+    0x1.00000000000030p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-52
+  },
+  { // Entry 152
+    0x1.00000000000030000000000002p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 153
+    0x1.00000000000040p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-53
+  },
+  { // Entry 154
+    0x1.00000000000040000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-52
+  },
+  { // Entry 155
+    0x1.00000000000040000000000003p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-52
+  },
+  { // Entry 156
+    0x1.0000000000006ffffffffffffc40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 157
+    0x1.0000000000007000000000000040p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 158
+    0x1.0000000000007000000000000840p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 159
+    0x1.00000000000077fffffffffffcp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 160
+    0x1.00000000000078p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 161
+    0x1.00000000000078000000000008p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 162
+    0x1.00000000000087fffffffffffb80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 163
+    0x1.00000000000087ffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 164
+    0x1.0000000000008800000000000780p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 165
+    0x1.00000000000077fffffffffffcp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 166
+    0x1.00000000000078p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 167
+    0x1.00000000000078000000000008p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 168
+    0x1.0000000000007ffffffffffffcp-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 169
+    0x1.00000000000080p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 170
+    0x1.00000000000080000000000008p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 171
+    0x1.0000000000008ffffffffffffcp-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 172
+    0x1.00000000000090p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 173
+    0x1.00000000000090000000000008p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 174
+    0x1.00000000000087fffffffffffb80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 175
+    0x1.00000000000087ffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-50
+  },
+  { // Entry 176
+    0x1.0000000000008800000000000780p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-50
+  },
+  { // Entry 177
+    0x1.0000000000008ffffffffffffcp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 178
+    0x1.00000000000090p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-50
+  },
+  { // Entry 179
+    0x1.00000000000090000000000008p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 180
+    0x1.0000000000009ffffffffffffdp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 181
+    0x1.000000000000a0000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-50
+  },
+  { // Entry 182
+    0x1.000000000000a0000000000009p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-50
+  },
+  { // Entry 183
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 184
+    0x1.fffffffffffff000000000000080p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 185
+    0x1.fffffffffffff000000000000180p-2,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 186
+    0x1.ffffffffffffffffffffffffff80p-2,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 187
+    0x1.p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 188
+    0x1.0000000000000000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 189
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 190
+    0x1.0000000000000fffffffffffff80p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 191
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 192
+    0x1.ffffffffffffffffffffffffff80p-2,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 193
+    0x1.p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 194
+    0x1.0000000000000000000000000080p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 195
+    0x1.00000000000007ffffffffffffc0p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 196
+    0x1.00000000000008p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 197
+    0x1.0000000000000800000000000080p-1,
+    0x1.0p0,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 198
+    0x1.00000000000017ffffffffffffc0p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 199
+    0x1.00000000000018p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 200
+    0x1.0000000000001800000000000080p-1,
+    0x1.0p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 201
+    0x1.0000000000000fffffffffffff40p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 202
+    0x1.0000000000000fffffffffffff80p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0p-54
+  },
+  { // Entry 203
+    0x1.00000000000010p-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-54
+  },
+  { // Entry 204
+    0x1.00000000000017ffffffffffffc0p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 205
+    0x1.00000000000018p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0p-54
+  },
+  { // Entry 206
+    0x1.0000000000001800000000000080p-1,
+    0x1.0000000000001p0,
+    0x1.0p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 207
+    0x1.00000000000028000000000000c0p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-55
+  },
+  { // Entry 208
+    0x1.00000000000028000000000001p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0p-54
+  },
+  { // Entry 209
+    0x1.0000000000002800000000000180p-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-54
+  },
+  { // Entry 210
+    0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 211
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 212
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 213
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 214
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 215
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 218
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 219
+    -0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp1023,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    0x1.ffffffffffffd0000000000000ffffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0x1.0p-1074
+  },
+  { // Entry 223
+    0x1.ffffffffffffd0000000000001p1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0.0
+  },
+  { // Entry 224
+    0x1.ffffffffffffd0000000000001p1023,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    0x1.0p-1074
+  },
+  { // Entry 225
+    0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0.0
+  },
+  { // Entry 227
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0.0
+  },
+  { // Entry 230
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    -0x1.7ffffffffffff0p972,
+    0x1.ffffffffffffep511,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 232
+    -0x1.fffffffffffff0p971,
+    0x1.ffffffffffffep511,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 233
+    -0x1.p971,
+    0x1.ffffffffffffep511,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 234
+    -0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp511,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 235
+    -0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 236
+    0.0,
+    0x1.fffffffffffffp511,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 237
+    -0x1.p971,
+    0x1.0p512,
+    0x1.ffffffffffffep511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 238
+    0.0,
+    0x1.0p512,
+    0x1.fffffffffffffp511,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 239
+    0x1.p971,
+    0x1.0p512,
+    0x1.0p512,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 240
+    -0x1.ffffffffffffc0p970,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 241
+    0x1.p971,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 242
+    0x1.fffffffffffff0p971,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 243
+    -0x1.fffffffffffff0p971,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 244
+    0.0,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    0x1.fffffffffffff0p970,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    -0x1.80p972,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 247
+    -0x1.p971,
+    0x1.0p1023,
+    -0x1.0p1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    0.0,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 250
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 251
+    -HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 252
+    -0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 253
+    -0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 254
+    -0x1.ffffffffffffdfffffffffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 255
+    -0x1.ffffffffffffd0000000000001p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 256
+    -0x1.ffffffffffffd0000000000001p1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 257
+    -0x1.ffffffffffffd0000000000000ffffffp1023,
+    0x1.ffffffffffffep1022,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 258
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 259
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 260
+    -HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 261
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 262
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 263
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1022,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 264
+    -0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 265
+    -0x1.ffffffffffffe000000000000080p1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 266
+    -0x1.ffffffffffffe00000000000007fffffp1023,
+    0x1.fffffffffffffp1022,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 267
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    -0x1.0p-1074
+  },
+  { // Entry 268
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    -0.0
+  },
+  { // Entry 269
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0000000000001p1,
+    0x1.0p-1074
+  },
+  { // Entry 270
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    -0x1.0p-1074
+  },
+  { // Entry 271
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    -0.0
+  },
+  { // Entry 272
+    -HUGE_VAL,
+    0x1.0p1023,
+    -0x1.0p1,
+    0x1.0p-1074
+  },
+  { // Entry 273
+    -0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    -0x1.0p-1074
+  },
+  { // Entry 274
+    -0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    -0.0
+  },
+  { // Entry 275
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p1023,
+    -0x1.fffffffffffffp0,
+    0x1.0p-1074
+  },
+  { // Entry 276
+    0x1.7fffffffffffe400000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 277
+    0x1.7fffffffffffec00000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 278
+    0x1.7ffffffffffff400000000000040p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 279
+    0x1.7fffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 280
+    0x1.7ffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 281
+    0x1.7ffffffffffff8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 282
+    0x1.7fffffffffffefffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 283
+    0x1.7ffffffffffff7ffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 284
+    0x1.7fffffffffffffffffffffffff80p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 285
+    0x1.7fffffffffffe800000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 286
+    0x1.7ffffffffffff000000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 287
+    0x1.7ffffffffffff800000000000020p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 288
+    0x1.7fffffffffffecp1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 289
+    0x1.7ffffffffffff4p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 290
+    0x1.7ffffffffffffcp1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 291
+    0x1.7ffffffffffff3ffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 292
+    0x1.7ffffffffffffbffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 293
+    0x1.80000000000003ffffffffffffc0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 294
+    0x1.7fffffffffffecp1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 295
+    0x1.7ffffffffffff4p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 296
+    0x1.7ffffffffffffcp1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-2,
+    0x1.0p1023
+  },
+  { // Entry 297
+    0x1.7ffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 298
+    0x1.7ffffffffffff8p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 299
+    0x1.80p1023,
+    0x1.0p1023,
+    0x1.0p-1,
+    0x1.0p1023
+  },
+  { // Entry 300
+    0x1.7ffffffffffff8p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 301
+    0x1.80p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 302
+    0x1.80000000000008p1023,
+    0x1.0p1023,
+    0x1.0000000000001p-1,
+    0x1.0p1023
+  },
+  { // Entry 303
+    0x1.ffffffffffffd800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 304
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 305
+    0x1.ffffffffffffe800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 306
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 307
+    0x1.ffffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 308
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 309
+    0x1.ffffffffffffefffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 310
+    0x1.fffffffffffff7ffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 311
+    HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 312
+    0x1.ffffffffffffe000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 313
+    0x1.ffffffffffffe800000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 314
+    0x1.fffffffffffff000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 315
+    0x1.ffffffffffffe8p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 316
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 317
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 318
+    0x1.fffffffffffff7ffffffffffff80p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 319
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 320
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 321
+    0x1.ffffffffffffe8p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 322
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 323
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 324
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 325
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 326
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 327
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 328
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 329
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 330
+    0x1.ffffffffffffd800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 331
+    0x1.ffffffffffffe000000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 332
+    0x1.ffffffffffffe800000000000080p1023,
+    0x1.ffffffffffffep1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 333
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 334
+    0x1.ffffffffffffe8p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 335
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 336
+    0x1.ffffffffffffefffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 337
+    0x1.fffffffffffff7ffffffffffffp1023,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 338
+    HUGE_VAL,
+    0x1.ffffffffffffep1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 339
+    0x1.ffffffffffffe000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 340
+    0x1.ffffffffffffe800000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 341
+    0x1.fffffffffffff000000000000040p1023,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 342
+    0x1.ffffffffffffe8p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 343
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 344
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 345
+    0x1.fffffffffffff7ffffffffffff80p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 346
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 347
+    HUGE_VAL,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 348
+    0x1.ffffffffffffe8p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 349
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 350
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1,
+    0x1.0p1023
+  },
+  { // Entry 351
+    0x1.fffffffffffff0p1023,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 352
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 353
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0p0,
+    0x1.0p1023
+  },
+  { // Entry 354
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.ffffffffffffep1022
+  },
+  { // Entry 355
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 356
+    HUGE_VAL,
+    0x1.0p1023,
+    0x1.0000000000001p0,
+    0x1.0p1023
+  },
+  { // Entry 357
+    0x1.ffffffffffffe800000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 358
+    0x1.fffffffffffff000000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 359
+    0x1.0000000000000000000000000020p1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 360
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 361
+    0x1.fffffffffffff8p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 362
+    0x1.00000000000004p1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 363
+    0x1.ffffffffffffffffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 364
+    0x1.00000000000003ffffffffffffc0p1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 365
+    0x1.0000000000000bffffffffffffc0p1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 366
+    0x1.fffffffffffff0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 367
+    0x1.fffffffffffff8p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 368
+    0x1.00000000000004p1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 369
+    0x1.fffffffffffff8p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 370
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 371
+    0x1.00000000000008p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 372
+    0x1.00000000000004p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 373
+    0x1.00000000000008p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 374
+    0x1.00000000000010p1,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 375
+    0x1.ffffffffffffffffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 376
+    0x1.00000000000003ffffffffffffc0p1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 377
+    0x1.0000000000000bffffffffffffc0p1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 378
+    0x1.00000000000004p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 379
+    0x1.00000000000008p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 380
+    0x1.00000000000010p1,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 381
+    0x1.0000000000000c00000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 382
+    0x1.0000000000001000000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 383
+    0x1.0000000000001800000000000080p1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 384
+    -0x1.fffffffffffff0p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 385
+    -0x1.ffffffffffffe0p-54,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 386
+    0x1.00000000000010p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 387
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 388
+    0x1.p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 389
+    0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 390
+    0x1.fffffffffffff0p-54,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 391
+    0x1.fffffffffffff8p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 392
+    0x1.fffffffffffffcp-52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 393
+    -0x1.80p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 394
+    -0x1.p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 395
+    0.0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 396
+    -0x1.p-53,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 397
+    0.0,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 398
+    0x1.p-52,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 399
+    0.0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 400
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 401
+    0x1.80p-52,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 402
+    -0x1.40000000000008p-51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 403
+    -0x1.00000000000008p-51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 404
+    -0x1.00000000000010p-52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 405
+    -0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 406
+    -0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 407
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 408
+    -0x1.fffffffffffff0p-53,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 409
+    -0x1.ffffffffffffe0p-54,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 410
+    0x1.00000000000010p-53,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 411
+    0x1.ffffffffffffe00000000000007fffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 412
+    0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 413
+    0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 414
+    0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 415
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 416
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 417
+    0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 418
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 419
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 420
+    0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 421
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 422
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 423
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 424
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 425
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 426
+    0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 427
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 428
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 429
+    0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 430
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 431
+    0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 432
+    0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 433
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    -0.0
+  },
+  { // Entry 434
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 435
+    0x1.00000000000020000000000000ffffffp0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 436
+    0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 437
+    0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 438
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 439
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 440
+    -0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 441
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 442
+    -0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 443
+    -0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 444
+    -0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 445
+    -0x1.ffffffffffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 446
+    -0x1.ffffffffffffe00000000000007fffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 447
+    -0x1.00000000000010p0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 448
+    -0x1.00000000000010p0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 449
+    -0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 450
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 451
+    -0x1.p0,
+    0x1.0p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 452
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 453
+    -0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 454
+    -0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 455
+    -0x1.ffffffffffffefffffffffffffffffffp-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 456
+    -0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    -0x1.0p-1074
+  },
+  { // Entry 457
+    -0x1.00000000000020000000000001p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    -0.0
+  },
+  { // Entry 458
+    -0x1.00000000000020000000000000ffffffp0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p-1074
+  },
+  { // Entry 459
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    -0x1.0p-1074
+  },
+  { // Entry 460
+    -0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    -0.0
+  },
+  { // Entry 461
+    -0x1.0000000000000fffffffffffffffffffp0,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p-1074
+  },
+  { // Entry 462
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p-1074
+  },
+  { // Entry 463
+    -0x1.00000000000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    -0.0
+  },
+  { // Entry 464
+    -0x1.00000000000007ffffffffffff7fffffp0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-1074
+  },
+  { // Entry 465
+    0x1.0000003fffffeffffffe00000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 466
+    0x1.0000003ffffff000000000000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 467
+    0x1.0000003ffffff000000400000040p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 468
+    0x1.0000003ffffff7fffffep0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 469
+    0x1.0000003ffffff8p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 470
+    0x1.0000003ffffff8000004p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 471
+    0x1.00000040000007fffffdffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 472
+    0x1.00000040000007ffffffffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 473
+    0x1.00000040000008000003ffffff80p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 474
+    0x1.0000003ffffff7fffffep0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 475
+    0x1.0000003ffffff8p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 476
+    0x1.0000003ffffff8000004p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 477
+    0x1.0000003ffffffffffffep0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 478
+    0x1.00000040p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 479
+    0x1.00000040000000000004p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 480
+    0x1.0000004000000ffffffep0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 481
+    0x1.00000040000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 482
+    0x1.00000040000010000004p0,
+    0x1.0p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 483
+    0x1.00000040000007fffffdffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 484
+    0x1.00000040000007ffffffffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 485
+    0x1.00000040000008000003ffffff80p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 486
+    0x1.0000004000000ffffffep0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 487
+    0x1.00000040000010p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 488
+    0x1.00000040000010000004p0,
+    0x1.0000000000001p0,
+    0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 489
+    0x1.0000004000001ffffffe000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 490
+    0x1.00000040000020000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 491
+    0x1.00000040000020000004000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 492
+    -0x1.ffffff80000010000003ffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 493
+    -0x1.ffffff8000000fffffffffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 494
+    -0x1.ffffff8000000ffffff7ffffffp-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 495
+    -0x1.ffffff7ffffff0000004p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 496
+    -0x1.ffffff7ffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 497
+    -0x1.ffffff7fffffeffffff8p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 498
+    -0x1.ffffff7fffffe000000400000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 499
+    -0x1.ffffff7fffffe000000000000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 500
+    -0x1.ffffff7fffffdffffff800000080p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 501
+    -0x1.ffffff80000020000004p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 502
+    -0x1.ffffff80000020p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 503
+    -0x1.ffffff8000001ffffff8p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 504
+    -0x1.ffffff80000000000004p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 505
+    -0x1.ffffff80p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 506
+    -0x1.ffffff7ffffffffffff8p-1,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 507
+    -0x1.ffffff7ffffff0000004p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 508
+    -0x1.ffffff7ffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 509
+    -0x1.ffffff7fffffeffffff8p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 510
+    -0x1.ffffff80000040000004000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 511
+    -0x1.ffffff80000040000000000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0p-26
+  },
+  { // Entry 512
+    -0x1.ffffff8000003ffffff8000002p-1,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 513
+    -0x1.ffffff80000020000004p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 514
+    -0x1.ffffff80000020p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0p-26
+  },
+  { // Entry 515
+    -0x1.ffffff8000001ffffff8p-1,
+    0x1.0000000000001p0,
+    -0x1.0p0,
+    0x1.0000000000001p-26
+  },
+  { // Entry 516
+    -0x1.ffffff80000010000003ffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-27
+  },
+  { // Entry 517
+    -0x1.ffffff8000000fffffffffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p-26
+  },
+  { // Entry 518
+    -0x1.ffffff8000000ffffff7ffffffp-1,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p-26
+  },
+  { // Entry 519
+    -0x1.fffffffffffffcp0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 520
+    -0x1.fffffffffffff8p-1,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 521
+    -0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 522
+    -0x1.80p0,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 523
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 524
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 525
+    -0x1.00000000000010p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 526
+    0x1.ffffffffffffe0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 527
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 528
+    -0x1.80p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 529
+    -0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 530
+    0.0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 531
+    -0x1.p0,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 532
+    0.0,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 533
+    0x1.p-1,
+    0x1.0p52,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 534
+    0.0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 535
+    0x1.p0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 536
+    0x1.80p0,
+    0x1.0p52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 537
+    -0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p52
+  },
+  { // Entry 538
+    0x1.ffffffffffffe0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.0p52
+  },
+  { // Entry 539
+    0x1.fffffffffffff0p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 540
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 541
+    0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.0p52
+  },
+  { // Entry 542
+    0x1.80p0,
+    0x1.0000000000001p52,
+    0x1.0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 543
+    0x1.00000000000010p0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 544
+    0x1.00000000000008p1,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.0p52
+  },
+  { // Entry 545
+    0x1.40000000000008p1,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 546
+    0x1.08p-5,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-5
+  },
+  { // Entry 547
+    0x1.0040p0,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p0
+  },
+  { // Entry 548
+    0x1.p-4,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p-5
+  },
+  { // Entry 549
+    0x1.08p0,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 550
+    0x1.p-4,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p-5
+  },
+  { // Entry 551
+    0x1.08p0,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p0
+  },
+  { // Entry 552
+    0x1.08p0,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p-5
+  },
+  { // Entry 553
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 554
+    0x1.20p-2,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 555
+    0x1.40p0,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 556
+    0x1.08p0,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 557
+    0x1.p1,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 558
+    0x1.01p3,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 559
+    0x1.20p3,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 560
+    0x1.0040p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 561
+    0x1.08p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 562
+    0x1.0040p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 563
+    0x1.08p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 564
+    0x1.0010p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 565
+    0x1.02p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 566
+    0x1.0002p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 567
+    0x1.0040p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 568
+    0x1.000080p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 569
+    0x1.0010p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 570
+    0x1.0008p3,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p3
+  },
+  { // Entry 571
+    0x1.0002p5,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p5
+  },
+  { // Entry 572
+    0x1.01p3,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 573
+    0x1.0040p5,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p5
+  },
+  { // Entry 574
+    0x1.01p3,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p3
+  },
+  { // Entry 575
+    0x1.0040p5,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p5
+  },
+  { // Entry 576
+    0x1.20p3,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 577
+    0x1.08p5,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p5
+  },
+  { // Entry 578
+    0x1.08p3,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 579
+    0x1.02p5,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 580
+    0x1.20p3,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 581
+    0x1.08p5,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 582
+    0x1.p4,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 583
+    0x1.40p5,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 584
+    0x1.40p5,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 585
+    0x1.p6,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 586
+    0x1.40p5,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 587
+    0x1.p6,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 588
+    0x1.10p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 589
+    0x1.40p7,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 590
+    0x1.02p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 591
+    0x1.08p10,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 592
+    0x1.0080p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 593
+    0x1.02p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 594
+    0x1.000010p10,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p10
+  },
+  { // Entry 595
+    0x1.000004p12,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p12
+  },
+  { // Entry 596
+    0x1.0002p10,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 597
+    0x1.000080p12,
+    0x1.0p-5,
+    0x1.0p0,
+    0x1.0p12
+  },
+  { // Entry 598
+    0x1.0002p10,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p10
+  },
+  { // Entry 599
+    0x1.000080p12,
+    0x1.0p0,
+    0x1.0p-5,
+    0x1.0p12
+  },
+  { // Entry 600
+    0x1.0040p10,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 601
+    0x1.0010p12,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p12
+  },
+  { // Entry 602
+    0x1.0010p10,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 603
+    0x1.0004p12,
+    0x1.0p-5,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 604
+    0x1.0040p10,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 605
+    0x1.0010p12,
+    0x1.0p-5,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 606
+    0x1.02p10,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 607
+    0x1.0080p12,
+    0x1.0p0,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 608
+    0x1.08p10,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 609
+    0x1.02p12,
+    0x1.0p0,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 610
+    0x1.08p10,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 611
+    0x1.02p12,
+    0x1.0p-5,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 612
+    0x1.20p10,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 613
+    0x1.08p12,
+    0x1.0p-5,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 614
+    0x1.p11,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 615
+    0x1.40p12,
+    0x1.0p0,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 616
+    0x1.40p12,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 617
+    0x1.p13,
+    0x1.0p0,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 618
+    0x1.0020p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 619
+    0x1.04p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 620
+    0x1.0008p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 621
+    0x1.01p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 622
+    0x1.0008p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p-5
+  },
+  { // Entry 623
+    0x1.01p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 624
+    0x1.0002p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p-5
+  },
+  { // Entry 625
+    0x1.0040p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p0
+  },
+  { // Entry 626
+    0x1.20p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 627
+    0x1.80p6,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 628
+    0x1.08p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 629
+    0x1.20p8,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 630
+    0x1.08p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 631
+    0x1.20p8,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p5
+  },
+  { // Entry 632
+    0x1.02p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p3
+  },
+  { // Entry 633
+    0x1.08p10,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p5
+  },
+  { // Entry 634
+    0x1.10p10,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 635
+    0x1.04p12,
+    0x1.0p3,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 636
+    0x1.40p10,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 637
+    0x1.10p12,
+    0x1.0p3,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 638
+    0x1.40p10,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 639
+    0x1.10p12,
+    0x1.0p5,
+    0x1.0p3,
+    0x1.0p12
+  },
+  { // Entry 640
+    0x1.p11,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p10
+  },
+  { // Entry 641
+    0x1.40p12,
+    0x1.0p5,
+    0x1.0p5,
+    0x1.0p12
+  },
+  { // Entry 642
+    0x1.000040p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 643
+    0x1.0008p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 644
+    0x1.000010p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 645
+    0x1.0002p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 646
+    0x1.000010p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p-5
+  },
+  { // Entry 647
+    0x1.0002p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 648
+    0x1.000004p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p-5
+  },
+  { // Entry 649
+    0x1.000080p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p0
+  },
+  { // Entry 650
+    0x1.0040p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 651
+    0x1.01p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 652
+    0x1.0010p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 653
+    0x1.0040p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 654
+    0x1.0010p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 655
+    0x1.0040p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p5
+  },
+  { // Entry 656
+    0x1.0004p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p3
+  },
+  { // Entry 657
+    0x1.0010p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p5
+  },
+  { // Entry 658
+    0x1.20p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 659
+    0x1.80p13,
+    0x1.0p3,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 660
+    0x1.08p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 661
+    0x1.20p15,
+    0x1.0p3,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 662
+    0x1.08p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 663
+    0x1.20p15,
+    0x1.0p5,
+    0x1.0p10,
+    0x1.0p12
+  },
+  { // Entry 664
+    0x1.02p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p10
+  },
+  { // Entry 665
+    0x1.08p17,
+    0x1.0p5,
+    0x1.0p12,
+    0x1.0p12
+  },
+  { // Entry 666
+    -0x1.ffffe0p-21,
+    -0x1.0p-20,
+    -0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 667
+    0x1.000010p-20,
+    -0x1.0p-20,
+    -0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 668
+    -0x1.000010p-20,
+    -0x1.0p-20,
+    0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 669
+    0x1.ffffe0p-21,
+    -0x1.0p-20,
+    0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 670
+    -0x1.000010p-20,
+    0x1.0p-20,
+    -0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 671
+    0x1.ffffe0p-21,
+    0x1.0p-20,
+    -0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 672
+    -0x1.ffffe0p-21,
+    0x1.0p-20,
+    0x1.0p-20,
+    -0x1.0p-20
+  },
+  { // Entry 673
+    0x1.000010p-20,
+    0x1.0p-20,
+    0x1.0p-20,
+    0x1.0p-20
+  },
+  { // Entry 674
+    0x1.fffffffffffffffffffep-21,
+    -0x1.0p-10,
+    -0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 675
+    0x1.00000000000000000001p-20,
+    -0x1.0p-10,
+    -0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 676
+    -0x1.00000000000000000001p-20,
+    -0x1.0p-10,
+    0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 677
+    -0x1.fffffffffffffffffffep-21,
+    -0x1.0p-10,
+    0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 678
+    -0x1.00000000000000000001p-20,
+    0x1.0p-10,
+    -0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 679
+    -0x1.fffffffffffffffffffep-21,
+    0x1.0p-10,
+    -0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 680
+    0x1.fffffffffffffffffffep-21,
+    0x1.0p-10,
+    0x1.0p-10,
+    -0x1.0p-100
+  },
+  { // Entry 681
+    0x1.00000000000000000001p-20,
+    0x1.0p-10,
+    0x1.0p-10,
+    0x1.0p-100
+  },
+  { // Entry 682
+    0x1.f0p-11,
+    -0x1.0p-5,
+    -0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 683
+    0x1.08p-10,
+    -0x1.0p-5,
+    -0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 684
+    -0x1.08p-10,
+    -0x1.0p-5,
+    0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 685
+    -0x1.f0p-11,
+    -0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 686
+    -0x1.08p-10,
+    0x1.0p-5,
+    -0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 687
+    -0x1.f0p-11,
+    0x1.0p-5,
+    -0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 688
+    0x1.f0p-11,
+    0x1.0p-5,
+    0x1.0p-5,
+    -0x1.0p-15
+  },
+  { // Entry 689
+    0x1.08p-10,
+    0x1.0p-5,
+    0x1.0p-5,
+    0x1.0p-15
+  },
+  { // Entry 690
+    0x1.68p6,
+    -0x1.4p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 691
+    0x1.b8p6,
+    -0x1.4p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 692
+    -0x1.b8p6,
+    -0x1.4p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 693
+    -0x1.68p6,
+    -0x1.4p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 694
+    -0x1.b8p6,
+    0x1.4p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 695
+    -0x1.68p6,
+    0x1.4p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 696
+    0x1.68p6,
+    0x1.4p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 697
+    0x1.b8p6,
+    0x1.4p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 698
+    0.0,
+    -0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 699
+    0x1.p1,
+    -0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 700
+    -0x1.p1,
+    -0x1.0p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 701
+    0.0,
+    -0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 702
+    -0x1.p1,
+    0x1.0p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 703
+    0.0,
+    0x1.0p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 704
+    0.0,
+    0x1.0p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 705
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 706
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 707
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 708
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 709
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 710
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 711
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 712
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 713
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 714
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 715
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 716
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 717
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 718
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 719
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 720
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 721
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 722
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 723
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 724
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 725
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 726
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 727
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 728
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 729
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 730
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 731
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 732
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 733
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 734
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 735
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 736
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 737
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 738
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 739
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 740
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 741
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 742
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 743
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 744
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 745
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 746
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 747
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 748
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 749
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 750
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 751
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 752
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 753
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 754
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 755
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 756
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 757
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 758
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 759
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 760
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 761
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 762
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 763
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 764
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 765
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 766
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 767
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 768
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 769
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 770
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 771
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 772
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 773
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 774
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 775
+    -0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 776
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 777
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 778
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 779
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 780
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 781
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 782
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 783
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 784
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 785
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 786
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 787
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 788
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 789
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 790
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 791
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 792
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 793
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 794
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 795
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 796
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 797
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 798
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 799
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 800
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 801
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 802
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 803
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 804
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 805
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 806
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 807
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 808
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 809
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 810
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 811
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 812
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 813
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 814
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 815
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 816
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 817
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 818
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 819
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 820
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 821
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 822
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 823
+    -0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 824
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 825
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 826
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 827
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 828
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 829
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 830
+    0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 831
+    -0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 832
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 833
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 834
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0,
+    0.0
+  },
+  { // Entry 835
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 836
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 837
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 838
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 841
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 842
+    0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 843
+    -0x1.ffffffffffffe0p-1023,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 844
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 845
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 846
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 847
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 848
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 850
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 852
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 854
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 855
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 856
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 857
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 858
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 859
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 860
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 861
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 862
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 863
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 864
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 865
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 866
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 867
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 868
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 869
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 870
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 871
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 872
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 873
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 874
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 875
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 876
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 877
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 878
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 879
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 880
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 881
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 882
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 883
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 884
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 885
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 886
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 887
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 888
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 889
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 890
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 891
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 892
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 893
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 894
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 895
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 896
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 897
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 898
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 899
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 900
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 901
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 902
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 903
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 904
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 905
+    -0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 906
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 907
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 908
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 909
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 910
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 911
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 912
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 913
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 914
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 915
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 916
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 917
+    0x1.fffffffffffff0p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 918
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 919
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 920
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 921
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 922
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 923
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 924
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 925
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 926
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 927
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 928
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 929
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 930
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 931
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 932
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 933
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 934
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 935
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 936
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 937
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 938
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 939
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 940
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 941
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 942
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 943
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 944
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 945
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 946
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 947
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 948
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 949
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 950
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 951
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 952
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 953
+    -0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 954
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 955
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 956
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 957
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 958
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 959
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 960
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 961
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 962
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 963
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 964
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 965
+    0x1.fffffffffffff0p-51,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 966
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 967
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 968
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 969
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 970
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 971
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 972
+    0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 973
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 974
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 975
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 976
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    0.0
+  },
+  { // Entry 977
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 978
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 979
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 980
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 981
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 982
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 983
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 984
+    0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 985
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 986
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 987
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 988
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 989
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 990
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 991
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 992
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 993
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 994
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 995
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 996
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 997
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 998
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 999
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1000
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1001
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1002
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1003
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1004
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1005
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1006
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1007
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1008
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1009
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1010
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1011
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1012
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1013
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1014
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1015
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1016
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1017
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1018
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1019
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1020
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1021
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1022
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1023
+    0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1024
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1025
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1026
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1027
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1028
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1029
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1030
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1031
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1032
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1033
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1034
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1035
+    -0x1.fffffffffffff0p1,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1036
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1037
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1038
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1039
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1040
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1041
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1042
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1043
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1044
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1045
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1046
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1047
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1048
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1049
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1050
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1051
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1052
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1053
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1054
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1055
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1056
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1057
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1058
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1059
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1060
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1061
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1062
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1063
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1064
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1065
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1066
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1067
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1068
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1069
+    -0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1070
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1071
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1072
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1073
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1074
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1075
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1076
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1077
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1078
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1079
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1080
+    0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1081
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1082
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1083
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1084
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1085
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1086
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1087
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1088
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1089
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1090
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1091
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1092
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1093
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1094
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1095
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1096
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1097
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1098
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1099
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1100
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1101
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1102
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1103
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1104
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1105
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1106
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1107
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1108
+    HUGE_VAL,
+    0x1.0p-1022,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1109
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1110
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1111
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1112
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1113
+    -0x1.p-1022,
+    0x1.0p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1114
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1115
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1116
+    0x1.p-1074,
+    0x1.0p-1022,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1117
+    -0x1.p-1074,
+    0x1.0p-1022,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1118
+    0.0,
+    0x1.0p-1022,
+    0.0,
+    0.0
+  },
+  { // Entry 1119
+    0.0,
+    0x1.0p-1022,
+    0.0,
+    -0.0
+  },
+  { // Entry 1120
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1121
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1122
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1123
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1124
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1125
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1126
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1127
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1128
+    0x1.p-1074,
+    0x1.0p-1022,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1129
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1130
+    0.0,
+    0x1.0p-1022,
+    -0.0,
+    0.0
+  },
+  { // Entry 1131
+    -0.0,
+    0x1.0p-1022,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1132
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1133
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1134
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1135
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1136
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1137
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1138
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1139
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1140
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1141
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1142
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1143
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1144
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1145
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1146
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1147
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1148
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1149
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1150
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1151
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1152
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1153
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1154
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1155
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1156
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1157
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1158
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1159
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1160
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1161
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1162
+    -0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1163
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1164
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1165
+    -0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1166
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1167
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1168
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1169
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1170
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1171
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1172
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1173
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1174
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1175
+    0x1.ffffffffffffefffffffffffffffffffp1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1176
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1177
+    0x1.fffffffffffff0p1,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1178
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1179
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1180
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1181
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1182
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1183
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1184
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1185
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1186
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1187
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1188
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1189
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1190
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1191
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1192
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1193
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1194
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1195
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1196
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1197
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1198
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1199
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1200
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1201
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1202
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1203
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1204
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1205
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1206
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1207
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1208
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1209
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1210
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1211
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1212
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1213
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1214
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1215
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1216
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1217
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1218
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1219
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1220
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1221
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1222
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1223
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1224
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1225
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1226
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1227
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1228
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1229
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1230
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1231
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1232
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1233
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1234
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1235
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1236
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1237
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1238
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1239
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1240
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1241
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1242
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1243
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1244
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1245
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1246
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1247
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1248
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1249
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1250
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1251
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1252
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1253
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1254
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1255
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1256
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1257
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1258
+    0x1.p-1074,
+    -0x1.0p-1022,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1259
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1260
+    0.0,
+    -0x1.0p-1022,
+    0.0,
+    0.0
+  },
+  { // Entry 1261
+    -0.0,
+    -0x1.0p-1022,
+    0.0,
+    -0.0
+  },
+  { // Entry 1262
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1263
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1264
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1265
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1266
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1267
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1268
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1269
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1270
+    0x1.p-1074,
+    -0x1.0p-1022,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1271
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1272
+    0.0,
+    -0x1.0p-1022,
+    -0.0,
+    0.0
+  },
+  { // Entry 1273
+    0.0,
+    -0x1.0p-1022,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1274
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1275
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1276
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1277
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1278
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1279
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1280
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1281
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1282
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1283
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1284
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1285
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1286
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1287
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1288
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1289
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1290
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1291
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1292
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1293
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1294
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1295
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1296
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1297
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1298
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1299
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1300
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1301
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1302
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1303
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1304
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1305
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1306
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1307
+    0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1308
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1309
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1310
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1311
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1312
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1313
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1314
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1315
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1316
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1317
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1318
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1319
+    -0x1.ffffffffffffd0000000000001p1,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1320
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1321
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1322
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1323
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1324
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1325
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1326
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1327
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1328
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1329
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1330
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1331
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1332
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1333
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1334
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1335
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1336
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1337
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1338
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1339
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1340
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1341
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1342
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1343
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1344
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1345
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1346
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1347
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1348
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1349
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1350
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1351
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1352
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1353
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1354
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1355
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1356
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1357
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1358
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1359
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1360
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1361
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1362
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1363
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1364
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1365
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1366
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1367
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1368
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1369
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1370
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1371
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1372
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1373
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1374
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1375
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1376
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1377
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1378
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1379
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1380
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1381
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1382
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1383
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1384
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1385
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1386
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1387
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1388
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1389
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1390
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1391
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1392
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1393
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1394
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1395
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1396
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1397
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1398
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1399
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1400
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1401
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1402
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    0.0
+  },
+  { // Entry 1403
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 1404
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1405
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1406
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1407
+    -0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1408
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1409
+    -0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1410
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1411
+    -0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1412
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1413
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1414
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 1415
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1416
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1417
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1418
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1419
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1420
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1421
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1422
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1423
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1424
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1425
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1426
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1427
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1428
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1429
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1430
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1431
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1432
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1433
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1434
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1435
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1436
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1437
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1438
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1439
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1440
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1441
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1442
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1443
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1444
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1445
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1446
+    -0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1447
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1448
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1449
+    -0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1450
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1451
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1452
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1453
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1454
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1455
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1456
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1457
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1458
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1459
+    0x1.ffffffffffffd0000000000000ffffffp1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1460
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1461
+    0x1.ffffffffffffd0000000000001p1,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1462
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1463
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1464
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1465
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1466
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1467
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1468
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1469
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1470
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1471
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1472
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1473
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1474
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1475
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1476
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1477
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1478
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1479
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1480
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1481
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1482
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1483
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1484
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1485
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1486
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1487
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1488
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1489
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1490
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1491
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1492
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1493
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1494
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1495
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1496
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1497
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1498
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1499
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1500
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1501
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1502
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1503
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1504
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1505
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1506
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1507
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1508
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1509
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1510
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1511
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1512
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1513
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1514
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1515
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1516
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1517
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1518
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1519
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1520
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1521
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1522
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1523
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1524
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1525
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1526
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1527
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1528
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1529
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1530
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1531
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1532
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1533
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1534
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1535
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1536
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1537
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1538
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1539
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1540
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1541
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1542
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1543
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1544
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    0.0
+  },
+  { // Entry 1545
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0,
+    -0.0
+  },
+  { // Entry 1546
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1547
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1548
+    0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1549
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1550
+    0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1551
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1552
+    0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1553
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1554
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1555
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1556
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    0.0
+  },
+  { // Entry 1557
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1558
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1559
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1560
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1561
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1562
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1563
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1564
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1565
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1566
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1567
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1568
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1569
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1570
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1571
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1572
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1573
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1574
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1575
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1576
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1577
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1578
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1579
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1580
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1581
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1582
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1583
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1584
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1585
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1586
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1587
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1588
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1589
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1590
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1591
+    0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1592
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1593
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1594
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1595
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1596
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1597
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1598
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1599
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1600
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1601
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1602
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1603
+    -0x1.fffffffffffff0p-51,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1604
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1605
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1606
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1607
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1608
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1609
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1610
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1611
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1612
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1613
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1614
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1615
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1616
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1617
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1618
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1619
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1620
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1621
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1622
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1623
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1624
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1625
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1626
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1627
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1628
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1629
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1630
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1631
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1632
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1633
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1634
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1635
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1636
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1637
+    -0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1638
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1639
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1640
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1641
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1642
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1643
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1644
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1645
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1646
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1647
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1648
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1649
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1650
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1651
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1652
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1653
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1654
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1655
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1656
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1657
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1658
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1659
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1660
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1661
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1662
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1663
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1664
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1665
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1666
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1667
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1668
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1669
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1670
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1671
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1672
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1673
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1674
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1675
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1676
+    HUGE_VAL,
+    0x1.0p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1677
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1678
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1679
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1680
+    0x1.p-1022,
+    0x1.0p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1681
+    -0x1.p-1022,
+    0x1.0p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1682
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1683
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1684
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1685
+    -0x1.p-1074,
+    0x1.0p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1686
+    0.0,
+    0x1.0p-1074,
+    0.0,
+    0.0
+  },
+  { // Entry 1687
+    0.0,
+    0x1.0p-1074,
+    0.0,
+    -0.0
+  },
+  { // Entry 1688
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1689
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1690
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1691
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1692
+    0x1.p-1022,
+    0x1.0p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1693
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1694
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1695
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1696
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1697
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1698
+    0.0,
+    0x1.0p-1074,
+    -0.0,
+    0.0
+  },
+  { // Entry 1699
+    -0.0,
+    0x1.0p-1074,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1700
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 1701
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1702
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1703
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1704
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1705
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1706
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1707
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1708
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1709
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 1710
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1711
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 1712
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1713
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1714
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 1715
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 1716
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1717
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1718
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 1719
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 1720
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 1721
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 1722
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1723
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1724
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1725
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1726
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1727
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1728
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1729
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1730
+    -0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1731
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1732
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1733
+    -0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1734
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1735
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1736
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1737
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1738
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1739
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1740
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1741
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1742
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1743
+    0x1.ffffffffffffefffffffffffffffffffp-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1744
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1745
+    0x1.fffffffffffff0p-51,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1746
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1747
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1748
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1749
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1750
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1751
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1752
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1753
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1754
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1755
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1756
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1757
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1758
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1759
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1760
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1761
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1762
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1763
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1764
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1765
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1766
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1767
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1768
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1769
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1770
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1771
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1772
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1773
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1774
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1775
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1776
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1777
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1778
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1779
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1780
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1781
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1782
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1783
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1784
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1785
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1786
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1787
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1788
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1789
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1790
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1791
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1792
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1793
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1794
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1795
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1796
+    0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1797
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1798
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1799
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1800
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1801
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1802
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1803
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1804
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1805
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1806
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1807
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1808
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1809
+    -0x1.ffffffffffffefffffffffffffffffffp1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1810
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1811
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1812
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1813
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1814
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1815
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1816
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1817
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1818
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1819
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1820
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1821
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1822
+    0x1.p-1022,
+    -0x1.0p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1823
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1824
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1825
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1826
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1827
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1828
+    0.0,
+    -0x1.0p-1074,
+    0.0,
+    0.0
+  },
+  { // Entry 1829
+    -0.0,
+    -0x1.0p-1074,
+    0.0,
+    -0.0
+  },
+  { // Entry 1830
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1831
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1832
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1833
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1834
+    0x1.p-1022,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1835
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1836
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1837
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1838
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1839
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1840
+    0.0,
+    -0x1.0p-1074,
+    -0.0,
+    0.0
+  },
+  { // Entry 1841
+    0.0,
+    -0x1.0p-1074,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1842
+    HUGE_VAL,
+    0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1843
+    -HUGE_VAL,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1844
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1845
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1846
+    0x1.p-1022,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1847
+    -0x1.p-1022,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1848
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1849
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1850
+    0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1851
+    -0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1852
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1853
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1854
+    HUGE_VAL,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1855
+    -HUGE_VAL,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1856
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1857
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1858
+    0x1.p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1859
+    -0x1.p-1022,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1860
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1861
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1862
+    0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1863
+    -0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1864
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1865
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1866
+    HUGE_VAL,
+    0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1867
+    -HUGE_VAL,
+    0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1868
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1869
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1870
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1871
+    -0x1.p-1022,
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1872
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1873
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1874
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1875
+    -0x1.p-1074,
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1876
+    0.0,
+    0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1877
+    0.0,
+    0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1878
+    HUGE_VAL,
+    0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1879
+    -HUGE_VAL,
+    0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1880
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1881
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1882
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1883
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1884
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1885
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1886
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1887
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1888
+    0.0,
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1889
+    -0.0,
+    0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1890
+    HUGE_VAL,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1891
+    -HUGE_VAL,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1892
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1893
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1894
+    0x1.p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1895
+    -0x1.p-1022,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1896
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1897
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1898
+    0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1899
+    -0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1900
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1901
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1902
+    HUGE_VAL,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 1903
+    -HUGE_VAL,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 1904
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1905
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1906
+    0x1.p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 1907
+    -0x1.p-1022,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1908
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1909
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1910
+    0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 1911
+    -0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1912
+    0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 1913
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 1914
+    HUGE_VAL,
+    0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1915
+    -HUGE_VAL,
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1916
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1917
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1918
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1919
+    -0x1.p-1022,
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1920
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1921
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1922
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1923
+    -0x1.p-1074,
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1924
+    0.0,
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1925
+    0.0,
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1926
+    HUGE_VAL,
+    0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 1927
+    -HUGE_VAL,
+    0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 1928
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1929
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1930
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 1931
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 1932
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1933
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1934
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 1935
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1936
+    0.0,
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 1937
+    -0.0,
+    0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 1938
+    HUGE_VAL,
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 1939
+    -HUGE_VAL,
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1940
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1941
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1942
+    0x1.p-1022,
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1943
+    -0x1.p-1022,
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1944
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1945
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1946
+    0x1.p-1074,
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1947
+    -0x1.p-1074,
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1948
+    0.0,
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 1949
+    0.0,
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 1950
+    HUGE_VAL,
+    0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 1951
+    -HUGE_VAL,
+    0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 1952
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1953
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1954
+    0x1.p-1022,
+    0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 1955
+    -0x1.p-1022,
+    0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 1956
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1957
+    -0x1.ffffffffffffe0p-1023,
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1958
+    0x1.p-1074,
+    0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 1959
+    -0x1.p-1074,
+    0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1960
+    0.0,
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 1961
+    -0.0,
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 1962
+    HUGE_VAL,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1963
+    -HUGE_VAL,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1964
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1965
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1966
+    0x1.p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1967
+    -0x1.p-1022,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1968
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1969
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1970
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1971
+    -0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1972
+    0.0,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1973
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1974
+    HUGE_VAL,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 1975
+    -HUGE_VAL,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 1976
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1977
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1978
+    0x1.p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 1979
+    -0x1.p-1022,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 1980
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1981
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1982
+    0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 1983
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 1984
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 1985
+    0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 1986
+    HUGE_VAL,
+    -0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1987
+    -HUGE_VAL,
+    -0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 1988
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 1989
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 1990
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 1991
+    -0x1.p-1022,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 1992
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 1993
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 1994
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 1995
+    -0x1.p-1074,
+    -0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 1996
+    0.0,
+    -0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 1997
+    -0.0,
+    -0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 1998
+    HUGE_VAL,
+    -0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 1999
+    -HUGE_VAL,
+    -0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2000
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2001
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2002
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2003
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2004
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2005
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2006
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2007
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2008
+    0.0,
+    -0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2009
+    0.0,
+    -0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2010
+    HUGE_VAL,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2011
+    -HUGE_VAL,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2012
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2013
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2014
+    0x1.p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2015
+    -0x1.p-1022,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2016
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2017
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2018
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2019
+    -0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2020
+    0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2021
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2022
+    HUGE_VAL,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2023
+    -HUGE_VAL,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2024
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2025
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2026
+    0x1.p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2027
+    -0x1.p-1022,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2028
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2029
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2030
+    0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2031
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2032
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2033
+    0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2034
+    HUGE_VAL,
+    -0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2035
+    -HUGE_VAL,
+    -0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2036
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2037
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2038
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2039
+    -0x1.p-1022,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2040
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2041
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2042
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2043
+    -0x1.p-1074,
+    -0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2044
+    0.0,
+    -0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2045
+    -0.0,
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2046
+    HUGE_VAL,
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2047
+    -HUGE_VAL,
+    -0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2048
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2049
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2050
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2051
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2052
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2053
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2054
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2055
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2056
+    0.0,
+    -0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2057
+    0.0,
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2058
+    HUGE_VAL,
+    -0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 2059
+    -HUGE_VAL,
+    -0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 2060
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2061
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2062
+    0x1.p-1022,
+    -0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 2063
+    -0x1.p-1022,
+    -0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 2064
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2065
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2066
+    0x1.p-1074,
+    -0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 2067
+    -0x1.p-1074,
+    -0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 2068
+    0.0,
+    -0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 2069
+    -0.0,
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 2070
+    HUGE_VAL,
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 2071
+    -HUGE_VAL,
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 2072
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2073
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2074
+    0x1.p-1022,
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 2075
+    -0x1.p-1022,
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 2076
+    0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2077
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2078
+    0x1.p-1074,
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 2079
+    -0x1.p-1074,
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 2080
+    0.0,
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 2081
+    0.0,
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 2082
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 2083
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2084
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2085
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2086
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2087
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2088
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2089
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2090
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2091
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 2092
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2093
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 2094
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2095
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2096
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2097
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2098
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2099
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2100
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2101
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2102
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 2103
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2104
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 2105
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2106
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2107
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2108
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2109
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2110
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2111
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2112
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2113
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2114
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2115
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 2116
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2117
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2118
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2119
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2120
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2121
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2122
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2123
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2124
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2125
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2126
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 2127
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2128
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2129
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2130
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2131
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2132
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2133
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2134
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2135
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2136
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2137
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2138
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2139
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2140
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2141
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2142
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2143
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2144
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2145
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2146
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2147
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2148
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2149
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2150
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2151
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2152
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2153
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2154
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2155
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2156
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2157
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2158
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2159
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2160
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2161
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2162
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2163
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2164
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2165
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2166
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2167
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2168
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2169
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2170
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2171
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2172
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2173
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2174
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2175
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2176
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2177
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2178
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2179
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2180
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2181
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2182
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2183
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2184
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2185
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2186
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2187
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2188
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2189
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2190
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2191
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2192
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 2193
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2194
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2195
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2196
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2197
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2198
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2199
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2200
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2201
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 2202
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2203
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 2204
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2205
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2206
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 2207
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 2208
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2209
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2210
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 2211
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 2212
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 2213
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 2214
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 2215
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2216
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2217
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2218
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2219
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2220
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2221
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2222
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2223
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2224
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2225
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 2226
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2227
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2228
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 2229
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2230
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2231
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2232
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 2233
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2234
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 2235
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 2236
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 2237
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2238
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2239
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2240
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2241
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2242
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2243
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2244
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2245
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2246
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2247
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 2248
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2249
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2250
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 2251
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 2252
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2253
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2254
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 2255
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 2256
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 2257
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 2258
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 2259
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2260
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2261
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2262
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2263
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2264
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2265
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2266
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2267
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2268
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2269
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 2270
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2271
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2272
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 2273
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 2274
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2275
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2276
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 2277
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 2278
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 2279
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 2280
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 2281
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2282
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2283
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2284
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2285
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2286
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2287
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2288
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2289
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2290
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2291
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 2292
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 2293
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 2294
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 2295
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 2296
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 2297
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 2298
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 2299
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 2300
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 2301
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -0.0
+  }
+};
diff --git a/tests/math_data/fmaf_intel_data.h b/tests/math_data/fmaf_intel_data.h
new file mode 100644
index 0000000..af509e6
--- /dev/null
+++ b/tests/math_data/fmaf_intel_data.h
@@ -0,0 +1,13836 @@
+/*
+ * 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.
+ */
+
+static data_1_3_t<float, float, float, float> g_fmaf_intel_data[] = {
+  { // Entry 0
+    -0x1.800002fffffffffffd80p73,
+    -0x1.000002p72,
+    0x1.80p1,
+    0x1.40p2
+  },
+  { // Entry 1
+    -0x1.e66666p0,
+    0x1.p-149,
+    -0x1.ccccccp-1,
+    -0x1.e66666p0
+  },
+  { // Entry 2
+    0x1.15f153ffffffffffffffffffffffffffp-2,
+    0x1.p-149,
+    -0x1.ccccccp-1,
+    0x1.15f154p-2
+  },
+  { // Entry 3
+    0x1.000005fffffffffffffffffffff0ccccp-41,
+    0x1.p-149,
+    -0x1.e66666p-1,
+    0x1.000006p-41
+  },
+  { // Entry 4
+    -0x1.e66665ffffffffffffffffffffffffffp0,
+    0x1.p-149,
+    0x1.075070p-3,
+    -0x1.e66666p0
+  },
+  { // Entry 5
+    0x1.00000600000000000000000000014444p-41,
+    0x1.p-149,
+    0x1.444424p-4,
+    0x1.000006p-41
+  },
+  { // Entry 6
+    0x1.c9999906666680p0,
+    0x1.000002p-3,
+    -0x1.ccccccp-1,
+    0x1.e66666p0
+  },
+  { // Entry 7
+    0x1.880156fffffffffefbbcp14,
+    0x1.0000e0p7,
+    0x1.88p7,
+    -0x1.0444p-50
+  },
+  { // Entry 8
+    0x1.2b3335p-43,
+    0x1.08p-41,
+    -0x1.8df6b0p-1,
+    0x1.18p-41
+  },
+  { // Entry 9
+    0x1.9af704000001p-1,
+    0x1.43969cp-3,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 10
+    0x1.7eed9900000080p-1,
+    0x1.43969cp-4,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 11
+    -0x1.5229cafffffffffc6de498p59,
+    0x1.88p60,
+    -0x1.b9aec0p-2,
+    0x1.c90db4p-4
+  },
+  { // Entry 12
+    0x1.678c8dffffffb0p-1,
+    0x1.ae0ef4p-7,
+    0x1.62e42ep-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 13
+    0x1.ffffee000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 14
+    0x1.fffff0000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 15
+    0x1.fffff4000010p-1,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 16
+    0x1.fffffep-1,
+    0x1.fffffep127,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 17
+    0x1.p0,
+    0x1.fffffep127,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 18
+    0x1.000002p0,
+    0x1.fffffep127,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 19
+    0x1.000006fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 20
+    0x1.000007fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 21
+    0x1.000009fffff8p0,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 22
+    0x1.ffffee000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 23
+    0x1.fffff0000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 24
+    0x1.fffff4000020p-2,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 25
+    0x1.fffffep-2,
+    0x1.fffffcp126,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 26
+    0x1.p-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 27
+    0x1.000002p-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 28
+    0x1.000006fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 29
+    0x1.000007fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 30
+    0x1.000009fffff0p-1,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 31
+    0x1.ffffee000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 32
+    0x1.fffff0000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 33
+    0x1.fffff4000010p-2,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 34
+    0x1.fffffep-2,
+    0x1.fffffep126,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 36
+    0x1.000002p-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 37
+    0x1.000006fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 38
+    0x1.000007fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 39
+    0x1.000009fffff8p-1,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 40
+    0x1.ffffeep-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 41
+    0x1.fffff0p-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 42
+    0x1.fffff4p-2,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 43
+    0x1.fffffep-2,
+    0x1.p127,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 44
+    0x1.p-1,
+    0x1.p127,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 45
+    0x1.000002p-1,
+    0x1.p127,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 46
+    0x1.000007p-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.fffffep-2
+  },
+  { // Entry 47
+    0x1.000008p-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.p-1
+  },
+  { // Entry 48
+    0x1.00000ap-1,
+    0x1.p127,
+    0x1.p-149,
+    0x1.000002p-1
+  },
+  { // Entry 49
+    0x1.fffff6000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 50
+    0x1.fffff8000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 51
+    0x1.fffffc000010p-1,
+    0x1.fffffcp126,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 52
+    0x1.fffffep-1,
+    0x1.fffffcp126,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 53
+    0x1.p0,
+    0x1.fffffcp126,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 54
+    0x1.000002p0,
+    0x1.fffffcp126,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 55
+    0x1.000002fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 56
+    0x1.000003fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 57
+    0x1.000005fffff8p0,
+    0x1.fffffcp126,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 58
+    0x1.fffff6000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 59
+    0x1.fffff8000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 60
+    0x1.fffffc000008p-1,
+    0x1.fffffep126,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 61
+    0x1.fffffep-1,
+    0x1.fffffep126,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 62
+    0x1.p0,
+    0x1.fffffep126,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 63
+    0x1.000002p0,
+    0x1.fffffep126,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 64
+    0x1.000002fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 65
+    0x1.000003fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 66
+    0x1.000005fffffcp0,
+    0x1.fffffep126,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 67
+    0x1.fffff6p-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 68
+    0x1.fffff8p-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 69
+    0x1.fffffcp-1,
+    0x1.p127,
+    -0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 70
+    0x1.fffffep-1,
+    0x1.p127,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 71
+    0x1.p0,
+    0x1.p127,
+    0.0,
+    0x1.p0
+  },
+  { // Entry 72
+    0x1.000002p0,
+    0x1.p127,
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 73
+    0x1.000003p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.fffffep-1
+  },
+  { // Entry 74
+    0x1.000004p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 75
+    0x1.000006p0,
+    0x1.p127,
+    0x1.p-149,
+    0x1.000002p0
+  },
+  { // Entry 76
+    0x1.fffffc000001ffffffffffffffffffffp-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 77
+    0x1.fffffc000002p-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 78
+    0x1.fffffc000002p-2,
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 79
+    0x1.fffffdffffffffffffffffffffffffffp-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 80
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 81
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 82
+    0x1.000000fffffdffffffffffffffffffffp-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 83
+    0x1.000000fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 84
+    0x1.000000fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 85
+    0x1.fffffdffffffffffffffffffffffffffp-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 86
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 87
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 88
+    0x1.ffffffffffffffffffffffffffffffffp-2,
+    0x1.p-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 89
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 90
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 91
+    0x1.000001ffffffffffffffffffffffffffp-1,
+    0x1.p-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 92
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 93
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 94
+    0x1.000000fffffdffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 95
+    0x1.000000fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 96
+    0x1.000000fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 97
+    0x1.000001ffffffffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 98
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 99
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 100
+    0x1.000004000003ffffffffffffffffffffp-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 101
+    0x1.000004000004p-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 102
+    0x1.000004000004p-1,
+    0x1.000002p-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 103
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 104
+    0x1.000002000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 105
+    0x1.000002000009p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 106
+    0x1.000002fffffcp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 107
+    0x1.000003p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 108
+    0x1.000003000008p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 109
+    0x1.000004fffffap-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 110
+    0x1.000004fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 111
+    0x1.000005000006p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 112
+    0x1.000002fffffcp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 113
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 114
+    0x1.000003000008p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 115
+    0x1.000003fffffcp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 116
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 117
+    0x1.000004000008p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 118
+    0x1.000005fffffcp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 119
+    0x1.000006p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 120
+    0x1.000006000008p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 121
+    0x1.000004fffffap-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 122
+    0x1.000004fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 123
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 124
+    0x1.000005fffffcp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 125
+    0x1.000006p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 126
+    0x1.000006000008p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 127
+    0x1.000008p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 128
+    0x1.000008000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 129
+    0x1.00000800000cp-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 130
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 131
+    0x1.000002000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 132
+    0x1.000002000009p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 133
+    0x1.000002fffffcp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 134
+    0x1.000003p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 135
+    0x1.000003000008p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 136
+    0x1.000004fffffap-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 137
+    0x1.000004fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 138
+    0x1.000005000006p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 139
+    0x1.000002fffffcp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 140
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 141
+    0x1.000003000008p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 142
+    0x1.000003fffffcp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 143
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 144
+    0x1.000004000008p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 145
+    0x1.000005fffffcp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 146
+    0x1.000006p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 147
+    0x1.000006000008p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 148
+    0x1.000004fffffap-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-24
+  },
+  { // Entry 149
+    0x1.000004fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-23
+  },
+  { // Entry 150
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-23
+  },
+  { // Entry 151
+    0x1.000005fffffcp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 152
+    0x1.000006p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-23
+  },
+  { // Entry 153
+    0x1.000006000008p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-23
+  },
+  { // Entry 154
+    0x1.000008p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-24
+  },
+  { // Entry 155
+    0x1.000008000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-23
+  },
+  { // Entry 156
+    0x1.00000800000cp-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-23
+  },
+  { // Entry 157
+    0x1.00000dfffff1p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 158
+    0x1.00000e000001p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 159
+    0x1.00000e000021p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 160
+    0x1.00000efffff0p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 161
+    0x1.00000fp-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 162
+    0x1.00000f000020p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 163
+    0x1.000010ffffeep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 164
+    0x1.000010fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 165
+    0x1.00001100001ep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 166
+    0x1.00000efffff0p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 167
+    0x1.00000fp-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 168
+    0x1.00000f000020p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 169
+    0x1.00000ffffff0p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 170
+    0x1.000010p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 171
+    0x1.000010000020p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 172
+    0x1.000011fffff0p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 173
+    0x1.000012p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 174
+    0x1.000012000020p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 175
+    0x1.000010ffffeep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-22
+  },
+  { // Entry 176
+    0x1.000010fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-21
+  },
+  { // Entry 177
+    0x1.00001100001ep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-21
+  },
+  { // Entry 178
+    0x1.000011fffff0p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 179
+    0x1.000012p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-21
+  },
+  { // Entry 180
+    0x1.000012000020p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-21
+  },
+  { // Entry 181
+    0x1.000013fffff4p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-22
+  },
+  { // Entry 182
+    0x1.000014000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-21
+  },
+  { // Entry 183
+    0x1.000014000024p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-21
+  },
+  { // Entry 184
+    0x1.fffffep-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 185
+    0x1.fffffe000002p-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 186
+    0x1.fffffe000006p-2,
+    0x1.fffffep-1,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 187
+    0x1.fffffffffffep-2,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 188
+    0x1.p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 189
+    0x1.000000000002p-1,
+    0x1.fffffep-1,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 190
+    0x1.000001fffffdp-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 191
+    0x1.000001fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 192
+    0x1.000002p-1,
+    0x1.fffffep-1,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 193
+    0x1.fffffffffffep-2,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 194
+    0x1.p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 195
+    0x1.000000000002p-1,
+    0x1.p0,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 196
+    0x1.000000ffffffp-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 197
+    0x1.000001p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 198
+    0x1.000001000002p-1,
+    0x1.p0,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 199
+    0x1.000002ffffffp-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 200
+    0x1.000003p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 201
+    0x1.000003000002p-1,
+    0x1.p0,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 202
+    0x1.000001fffffdp-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.fffffep-26
+  },
+  { // Entry 203
+    0x1.000001fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.p-25
+  },
+  { // Entry 204
+    0x1.000002p-1,
+    0x1.000002p0,
+    0x1.fffffep-2,
+    0x1.000002p-25
+  },
+  { // Entry 205
+    0x1.000002ffffffp-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 206
+    0x1.000003p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.p-25
+  },
+  { // Entry 207
+    0x1.000003000002p-1,
+    0x1.000002p0,
+    0x1.p-1,
+    0x1.000002p-25
+  },
+  { // Entry 208
+    0x1.000005000003p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.fffffep-26
+  },
+  { // Entry 209
+    0x1.000005000004p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.p-25
+  },
+  { // Entry 210
+    0x1.000005000006p-1,
+    0x1.000002p0,
+    0x1.000002p-1,
+    0x1.000002p-25
+  },
+  { // Entry 211
+    0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 212
+    0x1.fffffc000002p127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 213
+    0x1.fffffc000002p127,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 214
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 215
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 216
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 217
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 218
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 219
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 220
+    -0x1.fffffep103,
+    0x1.fffffep127,
+    0x1.fffffep-1,
+    -0x1.fffffep127
+  },
+  { // Entry 221
+    0.0,
+    0x1.fffffep127,
+    0x1.p0,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    0x1.fffffep104,
+    0x1.fffffep127,
+    0x1.000002p0,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0x1.fffffa000003ffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    -0x1.p-149
+  },
+  { // Entry 224
+    0x1.fffffa000004p127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    0.0
+  },
+  { // Entry 225
+    0x1.fffffa000004p127,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    0x1.p-149
+  },
+  { // Entry 226
+    0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    -0x1.p-149
+  },
+  { // Entry 227
+    0x1.fffffc000002p127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    0.0
+  },
+  { // Entry 228
+    0x1.fffffc000002p127,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    0x1.p-149
+  },
+  { // Entry 229
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep63,
+    0x1.p64,
+    -0x1.p-149
+  },
+  { // Entry 230
+    0x1.fffffep127,
+    0x1.fffffep63,
+    0x1.p64,
+    0.0
+  },
+  { // Entry 231
+    0x1.fffffep127,
+    0x1.fffffep63,
+    0x1.p64,
+    0x1.p-149
+  },
+  { // Entry 232
+    -0x1.7ffffep105,
+    0x1.fffffcp63,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 233
+    -0x1.fffffep104,
+    0x1.fffffcp63,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 234
+    -0x1.p104,
+    0x1.fffffcp63,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 235
+    -0x1.fffffep104,
+    0x1.fffffep63,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 236
+    -0x1.fffffep103,
+    0x1.fffffep63,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 237
+    0.0,
+    0x1.fffffep63,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 238
+    -0x1.p104,
+    0x1.p64,
+    0x1.fffffcp63,
+    -0x1.fffffep127
+  },
+  { // Entry 239
+    0.0,
+    0x1.p64,
+    0x1.fffffep63,
+    -0x1.fffffep127
+  },
+  { // Entry 240
+    0x1.p104,
+    0x1.p64,
+    0x1.p64,
+    -0x1.fffffep127
+  },
+  { // Entry 241
+    -0x1.fffff8p103,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 242
+    0x1.p104,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 243
+    0x1.fffffep104,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 244
+    -0x1.fffffep104,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 245
+    0.0,
+    0x1.fffffep126,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 246
+    0x1.fffffep103,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 247
+    -0x1.80p105,
+    0x1.p127,
+    -0x1.000002p1,
+    0x1.fffffep127
+  },
+  { // Entry 248
+    -0x1.p104,
+    0x1.p127,
+    -0x1.p1,
+    0x1.fffffep127
+  },
+  { // Entry 249
+    0.0,
+    0x1.p127,
+    -0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 250
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 251
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 252
+    -HUGE_VALF,
+    0x1.fffffcp126,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 253
+    -0x1.fffffcp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 254
+    -0x1.fffffcp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 255
+    -0x1.fffffbffffffffffffffffffffffffffp127,
+    0x1.fffffcp126,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 256
+    -0x1.fffffa000004p127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 257
+    -0x1.fffffa000004p127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 258
+    -0x1.fffffa000003ffffffffffffffffffffp127,
+    0x1.fffffcp126,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 259
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 260
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 261
+    -HUGE_VALF,
+    0x1.fffffep126,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 262
+    -0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 263
+    -0x1.fffffep127,
+    0x1.fffffep126,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 264
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep126,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 265
+    -0x1.fffffc000002p127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 266
+    -0x1.fffffc000002p127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 267
+    -0x1.fffffc000001ffffffffffffffffffffp127,
+    0x1.fffffep126,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 268
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    -0x1.p-149
+  },
+  { // Entry 269
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    0.0
+  },
+  { // Entry 270
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.000002p1,
+    0x1.p-149
+  },
+  { // Entry 271
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    -0x1.p-149
+  },
+  { // Entry 272
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    0.0
+  },
+  { // Entry 273
+    -HUGE_VALF,
+    0x1.p127,
+    -0x1.p1,
+    0x1.p-149
+  },
+  { // Entry 274
+    -0x1.fffffep127,
+    0x1.p127,
+    -0x1.fffffep0,
+    -0x1.p-149
+  },
+  { // Entry 275
+    -0x1.fffffep127,
+    0x1.p127,
+    -0x1.fffffep0,
+    0.0
+  },
+  { // Entry 276
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p127,
+    -0x1.fffffep0,
+    0x1.p-149
+  },
+  { // Entry 277
+    0x1.7ffffc800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 278
+    0x1.7ffffd800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 279
+    0x1.7ffffe800001p127,
+    0x1.fffffcp126,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 280
+    0x1.7ffffdp127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 281
+    0x1.7ffffep127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 282
+    0x1.7fffffp127,
+    0x1.fffffcp126,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 283
+    0x1.7ffffdfffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 284
+    0x1.7ffffefffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 285
+    0x1.7ffffffffffep127,
+    0x1.fffffcp126,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 286
+    0x1.7ffffd00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 287
+    0x1.7ffffe00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 288
+    0x1.7fffff00000080p127,
+    0x1.fffffep126,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 289
+    0x1.7ffffd80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 290
+    0x1.7ffffe80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 291
+    0x1.7fffff80p127,
+    0x1.fffffep126,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 292
+    0x1.7ffffe7fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 293
+    0x1.7fffff7fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 294
+    0x1.8000007fffffp127,
+    0x1.fffffep126,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 295
+    0x1.7ffffd80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.fffffcp126
+  },
+  { // Entry 296
+    0x1.7ffffe80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.fffffep126
+  },
+  { // Entry 297
+    0x1.7fffff80p127,
+    0x1.p127,
+    0x1.fffffep-2,
+    0x1.p127
+  },
+  { // Entry 298
+    0x1.7ffffep127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 299
+    0x1.7fffffp127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.fffffep126
+  },
+  { // Entry 300
+    0x1.80p127,
+    0x1.p127,
+    0x1.p-1,
+    0x1.p127
+  },
+  { // Entry 301
+    0x1.7fffffp127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.fffffcp126
+  },
+  { // Entry 302
+    0x1.80p127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.fffffep126
+  },
+  { // Entry 303
+    0x1.800001p127,
+    0x1.p127,
+    0x1.000002p-1,
+    0x1.p127
+  },
+  { // Entry 304
+    0x1.fffffb000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 305
+    0x1.fffffc000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 306
+    0x1.fffffd000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 307
+    0x1.fffffcp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 308
+    0x1.fffffdp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 309
+    0x1.fffffep127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 310
+    0x1.fffffdfffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 311
+    0x1.fffffefffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 312
+    HUGE_VALF,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 313
+    0x1.fffffc000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 314
+    0x1.fffffd000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 315
+    0x1.fffffe000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 316
+    0x1.fffffdp127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 317
+    0x1.fffffep127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 318
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 319
+    0x1.fffffefffffep127,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 320
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 321
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 322
+    0x1.fffffdp127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 323
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 324
+    HUGE_VALF,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 325
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 326
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 327
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 328
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 329
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 330
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 331
+    0x1.fffffb000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 332
+    0x1.fffffc000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 333
+    0x1.fffffd000002p127,
+    0x1.fffffcp126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 334
+    0x1.fffffcp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 335
+    0x1.fffffdp127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 336
+    0x1.fffffep127,
+    0x1.fffffcp126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 337
+    0x1.fffffdfffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 338
+    0x1.fffffefffffcp127,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 339
+    HUGE_VALF,
+    0x1.fffffcp126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 340
+    0x1.fffffc000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 341
+    0x1.fffffd000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 342
+    0x1.fffffe000001p127,
+    0x1.fffffep126,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 343
+    0x1.fffffdp127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 344
+    0x1.fffffep127,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 345
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 346
+    0x1.fffffefffffep127,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 347
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 348
+    HUGE_VALF,
+    0x1.fffffep126,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 349
+    0x1.fffffdp127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffcp126
+  },
+  { // Entry 350
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.fffffep126
+  },
+  { // Entry 351
+    HUGE_VALF,
+    0x1.p127,
+    0x1.fffffep-1,
+    0x1.p127
+  },
+  { // Entry 352
+    0x1.fffffep127,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffcp126
+  },
+  { // Entry 353
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.fffffep126
+  },
+  { // Entry 354
+    HUGE_VALF,
+    0x1.p127,
+    0x1.p0,
+    0x1.p127
+  },
+  { // Entry 355
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffcp126
+  },
+  { // Entry 356
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.fffffep126
+  },
+  { // Entry 357
+    HUGE_VALF,
+    0x1.p127,
+    0x1.000002p0,
+    0x1.p127
+  },
+  { // Entry 358
+    0x1.fffffd000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 359
+    0x1.fffffe000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 360
+    0x1.00000000000080p1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 361
+    0x1.fffffep0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 362
+    0x1.ffffffp0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.00000080p1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 364
+    0x1.fffffffffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 365
+    0x1.0000007fffffp1,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 366
+    0x1.0000017fffffp1,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 367
+    0x1.fffffep0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 368
+    0x1.ffffffp0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 369
+    0x1.00000080p1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 370
+    0x1.ffffffp0,
+    0x1.p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 371
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 372
+    0x1.000001p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 373
+    0x1.00000080p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 374
+    0x1.000001p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 375
+    0x1.000002p1,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 376
+    0x1.fffffffffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 377
+    0x1.0000007fffffp1,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 378
+    0x1.0000017fffffp1,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 379
+    0x1.00000080p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 380
+    0x1.000001p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 381
+    0x1.000002p1,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 382
+    0x1.000001800002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 383
+    0x1.000002000002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 384
+    0x1.000003000002p1,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 385
+    -0x1.fffffep-24,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 386
+    -0x1.fffffcp-25,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 387
+    0x1.000002p-24,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 388
+    0.0,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 389
+    0x1.p-24,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 390
+    0x1.80p-23,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 391
+    0x1.fffffep-25,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 392
+    0x1.ffffffp-24,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 393
+    0x1.ffffff80p-23,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 394
+    -0x1.80p-23,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 395
+    -0x1.p-23,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 396
+    0.0,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 397
+    -0x1.p-24,
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 398
+    0.0,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 399
+    0x1.p-23,
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 400
+    0.0,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 401
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 402
+    0x1.80p-23,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 403
+    -0x1.400001p-22,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 404
+    -0x1.000001p-22,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 405
+    -0x1.000002p-23,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 406
+    -0x1.80p-23,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 407
+    -0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 408
+    0.0,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 409
+    -0x1.fffffep-24,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 410
+    -0x1.fffffcp-25,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 411
+    0x1.000002p-24,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 412
+    0x1.fffffc000001ffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 413
+    0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 414
+    0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 415
+    0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 416
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 417
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 418
+    0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 419
+    0x1.000000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 420
+    0x1.000000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 421
+    0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 422
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 423
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 424
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 425
+    0x1.p0,
+    0x1.p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 426
+    0x1.p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 427
+    0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 428
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 429
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 430
+    0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 431
+    0x1.000000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 432
+    0x1.000000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 433
+    0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 434
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 435
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 436
+    0x1.000004000003ffffffffffffffffffffp0,
+    0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 437
+    0x1.000004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0.0
+  },
+  { // Entry 438
+    0x1.000004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 439
+    -0x1.000000fffffep0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 440
+    -0x1.000000fffffep0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 441
+    -0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 442
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 443
+    -0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 444
+    -0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 445
+    -0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 446
+    -0x1.fffffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 447
+    -0x1.fffffc000001ffffffffffffffffffffp-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 448
+    -0x1.000002p0,
+    0x1.p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 449
+    -0x1.000002p0,
+    0x1.p0,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 450
+    -0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 451
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 452
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 453
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 454
+    -0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 455
+    -0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 456
+    -0x1.fffffdffffffffffffffffffffffffffp-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 457
+    -0x1.000004000004p0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.p-149
+  },
+  { // Entry 458
+    -0x1.000004000004p0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0.0
+  },
+  { // Entry 459
+    -0x1.000004000003ffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-149
+  },
+  { // Entry 460
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 461
+    -0x1.000002p0,
+    0x1.000002p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 462
+    -0x1.000001ffffffffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 463
+    -0x1.000000fffffep0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    -0x1.p-149
+  },
+  { // Entry 464
+    -0x1.000000fffffep0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0.0
+  },
+  { // Entry 465
+    -0x1.000000fffffdffffffffffffffffffffp0,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p-149
+  },
+  { // Entry 466
+    0x1.000ffdfff001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 467
+    0x1.000ffe000001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 468
+    0x1.000ffe002001p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 469
+    0x1.000ffefff0p0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 470
+    0x1.000fffp0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 471
+    0x1.000fff0020p0,
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 472
+    0x1.001000ffeffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 473
+    0x1.001000fffffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 474
+    0x1.001001001ffep0,
+    0x1.fffffep-1,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 475
+    0x1.000ffefff0p0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 476
+    0x1.000fffp0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 477
+    0x1.000fff0020p0,
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 478
+    0x1.000ffffff0p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 479
+    0x1.0010p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 480
+    0x1.0010000020p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 481
+    0x1.001001fff0p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 482
+    0x1.001002p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 483
+    0x1.0010020020p0,
+    0x1.p0,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 484
+    0x1.001000ffeffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 485
+    0x1.001000fffffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 486
+    0x1.001001001ffep0,
+    0x1.000002p0,
+    0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 487
+    0x1.001001fff0p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 488
+    0x1.001002p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 489
+    0x1.0010020020p0,
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 490
+    0x1.001003fff004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 491
+    0x1.001004000004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 492
+    0x1.001004002004p0,
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 493
+    -0x1.ffe002001ffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 494
+    -0x1.ffe001fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 495
+    -0x1.ffe001ffbffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 496
+    -0x1.ffdffe0020p-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 497
+    -0x1.ffdffep-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 498
+    -0x1.ffdffdffc0p-1,
+    0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 499
+    -0x1.ffdffc002002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 500
+    -0x1.ffdffc000002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 501
+    -0x1.ffdffbffc002p-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 502
+    -0x1.ffe0040020p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 503
+    -0x1.ffe004p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 504
+    -0x1.ffe003ffc0p-1,
+    0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 505
+    -0x1.ffe0000020p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 506
+    -0x1.ffe0p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 507
+    -0x1.ffdfffffc0p-1,
+    0x1.p0,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 508
+    -0x1.ffdffe0020p-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 509
+    -0x1.ffdffep-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 510
+    -0x1.ffdffdffc0p-1,
+    0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 511
+    -0x1.ffe008002008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.fffffep-13
+  },
+  { // Entry 512
+    -0x1.ffe008000008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.p-12
+  },
+  { // Entry 513
+    -0x1.ffe007ffc008p-1,
+    0x1.000002p0,
+    -0x1.000002p0,
+    0x1.000002p-12
+  },
+  { // Entry 514
+    -0x1.ffe0040020p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.fffffep-13
+  },
+  { // Entry 515
+    -0x1.ffe004p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.p-12
+  },
+  { // Entry 516
+    -0x1.ffe003ffc0p-1,
+    0x1.000002p0,
+    -0x1.p0,
+    0x1.000002p-12
+  },
+  { // Entry 517
+    -0x1.ffe002001ffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-13
+  },
+  { // Entry 518
+    -0x1.ffe001fffffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.p-12
+  },
+  { // Entry 519
+    -0x1.ffe001ffbffcp-1,
+    0x1.000002p0,
+    -0x1.fffffep-1,
+    0x1.000002p-12
+  },
+  { // Entry 520
+    -0x1.ffffff80p0,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 521
+    -0x1.ffffffp-1,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 522
+    -0x1.fffffep-2,
+    0x1.fffffep22,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 523
+    -0x1.80p0,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 524
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 525
+    0.0,
+    0x1.fffffep22,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 526
+    -0x1.000002p-1,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 527
+    0x1.fffffcp-2,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 528
+    0x1.fffffep-1,
+    0x1.fffffep22,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 529
+    -0x1.80p0,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 530
+    -0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 531
+    0.0,
+    0x1.p23,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 532
+    -0x1.p0,
+    0x1.p23,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 533
+    0.0,
+    0x1.p23,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 534
+    0x1.p-1,
+    0x1.p23,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 535
+    0.0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 536
+    0x1.p0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 537
+    0x1.80p0,
+    0x1.p23,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 538
+    -0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.000002p23
+  },
+  { // Entry 539
+    0x1.fffffcp-2,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.p23
+  },
+  { // Entry 540
+    0x1.fffffep-1,
+    0x1.000002p23,
+    0x1.fffffep-1,
+    -0x1.fffffep22
+  },
+  { // Entry 541
+    0.0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.000002p23
+  },
+  { // Entry 542
+    0x1.p0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 543
+    0x1.80p0,
+    0x1.000002p23,
+    0x1.p0,
+    -0x1.fffffep22
+  },
+  { // Entry 544
+    0x1.000002p0,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 545
+    0x1.000001p1,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.p23
+  },
+  { // Entry 546
+    0x1.400001p1,
+    0x1.000002p23,
+    0x1.000002p0,
+    -0x1.fffffep22
+  },
+  { // Entry 547
+    0x1.08p-5,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 548
+    0x1.0040p0,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p0
+  },
+  { // Entry 549
+    0x1.p-4,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 550
+    0x1.08p0,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 551
+    0x1.p-4,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p-5
+  },
+  { // Entry 552
+    0x1.08p0,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p0
+  },
+  { // Entry 553
+    0x1.08p0,
+    0x1.p0,
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 554
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 555
+    0x1.20p-2,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 556
+    0x1.40p0,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 557
+    0x1.08p0,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 558
+    0x1.p1,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 559
+    0x1.01p3,
+    0x1.p0,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 560
+    0x1.20p3,
+    0x1.p0,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 561
+    0x1.0040p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 562
+    0x1.08p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 563
+    0x1.0040p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 564
+    0x1.08p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 565
+    0x1.0010p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 566
+    0x1.02p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 567
+    0x1.0002p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 568
+    0x1.0040p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 569
+    0x1.000080p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 570
+    0x1.0010p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 571
+    0x1.0008p3,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p3
+  },
+  { // Entry 572
+    0x1.0002p5,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p5
+  },
+  { // Entry 573
+    0x1.01p3,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 574
+    0x1.0040p5,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 575
+    0x1.01p3,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p3
+  },
+  { // Entry 576
+    0x1.0040p5,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p5
+  },
+  { // Entry 577
+    0x1.20p3,
+    0x1.p0,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 578
+    0x1.08p5,
+    0x1.p0,
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 579
+    0x1.08p3,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 580
+    0x1.02p5,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 581
+    0x1.20p3,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 582
+    0x1.08p5,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 583
+    0x1.p4,
+    0x1.p0,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 584
+    0x1.40p5,
+    0x1.p0,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 585
+    0x1.40p5,
+    0x1.p0,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 586
+    0x1.p6,
+    0x1.p0,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 587
+    0x1.40p5,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 588
+    0x1.p6,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 589
+    0x1.10p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 590
+    0x1.40p7,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 591
+    0x1.02p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 592
+    0x1.08p10,
+    0x1.p0,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 593
+    0x1.0080p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 594
+    0x1.02p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 595
+    0x1.000010p10,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p10
+  },
+  { // Entry 596
+    0x1.000004p12,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p12
+  },
+  { // Entry 597
+    0x1.0002p10,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 598
+    0x1.000080p12,
+    0x1.p-5,
+    0x1.p0,
+    0x1.p12
+  },
+  { // Entry 599
+    0x1.0002p10,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p10
+  },
+  { // Entry 600
+    0x1.000080p12,
+    0x1.p0,
+    0x1.p-5,
+    0x1.p12
+  },
+  { // Entry 601
+    0x1.0040p10,
+    0x1.p0,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 602
+    0x1.0010p12,
+    0x1.p0,
+    0x1.p0,
+    0x1.p12
+  },
+  { // Entry 603
+    0x1.0010p10,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 604
+    0x1.0004p12,
+    0x1.p-5,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 605
+    0x1.0040p10,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 606
+    0x1.0010p12,
+    0x1.p-5,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 607
+    0x1.02p10,
+    0x1.p0,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 608
+    0x1.0080p12,
+    0x1.p0,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 609
+    0x1.08p10,
+    0x1.p0,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 610
+    0x1.02p12,
+    0x1.p0,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 611
+    0x1.08p10,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 612
+    0x1.02p12,
+    0x1.p-5,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 613
+    0x1.20p10,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 614
+    0x1.08p12,
+    0x1.p-5,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 615
+    0x1.p11,
+    0x1.p0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 616
+    0x1.40p12,
+    0x1.p0,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 617
+    0x1.40p12,
+    0x1.p0,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 618
+    0x1.p13,
+    0x1.p0,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 619
+    0x1.0020p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 620
+    0x1.04p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 621
+    0x1.0008p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 622
+    0x1.01p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 623
+    0x1.0008p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p-5
+  },
+  { // Entry 624
+    0x1.01p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 625
+    0x1.0002p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p-5
+  },
+  { // Entry 626
+    0x1.0040p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p0
+  },
+  { // Entry 627
+    0x1.20p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 628
+    0x1.80p6,
+    0x1.p3,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 629
+    0x1.08p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 630
+    0x1.20p8,
+    0x1.p3,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 631
+    0x1.08p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 632
+    0x1.20p8,
+    0x1.p5,
+    0x1.p3,
+    0x1.p5
+  },
+  { // Entry 633
+    0x1.02p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p3
+  },
+  { // Entry 634
+    0x1.08p10,
+    0x1.p5,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 635
+    0x1.10p10,
+    0x1.p3,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 636
+    0x1.04p12,
+    0x1.p3,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 637
+    0x1.40p10,
+    0x1.p3,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 638
+    0x1.10p12,
+    0x1.p3,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 639
+    0x1.40p10,
+    0x1.p5,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 640
+    0x1.10p12,
+    0x1.p5,
+    0x1.p3,
+    0x1.p12
+  },
+  { // Entry 641
+    0x1.p11,
+    0x1.p5,
+    0x1.p5,
+    0x1.p10
+  },
+  { // Entry 642
+    0x1.40p12,
+    0x1.p5,
+    0x1.p5,
+    0x1.p12
+  },
+  { // Entry 643
+    0x1.000040p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 644
+    0x1.0008p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 645
+    0x1.000010p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 646
+    0x1.0002p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 647
+    0x1.000010p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p-5
+  },
+  { // Entry 648
+    0x1.0002p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 649
+    0x1.000004p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p-5
+  },
+  { // Entry 650
+    0x1.000080p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p0
+  },
+  { // Entry 651
+    0x1.0040p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 652
+    0x1.01p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 653
+    0x1.0010p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 654
+    0x1.0040p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 655
+    0x1.0010p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 656
+    0x1.0040p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p5
+  },
+  { // Entry 657
+    0x1.0004p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p3
+  },
+  { // Entry 658
+    0x1.0010p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p5
+  },
+  { // Entry 659
+    0x1.20p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 660
+    0x1.80p13,
+    0x1.p3,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 661
+    0x1.08p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 662
+    0x1.20p15,
+    0x1.p3,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 663
+    0x1.08p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 664
+    0x1.20p15,
+    0x1.p5,
+    0x1.p10,
+    0x1.p12
+  },
+  { // Entry 665
+    0x1.02p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p10
+  },
+  { // Entry 666
+    0x1.08p17,
+    0x1.p5,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 667
+    -0x1.ffffe0p-21,
+    -0x1.p-20,
+    -0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 668
+    0x1.000010p-20,
+    -0x1.p-20,
+    -0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 669
+    -0x1.000010p-20,
+    -0x1.p-20,
+    0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 670
+    0x1.ffffe0p-21,
+    -0x1.p-20,
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 671
+    -0x1.000010p-20,
+    0x1.p-20,
+    -0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 672
+    0x1.ffffe0p-21,
+    0x1.p-20,
+    -0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 673
+    -0x1.ffffe0p-21,
+    0x1.p-20,
+    0x1.p-20,
+    -0x1.p-20
+  },
+  { // Entry 674
+    0x1.000010p-20,
+    0x1.p-20,
+    0x1.p-20,
+    0x1.p-20
+  },
+  { // Entry 675
+    0x1.fffffffffffffffffffep-21,
+    -0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 676
+    0x1.00000000000000000001p-20,
+    -0x1.p-10,
+    -0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 677
+    -0x1.00000000000000000001p-20,
+    -0x1.p-10,
+    0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 678
+    -0x1.fffffffffffffffffffep-21,
+    -0x1.p-10,
+    0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 679
+    -0x1.00000000000000000001p-20,
+    0x1.p-10,
+    -0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 680
+    -0x1.fffffffffffffffffffep-21,
+    0x1.p-10,
+    -0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 681
+    0x1.fffffffffffffffffffep-21,
+    0x1.p-10,
+    0x1.p-10,
+    -0x1.p-100
+  },
+  { // Entry 682
+    0x1.00000000000000000001p-20,
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-100
+  },
+  { // Entry 683
+    0x1.f0p-11,
+    -0x1.p-5,
+    -0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 684
+    0x1.08p-10,
+    -0x1.p-5,
+    -0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 685
+    -0x1.08p-10,
+    -0x1.p-5,
+    0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 686
+    -0x1.f0p-11,
+    -0x1.p-5,
+    0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 687
+    -0x1.08p-10,
+    0x1.p-5,
+    -0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 688
+    -0x1.f0p-11,
+    0x1.p-5,
+    -0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 689
+    0x1.f0p-11,
+    0x1.p-5,
+    0x1.p-5,
+    -0x1.p-15
+  },
+  { // Entry 690
+    0x1.08p-10,
+    0x1.p-5,
+    0x1.p-5,
+    0x1.p-15
+  },
+  { // Entry 691
+    0x1.68p6,
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 692
+    0x1.b8p6,
+    -0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 693
+    -0x1.b8p6,
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 694
+    -0x1.68p6,
+    -0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 695
+    -0x1.b8p6,
+    0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 696
+    -0x1.68p6,
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 697
+    0x1.68p6,
+    0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 698
+    0x1.b8p6,
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 699
+    0.0,
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 700
+    0x1.p1,
+    -0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 701
+    -0x1.p1,
+    -0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 702
+    0.0,
+    -0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 703
+    -0x1.p1,
+    0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 704
+    0.0,
+    0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 705
+    0.0,
+    0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 706
+    0x1.p1,
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 707
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 708
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 709
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 710
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 711
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 712
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 713
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 714
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 715
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 716
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 717
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 718
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 719
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 720
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 721
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 722
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 723
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 724
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 725
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 726
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 727
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 728
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 729
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 730
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 731
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 732
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 733
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 734
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 735
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 736
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 737
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 738
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 739
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 740
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 741
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 742
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 743
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 744
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 745
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 746
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 747
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 748
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 749
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 750
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 751
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 752
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 753
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 754
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 755
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 756
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 757
+    0x1.fffffe00000000000000000000000002p1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 758
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 759
+    0x1.fffffe00000000000000000000000001p1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 760
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 761
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 762
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 763
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 764
+    0x1.fffffep1,
+    0x1.fffffep127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 765
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 766
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 767
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 768
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 769
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 770
+    -0x1.fffffe00000000000000000000000002p1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 771
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 772
+    -0x1.fffffe00000000000000000000000001p1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 773
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 774
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 775
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 776
+    -0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 777
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 778
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 779
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 780
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 781
+    0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 782
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 783
+    0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 784
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 785
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 786
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 787
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 788
+    0x1.fffffa000004p1,
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 789
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 790
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 791
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 792
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 793
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 794
+    -0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 795
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 796
+    -0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 797
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 798
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 799
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 800
+    -0x1.fffffa000004p1,
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 801
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 802
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 803
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 804
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 805
+    0x1.fffffe00000000000000000001p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 806
+    0x1.fffffdffffffffffffffffffffp-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 807
+    0x1.fffffe00000000000000000000fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 808
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 809
+    0x1.fffffe00000000000000000000000002p-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 810
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 811
+    0x1.fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 812
+    0x1.fffffep-22,
+    0x1.fffffep127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 813
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 814
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 815
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 816
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 817
+    -0x1.fffffdffffffffffffffffffffp-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 818
+    -0x1.fffffe00000000000000000001p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 819
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 820
+    -0x1.fffffe00000000000000000000fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 821
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 822
+    -0x1.fffffe00000000000000000000000002p-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 823
+    -0x1.fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 824
+    -0x1.fffffep-22,
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 825
+    HUGE_VALF,
+    0x1.fffffep127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 826
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 827
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 829
+    0x1.p-126,
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 830
+    -0x1.p-126,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 831
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 832
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 833
+    0x1.p-149,
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 834
+    -0x1.p-149,
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 835
+    0.0,
+    0x1.fffffep127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 836
+    0.0,
+    0x1.fffffep127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 837
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 838
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 839
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 840
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 841
+    0x1.p-126,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 842
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 843
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 844
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 845
+    0x1.p-149,
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 846
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 847
+    0.0,
+    0x1.fffffep127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 848
+    -0.0,
+    0x1.fffffep127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 849
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 850
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 851
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 852
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 853
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 854
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 855
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 856
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 857
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 858
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 859
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 860
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 861
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 862
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 863
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 864
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 865
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 866
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 867
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 868
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 869
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 870
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 871
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 872
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 873
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 874
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 875
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 876
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 877
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 878
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 879
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 880
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 881
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 882
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 883
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 884
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 885
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 886
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 887
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 888
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 889
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 890
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 891
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 892
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 893
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 894
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 895
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 896
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 897
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 898
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 899
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 900
+    -0x1.fffffe00000000000000000000000002p1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 901
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 902
+    -0x1.fffffe00000000000000000000000001p1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 903
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 904
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 905
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 906
+    -0x1.fffffep1,
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 907
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 908
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 909
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 910
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 911
+    0x1.fffffe00000000000000000000000002p1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 912
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 913
+    0x1.fffffe00000000000000000000000001p1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 914
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 915
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 916
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 917
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 918
+    0x1.fffffep1,
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 919
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 920
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 921
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 922
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 923
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 924
+    -0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 925
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 926
+    -0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 927
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 928
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 929
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 930
+    -0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 931
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 932
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 933
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 934
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 935
+    0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 936
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 937
+    0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 938
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 939
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 940
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 941
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 942
+    0x1.fffffa000004p1,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 943
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 944
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 945
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 946
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 947
+    -0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 948
+    -0x1.fffffe00000000000000000001p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 949
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 950
+    -0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 951
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 952
+    -0x1.fffffe00000000000000000000000002p-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 953
+    -0x1.fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 954
+    -0x1.fffffep-22,
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 955
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 956
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 957
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 958
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 959
+    0x1.fffffe00000000000000000001p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 960
+    0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 961
+    0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 962
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 963
+    0x1.fffffe00000000000000000000000002p-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 964
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 965
+    0x1.fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 966
+    0x1.fffffep-22,
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 967
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 968
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 969
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 970
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 971
+    0x1.p-126,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 972
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 973
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 974
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 975
+    0x1.p-149,
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 976
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 977
+    0.0,
+    -0x1.fffffep127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 978
+    -0.0,
+    -0x1.fffffep127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 979
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 980
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 981
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 982
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 983
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 984
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 985
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 986
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 987
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 988
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 989
+    0.0,
+    -0x1.fffffep127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 990
+    0.0,
+    -0x1.fffffep127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 991
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 992
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 993
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 994
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 995
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 996
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 997
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 998
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 999
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1000
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1001
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1002
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1003
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1004
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1005
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1006
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1007
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1008
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1009
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1010
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1011
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1012
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1013
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1014
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1015
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1016
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1017
+    0x1.fffffe00000000000000000000000002p1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1018
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1019
+    0x1.fffffe00000000000000000000000001p1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1020
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1021
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1022
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1023
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1024
+    0x1.fffffep1,
+    0x1.p-126,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1025
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1026
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1027
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1028
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1029
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1030
+    -0x1.fffffe00000000000000000000000002p1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1031
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1032
+    -0x1.fffffe00000000000000000000000001p1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1033
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1034
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1035
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1036
+    -0x1.fffffep1,
+    0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1037
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1038
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1039
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1040
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1041
+    0x1.00000000000000000000000000000004p-126,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1042
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1043
+    0x1.fffffc00000000000000000000000008p-127,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1044
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1045
+    0x1.00000000000000000000000002p-149,
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1046
+    -0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1047
+    0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1048
+    0.0f,
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1049
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1050
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1051
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1052
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1053
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1054
+    -0x1.00000000000000000000000000000004p-126,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1055
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1056
+    -0x1.fffffc00000000000000000000000008p-127,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1057
+    0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1058
+    -0x1.00000000000000000000000002p-149,
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1059
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1060
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1061
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1062
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1063
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1064
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1065
+    0x1.00000000000000000000000000000003p-126,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1066
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1067
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1068
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1069
+    0x1.00000000000000000000000001fffffcp-149,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1070
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1071
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1072
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1073
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1074
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1075
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1076
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1077
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1078
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1079
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1080
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1081
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1082
+    -0x1.00000000000000000000000001fffffcp-149,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1083
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1084
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1085
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1086
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1087
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1088
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1089
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1090
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1091
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1092
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1093
+    0x1.00000000000000000000000000000004p-149,
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1094
+    -0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1095
+    0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1096
+    0.0f,
+    0x1.p-126,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1097
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1098
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1099
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1100
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1101
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1102
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1103
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1104
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1105
+    0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1106
+    -0x1.00000000000000000000000000000004p-149,
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1107
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1108
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1109
+    HUGE_VALF,
+    0x1.p-126,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1110
+    -HUGE_VALF,
+    0x1.p-126,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1111
+    0x1.fffffep127,
+    0x1.p-126,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1112
+    -0x1.fffffep127,
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1113
+    0x1.p-126,
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1114
+    -0x1.p-126,
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1115
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1116
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1117
+    0x1.p-149,
+    0x1.p-126,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1118
+    -0x1.p-149,
+    0x1.p-126,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1119
+    0.0,
+    0x1.p-126,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1120
+    0.0,
+    0x1.p-126,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1121
+    HUGE_VALF,
+    0x1.p-126,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1122
+    -HUGE_VALF,
+    0x1.p-126,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1123
+    0x1.fffffep127,
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1124
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1125
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1126
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1127
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1128
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1129
+    0x1.p-149,
+    0x1.p-126,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1130
+    -0x1.p-149,
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1131
+    0.0,
+    0x1.p-126,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1132
+    -0.0,
+    0x1.p-126,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1133
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1134
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1135
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1136
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1137
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1138
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1139
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1140
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1141
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1142
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1143
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1144
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1145
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1146
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1147
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1148
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1149
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1150
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1151
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1152
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1153
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1154
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1155
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1156
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1157
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1158
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1159
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1160
+    -0x1.fffffe00000000000000000000000002p1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1161
+    -0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1162
+    -0x1.fffffe00000000000000000000000001p1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1163
+    -0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1164
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1165
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1166
+    -0x1.fffffep1,
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1167
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1168
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1169
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1170
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1171
+    0x1.fffffe00000000000000000000000002p1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1172
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1173
+    0x1.fffffe00000000000000000000000001p1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1174
+    0x1.fffffdfffffffffffffffffffffffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1175
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1176
+    0x1.fffffdffffffffffffffffffffffffffp1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1177
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1178
+    0x1.fffffep1,
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1179
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1180
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1181
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1182
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1183
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1184
+    -0x1.00000000000000000000000000000004p-126,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1185
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1186
+    -0x1.fffffc00000000000000000000000008p-127,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1187
+    0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1188
+    -0x1.00000000000000000000000002p-149,
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1189
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1190
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1191
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1192
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1193
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1194
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1195
+    0x1.00000000000000000000000000000004p-126,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1196
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1197
+    0x1.fffffc00000000000000000000000008p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1198
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1199
+    0x1.00000000000000000000000002p-149,
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1200
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1201
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1202
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1203
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1204
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1205
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1206
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1207
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1208
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1209
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1210
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1211
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1212
+    -0x1.00000000000000000000000001fffffcp-149,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1213
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1214
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1215
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1216
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1217
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1218
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1219
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1220
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1221
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1222
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1223
+    0x1.00000000000000000000000001fffffcp-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1224
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1225
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1226
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1227
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1228
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1229
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1230
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1231
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1232
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1233
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1234
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1235
+    0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1236
+    -0x1.00000000000000000000000000000004p-149,
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1237
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1238
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1239
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1240
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1241
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1242
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1243
+    0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1244
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1245
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1246
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1247
+    0x1.00000000000000000000000000000004p-149,
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1248
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1249
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1250
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1251
+    HUGE_VALF,
+    -0x1.p-126,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1252
+    -HUGE_VALF,
+    -0x1.p-126,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1253
+    0x1.fffffep127,
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1254
+    -0x1.fffffep127,
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1255
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1256
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1257
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1258
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1259
+    0x1.p-149,
+    -0x1.p-126,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1260
+    -0x1.p-149,
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1261
+    0.0,
+    -0x1.p-126,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1262
+    -0.0,
+    -0x1.p-126,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1263
+    HUGE_VALF,
+    -0x1.p-126,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1264
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1265
+    0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1266
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1267
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1268
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1269
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1270
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1271
+    0x1.p-149,
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1272
+    -0x1.p-149,
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1273
+    0.0,
+    -0x1.p-126,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1274
+    0.0,
+    -0x1.p-126,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1275
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1276
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1277
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1278
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1279
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1280
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1281
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1282
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1283
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1284
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1285
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1286
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1287
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1288
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1289
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1290
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1291
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1292
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1293
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1294
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1295
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1296
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1297
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1298
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1299
+    0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1300
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1301
+    0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1302
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1303
+    0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1304
+    0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1305
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1306
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1307
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1308
+    0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1309
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1310
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1311
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1312
+    -0x1.fffffe00000000000000000000000007p127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1313
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1314
+    -0x1.fffffa00000400000000000000000002p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1315
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1316
+    -0x1.fffffa00000400000000000000000001p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1317
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1318
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1319
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1320
+    -0x1.fffffa000004p1,
+    0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1321
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1322
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1323
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1324
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1325
+    0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1326
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1327
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1328
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1329
+    0x1.00000000000000000000000001fffffcp-149,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1330
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1331
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1332
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1333
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1334
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1335
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1336
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1337
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1338
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1339
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1340
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1341
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1342
+    -0x1.00000000000000000000000001fffffcp-149,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1343
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1344
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1345
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1346
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1347
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1348
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1349
+    0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1350
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1351
+    0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1352
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1353
+    0x1.00000000000000000000000001fffff8p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1354
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1355
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1356
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1357
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1358
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1359
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1360
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1361
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1362
+    -0x1.00000000000000000000000000000003p-126,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1363
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1364
+    -0x1.fffffc00000000000000000000000007p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1365
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1366
+    -0x1.00000000000000000000000001fffff8p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1367
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1368
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1369
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1370
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1371
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1372
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1373
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1374
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1375
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1376
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1377
+    0x1.00000000000000000000000000000003p-149,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1378
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1379
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1380
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1381
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1382
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1383
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1384
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1385
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1386
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1387
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1388
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1389
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1390
+    -0x1.00000000000000000000000000000003p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1391
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1392
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1393
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1394
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1395
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1396
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1397
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1398
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1399
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1400
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1401
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1402
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1403
+    0.0,
+    0x1.fffffcp-127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1404
+    0.0,
+    0x1.fffffcp-127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1405
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1406
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1407
+    0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1408
+    -0x1.fffffep127,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1409
+    0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1410
+    -0x1.p-126,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1411
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1412
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1413
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1414
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1415
+    0.0,
+    0x1.fffffcp-127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1416
+    -0.0,
+    0x1.fffffcp-127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1417
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1418
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1419
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1420
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1421
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1422
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1423
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1424
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1425
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1426
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1427
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1428
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1429
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1430
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1431
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1432
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1433
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1434
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1435
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1436
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1437
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1438
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1439
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1440
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1441
+    0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1442
+    -0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1443
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1444
+    -0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1445
+    -0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1446
+    -0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1447
+    -0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1448
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1449
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1450
+    -0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1451
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1452
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1453
+    0x1.fffffe00000000000000000000000007p127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1454
+    -0x1.fffffdfffffffffffffffffffffffff8p127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1455
+    0x1.fffffa00000400000000000000000002p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1456
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1457
+    0x1.fffffa00000400000000000000000001p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1458
+    0x1.fffffa000003fffffffffffffffffffep1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1459
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1460
+    0x1.fffffa000003ffffffffffffffffffffp1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1461
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1462
+    0x1.fffffa000004p1,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1463
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1464
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1465
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1466
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1467
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1468
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1469
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1470
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1471
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1472
+    -0x1.00000000000000000000000001fffffcp-149,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1473
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1474
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1475
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1476
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1477
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1478
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1479
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1480
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1481
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1482
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1483
+    0x1.00000000000000000000000001fffffcp-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1484
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1485
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1486
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1487
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1488
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1489
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1490
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1491
+    0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1492
+    -0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1493
+    0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1494
+    -0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1495
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1496
+    -0x1.00000000000000000000000001fffff8p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1497
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1498
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1499
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1500
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1501
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1502
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1503
+    0x1.00000000000000000000000000000003p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1504
+    -0x1.fffffffffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1505
+    0x1.fffffc00000000000000000000000007p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1506
+    -0x1.fffffbfffffffffffffffffffffffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1507
+    0x1.00000000000000000000000001fffff8p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1508
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1509
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1510
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1511
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1512
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1513
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1514
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1515
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1516
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1517
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1518
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1519
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1520
+    -0x1.00000000000000000000000000000003p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1521
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1522
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1523
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1524
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1525
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1526
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1527
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1528
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1529
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1530
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1531
+    0x1.00000000000000000000000000000003p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1532
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1533
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1534
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1535
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1536
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1537
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1538
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1539
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1540
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1541
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1542
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1543
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1544
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1545
+    0.0,
+    -0x1.fffffcp-127,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1546
+    -0.0,
+    -0x1.fffffcp-127,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1547
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1548
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1549
+    0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1550
+    -0x1.fffffep127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1551
+    0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1552
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1553
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1554
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1555
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1556
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1557
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1558
+    0.0,
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1559
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1560
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1561
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1562
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1563
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1564
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1565
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1566
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1567
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1568
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1569
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1570
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1571
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1572
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1573
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1574
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1575
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1576
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1577
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1578
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1579
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1580
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1581
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1582
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1583
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1584
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1585
+    0x1.fffffe00000000000000000001p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1586
+    0x1.fffffdffffffffffffffffffffp-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1587
+    0x1.fffffe00000000000000000000fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1588
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1589
+    0x1.fffffe00000000000000000000000002p-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1590
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1591
+    0x1.fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1592
+    0x1.fffffep-22,
+    0x1.p-149,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1593
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1594
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1595
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1596
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1597
+    -0x1.fffffdffffffffffffffffffffp-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1598
+    -0x1.fffffe00000000000000000001p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1599
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1600
+    -0x1.fffffe00000000000000000000fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1601
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1602
+    -0x1.fffffe00000000000000000000000002p-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1603
+    -0x1.fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1604
+    -0x1.fffffep-22,
+    0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1605
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1606
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1607
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1608
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1609
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1610
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1611
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1612
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1613
+    0x1.00000000000000000000000000000004p-149,
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1614
+    -0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1615
+    0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1616
+    0.0f,
+    0x1.p-149,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1617
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1618
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1619
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1620
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1621
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1622
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1623
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1624
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1625
+    0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1626
+    -0x1.00000000000000000000000000000004p-149,
+    0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1627
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1628
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1629
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1630
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1631
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1632
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1633
+    0x1.p-126,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1634
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1635
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1636
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1637
+    0x1.00000000000000000000000000000003p-149,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1638
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1639
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1640
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1641
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1642
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1643
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1644
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1645
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1646
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1647
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1648
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1649
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1650
+    -0x1.00000000000000000000000000000003p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1651
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1652
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1653
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1654
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1655
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1656
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1657
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1658
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1659
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1660
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1661
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1662
+    -0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1663
+    0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1664
+    0.0f,
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1665
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1666
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1667
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1668
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1669
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1670
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1671
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1672
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1673
+    0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1674
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1675
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1676
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1677
+    HUGE_VALF,
+    0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1678
+    -HUGE_VALF,
+    0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1679
+    0x1.fffffep127,
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1680
+    -0x1.fffffep127,
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1681
+    0x1.p-126,
+    0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1682
+    -0x1.p-126,
+    0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1683
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1684
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1685
+    0x1.p-149,
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1686
+    -0x1.p-149,
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1687
+    0.0,
+    0x1.p-149,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1688
+    0.0,
+    0x1.p-149,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1689
+    HUGE_VALF,
+    0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1690
+    -HUGE_VALF,
+    0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1691
+    0x1.fffffep127,
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1692
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1693
+    0x1.p-126,
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1694
+    -0x1.p-126,
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1695
+    0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1696
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1697
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1698
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1699
+    0.0,
+    0x1.p-149,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1700
+    -0.0,
+    0x1.p-149,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1701
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 1702
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1703
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1704
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1705
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1706
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1707
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1708
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1709
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1710
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1711
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1712
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 1713
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 1714
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 1715
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 1716
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 1717
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 1718
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1719
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 1720
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 1721
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 1722
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 1723
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1724
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1725
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1726
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1727
+    -0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1728
+    -0x1.fffffe00000000000000000001p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1729
+    -0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1730
+    -0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1731
+    -0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1732
+    -0x1.fffffe00000000000000000000000002p-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1733
+    -0x1.fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1734
+    -0x1.fffffep-22,
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1735
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1736
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1737
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1738
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1739
+    0x1.fffffe00000000000000000001p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1740
+    0x1.fffffdffffffffffffffffffffp-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1741
+    0x1.fffffe00000000000000000000fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1742
+    0x1.fffffdffffffffffffffffffff000002p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1743
+    0x1.fffffe00000000000000000000000002p-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1744
+    0x1.fffffdfffffffffffffffffffffffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1745
+    0x1.fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1746
+    0x1.fffffep-22,
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1747
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1748
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1749
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1750
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1751
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1752
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1753
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1754
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1755
+    0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1756
+    -0x1.00000000000000000000000000000004p-149,
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1757
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1758
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1759
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1760
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1761
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1762
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1763
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1764
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1765
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1766
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1767
+    0x1.00000000000000000000000000000004p-149,
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1768
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1769
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1770
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1771
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1772
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1773
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1774
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1775
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1776
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1777
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1778
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1779
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1780
+    -0x1.00000000000000000000000000000003p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1781
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1782
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1783
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1784
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1785
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1786
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1787
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1788
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1789
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1790
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1791
+    0x1.00000000000000000000000000000003p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1792
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1793
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1794
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1795
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1796
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1797
+    0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1798
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1799
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1800
+    -0x1.p-126,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1801
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1802
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1803
+    0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1804
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1805
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1806
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1807
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1808
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1809
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1810
+    -0x1.fffffdffffffffffffffffffffffffffp127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1811
+    0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1812
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1813
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1814
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1815
+    0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1816
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1817
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1818
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1819
+    HUGE_VALF,
+    -0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1820
+    -HUGE_VALF,
+    -0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1821
+    0x1.fffffep127,
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1822
+    -0x1.fffffep127,
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1823
+    0x1.p-126,
+    -0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1824
+    -0x1.p-126,
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1825
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1826
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1827
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1828
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1829
+    0.0,
+    -0x1.p-149,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1830
+    -0.0,
+    -0x1.p-149,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1831
+    HUGE_VALF,
+    -0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1832
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1833
+    0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1834
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1835
+    0x1.p-126,
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1836
+    -0x1.p-126,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1837
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1838
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1839
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1840
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1841
+    0.0,
+    -0x1.p-149,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1842
+    0.0,
+    -0x1.p-149,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1843
+    HUGE_VALF,
+    0.0f,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1844
+    -HUGE_VALF,
+    0.0f,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1845
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1846
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1847
+    0x1.p-126,
+    0.0f,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1848
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1849
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1850
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1851
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1852
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1853
+    0.0,
+    0.0f,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1854
+    0.0,
+    0.0f,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1855
+    HUGE_VALF,
+    0.0f,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1856
+    -HUGE_VALF,
+    0.0f,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1857
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1858
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1859
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1860
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1861
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1862
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1863
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1864
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1865
+    0.0,
+    0.0f,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1866
+    -0.0,
+    0.0f,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1867
+    HUGE_VALF,
+    0.0f,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1868
+    -HUGE_VALF,
+    0.0f,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1869
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1870
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1871
+    0x1.p-126,
+    0.0f,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1872
+    -0x1.p-126,
+    0.0f,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1873
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1874
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1875
+    0x1.p-149,
+    0.0f,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1876
+    -0x1.p-149,
+    0.0f,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1877
+    0.0,
+    0.0f,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1878
+    0.0,
+    0.0f,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1879
+    HUGE_VALF,
+    0.0f,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1880
+    -HUGE_VALF,
+    0.0f,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1881
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1882
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1883
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1884
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1885
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1886
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1887
+    0x1.p-149,
+    0.0f,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1888
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1889
+    0.0,
+    0.0f,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 1890
+    -0.0,
+    0.0f,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1891
+    HUGE_VALF,
+    0.0f,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1892
+    -HUGE_VALF,
+    0.0f,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1893
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1894
+    -0x1.fffffep127,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1895
+    0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1896
+    -0x1.p-126,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1897
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1898
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1899
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1900
+    -0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1901
+    0.0,
+    0.0f,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1902
+    0.0,
+    0.0f,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1903
+    HUGE_VALF,
+    0.0f,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 1904
+    -HUGE_VALF,
+    0.0f,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 1905
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 1906
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 1907
+    0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 1908
+    -0x1.p-126,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 1909
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1910
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1911
+    0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 1912
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 1913
+    0.0,
+    0.0f,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 1914
+    -0.0,
+    0.0f,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 1915
+    HUGE_VALF,
+    0.0f,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1916
+    -HUGE_VALF,
+    0.0f,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1917
+    0x1.fffffep127,
+    0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1918
+    -0x1.fffffep127,
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1919
+    0x1.p-126,
+    0.0f,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1920
+    -0x1.p-126,
+    0.0f,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1921
+    0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1922
+    -0x1.fffffcp-127,
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1923
+    0x1.p-149,
+    0.0f,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1924
+    -0x1.p-149,
+    0.0f,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1925
+    0.0,
+    0.0f,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 1926
+    0.0,
+    0.0f,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1927
+    HUGE_VALF,
+    0.0f,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 1928
+    -HUGE_VALF,
+    0.0f,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 1929
+    0x1.fffffep127,
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 1930
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 1931
+    0x1.p-126,
+    0.0f,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 1932
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 1933
+    0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 1934
+    -0x1.fffffcp-127,
+    0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1935
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 1936
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1937
+    0.0,
+    0.0f,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 1938
+    -0.0,
+    0.0f,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 1939
+    HUGE_VALF,
+    0.0f,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1940
+    -HUGE_VALF,
+    0.0f,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1941
+    0x1.fffffep127,
+    0.0f,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1942
+    -0x1.fffffep127,
+    0.0f,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1943
+    0x1.p-126,
+    0.0f,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 1944
+    -0x1.p-126,
+    0.0f,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1945
+    0x1.fffffcp-127,
+    0.0f,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1946
+    -0x1.fffffcp-127,
+    0.0f,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1947
+    0x1.p-149,
+    0.0f,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 1948
+    -0x1.p-149,
+    0.0f,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1949
+    0.0,
+    0.0f,
+    0.0f,
+    0.0f
+  },
+  { // Entry 1950
+    0.0,
+    0.0f,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 1951
+    HUGE_VALF,
+    0.0f,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 1952
+    -HUGE_VALF,
+    0.0f,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 1953
+    0x1.fffffep127,
+    0.0f,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 1954
+    -0x1.fffffep127,
+    0.0f,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 1955
+    0x1.p-126,
+    0.0f,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 1956
+    -0x1.p-126,
+    0.0f,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 1957
+    0x1.fffffcp-127,
+    0.0f,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 1958
+    -0x1.fffffcp-127,
+    0.0f,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1959
+    0x1.p-149,
+    0.0f,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 1960
+    -0x1.p-149,
+    0.0f,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 1961
+    0.0,
+    0.0f,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 1962
+    -0.0,
+    0.0f,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 1963
+    HUGE_VALF,
+    -0.0f,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1964
+    -HUGE_VALF,
+    -0.0f,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1965
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1966
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1967
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1968
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1969
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1970
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1971
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1972
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1973
+    0.0,
+    -0.0f,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1974
+    -0.0,
+    -0.0f,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1975
+    HUGE_VALF,
+    -0.0f,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 1976
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 1977
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 1978
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 1979
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 1980
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 1981
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 1982
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1983
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 1984
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 1985
+    0.0,
+    -0.0f,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 1986
+    0.0,
+    -0.0f,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 1987
+    HUGE_VALF,
+    -0.0f,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 1988
+    -HUGE_VALF,
+    -0.0f,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 1989
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 1990
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 1991
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 1992
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 1993
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 1994
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 1995
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 1996
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 1997
+    0.0,
+    -0.0f,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 1998
+    -0.0,
+    -0.0f,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 1999
+    HUGE_VALF,
+    -0.0f,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2000
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2001
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2002
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2003
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2004
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2005
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2006
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2007
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2008
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2009
+    0.0,
+    -0.0f,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2010
+    0.0,
+    -0.0f,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2011
+    HUGE_VALF,
+    -0.0f,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2012
+    -HUGE_VALF,
+    -0.0f,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2013
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2014
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2015
+    0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2016
+    -0x1.p-126,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2017
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2018
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2019
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2020
+    -0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2021
+    0.0,
+    -0.0f,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2022
+    -0.0,
+    -0.0f,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2023
+    HUGE_VALF,
+    -0.0f,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2024
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2025
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2026
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2027
+    0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2028
+    -0x1.p-126,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2029
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2030
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2031
+    0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2032
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2033
+    0.0,
+    -0.0f,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2034
+    0.0,
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2035
+    HUGE_VALF,
+    -0.0f,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2036
+    -HUGE_VALF,
+    -0.0f,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2037
+    0x1.fffffep127,
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2038
+    -0x1.fffffep127,
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2039
+    0x1.p-126,
+    -0.0f,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2040
+    -0x1.p-126,
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2041
+    0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2042
+    -0x1.fffffcp-127,
+    -0.0f,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2043
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2044
+    -0x1.p-149,
+    -0.0f,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2045
+    0.0,
+    -0.0f,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2046
+    -0.0,
+    -0.0f,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2047
+    HUGE_VALF,
+    -0.0f,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2048
+    -HUGE_VALF,
+    -0.0f,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2049
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2050
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2051
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2052
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2053
+    0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2054
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2055
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2056
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2057
+    0.0,
+    -0.0f,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2058
+    0.0,
+    -0.0f,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2059
+    HUGE_VALF,
+    -0.0f,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 2060
+    -HUGE_VALF,
+    -0.0f,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 2061
+    0x1.fffffep127,
+    -0.0f,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 2062
+    -0x1.fffffep127,
+    -0.0f,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 2063
+    0x1.p-126,
+    -0.0f,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 2064
+    -0x1.p-126,
+    -0.0f,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 2065
+    0x1.fffffcp-127,
+    -0.0f,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 2066
+    -0x1.fffffcp-127,
+    -0.0f,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2067
+    0x1.p-149,
+    -0.0f,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 2068
+    -0x1.p-149,
+    -0.0f,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 2069
+    0.0,
+    -0.0f,
+    0.0f,
+    0.0f
+  },
+  { // Entry 2070
+    -0.0,
+    -0.0f,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 2071
+    HUGE_VALF,
+    -0.0f,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 2072
+    -HUGE_VALF,
+    -0.0f,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 2073
+    0x1.fffffep127,
+    -0.0f,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 2074
+    -0x1.fffffep127,
+    -0.0f,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 2075
+    0x1.p-126,
+    -0.0f,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 2076
+    -0x1.p-126,
+    -0.0f,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 2077
+    0x1.fffffcp-127,
+    -0.0f,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 2078
+    -0x1.fffffcp-127,
+    -0.0f,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2079
+    0x1.p-149,
+    -0.0f,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 2080
+    -0x1.p-149,
+    -0.0f,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 2081
+    0.0,
+    -0.0f,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 2082
+    0.0,
+    -0.0f,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 2083
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 2084
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2085
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2086
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2087
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2088
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2089
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2090
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2091
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2092
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2093
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2094
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 2095
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2096
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2097
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2098
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2099
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2100
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2101
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2102
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2103
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2104
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2105
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 2106
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2107
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2108
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2109
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2110
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2111
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2112
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2113
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2114
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2115
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2116
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 2117
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2118
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2119
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2120
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2121
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2122
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2123
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2124
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2125
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2126
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2127
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2128
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2129
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2130
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2131
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2132
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2133
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2134
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2135
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2136
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 2137
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2138
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2139
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2140
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2141
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2142
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2143
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2144
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2145
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2146
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2147
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2148
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2149
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2150
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2151
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2152
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2153
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2154
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2155
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2156
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2157
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2158
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2159
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2160
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2161
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2162
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2163
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2164
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2165
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2166
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2167
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2168
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2169
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2170
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2171
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2172
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2173
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2174
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2175
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2176
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2177
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2178
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2179
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2180
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2181
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2182
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2183
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2184
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2185
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2186
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2187
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2188
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2189
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2190
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2191
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2192
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2193
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 2194
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2195
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2196
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2197
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2198
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2199
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2200
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2201
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2202
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2203
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2204
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 2205
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 2206
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 2207
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 2208
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 2209
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 2210
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2211
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 2212
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 2213
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 2214
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 2215
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 2216
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2217
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2218
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2219
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2220
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2221
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2222
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2223
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2224
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2225
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2226
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 2227
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 2228
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 2229
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 2230
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 2231
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2232
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2233
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 2234
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 2235
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 2236
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 2237
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 2238
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2239
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2240
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2241
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2242
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2243
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2244
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2245
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2246
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 2247
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2248
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 2249
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 2250
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 2251
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 2252
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 2253
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 2254
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2255
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 2256
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 2257
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 2258
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 2259
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 2260
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2261
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2262
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2263
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2264
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2265
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2266
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2267
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2268
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2269
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2270
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 2271
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 2272
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 2273
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 2274
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 2275
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 2276
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2277
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 2278
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 2279
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 2280
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 2281
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 2282
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2283
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2284
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2285
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2286
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2287
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2288
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2289
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2290
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 2291
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 2292
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 2293
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 2294
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 2295
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 2296
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 2297
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 2298
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 2299
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 2300
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 2301
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 2302
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/fmax_intel_data.h b/tests/math_data/fmax_intel_data.h
new file mode 100644
index 0000000..14bd38b
--- /dev/null
+++ b/tests/math_data/fmax_intel_data.h
@@ -0,0 +1,1093 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmax_intel_data[] = {
+  { // Entry 0
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 1
+    0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 2
+    0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 4
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 5
+    -0x1.p-1074,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    -0.0,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 7
+    0x1.p-1074,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 8
+    0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 9
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 10
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 11
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 12
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 13
+    0x1.p-1073,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 14
+    -0.0,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 15
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 16
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 17
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 18
+    0x1.p-1073,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 19
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 20
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 24
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 25
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 26
+    0x1.p-1073,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 27
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 28
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 29
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 34
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 35
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 36
+    0x1.p-1023,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 37
+    0x1.00000000000020p-1023,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 38
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 39
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 40
+    0x1.00000000000020p-1023,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 41
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 42
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 43
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 44
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 45
+    0x1.p-50,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 46
+    0x1.00000000000010p-50,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 47
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 48
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 49
+    0x1.00000000000010p-50,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 50
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 51
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 52
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 53
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 54
+    0x1.p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 55
+    0x1.00000000000010p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 56
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 57
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 58
+    0x1.00000000000010p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 59
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 60
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 61
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 62
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 63
+    0x1.p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 64
+    0x1.00000000000010p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 65
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 66
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 67
+    0x1.00000000000010p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 68
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 69
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 70
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 71
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 72
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 73
+    0x1.00000000000010p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 76
+    0x1.00000000000010p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 77
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 79
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 81
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 82
+    0x1.00000000000010p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 84
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 85
+    0x1.00000000000010p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 86
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 87
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 88
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 90
+    0x1.p50,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 91
+    0x1.00000000000010p50,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 92
+    0x1.p50,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 93
+    0x1.p50,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 94
+    0x1.00000000000010p50,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 95
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 96
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 97
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 98
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 99
+    0x1.p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 100
+    0x1.00000000000010p1023,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 101
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 102
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 103
+    0x1.00000000000010p1023,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 104
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 105
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 106
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 107
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 108
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 109
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 110
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 112
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 113
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 115
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 117
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 118
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 119
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 120
+    HUGE_VAL,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 121
+    HUGE_VAL,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 122
+    HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 123
+    HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 124
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 125
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 126
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 128
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 129
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 130
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 131
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 132
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 133
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 135
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 136
+    0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 137
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 138
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 139
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 145
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 146
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 147
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 148
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 149
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 150
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 151
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 152
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 153
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 154
+    0x1.p-1022,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 155
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 156
+    0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 157
+    0x1.p-1022,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 158
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 159
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 160
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 161
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 163
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 164
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 165
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 167
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 168
+    0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 169
+    0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 170
+    0x1.p-1074,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 171
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 172
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 173
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 174
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 175
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 176
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 178
+    0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 179
+    0.0,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 180
+    0.0,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 181
+    0.0,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 183
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 184
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 185
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 190
+    -0.0,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 193
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 196
+    -0x1.p-1074,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 197
+    -0x1.p-1074,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 198
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 199
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0x1.p-1022,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 202
+    -0x1.p-1022,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 207
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 208
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 209
+    0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 210
+    0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 213
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    -0x1.p-1074,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/fmaxf_intel_data.h b/tests/math_data/fmaxf_intel_data.h
new file mode 100644
index 0000000..10f8319
--- /dev/null
+++ b/tests/math_data/fmaxf_intel_data.h
@@ -0,0 +1,1103 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_fmaxf_intel_data[] = {
+  { // Entry 0
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 1
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.00068ep0
+  },
+  { // Entry 2
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 4
+    0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 7
+    -0x1.p-149,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 8
+    0.0,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 9
+    0x1.p-149,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 10
+    0x1.p-148,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 11
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 12
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 13
+    0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 14
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 15
+    0x1.p-148,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 16
+    0.0,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 17
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 19
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 20
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 21
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 22
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 23
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 24
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 25
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 26
+    0x1.p-148,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 27
+    0x1.p-148,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 28
+    0x1.p-148,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 29
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 30
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 31
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 34
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 35
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 36
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 38
+    0x1.p-127,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 39
+    0x1.000004p-127,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 40
+    0x1.p-127,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 41
+    0x1.p-127,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 42
+    0x1.000004p-127,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 43
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 44
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 45
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 46
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 47
+    0x1.p-50,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 48
+    0x1.000002p-50,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 49
+    0x1.p-50,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 50
+    0x1.p-50,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 51
+    0x1.000002p-50,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 52
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 53
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 54
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 55
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 56
+    0x1.p-10,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 57
+    0x1.000002p-10,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 58
+    0x1.p-10,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 59
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 60
+    0x1.000002p-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 61
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 65
+    0x1.p-1,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 66
+    0x1.000002p-1,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 67
+    0x1.p-1,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 68
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 69
+    0x1.000002p-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 70
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 71
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 72
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 73
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.000002p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 76
+    0x1.p1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 77
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 78
+    0x1.000002p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 79
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 80
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 81
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 82
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 84
+    0x1.000002p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 86
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 87
+    0x1.000002p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 88
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 89
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 90
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 92
+    0x1.p50,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 93
+    0x1.000002p50,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 94
+    0x1.p50,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 95
+    0x1.p50,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 96
+    0x1.000002p50,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 97
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 98
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 99
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 100
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 101
+    0x1.p127,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 102
+    0x1.000002p127,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 103
+    0x1.p127,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 104
+    0x1.p127,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 105
+    0x1.000002p127,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 106
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 107
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 108
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 109
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 110
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 111
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 112
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 113
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 114
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 115
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 116
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 117
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 120
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 121
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 122
+    HUGE_VALF,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 123
+    HUGE_VALF,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 124
+    HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 125
+    HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 126
+    HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 127
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 128
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 130
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 131
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 132
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 133
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 134
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 135
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 136
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 137
+    0x1.fffffep127,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 138
+    0x1.fffffep127,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 139
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 140
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 141
+    0x1.fffffep127,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 142
+    0x1.fffffep127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 144
+    0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 146
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 147
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 148
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 149
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 150
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 151
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 152
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 153
+    0x1.p-126,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 154
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 155
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 156
+    0x1.p-126,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 157
+    0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 158
+    0x1.p-126,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 159
+    0x1.p-126,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 161
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 162
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 163
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 164
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 165
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 167
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 168
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 169
+    0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 170
+    0x1.p-149,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 171
+    0x1.p-149,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 172
+    0x1.p-149,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 173
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 174
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 175
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 176
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 177
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 180
+    0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 181
+    0.0,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 182
+    0.0,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 183
+    0.0,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 184
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 185
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 186
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 187
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 188
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 192
+    -0.0,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 198
+    -0x1.p-149,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -0x1.p-149,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 200
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 201
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0x1.p-126,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 204
+    -0x1.p-126,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 207
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 209
+    0x1.fffffcp-127,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 210
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 211
+    0x1.fffffcp-127,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 212
+    0x1.p-149,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 213
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 214
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 215
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 216
+    -0x1.p-149,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/fmin_intel_data.h b/tests/math_data/fmin_intel_data.h
new file mode 100644
index 0000000..a2538f5
--- /dev/null
+++ b/tests/math_data/fmin_intel_data.h
@@ -0,0 +1,1093 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmin_intel_data[] = {
+  { // Entry 0
+    -0x1.40p3,
+    -0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 1
+    -0x1.40p3,
+    -0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 2
+    -0x1.40p3,
+    0x1.4p3,
+    -0x1.4p3
+  },
+  { // Entry 3
+    0x1.40p3,
+    0x1.4p3,
+    0x1.4p3
+  },
+  { // Entry 4
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 5
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 6
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 7
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 8
+    -0x1.p-1073,
+    -0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 9
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 10
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 11
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 12
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 13
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 14
+    -0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 15
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 16
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 17
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 18
+    -0.0,
+    -0.0,
+    0x1.0p-1073
+  },
+  { // Entry 19
+    -0x1.p-1073,
+    0x1.0p-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 20
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 21
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 22
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 23
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1073
+  },
+  { // Entry 24
+    -0x1.p-1073,
+    0x1.0p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 25
+    -0x1.p-1074,
+    0x1.0p-1073,
+    -0x1.0p-1074
+  },
+  { // Entry 26
+    -0.0,
+    0x1.0p-1073,
+    -0.0
+  },
+  { // Entry 27
+    0x1.p-1074,
+    0x1.0p-1073,
+    0x1.0p-1074
+  },
+  { // Entry 28
+    0x1.p-1073,
+    0x1.0p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 29
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 30
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 31
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 32
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 34
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 35
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 36
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.0p-1023
+  },
+  { // Entry 37
+    0x1.ffffffffffffc0p-1024,
+    0x1.ffffffffffffcp-1024,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 38
+    0x1.ffffffffffffc0p-1024,
+    0x1.0p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 39
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 40
+    0x1.p-1023,
+    0x1.0p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 41
+    0x1.ffffffffffffc0p-1024,
+    0x1.0000000000002p-1023,
+    0x1.ffffffffffffcp-1024
+  },
+  { // Entry 42
+    0x1.p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0p-1023
+  },
+  { // Entry 43
+    0x1.00000000000020p-1023,
+    0x1.0000000000002p-1023,
+    0x1.0000000000002p-1023
+  },
+  { // Entry 44
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.0p-50
+  },
+  { // Entry 46
+    0x1.fffffffffffff0p-51,
+    0x1.fffffffffffffp-51,
+    0x1.0000000000001p-50
+  },
+  { // Entry 47
+    0x1.fffffffffffff0p-51,
+    0x1.0p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 48
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0p-50
+  },
+  { // Entry 49
+    0x1.p-50,
+    0x1.0p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 50
+    0x1.fffffffffffff0p-51,
+    0x1.0000000000001p-50,
+    0x1.fffffffffffffp-51
+  },
+  { // Entry 51
+    0x1.p-50,
+    0x1.0000000000001p-50,
+    0x1.0p-50
+  },
+  { // Entry 52
+    0x1.00000000000010p-50,
+    0x1.0000000000001p-50,
+    0x1.0000000000001p-50
+  },
+  { // Entry 53
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 54
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 55
+    0x1.fffffffffffff0p-11,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 56
+    0x1.fffffffffffff0p-11,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 57
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 58
+    0x1.p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 59
+    0x1.fffffffffffff0p-11,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 60
+    0x1.p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 61
+    0x1.00000000000010p-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 62
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 63
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p-2,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 65
+    0x1.fffffffffffff0p-2,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 66
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 67
+    0x1.p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 68
+    0x1.fffffffffffff0p-2,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 69
+    0x1.p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 70
+    0x1.00000000000010p-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 71
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 72
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 73
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 74
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 76
+    0x1.p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 77
+    0x1.fffffffffffff0p0,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 79
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 80
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 82
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 83
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 84
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 86
+    0x1.fffffffffffff0p9,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 88
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 89
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.0p50
+  },
+  { // Entry 91
+    0x1.fffffffffffff0p49,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p50
+  },
+  { // Entry 92
+    0x1.fffffffffffff0p49,
+    0x1.0p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 93
+    0x1.p50,
+    0x1.0p50,
+    0x1.0p50
+  },
+  { // Entry 94
+    0x1.p50,
+    0x1.0p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 95
+    0x1.fffffffffffff0p49,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 96
+    0x1.p50,
+    0x1.0000000000001p50,
+    0x1.0p50
+  },
+  { // Entry 97
+    0x1.00000000000010p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 98
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 99
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0p1023
+  },
+  { // Entry 100
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p1023
+  },
+  { // Entry 101
+    0x1.fffffffffffff0p1022,
+    0x1.0p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 102
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p1023
+  },
+  { // Entry 103
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 104
+    0x1.fffffffffffff0p1022,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp1022
+  },
+  { // Entry 105
+    0x1.p1023,
+    0x1.0000000000001p1023,
+    0x1.0p1023
+  },
+  { // Entry 106
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p1023
+  },
+  { // Entry 107
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 109
+    0x1.p-1022,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 110
+    0x1.p-1074,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    0.0,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 112
+    -0.0,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 113
+    -0x1.p-1074,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.p-1022,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 115
+    -0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    -HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 118
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 120
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 121
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 122
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 123
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 124
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 125
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 126
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 128
+    0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 130
+    -0.0,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 131
+    -0x1.p-1074,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 132
+    -0x1.p-1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 133
+    -0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 135
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 136
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 137
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 138
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 139
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 146
+    -0.0,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 147
+    -0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 148
+    -0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 149
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 150
+    -HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 151
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 152
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 153
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 154
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 155
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 156
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 157
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 158
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 159
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 160
+    -0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 161
+    -0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    -0x1.p-1022,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 163
+    -0x1.fffffffffffff0p1023,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 164
+    -HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 165
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 167
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 168
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 169
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 170
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 171
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 172
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 173
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 174
+    -0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 175
+    -0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 176
+    -HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 177
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 178
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 179
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 180
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 181
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 182
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 183
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 184
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 185
+    -0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 186
+    -HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 187
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 188
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 189
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 190
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 191
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 192
+    -0x1.p-1022,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 196
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 197
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 198
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 199
+    -0x1.fffffffffffff0p1023,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 200
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 202
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 207
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 208
+    0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 209
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 210
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    -0x1.ffffffffffffe0p-1023,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    -0x1.p-1074,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 213
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 214
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/fminf_intel_data.h b/tests/math_data/fminf_intel_data.h
new file mode 100644
index 0000000..051ae9b
--- /dev/null
+++ b/tests/math_data/fminf_intel_data.h
@@ -0,0 +1,1103 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_fminf_intel_data[] = {
+  { // Entry 0
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 1
+    0x1.fff2e2p-1,
+    0x1.fffffep-1,
+    0x1.fff2e2p-1
+  },
+  { // Entry 2
+    -0x1.40p3,
+    -0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 3
+    -0x1.40p3,
+    -0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 4
+    -0x1.40p3,
+    0x1.40p3,
+    -0x1.40p3
+  },
+  { // Entry 5
+    0x1.40p3,
+    0x1.40p3,
+    0x1.40p3
+  },
+  { // Entry 6
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 7
+    -0x1.p-148,
+    -0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 8
+    -0x1.p-148,
+    -0x1.p-148,
+    0.0
+  },
+  { // Entry 9
+    -0x1.p-148,
+    -0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 10
+    -0x1.p-148,
+    -0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 11
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 12
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 13
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 14
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 15
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 16
+    -0x1.p-148,
+    0.0,
+    -0x1.p-148
+  },
+  { // Entry 17
+    -0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 18
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 19
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 20
+    0.0,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 21
+    -0x1.p-148,
+    0x1.p-149,
+    -0x1.p-148
+  },
+  { // Entry 22
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 23
+    0.0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 24
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 25
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-148
+  },
+  { // Entry 26
+    -0x1.p-148,
+    0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 27
+    -0x1.p-149,
+    0x1.p-148,
+    -0x1.p-149
+  },
+  { // Entry 28
+    0.0,
+    0x1.p-148,
+    0.0
+  },
+  { // Entry 29
+    0x1.p-149,
+    0x1.p-148,
+    0x1.p-149
+  },
+  { // Entry 30
+    0x1.p-148,
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 31
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 32
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 33
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 34
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 35
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 36
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 37
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.fffff8p-128
+  },
+  { // Entry 38
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.p-127
+  },
+  { // Entry 39
+    0x1.fffff8p-128,
+    0x1.fffff8p-128,
+    0x1.000004p-127
+  },
+  { // Entry 40
+    0x1.fffff8p-128,
+    0x1.p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 41
+    0x1.p-127,
+    0x1.p-127,
+    0x1.p-127
+  },
+  { // Entry 42
+    0x1.p-127,
+    0x1.p-127,
+    0x1.000004p-127
+  },
+  { // Entry 43
+    0x1.fffff8p-128,
+    0x1.000004p-127,
+    0x1.fffff8p-128
+  },
+  { // Entry 44
+    0x1.p-127,
+    0x1.000004p-127,
+    0x1.p-127
+  },
+  { // Entry 45
+    0x1.000004p-127,
+    0x1.000004p-127,
+    0x1.000004p-127
+  },
+  { // Entry 46
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.fffffep-51
+  },
+  { // Entry 47
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.p-50
+  },
+  { // Entry 48
+    0x1.fffffep-51,
+    0x1.fffffep-51,
+    0x1.000002p-50
+  },
+  { // Entry 49
+    0x1.fffffep-51,
+    0x1.p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 50
+    0x1.p-50,
+    0x1.p-50,
+    0x1.p-50
+  },
+  { // Entry 51
+    0x1.p-50,
+    0x1.p-50,
+    0x1.000002p-50
+  },
+  { // Entry 52
+    0x1.fffffep-51,
+    0x1.000002p-50,
+    0x1.fffffep-51
+  },
+  { // Entry 53
+    0x1.p-50,
+    0x1.000002p-50,
+    0x1.p-50
+  },
+  { // Entry 54
+    0x1.000002p-50,
+    0x1.000002p-50,
+    0x1.000002p-50
+  },
+  { // Entry 55
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 56
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 57
+    0x1.fffffep-11,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 58
+    0x1.fffffep-11,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 59
+    0x1.p-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 60
+    0x1.p-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 61
+    0x1.fffffep-11,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 62
+    0x1.p-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 63
+    0x1.000002p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 64
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 65
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 66
+    0x1.fffffep-2,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 67
+    0x1.fffffep-2,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 68
+    0x1.p-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 69
+    0x1.p-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 70
+    0x1.fffffep-2,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 71
+    0x1.p-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 72
+    0x1.000002p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 73
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 74
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 76
+    0x1.fffffep0,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 77
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 78
+    0x1.p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 79
+    0x1.fffffep0,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 80
+    0x1.p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 81
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 82
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 83
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 84
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 85
+    0x1.fffffep9,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 86
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 88
+    0x1.fffffep9,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 89
+    0x1.p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 90
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.fffffep49
+  },
+  { // Entry 92
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.p50
+  },
+  { // Entry 93
+    0x1.fffffep49,
+    0x1.fffffep49,
+    0x1.000002p50
+  },
+  { // Entry 94
+    0x1.fffffep49,
+    0x1.p50,
+    0x1.fffffep49
+  },
+  { // Entry 95
+    0x1.p50,
+    0x1.p50,
+    0x1.p50
+  },
+  { // Entry 96
+    0x1.p50,
+    0x1.p50,
+    0x1.000002p50
+  },
+  { // Entry 97
+    0x1.fffffep49,
+    0x1.000002p50,
+    0x1.fffffep49
+  },
+  { // Entry 98
+    0x1.p50,
+    0x1.000002p50,
+    0x1.p50
+  },
+  { // Entry 99
+    0x1.000002p50,
+    0x1.000002p50,
+    0x1.000002p50
+  },
+  { // Entry 100
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep126
+  },
+  { // Entry 101
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.p127
+  },
+  { // Entry 102
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.000002p127
+  },
+  { // Entry 103
+    0x1.fffffep126,
+    0x1.p127,
+    0x1.fffffep126
+  },
+  { // Entry 104
+    0x1.p127,
+    0x1.p127,
+    0x1.p127
+  },
+  { // Entry 105
+    0x1.p127,
+    0x1.p127,
+    0x1.000002p127
+  },
+  { // Entry 106
+    0x1.fffffep126,
+    0x1.000002p127,
+    0x1.fffffep126
+  },
+  { // Entry 107
+    0x1.p127,
+    0x1.000002p127,
+    0x1.p127
+  },
+  { // Entry 108
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p127
+  },
+  { // Entry 109
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 110
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 111
+    0x1.p-126,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 112
+    0x1.p-149,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 113
+    0.0,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 114
+    -0.0,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 115
+    -0x1.p-149,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -0x1.p-126,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 117
+    -0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    -HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 119
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 120
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 121
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 122
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 123
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 124
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 125
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 126
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 127
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 128
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.p-126,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 130
+    0x1.p-149,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 131
+    0.0,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 132
+    -0.0,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 133
+    -0x1.p-149,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 134
+    -0x1.p-126,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 135
+    -0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 136
+    -HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 137
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 138
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 139
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 140
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 141
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 142
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 144
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 146
+    0x1.p-149,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 147
+    0.0,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 148
+    -0.0,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 149
+    -0x1.p-149,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 150
+    -0x1.p-126,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 151
+    -0x1.fffffep127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 152
+    -HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 153
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 154
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 155
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 156
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 157
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 158
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 159
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 161
+    0.0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 162
+    -0.0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 163
+    -0x1.p-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 164
+    -0x1.p-126,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 165
+    -0x1.fffffep127,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    -HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 167
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 168
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 169
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 170
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 171
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 172
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 173
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 174
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 175
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 176
+    -0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 177
+    -0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    -HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 179
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 180
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 181
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 182
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 183
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 184
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 185
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 186
+    -0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 187
+    -0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 188
+    -HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 190
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 191
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 192
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 194
+    -0x1.p-126,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 195
+    -0x1.fffffep127,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 196
+    -HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 198
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 200
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 201
+    -0x1.fffffep127,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 204
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 207
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 209
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 210
+    0x1.p-149,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 211
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 212
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 213
+    -0x1.fffffcp-127,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 214
+    -0x1.p-149,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 215
+    -0x1.fffffcp-127,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 216
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/fmod_intel_data.h b/tests/math_data/fmod_intel_data.h
new file mode 100644
index 0000000..b15c77a
--- /dev/null
+++ b/tests/math_data/fmod_intel_data.h
@@ -0,0 +1,1328 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_fmod_intel_data[] = {
+  { // Entry 0
+    -0x1.57e8932492c0p-10,
+    -0x1.200ad685e7f44p3,
+    -0x1.000014abd446dp0
+  },
+  { // Entry 1
+    -0x1.d7dbf487ffd0p-11,
+    -0x1.3333333333334p-1,
+    0x1.10a83585649f6p-4
+  },
+  { // Entry 2
+    0x1.p-1072,
+    0x1.0000000000001p-41,
+    0x1.4p-1072
+  },
+  { // Entry 3
+    0x1.p-1072,
+    0x1.0000000000001p-1017,
+    0x1.4p-1072
+  },
+  { // Entry 4
+    0x1.fc8420e88cbfp18,
+    0x1.11f783ee89b08p99,
+    0x1.0abe1a29d8e8cp19
+  },
+  { // Entry 5
+    0x1.50p-61,
+    0x1.5555555555552p-12,
+    0x1.1111111111106p-14
+  },
+  { // Entry 6
+    -0.0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 7
+    -0.0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 8
+    0.0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 9
+    0.0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 11
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 12
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 13
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 14
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 15
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 16
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 17
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 18
+    0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 20
+    0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 21
+    0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 22
+    0.0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 23
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 24
+    0.0,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 25
+    0.0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 26
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 27
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 28
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 29
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 30
+    0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 33
+    0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 34
+    0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 35
+    0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 36
+    0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 37
+    0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 38
+    0.0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 39
+    0x1.p117,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 40
+    0.0,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 41
+    0.0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 42
+    0.0,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.p2,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p0,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.40p2,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.p1,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.80p1,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    0x1.80p2,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.80p1,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.p2,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 53
+    0x1.c0p2,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.p2,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 55
+    0x1.40p2,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 56
+    0x1.p3,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 57
+    0x1.40p2,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    0x1.80p2,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    0x1.20p3,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    0x1.80p2,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    0x1.c0p2,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    0x1.40p3,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    0x1.c0p2,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 64
+    0x1.p3,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 65
+    0x1.60p3,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 66
+    0x1.p3,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 67
+    0x1.20p3,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0.0,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 69
+    0x1.20p3,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    0x1.40p3,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p0,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    0.0,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 73
+    0.0,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 74
+    0x1.p1,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 75
+    -0.0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p-53,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0x1.p-53,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 89
+    -0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 91
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 92
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0.0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 100
+    0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0.0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 104
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.p-53,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0.0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    0x1.p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 109
+    0x1.p-52,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 110
+    0.0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 111
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 114
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 115
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 116
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 125
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 129
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 130
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 131
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 133
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 135
+    -0x1.80p-1,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0x1.p-1,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    -0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0x1.p-2,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    -0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 140
+    -0x1.00000000000020p-1,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    -0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    -0x1.80p-1,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.00000000000040p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.00000000000040p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 152
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0x1.p-53,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.p-51,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 161
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0x1.80p-1,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000040p-2,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.p-2,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    0x1.00000000000020p-1,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    0x1.80p-1,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    0x1.p-1,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 170
+    0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 173
+    0x1.00000000000040p-1,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    0x1.p-1,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    0x1.00000000000010p-1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 178
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 179
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 180
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.p-51,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0x1.p-53,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 191
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 192
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 194
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 195
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 196
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 198
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 200
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 202
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 203
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 204
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 211
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 212
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 213
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 214
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 215
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 227
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 229
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    0x1.p-1074,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 234
+    0x1.p-1074,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 235
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 236
+    -0x1.p-1074,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 237
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 238
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 241
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 242
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 243
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 244
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 245
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 246
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 247
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 248
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 249
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 250
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 251
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 252
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 253
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 254
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 257
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 258
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 259
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 260
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 261
+    -0x1.8fd90479094320p-964,
+    -0x1.398dd069017ffp759,
+    -0x1.b148e36fdec2fp-964
+  }
+};
diff --git a/tests/math_data/fmodf_intel_data.h b/tests/math_data/fmodf_intel_data.h
new file mode 100644
index 0000000..32ba583
--- /dev/null
+++ b/tests/math_data/fmodf_intel_data.h
@@ -0,0 +1,1298 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_fmodf_intel_data[] = {
+  { // Entry 0
+    0x1.fbp-11,
+    0x1.8e77b6p12,
+    -0x1.0140p-10
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 3
+    0.0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 5
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 6
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 7
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 8
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 9
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 11
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 12
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 13
+    0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 14
+    0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 15
+    0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 17
+    0.0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 18
+    0x1.p15,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 19
+    0.0,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 20
+    0.0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 21
+    0x1.p15,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 22
+    0x1.p15,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 23
+    0x1.p16,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 24
+    0x1.p16,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 25
+    0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 26
+    0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 27
+    0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 29
+    0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 30
+    0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 31
+    0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 32
+    0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 33
+    0.0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 34
+    0x1.p117,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 35
+    0.0,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 36
+    0.0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 37
+    0.0,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 38
+    0x1.p0,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 39
+    0x1.p2,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 40
+    0x1.p0,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 41
+    0x1.p1,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 42
+    0x1.40p2,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 43
+    0x1.p1,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 44
+    0x1.80p1,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 45
+    0x1.80p2,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 46
+    0x1.80p1,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 47
+    0x1.p2,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 48
+    0x1.c0p2,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 49
+    0x1.p2,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 50
+    0x1.40p2,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 51
+    0x1.p3,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 52
+    0x1.40p2,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 53
+    0x1.80p2,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 54
+    0x1.20p3,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 55
+    0x1.80p2,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 56
+    0x1.c0p2,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 57
+    0x1.40p3,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 58
+    0x1.c0p2,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 59
+    0x1.p3,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 60
+    0x1.60p3,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 61
+    0x1.p3,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 62
+    0x1.20p3,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 63
+    0.0,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 64
+    0x1.20p3,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 65
+    0x1.40p3,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 66
+    0x1.p0,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 67
+    0.0,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 68
+    0.0,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 69
+    0x1.p1,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 70
+    -0.0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 71
+    -0x1.p-23,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 72
+    -0x1.80p-23,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 73
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 75
+    -0x1.p-24,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 76
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 77
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 78
+    -0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 79
+    -0x1.80p-23,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 80
+    -0x1.p-23,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 81
+    -0.0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 82
+    -0x1.p-24,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 84
+    -0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 86
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 87
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 88
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 89
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 90
+    0.0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 91
+    0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 92
+    0.0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 93
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 94
+    0.0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 95
+    0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 96
+    0x1.80p-23,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 97
+    0.0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 98
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 99
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 100
+    0x1.p-24,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 101
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 102
+    0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 103
+    0x1.80p-23,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 104
+    0x1.p-23,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 105
+    0.0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 106
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 107
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 108
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 109
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 110
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 111
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 112
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 113
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 114
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 115
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 116
+    0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 117
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 118
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 120
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 122
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 123
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 124
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 129
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 130
+    -0x1.80p-1,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 131
+    -0x1.p-1,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 132
+    -0.0,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 133
+    -0x1.p-2,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 135
+    -0x1.000004p-1,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 136
+    -0.0,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 137
+    -0x1.80p-1,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 138
+    -0x1.000008p-2,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 139
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 140
+    0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 141
+    0x1.000008p-1,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 142
+    0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 143
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 144
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 145
+    0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 146
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 147
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 148
+    -0x1.80p-23,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 151
+    -0x1.p-24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 153
+    -0x1.p-22,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 156
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 157
+    0.0,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 158
+    0x1.80p-1,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 159
+    0x1.000008p-2,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 160
+    0x1.p-2,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 161
+    0.0,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 162
+    0x1.000004p-1,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 163
+    0x1.80p-1,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 164
+    0x1.p-1,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 165
+    0.0,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 166
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 167
+    0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 168
+    0x1.000008p-1,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 169
+    0x1.p-1,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 170
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 171
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 172
+    0x1.000002p-1,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 173
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 174
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 176
+    -0.0,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 177
+    -0x1.80p-23,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 178
+    -0x1.p-22,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 179
+    -0.0,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 180
+    -0x1.p-24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 181
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 183
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 184
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 187
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 188
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 190
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 192
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 193
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 194
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 196
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 197
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 202
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 203
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 204
+    0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 205
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 206
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 209
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 210
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 211
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 212
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 214
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 215
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 216
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 218
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 222
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 225
+    0.0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 228
+    0x1.p-149,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0x1.p-149,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 230
+    -0x1.p-149,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 231
+    -0x1.p-149,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 232
+    0.0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 233
+    0.0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 236
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 237
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 238
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 239
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 240
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 241
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 242
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 243
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 244
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 245
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 246
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 247
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 248
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 249
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 250
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 252
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 253
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 254
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 255
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/frexp_intel_data.h b/tests/math_data/frexp_intel_data.h
new file mode 100644
index 0000000..ce2e873
--- /dev/null
+++ b/tests/math_data/frexp_intel_data.h
@@ -0,0 +1,1108 @@
+/*
+ * 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.
+ */
+
+static data_1_int_1_t<double, double> g_frexp_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    (int)0x1.94p6,
+    0x1.0p100
+  },
+  { // Entry 1
+    0x1.199999999999a0p-1,
+    (int)0x1.94p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 2
+    0x1.33333333333340p-1,
+    (int)0x1.94p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 3
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.94p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 4
+    0x1.66666666666680p-1,
+    (int)0x1.94p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 5
+    0x1.80000000000020p-1,
+    (int)0x1.94p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 6
+    0x1.999999999999c0p-1,
+    (int)0x1.94p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 7
+    0x1.b3333333333360p-1,
+    (int)0x1.94p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 8
+    0x1.cccccccccccdp-1,
+    (int)0x1.94p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 9
+    0x1.e66666666666a0p-1,
+    (int)0x1.94p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 10
+    0x1.p-1,
+    (int)0x1.98p6,
+    0x1.0p101
+  },
+  { // Entry 11
+    0x1.p-1,
+    (int)0x1.92p7,
+    0x1.0p200
+  },
+  { // Entry 12
+    0x1.199999999999a0p-1,
+    (int)0x1.92p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 13
+    0x1.33333333333340p-1,
+    (int)0x1.92p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 14
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.92p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 15
+    0x1.66666666666680p-1,
+    (int)0x1.92p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 16
+    0x1.80000000000020p-1,
+    (int)0x1.92p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 17
+    0x1.999999999999c0p-1,
+    (int)0x1.92p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 18
+    0x1.b3333333333360p-1,
+    (int)0x1.92p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 19
+    0x1.cccccccccccdp-1,
+    (int)0x1.92p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 20
+    0x1.e66666666666a0p-1,
+    (int)0x1.92p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 21
+    0x1.p-1,
+    (int)0x1.94p7,
+    0x1.0p201
+  },
+  { // Entry 22
+    0x1.p-1,
+    (int)0x1.f480p9,
+    0x1.0p1000
+  },
+  { // Entry 23
+    0x1.199999999999a0p-1,
+    (int)0x1.f480p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 24
+    0x1.33333333333340p-1,
+    (int)0x1.f480p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 25
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.f480p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 26
+    0x1.66666666666680p-1,
+    (int)0x1.f480p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 27
+    0x1.80000000000020p-1,
+    (int)0x1.f480p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 28
+    0x1.999999999999c0p-1,
+    (int)0x1.f480p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 29
+    0x1.b3333333333360p-1,
+    (int)0x1.f480p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 30
+    0x1.cccccccccccdp-1,
+    (int)0x1.f480p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 31
+    0x1.e66666666666a0p-1,
+    (int)0x1.f480p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 32
+    0x1.p-1,
+    (int)0x1.f5p9,
+    0x1.0p1001
+  },
+  { // Entry 33
+    -0x1.p-1,
+    (int)0x1.98p6,
+    -0x1.0p101
+  },
+  { // Entry 34
+    -0x1.e6666666666660p-1,
+    (int)0x1.94p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 35
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.94p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 36
+    -0x1.b3333333333320p-1,
+    (int)0x1.94p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 37
+    -0x1.99999999999980p-1,
+    (int)0x1.94p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 38
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.94p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 39
+    -0x1.66666666666640p-1,
+    (int)0x1.94p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 40
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.94p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 41
+    -0x1.333333333333p-1,
+    (int)0x1.94p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 42
+    -0x1.19999999999960p-1,
+    (int)0x1.94p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 43
+    -0x1.p-1,
+    (int)0x1.94p6,
+    -0x1.0p100
+  },
+  { // Entry 44
+    -0x1.p-1,
+    (int)0x1.94p7,
+    -0x1.0p201
+  },
+  { // Entry 45
+    -0x1.e6666666666660p-1,
+    (int)0x1.92p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 46
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.92p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 47
+    -0x1.b3333333333320p-1,
+    (int)0x1.92p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 48
+    -0x1.99999999999980p-1,
+    (int)0x1.92p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 49
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.92p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 50
+    -0x1.66666666666640p-1,
+    (int)0x1.92p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 51
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.92p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 52
+    -0x1.333333333333p-1,
+    (int)0x1.92p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 53
+    -0x1.19999999999960p-1,
+    (int)0x1.92p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 54
+    -0x1.p-1,
+    (int)0x1.92p7,
+    -0x1.0p200
+  },
+  { // Entry 55
+    -0x1.p-1,
+    (int)0x1.f5p9,
+    -0x1.0p1001
+  },
+  { // Entry 56
+    -0x1.e6666666666660p-1,
+    (int)0x1.f480p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 57
+    -0x1.ccccccccccccc0p-1,
+    (int)0x1.f480p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 58
+    -0x1.b3333333333320p-1,
+    (int)0x1.f480p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 59
+    -0x1.99999999999980p-1,
+    (int)0x1.f480p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 60
+    -0x1.7fffffffffffe0p-1,
+    (int)0x1.f480p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 61
+    -0x1.66666666666640p-1,
+    (int)0x1.f480p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 62
+    -0x1.4ccccccccccca0p-1,
+    (int)0x1.f480p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 63
+    -0x1.333333333333p-1,
+    (int)0x1.f480p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 64
+    -0x1.19999999999960p-1,
+    (int)0x1.f480p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 65
+    -0x1.p-1,
+    (int)0x1.f480p9,
+    -0x1.0p1000
+  },
+  { // Entry 66
+    0x1.p-1,
+    (int)0x1.98p5,
+    0x1.0p50
+  },
+  { // Entry 67
+    0x1.199999999999a0p-1,
+    (int)0x1.98p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 68
+    0x1.33333333333340p-1,
+    (int)0x1.98p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 69
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.98p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 70
+    0x1.66666666666680p-1,
+    (int)0x1.98p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 71
+    0x1.80000000000020p-1,
+    (int)0x1.98p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 72
+    0x1.999999999999c0p-1,
+    (int)0x1.98p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 73
+    0x1.b3333333333360p-1,
+    (int)0x1.98p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 74
+    0x1.cccccccccccdp-1,
+    (int)0x1.98p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 75
+    0x1.e66666666666a0p-1,
+    (int)0x1.98p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 76
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 77
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 78
+    0x1.199999999999a0p-1,
+    (int)0x1.a0p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 79
+    0x1.33333333333340p-1,
+    (int)0x1.a0p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 80
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.a0p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 81
+    0x1.66666666666680p-1,
+    (int)0x1.a0p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 82
+    0x1.80000000000020p-1,
+    (int)0x1.a0p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 83
+    0x1.999999999999c0p-1,
+    (int)0x1.a0p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 84
+    0x1.b3333333333360p-1,
+    (int)0x1.a0p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 85
+    0x1.cccccccccccdp-1,
+    (int)0x1.a0p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 86
+    0x1.e66666666666a0p-1,
+    (int)0x1.a0p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 87
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 88
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 89
+    0x1.199999999999a0p-1,
+    (int)0x1.a8p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 90
+    0x1.33333333333340p-1,
+    (int)0x1.a8p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 91
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.a8p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 92
+    0x1.66666666666680p-1,
+    (int)0x1.a8p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 93
+    0x1.80000000000020p-1,
+    (int)0x1.a8p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 94
+    0x1.999999999999c0p-1,
+    (int)0x1.a8p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 95
+    0x1.b3333333333360p-1,
+    (int)0x1.a8p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 96
+    0x1.cccccccccccdp-1,
+    (int)0x1.a8p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 97
+    0x1.e66666666666a0p-1,
+    (int)0x1.a8p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 98
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 99
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 100
+    0x1.199999999999a0p-1,
+    (int)0x1.b0p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 101
+    0x1.33333333333340p-1,
+    (int)0x1.b0p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 102
+    0x1.4ccccccccccce0p-1,
+    (int)0x1.b0p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 103
+    0x1.66666666666680p-1,
+    (int)0x1.b0p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 104
+    0x1.80000000000020p-1,
+    (int)0x1.b0p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 105
+    0x1.999999999999c0p-1,
+    (int)0x1.b0p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 106
+    0x1.b3333333333360p-1,
+    (int)0x1.b0p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 107
+    0x1.cccccccccccdp-1,
+    (int)0x1.b0p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 108
+    0x1.e66666666666a0p-1,
+    (int)0x1.b0p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 109
+    0x1.p-1,
+    (int)0x1.b8p5,
+    0x1.0p54
+  },
+  { // Entry 110
+    0x1.p-1,
+    (int)-0x1.0040p10,
+    0x1.0p-1026
+  },
+  { // Entry 111
+    0x1.d3333333333340p-1,
+    (int)-0x1.ff80p9,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 112
+    0x1.b3333333333340p-1,
+    (int)-0x1.ffp9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 113
+    0x1.3e666666666670p-1,
+    (int)-0x1.fe80p9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 114
+    0x1.a3333333333340p-1,
+    (int)-0x1.fe80p9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 115
+    0x1.04p-1,
+    (int)-0x1.fep9,
+    0x1.040p-1021
+  },
+  { // Entry 116
+    0x1.36666666666660p-1,
+    (int)-0x1.fep9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 117
+    0x1.68ccccccccccc0p-1,
+    (int)-0x1.fep9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 118
+    0x1.9b333333333320p-1,
+    (int)-0x1.fep9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 119
+    0x1.cd999999999980p-1,
+    (int)-0x1.fep9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 120
+    0x1.ffffffffffffe0p-1,
+    (int)-0x1.fep9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 121
+    0x1.fffffffffffff0p-1,
+    (int)0x1.98p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 122
+    0x1.p-1,
+    (int)0x1.a0p5,
+    0x1.0p51
+  },
+  { // Entry 123
+    0x1.00000000000010p-1,
+    (int)0x1.a0p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 124
+    0x1.fffffffffffff0p-1,
+    (int)0x1.a0p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 125
+    0x1.p-1,
+    (int)0x1.a8p5,
+    0x1.0p52
+  },
+  { // Entry 126
+    0x1.00000000000010p-1,
+    (int)0x1.a8p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 127
+    0x1.fffffffffffff0p-1,
+    (int)0x1.a8p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 128
+    0x1.p-1,
+    (int)0x1.b0p5,
+    0x1.0p53
+  },
+  { // Entry 129
+    0x1.00000000000010p-1,
+    (int)0x1.b0p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 130
+    -0x1.00000000000010p-1,
+    (int)0x1.a0p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 131
+    -0x1.p-1,
+    (int)0x1.a0p5,
+    -0x1.0p51
+  },
+  { // Entry 132
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.98p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 133
+    -0x1.00000000000010p-1,
+    (int)0x1.a8p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 134
+    -0x1.p-1,
+    (int)0x1.a8p5,
+    -0x1.0p52
+  },
+  { // Entry 135
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.a0p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 136
+    -0x1.00000000000010p-1,
+    (int)0x1.b0p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 137
+    -0x1.p-1,
+    (int)0x1.b0p5,
+    -0x1.0p53
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.a8p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 139
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.80p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 142
+    0x1.p-1,
+    (int)-0x1.40p2,
+    0x1.0p-6
+  },
+  { // Entry 143
+    0x1.00000000000010p-1,
+    (int)-0x1.40p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 144
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.40p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 145
+    0x1.p-1,
+    (int)-0x1.p2,
+    0x1.0p-5
+  },
+  { // Entry 146
+    0x1.00000000000010p-1,
+    (int)-0x1.p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 147
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 148
+    0x1.p-1,
+    (int)-0x1.80p1,
+    0x1.0p-4
+  },
+  { // Entry 149
+    0x1.00000000000010p-1,
+    (int)-0x1.80p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 150
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.80p1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 151
+    0x1.p-1,
+    (int)-0x1.p1,
+    0x1.0p-3
+  },
+  { // Entry 152
+    0x1.00000000000010p-1,
+    (int)-0x1.p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 153
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 154
+    0x1.p-1,
+    (int)-0x1.p0,
+    0x1.0p-2
+  },
+  { // Entry 155
+    0x1.00000000000010p-1,
+    (int)-0x1.p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 156
+    0x1.fffffffffffff0p-1,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 157
+    0x1.p-1,
+    (int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 158
+    0x1.00000000000010p-1,
+    (int)0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 159
+    -0x1.p-1,
+    (int)-0x1.0c40p10,
+    -0x1.0p-1074
+  },
+  { // Entry 160
+    -0.0,
+    (int)0.0,
+    -0.0
+  },
+  { // Entry 161
+    0x1.p-1,
+    (int)-0x1.0c40p10,
+    0x1.0p-1074
+  },
+  { // Entry 162
+    0x1.fffffffffffff0p-1,
+    (int)0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000010p-1,
+    (int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 166
+    0x1.p-1,
+    (int)0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 167
+    0x1.00000000000010p-1,
+    (int)0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 168
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 169
+    0x1.p-1,
+    (int)0x1.80p1,
+    0x1.0p2
+  },
+  { // Entry 170
+    0x1.00000000000010p-1,
+    (int)0x1.80p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 171
+    0x1.fffffffffffff0p-1,
+    (int)0x1.80p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 172
+    0x1.p-1,
+    (int)0x1.p2,
+    0x1.0p3
+  },
+  { // Entry 173
+    0x1.00000000000010p-1,
+    (int)0x1.p2,
+    0x1.0000000000001p3
+  },
+  { // Entry 174
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p2,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 175
+    0x1.p-1,
+    (int)0x1.40p2,
+    0x1.0p4
+  },
+  { // Entry 176
+    0x1.00000000000010p-1,
+    (int)0x1.40p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 177
+    0x1.fffffffffffff0p-1,
+    (int)0x1.40p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 178
+    0x1.p-1,
+    (int)0x1.80p2,
+    0x1.0p5
+  },
+  { // Entry 179
+    0x1.00000000000010p-1,
+    (int)0x1.80p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 180
+    0x1.fffffffffffff0p-1,
+    (int)0x1.80p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 181
+    0x1.p-1,
+    (int)0x1.c0p2,
+    0x1.0p6
+  },
+  { // Entry 182
+    0x1.00000000000010p-1,
+    (int)0x1.c0p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 183
+    0x1.fffffffffffff0p-1,
+    (int)0x1.c0p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 184
+    0x1.p-1,
+    (int)0x1.p3,
+    0x1.0p7
+  },
+  { // Entry 185
+    0x1.00000000000010p-1,
+    (int)0x1.p3,
+    0x1.0000000000001p7
+  },
+  { // Entry 186
+    HUGE_VAL,
+    (int)0,
+    HUGE_VAL
+  },
+  { // Entry 187
+    -HUGE_VAL,
+    (int)0,
+    -HUGE_VAL
+  },
+  { // Entry 188
+    0.0,
+    (int)0.0,
+    0.0
+  },
+  { // Entry 189
+    -0.0,
+    (int)0.0,
+    -0.0
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    -0x1.fffffffffffff0p-1,
+    (int)0x1.p10,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ffffffffffffe0p-1,
+    (int)0x1.p10,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    -0x1.ffffffffffffe0p-1,
+    (int)0x1.p10,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    0x1.921fb54442d180p-1,
+    (int)0x1.p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    -0x1.921fb54442d180p-1,
+    (int)0x1.p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    0x1.921fb54442d180p-1,
+    (int)0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    -0x1.921fb54442d180p-1,
+    (int)0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    0x1.00000000000010p-1,
+    (int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    -0x1.00000000000010p-1,
+    (int)0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 201
+    -0x1.p-1,
+    (int)0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    0x1.fffffffffffff0p-1,
+    (int)0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p-1,
+    (int)0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    0x1.921fb54442d180p-1,
+    (int)0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    -0x1.921fb54442d180p-1,
+    (int)0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    0x1.00000000000010p-1,
+    (int)-0x1.fe80p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    -0x1.00000000000010p-1,
+    (int)-0x1.fe80p9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    0x1.p-1,
+    (int)-0x1.fe80p9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0x1.p-1,
+    (int)-0x1.fe80p9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    0x1.ffffffffffffe0p-1,
+    (int)-0x1.ffp9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    -0x1.ffffffffffffe0p-1,
+    (int)-0x1.ffp9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffc0p-1,
+    (int)-0x1.ffp9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    -0x1.ffffffffffffc0p-1,
+    (int)-0x1.ffp9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    0x1.p-1,
+    (int)-0x1.0cp10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    -0x1.p-1,
+    (int)-0x1.0cp10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    0x1.p-1,
+    (int)-0x1.0c40p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    -0x1.p-1,
+    (int)-0x1.0c40p10,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/frexpf_intel_data.h b/tests/math_data/frexpf_intel_data.h
new file mode 100644
index 0000000..dd6ba7d
--- /dev/null
+++ b/tests/math_data/frexpf_intel_data.h
@@ -0,0 +1,888 @@
+/*
+ * 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.
+ */
+
+static data_1_int_1_t<float, float> g_frexpf_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    (int)0x1.94p6,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.19999ap-1,
+    (int)0x1.94p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    0x1.333334p-1,
+    (int)0x1.94p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    0x1.4ccccep-1,
+    (int)0x1.94p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    0x1.666668p-1,
+    (int)0x1.94p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    0x1.800002p-1,
+    (int)0x1.94p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    0x1.99999cp-1,
+    (int)0x1.94p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    0x1.b33336p-1,
+    (int)0x1.94p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    0x1.ccccd0p-1,
+    (int)0x1.94p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    0x1.e6666ap-1,
+    (int)0x1.94p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    0x1.p-1,
+    (int)0x1.98p6,
+    0x1.p101
+  },
+  { // Entry 11
+    -0x1.p-1,
+    (int)0x1.98p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    -0x1.e66666p-1,
+    (int)0x1.94p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    -0x1.ccccccp-1,
+    (int)0x1.94p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    -0x1.b33332p-1,
+    (int)0x1.94p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    -0x1.999998p-1,
+    (int)0x1.94p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    -0x1.7ffffep-1,
+    (int)0x1.94p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    -0x1.666664p-1,
+    (int)0x1.94p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    -0x1.4ccccap-1,
+    (int)0x1.94p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    -0x1.333330p-1,
+    (int)0x1.94p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    -0x1.199996p-1,
+    (int)0x1.94p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    -0x1.p-1,
+    (int)0x1.94p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    0x1.p-1,
+    (int)0x1.60p4,
+    0x1.p21
+  },
+  { // Entry 23
+    0x1.19999ap-1,
+    (int)0x1.60p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    0x1.333334p-1,
+    (int)0x1.60p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    0x1.4ccccep-1,
+    (int)0x1.60p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    0x1.666668p-1,
+    (int)0x1.60p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    0x1.800002p-1,
+    (int)0x1.60p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    0x1.99999cp-1,
+    (int)0x1.60p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    0x1.b33336p-1,
+    (int)0x1.60p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    0x1.ccccd0p-1,
+    (int)0x1.60p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    0x1.e6666ap-1,
+    (int)0x1.60p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 33
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 34
+    0x1.19999ap-1,
+    (int)0x1.70p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    0x1.333334p-1,
+    (int)0x1.70p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    0x1.4ccccep-1,
+    (int)0x1.70p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    0x1.666668p-1,
+    (int)0x1.70p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    0x1.800002p-1,
+    (int)0x1.70p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    0x1.99999cp-1,
+    (int)0x1.70p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    0x1.b33336p-1,
+    (int)0x1.70p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    0x1.ccccd0p-1,
+    (int)0x1.70p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    0x1.e6666ap-1,
+    (int)0x1.70p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 44
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 45
+    0x1.19999ap-1,
+    (int)0x1.80p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    0x1.333334p-1,
+    (int)0x1.80p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    0x1.4ccccep-1,
+    (int)0x1.80p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    0x1.666668p-1,
+    (int)0x1.80p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    0x1.800002p-1,
+    (int)0x1.80p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    0x1.99999cp-1,
+    (int)0x1.80p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    0x1.b33336p-1,
+    (int)0x1.80p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    0x1.ccccd0p-1,
+    (int)0x1.80p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    0x1.e6666ap-1,
+    (int)0x1.80p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 55
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 56
+    0x1.19999ap-1,
+    (int)0x1.90p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    0x1.333334p-1,
+    (int)0x1.90p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    0x1.4ccccep-1,
+    (int)0x1.90p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    0x1.666668p-1,
+    (int)0x1.90p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    0x1.800002p-1,
+    (int)0x1.90p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    0x1.99999cp-1,
+    (int)0x1.90p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    0x1.b33336p-1,
+    (int)0x1.90p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    0x1.ccccd0p-1,
+    (int)0x1.90p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    0x1.e6666ap-1,
+    (int)0x1.90p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    0x1.p-1,
+    (int)0x1.a0p4,
+    0x1.p25
+  },
+  { // Entry 66
+    0x1.p-1,
+    (int)-0x1.02p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    0x1.d33330p-1,
+    (int)-0x1.fcp6,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    0x1.b33330p-1,
+    (int)-0x1.f8p6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    0x1.3e6664p-1,
+    (int)-0x1.f4p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    0x1.a33330p-1,
+    (int)-0x1.f4p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    0x1.03fffep-1,
+    (int)-0x1.f0p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    0x1.366664p-1,
+    (int)-0x1.f0p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    0x1.68cccap-1,
+    (int)-0x1.f0p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    0x1.9b3330p-1,
+    (int)-0x1.f0p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    0x1.cd9996p-1,
+    (int)-0x1.f0p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    0x1.fffffcp-1,
+    (int)-0x1.f0p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    0x1.fffffep-1,
+    (int)0x1.60p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    0x1.p-1,
+    (int)0x1.70p4,
+    0x1.p22
+  },
+  { // Entry 79
+    0x1.000002p-1,
+    (int)0x1.70p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    0x1.fffffep-1,
+    (int)0x1.70p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    0x1.p-1,
+    (int)0x1.80p4,
+    0x1.p23
+  },
+  { // Entry 82
+    0x1.000002p-1,
+    (int)0x1.80p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    0x1.fffffep-1,
+    (int)0x1.80p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    0x1.p-1,
+    (int)0x1.90p4,
+    0x1.p24
+  },
+  { // Entry 85
+    0x1.000002p-1,
+    (int)0x1.90p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    -0x1.000002p-1,
+    (int)0x1.70p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    -0x1.p-1,
+    (int)0x1.70p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    -0x1.fffffep-1,
+    (int)0x1.60p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    -0x1.000002p-1,
+    (int)0x1.80p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    -0x1.p-1,
+    (int)0x1.80p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    -0x1.fffffep-1,
+    (int)0x1.70p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    -0x1.000002p-1,
+    (int)0x1.90p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    -0x1.p-1,
+    (int)0x1.90p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    -0x1.fffffep-1,
+    (int)0x1.80p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    0x1.fffffep-1,
+    (int)0x1.p7,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    -0x1.fffffep-1,
+    (int)0x1.p7,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    0x1.fffffep-1,
+    (int)-0x1.80p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    0x1.p-1,
+    (int)-0x1.40p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    0x1.000002p-1,
+    (int)-0x1.40p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    0x1.fffffep-1,
+    (int)-0x1.40p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    0x1.p-1,
+    (int)-0x1.p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    0x1.000002p-1,
+    (int)-0x1.p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    0x1.fffffep-1,
+    (int)-0x1.p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    0x1.p-1,
+    (int)-0x1.80p1,
+    0x1.p-4
+  },
+  { // Entry 105
+    0x1.000002p-1,
+    (int)-0x1.80p1,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    0x1.fffffep-1,
+    (int)-0x1.80p1,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    0x1.p-1,
+    (int)-0x1.p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    0x1.000002p-1,
+    (int)-0x1.p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    0x1.fffffep-1,
+    (int)-0x1.p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    0x1.p-1,
+    (int)-0x1.p0,
+    0x1.p-2
+  },
+  { // Entry 111
+    0x1.000002p-1,
+    (int)-0x1.p0,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    0x1.fffffep-1,
+    (int)-0x1.p0,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    0x1.p-1,
+    (int)0.0,
+    0x1.p-1
+  },
+  { // Entry 114
+    0x1.000002p-1,
+    (int)0.0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    -0x1.p-1,
+    (int)-0x1.28p7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    0.0,
+    (int)0.0,
+    0.0
+  },
+  { // Entry 117
+    0x1.p-1,
+    (int)-0x1.28p7,
+    0x1.p-149
+  },
+  { // Entry 118
+    0x1.fffffep-1,
+    (int)0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 120
+    0x1.000002p-1,
+    (int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    0x1.fffffep-1,
+    (int)0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    0x1.p-1,
+    (int)0x1.p1,
+    0x1.p1
+  },
+  { // Entry 123
+    0x1.000002p-1,
+    (int)0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 124
+    0x1.fffffep-1,
+    (int)0x1.p1,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    0x1.p-1,
+    (int)0x1.80p1,
+    0x1.p2
+  },
+  { // Entry 126
+    0x1.000002p-1,
+    (int)0x1.80p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    0x1.fffffep-1,
+    (int)0x1.80p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    0x1.p-1,
+    (int)0x1.p2,
+    0x1.p3
+  },
+  { // Entry 129
+    0x1.000002p-1,
+    (int)0x1.p2,
+    0x1.000002p3
+  },
+  { // Entry 130
+    0x1.fffffep-1,
+    (int)0x1.p2,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    0x1.p-1,
+    (int)0x1.40p2,
+    0x1.p4
+  },
+  { // Entry 132
+    0x1.000002p-1,
+    (int)0x1.40p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    0x1.fffffep-1,
+    (int)0x1.40p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    0x1.p-1,
+    (int)0x1.80p2,
+    0x1.p5
+  },
+  { // Entry 135
+    0x1.000002p-1,
+    (int)0x1.80p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    0x1.fffffep-1,
+    (int)0x1.80p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    0x1.p-1,
+    (int)0x1.c0p2,
+    0x1.p6
+  },
+  { // Entry 138
+    0x1.000002p-1,
+    (int)0x1.c0p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    0x1.fffffep-1,
+    (int)0x1.c0p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    0x1.p-1,
+    (int)0x1.p3,
+    0x1.p7
+  },
+  { // Entry 141
+    0x1.000002p-1,
+    (int)0x1.p3,
+    0x1.000002p7
+  },
+  { // Entry 142
+    HUGE_VALF,
+    (int)0,
+    HUGE_VALF
+  },
+  { // Entry 143
+    -HUGE_VALF,
+    (int)0,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    0.0,
+    (int)0.0,
+    0.0f
+  },
+  { // Entry 145
+    -0.0,
+    (int)0.0,
+    -0.0f
+  },
+  { // Entry 146
+    0x1.fffffep-1,
+    (int)0x1.p7,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    -0x1.fffffep-1,
+    (int)0x1.p7,
+    -0x1.fffffep127
+  },
+  { // Entry 148
+    0x1.fffffcp-1,
+    (int)0x1.p7,
+    0x1.fffffcp127
+  },
+  { // Entry 149
+    -0x1.fffffcp-1,
+    (int)0x1.p7,
+    -0x1.fffffcp127
+  },
+  { // Entry 150
+    0x1.921fb6p-1,
+    (int)0x1.p1,
+    0x1.921fb6p1
+  },
+  { // Entry 151
+    -0x1.921fb6p-1,
+    (int)0x1.p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 152
+    0x1.921fb6p-1,
+    (int)0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 153
+    -0x1.921fb6p-1,
+    (int)0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 154
+    0x1.000002p-1,
+    (int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    -0x1.000002p-1,
+    (int)0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 156
+    0x1.p-1,
+    (int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 157
+    -0x1.p-1,
+    (int)0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 158
+    0x1.fffffep-1,
+    (int)0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0x1.fffffep-1,
+    (int)0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 160
+    0x1.921fb6p-1,
+    (int)0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 161
+    -0x1.921fb6p-1,
+    (int)0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 162
+    0x1.000002p-1,
+    (int)-0x1.f4p6,
+    0x1.000002p-126
+  },
+  { // Entry 163
+    -0x1.000002p-1,
+    (int)-0x1.f4p6,
+    -0x1.000002p-126
+  },
+  { // Entry 164
+    0x1.p-1,
+    (int)-0x1.f4p6,
+    0x1.p-126
+  },
+  { // Entry 165
+    -0x1.p-1,
+    (int)-0x1.f4p6,
+    -0x1.p-126
+  },
+  { // Entry 166
+    0x1.fffffcp-1,
+    (int)-0x1.f8p6,
+    0x1.fffffcp-127
+  },
+  { // Entry 167
+    -0x1.fffffcp-1,
+    (int)-0x1.f8p6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 168
+    0x1.fffff8p-1,
+    (int)-0x1.f8p6,
+    0x1.fffff8p-127
+  },
+  { // Entry 169
+    -0x1.fffff8p-1,
+    (int)-0x1.f8p6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 170
+    0x1.p-1,
+    (int)-0x1.26p7,
+    0x1.p-148
+  },
+  { // Entry 171
+    -0x1.p-1,
+    (int)-0x1.26p7,
+    -0x1.p-148
+  },
+  { // Entry 172
+    0x1.p-1,
+    (int)-0x1.28p7,
+    0x1.p-149
+  },
+  { // Entry 173
+    -0x1.p-1,
+    (int)-0x1.28p7,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/hypot_intel_data.h b/tests/math_data/hypot_intel_data.h
new file mode 100644
index 0000000..41bfdde
--- /dev/null
+++ b/tests/math_data/hypot_intel_data.h
@@ -0,0 +1,2788 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_hypot_intel_data[] = {
+  { // Entry 0
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    -0x1.0b2502b3f7656p0,
+    0x1.032a74c8e2bbdp0
+  },
+  { // Entry 1
+    0x1.21c9123e6cbbf812953910371e275dc7p3,
+    -0x1.21c9107b0e488p3,
+    0x1.ff77fffffffffp-9
+  },
+  { // Entry 2
+    0x1.ad09d0c85a9b738fbeb590492c45108fp-21,
+    -0x1.3db5af72d9074p-21,
+    0x1.2054976e47184p-21
+  },
+  { // Entry 3
+    0x1.6a1f7b584e052800e5d5eb2c842defa6p-1,
+    -0x1.47200db32f88cp-1,
+    -0x1.36a049ab1eee0p-2
+  },
+  { // Entry 4
+    0x1.893eff10a04aed61358d3d5b6481eebcp-425,
+    -0x1.5a9c9453941a0p-426,
+    -0x1.60ff7b7326510p-425
+  },
+  { // Entry 5
+    0x1.94c583ada5b5218962e6ed1568fead12p0,
+    -0x1.7ffffffffffffp0,
+    0x1.0000000000003p-1
+  },
+  { // Entry 6
+    0x1.97cfe6e25cd448cf5dbcb52213679796p-11,
+    -0x1.8e38e38e38e37p-11,
+    -0x1.5fad40a57eb38p-13
+  },
+  { // Entry 7
+    0x1.9e661829e5ee17ffba1d22ecf0580873p421,
+    -0x1.9897fbb0fa747p418,
+    0x1.9b3d45740c34cp421
+  },
+  { // Entry 8
+    0x1.c7653d4e9e6c77fe2eb3fc6720505db6p-11,
+    -0x1.bbbbbbbbbbbbcp-11,
+    -0x1.9999999999c33p-13
+  },
+  { // Entry 9
+    0x1.ddffe6e5a3a8384016ed35f115bc095ep-11,
+    -0x1.e9131abf0b717p-14,
+    0x1.da12f684bda24p-11
+  },
+  { // Entry 10
+    0x1.7158b50ca33488012d796eb6f1a7589bp0,
+    -0x1.f5723be0cafb4p-1,
+    0x1.0f35b6d1e4e0fp0
+  },
+  { // Entry 11
+    0x1.00007fffdffff7ffe2000dfff64007afp0,
+    -0x1.ffffffffffffdp-1,
+    0x1.ffffffffffffcp-9
+  },
+  { // Entry 12
+    0x1.fffffffep-1043,
+    0.0,
+    0x1.fffffffe0p-1043
+  },
+  { // Entry 13
+    0x1.199999999999a0p0,
+    0x1.0p-1074,
+    -0x1.199999999999ap0
+  },
+  { // Entry 14
+    0x1.aaaaaaaaaaaaa0p0,
+    0x1.0p-1074,
+    -0x1.aaaaaaaaaaaaap0
+  },
+  { // Entry 15
+    0x1.b87065d24cee52b080d32543ca9cfc19p-1,
+    0x1.0000000000001p-1,
+    -0x1.6666666666668p-1
+  },
+  { // Entry 16
+    0x1.43596ffaa74788558d1fbef5bc6654e5p0,
+    0x1.0000000000001p-2,
+    -0x1.3cf3cf3cf3cf4p0
+  },
+  { // Entry 17
+    0x1.4ccccccccccd08000000000000627627p-2,
+    0x1.0000000000001p-3,
+    -0x1.3333333333337p-2
+  },
+  { // Entry 18
+    0x1.801554bda99c72d8de8e8d0810523d56p0,
+    0x1.0000000000001p-5,
+    0x1.8000000000001p0
+  },
+  { // Entry 19
+    0x1.74b50ce2454308015045eece9494acfbp-3,
+    0x1.0000000000001p-7,
+    -0x1.745d1745d0e18p-3
+  },
+  { // Entry 20
+    0x1.28ff91ab72d727facf9be8fbd129e05ep-2,
+    0x1.0000000000080p-3,
+    0x1.0c0p-2
+  },
+  { // Entry 21
+    0x1.000033d5ab09e8017b9fe870280d1247p9,
+    0x1.0000000000aeep9,
+    0x1.45d1745d1745ep0
+  },
+  { // Entry 22
+    0x1.07e0f670c16e48e1e7c24e5939e31f55p-3,
+    0x1.00000009880p-3,
+    0x1.ffffff8cfffffp-6
+  },
+  { // Entry 23
+    0x1.b596b5878e25800001094dfd216cf693p-1,
+    0x1.00000040ed435p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 24
+    0x1.0008ffd80967981d0efdf34de42be658p-4,
+    0x1.0000007ffffdep-10,
+    0x1.0000fffffffffp-4
+  },
+  { // Entry 25
+    0x1.6a09e8e19116080994af0efbde159838p-20,
+    0x1.0000037ffffdfp-20,
+    0x1.00000000110p-20
+  },
+  { // Entry 26
+    0x1.00009ec452a8c81c490f9ba38768ce7cp-3,
+    0x1.0000043ffffdfp-3,
+    0x1.19453808ca296p-11
+  },
+  { // Entry 27
+    0x1.b879b2c3faae37fe5d8254c1a9443fd6p-1,
+    0x1.000fffffff6c8p-1,
+    -0x1.6666666666668p-1
+  },
+  { // Entry 28
+    0x1.6b9824a5d9fefc6fac3c06f2beba6d16p0,
+    0x1.001p0,
+    0x1.0222222222223p0
+  },
+  { // Entry 29
+    0x1.6b1dc233c08aacf04d42b3d293e12a49p0,
+    0x1.0016f5e74bfddp0,
+    -0x1.016eb68415ab1p0
+  },
+  { // Entry 30
+    0x1.778d27690518dd41bd73ad488f2a2174p-27,
+    0x1.00a436e9442ddp-27,
+    0x1.122dc42e12491p-27
+  },
+  { // Entry 31
+    0x1.6c9ed56d3e093800300f2c229b359a3dp0,
+    0x1.01b59372d3dp0,
+    -0x1.01f11caa0d8fap0
+  },
+  { // Entry 32
+    0x1.62e44823f6c828019d99f2ea6e42b44dp-1,
+    0x1.0624dd41fac87p-10,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 33
+    0x1.62e44823f6c9980000fc0f85b3c55a79p-1,
+    0x1.0624dd49c38c9p-10,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 34
+    0x1.086b948a12d8c800cf1808a10a5174d9p3,
+    0x1.086ac9804c16fp3,
+    0x1.47ae147ae1488p-5
+  },
+  { // Entry 35
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 36
+    0x1.b174e26559df6801e67982110c79e921p0,
+    0x1.0dadec75407d1p0,
+    0x1.53594d6535950p0
+  },
+  { // Entry 37
+    0x1.0fa6ab587be3f81316d103dd56845189p2,
+    0x1.0dc27b7edad61p2,
+    -0x1.fffffffffffdfp-2
+  },
+  { // Entry 38
+    0x1.0e00000001e77800795b3317cdb8cf48p-1,
+    0x1.0e0p-1,
+    0x1.00880p-20
+  },
+  { // Entry 39
+    0x1.1e643a24dde918108702a958a34659bdp1,
+    0x1.17261d1fbe70fp1,
+    -0x1.0p-1
+  },
+  { // Entry 40
+    0x1.00009ec452a8c81c490f9ba38768ce7cp-3,
+    0x1.19453808ca296p-11,
+    0x1.0000043ffffdfp-3
+  },
+  { // Entry 41
+    0x1.1f7648cb9c2928102f301b4e2a6da7f8p3,
+    0x1.1f6fb7dbedf31p3,
+    -0x1.eb851eb851eb2p-4
+  },
+  { // Entry 42
+    0x1.3fc168b1ba65f7fefcba8c51c9dceebep1,
+    0x1.333333334955dp1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 43
+    0x1.d561dc6bbc69b7fffefd4eef36bb45cep-1,
+    0x1.33333336ffb33p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 44
+    0x1.b6d63492d208b7fe66769600852b12d8p7,
+    0x1.3845636425767p7,
+    0x1.34534564561d4p7
+  },
+  { // Entry 45
+    0x1.b6d63492cf6ddfff7a4bf179a9f2d6cap7,
+    0x1.3845636425776p7,
+    0x1.3453456452673p7
+  },
+  { // Entry 46
+    0x1.853a0d5122cef456b05a1510fbead643p6,
+    0x1.3bbd9e1fa27b4p6,
+    0x1.c7372b6a514bcp5
+  },
+  { // Entry 47
+    0x1.3fba0ae4ce08b810e8f56ddaf12a7f4fp3,
+    0x1.3e1f0f87c3dd1p3,
+    -0x1.fffffffffffdfp-1
+  },
+  { // Entry 48
+    0x1.b71be4215a53283d71f5b110a870e894p-11,
+    0x1.484e2afe0bbc6p-13,
+    -0x1.af5ebd7af5ec0p-11
+  },
+  { // Entry 49
+    0x1.56d07f9feb80d804781ae4305058b676p2,
+    0x1.550fe1779c5p2,
+    -0x1.14f2805f85d24p-1
+  },
+  { // Entry 50
+    0x1.a52df5c24c89489d50528533a7f35763p2,
+    0x1.5555555555556p0,
+    0x1.9c71c71c71c69p2
+  },
+  { // Entry 51
+    0x1.b993cc4482b447ff4f74030e8ba14870p-1,
+    0x1.57354071c6426p-3,
+    -0x1.b1293f6f53880p-1
+  },
+  { // Entry 52
+    0x1.a7e2abc57f0e380a70c24d675241f120p0,
+    0x1.5b2d96cb65bp0,
+    -0x1.e666666666664p-1
+  },
+  { // Entry 53
+    0x1.e44d26303c8e703260adac35beb0201ap421,
+    0x1.600ec23b7b61ep421,
+    -0x1.4c92148cef14ap421
+  },
+  { // Entry 54
+    0x1.f8611701969ccfffff045c3f99fe48f7p-1,
+    0x1.6666666dac2fap-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 55
+    0x1.6cc93c4d65368802345842af2282a5eap1,
+    0x1.6cc93a754133ep1,
+    0x1.257430139p-10
+  },
+  { // Entry 56
+    0x1.6cc93c4d653688025c9147b5b60441e9p1,
+    0x1.6cc93a754133ep1,
+    0x1.25743013900c8p-10
+  },
+  { // Entry 57
+    0x1.6cc93c4d653688025e2d2930daa313d5p1,
+    0x1.6cc93a754133ep1,
+    0x1.25743013900d0p-10
+  },
+  { // Entry 58
+    0x1.d488ac97053f37fbba277d07ac43cad5p-20,
+    0x1.7p-20,
+    0x1.220p-20
+  },
+  { // Entry 59
+    0x1.400000004cccc800052f1bc6a6c17e88p-1,
+    0x1.7ffffffffffffp-2,
+    0x1.000000006p-1
+  },
+  { // Entry 60
+    0x1.ffee8df9517ff7fe75600bb975e5ce61p0,
+    0x1.81792910a5db1p-1,
+    -0x1.da43b5dce0b18p0
+  },
+  { // Entry 61
+    0x1.9b0a5736513fc7ffab037ae75d04e99ap2,
+    0x1.88a4522914881p2,
+    0x1.e666666666667p0
+  },
+  { // Entry 62
+    0x1.a5fa08a755b5c900f2d5cc6751e1ecf9p2,
+    0x1.88cb3c9484e2ap0,
+    0x1.9a6449e59bb5dp2
+  },
+  { // Entry 63
+    0x1.8befefed027e87ff6c70308e205c2a19p6,
+    0x1.8beea4e1a0873p6,
+    -0x1.0p-1
+  },
+  { // Entry 64
+    0x1.96991a72bfd0100000868ffe3e831279p1,
+    0x1.8cccccce3bcbdp1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 65
+    0x1.bf7cd9d02c7e220c699cc834fdd4fb41p-4,
+    0x1.8ddf4152067fcp-4,
+    -0x1.999999999999ap-5
+  },
+  { // Entry 66
+    0x1.76e7ba8bc745280094a71daf10d4a68ep25,
+    0x1.97fe3896c80f0p2,
+    0x1.76e7ba8bc741bp25
+  },
+  { // Entry 67
+    0x1.0efacef2e4e81ffffefe587f1ae783b6p0,
+    0x1.999999a0c0a0bp-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 68
+    0x1.715e867859a8580001048a1e9e9dff7cp-1,
+    0x1.999999b9ce793p-3,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 69
+    0x1.6690cd7c39fa4800010745dc1f901919p-1,
+    0x1.999999da8ed7ap-4,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 70
+    0x1.f65294baeb7788330decefa598e273d5p-11,
+    0x1.9dbcc48676f94p-15,
+    0x1.f5a814afd6a11p-11
+  },
+  { // Entry 71
+    0x1.c26cb730864d698c82db5769586bd519p0,
+    0x1.a2882f7660c18p-2,
+    0x1.b61a64501888ap0
+  },
+  { // Entry 72
+    0x1.209f4f2c5979e816bf99efe18e6f1cdap1,
+    0x1.b8f22f033c872p-3,
+    0x1.1f4db533bcddcp1
+  },
+  { // Entry 73
+    0x1.50225479d4b157fe785588557cc66cdep-10,
+    0x1.bd8caaaf99090p-11,
+    -0x1.f76b23986ff44p-11
+  },
+  { // Entry 74
+    0x1.060db00245bf781048c529e4efff0afbp25,
+    0x1.bffffffffffffp22,
+    0x1.0000027ffffdfp25
+  },
+  { // Entry 75
+    0x1.c8c25b45aba168f0187bb5c3abbc3d16p-11,
+    0x1.c06b09e919d94p-11,
+    -0x1.5b911048a3310p-13
+  },
+  { // Entry 76
+    0x1.f53b21b5c40249b92a9c223bae43323bp0,
+    0x1.c81e6f7fe3993p-2,
+    -0x1.e8167b6df2ee0p0
+  },
+  { // Entry 77
+    0x1.f5950f056e39e90cbaac1f89ab36b40ap2,
+    0x1.cba2e8ba2e8b7p0,
+    0x1.e83e0f83e0f76p2
+  },
+  { // Entry 78
+    0x1.ddffe6e5a3a8384016ed35f115bc095ep-11,
+    0x1.da12f684bda24p-11,
+    -0x1.e9131abf0b717p-14
+  },
+  { // Entry 79
+    0x1.7941bb05a39ca7ff5e4553b1fc4d7db9p-423,
+    0x1.f8d7bbd7ce920p-426,
+    -0x1.73f0fd4fd9fd0p-423
+  },
+  { // Entry 80
+    0x1.b13fad7cb7c50801dede1905f3f366a1p9,
+    0x1.f91b91b91b905p2,
+    0x1.b13b13b13b130p9
+  },
+  { // Entry 81
+    0x1.69fd85887947900071fbc08183b8ab23p0,
+    0x1.fcf76c540d958p-1,
+    -0x1.017098d82f95ep0
+  },
+  { // Entry 82
+    0x1.21c9123e6cbbf812953910371e275dc7p3,
+    0x1.ff77fffffffffp-9,
+    -0x1.21c9107b0e488p3
+  },
+  { // Entry 83
+    0x1.c66addfec91c411f38e2aacb6ea06a91p-3,
+    0x1.ffeffffffffffp-4,
+    -0x1.7777777777774p-3
+  },
+  { // Entry 84
+    0x1.4eb522b24186e8254574c77b5f914855p-1,
+    0x1.ffeffffffffffp-4,
+    0x1.488888888888ap-1
+  },
+  { // Entry 85
+    0x1.002caffe59b0a7feeda747a94b176ccap4,
+    0x1.ffeffffffffffp3,
+    -0x1.4888888888888p-1
+  },
+  { // Entry 86
+    0x1.fff28f6f00e797fec43eb25e08b861abp3,
+    0x1.ffeffffffffffp3,
+    -0x1.99999999a7508p-4
+  },
+  { // Entry 87
+    0x1.00000001fffff7fe0007f00400100ff6p20,
+    0x1.fffffbfffffffp4,
+    0x1.0p20
+  },
+  { // Entry 88
+    0x1.0082de91198ee8170bcff2900895b92ap2,
+    0x1.ffffffffffdffp-3,
+    0x1.0002fffffffdfp2
+  },
+  { // Entry 89
+    0x1.6a09e667f3c5125ab5042ba7be436cbbp-2,
+    0x1.ffffffffffff7p-3,
+    0x1.00000000000c0p-2
+  },
+  { // Entry 90
+    0x1.ffffffffffffb0p500,
+    0x1.ffffffffffffbp500,
+    0x1.ffffffffffffbp-1
+  },
+  { // Entry 91
+    0x1.333574eb66a002798d20bb2ca70862e4p-1,
+    0x1.ffffffffffffep-3,
+    0x1.1745d1745d177p-1
+  },
+  { // Entry 92
+    0x1.745d1745d17557ffffffffffc41ap-3,
+    0x1.ffffffffffffep-28,
+    0x1.745d1745d1750p-3
+  },
+  { // Entry 93
+    0x1.00000000000000007fffffffffffefffp1,
+    0x1.ffffffffffffep-32,
+    -0x1.0p1
+  },
+  { // Entry 94
+    0x1.7777777777780000015d1745d1745c6cp-4,
+    0x1.ffffffffffffep-40,
+    0x1.7777777777780p-4
+  },
+  { // Entry 95
+    0x1.01c5967e49cb581b1ce389659d8f68ecp2,
+    0x1.ffffffffffffep1,
+    -0x1.e2be2be2be2c3p-2
+  },
+  { // Entry 96
+    0x1.0058d424f448e820225d2e7a25abc0ebp4,
+    0x1.ffffffffffffep3,
+    -0x1.aaaaaaaaaaaa8p-1
+  },
+  { // Entry 97
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 98
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 99
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 101
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 102
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 104
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 105
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 107
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 108
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 109
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 110
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 111
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 112
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 113
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 116
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 117
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 119
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 120
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 121
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 122
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 123
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 124
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 125
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 126
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 127
+    0x1.6a09e667f3bcc3608b617397f77caac1p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 128
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 129
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 130
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 131
+    0x1.6a09e667f3bcd459022e5304d10b0412p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 132
+    0x1.6a09e667f3bcdfa9516192a2b726086dp0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 133
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 135
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 136
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 137
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 138
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 139
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.0p3,
+    0x1.0p0
+  },
+  { // Entry 140
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep3,
+    0x1.0p3,
+    0x1.0p3
+  },
+  { // Entry 141
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.0p0,
+    0x1.0p9
+  },
+  { // Entry 142
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.0p0,
+    0x1.0p10
+  },
+  { // Entry 143
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.0p3,
+    0x1.0p9
+  },
+  { // Entry 144
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.0p3,
+    0x1.0p10
+  },
+  { // Entry 145
+    0x1.p100,
+    0x1.0p0,
+    0x1.0p100
+  },
+  { // Entry 146
+    0x1.p101,
+    0x1.0p0,
+    0x1.0p101
+  },
+  { // Entry 147
+    0x1.p100,
+    0x1.0p3,
+    0x1.0p100
+  },
+  { // Entry 148
+    0x1.p101,
+    0x1.0p3,
+    0x1.0p101
+  },
+  { // Entry 149
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.0p9,
+    0x1.0p0
+  },
+  { // Entry 150
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.0p9,
+    0x1.0p3
+  },
+  { // Entry 151
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.0p10,
+    0x1.0p0
+  },
+  { // Entry 152
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.0p10,
+    0x1.0p3
+  },
+  { // Entry 153
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep9,
+    0x1.0p9,
+    0x1.0p9
+  },
+  { // Entry 154
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.0p9,
+    0x1.0p10
+  },
+  { // Entry 155
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.0p10,
+    0x1.0p9
+  },
+  { // Entry 156
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 157
+    0x1.p100,
+    0x1.0p9,
+    0x1.0p100
+  },
+  { // Entry 158
+    0x1.p101,
+    0x1.0p9,
+    0x1.0p101
+  },
+  { // Entry 159
+    0x1.p100,
+    0x1.0p10,
+    0x1.0p100
+  },
+  { // Entry 160
+    0x1.p101,
+    0x1.0p10,
+    0x1.0p101
+  },
+  { // Entry 161
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p0
+  },
+  { // Entry 162
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p3
+  },
+  { // Entry 163
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p3
+  },
+  { // Entry 165
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p9
+  },
+  { // Entry 166
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p10
+  },
+  { // Entry 167
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p9
+  },
+  { // Entry 168
+    0x1.p101,
+    0x1.0p101,
+    0x1.0p10
+  },
+  { // Entry 169
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep100,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 170
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.0p100,
+    0x1.0p101
+  },
+  { // Entry 171
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.0p101,
+    0x1.0p100
+  },
+  { // Entry 172
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep101,
+    0x1.0p101,
+    0x1.0p101
+  },
+  { // Entry 173
+    0x1.ad5336963eefa83d75cf889be3a34d14p2,
+    0x1.7ffffffffffffp2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 174
+    0x1.ad5336963eefabd15a8840999ed93d89p2,
+    0x1.7ffffffffffffp2,
+    0x1.8p1
+  },
+  { // Entry 175
+    0x1.ad5336963eefaf653f40f8975a2db59ep2,
+    0x1.7ffffffffffffp2,
+    0x1.8000000000001p1
+  },
+  { // Entry 176
+    0x1.ad5336963eefb68d08b26892d04d4378p2,
+    0x1.8p2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 177
+    0x1.ad5336963eefba20ed6b20908b64ac4ep2,
+    0x1.8p2,
+    0x1.8p1
+  },
+  { // Entry 178
+    0x1.ad5336963eefbdb4d223d88e469a9cc3p2,
+    0x1.8p2,
+    0x1.8000000000001p1
+  },
+  { // Entry 179
+    0x1.ad5336963eefc4dc9b954889bd15c17dp2,
+    0x1.8000000000001p2,
+    0x1.7ffffffffffffp1
+  },
+  { // Entry 180
+    0x1.ad5336963eefc870804e0087780ea2b2p2,
+    0x1.8000000000001p2,
+    0x1.8p1
+  },
+  { // Entry 181
+    0x1.ad5336963eefcc046506b88533260b87p2,
+    0x1.8000000000001p2,
+    0x1.8000000000001p1
+  },
+  { // Entry 182
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 183
+    0x1.6a09e667f3bc9bc7762e14ef517466dep-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 184
+    0x1.6a09e667f3bca717c561548d37e9edb3p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 185
+    0x1.6a09e667f3bcb2681494942b1eb9f701p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 186
+    0x1.6a09e667f3bca717c561548d37e9edb3p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 187
+    0x1.6a09e667f3bcb2681494942b1e04f20ep-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 188
+    0x1.6a09e667f3bcbdb863c7d3c9047a78e3p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 189
+    0x1.6a09e667f3bcb2681494942b1eb9f701p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 190
+    0x1.6a09e667f3bcbdb863c7d3c9047a78e3p-1022,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 191
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 192
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 193
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p512,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511
+  },
+  { // Entry 194
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p512,
+    0x1.fffffffffffffp511,
+    0x1.fffffffffffffp511
+  },
+  { // Entry 195
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p501,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 196
+    0x1.6a09e667f3bcc3608b617397f77caac1p501,
+    0x1.fffffffffffffp500,
+    0x1.0p501
+  },
+  { // Entry 197
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p501,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p501
+  },
+  { // Entry 198
+    0x1.6a09e667f3bcc3608b617397f77caac1p501,
+    0x1.0p501,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 199
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep501,
+    0x1.0p501,
+    0x1.0p501
+  },
+  { // Entry 200
+    0x1.6a09e667f3bcd459022e5304d10b0412p501,
+    0x1.0p501,
+    0x1.0000000000001p501
+  },
+  { // Entry 201
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp500
+  },
+  { // Entry 202
+    0x1.6a09e667f3bcd459022e5304d10b0412p501,
+    0x1.0000000000001p501,
+    0x1.0p501
+  },
+  { // Entry 203
+    0x1.6a09e667f3bcdfa9516192a2b726086dp501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p501
+  },
+  { // Entry 204
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-501,
+    0x1.fffffffffffffp-502,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 205
+    0x1.6a09e667f3bcc3608b617397f77caac1p-501,
+    0x1.fffffffffffffp-502,
+    0x1.0p-501
+  },
+  { // Entry 206
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-501,
+    0x1.fffffffffffffp-502,
+    0x1.0000000000001p-501
+  },
+  { // Entry 207
+    0x1.6a09e667f3bcc3608b617397f77caac1p-501,
+    0x1.0p-501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 208
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-501,
+    0x1.0p-501,
+    0x1.0p-501
+  },
+  { // Entry 209
+    0x1.6a09e667f3bcd459022e5304d10b0412p-501,
+    0x1.0p-501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 210
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-501,
+    0x1.0000000000001p-501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 211
+    0x1.6a09e667f3bcd459022e5304d10b0412p-501,
+    0x1.0000000000001p-501,
+    0x1.0p-501
+  },
+  { // Entry 212
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-501,
+    0x1.0000000000001p-501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 213
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 214
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p-501
+  },
+  { // Entry 215
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p-501
+  },
+  { // Entry 216
+    0x1.p501,
+    0x1.0p501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 217
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p-501
+  },
+  { // Entry 218
+    0x1.p501,
+    0x1.0p501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 219
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp-502
+  },
+  { // Entry 220
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p-501
+  },
+  { // Entry 221
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p-501
+  },
+  { // Entry 222
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    -0x1.0p-1074
+  },
+  { // Entry 223
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    -0.0
+  },
+  { // Entry 224
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p-1074
+  },
+  { // Entry 225
+    0x1.p501,
+    0x1.0p501,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.p501,
+    0x1.0p501,
+    -0.0
+  },
+  { // Entry 227
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    -0.0
+  },
+  { // Entry 230
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    -0.0
+  },
+  { // Entry 233
+    0x1.fffffffffffff0p-502,
+    0x1.fffffffffffffp-502,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    0x1.p-501,
+    0x1.0p-501,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    0x1.p-501,
+    0x1.0p-501,
+    -0.0
+  },
+  { // Entry 236
+    0x1.p-501,
+    0x1.0p-501,
+    0x1.0p-1074
+  },
+  { // Entry 237
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    -0x1.0p-1074
+  },
+  { // Entry 238
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    -0.0
+  },
+  { // Entry 239
+    0x1.00000000000010p-501,
+    0x1.0000000000001p-501,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 241
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0p0
+  },
+  { // Entry 242
+    0x1.fffffffffffff0p500,
+    0x1.fffffffffffffp500,
+    0x1.0000000000001p0
+  },
+  { // Entry 243
+    0x1.p501,
+    0x1.0p501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 244
+    0x1.p501,
+    0x1.0p501,
+    0x1.0p0
+  },
+  { // Entry 245
+    0x1.p501,
+    0x1.0p501,
+    0x1.0000000000001p0
+  },
+  { // Entry 246
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 247
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0p0
+  },
+  { // Entry 248
+    0x1.00000000000010p501,
+    0x1.0000000000001p501,
+    0x1.0000000000001p0
+  },
+  { // Entry 249
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-502,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 250
+    0x1.p0,
+    0x1.fffffffffffffp-502,
+    0x1.0p0
+  },
+  { // Entry 251
+    0x1.00000000000010p0,
+    0x1.fffffffffffffp-502,
+    0x1.0000000000001p0
+  },
+  { // Entry 252
+    0x1.fffffffffffff0p-1,
+    0x1.0p-501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 253
+    0x1.p0,
+    0x1.0p-501,
+    0x1.0p0
+  },
+  { // Entry 254
+    0x1.00000000000010p0,
+    0x1.0p-501,
+    0x1.0000000000001p0
+  },
+  { // Entry 255
+    0x1.fffffffffffff0p-1,
+    0x1.0000000000001p-501,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 256
+    0x1.p0,
+    0x1.0000000000001p-501,
+    0x1.0p0
+  },
+  { // Entry 257
+    0x1.00000000000010p0,
+    0x1.0000000000001p-501,
+    0x1.0000000000001p0
+  },
+  { // Entry 258
+    0x1.fffffffffffff000000000000fffffffp49,
+    0x1.fffffffffffffp49,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 259
+    0x1.fffffffffffff0000000000010p49,
+    0x1.fffffffffffffp49,
+    0x1.0p0
+  },
+  { // Entry 260
+    0x1.fffffffffffff0000000000010p49,
+    0x1.fffffffffffffp49,
+    0x1.0000000000001p0
+  },
+  { // Entry 261
+    0x1.00000000000000000000000007ffffffp50,
+    0x1.0p50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 262
+    0x1.00000000000000000000000007ffffffp50,
+    0x1.0p50,
+    0x1.0p0
+  },
+  { // Entry 263
+    0x1.00000000000000000000000008p50,
+    0x1.0p50,
+    0x1.0000000000001p0
+  },
+  { // Entry 264
+    0x1.00000000000010000000000007ffffffp50,
+    0x1.0000000000001p50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 265
+    0x1.00000000000010000000000007ffffffp50,
+    0x1.0000000000001p50,
+    0x1.0p0
+  },
+  { // Entry 266
+    0x1.00000000000010000000000008p50,
+    0x1.0000000000001p50,
+    0x1.0000000000001p0
+  },
+  { // Entry 267
+    0x1.fffffffffffff0000000000003ffffffp50,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 268
+    0x1.fffffffffffff0000000000004p50,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 269
+    0x1.fffffffffffff0000000000004p50,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 270
+    0x1.00000000000000000000000001ffffffp51,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 271
+    0x1.00000000000000000000000001ffffffp51,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 272
+    0x1.00000000000000000000000002p51,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 273
+    0x1.00000000000010000000000001ffffffp51,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 274
+    0x1.00000000000010000000000001ffffffp51,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 275
+    0x1.00000000000010000000000002p51,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 276
+    0x1.fffffffffffff0000000000000ffffffp51,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 277
+    0x1.fffffffffffff0000000000001p51,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 278
+    0x1.fffffffffffff0000000000001p51,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 279
+    0x1.000000000000000000000000007fffffp52,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 280
+    0x1.000000000000000000000000007fffffp52,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 281
+    0x1.0000000000000000000000000080p52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 282
+    0x1.000000000000100000000000007fffffp52,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 283
+    0x1.000000000000100000000000007fffffp52,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 284
+    0x1.0000000000001000000000000080p52,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 285
+    0x1.fffffffffffff00000000000003fffffp52,
+    0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 286
+    0x1.fffffffffffff000000000000040p52,
+    0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 287
+    0x1.fffffffffffff000000000000040p52,
+    0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 288
+    0x1.000000000000000000000000001fffffp53,
+    0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 289
+    0x1.000000000000000000000000001fffffp53,
+    0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 290
+    0x1.0000000000000000000000000020p53,
+    0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 291
+    0x1.000000000000100000000000001fffffp53,
+    0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 292
+    0x1.000000000000100000000000001fffffp53,
+    0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 293
+    0x1.0000000000001000000000000020p53,
+    0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 294
+    0x1.fffffffffffff00000000000000fffffp53,
+    0x1.fffffffffffffp53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 295
+    0x1.fffffffffffff000000000000010p53,
+    0x1.fffffffffffffp53,
+    0x1.0p0
+  },
+  { // Entry 296
+    0x1.fffffffffffff000000000000010p53,
+    0x1.fffffffffffffp53,
+    0x1.0000000000001p0
+  },
+  { // Entry 297
+    0x1.0000000000000000000000000007ffffp54,
+    0x1.0p54,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 298
+    0x1.0000000000000000000000000007ffffp54,
+    0x1.0p54,
+    0x1.0p0
+  },
+  { // Entry 299
+    0x1.0000000000000000000000000008p54,
+    0x1.0p54,
+    0x1.0000000000001p0
+  },
+  { // Entry 300
+    0x1.0000000000001000000000000007ffffp54,
+    0x1.0000000000001p54,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 301
+    0x1.0000000000001000000000000007ffffp54,
+    0x1.0000000000001p54,
+    0x1.0p0
+  },
+  { // Entry 302
+    0x1.0000000000001000000000000008p54,
+    0x1.0000000000001p54,
+    0x1.0000000000001p0
+  },
+  { // Entry 303
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-500,
+    0x1.fffffffffffffp-501,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 304
+    0x1.6a09e667f3bcc3608b617397f77caac1p-500,
+    0x1.fffffffffffffp-501,
+    0x1.0p-500
+  },
+  { // Entry 305
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-500,
+    0x1.fffffffffffffp-501,
+    0x1.0000000000001p-500
+  },
+  { // Entry 306
+    0x1.6a09e667f3bcc3608b617397f77caac1p-500,
+    0x1.0p-500,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 307
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-500,
+    0x1.0p-500,
+    0x1.0p-500
+  },
+  { // Entry 308
+    0x1.6a09e667f3bcd459022e5304d10b0412p-500,
+    0x1.0p-500,
+    0x1.0000000000001p-500
+  },
+  { // Entry 309
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-500,
+    0x1.0000000000001p-500,
+    0x1.fffffffffffffp-501
+  },
+  { // Entry 310
+    0x1.6a09e667f3bcd459022e5304d10b0412p-500,
+    0x1.0000000000001p-500,
+    0x1.0p-500
+  },
+  { // Entry 311
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-500,
+    0x1.0000000000001p-500,
+    0x1.0000000000001p-500
+  },
+  { // Entry 312
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-60,
+    0x1.fffffffffffffp-61,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 313
+    0x1.6a09e667f3bcc3608b617397f77caac1p-60,
+    0x1.fffffffffffffp-61,
+    0x1.0p-60
+  },
+  { // Entry 314
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-60,
+    0x1.fffffffffffffp-61,
+    0x1.0000000000001p-60
+  },
+  { // Entry 315
+    0x1.6a09e667f3bcc3608b617397f77caac1p-60,
+    0x1.0p-60,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 316
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-60,
+    0x1.0p-60,
+    0x1.0p-60
+  },
+  { // Entry 317
+    0x1.6a09e667f3bcd459022e5304d10b0412p-60,
+    0x1.0p-60,
+    0x1.0000000000001p-60
+  },
+  { // Entry 318
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-60,
+    0x1.0000000000001p-60,
+    0x1.fffffffffffffp-61
+  },
+  { // Entry 319
+    0x1.6a09e667f3bcd459022e5304d10b0412p-60,
+    0x1.0000000000001p-60,
+    0x1.0p-60
+  },
+  { // Entry 320
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-60,
+    0x1.0000000000001p-60,
+    0x1.0000000000001p-60
+  },
+  { // Entry 321
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-10,
+    0x1.fffffffffffffp-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 322
+    0x1.6a09e667f3bcc3608b617397f77caac1p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0p-10
+  },
+  { // Entry 323
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-10,
+    0x1.fffffffffffffp-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 324
+    0x1.6a09e667f3bcc3608b617397f77caac1p-10,
+    0x1.0p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 325
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-10,
+    0x1.0p-10,
+    0x1.0p-10
+  },
+  { // Entry 326
+    0x1.6a09e667f3bcd459022e5304d10b0412p-10,
+    0x1.0p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 327
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-10,
+    0x1.0000000000001p-10,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 328
+    0x1.6a09e667f3bcd459022e5304d10b0412p-10,
+    0x1.0000000000001p-10,
+    0x1.0p-10
+  },
+  { // Entry 329
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-10,
+    0x1.0000000000001p-10,
+    0x1.0000000000001p-10
+  },
+  { // Entry 330
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-1,
+    0x1.fffffffffffffp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 331
+    0x1.6a09e667f3bcc3608b617397f77caac1p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0p-1
+  },
+  { // Entry 332
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-1,
+    0x1.fffffffffffffp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 333
+    0x1.6a09e667f3bcc3608b617397f77caac1p-1,
+    0x1.0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 334
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1,
+    0x1.0p-1
+  },
+  { // Entry 335
+    0x1.6a09e667f3bcd459022e5304d10b0412p-1,
+    0x1.0p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 336
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-1,
+    0x1.0000000000001p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 337
+    0x1.6a09e667f3bcd459022e5304d10b0412p-1,
+    0x1.0000000000001p-1,
+    0x1.0p-1
+  },
+  { // Entry 338
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-1,
+    0x1.0000000000001p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 339
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p1,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 340
+    0x1.6a09e667f3bcc3608b617397f77caac1p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 341
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 342
+    0x1.6a09e667f3bcc3608b617397f77caac1p1,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 343
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 344
+    0x1.6a09e667f3bcd459022e5304d10b0412p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 345
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 346
+    0x1.6a09e667f3bcd459022e5304d10b0412p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.6a09e667f3bcdfa9516192a2b726086dp1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 348
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p10,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 349
+    0x1.6a09e667f3bcc3608b617397f77caac1p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 350
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 351
+    0x1.6a09e667f3bcc3608b617397f77caac1p10,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 352
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 353
+    0x1.6a09e667f3bcd459022e5304d10b0412p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 354
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 355
+    0x1.6a09e667f3bcd459022e5304d10b0412p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 356
+    0x1.6a09e667f3bcdfa9516192a2b726086dp10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 357
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p60,
+    0x1.fffffffffffffp59,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 358
+    0x1.6a09e667f3bcc3608b617397f77caac1p60,
+    0x1.fffffffffffffp59,
+    0x1.0p60
+  },
+  { // Entry 359
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p60,
+    0x1.fffffffffffffp59,
+    0x1.0000000000001p60
+  },
+  { // Entry 360
+    0x1.6a09e667f3bcc3608b617397f77caac1p60,
+    0x1.0p60,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 361
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep60,
+    0x1.0p60,
+    0x1.0p60
+  },
+  { // Entry 362
+    0x1.6a09e667f3bcd459022e5304d10b0412p60,
+    0x1.0p60,
+    0x1.0000000000001p60
+  },
+  { // Entry 363
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p60,
+    0x1.0000000000001p60,
+    0x1.fffffffffffffp59
+  },
+  { // Entry 364
+    0x1.6a09e667f3bcd459022e5304d10b0412p60,
+    0x1.0000000000001p60,
+    0x1.0p60
+  },
+  { // Entry 365
+    0x1.6a09e667f3bcdfa9516192a2b726086dp60,
+    0x1.0000000000001p60,
+    0x1.0000000000001p60
+  },
+  { // Entry 366
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p500,
+    0x1.fffffffffffffp499,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 367
+    0x1.6a09e667f3bcc3608b617397f77caac1p500,
+    0x1.fffffffffffffp499,
+    0x1.0p500
+  },
+  { // Entry 368
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p500,
+    0x1.fffffffffffffp499,
+    0x1.0000000000001p500
+  },
+  { // Entry 369
+    0x1.6a09e667f3bcc3608b617397f77caac1p500,
+    0x1.0p500,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 370
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep500,
+    0x1.0p500,
+    0x1.0p500
+  },
+  { // Entry 371
+    0x1.6a09e667f3bcd459022e5304d10b0412p500,
+    0x1.0p500,
+    0x1.0000000000001p500
+  },
+  { // Entry 372
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p500,
+    0x1.0000000000001p500,
+    0x1.fffffffffffffp499
+  },
+  { // Entry 373
+    0x1.6a09e667f3bcd459022e5304d10b0412p500,
+    0x1.0000000000001p500,
+    0x1.0p500
+  },
+  { // Entry 374
+    0x1.6a09e667f3bcdfa9516192a2b726086dp500,
+    0x1.0000000000001p500,
+    0x1.0000000000001p500
+  },
+  { // Entry 375
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 376
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0p0
+  },
+  { // Entry 377
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1022,
+    0x1.0000000000001p0
+  },
+  { // Entry 378
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 379
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0p0
+  },
+  { // Entry 380
+    0x1.p1023,
+    0x1.0p1023,
+    0x1.0000000000001p0
+  },
+  { // Entry 381
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 382
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0p0
+  },
+  { // Entry 383
+    0x1.00000000000010p1023,
+    0x1.0000000000001p1023,
+    0x1.0000000000001p0
+  },
+  { // Entry 384
+    0x1.778d27690518c71d8d4d782889fc1c38p-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 385
+    0x1.778d27690518d2cbeb1e43a94a18dcbbp-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 386
+    0x1.778d27690518de7a48ef0f2a0a871bb3p-27,
+    0x1.00a436e9442ebp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 387
+    0x1.778d27690518d20ca53cbc1df3f2eff8p-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 388
+    0x1.778d27690518ddbb030d879eb3b8a069p-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 389
+    0x1.778d27690518e96960de531f73cfcf4fp-27,
+    0x1.00a436e9442ecp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 390
+    0x1.778d27690518dcfbbd2c00135e46c6d1p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12482p-27
+  },
+  { // Entry 391
+    0x1.778d27690518e8aa1afccb941db56731p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12483p-27
+  },
+  { // Entry 392
+    0x1.778d27690518f45878cd9714dd758605p-27,
+    0x1.00a436e9442edp-27,
+    0x1.122dc42e12484p-27
+  },
+  { // Entry 393
+    0x1.74334f2872bf31f2bd78c8d32ad384a6p0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 394
+    0x1.74334f2872bf26ceaa6e8d36067093ffp0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 395
+    0x1.74334f2872bf1baa97645198e2685868p0,
+    0x1.0b2502b3f7655p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 396
+    0x1.74334f2872bf3d6e9e764b9816ffdf5ep0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 397
+    0x1.74334f2872bf324a8b6c0ffaf2f4ee3dp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 398
+    0x1.74334f2872bf27267861d45dcf44b22bp0,
+    0x1.0b2502b3f7656p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 399
+    0x1.74334f2872bf48ea7f73ce5d038198c9p0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbep0
+  },
+  { // Entry 400
+    0x1.74334f2872bf3dc66c6992bfdfcea72ep0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbdp0
+  },
+  { // Entry 401
+    0x1.74334f2872bf32a2595f5722bc766aa2p0,
+    0x1.0b2502b3f7657p0,
+    -0x1.032a74c8e2bbcp0
+  },
+  { // Entry 402
+    0x1.b6d63492cf6c5f0d4a9e41a4ed8f8b94p7,
+    0x1.3845636425763p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 403
+    0x1.b6d63492cf6c6a4b20bba441a2ca5ba3p7,
+    0x1.3845636425763p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 404
+    0x1.b6d63492cf6c7588f6d906de5850ca51p7,
+    0x1.3845636425763p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 405
+    0x1.b6d63492cf6c6a6ff4ee83c89e71f86dp7,
+    0x1.3845636425764p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 406
+    0x1.b6d63492cf6c75adcb0be66553621e7ap7,
+    0x1.3845636425764p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 407
+    0x1.b6d63492cf6c80eba1294902089de325p7,
+    0x1.3845636425764p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 408
+    0x1.b6d63492cf6c75d29f3ec5ec4f9e1dc5p7,
+    0x1.3845636425765p7,
+    0x1.3453456452664p7
+  },
+  { // Entry 409
+    0x1.b6d63492cf6c8110755c2889044399cfp7,
+    0x1.3845636425765p7,
+    0x1.3453456452665p7
+  },
+  { // Entry 410
+    0x1.b6d63492cf6c8c4e4b798b25b934b477p7,
+    0x1.3845636425765p7,
+    0x1.3453456452666p7
+  },
+  { // Entry 411
+    0x1.b6d63492cf6c8c4e4b798b25b934b477p-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 412
+    0x1.b6d63492cf6c8110755c2889044399cfp-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 413
+    0x1.b6d63492cf6c75d29f3ec5ec4f9e1dc5p-6,
+    -0x1.3845636425765p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 414
+    0x1.b6d63492cf6c80eba1294902089de325p-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 415
+    0x1.b6d63492cf6c75adcb0be66553621e7ap-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 416
+    0x1.b6d63492cf6c6a6ff4ee83c89e71f86dp-6,
+    -0x1.3845636425764p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 417
+    0x1.b6d63492cf6c7588f6d906de5850ca51p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452666p-6
+  },
+  { // Entry 418
+    0x1.b6d63492cf6c6a4b20bba441a2ca5ba3p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452665p-6
+  },
+  { // Entry 419
+    0x1.b6d63492cf6c5f0d4a9e41a4ed8f8b94p-6,
+    -0x1.3845636425763p-6,
+    -0x1.3453456452664p-6
+  },
+  { // Entry 420
+    0x1.9a134186a4136915d6a2f7171812deefp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 421
+    0x1.9a134186a4135eb6f0c519097d75243dp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 422
+    0x1.9a134186a41354580ae73afbe33415cfp-16,
+    -0x1.3845636425765p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 423
+    0x1.9a134186a4135ce6bf291d40fc6e4392p-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 424
+    0x1.9a134186a4135287d94b3f336181a757p-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 425
+    0x1.9a134186a4134828f36d6125c6f1b75fp-16,
+    -0x1.3845636425764p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 426
+    0x1.9a134186a41350b7a7af436ae10ccc7ap-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c881p-16
+  },
+  { // Entry 427
+    0x1.9a134186a4134658c1d1655d45d14eb5p-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c880p-16
+  },
+  { // Entry 428
+    0x1.9a134186a4133bf9dbf3874faaf27d32p-16,
+    -0x1.3845636425763p-16,
+    -0x1.09cc3d7f1c87fp-16
+  },
+  { // Entry 429
+    0x1.6a09e667f3bcdfa9516192a2b726086dp-6,
+    -0x1.0000000000001p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 430
+    0x1.6a09e667f3bcd459022e5304d10b0412p-6,
+    -0x1.0000000000001p-6,
+    -0x1.0p-6
+  },
+  { // Entry 431
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-6,
+    -0x1.0000000000001p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 432
+    0x1.6a09e667f3bcd459022e5304d10b0412p-6,
+    -0x1.0p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 433
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-6,
+    -0x1.0p-6,
+    -0x1.0p-6
+  },
+  { // Entry 434
+    0x1.6a09e667f3bcc3608b617397f77caac1p-6,
+    -0x1.0p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 435
+    0x1.6a09e667f3bcceb0da94b335de1f72d2p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 436
+    0x1.6a09e667f3bcc3608b617397f77caac1p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.0p-6
+  },
+  { // Entry 437
+    0x1.6a09e667f3bcbdb863c7d3c9044d37a6p-6,
+    -0x1.fffffffffffffp-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 438
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 439
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 440
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 441
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 442
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 443
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 444
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 445
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 446
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 447
+    0x1.1e3779b97f4a732437cef466090d1897p-400,
+    0x1.fffffffffffffp-401,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 448
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p-400,
+    0x1.fffffffffffffp-401,
+    0x1.0p-401
+  },
+  { // Entry 449
+    0x1.1e3779b97f4a78820ee40862a1faa06cp-400,
+    0x1.fffffffffffffp-401,
+    0x1.0000000000001p-401
+  },
+  { // Entry 450
+    0x1.1e3779b97f4a7a4c014064617f602b4fp-400,
+    0x1.0p-400,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 451
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p-400,
+    0x1.0p-400,
+    0x1.0p-401
+  },
+  { // Entry 452
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p-400,
+    0x1.0p-400,
+    0x1.0000000000001p-401
+  },
+  { // Entry 453
+    0x1.1e3779b97f4a889b942344586c28a953p-400,
+    0x1.0000000000001p-400,
+    0x1.fffffffffffffp-402
+  },
+  { // Entry 454
+    0x1.1e3779b97f4a8a65867fa057499f6080p-400,
+    0x1.0000000000001p-400,
+    0x1.0p-401
+  },
+  { // Entry 455
+    0x1.1e3779b97f4a8df96b38585504af276dp-400,
+    0x1.0000000000001p-400,
+    0x1.0000000000001p-401
+  },
+  { // Entry 456
+    0x1.1e3779b97f4a732437cef466090d1897p-511,
+    0x1.fffffffffffffp-513,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 457
+    0x1.1e3779b97f4a7a4c014064617f602b4fp-511,
+    0x1.fffffffffffffp-513,
+    0x1.0p-511
+  },
+  { // Entry 458
+    0x1.1e3779b97f4a889b942344586c28a953p-511,
+    0x1.fffffffffffffp-513,
+    0x1.0000000000001p-511
+  },
+  { // Entry 459
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p-511,
+    0x1.0p-512,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 460
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p-511,
+    0x1.0p-512,
+    0x1.0p-511
+  },
+  { // Entry 461
+    0x1.1e3779b97f4a8a65867fa057499f6080p-511,
+    0x1.0p-512,
+    0x1.0000000000001p-511
+  },
+  { // Entry 462
+    0x1.1e3779b97f4a78820ee40862a1faa06cp-511,
+    0x1.0000000000001p-512,
+    0x1.fffffffffffffp-512
+  },
+  { // Entry 463
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p-511,
+    0x1.0000000000001p-512,
+    0x1.0p-511
+  },
+  { // Entry 464
+    0x1.1e3779b97f4a8df96b38585504af276dp-511,
+    0x1.0000000000001p-512,
+    0x1.0000000000001p-511
+  },
+  { // Entry 465
+    0x1.1e3779b97f4a732437cef466090d1897p1022,
+    0x1.fffffffffffffp1021,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 466
+    0x1.1e3779b97f4a74ee2a2b5064e6a62857p1022,
+    0x1.fffffffffffffp1021,
+    0x1.0p1021
+  },
+  { // Entry 467
+    0x1.1e3779b97f4a78820ee40862a1faa06cp1022,
+    0x1.fffffffffffffp1021,
+    0x1.0000000000001p1021
+  },
+  { // Entry 468
+    0x1.1e3779b97f4a7a4c014064617f602b4fp1022,
+    0x1.0p1022,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 469
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p1022,
+    0x1.0p1022,
+    0x1.0p1021
+  },
+  { // Entry 470
+    0x1.1e3779b97f4a7fa9d855785e182b5a91p1022,
+    0x1.0p1022,
+    0x1.0000000000001p1021
+  },
+  { // Entry 471
+    0x1.1e3779b97f4a889b942344586c28a953p1022,
+    0x1.0000000000001p1022,
+    0x1.fffffffffffffp1020
+  },
+  { // Entry 472
+    0x1.1e3779b97f4a8a65867fa057499f6080p1022,
+    0x1.0000000000001p1022,
+    0x1.0p1021
+  },
+  { // Entry 473
+    0x1.1e3779b97f4a8df96b38585504af276dp1022,
+    0x1.0000000000001p1022,
+    0x1.0000000000001p1021
+  },
+  { // Entry 474
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 475
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 476
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 477
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 478
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 479
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 480
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 481
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 482
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 483
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 484
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 485
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 486
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 487
+    HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 488
+    HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 489
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 490
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 491
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 492
+    HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 493
+    HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 494
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 495
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 496
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 497
+    HUGE_VAL,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 498
+    HUGE_VAL,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 499
+    HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 500
+    HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 501
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 502
+    HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 503
+    HUGE_VAL,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 504
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 505
+    HUGE_VAL,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 506
+    HUGE_VAL,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 507
+    HUGE_VAL,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 508
+    HUGE_VAL,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 509
+    HUGE_VAL,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 510
+    HUGE_VAL,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 511
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1023,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 513
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 514
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 515
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 516
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 517
+    0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 518
+    0x1.p-1022,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 519
+    0x1.fffffffffffff0p1023,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 520
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 521
+    0x1.p-1022,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 522
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 523
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 524
+    0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 525
+    0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 526
+    0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 527
+    0x1.fffffffffffff0p1023,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 528
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 529
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 530
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 531
+    0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 532
+    0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 533
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 534
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 535
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 536
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 537
+    0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 538
+    0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 539
+    0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 540
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 541
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 542
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 543
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 544
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 545
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 546
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 547
+    0x1.000000000000000000000000007fffffp-1022,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 548
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 549
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1074,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 550
+    0x1.40p2,
+    0x1.8p1,
+    0x1.0p2
+  },
+  { // Entry 551
+    0x1.40p2,
+    0x1.8p1,
+    -0x1.0p2
+  },
+  { // Entry 552
+    0x1.a0p3,
+    0x1.4p2,
+    0x1.8p3
+  },
+  { // Entry 553
+    0x1.a0p3,
+    0x1.4p2,
+    -0x1.8p3
+  }
+};
diff --git a/tests/math_data/hypotf_intel_data.h b/tests/math_data/hypotf_intel_data.h
new file mode 100644
index 0000000..fd4334b
--- /dev/null
+++ b/tests/math_data/hypotf_intel_data.h
@@ -0,0 +1,2373 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_hypotf_intel_data[] = {
+  { // Entry 0
+    0x1.804fa3000c7ebdf47434f397ec84c7a0p3,
+    -0x1.3372aep3,
+    0x1.cd2cfap2
+  },
+  { // Entry 1
+    0x1.75d046fff6326da34cade3039156d2ecp3,
+    -0x1.3372b0p3,
+    -0x1.a94388p2
+  },
+  { // Entry 2
+    0x1.9a134b0022862e28be8459544c0a0179p-16,
+    -0x1.38456cp-16,
+    -0x1.09cc42p-16
+  },
+  { // Entry 3
+    0x1.55555e0000000000000000125fff8890p-101,
+    -0x1.55555ep-101,
+    0x1.c0p-147
+  },
+  { // Entry 4
+    0x1.f6c65800001e1be1724156e80ea39f54p-41,
+    -0x1.5cp-62,
+    -0x1.f6c658p-41
+  },
+  { // Entry 5
+    0x1.75298b006e4054fd81616e2f820cb18ap4,
+    -0x1.6b91b0p4,
+    -0x1.5046aep2
+  },
+  { // Entry 6
+    0x1.7ffffc0055555a38da2bfed0dc82cd7ap0,
+    -0x1.7ffffcp0,
+    0x1.000006p-16
+  },
+  { // Entry 7
+    0x1.f13b56fc46bed2325ccd2c7cd5e69632p21,
+    -0x1.f12bp21,
+    0x1.fddffep15
+  },
+  { // Entry 8
+    0x1.555570p-2,
+    0x1.p-149,
+    0x1.555570p-2
+  },
+  { // Entry 9
+    0x1.55553ap100,
+    0x1.p0,
+    0x1.55553ap100
+  },
+  { // Entry 10
+    0x1.6a09eaa611765e10631270d5de08ee6ep100,
+    0x1.000006p100,
+    0x1.p100
+  },
+  { // Entry 11
+    0x1.6a099efd14740b74de47d3287c3ef106p-19,
+    0x1.000024p-19,
+    0x1.fffeeep-20
+  },
+  { // Entry 12
+    0x1.6a15e5005f98a0819477ee86c40c70a6p0,
+    0x1.0142b2p0,
+    -0x1.fd9982p-1
+  },
+  { // Entry 13
+    0x1.7c02c30005404c762e561df458868db8p6,
+    0x1.077f4cp6,
+    0x1.11d1ecp6
+  },
+  { // Entry 14
+    0x1.eb772efc48db2565eb91a892b9109e1ap2,
+    0x1.198cc0p0,
+    -0x1.e66626p2
+  },
+  { // Entry 15
+    0x1.fdecbd00002c3d202ee051ddfe076387p9,
+    0x1.1bd856p1,
+    0x1.fdec6ep9
+  },
+  { // Entry 16
+    0x1.800000001affffffff0d0000001115ffp-23,
+    0x1.20p-40,
+    0x1.80p-23
+  },
+  { // Entry 17
+    0x1.2004d7000c9e59b6c319a40f068137f1p6,
+    0x1.20p6,
+    0x1.a66670p-1
+  },
+  { // Entry 18
+    0x1.38031300000fffd7a4800dc6d8c127c4p1,
+    0x1.3160acp1,
+    -0x1.p-1
+  },
+  { // Entry 19
+    0x1.814cee00298d8fda8ba443fa2826cc78p9,
+    0x1.41f070p2,
+    0x1.814ad4p9
+  },
+  { // Entry 20
+    0x1.ba86e8ff3abb57bc63ed628576cbf719p100,
+    0x1.60p100,
+    0x1.0c30c4p100
+  },
+  { // Entry 21
+    0x1.276275p-10,
+    0x1.627626p-11,
+    0x1.d89d88p-11
+  },
+  { // Entry 22
+    0x1.30e418fc6e8f1e1342c13fc83cd67621p3,
+    0x1.74acc6p-1,
+    -0x1.30p3
+  },
+  { // Entry 23
+    0x1.fe01f0fc1044c738957a70f05fc15f48p3,
+    0x1.758fc2p-2,
+    0x1.fddfbcp3
+  },
+  { // Entry 24
+    0x1.000009p0,
+    0x1.80p-10,
+    0x1.ffffeep-1
+  },
+  { // Entry 25
+    0x1.4000030000066666570a3d851eb86f69p3,
+    0x1.80000ap2,
+    0x1.p3
+  },
+  { // Entry 26
+    0x1.8bb3cb0000954ddd1ba4ba3d1be7bcb3p0,
+    0x1.88603ep0,
+    -0x1.99999ap-3
+  },
+  { // Entry 27
+    0x1.068c070000048279abdd7e2cb99727aep1,
+    0x1.8bab4ap-1,
+    -0x1.e66674p0
+  },
+  { // Entry 28
+    0x1.8f827b00115def47c454b3599143d2eap10,
+    0x1.8f827ap10,
+    0x1.c454b0p-2
+  },
+  { // Entry 29
+    0x1.a6645cfc2ab00e5f4a76893e77c93e80p0,
+    0x1.9287e2p0,
+    -0x1.p-1
+  },
+  { // Entry 30
+    0x1.1bcf0effffc79fbfe4638ed7c7f20ad3p1,
+    0x1.938d28p-1,
+    0x1.094590p1
+  },
+  { // Entry 31
+    0x1.10d8ce00004de00b92c66641b1a95fc7p0,
+    0x1.9e874ap-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 32
+    0x1.fc516efc69a62ca47aa82a4c310ba6c3p-2,
+    0x1.af1948p-6,
+    -0x1.fb9a80p-2
+  },
+  { // Entry 33
+    0x1.e9e6a4fc2ddde87638b4684564e14ce6p-3,
+    0x1.b81272p-5,
+    -0x1.dd633ep-3
+  },
+  { // Entry 34
+    0x1.7396f60007c18075d8efd4c838b91544p-1,
+    0x1.b89068p-3,
+    0x1.62e42ep-1
+  },
+  { // Entry 35
+    0x1.c2c3acfcf40d75a5ea60e9c114443950p1,
+    0x1.c1a088p1,
+    -0x1.p-2
+  },
+  { // Entry 36
+    0x1.a43e960006dba02d6beb1d2c1eeaeceap-1,
+    0x1.c2250cp-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 37
+    0x1.1efb1b00082040053780041dc6b1f307p0,
+    0x1.c317a0p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 38
+    0x1.58e36d0000017c0ab31fb608eac90731p3,
+    0x1.ce38bap2,
+    0x1.ffffccp2
+  },
+  { // Entry 39
+    0x1.fcef76fc92680470b1a17bd9b4b35c4ap-1,
+    0x1.d1e90ap-1,
+    -0x1.999958p-2
+  },
+  { // Entry 40
+    0x1.ed06b0fc3e0586fd61429f9f743c6d47p0,
+    0x1.dc1edcp0,
+    -0x1.p-1
+  },
+  { // Entry 41
+    0x1.af9c310000012fae75588f7c15db9873p-1,
+    0x1.eb4822p-2,
+    0x1.62e42ep-1
+  },
+  { // Entry 42
+    0x1.fffc00fc05b6516a140feda87b19a0a1p2,
+    0x1.fbffbep-10,
+    0x1.fffcp2
+  },
+  { // Entry 43
+    0x1.ff7cc2fc27e17feee79397d1019b42f2p1,
+    0x1.fbfffep-3,
+    0x1.fe8040p1
+  },
+  { // Entry 44
+    0x1.fe01f0fc1044c738957a70f05fc15f48p3,
+    0x1.fddfbcp3,
+    0x1.758fc2p-2
+  },
+  { // Entry 45
+    0x1.f13b56fc46bed2325ccd2c7cd5e69632p21,
+    0x1.fddffep15,
+    -0x1.f12bp21
+  },
+  { // Entry 46
+    0x1.c48a1cfcd1996ebda81b01af08af23dfp0,
+    0x1.ff7ffep-3,
+    0x1.c0p0
+  },
+  { // Entry 47
+    0x1.ff87fb000001c07920c4dcf4f126de76p7,
+    0x1.ff8ffep1,
+    0x1.ff77fep7
+  },
+  { // Entry 48
+    0x1.ffffffff8007fffff001ffeffc00bff3p-127,
+    0x1.ffe0p-138,
+    0x1.fffffcp-127
+  },
+  { // Entry 49
+    0x1.01fbfb00000001fc0fda76cb886d48a6p2,
+    0x1.fffbfep1,
+    0x1.fff9fep-2
+  },
+  { // Entry 50
+    0x1.1e376efdd5824c75e9a0b3b7ea4e60bcp21,
+    0x1.ffffc0p20,
+    0x1.000050p20
+  },
+  { // Entry 51
+    0x1.1e376efdd469e54558718854476503e6p-19,
+    0x1.ffffc6p-20,
+    0x1.000044p-20
+  },
+  { // Entry 52
+    0x1.fffff0ffffffc0000e200069ec031c2ep6,
+    0x1.fffff8p-6,
+    0x1.fffff0p6
+  },
+  { // Entry 53
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p0,
+    0x1.fffffcp-1,
+    0x1.p0
+  },
+  { // Entry 54
+    0x1.fffff8ffffffc0000320000aec00269ep-2,
+    0x1.fffffcp-14,
+    0x1.fffff8p-2
+  },
+  { // Entry 55
+    0x1.800000000000001555550000005554bdp-24,
+    0x1.fffffcp-54,
+    -0x1.80p-24
+  },
+  { // Entry 56
+    0x1.fffffcfffffdc000009fffffac000035p10,
+    0x1.fffffcp10,
+    0x1.fffffcp-2
+  },
+  { // Entry 57
+    0x1.fffffd000001c00002a000032c000275p12,
+    0x1.fffffcp12,
+    -0x1.p1
+  },
+  { // Entry 58
+    0x1.fffffcffffffc00000a00000ec000176p12,
+    0x1.fffffcp12,
+    0x1.fffffep0
+  },
+  { // Entry 59
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 60
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 61
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 62
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 63
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 64
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 65
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 66
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 67
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 68
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 69
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 70
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 71
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 73
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 74
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 75
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 76
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 77
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 78
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 79
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 80
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 81
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 82
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 83
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 84
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 85
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 86
+    0x1.6a09e4fde9d66114f6320ab3ef821653p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 87
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 89
+    0x1.6a09e5b2eec9c250117a2e237528575cp0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 91
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 92
+    0x1.6a09e71cf8b1944db3c8e462b0886601p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 93
+    0x1.6a09e7d1fda3e601624311059df7157bp0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 94
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 95
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 96
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 97
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 98
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 99
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 100
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 101
+    0x1.01fe03f61bad04b1068572febc925ad1p3,
+    0x1.p3,
+    0x1.p0
+  },
+  { // Entry 102
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep3,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 103
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.p0,
+    0x1.p9
+  },
+  { // Entry 104
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.p0,
+    0x1.p10
+  },
+  { // Entry 105
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.p3,
+    0x1.p9
+  },
+  { // Entry 106
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.p3,
+    0x1.p10
+  },
+  { // Entry 107
+    0x1.p100,
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 108
+    0x1.p101,
+    0x1.p0,
+    0x1.p101
+  },
+  { // Entry 109
+    0x1.p100,
+    0x1.p3,
+    0x1.p100
+  },
+  { // Entry 110
+    0x1.p101,
+    0x1.p3,
+    0x1.p101
+  },
+  { // Entry 111
+    0x1.00001ffffe00003ffff60001bfffacp9,
+    0x1.p9,
+    0x1.p0
+  },
+  { // Entry 112
+    0x1.0007ffe000fff6006ffac041fca62cadp9,
+    0x1.p9,
+    0x1.p3
+  },
+  { // Entry 113
+    0x1.000007ffffe00000fffff600006ffffap10,
+    0x1.p10,
+    0x1.p0
+  },
+  { // Entry 114
+    0x1.0001fffe0003fff6001bffac0107fca6p10,
+    0x1.p10,
+    0x1.p3
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep9,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 116
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.p9,
+    0x1.p10
+  },
+  { // Entry 117
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p10,
+    0x1.p10,
+    0x1.p9
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.p9,
+    0x1.p100
+  },
+  { // Entry 120
+    0x1.p101,
+    0x1.p9,
+    0x1.p101
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.p10,
+    0x1.p100
+  },
+  { // Entry 122
+    0x1.p101,
+    0x1.p10,
+    0x1.p101
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.p100,
+    0x1.p0
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.p100,
+    0x1.p3
+  },
+  { // Entry 125
+    0x1.p101,
+    0x1.p101,
+    0x1.p0
+  },
+  { // Entry 126
+    0x1.p101,
+    0x1.p101,
+    0x1.p3
+  },
+  { // Entry 127
+    0x1.p100,
+    0x1.p100,
+    0x1.p9
+  },
+  { // Entry 128
+    0x1.p100,
+    0x1.p100,
+    0x1.p10
+  },
+  { // Entry 129
+    0x1.p101,
+    0x1.p101,
+    0x1.p9
+  },
+  { // Entry 130
+    0x1.p101,
+    0x1.p101,
+    0x1.p10
+  },
+  { // Entry 131
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep100,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 132
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.p100,
+    0x1.p101
+  },
+  { // Entry 133
+    0x1.1e3779b97f4a7c15f39cc0605cedc834p101,
+    0x1.p101,
+    0x1.p100
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep101,
+    0x1.p101,
+    0x1.p101
+  },
+  { // Entry 135
+    0x1.ad533459cffc47225872f4a951e3eb94p2,
+    0x1.7ffffep2,
+    0x1.7ffffep1
+  },
+  { // Entry 136
+    0x1.ad5334cc4c939b314f9ca7280b7b2232p2,
+    0x1.7ffffep2,
+    0x1.80p1
+  },
+  { // Entry 137
+    0x1.ad53353ec92b695ec60ef2256f96f6bcp2,
+    0x1.7ffffep2,
+    0x1.800002p1
+  },
+  { // Entry 138
+    0x1.ad533623c258e030759a4ee61d10fcc3p2,
+    0x1.80p2,
+    0x1.7ffffep1
+  },
+  { // Entry 139
+    0x1.ad5336963eefba20ed6b20908b64ac4ep2,
+    0x1.80p2,
+    0x1.80p1
+  },
+  { // Entry 140
+    0x1.ad533708bb870e2fe4436964fee071dep2,
+    0x1.80p2,
+    0x1.800002p1
+  },
+  { // Entry 141
+    0x1.ad5337edb4b5f35d10e52ba46980f177p2,
+    0x1.800002p2,
+    0x1.7ffffep1
+  },
+  { // Entry 142
+    0x1.ad533860314c532f0a41112392b8f610p2,
+    0x1.800002p2,
+    0x1.80p1
+  },
+  { // Entry 143
+    0x1.ad5338d2ade32d1f82634c77c4e56d07p2,
+    0x1.800002p2,
+    0x1.800002p1
+  },
+  { // Entry 144
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 145
+    0x1.6a09e0bfcc232939bfd6f09afe47e193p-126,
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 146
+    0x1.6a09e229d60a463271f3020c29b89eb0p-126,
+    0x1.fffff8p-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 147
+    0x1.6a09e393dff2cd350be1111ca28a749bp-126,
+    0x1.fffff8p-127,
+    0x1.p-126
+  },
+  { // Entry 148
+    0x1.6a09e229d60a463271f3020c29b89eb0p-126,
+    0x1.fffffcp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 149
+    0x1.6a09e393dfeff92139690200f46eaf69p-126,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 150
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 151
+    0x1.6a09e393dff2cd350be1111ca28a749bp-126,
+    0x1.p-126,
+    0x1.fffff8p-127
+  },
+  { // Entry 152
+    0x1.6a09e4fde9d71619ea1b09860fc404c9p-126,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 153
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 154
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 155
+    0x1.6a09e4fde9d66114f6320ab3ef821653p64,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 156
+    0x1.6a09e4fde9d66114f6320ab3ef821653p64,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 157
+    0x1.6a09e4fde9d66114f6320ab3ef821653p53,
+    0x1.fffffep52,
+    0x1.fffffep52
+  },
+  { // Entry 158
+    0x1.6a09e5b2eec9c250117a2e237528575cp53,
+    0x1.fffffep52,
+    0x1.p53
+  },
+  { // Entry 159
+    0x1.6a09e71cf8b1944db3c8e462b0886601p53,
+    0x1.fffffep52,
+    0x1.000002p53
+  },
+  { // Entry 160
+    0x1.6a09e5b2eec9c250117a2e237528575cp53,
+    0x1.p53,
+    0x1.fffffep52
+  },
+  { // Entry 161
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep53,
+    0x1.p53,
+    0x1.p53
+  },
+  { // Entry 162
+    0x1.6a09e7d1fda3e601624311059df7157bp53,
+    0x1.p53,
+    0x1.000002p53
+  },
+  { // Entry 163
+    0x1.6a09e71cf8b1944db3c8e462b0886601p53,
+    0x1.000002p53,
+    0x1.fffffep52
+  },
+  { // Entry 164
+    0x1.6a09e7d1fda3e601624311059df7157bp53,
+    0x1.000002p53,
+    0x1.p53
+  },
+  { // Entry 165
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p53,
+    0x1.000002p53,
+    0x1.000002p53
+  },
+  { // Entry 166
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-53,
+    0x1.fffffep-54,
+    0x1.fffffep-54
+  },
+  { // Entry 167
+    0x1.6a09e5b2eec9c250117a2e237528575cp-53,
+    0x1.fffffep-54,
+    0x1.p-53
+  },
+  { // Entry 168
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-53,
+    0x1.fffffep-54,
+    0x1.000002p-53
+  },
+  { // Entry 169
+    0x1.6a09e5b2eec9c250117a2e237528575cp-53,
+    0x1.p-53,
+    0x1.fffffep-54
+  },
+  { // Entry 170
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-53,
+    0x1.p-53,
+    0x1.p-53
+  },
+  { // Entry 171
+    0x1.6a09e7d1fda3e601624311059df7157bp-53,
+    0x1.p-53,
+    0x1.000002p-53
+  },
+  { // Entry 172
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-53,
+    0x1.000002p-53,
+    0x1.fffffep-54
+  },
+  { // Entry 173
+    0x1.6a09e7d1fda3e601624311059df7157bp-53,
+    0x1.000002p-53,
+    0x1.p-53
+  },
+  { // Entry 174
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-53,
+    0x1.000002p-53,
+    0x1.000002p-53
+  },
+  { // Entry 175
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.fffffep-54
+  },
+  { // Entry 176
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.p-53
+  },
+  { // Entry 177
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.000002p-53
+  },
+  { // Entry 178
+    0x1.p53,
+    0x1.p53,
+    0x1.fffffep-54
+  },
+  { // Entry 179
+    0x1.p53,
+    0x1.p53,
+    0x1.p-53
+  },
+  { // Entry 180
+    0x1.p53,
+    0x1.p53,
+    0x1.000002p-53
+  },
+  { // Entry 181
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.fffffep-54
+  },
+  { // Entry 182
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.p-53
+  },
+  { // Entry 183
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.000002p-53
+  },
+  { // Entry 184
+    0x1.fffffep52,
+    0x1.fffffep52,
+    -0x1.p-149
+  },
+  { // Entry 185
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0.0
+  },
+  { // Entry 186
+    0x1.fffffep52,
+    0x1.fffffep52,
+    0x1.p-149
+  },
+  { // Entry 187
+    0x1.p53,
+    0x1.p53,
+    -0x1.p-149
+  },
+  { // Entry 188
+    0x1.p53,
+    0x1.p53,
+    0.0
+  },
+  { // Entry 189
+    0x1.p53,
+    0x1.p53,
+    0x1.p-149
+  },
+  { // Entry 190
+    0x1.000002p53,
+    0x1.000002p53,
+    -0x1.p-149
+  },
+  { // Entry 191
+    0x1.000002p53,
+    0x1.000002p53,
+    0.0
+  },
+  { // Entry 192
+    0x1.000002p53,
+    0x1.000002p53,
+    0x1.p-149
+  },
+  { // Entry 193
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    -0x1.p-149
+  },
+  { // Entry 194
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    0.0
+  },
+  { // Entry 195
+    0x1.fffffep-54,
+    0x1.fffffep-54,
+    0x1.p-149
+  },
+  { // Entry 196
+    0x1.p-53,
+    0x1.p-53,
+    -0x1.p-149
+  },
+  { // Entry 197
+    0x1.p-53,
+    0x1.p-53,
+    0.0
+  },
+  { // Entry 198
+    0x1.p-53,
+    0x1.p-53,
+    0x1.p-149
+  },
+  { // Entry 199
+    0x1.000002p-53,
+    0x1.000002p-53,
+    -0x1.p-149
+  },
+  { // Entry 200
+    0x1.000002p-53,
+    0x1.000002p-53,
+    0.0
+  },
+  { // Entry 201
+    0x1.000002p-53,
+    0x1.000002p-53,
+    0x1.p-149
+  },
+  { // Entry 202
+    0x1.fffffe000000000000000000003fffffp52,
+    0x1.fffffep52,
+    0x1.fffffep-1
+  },
+  { // Entry 203
+    0x1.fffffe0000000000000000000040p52,
+    0x1.fffffep52,
+    0x1.p0
+  },
+  { // Entry 204
+    0x1.fffffe00000000000000000000400001p52,
+    0x1.fffffep52,
+    0x1.000002p0
+  },
+  { // Entry 205
+    0x1.000000000000000000000000001fffffp53,
+    0x1.p53,
+    0x1.fffffep-1
+  },
+  { // Entry 206
+    0x1.000000000000000000000000001fffffp53,
+    0x1.p53,
+    0x1.p0
+  },
+  { // Entry 207
+    0x1.0000000000000000000000000020p53,
+    0x1.p53,
+    0x1.000002p0
+  },
+  { // Entry 208
+    0x1.000002000000000000000000001fffffp53,
+    0x1.000002p53,
+    0x1.fffffep-1
+  },
+  { // Entry 209
+    0x1.000002000000000000000000001fffffp53,
+    0x1.000002p53,
+    0x1.p0
+  },
+  { // Entry 210
+    0x1.0000020000000000000000000020p53,
+    0x1.000002p53,
+    0x1.000002p0
+  },
+  { // Entry 211
+    0x1.fffffe000000000000000000003fffffp-1,
+    0x1.fffffep-54,
+    0x1.fffffep-1
+  },
+  { // Entry 212
+    0x1.000000000000000000000000001fffffp0,
+    0x1.fffffep-54,
+    0x1.p0
+  },
+  { // Entry 213
+    0x1.000002000000000000000000001fffffp0,
+    0x1.fffffep-54,
+    0x1.000002p0
+  },
+  { // Entry 214
+    0x1.fffffe0000000000000000000040p-1,
+    0x1.p-53,
+    0x1.fffffep-1
+  },
+  { // Entry 215
+    0x1.000000000000000000000000001fffffp0,
+    0x1.p-53,
+    0x1.p0
+  },
+  { // Entry 216
+    0x1.000002000000000000000000001fffffp0,
+    0x1.p-53,
+    0x1.000002p0
+  },
+  { // Entry 217
+    0x1.fffffe00000000000000000000400001p-1,
+    0x1.000002p-53,
+    0x1.fffffep-1
+  },
+  { // Entry 218
+    0x1.0000000000000000000000000020p0,
+    0x1.000002p-53,
+    0x1.p0
+  },
+  { // Entry 219
+    0x1.0000020000000000000000000020p0,
+    0x1.000002p-53,
+    0x1.000002p0
+  },
+  { // Entry 220
+    0x1.fffffe00003fffffbffffc000004p20,
+    0x1.fffffep20,
+    0x1.fffffep-1
+  },
+  { // Entry 221
+    0x1.fffffe00004000003ffffc3ffff440p20,
+    0x1.fffffep20,
+    0x1.p0
+  },
+  { // Entry 222
+    0x1.fffffe00004000013ffffe3fffd63fffp20,
+    0x1.fffffep20,
+    0x1.000002p0
+  },
+  { // Entry 223
+    0x1.00000000001fffffbffffe200008p21,
+    0x1.p21,
+    0x1.fffffep-1
+  },
+  { // Entry 224
+    0x1.00000000001ffffffffffep21,
+    0x1.p21,
+    0x1.p0
+  },
+  { // Entry 225
+    0x1.00000000002000007ffffe7ffff0p21,
+    0x1.p21,
+    0x1.000002p0
+  },
+  { // Entry 226
+    0x1.00000200001fffff7fffff200011bfffp21,
+    0x1.000002p21,
+    0x1.fffffep-1
+  },
+  { // Entry 227
+    0x1.00000200001fffffbffffe80000bp21,
+    0x1.000002p21,
+    0x1.p0
+  },
+  { // Entry 228
+    0x1.00000200002000003ffffdfffffcp21,
+    0x1.000002p21,
+    0x1.000002p0
+  },
+  { // Entry 229
+    0x1.fffffe00000fffffefffffc0000040p21,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 230
+    0x1.fffffe00001000000fffffcfffff50p21,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 231
+    0x1.fffffe00001000005000004ffffdcfffp21,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 232
+    0x1.000000000007ffffefffffe8000080p22,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 233
+    0x1.000000000007ffffffffffe0p22,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 234
+    0x1.00000000000800001ffffffffffeffffp22,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 235
+    0x1.000002000007ffffe00000280000afffp22,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 236
+    0x1.000002000007fffff000000000007fffp22,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 237
+    0x1.00000200000800000fffffdfffffc0p22,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 238
+    0x1.fffffe000003fffffbfffffc000004p22,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 239
+    0x1.fffffe000004000003fffffffffff7ffp22,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 240
+    0x1.fffffe00000400001400001ffffff7ffp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 241
+    0x1.000000000001fffffc000000000007ffp23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 242
+    0x1.000000000001fffffffffffep23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 243
+    0x1.000000000002000008000005ffffefffp23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 244
+    0x1.000002000001fffff800000fffffefffp23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 245
+    0x1.000002000001fffffc000005fffffbffp23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 246
+    0x1.000002000002000003fffffdfffffcp23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 247
+    0x1.fffffe000000fffffeffffffc0000040p23,
+    0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 248
+    0x1.fffffe000001000001000000c000003fp23,
+    0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 249
+    0x1.fffffe000001000005000008c000063fp23,
+    0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 250
+    0x1.0000000000007fffff0000006000007fp24,
+    0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 251
+    0x1.0000000000007fffffffffffe0p24,
+    0x1.p24,
+    0x1.p0
+  },
+  { // Entry 252
+    0x1.000000000000800002000001dffffeffp24,
+    0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 253
+    0x1.0000020000007ffffe0000045ffff840p24,
+    0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 254
+    0x1.0000020000007fffff000001dffffcc0p24,
+    0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 255
+    0x1.000002000000800000ffffffdfffffc0p24,
+    0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 256
+    0x1.fffffe0000003fffffbffffffc000004p24,
+    0x1.fffffep24,
+    0x1.fffffep-1
+  },
+  { // Entry 257
+    0x1.fffffe0000004000004000003c000034p24,
+    0x1.fffffep24,
+    0x1.p0
+  },
+  { // Entry 258
+    0x1.fffffe0000004000014000023c000214p24,
+    0x1.fffffep24,
+    0x1.000002p0
+  },
+  { // Entry 259
+    0x1.0000000000001fffffc000001e000007p25,
+    0x1.p25,
+    0x1.fffffep-1
+  },
+  { // Entry 260
+    0x1.0000000000001ffffffffffffep25,
+    0x1.p25,
+    0x1.p0
+  },
+  { // Entry 261
+    0x1.0000000000002000008000007dffffefp25,
+    0x1.p25,
+    0x1.000002p0
+  },
+  { // Entry 262
+    0x1.0000020000001fffff8000011dfffdd4p25,
+    0x1.000002p25,
+    0x1.fffffep-1
+  },
+  { // Entry 263
+    0x1.0000020000001fffffc000007dffff0cp25,
+    0x1.000002p25,
+    0x1.p0
+  },
+  { // Entry 264
+    0x1.0000020000002000003ffffffdfffffcp25,
+    0x1.000002p25,
+    0x1.000002p0
+  },
+  { // Entry 265
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-60,
+    0x1.fffffep-61,
+    0x1.fffffep-61
+  },
+  { // Entry 266
+    0x1.6a09e5b2eec9c250117a2e237528575cp-60,
+    0x1.fffffep-61,
+    0x1.p-60
+  },
+  { // Entry 267
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-60,
+    0x1.fffffep-61,
+    0x1.000002p-60
+  },
+  { // Entry 268
+    0x1.6a09e5b2eec9c250117a2e237528575cp-60,
+    0x1.p-60,
+    0x1.fffffep-61
+  },
+  { // Entry 269
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-60,
+    0x1.p-60,
+    0x1.p-60
+  },
+  { // Entry 270
+    0x1.6a09e7d1fda3e601624311059df7157bp-60,
+    0x1.p-60,
+    0x1.000002p-60
+  },
+  { // Entry 271
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-60,
+    0x1.000002p-60,
+    0x1.fffffep-61
+  },
+  { // Entry 272
+    0x1.6a09e7d1fda3e601624311059df7157bp-60,
+    0x1.000002p-60,
+    0x1.p-60
+  },
+  { // Entry 273
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-60,
+    0x1.000002p-60,
+    0x1.000002p-60
+  },
+  { // Entry 274
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-10,
+    0x1.fffffep-11,
+    0x1.fffffep-11
+  },
+  { // Entry 275
+    0x1.6a09e5b2eec9c250117a2e237528575cp-10,
+    0x1.fffffep-11,
+    0x1.p-10
+  },
+  { // Entry 276
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-10,
+    0x1.fffffep-11,
+    0x1.000002p-10
+  },
+  { // Entry 277
+    0x1.6a09e5b2eec9c250117a2e237528575cp-10,
+    0x1.p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 278
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-10,
+    0x1.p-10,
+    0x1.p-10
+  },
+  { // Entry 279
+    0x1.6a09e7d1fda3e601624311059df7157bp-10,
+    0x1.p-10,
+    0x1.000002p-10
+  },
+  { // Entry 280
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-10,
+    0x1.000002p-10,
+    0x1.fffffep-11
+  },
+  { // Entry 281
+    0x1.6a09e7d1fda3e601624311059df7157bp-10,
+    0x1.000002p-10,
+    0x1.p-10
+  },
+  { // Entry 282
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-10,
+    0x1.000002p-10,
+    0x1.000002p-10
+  },
+  { // Entry 283
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-1,
+    0x1.fffffep-2,
+    0x1.fffffep-2
+  },
+  { // Entry 284
+    0x1.6a09e5b2eec9c250117a2e237528575cp-1,
+    0x1.fffffep-2,
+    0x1.p-1
+  },
+  { // Entry 285
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-1,
+    0x1.fffffep-2,
+    0x1.000002p-1
+  },
+  { // Entry 286
+    0x1.6a09e5b2eec9c250117a2e237528575cp-1,
+    0x1.p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 287
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1,
+    0x1.p-1
+  },
+  { // Entry 288
+    0x1.6a09e7d1fda3e601624311059df7157bp-1,
+    0x1.p-1,
+    0x1.000002p-1
+  },
+  { // Entry 289
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-1,
+    0x1.000002p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 290
+    0x1.6a09e7d1fda3e601624311059df7157bp-1,
+    0x1.000002p-1,
+    0x1.p-1
+  },
+  { // Entry 291
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-1,
+    0x1.000002p-1,
+    0x1.000002p-1
+  },
+  { // Entry 292
+    0x1.6a09e4fde9d66114f6320ab3ef821653p1,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 293
+    0x1.6a09e5b2eec9c250117a2e237528575cp1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 294
+    0x1.6a09e71cf8b1944db3c8e462b0886601p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 295
+    0x1.6a09e5b2eec9c250117a2e237528575cp1,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 296
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 297
+    0x1.6a09e7d1fda3e601624311059df7157bp1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 298
+    0x1.6a09e71cf8b1944db3c8e462b0886601p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 299
+    0x1.6a09e7d1fda3e601624311059df7157bp1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 300
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 301
+    0x1.6a09e4fde9d66114f6320ab3ef821653p10,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 302
+    0x1.6a09e5b2eec9c250117a2e237528575cp10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 303
+    0x1.6a09e71cf8b1944db3c8e462b0886601p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 304
+    0x1.6a09e5b2eec9c250117a2e237528575cp10,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 305
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 306
+    0x1.6a09e7d1fda3e601624311059df7157bp10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 307
+    0x1.6a09e71cf8b1944db3c8e462b0886601p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 308
+    0x1.6a09e7d1fda3e601624311059df7157bp10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 309
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 310
+    0x1.6a09e4fde9d66114f6320ab3ef821653p60,
+    0x1.fffffep59,
+    0x1.fffffep59
+  },
+  { // Entry 311
+    0x1.6a09e5b2eec9c250117a2e237528575cp60,
+    0x1.fffffep59,
+    0x1.p60
+  },
+  { // Entry 312
+    0x1.6a09e71cf8b1944db3c8e462b0886601p60,
+    0x1.fffffep59,
+    0x1.000002p60
+  },
+  { // Entry 313
+    0x1.6a09e5b2eec9c250117a2e237528575cp60,
+    0x1.p60,
+    0x1.fffffep59
+  },
+  { // Entry 314
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep60,
+    0x1.p60,
+    0x1.p60
+  },
+  { // Entry 315
+    0x1.6a09e7d1fda3e601624311059df7157bp60,
+    0x1.p60,
+    0x1.000002p60
+  },
+  { // Entry 316
+    0x1.6a09e71cf8b1944db3c8e462b0886601p60,
+    0x1.000002p60,
+    0x1.fffffep59
+  },
+  { // Entry 317
+    0x1.6a09e7d1fda3e601624311059df7157bp60,
+    0x1.000002p60,
+    0x1.p60
+  },
+  { // Entry 318
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p60,
+    0x1.000002p60,
+    0x1.000002p60
+  },
+  { // Entry 319
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.fffffep-1
+  },
+  { // Entry 320
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.p0
+  },
+  { // Entry 321
+    0x1.fffffep126,
+    0x1.fffffep126,
+    0x1.000002p0
+  },
+  { // Entry 322
+    0x1.p127,
+    0x1.p127,
+    0x1.fffffep-1
+  },
+  { // Entry 323
+    0x1.p127,
+    0x1.p127,
+    0x1.p0
+  },
+  { // Entry 324
+    0x1.p127,
+    0x1.p127,
+    0x1.000002p0
+  },
+  { // Entry 325
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.fffffep-1
+  },
+  { // Entry 326
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.p0
+  },
+  { // Entry 327
+    0x1.000002p127,
+    0x1.000002p127,
+    0x1.000002p0
+  },
+  { // Entry 328
+    0x1.778d23d44b55c4e7b10db1b757f6ee55p-27,
+    0x1.00a434p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 329
+    0x1.778d254a171118efb3206477d0250ecdp-27,
+    0x1.00a434p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 330
+    0x1.778d26bfe2cdb2f186ce7d3b1303e445p-27,
+    0x1.00a434p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 331
+    0x1.778d25322e53c575779bf8453dfa3d1cp-27,
+    0x1.00a436p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 332
+    0x1.778d26a7fa0dbd3d308d85a2de5329b5p-27,
+    0x1.00a436p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 333
+    0x1.778d281dc5c8fafebca0051d801423f2p-27,
+    0x1.00a436p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 334
+    0x1.778d269011533a0fa573ec7af086bc32p-27,
+    0x1.00a438p-27,
+    0x1.122dc2p-27
+  },
+  { // Entry 335
+    0x1.778d2805dd0bd597165aecc2378bac1cp-27,
+    0x1.00a438p-27,
+    0x1.122dc4p-27
+  },
+  { // Entry 336
+    0x1.778d297ba8c5b7185be86b37ed71b7e7p-27,
+    0x1.00a438p-27,
+    0x1.122dc6p-27
+  },
+  { // Entry 337
+    0x1.74334e106cbed9ae84bc8c76dd5c5713p0,
+    0x1.0b25p0,
+    -0x1.032a76p0
+  },
+  { // Entry 338
+    0x1.74334cabea5b8f74d5d14c94e0c759e1p0,
+    0x1.0b25p0,
+    -0x1.032a74p0
+  },
+  { // Entry 339
+    0x1.74334b4767f9b00f6266f798ce03fe56p0,
+    0x1.0b25p0,
+    -0x1.032a72p0
+  },
+  { // Entry 340
+    0x1.74334f7fe8dc915f56954cb730ec4eacp0,
+    0x1.0b2502p0,
+    -0x1.032a76p0
+  },
+  { // Entry 341
+    0x1.74334e1b667aa723bef8bd9997e318dbp0,
+    0x1.0b2502p0,
+    -0x1.032a74p0
+  },
+  { // Entry 342
+    0x1.74334cb6e41a27bc64192c7623c9095ep0,
+    0x1.0b2502p0,
+    -0x1.032a72p0
+  },
+  { // Entry 343
+    0x1.743350ef64fb9e8af653c2c33082504fp0,
+    0x1.0b2504p0,
+    -0x1.032a76p0
+  },
+  { // Entry 344
+    0x1.74334f8ae29b144d7495e8f3d356be7fp0,
+    0x1.0b2504p0,
+    -0x1.032a74p0
+  },
+  { // Entry 345
+    0x1.74334e26603bf4e430d12029be7e9e50p0,
+    0x1.0b2504p0,
+    -0x1.032a72p0
+  },
+  { // Entry 346
+    0x1.b6d62fc6f7a81ec948a1141efc6052a7p7,
+    0x1.384560p7,
+    0x1.345342p7
+  },
+  { // Entry 347
+    0x1.b6d6312eb26c5bc486b92f8cf55694f0p7,
+    0x1.384560p7,
+    0x1.345344p7
+  },
+  { // Entry 348
+    0x1.b6d632966d31c73a4041badc1888237dp7,
+    0x1.384560p7,
+    0x1.345346p7
+  },
+  { // Entry 349
+    0x1.b6d631334cf2c0ff05d0de26ff401478p7,
+    0x1.384562p7,
+    0x1.345342p7
+  },
+  { // Entry 350
+    0x1.b6d6329b07b5d35237676d0ef4b9f426p7,
+    0x1.384562p7,
+    0x1.345344p7
+  },
+  { // Entry 351
+    0x1.b6d63402c27a141fe55cef1e3465ad6dp7,
+    0x1.384562p7,
+    0x1.345346p7
+  },
+  { // Entry 352
+    0x1.b6d6329fa23e8a16b9bb93298235048cp7,
+    0x1.384564p7,
+    0x1.345342p7
+  },
+  { // Entry 353
+    0x1.b6d634075d0071c1dfcec3418989e05ep7,
+    0x1.384564p7,
+    0x1.345344p7
+  },
+  { // Entry 354
+    0x1.b6d6356f17c387e7832f69c16c81e0ccp7,
+    0x1.384564p7,
+    0x1.345346p7
+  },
+  { // Entry 355
+    0x1.b6d6356f17c387e7832f69c16c81e0ccp-6,
+    -0x1.384564p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 356
+    0x1.b6d634075d0071c1dfcec3418989e05ep-6,
+    -0x1.384564p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 357
+    0x1.b6d6329fa23e8a16b9bb93298235048cp-6,
+    -0x1.384564p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 358
+    0x1.b6d63402c27a141fe55cef1e3465ad6dp-6,
+    -0x1.384562p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 359
+    0x1.b6d6329b07b5d35237676d0ef4b9f426p-6,
+    -0x1.384562p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 360
+    0x1.b6d631334cf2c0ff05d0de26ff401478p-6,
+    -0x1.384562p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 361
+    0x1.b6d632966d31c73a4041badc1888237dp-6,
+    -0x1.384560p-6,
+    -0x1.345346p-6
+  },
+  { // Entry 362
+    0x1.b6d6312eb26c5bc486b92f8cf55694f0p-6,
+    -0x1.384560p-6,
+    -0x1.345344p-6
+  },
+  { // Entry 363
+    0x1.b6d62fc6f7a81ec948a1141efc6052a7p-6,
+    -0x1.384560p-6,
+    -0x1.345342p-6
+  },
+  { // Entry 364
+    0x1.9a134250dd50582b3680d82375c95486p-16,
+    -0x1.384564p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 365
+    0x1.9a1341050095587ce0ff2f690abe3130p-16,
+    -0x1.384564p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 366
+    0x1.9a133fb923dbcb7f9d68db36361f7a4cp-16,
+    -0x1.384564p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 367
+    0x1.9a1340cafa61a0e627789b5e20463d1fp-16,
+    -0x1.384562p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 368
+    0x1.9a133f7f1da565b1a938b5bc2a05ad2bp-16,
+    -0x1.384562p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 369
+    0x1.9a133e3340ea9d2e3c45e546f2b30188p-16,
+    -0x1.384562p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 370
+    0x1.9a133f451773f6322dcdf8373e99ef77p-16,
+    -0x1.384560p-16,
+    -0x1.09cc3ep-16
+  },
+  { // Entry 371
+    0x1.9a133df93ab67f77855132975a6d3aa2p-16,
+    -0x1.384560p-16,
+    -0x1.09cc3cp-16
+  },
+  { // Entry 372
+    0x1.9a133cad5dfa7b6ded8342c2ed23507ep-16,
+    -0x1.384560p-16,
+    -0x1.09cc3ap-16
+  },
+  { // Entry 373
+    0x1.6a09e93c078998f02c8d24cce0bc4b13p-6,
+    -0x1.000002p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 374
+    0x1.6a09e7d1fda3e601624311059df7157bp-6,
+    -0x1.000002p-6,
+    -0x1.p-6
+  },
+  { // Entry 375
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-6,
+    -0x1.000002p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 376
+    0x1.6a09e7d1fda3e601624311059df7157bp-6,
+    -0x1.p-6,
+    -0x1.000002p-6
+  },
+  { // Entry 377
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-6,
+    -0x1.p-6,
+    -0x1.p-6
+  },
+  { // Entry 378
+    0x1.6a09e5b2eec9c250117a2e237528575cp-6,
+    -0x1.p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 379
+    0x1.6a09e71cf8b1944db3c8e462b0886601p-6,
+    -0x1.fffffep-7,
+    -0x1.000002p-6
+  },
+  { // Entry 380
+    0x1.6a09e5b2eec9c250117a2e237528575cp-6,
+    -0x1.fffffep-7,
+    -0x1.p-6
+  },
+  { // Entry 381
+    0x1.6a09e4fde9d66114f6320ab3ef821653p-6,
+    -0x1.fffffep-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 382
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 383
+    0x1.p-149,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 384
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 385
+    0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 386
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 387
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 388
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 389
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 390
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 391
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 392
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 393
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 394
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 395
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 396
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 397
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 398
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 399
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 400
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 401
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 402
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 403
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 404
+    HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 405
+    HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 406
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 407
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 408
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 409
+    HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 410
+    HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 411
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 412
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 413
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 414
+    HUGE_VALF,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 415
+    HUGE_VALF,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 416
+    HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 417
+    HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 418
+    HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 419
+    HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 420
+    HUGE_VALF,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 421
+    HUGE_VALF,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 422
+    HUGE_VALF,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 423
+    HUGE_VALF,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 424
+    HUGE_VALF,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 425
+    HUGE_VALF,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 426
+    HUGE_VALF,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 427
+    HUGE_VALF,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 428
+    HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 429
+    0x1.fffffep127,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 430
+    0x1.p-126,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 431
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 432
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 433
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 434
+    0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 435
+    0x1.p-126,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 436
+    0x1.fffffep127,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 437
+    0x1.fffffep127,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 438
+    0x1.p-126,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 439
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 440
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 441
+    0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 442
+    0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 443
+    0x1.p-126,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 444
+    0x1.fffffep127,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 445
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 446
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 447
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 448
+    0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 449
+    0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 450
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 451
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 452
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 453
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 454
+    0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 455
+    0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 456
+    0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 457
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 458
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 459
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 460
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 461
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 462
+    HUGE_VALF,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 463
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 464
+    0x1.000000000001fffffffffffep-126,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 465
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 466
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-149,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 467
+    0x1.40p2,
+    0x1.80p1,
+    0x1.p2
+  },
+  { // Entry 468
+    0x1.40p2,
+    0x1.80p1,
+    -0x1.p2
+  },
+  { // Entry 469
+    0x1.a0p3,
+    0x1.40p2,
+    0x1.80p3
+  },
+  { // Entry 470
+    0x1.a0p3,
+    0x1.40p2,
+    -0x1.80p3
+  }
+};
diff --git a/tests/math_data/ilogb_intel_data.h b/tests/math_data/ilogb_intel_data.h
new file mode 100644
index 0000000..50a3a7f
--- /dev/null
+++ b/tests/math_data/ilogb_intel_data.h
@@ -0,0 +1,890 @@
+/*
+ * 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.
+ */
+
+static data_int_1_t<double> g_ilogb_intel_data[] = {
+  { // Entry 0
+    (int)0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 1
+    (int)0x1.90p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 2
+    (int)0x1.90p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 3
+    (int)0x1.90p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 4
+    (int)0x1.90p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 5
+    (int)0x1.90p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 6
+    (int)0x1.90p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 7
+    (int)0x1.90p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 8
+    (int)0x1.90p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 9
+    (int)0x1.90p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 10
+    (int)0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 11
+    (int)0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 12
+    (int)0x1.90p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 13
+    (int)0x1.90p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 14
+    (int)0x1.90p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 15
+    (int)0x1.90p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 16
+    (int)0x1.90p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 17
+    (int)0x1.90p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 18
+    (int)0x1.90p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 19
+    (int)0x1.90p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 20
+    (int)0x1.90p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 21
+    (int)0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 22
+    (int)0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 23
+    (int)0x1.f4p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 24
+    (int)0x1.f4p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 25
+    (int)0x1.f4p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 26
+    (int)0x1.f4p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 27
+    (int)0x1.f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 28
+    (int)0x1.f4p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 29
+    (int)0x1.f4p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 30
+    (int)0x1.f4p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 31
+    (int)0x1.f4p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 32
+    (int)0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 33
+    (int)0x1.94p6,
+    -0x1.0p101
+  },
+  { // Entry 34
+    (int)0x1.90p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 35
+    (int)0x1.90p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 36
+    (int)0x1.90p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 37
+    (int)0x1.90p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 38
+    (int)0x1.90p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 39
+    (int)0x1.90p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 40
+    (int)0x1.90p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 41
+    (int)0x1.90p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 42
+    (int)0x1.90p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 43
+    (int)0x1.90p6,
+    -0x1.0p100
+  },
+  { // Entry 44
+    (int)0x1.92p7,
+    -0x1.0p201
+  },
+  { // Entry 45
+    (int)0x1.90p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 46
+    (int)0x1.90p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 47
+    (int)0x1.90p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 48
+    (int)0x1.90p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 49
+    (int)0x1.90p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 50
+    (int)0x1.90p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 51
+    (int)0x1.90p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 52
+    (int)0x1.90p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 53
+    (int)0x1.90p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 54
+    (int)0x1.90p7,
+    -0x1.0p200
+  },
+  { // Entry 55
+    (int)0x1.f480p9,
+    -0x1.0p1001
+  },
+  { // Entry 56
+    (int)0x1.f4p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 57
+    (int)0x1.f4p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 58
+    (int)0x1.f4p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 59
+    (int)0x1.f4p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 60
+    (int)0x1.f4p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 61
+    (int)0x1.f4p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 62
+    (int)0x1.f4p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 63
+    (int)0x1.f4p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 64
+    (int)0x1.f4p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 65
+    (int)0x1.f4p9,
+    -0x1.0p1000
+  },
+  { // Entry 66
+    (int)0x1.90p5,
+    0x1.0p50
+  },
+  { // Entry 67
+    (int)0x1.90p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 68
+    (int)0x1.90p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 69
+    (int)0x1.90p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 70
+    (int)0x1.90p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 71
+    (int)0x1.90p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 72
+    (int)0x1.90p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 73
+    (int)0x1.90p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 74
+    (int)0x1.90p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 75
+    (int)0x1.90p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 76
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 77
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 78
+    (int)0x1.98p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 79
+    (int)0x1.98p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 80
+    (int)0x1.98p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 81
+    (int)0x1.98p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 82
+    (int)0x1.98p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 83
+    (int)0x1.98p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 84
+    (int)0x1.98p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 85
+    (int)0x1.98p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 86
+    (int)0x1.98p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 87
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 88
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 89
+    (int)0x1.a0p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 90
+    (int)0x1.a0p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 91
+    (int)0x1.a0p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 92
+    (int)0x1.a0p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 93
+    (int)0x1.a0p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 94
+    (int)0x1.a0p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 95
+    (int)0x1.a0p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 96
+    (int)0x1.a0p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 97
+    (int)0x1.a0p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 98
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 99
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 100
+    (int)0x1.a8p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 101
+    (int)0x1.a8p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 102
+    (int)0x1.a8p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 103
+    (int)0x1.a8p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 104
+    (int)0x1.a8p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 105
+    (int)0x1.a8p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 106
+    (int)0x1.a8p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 107
+    (int)0x1.a8p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 108
+    (int)0x1.a8p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 109
+    (int)0x1.b0p5,
+    0x1.0p54
+  },
+  { // Entry 110
+    (int)-0x1.0080p10,
+    0x1.0p-1026
+  },
+  { // Entry 111
+    (int)-0x1.p10,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 112
+    (int)-0x1.ff80p9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 113
+    (int)-0x1.ffp9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 114
+    (int)-0x1.ffp9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 115
+    (int)-0x1.fe80p9,
+    0x1.040p-1021
+  },
+  { // Entry 116
+    (int)-0x1.fe80p9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 117
+    (int)-0x1.fe80p9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 118
+    (int)-0x1.fe80p9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 119
+    (int)-0x1.fe80p9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 120
+    (int)-0x1.fe80p9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 121
+    (int)0x1.90p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 122
+    (int)0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 123
+    (int)0x1.98p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 124
+    (int)0x1.98p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 125
+    (int)0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 126
+    (int)0x1.a0p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 127
+    (int)0x1.a0p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 128
+    (int)0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 129
+    (int)0x1.a8p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 130
+    (int)0x1.98p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 131
+    (int)0x1.98p5,
+    -0x1.0p51
+  },
+  { // Entry 132
+    (int)0x1.90p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 133
+    (int)0x1.a0p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 134
+    (int)0x1.a0p5,
+    -0x1.0p52
+  },
+  { // Entry 135
+    (int)0x1.98p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 136
+    (int)0x1.a8p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 137
+    (int)0x1.a8p5,
+    -0x1.0p53
+  },
+  { // Entry 138
+    (int)0x1.a0p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 139
+    (int)0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 140
+    (int)0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 141
+    (int)-0x1.c0p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 142
+    (int)-0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 143
+    (int)-0x1.80p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 144
+    (int)-0x1.80p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 145
+    (int)-0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 146
+    (int)-0x1.40p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 147
+    (int)-0x1.40p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 148
+    (int)-0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 149
+    (int)-0x1.p2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 150
+    (int)-0x1.p2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 151
+    (int)-0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 152
+    (int)-0x1.80p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 153
+    (int)-0x1.80p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 154
+    (int)-0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 155
+    (int)-0x1.p1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 156
+    (int)-0x1.p1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 157
+    (int)-0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 158
+    (int)-0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 159
+    (int)-0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 160
+    (int)-0x1.fffffffcp30,
+    -0.0
+  },
+  { // Entry 161
+    (int)-0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 162
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    (int)0.0,
+    0x1.0p0
+  },
+  { // Entry 164
+    (int)0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    (int)0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 166
+    (int)0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 167
+    (int)0x1.p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 168
+    (int)0x1.p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 169
+    (int)0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 170
+    (int)0x1.p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 171
+    (int)0x1.p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 172
+    (int)0x1.80p1,
+    0x1.0p3
+  },
+  { // Entry 173
+    (int)0x1.80p1,
+    0x1.0000000000001p3
+  },
+  { // Entry 174
+    (int)0x1.80p1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 175
+    (int)0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 176
+    (int)0x1.p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 177
+    (int)0x1.p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 178
+    (int)0x1.40p2,
+    0x1.0p5
+  },
+  { // Entry 179
+    (int)0x1.40p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 180
+    (int)0x1.40p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 181
+    (int)0x1.80p2,
+    0x1.0p6
+  },
+  { // Entry 182
+    (int)0x1.80p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 183
+    (int)0x1.80p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 184
+    (int)0x1.c0p2,
+    0x1.0p7
+  },
+  { // Entry 185
+    (int)0x1.c0p2,
+    0x1.0000000000001p7
+  },
+  { // Entry 186
+    (int)0x1.fffffffcp30,
+    HUGE_VAL
+  },
+  { // Entry 187
+    (int)0x1.fffffffcp30,
+    -HUGE_VAL
+  },
+  { // Entry 188
+    (int)-0x1.fffffffcp30,
+    0.0
+  },
+  { // Entry 189
+    (int)-0x1.fffffffcp30,
+    -0.0
+  },
+  { // Entry 190
+    (int)0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    (int)0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    (int)0x1.ff80p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    (int)0x1.ff80p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    (int)0x1.p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    (int)0x1.p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    (int)0.0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    (int)0.0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    (int)0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    (int)0.0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    (int)0.0,
+    0x1.0p0
+  },
+  { // Entry 201
+    (int)0.0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    (int)-0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    (int)-0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    (int)-0x1.ffp9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    (int)-0x1.ffp9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    (int)-0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    (int)-0x1.ffp9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    (int)-0x1.ff80p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    (int)-0x1.ff80p9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    (int)-0x1.ff80p9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    (int)-0x1.ff80p9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    (int)-0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    (int)-0x1.0c40p10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    (int)-0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    (int)-0x1.0c80p10,
+    -0x1.0p-1074
+  }
+};
diff --git a/tests/math_data/ilogbf_intel_data.h b/tests/math_data/ilogbf_intel_data.h
new file mode 100644
index 0000000..ef08fa3
--- /dev/null
+++ b/tests/math_data/ilogbf_intel_data.h
@@ -0,0 +1,714 @@
+/*
+ * 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.
+ */
+
+static data_int_1_t<float> g_ilogbf_intel_data[] = {
+  { // Entry 0
+    (int)0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 1
+    (int)0x1.90p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    (int)0x1.90p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    (int)0x1.90p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    (int)0x1.90p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    (int)0x1.90p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    (int)0x1.90p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    (int)0x1.90p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    (int)0x1.90p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    (int)0x1.90p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    (int)0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 11
+    (int)0x1.94p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    (int)0x1.90p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    (int)0x1.90p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    (int)0x1.90p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    (int)0x1.90p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    (int)0x1.90p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    (int)0x1.90p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    (int)0x1.90p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    (int)0x1.90p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    (int)0x1.90p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    (int)0x1.90p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    (int)0x1.50p4,
+    0x1.p21
+  },
+  { // Entry 23
+    (int)0x1.50p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    (int)0x1.50p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    (int)0x1.50p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    (int)0x1.50p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    (int)0x1.50p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    (int)0x1.50p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    (int)0x1.50p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    (int)0x1.50p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    (int)0x1.50p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 33
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 34
+    (int)0x1.60p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    (int)0x1.60p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    (int)0x1.60p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    (int)0x1.60p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    (int)0x1.60p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    (int)0x1.60p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    (int)0x1.60p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    (int)0x1.60p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    (int)0x1.60p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 44
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 45
+    (int)0x1.70p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    (int)0x1.70p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    (int)0x1.70p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    (int)0x1.70p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    (int)0x1.70p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    (int)0x1.70p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    (int)0x1.70p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    (int)0x1.70p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    (int)0x1.70p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 55
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 56
+    (int)0x1.80p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    (int)0x1.80p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    (int)0x1.80p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    (int)0x1.80p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    (int)0x1.80p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    (int)0x1.80p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    (int)0x1.80p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    (int)0x1.80p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    (int)0x1.80p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    (int)0x1.90p4,
+    0x1.p25
+  },
+  { // Entry 66
+    (int)-0x1.04p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    (int)-0x1.p7,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    (int)-0x1.fcp6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    (int)-0x1.f8p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    (int)-0x1.f8p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    (int)-0x1.f4p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    (int)-0x1.f4p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    (int)-0x1.f4p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    (int)-0x1.f4p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    (int)-0x1.f4p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    (int)-0x1.f4p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    (int)0x1.50p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    (int)0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 79
+    (int)0x1.60p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    (int)0x1.60p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    (int)0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 82
+    (int)0x1.70p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    (int)0x1.70p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    (int)0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 85
+    (int)0x1.80p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    (int)0x1.60p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    (int)0x1.60p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    (int)0x1.50p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    (int)0x1.70p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    (int)0x1.70p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    (int)0x1.60p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    (int)0x1.80p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    (int)0x1.80p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    (int)0x1.70p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    (int)0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    (int)0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    (int)-0x1.c0p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    (int)-0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    (int)-0x1.80p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    (int)-0x1.80p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    (int)-0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    (int)-0x1.40p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    (int)-0x1.40p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    (int)-0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 105
+    (int)-0x1.p2,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    (int)-0x1.p2,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    (int)-0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    (int)-0x1.80p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    (int)-0x1.80p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    (int)-0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 111
+    (int)-0x1.p1,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    (int)-0x1.p1,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    (int)-0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 114
+    (int)-0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    (int)-0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    (int)-0x1.fffffffcp30,
+    0.0
+  },
+  { // Entry 117
+    (int)-0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 118
+    (int)-0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    (int)0.0,
+    0x1.p0
+  },
+  { // Entry 120
+    (int)0.0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    (int)0.0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    (int)0x1.p0,
+    0x1.p1
+  },
+  { // Entry 123
+    (int)0x1.p0,
+    0x1.000002p1
+  },
+  { // Entry 124
+    (int)0x1.p0,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    (int)0x1.p1,
+    0x1.p2
+  },
+  { // Entry 126
+    (int)0x1.p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    (int)0x1.p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    (int)0x1.80p1,
+    0x1.p3
+  },
+  { // Entry 129
+    (int)0x1.80p1,
+    0x1.000002p3
+  },
+  { // Entry 130
+    (int)0x1.80p1,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    (int)0x1.p2,
+    0x1.p4
+  },
+  { // Entry 132
+    (int)0x1.p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    (int)0x1.p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    (int)0x1.40p2,
+    0x1.p5
+  },
+  { // Entry 135
+    (int)0x1.40p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    (int)0x1.40p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    (int)0x1.80p2,
+    0x1.p6
+  },
+  { // Entry 138
+    (int)0x1.80p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    (int)0x1.80p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    (int)0x1.c0p2,
+    0x1.p7
+  },
+  { // Entry 141
+    (int)0x1.c0p2,
+    0x1.000002p7
+  },
+  { // Entry 142
+    (int)0x1.fffffffcp30,
+    HUGE_VALF
+  },
+  { // Entry 143
+    (int)0x1.fffffffcp30,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    (int)-0x1.fffffffcp30,
+    0.0f
+  },
+  { // Entry 145
+    (int)-0x1.fffffffcp30,
+    -0.0f
+  },
+  { // Entry 146
+    (int)0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 147
+    (int)0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 148
+    (int)0x1.fcp6,
+    0x1.fffffcp127
+  },
+  { // Entry 149
+    (int)0x1.fcp6,
+    -0x1.fffffcp127
+  },
+  { // Entry 150
+    (int)0x1.p0,
+    0x1.921fb6p1
+  },
+  { // Entry 151
+    (int)0x1.p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 152
+    (int)0.0,
+    0x1.921fb6p0
+  },
+  { // Entry 153
+    (int)0.0,
+    -0x1.921fb6p0
+  },
+  { // Entry 154
+    (int)0.0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    (int)0.0,
+    -0x1.000002p0
+  },
+  { // Entry 156
+    (int)0.0,
+    0x1.p0
+  },
+  { // Entry 157
+    (int)0.0,
+    -0x1.p0
+  },
+  { // Entry 158
+    (int)-0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    (int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 160
+    (int)-0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 161
+    (int)-0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 162
+    (int)-0x1.f8p6,
+    0x1.000002p-126
+  },
+  { // Entry 163
+    (int)-0x1.f8p6,
+    -0x1.000002p-126
+  },
+  { // Entry 164
+    (int)-0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 165
+    (int)-0x1.f8p6,
+    -0x1.p-126
+  },
+  { // Entry 166
+    (int)-0x1.fcp6,
+    0x1.fffffcp-127
+  },
+  { // Entry 167
+    (int)-0x1.fcp6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 168
+    (int)-0x1.fcp6,
+    0x1.fffff8p-127
+  },
+  { // Entry 169
+    (int)-0x1.fcp6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 170
+    (int)-0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 171
+    (int)-0x1.28p7,
+    -0x1.p-148
+  },
+  { // Entry 172
+    (int)-0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 173
+    (int)-0x1.2ap7,
+    -0x1.p-149
+  }
+};
diff --git a/tests/math_data/ldexp_intel_data.h b/tests/math_data/ldexp_intel_data.h
new file mode 100644
index 0000000..5d4ad1a
--- /dev/null
+++ b/tests/math_data/ldexp_intel_data.h
@@ -0,0 +1,4348 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, int> g_ldexp_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    (int)-1022
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    (int)-1022
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    (int)-1022
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    (int)-47
+  },
+  { // Entry 7
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 8
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 9
+    0x1.29e4129e4129e0p-1024,
+    0x1.29e4129e4129ep-7,
+    (int)-1017
+  },
+  { // Entry 10
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    (int)2147483647
+  },
+  { // Entry 11
+    0.0,
+    0x1.dddddddddddddp-2,
+    (int)-1073
+  },
+  { // Entry 12
+    0x1.e0p-48,
+    0x1.ep-1071,
+    (int)1023
+  },
+  { // Entry 13
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    (int)-1073
+  },
+  { // Entry 14
+    0.0,
+    0x1.ffffffffffff0p-2,
+    (int)-1073
+  },
+  { // Entry 15
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    (int)-10
+  },
+  { // Entry 16
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    (int)1
+  },
+  { // Entry 17
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    (int)-47
+  },
+  { // Entry 18
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 19
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 20
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 21
+    -0x1.p-10,
+    -0x1.0p0,
+    (int)-10
+  },
+  { // Entry 22
+    -0x1.p-9,
+    -0x1.0p0,
+    (int)-9
+  },
+  { // Entry 23
+    -0x1.p-8,
+    -0x1.0p0,
+    (int)-8
+  },
+  { // Entry 24
+    -0x1.p-7,
+    -0x1.0p0,
+    (int)-7
+  },
+  { // Entry 25
+    -0x1.p-6,
+    -0x1.0p0,
+    (int)-6
+  },
+  { // Entry 26
+    -0x1.p-5,
+    -0x1.0p0,
+    (int)-5
+  },
+  { // Entry 27
+    -0x1.p-4,
+    -0x1.0p0,
+    (int)-4
+  },
+  { // Entry 28
+    -0x1.p-3,
+    -0x1.0p0,
+    (int)-3
+  },
+  { // Entry 29
+    -0x1.p-2,
+    -0x1.0p0,
+    (int)-2
+  },
+  { // Entry 30
+    -0x1.p-1,
+    -0x1.0p0,
+    (int)-1
+  },
+  { // Entry 31
+    -0x1.p0,
+    -0x1.0p0,
+    (int)0
+  },
+  { // Entry 32
+    -0x1.p1,
+    -0x1.0p0,
+    (int)1
+  },
+  { // Entry 33
+    -0x1.p2,
+    -0x1.0p0,
+    (int)2
+  },
+  { // Entry 34
+    -0x1.p3,
+    -0x1.0p0,
+    (int)3
+  },
+  { // Entry 35
+    -0x1.p4,
+    -0x1.0p0,
+    (int)4
+  },
+  { // Entry 36
+    -0x1.p5,
+    -0x1.0p0,
+    (int)5
+  },
+  { // Entry 37
+    -0x1.p6,
+    -0x1.0p0,
+    (int)6
+  },
+  { // Entry 38
+    -0x1.p7,
+    -0x1.0p0,
+    (int)7
+  },
+  { // Entry 39
+    -0x1.p8,
+    -0x1.0p0,
+    (int)8
+  },
+  { // Entry 40
+    -0x1.p9,
+    -0x1.0p0,
+    (int)9
+  },
+  { // Entry 41
+    -0x1.p10,
+    -0x1.0p0,
+    (int)10
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    (int)-10
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    (int)-9
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    (int)-8
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    (int)-7
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    (int)-6
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    (int)-5
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    (int)-4
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    (int)-3
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    (int)-2
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    (int)-1
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    (int)0
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    (int)1
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    (int)2
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    (int)3
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    (int)4
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    (int)5
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    (int)6
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    (int)7
+  },
+  { // Entry 60
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    (int)8
+  },
+  { // Entry 61
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    (int)9
+  },
+  { // Entry 62
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    (int)10
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-10
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-9
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-8
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-7
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-6
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-5
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-4
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-3
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-2
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-1
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)0
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)1
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)2
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)3
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)4
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)5
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)6
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)7
+  },
+  { // Entry 81
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)8
+  },
+  { // Entry 82
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)9
+  },
+  { // Entry 83
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)10
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    (int)-10
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    (int)-9
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    (int)-8
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    (int)-7
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    (int)-6
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    (int)-5
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    (int)-4
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    (int)-3
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    (int)-2
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    (int)-1
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    (int)0
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    (int)1
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    (int)2
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    (int)3
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    (int)4
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    (int)5
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    (int)6
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    (int)7
+  },
+  { // Entry 102
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    (int)8
+  },
+  { // Entry 103
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    (int)9
+  },
+  { // Entry 104
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    (int)10
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    (int)-10
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    (int)-9
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    (int)-8
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    (int)-7
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    (int)-6
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    (int)-5
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    (int)-4
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    (int)-3
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    (int)-2
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    (int)-1
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    (int)0
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    (int)1
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    (int)2
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    (int)3
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    (int)4
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    (int)5
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    (int)6
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    (int)7
+  },
+  { // Entry 123
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    (int)8
+  },
+  { // Entry 124
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    (int)9
+  },
+  { // Entry 125
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    (int)10
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    (int)-10
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    (int)-9
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    (int)-8
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    (int)-7
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    (int)-6
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    (int)-5
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    (int)-4
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    (int)-3
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    (int)-2
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    (int)-1
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    (int)0
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    (int)1
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    (int)2
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    (int)3
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    (int)4
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    (int)5
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    (int)6
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    (int)7
+  },
+  { // Entry 144
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    (int)8
+  },
+  { // Entry 145
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    (int)9
+  },
+  { // Entry 146
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    (int)10
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    (int)-10
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    (int)-9
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    (int)-8
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    (int)-7
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    (int)-6
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    (int)-5
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    (int)-4
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    (int)-3
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    (int)-2
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    (int)-1
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    (int)0
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    (int)1
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    (int)2
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    (int)3
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    (int)4
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    (int)5
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    (int)6
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    (int)7
+  },
+  { // Entry 165
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    (int)8
+  },
+  { // Entry 166
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    (int)9
+  },
+  { // Entry 167
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    (int)10
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    (int)-10
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    (int)-9
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    (int)-8
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    (int)-7
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    (int)-6
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    (int)-5
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    (int)-4
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    (int)-3
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    (int)-2
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    (int)-1
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    (int)0
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    (int)1
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    (int)2
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    (int)3
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    (int)4
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    (int)5
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    (int)6
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    (int)7
+  },
+  { // Entry 186
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    (int)8
+  },
+  { // Entry 187
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    (int)9
+  },
+  { // Entry 188
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    (int)10
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    (int)-10
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    (int)-9
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    (int)-8
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    (int)-7
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    (int)-6
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    (int)-5
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    (int)-4
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    (int)-3
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    (int)-2
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    (int)-1
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    (int)0
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    (int)1
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    (int)2
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    (int)3
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    (int)4
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    (int)5
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    (int)6
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    (int)7
+  },
+  { // Entry 207
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    (int)8
+  },
+  { // Entry 208
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    (int)9
+  },
+  { // Entry 209
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    (int)10
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    (int)-10
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    (int)-9
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    (int)-8
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    (int)-7
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    (int)-6
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    (int)-5
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    (int)-4
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    (int)-3
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    (int)-2
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    (int)-1
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    (int)0
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    (int)1
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    (int)2
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    (int)3
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    (int)4
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    (int)5
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    (int)6
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    (int)7
+  },
+  { // Entry 228
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    (int)8
+  },
+  { // Entry 229
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    (int)9
+  },
+  { // Entry 230
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    (int)10
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    (int)-10
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    (int)-9
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    (int)-8
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    (int)-7
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    (int)-6
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    (int)-5
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    (int)-4
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    (int)-3
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    (int)-2
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    (int)-1
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    (int)0
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    (int)1
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    (int)2
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    (int)3
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    (int)4
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    (int)5
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    (int)6
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    (int)7
+  },
+  { // Entry 249
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    (int)8
+  },
+  { // Entry 250
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    (int)9
+  },
+  { // Entry 251
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    (int)10
+  },
+  { // Entry 252
+    0x1.20p-62,
+    0x1.2p-52,
+    (int)-10
+  },
+  { // Entry 253
+    0x1.20p-61,
+    0x1.2p-52,
+    (int)-9
+  },
+  { // Entry 254
+    0x1.20p-60,
+    0x1.2p-52,
+    (int)-8
+  },
+  { // Entry 255
+    0x1.20p-59,
+    0x1.2p-52,
+    (int)-7
+  },
+  { // Entry 256
+    0x1.20p-58,
+    0x1.2p-52,
+    (int)-6
+  },
+  { // Entry 257
+    0x1.20p-57,
+    0x1.2p-52,
+    (int)-5
+  },
+  { // Entry 258
+    0x1.20p-56,
+    0x1.2p-52,
+    (int)-4
+  },
+  { // Entry 259
+    0x1.20p-55,
+    0x1.2p-52,
+    (int)-3
+  },
+  { // Entry 260
+    0x1.20p-54,
+    0x1.2p-52,
+    (int)-2
+  },
+  { // Entry 261
+    0x1.20p-53,
+    0x1.2p-52,
+    (int)-1
+  },
+  { // Entry 262
+    0x1.20p-52,
+    0x1.2p-52,
+    (int)0
+  },
+  { // Entry 263
+    0x1.20p-51,
+    0x1.2p-52,
+    (int)1
+  },
+  { // Entry 264
+    0x1.20p-50,
+    0x1.2p-52,
+    (int)2
+  },
+  { // Entry 265
+    0x1.20p-49,
+    0x1.2p-52,
+    (int)3
+  },
+  { // Entry 266
+    0x1.20p-48,
+    0x1.2p-52,
+    (int)4
+  },
+  { // Entry 267
+    0x1.20p-47,
+    0x1.2p-52,
+    (int)5
+  },
+  { // Entry 268
+    0x1.20p-46,
+    0x1.2p-52,
+    (int)6
+  },
+  { // Entry 269
+    0x1.20p-45,
+    0x1.2p-52,
+    (int)7
+  },
+  { // Entry 270
+    0x1.20p-44,
+    0x1.2p-52,
+    (int)8
+  },
+  { // Entry 271
+    0x1.20p-43,
+    0x1.2p-52,
+    (int)9
+  },
+  { // Entry 272
+    0x1.20p-42,
+    0x1.2p-52,
+    (int)10
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    (int)-10
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    (int)-9
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    (int)-8
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    (int)-7
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    (int)-6
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    (int)-5
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    (int)-4
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    (int)-3
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    (int)-2
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    (int)-1
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    (int)0
+  },
+  { // Entry 284
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    (int)1
+  },
+  { // Entry 285
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    (int)2
+  },
+  { // Entry 286
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    (int)3
+  },
+  { // Entry 287
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    (int)4
+  },
+  { // Entry 288
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    (int)5
+  },
+  { // Entry 289
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    (int)6
+  },
+  { // Entry 290
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    (int)7
+  },
+  { // Entry 291
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    (int)8
+  },
+  { // Entry 292
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    (int)9
+  },
+  { // Entry 293
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    (int)10
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    (int)-10
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    (int)-9
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    (int)-8
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    (int)-7
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    (int)-6
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    (int)-5
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    (int)-4
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    (int)-3
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    (int)-2
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    (int)-1
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    (int)0
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    (int)1
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    (int)2
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    (int)3
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    (int)4
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    (int)5
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    (int)6
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    (int)7
+  },
+  { // Entry 312
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    (int)8
+  },
+  { // Entry 313
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    (int)9
+  },
+  { // Entry 314
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    (int)10
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    (int)-10
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    (int)-9
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    (int)-8
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    (int)-7
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    (int)-6
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    (int)-5
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    (int)-4
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    (int)-3
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    (int)-2
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    (int)-1
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    (int)0
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    (int)1
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    (int)2
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    (int)3
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    (int)4
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    (int)5
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    (int)6
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    (int)7
+  },
+  { // Entry 333
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    (int)8
+  },
+  { // Entry 334
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    (int)9
+  },
+  { // Entry 335
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    (int)10
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    (int)-10
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    (int)-9
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    (int)-8
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    (int)-7
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    (int)-6
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    (int)-5
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    (int)-4
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    (int)-3
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    (int)-2
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    (int)-1
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    (int)0
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    (int)1
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    (int)2
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    (int)3
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    (int)4
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    (int)5
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    (int)6
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    (int)7
+  },
+  { // Entry 354
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    (int)8
+  },
+  { // Entry 355
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    (int)9
+  },
+  { // Entry 356
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    (int)10
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    (int)-10
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    (int)-9
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    (int)-8
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    (int)-7
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    (int)-6
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    (int)-5
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    (int)-4
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    (int)-3
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    (int)-2
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    (int)-1
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    (int)0
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    (int)1
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    (int)2
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    (int)3
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    (int)4
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    (int)5
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    (int)6
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    (int)7
+  },
+  { // Entry 375
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    (int)8
+  },
+  { // Entry 376
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    (int)9
+  },
+  { // Entry 377
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    (int)10
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    (int)-10
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    (int)-9
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    (int)-8
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    (int)-7
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    (int)-6
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    (int)-5
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    (int)-4
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    (int)-3
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    (int)-2
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    (int)-1
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    (int)0
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    (int)1
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    (int)2
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    (int)3
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    (int)4
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    (int)5
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    (int)6
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    (int)7
+  },
+  { // Entry 396
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    (int)8
+  },
+  { // Entry 397
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    (int)9
+  },
+  { // Entry 398
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    (int)10
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    (int)-10
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    (int)-9
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    (int)-8
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    (int)-7
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    (int)-6
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    (int)-5
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    (int)-4
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    (int)-3
+  },
+  { // Entry 407
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    (int)-2
+  },
+  { // Entry 408
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    (int)-1
+  },
+  { // Entry 409
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    (int)0
+  },
+  { // Entry 410
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    (int)1
+  },
+  { // Entry 411
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    (int)2
+  },
+  { // Entry 412
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    (int)3
+  },
+  { // Entry 413
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    (int)4
+  },
+  { // Entry 414
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    (int)5
+  },
+  { // Entry 415
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    (int)6
+  },
+  { // Entry 416
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    (int)7
+  },
+  { // Entry 417
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    (int)8
+  },
+  { // Entry 418
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    (int)9
+  },
+  { // Entry 419
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    (int)10
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    (int)-10
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    (int)-9
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    (int)-8
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    (int)-7
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    (int)-6
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    (int)-5
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    (int)-4
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    (int)-3
+  },
+  { // Entry 428
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    (int)-2
+  },
+  { // Entry 429
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    (int)-1
+  },
+  { // Entry 430
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    (int)0
+  },
+  { // Entry 431
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    (int)1
+  },
+  { // Entry 432
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    (int)2
+  },
+  { // Entry 433
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    (int)3
+  },
+  { // Entry 434
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    (int)4
+  },
+  { // Entry 435
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    (int)5
+  },
+  { // Entry 436
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    (int)6
+  },
+  { // Entry 437
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    (int)7
+  },
+  { // Entry 438
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    (int)8
+  },
+  { // Entry 439
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    (int)9
+  },
+  { // Entry 440
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    (int)10
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-10
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-9
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-8
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-7
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-6
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-5
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-4
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-3
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-2
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-1
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)0
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)1
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)2
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)3
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)4
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)5
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)6
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)7
+  },
+  { // Entry 459
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)8
+  },
+  { // Entry 460
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)9
+  },
+  { // Entry 461
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)10
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    (int)-10
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    (int)-9
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    (int)-8
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    (int)-7
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    (int)-6
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    (int)-5
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    (int)-4
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    (int)-3
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    (int)-2
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    (int)-1
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    (int)0
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    (int)1
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    (int)2
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    (int)3
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    (int)4
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    (int)5
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    (int)6
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    (int)7
+  },
+  { // Entry 480
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    (int)8
+  },
+  { // Entry 481
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    (int)9
+  },
+  { // Entry 482
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    (int)10
+  },
+  { // Entry 483
+    0x1.p-10,
+    0x1.0p0,
+    (int)-10
+  },
+  { // Entry 484
+    0x1.p-9,
+    0x1.0p0,
+    (int)-9
+  },
+  { // Entry 485
+    0x1.p-8,
+    0x1.0p0,
+    (int)-8
+  },
+  { // Entry 486
+    0x1.p-7,
+    0x1.0p0,
+    (int)-7
+  },
+  { // Entry 487
+    0x1.p-6,
+    0x1.0p0,
+    (int)-6
+  },
+  { // Entry 488
+    0x1.p-5,
+    0x1.0p0,
+    (int)-5
+  },
+  { // Entry 489
+    0x1.p-4,
+    0x1.0p0,
+    (int)-4
+  },
+  { // Entry 490
+    0x1.p-3,
+    0x1.0p0,
+    (int)-3
+  },
+  { // Entry 491
+    0x1.p-2,
+    0x1.0p0,
+    (int)-2
+  },
+  { // Entry 492
+    0x1.p-1,
+    0x1.0p0,
+    (int)-1
+  },
+  { // Entry 493
+    0x1.p0,
+    0x1.0p0,
+    (int)0
+  },
+  { // Entry 494
+    0x1.p1,
+    0x1.0p0,
+    (int)1
+  },
+  { // Entry 495
+    0x1.p2,
+    0x1.0p0,
+    (int)2
+  },
+  { // Entry 496
+    0x1.p3,
+    0x1.0p0,
+    (int)3
+  },
+  { // Entry 497
+    0x1.p4,
+    0x1.0p0,
+    (int)4
+  },
+  { // Entry 498
+    0x1.p5,
+    0x1.0p0,
+    (int)5
+  },
+  { // Entry 499
+    0x1.p6,
+    0x1.0p0,
+    (int)6
+  },
+  { // Entry 500
+    0x1.p7,
+    0x1.0p0,
+    (int)7
+  },
+  { // Entry 501
+    0x1.p8,
+    0x1.0p0,
+    (int)8
+  },
+  { // Entry 502
+    0x1.p9,
+    0x1.0p0,
+    (int)9
+  },
+  { // Entry 503
+    0x1.p10,
+    0x1.0p0,
+    (int)10
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    (int)-1023
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    (int)-1022
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    (int)-1000
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    (int)-999
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    (int)-10
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    (int)-9
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    (int)-8
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    (int)-7
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    (int)-6
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    (int)-5
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    (int)-4
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    (int)-3
+  },
+  { // Entry 516
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    (int)-2
+  },
+  { // Entry 517
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    (int)-1
+  },
+  { // Entry 518
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 519
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 520
+    0x1.p-52,
+    0x1.0p-1074,
+    (int)1022
+  },
+  { // Entry 521
+    0x1.p-74,
+    0x1.0p-1074,
+    (int)1000
+  },
+  { // Entry 522
+    0x1.p-75,
+    0x1.0p-1074,
+    (int)999
+  },
+  { // Entry 523
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 524
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 525
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 526
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 527
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 528
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 529
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 530
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 531
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 532
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 533
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 534
+    0x1.p-1025,
+    0x1.0p-2,
+    (int)-1023
+  },
+  { // Entry 535
+    0x1.p-1024,
+    0x1.0p-2,
+    (int)-1022
+  },
+  { // Entry 536
+    0x1.p-1024,
+    0x1.0p-1,
+    (int)-1023
+  },
+  { // Entry 537
+    0x1.p-1023,
+    0x1.0p-1,
+    (int)-1022
+  },
+  { // Entry 538
+    0x1.80p-1024,
+    0x1.8p-1,
+    (int)-1023
+  },
+  { // Entry 539
+    0x1.80p-1023,
+    0x1.8p-1,
+    (int)-1022
+  },
+  { // Entry 540
+    0.0,
+    0x1.0p-2,
+    (int)-1074
+  },
+  { // Entry 541
+    0.0,
+    0x1.0p-2,
+    (int)-1073
+  },
+  { // Entry 542
+    0.0,
+    0x1.0p-1,
+    (int)-1074
+  },
+  { // Entry 543
+    0x1.p-1074,
+    0x1.0p-1,
+    (int)-1073
+  },
+  { // Entry 544
+    0.0,
+    0x1.8p-1,
+    (int)-1074
+  },
+  { // Entry 545
+    0x1.80p-1074,
+    0x1.8p-1,
+    (int)-1073
+  },
+  { // Entry 546
+    0x1.p1023,
+    0x1.0p0,
+    (int)1023
+  },
+  { // Entry 547
+    0x1.p1022,
+    0x1.0p0,
+    (int)1022
+  },
+  { // Entry 548
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 549
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 550
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 551
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 552
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 553
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 554
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 555
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 556
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 557
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 558
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 559
+    0x1.p-1063,
+    0x1.0p-1074,
+    (int)11
+  },
+  { // Entry 560
+    0x1.p-1062,
+    0x1.0p-1074,
+    (int)12
+  },
+  { // Entry 561
+    0x1.p-1061,
+    0x1.0p-1074,
+    (int)13
+  },
+  { // Entry 562
+    0x1.p-1060,
+    0x1.0p-1074,
+    (int)14
+  },
+  { // Entry 563
+    0x1.p-1059,
+    0x1.0p-1074,
+    (int)15
+  },
+  { // Entry 564
+    0x1.p-1058,
+    0x1.0p-1074,
+    (int)16
+  },
+  { // Entry 565
+    0x1.p-1057,
+    0x1.0p-1074,
+    (int)17
+  },
+  { // Entry 566
+    0x1.p-1056,
+    0x1.0p-1074,
+    (int)18
+  },
+  { // Entry 567
+    0x1.p-1055,
+    0x1.0p-1074,
+    (int)19
+  },
+  { // Entry 568
+    0x1.p-1054,
+    0x1.0p-1074,
+    (int)20
+  },
+  { // Entry 569
+    0x1.p-1053,
+    0x1.0p-1074,
+    (int)21
+  },
+  { // Entry 570
+    0x1.p-1052,
+    0x1.0p-1074,
+    (int)22
+  },
+  { // Entry 571
+    0x1.p-1051,
+    0x1.0p-1074,
+    (int)23
+  },
+  { // Entry 572
+    0x1.p-1050,
+    0x1.0p-1074,
+    (int)24
+  },
+  { // Entry 573
+    0x1.p-1049,
+    0x1.0p-1074,
+    (int)25
+  },
+  { // Entry 574
+    0x1.p-1048,
+    0x1.0p-1074,
+    (int)26
+  },
+  { // Entry 575
+    0x1.p-1047,
+    0x1.0p-1074,
+    (int)27
+  },
+  { // Entry 576
+    0x1.p-1046,
+    0x1.0p-1074,
+    (int)28
+  },
+  { // Entry 577
+    0x1.p-1045,
+    0x1.0p-1074,
+    (int)29
+  },
+  { // Entry 578
+    0x1.p-1044,
+    0x1.0p-1074,
+    (int)30
+  },
+  { // Entry 579
+    0x1.p-1043,
+    0x1.0p-1074,
+    (int)31
+  },
+  { // Entry 580
+    0x1.p-1042,
+    0x1.0p-1074,
+    (int)32
+  },
+  { // Entry 581
+    0x1.p-1041,
+    0x1.0p-1074,
+    (int)33
+  },
+  { // Entry 582
+    0x1.p-1040,
+    0x1.0p-1074,
+    (int)34
+  },
+  { // Entry 583
+    0x1.p-1039,
+    0x1.0p-1074,
+    (int)35
+  },
+  { // Entry 584
+    0x1.p-1038,
+    0x1.0p-1074,
+    (int)36
+  },
+  { // Entry 585
+    0x1.p-1037,
+    0x1.0p-1074,
+    (int)37
+  },
+  { // Entry 586
+    0x1.p-1036,
+    0x1.0p-1074,
+    (int)38
+  },
+  { // Entry 587
+    0x1.p-1035,
+    0x1.0p-1074,
+    (int)39
+  },
+  { // Entry 588
+    0x1.p-1034,
+    0x1.0p-1074,
+    (int)40
+  },
+  { // Entry 589
+    0x1.p-1033,
+    0x1.0p-1074,
+    (int)41
+  },
+  { // Entry 590
+    0x1.p-1032,
+    0x1.0p-1074,
+    (int)42
+  },
+  { // Entry 591
+    0x1.p-1031,
+    0x1.0p-1074,
+    (int)43
+  },
+  { // Entry 592
+    0x1.p-1030,
+    0x1.0p-1074,
+    (int)44
+  },
+  { // Entry 593
+    0x1.p-1029,
+    0x1.0p-1074,
+    (int)45
+  },
+  { // Entry 594
+    0x1.p-1028,
+    0x1.0p-1074,
+    (int)46
+  },
+  { // Entry 595
+    0x1.p-1027,
+    0x1.0p-1074,
+    (int)47
+  },
+  { // Entry 596
+    0x1.p-1026,
+    0x1.0p-1074,
+    (int)48
+  },
+  { // Entry 597
+    0x1.p-1025,
+    0x1.0p-1074,
+    (int)49
+  },
+  { // Entry 598
+    0x1.p-1024,
+    0x1.0p-1074,
+    (int)50
+  },
+  { // Entry 599
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 600
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 601
+    0x1.p-1021,
+    0x1.0p-1074,
+    (int)53
+  },
+  { // Entry 602
+    0x1.p-1020,
+    0x1.0p-1074,
+    (int)54
+  },
+  { // Entry 603
+    0x1.p-1019,
+    0x1.0p-1074,
+    (int)55
+  },
+  { // Entry 604
+    0x1.p-1018,
+    0x1.0p-1074,
+    (int)56
+  },
+  { // Entry 605
+    0x1.p-1017,
+    0x1.0p-1074,
+    (int)57
+  },
+  { // Entry 606
+    0x1.p-1016,
+    0x1.0p-1074,
+    (int)58
+  },
+  { // Entry 607
+    0x1.p-1015,
+    0x1.0p-1074,
+    (int)59
+  },
+  { // Entry 608
+    0x1.p-1014,
+    0x1.0p-1074,
+    (int)60
+  },
+  { // Entry 609
+    0x1.p-1013,
+    0x1.0p-1074,
+    (int)61
+  },
+  { // Entry 610
+    0x1.p-1012,
+    0x1.0p-1074,
+    (int)62
+  },
+  { // Entry 611
+    0x1.p-1011,
+    0x1.0p-1074,
+    (int)63
+  },
+  { // Entry 612
+    0x1.p-1010,
+    0x1.0p-1074,
+    (int)64
+  },
+  { // Entry 613
+    0x1.p-1009,
+    0x1.0p-1074,
+    (int)65
+  },
+  { // Entry 614
+    0x1.p-1008,
+    0x1.0p-1074,
+    (int)66
+  },
+  { // Entry 615
+    0x1.p-1007,
+    0x1.0p-1074,
+    (int)67
+  },
+  { // Entry 616
+    0x1.p-1006,
+    0x1.0p-1074,
+    (int)68
+  },
+  { // Entry 617
+    0x1.p-1005,
+    0x1.0p-1074,
+    (int)69
+  },
+  { // Entry 618
+    0x1.p-1004,
+    0x1.0p-1074,
+    (int)70
+  },
+  { // Entry 619
+    0x1.p-1003,
+    0x1.0p-1074,
+    (int)71
+  },
+  { // Entry 620
+    0x1.p-1002,
+    0x1.0p-1074,
+    (int)72
+  },
+  { // Entry 621
+    0x1.p-1001,
+    0x1.0p-1074,
+    (int)73
+  },
+  { // Entry 622
+    0x1.p-1000,
+    0x1.0p-1074,
+    (int)74
+  },
+  { // Entry 623
+    0x1.p-999,
+    0x1.0p-1074,
+    (int)75
+  },
+  { // Entry 624
+    0x1.p-998,
+    0x1.0p-1074,
+    (int)76
+  },
+  { // Entry 625
+    0x1.p-997,
+    0x1.0p-1074,
+    (int)77
+  },
+  { // Entry 626
+    0x1.p-996,
+    0x1.0p-1074,
+    (int)78
+  },
+  { // Entry 627
+    0x1.p-995,
+    0x1.0p-1074,
+    (int)79
+  },
+  { // Entry 628
+    0x1.p-994,
+    0x1.0p-1074,
+    (int)80
+  },
+  { // Entry 629
+    0x1.p-993,
+    0x1.0p-1074,
+    (int)81
+  },
+  { // Entry 630
+    0x1.p-992,
+    0x1.0p-1074,
+    (int)82
+  },
+  { // Entry 631
+    0x1.p-991,
+    0x1.0p-1074,
+    (int)83
+  },
+  { // Entry 632
+    0x1.p-990,
+    0x1.0p-1074,
+    (int)84
+  },
+  { // Entry 633
+    0x1.p-989,
+    0x1.0p-1074,
+    (int)85
+  },
+  { // Entry 634
+    0x1.p-988,
+    0x1.0p-1074,
+    (int)86
+  },
+  { // Entry 635
+    0x1.p-987,
+    0x1.0p-1074,
+    (int)87
+  },
+  { // Entry 636
+    0x1.p-986,
+    0x1.0p-1074,
+    (int)88
+  },
+  { // Entry 637
+    0x1.p-985,
+    0x1.0p-1074,
+    (int)89
+  },
+  { // Entry 638
+    0x1.p-984,
+    0x1.0p-1074,
+    (int)90
+  },
+  { // Entry 639
+    0x1.p-983,
+    0x1.0p-1074,
+    (int)91
+  },
+  { // Entry 640
+    0x1.p-982,
+    0x1.0p-1074,
+    (int)92
+  },
+  { // Entry 641
+    0x1.p-981,
+    0x1.0p-1074,
+    (int)93
+  },
+  { // Entry 642
+    0x1.p-980,
+    0x1.0p-1074,
+    (int)94
+  },
+  { // Entry 643
+    0x1.p-979,
+    0x1.0p-1074,
+    (int)95
+  },
+  { // Entry 644
+    0x1.p-978,
+    0x1.0p-1074,
+    (int)96
+  },
+  { // Entry 645
+    0x1.p-977,
+    0x1.0p-1074,
+    (int)97
+  },
+  { // Entry 646
+    0x1.p-976,
+    0x1.0p-1074,
+    (int)98
+  },
+  { // Entry 647
+    0x1.p-975,
+    0x1.0p-1074,
+    (int)99
+  },
+  { // Entry 648
+    0x1.p-974,
+    0x1.0p-1074,
+    (int)100
+  },
+  { // Entry 649
+    0x1.p-973,
+    0x1.0p-1074,
+    (int)101
+  },
+  { // Entry 650
+    0x1.p-972,
+    0x1.0p-1074,
+    (int)102
+  },
+  { // Entry 651
+    0x1.p-971,
+    0x1.0p-1074,
+    (int)103
+  },
+  { // Entry 652
+    0x1.p-970,
+    0x1.0p-1074,
+    (int)104
+  },
+  { // Entry 653
+    0x1.p-969,
+    0x1.0p-1074,
+    (int)105
+  },
+  { // Entry 654
+    0x1.p-968,
+    0x1.0p-1074,
+    (int)106
+  },
+  { // Entry 655
+    0x1.p-967,
+    0x1.0p-1074,
+    (int)107
+  },
+  { // Entry 656
+    0x1.p-966,
+    0x1.0p-1074,
+    (int)108
+  },
+  { // Entry 657
+    0x1.p-965,
+    0x1.0p-1074,
+    (int)109
+  },
+  { // Entry 658
+    0x1.p-964,
+    0x1.0p-1074,
+    (int)110
+  },
+  { // Entry 659
+    0x1.p-963,
+    0x1.0p-1074,
+    (int)111
+  },
+  { // Entry 660
+    0x1.p-962,
+    0x1.0p-1074,
+    (int)112
+  },
+  { // Entry 661
+    0x1.p-961,
+    0x1.0p-1074,
+    (int)113
+  },
+  { // Entry 662
+    0x1.p-960,
+    0x1.0p-1074,
+    (int)114
+  },
+  { // Entry 663
+    0x1.p-959,
+    0x1.0p-1074,
+    (int)115
+  },
+  { // Entry 664
+    0x1.p-958,
+    0x1.0p-1074,
+    (int)116
+  },
+  { // Entry 665
+    0x1.p-957,
+    0x1.0p-1074,
+    (int)117
+  },
+  { // Entry 666
+    0x1.p-956,
+    0x1.0p-1074,
+    (int)118
+  },
+  { // Entry 667
+    0x1.p-955,
+    0x1.0p-1074,
+    (int)119
+  },
+  { // Entry 668
+    0x1.p-954,
+    0x1.0p-1074,
+    (int)120
+  },
+  { // Entry 669
+    0x1.p-953,
+    0x1.0p-1074,
+    (int)121
+  },
+  { // Entry 670
+    0x1.p-952,
+    0x1.0p-1074,
+    (int)122
+  },
+  { // Entry 671
+    0x1.p-951,
+    0x1.0p-1074,
+    (int)123
+  },
+  { // Entry 672
+    0x1.p-950,
+    0x1.0p-1074,
+    (int)124
+  },
+  { // Entry 673
+    0x1.p-949,
+    0x1.0p-1074,
+    (int)125
+  },
+  { // Entry 674
+    0x1.p-948,
+    0x1.0p-1074,
+    (int)126
+  },
+  { // Entry 675
+    0x1.p-947,
+    0x1.0p-1074,
+    (int)127
+  },
+  { // Entry 676
+    0x1.p-946,
+    0x1.0p-1074,
+    (int)128
+  },
+  { // Entry 677
+    0x1.p-945,
+    0x1.0p-1074,
+    (int)129
+  },
+  { // Entry 678
+    0x1.p-944,
+    0x1.0p-1074,
+    (int)130
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    (int)2
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    (int)3
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    (int)4
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    (int)5
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    (int)6
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    (int)7
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    (int)8
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    (int)9
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    (int)10
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    (int)11
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    (int)12
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    (int)13
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    (int)14
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    (int)15
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    (int)16
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    (int)17
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    (int)18
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    (int)19
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    (int)20
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    (int)21
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    (int)22
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    (int)23
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    (int)24
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    (int)25
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    (int)26
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    (int)27
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    (int)28
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    (int)29
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    (int)30
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    (int)31
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    (int)32
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    (int)33
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    (int)34
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    (int)35
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    (int)36
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    (int)37
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    (int)38
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    (int)39
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    (int)40
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    (int)41
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    (int)42
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    (int)43
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    (int)44
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    (int)45
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    (int)46
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    (int)47
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    (int)48
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    (int)49
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    (int)50
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    (int)53
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    (int)54
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    (int)55
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    (int)56
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    (int)57
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    (int)58
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    (int)59
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    (int)60
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    (int)61
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    (int)62
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    (int)63
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    (int)64
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    (int)65
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    (int)66
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    (int)67
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    (int)68
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    (int)69
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    (int)70
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    (int)71
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    (int)72
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    (int)73
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    (int)74
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    (int)75
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    (int)76
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    (int)77
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    (int)78
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    (int)79
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    (int)80
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    (int)81
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    (int)82
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    (int)83
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    (int)84
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    (int)85
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    (int)86
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    (int)87
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    (int)88
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    (int)89
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    (int)90
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    (int)91
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    (int)92
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    (int)93
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    (int)94
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    (int)95
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    (int)96
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    (int)97
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    (int)98
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    (int)99
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    (int)100
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    (int)101
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    (int)102
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    (int)103
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    (int)104
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    (int)105
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    (int)106
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    (int)107
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    (int)108
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    (int)109
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    (int)110
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    (int)111
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    (int)112
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    (int)113
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    (int)114
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    (int)115
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    (int)116
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    (int)117
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    (int)118
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    (int)119
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    (int)120
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    (int)121
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    (int)122
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    (int)123
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    (int)124
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    (int)125
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    (int)126
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    (int)127
+  },
+  { // Entry 807
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    (int)128
+  },
+  { // Entry 808
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    (int)129
+  },
+  { // Entry 809
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    (int)130
+  },
+  { // Entry 810
+    0x1.p0,
+    0x1.0p-1074,
+    (int)1074
+  },
+  { // Entry 811
+    0x1.p-1,
+    0x1.0p-1074,
+    (int)1073
+  },
+  { // Entry 812
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    (int)1074
+  },
+  { // Entry 813
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    (int)1073
+  },
+  { // Entry 814
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 815
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 816
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 817
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 818
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 819
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 820
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 821
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 822
+    0.0,
+    0.0,
+    (int)0
+  },
+  { // Entry 823
+    -0.0,
+    -0.0,
+    (int)0
+  },
+  { // Entry 824
+    0.0,
+    0.0,
+    (int)1
+  },
+  { // Entry 825
+    -0.0,
+    -0.0,
+    (int)1
+  },
+  { // Entry 826
+    0.0,
+    0.0,
+    (int)-1
+  },
+  { // Entry 827
+    -0.0,
+    -0.0,
+    (int)-1
+  },
+  { // Entry 828
+    0.0,
+    0.0,
+    (int)127
+  },
+  { // Entry 829
+    -0.0,
+    -0.0,
+    (int)127
+  },
+  { // Entry 830
+    0.0,
+    0.0,
+    (int)-127
+  },
+  { // Entry 831
+    -0.0,
+    -0.0,
+    (int)-127
+  },
+  { // Entry 832
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)0
+  },
+  { // Entry 833
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 834
+    0x1.p-1022,
+    0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 835
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 836
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 837
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 838
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 839
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 840
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 841
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)0
+  },
+  { // Entry 842
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)1
+  },
+  { // Entry 843
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)1
+  },
+  { // Entry 844
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 845
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 846
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)127
+  },
+  { // Entry 847
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)127
+  },
+  { // Entry 848
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 850
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 851
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 852
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 854
+    HUGE_VAL,
+    0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 855
+    HUGE_VAL,
+    0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 856
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 857
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 858
+    0x1.p-1023,
+    0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 859
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 860
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 861
+    -0.0,
+    -0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 862
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 863
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 864
+    0.0,
+    0x1.fffffffffffffp1023,
+    (int)-40000
+  },
+  { // Entry 865
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/ldexpf_intel_data.h b/tests/math_data/ldexpf_intel_data.h
new file mode 100644
index 0000000..b74ed93
--- /dev/null
+++ b/tests/math_data/ldexpf_intel_data.h
@@ -0,0 +1,4288 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, int> g_ldexpf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    (int)-126
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    (int)-127
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    (int)-127
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    (int)-10
+  },
+  { // Entry 6
+    0x1.29e412p-127,
+    0x1.29e412p-7,
+    (int)-120
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    (int)-148
+  },
+  { // Entry 8
+    0.0f,
+    0x1.ffff60p-127,
+    (int)-23
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff84p-127,
+    (int)-23
+  },
+  { // Entry 10
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    (int)-10
+  },
+  { // Entry 11
+    0.0f,
+    0x1.fffffep127,
+    (int)(-2147483647-1)
+  },
+  { // Entry 12
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)2147483647
+  },
+  { // Entry 13
+    -0x1.p-10,
+    -0x1.p0,
+    (int)-10
+  },
+  { // Entry 14
+    -0x1.p-9,
+    -0x1.p0,
+    (int)-9
+  },
+  { // Entry 15
+    -0x1.p-8,
+    -0x1.p0,
+    (int)-8
+  },
+  { // Entry 16
+    -0x1.p-7,
+    -0x1.p0,
+    (int)-7
+  },
+  { // Entry 17
+    -0x1.p-6,
+    -0x1.p0,
+    (int)-6
+  },
+  { // Entry 18
+    -0x1.p-5,
+    -0x1.p0,
+    (int)-5
+  },
+  { // Entry 19
+    -0x1.p-4,
+    -0x1.p0,
+    (int)-4
+  },
+  { // Entry 20
+    -0x1.p-3,
+    -0x1.p0,
+    (int)-3
+  },
+  { // Entry 21
+    -0x1.p-2,
+    -0x1.p0,
+    (int)-2
+  },
+  { // Entry 22
+    -0x1.p-1,
+    -0x1.p0,
+    (int)-1
+  },
+  { // Entry 23
+    -0x1.p0,
+    -0x1.p0,
+    (int)0
+  },
+  { // Entry 24
+    -0x1.p1,
+    -0x1.p0,
+    (int)1
+  },
+  { // Entry 25
+    -0x1.p2,
+    -0x1.p0,
+    (int)2
+  },
+  { // Entry 26
+    -0x1.p3,
+    -0x1.p0,
+    (int)3
+  },
+  { // Entry 27
+    -0x1.p4,
+    -0x1.p0,
+    (int)4
+  },
+  { // Entry 28
+    -0x1.p5,
+    -0x1.p0,
+    (int)5
+  },
+  { // Entry 29
+    -0x1.p6,
+    -0x1.p0,
+    (int)6
+  },
+  { // Entry 30
+    -0x1.p7,
+    -0x1.p0,
+    (int)7
+  },
+  { // Entry 31
+    -0x1.p8,
+    -0x1.p0,
+    (int)8
+  },
+  { // Entry 32
+    -0x1.p9,
+    -0x1.p0,
+    (int)9
+  },
+  { // Entry 33
+    -0x1.p10,
+    -0x1.p0,
+    (int)10
+  },
+  { // Entry 34
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    (int)-10
+  },
+  { // Entry 35
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    (int)-9
+  },
+  { // Entry 36
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    (int)-8
+  },
+  { // Entry 37
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    (int)-7
+  },
+  { // Entry 38
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    (int)-6
+  },
+  { // Entry 39
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    (int)-5
+  },
+  { // Entry 40
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    (int)-4
+  },
+  { // Entry 41
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    (int)-3
+  },
+  { // Entry 42
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    (int)-2
+  },
+  { // Entry 43
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    (int)-1
+  },
+  { // Entry 44
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    (int)0
+  },
+  { // Entry 45
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    (int)1
+  },
+  { // Entry 46
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    (int)2
+  },
+  { // Entry 47
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    (int)3
+  },
+  { // Entry 48
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    (int)4
+  },
+  { // Entry 49
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    (int)5
+  },
+  { // Entry 50
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    (int)6
+  },
+  { // Entry 51
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    (int)7
+  },
+  { // Entry 52
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    (int)8
+  },
+  { // Entry 53
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    (int)9
+  },
+  { // Entry 54
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    (int)10
+  },
+  { // Entry 55
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    (int)-10
+  },
+  { // Entry 56
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    (int)-9
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    (int)-8
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    (int)-7
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    (int)-6
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    (int)-5
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    (int)-4
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    (int)-3
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    (int)-2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    (int)-1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    (int)0
+  },
+  { // Entry 66
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    (int)1
+  },
+  { // Entry 67
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    (int)2
+  },
+  { // Entry 68
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    (int)3
+  },
+  { // Entry 69
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    (int)4
+  },
+  { // Entry 70
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    (int)5
+  },
+  { // Entry 71
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    (int)6
+  },
+  { // Entry 72
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    (int)7
+  },
+  { // Entry 73
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    (int)8
+  },
+  { // Entry 74
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    (int)9
+  },
+  { // Entry 75
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    (int)10
+  },
+  { // Entry 76
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    (int)-10
+  },
+  { // Entry 77
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    (int)-9
+  },
+  { // Entry 78
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    (int)-8
+  },
+  { // Entry 79
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    (int)-7
+  },
+  { // Entry 80
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    (int)-6
+  },
+  { // Entry 81
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    (int)-5
+  },
+  { // Entry 82
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    (int)-4
+  },
+  { // Entry 83
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    (int)-3
+  },
+  { // Entry 84
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    (int)-2
+  },
+  { // Entry 85
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    (int)-1
+  },
+  { // Entry 86
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    (int)0
+  },
+  { // Entry 87
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    (int)1
+  },
+  { // Entry 88
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    (int)2
+  },
+  { // Entry 89
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    (int)3
+  },
+  { // Entry 90
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    (int)4
+  },
+  { // Entry 91
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    (int)5
+  },
+  { // Entry 92
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    (int)6
+  },
+  { // Entry 93
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    (int)7
+  },
+  { // Entry 94
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    (int)8
+  },
+  { // Entry 95
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    (int)9
+  },
+  { // Entry 96
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    (int)10
+  },
+  { // Entry 97
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    (int)-10
+  },
+  { // Entry 98
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    (int)-9
+  },
+  { // Entry 99
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    (int)-8
+  },
+  { // Entry 100
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    (int)-7
+  },
+  { // Entry 101
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    (int)-6
+  },
+  { // Entry 102
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    (int)-5
+  },
+  { // Entry 103
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    (int)-4
+  },
+  { // Entry 104
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    (int)-3
+  },
+  { // Entry 105
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    (int)-2
+  },
+  { // Entry 106
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    (int)-1
+  },
+  { // Entry 107
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    (int)0
+  },
+  { // Entry 108
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    (int)1
+  },
+  { // Entry 109
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    (int)2
+  },
+  { // Entry 110
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    (int)3
+  },
+  { // Entry 111
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    (int)4
+  },
+  { // Entry 112
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    (int)5
+  },
+  { // Entry 113
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    (int)6
+  },
+  { // Entry 114
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    (int)7
+  },
+  { // Entry 115
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    (int)8
+  },
+  { // Entry 116
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    (int)9
+  },
+  { // Entry 117
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    (int)10
+  },
+  { // Entry 118
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    (int)-10
+  },
+  { // Entry 119
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    (int)-9
+  },
+  { // Entry 120
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    (int)-8
+  },
+  { // Entry 121
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    (int)-7
+  },
+  { // Entry 122
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    (int)-6
+  },
+  { // Entry 123
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    (int)-5
+  },
+  { // Entry 124
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    (int)-4
+  },
+  { // Entry 125
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    (int)-3
+  },
+  { // Entry 126
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    (int)-2
+  },
+  { // Entry 127
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    (int)-1
+  },
+  { // Entry 128
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    (int)0
+  },
+  { // Entry 129
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    (int)1
+  },
+  { // Entry 130
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    (int)2
+  },
+  { // Entry 131
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    (int)3
+  },
+  { // Entry 132
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    (int)4
+  },
+  { // Entry 133
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    (int)5
+  },
+  { // Entry 134
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    (int)6
+  },
+  { // Entry 135
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    (int)7
+  },
+  { // Entry 136
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    (int)8
+  },
+  { // Entry 137
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    (int)9
+  },
+  { // Entry 138
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    (int)10
+  },
+  { // Entry 139
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    (int)-10
+  },
+  { // Entry 140
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    (int)-9
+  },
+  { // Entry 141
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    (int)-8
+  },
+  { // Entry 142
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    (int)-7
+  },
+  { // Entry 143
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    (int)-6
+  },
+  { // Entry 144
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    (int)-5
+  },
+  { // Entry 145
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    (int)-4
+  },
+  { // Entry 146
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    (int)-3
+  },
+  { // Entry 147
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    (int)-2
+  },
+  { // Entry 148
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    (int)-1
+  },
+  { // Entry 149
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    (int)0
+  },
+  { // Entry 150
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    (int)1
+  },
+  { // Entry 151
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    (int)2
+  },
+  { // Entry 152
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    (int)3
+  },
+  { // Entry 153
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    (int)4
+  },
+  { // Entry 154
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    (int)5
+  },
+  { // Entry 155
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    (int)6
+  },
+  { // Entry 156
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    (int)7
+  },
+  { // Entry 157
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    (int)8
+  },
+  { // Entry 158
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    (int)9
+  },
+  { // Entry 159
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    (int)10
+  },
+  { // Entry 160
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    (int)-10
+  },
+  { // Entry 161
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    (int)-9
+  },
+  { // Entry 162
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    (int)-8
+  },
+  { // Entry 163
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    (int)-7
+  },
+  { // Entry 164
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    (int)-6
+  },
+  { // Entry 165
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    (int)-5
+  },
+  { // Entry 166
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    (int)-4
+  },
+  { // Entry 167
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    (int)-3
+  },
+  { // Entry 168
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    (int)-2
+  },
+  { // Entry 169
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    (int)-1
+  },
+  { // Entry 170
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    (int)0
+  },
+  { // Entry 171
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    (int)1
+  },
+  { // Entry 172
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    (int)2
+  },
+  { // Entry 173
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    (int)3
+  },
+  { // Entry 174
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    (int)4
+  },
+  { // Entry 175
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    (int)5
+  },
+  { // Entry 176
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    (int)6
+  },
+  { // Entry 177
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    (int)7
+  },
+  { // Entry 178
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    (int)8
+  },
+  { // Entry 179
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    (int)9
+  },
+  { // Entry 180
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    (int)10
+  },
+  { // Entry 181
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    (int)-10
+  },
+  { // Entry 182
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    (int)-9
+  },
+  { // Entry 183
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    (int)-8
+  },
+  { // Entry 184
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    (int)-7
+  },
+  { // Entry 185
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    (int)-6
+  },
+  { // Entry 186
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    (int)-5
+  },
+  { // Entry 187
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    (int)-4
+  },
+  { // Entry 188
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    (int)-3
+  },
+  { // Entry 189
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    (int)-2
+  },
+  { // Entry 190
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    (int)-1
+  },
+  { // Entry 191
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    (int)0
+  },
+  { // Entry 192
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    (int)1
+  },
+  { // Entry 193
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    (int)2
+  },
+  { // Entry 194
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    (int)3
+  },
+  { // Entry 195
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    (int)4
+  },
+  { // Entry 196
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    (int)5
+  },
+  { // Entry 197
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    (int)6
+  },
+  { // Entry 198
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    (int)7
+  },
+  { // Entry 199
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    (int)8
+  },
+  { // Entry 200
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    (int)9
+  },
+  { // Entry 201
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    (int)10
+  },
+  { // Entry 202
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    (int)-10
+  },
+  { // Entry 203
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    (int)-9
+  },
+  { // Entry 204
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    (int)-8
+  },
+  { // Entry 205
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    (int)-7
+  },
+  { // Entry 206
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    (int)-6
+  },
+  { // Entry 207
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    (int)-5
+  },
+  { // Entry 208
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    (int)-4
+  },
+  { // Entry 209
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    (int)-3
+  },
+  { // Entry 210
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    (int)-2
+  },
+  { // Entry 211
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    (int)-1
+  },
+  { // Entry 212
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    (int)0
+  },
+  { // Entry 213
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    (int)1
+  },
+  { // Entry 214
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    (int)2
+  },
+  { // Entry 215
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    (int)3
+  },
+  { // Entry 216
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    (int)4
+  },
+  { // Entry 217
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    (int)5
+  },
+  { // Entry 218
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    (int)6
+  },
+  { // Entry 219
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    (int)7
+  },
+  { // Entry 220
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    (int)8
+  },
+  { // Entry 221
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    (int)9
+  },
+  { // Entry 222
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    (int)10
+  },
+  { // Entry 223
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    (int)-10
+  },
+  { // Entry 224
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    (int)-9
+  },
+  { // Entry 225
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    (int)-8
+  },
+  { // Entry 226
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    (int)-7
+  },
+  { // Entry 227
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    (int)-6
+  },
+  { // Entry 228
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    (int)-5
+  },
+  { // Entry 229
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    (int)-4
+  },
+  { // Entry 230
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    (int)-3
+  },
+  { // Entry 231
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    (int)-2
+  },
+  { // Entry 232
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    (int)-1
+  },
+  { // Entry 233
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    (int)0
+  },
+  { // Entry 234
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    (int)1
+  },
+  { // Entry 235
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    (int)2
+  },
+  { // Entry 236
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    (int)3
+  },
+  { // Entry 237
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    (int)4
+  },
+  { // Entry 238
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    (int)5
+  },
+  { // Entry 239
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    (int)6
+  },
+  { // Entry 240
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    (int)7
+  },
+  { // Entry 241
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    (int)8
+  },
+  { // Entry 242
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    (int)9
+  },
+  { // Entry 243
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    (int)10
+  },
+  { // Entry 244
+    0x1.80p-33,
+    0x1.80p-23,
+    (int)-10
+  },
+  { // Entry 245
+    0x1.80p-32,
+    0x1.80p-23,
+    (int)-9
+  },
+  { // Entry 246
+    0x1.80p-31,
+    0x1.80p-23,
+    (int)-8
+  },
+  { // Entry 247
+    0x1.80p-30,
+    0x1.80p-23,
+    (int)-7
+  },
+  { // Entry 248
+    0x1.80p-29,
+    0x1.80p-23,
+    (int)-6
+  },
+  { // Entry 249
+    0x1.80p-28,
+    0x1.80p-23,
+    (int)-5
+  },
+  { // Entry 250
+    0x1.80p-27,
+    0x1.80p-23,
+    (int)-4
+  },
+  { // Entry 251
+    0x1.80p-26,
+    0x1.80p-23,
+    (int)-3
+  },
+  { // Entry 252
+    0x1.80p-25,
+    0x1.80p-23,
+    (int)-2
+  },
+  { // Entry 253
+    0x1.80p-24,
+    0x1.80p-23,
+    (int)-1
+  },
+  { // Entry 254
+    0x1.80p-23,
+    0x1.80p-23,
+    (int)0
+  },
+  { // Entry 255
+    0x1.80p-22,
+    0x1.80p-23,
+    (int)1
+  },
+  { // Entry 256
+    0x1.80p-21,
+    0x1.80p-23,
+    (int)2
+  },
+  { // Entry 257
+    0x1.80p-20,
+    0x1.80p-23,
+    (int)3
+  },
+  { // Entry 258
+    0x1.80p-19,
+    0x1.80p-23,
+    (int)4
+  },
+  { // Entry 259
+    0x1.80p-18,
+    0x1.80p-23,
+    (int)5
+  },
+  { // Entry 260
+    0x1.80p-17,
+    0x1.80p-23,
+    (int)6
+  },
+  { // Entry 261
+    0x1.80p-16,
+    0x1.80p-23,
+    (int)7
+  },
+  { // Entry 262
+    0x1.80p-15,
+    0x1.80p-23,
+    (int)8
+  },
+  { // Entry 263
+    0x1.80p-14,
+    0x1.80p-23,
+    (int)9
+  },
+  { // Entry 264
+    0x1.80p-13,
+    0x1.80p-23,
+    (int)10
+  },
+  { // Entry 265
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    (int)-10
+  },
+  { // Entry 266
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    (int)-9
+  },
+  { // Entry 267
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    (int)-8
+  },
+  { // Entry 268
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    (int)-7
+  },
+  { // Entry 269
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    (int)-6
+  },
+  { // Entry 270
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    (int)-5
+  },
+  { // Entry 271
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    (int)-4
+  },
+  { // Entry 272
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    (int)-3
+  },
+  { // Entry 273
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    (int)-2
+  },
+  { // Entry 274
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    (int)-1
+  },
+  { // Entry 275
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    (int)0
+  },
+  { // Entry 276
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    (int)1
+  },
+  { // Entry 277
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    (int)2
+  },
+  { // Entry 278
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    (int)3
+  },
+  { // Entry 279
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    (int)4
+  },
+  { // Entry 280
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    (int)5
+  },
+  { // Entry 281
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    (int)6
+  },
+  { // Entry 282
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    (int)7
+  },
+  { // Entry 283
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    (int)8
+  },
+  { // Entry 284
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    (int)9
+  },
+  { // Entry 285
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    (int)10
+  },
+  { // Entry 286
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    (int)-10
+  },
+  { // Entry 287
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    (int)-9
+  },
+  { // Entry 288
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    (int)-8
+  },
+  { // Entry 289
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    (int)-7
+  },
+  { // Entry 290
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    (int)-6
+  },
+  { // Entry 291
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    (int)-5
+  },
+  { // Entry 292
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    (int)-4
+  },
+  { // Entry 293
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    (int)-3
+  },
+  { // Entry 294
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    (int)-2
+  },
+  { // Entry 295
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    (int)-1
+  },
+  { // Entry 296
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    (int)0
+  },
+  { // Entry 297
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    (int)1
+  },
+  { // Entry 298
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    (int)2
+  },
+  { // Entry 299
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    (int)3
+  },
+  { // Entry 300
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    (int)4
+  },
+  { // Entry 301
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    (int)5
+  },
+  { // Entry 302
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    (int)6
+  },
+  { // Entry 303
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    (int)7
+  },
+  { // Entry 304
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    (int)8
+  },
+  { // Entry 305
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    (int)9
+  },
+  { // Entry 306
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    (int)10
+  },
+  { // Entry 307
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    (int)-10
+  },
+  { // Entry 308
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    (int)-9
+  },
+  { // Entry 309
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    (int)-8
+  },
+  { // Entry 310
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    (int)-7
+  },
+  { // Entry 311
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    (int)-6
+  },
+  { // Entry 312
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    (int)-5
+  },
+  { // Entry 313
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    (int)-4
+  },
+  { // Entry 314
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    (int)-3
+  },
+  { // Entry 315
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    (int)-2
+  },
+  { // Entry 316
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    (int)-1
+  },
+  { // Entry 317
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    (int)0
+  },
+  { // Entry 318
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    (int)1
+  },
+  { // Entry 319
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    (int)2
+  },
+  { // Entry 320
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    (int)3
+  },
+  { // Entry 321
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    (int)4
+  },
+  { // Entry 322
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    (int)5
+  },
+  { // Entry 323
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    (int)6
+  },
+  { // Entry 324
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    (int)7
+  },
+  { // Entry 325
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    (int)8
+  },
+  { // Entry 326
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    (int)9
+  },
+  { // Entry 327
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    (int)10
+  },
+  { // Entry 328
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    (int)-10
+  },
+  { // Entry 329
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    (int)-9
+  },
+  { // Entry 330
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    (int)-8
+  },
+  { // Entry 331
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    (int)-7
+  },
+  { // Entry 332
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    (int)-6
+  },
+  { // Entry 333
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    (int)-5
+  },
+  { // Entry 334
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    (int)-4
+  },
+  { // Entry 335
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    (int)-3
+  },
+  { // Entry 336
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    (int)-2
+  },
+  { // Entry 337
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    (int)-1
+  },
+  { // Entry 338
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    (int)0
+  },
+  { // Entry 339
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    (int)1
+  },
+  { // Entry 340
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    (int)2
+  },
+  { // Entry 341
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    (int)3
+  },
+  { // Entry 342
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    (int)4
+  },
+  { // Entry 343
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    (int)5
+  },
+  { // Entry 344
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    (int)6
+  },
+  { // Entry 345
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    (int)7
+  },
+  { // Entry 346
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    (int)8
+  },
+  { // Entry 347
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    (int)9
+  },
+  { // Entry 348
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    (int)10
+  },
+  { // Entry 349
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    (int)-10
+  },
+  { // Entry 350
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    (int)-9
+  },
+  { // Entry 351
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    (int)-8
+  },
+  { // Entry 352
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    (int)-7
+  },
+  { // Entry 353
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    (int)-6
+  },
+  { // Entry 354
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    (int)-5
+  },
+  { // Entry 355
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    (int)-4
+  },
+  { // Entry 356
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    (int)-3
+  },
+  { // Entry 357
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    (int)-2
+  },
+  { // Entry 358
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    (int)-1
+  },
+  { // Entry 359
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    (int)0
+  },
+  { // Entry 360
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    (int)1
+  },
+  { // Entry 361
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    (int)2
+  },
+  { // Entry 362
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    (int)3
+  },
+  { // Entry 363
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    (int)4
+  },
+  { // Entry 364
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    (int)5
+  },
+  { // Entry 365
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    (int)6
+  },
+  { // Entry 366
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    (int)7
+  },
+  { // Entry 367
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    (int)8
+  },
+  { // Entry 368
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    (int)9
+  },
+  { // Entry 369
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    (int)10
+  },
+  { // Entry 370
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    (int)-10
+  },
+  { // Entry 371
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    (int)-9
+  },
+  { // Entry 372
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    (int)-8
+  },
+  { // Entry 373
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    (int)-7
+  },
+  { // Entry 374
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    (int)-6
+  },
+  { // Entry 375
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    (int)-5
+  },
+  { // Entry 376
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    (int)-4
+  },
+  { // Entry 377
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    (int)-3
+  },
+  { // Entry 378
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    (int)-2
+  },
+  { // Entry 379
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    (int)-1
+  },
+  { // Entry 380
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    (int)0
+  },
+  { // Entry 381
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    (int)1
+  },
+  { // Entry 382
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    (int)2
+  },
+  { // Entry 383
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    (int)3
+  },
+  { // Entry 384
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    (int)4
+  },
+  { // Entry 385
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    (int)5
+  },
+  { // Entry 386
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    (int)6
+  },
+  { // Entry 387
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    (int)7
+  },
+  { // Entry 388
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    (int)8
+  },
+  { // Entry 389
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    (int)9
+  },
+  { // Entry 390
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    (int)10
+  },
+  { // Entry 391
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    (int)-10
+  },
+  { // Entry 392
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    (int)-9
+  },
+  { // Entry 393
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    (int)-8
+  },
+  { // Entry 394
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    (int)-7
+  },
+  { // Entry 395
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    (int)-6
+  },
+  { // Entry 396
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    (int)-5
+  },
+  { // Entry 397
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    (int)-4
+  },
+  { // Entry 398
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    (int)-3
+  },
+  { // Entry 399
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    (int)-2
+  },
+  { // Entry 400
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    (int)-1
+  },
+  { // Entry 401
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    (int)0
+  },
+  { // Entry 402
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    (int)1
+  },
+  { // Entry 403
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    (int)2
+  },
+  { // Entry 404
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    (int)3
+  },
+  { // Entry 405
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    (int)4
+  },
+  { // Entry 406
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    (int)5
+  },
+  { // Entry 407
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    (int)6
+  },
+  { // Entry 408
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    (int)7
+  },
+  { // Entry 409
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    (int)8
+  },
+  { // Entry 410
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    (int)9
+  },
+  { // Entry 411
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    (int)10
+  },
+  { // Entry 412
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    (int)-10
+  },
+  { // Entry 413
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    (int)-9
+  },
+  { // Entry 414
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    (int)-8
+  },
+  { // Entry 415
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    (int)-7
+  },
+  { // Entry 416
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    (int)-6
+  },
+  { // Entry 417
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    (int)-5
+  },
+  { // Entry 418
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    (int)-4
+  },
+  { // Entry 419
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    (int)-3
+  },
+  { // Entry 420
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    (int)-2
+  },
+  { // Entry 421
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    (int)-1
+  },
+  { // Entry 422
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    (int)0
+  },
+  { // Entry 423
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    (int)1
+  },
+  { // Entry 424
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    (int)2
+  },
+  { // Entry 425
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    (int)3
+  },
+  { // Entry 426
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    (int)4
+  },
+  { // Entry 427
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    (int)5
+  },
+  { // Entry 428
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    (int)6
+  },
+  { // Entry 429
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    (int)7
+  },
+  { // Entry 430
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    (int)8
+  },
+  { // Entry 431
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    (int)9
+  },
+  { // Entry 432
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    (int)10
+  },
+  { // Entry 433
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    (int)-10
+  },
+  { // Entry 434
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    (int)-9
+  },
+  { // Entry 435
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    (int)-8
+  },
+  { // Entry 436
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    (int)-7
+  },
+  { // Entry 437
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    (int)-6
+  },
+  { // Entry 438
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    (int)-5
+  },
+  { // Entry 439
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    (int)-4
+  },
+  { // Entry 440
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    (int)-3
+  },
+  { // Entry 441
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    (int)-2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    (int)-1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    (int)0
+  },
+  { // Entry 444
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    (int)1
+  },
+  { // Entry 445
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    (int)2
+  },
+  { // Entry 446
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    (int)3
+  },
+  { // Entry 447
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    (int)4
+  },
+  { // Entry 448
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    (int)5
+  },
+  { // Entry 449
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    (int)6
+  },
+  { // Entry 450
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    (int)7
+  },
+  { // Entry 451
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    (int)8
+  },
+  { // Entry 452
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    (int)9
+  },
+  { // Entry 453
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    (int)10
+  },
+  { // Entry 454
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    (int)-10
+  },
+  { // Entry 455
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    (int)-9
+  },
+  { // Entry 456
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    (int)-8
+  },
+  { // Entry 457
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    (int)-7
+  },
+  { // Entry 458
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    (int)-6
+  },
+  { // Entry 459
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    (int)-5
+  },
+  { // Entry 460
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    (int)-4
+  },
+  { // Entry 461
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    (int)-3
+  },
+  { // Entry 462
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    (int)-2
+  },
+  { // Entry 463
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    (int)-1
+  },
+  { // Entry 464
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    (int)0
+  },
+  { // Entry 465
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    (int)1
+  },
+  { // Entry 466
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    (int)2
+  },
+  { // Entry 467
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    (int)3
+  },
+  { // Entry 468
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    (int)4
+  },
+  { // Entry 469
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    (int)5
+  },
+  { // Entry 470
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    (int)6
+  },
+  { // Entry 471
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    (int)7
+  },
+  { // Entry 472
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    (int)8
+  },
+  { // Entry 473
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    (int)9
+  },
+  { // Entry 474
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    (int)10
+  },
+  { // Entry 475
+    0x1.p-10,
+    0x1.p0,
+    (int)-10
+  },
+  { // Entry 476
+    0x1.p-9,
+    0x1.p0,
+    (int)-9
+  },
+  { // Entry 477
+    0x1.p-8,
+    0x1.p0,
+    (int)-8
+  },
+  { // Entry 478
+    0x1.p-7,
+    0x1.p0,
+    (int)-7
+  },
+  { // Entry 479
+    0x1.p-6,
+    0x1.p0,
+    (int)-6
+  },
+  { // Entry 480
+    0x1.p-5,
+    0x1.p0,
+    (int)-5
+  },
+  { // Entry 481
+    0x1.p-4,
+    0x1.p0,
+    (int)-4
+  },
+  { // Entry 482
+    0x1.p-3,
+    0x1.p0,
+    (int)-3
+  },
+  { // Entry 483
+    0x1.p-2,
+    0x1.p0,
+    (int)-2
+  },
+  { // Entry 484
+    0x1.p-1,
+    0x1.p0,
+    (int)-1
+  },
+  { // Entry 485
+    0x1.p0,
+    0x1.p0,
+    (int)0
+  },
+  { // Entry 486
+    0x1.p1,
+    0x1.p0,
+    (int)1
+  },
+  { // Entry 487
+    0x1.p2,
+    0x1.p0,
+    (int)2
+  },
+  { // Entry 488
+    0x1.p3,
+    0x1.p0,
+    (int)3
+  },
+  { // Entry 489
+    0x1.p4,
+    0x1.p0,
+    (int)4
+  },
+  { // Entry 490
+    0x1.p5,
+    0x1.p0,
+    (int)5
+  },
+  { // Entry 491
+    0x1.p6,
+    0x1.p0,
+    (int)6
+  },
+  { // Entry 492
+    0x1.p7,
+    0x1.p0,
+    (int)7
+  },
+  { // Entry 493
+    0x1.p8,
+    0x1.p0,
+    (int)8
+  },
+  { // Entry 494
+    0x1.p9,
+    0x1.p0,
+    (int)9
+  },
+  { // Entry 495
+    0x1.p10,
+    0x1.p0,
+    (int)10
+  },
+  { // Entry 496
+    0x1.fffffep0,
+    0x1.fffffep127,
+    (int)-127
+  },
+  { // Entry 497
+    0x1.fffffep1,
+    0x1.fffffep127,
+    (int)-126
+  },
+  { // Entry 498
+    0x1.fffffep117,
+    0x1.fffffep127,
+    (int)-10
+  },
+  { // Entry 499
+    0x1.fffffep118,
+    0x1.fffffep127,
+    (int)-9
+  },
+  { // Entry 500
+    0x1.fffffep119,
+    0x1.fffffep127,
+    (int)-8
+  },
+  { // Entry 501
+    0x1.fffffep120,
+    0x1.fffffep127,
+    (int)-7
+  },
+  { // Entry 502
+    0x1.fffffep121,
+    0x1.fffffep127,
+    (int)-6
+  },
+  { // Entry 503
+    0x1.fffffep122,
+    0x1.fffffep127,
+    (int)-5
+  },
+  { // Entry 504
+    0x1.fffffep123,
+    0x1.fffffep127,
+    (int)-4
+  },
+  { // Entry 505
+    0x1.fffffep124,
+    0x1.fffffep127,
+    (int)-3
+  },
+  { // Entry 506
+    0x1.fffffep125,
+    0x1.fffffep127,
+    (int)-2
+  },
+  { // Entry 507
+    0x1.fffffep126,
+    0x1.fffffep127,
+    (int)-1
+  },
+  { // Entry 508
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 509
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 510
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 511
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 513
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 514
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 515
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 516
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 517
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 518
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 519
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 520
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 521
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 522
+    0x1.p-129,
+    0x1.p-2,
+    (int)-127
+  },
+  { // Entry 523
+    0x1.p-128,
+    0x1.p-2,
+    (int)-126
+  },
+  { // Entry 524
+    0x1.p-128,
+    0x1.p-1,
+    (int)-127
+  },
+  { // Entry 525
+    0x1.p-127,
+    0x1.p-1,
+    (int)-126
+  },
+  { // Entry 526
+    0x1.80p-128,
+    0x1.80p-1,
+    (int)-127
+  },
+  { // Entry 527
+    0x1.80p-127,
+    0x1.80p-1,
+    (int)-126
+  },
+  { // Entry 528
+    0.0f,
+    0x1.p-2,
+    (int)-149
+  },
+  { // Entry 529
+    0.0f,
+    0x1.p-2,
+    (int)-148
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-1,
+    (int)-149
+  },
+  { // Entry 531
+    0x1.p-149,
+    0x1.p-1,
+    (int)-148
+  },
+  { // Entry 532
+    0.0f,
+    0x1.80p-1,
+    (int)-149
+  },
+  { // Entry 533
+    0x1.80p-149,
+    0x1.80p-1,
+    (int)-148
+  },
+  { // Entry 534
+    0x1.p127,
+    0x1.p0,
+    (int)127
+  },
+  { // Entry 535
+    0x1.p126,
+    0x1.p0,
+    (int)126
+  },
+  { // Entry 536
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 537
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 538
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 539
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 540
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 541
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 542
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 543
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 544
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 545
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 546
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 547
+    0x1.p-138,
+    0x1.p-149,
+    (int)11
+  },
+  { // Entry 548
+    0x1.p-137,
+    0x1.p-149,
+    (int)12
+  },
+  { // Entry 549
+    0x1.p-136,
+    0x1.p-149,
+    (int)13
+  },
+  { // Entry 550
+    0x1.p-135,
+    0x1.p-149,
+    (int)14
+  },
+  { // Entry 551
+    0x1.p-134,
+    0x1.p-149,
+    (int)15
+  },
+  { // Entry 552
+    0x1.p-133,
+    0x1.p-149,
+    (int)16
+  },
+  { // Entry 553
+    0x1.p-132,
+    0x1.p-149,
+    (int)17
+  },
+  { // Entry 554
+    0x1.p-131,
+    0x1.p-149,
+    (int)18
+  },
+  { // Entry 555
+    0x1.p-130,
+    0x1.p-149,
+    (int)19
+  },
+  { // Entry 556
+    0x1.p-129,
+    0x1.p-149,
+    (int)20
+  },
+  { // Entry 557
+    0x1.p-128,
+    0x1.p-149,
+    (int)21
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 559
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 560
+    0x1.p-125,
+    0x1.p-149,
+    (int)24
+  },
+  { // Entry 561
+    0x1.p-124,
+    0x1.p-149,
+    (int)25
+  },
+  { // Entry 562
+    0x1.p-123,
+    0x1.p-149,
+    (int)26
+  },
+  { // Entry 563
+    0x1.p-122,
+    0x1.p-149,
+    (int)27
+  },
+  { // Entry 564
+    0x1.p-121,
+    0x1.p-149,
+    (int)28
+  },
+  { // Entry 565
+    0x1.p-120,
+    0x1.p-149,
+    (int)29
+  },
+  { // Entry 566
+    0x1.p-119,
+    0x1.p-149,
+    (int)30
+  },
+  { // Entry 567
+    0x1.p-118,
+    0x1.p-149,
+    (int)31
+  },
+  { // Entry 568
+    0x1.p-117,
+    0x1.p-149,
+    (int)32
+  },
+  { // Entry 569
+    0x1.p-116,
+    0x1.p-149,
+    (int)33
+  },
+  { // Entry 570
+    0x1.p-115,
+    0x1.p-149,
+    (int)34
+  },
+  { // Entry 571
+    0x1.p-114,
+    0x1.p-149,
+    (int)35
+  },
+  { // Entry 572
+    0x1.p-113,
+    0x1.p-149,
+    (int)36
+  },
+  { // Entry 573
+    0x1.p-112,
+    0x1.p-149,
+    (int)37
+  },
+  { // Entry 574
+    0x1.p-111,
+    0x1.p-149,
+    (int)38
+  },
+  { // Entry 575
+    0x1.p-110,
+    0x1.p-149,
+    (int)39
+  },
+  { // Entry 576
+    0x1.p-109,
+    0x1.p-149,
+    (int)40
+  },
+  { // Entry 577
+    0x1.p-108,
+    0x1.p-149,
+    (int)41
+  },
+  { // Entry 578
+    0x1.p-107,
+    0x1.p-149,
+    (int)42
+  },
+  { // Entry 579
+    0x1.p-106,
+    0x1.p-149,
+    (int)43
+  },
+  { // Entry 580
+    0x1.p-105,
+    0x1.p-149,
+    (int)44
+  },
+  { // Entry 581
+    0x1.p-104,
+    0x1.p-149,
+    (int)45
+  },
+  { // Entry 582
+    0x1.p-103,
+    0x1.p-149,
+    (int)46
+  },
+  { // Entry 583
+    0x1.p-102,
+    0x1.p-149,
+    (int)47
+  },
+  { // Entry 584
+    0x1.p-101,
+    0x1.p-149,
+    (int)48
+  },
+  { // Entry 585
+    0x1.p-100,
+    0x1.p-149,
+    (int)49
+  },
+  { // Entry 586
+    0x1.p-99,
+    0x1.p-149,
+    (int)50
+  },
+  { // Entry 587
+    0x1.p-98,
+    0x1.p-149,
+    (int)51
+  },
+  { // Entry 588
+    0x1.p-97,
+    0x1.p-149,
+    (int)52
+  },
+  { // Entry 589
+    0x1.p-96,
+    0x1.p-149,
+    (int)53
+  },
+  { // Entry 590
+    0x1.p-95,
+    0x1.p-149,
+    (int)54
+  },
+  { // Entry 591
+    0x1.p-94,
+    0x1.p-149,
+    (int)55
+  },
+  { // Entry 592
+    0x1.p-93,
+    0x1.p-149,
+    (int)56
+  },
+  { // Entry 593
+    0x1.p-92,
+    0x1.p-149,
+    (int)57
+  },
+  { // Entry 594
+    0x1.p-91,
+    0x1.p-149,
+    (int)58
+  },
+  { // Entry 595
+    0x1.p-90,
+    0x1.p-149,
+    (int)59
+  },
+  { // Entry 596
+    0x1.p-89,
+    0x1.p-149,
+    (int)60
+  },
+  { // Entry 597
+    0x1.p-88,
+    0x1.p-149,
+    (int)61
+  },
+  { // Entry 598
+    0x1.p-87,
+    0x1.p-149,
+    (int)62
+  },
+  { // Entry 599
+    0x1.p-86,
+    0x1.p-149,
+    (int)63
+  },
+  { // Entry 600
+    0x1.p-85,
+    0x1.p-149,
+    (int)64
+  },
+  { // Entry 601
+    0x1.p-84,
+    0x1.p-149,
+    (int)65
+  },
+  { // Entry 602
+    0x1.p-83,
+    0x1.p-149,
+    (int)66
+  },
+  { // Entry 603
+    0x1.p-82,
+    0x1.p-149,
+    (int)67
+  },
+  { // Entry 604
+    0x1.p-81,
+    0x1.p-149,
+    (int)68
+  },
+  { // Entry 605
+    0x1.p-80,
+    0x1.p-149,
+    (int)69
+  },
+  { // Entry 606
+    0x1.p-79,
+    0x1.p-149,
+    (int)70
+  },
+  { // Entry 607
+    0x1.p-78,
+    0x1.p-149,
+    (int)71
+  },
+  { // Entry 608
+    0x1.p-77,
+    0x1.p-149,
+    (int)72
+  },
+  { // Entry 609
+    0x1.p-76,
+    0x1.p-149,
+    (int)73
+  },
+  { // Entry 610
+    0x1.p-75,
+    0x1.p-149,
+    (int)74
+  },
+  { // Entry 611
+    0x1.p-74,
+    0x1.p-149,
+    (int)75
+  },
+  { // Entry 612
+    0x1.p-73,
+    0x1.p-149,
+    (int)76
+  },
+  { // Entry 613
+    0x1.p-72,
+    0x1.p-149,
+    (int)77
+  },
+  { // Entry 614
+    0x1.p-71,
+    0x1.p-149,
+    (int)78
+  },
+  { // Entry 615
+    0x1.p-70,
+    0x1.p-149,
+    (int)79
+  },
+  { // Entry 616
+    0x1.p-69,
+    0x1.p-149,
+    (int)80
+  },
+  { // Entry 617
+    0x1.p-68,
+    0x1.p-149,
+    (int)81
+  },
+  { // Entry 618
+    0x1.p-67,
+    0x1.p-149,
+    (int)82
+  },
+  { // Entry 619
+    0x1.p-66,
+    0x1.p-149,
+    (int)83
+  },
+  { // Entry 620
+    0x1.p-65,
+    0x1.p-149,
+    (int)84
+  },
+  { // Entry 621
+    0x1.p-64,
+    0x1.p-149,
+    (int)85
+  },
+  { // Entry 622
+    0x1.p-63,
+    0x1.p-149,
+    (int)86
+  },
+  { // Entry 623
+    0x1.p-62,
+    0x1.p-149,
+    (int)87
+  },
+  { // Entry 624
+    0x1.p-61,
+    0x1.p-149,
+    (int)88
+  },
+  { // Entry 625
+    0x1.p-60,
+    0x1.p-149,
+    (int)89
+  },
+  { // Entry 626
+    0x1.p-59,
+    0x1.p-149,
+    (int)90
+  },
+  { // Entry 627
+    0x1.p-58,
+    0x1.p-149,
+    (int)91
+  },
+  { // Entry 628
+    0x1.p-57,
+    0x1.p-149,
+    (int)92
+  },
+  { // Entry 629
+    0x1.p-56,
+    0x1.p-149,
+    (int)93
+  },
+  { // Entry 630
+    0x1.p-55,
+    0x1.p-149,
+    (int)94
+  },
+  { // Entry 631
+    0x1.p-54,
+    0x1.p-149,
+    (int)95
+  },
+  { // Entry 632
+    0x1.p-53,
+    0x1.p-149,
+    (int)96
+  },
+  { // Entry 633
+    0x1.p-52,
+    0x1.p-149,
+    (int)97
+  },
+  { // Entry 634
+    0x1.p-51,
+    0x1.p-149,
+    (int)98
+  },
+  { // Entry 635
+    0x1.p-50,
+    0x1.p-149,
+    (int)99
+  },
+  { // Entry 636
+    0x1.p-49,
+    0x1.p-149,
+    (int)100
+  },
+  { // Entry 637
+    0x1.p-48,
+    0x1.p-149,
+    (int)101
+  },
+  { // Entry 638
+    0x1.p-47,
+    0x1.p-149,
+    (int)102
+  },
+  { // Entry 639
+    0x1.p-46,
+    0x1.p-149,
+    (int)103
+  },
+  { // Entry 640
+    0x1.p-45,
+    0x1.p-149,
+    (int)104
+  },
+  { // Entry 641
+    0x1.p-44,
+    0x1.p-149,
+    (int)105
+  },
+  { // Entry 642
+    0x1.p-43,
+    0x1.p-149,
+    (int)106
+  },
+  { // Entry 643
+    0x1.p-42,
+    0x1.p-149,
+    (int)107
+  },
+  { // Entry 644
+    0x1.p-41,
+    0x1.p-149,
+    (int)108
+  },
+  { // Entry 645
+    0x1.p-40,
+    0x1.p-149,
+    (int)109
+  },
+  { // Entry 646
+    0x1.p-39,
+    0x1.p-149,
+    (int)110
+  },
+  { // Entry 647
+    0x1.p-38,
+    0x1.p-149,
+    (int)111
+  },
+  { // Entry 648
+    0x1.p-37,
+    0x1.p-149,
+    (int)112
+  },
+  { // Entry 649
+    0x1.p-36,
+    0x1.p-149,
+    (int)113
+  },
+  { // Entry 650
+    0x1.p-35,
+    0x1.p-149,
+    (int)114
+  },
+  { // Entry 651
+    0x1.p-34,
+    0x1.p-149,
+    (int)115
+  },
+  { // Entry 652
+    0x1.p-33,
+    0x1.p-149,
+    (int)116
+  },
+  { // Entry 653
+    0x1.p-32,
+    0x1.p-149,
+    (int)117
+  },
+  { // Entry 654
+    0x1.p-31,
+    0x1.p-149,
+    (int)118
+  },
+  { // Entry 655
+    0x1.p-30,
+    0x1.p-149,
+    (int)119
+  },
+  { // Entry 656
+    0x1.p-29,
+    0x1.p-149,
+    (int)120
+  },
+  { // Entry 657
+    0x1.p-28,
+    0x1.p-149,
+    (int)121
+  },
+  { // Entry 658
+    0x1.p-27,
+    0x1.p-149,
+    (int)122
+  },
+  { // Entry 659
+    0x1.p-26,
+    0x1.p-149,
+    (int)123
+  },
+  { // Entry 660
+    0x1.p-25,
+    0x1.p-149,
+    (int)124
+  },
+  { // Entry 661
+    0x1.p-24,
+    0x1.p-149,
+    (int)125
+  },
+  { // Entry 662
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 663
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 664
+    0x1.p-21,
+    0x1.p-149,
+    (int)128
+  },
+  { // Entry 665
+    0x1.p-20,
+    0x1.p-149,
+    (int)129
+  },
+  { // Entry 666
+    0x1.p-19,
+    0x1.p-149,
+    (int)130
+  },
+  { // Entry 667
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 668
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 669
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    (int)2
+  },
+  { // Entry 670
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    (int)3
+  },
+  { // Entry 671
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    (int)4
+  },
+  { // Entry 672
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    (int)5
+  },
+  { // Entry 673
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    (int)6
+  },
+  { // Entry 674
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    (int)7
+  },
+  { // Entry 675
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    (int)8
+  },
+  { // Entry 676
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    (int)9
+  },
+  { // Entry 677
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    (int)10
+  },
+  { // Entry 678
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    (int)11
+  },
+  { // Entry 679
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    (int)12
+  },
+  { // Entry 680
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    (int)13
+  },
+  { // Entry 681
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    (int)14
+  },
+  { // Entry 682
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    (int)15
+  },
+  { // Entry 683
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    (int)16
+  },
+  { // Entry 684
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    (int)17
+  },
+  { // Entry 685
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    (int)18
+  },
+  { // Entry 686
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    (int)19
+  },
+  { // Entry 687
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    (int)20
+  },
+  { // Entry 688
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    (int)21
+  },
+  { // Entry 689
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 690
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 691
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    (int)24
+  },
+  { // Entry 692
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    (int)25
+  },
+  { // Entry 693
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    (int)26
+  },
+  { // Entry 694
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    (int)27
+  },
+  { // Entry 695
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    (int)28
+  },
+  { // Entry 696
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    (int)29
+  },
+  { // Entry 697
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    (int)30
+  },
+  { // Entry 698
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    (int)31
+  },
+  { // Entry 699
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    (int)32
+  },
+  { // Entry 700
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    (int)33
+  },
+  { // Entry 701
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    (int)34
+  },
+  { // Entry 702
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    (int)35
+  },
+  { // Entry 703
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    (int)36
+  },
+  { // Entry 704
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    (int)37
+  },
+  { // Entry 705
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    (int)38
+  },
+  { // Entry 706
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    (int)39
+  },
+  { // Entry 707
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    (int)40
+  },
+  { // Entry 708
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    (int)41
+  },
+  { // Entry 709
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    (int)42
+  },
+  { // Entry 710
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    (int)43
+  },
+  { // Entry 711
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    (int)44
+  },
+  { // Entry 712
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    (int)45
+  },
+  { // Entry 713
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    (int)46
+  },
+  { // Entry 714
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    (int)47
+  },
+  { // Entry 715
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    (int)48
+  },
+  { // Entry 716
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    (int)49
+  },
+  { // Entry 717
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    (int)50
+  },
+  { // Entry 718
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    (int)51
+  },
+  { // Entry 719
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    (int)52
+  },
+  { // Entry 720
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    (int)53
+  },
+  { // Entry 721
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    (int)54
+  },
+  { // Entry 722
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    (int)55
+  },
+  { // Entry 723
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    (int)56
+  },
+  { // Entry 724
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    (int)57
+  },
+  { // Entry 725
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    (int)58
+  },
+  { // Entry 726
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    (int)59
+  },
+  { // Entry 727
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    (int)60
+  },
+  { // Entry 728
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    (int)61
+  },
+  { // Entry 729
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    (int)62
+  },
+  { // Entry 730
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    (int)63
+  },
+  { // Entry 731
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    (int)64
+  },
+  { // Entry 732
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    (int)65
+  },
+  { // Entry 733
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    (int)66
+  },
+  { // Entry 734
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    (int)67
+  },
+  { // Entry 735
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    (int)68
+  },
+  { // Entry 736
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    (int)69
+  },
+  { // Entry 737
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    (int)70
+  },
+  { // Entry 738
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    (int)71
+  },
+  { // Entry 739
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    (int)72
+  },
+  { // Entry 740
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    (int)73
+  },
+  { // Entry 741
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    (int)74
+  },
+  { // Entry 742
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    (int)75
+  },
+  { // Entry 743
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    (int)76
+  },
+  { // Entry 744
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    (int)77
+  },
+  { // Entry 745
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    (int)78
+  },
+  { // Entry 746
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    (int)79
+  },
+  { // Entry 747
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    (int)80
+  },
+  { // Entry 748
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    (int)81
+  },
+  { // Entry 749
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    (int)82
+  },
+  { // Entry 750
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    (int)83
+  },
+  { // Entry 751
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    (int)84
+  },
+  { // Entry 752
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    (int)85
+  },
+  { // Entry 753
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    (int)86
+  },
+  { // Entry 754
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    (int)87
+  },
+  { // Entry 755
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    (int)88
+  },
+  { // Entry 756
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    (int)89
+  },
+  { // Entry 757
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    (int)90
+  },
+  { // Entry 758
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    (int)91
+  },
+  { // Entry 759
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    (int)92
+  },
+  { // Entry 760
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    (int)93
+  },
+  { // Entry 761
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    (int)94
+  },
+  { // Entry 762
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    (int)95
+  },
+  { // Entry 763
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    (int)96
+  },
+  { // Entry 764
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    (int)97
+  },
+  { // Entry 765
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    (int)98
+  },
+  { // Entry 766
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    (int)99
+  },
+  { // Entry 767
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    (int)100
+  },
+  { // Entry 768
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    (int)101
+  },
+  { // Entry 769
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    (int)102
+  },
+  { // Entry 770
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    (int)103
+  },
+  { // Entry 771
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    (int)104
+  },
+  { // Entry 772
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    (int)105
+  },
+  { // Entry 773
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    (int)106
+  },
+  { // Entry 774
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    (int)107
+  },
+  { // Entry 775
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    (int)108
+  },
+  { // Entry 776
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    (int)109
+  },
+  { // Entry 777
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    (int)110
+  },
+  { // Entry 778
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    (int)111
+  },
+  { // Entry 779
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    (int)112
+  },
+  { // Entry 780
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    (int)113
+  },
+  { // Entry 781
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    (int)114
+  },
+  { // Entry 782
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    (int)115
+  },
+  { // Entry 783
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    (int)116
+  },
+  { // Entry 784
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    (int)117
+  },
+  { // Entry 785
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    (int)118
+  },
+  { // Entry 786
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    (int)119
+  },
+  { // Entry 787
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    (int)120
+  },
+  { // Entry 788
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    (int)121
+  },
+  { // Entry 789
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    (int)122
+  },
+  { // Entry 790
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    (int)123
+  },
+  { // Entry 791
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    (int)124
+  },
+  { // Entry 792
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    (int)125
+  },
+  { // Entry 793
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    (int)126
+  },
+  { // Entry 794
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    (int)127
+  },
+  { // Entry 795
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    (int)128
+  },
+  { // Entry 796
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    (int)129
+  },
+  { // Entry 797
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    (int)130
+  },
+  { // Entry 798
+    0x1.p0,
+    0x1.p-149,
+    (int)149
+  },
+  { // Entry 799
+    0x1.p-1,
+    0x1.p-149,
+    (int)148
+  },
+  { // Entry 800
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    (int)149
+  },
+  { // Entry 801
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    (int)148
+  },
+  { // Entry 802
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 803
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 804
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 805
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 806
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 807
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 808
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 809
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 810
+    0.0,
+    0.0f,
+    (int)0
+  },
+  { // Entry 811
+    -0.0,
+    -0.0f,
+    (int)0
+  },
+  { // Entry 812
+    0.0,
+    0.0f,
+    (int)1
+  },
+  { // Entry 813
+    -0.0,
+    -0.0f,
+    (int)1
+  },
+  { // Entry 814
+    0.0,
+    0.0f,
+    (int)-1
+  },
+  { // Entry 815
+    -0.0,
+    -0.0f,
+    (int)-1
+  },
+  { // Entry 816
+    0.0,
+    0.0f,
+    (int)127
+  },
+  { // Entry 817
+    -0.0,
+    -0.0f,
+    (int)127
+  },
+  { // Entry 818
+    0.0,
+    0.0f,
+    (int)-127
+  },
+  { // Entry 819
+    -0.0,
+    -0.0f,
+    (int)-127
+  },
+  { // Entry 820
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)0
+  },
+  { // Entry 821
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 822
+    0x1.p-126,
+    0x1.p-126,
+    (int)0
+  },
+  { // Entry 823
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 824
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 825
+    -0x1.p-149,
+    -0x1.p-149,
+    (int)0
+  },
+  { // Entry 826
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 827
+    -0x1.p-126,
+    -0x1.p-126,
+    (int)0
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 829
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)0
+  },
+  { // Entry 830
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)1
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)1
+  },
+  { // Entry 832
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 834
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)127
+  },
+  { // Entry 835
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)127
+  },
+  { // Entry 836
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 837
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 838
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 839
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 840
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 841
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 842
+    HUGE_VALF,
+    0x1.p-126,
+    (int)40000
+  },
+  { // Entry 843
+    HUGE_VALF,
+    0x1.p-149,
+    (int)40000
+  },
+  { // Entry 844
+    -HUGE_VALF,
+    -0x1.p-126,
+    (int)40000
+  },
+  { // Entry 845
+    -HUGE_VALF,
+    -0x1.p-149,
+    (int)40000
+  },
+  { // Entry 846
+    0x1.p-127,
+    0x1.p-126,
+    (int)-1
+  },
+  { // Entry 847
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 848
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 849
+    -0.0f,
+    -0x1.p-149,
+    (int)-1
+  },
+  { // Entry 850
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 851
+    -0x1.p-127,
+    -0x1.p-126,
+    (int)-1
+  },
+  { // Entry 852
+    0.0f,
+    0x1.fffffep127,
+    (int)-40000
+  },
+  { // Entry 853
+    -0.0f,
+    -0x1.fffffep127,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/log10_intel_data.h b/tests/math_data/log10_intel_data.h
new file mode 100644
index 0000000..ae8a9bd
--- /dev/null
+++ b/tests/math_data/log10_intel_data.h
@@ -0,0 +1,1474 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_log10_intel_data[] = {
+  { // Entry 0
+    -0x1.a7d9a8edb47be8052ee10d61f72bedb3p3,
+    0x1.0000000000001p-44
+  },
+  { // Entry 1
+    -0x1.b64cb76a2c1767fe0cb381da5b9ce962p6,
+    0x1.0000000000001p-364
+  },
+  { // Entry 2
+    -0x1.ce61cf8e9227b7ffbbc2258f06b00848p-1,
+    0x1.000000007p-3
+  },
+  { // Entry 3
+    -0x1.ce61cf8e9227b7ffd109efcb25d89632p0,
+    0x1.00000000ep-6
+  },
+  { // Entry 4
+    0x1.dd4f85658431780003c8d7bebe51f836p-33,
+    0x1.0000000225863p0
+  },
+  { // Entry 5
+    -0x1.815182473f60d80043383683153332aap3,
+    0x1.0000006p-40
+  },
+  { // Entry 6
+    -0x1.c4bfc5e08f300001961133d67a8ae8f8p5,
+    0x1.000001cp-188
+  },
+  { // Entry 7
+    -0x1.3428e5a6db26b002262970cb294f81p0,
+    0x1.00380p-4
+  },
+  { // Entry 8
+    -0x1.8a593abb7a102800f94e99ea178864eep7,
+    0x1.00380p-655
+  },
+  { // Entry 9
+    0x1.e1a95d2d9ba1dfa58b2f8e5fdf0a1b54p4,
+    0x1.0080402010080p100
+  },
+  { // Entry 10
+    0x1.fdc9fc7b9d3258675b494256b7928fc6p-11,
+    0x1.0092e4b92e4a0p0
+  },
+  { // Entry 11
+    0x1.159c1712e74c68277fba58fe711f8027p-10,
+    0x1.00ap0
+  },
+  { // Entry 12
+    0x1.bd94e520279af862fe39c005f4682635p-10,
+    0x1.01010p0
+  },
+  { // Entry 13
+    0x1.828f82071564e84adb4af8ee9eed7b5ep-9,
+    0x1.01be8f10cdap0
+  },
+  { // Entry 14
+    0x1.9fb8cdcda6c2645e174538ea88aed24ap-9,
+    0x1.01e05e9614213p0
+  },
+  { // Entry 15
+    0x1.a37a0053a01f959dff9d7ed8c0738223p-9,
+    0x1.01e4b95a8d930p0
+  },
+  { // Entry 16
+    0x1.a605801cb85f27525bcda3da5f201ad1p-9,
+    0x1.01e7acfc057dap0
+  },
+  { // Entry 17
+    0x1.a619cc7168fac569791c99d75180265dp-9,
+    0x1.01e7c4870a56dp0
+  },
+  { // Entry 18
+    0x1.bafb8ddcf618275fe4ba979af560a660p-9,
+    0x1.01fffe0p0
+  },
+  { // Entry 19
+    0x1.cf3f4e32847f4ffcdca9e1a8a08a4547p0,
+    0x1.020p6
+  },
+  { // Entry 20
+    0x1.bafd4774dbc9b71fc01c9b281b1290d1p-9,
+    0x1.020000006p0
+  },
+  { // Entry 21
+    0x1.bbaa41582bd4b75516bf1e86eef4bba8p-9,
+    0x1.0200c8b461357p0
+  },
+  { // Entry 22
+    0x1.ec0d5a07492628986cc18f5d6a668867p-9,
+    0x1.0238f392a2110p0
+  },
+  { // Entry 23
+    0x1.4c9795fd1f7e88009e3273bf7835f084p-7,
+    0x1.060dae8131baap0
+  },
+  { // Entry 24
+    0x1.78b4ee43af1c080139a43926058a6e46p-7,
+    0x1.06ddf6ab94edcp0
+  },
+  { // Entry 25
+    -0x1.93ca96452c85680041ebe338f63d139ap2,
+    0x1.076899d38cc30p-21
+  },
+  { // Entry 26
+    0x1.ab09f93221f40000194c663bebd78f55p-7,
+    0x1.07cc640f96a18p0
+  },
+  { // Entry 27
+    0x1.6671b365d15bb76f5080cc3658e2519ep-6,
+    0x1.0d39f5fc24fa3p0
+  },
+  { // Entry 28
+    0x1.671a9b1bc6da7fffc947cfdb4dd24e3ap-6,
+    0x1.0d405a1bfe7p0
+  },
+  { // Entry 29
+    0x1.dd9de2ebee648801272900e785c996b3p-6,
+    0x1.11c602d8a1b64p0
+  },
+  { // Entry 30
+    0x1.4b55b84c74ca87ff3d23b3b83347c50fp-1,
+    0x1.1c0p2
+  },
+  { // Entry 31
+    -0x1.9897e85148d75fffff988e06dd8eae5ep4,
+    0x1.1f8b0260ccc08p-85
+  },
+  { // Entry 32
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-3,
+    0x1.2p-1
+  },
+  { // Entry 33
+    0x1.de288434c35c582817ddb245949a59a7p-5,
+    0x1.24d3540217b15p0
+  },
+  { // Entry 34
+    -0x1.ee30e065377edd211ae67f49d114a8dep-3,
+    0x1.25bde8b09bc9fp-1
+  },
+  { // Entry 35
+    -0x1.bef28412a9d80800871c59a8425d3aa6p0,
+    0x1.262p-6
+  },
+  { // Entry 36
+    0x1.f25d629171aaeb2276907167a9aecd6ep-5,
+    0x1.267e4cfc99f93p0
+  },
+  { // Entry 37
+    -0x1.9080890e2f1798003a7f3166289a2555p2,
+    0x1.288p-21
+  },
+  { // Entry 38
+    -0x1.e561065b019c7c8d498e8c78464330bap-3,
+    0x1.28aa9f2515f87p-1
+  },
+  { // Entry 39
+    -0x1.acdc65a935a5e7fbeb2a0414dae29db6p-1,
+    0x1.29a74a135d178p-3
+  },
+  { // Entry 40
+    -0x1.ef0c55090466e7fc5d2be8b017aa1eb5p4,
+    0x1.29ba33c33bb58p-103
+  },
+  { // Entry 41
+    -0x1.d8d9a2cfb79d0b2ce6db09b403fbdef1p-3,
+    0x1.2cep-1
+  },
+  { // Entry 42
+    0x1.44538ea06035a000000e7cc1825ca422p-4,
+    0x1.33333353c89c5p0
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.4p3
+  },
+  { // Entry 44
+    0x1.9c899ddb7cc3a80106bd92d9f30607adp-4,
+    0x1.42d14b4da920cp0
+  },
+  { // Entry 45
+    -0x1.7ddfc5b2002037feab4460e64664b09dp3,
+    0x1.480p-40
+  },
+  { // Entry 46
+    0x1.a8eec6065bd99ffffff2293a34b1917dp-2,
+    0x1.4cccccd6ceda7p1
+  },
+  { // Entry 47
+    0x1.d2b644665f10c7fffff2e1d2418998f5p-4,
+    0x1.4ccccceca919dp0
+  },
+  { // Entry 48
+    0x1.d3bdb9847bf709c43457968ca6e28646p-4,
+    0x1.4cfe1a8c30ed4p0
+  },
+  { // Entry 49
+    0x1.d6cf13653b91464319282088eeff4c97p-4,
+    0x1.4d913e35aea4ep0
+  },
+  { // Entry 50
+    -0x1.f1225ac4366237fdb303a0597a3c8f4ap-2,
+    0x1.4ed318236c85ap-2
+  },
+  { // Entry 51
+    0x1.f37196430c2beec26b1c31bf38d57f48p-4,
+    0x1.52faf510e022dp0
+  },
+  { // Entry 52
+    0x1.f38c0c8325d85ad659b2174a3ebf6f55p-4,
+    0x1.530p0
+  },
+  { // Entry 53
+    0x1.ffedeac4d176f7d2cde344b7ec70f166p-4,
+    0x1.555e30bbda69fp0
+  },
+  { // Entry 54
+    0x1.ef35aa1c6b1a77fd9de45a1e172b02c6p0,
+    0x1.57ee98247d966p6
+  },
+  { // Entry 55
+    -0x1.e280fe9b8cf857fdc3ad0dc812e58d1dp-2,
+    0x1.5a05d853c77c9p-2
+  },
+  { // Entry 56
+    -0x1.dae3311da4c40884648c41a830dfe372p-2,
+    0x1.6p-2
+  },
+  { // Entry 57
+    -0x1.cbac8ba352de3be2a5cca8fb96402862p-2,
+    0x1.6c4p-2
+  },
+  { // Entry 58
+    0x1.d97edc6cb096a800000c666995420256p-2,
+    0x1.7333334217b9ap1
+  },
+  { // Entry 59
+    0x1.4fb68838ccfa27ff2311eecb508d5928p-3,
+    0x1.7563c3887db28p0
+  },
+  { // Entry 60
+    0x1.f8871c174778c7fff5731acf2ea4467cp0,
+    0x1.76000000040p6
+  },
+  { // Entry 61
+    -0x1.f2c14c2f6c5c9dbe7c8284b15fe01787p-4,
+    0x1.82d0b42d0b428p-1
+  },
+  { // Entry 62
+    -0x1.db1d990e111ee766e962104fbbf0f003p-4,
+    0x1.87fd6da61c3dbp-1
+  },
+  { // Entry 63
+    -0x1.88bdca024f32e80a1de6671b22560759p2,
+    0x1.880p-21
+  },
+  { // Entry 64
+    -0x1.d03b8ce6051c97fdd425647f3739d7a7p-4,
+    0x1.8a653d99282aap-1
+  },
+  { // Entry 65
+    -0x1.c2d826f6ad5fe8162592cc036e069cedp-4,
+    0x1.8d6p-1
+  },
+  { // Entry 66
+    -0x1.c02618e0447d27f9ebb51462d6978f25p-4,
+    0x1.8dfa43fe5c91dp-1
+  },
+  { // Entry 67
+    -0x1.eeaa19fc34f817fda340aeb7b652075bp3,
+    0x1.915c782e20b7cp-52
+  },
+  { // Entry 68
+    -0x1.977d95879da08ffffff16749a9bc1021p-2,
+    0x1.999999f61e1aap-2
+  },
+  { // Entry 69
+    -0x1.65df6512f76d17ffffefc71689395abep-1,
+    0x1.99999a5944542p-3
+  },
+  { // Entry 70
+    -0x1.65df64c430555800001074b613f83508p-1,
+    0x1.99999aea617cep-3
+  },
+  { // Entry 71
+    -0x1.fffffec8e4ad680000105809fee7c68cp-1,
+    0x1.99999bd6ae073p-4
+  },
+  { // Entry 72
+    0x1.b88245f86df8afffff2313af8a910f6bp0,
+    0x1.a48f51c27f3efp5
+  },
+  { // Entry 73
+    0x1.c03ec805c52c92447268d7949588e608p-3,
+    0x1.a7cp0
+  },
+  { // Entry 74
+    0x1.e37abe09539ad7fdb2cbb9c1975d1fc2p5,
+    0x1.b1af286bca208p200
+  },
+  { // Entry 75
+    0x1.d7f59ab2bcd057ffffffb4bb61effb6fp-3,
+    0x1.b33333398e9e6p0
+  },
+  { // Entry 76
+    0x1.d7f59ae8908aa7ffffef7f3f17823162p-3,
+    0x1.b3333353e507cp0
+  },
+  { // Entry 77
+    0x1.e67b44ba485188898012c0536c604a15p-3,
+    0x1.ba5d2e974bap0
+  },
+  { // Entry 78
+    -0x1.d51e74e2235f9001c902f49b3d39be88p-5,
+    0x1.c0cp-1
+  },
+  { // Entry 79
+    -0x1.c250b537e74bc8265c7b1b0eb3cb7541p-5,
+    0x1.c320c8320c832p-1
+  },
+  { // Entry 80
+    0x1.c1497aa3ee77f7fcf0bc96c7418f04b6p0,
+    0x1.c71c71c71c71ep5
+  },
+  { // Entry 81
+    0x1.78d835115ae9f7ff0c0680783889e6a1p0,
+    0x1.da6d369b4dap4
+  },
+  { // Entry 82
+    -0x1.ee844d23120e6ff4b9d27f8ce30b3cc2p-6,
+    0x1.ddap-1
+  },
+  { // Entry 83
+    -0x1.af7bceba1050d7feead6ef91625b91dfp-6,
+    0x1.e1dff861891p-1
+  },
+  { // Entry 84
+    0x1.e3dbd09431d0d7fdf2755b85be8a1676p5,
+    0x1.e3b21bc1779ecp200
+  },
+  { // Entry 85
+    -0x1.7aea2aab13a0480729dec748658b34fdp-6,
+    0x1.e572b95cae540p-1
+  },
+  { // Entry 86
+    0x1.c8de2fbafe18580003cdaa774a73d0c0p0,
+    0x1.e739ce739ce70p5
+  },
+  { // Entry 87
+    -0x1.0ce446e3ca10c004d63fb70fab6a26ffp-6,
+    0x1.ed0340d0340d0p-1
+  },
+  { // Entry 88
+    -0x1.fcf458f6faa4380097af1db4b2910c7dp-7,
+    0x1.ee033092fe620p-1
+  },
+  { // Entry 89
+    -0x1.fbe09900f2e9d7e3bbbe0bd455c92038p-7,
+    0x1.ee0cc330cc347p-1
+  },
+  { // Entry 90
+    -0x1.f9454ad8c58a6801723d48914bdbc81bp-7,
+    0x1.ee23ee5df745dp-1
+  },
+  { // Entry 91
+    0x1.2c858a2326ced800dd3ed3ad03e0efedp-1,
+    0x1.ee8p1
+  },
+  { // Entry 92
+    0x1.7f694cc35a4da800fb6e6f17a5903e17p1,
+    0x1.eebbaeebbaee8p9
+  },
+  { // Entry 93
+    -0x1.e2cfbb4934806fe698638d9325ce0de6p-7,
+    0x1.eeebbaeebbaeep-1
+  },
+  { // Entry 94
+    -0x1.c3d0837783cac8005374209e6248fb22p-7,
+    0x1.f00000000008bp-1
+  },
+  { // Entry 95
+    -0x1.51824c7587ecc4cae0ebe2a8eae894b0p-7,
+    0x1.f3fffffffffffp-1
+  },
+  { // Entry 96
+    -0x1.d0ef7d83c50a77fdf0a9df7625174df6p0,
+    0x1.f46p-7
+  },
+  { // Entry 97
+    -0x1.3cad2633010287ec521f3fb1b0e16c34p-7,
+    0x1.f4bb83ff25408p-1
+  },
+  { // Entry 98
+    -0x1.30260ecbe5e48801930721a2e427895ap-7,
+    0x1.f52c691251919p-1
+  },
+  { // Entry 99
+    0x1.6937e0674dae37fec020473dcad8c7e5p7,
+    0x1.f5a814afd69f4p599
+  },
+  { // Entry 100
+    -0x1.f78887a8d70da00092ac096e0c2a748dp-8,
+    0x1.f70588f144d4ep-1
+  },
+  { // Entry 101
+    -0x1.f6f8472e06512801501371ceeb6902c1p-8,
+    0x1.f708159aab0fep-1
+  },
+  { // Entry 102
+    -0x1.c575bc711f57f7bcd5e65219b01c819cp-8,
+    0x1.f7e849868c907p-1
+  },
+  { // Entry 103
+    -0x1.c03a80ae608087bcec4b95b43cc7cf68p-8,
+    0x1.f7fffffffff4cp-1
+  },
+  { // Entry 104
+    0x1.2d536e42845f97fe560fa7b450804b26p8,
+    0x1.f9fe7f9fe7f9cp1000
+  },
+  { // Entry 105
+    -0x1.f568e77ed84b1372c94cff5e7e38e985p-10,
+    0x1.fdcp-1
+  },
+  { // Entry 106
+    -0x1.be202babd38921235652db287907f634p-10,
+    0x1.fdff6245a12f2p-1
+  },
+  { // Entry 107
+    -0x1.bd96a1d7da0391520e1595e0904768ffp-10,
+    0x1.fdffffffffffcp-1
+  },
+  { // Entry 108
+    -0x1.bd96a1d7d9d9b63e5aa7d082a140d738p-10,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 109
+    -0x1.bd27045bfd1e24767eb1fadda38b82e2p-11,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 110
+    -0x1.bd27045bc77c779853b6fc7b419acb49p-11,
+    0x1.ff000000001ecp-1
+  },
+  { // Entry 111
+    -0x1.bd25e056b638d812a81d48bf2dd5c055p-11,
+    0x1.ff0000a7c5b2ap-1
+  },
+  { // Entry 112
+    -0x1.bd226529bffa7801b54d1e695f9cf46ap-11,
+    0x1.ff0002a7c5b2ap-1
+  },
+  { // Entry 113
+    -0x1.d8c1f8f29d862387133a7814cb061b6dp-12,
+    0x1.ff77fffffffffp-1
+  },
+  { // Entry 114
+    -0x1.7c85657289fbe8275c1971e953a6ae71p-12,
+    0x1.ff9285e1ae9c8p-1
+  },
+  { // Entry 115
+    -0x1.ea7ebec511a69b37b972d41a517cd884p-13,
+    0x1.ffb96e5b96e40p-1
+  },
+  { // Entry 116
+    -0x1.c4e293b148cec847b4e214c76642cd73p-13,
+    0x1.ffbed73ec264ep-1
+  },
+  { // Entry 117
+    -0x1.bcd37f1eb06ff7cc110a8bd0efc2804bp-13,
+    0x1.ffbffffffffffp-1
+  },
+  { // Entry 118
+    -0x1.bcd37f1eb000bbf841f514e78b0bec67p-13,
+    0x1.ffcp-1
+  },
+  { // Entry 119
+    -0x1.8536047fb9d4f3b5cba95cabacae22aep-13,
+    0x1.ffc7fffffffffp-1
+  },
+  { // Entry 120
+    0x1.343573efa4c4c000047648d4f349dfcep-1,
+    0x1.ffe4effffffffp1
+  },
+  { // Entry 121
+    -0x1.85236427a08717efc89ebcb159b0b578p-16,
+    0x1.fff8fffffffffp-1
+  },
+  { // Entry 122
+    -0x1.e8df7421f041fffffe5b0949761ec657p5,
+    0x1.fffa3bfffffffp-204
+  },
+  { // Entry 123
+    -0x1.e2efbc1dc92337d7a679ab6c98fab739p-20,
+    0x1.ffff74fffffffp-1
+  },
+  { // Entry 124
+    -0x1.34413657816577fd436fcbc4aa32de88p-2,
+    0x1.fffffe7ffffffp-2
+  },
+  { // Entry 125
+    -0x1.d0ca51f95ac197fe1add64b6119cb454p7,
+    0x1.ffffff3ffffffp-773
+  },
+  { // Entry 126
+    -0x1.f018f15c0ab6094209fcfe083ebc306ep4,
+    0x1.fffffffff1fffp-104
+  },
+  { // Entry 127
+    0x1.465107258d1d1800062fee82bffbff4cp6,
+    0x1.fffffffff9fffp270
+  },
+  { // Entry 128
+    -0x1.9a9adba646d8e7ff39ebe5c5b651ecbcp7,
+    0x1.fffffffffdfffp-683
+  },
+  { // Entry 129
+    -0x1.16c0f776836d8ffe515d679ed8a253b1p8,
+    0x1.fffffffffdfffp-927
+  },
+  { // Entry 130
+    0x1.d59b56cd2f3cc80209ce8056d3477a08p7,
+    0x1.fffffffffdfffp779
+  },
+  { // Entry 131
+    -0x1.ce61cf8ef372f7fe03b197d05decff0ep-1,
+    0x1.fffffffffff8fp-4
+  },
+  { // Entry 132
+    -0x1.c85c8985c199c7fc14d958ba92e399dbp7,
+    0x1.fffffffffffe0p-759
+  },
+  { // Entry 133
+    -0x1.bcb7b1526e511ac160e1a3298010d96dp-52,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 134
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 135
+    -0x1.8e271da4056a43993fdb13487031fbd4p-4,
+    0x1.995255f2d00abp-1
+  },
+  { // Entry 136
+    -0x1.9762be26c2c57dcae0118e0cced6e75ap-5,
+    0x1.c89ac57dac58ap-1
+  },
+  { // Entry 137
+    -0x1.c694ace08e5124f7327cd5da1fc480f6p-8,
+    0x1.f7e3350888a69p-1
+  },
+  { // Entry 138
+    0x1.064664d0dd47cb0784b117d2efb0afb2p-5,
+    0x1.1395d249b27a4p0
+  },
+  { // Entry 139
+    0x1.158bee1e56be974c17844d0736925a83p-4,
+    0x1.2b3a0a0f20a14p0
+  },
+  { // Entry 140
+    0x1.9cd10b008ddd739de9e6d843b8ff4092p-4,
+    0x1.42de41d48ec84p0
+  },
+  { // Entry 141
+    0x1.0d42f84798b4be1db02431f73c710b5fp-3,
+    0x1.5a827999fcef4p0
+  },
+  { // Entry 142
+    0x1.47f70647644a538dd717c3f0c99b4f52p-3,
+    0x1.7226b15f6b164p0
+  },
+  { // Entry 143
+    0x1.7f08548e0992552054c82deff65c5a7ep-3,
+    0x1.89cae924d93d4p0
+  },
+  { // Entry 144
+    0x1.b2e37bef02ca65a6b69ef0ef6045fca9p-3,
+    0x1.a16f20ea47644p0
+  },
+  { // Entry 145
+    0x1.e3e31eb5585d6defbecf1003ed8586ddp-3,
+    0x1.b91358afb58b4p0
+  },
+  { // Entry 146
+    0x1.0929d506851b759ac8b971a365bb53bfp-2,
+    0x1.d0b7907523b24p0
+  },
+  { // Entry 147
+    0x1.1f3b144d2903aa0e15b5d3c67d53f91bp-2,
+    0x1.e85bc83a91d94p0
+  },
+  { // Entry 148
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p1
+  },
+  { // Entry 149
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 150
+    -0x1.edc7b28c1cdff646afa1bdcd4e6a02f0p-4,
+    0x1.83e609263c011p-1
+  },
+  { // Entry 151
+    -0x1.7af97358b9e0a424fa702e69d4ac3a8cp-4,
+    0x1.9dc22be484456p-1
+  },
+  { // Entry 152
+    -0x1.0f218eacb6487dd0c606c3e816e7c3dap-4,
+    0x1.b79e4ea2cc89bp-1
+  },
+  { // Entry 153
+    -0x1.52e84950d4c307d9bedea47d3987c01bp-5,
+    0x1.d17a716114ce0p-1
+  },
+  { // Entry 154
+    -0x1.2519b7f1cb3d94d33244a6c708ffaefcp-6,
+    0x1.eb56941f5d125p-1
+  },
+  { // Entry 155
+    0x1.1f8102faa9fd301aa54cd13599ef1980p-8,
+    0x1.02995b6ed2ab5p0
+  },
+  { // Entry 156
+    0x1.a30a9d609efc4751d9d20363fa852e63p-6,
+    0x1.0f876ccdf6cd8p0
+  },
+  { // Entry 157
+    0x1.7706e100e01d4da13cc59446df5969d9p-5,
+    0x1.1c757e2d1aefbp0
+  },
+  { // Entry 158
+    0x1.0a965ca3c59fa6843ec39c17298b1aaap-4,
+    0x1.29638f8c3f11ep0
+  },
+  { // Entry 159
+    0x1.564b9e135d1f0f233bd67e02bc5bf6eap-4,
+    0x1.3651a0eb63341p0
+  },
+  { // Entry 160
+    0x1.9ee993b80f2136ca6bfb66b9c7b25428p-4,
+    0x1.433fb24a87564p0
+  },
+  { // Entry 161
+    0x1.e4ae53ebbcefbd04882f10aaa3de86b7p-4,
+    0x1.502dc3a9ab787p0
+  },
+  { // Entry 162
+    0x1.13e87661d64f5246b5a8d69214746331p-3,
+    0x1.5d1bd508cf9aap0
+  },
+  { // Entry 163
+    0x1.34413509f79fd8ff6b6661a93ead623bp-3,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 164
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.8p-1
+  },
+  { // Entry 165
+    -0x1.5634626b0211c48738b33f07d1594431p-4,
+    0x1.a666666666666p-1
+  },
+  { // Entry 166
+    -0x1.76d869b02a035a10797953f058b52ecap-5,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 167
+    -0x1.684bf7fda98a1c59efaac6272939dcd6p-7,
+    0x1.f333333333332p-1
+  },
+  { // Entry 168
+    0x1.5b2a5ca1f47b15b644b33c640923bf35p-6,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 169
+    0x1.a30a9d609efdd6812008dfbb8239bf8cp-5,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 170
+    0x1.44538de3b27e4c8bcd11e934e41583aap-4,
+    0x1.3333333333332p0
+  },
+  { // Entry 171
+    0x1.b02b728fb6168040e2c4e5e7fb3809b1p-4,
+    0x1.4666666666665p0
+  },
+  { // Entry 172
+    0x1.0aec6e4a00fec3048feb505070bb4f14p-3,
+    0x1.5999999999998p0
+  },
+  { // Entry 173
+    0x1.3b03499ffcc7d7b28a254f6122a6a4d4p-3,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 174
+    0x1.68a288b60b7f789784b55146880d9ce1p-3,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 175
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p4,
+    0x1.0p100
+  },
+  { // Entry 177
+    0x1.e24f6e3fe3af5472f332ca85bdbb9d77p4,
+    0x1.199999999999ap100
+  },
+  { // Entry 178
+    0x1.e2ea366d769c64c298e42c7b7a7f4693p4,
+    0x1.3333333333334p100
+  },
+  { // Entry 179
+    0x1.e37899234efc355b9919ffe367a51209p4,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 180
+    0x1.e3fc6d39772e858d4b8607d59bb8d0ddp4,
+    0x1.6666666666668p100
+  },
+  { // Entry 181
+    0x1.e47727f0ff00e5d66a0cd9d066e228c3p4,
+    0x1.8000000000002p100
+  },
+  { // Entry 182
+    0x1.e4e9f6303263e5569760e25883a23773p4,
+    0x1.999999999999cp100
+  },
+  { // Entry 183
+    0x1.e555ce14de677da58c6cbe260334cf1bp4,
+    0x1.b333333333336p100
+  },
+  { // Entry 184
+    0x1.e5bb7b7ee2b364c38d849ed338fa804dp4,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 185
+    0x1.e61ba9358eaaf702959b2a4bfffdca28p4,
+    0x1.e66666666666ap100
+  },
+  { // Entry 186
+    0x1.e676e7b3bac865798509830704412b23p4,
+    0x1.0p101
+  },
+  { // Entry 187
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p5,
+    0x1.0p200
+  },
+  { // Entry 188
+    0x1.e1faa88fbb4c9d17d9e0015fb0d07207p5,
+    0x1.199999999999ap200
+  },
+  { // Entry 189
+    0x1.e2480ca684c3253facb8b25a8f324695p5,
+    0x1.3333333333334p200
+  },
+  { // Entry 190
+    0x1.e28f3e0170f30d8c2cd39c0e85c52c50p5,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 191
+    0x1.e2d1280c850c35a50609a0079fcf0bbap5,
+    0x1.6666666666668p200
+  },
+  { // Entry 192
+    0x1.e30e856848f565c9954d09050563b7adp5,
+    0x1.8000000000002p200
+  },
+  { // Entry 193
+    0x1.e347ec87e2a6e589abf70d4913c3bf05p5,
+    0x1.999999999999cp200
+  },
+  { // Entry 194
+    0x1.e37dd87a38a8b1b1267cfb2fd38d0ad9p5,
+    0x1.b333333333336p200
+  },
+  { // Entry 195
+    0x1.e3b0af2f3acea5402708eb866e6fe372p5,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 196
+    0x1.e3e0c60a90ca6e5fab143142d1f18860p5,
+    0x1.e66666666666ap200
+  },
+  { // Entry 197
+    0x1.e40e6549a6d9259b22cb5da0541338ddp5,
+    0x1.0p201
+  },
+  { // Entry 198
+    0x1.2d07adcbbbd22f95f8584324066f4c1ep8,
+    0x1.0p1000
+  },
+  { // Entry 199
+    0x1.2d124681c0de86815b829c48c80cb18cp8,
+    0x1.199999999999ap1000
+  },
+  { // Entry 200
+    0x1.2d1bf3049a0d578655ddb26823d8ec1ep8,
+    0x1.3333333333334p1000
+  },
+  { // Entry 201
+    0x1.2d24d92ff793548fe5e10f9ea2ab48d5p8,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 202
+    0x1.2d2d16715a1679930107d01dc5ec84c3p8,
+    0x1.6666666666668p1000
+  },
+  { // Entry 203
+    0x1.2d34c21cd2939f9792f03d3d729f1a41p8,
+    0x1.8000000000002p1000
+  },
+  { // Entry 204
+    0x1.2d3bef00c5c9cf8f95c57dc5f46b1b2cp8,
+    0x1.999999999999cp1000
+  },
+  { // Entry 205
+    0x1.2d42ac7f108a091485163b82cc6444a6p8,
+    0x1.b333333333336p1000
+  },
+  { // Entry 206
+    0x1.2d490755b0cec7866527b98d9fc09fbap8,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 207
+    0x1.2d4f0a311b8e40aa55a922452c30d457p8,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 208
+    0x1.2d54be18fe501791c4a007d0dc750a67p8,
+    0x1.0p1001
+  },
+  { // Entry 209
+    -0x1.bcb7bf382c6fb3df0029e1e6c04e5b04p-22,
+    0x1.ffffep-1
+  },
+  { // Entry 210
+    -0x1.287a794e24640de79fb5dd39033f1c3ap-23,
+    0x1.fffff55555555p-1
+  },
+  { // Entry 211
+    0x1.287a731f2fe08fea55a78b1501306850p-23,
+    0x1.0000055555555p0
+  },
+  { // Entry 212
+    0x1.bcb7a36cb15a8cec0c39b0a7cf2d7858p-22,
+    0x1.00001p0
+  },
+  { // Entry 213
+    -0x1.bcb7b155e7c045d88b2ccd879d00dedap-32,
+    0x1.fffffff80p-1
+  },
+  { // Entry 214
+    -0x1.287a7888aec95740a166efaf8756eaa1p-33,
+    0x1.fffffffd55555p-1
+  },
+  { // Entry 215
+    0x1.287a719444b61daa0968ca1f55a6be9ap-33,
+    0x1.0000000155555p0
+  },
+  { // Entry 216
+    0x1.bcb7b14ef4e1808ed1e940a65b2d5f0fp-32,
+    0x1.000000040p0
+  },
+  { // Entry 217
+    -0x1.bcb7b1526f2f3f0313ef120e2ab88e99p-42,
+    0x1.fffffffffe0p-1
+  },
+  { // Entry 218
+    -0x1.2883ba0aa61efb4b5ec5882d1426a118p-43,
+    0x1.ffffffffff555p-1
+  },
+  { // Entry 219
+    0x1.2867ee8f909545d6cd4484a582495a1fp-43,
+    0x1.0000000000555p0
+  },
+  { // Entry 220
+    0x1.bcb7b1526d728751c180c12b004dd665p-42,
+    0x1.00000000010p0
+  },
+  { // Entry 221
+    -0x1.bcb7b1526e511ac160e1a3298010d96dp-52,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 222
+    -0x1.4d89c4fdd2bcba02454565e85cc46f5fp-53,
+    0x1.ffffffffffffdp-1
+  },
+  { // Entry 223
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 224
+    0x1.bcb7b1526e50ab93748d079547463ebfp-52,
+    0x1.0000000000004p0
+  },
+  { // Entry 225
+    0x1.34413509f79fef2da5a350b33a574eb5p8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0x1.434e6420f4373e5f05171d19e4184d25p8,
+    0x1.0p-1074
+  },
+  { // Entry 227
+    -0x1.34413509f7a02cb1a1f65baf60cb15dfp-3,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 228
+    -0x1.34413509f7a00562d2bf0506ef44e3a5p-3,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 229
+    -0x1.34413509f79fde140387ae5e7f7b691dp-3,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 230
+    0x1.34413509f79fb1b09c2f0b00cd273001p-3,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 231
+    0x1.34413509f79fd8ff6b6661a93ead623bp-3,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 232
+    0x1.34413509f7a0004e3a9db851ae76dcc3p-3,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 233
+    -0x1.34413509f79ffd16dc9d46ca9e4a0d3cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 234
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p-1
+  },
+  { // Entry 235
+    -0x1.34413509f79fd365a3fd8c7309a4d81dp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 236
+    -0x1.ffbfc2bbc7808176d5526dc5cbf5abb0p-4,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 237
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.8p-1
+  },
+  { // Entry 238
+    -0x1.ffbfc2bbc77fed399a36f3aad59232c9p-4,
+    0x1.8000000000001p-1
+  },
+  { // Entry 239
+    0x1.68a288b60b7f9da6d37c2fcd47f77008p-3,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 240
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.8p0
+  },
+  { // Entry 241
+    0x1.68a288b60b7fe7c57109ecdac3292c7bp-3,
+    0x1.8000000000001p0
+  },
+  { // Entry 242
+    0x1.2817ce90842c0e5d9ca444ee93c2f2b2p-10,
+    0x1.00aaaaaaaaaaap0
+  },
+  { // Entry 243
+    0x1.2817ce908447c75d5ca081d47714bc4cp-10,
+    0x1.00aaaaaaaaaabp0
+  },
+  { // Entry 244
+    0x1.2817ce908463805d1c9cbeb89ffd7a98p-10,
+    0x1.00aaaaaaaaaacp0
+  },
+  { // Entry 245
+    0x1.34413509f79fe83e404d699ed350adcap-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 246
+    0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.0p2
+  },
+  { // Entry 247
+    0x1.34413509f79ffd16dc9d46ca9da34859p-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 248
+    0x1.34413509f79fe14b61881fe58fa838a4p-2,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 249
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p1
+  },
+  { // Entry 250
+    0x1.34413509f7a00afc9a27da3d244d6dc3p-2,
+    0x1.0000000000001p1
+  },
+  { // Entry 251
+    -0x1.bcb7b1526e50ea1d497c9f189e19715ep-55,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 252
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 253
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 254
+    -0x1.34413509f79ffd16dc9d46ca9e4a0d3cp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 255
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.0p-1
+  },
+  { // Entry 256
+    -0x1.34413509f79fd365a3fd8c7309a4d81dp-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 257
+    -0x1.34413509f79ff623fdd7fd115aa19816p-1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 258
+    -0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.0p-2
+  },
+  { // Entry 259
+    -0x1.34413509f79fe14b61881fe5904efd86p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 260
+    -0x1.ce61cf8ef36fedbc8d6156bd661e298ep-1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 261
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.0p-3
+  },
+  { // Entry 262
+    -0x1.ce61cf8ef36fd8e3f11179919bcb8effp-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 263
+    -0x1.34413509f79ff2aa8e755834b8cd5d83p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 264
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.0p-4
+  },
+  { // Entry 265
+    -0x1.34413509f79fe83e404d699ed3a4103bp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 266
+    -0x1.8151824c7587ee76d63a050abe8ba63fp0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 267
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.0p-5
+  },
+  { // Entry 268
+    -0x1.8151824c7587e40a88121674d96258f7p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 269
+    -0x1.ce61cf8ef36fea431dfeb1e0c449eefbp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 270
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.0p-6
+  },
+  { // Entry 271
+    -0x1.ce61cf8ef36fdfd6cfd6c34adf20a1b3p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 272
+    -0x1.0db90e68b8abf307b2e1af5b65041bdbp1,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 273
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.0p-7
+  },
+  { // Entry 274
+    -0x1.0db90e68b8abedd18bcdb810726f7537p1,
+    0x1.0000000000001p-7
+  },
+  { // Entry 275
+    -0x1.34413509f79ff0edd6c405c667e34039p1,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 276
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.0p-8
+  },
+  { // Entry 277
+    -0x1.34413509f79febb7afb00e7b754e9995p1,
+    0x1.0000000000001p-8
+  },
+  { // Entry 278
+    -0x1.5ac95bab3693eed3faa65c316ac26497p1,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 279
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.0p-9
+  },
+  { // Entry 280
+    -0x1.5ac95bab3693e99dd39264e6782dbdf3p1,
+    0x1.0000000000001p-9
+  },
+  { // Entry 281
+    -0x1.8151824c7587ecba1e88b29c6da188f5p1,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 282
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.0p-10
+  },
+  { // Entry 283
+    -0x1.8151824c7587e783f774bb517b0ce252p1,
+    0x1.0000000000001p-10
+  },
+  { // Entry 284
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 285
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 286
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 287
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 288
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 289
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 290
+    -0x1.ce61cf8ef36fedbc8d6156bd661e298ep-1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 291
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.0p-3
+  },
+  { // Entry 292
+    -0x1.ce61cf8ef36fd8e3f11179919bcb8effp-1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 293
+    -0x1.db11ed766abfc23dad46ff588641095dp-5,
+    0x1.bffffffffffffp-1
+  },
+  { // Entry 294
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-5,
+    0x1.cp-1
+  },
+  { // Entry 295
+    -0x1.db11ed766abec41dda3c772a4d96833ep-5,
+    0x1.c000000000001p-1
+  },
+  { // Entry 296
+    -0x1.34413509f79ff2aa8e755834b8cd5d83p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 297
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.0p-4
+  },
+  { // Entry 298
+    -0x1.34413509f79fe83e404d699ed3a4103bp0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 299
+    -0x1.cb38fccd8bfea3c5778d26c3e6929b36p-6,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 300
+    -0x1.cb38fccd8bfdb696b29463658b991237p-6,
+    0x1.ep-1
+  },
+  { // Entry 301
+    -0x1.cb38fccd8bfcc967ed9ba00738877eb7p-6,
+    0x1.e000000000001p-1
+  },
+  { // Entry 302
+    -0x1.8151824c7587ee76d63a050abe8ba63fp0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 303
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.0p-5
+  },
+  { // Entry 304
+    -0x1.8151824c7587e40a88121674d96258f7p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 305
+    -0x1.c3d0837784c5d4dc2b470a089b8b6137p-7,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 306
+    -0x1.c3d0837784c409cbf85d4dd61d426e1bp-7,
+    0x1.fp-1
+  },
+  { // Entry 307
+    -0x1.c3d0837784c23ebbc57391a3adc87461p-7,
+    0x1.f000000000001p-1
+  },
+  { // Entry 308
+    -0x1.ce61cf8ef36fea431dfeb1e0c449eefbp0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 309
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.0p-6
+  },
+  { // Entry 310
+    -0x1.ce61cf8ef36fdfd6cfd6c34adf20a1b3p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 311
+    -0x1.c03a80ae5e08bfbaeb001bb3cc0e0020p-8,
+    0x1.f7fffffffffffp-1
+  },
+  { // Entry 312
+    -0x1.c03a80ae5e05382d51f71b0f6602c76ap-8,
+    0x1.f80p-1
+  },
+  { // Entry 313
+    -0x1.c03a80ae5e01b09fb8ee1a6b1ca6b823p-8,
+    0x1.f800000000001p-1
+  },
+  { // Entry 314
+    -0x1.0db90e68b8abf307b2e1af5b65041bdbp1,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 315
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.0p-7
+  },
+  { // Entry 316
+    -0x1.0db90e68b8abedd18bcdb810726f7537p1,
+    0x1.0000000000001p-7
+  },
+  { // Entry 317
+    -0x1.be76bd77b50331b751b4d8af88fb07ecp-9,
+    0x1.fbfffffffffffp-1
+  },
+  { // Entry 318
+    -0x1.be76bd77b4fc30d6cb5e729fc0bd5fa5p-9,
+    0x1.fc0p-1
+  },
+  { // Entry 319
+    -0x1.be76bd77b4f52ff645080c9030f7ab79p-9,
+    0x1.fc00000000001p-1
+  },
+  { // Entry 320
+    -0x1.34413509f79ff0edd6c405c667e34039p1,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 321
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.0p-8
+  },
+  { // Entry 322
+    -0x1.34413509f79febb7afb00e7b754e9995p1,
+    0x1.0000000000001p-8
+  },
+  { // Entry 323
+    -0x1.bd96a1d7d9d9b63e5aa7d082a140d738p-10,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 324
+    -0x1.bd96a1d7d9cbc28d1ed88eb987048038p-10,
+    0x1.fe0p-1
+  },
+  { // Entry 325
+    -0x1.bd96a1d7d9bdcedbe3094cf0dcd5c0adp-10,
+    0x1.fe00000000001p-1
+  },
+  { // Entry 326
+    -0x1.5ac95bab3693eed3faa65c316ac26497p1,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 327
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.0p-9
+  },
+  { // Entry 328
+    -0x1.5ac95bab3693e99dd39264e6782dbdf3p1,
+    0x1.0000000000001p-9
+  },
+  { // Entry 329
+    -0x1.bd27045bfd1e24767eb1fadda38b82e2p-11,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 330
+    -0x1.bd27045bfd024b0eb5a690199f7d311fp-11,
+    0x1.ff0p-1
+  },
+  { // Entry 331
+    -0x1.bd27045bfce671a6ec9b25567aa9bb13p-11,
+    0x1.ff00000000001p-1
+  },
+  { // Entry 332
+    -0x1.8151824c7587ecba1e88b29c6da188f5p1,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 333
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.0p-10
+  },
+  { // Entry 334
+    -0x1.8151824c7587e783f774bb517b0ce252p1,
+    0x1.0000000000001p-10
+  },
+  { // Entry 335
+    -0x1.bcef518e2998bf2fcdeca6d0c7d243c3p-12,
+    0x1.ff7ffffffffffp-1
+  },
+  { // Entry 336
+    -0x1.bcef518e29611a506bc6531e97655414p-12,
+    0x1.ff8p-1
+  },
+  { // Entry 337
+    -0x1.bcef518e29297571099fff6e248ec50ep-12,
+    0x1.ff80000000001p-1
+  },
+  { // Entry 338
+    -0x1.f4e9f6303263e66c8a2fb5dd763ef60fp1,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 339
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.0p-13
+  },
+  { // Entry 340
+    -0x1.f4e9f6303263e136631bbe9283aa4f6cp1,
+    0x1.0000000000001p-13
+  },
+  { // Entry 341
+    -0x1.bcbea45645848a4be42e2d4ac91c6d9fp-15,
+    0x1.ffeffffffffffp-1
+  },
+  { // Entry 342
+    -0x1.bcbea45643c7c4b46503e30e59b7dd28p-15,
+    0x1.fffp-1
+  },
+  { // Entry 343
+    -0x1.bcbea456420aff1ce5d998dfd0ef3d8bp-15,
+    0x1.fff0000000001p-1
+  },
+  { // Entry 344
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 345
+    0x1.34413509f79fef2da5a350b33a574eb5p8,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 346
+    0x1.34413509f79fef2a2c33ee0e5db55eafp8,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 347
+    0x1.fd14db31ba3bab2b91a5ae782f204d4fp-2,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 348
+    0x1.91a74c4f853777f4e525f640304e54bep-3,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 349
+    0x1.bcb7b1526e50d544ad2cc1ecd3e2a249p-54,
+    0x1.0000000000001p0
+  },
+  { // Entry 350
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 351
+    -0x1.bcb7b1526e50ea1d497c9f189e19715ep-55,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 352
+    -0x1.adb63b88d410ccdab1fee0dffb47e244p-4,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    -0x1.33a7146f72a41f3293a464b4b1aa514cp8,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 354
+    -0x1.33a7146f72a41f39868329fe6aeda65ep8,
+    0x1.0p-1022
+  },
+  { // Entry 355
+    -0x1.33a7146f72a41f407961ef4824316a9fp8,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 356
+    -0x1.33a7146f72a41f476c40b491dd759e0ep8,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 357
+    -0x1.430153d3b1b9566338cf586d0e128edcp8,
+    0x1.0p-1073
+  },
+  { // Entry 358
+    -0x1.434e6420f4373e5f05171d19e4184d25p8,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 360
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 361
+    0x1.p0,
+    0x1.4p3
+  },
+  { // Entry 362
+    0x1.p1,
+    0x1.9p6
+  },
+  { // Entry 363
+    0x1.80p1,
+    0x1.f40p9
+  }
+};
diff --git a/tests/math_data/log10f_intel_data.h b/tests/math_data/log10f_intel_data.h
new file mode 100644
index 0000000..0f1ac26
--- /dev/null
+++ b/tests/math_data/log10f_intel_data.h
@@ -0,0 +1,1226 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_log10f_intel_data[] = {
+  { // Entry 0
+    -0x1.fe8bfdffff13dd47512c048f491f9b43p3,
+    0x1.000022p-53
+  },
+  { // Entry 1
+    -0x1.815170ed4e086e755171000a21e4418ap2,
+    0x1.0000a0p-20
+  },
+  { // Entry 2
+    -0x1.fe8beafff5736c97130c9ced1f57d1a3p3,
+    0x1.000180p-53
+  },
+  { // Entry 3
+    -0x1.343e0effe0b2cf5c4261140f67bbb9dbp-2,
+    0x1.0001d0p-1
+  },
+  { // Entry 4
+    0x1.bc41b9006f9ea191f8d77992988148e8p-11,
+    0x1.007ffep0
+  },
+  { // Entry 5
+    0x1.286d48f2328d1c51bb42649f1e36f51cp-10,
+    0x1.00aadcp0
+  },
+  { // Entry 6
+    0x1.3c3724fff9a66a1fc88c62753a01a093p-10,
+    0x1.00b648p0
+  },
+  { // Entry 7
+    0x1.b41066a765c47c650e3f2b65383836c5p-10,
+    0x1.00fb80p0
+  },
+  { // Entry 8
+    0x1.b4ede8ab7383b8e1ac6403842ab125e1p-10,
+    0x1.00fcp0
+  },
+  { // Entry 9
+    0x1.b606409a66ace2644d565b3bbe495b4bp-10,
+    0x1.00fca2p0
+  },
+  { // Entry 10
+    0x1.361702fff27220603ff5a74b9a7278a1p-2,
+    0x1.010fp1
+  },
+  { // Entry 11
+    0x1.30ecd6fe9803b26443d0a8c84cf88f49p-9,
+    0x1.0160p0
+  },
+  { // Entry 12
+    0x1.ad1561043e238a54f2968308b5b84a0ap-9,
+    0x1.01efdep0
+  },
+  { // Entry 13
+    0x1.add67b049b9eccb589d59f2e94044d4cp-9,
+    0x1.01f0bep0
+  },
+  { // Entry 14
+    0x1.b4181727e525aa3c9fe9bb81a1ea32f2p-9,
+    0x1.01f8p0
+  },
+  { // Entry 15
+    0x1.ba90af0300546714c91e69807716244bp-9,
+    0x1.01ff82p0
+  },
+  { // Entry 16
+    0x1.bf75c6fdd387cfc33e178c7140ff4a43p-9,
+    0x1.020530p0
+  },
+  { // Entry 17
+    0x1.c160fcfb3f11263df6c5479a7fc1f96ep-9,
+    0x1.02076ap0
+  },
+  { // Entry 18
+    0x1.c3b396fb7cc17548094cdeed806812d7p-9,
+    0x1.020a1cp0
+  },
+  { // Entry 19
+    0x1.041e5efff8637a181cab5a487e534f1cp5,
+    0x1.0220p108
+  },
+  { // Entry 20
+    0x1.deaf41009dde64cb85f68d09d2edf173p-9,
+    0x1.02296ep0
+  },
+  { // Entry 21
+    0x1.ecf47efdaeb10f5ade28ff93f4f44527p-9,
+    0x1.023ap0
+  },
+  { // Entry 22
+    0x1.f514f89756d667a2094b9aa6f5425a94p-8,
+    0x1.048cp0
+  },
+  { // Entry 23
+    -0x1.31add3ffcf191eb75b949d0c4b25562ep0,
+    0x1.06p-4
+  },
+  { // Entry 24
+    0x1.5d5eb8fffce13ef5613f5c26350b3ef3p-7,
+    0x1.065cd2p0
+  },
+  { // Entry 25
+    0x1.b02afb003def304a513c84d809f21238p-7,
+    0x1.07e4bcp0
+  },
+  { // Entry 26
+    0x1.e8296b002bba062b42b25642380152e2p-7,
+    0x1.08ef12p0
+  },
+  { // Entry 27
+    0x1.e9c5e90021ec01c297e475abe4ba42p-7,
+    0x1.08f6c0p0
+  },
+  { // Entry 28
+    -0x1.7d2b50ffff0186373287a99f0cecd28ep0,
+    0x1.09bcp-5
+  },
+  { // Entry 29
+    0x1.3a62cbffff2834d75a70360f6b9d64cfp0,
+    0x1.0e83a0p4
+  },
+  { // Entry 30
+    -0x1.7aa2bc000221055273bfa7fee62d0379p0,
+    0x1.0fdcp-5
+  },
+  { // Entry 31
+    0x1.d5bbd4fffd35c403bb0a652e9334f1e4p0,
+    0x1.1180p6
+  },
+  { // Entry 32
+    0x1.ef425287c21feec9c54e178d894354edp-6,
+    0x1.1274p0
+  },
+  { // Entry 33
+    -0x1.29297dffff901bb8ac5190eca10186b9p0,
+    0x1.1adcp-4
+  },
+  { // Entry 34
+    0x1.817dc8fccbc0fb5087e88f554f1908fdp-5,
+    0x1.1d4cp0
+  },
+  { // Entry 35
+    0x1.96aaacfefcf3bb8dcf3d8c94eb1423cap-5,
+    0x1.1fp0
+  },
+  { // Entry 36
+    0x1.a2d9334a67417635918aaf61a00994f0p-5,
+    0x1.1ffcp0
+  },
+  { // Entry 37
+    0x1.e32d32fa5c9d38509a7ba3e2bfb93574p-5,
+    0x1.253d24p0
+  },
+  { // Entry 38
+    0x1.55811effbe311325be81852b0556032cp-1,
+    0x1.294a50p2
+  },
+  { // Entry 39
+    -0x1.d7dae0fffee85f639c44d1f94b88a9aap-3,
+    0x1.2d363ap-1
+  },
+  { // Entry 40
+    -0x1.9ba71b0001bcb89106e975a5735cc54cp1,
+    0x1.3ecf84p-11
+  },
+  { // Entry 41
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 42
+    0x1.879ecefffff999362de3e56a2a6ed238p2,
+    0x1.412668p20
+  },
+  { // Entry 43
+    0x1.c10343057f36be857e8738b6dfecd5dep-4,
+    0x1.498152p0
+  },
+  { // Entry 44
+    0x1.f237b389b8afaac4cac40f2695df7209p-4,
+    0x1.52bf2ap0
+  },
+  { // Entry 45
+    -0x1.e0e8f9e4b17e517c0a47404130e68838p-2,
+    0x1.5b43e2p-2
+  },
+  { // Entry 46
+    0x1.bce8b0000212bd563ade9f93343779fbp-2,
+    0x1.5c17p1
+  },
+  { // Entry 47
+    -0x1.d30fa3d9517968762410807be9c7cb7ep-2,
+    0x1.663fe0p-2
+  },
+  { // Entry 48
+    0x1.ca3f98fffffea806640e073c5b17da75p-2,
+    0x1.66b06ap1
+  },
+  { // Entry 49
+    -0x1.81bbccfffeb10074d0f87e9e6ab68f3fp-1,
+    0x1.695dp-3
+  },
+  { // Entry 50
+    -0x1.3442891155fedc1531e5c4a593f0e2f0p-3,
+    0x1.6a095cp-1
+  },
+  { // Entry 51
+    0x1.f28489002d32f29f766276e96f7f21aap4,
+    0x1.6aaaaap103
+  },
+  { // Entry 52
+    -0x1.7d9722fffffee06829536561f0f13e07p-1,
+    0x1.7028e2p-3
+  },
+  { // Entry 53
+    0x1.e39e45d51ccc5ba793598e2a5b79a0dfp-2,
+    0x1.7bbf06p1
+  },
+  { // Entry 54
+    -0x1.ffbfcbff9b381c31b8783059f0acf062p-4,
+    0x1.7ffffep-1
+  },
+  { // Entry 55
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 56
+    -0x1.b40dd238181b3a9e0aacd04028af4a80p-2,
+    0x1.801e82p-2
+  },
+  { // Entry 57
+    -0x1.f9043300033a2fda0c9e8b664d0dfae2p-4,
+    0x1.8174c4p-1
+  },
+  { // Entry 58
+    -0x1.530ccb00030817c37d1894f62c055194p0,
+    0x1.8421p-5
+  },
+  { // Entry 59
+    -0x1.e2278820b34cd516815ccd9af00ec36cp-4,
+    0x1.867124p-1
+  },
+  { // Entry 60
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-4,
+    0x1.88p-1
+  },
+  { // Entry 61
+    0x1.eb76a4317f935066a9dd258d69495f3bp-3,
+    0x1.bcd946p0
+  },
+  { // Entry 62
+    -0x1.e5a7d2fffbde5faba9ad1dafa9f8e25ep-1,
+    0x1.cd1eb6p-4
+  },
+  { // Entry 63
+    -0x1.e3e2e8000003707015334e8f6d4e1baep-1,
+    0x1.d0cdb4p-4
+  },
+  { // Entry 64
+    -0x1.46b528fff19f0db93b31ce66c94d4faap-1,
+    0x1.d739cep-3
+  },
+  { // Entry 65
+    -0x1.ffd158bd0b2827904af6cec4c6e1bbe4p-6,
+    0x1.dc7710p-1
+  },
+  { // Entry 66
+    0x1.c00806bb584a81d2425a4c449277a3c0p-1,
+    0x1.dffffep2
+  },
+  { // Entry 67
+    -0x1.a0ed34fffc666da4d52ec02aeafec305p-6,
+    0x1.e2dc9ap-1
+  },
+  { // Entry 68
+    0x1.e61002ffffc2d1e0983851bf24c9ce23p4,
+    0x1.e339a2p100
+  },
+  { // Entry 69
+    -0x1.3a6ae8fffd0faf4aca1345a2b412cb11p-6,
+    0x1.e9de50p-1
+  },
+  { // Entry 70
+    -0x1.9775a6e35532e99d0cf2384ab86d5473p-7,
+    0x1.f18c60p-1
+  },
+  { // Entry 71
+    -0x1.81f977002634432665d65d78d2968a65p2,
+    0x1.f40e5ep-21
+  },
+  { // Entry 72
+    -0x1.f62251ffffff968db3edbd69bcf5cfdcp1,
+    0x1.f4e26ap-14
+  },
+  { // Entry 73
+    -0x1.14f03effe1727a0c4e49b2a6bad88689p-7,
+    0x1.f621f6p-1
+  },
+  { // Entry 74
+    -0x1.f7c3f8ffbdab13a6cac3e1e31df4ebbfp-8,
+    0x1.f7047cp-1
+  },
+  { // Entry 75
+    -0x1.f63efaafb8883e9793490850e59689c5p-8,
+    0x1.f70b5cp-1
+  },
+  { // Entry 76
+    -0x1.f37d18ffb9ef3b0fef577217ed18e097p-8,
+    0x1.f717d6p-1
+  },
+  { // Entry 77
+    -0x1.def364ad9e50296b41e69bbd93d4b89dp-8,
+    0x1.f774cep-1
+  },
+  { // Entry 78
+    -0x1.d980a30635055b8d9b54edd672c858a3p-10,
+    0x1.fddffep-1
+  },
+  { // Entry 79
+    -0x1.be7cd6ffc9f63979c62763b7424b91b8p-10,
+    0x1.fdfef8p-1
+  },
+  { // Entry 80
+    -0x1.a0d0f2971f8c3359f07a6bb4fccab210p-10,
+    0x1.fe21p-1
+  },
+  { // Entry 81
+    -0x1.bd2a7f88f7e22e1fbeda7c34e78c5fbfp-11,
+    0x1.fefffep-1
+  },
+  { // Entry 82
+    -0x1.ad17eafff3e585f32e96d0e7c6897eaep-11,
+    0x1.ff093ap-1
+  },
+  { // Entry 83
+    -0x1.e1b20eab03fb3a4a3c1ca58716aa04d8p2,
+    0x1.ff1ffep-26
+  },
+  { // Entry 84
+    -0x1.bd42c8df31e3d447244cc720bd67faadp-12,
+    0x1.ff7fe8p-1
+  },
+  { // Entry 85
+    -0x1.bdb1f6cd42c7c46d6967bb003016e45bp-13,
+    0x1.ffbfe0p-1
+  },
+  { // Entry 86
+    -0x1.ca749c8706de8e46ee3cf5bf9a96ab1bp-14,
+    0x1.ffdf04p-1
+  },
+  { // Entry 87
+    -0x1.c600bcbce645991d16979edbbc0c311fp-14,
+    0x1.ffdf56p-1
+  },
+  { // Entry 88
+    -0x1.bd34cc84be200f8cb449c26c3f6763d1p-14,
+    0x1.ffdff8p-1
+  },
+  { // Entry 89
+    -0x1.bce164dc339f92c17cc22cb9a07458d6p-14,
+    0x1.ffdffep-1
+  },
+  { // Entry 90
+    -0x1.3443d0ffc8b4e8b31ed055e579024a80p-1,
+    0x1.fff9fep-3
+  },
+  { // Entry 91
+    -0x1.72de800001549031af6ca96747c1126fp4,
+    0x1.fffc7ep-78
+  },
+  { // Entry 92
+    0x1.344134ff8b51b7a013d2358e0089d30dp5,
+    0x1.fffffap127
+  },
+  { // Entry 93
+    -0x1.bcb7b30f2604868dab81d79e1f40443cp-25,
+    0x1.fffffcp-1
+  },
+  { // Entry 94
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 95
+    -0x1.8e271d6ab5d7ee84106f48e33b8cb8e0p-4,
+    0x1.995256p-1
+  },
+  { // Entry 96
+    -0x1.9762ba2f4a2198a2ce8974450be1661fp-5,
+    0x1.c89ac6p-1
+  },
+  { // Entry 97
+    -0x1.c694764682002f79a74b22bb7570477ep-8,
+    0x1.f7e336p-1
+  },
+  { // Entry 98
+    0x1.064661197381c71f1a9f9ac21e313749p-5,
+    0x1.1395d2p0
+  },
+  { // Entry 99
+    0x1.158bedc46861d0d27c114033f3db9a96p-4,
+    0x1.2b3a0ap0
+  },
+  { // Entry 100
+    0x1.9cd10befe72cc8a8ecfeacd70aed874ap-4,
+    0x1.42de42p0
+  },
+  { // Entry 101
+    0x1.0d42f94d71eab1a45a4e19f5a1d78fcbp-3,
+    0x1.5a827ap0
+  },
+  { // Entry 102
+    0x1.47f707c940c69c0e2b81a883c7fcf3e2p-3,
+    0x1.7226b2p0
+  },
+  { // Entry 103
+    0x1.7f08567d056a15ac18992a2573074fc1p-3,
+    0x1.89caeap0
+  },
+  { // Entry 104
+    0x1.b2e37e3ec1bd60c78ec0b821ea37604dp-3,
+    0x1.a16f22p0
+  },
+  { // Entry 105
+    0x1.e3e3215b7afa3355ef4ed63c72685ff3p-3,
+    0x1.b9135ap0
+  },
+  { // Entry 106
+    0x1.0929d68063288eaf1594278eb7b2fc8ep-2,
+    0x1.d0b792p0
+  },
+  { // Entry 107
+    0x1.1f3b15ea121ed378638c6e76b1a3108fp-2,
+    0x1.e85bcap0
+  },
+  { // Entry 108
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p1
+  },
+  { // Entry 109
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 110
+    -0x1.edc7b7d1726b9d3a32996762d45e780ap-4,
+    0x1.83e608p-1
+  },
+  { // Entry 111
+    -0x1.7af97b7bce8afc77122afb0375a2da53p-4,
+    0x1.9dc22ap-1
+  },
+  { // Entry 112
+    -0x1.0f219957375a31be41be4c43a6916104p-4,
+    0x1.b79e4cp-1
+  },
+  { // Entry 113
+    -0x1.52e86324d08348db62a1b30a19674a5cp-5,
+    0x1.d17a6ep-1
+  },
+  { // Entry 114
+    -0x1.2519f3a5667aea40e1f962a1f5d85c21p-6,
+    0x1.eb5690p-1
+  },
+  { // Entry 115
+    0x1.1f80654567c5aa07e1d9578dfde75b1fp-8,
+    0x1.02995ap0
+  },
+  { // Entry 116
+    0x1.a30a884b48ced10372c3c1f79d81055bp-6,
+    0x1.0f876cp0
+  },
+  { // Entry 117
+    0x1.7706deccbe15df9c9101690cc9b736b0p-5,
+    0x1.1c757ep0
+  },
+  { // Entry 118
+    0x1.0a965f582ad2d2cc3962364e72fabf4bp-4,
+    0x1.296390p0
+  },
+  { // Entry 119
+    0x1.564ba4450402b6d51b22231ee30056ecp-4,
+    0x1.3651a2p0
+  },
+  { // Entry 120
+    0x1.9ee99d1f81cea5262e8e5fa8308a4f10p-4,
+    0x1.433fb4p0
+  },
+  { // Entry 121
+    0x1.e4ae6049c4561ba2e5b54e4aef7ec1f7p-4,
+    0x1.502dc6p0
+  },
+  { // Entry 122
+    0x1.13e87df00be5c8e58f5f6baa00a8e9a8p-3,
+    0x1.5d1bd8p0
+  },
+  { // Entry 123
+    0x1.3441340a957d1f4a988a733cd68c06d7p-3,
+    0x1.6a09e6p0
+  },
+  { // Entry 124
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 125
+    -0x1.5634641a3fd51681f12d3df90719aed0p-4,
+    0x1.a66666p-1
+  },
+  { // Entry 126
+    -0x1.76d86fdd61d0265fd8416f7297bd494fp-5,
+    0x1.ccccccp-1
+  },
+  { // Entry 127
+    -0x1.684c1a332d5dc3307d73c7ba25168d0fp-7,
+    0x1.f33332p-1
+  },
+  { // Entry 128
+    0x1.5b2a4774a2de2143d8ff5f649a50863bp-6,
+    0x1.0cccccp0
+  },
+  { // Entry 129
+    0x1.a30a9d609efe9c281982d7df7ae69259p-5,
+    0x1.20p0
+  },
+  { // Entry 130
+    0x1.445392859c560c3c9ed56125e21ba584p-4,
+    0x1.333334p0
+  },
+  { // Entry 131
+    0x1.b02b7b4804d6e3346e6f30fb0ed80ed8p-4,
+    0x1.466668p0
+  },
+  { // Entry 132
+    0x1.0aec747738c557211b21410621b26f8fp-3,
+    0x1.59999cp0
+  },
+  { // Entry 133
+    0x1.3b03516d50b3544158f589c768f946e6p-3,
+    0x1.6cccd0p0
+  },
+  { // Entry 134
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.80p0
+  },
+  { // Entry 135
+    0.0,
+    0x1.p0
+  },
+  { // Entry 136
+    0x1.e1a5e2df92e9e5bcc08d3839a3e54697p4,
+    0x1.p100
+  },
+  { // Entry 137
+    0x1.e24f6e426a8bf8a9e67a7799f8b17451p4,
+    0x1.19999ap100
+  },
+  { // Entry 138
+    0x1.e2ea367218863bc8fd2c0d9ac9c7623cp4,
+    0x1.333334p100
+  },
+  { // Entry 139
+    0x1.e3789929b904e81bc6f0e5158f365203p4,
+    0x1.4ccccep100
+  },
+  { // Entry 140
+    0x1.e3fc6d41682d18d8c703d601ddc1fa20p4,
+    0x1.666668p100
+  },
+  { // Entry 141
+    0x1.e47727fa42d490cc96bad253a3656436p4,
+    0x1.800002p100
+  },
+  { // Entry 142
+    0x1.e4e9f63a9eb204cd2dcd94b7ceca28a7p4,
+    0x1.99999cp100
+  },
+  { // Entry 143
+    0x1.e555ce20504ed691954bc10e175867a8p4,
+    0x1.b33336p100
+  },
+  { // Entry 144
+    0x1.e5bb7b8b3d22f0a25afb3f6c6877e417p4,
+    0x1.ccccd0p100
+  },
+  { // Entry 145
+    0x1.e61ba942b928956af0bafc1ad04f0b20p4,
+    0x1.e6666ap100
+  },
+  { // Entry 146
+    0x1.e676e7b3bac865798509830704412b23p4,
+    0x1.p101
+  },
+  { // Entry 147
+    -0x1.bcb7bf382c6fb3df0029e1e6c04e5b04p-22,
+    0x1.ffffe0p-1
+  },
+  { // Entry 148
+    -0x1.15f2d18a6400ab03be90bfceaa5447fbp-23,
+    0x1.fffff6p-1
+  },
+  { // Entry 149
+    0x1.4d89c115357d535c8f9533338e6883eap-23,
+    0x1.000006p0
+  },
+  { // Entry 150
+    0x1.bcb7a36cb15a8cec0c39b0a7cf2d7858p-22,
+    0x1.000010p0
+  },
+  { // Entry 151
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 152
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 153
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 154
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 155
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 156
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 158
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 160
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 161
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 162
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 163
+    0x1.344135067e308acf8abe721a7991fdb7p5,
+    0x1.fffffep127
+  },
+  { // Entry 164
+    -0x1.66d3e7bd9a402c6f2e2bc4c48abe02abp5,
+    0x1.p-149
+  },
+  { // Entry 165
+    -0x1.34413af333ae8c86c135ab5278494452p-3,
+    0x1.6a09e4p-1
+  },
+  { // Entry 166
+    -0x1.3441360959c2bf17a59af37357663f09p-3,
+    0x1.6a09e6p-1
+  },
+  { // Entry 167
+    -0x1.3441311f7fdde48753477d6b1af5d93dp-3,
+    0x1.6a09e8p-1
+  },
+  { // Entry 168
+    0x1.34412f20bb9151db7cefbb5db5a9018ep-3,
+    0x1.6a09e4p0
+  },
+  { // Entry 169
+    0x1.3441340a957d1f4a988a733cd68c06d7p-3,
+    0x1.6a09e6p0
+  },
+  { // Entry 170
+    0x1.344138f46f61f9daeadde94512fc6ca3p-3,
+    0x1.6a09e8p0
+  },
+  { // Entry 171
+    -0x1.344136c6af521ffb49335226ca8bbf4ap-2,
+    0x1.fffffep-2
+  },
+  { // Entry 172
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p-1
+  },
+  { // Entry 173
+    -0x1.344131908840c3c3db4f515285b11c22p-2,
+    0x1.000002p-1
+  },
+  { // Entry 174
+    -0x1.ffbfcbff9b381c31b8783059f0acf062p-4,
+    0x1.7ffffep-1
+  },
+  { // Entry 175
+    -0x1.ffbfc2bbc780375837c4b0b84f38a14ap-4,
+    0x1.80p-1
+  },
+  { // Entry 176
+    -0x1.ffbfb977f3d4acee4eb0b360dbc6ec48p-4,
+    0x1.800002p-1
+  },
+  { // Entry 177
+    0x1.68a2841421a3d04961e94e83359bcdafp-3,
+    0x1.7ffffep0
+  },
+  { // Entry 178
+    0x1.68a288b60b7fc2b622430e540655f53bp-3,
+    0x1.80p0
+  },
+  { // Entry 179
+    0x1.68a28d57f55587eb16cd0cffc00ecfbcp-3,
+    0x1.800002p0
+  },
+  { // Entry 180
+    0x1.28132fbb336f7bcb34b70b00867dc9d5p-10,
+    0x1.00aaa8p0
+  },
+  { // Entry 181
+    0x1.2816a6db3131b6eda414e69eae447c9dp-10,
+    0x1.00aaaap0
+  },
+  { // Entry 182
+    0x1.281a1dfb280a4dd9abcda3a702e5258dp-10,
+    0x1.00aaacp0
+  },
+  { // Entry 183
+    0x1.3441342b9bc6d6cc0a0263f0bd2fd4c3p-1,
+    0x1.fffffep1
+  },
+  { // Entry 184
+    0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.p2
+  },
+  { // Entry 185
+    0x1.344136c6af4f84e7c0f4645adf9d2657p-1,
+    0x1.000002p2
+  },
+  { // Entry 186
+    0x1.3441334d3fedbe66f4f2148963668696p-2,
+    0x1.fffffep0
+  },
+  { // Entry 187
+    0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p1
+  },
+  { // Entry 188
+    0x1.3441388366ff1a9e62d6155da84129bep-2,
+    0x1.000002p1
+  },
+  { // Entry 189
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 190
+    0.0,
+    0x1.p0
+  },
+  { // Entry 191
+    0x1.bcb7af95b6a1e1b102c8a40366dc2f73p-25,
+    0x1.000002p0
+  },
+  { // Entry 192
+    -0x1.344136c6af521ffb49335226ca8bbf4ap-2,
+    0x1.fffffep-2
+  },
+  { // Entry 193
+    -0x1.34413509f79fef311f12b35816f922f0p-2,
+    0x1.p-1
+  },
+  { // Entry 194
+    -0x1.344131908840c3c3db4f515285b11c22p-2,
+    0x1.000002p-1
+  },
+  { // Entry 195
+    -0x1.344135e853790796342302bf70c2711dp-1,
+    0x1.fffffep-3
+  },
+  { // Entry 196
+    -0x1.34413509f79fef311f12b35816f922f0p-1,
+    0x1.p-2
+  },
+  { // Entry 197
+    -0x1.3441334d3ff0597a7d3102554e551f89p-1,
+    0x1.000002p-2
+  },
+  { // Entry 198
+    -0x1.ce61d06d4f48ff2ec3ac5c6b7c3f0295p-1,
+    0x1.fffffep-4
+  },
+  { // Entry 199
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.p-3
+  },
+  { // Entry 200
+    -0x1.ce61cdd23bc051130cba5c0159d1b101p-1,
+    0x1.000002p-3
+  },
+  { // Entry 201
+    -0x1.34413579258c7b63a99adb0bc3ddca06p0,
+    0x1.fffffep-5
+  },
+  { // Entry 202
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.p-4
+  },
+  { // Entry 203
+    -0x1.3441342b9bc82455ce21dad6b2a7213cp0,
+    0x1.000002p-4
+  },
+  { // Entry 204
+    -0x1.815182bba374772ff15f87e1c99c12c2p0,
+    0x1.fffffep-6
+  },
+  { // Entry 205
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.p-5
+  },
+  { // Entry 206
+    -0x1.8151816e19b0202215e687acb86569f8p0,
+    0x1.000002p-5
+  },
+  { // Entry 207
+    -0x1.ce61cffe215c72fc392434b7cf5a5b7ep0,
+    0x1.fffffep-7
+  },
+  { // Entry 208
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.p-6
+  },
+  { // Entry 209
+    -0x1.ce61ceb097981bee5dab3482be23b2b5p0,
+    0x1.000002p-6
+  },
+  { // Entry 210
+    -0x1.0db90ea04fa23764407470c6ea8c521dp1,
+    0x1.fffffep-8
+  },
+  { // Entry 211
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.p-7
+  },
+  { // Entry 212
+    -0x1.0db90df98ac00bdd52b7f0ac61f0fdb8p1,
+    0x1.000002p-7
+  },
+  { // Entry 213
+    -0x1.344135418e96354a6456c731ed6b767bp1,
+    0x1.fffffep-9
+  },
+  { // Entry 214
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.p-8
+  },
+  { // Entry 215
+    -0x1.3441349ac9b409c3769a471764d02216p1,
+    0x1.000002p-8
+  },
+  { // Entry 216
+    -0x1.5ac95be2cd8a333088391d9cf04a9ad9p1,
+    0x1.fffffep-10
+  },
+  { // Entry 217
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.p-9
+  },
+  { // Entry 218
+    -0x1.5ac95b3c08a807a99a7c9d8267af4674p1,
+    0x1.000002p-9
+  },
+  { // Entry 219
+    -0x1.815182840c7e3116ac1b7407f329bf37p1,
+    0x1.fffffep-11
+  },
+  { // Entry 220
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.p-10
+  },
+  { // Entry 221
+    -0x1.815181dd479c058fbe5ef3ed6a8e6ad2p1,
+    0x1.000002p-10
+  },
+  { // Entry 222
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 223
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 224
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 225
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 226
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 227
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 228
+    -0x1.ce61d06d4f48ff2ec3ac5c6b7c3f0295p-1,
+    0x1.fffffep-4
+  },
+  { // Entry 229
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p-1,
+    0x1.p-3
+  },
+  { // Entry 230
+    -0x1.ce61cdd23bc051130cba5c0159d1b101p-1,
+    0x1.000002p-3
+  },
+  { // Entry 231
+    -0x1.db11fd5867f8ff1cca049f4cb4fd8694p-5,
+    0x1.bffffep-1
+  },
+  { // Entry 232
+    -0x1.db11ed766abf432dc3c1bb4167a6eb47p-5,
+    0x1.c0p-1
+  },
+  { // Entry 233
+    -0x1.db11dd946d97ae16f51ada8f25bd4cc1p-5,
+    0x1.c00002p-1
+  },
+  { // Entry 234
+    -0x1.34413579258c7b63a99adb0bc3ddca06p0,
+    0x1.fffffep-5
+  },
+  { // Entry 235
+    -0x1.34413509f79fef311f12b35816f922f0p0,
+    0x1.p-4
+  },
+  { // Entry 236
+    -0x1.3441342b9bc82455ce21dad6b2a7213cp0,
+    0x1.000002p-4
+  },
+  { // Entry 237
+    -0x1.cb391a7364ac9eed883817f1ffc2150cp-6,
+    0x1.dffffep-1
+  },
+  { // Entry 238
+    -0x1.cb38fccd8bfdb696b29463658b991237p-6,
+    0x1.e0p-1
+  },
+  { // Entry 239
+    -0x1.cb38df27b36e6e15dbf9aa6e26e0527bp-6,
+    0x1.e00002p-1
+  },
+  { // Entry 240
+    -0x1.815182bba374772ff15f87e1c99c12c2p0,
+    0x1.fffffep-6
+  },
+  { // Entry 241
+    -0x1.8151824c7587eafd66d7602e1cb76bacp0,
+    0x1.p-5
+  },
+  { // Entry 242
+    -0x1.8151816e19b0202215e687acb86569f8p0,
+    0x1.000002p-5
+  },
+  { // Entry 243
+    -0x1.c3d0bcd98b3edf45205cfdbb6aed1917p-7,
+    0x1.effffep-1
+  },
+  { // Entry 244
+    -0x1.c3d0837784c409cbf85d4dd61d426e1bp-7,
+    0x1.f0p-1
+  },
+  { // Entry 245
+    -0x1.c3d04a157e84703859e1417a8c326212p-7,
+    0x1.f00002p-1
+  },
+  { // Entry 246
+    -0x1.ce61cffe215c72fc392434b7cf5a5b7ep0,
+    0x1.fffffep-7
+  },
+  { // Entry 247
+    -0x1.ce61cf8ef36fe6c9ae9c0d042275b468p0,
+    0x1.p-6
+  },
+  { // Entry 248
+    -0x1.ce61ceb097981bee5dab3482be23b2b5p0,
+    0x1.000002p-6
+  },
+  { // Entry 249
+    -0x1.c03af1a0115fb694dfc7e5305e350297p-8,
+    0x1.f7fffep-1
+  },
+  { // Entry 250
+    -0x1.c03a80ae5e05382d51f71b0f6602c76ap-8,
+    0x1.f8p-1
+  },
+  { // Entry 251
+    -0x1.c03a0fbcab1d766b7c26660812478675p-8,
+    0x1.f80002p-1
+  },
+  { // Entry 252
+    -0x1.0db90ea04fa23764407470c6ea8c521dp1,
+    0x1.fffffep-8
+  },
+  { // Entry 253
+    -0x1.0db90e68b8abf14afb305ced1419fe92p1,
+    0x1.p-7
+  },
+  { // Entry 254
+    -0x1.0db90df98ac00bdd52b7f0ac61f0fdb8p1,
+    0x1.000002p-7
+  },
+  { // Entry 255
+    -0x1.be779d93c637ed8142930d32c760672cp-9,
+    0x1.fbfffep-1
+  },
+  { // Entry 256
+    -0x1.be76bd77b4fc30d6cb5e729fc0bd5fa5p-9,
+    0x1.fcp-1
+  },
+  { // Entry 257
+    -0x1.be75dd5ba4a253fcbfcde28906782f81p-9,
+    0x1.fc0002p-1
+  },
+  { // Entry 258
+    -0x1.344135418e96354a6456c731ed6b767bp1,
+    0x1.fffffep-9
+  },
+  { // Entry 259
+    -0x1.34413509f79fef311f12b35816f922f0p1,
+    0x1.p-8
+  },
+  { // Entry 260
+    -0x1.3441349ac9b409c3769a471764d02216p1,
+    0x1.000002p-8
+  },
+  { // Entry 261
+    -0x1.bd98604e0225c5f5bcfcaf2d317a9cb8p-10,
+    0x1.fdfffep-1
+  },
+  { // Entry 262
+    -0x1.bd96a1d7d9cbc28d1ed88eb987048038p-10,
+    0x1.fep-1
+  },
+  { // Entry 263
+    -0x1.bd94e361b331f5825874683d16a4fa02p-10,
+    0x1.fe0002p-1
+  },
+  { // Entry 264
+    -0x1.5ac95be2cd8a333088391d9cf04a9ad9p1,
+    0x1.fffffep-10
+  },
+  { // Entry 265
+    -0x1.5ac95bab3693ed1742f509c319d8474ep1,
+    0x1.p-9
+  },
+  { // Entry 266
+    -0x1.5ac95b3c08a807a99a7c9d8267af4674p1,
+    0x1.000002p-9
+  },
+  { // Entry 267
+    -0x1.bd2a7f88f7e22e1fbeda7c34e78c5fbfp-11,
+    0x1.fefffep-1
+  },
+  { // Entry 268
+    -0x1.bd27045bfd024b0eb5a690199f7d311fp-11,
+    0x1.ffp-1
+  },
+  { // Entry 269
+    -0x1.bd23892f059f536c854c6b13c5a3b7bfp-11,
+    0x1.ff0002p-1
+  },
+  { // Entry 270
+    -0x1.815182840c7e3116ac1b7407f329bf37p1,
+    0x1.fffffep-11
+  },
+  { // Entry 271
+    -0x1.8151824c7587eafd66d7602e1cb76bacp1,
+    0x1.p-10
+  },
+  { // Entry 272
+    -0x1.815181dd479c058fbe5ef3ed6a8e6ad2p1,
+    0x1.000002p-10
+  },
+  { // Entry 273
+    -0x1.bcf6462a1921118a3b66f92fb7c60797p-12,
+    0x1.ff7ffep-1
+  },
+  { // Entry 274
+    -0x1.bcef518e29611a506bc6531e97655414p-12,
+    0x1.ff80p-1
+  },
+  { // Entry 275
+    -0x1.bce85cf240977c99419983a95dfa8d28p-12,
+    0x1.ff8002p-1
+  },
+  { // Entry 276
+    -0x1.f4e9f667c95a2ac917c27748fbc72c51p1,
+    0x1.fffffep-14
+  },
+  { // Entry 277
+    -0x1.f4e9f6303263e4afd27e636f2554d8c6p1,
+    0x1.p-13
+  },
+  { // Entry 278
+    -0x1.f4e9f5c10477ff422a05f72e732bd7ecp1,
+    0x1.000002p-13
+  },
+  { // Entry 279
+    -0x1.bcf63d094f7a45ef4f9d2bcde45ded2fp-15,
+    0x1.ffeffep-1
+  },
+  { // Entry 280
+    -0x1.bcbea45643c7c4b46503e30e59b7dd28p-15,
+    0x1.fff0p-1
+  },
+  { // Entry 281
+    -0x1.bc870ba36fafb33cddcf17f055436437p-15,
+    0x1.fff002p-1
+  },
+  { // Entry 282
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 283
+    0x1.344135067e308acf8abe721a7991fdb7p5,
+    0x1.fffffep127
+  },
+  { // Entry 284
+    0x1.3441350304c122f48700992168f1c477p5,
+    0x1.fffffcp127
+  },
+  { // Entry 285
+    0x1.fd14dc015a2443dc8d1c9a7a4ead7c44p-2,
+    0x1.921fb6p1
+  },
+  { // Entry 286
+    0x1.91a74deec508a956dc13ce446f68b2a7p-3,
+    0x1.921fb6p0
+  },
+  { // Entry 287
+    0x1.bcb7af95b6a1e1b102c8a40366dc2f73p-25,
+    0x1.000002p0
+  },
+  { // Entry 288
+    0.0,
+    0x1.p0
+  },
+  { // Entry 289
+    -0x1.bcb7b230ca2a209eceb3929c5a02ff59p-26,
+    0x1.fffffep-1
+  },
+  { // Entry 290
+    -0x1.adb6384a546e6a16c42330d77d132671p-4,
+    0x1.921fb6p-1
+  },
+  { // Entry 291
+    -0x1.2f70302edce2b11d800ee1c6ab7aae56p5,
+    0x1.000002p-126
+  },
+  { // Entry 292
+    -0x1.2f703035cfc16f745a96688ab69d3e64p5,
+    0x1.p-126
+  },
+  { // Entry 293
+    -0x1.2f70303cc2a03bb0f2a882c164a49cddp5,
+    0x1.fffffcp-127
+  },
+  { // Entry 294
+    -0x1.2f703043b57f15d3487cc76186a378f6p5,
+    0x1.fffff8p-127
+  },
+  { // Entry 295
+    -0x1.646b65538650ec90cbed9f5dda901065p5,
+    0x1.p-148
+  },
+  { // Entry 296
+    -0x1.66d3e7bd9a402c6f2e2bc4c48abe02abp5,
+    0x1.p-149
+  },
+  { // Entry 297
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 298
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 300
+    0x1.p1,
+    0x1.90p6
+  },
+  { // Entry 301
+    0x1.80p1,
+    0x1.f4p9
+  }
+};
diff --git a/tests/math_data/log1p_intel_data.h b/tests/math_data/log1p_intel_data.h
new file mode 100644
index 0000000..12118ea
--- /dev/null
+++ b/tests/math_data/log1p_intel_data.h
@@ -0,0 +1,1486 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_log1p_intel_data[] = {
+  { // Entry 0
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    -0x1.0415d89e74446809b5d7e16e90dcfb17p-5,
+    -0x1.0000000000002p-5
+  },
+  { // Entry 2
+    -0x1.269621334db92803beb76a16b5547d4dp-2,
+    -0x1.000000180p-2
+  },
+  { // Entry 3
+    -0x1.00080000000008008002000000555d55p-52,
+    -0x1.00080p-52
+  },
+  { // Entry 4
+    -0x1.001000000040080040001559559556b2p-41,
+    -0x1.001p-41
+  },
+  { // Entry 5
+    -0x1.65724c2110f35416c9322de1fbce6ea0p-2,
+    -0x1.2dba262a7c8b0p-2
+  },
+  { // Entry 6
+    -0x1.5af4179028eb7638f1145bd433d6c831p-11,
+    -0x1.5ad6b5ad6b5b0p-11
+  },
+  { // Entry 7
+    -0x1.74fc36f06cd5b7ffd79b0ff90a64bb6ep-6,
+    -0x1.70c58e67b7aeap-6
+  },
+  { // Entry 8
+    -0x1.d62e0cd7372ac11cfb2f285d279dc3d4p-2,
+    -0x1.7905b82a1839dp-2
+  },
+  { // Entry 9
+    -0x1.7d9c1debf082f7fe3df487d0e4823676p-6,
+    -0x1.793331eece596p-6
+  },
+  { // Entry 10
+    -0x1.e148a1a2726cbfb45f343d2e78b71a51p-2,
+    -0x1.7ffffffffffffp-2
+  },
+  { // Entry 11
+    -0x1.9baf61134c048801e3731883b65290b3p-5,
+    -0x1.9182fde7e3318p-5
+  },
+  { // Entry 12
+    -0x1.ff93ccbd3124237a5b3cf16c47c915c9p-2,
+    -0x1.92a7fc86dcbd9p-2
+  },
+  { // Entry 13
+    -0x1.8feb5ba3c5b0d7fddffe1b9133bd3827p0,
+    -0x1.94a5294a5294cp-1
+  },
+  { // Entry 14
+    -0x1.e265a1d9483178002922dd984d33f198p-4,
+    -0x1.c712d0d7f0490p-4
+  },
+  { // Entry 15
+    -0x1.cd4e4c03a55707e868994265170eefb8p-10,
+    -0x1.cce673399cce8p-10
+  },
+  { // Entry 16
+    -0x1.e5df7f9b307ac000115f8473c90fb515p-9,
+    -0x1.e4f93e4f93e50p-9
+  },
+  { // Entry 17
+    -0x1.f96ef48ecd4037fe220ffae33fef5d04p-5,
+    -0x1.ea28302403580p-5
+  },
+  { // Entry 18
+    -0x1.fdd09f73d7f688dd5508c770fe7b7a9fp-5,
+    -0x1.ee4675d0ac9aap-5
+  },
+  { // Entry 19
+    -0x1.ffffffffffe4b72dd5ac98791a728e1fp-5,
+    -0x1.f0540438fd429p-5
+  },
+  { // Entry 20
+    -0x1.ff7fac9bb11607daf86980492f147eedp-10,
+    -0x1.ff0001ffffffep-10
+  },
+  { // Entry 21
+    -0x1.ffe7fffffffff7ff40047fffffaaaaaap-54,
+    -0x1.ffe7fffffffffp-54
+  },
+  { // Entry 22
+    -0x1.4cb9ed50b6bc79d44d301801ce0ff6f3p4,
+    -0x1.fffffff801fffp-1
+  },
+  { // Entry 23
+    -0x1.57cd0e3026827bbcd5d3d6a532515bd1p4,
+    -0x1.fffffffbfffffp-1
+  },
+  { // Entry 24
+    -0x1.002005545508732d7b57a1ec86bd5c7ap-10,
+    -0x1.fffffffc0p-11
+  },
+  { // Entry 25
+    -0x1.08598b57c1806001dbb99c0aebf44bdep-4,
+    -0x1.fffffffc0003fp-5
+  },
+  { // Entry 26
+    -0x1.08598b58e3a06001bf513750331fb25cp-4,
+    -0x1.fffffffe1ffffp-5
+  },
+  { // Entry 27
+    -0x1.ffffffff000007fffffff800002aacaap-54,
+    -0x1.ffffffff0p-54
+  },
+  { // Entry 28
+    -0x1.00000000001ff7fffffff54d55555547p-40,
+    -0x1.ffffffffff3ffp-41
+  },
+  { // Entry 29
+    -0x1.ffffffffffffeffffffffffffeaaaaaap-53,
+    -0x1.ffffffffffffep-53
+  },
+  { // Entry 30
+    0x1.ffffffffff0000000000aaaaaaaaaa2ap-41,
+    0x1.0p-40
+  },
+  { // Entry 31
+    0x1.ffffffffffffffffffffffffffffffp-121,
+    0x1.0p-120
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 33
+    0x1.fffffffffffffffffffffffffeaaaaaap-52,
+    0x1.0000000000001p-51
+  },
+  { // Entry 34
+    0x1.00000000000007ffffffffffff555555p-52,
+    0x1.0000000000001p-52
+  },
+  { // Entry 35
+    0x1.9f323ecbf9855480be2cbc494f93df36p-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 36
+    0x1.ffffffffffc0000000000aaaaaaaaaa8p-42,
+    0x1.00000000002p-41
+  },
+  { // Entry 37
+    0x1.ffffffffffdffffffffffaaaaaaaaaaep-42,
+    0x1.00000000003p-41
+  },
+  { // Entry 38
+    0x1.ffe002ae6a31006877edb3328bd3ae91p-12,
+    0x1.00000001fffffp-11
+  },
+  { // Entry 39
+    0x1.9f323f094c68a8000013901093412da6p-2,
+    0x1.0000002dfe2afp-1
+  },
+  { // Entry 40
+    0x1.9f323f094c692800000be5b40e615d2dp-2,
+    0x1.0000002dfe2b5p-1
+  },
+  { // Entry 41
+    0x1.193ea82ad0308976a42437ffabe62762p0,
+    0x1.000000cp1
+  },
+  { // Entry 42
+    0x1.f0b21b0c9a27f7973092bef2b8a18d80p-5,
+    0x1.00080p-4
+  },
+  { // Entry 43
+    0x1.1ace1631f668001f17e5430537a94f9fp5,
+    0x1.00080p51
+  },
+  { // Entry 44
+    0x1.000fffffffbff7ffc0001559559556a2p-41,
+    0x1.001p-41
+  },
+  { // Entry 45
+    0x1.f31cdeeb3cd4c7c0a3e945ad856befcbp4,
+    0x1.00cp45
+  },
+  { // Entry 46
+    0x1.206360b7e569587b36009d7c942d4f3cp5,
+    0x1.014p52
+  },
+  { // Entry 47
+    0x1.f333a5f5edb1b76e16684e60b7181719p-5,
+    0x1.015cdfc51f91cp-4
+  },
+  { // Entry 48
+    0x1.64892563f80250000b60adaac677e2eap-1,
+    0x1.01a5a2b15fc5cp0
+  },
+  { // Entry 49
+    0x1.0482afcf527d98002bc41c40cd3b44c5p-23,
+    0x1.0482b0d86c362p-23
+  },
+  { // Entry 50
+    0x1.045dcf2cb15f57fe3f2ed152226368c8p-5,
+    0x1.088c59ac8c7d1p-5
+  },
+  { // Entry 51
+    0x1.015e05876e3e67fff047c696eba44ba2p-4,
+    0x1.09ap-4
+  },
+  { // Entry 52
+    0x1.0b6515d81d9732694cd7ec512fc6f1b4p-11,
+    0x1.0b768b5ad8019p-11
+  },
+  { // Entry 53
+    0x1.b346a1d28f44d7fdcee7a0bd07405845p-2,
+    0x1.0f35566ed3cc2p-1
+  },
+  { // Entry 54
+    0x1.b3cce9b7221757feb43dcf531070c894p0,
+    0x1.1f27c14e425b9p2
+  },
+  { // Entry 55
+    0x1.fbc379bd13a6b00091e8da2307a3712fp-3,
+    0x1.202p-2
+  },
+  { // Entry 56
+    0x1.2140a33ee4f537fe4de38bae4056e098p-5,
+    0x1.266b753946441p-5
+  },
+  { // Entry 57
+    0x1.d6bfbea5ab7fd4c43b30348da32e2a7dp-2,
+    0x1.2ad0c02f60402p-1
+  },
+  { // Entry 58
+    0x1.c09da5a8b37876f669efaffd93412f9ap0,
+    0x1.312e7b7be62a5p2
+  },
+  { // Entry 59
+    0x1.e3a91d4d7516cb9db08fd3c3cf7d40cap-2,
+    0x1.351a8d46a35p-1
+  },
+  { // Entry 60
+    0x1.f128f5faf06ecb35c83b1131cf5d73d5p-2,
+    0x1.4p-1
+  },
+  { // Entry 61
+    0x1.f1ee31f14d4f17ffde2f2fe766dfc318p-2,
+    0x1.40a0502814080p-1
+  },
+  { // Entry 62
+    0x1.41e3e450b6073001c502b22fec3ab4d7p-5,
+    0x1.484c43acc194cp-5
+  },
+  { // Entry 63
+    0x1.4d9ff934d99f37ff40fd39eb618dcd3ap-21,
+    0x1.4dap-21
+  },
+  { // Entry 64
+    0x1.a0711f9b475687ffffd2981b5b49910ep2,
+    0x1.4e5fffff0p9
+  },
+  { // Entry 65
+    0x1.e1905175711a17c09fd40254fad72ae8p4,
+    0x1.56f3052920ef0p43
+  },
+  { // Entry 66
+    0x1.4f7ef3b13e1fa800361c4277dfa1092ap-4,
+    0x1.5d9e6884d6ac2p-4
+  },
+  { // Entry 67
+    0x1.e45c01e8c233cffe5ac108bc6c123bfap0,
+    0x1.688p2
+  },
+  { // Entry 68
+    0x1.c34366179d4258048e0ec51c6fefd58cp-1,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 69
+    0x1.e2af1644433ac7c03096da53cf28c18ap4,
+    0x1.6fd1ffb140878p43
+  },
+  { // Entry 70
+    0x1.6392a510033287ffc3d40d8ce33d1627p-4,
+    0x1.73767fd8537b3p-4
+  },
+  { // Entry 71
+    0x1.d36a35aaae768800f77be0b2a29e40b7p-1,
+    0x1.7dd89e50e078ep0
+  },
+  { // Entry 72
+    0x1.83ffed9f8129180039f0eacf23501c34p-20,
+    0x1.840p-20
+  },
+  { // Entry 73
+    0x1.8996381ef2cb67ff2c1a031d8e88fa81p-8,
+    0x1.8ac562b158ac4p-8
+  },
+  { // Entry 74
+    0x1.926499264fd877fe77bab85881dbab74p-43,
+    0x1.926499265p-43
+  },
+  { // Entry 75
+    0x1.e737cb23865c6b921552ad81d572b729p-1,
+    0x1.970p0
+  },
+  { // Entry 76
+    0x1.588c2de5e88db000000ea4e59847d15cp-2,
+    0x1.99999a1030f9dp-2
+  },
+  { // Entry 77
+    0x1.588c2df2c02057ffffefc30ff25d79ddp-2,
+    0x1.99999a222b93fp-2
+  },
+  { // Entry 78
+    0x1.756501be3e242800001019cd7cd7ce3fp-3,
+    0x1.99999a598c15cp-3
+  },
+  { // Entry 79
+    0x1.756502257dbf5000000bc0ddc72156fap-3,
+    0x1.99999ad572033p-3
+  },
+  { // Entry 80
+    0x1.8663f9903e12effffff039fafc6b5f67p-4,
+    0x1.99999bc8ec375p-4
+  },
+  { // Entry 81
+    0x1.9bd8abb150fbd005aa9e2ed5a074a08ep-21,
+    0x1.9bd8b60b96e2fp-21
+  },
+  { // Entry 82
+    0x1.9955bad1e36537ffd7fd8448d392de25p-7,
+    0x1.9be6f9be6f9b1p-7
+  },
+  { // Entry 83
+    0x1.5ba06e3fb01a2d107ec5201223f00bbbp-2,
+    0x1.9dead086a58cdp-2
+  },
+  { // Entry 84
+    0x1.5f1a557f41f26cc673db4f91686a3758p-2,
+    0x1.a2ce8df554b2cp-2
+  },
+  { // Entry 85
+    0x1.62405ebd6ab333837c8a77026ab4aae8p-2,
+    0x1.a74p-2
+  },
+  { // Entry 86
+    0x1.f5f73d69114c2b85b3b151d45a33d0e5p-1,
+    0x1.aa6p0
+  },
+  { // Entry 87
+    0x1.b229fbeca7781fffe6f5fdb97b7242c6p-5,
+    0x1.bdep-5
+  },
+  { // Entry 88
+    0x1.bc21a8cfe0c4178b34990a731d3fbd15p-5,
+    0x1.c86432190c8p-5
+  },
+  { // Entry 89
+    0x1.07952367af5c880000105e2b54a5a062p0,
+    0x1.cccccced2ed7ep0
+  },
+  { // Entry 90
+    0x1.c1de8bc3181ba001c1b60c40eff90650p-5,
+    0x1.ce7375b5023c4p-5
+  },
+  { // Entry 91
+    0x1.d59efda67795a800fddf8c5bba4a60b3p-43,
+    0x1.d59efda677cb8p-43
+  },
+  { // Entry 92
+    0x1.d80158c4069057ff768740aa80c0bd66p-7,
+    0x1.db6bcf502f3e0p-7
+  },
+  { // Entry 93
+    0x1.dfeabe29b510312e8367f414b0511949p-11,
+    0x1.e022fd930f86ap-11
+  },
+  { // Entry 94
+    0x1.8a9a59caf11980a5915d2b6b7cf2553dp-2,
+    0x1.e16b24d38d1b2p-2
+  },
+  { // Entry 95
+    0x1.8f11e873662c77e1769d569868a65e72p-2,
+    0x1.e80p-2
+  },
+  { // Entry 96
+    0x1.dd166106e87f37622aac2c908d6aaf91p-5,
+    0x1.eb40e151fad81p-5
+  },
+  { // Entry 97
+    0x1.ec80ffffffc4b7fe6ff009824ddc235ap-43,
+    0x1.ec80fffffffffp-43
+  },
+  { // Entry 98
+    0x1.edf52c2e34740b24b736dca45fb4ae9ep-13,
+    0x1.ee0410e3b1d24p-13
+  },
+  { // Entry 99
+    0x1.f02717d855569ffe85bb9f224358afeap-6,
+    0x1.f7bdd6789c670p-6
+  },
+  { // Entry 100
+    0x1.fbfffffffe07e80000029aea55555174p-40,
+    0x1.fbfffffffffffp-40
+  },
+  { // Entry 101
+    0x1.fbfffffffe07f80000029aca95555174p-40,
+    0x1.fc0p-40
+  },
+  { // Entry 102
+    0x1.367799dc39a238068eae0d5339eafee2p5,
+    0x1.fc00000000006p55
+  },
+  { // Entry 103
+    0x1.ffc7ffffff0027fcf000aa82af0a71p-41,
+    0x1.ffc7fffffffffp-41
+  },
+  { // Entry 104
+    0x1.ffdfffffffffe800fff8000000aa9aabp-54,
+    0x1.ffdffffffffffp-54
+  },
+  { // Entry 105
+    0x1.fff7fffffefff7fff000aab2aa8aa9ffp-41,
+    0x1.fff7fffffffffp-41
+  },
+  { // Entry 106
+    0x1.fff7ffffffffe8003fff800000aaa6aap-54,
+    0x1.fff7fffffffffp-54
+  },
+  { // Entry 107
+    0x1.c55179395a000800ddc334790469d4dep7,
+    0x1.fffffe3ffffffp326
+  },
+  { // Entry 108
+    0x1.ffc00aa4ac10abd44706d89cf12892a3p-11,
+    0x1.fffffffbfffffp-11
+  },
+  { // Entry 109
+    0x1.ffc00aa7ab50ebc44bf56111ce332375p-11,
+    0x1.ffffffff0p-11
+  },
+  { // Entry 110
+    0x1.25e4f7b2737f9fc486612173c6596892p5,
+    0x1.ffffffffffff8p52
+  },
+  { // Entry 111
+    0x1.62e42fefa39ef33793c7673007e1ed5ep9,
+    0x1.ffffffffffff8p1023
+  },
+  { // Entry 112
+    0x1.9f323ecbf98489d61382119eae69348bp-2,
+    0x1.ffffffffffffbp-2
+  },
+  { // Entry 113
+    0x1.5ca72d17ed3ea80089ae65dfafc1e2b2p8,
+    0x1.ffffffffffffep502
+  },
+  { // Entry 114
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 115
+    0x1.2ccac6c8f41b74d6b733c9141c0bece5p-1,
+    0x1.995255f2d00abp-1
+  },
+  { // Entry 116
+    0x1.466a9269707376e50187259ee2b04818p-1,
+    0x1.c89ac57dac58ap-1
+  },
+  { // Entry 117
+    0x1.5ed1a7dce11ace55a3cdbe341ee88222p-1,
+    0x1.f7e3350888a69p-1
+  },
+  { // Entry 118
+    0x1.761c7d9dddc01d509dcb9b4ebceca84ep-1,
+    0x1.1395d249b27a4p0
+  },
+  { // Entry 119
+    0x1.8c63d27d4ca03daba8c98a232b2380f0p-1,
+    0x1.2b3a0a0f20a14p0
+  },
+  { // Entry 120
+    0x1.a1bd4c77d55363ab3b61dc89f7812c71p-1,
+    0x1.42de41d48ec84p0
+  },
+  { // Entry 121
+    0x1.b63bf7baf5eaa6eadec65ed0408ff964p-1,
+    0x1.5a827999fcef4p0
+  },
+  { // Entry 122
+    0x1.c9f0ad341cbebd1d84ae0c2674a34983p-1,
+    0x1.7226b15f6b164p0
+  },
+  { // Entry 123
+    0x1.dcea661b59e7f2a61f64bc6d943ab5aep-1,
+    0x1.89cae924d93d4p0
+  },
+  { // Entry 124
+    0x1.ef36808e501ff5bc97de3be617ad08b5p-1,
+    0x1.a16f20ea47644p0
+  },
+  { // Entry 125
+    0x1.00707c29c4643ea6f53f2c0edcf3f90ep0,
+    0x1.b91358afb58b4p0
+  },
+  { // Entry 126
+    0x1.08fa4b129d365103d8615b0fee830753p0,
+    0x1.d0b7907523b24p0
+  },
+  { // Entry 127
+    0x1.113d8baca8608c19974ff89c21cc8d16p0,
+    0x1.e85bc83a91d94p0
+  },
+  { // Entry 128
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 129
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 130
+    0x1.26990e07e25825de21cb52e655390d9ap-1,
+    0x1.8e3e170bf282dp-1
+  },
+  { // Entry 131
+    0x1.3a914a1db8cc3855d200ca3202e23d04p-1,
+    0x1.b27247aff148ep-1
+  },
+  { // Entry 132
+    0x1.4dc997cbf2ed6806315c6962614b41f2p-1,
+    0x1.d6a67853f00efp-1
+  },
+  { // Entry 133
+    0x1.604fdb515451526fcf632e2255d97ef2p-1,
+    0x1.fadaa8f7eed50p-1
+  },
+  { // Entry 134
+    0x1.72308447c51665ec8f42f6c1c2f51294p-1,
+    0x1.0f876ccdf6cd9p0
+  },
+  { // Entry 135
+    0x1.8376bff406f913a3579a23f2e932df57p-1,
+    0x1.21a1851ff630ap0
+  },
+  { // Entry 136
+    0x1.942ca35e8f18f3591aded43add2260dbp-1,
+    0x1.33bb9d71f593bp0
+  },
+  { // Entry 137
+    0x1.a45b4ec4852597b4ab8fdd6275a5c1f7p-1,
+    0x1.45d5b5c3f4f6cp0
+  },
+  { // Entry 138
+    0x1.b40b0b9a489f168f5ffc2c60ac5bd06ap-1,
+    0x1.57efce15f459dp0
+  },
+  { // Entry 139
+    0x1.c34366179d426545cadbc394096e719bp-1,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 140
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.8p-1
+  },
+  { // Entry 141
+    0x1.34024ac47b6fcebf994c642ef7a882adp-1,
+    0x1.a666666666666p-1
+  },
+  { // Entry 142
+    0x1.48a11293d785b50c2a3feb14c3680501p-1,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 143
+    0x1.5c73760b3c362e51806f6a2fcb5402b3p-1,
+    0x1.f333333333332p-1
+  },
+  { // Entry 144
+    0x1.6f88b286b22f0a5f70b8ce35df42c80ap-1,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 145
+    0x1.81ee60afb5018aaa0181c98fe3d11e57p-1,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 146
+    0x1.93b0aee21c2c6f1afb29632c77f0434bp-1,
+    0x1.3333333333332p0
+  },
+  { // Entry 147
+    0x1.a4da91c611dbcf17d743bad01121e91dp-1,
+    0x1.4666666666665p0
+  },
+  { // Entry 148
+    0x1.b575ed0743492c8aacff60d5920dffc4p-1,
+    0x1.5999999999998p0
+  },
+  { // Entry 149
+    0x1.c58bb5a60978a15095fe55861acca737p-1,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 150
+    0x1.d5240f0e0e07606e918e49626c8f05e6p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 151
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 152
+    0x1.7bdf362e9666e2dc442baf4dc625807dp-1,
+    0x1.199999999999ap0
+  },
+  { // Entry 153
+    0x1.93b0aee21c2c8c3240fad7898f606525p-1,
+    0x1.3333333333334p0
+  },
+  { // Entry 154
+    0x1.aa73108717b6b240250c5393b356e40ap-1,
+    0x1.4cccccccccccep0
+  },
+  { // Entry 155
+    0x1.c03d703735f8e1920627f4336073fe78p-1,
+    0x1.6666666666668p0
+  },
+  { // Entry 156
+    0x1.d5240f0e0e0793a1c4c17c959fc23919p-1,
+    0x1.8000000000002p0
+  },
+  { // Entry 157
+    0x1.e938cbceb16defcbb921fdd58d5dd567p-1,
+    0x1.999999999999cp0
+  },
+  { // Entry 158
+    0x1.fc8b7f138bdeb93fee2e78b4fe3e0831p-1,
+    0x1.b333333333336p0
+  },
+  { // Entry 159
+    0x1.0795235c1ea1ca8c0592ee75b4579a8ep0,
+    0x1.cccccccccccd0p0
+  },
+  { // Entry 160
+    0x1.1090e20315213b2ddb45c328435c3ca7p0,
+    0x1.e66666666666ap0
+  },
+  { // Entry 161
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 162
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 163
+    -0x1.3217b0fd2b116908897cb1050beea205p-1,
+    -0x1.ccccccccccccdp-2
+  },
+  { // Entry 164
+    -0x1.058aefa811451fc7cc1184d75997dc44p-1,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 165
+    -0x1.b91f28212ba0379f7a6379b28d1ba9b7p-2,
+    -0x1.6666666666667p-2
+  },
+  { // Entry 166
+    -0x1.6d3c324e13f4fe9befad50a0273411c8p-2,
+    -0x1.3333333333334p-2
+  },
+  { // Entry 167
+    -0x1.269621134db93cd9140cbcc16037fb86p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 168
+    -0x1.c8ff7c79a9a24ac25d81ef2ffc2a24aep-3,
+    -0x1.999999999999cp-3
+  },
+  { // Entry 169
+    -0x1.4cd6b9796417b5f11f10de290430b32bp-3,
+    -0x1.3333333333336p-3
+  },
+  { // Entry 170
+    -0x1.af8e8210a41636e61283e0400e72f380p-4,
+    -0x1.999999999999fp-4
+  },
+  { // Entry 171
+    -0x1.a431d5bcc1942814e94f55ea2e15d5f4p-5,
+    -0x1.99999999999a4p-5
+  },
+  { // Entry 172
+    -0x1.400000000000032000000000000a6aaap-54,
+    -0x1.4p-54
+  },
+  { // Entry 173
+    0.0,
+    0.0
+  },
+  { // Entry 174
+    0x1.8fb063ef2c7e9cdd4f691425091f8212p-5,
+    0x1.999999999999ap-5
+  },
+  { // Entry 175
+    0x1.8663f793c46c6f8f982725b4f7100a62p-4,
+    0x1.999999999999ap-4
+  },
+  { // Entry 176
+    0x1.1e3b825dd05ec3fb503515bb34638d41p-3,
+    0x1.3333333333334p-3
+  },
+  { // Entry 177
+    0x1.7565011e496768e9c982340d63fd99bep-3,
+    0x1.999999999999ap-3
+  },
+  { // Entry 178
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.0p-2
+  },
+  { // Entry 179
+    0x1.0ca937be1b9dbb5e7217a3726f197837p-2,
+    0x1.3333333333333p-2
+  },
+  { // Entry 180
+    0x1.334e9e47d07f44b44307069827b79584p-2,
+    0x1.6666666666666p-2
+  },
+  { // Entry 181
+    0x1.588c2d913348f380eebceb76c4296aeap-2,
+    0x1.9999999999999p-2
+  },
+  { // Entry 182
+    0x1.7c7b282d0d46adc1a6a2b9d712581488p-2,
+    0x1.cccccccccccccp-2
+  },
+  { // Entry 183
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 184
+    -0x1.7f7427b73e38f503b99f86230b9f8fa9p1,
+    -0x1.e666666666666p-1
+  },
+  { // Entry 185
+    -0x1.26bb1bbb5551382dd4adac5709a61451p1,
+    -0x1.cccccccccccccp-1
+  },
+  { // Entry 186
+    -0x1.e5a9a7c3ac414090cf257ef11203a29dp0,
+    -0x1.b333333333332p-1
+  },
+  { // Entry 187
+    -0x1.9c041f7ed8d2f6afdf77a5160f5931f4p0,
+    -0x1.9999999999998p-1
+  },
+  { // Entry 188
+    -0x1.62e42fefa39eb35793c767300fe5ed5ep0,
+    -0x1.7fffffffffffep-1
+  },
+  { // Entry 189
+    -0x1.34378fcbda71c6e50541cb590e10abedp0,
+    -0x1.6666666666664p-1
+  },
+  { // Entry 190
+    -0x1.0cc1248b56cc74c07caa7576f1233f0cp0,
+    -0x1.4cccccccccccap-1
+  },
+  { // Entry 191
+    -0x1.d5240f0e0e06fa082b27e2fc16cc768ap-1,
+    -0x1.3333333333330p-1
+  },
+  { // Entry 192
+    -0x1.98d60031b8212e345617e33819904bcep-1,
+    -0x1.1999999999996p-1
+  },
+  { // Entry 193
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 194
+    0x1.1542457337d42e1c6b73c89d866ba171p6,
+    0x1.0p100
+  },
+  { // Entry 195
+    0x1.15a3de711cc5494e20ce2f7e3974c4edp6,
+    0x1.199999999999ap100
+  },
+  { // Entry 196
+    0x1.15fcf7f3c6f8e1f8e05889b78d1212e9p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 197
+    0x1.164eeeaaf5efcc1553be7dcad167cc55p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 198
+    0x1.169ad1a0c907775fec628588fd1aeadcp6,
+    0x1.6666666666668p100
+  },
+  { // Entry 199
+    0x1.16e177b203cdb330ec31f559cfad3551p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 200
+    0x1.17238e14da469b55b96c96744e61203ap6,
+    0x1.999999999999cp100
+  },
+  { // Entry 201
+    0x1.1761a2765a6960abe5cf92c0959da837p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 202
+    0x1.179c2a3292f266ff2833283af2c71bb8p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 203
+    0x1.17d387985f833a0d4069f79c1b97242fp6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 204
+    0x1.18080dd3171b6c031a9b576be65b6d4cp6,
+    0x1.0p101
+  },
+  { // Entry 205
+    0x1.1542457337d42e1c6b73c89d862ba171p7,
+    0x1.0p200
+  },
+  { // Entry 206
+    0x1.157311f22a4cbbb54620fc0ddfb31be9p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 207
+    0x1.159f9eb37f66880aa5e6292a89842f82p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 208
+    0x1.15c89a0f16e1fd18df9923342bb11959p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 209
+    0x1.15ee8b8a006dd2be2beb2713418c6ab9p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 210
+    0x1.1611de929dd0f0a6abd2defbaad7160cp7,
+    0x1.8000000000002p200
+  },
+  { // Entry 211
+    0x1.1632e9c4090d64b912702f88ea3260d6p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 212
+    0x1.1651f3f4c91ec76428a1adaf0dd1d201p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 213
+    0x1.166f37d2e5634a8dc9d3786c3c679778p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 214
+    0x1.168ae685cbabb414d5eee01cd0d08b3cp7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 215
+    0x1.16a529a32777cd0fc3079004b633875fp7,
+    0x1.0p201
+  },
+  { // Entry 216
+    0x1.5a92d6d005c939a38650bac4e7b689cep9,
+    0x1.0p1000
+  },
+  { // Entry 217
+    0x1.5a9f09efc2675d09bcfc07a0fe18686cp9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 218
+    0x1.5aaa2d2017add01f14ed52e8288cad52p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 219
+    0x1.5ab46bf6fd8cad62a35a116a9117e7c8p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 220
+    0x1.5abde855b7efa2cbf66e9262568ebc20p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 221
+    0x1.5ac6bd17df486a461668805c70e166f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 222
+    0x1.5aceffe43a17874ab00fd47fc0b839a7p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 223
+    0x1.5ad6c2706a1bdff5759c340949a015f2p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 224
+    0x1.5ade1367f12d00bfdde8a6b895458750p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 225
+    0x1.5ae4ff14aabf1b21a0ef80a4ba5fc441p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 226
+    0x1.5aeb8fdc01b221605c35ac9eb3b88349p9,
+    0x1.0p1001
+  },
+  { // Entry 227
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 229
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 230
+    0x1.11d14e1fcb72e46bc706b21c5008b9f1p-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 231
+    0x1.11d14e1fcb72edcb28a032e083a6f199p-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 232
+    0x1.11d14e1fcb72f72a8a39b3a4b7193d0ep-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 233
+    -0x1.3a5abf07b788ff1b06e03c7b74301bb8p0,
+    -0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 234
+    -0x1.3a5abf07b788e3cab7acfcdd8e180c5dp0,
+    -0x1.6a09e667f3bccp-1
+  },
+  { // Entry 235
+    -0x1.3a5abf07b788c87a6879bd3faaea06e8p0,
+    -0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 236
+    0x1.c34366179d4258048e0ec51c6fefd58cp-1,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 237
+    0x1.c34366179d426545cadbc394096e719bp-1,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 238
+    0x1.c34366179d42728707a8c20ba2953544p-1,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 239
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 240
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.0p-1
+  },
+  { // Entry 241
+    0x1.9f323ecbf984d480be2cbc495a3e89e1p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 242
+    0x1.1e85f5e7040cfaba33513aabf3326da5p-1,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 243
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.8p-1
+  },
+  { // Entry 244
+    0x1.1e85f5e7040d0d0357e383d0857b9238p-1,
+    0x1.8000000000001p-1
+  },
+  { // Entry 245
+    -0x1.62e42fefa39f135793c7673009e5ed5ep0,
+    -0x1.8000000000001p-1
+  },
+  { // Entry 246
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    -0x1.8p-1
+  },
+  { // Entry 247
+    -0x1.62e42fefa39ed35793c7673009e5ed5ep0,
+    -0x1.7ffffffffffffp-1
+  },
+  { // Entry 248
+    0x1.d5240f0e0e076d3b5e5b162f39d6b3fap-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 249
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.8p0
+  },
+  { // Entry 250
+    0x1.d5240f0e0e0786d4f7f4afc8d3704d94p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 251
+    -0x1.25e4f7b2737fa18486612173c68a6892p5,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 252
+    0x1.9c041f7ed8d3304979113eafa0de50acp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 253
+    0x1.9c041f7ed8d336afdf77a516075931f4p0,
+    0x1.0p2
+  },
+  { // Entry 254
+    0x1.9c041f7ed8d3437cac4471e2d3d4133bp0,
+    0x1.0000000000001p2
+  },
+  { // Entry 255
+    0x1.193ea7aad030a4214ec437ffafd7ee7cp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 256
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.0p1
+  },
+  { // Entry 257
+    0x1.193ea7aad030b4214ec437ffafad43d2p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 258
+    0x1.62e42fefa39eeb5793c7673007d5ed5ep-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 259
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 260
+    0x1.62e42fefa39f035793c7673007a5ed5ep-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 261
+    0x1.9f323ecbf984b480be2cbc495a69348bp-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 262
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.0p-1
+  },
+  { // Entry 263
+    0x1.9f323ecbf984d480be2cbc495a3e89e1p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 264
+    0x1.c8ff7c79a9a20df590b522632ec31a70p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 265
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.0p-2
+  },
+  { // Entry 266
+    0x1.c8ff7c79a9a2345bf71b88c9950ac885p-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 267
+    0x1.e27076e2af2e5065c4f1c53c5ba22021p-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 268
+    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
+    0x1.0p-3
+  },
+  { // Entry 269
+    0x1.e27076e2af2e7b106f9c6fe70639d447p-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 270
+    0x1.f0a30c01162a5708bd8807dfa41c78f8p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 271
+    0x1.f0a30c01162a6617cc9716eeb32f131ap-5,
+    0x1.0p-4
+  },
+  { // Entry 272
+    0x1.f0a30c01162a8435eab5350cd13f04eep-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 273
+    0x1.f829b0e7832ff54baec8fe6c44c511fdp-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 274
+    0x1.f829b0e7833004cf8fc13c7bc8a7ebabp-6,
+    0x1.0p-5
+  },
+  { // Entry 275
+    0x1.f829b0e7833023d751b1b89ad0625665p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 276
+    0x1.fc0a8b0fc03e2d38f1978c3b9c1379b6p-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 277
+    0x1.fc0a8b0fc03e3cf9eda74d37abd56df5p-7,
+    0x1.0p-6
+  },
+  { // Entry 278
+    0x1.fc0a8b0fc03e5c7be5c6cf2fcb538558p-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 279
+    0x1.fe02a6b106787fe3370f3b19ca72746ep-8,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 280
+    0x1.fe02a6b106788fc37690391dc282d2b3p-8,
+    0x1.0p-7
+  },
+  { // Entry 281
+    0x1.fe02a6b10678af83f5923525b2a09b1bp-8,
+    0x1.0000000000001p-7
+  },
+  { // Entry 282
+    0x1.ff00aa2b10bbf4b076c559c4c4c719a8p-9,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 283
+    0x1.ff00aa2b10bc04a086b569b4d4b76919p-9,
+    0x1.0p-8
+  },
+  { // Entry 284
+    0x1.ff00aa2b10bc2480a6958994f4968af6p-9,
+    0x1.0000000000001p-8
+  },
+  { // Entry 285
+    0x1.ff802a9ab10e579274ea53f96c2ac73bp-10,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 286
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.0p-9
+  },
+  { // Entry 287
+    0x1.ff802a9ab10e877a80e456f7ecea07cap-10,
+    0x1.0000000000001p-9
+  },
+  { // Entry 288
+    0x1.ffc00aa8ab10ebc44c055914cd3364b9p-11,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 289
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.0p-10
+  },
+  { // Entry 290
+    0x1.ffc00aa8ab111bb84f049944c1363411p-11,
+    0x1.0000000000001p-10
+  },
+  { // Entry 291
+    0x1.fff8002aa9aaa11166638b10aec3e0a4p-14,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 292
+    0x1.fff8002aa9aab110e6678af0afc3daa4p-14,
+    0x1.0p-13
+  },
+  { // Entry 293
+    0x1.fff8002aa9aad10fe66f8ab0b1c3c2a5p-14,
+    0x1.0000000000001p-13
+  },
+  { // Entry 294
+    -0x1.62e42fefa39f135793c7673008e5ed5ep-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 295
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.0p-1
+  },
+  { // Entry 296
+    -0x1.62e42fefa39ee35793c767300825ed5ep-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 297
+    -0x1.269621134db93cd9140cbcc16037fb86p-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 298
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    -0x1.0p-2
+  },
+  { // Entry 299
+    -0x1.269621134db91cd9140cbcc1600d50dbp-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 300
+    -0x1.1178e8227e47d02c5d4668ebc04628aep-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 301
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    -0x1.0p-3
+  },
+  { // Entry 302
+    -0x1.1178e8227e47b4bea66afb34e4c8c56ap-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 303
+    -0x1.08598b59e3a0799b50ead061448cec6cp-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 304
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    -0x1.0p-4
+  },
+  { // Entry 305
+    -0x1.08598b59e3a06001b75136c7aaec7f32p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 306
+    -0x1.0415d89e7444578594cf9f5e0caf2971p-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 307
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    -0x1.0p-5
+  },
+  { // Entry 308
+    -0x1.0415d89e74443ebf63433c45467a6ab5p-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 309
+    -0x1.02056589358484e027b146bdd7feaee1p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 310
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    -0x1.0p-6
+  },
+  { // Entry 311
+    -0x1.0205658935846c7ea198e537bf9b9c7fp-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 312
+    -0x1.010157588de722ad0cdb84fde21218d8p-7,
+    -0x1.0000000000001p-7
+  },
+  { // Entry 313
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    -0x1.0p-7
+  },
+  { // Entry 314
+    -0x1.010157588de70a7cac1a01f7d5f9256ep-7,
+    -0x1.fffffffffffffp-8
+  },
+  { // Entry 315
+    -0x1.0080559588b367f5a8f34d9dadc40b3ap-8,
+    -0x1.0000000000001p-8
+  },
+  { // Entry 316
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    -0x1.0p-8
+  },
+  { // Entry 317
+    -0x1.0080559588b34fdd90db358595ab9261p-8,
+    -0x1.fffffffffffffp-9
+  },
+  { // Entry 318
+    -0x1.0040155d5889ee786b20efc1400f5ea4p-9,
+    -0x1.0000000000001p-9
+  },
+  { // Entry 319
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    -0x1.0p-9
+  },
+  { // Entry 320
+    -0x1.0040155d5889d66c651dee407faefe5bp-9,
+    -0x1.fffffffffffffp-10
+  },
+  { // Entry 321
+    -0x1.002005565588a3397dd822048abe2755p-10,
+    -0x1.0000000000001p-10
+  },
+  { // Entry 322
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    -0x1.0p-10
+  },
+  { // Entry 323
+    -0x1.0020055655888b337c57c1ec84bc8ee9p-10,
+    -0x1.fffffffffffffp-11
+  },
+  { // Entry 324
+    -0x1.0004001555d568891de2704b038ca596p-13,
+    -0x1.0000000000001p-13
+  },
+  { // Entry 325
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    -0x1.0p-13
+  },
+  { // Entry 326
+    -0x1.0004001555d550885ddc701b020c9696p-13,
+    -0x1.fffffffffffffp-14
+  },
+  { // Entry 327
+    0x1.73242d45267376d3a2a0a820c4902335p-1,
+    0x1.1082b577d34eap0
+  },
+  { // Entry 328
+    0x1.73242d4526738653ad4a41d5fe7ea6c1p-1,
+    0x1.1082b577d34ebp0
+  },
+  { // Entry 329
+    0x1.73242d45267395d3b7f3db8b37f509a8p-1,
+    0x1.1082b577d34ecp0
+  },
+  { // Entry 330
+    0x1.73242d452673a553c29d754070f34beap-1,
+    0x1.1082b577d34edp0
+  },
+  { // Entry 331
+    0x1.73242d452673b4d3cd470ef5a9796d86p-1,
+    0x1.1082b577d34eep0
+  },
+  { // Entry 332
+    0x1.73242d452673c453d7f0a8aae1876e7ep-1,
+    0x1.1082b577d34efp0
+  },
+  { // Entry 333
+    0x1.73242d452673d3d3e29a4260191d4ecfp-1,
+    0x1.1082b577d34f0p0
+  },
+  { // Entry 334
+    -0x1.00000000000018ade0e8cb684e083468p-4,
+    -0x1.f0540438fd5c6p-5
+  },
+  { // Entry 335
+    -0x1.0000000000001029cb3d0ccdd73ea85ap-4,
+    -0x1.f0540438fd5c5p-5
+  },
+  { // Entry 336
+    -0x1.00000000000007a5b5914e336079a4a5p-4,
+    -0x1.f0540438fd5c4p-5
+  },
+  { // Entry 337
+    -0x1.fffffffffffffe433fcb1f31d3725290p-5,
+    -0x1.f0540438fd5c3p-5
+  },
+  { // Entry 338
+    -0x1.ffffffffffffed3b1473a1fce5fa6c86p-5,
+    -0x1.f0540438fd5c2p-5
+  },
+  { // Entry 339
+    -0x1.ffffffffffffdc32e91c24c7f88b972cp-5,
+    -0x1.f0540438fd5c1p-5
+  },
+  { // Entry 340
+    -0x1.ffffffffffffcb2abdc4a7930b25d282p-5,
+    -0x1.f0540438fd5c0p-5
+  },
+  { // Entry 341
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 342
+    0x1.62e42fefa39ef35393c7673007e5dd5ep9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 343
+    0x1.62e42fefa39ef34f93c7673007e5ad5ep9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 344
+    0x1.6bcbed09f00aece2ea800b6af0f24a0bp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 345
+    0x1.e3703db0ab119bed3e763f434dd7c4fbp-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 346
+    0x1.62e42fefa39f035793c7673007a5ed5ep-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 347
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.0p0
+  },
+  { // Entry 348
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 349
+    0x1.62e42fefa39eeb5793c7673007d5ed5ep-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 350
+    -0x1.25e4f7b2737fa18486612173c68a6892p5,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 351
+    0x1.28c6c3a79fe295c7ca64ed982642adcfp-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 352
+    -0x1.89f9ff0c761bc5454f17ec539e887d37p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 354
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 356
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 357
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 358
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 359
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 360
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 361
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 362
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 363
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 364
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 365
+    0.0,
+    0.0
+  },
+  { // Entry 366
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/log1pf_intel_data.h b/tests/math_data/log1pf_intel_data.h
new file mode 100644
index 0000000..3519a63
--- /dev/null
+++ b/tests/math_data/log1pf_intel_data.h
@@ -0,0 +1,1182 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_log1pf_intel_data[] = {
+  { // Entry 0
+    -0x1.630430efae4a1e08a52dd228f774747ap-1,
+    -0x1.0010p-1
+  },
+  { // Entry 1
+    -0x1.0a6a950320b815309cee76c6c346aa8ap-6,
+    -0x1.084310p-6
+  },
+  { // Entry 2
+    -0x1.4592f4df3c22380a8a7a6bd256a231c9p-2,
+    -0x1.16e480p-2
+  },
+  { // Entry 3
+    -0x1.5362b6deece53e28930e0d75f3b0e969p-2,
+    -0x1.20e0p-2
+  },
+  { // Entry 4
+    -0x1.66ea0edec29ccaccbbc9459e55583852p-2,
+    -0x1.2ec3p-2
+  },
+  { // Entry 5
+    -0x1.e5ee02ef643742b40691cfbbe5c34235p-1,
+    -0x1.39ce80p-1
+  },
+  { // Entry 6
+    -0x1.ee2a156b413e4fe8b48e04a1a81d7d1fp-2,
+    -0x1.88p-2
+  },
+  { // Entry 7
+    -0x1.af8967d890ceb5ae2c25ac22be3d5d14p-4,
+    -0x1.999502p-4
+  },
+  { // Entry 8
+    -0x1.c50e9e00c0346f0253e08a684bbb9a7ep-7,
+    -0x1.c1f080p-7
+  },
+  { // Entry 9
+    -0x1.d240ed01404debfca8485f4159238678p-7,
+    -0x1.cef3c0p-7
+  },
+  { // Entry 10
+    -0x1.e3d6ff014fb650f40fcce84889424dadp-7,
+    -0x1.e04906p-7
+  },
+  { // Entry 11
+    -0x1.e3dbcb012249a6d99fa2c2ccddddacc7p-7,
+    -0x1.e04dc0p-7
+  },
+  { // Entry 12
+    -0x1.e9924b01a753cecfd33f2d536b84f02fp-7,
+    -0x1.e5eeb0p-7
+  },
+  { // Entry 13
+    -0x1.f82ba0e78ab204f65a17734933732987p-6,
+    -0x1.f07ep-6
+  },
+  { // Entry 14
+    -0x1.f9c13b02072dd9618b9803ed7ddfbabep-7,
+    -0x1.f5df2ep-7
+  },
+  { // Entry 15
+    -0x1.fa2f5d01c871d22cde70cc085ced02ebp-7,
+    -0x1.f64ba0p-7
+  },
+  { // Entry 16
+    -0x1.fb1175021cc3e1272f3c6b103248fc29p-7,
+    -0x1.f72a40p-7
+  },
+  { // Entry 17
+    -0x1.fd69f70227b4fea60671e68dcb4dee6cp-7,
+    -0x1.f97984p-7
+  },
+  { // Entry 18
+    -0x1.62c42eefb8f3c8a68360fc37186210edp-1,
+    -0x1.ffdffep-2
+  },
+  { // Entry 19
+    -0x1.fffffdfffffaaaaaa6aaaab111112666p-24,
+    -0x1.fffffcp-24
+  },
+  { // Entry 20
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.p-9
+  },
+  { // Entry 21
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.p-10
+  },
+  { // Entry 22
+    0x1.fffff00000aaaaa2aaab11110bbbbc04p-21,
+    0x1.p-20
+  },
+  { // Entry 23
+    0x1.fffff800002aaaa9aaaab11110e66667p-22,
+    0x1.p-21
+  },
+  { // Entry 24
+    0x1.ffffffffffffffffffffffffffffffp-121,
+    0x1.p-120
+  },
+  { // Entry 25
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 26
+    0x1.fc0a8effff421db6014956cf936c5246p-7,
+    0x1.000002p-6
+  },
+  { // Entry 27
+    0x1.ffffc40009aaa8e9ab0190ff8c14b319p-19,
+    0x1.000002p-18
+  },
+  { // Entry 28
+    0x1.000000fffffd55555755555888887dddp-23,
+    0x1.000002p-23
+  },
+  { // Entry 29
+    0x1.000001ffffbfffff0000145555d5554ep-41,
+    0x1.000002p-41
+  },
+  { // Entry 30
+    0x1.e270851b92b64555fb421203aa0bcb5cp-4,
+    0x1.000008p-3
+  },
+  { // Entry 31
+    0x1.193ead002577c5e89dc7604b89fc7cebp0,
+    0x1.000008p1
+  },
+  { // Entry 32
+    0x1.193f3cfff9f7d6d8965e4e6b818cb622p0,
+    0x1.0000e0p1
+  },
+  { // Entry 33
+    0x1.ffd006a99ad908d29312234ef301f8a7p-11,
+    0x1.0008p-10
+  },
+  { // Entry 34
+    0x1.f2a7c700004b00f1cb775536c5857252p-5,
+    0x1.01128cp-4
+  },
+  { // Entry 35
+    0x1.cabc19000311437879afccdb6fc91aafp-3,
+    0x1.0116p-2
+  },
+  { // Entry 36
+    0x1.20794701579253647a43cecd04c093e2p4,
+    0x1.01fffep26
+  },
+  { // Entry 37
+    0x1.02d59bfffebbee3ec0c159b239188c69p-7,
+    0x1.03dcp-7
+  },
+  { // Entry 38
+    0x1.ea5f11000fca3ff94bceefddbe67b553p-4,
+    0x1.047752p-3
+  },
+  { // Entry 39
+    0x1.be69c4ffffedd2cb5e5f046e949251cap-2,
+    0x1.17c5f0p-1
+  },
+  { // Entry 40
+    0x1.f40ade790277455219208e6cbce12c81p-3,
+    0x1.1b30p-2
+  },
+  { // Entry 41
+    0x1.b17d614548b69a74509e9d003c096acdp0,
+    0x1.1cp2
+  },
+  { // Entry 42
+    0x1.c4017efffec839b96cd1a043d59e5735p-2,
+    0x1.1c1cp-1
+  },
+  { // Entry 43
+    0x1.6fb67efffb26578a0527f61362ac8fa8p-8,
+    0x1.70bf14p-8
+  },
+  { // Entry 44
+    0x1.7b9b982b27d8fd65f78363d3dedc97b2p-14,
+    0x1.7b9ffep-14
+  },
+  { // Entry 45
+    0x1.4402c0fffffff1ee8f659da5ea3af296p-2,
+    0x1.7d2286p-2
+  },
+  { // Entry 46
+    0x1.453252ffffff9b941dfd07fbfe366e98p3,
+    0x1.94d4eap14
+  },
+  { // Entry 47
+    0x1.981eb6000011b05ecb59c7545ff929fap-4,
+    0x1.ad250ap-4
+  },
+  { // Entry 48
+    0x1.ff1e1e73e713dc5a44e45f9c3f28b7c8p-1,
+    0x1.b6ae94p0
+  },
+  { // Entry 49
+    0x1.990193ffffdd6f9fee37f808cd2663abp-3,
+    0x1.c4b528p-3
+  },
+  { // Entry 50
+    0x1.cd15fefff69640aea34534134c884cf5p-14,
+    0x1.cd1c7cp-14
+  },
+  { // Entry 51
+    0x1.d29b864c3678db9fafb9295703bb2bc1p-7,
+    0x1.d5f20ep-7
+  },
+  { // Entry 52
+    0x1.db8be7c511d00e008415288ce9a25163p-8,
+    0x1.dd46aap-8
+  },
+  { // Entry 53
+    0x1.9a37cb000006cf9ac9e3b0eedec553ffp-2,
+    0x1.f88cf6p-2
+  },
+  { // Entry 54
+    0x1.0b2148000d52175d80c54887b0d4a470p2,
+    0x1.ffbffep5
+  },
+  { // Entry 55
+    0x1.fc090efffd0dee6eb02f2fa5b5d354afp-7,
+    0x1.fffe7ep-7
+  },
+  { // Entry 56
+    0x1.193e2700053065bd8378fbbd3b637eb6p0,
+    0x1.fffe7ep0
+  },
+  { // Entry 57
+    0x1.f82970e7831004cf7a6be71673528989p-6,
+    0x1.ffffbep-6
+  },
+  { // Entry 58
+    0x1.193ea500258270930f8e7d7af244dcffp0,
+    0x1.fffff8p0
+  },
+  { // Entry 59
+    0x1.fffff400004aaaa88aaabb11108d1115p-22,
+    0x1.fffffcp-22
+  },
+  { // Entry 60
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 61
+    0x1.2ccac6d04834d03c513a0f03d4c89b83p-1,
+    0x1.995256p-1
+  },
+  { // Entry 62
+    0x1.466a92ae5453d95b0ba6631497388e92p-1,
+    0x1.c89ac6p-1
+  },
+  { // Entry 63
+    0x1.5ed1a85999ba7b8b5440ce7e5a6b56f2p-1,
+    0x1.f7e336p-1
+  },
+  { // Entry 64
+    0x1.761c7d56e25f3f7369eb2e8d33b8209cp-1,
+    0x1.1395d2p0
+  },
+  { // Entry 65
+    0x1.8c63d26f597f171e4d44ff4b30356555p-1,
+    0x1.2b3a0ap0
+  },
+  { // Entry 66
+    0x1.a1bd4c9e41df1dbc9bdcf52548fe75b2p-1,
+    0x1.42de42p0
+  },
+  { // Entry 67
+    0x1.b63bf811a5f2ac93a5d17ec91bb5daabp-1,
+    0x1.5a827ap0
+  },
+  { // Entry 68
+    0x1.c9f0adb76b4112afacd4ebe2a82850c6p-1,
+    0x1.7226b2p0
+  },
+  { // Entry 69
+    0x1.dcea66c807b8ed92f41a4c7968b5559fp-1,
+    0x1.89caeap0
+  },
+  { // Entry 70
+    0x1.ef368161759d5a9bb2da51833d2b502bp-1,
+    0x1.a16f22p0
+  },
+  { // Entry 71
+    0x1.00707ca544fcb52315ebafd578b872b3p0,
+    0x1.b9135ap0
+  },
+  { // Entry 72
+    0x1.08fa4b9ede8a0b58b4cad9c182b5bc7ap0,
+    0x1.d0b792p0
+  },
+  { // Entry 73
+    0x1.113d8c489a020b1485aeadcbd8328e39p0,
+    0x1.e85bcap0
+  },
+  { // Entry 74
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 75
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 76
+    0x1.26990d712acaf377db999b7a4d6f0d77p-1,
+    0x1.8e3e16p-1
+  },
+  { // Entry 77
+    0x1.3a9149340db314ea32356ecefac481p-1,
+    0x1.b27246p-1
+  },
+  { // Entry 78
+    0x1.4dc99695710c65b9bcf0bb6b8edd5d21p-1,
+    0x1.d6a676p-1
+  },
+  { // Entry 79
+    0x1.604fd9d3719dfe935e33ddc7d697914bp-1,
+    0x1.fadaa6p-1
+  },
+  { // Entry 80
+    0x1.7230837fde6a8438b4a457e20a8e06fep-1,
+    0x1.0f876cp0
+  },
+  { // Entry 81
+    0x1.8376bee5d088c50a9458bc6f7ae9a783p-1,
+    0x1.21a184p0
+  },
+  { // Entry 82
+    0x1.942ca20e8cddd1db45fd28a8128ba122p-1,
+    0x1.33bb9cp0
+  },
+  { // Entry 83
+    0x1.a45b4d36cf3486c62245ff3fa2915f6fp-1,
+    0x1.45d5b4p0
+  },
+  { // Entry 84
+    0x1.b40b09d2982dde5fa679cf307e5857c2p-1,
+    0x1.57efccp0
+  },
+  { // Entry 85
+    0x1.c343641957c53687deafd15a44326c6cp-1,
+    0x1.6a09e4p0
+  },
+  { // Entry 86
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.80p-1
+  },
+  { // Entry 87
+    0x1.34024a8c5f61c82ac61e318087908df6p-1,
+    0x1.a66666p-1
+  },
+  { // Entry 88
+    0x1.48a112280d6abde96ac67b1fb5ecb146p-1,
+    0x1.ccccccp-1
+  },
+  { // Entry 89
+    0x1.5c73756fb0dea2087cd90d8b7bc997a9p-1,
+    0x1.f33332p-1
+  },
+  { // Entry 90
+    0x1.6f88b1bee42272ff0a57db75096d585ep-1,
+    0x1.0cccccp0
+  },
+  { // Entry 91
+    0x1.81ee60afb50199b91090d89ef318de90p-1,
+    0x1.20p0
+  },
+  { // Entry 92
+    0x1.93b0af9c4ab8019e279f9c3bc8a37955p-1,
+    0x1.333334p0
+  },
+  { // Entry 93
+    0x1.a4da932e285ccc3fc07f118701145a41p-1,
+    0x1.466668p0
+  },
+  { // Entry 94
+    0x1.b575ef12280c4d1b4f06a46e25e8a4a6p-1,
+    0x1.59999cp0
+  },
+  { // Entry 95
+    0x1.c58bb849aa7457a9abbdac063833d724p-1,
+    0x1.6cccd0p0
+  },
+  { // Entry 96
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.80p0
+  },
+  { // Entry 97
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 98
+    0x1.7bdf36901c7f350041da6ef1304395cep-1,
+    0x1.19999ap0
+  },
+  { // Entry 99
+    0x1.93b0af9c4ab8019e279f9c3bc8a37955p-1,
+    0x1.333334p0
+  },
+  { // Entry 100
+    0x1.aa731192391a8863f4bfe8452991c141p-1,
+    0x1.4ccccep0
+  },
+  { // Entry 101
+    0x1.c03d718c8b4dafcae9e8be78cf83cbf4p-1,
+    0x1.666668p0
+  },
+  { // Entry 102
+    0x1.d52410a7a7a06fcabadb6d90a4a19793p-1,
+    0x1.800002p0
+  },
+  { // Entry 103
+    0x1.e938cda74ef6d0be179304b52619eb82p-1,
+    0x1.99999cp0
+  },
+  { // Entry 104
+    0x1.fc8b8126826242614b481d83aaec3cbdp-1,
+    0x1.b33336p0
+  },
+  { // Entry 105
+    0x1.07952480b0ea35a6256b2037158f39fdp0,
+    0x1.ccccd0p0
+  },
+  { // Entry 106
+    0x1.1090e340e02935eda17728b57dbb2974p0,
+    0x1.e6666ap0
+  },
+  { // Entry 107
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 108
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 109
+    -0x1.3217b042fc85e510ffef322447286167p-1,
+    -0x1.ccccccp-2
+  },
+  { // Entry 110
+    -0x1.058aee52bbf036e43da60fe740480ec8p-1,
+    -0x1.999998p-2
+  },
+  { // Entry 111
+    -0x1.b91f246ff08e2be21ff79355d363de75p-2,
+    -0x1.666664p-2
+  },
+  { // Entry 112
+    -0x1.6d3c2dbbcad2f6c5b9711be3c95acd83p-2,
+    -0x1.333330p-2
+  },
+  { // Entry 113
+    -0x1.26961d134dbb2783bd621217b5546c80p-2,
+    -0x1.fffffap-3
+  },
+  { // Entry 114
+    -0x1.c8ff7579a9a52ac25bb899dbd264ce86p-3,
+    -0x1.999994p-3
+  },
+  { // Entry 115
+    -0x1.4cd6b35b45fbb9ed92ccfd7f10d29dfcp-3,
+    -0x1.33332ep-3
+  },
+  { // Entry 116
+    -0x1.af8e7765f96eba7449d2e369edb815d8p-4,
+    -0x1.999990p-4
+  },
+  { // Entry 117
+    -0x1.a431c11b1271b3c8501cfaf9d3319015p-5,
+    -0x1.999986p-5
+  },
+  { // Entry 118
+    0.0,
+    0.0
+  },
+  { // Entry 119
+    0.0,
+    0.0
+  },
+  { // Entry 120
+    0x1.8fb06450b296f7b66ab1a549ae4826a2p-5,
+    0x1.99999ap-5
+  },
+  { // Entry 121
+    0x1.8663f7f0dbb23a23b18a99f13b06839ap-4,
+    0x1.99999ap-4
+  },
+  { // Entry 122
+    0x1.1e3b830fe6a17974c7bd84c4e3eab82cp-3,
+    0x1.333334p-3
+  },
+  { // Entry 123
+    0x1.756501739ebcb722ad1079954ab64abbp-3,
+    0x1.99999ap-3
+  },
+  { // Entry 124
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.p-2
+  },
+  { // Entry 125
+    0x1.0ca9385ba5764f40265b8842277dec27p-2,
+    0x1.333334p-2
+  },
+  { // Entry 126
+    0x1.334e9f7738caf691d9028f70d0039fefp-2,
+    0x1.666668p-2
+  },
+  { // Entry 127
+    0x1.588c2f480eb6532d57552d24a22c18b8p-2,
+    0x1.99999cp-2
+  },
+  { // Entry 128
+    0x1.7c7b2a6204723e0ab52a960a21dbe461p-2,
+    0x1.ccccd0p-2
+  },
+  { // Entry 129
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 130
+    -0x1.7f7425b73e3d1503aef4db985cf47e98p1,
+    -0x1.e66666p-1
+  },
+  { // Entry 131
+    -0x1.26bb19bb5555582dca0301cc5afb0340p1,
+    -0x1.ccccccp-1
+  },
+  { // Entry 132
+    -0x1.e5a9a3c3ac498090b9d029dbb4ad807ap0,
+    -0x1.b33332p-1
+  },
+  { // Entry 133
+    -0x1.9c041b7ed8db36afca225000b2030fd2p0,
+    -0x1.999998p-1
+  },
+  { // Entry 134
+    -0x1.62e42befa3a6f3577e72121ab28fcb3cp0,
+    -0x1.7ffffep-1
+  },
+  { // Entry 135
+    -0x1.34378bcbda7a06e4efec7643b0ba89cbp0,
+    -0x1.666664p-1
+  },
+  { // Entry 136
+    -0x1.0cc1208b56d4b4c06755206193cd1ceap0,
+    -0x1.4ccccap-1
+  },
+  { // Entry 137
+    -0x1.d524070e0e177a08007d38d15c203245p-1,
+    -0x1.333330p-1
+  },
+  { // Entry 138
+    -0x1.98d5f831b831ae342b6d390d5ee4078ap-1,
+    -0x1.199996p-1
+  },
+  { // Entry 139
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 140
+    0x1.1542457337d42e1c6b73c89d866ba171p6,
+    0x1.p100
+  },
+  { // Entry 141
+    0x1.15a3de7291226038f89b79079de74b15p6,
+    0x1.19999ap100
+  },
+  { // Entry 142
+    0x1.15fcf7f671a38b9552200b4c17f03284p6,
+    0x1.333334p100
+  },
+  { // Entry 143
+    0x1.164eeeaea72addd7387b5fd890994481p6,
+    0x1.4ccccep100
+  },
+  { // Entry 144
+    0x1.169ad1a55b50990c54e1e650029fc95ap6,
+    0x1.666668p100
+  },
+  { // Entry 145
+    0x1.16e177b7592304a2b3519037089451c5p6,
+    0x1.800002p100
+  },
+  { // Entry 146
+    0x1.17238e1ada469675b97116744955a040p6,
+    0x1.99999cp100
+  },
+  { // Entry 147
+    0x1.1761a27cf0fff16c1e86b183310631dfp6,
+    0x1.b33336p100
+  },
+  { // Entry 148
+    0x1.179c2a39af642757a6a61b00bba160aep6,
+    0x1.ccccd0p100
+  },
+  { // Entry 149
+    0x1.17d3879ff3b917735e3bb947a1e5476fp6,
+    0x1.e6666ap100
+  },
+  { // Entry 150
+    0x1.18080dd3171b6c031a9b576be65b6d4cp6,
+    0x1.p101
+  },
+  { // Entry 151
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 152
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 153
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 154
+    0x1.11d14cb6fa73c6e3e2b32fdc2e39187cp-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 155
+    0x1.11d14de2e6a77280841e892fac90ccfap-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 156
+    0x1.11d14f0ed2da6e6c589fb5f4332d476fp-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 157
+    -0x1.3a5ac1c04c5f3b4913b799da9d738173p0,
+    -0x1.6a09e8p-1
+  },
+  { // Entry 158
+    -0x1.3a5abe5642755d2215d06656abb38c5dp0,
+    -0x1.6a09e6p-1
+  },
+  { // Entry 159
+    -0x1.3a5abaec38972722a15fd1d5c0a89c36p0,
+    -0x1.6a09e4p-1
+  },
+  { // Entry 160
+    0x1.c343641957c53687deafd15a44326c6cp-1,
+    0x1.6a09e4p0
+  },
+  { // Entry 161
+    0x1.c34365c17f5fcd5f0800083c5f3f2de3p-1,
+    0x1.6a09e6p0
+  },
+  { // Entry 162
+    0x1.c3436769a6f904d49759471bcfce4490p-1,
+    0x1.6a09e8p0
+  },
+  { // Entry 163
+    0x1.9f323d76a42f30f2853c89b7f554a97bp-2,
+    0x1.fffffep-2
+  },
+  { // Entry 164
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 165
+    0x1.9f324176a42e8647db03a6298d08cf83p-2,
+    0x1.000002p-1
+  },
+  { // Entry 166
+    0x1.1e85f4c271c38bb4f9b938ae62856a75p-1,
+    0x1.7ffffep-1
+  },
+  { // Entry 167
+    0x1.1e85f5e7040d03dec59a5f3e3c6be5cfp-1,
+    0x1.80p-1
+  },
+  { // Entry 168
+    0x1.1e85f70b9655d4d98c420da42f457a6ep-1,
+    0x1.800002p-1
+  },
+  { // Entry 169
+    -0x1.62e433efa3a6f357a91cbcc55d3c0f80p0,
+    -0x1.800002p-1
+  },
+  { // Entry 170
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep0,
+    -0x1.80p-1
+  },
+  { // Entry 171
+    -0x1.62e42befa3a6f3577e72121ab28fcb3cp0,
+    -0x1.7ffffep-1
+  },
+  { // Entry 172
+    0x1.d5240d74746d3c9786f9771f52074ef3p-1,
+    0x1.7ffffep0
+  },
+  { // Entry 173
+    0x1.d5240f0e0e077a082b27e2fc06cc768ap-1,
+    0x1.80p0
+  },
+  { // Entry 174
+    0x1.d52410a7a7a06fcabadb6d90a4a19793p-1,
+    0x1.800002p0
+  },
+  { // Entry 175
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p4,
+    -0x1.fffffep-1
+  },
+  { // Entry 176
+    0x1.9c041eb20c0617f78d606f27acf69e28p0,
+    0x1.fffffep1
+  },
+  { // Entry 177
+    0x1.9c041f7ed8d336afdf77a516075931f4p0,
+    0x1.p2
+  },
+  { // Entry 178
+    0x1.9c042118726b889b65f3e3e28e3e4e66p0,
+    0x1.000002p2
+  },
+  { // Entry 179
+    0x1.193ea7002585c5e86b1cb66b1832016cp0,
+    0x1.fffffep0
+  },
+  { // Entry 180
+    0x1.193ea7aad030a976a4198d55053b7cb5p0,
+    0x1.p1
+  },
+  { // Entry 181
+    0x1.193ea90025851b3dc15599f89374611bp0,
+    0x1.000002p1
+  },
+  { // Entry 182
+    0x1.62e42eefa39eb35793b211daaa909805p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 183
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 184
+    0x1.62e431efa39df357947211da3290986fp-1,
+    0x1.000002p0
+  },
+  { // Entry 185
+    0x1.9f323d76a42f30f2853c89b7f554a97bp-2,
+    0x1.fffffep-2
+  },
+  { // Entry 186
+    0x1.9f323ecbf984bf2b68d766f405221819p-2,
+    0x1.p-1
+  },
+  { // Entry 187
+    0x1.9f324176a42e8647db03a6298d08cf83p-2,
+    0x1.000002p-1
+  },
+  { // Entry 188
+    0x1.c8ff7ae010085833015383537a710bf7p-3,
+    0x1.fffffep-3
+  },
+  { // Entry 189
+    0x1.c8ff7c79a9a21ac25d81ef2ffb9a24aep-3,
+    0x1.p-2
+  },
+  { // Entry 190
+    0x1.c8ff7facdcd4aa1e86a3628ed2816e49p-3,
+    0x1.000002p-2
+  },
+  { // Entry 191
+    0x1.e270751b92bc7e3985ba2b4eda27e177p-4,
+    0x1.fffffep-4
+  },
+  { // Entry 192
+    0x1.e27076e2af2e5e9ea87ffe1fe9e155dbp-4,
+    0x1.p-3
+  },
+  { // Entry 193
+    0x1.e2707a70e81187b4c829d7073485c254p-4,
+    0x1.000002p-3
+  },
+  { // Entry 194
+    0x1.f0a30a1f34487609a04c201edd1f6224p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 195
+    0x1.f0a30c01162a6617cc9716eeb32f131ap-5,
+    0x1.p-4
+  },
+  { // Entry 196
+    0x1.f0a30fc4d9edf12a66bd3268f53eb247p-5,
+    0x1.000002p-4
+  },
+  { // Entry 197
+    0x1.f829aef70710f587dcdc1e46f5c8fc28p-6,
+    0x1.fffffep-6
+  },
+  { // Entry 198
+    0x1.f829b0e7833004cf8fc13c7bc8a7ebabp-6,
+    0x1.p-5
+  },
+  { // Entry 199
+    0x1.f829b4c87b6df63c671750b0d49bd0d0p-6,
+    0x1.000002p-5
+  },
+  { // Entry 200
+    0x1.fc0a8917a0bc40f9af9b81ceffb6876ap-7,
+    0x1.fffffep-7
+  },
+  { // Entry 201
+    0x1.fc0a8b0fc03e3cf9eda74d37abd56df5p-7,
+    0x1.p-6
+  },
+  { // Entry 202
+    0x1.fc0a8effff421db6014956cf936c5246p-7,
+    0x1.000002p-6
+  },
+  { // Entry 203
+    0x1.fe02a4b4fe886e0adfcd9bf770796795p-8,
+    0x1.fffffep-8
+  },
+  { // Entry 204
+    0x1.fe02a6b106788fc37690391dc282d2b3p-8,
+    0x1.p-7
+  },
+  { // Entry 205
+    0x1.fe02aaa91658c7641591cbf711392789p-8,
+    0x1.000002p-7
+  },
+  { // Entry 206
+    0x1.ff00a82d0ebe01a481bb62141d1d53b5p-9,
+    0x1.fffffep-9
+  },
+  { // Entry 207
+    0x1.ff00aa2b10bc04a086b569b4d4b76919p-9,
+    0x1.p-8
+  },
+  { // Entry 208
+    0x1.ff00ae2714b804a47ec15f0e31f390edp-9,
+    0x1.000002p-8
+  },
+  { // Entry 209
+    0x1.ff80289bb08ea6eb088098a49a71d9d9p-10,
+    0x1.fffffep-10
+  },
+  { // Entry 210
+    0x1.ff802a9ab10e678a78e854f8ec6ac72bp-10,
+    0x1.p-9
+  },
+  { // Entry 211
+    0x1.ff802e98b20de5cc57794db0a1879185p-10,
+    0x1.000002p-9
+  },
+  { // Entry 212
+    0x1.ffc008a92af1037e6d78fd20e4e62f56p-11,
+    0x1.fffffep-11
+  },
+  { // Entry 213
+    0x1.ffc00aa8ab10fbc04d051924c9347471p-11,
+    0x1.p-10
+  },
+  { // Entry 214
+    0x1.ffc00ea7ab50eac4cbd56964e4284cb6p-11,
+    0x1.000002p-10
+  },
+  { // Entry 215
+    0x1.fff7fe2ab9aa310ce6c785f0bd1aefcfp-14,
+    0x1.fffffep-14
+  },
+  { // Entry 216
+    0x1.fff8002aa9aab110e6678af0afc3daa4p-14,
+    0x1.p-13
+  },
+  { // Entry 217
+    0x1.fff8042a89abb0e8e8a770f314eeb25dp-14,
+    0x1.000002p-13
+  },
+  { // Entry 218
+    -0x1.62e433efa3a2f357991cbc8d5d3b4f80p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 219
+    -0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    -0x1.p-1
+  },
+  { // Entry 220
+    -0x1.62e42defa39ff357931cbc85dd3b424dp-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 221
+    -0x1.269623bdf864b5bca2aac313becfafc7p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 222
+    -0x1.269621134db92783beb7676c0aa9c2a3p-2,
+    -0x1.p-2
+  },
+  { // Entry 223
+    -0x1.26961fbdf8640b11f78e514c72f59cb5p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 224
+    -0x1.1178ea6ba2da5a9f4da9ec87413daa29p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 225
+    -0x1.1178e8227e47bde338b41fc72de81e3bp-3,
+    -0x1.p-3
+  },
+  { // Entry 226
+    -0x1.1178e6fdebfeae36d034bf0026e7ba26p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 227
+    -0x1.08598d7c05c2af150ef0536d3a6bec43p-4,
+    -0x1.000002p-4
+  },
+  { // Entry 228
+    -0x1.08598b59e3a0688a3fd9bf503372c12fp-4,
+    -0x1.p-4
+  },
+  { // Entry 229
+    -0x1.08598a48d28f60935a04940d6d173246p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 230
+    -0x1.0415daaef8656050097e0aa39f7eb53ep-5,
+    -0x1.000002p-5
+  },
+  { // Entry 231
+    -0x1.0415d89e7444470173c75d4d8889de0ep-5,
+    -0x1.p-5
+  },
+  { // Entry 232
+    -0x1.0415d7963233c7238cd1a9779dfbd10fp-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 233
+    -0x1.02056791560685012dd216873106670ep-6,
+    -0x1.000002p-6
+  },
+  { // Entry 234
+    -0x1.020565893584749f23a105b9c7bb9a6fp-6,
+    -0x1.p-6
+  },
+  { // Entry 235
+    -0x1.020564852543729f44a720c573005c5fp-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 236
+    -0x1.0101595c95f736dd7dddd4f4a84fc30ep-7,
+    -0x1.000002p-7
+  },
+  { // Entry 237
+    -0x1.010157588de7128ccc5a82f9da00f48bp-7,
+    -0x1.p-7
+  },
+  { // Entry 238
+    -0x1.0101565689df037097f9d05a2038a6fep-7,
+    -0x1.fffffep-8
+  },
+  { // Entry 239
+    -0x1.008057978ab55beba0ed4c4e688b0fddp-8,
+    -0x1.000002p-8
+  },
+  { // Entry 240
+    -0x1.0080559588b357e598e33d8d9db37a29p-8,
+    -0x1.p-8
+  },
+  { // Entry 241
+    -0x1.0080549487b2576599643eb948ddce3cp-8,
+    -0x1.fffffep-9
+  },
+  { // Entry 242
+    -0x1.0040175e590a1f9177e773be9c970fbep-9,
+    -0x1.000002p-9
+  },
+  { // Entry 243
+    -0x1.0040155d5889de70671eeec0bfcefe53p-9,
+    -0x1.p-9
+  },
+  { // Entry 244
+    -0x1.0040145cd849bea09f4b0cbe55e0522ap-9,
+    -0x1.fffffep-10
+  },
+  { // Entry 245
+    -0x1.00200756d5a89bb7bd700a29d438709dp-10,
+    -0x1.000002p-10
+  },
+  { // Entry 246
+    -0x1.00200556558893357cd7e1f486bd0705p-10,
+    -0x1.p-10
+  },
+  { // Entry 247
+    -0x1.0020045615788f548c9dd3ebcc957ecfp-10,
+    -0x1.fffffep-11
+  },
+  { // Entry 248
+    -0x1.0004021565d5d89c9efe7d2c354c8573p-13,
+    -0x1.000002p-13
+  },
+  { // Entry 249
+    -0x1.0004001555d558889dde702b028c9996p-13,
+    -0x1.p-13
+  },
+  { // Entry 250
+    -0x1.0003ff154dd5188a9e0e72ab0936642cp-13,
+    -0x1.fffffep-14
+  },
+  { // Entry 251
+    0x1.732426090cb8287b20767f822cff213fp-1,
+    0x1.1082aep0
+  },
+  { // Entry 252
+    0x1.732427f90e136dae43644376436d483ap-1,
+    0x1.1082b0p0
+  },
+  { // Entry 253
+    0x1.732429e90f6cd25ec74c889c28bbeb0dp-1,
+    0x1.1082b2p0
+  },
+  { // Entry 254
+    0x1.73242bd910c4568cafd24e8cbead4f8cp-1,
+    0x1.1082b4p0
+  },
+  { // Entry 255
+    0x1.73242dc91219fa38009894d655459f92p-1,
+    0x1.1082b6p0
+  },
+  { // Entry 256
+    0x1.73242fb9136dbd60bd425afcaacb11f0p-1,
+    0x1.1082b8p0
+  },
+  { // Entry 257
+    0x1.732431a914bfa006e972a078ebc6136bp-1,
+    0x1.1082bap0
+  },
+  { // Entry 258
+    -0x1.0000031332fb3170f147bbabd5a5dbe2p-4,
+    -0x1.f0540ap-5
+  },
+  { // Entry 259
+    -0x1.00000202b0458e4ed1041496e7335a4dp-4,
+    -0x1.f05408p-5
+  },
+  { // Entry 260
+    -0x1.000000f22d8ffd4e110ab2e7abbf098bp-4,
+    -0x1.f05406p-5
+  },
+  { // Entry 261
+    -0x1.ffffffc355b4fcdd62b25a0e3f78a172p-5,
+    -0x1.f05404p-5
+  },
+  { // Entry 262
+    -0x1.fffffda2504a236163da32bc8033b657p-5,
+    -0x1.f05402p-5
+  },
+  { // Entry 263
+    -0x1.fffffb814adf6e2825881cac148330d7p-5,
+    -0x1.f054p-5
+  },
+  { // Entry 264
+    -0x1.fffff9604574dd31a7b744aef831786ep-5,
+    -0x1.f053fep-5
+  },
+  { // Entry 265
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 266
+    0x1.62e42feba39ef15793c611dab1909808p6,
+    0x1.fffffep127
+  },
+  { // Entry 267
+    0x1.62e42fe7a39eeb5793bcbc854d3b429ap6,
+    0x1.fffffcp127
+  },
+  { // Entry 268
+    0x1.6bcbed6499137a6d8cb88a3b46fe313bp0,
+    0x1.921fb6p1
+  },
+  { // Entry 269
+    0x1.e3703e42b92e44cc4a16c64759347ba9p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 270
+    0x1.62e431efa39df357947211da3290986fp-1,
+    0x1.000002p0
+  },
+  { // Entry 271
+    0x1.62e42fefa39ef35793c7673007e5ed5ep-1,
+    0x1.p0
+  },
+  { // Entry 272
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 273
+    0x1.62e42eefa39eb35793b211daaa909805p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 274
+    -0x1.0a2b23f3bab73681aed58d6405ec7206p4,
+    -0x1.fffffep-1
+  },
+  { // Entry 275
+    0x1.28c6c410c6e97e86ac65cbbaf9be56e1p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 276
+    -0x1.89fa00c1dfad872a5efe4c31eb7dddb5p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 277
+    0x1.000001fffffffffffffffffffffffffdp-126,
+    0x1.000002p-126
+  },
+  { // Entry 278
+    -0x1.00000200000000000000000000000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 279
+    0x1.fffffffffffffffffffffffffffffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 280
+    -0x1.00000000000000000000000000000002p-126,
+    -0x1.p-126
+  },
+  { // Entry 281
+    0x1.fffffbfffffffffffffffffffffffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 282
+    -0x1.fffffc00000000000000000000000003p-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 283
+    0x1.fffff7fffffffffffffffffffffffffcp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 284
+    -0x1.fffff800000000000000000000000003p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 285
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 286
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 287
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 288
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 289
+    0.0,
+    0.0f
+  },
+  { // Entry 290
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/log2_intel_data.h b/tests/math_data/log2_intel_data.h
new file mode 100644
index 0000000..8a4fb79
--- /dev/null
+++ b/tests/math_data/log2_intel_data.h
@@ -0,0 +1,1422 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_log2_intel_data[] = {
+  { // Entry 0
+    -0x1.fefffffffffffff4755c4d6a3e815099p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 1
+    -0x1.dfffffffffa3a7ffc265aaf2255b6929p3,
+    0x1.0000000002001p-15
+  },
+  { // Entry 2
+    0x1.14ff58be06e4eb0f63ba8e7579bab913p-37,
+    0x1.00000000060p0
+  },
+  { // Entry 3
+    0x1.14ff5a1566a9a8000208af7208121486p-26,
+    0x1.0000003000004p0
+  },
+  { // Entry 4
+    0x1.4329e6fafed4ec17674fb20107ee4738p-24,
+    0x1.000000ep0
+  },
+  { // Entry 5
+    0x1.f2d8fc80dac97800003cbce6797ac725p-22,
+    0x1.0000056719764p0
+  },
+  { // Entry 6
+    0x1.dc413771d9f3c80050b7ef09134bfc65p-10,
+    0x1.005294a5294a4p0
+  },
+  { // Entry 7
+    0x1.f94f46da272ae87214f66783dc0012aep-10,
+    0x1.00579f3c8a71dp0
+  },
+  { // Entry 8
+    0x1.5af457c06976d86934e812fcabd086a0p-9,
+    0x1.00785b0addce9p0
+  },
+  { // Entry 9
+    0x1.9002e361d485cbe42f7c524eb194d904p6,
+    0x1.0080402010080p100
+  },
+  { // Entry 10
+    0x1.ebccc1095cfa8866ace79cfc00544c63p-9,
+    0x1.00aaaaaaaa9abp0
+  },
+  { // Entry 11
+    0x1.6fe50b6ef08517f8e37b001794f4441cp-7,
+    0x1.020p0
+  },
+  { // Entry 12
+    -0x1.f15f624786a9ffffff74dc63a8516430p-1,
+    0x1.051eb856134c8p-1
+  },
+  { // Entry 13
+    0x1.d73e46341148efff33d83f08a3113bb1p-6,
+    0x1.0527acc8ad0c0p0
+  },
+  { // Entry 14
+    0x1.06844f3329cf480160c9207b0fe9686dp-5,
+    0x1.05bffd7177f90p0
+  },
+  { // Entry 15
+    0x1.6d16ccbfe831300071d2e127dcadc62cp-5,
+    0x1.080813d392eeap0
+  },
+  { // Entry 16
+    0x1.bd735eb18cf5e801185222972fe7d7f7p-5,
+    0x1.09d53e5078566p0
+  },
+  { // Entry 17
+    0x1.883a578a2144d80000082236bb975a7bp6,
+    0x1.0a4fea894ce63p98
+  },
+  { // Entry 18
+    0x1.e52bb32dde0e37835b09979ee48eb915p-5,
+    0x1.0aba57c4ca2d2p0
+  },
+  { // Entry 19
+    0x1.8c4d60a6f91cffffffc4db521ec23052p1,
+    0x1.11a2ad570fc84p3
+  },
+  { // Entry 20
+    0x1.3c10652cd2c037b722d8c301a9cbb787p-3,
+    0x1.1ce739ce739cdp0
+  },
+  { // Entry 21
+    0x1.25a57ea54060affffd6e2b38d8a6e680p3,
+    0x1.214e5031c9c98p9
+  },
+  { // Entry 22
+    -0x1.95d8976fa2bec7fffe44e71ab30da275p-1,
+    0x1.2790a7a4ac2e0p-1
+  },
+  { // Entry 23
+    0x1.ad532cd7cfc0c800fec9752b0728c5e1p-3,
+    0x1.280958add66e8p0
+  },
+  { // Entry 24
+    -0x1.92a321a719e2f7ffffa46c9962f213fcp-1,
+    0x1.28da10faa7922p-1
+  },
+  { // Entry 25
+    0x1.f00d883a5154c80b7cdca07e1f4c03b7p-3,
+    0x1.2ecc5d98bb317p0
+  },
+  { // Entry 26
+    -0x1.79538de327eb0000008a31eeec5b4479p-1,
+    0x1.333333363af15p-1
+  },
+  { // Entry 27
+    -0x1.79538dd93df7d800008833cc9d230deap-1,
+    0x1.3333333a5a724p-1
+  },
+  { // Entry 28
+    0x1.83988d0dfa3b6fffff7c315d9eb388a3p-2,
+    0x1.4ccccccd37c59p0
+  },
+  { // Entry 29
+    0x1.83988d1cb5af2ffffffb364351973dbfp-2,
+    0x1.4cccccd08960ap0
+  },
+  { // Entry 30
+    0x1.60e6235281e10fffff72c07b47d5653ap0,
+    0x1.4cccccdabef48p1
+  },
+  { // Entry 31
+    0x1.325fe221441468000004dbe427ffcc6ap1,
+    0x1.5049964882f16p2
+  },
+  { // Entry 32
+    -0x1.95c01a39fbdf57ffa2ec6f697886f6abp0,
+    0x1.55555555554d3p-2
+  },
+  { // Entry 33
+    0x1.b219b408ac406801297f9c0f313a0abcp-2,
+    0x1.57715d9c62be2p0
+  },
+  { // Entry 34
+    -0x1.14c560fe68af880e0a0f337d55565281p-1,
+    0x1.6p-1
+  },
+  { // Entry 35
+    -0x1.5140ccfbc94ba7fc14cae25af1322e19p3,
+    0x1.6057ff1745294p-11
+  },
+  { // Entry 36
+    0x1.7c44eecc79d9080000884a87ce09a1e3p0,
+    0x1.6666667712026p1
+  },
+  { // Entry 37
+    0x1.f44c3b80ce1b7f53077e2d0ba2df3c58p-2,
+    0x1.672ea4c8ed13cp0
+  },
+  { // Entry 38
+    0x1.7e3d59b76fecf800001f276bfc801af5p0,
+    0x1.685132bfb7bd6p1
+  },
+  { // Entry 39
+    -0x1.a02b5ec4fc7c87ff9784e19a86accb9ep2,
+    0x1.696p-7
+  },
+  { // Entry 40
+    0x1.fffffffffff39d44979cc67bcf7dedfap-2,
+    0x1.6a09e667f3b9cp0
+  },
+  { // Entry 41
+    -0x1.ffffffffffe3d5cb0585a3840c91514cp-2,
+    0x1.6a09e667f3c3bp-1
+  },
+  { // Entry 42
+    -0x1.ebe47960e3c087fe4e5268625f5a697ap-2,
+    0x1.6f0p-1
+  },
+  { // Entry 43
+    -0x1.9e9716d1cb72c80133c5f0f373cd97d0p2,
+    0x1.6f9be6f9be6f8p-7
+  },
+  { // Entry 44
+    0x1.182ffdcced70affff9846eab53e769dfp-1,
+    0x1.761702ac1314cp0
+  },
+  { // Entry 45
+    -0x1.c5272484399d1fffa79b8c4ab89ea8bcp-2,
+    0x1.78c0475799b40p-1
+  },
+  { // Entry 46
+    -0x1.c1bae6863c7b178789fef871a533f17ap-2,
+    0x1.79ap-1
+  },
+  { // Entry 47
+    -0x1.b7fcec2565ee77fbd36d69837dd95420p1,
+    0x1.7a17944879f04p-4
+  },
+  { // Entry 48
+    0x1.95c01a410a1af7ffffffff18ac20bc4fp0,
+    0x1.8000000756038p1
+  },
+  { // Entry 49
+    -0x1.b5a2a91024a237fc250d48b7dfc575f6p6,
+    0x1.81a6a65785de5p-110
+  },
+  { // Entry 50
+    -0x1.5b2c3da19723a80db6a0480592812599p0,
+    0x1.9p-2
+  },
+  { // Entry 51
+    -0x1.9596d761c3c1f000942a87960c4e6acap2,
+    0x1.954p-7
+  },
+  { // Entry 52
+    -0x1.361f7a0f40acf80008a3cdbb56ef43a3p-2,
+    0x1.9f0d1c4a85df8p-1
+  },
+  { // Entry 53
+    -0x1.a64a14ea31ff27ffffc6e0491c00ece0p1,
+    0x1.a01f56d5c8bf5p-4
+  },
+  { // Entry 54
+    0x1.36bda7028a6c18000436ccebd654b112p3,
+    0x1.a2f4704a7b7fcp9
+  },
+  { // Entry 55
+    -0x1.9162c8a7c89d6fff3b61696cc0cb7b08p2,
+    0x1.a82p-7
+  },
+  { // Entry 56
+    -0x1.3df5f27f08238fff3d930b0aa7b67e19p0,
+    0x1.b0ec3b0ec3b0cp-2
+  },
+  { // Entry 57
+    0x1.c20a0d80f7dc7000c26cf4f5584981e6p0,
+    0x1.b0ec3b0ec3b0cp1
+  },
+  { // Entry 58
+    0x1.f32d6c73fe4eb00000998f802fd894a2p2,
+    0x1.bd9cec1c72c90p7
+  },
+  { // Entry 59
+    -0x1.4f575b7d4160880182c6f69306d03c28p-3,
+    0x1.c910ef0d6d89fp-1
+  },
+  { // Entry 60
+    -0x1.4f278abffb110801a3d7edcb79ee5f32p-3,
+    0x1.c91854af9ee26p-1
+  },
+  { // Entry 61
+    -0x1.285378da90d7e7fb008eedf0a10fba48p-3,
+    0x1.cf243ff1971a1p-1
+  },
+  { // Entry 62
+    0x1.b74949020f785800105ca3140afb53b5p-1,
+    0x1.d00000080p0
+  },
+  { // Entry 63
+    -0x1.020fbb4ae01c67fa85f5128eef800678p-3,
+    0x1.d52db96328edcp-1
+  },
+  { // Entry 64
+    0x1.730a8d241efbb7fffff32ce95a694993p1,
+    0x1.dd4d6407c04c0p2
+  },
+  { // Entry 65
+    -0x1.7d06d263cf06e8013519197ee311d70dp-4,
+    0x1.e007446d5317ap-1
+  },
+  { // Entry 66
+    -0x1.651a043e59908801518f9ad8a730b006p-4,
+    0x1.e1f9cfe4da365p-1
+  },
+  { // Entry 67
+    -0x1.c315ace83f6d87ffd47ee348821be931p-5,
+    0x1.ecd393ee2a22dp-1
+  },
+  { // Entry 68
+    -0x1.c1a2dd30e92c97fe1e8a8927bca88d09p-5,
+    0x1.ece30a99708f3p-1
+  },
+  { // Entry 69
+    -0x1.31811414c9f457fedb339a2a59aa6a15p-5,
+    0x1.f2ef441966b20p-1
+  },
+  { // Entry 70
+    -0x1.ff54d4e01906700082476686f339feb0p-6,
+    0x1.f50b068c69ab9p-1
+  },
+  { // Entry 71
+    -0x1.fe4764e025a7a8010db1b6cf13da17afp-6,
+    0x1.f510bcafa535bp-1
+  },
+  { // Entry 72
+    -0x1.e9c8fb8a7a8ff9f9d482d43f89c910f1p-6,
+    0x1.f58p-1
+  },
+  { // Entry 73
+    -0x1.cff929eee46f28012d55ba72f9106a3fp-6,
+    0x1.f60c45b178d4dp-1
+  },
+  { // Entry 74
+    -0x1.cfbe0973d009a801f32a0b405f64c8fbp-6,
+    0x1.f60d8730dc09ap-1
+  },
+  { // Entry 75
+    -0x1.aef13de1197f92a24897297a335df9e7p-6,
+    0x1.f6cp-1
+  },
+  { // Entry 76
+    -0x1.a2551c8f2ac46800ba85b1a1eae0a6e2p-6,
+    0x1.f704add85e4a5p-1
+  },
+  { // Entry 77
+    -0x1.a21fbdfed5c5a801e2269de517fa7ab6p-6,
+    0x1.f705d098ffd9dp-1
+  },
+  { // Entry 78
+    -0x1.a0b920176bda5800c044f6f904f1595cp-6,
+    0x1.f70d7261c2ba0p-1
+  },
+  { // Entry 79
+    -0x1.c587cdb2b5cc67cae4990a6eaf50ba8cp-9,
+    0x1.fec603682f6b8p-1
+  },
+  { // Entry 80
+    -0x1.7c16ffe1cccb47d5379db27f7b490df5p-9,
+    0x1.fef8ce70306d5p-1
+  },
+  { // Entry 81
+    -0x1.71b0ea42e4e818440ecc7e467e125d9cp-9,
+    0x1.ff0000000000cp-1
+  },
+  { // Entry 82
+    -0x1.71b0ea42c98838d39811a1f869da817dp-9,
+    0x1.ff0000000013bp-1
+  },
+  { // Entry 83
+    -0x1.fe3672e0fc0b17be54e4caf20434a198p-10,
+    0x1.ff4f4b00a4f8ep-1
+  },
+  { // Entry 84
+    -0x1.f914d523f178576eeb72527f2b70a29cp-10,
+    0x1.ff5111a810580p-1
+  },
+  { // Entry 85
+    -0x1.f914d523ee66777286ccfd4913235594p-10,
+    0x1.ff5111a810591p-1
+  },
+  { // Entry 86
+    -0x1.de7e861144ac97832a4e3a5d92856809p-10,
+    0x1.ff5a457a5e13ep-1
+  },
+  { // Entry 87
+    -0x1.b6d5736af0ac97d260200b6dea2e4c1bp-10,
+    0x1.ff67fffffffffp-1
+  },
+  { // Entry 88
+    -0x1.54c6cf781fa087d33241ec17c4837255p-10,
+    0x1.ff89f2f328ed2p-1
+  },
+  { // Entry 89
+    -0x1.fb243353a93b57621a8538f059d9ae9cp-11,
+    0x1.ffa826070f4cbp-1
+  },
+  { // Entry 90
+    -0x1.b82668250050d778d8993a10e828c390p-11,
+    0x1.ffb3bffffffffp-1
+  },
+  { // Entry 91
+    -0x1.c0050ccaf8b8980002bd379e2a6c6214p2,
+    0x1.ffe3fffffc050p-8
+  },
+  { // Entry 92
+    -0x1.7d4120671257680005a86d606dcf2f32p-14,
+    0x1.fff7bdf17bdefp-1
+  },
+  { // Entry 93
+    -0x1.018000b8aaf5a80007b2db4c192253cbp10,
+    0x1.fffbfffff5ep-1031
+  },
+  { // Entry 94
+    -0x1.14ff72b62bdf4ffe64fb34d59dd51e74p-18,
+    0x1.ffff9ffffffffp-1
+  },
+  { // Entry 95
+    -0x1.f8000171548d6801817dc6695b1d7bb1p5,
+    0x1.ffffcp-64
+  },
+  { // Entry 96
+    -0x1.fe4a9a023f0577fdff3db84b62d9f2eap-21,
+    0x1.ffffe9e4b0628p-1
+  },
+  { // Entry 97
+    -0x1.fa4ac0aba3c2a7fc024396607228ba9dp-21,
+    0x1.ffffea110b39dp-1
+  },
+  { // Entry 98
+    -0x1.d6a5b47f4af0f7fd4f300c0b6918c63fp-21,
+    0x1.ffffeb9c5b2d8p-1
+  },
+  { // Entry 99
+    -0x1.715477c9d1f81923f8738f56fafb397bp-29,
+    0x1.ffffffeffffffp-1
+  },
+  { // Entry 100
+    -0x1.886a76622be3cab6d2103fbee1307674p-36,
+    0x1.ffffffffddfffp-1
+  },
+  { // Entry 101
+    -0x1.1500ca1283b5a7fbb9fa255a6b5e382bp-37,
+    0x1.fffffffff3fffp-1
+  },
+  { // Entry 102
+    -0x1.8000000000b8b0007b35bf2c5e4202cep1,
+    0x1.fffffffffdfffp-4
+  },
+  { // Entry 103
+    -0x1.00000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-5
+  },
+  { // Entry 104
+    -0x1.40000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-6
+  },
+  { // Entry 105
+    -0x1.c0000000005c58003d9adf962f210167p2,
+    0x1.fffffffffdfffp-8
+  },
+  { // Entry 106
+    0x1.7fffffffff474fff84ca40d3a1bdfd31p1,
+    0x1.fffffffffdfffp2
+  },
+  { // Entry 107
+    -0x1.9f7f051d0f361814496a13788aa1cd5fp-50,
+    0x1.ffffffffffff7p-1
+  },
+  { // Entry 108
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 109
+    -0x1.5614640c6fbc486cb295b10f8abd6939p-2,
+    0x1.962b5f9438d25p-1
+  },
+  { // Entry 110
+    -0x1.7b67e3d8e1879c50407e8e09ca62d7c2p-3,
+    0x1.c24cd8c07de7ep-1
+  },
+  { // Entry 111
+    -0x1.9cab985fe1d8d99581e09a95c3fac8e5p-5,
+    0x1.ee6e51ecc2fd7p-1
+  },
+  { // Entry 112
+    0x1.2ae04a51c9bc0b1821ec386516792b26p-4,
+    0x1.0d47e58c84098p0
+  },
+  { // Entry 113
+    0x1.7e235191cc46bfaed961bbad6075fcacp-3,
+    0x1.2358a222a6944p0
+  },
+  { // Entry 114
+    0x1.2aebb4eed34bf42bc5448a189070885ap-2,
+    0x1.39695eb8c91f0p0
+  },
+  { // Entry 115
+    0x1.8f6e7fe9764c2e91cb4ffe5f0bc8c5bdp-2,
+    0x1.4f7a1b4eeba9cp0
+  },
+  { // Entry 116
+    0x1.ed89a2dc1bb787ab7102598199c4314ep-2,
+    0x1.658ad7e50e348p0
+  },
+  { // Entry 117
+    0x1.2300d01a02b0f4c423375f5f27dc7268p-1,
+    0x1.7b9b947b30bf4p0
+  },
+  { // Entry 118
+    0x1.4cbcd1db0cd52626c88c135def6fe9adp-1,
+    0x1.91ac5111534a0p0
+  },
+  { // Entry 119
+    0x1.743d53168a525134e8343eebcf59fe0ep-1,
+    0x1.a7bd0da775d4cp0
+  },
+  { // Entry 120
+    0x1.99bc604e5748bb53276e45341eb98a06p-1,
+    0x1.bdcdca3d985f8p0
+  },
+  { // Entry 121
+    0x1.bd6b9ae6661c8790715131587a707f63p-1,
+    0x1.d3de86d3baea4p0
+  },
+  { // Entry 122
+    0x1.df75c6b861b93599aaeb3776b6013c7dp-1,
+    0x1.e9ef4369dd750p0
+  },
+  { // Entry 123
+    0x1.ffffffffffffa3aae26b51f401dccee2p-1,
+    0x1.ffffffffffffcp0
+  },
+  { // Entry 124
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 125
+    -0x1.733246b9a317f0bca830a0c588c3277bp-2,
+    0x1.8e3e170bf282dp-1
+  },
+  { // Entry 126
+    -0x1.e54e37a9c4bd980cfe450419c6f883fcp-3,
+    0x1.b27247aff148ep-1
+  },
+  { // Entry 127
+    -0x1.f19dcbcf827de4f7d32b492b04a24c27p-4,
+    0x1.d6a67853f00efp-1
+  },
+  { // Entry 128
+    -0x1.dd88a259f451a87b03861bb7688f43cep-7,
+    0x1.fadaa8f7eed50p-1
+  },
+  { // Entry 129
+    0x1.5c01a39fbd67e68597bbe1ac26c6be25p-4,
+    0x1.0f876ccdf6cd9p0
+  },
+  { // Entry 130
+    0x1.6cb0f6865c8e97c69cfca0255e6776bap-3,
+    0x1.21a1851ff630ap0
+  },
+  { // Entry 131
+    0x1.0fe8572e5293c2a44ea258726691bcdep-2,
+    0x1.33bb9d71f593bp0
+  },
+  { // Entry 132
+    0x1.64594d130cfbbf489ca3faaa8e6ee937p-2,
+    0x1.45d5b5c3f4f6cp0
+  },
+  { // Entry 133
+    0x1.b439310b4187ea516fa4708c4226a66dp-2,
+    0x1.57efce15f459dp0
+  },
+  { // Entry 134
+    0x1.ffffffffffffdb22e5c2b042ef82f844p-2,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 135
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.8p-1
+  },
+  { // Entry 136
+    -0x1.1c31ddd1b3bdb7e45c68feca52877fddp-2,
+    0x1.a666666666666p-1
+  },
+  { // Entry 137
+    -0x1.374d65d9e60937e1e9c3af53f2460781p-3,
+    0x1.cccccccccccccp-1
+  },
+  { // Entry 138
+    -0x1.2b38505f8a2a84910fe2def6e099c1a4p-5,
+    0x1.f333333333332p-1
+  },
+  { // Entry 139
+    0x1.20508f547ede543575d3d1c5271c8aebp-4,
+    0x1.0ccccccccccccp0
+  },
+  { // Entry 140
+    0x1.5c01a39fbd67d5d476c5408b1c684536p-3,
+    0x1.1ffffffffffffp0
+  },
+  { // Entry 141
+    0x1.0d58e42b1da11244cfd82a2743f07a46p-2,
+    0x1.3333333333332p0
+  },
+  { // Entry 142
+    0x1.66e8c01641ed632aa3e56de7648499cdp-2,
+    0x1.4666666666665p0
+  },
+  { // Entry 143
+    0x1.bb59b5fafc553e2891d2d31fea53fcb0p-2,
+    0x1.5999999999998p0
+  },
+  { // Entry 144
+    0x1.059cccf99870a58ae5bee787b5da3e26p-1,
+    0x1.6cccccccccccbp0
+  },
+  { // Entry 145
+    0x1.2b803473f7acd1b12c5db00c0f9d85f7p-1,
+    0x1.7fffffffffffep0
+  },
+  { // Entry 146
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 147
+    0x1.199b728cb9d0c325536aa229a8894fd2p-3,
+    0x1.199999999999ap0
+  },
+  { // Entry 148
+    0x1.0d58e42b1da1ac2801254c3b38d1f6e5p-2,
+    0x1.3333333333334p0
+  },
+  { // Entry 149
+    0x1.83988d0c1f611efc28e37b6de8f0d25ep-2,
+    0x1.4cccccccccccep0
+  },
+  { // Entry 150
+    0x1.f113baed305e266df10e8a16d5d1b604p-2,
+    0x1.6666666666668p0
+  },
+  { // Entry 151
+    0x1.2b803473f7ad4ccd53ce981c057004fdp-1,
+    0x1.8000000000002p0
+  },
+  { // Entry 152
+    0x1.5b2c3da19723ed4d8ccfca8e89888f01p-1,
+    0x1.999999999999cp0
+  },
+  { // Entry 153
+    0x1.87f42b97294a21112b6763a4c5b15c5ep-1,
+    0x1.b333333333336p0
+  },
+  { // Entry 154
+    0x1.b22ca689867e189efbc280384c02430cp-1,
+    0x1.cccccccccccd0p0
+  },
+  { // Entry 155
+    0x1.da1c9885a0c428156893856b99d4ce5ap-1,
+    0x1.e66666666666ap0
+  },
+  { // Entry 156
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 157
+    0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 158
+    0x1.908ccdb9465ce86192a9b55114d444a7p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 159
+    0x1.910d58e42b1da1ac2801254c3b38d1f6p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 160
+    0x1.9183988d0c1f611efc28e37b6de8f0d2p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 161
+    0x1.91f113baed305e266df10e8a16d5d1b6p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 162
+    0x1.92570068e7ef5a999aa79d30380ae009p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 163
+    0x1.92b6587b432e47da9b199f951d13111ep6,
+    0x1.999999999999cp100
+  },
+  { // Entry 164
+    0x1.930fe8572e5294422256cec7498b62b8p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 165
+    0x1.9364594d130cfc313df7850070980486p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 166
+    0x1.93b439310b4188502ad1270ad733a99cp6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 167
+    0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 168
+    0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 169
+    0x1.904666dca32e7430c954daa88a6a2253p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 170
+    0x1.9086ac72158ed0d6140092a61d9c68fbp7,
+    0x1.3333333333334p200
+  },
+  { // Entry 171
+    0x1.90c1cc46860fb08f7e1471bdb6f47869p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 172
+    0x1.90f889dd76982f1336f887450b6ae8dbp7,
+    0x1.6666666666668p200
+  },
+  { // Entry 173
+    0x1.912b803473f7ad4ccd53ce981c057004p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 174
+    0x1.915b2c3da19723ed4d8ccfca8e89888fp7,
+    0x1.999999999999cp200
+  },
+  { // Entry 175
+    0x1.9187f42b97294a21112b6763a4c5b15cp7,
+    0x1.b333333333336p200
+  },
+  { // Entry 176
+    0x1.91b22ca689867e189efbc280384c0243p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 177
+    0x1.91da1c9885a0c428156893856b99d4cep7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 178
+    0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 179
+    0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 180
+    0x1.f41199b728cb9d0c325536aa229a8894p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 181
+    0x1.f421ab1c8563b435850024a987671a3ep9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 182
+    0x1.f4307311a183ec23df851c6f6dbd1e1ap9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 183
+    0x1.f43e22775da60bc4cdbe21d142daba36p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 184
+    0x1.f44ae00d1cfdeb533354f3a607015c01p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 185
+    0x1.f456cb0f6865c8fb536333f2a3a26223p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 186
+    0x1.f461fd0ae5ca5288444ad9d8e9316c57p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 187
+    0x1.f46c8b29a2619f8627bef0a00e130090p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 188
+    0x1.f47687262168310a055a24e15ae67533p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 189
+    0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 190
+    -0x1.715481dd5c5d93663255eca7ba82aeb6p-20,
+    0x1.ffffep-1
+  },
+  { // Entry 191
+    -0x1.71547c180a27f362d17a1f59be1bb55dp-21,
+    0x1.fffffp-1
+  },
+  { // Entry 192
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 193
+    0x1.7154708d66755d9fe119ed1e85c13f40p-21,
+    0x1.0000080p0
+  },
+  { // Entry 194
+    0x1.71546ac814f867d7a99ac240f177d35fp-20,
+    0x1.00001p0
+  },
+  { // Entry 195
+    -0x1.715476559ad8ce249f3237b562a13af0p-30,
+    0x1.fffffff80p-1
+  },
+  { // Entry 196
+    -0x1.71547654298457cc21b07cded2333ea6p-31,
+    0x1.fffffffc0p-1
+  },
+  { // Entry 197
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 198
+    0x1.7154765146db6b26b150b9ea12c16a1ap-31,
+    0x1.000000020p0
+  },
+  { // Entry 199
+    0x1.7154764fd586f4d9be72b1a943d27a16p-30,
+    0x1.000000040p0
+  },
+  { // Entry 200
+    -0x1.71547652b8e88bb2a66c90adb569ed7cp-40,
+    0x1.fffffffffe0p-1
+  },
+  { // Entry 201
+    -0x1.71547652b88c369511be286039f5fb20p-41,
+    0x1.ffffffffff0p-1
+  },
+  { // Entry 202
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 203
+    0x1.71547652b7d38c59e862106f7e37730ap-41,
+    0x1.00000000008p0
+  },
+  { // Entry 204
+    0x1.71547652b777373c53b460cc3decdcc6p-40,
+    0x1.00000000010p0
+  },
+  { // Entry 205
+    -0x1.71547652b8300fa20bda54a6d61b2f2ap-50,
+    0x1.ffffffffffff8p-1
+  },
+  { // Entry 206
+    -0x1.71547652b82ff88cc4752923d23e6580p-51,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 207
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 208
+    0x1.71547652b82fca6235aad21dd60f75dep-51,
+    0x1.0000000000002p0
+  },
+  { // Entry 209
+    0x1.71547652b82fb34cee45a69addbd4fe6p-50,
+    0x1.0000000000004p0
+  },
+  { // Entry 210
+    0x1.fffffffffffffffa3aae26b51f40630cp9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 211
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 212
+    -0x1.00000000000033138899b7a32401fb1cp-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 213
+    -0x1.000000000000126e8d1ea7de883e83ddp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 214
+    -0x1.ffffffffffffe39323473033dbd8c22ap-2,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 215
+    0x1.ffffffffffff99d8eecc90b9b7fc09c7p-2,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 216
+    0x1.ffffffffffffdb22e5c2b042ef82f844p-2,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 217
+    0x1.0000000000000e366e5c67e612139eeap-1,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 218
+    -0x1.0000000000000b8aa3b295c17f39e677p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 219
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 220
+    -0x1.ffffffffffffd1d57135a8fa054264d4p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 221
+    -0x1.a8ff971810a61f0f938c2bdfe202d351p-2,
+    0x1.7ffffffffffffp-1
+  },
+  { // Entry 222
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.8p-1
+  },
+  { // Entry 223
+    -0x1.a8ff971810a5a3f36c1b43cfec30544cp-2,
+    0x1.8000000000001p-1
+  },
+  { // Entry 224
+    0x1.2b803473f7acf0783639ea100efe9657p-1,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 225
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.8p0
+  },
+  { // Entry 226
+    0x1.2b803473f7ad2e0649f25e1809e7d5d9p-1,
+    0x1.8000000000001p0
+  },
+  { // Entry 227
+    0x1.ebccc1098ad858c1fcb8223ebc3a2d89p-9,
+    0x1.00aaaaaaaaaaap0
+  },
+  { // Entry 228
+    0x1.ebccc1098b06649e343f78ac72257de7p-9,
+    0x1.00aaaaaaaaaabp0
+  },
+  { // Entry 229
+    0x1.ebccc1098b34707a6bc6cf17493ced63p-9,
+    0x1.00aaaaaaaaaacp0
+  },
+  { // Entry 230
+    0x1.fffffffffffff4755c4d6a3e80c61988p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 231
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 232
+    0x1.0000000000000b8aa3b295c17eaf66cap1,
+    0x1.0000000000001p2
+  },
+  { // Entry 233
+    0x1.ffffffffffffe8eab89ad47d018c3311p-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 234
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 235
+    0x1.000000000000171547652b82fd5ecd95p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 236
+    -0x1.71547652b82fe73ccee9488191df220fp-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 237
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 238
+    0x1.71547652b82fd5ecd95d67df53a9dd50p-52,
+    0x1.0000000000001p0
+  },
+  { // Entry 239
+    -0x1.0000000000000b8aa3b295c17f39e677p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 240
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 241
+    -0x1.ffffffffffffd1d57135a8fa054264d4p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 242
+    -0x1.00000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 243
+    -0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 244
+    -0x1.ffffffffffffe8eab89ad47d02a1326ap0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 245
+    -0x1.80000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 246
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 247
+    -0x1.7ffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 248
+    -0x1.00000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 249
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 250
+    -0x1.fffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 251
+    -0x1.40000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 252
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 253
+    -0x1.3ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 254
+    -0x1.80000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 255
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 256
+    -0x1.7ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 257
+    -0x1.c0000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 258
+    -0x1.c0p2,
+    0x1.0p-7
+  },
+  { // Entry 259
+    -0x1.bffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 260
+    -0x1.0000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 261
+    -0x1.p3,
+    0x1.0p-8
+  },
+  { // Entry 262
+    -0x1.fffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 263
+    -0x1.2000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 264
+    -0x1.20p3,
+    0x1.0p-9
+  },
+  { // Entry 265
+    -0x1.1ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-9
+  },
+  { // Entry 266
+    -0x1.4000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 267
+    -0x1.40p3,
+    0x1.0p-10
+  },
+  { // Entry 268
+    -0x1.3ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-10
+  },
+  { // Entry 269
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 270
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 271
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 272
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 273
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 274
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 275
+    -0x1.80000000000005c551d94ae0bf9cf33bp1,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 276
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 277
+    -0x1.7ffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 278
+    -0x1.8a8980abfbd38fec8261ce5ac7b2b316p-3,
+    0x1.bffffffffffffp-1
+  },
+  { // Entry 279
+    -0x1.8a8980abfbd32666a9b7e2df60d2bdc6p-3,
+    0x1.cp-1
+  },
+  { // Entry 280
+    -0x1.8a8980abfbd2bce0d10df763fdb79032p-3,
+    0x1.c000000000001p-1
+  },
+  { // Entry 281
+    -0x1.00000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 282
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 283
+    -0x1.fffffffffffff4755c4d6a3e81509935p1,
+    0x1.0000000000001p-4
+  },
+  { // Entry 284
+    -0x1.7d60496cfbb58b6d8d05c60c1e4defa0p-4,
+    0x1.dffffffffffffp-1
+  },
+  { // Entry 285
+    -0x1.7d60496cfbb4c673b4511f8c2b4e4fb7p-4,
+    0x1.ep-1
+  },
+  { // Entry 286
+    -0x1.7d60496cfbb40179db9c790c3edf8c5cp-4,
+    0x1.e000000000001p-1
+  },
+  { // Entry 287
+    -0x1.40000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 288
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 289
+    -0x1.3ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 290
+    -0x1.77394c9d958ed31cc5d7c5bf657ce7c7p-5,
+    0x1.effffffffffffp-1
+  },
+  { // Entry 291
+    -0x1.77394c9d958d55de5c380fe0871d757fp-5,
+    0x1.fp-1
+  },
+  { // Entry 292
+    -0x1.77394c9d958bd89ff2985a01b50a5933p-5,
+    0x1.f000000000001p-1
+  },
+  { // Entry 293
+    -0x1.80000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 294
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 295
+    -0x1.7ffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 296
+    -0x1.743ee861f35851c7beb5800ff025220ap-6,
+    0x1.f7fffffffffffp-1
+  },
+  { // Entry 297
+    -0x1.743ee861f3556365483611f7c0bf059fp-6,
+    0x1.f80p-1
+  },
+  { // Entry 298
+    -0x1.743ee861f3527502d1b6a3dfa92b465cp-6,
+    0x1.f800000000001p-1
+  },
+  { // Entry 299
+    -0x1.c0000000000002e2a8eca5705fce799dp2,
+    0x1.fffffffffffffp-8
+  },
+  { // Entry 300
+    -0x1.c0p2,
+    0x1.0p-7
+  },
+  { // Entry 301
+    -0x1.bffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-7
+  },
+  { // Entry 302
+    -0x1.72c7ba20f73846a992511c7918df1e3ep-7,
+    0x1.fbfffffffffffp-1
+  },
+  { // Entry 303
+    -0x1.72c7ba20f73275b5d184a2c615b70ad4p-7,
+    0x1.fc0p-1
+  },
+  { // Entry 304
+    -0x1.72c7ba20f72ca4c210b8291341746042p-7,
+    0x1.fc00000000001p-1
+  },
+  { // Entry 305
+    -0x1.0000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-9
+  },
+  { // Entry 306
+    -0x1.p3,
+    0x1.0p-8
+  },
+  { // Entry 307
+    -0x1.fffffffffffffa3aae26b51f40a84c9ap2,
+    0x1.0000000000001p-8
+  },
+  { // Entry 308
+    -0x1.720d9c06a84180a8de11db415a9c19bfp-8,
+    0x1.fdfffffffffffp-1
+  },
+  { // Entry 309
+    -0x1.720d9c06a835ea6ef18f977e5d8a37abp-8,
+    0x1.fe0p-1
+  },
+  { // Entry 310
+    -0x1.720d9c06a82a5435050d53bbbd8733d9p-8,
+    0x1.fe00000000001p-1
+  },
+  { // Entry 311
+    -0x1.2000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-10
+  },
+  { // Entry 312
+    -0x1.20p3,
+    0x1.0p-9
+  },
+  { // Entry 313
+    -0x1.1ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-9
+  },
+  { // Entry 314
+    -0x1.71b0ea42e614c339acd1274e85c99f12p-9,
+    0x1.fefffffffffffp-1
+  },
+  { // Entry 315
+    -0x1.71b0ea42e5fda261dbbd1a498f533398p-9,
+    0x1.ff0p-1
+  },
+  { // Entry 316
+    -0x1.71b0ea42e5e6818a0aa90d455240385fp-9,
+    0x1.ff00000000001p-1
+  },
+  { // Entry 317
+    -0x1.4000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-11
+  },
+  { // Entry 318
+    -0x1.40p3,
+    0x1.0p-10
+  },
+  { // Entry 319
+    -0x1.3ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-10
+  },
+  { // Entry 320
+    -0x1.7182a894b6ca8f7bca8c2f767eabc572p-10,
+    0x1.ff7ffffffffffp-1
+  },
+  { // Entry 321
+    -0x1.7182a894b69c595f7920cea1619c6e57p-10,
+    0x1.ff8p-1
+  },
+  { // Entry 322
+    -0x1.7182a894b66e234327b56dcdb69a7d21p-10,
+    0x1.ff80000000001p-1
+  },
+  { // Entry 323
+    -0x1.a000000000000171547652b82fe73ccep3,
+    0x1.fffffffffffffp-14
+  },
+  { // Entry 324
+    -0x1.a0p3,
+    0x1.0p-13
+  },
+  { // Entry 325
+    -0x1.9ffffffffffffd1d57135a8fa054264dp3,
+    0x1.0000000000001p-13
+  },
+  { // Entry 326
+    -0x1.715a3bc35aaead4b7ce65d43632af0adp-13,
+    0x1.ffeffffffffffp-1
+  },
+  { // Entry 327
+    -0x1.715a3bc3593d4d4a2a239745f6427420p-13,
+    0x1.fffp-1
+  },
+  { // Entry 328
+    -0x1.715a3bc357cbed48d760d15414b65d0dp-13,
+    0x1.fff0000000001p-1
+  },
+  { // Entry 329
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 330
+    0x1.fffffffffffffffa3aae26b51f40630cp9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 331
+    0x1.fffffffffffffff4755c4d6a3e8097eep9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 332
+    0x1.a6c873498ddf71a36f477a776fb34e4bp0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 333
+    0x1.4d90e6931bbee346de8ef4eedf669c96p-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 334
+    0x1.71547652b82fd5ecd95d67df53a9dd50p-52,
+    0x1.0000000000001p0
+  },
+  { // Entry 335
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 336
+    -0x1.71547652b82fe73ccee9488191df220fp-53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 337
+    -0x1.64de32d9c882397242e216224132c6d2p-2,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 338
+    -0x1.fefffffffffffff4755c4d6a3e815099p9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 339
+    -0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 340
+    -0x1.ff0000000000000b8aa3b295c17f6811p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 341
+    -0x1.ff000000000000171547652b82ff88ccp9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 342
+    -0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 343
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 344
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 345
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 346
+    0x1.f4p6,
+    0x1.0p125
+  },
+  { // Entry 347
+    -0x1.fcp6,
+    0x1.0p-127
+  },
+  { // Entry 348
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 349
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 350
+    -0x1.p0,
+    0x1.0p-1
+  }
+};
diff --git a/tests/math_data/log2f_intel_data.h b/tests/math_data/log2f_intel_data.h
new file mode 100644
index 0000000..666a84e
--- /dev/null
+++ b/tests/math_data/log2f_intel_data.h
@@ -0,0 +1,1150 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_log2f_intel_data[] = {
+  { // Entry 0
+    0x1.715419fdb96231bd1fa15f37bfa42910p-17,
+    0x1.000080p0
+  },
+  { // Entry 1
+    0x1.14fe88ff5753fa56dc27bca056285672p-15,
+    0x1.000180p0
+  },
+  { // Entry 2
+    0x1.715305002e4ae466ed064a01ae55204ep-15,
+    0x1.0002p0
+  },
+  { // Entry 3
+    0x1.4327b20433837a3e2c610a392bbd295ap-14,
+    0x1.000380p0
+  },
+  { // Entry 4
+    0x1.64531effed17eb9b0a93b3ccaa24f82bp-13,
+    0x1.0007b8p0
+  },
+  { // Entry 5
+    -0x1.ffe7a4ffff5f125cad7f0468b55a873cp2,
+    0x1.004390p-8
+  },
+  { // Entry 6
+    -0x1.4fdd63002e000ea74a80c91b771feb2ep4,
+    0x1.0181p-21
+  },
+  { // Entry 7
+    0x1.61382d01166a5f656628676dd57287c3p-7,
+    0x1.01eb80p0
+  },
+  { // Entry 8
+    0x1.67ea1b041aeef5d06d27db173c4a8ec3p-7,
+    0x1.01f4dap0
+  },
+  { // Entry 9
+    0x1.6f089703fa8b836209e806374014eeeap-7,
+    0x1.01feccp0
+  },
+  { // Entry 10
+    0x1.d8c5b9000072814ba11dc07e3e55730cp-6,
+    0x1.052cp0
+  },
+  { // Entry 11
+    0x1.65ad73003698ae3b6629d42d6d969d65p-5,
+    0x1.07ddb4p0
+  },
+  { // Entry 12
+    0x1.671b720031bff18c21d3c6680b607a97p-5,
+    0x1.07e5e0p0
+  },
+  { // Entry 13
+    -0x1.bd01820013d2bdf2e708a03b63cad894p2,
+    0x1.0870p-7
+  },
+  { // Entry 14
+    0x1.bc8a3f002d49ff2fff61bbc88ca84366p-5,
+    0x1.09d0p0
+  },
+  { // Entry 15
+    0x1.d15cfd000ba18b834668273db43a54f4p-5,
+    0x1.0a48p0
+  },
+  { // Entry 16
+    0x1.254503fffff2c7469f0c551c58628c75p-4,
+    0x1.0d0686p0
+  },
+  { // Entry 17
+    0x1.8972445dbe2011fbaf76774ecaa1886bp-4,
+    0x1.11a0p0
+  },
+  { // Entry 18
+    -0x1.4e0dddfffd1fadff896c773a983cb069p4,
+    0x1.1684p-21
+  },
+  { // Entry 19
+    -0x1.6d9f4300000188d5e28bf9ecd7eb48a3p1,
+    0x1.1ac9bcp-3
+  },
+  { // Entry 20
+    0x1.3e8666fed9e0919054d1723c7bfa2a2ep-3,
+    0x1.1d24p0
+  },
+  { // Entry 21
+    -0x1.a9967dfffdea2f22e87a3d2cfb4653e0p-1,
+    0x1.1fc530p-1
+  },
+  { // Entry 22
+    -0x1.ac7b430000002b16a835260d35f73f3bp0,
+    0x1.40f572p-2
+  },
+  { // Entry 23
+    -0x1.50fd36ffff7b1fe211b2f1e467a808c6p1,
+    0x1.4a37aap-3
+  },
+  { // Entry 24
+    -0x1.68e3e700011eed1c8bdf78a5004ec845p4,
+    0x1.5c5780p-23
+  },
+  { // Entry 25
+    -0x1.14c560fe68af880e0a0f337d55565281p-1,
+    0x1.60p-1
+  },
+  { // Entry 26
+    0x1.eee0f9e9bd541c2161fbaa601ad44f9dp-2,
+    0x1.65ddfap0
+  },
+  { // Entry 27
+    0x1.ffff6b715e229192074dd520e800523dp-2,
+    0x1.6a09c2p0
+  },
+  { // Entry 28
+    0x1.ffffb4e49986d923a4e540f03b1da0dap-2,
+    0x1.6a09d4p0
+  },
+  { // Entry 29
+    -0x1.000008fd564a8532198fd9c602596351p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 30
+    -0x1.5e7df5fe538ab34efb515ac93b443d55p2,
+    0x1.70p-6
+  },
+  { // Entry 31
+    0x1.3719d8ffda8ee27c20ca5d36ce40a19bp3,
+    0x1.a63c60p9
+  },
+  { // Entry 32
+    -0x1.95152a001cb0000297a418bc58741cd8p6,
+    0x1.a86a40p-102
+  },
+  { // Entry 33
+    -0x1.a86d52000000dde9cc8582ca6f4adf02p3,
+    0x1.aa932cp-14
+  },
+  { // Entry 34
+    -0x1.a65bf4fffdc2eb6e2bba1e155731485cp3,
+    0x1.be1dacp-14
+  },
+  { // Entry 35
+    0x1.19e96affffe46969e091319af39bf01dp3,
+    0x1.c0be08p8
+  },
+  { // Entry 36
+    -0x1.6b2194fffbcc473e6b408598b11c0b76p-3,
+    0x1.c4c990p-1
+  },
+  { // Entry 37
+    -0x1.b0747afff09129e7c27981832371a2b7p-4,
+    0x1.dbde6cp-1
+  },
+  { // Entry 38
+    -0x1.a31d90fffdc06fa674e6c77e0d27325ep3,
+    0x1.de9690p-14
+  },
+  { // Entry 39
+    -0x1.7d61ebfff707baf0a4babc7a455fdedap-4,
+    0x1.dfffdep-1
+  },
+  { // Entry 40
+    -0x1.8be3350000129024f1746df09b18e1c0p1,
+    0x1.e01448p-4
+  },
+  { // Entry 41
+    -0x1.2dab68ffff653aa0f522110f165fc6cdp-4,
+    0x1.e684aep-1
+  },
+  { // Entry 42
+    -0x1.1ddc06ffe493eb9e838bc57f1692f071p-5,
+    0x1.f3c3c0p-1
+  },
+  { // Entry 43
+    -0x1.fe5c28b51763fd9e597b74b77eaef363p-6,
+    0x1.f5104cp-1
+  },
+  { // Entry 44
+    -0x1.fb46c8ffb297bc8b36ec72bf8f845dafp-6,
+    0x1.f52108p-1
+  },
+  { // Entry 45
+    -0x1.83a4382bc0ca76ba53a02f5c39dd1105p1,
+    0x1.f600a8p-4
+  },
+  { // Entry 46
+    -0x1.c5685effd6dc60c465f6d4566400ea1bp-6,
+    0x1.f645bcp-1
+  },
+  { // Entry 47
+    -0x1.c0daa2ffe3fde42c220d9cdd6dba636bp-6,
+    0x1.f65e82p-1
+  },
+  { // Entry 48
+    -0x1.a0ab3effb22b2baa230d01d368f486cfp-6,
+    0x1.f70dbep-1
+  },
+  { // Entry 49
+    -0x1.9993e6b5eebc60c6416982df9bf027cdp-6,
+    0x1.f73462p-1
+  },
+  { // Entry 50
+    -0x1.90db40b3d98bebe6e068b72646536233p-6,
+    0x1.f763ecp-1
+  },
+  { // Entry 51
+    -0x1.805ce6d1eec4e554c05d1277b7a61f1ep-6,
+    0x1.f7bde0p-1
+  },
+  { // Entry 52
+    -0x1.71c5270003e7400a82571e14d211b1abp-9,
+    0x1.fefff2p-1
+  },
+  { // Entry 53
+    -0x1.4fd0950000f9ea163e3b6b379b806a27p-9,
+    0x1.ff1770p-1
+  },
+  { // Entry 54
+    -0x1.802e2bfffffc33f278fa52402320f10ap1,
+    0x1.ff800cp-4
+  },
+  { // Entry 55
+    -0x1.718867c39aac5ee37685394fe9bfd749p-13,
+    0x1.ffeffep-1
+  },
+  { // Entry 56
+    -0x1.72c684e5cfc146d2275210812c0c7f68p-16,
+    0x1.fffdfep-1
+  },
+  { // Entry 57
+    -0x1.71552efd6e75c155bd4e4ed94f59a26ap-16,
+    0x1.fffep-1
+  },
+  { // Entry 58
+    -0x1.48ef5e00535d9165bbb9b9a8c056f797p-18,
+    0x1.ffff8ep-1
+  },
+  { // Entry 59
+    -0x1.71547935612438aa6af6b5495892e719p-22,
+    0x1.fffff8p-1
+  },
+  { // Entry 60
+    -0x1.715477c40ca820a04d97be4efccd95a9p-23,
+    0x1.fffffcp-1
+  },
+  { // Entry 61
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 62
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 63
+    -0x1.561462846d15350ee6248ecd4c1b002bp-2,
+    0x1.962b60p-1
+  },
+  { // Entry 64
+    -0x1.7b67dba86e896c0a53d2c939ef0d29bfp-3,
+    0x1.c24cdap-1
+  },
+  { // Entry 65
+    -0x1.9cab66c58143f2a800e68dbb02f54331p-5,
+    0x1.ee6e54p-1
+  },
+  { // Entry 66
+    0x1.2ae054380d16d8f59673a7e3928246cdp-4,
+    0x1.0d47e6p0
+  },
+  { // Entry 67
+    0x1.7e23503264c4ad371b8f163c4f9aef26p-3,
+    0x1.2358a2p0
+  },
+  { // Entry 68
+    0x1.2aebb187ce6ee362d3103a2200b286e2p-2,
+    0x1.39695ep0
+  },
+  { // Entry 69
+    0x1.8f6e7a2697b530fad3d12a9d6a8f1d3ap-2,
+    0x1.4f7a1ap0
+  },
+  { // Entry 70
+    0x1.ed899b07eb9cb8af2c927ecf12ec7cbep-2,
+    0x1.658ad6p0
+  },
+  { // Entry 71
+    0x1.2300cb4606615b744653e167d86f2813p-1,
+    0x1.7b9b92p0
+  },
+  { // Entry 72
+    0x1.4cbccc36deb50dd3e00c1a4eca18d57ep-1,
+    0x1.91ac4ep0
+  },
+  { // Entry 73
+    0x1.743d4cb7d92562e1484f862b688a46fbp-1,
+    0x1.a7bd0ap0
+  },
+  { // Entry 74
+    0x1.99bc5947999b190ccc67cef041311282p-1,
+    0x1.bdcdc6p0
+  },
+  { // Entry 75
+    0x1.bd6b934775bef13a6359e331efe67a11p-1,
+    0x1.d3de82p0
+  },
+  { // Entry 76
+    0x1.df75be8ef439ce361ebbb13fff3a7b53p-1,
+    0x1.e9ef3ep0
+  },
+  { // Entry 77
+    0x1.fffff758052d13b69dd6c8d6740a3357p-1,
+    0x1.fffffap0
+  },
+  { // Entry 78
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 79
+    -0x1.73324a9b9d2895d79d8ddf07a502bep-2,
+    0x1.8e3e16p-1
+  },
+  { // Entry 80
+    -0x1.e54e432361189c3353cc06c2dd27d736p-3,
+    0x1.b27246p-1
+  },
+  { // Entry 81
+    -0x1.f19de909d7e63fd264a2c312d0c1789dp-4,
+    0x1.d6a676p-1
+  },
+  { // Entry 82
+    -0x1.dd89b738d21d0221c908b8a0c32f1212p-7,
+    0x1.fadaa6p-1
+  },
+  { // Entry 83
+    0x1.5c01921d594ace74709e134409d4ed24p-4,
+    0x1.0f876cp0
+  },
+  { // Entry 84
+    0x1.6cb0eb0cc03326cfabdb68ecee7aba40p-3,
+    0x1.21a184p0
+  },
+  { // Entry 85
+    0x1.0fe8503e467106a65788ddb3a15f5375p-2,
+    0x1.33bb9cp0
+  },
+  { // Entry 86
+    0x1.64594511e637e6f93b5cb2912b99abedp-2,
+    0x1.45d5b4p0
+  },
+  { // Entry 87
+    0x1.b4392815bf92113e75eb0dd2b26fd740p-2,
+    0x1.57efccp0
+  },
+  { // Entry 88
+    0x1.fffff62e925d61652c914504dc3ee2cep-2,
+    0x1.6a09e4p0
+  },
+  { // Entry 89
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.80p-1
+  },
+  { // Entry 90
+    -0x1.1c31df37d71943eb77829a1feb37b99ap-2,
+    0x1.a66666p-1
+  },
+  { // Entry 91
+    -0x1.374d6afb125968a0c493df15bf69e438p-3,
+    0x1.ccccccp-1
+  },
+  { // Entry 92
+    -0x1.2b386cc87f9a4eee785d4a5dbce887b7p-5,
+    0x1.f33332p-1
+  },
+  { // Entry 93
+    0x1.20507dbe3011bddb9a9b123c4341bc4cp-4,
+    0x1.0cccccp0
+  },
+  { // Entry 94
+    0x1.5c01a39fbd6879fa00b120a068badd12p-3,
+    0x1.20p0
+  },
+  { // Entry 95
+    0x1.0d58e803fedbad8f59d5947b2a21a425p-2,
+    0x1.333334p0
+  },
+  { // Entry 96
+    0x1.66e8c754261d0ebda20c00ad74e85091p-2,
+    0x1.466668p0
+  },
+  { // Entry 97
+    0x1.bb59c03d54eb4b10a384046c38ed39fdp-2,
+    0x1.59999cp0
+  },
+  { // Entry 98
+    0x1.059cd374571eb31852640bb553677c83p-1,
+    0x1.6cccd0p0
+  },
+  { // Entry 99
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.80p0
+  },
+  { // Entry 100
+    0.0,
+    0x1.p0
+  },
+  { // Entry 101
+    0x1.199b76bf23e221a6231fc33bca41b607p-3,
+    0x1.19999ap0
+  },
+  { // Entry 102
+    0x1.0d58e803fedbad8f59d5947b2a21a425p-2,
+    0x1.333334p0
+  },
+  { // Entry 103
+    0x1.8398925fcd61fbf1aa81ef798b08bb2cp-2,
+    0x1.4ccccep0
+  },
+  { // Entry 104
+    0x1.f113c1858de496d814a68e82919d673bp-2,
+    0x1.666668p0
+  },
+  { // Entry 105
+    0x1.2b80384cd8e605e99a5cd99f34293888p-1,
+    0x1.800002p0
+  },
+  { // Entry 106
+    0x1.5b2c41f5948361383f498e179a6dd347p-1,
+    0x1.99999cp0
+  },
+  { // Entry 107
+    0x1.87f43057c707ec89ca00835fb95f66d7p-1,
+    0x1.b33336p0
+  },
+  { // Entry 108
+    0x1.b22cabaab2c8964911abde220f5f415cp-1,
+    0x1.ccccd0p0
+  },
+  { // Entry 109
+    0x1.da1c9dfd31a7706146ef266c16ed655dp-1,
+    0x1.e6666ap0
+  },
+  { // Entry 110
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 111
+    0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 112
+    0x1.908ccdbb5f91f110d3118fe19de520dbp6,
+    0x1.19999ap100
+  },
+  { // Entry 113
+    0x1.910d58e803fedbad8f59d5947b2a21a4p6,
+    0x1.333334p100
+  },
+  { // Entry 114
+    0x1.918398925fcd61fbf1aa81ef798b08bbp6,
+    0x1.4ccccep100
+  },
+  { // Entry 115
+    0x1.91f113c1858de496d814a68e82919d67p6,
+    0x1.666668p100
+  },
+  { // Entry 116
+    0x1.9257007099b1cc0bd334b9b33e685271p6,
+    0x1.800002p100
+  },
+  { // Entry 117
+    0x1.92b65883eb2906c2707e931c2f34dba6p6,
+    0x1.99999cp100
+  },
+  { // Entry 118
+    0x1.930fe860af8e0fd913940106bf72becdp6,
+    0x1.b33336p100
+  },
+  { // Entry 119
+    0x1.936459575565912c922357bc441ebe82p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 120
+    0x1.93b4393bfa634ee0c28dde4cd82ddacap6,
+    0x1.e6666ap100
+  },
+  { // Entry 121
+    0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 122
+    -0x1.715481dd5c5d93663255eca7ba82aeb6p-20,
+    0x1.ffffe0p-1
+  },
+  { // Entry 123
+    -0x1.71547c180a27f362d17a1f59be1bb55dp-21,
+    0x1.fffff0p-1
+  },
+  { // Entry 124
+    0.0,
+    0x1.p0
+  },
+  { // Entry 125
+    0x1.7154708d66755d9fe119ed1e85c13f40p-21,
+    0x1.000008p0
+  },
+  { // Entry 126
+    0x1.71546ac814f867d7a99ac240f177d35fp-20,
+    0x1.000010p0
+  },
+  { // Entry 127
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 128
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 129
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 130
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 131
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 132
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 133
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 134
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 135
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 136
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 137
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 138
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 139
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 140
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 142
+    0x1.fffffffa3aae23d27651e8410cc825cbp6,
+    0x1.fffffep127
+  },
+  { // Entry 143
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 144
+    -0x1.000004e8b6d14f4d69b75d7d91e08e98p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 145
+    -0x1.000000d4175ddebaa6cc9d6112365229p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 146
+    -0x1.fffff97eefe066f380fa3704987b9811p-2,
+    0x1.6a09e8p-1
+  },
+  { // Entry 147
+    0x1.fffff62e925d61652c914504dc3ee2cep-2,
+    0x1.6a09e4p0
+  },
+  { // Entry 148
+    0x1.fffffe57d144428ab266c53ddb935bacp-2,
+    0x1.6a09e6p0
+  },
+  { // Entry 149
+    0x1.00000340880fcc863f82e47db3c233f7p-1,
+    0x1.6a09e8p0
+  },
+  { // Entry 150
+    -0x1.0000017154770b626b85efbccdf68d2ep0,
+    0x1.fffffep-2
+  },
+  { // Entry 151
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 152
+    -0x1.fffffa3aae2c7a711213405fc20a11b8p-1,
+    0x1.000002p-1
+  },
+  { // Entry 153
+    -0x1.a8ff9ec9d322112ed31f244bceb1ec85p-2,
+    0x1.7ffffep-1
+  },
+  { // Entry 154
+    -0x1.a8ff971810a5e1817fd3b7d7e5d148bbp-2,
+    0x1.80p-1
+  },
+  { // Entry 155
+    -0x1.a8ff8f664e33f42ccb464cc197ad8eefp-2,
+    0x1.800002p-1
+  },
+  { // Entry 156
+    0x1.2b80309b166ef76896706dda18a709bdp-1,
+    0x1.7ffffep0
+  },
+  { // Entry 157
+    0x1.2b803473f7ad0f3f401624140d175ba2p-1,
+    0x1.80p0
+  },
+  { // Entry 158
+    0x1.2b80384cd8e605e99a5cd99f34293888p-1,
+    0x1.800002p0
+  },
+  { // Entry 159
+    0x1.ebc51464ccd66f10e7d234a2a0ce225fp-9,
+    0x1.00aaa8p0
+  },
+  { // Entry 160
+    0x1.ebcad5e05d58c6ddfd6c09c193fb3e3ep-9,
+    0x1.00aaaap0
+  },
+  { // Entry 161
+    0x1.ebd0975be25fcf1843facabaa7aa7b51p-9,
+    0x1.00aaacp0
+  },
+  { // Entry 162
+    0x1.fffffe8eab88f49d947a1043320972d1p0,
+    0x1.fffffep1
+  },
+  { // Entry 163
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 164
+    0x1.000001715474e163bb7b2fe80f7d7b91p1,
+    0x1.000002p2
+  },
+  { // Entry 165
+    0x1.fffffd1d5711e93b28f420866412e5a2p-1,
+    0x1.fffffep0
+  },
+  { // Entry 166
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 167
+    0x1.000002e2a8e9c2c776f65fd01efaf723p0,
+    0x1.000002p1
+  },
+  { // Entry 168
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 169
+    0.0,
+    0x1.p0
+  },
+  { // Entry 170
+    0x1.715474e163bb7b2fe80f7d7b91f1851cp-23,
+    0x1.000002p0
+  },
+  { // Entry 171
+    -0x1.0000017154770b626b85efbccdf68d2ep0,
+    0x1.fffffep-2
+  },
+  { // Entry 172
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 173
+    -0x1.fffffa3aae2c7a711213405fc20a11b8p-1,
+    0x1.000002p-1
+  },
+  { // Entry 174
+    -0x1.000000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-3
+  },
+  { // Entry 175
+    -0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 176
+    -0x1.fffffd1d57163d388909a02fe10508dcp0,
+    0x1.000002p-2
+  },
+  { // Entry 177
+    -0x1.800000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-4
+  },
+  { // Entry 178
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 179
+    -0x1.7ffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-3
+  },
+  { // Entry 180
+    -0x1.0000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-5
+  },
+  { // Entry 181
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 182
+    -0x1.fffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-4
+  },
+  { // Entry 183
+    -0x1.4000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-6
+  },
+  { // Entry 184
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 185
+    -0x1.3fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-5
+  },
+  { // Entry 186
+    -0x1.8000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-7
+  },
+  { // Entry 187
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 188
+    -0x1.7fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-6
+  },
+  { // Entry 189
+    -0x1.c000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-8
+  },
+  { // Entry 190
+    -0x1.c0p2,
+    0x1.p-7
+  },
+  { // Entry 191
+    -0x1.bfffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-7
+  },
+  { // Entry 192
+    -0x1.0000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-9
+  },
+  { // Entry 193
+    -0x1.p3,
+    0x1.p-8
+  },
+  { // Entry 194
+    -0x1.ffffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-8
+  },
+  { // Entry 195
+    -0x1.2000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-10
+  },
+  { // Entry 196
+    -0x1.20p3,
+    0x1.p-9
+  },
+  { // Entry 197
+    -0x1.1fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-9
+  },
+  { // Entry 198
+    -0x1.4000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-11
+  },
+  { // Entry 199
+    -0x1.40p3,
+    0x1.p-10
+  },
+  { // Entry 200
+    -0x1.3fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-10
+  },
+  { // Entry 201
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 202
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 203
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 204
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 205
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 206
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 207
+    -0x1.800000b8aa3b85b135c2f7de66fb4697p1,
+    0x1.fffffep-4
+  },
+  { // Entry 208
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 209
+    -0x1.7ffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-3
+  },
+  { // Entry 210
+    -0x1.8a898ddcb6efed6595efafc5e077a1cbp-3,
+    0x1.bffffep-1
+  },
+  { // Entry 211
+    -0x1.8a8980abfbd32666a9b7e2df60d2bdc6p-3,
+    0x1.c0p-1
+  },
+  { // Entry 212
+    -0x1.8a89737b40c57286b134031126c9c7edp-3,
+    0x1.c00002p-1
+  },
+  { // Entry 213
+    -0x1.0000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-5
+  },
+  { // Entry 214
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 215
+    -0x1.fffffe8eab8b1e9c4484d017f082846ep1,
+    0x1.000002p-4
+  },
+  { // Entry 216
+    -0x1.7d60620c36d87cfcd8babf751edc0c8bp-4,
+    0x1.dffffep-1
+  },
+  { // Entry 217
+    -0x1.7d60496cfbb4c673b4511f8c2b4e4fb7p-4,
+    0x1.e0p-1
+  },
+  { // Entry 218
+    -0x1.7d6030cdc0ab535cca1fd50552237b1ep-4,
+    0x1.e00002p-1
+  },
+  { // Entry 219
+    -0x1.4000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-6
+  },
+  { // Entry 220
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 221
+    -0x1.3fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-5
+  },
+  { // Entry 222
+    -0x1.77397c4562d9e54641f615a6ca2b27bap-5,
+    0x1.effffep-1
+  },
+  { // Entry 223
+    -0x1.77394c9d958d55de5c380fe0871d757fp-5,
+    0x1.f0p-1
+  },
+  { // Entry 224
+    -0x1.77391cf5c871f7ce6a0d60c3fcc8c0a3p-5,
+    0x1.f00002p-1
+  },
+  { // Entry 225
+    -0x1.8000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-7
+  },
+  { // Entry 226
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 227
+    -0x1.7fffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-6
+  },
+  { // Entry 228
+    -0x1.743f462e4254f5e2be25b8506028d08ap-6,
+    0x1.f7fffep-1
+  },
+  { // Entry 229
+    -0x1.743ee861f3556365483611f7c0bf059fp-6,
+    0x1.f8p-1
+  },
+  { // Entry 230
+    -0x1.743e8a95a4b51a5c74be0d5ae65aab1bp-6,
+    0x1.f80002p-1
+  },
+  { // Entry 231
+    -0x1.c000005c551dc2d89ae17bef337da34bp2,
+    0x1.fffffep-8
+  },
+  { // Entry 232
+    -0x1.c0p2,
+    0x1.p-7
+  },
+  { // Entry 233
+    -0x1.bfffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-7
+  },
+  { // Entry 234
+    -0x1.72c8743f6fa9cfbe1e287ad19aca6d67p-7,
+    0x1.fbfffep-1
+  },
+  { // Entry 235
+    -0x1.72c7ba20f73275b5d184a2c615b70ad4p-7,
+    0x1.fcp-1
+  },
+  { // Entry 236
+    -0x1.72c700027f76b150e530a12360d1566ap-7,
+    0x1.fc0002p-1
+  },
+  { // Entry 237
+    -0x1.0000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-9
+  },
+  { // Entry 238
+    -0x1.p3,
+    0x1.p-8
+  },
+  { // Entry 239
+    -0x1.ffffff4755c58f4e2242680bf8414237p2,
+    0x1.000002p-8
+  },
+  { // Entry 240
+    -0x1.720f0ecde68050a44c9a2eb30002eb02p-8,
+    0x1.fdfffep-1
+  },
+  { // Entry 241
+    -0x1.720d9c06a835ea6ef18f977e5d8a37abp-8,
+    0x1.fep-1
+  },
+  { // Entry 242
+    -0x1.720c293f6b5fbfb29fd6cb29447e6957p-8,
+    0x1.fe0002p-1
+  },
+  { // Entry 243
+    -0x1.2000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-10
+  },
+  { // Entry 244
+    -0x1.20p3,
+    0x1.p-9
+  },
+  { // Entry 245
+    -0x1.1fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-9
+  },
+  { // Entry 246
+    -0x1.71b3ce5de192eae3e822586249ef1031p-9,
+    0x1.fefffep-1
+  },
+  { // Entry 247
+    -0x1.71b0ea42e5fda261dbbd1a498f533398p-9,
+    0x1.ffp-1
+  },
+  { // Entry 248
+    -0x1.71ae0627ed4de7a0d25affc95a315118p-9,
+    0x1.ff0002p-1
+  },
+  { // Entry 249
+    -0x1.4000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-11
+  },
+  { // Entry 250
+    -0x1.40p3,
+    0x1.p-10
+  },
+  { // Entry 251
+    -0x1.3fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-10
+  },
+  { // Entry 252
+    -0x1.71886f5843ade047bd2d072e96484a61p-10,
+    0x1.ff7ffep-1
+  },
+  { // Entry 253
+    -0x1.7182a894b69c595f7920cea1619c6e57p-10,
+    0x1.ff80p-1
+  },
+  { // Entry 254
+    -0x1.717ce1d12f53080ec86587c1ed76029bp-10,
+    0x1.ff8002p-1
+  },
+  { // Entry 255
+    -0x1.a000002e2a8ee16c4d70bdf799bed1a5p3,
+    0x1.fffffep-14
+  },
+  { // Entry 256
+    -0x1.a0p3,
+    0x1.p-13
+  },
+  { // Entry 257
+    -0x1.9fffffa3aae2c7a711213405fc20a11bp3,
+    0x1.000002p-13
+  },
+  { // Entry 258
+    -0x1.718867c39aac5ee37685394fe9bfd749p-13,
+    0x1.ffeffep-1
+  },
+  { // Entry 259
+    -0x1.715a3bc3593d4d4a2a239745f6427420p-13,
+    0x1.fff0p-1
+  },
+  { // Entry 260
+    -0x1.712c0fc345fbad46c2c9f3884df7233ep-13,
+    0x1.fff002p-1
+  },
+  { // Entry 261
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 262
+    0x1.fffffffa3aae23d27651e8410cc825cbp6,
+    0x1.fffffep127
+  },
+  { // Entry 263
+    0x1.fffffff4755c41df9abefafd93420d88p6,
+    0x1.fffffcp127
+  },
+  { // Entry 264
+    0x1.a6c873f5fb93d2711418c769ccf4818ap0,
+    0x1.921fb6p1
+  },
+  { // Entry 265
+    0x1.4d90e7ebf727a4e228318ed399e90315p-1,
+    0x1.921fb6p0
+  },
+  { // Entry 266
+    0x1.715474e163bb7b2fe80f7d7b91f1851cp-23,
+    0x1.000002p0
+  },
+  { // Entry 267
+    0.0,
+    0x1.p0
+  },
+  { // Entry 268
+    -0x1.7154770b626b85efbccdf68d2e9789f9p-24,
+    0x1.fffffep-1
+  },
+  { // Entry 269
+    -0x1.64de302811b0b63baf9ce258cc2df9d5p-2,
+    0x1.921fb6p-1
+  },
+  { // Entry 270
+    -0x1.f7fffff4755c58f4e2242680bf841423p6,
+    0x1.000002p-126
+  },
+  { // Entry 271
+    -0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 272
+    -0x1.f800000b8aa3be20654105026cbdf277p6,
+    0x1.fffffcp-127
+  },
+  { // Entry 273
+    -0x1.f80000171547935612438aa6af6b5495p6,
+    0x1.fffff8p-127
+  },
+  { // Entry 274
+    -0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 275
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 276
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 277
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 278
+    0x1.f4p6,
+    0x1.p125
+  },
+  { // Entry 279
+    -0x1.fcp6,
+    0x1.p-127
+  },
+  { // Entry 280
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 281
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 282
+    -0x1.p0,
+    0x1.p-1
+  }
+};
diff --git a/tests/math_log_intel_data.h b/tests/math_data/log_intel_data.h
similarity index 100%
rename from tests/math_log_intel_data.h
rename to tests/math_data/log_intel_data.h
diff --git a/tests/math_data/logb_intel_data.h b/tests/math_data/logb_intel_data.h
new file mode 100644
index 0000000..4657014
--- /dev/null
+++ b/tests/math_data/logb_intel_data.h
@@ -0,0 +1,898 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_logb_intel_data[] = {
+  { // Entry 0
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 2
+    0x1.90p6,
+    0x1.0p100
+  },
+  { // Entry 3
+    0x1.90p6,
+    0x1.199999999999ap100
+  },
+  { // Entry 4
+    0x1.90p6,
+    0x1.3333333333334p100
+  },
+  { // Entry 5
+    0x1.90p6,
+    0x1.4cccccccccccep100
+  },
+  { // Entry 6
+    0x1.90p6,
+    0x1.6666666666668p100
+  },
+  { // Entry 7
+    0x1.90p6,
+    0x1.8000000000002p100
+  },
+  { // Entry 8
+    0x1.90p6,
+    0x1.999999999999cp100
+  },
+  { // Entry 9
+    0x1.90p6,
+    0x1.b333333333336p100
+  },
+  { // Entry 10
+    0x1.90p6,
+    0x1.cccccccccccd0p100
+  },
+  { // Entry 11
+    0x1.90p6,
+    0x1.e66666666666ap100
+  },
+  { // Entry 12
+    0x1.94p6,
+    0x1.0p101
+  },
+  { // Entry 13
+    0x1.90p7,
+    0x1.0p200
+  },
+  { // Entry 14
+    0x1.90p7,
+    0x1.199999999999ap200
+  },
+  { // Entry 15
+    0x1.90p7,
+    0x1.3333333333334p200
+  },
+  { // Entry 16
+    0x1.90p7,
+    0x1.4cccccccccccep200
+  },
+  { // Entry 17
+    0x1.90p7,
+    0x1.6666666666668p200
+  },
+  { // Entry 18
+    0x1.90p7,
+    0x1.8000000000002p200
+  },
+  { // Entry 19
+    0x1.90p7,
+    0x1.999999999999cp200
+  },
+  { // Entry 20
+    0x1.90p7,
+    0x1.b333333333336p200
+  },
+  { // Entry 21
+    0x1.90p7,
+    0x1.cccccccccccd0p200
+  },
+  { // Entry 22
+    0x1.90p7,
+    0x1.e66666666666ap200
+  },
+  { // Entry 23
+    0x1.92p7,
+    0x1.0p201
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.0p1000
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.199999999999ap1000
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.3333333333334p1000
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.4cccccccccccep1000
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.6666666666668p1000
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.8000000000002p1000
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.999999999999cp1000
+  },
+  { // Entry 31
+    0x1.f4p9,
+    0x1.b333333333336p1000
+  },
+  { // Entry 32
+    0x1.f4p9,
+    0x1.cccccccccccd0p1000
+  },
+  { // Entry 33
+    0x1.f4p9,
+    0x1.e66666666666ap1000
+  },
+  { // Entry 34
+    0x1.f480p9,
+    0x1.0p1001
+  },
+  { // Entry 35
+    0x1.94p6,
+    -0x1.0p101
+  },
+  { // Entry 36
+    0x1.90p6,
+    -0x1.e666666666666p100
+  },
+  { // Entry 37
+    0x1.90p6,
+    -0x1.cccccccccccccp100
+  },
+  { // Entry 38
+    0x1.90p6,
+    -0x1.b333333333332p100
+  },
+  { // Entry 39
+    0x1.90p6,
+    -0x1.9999999999998p100
+  },
+  { // Entry 40
+    0x1.90p6,
+    -0x1.7fffffffffffep100
+  },
+  { // Entry 41
+    0x1.90p6,
+    -0x1.6666666666664p100
+  },
+  { // Entry 42
+    0x1.90p6,
+    -0x1.4cccccccccccap100
+  },
+  { // Entry 43
+    0x1.90p6,
+    -0x1.3333333333330p100
+  },
+  { // Entry 44
+    0x1.90p6,
+    -0x1.1999999999996p100
+  },
+  { // Entry 45
+    0x1.90p6,
+    -0x1.0p100
+  },
+  { // Entry 46
+    0x1.92p7,
+    -0x1.0p201
+  },
+  { // Entry 47
+    0x1.90p7,
+    -0x1.e666666666666p200
+  },
+  { // Entry 48
+    0x1.90p7,
+    -0x1.cccccccccccccp200
+  },
+  { // Entry 49
+    0x1.90p7,
+    -0x1.b333333333332p200
+  },
+  { // Entry 50
+    0x1.90p7,
+    -0x1.9999999999998p200
+  },
+  { // Entry 51
+    0x1.90p7,
+    -0x1.7fffffffffffep200
+  },
+  { // Entry 52
+    0x1.90p7,
+    -0x1.6666666666664p200
+  },
+  { // Entry 53
+    0x1.90p7,
+    -0x1.4cccccccccccap200
+  },
+  { // Entry 54
+    0x1.90p7,
+    -0x1.3333333333330p200
+  },
+  { // Entry 55
+    0x1.90p7,
+    -0x1.1999999999996p200
+  },
+  { // Entry 56
+    0x1.90p7,
+    -0x1.0p200
+  },
+  { // Entry 57
+    0x1.f480p9,
+    -0x1.0p1001
+  },
+  { // Entry 58
+    0x1.f4p9,
+    -0x1.e666666666666p1000
+  },
+  { // Entry 59
+    0x1.f4p9,
+    -0x1.cccccccccccccp1000
+  },
+  { // Entry 60
+    0x1.f4p9,
+    -0x1.b333333333332p1000
+  },
+  { // Entry 61
+    0x1.f4p9,
+    -0x1.9999999999998p1000
+  },
+  { // Entry 62
+    0x1.f4p9,
+    -0x1.7fffffffffffep1000
+  },
+  { // Entry 63
+    0x1.f4p9,
+    -0x1.6666666666664p1000
+  },
+  { // Entry 64
+    0x1.f4p9,
+    -0x1.4cccccccccccap1000
+  },
+  { // Entry 65
+    0x1.f4p9,
+    -0x1.3333333333330p1000
+  },
+  { // Entry 66
+    0x1.f4p9,
+    -0x1.1999999999996p1000
+  },
+  { // Entry 67
+    0x1.f4p9,
+    -0x1.0p1000
+  },
+  { // Entry 68
+    0x1.90p5,
+    0x1.0p50
+  },
+  { // Entry 69
+    0x1.90p5,
+    0x1.199999999999ap50
+  },
+  { // Entry 70
+    0x1.90p5,
+    0x1.3333333333334p50
+  },
+  { // Entry 71
+    0x1.90p5,
+    0x1.4cccccccccccep50
+  },
+  { // Entry 72
+    0x1.90p5,
+    0x1.6666666666668p50
+  },
+  { // Entry 73
+    0x1.90p5,
+    0x1.8000000000002p50
+  },
+  { // Entry 74
+    0x1.90p5,
+    0x1.999999999999cp50
+  },
+  { // Entry 75
+    0x1.90p5,
+    0x1.b333333333336p50
+  },
+  { // Entry 76
+    0x1.90p5,
+    0x1.cccccccccccd0p50
+  },
+  { // Entry 77
+    0x1.90p5,
+    0x1.e66666666666ap50
+  },
+  { // Entry 78
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 79
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 80
+    0x1.98p5,
+    0x1.199999999999ap51
+  },
+  { // Entry 81
+    0x1.98p5,
+    0x1.3333333333334p51
+  },
+  { // Entry 82
+    0x1.98p5,
+    0x1.4cccccccccccep51
+  },
+  { // Entry 83
+    0x1.98p5,
+    0x1.6666666666668p51
+  },
+  { // Entry 84
+    0x1.98p5,
+    0x1.8000000000002p51
+  },
+  { // Entry 85
+    0x1.98p5,
+    0x1.999999999999cp51
+  },
+  { // Entry 86
+    0x1.98p5,
+    0x1.b333333333336p51
+  },
+  { // Entry 87
+    0x1.98p5,
+    0x1.cccccccccccd0p51
+  },
+  { // Entry 88
+    0x1.98p5,
+    0x1.e66666666666ap51
+  },
+  { // Entry 89
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 90
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 91
+    0x1.a0p5,
+    0x1.199999999999ap52
+  },
+  { // Entry 92
+    0x1.a0p5,
+    0x1.3333333333334p52
+  },
+  { // Entry 93
+    0x1.a0p5,
+    0x1.4cccccccccccep52
+  },
+  { // Entry 94
+    0x1.a0p5,
+    0x1.6666666666668p52
+  },
+  { // Entry 95
+    0x1.a0p5,
+    0x1.8000000000002p52
+  },
+  { // Entry 96
+    0x1.a0p5,
+    0x1.999999999999cp52
+  },
+  { // Entry 97
+    0x1.a0p5,
+    0x1.b333333333336p52
+  },
+  { // Entry 98
+    0x1.a0p5,
+    0x1.cccccccccccd0p52
+  },
+  { // Entry 99
+    0x1.a0p5,
+    0x1.e66666666666ap52
+  },
+  { // Entry 100
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 101
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 102
+    0x1.a8p5,
+    0x1.199999999999ap53
+  },
+  { // Entry 103
+    0x1.a8p5,
+    0x1.3333333333334p53
+  },
+  { // Entry 104
+    0x1.a8p5,
+    0x1.4cccccccccccep53
+  },
+  { // Entry 105
+    0x1.a8p5,
+    0x1.6666666666668p53
+  },
+  { // Entry 106
+    0x1.a8p5,
+    0x1.8000000000002p53
+  },
+  { // Entry 107
+    0x1.a8p5,
+    0x1.999999999999cp53
+  },
+  { // Entry 108
+    0x1.a8p5,
+    0x1.b333333333336p53
+  },
+  { // Entry 109
+    0x1.a8p5,
+    0x1.cccccccccccd0p53
+  },
+  { // Entry 110
+    0x1.a8p5,
+    0x1.e66666666666ap53
+  },
+  { // Entry 111
+    0x1.b0p5,
+    0x1.0p54
+  },
+  { // Entry 112
+    -0x1.0080p10,
+    0x1.0p-1026
+  },
+  { // Entry 113
+    -0x1.p10,
+    0x1.d333333333334p-1024
+  },
+  { // Entry 114
+    -0x1.ff80p9,
+    0x1.b333333333334p-1023
+  },
+  { // Entry 115
+    -0x1.ffp9,
+    0x1.3e66666666667p-1022
+  },
+  { // Entry 116
+    -0x1.ffp9,
+    0x1.a333333333334p-1022
+  },
+  { // Entry 117
+    -0x1.fe80p9,
+    0x1.040p-1021
+  },
+  { // Entry 118
+    -0x1.fe80p9,
+    0x1.3666666666666p-1021
+  },
+  { // Entry 119
+    -0x1.fe80p9,
+    0x1.68cccccccccccp-1021
+  },
+  { // Entry 120
+    -0x1.fe80p9,
+    0x1.9b33333333332p-1021
+  },
+  { // Entry 121
+    -0x1.fe80p9,
+    0x1.cd99999999998p-1021
+  },
+  { // Entry 122
+    -0x1.fe80p9,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 123
+    0x1.90p5,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 124
+    0x1.98p5,
+    0x1.0p51
+  },
+  { // Entry 125
+    0x1.98p5,
+    0x1.0000000000001p51
+  },
+  { // Entry 126
+    0x1.98p5,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 127
+    0x1.a0p5,
+    0x1.0p52
+  },
+  { // Entry 128
+    0x1.a0p5,
+    0x1.0000000000001p52
+  },
+  { // Entry 129
+    0x1.a0p5,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 130
+    0x1.a8p5,
+    0x1.0p53
+  },
+  { // Entry 131
+    0x1.a8p5,
+    0x1.0000000000001p53
+  },
+  { // Entry 132
+    0x1.98p5,
+    -0x1.0000000000001p51
+  },
+  { // Entry 133
+    0x1.98p5,
+    -0x1.0p51
+  },
+  { // Entry 134
+    0x1.90p5,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 135
+    0x1.a0p5,
+    -0x1.0000000000001p52
+  },
+  { // Entry 136
+    0x1.a0p5,
+    -0x1.0p52
+  },
+  { // Entry 137
+    0x1.98p5,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 138
+    0x1.a8p5,
+    -0x1.0000000000001p53
+  },
+  { // Entry 139
+    0x1.a8p5,
+    -0x1.0p53
+  },
+  { // Entry 140
+    0x1.a0p5,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 141
+    0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 142
+    0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 143
+    -0x1.c0p2,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 144
+    -0x1.80p2,
+    0x1.0p-6
+  },
+  { // Entry 145
+    -0x1.80p2,
+    0x1.0000000000001p-6
+  },
+  { // Entry 146
+    -0x1.80p2,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 147
+    -0x1.40p2,
+    0x1.0p-5
+  },
+  { // Entry 148
+    -0x1.40p2,
+    0x1.0000000000001p-5
+  },
+  { // Entry 149
+    -0x1.40p2,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 150
+    -0x1.p2,
+    0x1.0p-4
+  },
+  { // Entry 151
+    -0x1.p2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 152
+    -0x1.p2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 153
+    -0x1.80p1,
+    0x1.0p-3
+  },
+  { // Entry 154
+    -0x1.80p1,
+    0x1.0000000000001p-3
+  },
+  { // Entry 155
+    -0x1.80p1,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 156
+    -0x1.p1,
+    0x1.0p-2
+  },
+  { // Entry 157
+    -0x1.p1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 158
+    -0x1.p1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 159
+    -0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 160
+    -0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 161
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 162
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 163
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 164
+    -0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 165
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 166
+    0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 167
+    0.0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 168
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 169
+    0x1.p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 170
+    0x1.p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 171
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 172
+    0x1.p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 173
+    0x1.p1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 174
+    0x1.80p1,
+    0x1.0p3
+  },
+  { // Entry 175
+    0x1.80p1,
+    0x1.0000000000001p3
+  },
+  { // Entry 176
+    0x1.80p1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 177
+    0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 178
+    0x1.p2,
+    0x1.0000000000001p4
+  },
+  { // Entry 179
+    0x1.p2,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 180
+    0x1.40p2,
+    0x1.0p5
+  },
+  { // Entry 181
+    0x1.40p2,
+    0x1.0000000000001p5
+  },
+  { // Entry 182
+    0x1.40p2,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 183
+    0x1.80p2,
+    0x1.0p6
+  },
+  { // Entry 184
+    0x1.80p2,
+    0x1.0000000000001p6
+  },
+  { // Entry 185
+    0x1.80p2,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 186
+    0x1.c0p2,
+    0x1.0p7
+  },
+  { // Entry 187
+    0x1.c0p2,
+    0x1.0000000000001p7
+  },
+  { // Entry 188
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 189
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 190
+    0x1.ff80p9,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    0x1.ff80p9,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ff80p9,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    0x1.ff80p9,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 194
+    0x1.p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 195
+    0x1.p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 196
+    0.0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 197
+    0.0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 198
+    0.0,
+    0x1.0000000000001p0
+  },
+  { // Entry 199
+    0.0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 200
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 201
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 202
+    -0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 203
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 204
+    -0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 205
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 206
+    -0x1.ffp9,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 207
+    -0x1.ffp9,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 208
+    -0x1.ffp9,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0x1.ffp9,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    -0x1.ff80p9,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 211
+    -0x1.ff80p9,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 212
+    -0x1.ff80p9,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 213
+    -0x1.ff80p9,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 214
+    -0x1.0c40p10,
+    0x1.0p-1073
+  },
+  { // Entry 215
+    -0x1.0c40p10,
+    -0x1.0p-1073
+  },
+  { // Entry 216
+    -0x1.0c80p10,
+    0x1.0p-1074
+  },
+  { // Entry 217
+    -0x1.0c80p10,
+    -0x1.0p-1074
+  },
+  { // Entry 218
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 219
+    -HUGE_VAL,
+    -0.0
+  }
+};
diff --git a/tests/math_data/logbf_intel_data.h b/tests/math_data/logbf_intel_data.h
new file mode 100644
index 0000000..1ad3c03
--- /dev/null
+++ b/tests/math_data/logbf_intel_data.h
@@ -0,0 +1,714 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_logbf_intel_data[] = {
+  { // Entry 0
+    0x1.90p6,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.90p6,
+    0x1.19999ap100
+  },
+  { // Entry 2
+    0x1.90p6,
+    0x1.333334p100
+  },
+  { // Entry 3
+    0x1.90p6,
+    0x1.4ccccep100
+  },
+  { // Entry 4
+    0x1.90p6,
+    0x1.666668p100
+  },
+  { // Entry 5
+    0x1.90p6,
+    0x1.800002p100
+  },
+  { // Entry 6
+    0x1.90p6,
+    0x1.99999cp100
+  },
+  { // Entry 7
+    0x1.90p6,
+    0x1.b33336p100
+  },
+  { // Entry 8
+    0x1.90p6,
+    0x1.ccccd0p100
+  },
+  { // Entry 9
+    0x1.90p6,
+    0x1.e6666ap100
+  },
+  { // Entry 10
+    0x1.94p6,
+    0x1.p101
+  },
+  { // Entry 11
+    0x1.94p6,
+    -0x1.p101
+  },
+  { // Entry 12
+    0x1.90p6,
+    -0x1.e66666p100
+  },
+  { // Entry 13
+    0x1.90p6,
+    -0x1.ccccccp100
+  },
+  { // Entry 14
+    0x1.90p6,
+    -0x1.b33332p100
+  },
+  { // Entry 15
+    0x1.90p6,
+    -0x1.999998p100
+  },
+  { // Entry 16
+    0x1.90p6,
+    -0x1.7ffffep100
+  },
+  { // Entry 17
+    0x1.90p6,
+    -0x1.666664p100
+  },
+  { // Entry 18
+    0x1.90p6,
+    -0x1.4ccccap100
+  },
+  { // Entry 19
+    0x1.90p6,
+    -0x1.333330p100
+  },
+  { // Entry 20
+    0x1.90p6,
+    -0x1.199996p100
+  },
+  { // Entry 21
+    0x1.90p6,
+    -0x1.p100
+  },
+  { // Entry 22
+    0x1.50p4,
+    0x1.p21
+  },
+  { // Entry 23
+    0x1.50p4,
+    0x1.19999ap21
+  },
+  { // Entry 24
+    0x1.50p4,
+    0x1.333334p21
+  },
+  { // Entry 25
+    0x1.50p4,
+    0x1.4ccccep21
+  },
+  { // Entry 26
+    0x1.50p4,
+    0x1.666668p21
+  },
+  { // Entry 27
+    0x1.50p4,
+    0x1.800002p21
+  },
+  { // Entry 28
+    0x1.50p4,
+    0x1.99999cp21
+  },
+  { // Entry 29
+    0x1.50p4,
+    0x1.b33336p21
+  },
+  { // Entry 30
+    0x1.50p4,
+    0x1.ccccd0p21
+  },
+  { // Entry 31
+    0x1.50p4,
+    0x1.e6666ap21
+  },
+  { // Entry 32
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 33
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 34
+    0x1.60p4,
+    0x1.19999ap22
+  },
+  { // Entry 35
+    0x1.60p4,
+    0x1.333334p22
+  },
+  { // Entry 36
+    0x1.60p4,
+    0x1.4ccccep22
+  },
+  { // Entry 37
+    0x1.60p4,
+    0x1.666668p22
+  },
+  { // Entry 38
+    0x1.60p4,
+    0x1.800002p22
+  },
+  { // Entry 39
+    0x1.60p4,
+    0x1.99999cp22
+  },
+  { // Entry 40
+    0x1.60p4,
+    0x1.b33336p22
+  },
+  { // Entry 41
+    0x1.60p4,
+    0x1.ccccd0p22
+  },
+  { // Entry 42
+    0x1.60p4,
+    0x1.e6666ap22
+  },
+  { // Entry 43
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 44
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 45
+    0x1.70p4,
+    0x1.19999ap23
+  },
+  { // Entry 46
+    0x1.70p4,
+    0x1.333334p23
+  },
+  { // Entry 47
+    0x1.70p4,
+    0x1.4ccccep23
+  },
+  { // Entry 48
+    0x1.70p4,
+    0x1.666668p23
+  },
+  { // Entry 49
+    0x1.70p4,
+    0x1.800002p23
+  },
+  { // Entry 50
+    0x1.70p4,
+    0x1.99999cp23
+  },
+  { // Entry 51
+    0x1.70p4,
+    0x1.b33336p23
+  },
+  { // Entry 52
+    0x1.70p4,
+    0x1.ccccd0p23
+  },
+  { // Entry 53
+    0x1.70p4,
+    0x1.e6666ap23
+  },
+  { // Entry 54
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 55
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 56
+    0x1.80p4,
+    0x1.19999ap24
+  },
+  { // Entry 57
+    0x1.80p4,
+    0x1.333334p24
+  },
+  { // Entry 58
+    0x1.80p4,
+    0x1.4ccccep24
+  },
+  { // Entry 59
+    0x1.80p4,
+    0x1.666668p24
+  },
+  { // Entry 60
+    0x1.80p4,
+    0x1.800002p24
+  },
+  { // Entry 61
+    0x1.80p4,
+    0x1.99999cp24
+  },
+  { // Entry 62
+    0x1.80p4,
+    0x1.b33336p24
+  },
+  { // Entry 63
+    0x1.80p4,
+    0x1.ccccd0p24
+  },
+  { // Entry 64
+    0x1.80p4,
+    0x1.e6666ap24
+  },
+  { // Entry 65
+    0x1.90p4,
+    0x1.p25
+  },
+  { // Entry 66
+    -0x1.04p7,
+    0x1.p-130
+  },
+  { // Entry 67
+    -0x1.p7,
+    0x1.d33330p-128
+  },
+  { // Entry 68
+    -0x1.fcp6,
+    0x1.b33330p-127
+  },
+  { // Entry 69
+    -0x1.f8p6,
+    0x1.3e6664p-126
+  },
+  { // Entry 70
+    -0x1.f8p6,
+    0x1.a33330p-126
+  },
+  { // Entry 71
+    -0x1.f4p6,
+    0x1.03fffep-125
+  },
+  { // Entry 72
+    -0x1.f4p6,
+    0x1.366664p-125
+  },
+  { // Entry 73
+    -0x1.f4p6,
+    0x1.68cccap-125
+  },
+  { // Entry 74
+    -0x1.f4p6,
+    0x1.9b3330p-125
+  },
+  { // Entry 75
+    -0x1.f4p6,
+    0x1.cd9996p-125
+  },
+  { // Entry 76
+    -0x1.f4p6,
+    0x1.fffffcp-125
+  },
+  { // Entry 77
+    0x1.50p4,
+    0x1.fffffep21
+  },
+  { // Entry 78
+    0x1.60p4,
+    0x1.p22
+  },
+  { // Entry 79
+    0x1.60p4,
+    0x1.000002p22
+  },
+  { // Entry 80
+    0x1.60p4,
+    0x1.fffffep22
+  },
+  { // Entry 81
+    0x1.70p4,
+    0x1.p23
+  },
+  { // Entry 82
+    0x1.70p4,
+    0x1.000002p23
+  },
+  { // Entry 83
+    0x1.70p4,
+    0x1.fffffep23
+  },
+  { // Entry 84
+    0x1.80p4,
+    0x1.p24
+  },
+  { // Entry 85
+    0x1.80p4,
+    0x1.000002p24
+  },
+  { // Entry 86
+    0x1.60p4,
+    -0x1.000002p22
+  },
+  { // Entry 87
+    0x1.60p4,
+    -0x1.p22
+  },
+  { // Entry 88
+    0x1.50p4,
+    -0x1.fffffep21
+  },
+  { // Entry 89
+    0x1.70p4,
+    -0x1.000002p23
+  },
+  { // Entry 90
+    0x1.70p4,
+    -0x1.p23
+  },
+  { // Entry 91
+    0x1.60p4,
+    -0x1.fffffep22
+  },
+  { // Entry 92
+    0x1.80p4,
+    -0x1.000002p24
+  },
+  { // Entry 93
+    0x1.80p4,
+    -0x1.p24
+  },
+  { // Entry 94
+    0x1.70p4,
+    -0x1.fffffep23
+  },
+  { // Entry 95
+    0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 96
+    0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 97
+    -0x1.c0p2,
+    0x1.fffffep-7
+  },
+  { // Entry 98
+    -0x1.80p2,
+    0x1.p-6
+  },
+  { // Entry 99
+    -0x1.80p2,
+    0x1.000002p-6
+  },
+  { // Entry 100
+    -0x1.80p2,
+    0x1.fffffep-6
+  },
+  { // Entry 101
+    -0x1.40p2,
+    0x1.p-5
+  },
+  { // Entry 102
+    -0x1.40p2,
+    0x1.000002p-5
+  },
+  { // Entry 103
+    -0x1.40p2,
+    0x1.fffffep-5
+  },
+  { // Entry 104
+    -0x1.p2,
+    0x1.p-4
+  },
+  { // Entry 105
+    -0x1.p2,
+    0x1.000002p-4
+  },
+  { // Entry 106
+    -0x1.p2,
+    0x1.fffffep-4
+  },
+  { // Entry 107
+    -0x1.80p1,
+    0x1.p-3
+  },
+  { // Entry 108
+    -0x1.80p1,
+    0x1.000002p-3
+  },
+  { // Entry 109
+    -0x1.80p1,
+    0x1.fffffep-3
+  },
+  { // Entry 110
+    -0x1.p1,
+    0x1.p-2
+  },
+  { // Entry 111
+    -0x1.p1,
+    0x1.000002p-2
+  },
+  { // Entry 112
+    -0x1.p1,
+    0x1.fffffep-2
+  },
+  { // Entry 113
+    -0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 114
+    -0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 115
+    -0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -HUGE_VALF,
+    0.0
+  },
+  { // Entry 117
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 118
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 119
+    0.0,
+    0x1.p0
+  },
+  { // Entry 120
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffep0
+  },
+  { // Entry 122
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.000002p1
+  },
+  { // Entry 124
+    0x1.p0,
+    0x1.fffffep1
+  },
+  { // Entry 125
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 126
+    0x1.p1,
+    0x1.000002p2
+  },
+  { // Entry 127
+    0x1.p1,
+    0x1.fffffep2
+  },
+  { // Entry 128
+    0x1.80p1,
+    0x1.p3
+  },
+  { // Entry 129
+    0x1.80p1,
+    0x1.000002p3
+  },
+  { // Entry 130
+    0x1.80p1,
+    0x1.fffffep3
+  },
+  { // Entry 131
+    0x1.p2,
+    0x1.p4
+  },
+  { // Entry 132
+    0x1.p2,
+    0x1.000002p4
+  },
+  { // Entry 133
+    0x1.p2,
+    0x1.fffffep4
+  },
+  { // Entry 134
+    0x1.40p2,
+    0x1.p5
+  },
+  { // Entry 135
+    0x1.40p2,
+    0x1.000002p5
+  },
+  { // Entry 136
+    0x1.40p2,
+    0x1.fffffep5
+  },
+  { // Entry 137
+    0x1.80p2,
+    0x1.p6
+  },
+  { // Entry 138
+    0x1.80p2,
+    0x1.000002p6
+  },
+  { // Entry 139
+    0x1.80p2,
+    0x1.fffffep6
+  },
+  { // Entry 140
+    0x1.c0p2,
+    0x1.p7
+  },
+  { // Entry 141
+    0x1.c0p2,
+    0x1.000002p7
+  },
+  { // Entry 142
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 143
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 144
+    0x1.fcp6,
+    0x1.fffffep127
+  },
+  { // Entry 145
+    0x1.fcp6,
+    -0x1.fffffep127
+  },
+  { // Entry 146
+    0x1.fcp6,
+    0x1.fffffcp127
+  },
+  { // Entry 147
+    0x1.fcp6,
+    -0x1.fffffcp127
+  },
+  { // Entry 148
+    0x1.p0,
+    0x1.921fb6p1
+  },
+  { // Entry 149
+    0x1.p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 150
+    0.0,
+    0x1.921fb6p0
+  },
+  { // Entry 151
+    0.0,
+    -0x1.921fb6p0
+  },
+  { // Entry 152
+    0.0,
+    0x1.000002p0
+  },
+  { // Entry 153
+    0.0,
+    -0x1.000002p0
+  },
+  { // Entry 154
+    0.0,
+    0x1.p0
+  },
+  { // Entry 155
+    0.0,
+    -0x1.p0
+  },
+  { // Entry 156
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 158
+    -0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 159
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 160
+    -0x1.f8p6,
+    0x1.000002p-126
+  },
+  { // Entry 161
+    -0x1.f8p6,
+    -0x1.000002p-126
+  },
+  { // Entry 162
+    -0x1.f8p6,
+    0x1.p-126
+  },
+  { // Entry 163
+    -0x1.f8p6,
+    -0x1.p-126
+  },
+  { // Entry 164
+    -0x1.fcp6,
+    0x1.fffffcp-127
+  },
+  { // Entry 165
+    -0x1.fcp6,
+    -0x1.fffffcp-127
+  },
+  { // Entry 166
+    -0x1.fcp6,
+    0x1.fffff8p-127
+  },
+  { // Entry 167
+    -0x1.fcp6,
+    -0x1.fffff8p-127
+  },
+  { // Entry 168
+    -0x1.28p7,
+    0x1.p-148
+  },
+  { // Entry 169
+    -0x1.28p7,
+    -0x1.p-148
+  },
+  { // Entry 170
+    -0x1.2ap7,
+    0x1.p-149
+  },
+  { // Entry 171
+    -0x1.2ap7,
+    -0x1.p-149
+  },
+  { // Entry 172
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 173
+    -HUGE_VALF,
+    -0.0f
+  }
+};
diff --git a/tests/math_logf_intel_data.h b/tests/math_data/logf_intel_data.h
similarity index 100%
rename from tests/math_logf_intel_data.h
rename to tests/math_data/logf_intel_data.h
diff --git a/tests/math_data/modf_intel_data.h b/tests/math_data/modf_intel_data.h
new file mode 100644
index 0000000..9af7e1b
--- /dev/null
+++ b/tests/math_data/modf_intel_data.h
@@ -0,0 +1,1858 @@
+/*
+ * 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.
+ */
+
+static data_2_1_t<double, double, double> g_modf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0x1.fffffffffffff0p-2,
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0x1.p-1,
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.00000000000010p-1,
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.fffffffffffff0p-1,
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0.0,
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p-52,
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.ffffffffffffc0p-2,
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p-1,
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.00000000000020p-1,
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.ffffffffffffe0p-1,
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0.0,
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p-51,
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.ffffffffffff80p-2,
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p-1,
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.00000000000040p-1,
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.fffffffffff8p-1,
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0.0,
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.p-46,
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.fffffffffff0p-2,
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.p-1,
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.000000000008p-1,
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.ffffffffffc0p-1,
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0.0,
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.p-43,
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.ffffffffff80p-2,
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.p-1,
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.000000000040p-1,
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.c0p-1,
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0.0,
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p-2,
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.80p-1,
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0.0,
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p-1,
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0.0,
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0.0,
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0.0,
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0.0,
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0.0,
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0.0,
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0.0,
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0.0,
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0.0,
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.00000000000010p-1,
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0x1.p-1,
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0x1.fffffffffffff0p-2,
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p-52,
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0.0,
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.fffffffffffff0p-1,
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.00000000000020p-1,
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.ffffffffffffc0p-2,
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p-51,
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0.0,
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.ffffffffffffe0p-1,
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.00000000000040p-1,
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p-1,
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.ffffffffffff80p-2,
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.p-46,
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0.0,
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.fffffffffff8p-1,
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.000000000008p-1,
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.p-1,
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.fffffffffff0p-2,
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.p-43,
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0.0,
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.ffffffffffc0p-1,
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.000000000040p-1,
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.p-1,
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.ffffffffff80p-2,
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p-2,
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.c0p-1,
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p-1,
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.80p-1,
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p-1,
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffcp-1,
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0.0,
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p-22,
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.ffffe8p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffdp30
+  },
+  { // Entry 93
+    0x1.fffff0p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 94
+    0x1.fffff8p-1,
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 95
+    0.0,
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 96
+    0x1.p-22,
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 97
+    0x1.p-21,
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 98
+    0x1.80p-21,
+    0x1.fffffff8p30,
+    0x1.fffffff800003p30
+  },
+  { // Entry 99
+    0x1.ffffd0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffdp30
+  },
+  { // Entry 100
+    0x1.ffffe0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 101
+    0x1.fffff0p-2,
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 102
+    0x1.p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 103
+    0x1.000008p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 104
+    0x1.000010p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 105
+    0x1.000018p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffa00003p30
+  },
+  { // Entry 106
+    0x1.ffffe8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbffffdp30
+  },
+  { // Entry 107
+    0x1.fffff0p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 108
+    0x1.fffff8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 109
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 110
+    0x1.p-22,
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 111
+    0x1.p-21,
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 112
+    0x1.80p-21,
+    0x1.fffffffcp30,
+    0x1.fffffffc00003p30
+  },
+  { // Entry 113
+    0x1.ffffd0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdffffdp30
+  },
+  { // Entry 114
+    0x1.ffffe0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 115
+    0x1.fffff0p-2,
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 116
+    0x1.p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 117
+    0x1.000008p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 118
+    0x1.000010p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 119
+    0x1.000018p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffe00003p30
+  },
+  { // Entry 120
+    0x1.ffffe8p-1,
+    0x1.fffffffcp30,
+    0x1.ffffffffffffdp30
+  },
+  { // Entry 121
+    0x1.fffff0p-1,
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 122
+    0x1.fffff8p-1,
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 123
+    0.0,
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 124
+    0x1.p-21,
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 125
+    0x1.p-20,
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 126
+    0x1.80p-20,
+    0x1.p31,
+    0x1.0000000000003p31
+  },
+  { // Entry 127
+    0x1.ffffa0p-2,
+    0x1.p31,
+    0x1.00000000ffffdp31
+  },
+  { // Entry 128
+    0x1.ffffc0p-2,
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 129
+    0x1.ffffe0p-2,
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 130
+    0x1.p-1,
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 131
+    0x1.000010p-1,
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 132
+    0x1.000020p-1,
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 133
+    0x1.000030p-1,
+    0x1.p31,
+    0x1.0000000100003p31
+  },
+  { // Entry 134
+    0.0,
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 135
+    0.0,
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 136
+    0.0,
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 137
+    0.0,
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 138
+    0.0,
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 139
+    0.0,
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 140
+    0.0,
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 142
+    0.0,
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 143
+    0.0,
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 144
+    -0x1.p-22,
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 145
+    -0.0,
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 146
+    -0x1.fffffcp-1,
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 147
+    -0x1.80p-21,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800003p30
+  },
+  { // Entry 148
+    -0x1.p-21,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 149
+    -0x1.p-22,
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 151
+    -0x1.fffff8p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 152
+    -0x1.fffff0p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 153
+    -0x1.ffffe8p-1,
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffdp30
+  },
+  { // Entry 154
+    -0x1.000018p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00003p30
+  },
+  { // Entry 155
+    -0x1.000010p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 156
+    -0x1.000008p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 157
+    -0x1.p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 158
+    -0x1.fffff0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 159
+    -0x1.ffffe0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 160
+    -0x1.ffffd0p-2,
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffdp30
+  },
+  { // Entry 161
+    -0x1.80p-21,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00003p30
+  },
+  { // Entry 162
+    -0x1.p-21,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 163
+    -0x1.p-22,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 164
+    -0.0,
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 165
+    -0x1.fffff8p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 166
+    -0x1.fffff0p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 167
+    -0x1.ffffe8p-1,
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffdp30
+  },
+  { // Entry 168
+    -0x1.000018p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00003p30
+  },
+  { // Entry 169
+    -0x1.000010p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 170
+    -0x1.000008p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 171
+    -0x1.p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 172
+    -0x1.fffff0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 173
+    -0x1.ffffe0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 174
+    -0x1.ffffd0p-2,
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffdp30
+  },
+  { // Entry 175
+    -0x1.80p-20,
+    -0x1.p31,
+    -0x1.0000000000003p31
+  },
+  { // Entry 176
+    -0x1.p-20,
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 177
+    -0x1.p-21,
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 179
+    -0x1.fffff8p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 180
+    -0x1.fffff0p-1,
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 181
+    -0x1.ffffe8p-1,
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffdp30
+  },
+  { // Entry 182
+    -0x1.000030p-1,
+    -0x1.p31,
+    -0x1.0000000100003p31
+  },
+  { // Entry 183
+    -0x1.000020p-1,
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 184
+    -0x1.000010p-1,
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 185
+    -0x1.p-1,
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 186
+    -0x1.ffffe0p-2,
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 187
+    -0x1.ffffc0p-2,
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 188
+    -0x1.ffffa0p-2,
+    -0x1.p31,
+    -0x1.00000000ffffdp31
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 192
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 193
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 194
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 195
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 196
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 197
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 198
+    -0.0,
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 199
+    0.0,
+    0x1.ffffffffffffd0p61,
+    0x1.ffffffffffffdp61
+  },
+  { // Entry 200
+    0.0,
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 202
+    0.0,
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 203
+    0.0,
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 204
+    0.0,
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 205
+    0.0,
+    0x1.00000000000030p62,
+    0x1.0000000000003p62
+  },
+  { // Entry 206
+    0.0,
+    0x1.ffffffffffffd0p62,
+    0x1.ffffffffffffdp62
+  },
+  { // Entry 207
+    0.0,
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 209
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 210
+    0.0,
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 211
+    0.0,
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 212
+    0.0,
+    0x1.00000000000030p63,
+    0x1.0000000000003p63
+  },
+  { // Entry 213
+    0.0,
+    0x1.ffffffffffffd0p63,
+    0x1.ffffffffffffdp63
+  },
+  { // Entry 214
+    0.0,
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 215
+    0.0,
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 216
+    0.0,
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 217
+    0.0,
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 218
+    0.0,
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 219
+    0.0,
+    0x1.00000000000030p64,
+    0x1.0000000000003p64
+  },
+  { // Entry 220
+    -0.0,
+    -0x1.00000000000030p62,
+    -0x1.0000000000003p62
+  },
+  { // Entry 221
+    -0.0,
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 222
+    -0.0,
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 223
+    -0.0,
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 224
+    -0.0,
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.ffffffffffffd0p61,
+    -0x1.ffffffffffffdp61
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.00000000000030p63,
+    -0x1.0000000000003p63
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.ffffffffffffd0p62,
+    -0x1.ffffffffffffdp62
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.00000000000030p64,
+    -0x1.0000000000003p64
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 236
+    -0.0,
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 237
+    -0.0,
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 238
+    -0.0,
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.ffffffffffffd0p63,
+    -0x1.ffffffffffffdp63
+  },
+  { // Entry 241
+    0.0,
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 242
+    0.0,
+    0x1.40p62,
+    0x1.4p62
+  },
+  { // Entry 243
+    0.0,
+    0x1.80p62,
+    0x1.8p62
+  },
+  { // Entry 244
+    0.0,
+    0x1.c0p62,
+    0x1.cp62
+  },
+  { // Entry 245
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 246
+    0.0,
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 247
+    0.0,
+    0x1.40p63,
+    0x1.4p63
+  },
+  { // Entry 248
+    0.0,
+    0x1.80p63,
+    0x1.8p63
+  },
+  { // Entry 249
+    0.0,
+    0x1.c0p63,
+    0x1.cp63
+  },
+  { // Entry 250
+    0.0,
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 252
+    -0.0,
+    -0x1.40p62,
+    -0x1.4p62
+  },
+  { // Entry 253
+    -0.0,
+    -0x1.80p62,
+    -0x1.8p62
+  },
+  { // Entry 254
+    -0.0,
+    -0x1.c0p62,
+    -0x1.cp62
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 257
+    -0.0,
+    -0x1.40p63,
+    -0x1.4p63
+  },
+  { // Entry 258
+    -0.0,
+    -0x1.80p63,
+    -0x1.8p63
+  },
+  { // Entry 259
+    -0.0,
+    -0x1.c0p63,
+    -0x1.cp63
+  },
+  { // Entry 260
+    -0.0,
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 261
+    0x1.fffff8p-1,
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 262
+    0.0,
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 263
+    0x1.p-22,
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 264
+    -0x1.p-21,
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 265
+    -0.0,
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 266
+    -0x1.fffff8p-1,
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 267
+    0x1.ffffffffffffc0p-1,
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 268
+    0.0,
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 269
+    0x1.p-50,
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 270
+    0x1.ffffffffffff80p-1,
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 271
+    0.0,
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 272
+    0x1.p-49,
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 273
+    0x1.ffffffffffffp-1,
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 274
+    0.0,
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 275
+    0x1.p-48,
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 276
+    0x1.fffffffffffep-1,
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 277
+    0.0,
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 278
+    0x1.p-47,
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 279
+    0x1.fffffffffffcp-1,
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 280
+    0.0,
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 281
+    0x1.p-46,
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 282
+    0x1.fffffffffff8p-1,
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 283
+    0.0,
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 284
+    0x1.p-45,
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 285
+    0x1.fffffffffff0p-1,
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 286
+    0.0,
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 287
+    0x1.p-44,
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 288
+    0x1.ffffffffffe0p-1,
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 289
+    0.0,
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 290
+    0x1.p-43,
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 291
+    0x1.ffffffffffc0p-1,
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 292
+    0.0,
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 293
+    0x1.p-42,
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 294
+    0x1.ffffffffff80p-1,
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 295
+    0.0,
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 296
+    0x1.p-41,
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 297
+    0x1.ffffffffffp-1,
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 298
+    0.0,
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 299
+    0x1.p-40,
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 300
+    0x1.ffffffffffffp-2,
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 301
+    0x1.p-1,
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 302
+    0x1.00000000000080p-1,
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 303
+    0x1.fffffffffffep-2,
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 304
+    0x1.p-1,
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 305
+    0x1.000000000001p-1,
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 306
+    0x1.fffffffffffcp-2,
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 307
+    0x1.p-1,
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 308
+    0x1.000000000002p-1,
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 309
+    0x1.fffffffffff8p-2,
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 310
+    0x1.p-1,
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 311
+    0x1.000000000004p-1,
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 312
+    0x1.fffffffffff0p-2,
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 313
+    0x1.p-1,
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 314
+    0x1.000000000008p-1,
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 315
+    0x1.ffffffffffe0p-2,
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 316
+    0x1.p-1,
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 317
+    0x1.000000000010p-1,
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 318
+    0x1.ffffffffffc0p-2,
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 319
+    0x1.p-1,
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 320
+    0x1.000000000020p-1,
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 321
+    0x1.ffffffffff80p-2,
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 322
+    0x1.p-1,
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 323
+    0x1.000000000040p-1,
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 324
+    0x1.ffffffffffp-2,
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 325
+    0x1.p-1,
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 326
+    0x1.000000000080p-1,
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 327
+    0x1.ffffffffffp-2,
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 328
+    0x1.p-1,
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 329
+    0x1.000000000080p-1,
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 330
+    0x1.fffffffffep-2,
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 331
+    0x1.p-1,
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 332
+    0x1.0000000001p-1,
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 333
+    0x1.fffffffffcp-2,
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 334
+    0x1.p-1,
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 335
+    0x1.0000000002p-1,
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 336
+    0.0,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 337
+    -0.0,
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 338
+    0.0,
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 339
+    -0.0,
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 340
+    0.0,
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 341
+    -0.0,
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 342
+    0x1.21fb54442d18p-3,
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 343
+    -0x1.21fb54442d18p-3,
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 344
+    0x1.243f6a8885a3p-1,
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 345
+    -0x1.243f6a8885a3p-1,
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 346
+    0x1.p-52,
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 347
+    -0x1.p-52,
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 348
+    0.0,
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 349
+    -0.0,
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 350
+    0x1.fffffffffffff0p-1,
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 351
+    -0x1.fffffffffffff0p-1,
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 352
+    0x1.921fb54442d180p-1,
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 353
+    -0x1.921fb54442d180p-1,
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 354
+    0x1.00000000000010p-1022,
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 355
+    -0x1.00000000000010p-1022,
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 356
+    0x1.p-1022,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 357
+    -0x1.p-1022,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 358
+    0x1.ffffffffffffe0p-1023,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 359
+    -0x1.ffffffffffffe0p-1023,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 360
+    0x1.ffffffffffffc0p-1023,
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 361
+    -0x1.ffffffffffffc0p-1023,
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 362
+    0x1.p-1073,
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 363
+    -0x1.p-1073,
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 364
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 365
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 366
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 367
+    -0.0,
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/modff_intel_data.h b/tests/math_data/modff_intel_data.h
new file mode 100644
index 0000000..f28f5c9
--- /dev/null
+++ b/tests/math_data/modff_intel_data.h
@@ -0,0 +1,1858 @@
+/*
+ * 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.
+ */
+
+static data_2_1_t<float, float, float> g_modff_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0x1.fffffep-2,
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p-1,
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.000002p-1,
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.fffffep-1,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.fffff8p-2,
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p-1,
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.000004p-1,
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.fffffcp-1,
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0.0,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p-22,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.fffff0p-2,
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p-1,
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.000008p-1,
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.ffffp-1,
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0.0,
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.p-17,
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.fffep-2,
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.p-1,
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.0001p-1,
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.fff8p-1,
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0.0,
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.p-14,
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.fff0p-2,
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.p-1,
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.0008p-1,
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.c0p-1,
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0.0,
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p-2,
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.80p-1,
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0.0,
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p-1,
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p-1,
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0.0,
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0.0,
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0.0,
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0.0,
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0.0,
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0.0,
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0.0,
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0.0,
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.000002p-1,
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p-1,
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0x1.fffffep-2,
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.fffffep-1,
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.000004p-1,
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.fffff8p-2,
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p-22,
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0.0,
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.fffffcp-1,
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.000008p-1,
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p-1,
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.fffff0p-2,
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.p-17,
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0.0,
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.ffffp-1,
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.0001p-1,
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.p-1,
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.fffep-2,
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.p-14,
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0.0,
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.fff8p-1,
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.0008p-1,
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.p-1,
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.fff0p-2,
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p-2,
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0.0,
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.c0p-1,
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p-1,
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.80p-1,
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0.0,
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p-1,
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0.0,
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0.0,
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0.0,
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 93
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 94
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 95
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 96
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 97
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 98
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 100
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 101
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 102
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 103
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 104
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 105
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 106
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 107
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 113
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 114
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 115
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 116
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 117
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 118
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 119
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 120
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 122
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 123
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 125
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 126
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffap30,
+    0x1.fffffap30
+  },
+  { // Entry 128
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 130
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0.0,
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 132
+    0.0,
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 133
+    0.0,
+    0x1.000006p31,
+    0x1.000006p31
+  },
+  { // Entry 134
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 135
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 136
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 137
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 138
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 139
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 140
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 141
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 142
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 143
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 144
+    -0.0,
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 145
+    -0.0,
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 146
+    -0.0,
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 147
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 148
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 150
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 153
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 155
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 161
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 162
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 163
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 164
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 165
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 166
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 167
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 168
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 169
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 170
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 171
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 173
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 174
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 176
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 177
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 179
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 180
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.000006p31,
+    -0x1.000006p31
+  },
+  { // Entry 183
+    -0.0,
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 185
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 186
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 187
+    -0.0,
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 188
+    -0.0,
+    -0x1.fffffap30,
+    -0x1.fffffap30
+  },
+  { // Entry 189
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 190
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 191
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 192
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 193
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 194
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 195
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 196
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 197
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 198
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffap61,
+    0x1.fffffap61
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 201
+    0.0,
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 202
+    0.0,
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 203
+    0.0,
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 204
+    0.0,
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 205
+    0.0,
+    0x1.000006p62,
+    0x1.000006p62
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffap62,
+    0x1.fffffap62
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 209
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 210
+    0.0,
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 211
+    0.0,
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 212
+    0.0,
+    0x1.000006p63,
+    0x1.000006p63
+  },
+  { // Entry 213
+    0.0,
+    0x1.fffffap63,
+    0x1.fffffap63
+  },
+  { // Entry 214
+    0.0,
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 215
+    0.0,
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 216
+    0.0,
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 217
+    0.0,
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 218
+    0.0,
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 219
+    0.0,
+    0x1.000006p64,
+    0x1.000006p64
+  },
+  { // Entry 220
+    -0.0,
+    -0x1.000006p62,
+    -0x1.000006p62
+  },
+  { // Entry 221
+    -0.0,
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 222
+    -0.0,
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 223
+    -0.0,
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 224
+    -0.0,
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.fffffap61,
+    -0x1.fffffap61
+  },
+  { // Entry 227
+    -0.0,
+    -0x1.000006p63,
+    -0x1.000006p63
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 231
+    -0.0,
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.fffffap62,
+    -0x1.fffffap62
+  },
+  { // Entry 234
+    -0.0,
+    -0x1.000006p64,
+    -0x1.000006p64
+  },
+  { // Entry 235
+    -0.0,
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 236
+    -0.0,
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 237
+    -0.0,
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 238
+    -0.0,
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 239
+    -0.0,
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.fffffap63,
+    -0x1.fffffap63
+  },
+  { // Entry 241
+    0.0,
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 242
+    0.0,
+    0x1.40p62,
+    0x1.40p62
+  },
+  { // Entry 243
+    0.0,
+    0x1.80p62,
+    0x1.80p62
+  },
+  { // Entry 244
+    0.0,
+    0x1.c0p62,
+    0x1.c0p62
+  },
+  { // Entry 245
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 246
+    0.0,
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 247
+    0.0,
+    0x1.40p63,
+    0x1.40p63
+  },
+  { // Entry 248
+    0.0,
+    0x1.80p63,
+    0x1.80p63
+  },
+  { // Entry 249
+    0.0,
+    0x1.c0p63,
+    0x1.c0p63
+  },
+  { // Entry 250
+    0.0,
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 251
+    -0.0,
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 252
+    -0.0,
+    -0x1.40p62,
+    -0x1.40p62
+  },
+  { // Entry 253
+    -0.0,
+    -0x1.80p62,
+    -0x1.80p62
+  },
+  { // Entry 254
+    -0.0,
+    -0x1.c0p62,
+    -0x1.c0p62
+  },
+  { // Entry 255
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 256
+    -0.0,
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 257
+    -0.0,
+    -0x1.40p63,
+    -0x1.40p63
+  },
+  { // Entry 258
+    -0.0,
+    -0x1.80p63,
+    -0x1.80p63
+  },
+  { // Entry 259
+    -0.0,
+    -0x1.c0p63,
+    -0x1.c0p63
+  },
+  { // Entry 260
+    -0.0,
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 261
+    0.0,
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 262
+    0.0,
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 263
+    0.0,
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 264
+    -0.0,
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 265
+    -0.0,
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 266
+    -0.0,
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 267
+    0x1.fffff8p-1,
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 268
+    0.0,
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 269
+    0x1.p-21,
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 270
+    0x1.fffff0p-1,
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 271
+    0.0,
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 272
+    0x1.p-20,
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 273
+    0x1.ffffe0p-1,
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 274
+    0.0,
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 275
+    0x1.p-19,
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 276
+    0x1.ffffc0p-1,
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 277
+    0.0,
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 278
+    0x1.p-18,
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 279
+    0x1.ffff80p-1,
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 280
+    0.0,
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 281
+    0x1.p-17,
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 282
+    0x1.ffffp-1,
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 283
+    0.0,
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 284
+    0x1.p-16,
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 285
+    0x1.fffep-1,
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 286
+    0.0,
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 287
+    0x1.p-15,
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 288
+    0x1.fffcp-1,
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 289
+    0.0,
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 290
+    0x1.p-14,
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 291
+    0x1.fff8p-1,
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 292
+    0.0,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 293
+    0x1.p-13,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 294
+    0x1.fff0p-1,
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 295
+    0.0,
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 296
+    0x1.p-12,
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 297
+    0x1.ffe0p-1,
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 298
+    0.0,
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 299
+    0x1.p-11,
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 300
+    0x1.ffffe0p-2,
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 301
+    0x1.p-1,
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 302
+    0x1.000010p-1,
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 303
+    0x1.ffffc0p-2,
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 304
+    0x1.p-1,
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 305
+    0x1.000020p-1,
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 306
+    0x1.ffff80p-2,
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 307
+    0x1.p-1,
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 308
+    0x1.000040p-1,
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 309
+    0x1.ffffp-2,
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 310
+    0x1.p-1,
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 311
+    0x1.000080p-1,
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 312
+    0x1.fffep-2,
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 313
+    0x1.p-1,
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 314
+    0x1.0001p-1,
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 315
+    0x1.fffcp-2,
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 316
+    0x1.p-1,
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 317
+    0x1.0002p-1,
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 318
+    0x1.fff8p-2,
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 319
+    0x1.p-1,
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 320
+    0x1.0004p-1,
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 321
+    0x1.fff0p-2,
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 322
+    0x1.p-1,
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 323
+    0x1.0008p-1,
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 324
+    0x1.ffe0p-2,
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 325
+    0x1.p-1,
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 326
+    0x1.0010p-1,
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 327
+    0x1.ffe0p-2,
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 328
+    0x1.p-1,
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 329
+    0x1.0010p-1,
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 330
+    0x1.ffc0p-2,
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 331
+    0x1.p-1,
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 332
+    0x1.0020p-1,
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 333
+    0x1.ff80p-2,
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 334
+    0x1.p-1,
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 335
+    0x1.0040p-1,
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 336
+    0.0,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 337
+    -0.0,
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 338
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 339
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 340
+    0.0,
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 341
+    -0.0,
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 342
+    0x1.21fb60p-3,
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 343
+    -0x1.21fb60p-3,
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 344
+    0x1.243f6cp-1,
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 345
+    -0x1.243f6cp-1,
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 346
+    0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 347
+    -0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 348
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 349
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 350
+    0x1.fffffep-1,
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 351
+    -0x1.fffffep-1,
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 352
+    0x1.921fb6p-1,
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 353
+    -0x1.921fb6p-1,
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 354
+    0x1.000002p-126,
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 355
+    -0x1.000002p-126,
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 356
+    0x1.p-126,
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 357
+    -0x1.p-126,
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 358
+    0x1.fffffcp-127,
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 359
+    -0x1.fffffcp-127,
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 360
+    0x1.fffff8p-127,
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 361
+    -0x1.fffff8p-127,
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 362
+    0x1.p-148,
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 363
+    -0x1.p-148,
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 364
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 365
+    -0x1.p-149,
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 366
+    0.0,
+    0.0,
+    0.0f
+  },
+  { // Entry 367
+    -0.0,
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/nearbyint_intel_data.h b/tests/math_data/nearbyint_intel_data.h
new file mode 100644
index 0000000..d51cbe4
--- /dev/null
+++ b/tests/math_data/nearbyint_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_nearbyint_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/nearbyintf_intel_data.h b/tests/math_data/nearbyintf_intel_data.h
new file mode 100644
index 0000000..a917b77
--- /dev/null
+++ b/tests/math_data/nearbyintf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_nearbyintf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/nextafter_intel_data.h b/tests/math_data/nextafter_intel_data.h
new file mode 100644
index 0000000..191dbf6
--- /dev/null
+++ b/tests/math_data/nextafter_intel_data.h
@@ -0,0 +1,2088 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_nextafter_intel_data[] = {
+  { // Entry 0
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 4
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 5
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 7
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 8
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 9
+    0x1.fffffffffffff0p-1,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 12
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 14
+    0x1.00000000000010p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 17
+    0x1.00000000000010p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 18
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 19
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 20
+    0x1.ffffffffffffe0p-1,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 21
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 22
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 23
+    0x1.fffffffffffff0p-1,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 24
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 26
+    0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 30
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 31
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 32
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 33
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 34
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 35
+    -0x1.ffffffffffffe0p-1,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 36
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 37
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 38
+    -0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 39
+    -0x1.00000000000010p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 41
+    -0x1.fffffffffffff0p-1,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 42
+    -0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 44
+    -0x1.fffffffffffff0p-1,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 47
+    0x1.p1,
+    0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 48
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 49
+    0x1.p1,
+    0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 50
+    0x1.00000000000010p1,
+    0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 51
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 52
+    0x1.p1,
+    0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 53
+    0x1.00000000000010p1,
+    0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 54
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 55
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.0p1
+  },
+  { // Entry 56
+    0x1.ffffffffffffe0p0,
+    0x1.fffffffffffffp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 57
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.0p1
+  },
+  { // Entry 59
+    0x1.fffffffffffff0p0,
+    0x1.0p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 60
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 61
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.0p1
+  },
+  { // Entry 62
+    0x1.p1,
+    0x1.0000000000001p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.0p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 66
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 67
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.0p1
+  },
+  { // Entry 68
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 69
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 70
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.0p1
+  },
+  { // Entry 71
+    -0x1.ffffffffffffe0p0,
+    -0x1.fffffffffffffp0,
+    0x1.0000000000001p1
+  },
+  { // Entry 72
+    -0x1.00000000000010p1,
+    -0x1.0000000000001p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 73
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    -0x1.0p1
+  },
+  { // Entry 74
+    -0x1.p1,
+    -0x1.0000000000001p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 75
+    -0x1.00000000000010p1,
+    -0x1.0p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 76
+    -0x1.p1,
+    -0x1.0p1,
+    -0x1.0p1
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p0,
+    -0x1.0p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 78
+    -0x1.p1,
+    -0x1.fffffffffffffp0,
+    -0x1.0000000000001p1
+  },
+  { // Entry 79
+    -0x1.p1,
+    -0x1.fffffffffffffp0,
+    -0x1.0p1
+  },
+  { // Entry 80
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p9,
+    0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 82
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 84
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 86
+    0x1.00000000000010p10,
+    0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 88
+    0x1.p10,
+    0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 89
+    0x1.00000000000010p10,
+    0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 90
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.0000000000001p10
+  },
+  { // Entry 91
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.0p10
+  },
+  { // Entry 92
+    0x1.ffffffffffffe0p9,
+    0x1.fffffffffffffp9,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 94
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.0p10
+  },
+  { // Entry 95
+    0x1.fffffffffffff0p9,
+    0x1.0p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 96
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 97
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.0p10
+  },
+  { // Entry 98
+    0x1.p10,
+    0x1.0000000000001p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 99
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 100
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.0p10
+  },
+  { // Entry 101
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 102
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 103
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.0p10
+  },
+  { // Entry 104
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 105
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 106
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.0p10
+  },
+  { // Entry 107
+    -0x1.ffffffffffffe0p9,
+    -0x1.fffffffffffffp9,
+    0x1.0000000000001p10
+  },
+  { // Entry 108
+    -0x1.00000000000010p10,
+    -0x1.0000000000001p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 109
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    -0x1.0p10
+  },
+  { // Entry 110
+    -0x1.p10,
+    -0x1.0000000000001p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 111
+    -0x1.00000000000010p10,
+    -0x1.0p10,
+    -0x1.0000000000001p10
+  },
+  { // Entry 112
+    -0x1.p10,
+    -0x1.0p10,
+    -0x1.0p10
+  },
+  { // Entry 113
+    -0x1.fffffffffffff0p9,
+    -0x1.0p10,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 114
+    -0x1.p10,
+    -0x1.fffffffffffffp9,
+    -0x1.0000000000001p10
+  },
+  { // Entry 115
+    -0x1.p10,
+    -0x1.fffffffffffffp9,
+    -0x1.0p10
+  },
+  { // Entry 116
+    -0x1.fffffffffffff0p9,
+    -0x1.fffffffffffffp9,
+    -0x1.fffffffffffffp9
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p99,
+    0x1.fffffffffffffp99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 118
+    0x1.p100,
+    0x1.fffffffffffffp99,
+    0x1.0p100
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.fffffffffffffp99,
+    0x1.0000000000001p100
+  },
+  { // Entry 120
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 122
+    0x1.00000000000010p100,
+    0x1.0p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.0000000000001p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.0000000000001p100,
+    0x1.0p100
+  },
+  { // Entry 125
+    0x1.00000000000010p100,
+    0x1.0000000000001p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 126
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.0000000000001p100
+  },
+  { // Entry 127
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.0p100
+  },
+  { // Entry 128
+    0x1.ffffffffffffe0p99,
+    0x1.fffffffffffffp99,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 129
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 130
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.0p100
+  },
+  { // Entry 131
+    0x1.fffffffffffff0p99,
+    0x1.0p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 132
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 133
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.0p100
+  },
+  { // Entry 134
+    0x1.p100,
+    0x1.0000000000001p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 135
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 136
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.0p100
+  },
+  { // Entry 137
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 139
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.0p100
+  },
+  { // Entry 140
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    0x1.0000000000001p100
+  },
+  { // Entry 141
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.fffffffffffffp99
+  },
+  { // Entry 142
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.0p100
+  },
+  { // Entry 143
+    -0x1.ffffffffffffe0p99,
+    -0x1.fffffffffffffp99,
+    0x1.0000000000001p100
+  },
+  { // Entry 144
+    -0x1.00000000000010p100,
+    -0x1.0000000000001p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 145
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    -0x1.0p100
+  },
+  { // Entry 146
+    -0x1.p100,
+    -0x1.0000000000001p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 147
+    -0x1.00000000000010p100,
+    -0x1.0p100,
+    -0x1.0000000000001p100
+  },
+  { // Entry 148
+    -0x1.p100,
+    -0x1.0p100,
+    -0x1.0p100
+  },
+  { // Entry 149
+    -0x1.fffffffffffff0p99,
+    -0x1.0p100,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 150
+    -0x1.p100,
+    -0x1.fffffffffffffp99,
+    -0x1.0000000000001p100
+  },
+  { // Entry 151
+    -0x1.p100,
+    -0x1.fffffffffffffp99,
+    -0x1.0p100
+  },
+  { // Entry 152
+    -0x1.fffffffffffff0p99,
+    -0x1.fffffffffffffp99,
+    -0x1.fffffffffffffp99
+  },
+  { // Entry 153
+    0x1.fffffffffffff0p999,
+    0x1.fffffffffffffp999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 154
+    0x1.p1000,
+    0x1.fffffffffffffp999,
+    0x1.0p1000
+  },
+  { // Entry 155
+    0x1.p1000,
+    0x1.fffffffffffffp999,
+    0x1.0000000000001p1000
+  },
+  { // Entry 156
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 157
+    0x1.p1000,
+    0x1.0p1000,
+    0x1.0p1000
+  },
+  { // Entry 158
+    0x1.00000000000010p1000,
+    0x1.0p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 159
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 160
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    0x1.0p1000
+  },
+  { // Entry 161
+    0x1.00000000000010p1000,
+    0x1.0000000000001p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 162
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 163
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.0p1000
+  },
+  { // Entry 164
+    0x1.ffffffffffffe0p999,
+    0x1.fffffffffffffp999,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 165
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 166
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.0p1000
+  },
+  { // Entry 167
+    0x1.fffffffffffff0p999,
+    0x1.0p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 168
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 169
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.0p1000
+  },
+  { // Entry 170
+    0x1.p1000,
+    0x1.0000000000001p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 171
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 172
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.0p1000
+  },
+  { // Entry 173
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 174
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 175
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.0p1000
+  },
+  { // Entry 176
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    0x1.0000000000001p1000
+  },
+  { // Entry 177
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.fffffffffffffp999
+  },
+  { // Entry 178
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.0p1000
+  },
+  { // Entry 179
+    -0x1.ffffffffffffe0p999,
+    -0x1.fffffffffffffp999,
+    0x1.0000000000001p1000
+  },
+  { // Entry 180
+    -0x1.00000000000010p1000,
+    -0x1.0000000000001p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 181
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    -0x1.0p1000
+  },
+  { // Entry 182
+    -0x1.p1000,
+    -0x1.0000000000001p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 183
+    -0x1.00000000000010p1000,
+    -0x1.0p1000,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 184
+    -0x1.p1000,
+    -0x1.0p1000,
+    -0x1.0p1000
+  },
+  { // Entry 185
+    -0x1.fffffffffffff0p999,
+    -0x1.0p1000,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 186
+    -0x1.p1000,
+    -0x1.fffffffffffffp999,
+    -0x1.0000000000001p1000
+  },
+  { // Entry 187
+    -0x1.p1000,
+    -0x1.fffffffffffffp999,
+    -0x1.0p1000
+  },
+  { // Entry 188
+    -0x1.fffffffffffff0p999,
+    -0x1.fffffffffffffp999,
+    -0x1.fffffffffffffp999
+  },
+  { // Entry 189
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 190
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 191
+    0x1.fffffffffffff0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 192
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 193
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 194
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 195
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 196
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 197
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 200
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 202
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 203
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 205
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 206
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 207
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 209
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 210
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 211
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 212
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 213
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 214
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 215
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 216
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 217
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 220
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 223
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0x1.0p-1074
+  },
+  { // Entry 226
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    -0.0
+  },
+  { // Entry 227
+    0x1.ffffffffffffd0p1023,
+    0x1.ffffffffffffep1023,
+    0x1.0p-1074
+  },
+  { // Entry 228
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 229
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 230
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 233
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 236
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 237
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0x1.0p-1074
+  },
+  { // Entry 238
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    -0.0
+  },
+  { // Entry 239
+    -0x1.ffffffffffffd0p1023,
+    -0x1.ffffffffffffep1023,
+    0x1.0p-1074
+  },
+  { // Entry 240
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 241
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    -0.0
+  },
+  { // Entry 242
+    -0x1.ffffffffffffc0p1023,
+    -0x1.ffffffffffffdp1023,
+    0x1.0p-1074
+  },
+  { // Entry 243
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 244
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 245
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 246
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 247
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 248
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 249
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 250
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 251
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 252
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 253
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 254
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 255
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 256
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 257
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 258
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 259
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 260
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffdp1023
+  },
+  { // Entry 261
+    0x1.00000fffffffe0p1,
+    0x1.00000fffffffep1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 262
+    0x1.00000ffffffff0p1,
+    0x1.00000fffffffep1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 263
+    0x1.00000ffffffff0p1,
+    0x1.00000fffffffep1,
+    0x1.00001p1
+  },
+  { // Entry 264
+    0x1.00000fffffffe0p1,
+    0x1.00000ffffffffp1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 265
+    0x1.00000ffffffff0p1,
+    0x1.00000ffffffffp1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 266
+    0x1.000010p1,
+    0x1.00000ffffffffp1,
+    0x1.00001p1
+  },
+  { // Entry 267
+    0x1.00000ffffffff0p1,
+    0x1.00001p1,
+    0x1.00000fffffffep1
+  },
+  { // Entry 268
+    0x1.00000ffffffff0p1,
+    0x1.00001p1,
+    0x1.00000ffffffffp1
+  },
+  { // Entry 269
+    0x1.000010p1,
+    0x1.00001p1,
+    0x1.00001p1
+  },
+  { // Entry 270
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 271
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 272
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 273
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 274
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 275
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 276
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 277
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 278
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 279
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 280
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 281
+    0x1.fffffffffffff0p1023,
+    HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 282
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 283
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 284
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 285
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 286
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 287
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 289
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 290
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 291
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 292
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 293
+    0x1.ffffffffffffe0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 294
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 295
+    0x1.00000000000010p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 296
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 297
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 298
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 299
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 300
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 301
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 302
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 303
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 304
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 305
+    0x1.ffffffffffffe0p-1023,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 306
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 307
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 308
+    0x1.p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 309
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 310
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 311
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 312
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 313
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 315
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 316
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 317
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 318
+    0x1.p-1073,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 319
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 320
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 321
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 322
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 323
+    0.0,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 324
+    0.0,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 325
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 326
+    0.0,
+    0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 327
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 328
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 329
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 330
+    0x1.p-1074,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 331
+    0x1.p-1074,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 332
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 333
+    0x1.p-1074,
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 334
+    0x1.p-1074,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 335
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 336
+    -0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 337
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 338
+    -0x1.p-1074,
+    0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 339
+    -0x1.p-1074,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 340
+    -0x1.p-1074,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 341
+    -0x1.p-1074,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 342
+    0x1.p-1074,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 343
+    0x1.p-1074,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 344
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 345
+    0x1.p-1074,
+    -0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 346
+    0x1.p-1074,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 347
+    0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 348
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 349
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 350
+    -0x1.p-1074,
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 351
+    -0x1.p-1074,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 352
+    -0x1.p-1074,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 353
+    -0x1.p-1074,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 354
+    -0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 355
+    -0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 356
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 357
+    -0.0,
+    -0x1.0p-1074,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 358
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 359
+    -0.0,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 360
+    -0.0,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 361
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 362
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 363
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 364
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 365
+    -0x1.p-1073,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 366
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 367
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 368
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1022
+  },
+  { // Entry 369
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 370
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0x1.0p-1074
+  },
+  { // Entry 371
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 372
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 373
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1074
+  },
+  { // Entry 374
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 375
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 376
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 377
+    -0x1.p-1022,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 378
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 379
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 380
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 381
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 382
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 383
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 384
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 385
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 386
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.0p-1022,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 387
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 388
+    -0x1.00000000000010p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 389
+    -0x1.00000000000010p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 390
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 391
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 392
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 393
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 394
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 395
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 396
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 397
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 398
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 399
+    -0x1.ffffffffffffe0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 400
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 401
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 402
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 403
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 404
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.0p-1022
+  },
+  { // Entry 405
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 406
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0x1.0p-1074
+  },
+  { // Entry 407
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 408
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 409
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.0p-1074
+  },
+  { // Entry 410
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 411
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.0p-1022
+  },
+  { // Entry 412
+    -0x1.fffffffffffff0p1023,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 413
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -HUGE_VAL
+  }
+};
diff --git a/tests/math_data/nextafterf_intel_data.h b/tests/math_data/nextafterf_intel_data.h
new file mode 100644
index 0000000..f47bce2
--- /dev/null
+++ b/tests/math_data/nextafterf_intel_data.h
@@ -0,0 +1,1863 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_nextafterf_intel_data[] = {
+  { // Entry 0
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-149,
+    0.0
+  },
+  { // Entry 2
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 3
+    -0x1.p-149,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 4
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 5
+    0x1.p-149,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 6
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 7
+    0.0,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 8
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 9
+    0x1.fffffep-1,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 12
+    0x1.fffffep-1,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 14
+    0x1.000002p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 17
+    0x1.000002p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 18
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 19
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 20
+    0x1.fffffcp-1,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 21
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 22
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 23
+    0x1.fffffep-1,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 24
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 25
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 26
+    0x1.p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 30
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 31
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 32
+    -0x1.fffffep-1,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 33
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 34
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 35
+    -0x1.fffffcp-1,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 36
+    -0x1.000002p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 37
+    -0x1.p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 38
+    -0x1.p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 39
+    -0x1.000002p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 41
+    -0x1.fffffep-1,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 42
+    -0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 44
+    -0x1.fffffep-1,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 45
+    0x1.fffffep0,
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 46
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 47
+    0x1.p1,
+    0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 48
+    0x1.fffffep0,
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 49
+    0x1.p1,
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 50
+    0x1.000002p1,
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 51
+    0x1.p1,
+    0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 52
+    0x1.p1,
+    0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 53
+    0x1.000002p1,
+    0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 54
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.000002p1
+  },
+  { // Entry 55
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.p1
+  },
+  { // Entry 56
+    0x1.fffffcp0,
+    0x1.fffffep0,
+    -0x1.fffffep0
+  },
+  { // Entry 57
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 58
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 59
+    0x1.fffffep0,
+    0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 60
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.000002p1
+  },
+  { // Entry 61
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.p1
+  },
+  { // Entry 62
+    0x1.p1,
+    0x1.000002p1,
+    -0x1.fffffep0
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.fffffep0
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.000002p1,
+    0x1.000002p1
+  },
+  { // Entry 66
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 67
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.p1
+  },
+  { // Entry 68
+    -0x1.fffffep0,
+    -0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 69
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 70
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.p1
+  },
+  { // Entry 71
+    -0x1.fffffcp0,
+    -0x1.fffffep0,
+    0x1.000002p1
+  },
+  { // Entry 72
+    -0x1.000002p1,
+    -0x1.000002p1,
+    -0x1.000002p1
+  },
+  { // Entry 73
+    -0x1.p1,
+    -0x1.000002p1,
+    -0x1.p1
+  },
+  { // Entry 74
+    -0x1.p1,
+    -0x1.000002p1,
+    -0x1.fffffep0
+  },
+  { // Entry 75
+    -0x1.000002p1,
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 76
+    -0x1.p1,
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 77
+    -0x1.fffffep0,
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 78
+    -0x1.p1,
+    -0x1.fffffep0,
+    -0x1.000002p1
+  },
+  { // Entry 79
+    -0x1.p1,
+    -0x1.fffffep0,
+    -0x1.p1
+  },
+  { // Entry 80
+    -0x1.fffffep0,
+    -0x1.fffffep0,
+    -0x1.fffffep0
+  },
+  { // Entry 81
+    0x1.fffffep9,
+    0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 82
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 83
+    0x1.p10,
+    0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 84
+    0x1.fffffep9,
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 85
+    0x1.p10,
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 86
+    0x1.000002p10,
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 87
+    0x1.p10,
+    0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 88
+    0x1.p10,
+    0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 89
+    0x1.000002p10,
+    0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 90
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.000002p10
+  },
+  { // Entry 91
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.p10
+  },
+  { // Entry 92
+    0x1.fffffcp9,
+    0x1.fffffep9,
+    -0x1.fffffep9
+  },
+  { // Entry 93
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.000002p10
+  },
+  { // Entry 94
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.p10
+  },
+  { // Entry 95
+    0x1.fffffep9,
+    0x1.p10,
+    -0x1.fffffep9
+  },
+  { // Entry 96
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.000002p10
+  },
+  { // Entry 97
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.p10
+  },
+  { // Entry 98
+    0x1.p10,
+    0x1.000002p10,
+    -0x1.fffffep9
+  },
+  { // Entry 99
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.fffffep9
+  },
+  { // Entry 100
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.p10
+  },
+  { // Entry 101
+    -0x1.p10,
+    -0x1.000002p10,
+    0x1.000002p10
+  },
+  { // Entry 102
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 103
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.p10
+  },
+  { // Entry 104
+    -0x1.fffffep9,
+    -0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 105
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.fffffep9
+  },
+  { // Entry 106
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.p10
+  },
+  { // Entry 107
+    -0x1.fffffcp9,
+    -0x1.fffffep9,
+    0x1.000002p10
+  },
+  { // Entry 108
+    -0x1.000002p10,
+    -0x1.000002p10,
+    -0x1.000002p10
+  },
+  { // Entry 109
+    -0x1.p10,
+    -0x1.000002p10,
+    -0x1.p10
+  },
+  { // Entry 110
+    -0x1.p10,
+    -0x1.000002p10,
+    -0x1.fffffep9
+  },
+  { // Entry 111
+    -0x1.000002p10,
+    -0x1.p10,
+    -0x1.000002p10
+  },
+  { // Entry 112
+    -0x1.p10,
+    -0x1.p10,
+    -0x1.p10
+  },
+  { // Entry 113
+    -0x1.fffffep9,
+    -0x1.p10,
+    -0x1.fffffep9
+  },
+  { // Entry 114
+    -0x1.p10,
+    -0x1.fffffep9,
+    -0x1.000002p10
+  },
+  { // Entry 115
+    -0x1.p10,
+    -0x1.fffffep9,
+    -0x1.p10
+  },
+  { // Entry 116
+    -0x1.fffffep9,
+    -0x1.fffffep9,
+    -0x1.fffffep9
+  },
+  { // Entry 117
+    0x1.fffffep99,
+    0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 118
+    0x1.p100,
+    0x1.fffffep99,
+    0x1.p100
+  },
+  { // Entry 119
+    0x1.p100,
+    0x1.fffffep99,
+    0x1.000002p100
+  },
+  { // Entry 120
+    0x1.fffffep99,
+    0x1.p100,
+    0x1.fffffep99
+  },
+  { // Entry 121
+    0x1.p100,
+    0x1.p100,
+    0x1.p100
+  },
+  { // Entry 122
+    0x1.000002p100,
+    0x1.p100,
+    0x1.000002p100
+  },
+  { // Entry 123
+    0x1.p100,
+    0x1.000002p100,
+    0x1.fffffep99
+  },
+  { // Entry 124
+    0x1.p100,
+    0x1.000002p100,
+    0x1.p100
+  },
+  { // Entry 125
+    0x1.000002p100,
+    0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 126
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.000002p100
+  },
+  { // Entry 127
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.p100
+  },
+  { // Entry 128
+    0x1.fffffcp99,
+    0x1.fffffep99,
+    -0x1.fffffep99
+  },
+  { // Entry 129
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.000002p100
+  },
+  { // Entry 130
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.p100
+  },
+  { // Entry 131
+    0x1.fffffep99,
+    0x1.p100,
+    -0x1.fffffep99
+  },
+  { // Entry 132
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.000002p100
+  },
+  { // Entry 133
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.p100
+  },
+  { // Entry 134
+    0x1.p100,
+    0x1.000002p100,
+    -0x1.fffffep99
+  },
+  { // Entry 135
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.fffffep99
+  },
+  { // Entry 136
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.p100
+  },
+  { // Entry 137
+    -0x1.p100,
+    -0x1.000002p100,
+    0x1.000002p100
+  },
+  { // Entry 138
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.fffffep99
+  },
+  { // Entry 139
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.p100
+  },
+  { // Entry 140
+    -0x1.fffffep99,
+    -0x1.p100,
+    0x1.000002p100
+  },
+  { // Entry 141
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.fffffep99
+  },
+  { // Entry 142
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.p100
+  },
+  { // Entry 143
+    -0x1.fffffcp99,
+    -0x1.fffffep99,
+    0x1.000002p100
+  },
+  { // Entry 144
+    -0x1.000002p100,
+    -0x1.000002p100,
+    -0x1.000002p100
+  },
+  { // Entry 145
+    -0x1.p100,
+    -0x1.000002p100,
+    -0x1.p100
+  },
+  { // Entry 146
+    -0x1.p100,
+    -0x1.000002p100,
+    -0x1.fffffep99
+  },
+  { // Entry 147
+    -0x1.000002p100,
+    -0x1.p100,
+    -0x1.000002p100
+  },
+  { // Entry 148
+    -0x1.p100,
+    -0x1.p100,
+    -0x1.p100
+  },
+  { // Entry 149
+    -0x1.fffffep99,
+    -0x1.p100,
+    -0x1.fffffep99
+  },
+  { // Entry 150
+    -0x1.p100,
+    -0x1.fffffep99,
+    -0x1.000002p100
+  },
+  { // Entry 151
+    -0x1.p100,
+    -0x1.fffffep99,
+    -0x1.p100
+  },
+  { // Entry 152
+    -0x1.fffffep99,
+    -0x1.fffffep99,
+    -0x1.fffffep99
+  },
+  { // Entry 153
+    0x1.fffffcp127,
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 154
+    0x1.fffffep127,
+    0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 155
+    0x1.fffffep127,
+    0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 156
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 157
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 158
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 159
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 160
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 161
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 162
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 163
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 164
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 165
+    -0x1.fffffep127,
+    -0x1.fffffcp127,
+    -0x1.fffffep127
+  },
+  { // Entry 166
+    -0x1.fffffcp127,
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 167
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    -0x1.fffffap127
+  },
+  { // Entry 168
+    -0x1.fffffcp127,
+    -0x1.fffffap127,
+    -0x1.fffffep127
+  },
+  { // Entry 169
+    -0x1.fffffcp127,
+    -0x1.fffffap127,
+    -0x1.fffffcp127
+  },
+  { // Entry 170
+    -0x1.fffffap127,
+    -0x1.fffffap127,
+    -0x1.fffffap127
+  },
+  { // Entry 171
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffep127
+  },
+  { // Entry 172
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 173
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.fffffap127
+  },
+  { // Entry 174
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 175
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 176
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 177
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 178
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp127
+  },
+  { // Entry 179
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffap127
+  },
+  { // Entry 180
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffcp127
+  },
+  { // Entry 181
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 182
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 183
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 184
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 185
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.fffffep127
+  },
+  { // Entry 186
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffcp127
+  },
+  { // Entry 187
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffep127
+  },
+  { // Entry 188
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.fffffep127
+  },
+  { // Entry 189
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    -0x1.p-149
+  },
+  { // Entry 190
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    0.0
+  },
+  { // Entry 191
+    0x1.fffffap127,
+    0x1.fffffcp127,
+    0x1.p-149
+  },
+  { // Entry 192
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 193
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 194
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 195
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 196
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 197
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 198
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 199
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0.0
+  },
+  { // Entry 200
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 201
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    -0x1.p-149
+  },
+  { // Entry 202
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0.0
+  },
+  { // Entry 203
+    -0x1.fffffap127,
+    -0x1.fffffcp127,
+    0x1.p-149
+  },
+  { // Entry 204
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    -0x1.p-149
+  },
+  { // Entry 205
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0.0
+  },
+  { // Entry 206
+    -0x1.fffff8p127,
+    -0x1.fffffap127,
+    0x1.p-149
+  },
+  { // Entry 207
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffcp127
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 210
+    0x1.p-149,
+    0.0,
+    0x1.fffffcp127
+  },
+  { // Entry 211
+    0x1.p-149,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    0x1.p-149,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffcp127
+  },
+  { // Entry 214
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 215
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 216
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffcp127
+  },
+  { // Entry 218
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffap127
+  },
+  { // Entry 219
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffcp127
+  },
+  { // Entry 221
+    -0x1.p-149,
+    0.0,
+    -0x1.fffffap127
+  },
+  { // Entry 222
+    0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0.0,
+    0x1.p-149,
+    -0x1.fffffcp127
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-149,
+    -0x1.fffffap127
+  },
+  { // Entry 225
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 226
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 227
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 228
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 229
+    0x1.fffffep127,
+    HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 230
+    0x1.fffffep127,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 231
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 232
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 233
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 234
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0x1.fffffep127,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 236
+    0x1.fffffep127,
+    HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 237
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 238
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 239
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 240
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 241
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 242
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 243
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 244
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 245
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 246
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 247
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 248
+    0x1.fffffcp127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 249
+    0x1.000002p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 250
+    0x1.000002p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 251
+    0x1.p-126,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 252
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 253
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 254
+    0x1.fffffcp-127,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 255
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 256
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 257
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 258
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 259
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 260
+    0x1.fffffcp-127,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 261
+    0x1.p-126,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 262
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 263
+    0x1.p-126,
+    0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 264
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 265
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 266
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 267
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 268
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 269
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 270
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 271
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 272
+    0x1.fffff8p-127,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 273
+    0x1.p-148,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 274
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 275
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 276
+    0x1.p-148,
+    0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 277
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 278
+    0.0,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 279
+    0.0,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 280
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 281
+    0.0,
+    0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 282
+    0.0,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 283
+    0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 284
+    0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 285
+    0x1.p-149,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 286
+    0x1.p-149,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    0x1.p-149,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 288
+    0x1.p-149,
+    0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 289
+    0x1.p-149,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 290
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 291
+    -0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 292
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 293
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 294
+    -0x1.p-149,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 295
+    -0x1.p-149,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 296
+    -0x1.p-149,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 297
+    0x1.p-149,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 298
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 299
+    0x1.p-149,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 300
+    0x1.p-149,
+    -0.0f,
+    0x1.fffffcp-127
+  },
+  { // Entry 301
+    0x1.p-149,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 302
+    0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 303
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 304
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 305
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffcp-127
+  },
+  { // Entry 306
+    -0x1.p-149,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 307
+    -0x1.p-149,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 308
+    -0x1.p-149,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.p-149,
+    0x1.fffffcp-127
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 316
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 317
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffcp-127
+  },
+  { // Entry 318
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 319
+    -0x1.p-148,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 320
+    -0x1.p-148,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 321
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 322
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 323
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-126
+  },
+  { // Entry 324
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 325
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0x1.p-149
+  },
+  { // Entry 326
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 327
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 328
+    -0x1.fffff8p-127,
+    -0x1.fffffcp-127,
+    -0x1.p-149
+  },
+  { // Entry 329
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 330
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.p-126
+  },
+  { // Entry 331
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 332
+    -0x1.p-126,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 333
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 334
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 335
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 336
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.fffffcp-127
+  },
+  { // Entry 337
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 338
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 339
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 340
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 341
+    -0x1.fffffcp-127,
+    -0x1.p-126,
+    -0x1.fffffcp-127
+  },
+  { // Entry 342
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 343
+    -0x1.000002p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 344
+    -0x1.000002p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 345
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 346
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 347
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 348
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.fffffcp-127
+  },
+  { // Entry 349
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 350
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 351
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 352
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 353
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 354
+    -0x1.fffffcp127,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 355
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 356
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 357
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 358
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 359
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-126
+  },
+  { // Entry 360
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.fffffcp-127
+  },
+  { // Entry 361
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0x1.p-149
+  },
+  { // Entry 362
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 363
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 364
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-149
+  },
+  { // Entry 365
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffcp-127
+  },
+  { // Entry 366
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.p-126
+  },
+  { // Entry 367
+    -0x1.fffffep127,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 368
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -HUGE_VALF
+  }
+};
diff --git a/tests/math_pow_intel_data.h b/tests/math_data/pow_intel_data.h
similarity index 100%
rename from tests/math_pow_intel_data.h
rename to tests/math_data/pow_intel_data.h
diff --git a/tests/math_powf_intel_data.h b/tests/math_data/powf_intel_data.h
similarity index 100%
rename from tests/math_powf_intel_data.h
rename to tests/math_data/powf_intel_data.h
diff --git a/tests/math_data/remainder_intel_data.h b/tests/math_data/remainder_intel_data.h
new file mode 100644
index 0000000..7219616
--- /dev/null
+++ b/tests/math_data/remainder_intel_data.h
@@ -0,0 +1,1308 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_remainder_intel_data[] = {
+  { // Entry 0
+    -0x1.p-51,
+    -0x1.4p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 1
+    0x1.c0p46,
+    -0x1.8888888888888p100,
+    -0x1.1111111111111p95
+  },
+  { // Entry 2
+    0x1.0c6f7a20p-16,
+    -0x1.b155555555555p9,
+    -0x1.b15555db8d126p9
+  },
+  { // Entry 3
+    -0.0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 4
+    -0.0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 7
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 8
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 9
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 10
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 11
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 12
+    -0x1.p-117,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 13
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 14
+    0x1.p-117,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 15
+    0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 17
+    0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 18
+    0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 20
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 21
+    0.0,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 22
+    0.0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 23
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 24
+    0x1.p15,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 25
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 26
+    0x1.p16,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 27
+    0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 29
+    0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 30
+    0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 32
+    0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 33
+    0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 34
+    0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 35
+    0.0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 36
+    0x1.p117,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 37
+    0.0,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 38
+    0.0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 39
+    0.0,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 40
+    0x1.p0,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 41
+    0x1.p2,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p1,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.40p2,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p1,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.80p1,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.80p2,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.80p1,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.p2,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    -0x1.40p2,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.p2,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.40p2,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 53
+    -0x1.p2,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.40p2,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 55
+    -0x1.40p2,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 56
+    -0x1.80p1,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 57
+    -0x1.p2,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    -0x1.p2,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    -0x1.p1,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    -0x1.80p1,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.80p1,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    -0x1.p0,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    -0x1.p1,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 64
+    -0x1.p1,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 65
+    0.0,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 66
+    -0x1.p0,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 67
+    -0x1.p0,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0x1.p0,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 69
+    0.0,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    0.0,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p1,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    -0.0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 73
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 74
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 75
+    0x1.p-52,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0.0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.p-53,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    0x1.80p-52,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    -0x1.80p-52,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 82
+    -0x1.p-52,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 84
+    -0x1.p-53,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0.0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    0x1.p-52,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0.0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    0x1.p-53,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 89
+    0x1.80p-52,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 91
+    -0x1.p-53,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 92
+    0.0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 93
+    -0x1.p-52,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    0.0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0x1.p-53,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    0.0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0x1.p-52,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    -0x1.p-53,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 101
+    -0x1.80p-52,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 102
+    0x1.p-53,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    0.0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 104
+    -0x1.p-52,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.80p-52,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0x1.p-52,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    0.0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 109
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 110
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 111
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 114
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 115
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 116
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 125
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 126
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 127
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 128
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 129
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 130
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 131
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0x1.ffffffffffffc0p-3,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 133
+    -0x1.p-1,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 134
+    -0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 135
+    -0x1.p-2,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    0x1.p-1,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    0x1.p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 140
+    -0x1.00000000000040p-2,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.ffffffffffffc0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    -0x1.ffffffffffffe0p-2,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 146
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    -0x1.ffffffffffffc0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 152
+    -0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.p-53,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0x1.p-51,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0x1.p-2,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 161
+    0x1.00000000000040p-2,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0x1.p-2,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 164
+    -0x1.p-1,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    -0x1.ffffffffffffc0p-3,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0x1.p-1,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    -0x1.p-1,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 170
+    -0x1.ffffffffffffc0p-2,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    -0x1.ffffffffffffe0p-2,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 173
+    0x1.p-52,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    -0x1.ffffffffffffc0p-2,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 179
+    -0x1.80p-52,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 180
+    -0x1.p-51,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.p-53,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.80p-51,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 187
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 188
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 189
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 190
+    0x1.p-1022,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 191
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 192
+    0x1.p-1022,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 194
+    0x1.p-1074,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 195
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 196
+    0x1.p-1074,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 198
+    0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 199
+    -0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 200
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 202
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 203
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 204
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 205
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 208
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 211
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 212
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 213
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 214
+    0x1.p-1022,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 215
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 216
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 217
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 227
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 228
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 231
+    0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 232
+    -0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 233
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 234
+    0x1.p-1074,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 235
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 236
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 237
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 238
+    0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    -0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 240
+    0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 241
+    -0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 242
+    0.0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 243
+    -0.0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 244
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 245
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 246
+    0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 247
+    -0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 248
+    0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 249
+    -0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 250
+    -0x1.p0,
+    0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 251
+    0x1.p0,
+    -0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 252
+    -0x1.p0,
+    0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 253
+    0x1.p0,
+    -0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 254
+    0x1.p0,
+    0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 255
+    -0x1.p0,
+    -0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 256
+    0x1.p0,
+    0x1.4p2,
+    -0x1.0p1
+  },
+  { // Entry 257
+    -0x1.p0,
+    -0x1.4p2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/remainderf_intel_data.h b/tests/math_data/remainderf_intel_data.h
new file mode 100644
index 0000000..94c4af5
--- /dev/null
+++ b/tests/math_data/remainderf_intel_data.h
@@ -0,0 +1,1293 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_remainderf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 1
+    -0.0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 3
+    0.0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 4
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 5
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 6
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 7
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 8
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 9
+    -0x1.p-117,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 10
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 11
+    0x1.p-117,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 12
+    0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 13
+    0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 14
+    0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 15
+    0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 16
+    0.0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 17
+    0x1.p15,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 18
+    0.0,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 19
+    0.0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 20
+    0x1.p15,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 21
+    0x1.p15,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 22
+    0x1.p16,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 23
+    0x1.p16,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 24
+    0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 25
+    0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 26
+    0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 27
+    0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 28
+    0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 29
+    0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 30
+    0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 31
+    0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 32
+    0.0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 33
+    0x1.p117,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 34
+    0.0,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 35
+    0.0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 36
+    0.0,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 37
+    0x1.p0,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 38
+    0x1.p2,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 39
+    0x1.p0,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 40
+    0x1.p1,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 41
+    0x1.40p2,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 42
+    0x1.p1,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 43
+    0x1.80p1,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 44
+    0x1.80p2,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 45
+    0x1.80p1,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 46
+    0x1.p2,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 47
+    -0x1.40p2,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 48
+    0x1.p2,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 49
+    0x1.40p2,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 50
+    -0x1.p2,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 51
+    0x1.40p2,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 52
+    -0x1.40p2,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 53
+    -0x1.80p1,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 54
+    -0x1.p2,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 55
+    -0x1.p2,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 56
+    -0x1.p1,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 57
+    -0x1.80p1,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 58
+    -0x1.80p1,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 59
+    -0x1.p0,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 60
+    -0x1.p1,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 61
+    -0x1.p1,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 62
+    0.0,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 63
+    -0x1.p0,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 64
+    -0x1.p0,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 65
+    0x1.p0,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 66
+    0.0,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 67
+    0.0,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 68
+    0x1.p1,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 69
+    -0.0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 70
+    -0x1.p-23,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 71
+    -0x1.80p-23,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.p-23,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 73
+    -0.0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 74
+    -0x1.p-24,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 75
+    0x1.80p-23,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 76
+    0x1.p-24,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 77
+    -0.0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 78
+    -0x1.80p-23,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 79
+    -0x1.p-23,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 80
+    -0.0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 81
+    -0x1.p-24,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 82
+    -0.0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 83
+    0x1.p-23,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 84
+    -0.0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 85
+    0x1.p-24,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 86
+    0x1.80p-23,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 87
+    -0x1.80p-23,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 88
+    -0x1.p-24,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 89
+    0.0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 90
+    -0x1.p-23,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 91
+    0.0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 92
+    0x1.p-24,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 93
+    0.0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 94
+    0x1.p-23,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 95
+    0x1.80p-23,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 96
+    0.0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 97
+    -0x1.p-24,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 98
+    -0x1.80p-23,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 99
+    0x1.p-24,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 100
+    0.0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 101
+    -0x1.p-23,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 102
+    0x1.80p-23,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 103
+    0x1.p-23,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 104
+    0.0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 105
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 106
+    0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 107
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 108
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 109
+    0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 110
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 111
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 112
+    0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 113
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 114
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 115
+    0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 116
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 117
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 118
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 120
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 121
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 122
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 123
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 124
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 126
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 127
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 128
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 129
+    0x1.fffff8p-3,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 130
+    -0x1.p-1,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 131
+    -0.0,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 132
+    -0x1.p-2,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 133
+    -0.0,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 134
+    0x1.p-1,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 135
+    -0.0,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 136
+    0x1.p-2,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 137
+    -0x1.000008p-2,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 138
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 139
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 140
+    -0x1.fffff8p-2,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 141
+    -0x1.fffffcp-2,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 142
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 143
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 144
+    -0x1.fffff8p-2,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 145
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 146
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 147
+    -0x1.80p-23,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 148
+    -0.0,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 149
+    -0.0,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 150
+    -0x1.p-24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 151
+    -0.0,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 152
+    -0x1.p-22,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 153
+    -0.0,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 154
+    -0.0,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 155
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 156
+    0.0,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    -0x1.p-2,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 158
+    0x1.000008p-2,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 159
+    0x1.p-2,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 160
+    0.0,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 161
+    -0x1.p-1,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 162
+    -0x1.fffff8p-3,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 163
+    0x1.p-1,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 164
+    0.0,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 165
+    0.0,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 166
+    -0x1.p-1,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 167
+    -0x1.fffff8p-2,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 168
+    -0x1.fffffcp-2,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 169
+    0.0,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 170
+    0x1.p-23,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 171
+    -0x1.fffff8p-2,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 172
+    0.0,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 173
+    0.0,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 174
+    -0.0,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 175
+    -0.0,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 176
+    -0x1.80p-23,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 177
+    -0x1.p-22,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 178
+    -0.0,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 179
+    -0x1.p-24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 180
+    -0x1.80p-22,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 181
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 182
+    -0.0,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 183
+    0x1.fffffep127,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 184
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 185
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 186
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 187
+    0x1.p-126,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 188
+    -0x1.p-126,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 189
+    0x1.p-126,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 190
+    -0x1.p-126,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    0x1.p-149,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 192
+    -0x1.p-149,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 193
+    0x1.p-149,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 194
+    -0x1.p-149,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 196
+    -0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 197
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 198
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    0.0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 200
+    0.0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 201
+    -0.0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 202
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 203
+    0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 204
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 205
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 206
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 207
+    0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 208
+    0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 209
+    -0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 210
+    -0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 211
+    0x1.p-126,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 212
+    -0x1.p-126,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 213
+    0x1.p-126,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 214
+    -0x1.p-126,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 215
+    0x1.p-149,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 216
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 218
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 220
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 222
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    0.0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 224
+    0.0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 225
+    -0.0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 226
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 227
+    0.0,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 228
+    0.0,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 229
+    -0.0,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 230
+    -0.0,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 231
+    0x1.p-149,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 232
+    -0x1.p-149,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 233
+    0x1.p-149,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 234
+    -0x1.p-149,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 235
+    0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 236
+    -0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 237
+    0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 238
+    -0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 239
+    0.0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 240
+    -0.0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 241
+    0.0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 242
+    -0.0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 243
+    0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 244
+    -0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 245
+    0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 246
+    -0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 247
+    -0x1.p0,
+    0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 248
+    0x1.p0,
+    -0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 249
+    -0x1.p0,
+    0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 250
+    0x1.p0,
+    -0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 251
+    0x1.p0,
+    0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 252
+    -0x1.p0,
+    -0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 253
+    0x1.p0,
+    0x1.40p2,
+    -0x1.p1
+  },
+  { // Entry 254
+    -0x1.p0,
+    -0x1.40p2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_data/remquo_intel_data.h b/tests/math_data/remquo_intel_data.h
new file mode 100644
index 0000000..153b6e6
--- /dev/null
+++ b/tests/math_data/remquo_intel_data.h
@@ -0,0 +1,1584 @@
+/*
+ * 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.
+ */
+
+static data_1_int_2_t<double, double, double> g_remquo_intel_data[] = {
+  { // Entry 0
+    0x1.42967268315ap-13,
+    (int)-0x1.p1,
+    -0x1.0p-10,
+    0x1.2852ce4d062b4p-11
+  },
+  { // Entry 1
+    0x1.1ab75504464440p14,
+    (int)0x1.6a3b3618p30,
+    0x1.0295fad40a57fp117,
+    0x1.45d1745d17465p15
+  },
+  { // Entry 2
+    -0x1.d1a777081861p18,
+    (int)-0x1.0f62d4b8p30,
+    0x1.11f783ee89b08p99,
+    -0x1.fd6ef47d96f1cp19
+  },
+  { // Entry 3
+    -0x1.b0p3,
+    (int)-0x1.afe501b0p29,
+    0x1.ffffffffffffbp1023,
+    -0x1.001p10
+  },
+  { // Entry 4
+    -0x1.7d9165c00024p9,
+    (int)0x1.dd000030p29,
+    0x1.ffffffffffffbp1023,
+    0x1.0000000000003p14
+  },
+  { // Entry 5
+    -0x1.p-17,
+    (int)0.0,
+    0x1.ffffffffffffdp1023,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 6
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 7
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 8
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-117,
+    -0x1.0p-117
+  },
+  { // Entry 9
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-117,
+    0x1.0p-117
+  },
+  { // Entry 10
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 11
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 12
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p15
+  },
+  { // Entry 13
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p16
+  },
+  { // Entry 14
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 15
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 16
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p117
+  },
+  { // Entry 17
+    0x1.p-117,
+    (int)0.0,
+    0x1.0p-117,
+    0x1.0p118
+  },
+  { // Entry 18
+    0.0,
+    (int)0.0,
+    0x1.0p15,
+    -0x1.0p-117
+  },
+  { // Entry 19
+    0.0,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p-117
+  },
+  { // Entry 20
+    0.0,
+    (int)0.0,
+    0x1.0p16,
+    -0x1.0p-117
+  },
+  { // Entry 21
+    0.0,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p-117
+  },
+  { // Entry 22
+    0.0,
+    (int)0x1.p0,
+    0x1.0p15,
+    0x1.0p15
+  },
+  { // Entry 23
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p16
+  },
+  { // Entry 24
+    0.0,
+    (int)0x1.p1,
+    0x1.0p16,
+    0x1.0p15
+  },
+  { // Entry 25
+    0.0,
+    (int)0x1.p0,
+    0x1.0p16,
+    0x1.0p16
+  },
+  { // Entry 26
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p117
+  },
+  { // Entry 27
+    0x1.p15,
+    (int)0.0,
+    0x1.0p15,
+    0x1.0p118
+  },
+  { // Entry 28
+    0x1.p16,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p117
+  },
+  { // Entry 29
+    0x1.p16,
+    (int)0.0,
+    0x1.0p16,
+    0x1.0p118
+  },
+  { // Entry 30
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    -0x1.0p-117
+  },
+  { // Entry 31
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p-117
+  },
+  { // Entry 32
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    -0x1.0p-117
+  },
+  { // Entry 33
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p-117
+  },
+  { // Entry 34
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p15
+  },
+  { // Entry 35
+    0.0,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p16
+  },
+  { // Entry 36
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p15
+  },
+  { // Entry 37
+    0.0,
+    (int)0.0,
+    0x1.0p118,
+    0x1.0p16
+  },
+  { // Entry 38
+    0.0,
+    (int)0x1.p0,
+    0x1.0p117,
+    0x1.0p117
+  },
+  { // Entry 39
+    0x1.p117,
+    (int)0.0,
+    0x1.0p117,
+    0x1.0p118
+  },
+  { // Entry 40
+    0.0,
+    (int)0x1.p1,
+    0x1.0p118,
+    0x1.0p117
+  },
+  { // Entry 41
+    0.0,
+    (int)0x1.p0,
+    0x1.0p118,
+    0x1.0p118
+  },
+  { // Entry 42
+    0.0,
+    (int)0x1.40p3,
+    0x1.9p6,
+    0x1.4p3
+  },
+  { // Entry 43
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.9p6,
+    0x1.6p3
+  },
+  { // Entry 44
+    0x1.p2,
+    (int)0x1.p3,
+    0x1.9p6,
+    0x1.8p3
+  },
+  { // Entry 45
+    0x1.p0,
+    (int)0x1.40p3,
+    0x1.940p6,
+    0x1.4p3
+  },
+  { // Entry 46
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.940p6,
+    0x1.6p3
+  },
+  { // Entry 47
+    0x1.40p2,
+    (int)0x1.p3,
+    0x1.940p6,
+    0x1.8p3
+  },
+  { // Entry 48
+    0x1.p1,
+    (int)0x1.40p3,
+    0x1.980p6,
+    0x1.4p3
+  },
+  { // Entry 49
+    0x1.80p1,
+    (int)0x1.20p3,
+    0x1.980p6,
+    0x1.6p3
+  },
+  { // Entry 50
+    0x1.80p2,
+    (int)0x1.p3,
+    0x1.980p6,
+    0x1.8p3
+  },
+  { // Entry 51
+    0x1.80p1,
+    (int)0x1.40p3,
+    0x1.9c0p6,
+    0x1.4p3
+  },
+  { // Entry 52
+    0x1.p2,
+    (int)0x1.20p3,
+    0x1.9c0p6,
+    0x1.6p3
+  },
+  { // Entry 53
+    -0x1.40p2,
+    (int)0x1.20p3,
+    0x1.9c0p6,
+    0x1.8p3
+  },
+  { // Entry 54
+    0x1.p2,
+    (int)0x1.40p3,
+    0x1.ap6,
+    0x1.4p3
+  },
+  { // Entry 55
+    0x1.40p2,
+    (int)0x1.20p3,
+    0x1.ap6,
+    0x1.6p3
+  },
+  { // Entry 56
+    -0x1.p2,
+    (int)0x1.20p3,
+    0x1.ap6,
+    0x1.8p3
+  },
+  { // Entry 57
+    0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a40p6,
+    0x1.4p3
+  },
+  { // Entry 58
+    -0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a40p6,
+    0x1.6p3
+  },
+  { // Entry 59
+    -0x1.80p1,
+    (int)0x1.20p3,
+    0x1.a40p6,
+    0x1.8p3
+  },
+  { // Entry 60
+    -0x1.p2,
+    (int)0x1.60p3,
+    0x1.a80p6,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.p2,
+    (int)0x1.40p3,
+    0x1.a80p6,
+    0x1.6p3
+  },
+  { // Entry 62
+    -0x1.p1,
+    (int)0x1.20p3,
+    0x1.a80p6,
+    0x1.8p3
+  },
+  { // Entry 63
+    -0x1.80p1,
+    (int)0x1.60p3,
+    0x1.ac0p6,
+    0x1.4p3
+  },
+  { // Entry 64
+    -0x1.80p1,
+    (int)0x1.40p3,
+    0x1.ac0p6,
+    0x1.6p3
+  },
+  { // Entry 65
+    -0x1.p0,
+    (int)0x1.20p3,
+    0x1.ac0p6,
+    0x1.8p3
+  },
+  { // Entry 66
+    -0x1.p1,
+    (int)0x1.60p3,
+    0x1.bp6,
+    0x1.4p3
+  },
+  { // Entry 67
+    -0x1.p1,
+    (int)0x1.40p3,
+    0x1.bp6,
+    0x1.6p3
+  },
+  { // Entry 68
+    0.0,
+    (int)0x1.20p3,
+    0x1.bp6,
+    0x1.8p3
+  },
+  { // Entry 69
+    -0x1.p0,
+    (int)0x1.60p3,
+    0x1.b40p6,
+    0x1.4p3
+  },
+  { // Entry 70
+    -0x1.p0,
+    (int)0x1.40p3,
+    0x1.b40p6,
+    0x1.6p3
+  },
+  { // Entry 71
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.b40p6,
+    0x1.8p3
+  },
+  { // Entry 72
+    0.0,
+    (int)0x1.60p3,
+    0x1.b80p6,
+    0x1.4p3
+  },
+  { // Entry 73
+    0.0,
+    (int)0x1.40p3,
+    0x1.b80p6,
+    0x1.6p3
+  },
+  { // Entry 74
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.b80p6,
+    0x1.8p3
+  },
+  { // Entry 75
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 76
+    -0x1.p-52,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 77
+    -0x1.80p-52,
+    (int)0x1.p0,
+    -0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 78
+    0x1.p-52,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 79
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 80
+    -0x1.p-53,
+    (int)0x1.p0,
+    -0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    0x1.80p-52,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 82
+    0x1.p-53,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 83
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 84
+    -0x1.80p-52,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 85
+    -0x1.p-52,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 86
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 87
+    -0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 88
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 89
+    0x1.p-52,
+    (int)-0x1.p0,
+    -0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 90
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 91
+    0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 92
+    0x1.80p-52,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 93
+    -0x1.80p-52,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 94
+    -0x1.p-53,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.0p0
+  },
+  { // Entry 95
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 96
+    -0x1.p-52,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 97
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 98
+    0x1.p-53,
+    (int)-0x1.p0,
+    0x1.0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 99
+    0.0,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 100
+    0x1.p-52,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.0p0
+  },
+  { // Entry 101
+    0x1.80p-52,
+    (int)-0x1.p0,
+    0x1.0000000000001p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 102
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 103
+    -0x1.p-53,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0p0
+  },
+  { // Entry 104
+    -0x1.80p-52,
+    (int)0x1.p0,
+    0x1.fffffffffffffp-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 105
+    0x1.p-53,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 106
+    0.0,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 107
+    -0x1.p-52,
+    (int)0x1.p0,
+    0x1.0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 108
+    0x1.80p-52,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 109
+    0x1.p-52,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0p0
+  },
+  { // Entry 110
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 111
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 112
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 113
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 114
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 115
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 116
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 117
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 118
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 119
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 120
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 121
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 122
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 123
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 124
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 125
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 128
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 129
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 130
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 131
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 132
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 133
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 134
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 135
+    0x1.ffffffffffffc0p-3,
+    (int)-0x1.p0,
+    -0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 136
+    -0x1.p-1,
+    (int)0.0,
+    -0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 137
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 138
+    -0x1.p-2,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    -0.0,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 140
+    0x1.p-1,
+    (int)0.0,
+    -0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 141
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 142
+    0x1.p-2,
+    (int)0.0,
+    -0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 143
+    -0x1.00000000000040p-2,
+    (int)-0x1.fffffffcp30,
+    -0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 144
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 145
+    -0x1.p-1,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 146
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 147
+    -0x1.ffffffffffffe0p-2,
+    (int)0x1.p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 148
+    0.0,
+    (int)0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 149
+    0x1.p-52,
+    (int)0x1.fffffffcp30,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 150
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.p1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 151
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 152
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 153
+    -0x1.80p-52,
+    (int)-0x1.80p1,
+    -0x1.0000000000001p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 154
+    -0.0,
+    (int)-0x1.p1,
+    -0x1.0000000000001p53,
+    0x1.0p0
+  },
+  { // Entry 155
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 156
+    -0x1.p-53,
+    (int)-0x1.p0,
+    -0x1.0p53,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 157
+    -0.0,
+    (int)0.0,
+    -0x1.0p53,
+    0x1.0p0
+  },
+  { // Entry 158
+    -0x1.p-51,
+    (int)-0x1.fffffff8p30,
+    -0x1.0p53,
+    0x1.0000000000001p0
+  },
+  { // Entry 159
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 160
+    -0.0,
+    (int)-0x1.fffffffcp30,
+    -0x1.fffffffffffffp52,
+    0x1.0p0
+  },
+  { // Entry 161
+    -0x1.80p-51,
+    (int)-0x1.fffffff4p30,
+    -0x1.fffffffffffffp52,
+    0x1.0000000000001p0
+  },
+  { // Entry 162
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp50,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 163
+    -0x1.p-2,
+    (int)0.0,
+    0x1.fffffffffffffp50,
+    0x1.0p0
+  },
+  { // Entry 164
+    0x1.00000000000040p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp50,
+    0x1.0000000000001p0
+  },
+  { // Entry 165
+    0x1.p-2,
+    (int)0.0,
+    0x1.0p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 166
+    0.0,
+    (int)0.0,
+    0x1.0p51,
+    0x1.0p0
+  },
+  { // Entry 167
+    -0x1.p-1,
+    (int)0.0,
+    0x1.0p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 168
+    -0x1.ffffffffffffc0p-3,
+    (int)0x1.p0,
+    0x1.0000000000001p51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 169
+    0x1.p-1,
+    (int)0.0,
+    0x1.0000000000001p51,
+    0x1.0p0
+  },
+  { // Entry 170
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p51,
+    0x1.0000000000001p0
+  },
+  { // Entry 171
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 172
+    -0x1.p-1,
+    (int)0.0,
+    0x1.fffffffffffffp51,
+    0x1.0p0
+  },
+  { // Entry 173
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.fffffffcp30,
+    0x1.fffffffffffffp51,
+    0x1.0000000000001p0
+  },
+  { // Entry 174
+    -0x1.ffffffffffffe0p-2,
+    (int)0x1.p0,
+    0x1.0p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 175
+    0.0,
+    (int)0.0,
+    0x1.0p52,
+    0x1.0p0
+  },
+  { // Entry 176
+    0x1.p-52,
+    (int)0x1.fffffffcp30,
+    0x1.0p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 177
+    -0x1.ffffffffffffc0p-2,
+    (int)0x1.p1,
+    0x1.0000000000001p52,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 178
+    0.0,
+    (int)0x1.p0,
+    0x1.0000000000001p52,
+    0x1.0p0
+  },
+  { // Entry 179
+    0.0,
+    (int)0.0,
+    0x1.0000000000001p52,
+    0x1.0000000000001p0
+  },
+  { // Entry 180
+    -0.0,
+    (int)0.0,
+    -0x1.0000000000001p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 181
+    -0.0,
+    (int)0x1.p1,
+    -0x1.0000000000001p53,
+    -0x1.0p0
+  },
+  { // Entry 182
+    -0x1.80p-52,
+    (int)0x1.80p1,
+    -0x1.0000000000001p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 183
+    -0x1.p-51,
+    (int)0x1.fffffff8p30,
+    -0x1.0p53,
+    -0x1.0000000000001p0
+  },
+  { // Entry 184
+    -0.0,
+    (int)0.0,
+    -0x1.0p53,
+    -0x1.0p0
+  },
+  { // Entry 185
+    -0x1.p-53,
+    (int)0x1.p0,
+    -0x1.0p53,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 186
+    -0x1.80p-51,
+    (int)0x1.fffffff4p30,
+    -0x1.fffffffffffffp52,
+    -0x1.0000000000001p0
+  },
+  { // Entry 187
+    -0.0,
+    (int)0x1.fffffffcp30,
+    -0x1.fffffffffffffp52,
+    -0x1.0p0
+  },
+  { // Entry 188
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp52,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p1023,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 190
+    -0x1.fffffffffffff0p1023,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 191
+    0x1.fffffffffffff0p1023,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 192
+    -0x1.fffffffffffff0p1023,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 193
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 194
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 195
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 196
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 197
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 198
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 199
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 200
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 201
+    0.0,
+    (int)0.0,
+    0.0,
+    HUGE_VAL
+  },
+  { // Entry 202
+    -0.0,
+    (int)0.0,
+    -0.0,
+    HUGE_VAL
+  },
+  { // Entry 203
+    0.0,
+    (int)0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 204
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 205
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 206
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 207
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 208
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 209
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 210
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 211
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1022
+  },
+  { // Entry 212
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1022
+  },
+  { // Entry 213
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 214
+    0.0,
+    (int)0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 215
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    0x1.0p-1074
+  },
+  { // Entry 216
+    -0.0,
+    (int)0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.0p-1074
+  },
+  { // Entry 217
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 218
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 219
+    0x1.p-1022,
+    (int)0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 220
+    -0x1.p-1022,
+    (int)0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 221
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 222
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 223
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 224
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 225
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 226
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 227
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 228
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 229
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 230
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 231
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 232
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 233
+    0.0,
+    (int)0.0,
+    0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 234
+    0.0,
+    (int)0.0,
+    0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 235
+    -0.0,
+    (int)0.0,
+    -0x1.0p-1022,
+    0x1.0p-1074
+  },
+  { // Entry 236
+    -0.0,
+    (int)0.0,
+    -0x1.0p-1022,
+    -0x1.0p-1074
+  },
+  { // Entry 237
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 238
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    0x1.0p-1022
+  },
+  { // Entry 239
+    0x1.p-1074,
+    (int)0.0,
+    0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 240
+    -0x1.p-1074,
+    (int)0.0,
+    -0x1.0p-1074,
+    -0x1.0p-1022
+  },
+  { // Entry 241
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 242
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1022
+  },
+  { // Entry 243
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 244
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 245
+    0.0,
+    (int)0x1.p0,
+    0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 246
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.0p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 247
+    0.0,
+    (int)-0x1.p0,
+    0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 248
+    -0.0,
+    (int)0x1.p0,
+    -0x1.0p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 249
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 250
+    -0.0,
+    (int)0.0,
+    -0.0,
+    0x1.0p-1074
+  },
+  { // Entry 251
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 252
+    -0.0,
+    (int)0.0,
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 253
+    -0x1.p0,
+    (int)0x1.p1,
+    0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 254
+    0x1.p0,
+    (int)-0x1.p1,
+    -0x1.8p1,
+    0x1.0p1
+  },
+  { // Entry 255
+    -0x1.p0,
+    (int)-0x1.p1,
+    0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 256
+    0x1.p0,
+    (int)0x1.p1,
+    -0x1.8p1,
+    -0x1.0p1
+  },
+  { // Entry 257
+    0x1.p0,
+    (int)0x1.p1,
+    0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 258
+    -0x1.p0,
+    (int)-0x1.p1,
+    -0x1.4p2,
+    0x1.0p1
+  },
+  { // Entry 259
+    0x1.p0,
+    (int)-0x1.p1,
+    0x1.4p2,
+    -0x1.0p1
+  },
+  { // Entry 260
+    -0x1.p0,
+    (int)0x1.p1,
+    -0x1.4p2,
+    -0x1.0p1
+  }
+};
diff --git a/tests/math_data/remquof_intel_data.h b/tests/math_data/remquof_intel_data.h
new file mode 100644
index 0000000..2eebbae
--- /dev/null
+++ b/tests/math_data/remquof_intel_data.h
@@ -0,0 +1,1578 @@
+/*
+ * 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.
+ */
+
+static data_1_int_2_t<float, float, float> g_remquof_intel_data[] = {
+  { // Entry 0
+    0x1.72c2c0p18,
+    (int)-0x1.b37d2b60p28,
+    -0x1.285308p99,
+    0x1.7a4110p19
+  },
+  { // Entry 1
+    -0x1.96dfb0p13,
+    (int)0x1.212d5d58p30,
+    0x1.0295fap117,
+    0x1.0cede2p15
+  },
+  { // Entry 2
+    0x1.fd0030p20,
+    (int)-0x1.007ff8p22,
+    0x1.ffffe6p127,
+    -0x1.000006p22
+  },
+  { // Entry 3
+    0x1.4782b0p2,
+    (int)0x1.4323c158p30,
+    0x1.fffff8p127,
+    0x1.dffffep4
+  },
+  { // Entry 4
+    -0x1.p-11,
+    (int)0x1.ffffc0p30,
+    0x1.fffffap127,
+    0x1.fffffcp-1
+  },
+  { // Entry 5
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 6
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 7
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-117,
+    -0x1.p-117
+  },
+  { // Entry 8
+    0.0,
+    (int)0x1.p0,
+    0x1.p-117,
+    0x1.p-117
+  },
+  { // Entry 9
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 10
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 11
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p15
+  },
+  { // Entry 12
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p16
+  },
+  { // Entry 13
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 14
+    -0x1.p-117,
+    (int)0.0,
+    -0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 15
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p117
+  },
+  { // Entry 16
+    0x1.p-117,
+    (int)0.0,
+    0x1.p-117,
+    0x1.p118
+  },
+  { // Entry 17
+    0.0,
+    (int)0.0,
+    0x1.p15,
+    -0x1.p-117
+  },
+  { // Entry 18
+    0.0,
+    (int)0.0,
+    0x1.p15,
+    0x1.p-117
+  },
+  { // Entry 19
+    0.0,
+    (int)0.0,
+    0x1.p16,
+    -0x1.p-117
+  },
+  { // Entry 20
+    0.0,
+    (int)0.0,
+    0x1.p16,
+    0x1.p-117
+  },
+  { // Entry 21
+    0.0,
+    (int)0x1.p0,
+    0x1.p15,
+    0x1.p15
+  },
+  { // Entry 22
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p16
+  },
+  { // Entry 23
+    0.0,
+    (int)0x1.p1,
+    0x1.p16,
+    0x1.p15
+  },
+  { // Entry 24
+    0.0,
+    (int)0x1.p0,
+    0x1.p16,
+    0x1.p16
+  },
+  { // Entry 25
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p117
+  },
+  { // Entry 26
+    0x1.p15,
+    (int)0.0,
+    0x1.p15,
+    0x1.p118
+  },
+  { // Entry 27
+    0x1.p16,
+    (int)0.0,
+    0x1.p16,
+    0x1.p117
+  },
+  { // Entry 28
+    0x1.p16,
+    (int)0.0,
+    0x1.p16,
+    0x1.p118
+  },
+  { // Entry 29
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    -0x1.p-117
+  },
+  { // Entry 30
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p-117
+  },
+  { // Entry 31
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    -0x1.p-117
+  },
+  { // Entry 32
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p-117
+  },
+  { // Entry 33
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p15
+  },
+  { // Entry 34
+    0.0,
+    (int)0.0,
+    0x1.p117,
+    0x1.p16
+  },
+  { // Entry 35
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p15
+  },
+  { // Entry 36
+    0.0,
+    (int)0.0,
+    0x1.p118,
+    0x1.p16
+  },
+  { // Entry 37
+    0.0,
+    (int)0x1.p0,
+    0x1.p117,
+    0x1.p117
+  },
+  { // Entry 38
+    0x1.p117,
+    (int)0.0,
+    0x1.p117,
+    0x1.p118
+  },
+  { // Entry 39
+    0.0,
+    (int)0x1.p1,
+    0x1.p118,
+    0x1.p117
+  },
+  { // Entry 40
+    0.0,
+    (int)0x1.p0,
+    0x1.p118,
+    0x1.p118
+  },
+  { // Entry 41
+    0.0,
+    (int)0x1.40p3,
+    0x1.90p6,
+    0x1.40p3
+  },
+  { // Entry 42
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.90p6,
+    0x1.60p3
+  },
+  { // Entry 43
+    0x1.p2,
+    (int)0x1.p3,
+    0x1.90p6,
+    0x1.80p3
+  },
+  { // Entry 44
+    0x1.p0,
+    (int)0x1.40p3,
+    0x1.94p6,
+    0x1.40p3
+  },
+  { // Entry 45
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.94p6,
+    0x1.60p3
+  },
+  { // Entry 46
+    0x1.40p2,
+    (int)0x1.p3,
+    0x1.94p6,
+    0x1.80p3
+  },
+  { // Entry 47
+    0x1.p1,
+    (int)0x1.40p3,
+    0x1.98p6,
+    0x1.40p3
+  },
+  { // Entry 48
+    0x1.80p1,
+    (int)0x1.20p3,
+    0x1.98p6,
+    0x1.60p3
+  },
+  { // Entry 49
+    0x1.80p2,
+    (int)0x1.p3,
+    0x1.98p6,
+    0x1.80p3
+  },
+  { // Entry 50
+    0x1.80p1,
+    (int)0x1.40p3,
+    0x1.9cp6,
+    0x1.40p3
+  },
+  { // Entry 51
+    0x1.p2,
+    (int)0x1.20p3,
+    0x1.9cp6,
+    0x1.60p3
+  },
+  { // Entry 52
+    -0x1.40p2,
+    (int)0x1.20p3,
+    0x1.9cp6,
+    0x1.80p3
+  },
+  { // Entry 53
+    0x1.p2,
+    (int)0x1.40p3,
+    0x1.a0p6,
+    0x1.40p3
+  },
+  { // Entry 54
+    0x1.40p2,
+    (int)0x1.20p3,
+    0x1.a0p6,
+    0x1.60p3
+  },
+  { // Entry 55
+    -0x1.p2,
+    (int)0x1.20p3,
+    0x1.a0p6,
+    0x1.80p3
+  },
+  { // Entry 56
+    0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a4p6,
+    0x1.40p3
+  },
+  { // Entry 57
+    -0x1.40p2,
+    (int)0x1.40p3,
+    0x1.a4p6,
+    0x1.60p3
+  },
+  { // Entry 58
+    -0x1.80p1,
+    (int)0x1.20p3,
+    0x1.a4p6,
+    0x1.80p3
+  },
+  { // Entry 59
+    -0x1.p2,
+    (int)0x1.60p3,
+    0x1.a8p6,
+    0x1.40p3
+  },
+  { // Entry 60
+    -0x1.p2,
+    (int)0x1.40p3,
+    0x1.a8p6,
+    0x1.60p3
+  },
+  { // Entry 61
+    -0x1.p1,
+    (int)0x1.20p3,
+    0x1.a8p6,
+    0x1.80p3
+  },
+  { // Entry 62
+    -0x1.80p1,
+    (int)0x1.60p3,
+    0x1.acp6,
+    0x1.40p3
+  },
+  { // Entry 63
+    -0x1.80p1,
+    (int)0x1.40p3,
+    0x1.acp6,
+    0x1.60p3
+  },
+  { // Entry 64
+    -0x1.p0,
+    (int)0x1.20p3,
+    0x1.acp6,
+    0x1.80p3
+  },
+  { // Entry 65
+    -0x1.p1,
+    (int)0x1.60p3,
+    0x1.b0p6,
+    0x1.40p3
+  },
+  { // Entry 66
+    -0x1.p1,
+    (int)0x1.40p3,
+    0x1.b0p6,
+    0x1.60p3
+  },
+  { // Entry 67
+    0.0,
+    (int)0x1.20p3,
+    0x1.b0p6,
+    0x1.80p3
+  },
+  { // Entry 68
+    -0x1.p0,
+    (int)0x1.60p3,
+    0x1.b4p6,
+    0x1.40p3
+  },
+  { // Entry 69
+    -0x1.p0,
+    (int)0x1.40p3,
+    0x1.b4p6,
+    0x1.60p3
+  },
+  { // Entry 70
+    0x1.p0,
+    (int)0x1.20p3,
+    0x1.b4p6,
+    0x1.80p3
+  },
+  { // Entry 71
+    0.0,
+    (int)0x1.60p3,
+    0x1.b8p6,
+    0x1.40p3
+  },
+  { // Entry 72
+    0.0,
+    (int)0x1.40p3,
+    0x1.b8p6,
+    0x1.60p3
+  },
+  { // Entry 73
+    0x1.p1,
+    (int)0x1.20p3,
+    0x1.b8p6,
+    0x1.80p3
+  },
+  { // Entry 74
+    -0.0,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 75
+    -0x1.p-23,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 76
+    -0x1.80p-23,
+    (int)0x1.p0,
+    -0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 77
+    0x1.p-23,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 78
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 79
+    -0x1.p-24,
+    (int)0x1.p0,
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 80
+    0x1.80p-23,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 81
+    0x1.p-24,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 82
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 83
+    -0x1.80p-23,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 84
+    -0x1.p-23,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 85
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 86
+    -0x1.p-24,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 87
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 88
+    0x1.p-23,
+    (int)-0x1.p0,
+    -0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 89
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 90
+    0x1.p-24,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 91
+    0x1.80p-23,
+    (int)-0x1.p0,
+    -0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 92
+    -0x1.80p-23,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.000002p0
+  },
+  { // Entry 93
+    -0x1.p-24,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.p0
+  },
+  { // Entry 94
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 95
+    -0x1.p-23,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 96
+    0.0,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 97
+    0x1.p-24,
+    (int)-0x1.p0,
+    0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 98
+    0.0,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 99
+    0x1.p-23,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.p0
+  },
+  { // Entry 100
+    0x1.80p-23,
+    (int)-0x1.p0,
+    0x1.000002p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 101
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.fffffep-1
+  },
+  { // Entry 102
+    -0x1.p-24,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.p0
+  },
+  { // Entry 103
+    -0x1.80p-23,
+    (int)0x1.p0,
+    0x1.fffffep-1,
+    0x1.000002p0
+  },
+  { // Entry 104
+    0x1.p-24,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 105
+    0.0,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 106
+    -0x1.p-23,
+    (int)0x1.p0,
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 107
+    0x1.80p-23,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.fffffep-1
+  },
+  { // Entry 108
+    0x1.p-23,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.p0
+  },
+  { // Entry 109
+    0.0,
+    (int)0x1.p0,
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 110
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 111
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 112
+    0.0,
+    (int)0x1.p0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 113
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 114
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.p-149
+  },
+  { // Entry 115
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 116
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 117
+    0.0,
+    (int)0.0,
+    0.0,
+    0x1.fffffep127
+  },
+  { // Entry 118
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 119
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 120
+    0.0,
+    (int)0.0,
+    0.0,
+    -0x1.fffffep127
+  },
+  { // Entry 121
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 122
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 123
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 124
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 125
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 126
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 127
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 128
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 129
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 130
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 131
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 132
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 133
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 134
+    0x1.fffff8p-3,
+    (int)-0x1.000004p22,
+    -0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 135
+    -0x1.p-1,
+    (int)-0x1.p22,
+    -0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 136
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 137
+    -0x1.p-2,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 138
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.p0
+  },
+  { // Entry 139
+    0x1.p-1,
+    (int)-0x1.p22,
+    -0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 140
+    -0.0,
+    (int)-0x1.p22,
+    -0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    0x1.p-2,
+    (int)-0x1.p22,
+    -0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 142
+    -0x1.000008p-2,
+    (int)-0x1.fffff8p21,
+    -0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 143
+    0.0,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 144
+    -0x1.p-1,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 145
+    -0x1.fffff8p-2,
+    (int)0x1.fffffcp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 146
+    -0x1.fffffcp-2,
+    (int)0x1.000002p23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 147
+    0.0,
+    (int)0x1.p23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 148
+    0x1.p-23,
+    (int)0x1.fffffcp22,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 149
+    -0x1.fffff8p-2,
+    (int)0x1.000004p23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 150
+    0.0,
+    (int)0x1.000002p23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 151
+    0.0,
+    (int)0x1.p23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 152
+    -0x1.80p-23,
+    (int)-0x1.000003p24,
+    -0x1.000002p24,
+    0x1.fffffep-1
+  },
+  { // Entry 153
+    -0.0,
+    (int)-0x1.000002p24,
+    -0x1.000002p24,
+    0x1.p0
+  },
+  { // Entry 154
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.000002p24,
+    0x1.000002p0
+  },
+  { // Entry 155
+    -0x1.p-24,
+    (int)-0x1.000001p24,
+    -0x1.p24,
+    0x1.fffffep-1
+  },
+  { // Entry 156
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.p24,
+    0x1.p0
+  },
+  { // Entry 157
+    -0x1.p-22,
+    (int)-0x1.fffffcp23,
+    -0x1.p24,
+    0x1.000002p0
+  },
+  { // Entry 158
+    -0.0,
+    (int)-0x1.p24,
+    -0x1.fffffep23,
+    0x1.fffffep-1
+  },
+  { // Entry 159
+    -0.0,
+    (int)-0x1.fffffep23,
+    -0x1.fffffep23,
+    0x1.p0
+  },
+  { // Entry 160
+    -0x1.80p-22,
+    (int)-0x1.fffffap23,
+    -0x1.fffffep23,
+    0x1.000002p0
+  },
+  { // Entry 161
+    0.0,
+    (int)0x1.p22,
+    0x1.fffffep21,
+    0x1.fffffep-1
+  },
+  { // Entry 162
+    -0x1.p-2,
+    (int)0x1.p22,
+    0x1.fffffep21,
+    0x1.p0
+  },
+  { // Entry 163
+    0x1.000008p-2,
+    (int)0x1.fffff8p21,
+    0x1.fffffep21,
+    0x1.000002p0
+  },
+  { // Entry 164
+    0x1.p-2,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.fffffep-1
+  },
+  { // Entry 165
+    0.0,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.p0
+  },
+  { // Entry 166
+    -0x1.p-1,
+    (int)0x1.p22,
+    0x1.p22,
+    0x1.000002p0
+  },
+  { // Entry 167
+    -0x1.fffff8p-3,
+    (int)0x1.000004p22,
+    0x1.000002p22,
+    0x1.fffffep-1
+  },
+  { // Entry 168
+    0x1.p-1,
+    (int)0x1.p22,
+    0x1.000002p22,
+    0x1.p0
+  },
+  { // Entry 169
+    0.0,
+    (int)0x1.p22,
+    0x1.000002p22,
+    0x1.000002p0
+  },
+  { // Entry 170
+    0.0,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.fffffep-1
+  },
+  { // Entry 171
+    -0x1.p-1,
+    (int)0x1.p23,
+    0x1.fffffep22,
+    0x1.p0
+  },
+  { // Entry 172
+    -0x1.fffff8p-2,
+    (int)0x1.fffffcp22,
+    0x1.fffffep22,
+    0x1.000002p0
+  },
+  { // Entry 173
+    -0x1.fffffcp-2,
+    (int)0x1.000002p23,
+    0x1.p23,
+    0x1.fffffep-1
+  },
+  { // Entry 174
+    0.0,
+    (int)0x1.p23,
+    0x1.p23,
+    0x1.p0
+  },
+  { // Entry 175
+    0x1.p-23,
+    (int)0x1.fffffcp22,
+    0x1.p23,
+    0x1.000002p0
+  },
+  { // Entry 176
+    -0x1.fffff8p-2,
+    (int)0x1.000004p23,
+    0x1.000002p23,
+    0x1.fffffep-1
+  },
+  { // Entry 177
+    0.0,
+    (int)0x1.000002p23,
+    0x1.000002p23,
+    0x1.p0
+  },
+  { // Entry 178
+    0.0,
+    (int)0x1.p23,
+    0x1.000002p23,
+    0x1.000002p0
+  },
+  { // Entry 179
+    -0.0,
+    (int)0x1.p24,
+    -0x1.000002p24,
+    -0x1.000002p0
+  },
+  { // Entry 180
+    -0.0,
+    (int)0x1.000002p24,
+    -0x1.000002p24,
+    -0x1.p0
+  },
+  { // Entry 181
+    -0x1.80p-23,
+    (int)0x1.000003p24,
+    -0x1.000002p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 182
+    -0x1.p-22,
+    (int)0x1.fffffcp23,
+    -0x1.p24,
+    -0x1.000002p0
+  },
+  { // Entry 183
+    -0.0,
+    (int)0x1.p24,
+    -0x1.p24,
+    -0x1.p0
+  },
+  { // Entry 184
+    -0x1.p-24,
+    (int)0x1.000001p24,
+    -0x1.p24,
+    -0x1.fffffep-1
+  },
+  { // Entry 185
+    -0x1.80p-22,
+    (int)0x1.fffffap23,
+    -0x1.fffffep23,
+    -0x1.000002p0
+  },
+  { // Entry 186
+    -0.0,
+    (int)0x1.fffffep23,
+    -0x1.fffffep23,
+    -0x1.p0
+  },
+  { // Entry 187
+    -0.0,
+    (int)0x1.p24,
+    -0x1.fffffep23,
+    -0x1.fffffep-1
+  },
+  { // Entry 188
+    0x1.fffffep127,
+    (int)0.0,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 189
+    -0x1.fffffep127,
+    (int)0.0,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 190
+    0x1.fffffep127,
+    (int)0.0,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 191
+    -0x1.fffffep127,
+    (int)0.0,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 192
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 193
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 194
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 195
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 196
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 197
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 198
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 199
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 200
+    0.0,
+    (int)0.0,
+    0.0f,
+    HUGE_VALF
+  },
+  { // Entry 201
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    HUGE_VALF
+  },
+  { // Entry 202
+    0.0,
+    (int)0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 203
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 204
+    0.0,
+    (int)0x1.p0,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 205
+    0.0,
+    (int)-0x1.p0,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 206
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 207
+    -0.0,
+    (int)0x1.p0,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 208
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 209
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 210
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-126
+  },
+  { // Entry 211
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-126
+  },
+  { // Entry 212
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 213
+    0.0,
+    (int)0.0,
+    0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 214
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    0x1.p-149
+  },
+  { // Entry 215
+    -0.0,
+    (int)0.0,
+    -0x1.fffffep127,
+    -0x1.p-149
+  },
+  { // Entry 216
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 217
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 218
+    0x1.p-126,
+    (int)0.0,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 219
+    -0x1.p-126,
+    (int)0.0,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 220
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 221
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 222
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 223
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 224
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 225
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 226
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 227
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 228
+    0.0,
+    (int)0x1.p0,
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 229
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 230
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 231
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 232
+    0.0,
+    (int)0x1.p23,
+    0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 233
+    0.0,
+    (int)-0x1.p23,
+    0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 234
+    -0.0,
+    (int)-0x1.p23,
+    -0x1.p-126,
+    0x1.p-149
+  },
+  { // Entry 235
+    -0.0,
+    (int)0x1.p23,
+    -0x1.p-126,
+    -0x1.p-149
+  },
+  { // Entry 236
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 237
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    0x1.p-126
+  },
+  { // Entry 238
+    0x1.p-149,
+    (int)0.0,
+    0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 239
+    -0x1.p-149,
+    (int)0.0,
+    -0x1.p-149,
+    -0x1.p-126
+  },
+  { // Entry 240
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.p-126
+  },
+  { // Entry 241
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.p-126
+  },
+  { // Entry 242
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.p-126
+  },
+  { // Entry 243
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.p-126
+  },
+  { // Entry 244
+    0.0,
+    (int)0x1.p0,
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 245
+    -0.0,
+    (int)-0x1.p0,
+    -0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 246
+    0.0,
+    (int)-0x1.p0,
+    0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 247
+    -0.0,
+    (int)0x1.p0,
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 248
+    0.0,
+    (int)0.0,
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 249
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    0x1.p-149
+  },
+  { // Entry 250
+    0.0,
+    (int)0.0,
+    0.0f,
+    -0x1.p-149
+  },
+  { // Entry 251
+    -0.0,
+    (int)0.0,
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 252
+    -0x1.p0,
+    (int)0x1.p1,
+    0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 253
+    0x1.p0,
+    (int)-0x1.p1,
+    -0x1.80p1,
+    0x1.p1
+  },
+  { // Entry 254
+    -0x1.p0,
+    (int)-0x1.p1,
+    0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 255
+    0x1.p0,
+    (int)0x1.p1,
+    -0x1.80p1,
+    -0x1.p1
+  },
+  { // Entry 256
+    0x1.p0,
+    (int)0x1.p1,
+    0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 257
+    -0x1.p0,
+    (int)-0x1.p1,
+    -0x1.40p2,
+    0x1.p1
+  },
+  { // Entry 258
+    0x1.p0,
+    (int)-0x1.p1,
+    0x1.40p2,
+    -0x1.p1
+  },
+  { // Entry 259
+    -0x1.p0,
+    (int)0x1.p1,
+    -0x1.40p2,
+    -0x1.p1
+  }
+};
diff --git a/tests/math_data/rint_intel_data.h b/tests/math_data/rint_intel_data.h
new file mode 100644
index 0000000..10abff3
--- /dev/null
+++ b/tests/math_data/rint_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_rint_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/rintf_intel_data.h b/tests/math_data/rintf_intel_data.h
new file mode 100644
index 0000000..aeca830
--- /dev/null
+++ b/tests/math_data/rintf_intel_data.h
@@ -0,0 +1,1358 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_rintf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.67e9d8p-2
+  },
+  { // Entry 1
+    0x1.000008p21,
+    0x1.000006p21
+  },
+  { // Entry 2
+    0x1.fffd48p21,
+    0x1.fffd46p21
+  },
+  { // Entry 3
+    0x1.fffff8p21,
+    0x1.fffff6p21
+  },
+  { // Entry 4
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 5
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 6
+    0.0,
+    0.0
+  },
+  { // Entry 7
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 8
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 9
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 18
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 19
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 20
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 21
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 22
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 24
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 25
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 26
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 27
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 28
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 31
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 32
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 33
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 34
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 35
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 36
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 37
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 38
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 39
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 40
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 41
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 42
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 43
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 44
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 45
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 46
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 47
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 48
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 49
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 50
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 52
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 53
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 55
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 56
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 59
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 61
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 62
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 63
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 64
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 65
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 67
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 68
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 69
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 70
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 71
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 73
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 74
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 75
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 76
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 77
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 78
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 79
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 80
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 81
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 82
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 83
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 84
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 85
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 86
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 87
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 88
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 89
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 90
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 91
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 92
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 93
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 94
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 95
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 96
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 123
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 126
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 133
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 134
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 135
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 136
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 137
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 138
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 139
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 166
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 169
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 176
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 177
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 178
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 179
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 180
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 181
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 182
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 183
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 184
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 185
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 186
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 187
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 188
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 189
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 190
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 191
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 192
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 193
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 194
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 195
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 196
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 197
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 198
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 199
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 200
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 201
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 202
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 203
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 204
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 205
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 206
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 207
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 208
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 209
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 210
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 211
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 212
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 213
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 214
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 215
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 216
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 217
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 218
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 219
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 220
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 221
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 222
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 223
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 224
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 225
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 226
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 227
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 228
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 229
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 230
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 231
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 232
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 233
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 234
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 235
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 236
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 237
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 238
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 239
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 240
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 241
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 242
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 243
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 244
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 245
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 246
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 247
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 248
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 249
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 250
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 251
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 252
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 253
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 254
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 255
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 256
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 257
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 258
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 259
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 260
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 261
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 262
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 263
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 264
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 265
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 266
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 267
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 268
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 269
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 270
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 271
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 272
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 273
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 274
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 275
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 276
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 277
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 278
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 279
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 280
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 281
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 282
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 283
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 284
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 285
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 286
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 287
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 288
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 289
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 290
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 291
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 292
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 293
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 294
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 295
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 296
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 297
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 298
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 300
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 301
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 302
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 303
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 304
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 305
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 306
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 307
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 309
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 311
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 313
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 315
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 316
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 317
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 318
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 319
+    0.0,
+    0.0f
+  },
+  { // Entry 320
+    -0.0,
+    -0.0f
+  },
+  { // Entry 321
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 322
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 323
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 324
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 325
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 326
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 328
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 329
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 330
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 331
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 332
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 333
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 334
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/round_intel_data.h b/tests/math_data/round_intel_data.h
new file mode 100644
index 0000000..f2b8502
--- /dev/null
+++ b/tests/math_data/round_intel_data.h
@@ -0,0 +1,1350 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_round_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 1
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 2
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 3
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 4
+    -0.0,
+    -0.0
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 18
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 19
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 20
+    0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 24
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 25
+    0x1.94p6,
+    0x1.920p6
+  },
+  { // Entry 26
+    0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 30
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 31
+    0x1.f480p9,
+    0x1.f44p9
+  },
+  { // Entry 32
+    0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 33
+    0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 34
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 35
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 36
+    0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 37
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 38
+    0x1.00000000000020p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 39
+    0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 40
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 41
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 43
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 44
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 46
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 47
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 48
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 61
+    -0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 62
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 63
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 67
+    -0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 68
+    -0x1.94p6,
+    -0x1.920p6
+  },
+  { // Entry 69
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 73
+    -0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 74
+    -0x1.f480p9,
+    -0x1.f44p9
+  },
+  { // Entry 75
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 76
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 77
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 78
+    -0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 79
+    -0x1.00000000000020p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 80
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 81
+    -0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 82
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 83
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 84
+    -0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 85
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 86
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 88
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 89
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 90
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 91
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 92
+    0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 93
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 94
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 102
+    0x1.fffffffcp30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 103
+    0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 112
+    0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 113
+    0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 122
+    0x1.00000002p31,
+    0x1.000000010p31
+  },
+  { // Entry 123
+    0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 124
+    0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 125
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 126
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 127
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 128
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 129
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 130
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 131
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 132
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 133
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 134
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 135
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 136
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 137
+    -0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 138
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 139
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 143
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 144
+    -0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 146
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 147
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 148
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 149
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 153
+    -0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 154
+    -0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 156
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 157
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 158
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 159
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 163
+    -0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 164
+    -0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 165
+    -0x1.00000002p31,
+    -0x1.000000010p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 176
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 177
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 178
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 179
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 180
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 181
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 182
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 183
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 184
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 185
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 186
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 187
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 188
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 189
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 190
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 191
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 192
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 193
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 194
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 195
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 196
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 197
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 198
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 199
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 200
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 201
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 202
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 203
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 204
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 205
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 206
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 207
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 208
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 209
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 210
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 211
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 212
+    0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 213
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 214
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 215
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 216
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 217
+    -0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 218
+    0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 219
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 220
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 221
+    0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 222
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 223
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 224
+    0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 225
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 226
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 227
+    0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 228
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 229
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 230
+    0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 231
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 232
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 233
+    0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 234
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 235
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 236
+    0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 237
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 238
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 239
+    0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 240
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 241
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 242
+    0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 243
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 244
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 245
+    0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 246
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 247
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 248
+    0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 249
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 250
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 251
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 252
+    0x1.40p2,
+    0x1.2p2
+  },
+  { // Entry 253
+    0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 254
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 255
+    0x1.20p3,
+    0x1.1p3
+  },
+  { // Entry 256
+    0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 257
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 258
+    0x1.10p4,
+    0x1.080p4
+  },
+  { // Entry 259
+    0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 260
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 261
+    0x1.08p5,
+    0x1.040p5
+  },
+  { // Entry 262
+    0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 263
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 264
+    0x1.04p6,
+    0x1.020p6
+  },
+  { // Entry 265
+    0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 266
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 267
+    0x1.02p7,
+    0x1.010p7
+  },
+  { // Entry 268
+    0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 269
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 270
+    0x1.01p8,
+    0x1.008p8
+  },
+  { // Entry 271
+    0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 272
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 273
+    0x1.0080p9,
+    0x1.004p9
+  },
+  { // Entry 274
+    0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 275
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.002p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 278
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 279
+    0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 280
+    0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 281
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 282
+    0x1.0020p11,
+    0x1.001p11
+  },
+  { // Entry 283
+    0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 284
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 285
+    0x1.0010p12,
+    0x1.00080p12
+  },
+  { // Entry 286
+    0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 287
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 288
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 289
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 290
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 291
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 292
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 293
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 294
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 295
+    0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 296
+    -0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 297
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 298
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 299
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 300
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 301
+    0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 302
+    -0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 303
+    0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 304
+    -0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 305
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 306
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 307
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 308
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 309
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 310
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 311
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 312
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 313
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 314
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 315
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 316
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 317
+    0.0,
+    0.0
+  },
+  { // Entry 318
+    -0.0,
+    -0.0
+  },
+  { // Entry 319
+    0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 320
+    -0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 321
+    0x1.80p1,
+    0x1.4p1
+  },
+  { // Entry 322
+    -0x1.80p1,
+    -0x1.4p1
+  },
+  { // Entry 323
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 324
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 325
+    0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 326
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 327
+    -0x1.p0,
+    -0x1.0p-1
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 329
+    0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 330
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 331
+    -0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 332
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/roundf_intel_data.h b/tests/math_data/roundf_intel_data.h
new file mode 100644
index 0000000..467cdef
--- /dev/null
+++ b/tests/math_data/roundf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_roundf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.94p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f480p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.000004p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.94p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f480p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.000004p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.40p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.20p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.10p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.08p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.04p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.02p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.01p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.0080p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.0040p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.0020p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.0010p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.80p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.80p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0x1.p0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data/scalb_intel_data.h b/tests/math_data/scalb_intel_data.h
new file mode 100644
index 0000000..fd6c1f7
--- /dev/null
+++ b/tests/math_data/scalb_intel_data.h
@@ -0,0 +1,4628 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, double> g_scalb_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.4p3
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    -0x1.ff0p9
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    -0x1.4p3
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    -0x1.780p5
+  },
+  { // Entry 7
+    0x1.p-51,
+    0x1.0p-1074,
+    0x1.ff8p9
+  },
+  { // Entry 8
+    0x1.5464a606112880p-1026,
+    0x1.5464a60611288p-2,
+    -0x1.0p10
+  },
+  { // Entry 9
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    0x1.fffffffc0p30
+  },
+  { // Entry 10
+    0.0,
+    0x1.dddddddddddddp-2,
+    -0x1.0c4p10
+  },
+  { // Entry 11
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    -0x1.0c4p10
+  },
+  { // Entry 12
+    HUGE_VAL,
+    0x1.ffffffffffff6p30,
+    0x1.0p31
+  },
+  { // Entry 13
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    -0x1.4p3
+  },
+  { // Entry 14
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    0x1.0p0
+  },
+  { // Entry 15
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    -0x1.780p5
+  },
+  { // Entry 16
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 17
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffc0p30
+  },
+  { // Entry 18
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffc0p30
+  },
+  { // Entry 19
+    -0x1.p-10,
+    -0x1.0p0,
+    -0x1.4p3
+  },
+  { // Entry 20
+    -0x1.p-9,
+    -0x1.0p0,
+    -0x1.2p3
+  },
+  { // Entry 21
+    -0x1.p-8,
+    -0x1.0p0,
+    -0x1.0p3
+  },
+  { // Entry 22
+    -0x1.p-7,
+    -0x1.0p0,
+    -0x1.cp2
+  },
+  { // Entry 23
+    -0x1.p-6,
+    -0x1.0p0,
+    -0x1.8p2
+  },
+  { // Entry 24
+    -0x1.p-5,
+    -0x1.0p0,
+    -0x1.4p2
+  },
+  { // Entry 25
+    -0x1.p-4,
+    -0x1.0p0,
+    -0x1.0p2
+  },
+  { // Entry 26
+    -0x1.p-3,
+    -0x1.0p0,
+    -0x1.8p1
+  },
+  { // Entry 27
+    -0x1.p-2,
+    -0x1.0p0,
+    -0x1.0p1
+  },
+  { // Entry 28
+    -0x1.p-1,
+    -0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 29
+    -0x1.p0,
+    -0x1.0p0,
+    0.0
+  },
+  { // Entry 30
+    -0x1.p1,
+    -0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 31
+    -0x1.p2,
+    -0x1.0p0,
+    0x1.0p1
+  },
+  { // Entry 32
+    -0x1.p3,
+    -0x1.0p0,
+    0x1.8p1
+  },
+  { // Entry 33
+    -0x1.p4,
+    -0x1.0p0,
+    0x1.0p2
+  },
+  { // Entry 34
+    -0x1.p5,
+    -0x1.0p0,
+    0x1.4p2
+  },
+  { // Entry 35
+    -0x1.p6,
+    -0x1.0p0,
+    0x1.8p2
+  },
+  { // Entry 36
+    -0x1.p7,
+    -0x1.0p0,
+    0x1.cp2
+  },
+  { // Entry 37
+    -0x1.p8,
+    -0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 38
+    -0x1.p9,
+    -0x1.0p0,
+    0x1.2p3
+  },
+  { // Entry 39
+    -0x1.p10,
+    -0x1.0p0,
+    0x1.4p3
+  },
+  { // Entry 40
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    -0x1.4p3
+  },
+  { // Entry 41
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    -0x1.2p3
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p3
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    -0x1.cp2
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    -0x1.8p2
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    -0x1.4p2
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p2
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    -0x1.8p1
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p1
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    -0x1.0p0
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    0.0
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p0
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p1
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    0x1.8p1
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p2
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    0x1.4p2
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    0x1.8p2
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    0x1.cp2
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    0x1.0p3
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    0x1.2p3
+  },
+  { // Entry 60
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    0x1.4p3
+  },
+  { // Entry 61
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.4p3
+  },
+  { // Entry 62
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.2p3
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p3
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.cp2
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.8p2
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.4p2
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p2
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.8p1
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p1
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    -0x1.0p0
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0.0
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p0
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p1
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.8p1
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p2
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.4p2
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.8p2
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.cp2
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.0p3
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.2p3
+  },
+  { // Entry 81
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    0x1.4p3
+  },
+  { // Entry 82
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    -0x1.4p3
+  },
+  { // Entry 83
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    -0x1.2p3
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p3
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    -0x1.cp2
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    -0x1.8p2
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    -0x1.4p2
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p2
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    -0x1.8p1
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p1
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    -0x1.0p0
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    0.0
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    0x1.0p0
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    0x1.0p1
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    0x1.8p1
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    0x1.0p2
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    0x1.4p2
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    0x1.8p2
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    0x1.cp2
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    0x1.0p3
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    0x1.2p3
+  },
+  { // Entry 102
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    0x1.4p3
+  },
+  { // Entry 103
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    -0x1.4p3
+  },
+  { // Entry 104
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    -0x1.2p3
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p3
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    -0x1.cp2
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    -0x1.8p2
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    -0x1.4p2
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p2
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    -0x1.8p1
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p1
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    -0x1.0p0
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    0.0
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p0
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p1
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    0x1.8p1
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p2
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    0x1.4p2
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    0x1.8p2
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    0x1.cp2
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    0x1.0p3
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    0x1.2p3
+  },
+  { // Entry 123
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    0x1.4p3
+  },
+  { // Entry 124
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    -0x1.4p3
+  },
+  { // Entry 125
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    -0x1.2p3
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p3
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    -0x1.cp2
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    -0x1.8p2
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    -0x1.4p2
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p2
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    -0x1.8p1
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p1
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    -0x1.0p0
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    0.0
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    0x1.0p0
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    0x1.0p1
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    0x1.8p1
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    0x1.0p2
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    0x1.4p2
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    0x1.8p2
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    0x1.cp2
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    0x1.0p3
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    0x1.2p3
+  },
+  { // Entry 144
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    0x1.4p3
+  },
+  { // Entry 145
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    -0x1.4p3
+  },
+  { // Entry 146
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    -0x1.2p3
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p3
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    -0x1.cp2
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    -0x1.8p2
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    -0x1.4p2
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p2
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    -0x1.8p1
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p1
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    -0x1.0p0
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    0.0
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p0
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p1
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    0x1.8p1
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p2
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    0x1.4p2
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    0x1.8p2
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    0x1.cp2
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    0x1.0p3
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    0x1.2p3
+  },
+  { // Entry 165
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    0x1.4p3
+  },
+  { // Entry 166
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    -0x1.4p3
+  },
+  { // Entry 167
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    -0x1.2p3
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p3
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    -0x1.cp2
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    -0x1.8p2
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    -0x1.4p2
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p2
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    -0x1.8p1
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p1
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    -0x1.0p0
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    0.0
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    0x1.0p0
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    0x1.0p1
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    0x1.8p1
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    0x1.0p2
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    0x1.4p2
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    0x1.8p2
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    0x1.cp2
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    0x1.0p3
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    0x1.2p3
+  },
+  { // Entry 186
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    0x1.4p3
+  },
+  { // Entry 187
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    -0x1.4p3
+  },
+  { // Entry 188
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    -0x1.2p3
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p3
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    -0x1.cp2
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    -0x1.8p2
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    -0x1.4p2
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p2
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    -0x1.8p1
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p1
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    -0x1.0p0
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    0.0
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    0x1.0p0
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    0x1.0p1
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    0x1.8p1
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    0x1.0p2
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    0x1.4p2
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    0x1.8p2
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    0x1.cp2
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    0x1.0p3
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    0x1.2p3
+  },
+  { // Entry 207
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    0x1.4p3
+  },
+  { // Entry 208
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    -0x1.4p3
+  },
+  { // Entry 209
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    -0x1.2p3
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p3
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    -0x1.cp2
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    -0x1.8p2
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    -0x1.4p2
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p2
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    -0x1.8p1
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p1
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    -0x1.0p0
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    0.0
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    0x1.0p0
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    0x1.0p1
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    0x1.8p1
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    0x1.0p2
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    0x1.4p2
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    0x1.8p2
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    0x1.cp2
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    0x1.0p3
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    0x1.2p3
+  },
+  { // Entry 228
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    0x1.4p3
+  },
+  { // Entry 229
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    -0x1.4p3
+  },
+  { // Entry 230
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    -0x1.2p3
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p3
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    -0x1.cp2
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    -0x1.8p2
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    -0x1.4p2
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p2
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    -0x1.8p1
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p1
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    -0x1.0p0
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    0.0
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    0x1.0p0
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    0x1.0p1
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    0x1.8p1
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    0x1.0p2
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    0x1.4p2
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    0x1.8p2
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    0x1.cp2
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    0x1.0p3
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    0x1.2p3
+  },
+  { // Entry 249
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    0x1.4p3
+  },
+  { // Entry 250
+    0x1.20p-62,
+    0x1.2p-52,
+    -0x1.4p3
+  },
+  { // Entry 251
+    0x1.20p-61,
+    0x1.2p-52,
+    -0x1.2p3
+  },
+  { // Entry 252
+    0x1.20p-60,
+    0x1.2p-52,
+    -0x1.0p3
+  },
+  { // Entry 253
+    0x1.20p-59,
+    0x1.2p-52,
+    -0x1.cp2
+  },
+  { // Entry 254
+    0x1.20p-58,
+    0x1.2p-52,
+    -0x1.8p2
+  },
+  { // Entry 255
+    0x1.20p-57,
+    0x1.2p-52,
+    -0x1.4p2
+  },
+  { // Entry 256
+    0x1.20p-56,
+    0x1.2p-52,
+    -0x1.0p2
+  },
+  { // Entry 257
+    0x1.20p-55,
+    0x1.2p-52,
+    -0x1.8p1
+  },
+  { // Entry 258
+    0x1.20p-54,
+    0x1.2p-52,
+    -0x1.0p1
+  },
+  { // Entry 259
+    0x1.20p-53,
+    0x1.2p-52,
+    -0x1.0p0
+  },
+  { // Entry 260
+    0x1.20p-52,
+    0x1.2p-52,
+    0.0
+  },
+  { // Entry 261
+    0x1.20p-51,
+    0x1.2p-52,
+    0x1.0p0
+  },
+  { // Entry 262
+    0x1.20p-50,
+    0x1.2p-52,
+    0x1.0p1
+  },
+  { // Entry 263
+    0x1.20p-49,
+    0x1.2p-52,
+    0x1.8p1
+  },
+  { // Entry 264
+    0x1.20p-48,
+    0x1.2p-52,
+    0x1.0p2
+  },
+  { // Entry 265
+    0x1.20p-47,
+    0x1.2p-52,
+    0x1.4p2
+  },
+  { // Entry 266
+    0x1.20p-46,
+    0x1.2p-52,
+    0x1.8p2
+  },
+  { // Entry 267
+    0x1.20p-45,
+    0x1.2p-52,
+    0x1.cp2
+  },
+  { // Entry 268
+    0x1.20p-44,
+    0x1.2p-52,
+    0x1.0p3
+  },
+  { // Entry 269
+    0x1.20p-43,
+    0x1.2p-52,
+    0x1.2p3
+  },
+  { // Entry 270
+    0x1.20p-42,
+    0x1.2p-52,
+    0x1.4p3
+  },
+  { // Entry 271
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    -0x1.4p3
+  },
+  { // Entry 272
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    -0x1.2p3
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    -0x1.0p3
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    -0x1.cp2
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    -0x1.8p2
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    -0x1.4p2
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    -0x1.0p2
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    -0x1.8p1
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    -0x1.0p1
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    -0x1.0p0
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    0.0
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    0x1.0p0
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    0x1.0p1
+  },
+  { // Entry 284
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    0x1.8p1
+  },
+  { // Entry 285
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    0x1.0p2
+  },
+  { // Entry 286
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    0x1.4p2
+  },
+  { // Entry 287
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    0x1.8p2
+  },
+  { // Entry 288
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    0x1.cp2
+  },
+  { // Entry 289
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    0x1.0p3
+  },
+  { // Entry 290
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    0x1.2p3
+  },
+  { // Entry 291
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    0x1.4p3
+  },
+  { // Entry 292
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    -0x1.4p3
+  },
+  { // Entry 293
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    -0x1.2p3
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    -0x1.0p3
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    -0x1.cp2
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    -0x1.8p2
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    -0x1.4p2
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    -0x1.0p2
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    -0x1.8p1
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    -0x1.0p1
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    -0x1.0p0
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    0.0
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    0x1.0p0
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    0x1.0p1
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    0x1.8p1
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    0x1.0p2
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    0x1.4p2
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    0x1.8p2
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    0x1.cp2
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    0x1.0p3
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    0x1.2p3
+  },
+  { // Entry 312
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    0x1.4p3
+  },
+  { // Entry 313
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    -0x1.4p3
+  },
+  { // Entry 314
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    -0x1.2p3
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    -0x1.0p3
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    -0x1.cp2
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    -0x1.8p2
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    -0x1.4p2
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    -0x1.0p2
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    -0x1.8p1
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    -0x1.0p1
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    -0x1.0p0
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    0.0
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    0x1.0p0
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    0x1.0p1
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    0x1.8p1
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    0x1.0p2
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    0x1.4p2
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    0x1.8p2
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    0x1.cp2
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    0x1.0p3
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    0x1.2p3
+  },
+  { // Entry 333
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    0x1.4p3
+  },
+  { // Entry 334
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    -0x1.4p3
+  },
+  { // Entry 335
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    -0x1.2p3
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    -0x1.0p3
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    -0x1.cp2
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    -0x1.8p2
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    -0x1.4p2
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    -0x1.0p2
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    -0x1.8p1
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    -0x1.0p1
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    -0x1.0p0
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    0.0
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    0x1.0p0
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    0x1.0p1
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    0x1.8p1
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    0x1.0p2
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    0x1.4p2
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    0x1.8p2
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    0x1.cp2
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    0x1.0p3
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    0x1.2p3
+  },
+  { // Entry 354
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    0x1.4p3
+  },
+  { // Entry 355
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    -0x1.4p3
+  },
+  { // Entry 356
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    -0x1.2p3
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p3
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    -0x1.cp2
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    -0x1.8p2
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    -0x1.4p2
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p2
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    -0x1.8p1
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p1
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    -0x1.0p0
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    0.0
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p0
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p1
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    0x1.8p1
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p2
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    0x1.4p2
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    0x1.8p2
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    0x1.cp2
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    0x1.0p3
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    0x1.2p3
+  },
+  { // Entry 375
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    0x1.4p3
+  },
+  { // Entry 376
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    -0x1.4p3
+  },
+  { // Entry 377
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    -0x1.2p3
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    -0x1.0p3
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    -0x1.cp2
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    -0x1.8p2
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    -0x1.4p2
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    -0x1.0p2
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    -0x1.8p1
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    -0x1.0p1
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    -0x1.0p0
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    0.0
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    0x1.0p0
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    0x1.0p1
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    0x1.8p1
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    0x1.0p2
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    0x1.4p2
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    0x1.8p2
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    0x1.cp2
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    0x1.0p3
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    0x1.2p3
+  },
+  { // Entry 396
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    0x1.4p3
+  },
+  { // Entry 397
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    -0x1.4p3
+  },
+  { // Entry 398
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    -0x1.2p3
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    -0x1.0p3
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    -0x1.cp2
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    -0x1.8p2
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    -0x1.4p2
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    -0x1.0p2
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    -0x1.8p1
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    -0x1.0p1
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    -0x1.0p0
+  },
+  { // Entry 407
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    0.0
+  },
+  { // Entry 408
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    0x1.0p0
+  },
+  { // Entry 409
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    0x1.0p1
+  },
+  { // Entry 410
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    0x1.8p1
+  },
+  { // Entry 411
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    0x1.0p2
+  },
+  { // Entry 412
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    0x1.4p2
+  },
+  { // Entry 413
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    0x1.8p2
+  },
+  { // Entry 414
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    0x1.cp2
+  },
+  { // Entry 415
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    0x1.0p3
+  },
+  { // Entry 416
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    0x1.2p3
+  },
+  { // Entry 417
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    0x1.4p3
+  },
+  { // Entry 418
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    -0x1.4p3
+  },
+  { // Entry 419
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    -0x1.2p3
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    -0x1.0p3
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    -0x1.cp2
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    -0x1.8p2
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    -0x1.4p2
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    -0x1.0p2
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    -0x1.8p1
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    -0x1.0p1
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    -0x1.0p0
+  },
+  { // Entry 428
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    0.0
+  },
+  { // Entry 429
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    0x1.0p0
+  },
+  { // Entry 430
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    0x1.0p1
+  },
+  { // Entry 431
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    0x1.8p1
+  },
+  { // Entry 432
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    0x1.0p2
+  },
+  { // Entry 433
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    0x1.4p2
+  },
+  { // Entry 434
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    0x1.8p2
+  },
+  { // Entry 435
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    0x1.cp2
+  },
+  { // Entry 436
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    0x1.0p3
+  },
+  { // Entry 437
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    0x1.2p3
+  },
+  { // Entry 438
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    0x1.4p3
+  },
+  { // Entry 439
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.4p3
+  },
+  { // Entry 440
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.2p3
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p3
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.cp2
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.8p2
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.4p2
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p2
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.8p1
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p1
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    -0x1.0p0
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    0.0
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p0
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p1
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.8p1
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p2
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.4p2
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.8p2
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.cp2
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.0p3
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.2p3
+  },
+  { // Entry 459
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    0x1.4p3
+  },
+  { // Entry 460
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    -0x1.4p3
+  },
+  { // Entry 461
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    -0x1.2p3
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p3
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    -0x1.cp2
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    -0x1.8p2
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    -0x1.4p2
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p2
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    -0x1.8p1
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p1
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    -0x1.0p0
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    0.0
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p0
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p1
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    0x1.8p1
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p2
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    0x1.4p2
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    0x1.8p2
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    0x1.cp2
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    0x1.0p3
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    0x1.2p3
+  },
+  { // Entry 480
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    0x1.4p3
+  },
+  { // Entry 481
+    0x1.p-10,
+    0x1.0p0,
+    -0x1.4p3
+  },
+  { // Entry 482
+    0x1.p-9,
+    0x1.0p0,
+    -0x1.2p3
+  },
+  { // Entry 483
+    0x1.p-8,
+    0x1.0p0,
+    -0x1.0p3
+  },
+  { // Entry 484
+    0x1.p-7,
+    0x1.0p0,
+    -0x1.cp2
+  },
+  { // Entry 485
+    0x1.p-6,
+    0x1.0p0,
+    -0x1.8p2
+  },
+  { // Entry 486
+    0x1.p-5,
+    0x1.0p0,
+    -0x1.4p2
+  },
+  { // Entry 487
+    0x1.p-4,
+    0x1.0p0,
+    -0x1.0p2
+  },
+  { // Entry 488
+    0x1.p-3,
+    0x1.0p0,
+    -0x1.8p1
+  },
+  { // Entry 489
+    0x1.p-2,
+    0x1.0p0,
+    -0x1.0p1
+  },
+  { // Entry 490
+    0x1.p-1,
+    0x1.0p0,
+    -0x1.0p0
+  },
+  { // Entry 491
+    0x1.p0,
+    0x1.0p0,
+    0.0
+  },
+  { // Entry 492
+    0x1.p1,
+    0x1.0p0,
+    0x1.0p0
+  },
+  { // Entry 493
+    0x1.p2,
+    0x1.0p0,
+    0x1.0p1
+  },
+  { // Entry 494
+    0x1.p3,
+    0x1.0p0,
+    0x1.8p1
+  },
+  { // Entry 495
+    0x1.p4,
+    0x1.0p0,
+    0x1.0p2
+  },
+  { // Entry 496
+    0x1.p5,
+    0x1.0p0,
+    0x1.4p2
+  },
+  { // Entry 497
+    0x1.p6,
+    0x1.0p0,
+    0x1.8p2
+  },
+  { // Entry 498
+    0x1.p7,
+    0x1.0p0,
+    0x1.cp2
+  },
+  { // Entry 499
+    0x1.p8,
+    0x1.0p0,
+    0x1.0p3
+  },
+  { // Entry 500
+    0x1.p9,
+    0x1.0p0,
+    0x1.2p3
+  },
+  { // Entry 501
+    0x1.p10,
+    0x1.0p0,
+    0x1.4p3
+  },
+  { // Entry 502
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    -0x1.ff8p9
+  },
+  { // Entry 503
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    -0x1.ff0p9
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    -0x1.f40p9
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    -0x1.f38p9
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    -0x1.4p3
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    -0x1.2p3
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    -0x1.0p3
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    -0x1.cp2
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    -0x1.8p2
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    -0x1.4p2
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    -0x1.0p2
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    -0x1.8p1
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    -0x1.0p1
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    -0x1.0p0
+  },
+  { // Entry 516
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 517
+    0x1.p-51,
+    0x1.0p-1074,
+    0x1.ff8p9
+  },
+  { // Entry 518
+    0x1.p-52,
+    0x1.0p-1074,
+    0x1.ff0p9
+  },
+  { // Entry 519
+    0x1.p-74,
+    0x1.0p-1074,
+    0x1.f40p9
+  },
+  { // Entry 520
+    0x1.p-75,
+    0x1.0p-1074,
+    0x1.f38p9
+  },
+  { // Entry 521
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 522
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 523
+    0x1.p-1072,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 524
+    0x1.p-1071,
+    0x1.0p-1074,
+    0x1.8p1
+  },
+  { // Entry 525
+    0x1.p-1070,
+    0x1.0p-1074,
+    0x1.0p2
+  },
+  { // Entry 526
+    0x1.p-1069,
+    0x1.0p-1074,
+    0x1.4p2
+  },
+  { // Entry 527
+    0x1.p-1068,
+    0x1.0p-1074,
+    0x1.8p2
+  },
+  { // Entry 528
+    0x1.p-1067,
+    0x1.0p-1074,
+    0x1.cp2
+  },
+  { // Entry 529
+    0x1.p-1066,
+    0x1.0p-1074,
+    0x1.0p3
+  },
+  { // Entry 530
+    0x1.p-1065,
+    0x1.0p-1074,
+    0x1.2p3
+  },
+  { // Entry 531
+    0x1.p-1064,
+    0x1.0p-1074,
+    0x1.4p3
+  },
+  { // Entry 532
+    0x1.p-1025,
+    0x1.0p-2,
+    -0x1.ff8p9
+  },
+  { // Entry 533
+    0x1.p-1024,
+    0x1.0p-2,
+    -0x1.ff0p9
+  },
+  { // Entry 534
+    0x1.p-1024,
+    0x1.0p-1,
+    -0x1.ff8p9
+  },
+  { // Entry 535
+    0x1.p-1023,
+    0x1.0p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 536
+    0x1.80p-1024,
+    0x1.8p-1,
+    -0x1.ff8p9
+  },
+  { // Entry 537
+    0x1.80p-1023,
+    0x1.8p-1,
+    -0x1.ff0p9
+  },
+  { // Entry 538
+    0.0,
+    0x1.0p-2,
+    -0x1.0c8p10
+  },
+  { // Entry 539
+    0.0,
+    0x1.0p-2,
+    -0x1.0c4p10
+  },
+  { // Entry 540
+    0.0,
+    0x1.0p-1,
+    -0x1.0c8p10
+  },
+  { // Entry 541
+    0x1.p-1074,
+    0x1.0p-1,
+    -0x1.0c4p10
+  },
+  { // Entry 542
+    0.0,
+    0x1.8p-1,
+    -0x1.0c8p10
+  },
+  { // Entry 543
+    0x1.80p-1074,
+    0x1.8p-1,
+    -0x1.0c4p10
+  },
+  { // Entry 544
+    0x1.p1023,
+    0x1.0p0,
+    0x1.ff8p9
+  },
+  { // Entry 545
+    0x1.p1022,
+    0x1.0p0,
+    0x1.ff0p9
+  },
+  { // Entry 546
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 547
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 548
+    0x1.p-1072,
+    0x1.0p-1074,
+    0x1.0p1
+  },
+  { // Entry 549
+    0x1.p-1071,
+    0x1.0p-1074,
+    0x1.8p1
+  },
+  { // Entry 550
+    0x1.p-1070,
+    0x1.0p-1074,
+    0x1.0p2
+  },
+  { // Entry 551
+    0x1.p-1069,
+    0x1.0p-1074,
+    0x1.4p2
+  },
+  { // Entry 552
+    0x1.p-1068,
+    0x1.0p-1074,
+    0x1.8p2
+  },
+  { // Entry 553
+    0x1.p-1067,
+    0x1.0p-1074,
+    0x1.cp2
+  },
+  { // Entry 554
+    0x1.p-1066,
+    0x1.0p-1074,
+    0x1.0p3
+  },
+  { // Entry 555
+    0x1.p-1065,
+    0x1.0p-1074,
+    0x1.2p3
+  },
+  { // Entry 556
+    0x1.p-1064,
+    0x1.0p-1074,
+    0x1.4p3
+  },
+  { // Entry 557
+    0x1.p-1063,
+    0x1.0p-1074,
+    0x1.6p3
+  },
+  { // Entry 558
+    0x1.p-1062,
+    0x1.0p-1074,
+    0x1.8p3
+  },
+  { // Entry 559
+    0x1.p-1061,
+    0x1.0p-1074,
+    0x1.ap3
+  },
+  { // Entry 560
+    0x1.p-1060,
+    0x1.0p-1074,
+    0x1.cp3
+  },
+  { // Entry 561
+    0x1.p-1059,
+    0x1.0p-1074,
+    0x1.ep3
+  },
+  { // Entry 562
+    0x1.p-1058,
+    0x1.0p-1074,
+    0x1.0p4
+  },
+  { // Entry 563
+    0x1.p-1057,
+    0x1.0p-1074,
+    0x1.1p4
+  },
+  { // Entry 564
+    0x1.p-1056,
+    0x1.0p-1074,
+    0x1.2p4
+  },
+  { // Entry 565
+    0x1.p-1055,
+    0x1.0p-1074,
+    0x1.3p4
+  },
+  { // Entry 566
+    0x1.p-1054,
+    0x1.0p-1074,
+    0x1.4p4
+  },
+  { // Entry 567
+    0x1.p-1053,
+    0x1.0p-1074,
+    0x1.5p4
+  },
+  { // Entry 568
+    0x1.p-1052,
+    0x1.0p-1074,
+    0x1.6p4
+  },
+  { // Entry 569
+    0x1.p-1051,
+    0x1.0p-1074,
+    0x1.7p4
+  },
+  { // Entry 570
+    0x1.p-1050,
+    0x1.0p-1074,
+    0x1.8p4
+  },
+  { // Entry 571
+    0x1.p-1049,
+    0x1.0p-1074,
+    0x1.9p4
+  },
+  { // Entry 572
+    0x1.p-1048,
+    0x1.0p-1074,
+    0x1.ap4
+  },
+  { // Entry 573
+    0x1.p-1047,
+    0x1.0p-1074,
+    0x1.bp4
+  },
+  { // Entry 574
+    0x1.p-1046,
+    0x1.0p-1074,
+    0x1.cp4
+  },
+  { // Entry 575
+    0x1.p-1045,
+    0x1.0p-1074,
+    0x1.dp4
+  },
+  { // Entry 576
+    0x1.p-1044,
+    0x1.0p-1074,
+    0x1.ep4
+  },
+  { // Entry 577
+    0x1.p-1043,
+    0x1.0p-1074,
+    0x1.fp4
+  },
+  { // Entry 578
+    0x1.p-1042,
+    0x1.0p-1074,
+    0x1.0p5
+  },
+  { // Entry 579
+    0x1.p-1041,
+    0x1.0p-1074,
+    0x1.080p5
+  },
+  { // Entry 580
+    0x1.p-1040,
+    0x1.0p-1074,
+    0x1.1p5
+  },
+  { // Entry 581
+    0x1.p-1039,
+    0x1.0p-1074,
+    0x1.180p5
+  },
+  { // Entry 582
+    0x1.p-1038,
+    0x1.0p-1074,
+    0x1.2p5
+  },
+  { // Entry 583
+    0x1.p-1037,
+    0x1.0p-1074,
+    0x1.280p5
+  },
+  { // Entry 584
+    0x1.p-1036,
+    0x1.0p-1074,
+    0x1.3p5
+  },
+  { // Entry 585
+    0x1.p-1035,
+    0x1.0p-1074,
+    0x1.380p5
+  },
+  { // Entry 586
+    0x1.p-1034,
+    0x1.0p-1074,
+    0x1.4p5
+  },
+  { // Entry 587
+    0x1.p-1033,
+    0x1.0p-1074,
+    0x1.480p5
+  },
+  { // Entry 588
+    0x1.p-1032,
+    0x1.0p-1074,
+    0x1.5p5
+  },
+  { // Entry 589
+    0x1.p-1031,
+    0x1.0p-1074,
+    0x1.580p5
+  },
+  { // Entry 590
+    0x1.p-1030,
+    0x1.0p-1074,
+    0x1.6p5
+  },
+  { // Entry 591
+    0x1.p-1029,
+    0x1.0p-1074,
+    0x1.680p5
+  },
+  { // Entry 592
+    0x1.p-1028,
+    0x1.0p-1074,
+    0x1.7p5
+  },
+  { // Entry 593
+    0x1.p-1027,
+    0x1.0p-1074,
+    0x1.780p5
+  },
+  { // Entry 594
+    0x1.p-1026,
+    0x1.0p-1074,
+    0x1.8p5
+  },
+  { // Entry 595
+    0x1.p-1025,
+    0x1.0p-1074,
+    0x1.880p5
+  },
+  { // Entry 596
+    0x1.p-1024,
+    0x1.0p-1074,
+    0x1.9p5
+  },
+  { // Entry 597
+    0x1.p-1023,
+    0x1.0p-1074,
+    0x1.980p5
+  },
+  { // Entry 598
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ap5
+  },
+  { // Entry 599
+    0x1.p-1021,
+    0x1.0p-1074,
+    0x1.a80p5
+  },
+  { // Entry 600
+    0x1.p-1020,
+    0x1.0p-1074,
+    0x1.bp5
+  },
+  { // Entry 601
+    0x1.p-1019,
+    0x1.0p-1074,
+    0x1.b80p5
+  },
+  { // Entry 602
+    0x1.p-1018,
+    0x1.0p-1074,
+    0x1.cp5
+  },
+  { // Entry 603
+    0x1.p-1017,
+    0x1.0p-1074,
+    0x1.c80p5
+  },
+  { // Entry 604
+    0x1.p-1016,
+    0x1.0p-1074,
+    0x1.dp5
+  },
+  { // Entry 605
+    0x1.p-1015,
+    0x1.0p-1074,
+    0x1.d80p5
+  },
+  { // Entry 606
+    0x1.p-1014,
+    0x1.0p-1074,
+    0x1.ep5
+  },
+  { // Entry 607
+    0x1.p-1013,
+    0x1.0p-1074,
+    0x1.e80p5
+  },
+  { // Entry 608
+    0x1.p-1012,
+    0x1.0p-1074,
+    0x1.fp5
+  },
+  { // Entry 609
+    0x1.p-1011,
+    0x1.0p-1074,
+    0x1.f80p5
+  },
+  { // Entry 610
+    0x1.p-1010,
+    0x1.0p-1074,
+    0x1.0p6
+  },
+  { // Entry 611
+    0x1.p-1009,
+    0x1.0p-1074,
+    0x1.040p6
+  },
+  { // Entry 612
+    0x1.p-1008,
+    0x1.0p-1074,
+    0x1.080p6
+  },
+  { // Entry 613
+    0x1.p-1007,
+    0x1.0p-1074,
+    0x1.0c0p6
+  },
+  { // Entry 614
+    0x1.p-1006,
+    0x1.0p-1074,
+    0x1.1p6
+  },
+  { // Entry 615
+    0x1.p-1005,
+    0x1.0p-1074,
+    0x1.140p6
+  },
+  { // Entry 616
+    0x1.p-1004,
+    0x1.0p-1074,
+    0x1.180p6
+  },
+  { // Entry 617
+    0x1.p-1003,
+    0x1.0p-1074,
+    0x1.1c0p6
+  },
+  { // Entry 618
+    0x1.p-1002,
+    0x1.0p-1074,
+    0x1.2p6
+  },
+  { // Entry 619
+    0x1.p-1001,
+    0x1.0p-1074,
+    0x1.240p6
+  },
+  { // Entry 620
+    0x1.p-1000,
+    0x1.0p-1074,
+    0x1.280p6
+  },
+  { // Entry 621
+    0x1.p-999,
+    0x1.0p-1074,
+    0x1.2c0p6
+  },
+  { // Entry 622
+    0x1.p-998,
+    0x1.0p-1074,
+    0x1.3p6
+  },
+  { // Entry 623
+    0x1.p-997,
+    0x1.0p-1074,
+    0x1.340p6
+  },
+  { // Entry 624
+    0x1.p-996,
+    0x1.0p-1074,
+    0x1.380p6
+  },
+  { // Entry 625
+    0x1.p-995,
+    0x1.0p-1074,
+    0x1.3c0p6
+  },
+  { // Entry 626
+    0x1.p-994,
+    0x1.0p-1074,
+    0x1.4p6
+  },
+  { // Entry 627
+    0x1.p-993,
+    0x1.0p-1074,
+    0x1.440p6
+  },
+  { // Entry 628
+    0x1.p-992,
+    0x1.0p-1074,
+    0x1.480p6
+  },
+  { // Entry 629
+    0x1.p-991,
+    0x1.0p-1074,
+    0x1.4c0p6
+  },
+  { // Entry 630
+    0x1.p-990,
+    0x1.0p-1074,
+    0x1.5p6
+  },
+  { // Entry 631
+    0x1.p-989,
+    0x1.0p-1074,
+    0x1.540p6
+  },
+  { // Entry 632
+    0x1.p-988,
+    0x1.0p-1074,
+    0x1.580p6
+  },
+  { // Entry 633
+    0x1.p-987,
+    0x1.0p-1074,
+    0x1.5c0p6
+  },
+  { // Entry 634
+    0x1.p-986,
+    0x1.0p-1074,
+    0x1.6p6
+  },
+  { // Entry 635
+    0x1.p-985,
+    0x1.0p-1074,
+    0x1.640p6
+  },
+  { // Entry 636
+    0x1.p-984,
+    0x1.0p-1074,
+    0x1.680p6
+  },
+  { // Entry 637
+    0x1.p-983,
+    0x1.0p-1074,
+    0x1.6c0p6
+  },
+  { // Entry 638
+    0x1.p-982,
+    0x1.0p-1074,
+    0x1.7p6
+  },
+  { // Entry 639
+    0x1.p-981,
+    0x1.0p-1074,
+    0x1.740p6
+  },
+  { // Entry 640
+    0x1.p-980,
+    0x1.0p-1074,
+    0x1.780p6
+  },
+  { // Entry 641
+    0x1.p-979,
+    0x1.0p-1074,
+    0x1.7c0p6
+  },
+  { // Entry 642
+    0x1.p-978,
+    0x1.0p-1074,
+    0x1.8p6
+  },
+  { // Entry 643
+    0x1.p-977,
+    0x1.0p-1074,
+    0x1.840p6
+  },
+  { // Entry 644
+    0x1.p-976,
+    0x1.0p-1074,
+    0x1.880p6
+  },
+  { // Entry 645
+    0x1.p-975,
+    0x1.0p-1074,
+    0x1.8c0p6
+  },
+  { // Entry 646
+    0x1.p-974,
+    0x1.0p-1074,
+    0x1.9p6
+  },
+  { // Entry 647
+    0x1.p-973,
+    0x1.0p-1074,
+    0x1.940p6
+  },
+  { // Entry 648
+    0x1.p-972,
+    0x1.0p-1074,
+    0x1.980p6
+  },
+  { // Entry 649
+    0x1.p-971,
+    0x1.0p-1074,
+    0x1.9c0p6
+  },
+  { // Entry 650
+    0x1.p-970,
+    0x1.0p-1074,
+    0x1.ap6
+  },
+  { // Entry 651
+    0x1.p-969,
+    0x1.0p-1074,
+    0x1.a40p6
+  },
+  { // Entry 652
+    0x1.p-968,
+    0x1.0p-1074,
+    0x1.a80p6
+  },
+  { // Entry 653
+    0x1.p-967,
+    0x1.0p-1074,
+    0x1.ac0p6
+  },
+  { // Entry 654
+    0x1.p-966,
+    0x1.0p-1074,
+    0x1.bp6
+  },
+  { // Entry 655
+    0x1.p-965,
+    0x1.0p-1074,
+    0x1.b40p6
+  },
+  { // Entry 656
+    0x1.p-964,
+    0x1.0p-1074,
+    0x1.b80p6
+  },
+  { // Entry 657
+    0x1.p-963,
+    0x1.0p-1074,
+    0x1.bc0p6
+  },
+  { // Entry 658
+    0x1.p-962,
+    0x1.0p-1074,
+    0x1.cp6
+  },
+  { // Entry 659
+    0x1.p-961,
+    0x1.0p-1074,
+    0x1.c40p6
+  },
+  { // Entry 660
+    0x1.p-960,
+    0x1.0p-1074,
+    0x1.c80p6
+  },
+  { // Entry 661
+    0x1.p-959,
+    0x1.0p-1074,
+    0x1.cc0p6
+  },
+  { // Entry 662
+    0x1.p-958,
+    0x1.0p-1074,
+    0x1.dp6
+  },
+  { // Entry 663
+    0x1.p-957,
+    0x1.0p-1074,
+    0x1.d40p6
+  },
+  { // Entry 664
+    0x1.p-956,
+    0x1.0p-1074,
+    0x1.d80p6
+  },
+  { // Entry 665
+    0x1.p-955,
+    0x1.0p-1074,
+    0x1.dc0p6
+  },
+  { // Entry 666
+    0x1.p-954,
+    0x1.0p-1074,
+    0x1.ep6
+  },
+  { // Entry 667
+    0x1.p-953,
+    0x1.0p-1074,
+    0x1.e40p6
+  },
+  { // Entry 668
+    0x1.p-952,
+    0x1.0p-1074,
+    0x1.e80p6
+  },
+  { // Entry 669
+    0x1.p-951,
+    0x1.0p-1074,
+    0x1.ec0p6
+  },
+  { // Entry 670
+    0x1.p-950,
+    0x1.0p-1074,
+    0x1.fp6
+  },
+  { // Entry 671
+    0x1.p-949,
+    0x1.0p-1074,
+    0x1.f40p6
+  },
+  { // Entry 672
+    0x1.p-948,
+    0x1.0p-1074,
+    0x1.f80p6
+  },
+  { // Entry 673
+    0x1.p-947,
+    0x1.0p-1074,
+    0x1.fc0p6
+  },
+  { // Entry 674
+    0x1.p-946,
+    0x1.0p-1074,
+    0x1.0p7
+  },
+  { // Entry 675
+    0x1.p-945,
+    0x1.0p-1074,
+    0x1.020p7
+  },
+  { // Entry 676
+    0x1.p-944,
+    0x1.0p-1074,
+    0x1.040p7
+  },
+  { // Entry 677
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 678
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    0x1.0p1
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    0x1.8p1
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    0x1.0p2
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    0x1.4p2
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    0x1.8p2
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    0x1.cp2
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    0x1.0p3
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    0x1.2p3
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    0x1.4p3
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    0x1.6p3
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    0x1.8p3
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    0x1.ap3
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    0x1.cp3
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    0x1.ep3
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    0x1.0p4
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    0x1.1p4
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    0x1.2p4
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    0x1.3p4
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    0x1.4p4
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    0x1.5p4
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    0x1.6p4
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    0x1.7p4
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    0x1.8p4
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    0x1.9p4
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    0x1.ap4
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    0x1.bp4
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    0x1.cp4
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    0x1.dp4
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    0x1.ep4
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    0x1.fp4
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    0x1.0p5
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    0x1.080p5
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    0x1.1p5
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    0x1.180p5
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    0x1.2p5
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    0x1.280p5
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    0x1.3p5
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    0x1.380p5
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    0x1.4p5
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    0x1.480p5
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    0x1.5p5
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    0x1.580p5
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    0x1.6p5
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    0x1.680p5
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    0x1.7p5
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    0x1.780p5
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    0x1.8p5
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    0x1.880p5
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    0x1.9p5
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    0x1.980p5
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    0x1.ap5
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    0x1.a80p5
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    0x1.bp5
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    0x1.b80p5
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    0x1.cp5
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    0x1.c80p5
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    0x1.dp5
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    0x1.d80p5
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    0x1.ep5
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    0x1.e80p5
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    0x1.fp5
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    0x1.f80p5
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    0x1.0p6
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    0x1.040p6
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    0x1.080p6
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    0x1.0c0p6
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    0x1.1p6
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    0x1.140p6
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    0x1.180p6
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    0x1.1c0p6
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    0x1.2p6
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    0x1.240p6
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    0x1.280p6
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    0x1.2c0p6
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    0x1.3p6
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    0x1.340p6
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    0x1.380p6
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    0x1.3c0p6
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    0x1.4p6
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    0x1.440p6
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    0x1.480p6
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    0x1.4c0p6
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    0x1.5p6
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    0x1.540p6
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    0x1.580p6
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    0x1.5c0p6
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    0x1.6p6
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    0x1.640p6
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    0x1.680p6
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    0x1.6c0p6
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    0x1.7p6
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    0x1.740p6
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    0x1.780p6
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    0x1.7c0p6
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    0x1.8p6
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    0x1.840p6
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    0x1.880p6
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    0x1.8c0p6
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    0x1.9p6
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    0x1.940p6
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    0x1.980p6
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    0x1.9c0p6
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    0x1.ap6
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    0x1.a40p6
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    0x1.a80p6
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    0x1.ac0p6
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    0x1.bp6
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    0x1.b40p6
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    0x1.b80p6
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    0x1.bc0p6
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    0x1.cp6
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    0x1.c40p6
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    0x1.c80p6
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    0x1.cc0p6
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    0x1.dp6
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    0x1.d40p6
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    0x1.d80p6
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    0x1.dc0p6
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    0x1.ep6
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    0x1.e40p6
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    0x1.e80p6
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    0x1.ec0p6
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    0x1.fp6
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    0x1.f40p6
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    0x1.f80p6
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    0x1.fc0p6
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    0x1.0p7
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    0x1.020p7
+  },
+  { // Entry 807
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    0x1.040p7
+  },
+  { // Entry 808
+    0x1.p0,
+    0x1.0p-1074,
+    0x1.0c8p10
+  },
+  { // Entry 809
+    0x1.p-1,
+    0x1.0p-1074,
+    0x1.0c4p10
+  },
+  { // Entry 810
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    0x1.0c8p10
+  },
+  { // Entry 811
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    0x1.0c4p10
+  },
+  { // Entry 812
+    0x1.p-1022,
+    0x1.0p-1074,
+    0x1.ap5
+  },
+  { // Entry 813
+    0x1.p-1023,
+    0x1.0p-1074,
+    0x1.980p5
+  },
+  { // Entry 814
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    0x1.ap5
+  },
+  { // Entry 815
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    0x1.980p5
+  },
+  { // Entry 816
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 817
+    0x1.p-1073,
+    0x1.0p-1074,
+    0x1.0p0
+  },
+  { // Entry 818
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 819
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    0x1.0p0
+  },
+  { // Entry 820
+    HUGE_VAL,
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 821
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 822
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 823
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 824
+    HUGE_VAL,
+    0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 825
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 826
+    HUGE_VAL,
+    0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 827
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    HUGE_VAL
+  },
+  { // Entry 828
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    HUGE_VAL
+  },
+  { // Entry 829
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    HUGE_VAL
+  },
+  { // Entry 830
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    HUGE_VAL
+  },
+  { // Entry 831
+    -HUGE_VAL,
+    -HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 832
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 833
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 834
+    0.0,
+    0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 835
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 836
+    HUGE_VAL,
+    0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 837
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 838
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 839
+    -HUGE_VAL,
+    -0x1.ffffffffffffep-1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 840
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 841
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 842
+    0.0,
+    0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 843
+    0.0,
+    0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 844
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 845
+    0.0,
+    0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 846
+    0.0,
+    0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 847
+    0.0,
+    0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 848
+    0.0,
+    0.0,
+    -HUGE_VAL
+  },
+  { // Entry 849
+    -0.0,
+    -0.0,
+    -HUGE_VAL
+  },
+  { // Entry 850
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 851
+    -0.0,
+    -0x1.0p-1074,
+    -HUGE_VAL
+  },
+  { // Entry 852
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 853
+    -0.0,
+    -0x1.ffffffffffffep-1023,
+    -HUGE_VAL
+  },
+  { // Entry 854
+    -0.0,
+    -0x1.0p-1022,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 855
+    -0.0,
+    -0x1.0p-1022,
+    -HUGE_VAL
+  },
+  { // Entry 856
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 857
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -HUGE_VAL
+  },
+  { // Entry 858
+    0.0,
+    0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 859
+    -0.0,
+    -0.0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 860
+    0.0,
+    0.0,
+    0.0
+  },
+  { // Entry 861
+    -0.0,
+    -0.0,
+    0.0
+  },
+  { // Entry 862
+    0.0,
+    0.0,
+    -0.0
+  },
+  { // Entry 863
+    -0.0,
+    -0.0,
+    -0.0
+  },
+  { // Entry 864
+    0.0,
+    0.0,
+    0x1.0p0
+  },
+  { // Entry 865
+    -0.0,
+    -0.0,
+    0x1.0p0
+  },
+  { // Entry 866
+    0.0,
+    0.0,
+    -0x1.0p0
+  },
+  { // Entry 867
+    -0.0,
+    -0.0,
+    -0x1.0p0
+  },
+  { // Entry 868
+    0.0,
+    0.0,
+    0x1.fc0p6
+  },
+  { // Entry 869
+    -0.0,
+    -0.0,
+    0x1.fc0p6
+  },
+  { // Entry 870
+    0.0,
+    0.0,
+    -0x1.fc0p6
+  },
+  { // Entry 871
+    -0.0,
+    -0.0,
+    -0x1.fc0p6
+  },
+  { // Entry 872
+    0.0,
+    0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 873
+    -0.0,
+    -0.0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 874
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 875
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 876
+    HUGE_VAL,
+    HUGE_VAL,
+    0.0
+  },
+  { // Entry 877
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0.0
+  },
+  { // Entry 878
+    HUGE_VAL,
+    HUGE_VAL,
+    -0.0
+  },
+  { // Entry 879
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0.0
+  },
+  { // Entry 880
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 881
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.0p0
+  },
+  { // Entry 882
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 883
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.0p0
+  },
+  { // Entry 884
+    HUGE_VAL,
+    HUGE_VAL,
+    0x1.fc0p6
+  },
+  { // Entry 885
+    -HUGE_VAL,
+    -HUGE_VAL,
+    0x1.fc0p6
+  },
+  { // Entry 886
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fc0p6
+  },
+  { // Entry 887
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fc0p6
+  },
+  { // Entry 888
+    HUGE_VAL,
+    HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 889
+    -HUGE_VAL,
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 890
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 891
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 892
+    0x1.p-1022,
+    0x1.0p-1022,
+    0.0
+  },
+  { // Entry 893
+    0x1.p-1022,
+    0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 894
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 895
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 896
+    0x1.p-1074,
+    0x1.0p-1074,
+    0.0
+  },
+  { // Entry 897
+    0x1.p-1074,
+    0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 898
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    0.0
+  },
+  { // Entry 899
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    -0.0
+  },
+  { // Entry 900
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    0.0
+  },
+  { // Entry 901
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    -0.0
+  },
+  { // Entry 902
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    0.0
+  },
+  { // Entry 903
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    -0.0
+  },
+  { // Entry 904
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    0.0
+  },
+  { // Entry 905
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    -0.0
+  },
+  { // Entry 906
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.0p0
+  },
+  { // Entry 907
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    0x1.fc0p6
+  },
+  { // Entry 908
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.0p0
+  },
+  { // Entry 909
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    0x1.fc0p6
+  },
+  { // Entry 910
+    HUGE_VAL,
+    0x1.0p-1022,
+    0x1.388p15
+  },
+  { // Entry 911
+    HUGE_VAL,
+    0x1.0p-1074,
+    0x1.388p15
+  },
+  { // Entry 912
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    0x1.388p15
+  },
+  { // Entry 913
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    0x1.388p15
+  },
+  { // Entry 914
+    0x1.p-1023,
+    0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 915
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 916
+    0.0,
+    0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 917
+    -0.0,
+    -0x1.0p-1074,
+    -0x1.0p0
+  },
+  { // Entry 918
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    -0x1.0p0
+  },
+  { // Entry 919
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    -0x1.0p0
+  },
+  { // Entry 920
+    0.0,
+    0x1.fffffffffffffp1023,
+    -0x1.388p15
+  },
+  { // Entry 921
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    -0x1.388p15
+  }
+};
diff --git a/tests/math_data/scalbf_intel_data.h b/tests/math_data/scalbf_intel_data.h
new file mode 100644
index 0000000..cd1d5ef
--- /dev/null
+++ b/tests/math_data/scalbf_intel_data.h
@@ -0,0 +1,4588 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, float> g_scalbf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    -0x1.40p3
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    -0x1.f8p6
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    -0x1.fcp6
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    -0x1.fcp6
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    -0x1.40p3
+  },
+  { // Entry 6
+    0x1.5464b0p-130,
+    0x1.5464b0p-2,
+    -0x1.p7
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    -0x1.28p7
+  },
+  { // Entry 8
+    0x1.ecb7e8p-129,
+    0x1.ecb7e8p-1,
+    -0x1.p7
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff60p-127,
+    -0x1.70p4
+  },
+  { // Entry 10
+    0.0f,
+    0x1.ffff84p-127,
+    -0x1.70p4
+  },
+  { // Entry 11
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    -0x1.40p3
+  },
+  { // Entry 12
+    0.0f,
+    0x1.fffffep127,
+    -0x1.p31
+  },
+  { // Entry 13
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p31
+  },
+  { // Entry 14
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p31
+  },
+  { // Entry 15
+    -0x1.p-10,
+    -0x1.p0,
+    -0x1.40p3
+  },
+  { // Entry 16
+    -0x1.p-9,
+    -0x1.p0,
+    -0x1.20p3
+  },
+  { // Entry 17
+    -0x1.p-8,
+    -0x1.p0,
+    -0x1.p3
+  },
+  { // Entry 18
+    -0x1.p-7,
+    -0x1.p0,
+    -0x1.c0p2
+  },
+  { // Entry 19
+    -0x1.p-6,
+    -0x1.p0,
+    -0x1.80p2
+  },
+  { // Entry 20
+    -0x1.p-5,
+    -0x1.p0,
+    -0x1.40p2
+  },
+  { // Entry 21
+    -0x1.p-4,
+    -0x1.p0,
+    -0x1.p2
+  },
+  { // Entry 22
+    -0x1.p-3,
+    -0x1.p0,
+    -0x1.80p1
+  },
+  { // Entry 23
+    -0x1.p-2,
+    -0x1.p0,
+    -0x1.p1
+  },
+  { // Entry 24
+    -0x1.p-1,
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 25
+    -0x1.p0,
+    -0x1.p0,
+    0.0
+  },
+  { // Entry 26
+    -0x1.p1,
+    -0x1.p0,
+    0x1.p0
+  },
+  { // Entry 27
+    -0x1.p2,
+    -0x1.p0,
+    0x1.p1
+  },
+  { // Entry 28
+    -0x1.p3,
+    -0x1.p0,
+    0x1.80p1
+  },
+  { // Entry 29
+    -0x1.p4,
+    -0x1.p0,
+    0x1.p2
+  },
+  { // Entry 30
+    -0x1.p5,
+    -0x1.p0,
+    0x1.40p2
+  },
+  { // Entry 31
+    -0x1.p6,
+    -0x1.p0,
+    0x1.80p2
+  },
+  { // Entry 32
+    -0x1.p7,
+    -0x1.p0,
+    0x1.c0p2
+  },
+  { // Entry 33
+    -0x1.p8,
+    -0x1.p0,
+    0x1.p3
+  },
+  { // Entry 34
+    -0x1.p9,
+    -0x1.p0,
+    0x1.20p3
+  },
+  { // Entry 35
+    -0x1.p10,
+    -0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 36
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    -0x1.40p3
+  },
+  { // Entry 37
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    -0x1.20p3
+  },
+  { // Entry 38
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    -0x1.p3
+  },
+  { // Entry 39
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    -0x1.c0p2
+  },
+  { // Entry 40
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    -0x1.80p2
+  },
+  { // Entry 41
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    -0x1.40p2
+  },
+  { // Entry 42
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    -0x1.p2
+  },
+  { // Entry 43
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    -0x1.80p1
+  },
+  { // Entry 44
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    -0x1.p1
+  },
+  { // Entry 45
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    -0x1.p0
+  },
+  { // Entry 46
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    0.0
+  },
+  { // Entry 47
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    0x1.p0
+  },
+  { // Entry 48
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    0x1.p1
+  },
+  { // Entry 49
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    0x1.80p1
+  },
+  { // Entry 50
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    0x1.p2
+  },
+  { // Entry 51
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    0x1.40p2
+  },
+  { // Entry 52
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    0x1.80p2
+  },
+  { // Entry 53
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    0x1.c0p2
+  },
+  { // Entry 54
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    0x1.p3
+  },
+  { // Entry 55
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    0x1.20p3
+  },
+  { // Entry 56
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    0x1.40p3
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    -0x1.40p3
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    -0x1.20p3
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    -0x1.p3
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    -0x1.c0p2
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    -0x1.80p2
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    -0x1.40p2
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    -0x1.p2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    -0x1.80p1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    -0x1.p1
+  },
+  { // Entry 66
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    -0x1.p0
+  },
+  { // Entry 67
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    0.0
+  },
+  { // Entry 68
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    0x1.p0
+  },
+  { // Entry 69
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    0x1.p1
+  },
+  { // Entry 70
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    0x1.80p1
+  },
+  { // Entry 71
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    0x1.p2
+  },
+  { // Entry 72
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    0x1.40p2
+  },
+  { // Entry 73
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    0x1.80p2
+  },
+  { // Entry 74
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    0x1.c0p2
+  },
+  { // Entry 75
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    0x1.p3
+  },
+  { // Entry 76
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    0x1.20p3
+  },
+  { // Entry 77
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    0x1.40p3
+  },
+  { // Entry 78
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    -0x1.40p3
+  },
+  { // Entry 79
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    -0x1.20p3
+  },
+  { // Entry 80
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    -0x1.p3
+  },
+  { // Entry 81
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    -0x1.c0p2
+  },
+  { // Entry 82
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    -0x1.80p2
+  },
+  { // Entry 83
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    -0x1.40p2
+  },
+  { // Entry 84
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    -0x1.p2
+  },
+  { // Entry 85
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    -0x1.80p1
+  },
+  { // Entry 86
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    -0x1.p1
+  },
+  { // Entry 87
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    -0x1.p0
+  },
+  { // Entry 88
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    0.0
+  },
+  { // Entry 89
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    0x1.p0
+  },
+  { // Entry 90
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    0x1.p1
+  },
+  { // Entry 91
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    0x1.80p1
+  },
+  { // Entry 92
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    0x1.p2
+  },
+  { // Entry 93
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    0x1.40p2
+  },
+  { // Entry 94
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    0x1.80p2
+  },
+  { // Entry 95
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    0x1.c0p2
+  },
+  { // Entry 96
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    0x1.p3
+  },
+  { // Entry 97
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    0x1.20p3
+  },
+  { // Entry 98
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    0x1.40p3
+  },
+  { // Entry 99
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    -0x1.40p3
+  },
+  { // Entry 100
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    -0x1.20p3
+  },
+  { // Entry 101
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    -0x1.p3
+  },
+  { // Entry 102
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    -0x1.c0p2
+  },
+  { // Entry 103
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    -0x1.80p2
+  },
+  { // Entry 104
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    -0x1.40p2
+  },
+  { // Entry 105
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    -0x1.p2
+  },
+  { // Entry 106
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    -0x1.80p1
+  },
+  { // Entry 107
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    -0x1.p1
+  },
+  { // Entry 108
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    -0x1.p0
+  },
+  { // Entry 109
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    0.0
+  },
+  { // Entry 110
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    0x1.p0
+  },
+  { // Entry 111
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    0x1.p1
+  },
+  { // Entry 112
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    0x1.80p1
+  },
+  { // Entry 113
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    0x1.p2
+  },
+  { // Entry 114
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    0x1.40p2
+  },
+  { // Entry 115
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    0x1.80p2
+  },
+  { // Entry 116
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    0x1.c0p2
+  },
+  { // Entry 117
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    0x1.p3
+  },
+  { // Entry 118
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    0x1.20p3
+  },
+  { // Entry 119
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    0x1.40p3
+  },
+  { // Entry 120
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    -0x1.40p3
+  },
+  { // Entry 121
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    -0x1.20p3
+  },
+  { // Entry 122
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    -0x1.p3
+  },
+  { // Entry 123
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    -0x1.c0p2
+  },
+  { // Entry 124
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    -0x1.80p2
+  },
+  { // Entry 125
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    -0x1.40p2
+  },
+  { // Entry 126
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    -0x1.p2
+  },
+  { // Entry 127
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    -0x1.80p1
+  },
+  { // Entry 128
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    -0x1.p1
+  },
+  { // Entry 129
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    -0x1.p0
+  },
+  { // Entry 130
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    0.0
+  },
+  { // Entry 131
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    0x1.p0
+  },
+  { // Entry 132
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    0x1.p1
+  },
+  { // Entry 133
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    0x1.80p1
+  },
+  { // Entry 134
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    0x1.p2
+  },
+  { // Entry 135
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    0x1.40p2
+  },
+  { // Entry 136
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    0x1.80p2
+  },
+  { // Entry 137
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    0x1.c0p2
+  },
+  { // Entry 138
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    0x1.p3
+  },
+  { // Entry 139
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    0x1.20p3
+  },
+  { // Entry 140
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    0x1.40p3
+  },
+  { // Entry 141
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    -0x1.40p3
+  },
+  { // Entry 142
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    -0x1.20p3
+  },
+  { // Entry 143
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    -0x1.p3
+  },
+  { // Entry 144
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    -0x1.c0p2
+  },
+  { // Entry 145
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    -0x1.80p2
+  },
+  { // Entry 146
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    -0x1.40p2
+  },
+  { // Entry 147
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    -0x1.p2
+  },
+  { // Entry 148
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    -0x1.80p1
+  },
+  { // Entry 149
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    -0x1.p1
+  },
+  { // Entry 150
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    -0x1.p0
+  },
+  { // Entry 151
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    0.0
+  },
+  { // Entry 152
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    0x1.p0
+  },
+  { // Entry 153
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    0x1.p1
+  },
+  { // Entry 154
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    0x1.80p1
+  },
+  { // Entry 155
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    0x1.p2
+  },
+  { // Entry 156
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    0x1.40p2
+  },
+  { // Entry 157
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    0x1.80p2
+  },
+  { // Entry 158
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    0x1.c0p2
+  },
+  { // Entry 159
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    0x1.p3
+  },
+  { // Entry 160
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    0x1.20p3
+  },
+  { // Entry 161
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    0x1.40p3
+  },
+  { // Entry 162
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    -0x1.40p3
+  },
+  { // Entry 163
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    -0x1.20p3
+  },
+  { // Entry 164
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    -0x1.p3
+  },
+  { // Entry 165
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    -0x1.c0p2
+  },
+  { // Entry 166
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    -0x1.80p2
+  },
+  { // Entry 167
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    -0x1.40p2
+  },
+  { // Entry 168
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    -0x1.p2
+  },
+  { // Entry 169
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    -0x1.80p1
+  },
+  { // Entry 170
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    -0x1.p1
+  },
+  { // Entry 171
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    -0x1.p0
+  },
+  { // Entry 172
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    0.0
+  },
+  { // Entry 173
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    0x1.p0
+  },
+  { // Entry 174
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    0x1.p1
+  },
+  { // Entry 175
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    0x1.80p1
+  },
+  { // Entry 176
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    0x1.p2
+  },
+  { // Entry 177
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    0x1.40p2
+  },
+  { // Entry 178
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    0x1.80p2
+  },
+  { // Entry 179
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    0x1.c0p2
+  },
+  { // Entry 180
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    0x1.p3
+  },
+  { // Entry 181
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    0x1.20p3
+  },
+  { // Entry 182
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    0x1.40p3
+  },
+  { // Entry 183
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    -0x1.40p3
+  },
+  { // Entry 184
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    -0x1.20p3
+  },
+  { // Entry 185
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    -0x1.p3
+  },
+  { // Entry 186
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    -0x1.c0p2
+  },
+  { // Entry 187
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    -0x1.80p2
+  },
+  { // Entry 188
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    -0x1.40p2
+  },
+  { // Entry 189
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    -0x1.p2
+  },
+  { // Entry 190
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    -0x1.80p1
+  },
+  { // Entry 191
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    -0x1.p1
+  },
+  { // Entry 192
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    -0x1.p0
+  },
+  { // Entry 193
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    0.0
+  },
+  { // Entry 194
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    0x1.p0
+  },
+  { // Entry 195
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    0x1.p1
+  },
+  { // Entry 196
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    0x1.80p1
+  },
+  { // Entry 197
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    0x1.p2
+  },
+  { // Entry 198
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    0x1.40p2
+  },
+  { // Entry 199
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    0x1.80p2
+  },
+  { // Entry 200
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    0x1.c0p2
+  },
+  { // Entry 201
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    0x1.p3
+  },
+  { // Entry 202
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    0x1.20p3
+  },
+  { // Entry 203
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    0x1.40p3
+  },
+  { // Entry 204
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    -0x1.40p3
+  },
+  { // Entry 205
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    -0x1.20p3
+  },
+  { // Entry 206
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    -0x1.p3
+  },
+  { // Entry 207
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    -0x1.c0p2
+  },
+  { // Entry 208
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    -0x1.80p2
+  },
+  { // Entry 209
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    -0x1.40p2
+  },
+  { // Entry 210
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    -0x1.p2
+  },
+  { // Entry 211
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    -0x1.80p1
+  },
+  { // Entry 212
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    -0x1.p1
+  },
+  { // Entry 213
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    -0x1.p0
+  },
+  { // Entry 214
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    0.0
+  },
+  { // Entry 215
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    0x1.p0
+  },
+  { // Entry 216
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    0x1.p1
+  },
+  { // Entry 217
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    0x1.80p1
+  },
+  { // Entry 218
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    0x1.p2
+  },
+  { // Entry 219
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    0x1.40p2
+  },
+  { // Entry 220
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    0x1.80p2
+  },
+  { // Entry 221
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    0x1.c0p2
+  },
+  { // Entry 222
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    0x1.p3
+  },
+  { // Entry 223
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    0x1.20p3
+  },
+  { // Entry 224
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    0x1.40p3
+  },
+  { // Entry 225
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    -0x1.40p3
+  },
+  { // Entry 226
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    -0x1.20p3
+  },
+  { // Entry 227
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    -0x1.p3
+  },
+  { // Entry 228
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    -0x1.c0p2
+  },
+  { // Entry 229
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    -0x1.80p2
+  },
+  { // Entry 230
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    -0x1.40p2
+  },
+  { // Entry 231
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    -0x1.p2
+  },
+  { // Entry 232
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    -0x1.80p1
+  },
+  { // Entry 233
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    -0x1.p1
+  },
+  { // Entry 234
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    -0x1.p0
+  },
+  { // Entry 235
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    0.0
+  },
+  { // Entry 236
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    0x1.p0
+  },
+  { // Entry 237
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    0x1.p1
+  },
+  { // Entry 238
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    0x1.80p1
+  },
+  { // Entry 239
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    0x1.p2
+  },
+  { // Entry 240
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    0x1.40p2
+  },
+  { // Entry 241
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    0x1.80p2
+  },
+  { // Entry 242
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    0x1.c0p2
+  },
+  { // Entry 243
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    0x1.p3
+  },
+  { // Entry 244
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    0x1.20p3
+  },
+  { // Entry 245
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    0x1.40p3
+  },
+  { // Entry 246
+    0x1.80p-33,
+    0x1.80p-23,
+    -0x1.40p3
+  },
+  { // Entry 247
+    0x1.80p-32,
+    0x1.80p-23,
+    -0x1.20p3
+  },
+  { // Entry 248
+    0x1.80p-31,
+    0x1.80p-23,
+    -0x1.p3
+  },
+  { // Entry 249
+    0x1.80p-30,
+    0x1.80p-23,
+    -0x1.c0p2
+  },
+  { // Entry 250
+    0x1.80p-29,
+    0x1.80p-23,
+    -0x1.80p2
+  },
+  { // Entry 251
+    0x1.80p-28,
+    0x1.80p-23,
+    -0x1.40p2
+  },
+  { // Entry 252
+    0x1.80p-27,
+    0x1.80p-23,
+    -0x1.p2
+  },
+  { // Entry 253
+    0x1.80p-26,
+    0x1.80p-23,
+    -0x1.80p1
+  },
+  { // Entry 254
+    0x1.80p-25,
+    0x1.80p-23,
+    -0x1.p1
+  },
+  { // Entry 255
+    0x1.80p-24,
+    0x1.80p-23,
+    -0x1.p0
+  },
+  { // Entry 256
+    0x1.80p-23,
+    0x1.80p-23,
+    0.0
+  },
+  { // Entry 257
+    0x1.80p-22,
+    0x1.80p-23,
+    0x1.p0
+  },
+  { // Entry 258
+    0x1.80p-21,
+    0x1.80p-23,
+    0x1.p1
+  },
+  { // Entry 259
+    0x1.80p-20,
+    0x1.80p-23,
+    0x1.80p1
+  },
+  { // Entry 260
+    0x1.80p-19,
+    0x1.80p-23,
+    0x1.p2
+  },
+  { // Entry 261
+    0x1.80p-18,
+    0x1.80p-23,
+    0x1.40p2
+  },
+  { // Entry 262
+    0x1.80p-17,
+    0x1.80p-23,
+    0x1.80p2
+  },
+  { // Entry 263
+    0x1.80p-16,
+    0x1.80p-23,
+    0x1.c0p2
+  },
+  { // Entry 264
+    0x1.80p-15,
+    0x1.80p-23,
+    0x1.p3
+  },
+  { // Entry 265
+    0x1.80p-14,
+    0x1.80p-23,
+    0x1.20p3
+  },
+  { // Entry 266
+    0x1.80p-13,
+    0x1.80p-23,
+    0x1.40p3
+  },
+  { // Entry 267
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    -0x1.40p3
+  },
+  { // Entry 268
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    -0x1.20p3
+  },
+  { // Entry 269
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    -0x1.p3
+  },
+  { // Entry 270
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    -0x1.c0p2
+  },
+  { // Entry 271
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    -0x1.80p2
+  },
+  { // Entry 272
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    -0x1.40p2
+  },
+  { // Entry 273
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    -0x1.p2
+  },
+  { // Entry 274
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    -0x1.80p1
+  },
+  { // Entry 275
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    -0x1.p1
+  },
+  { // Entry 276
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    -0x1.p0
+  },
+  { // Entry 277
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    0.0
+  },
+  { // Entry 278
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    0x1.p0
+  },
+  { // Entry 279
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    0x1.p1
+  },
+  { // Entry 280
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    0x1.80p1
+  },
+  { // Entry 281
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    0x1.p2
+  },
+  { // Entry 282
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    0x1.40p2
+  },
+  { // Entry 283
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    0x1.80p2
+  },
+  { // Entry 284
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    0x1.c0p2
+  },
+  { // Entry 285
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    0x1.p3
+  },
+  { // Entry 286
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    0x1.20p3
+  },
+  { // Entry 287
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    0x1.40p3
+  },
+  { // Entry 288
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    -0x1.40p3
+  },
+  { // Entry 289
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    -0x1.20p3
+  },
+  { // Entry 290
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    -0x1.p3
+  },
+  { // Entry 291
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    -0x1.c0p2
+  },
+  { // Entry 292
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    -0x1.80p2
+  },
+  { // Entry 293
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    -0x1.40p2
+  },
+  { // Entry 294
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    -0x1.p2
+  },
+  { // Entry 295
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    -0x1.80p1
+  },
+  { // Entry 296
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    -0x1.p1
+  },
+  { // Entry 297
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    -0x1.p0
+  },
+  { // Entry 298
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    0.0
+  },
+  { // Entry 299
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    0x1.p0
+  },
+  { // Entry 300
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    0x1.p1
+  },
+  { // Entry 301
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    0x1.80p1
+  },
+  { // Entry 302
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    0x1.p2
+  },
+  { // Entry 303
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    0x1.40p2
+  },
+  { // Entry 304
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    0x1.80p2
+  },
+  { // Entry 305
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    0x1.c0p2
+  },
+  { // Entry 306
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    0x1.p3
+  },
+  { // Entry 307
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    0x1.20p3
+  },
+  { // Entry 308
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    0x1.40p3
+  },
+  { // Entry 309
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    -0x1.40p3
+  },
+  { // Entry 310
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    -0x1.20p3
+  },
+  { // Entry 311
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    -0x1.p3
+  },
+  { // Entry 312
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    -0x1.c0p2
+  },
+  { // Entry 313
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    -0x1.80p2
+  },
+  { // Entry 314
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    -0x1.40p2
+  },
+  { // Entry 315
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    -0x1.p2
+  },
+  { // Entry 316
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    -0x1.80p1
+  },
+  { // Entry 317
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    -0x1.p1
+  },
+  { // Entry 318
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    -0x1.p0
+  },
+  { // Entry 319
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    0.0
+  },
+  { // Entry 320
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    0x1.p0
+  },
+  { // Entry 321
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    0x1.p1
+  },
+  { // Entry 322
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    0x1.80p1
+  },
+  { // Entry 323
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    0x1.p2
+  },
+  { // Entry 324
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    0x1.40p2
+  },
+  { // Entry 325
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    0x1.80p2
+  },
+  { // Entry 326
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    0x1.c0p2
+  },
+  { // Entry 327
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    0x1.p3
+  },
+  { // Entry 328
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    0x1.20p3
+  },
+  { // Entry 329
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    0x1.40p3
+  },
+  { // Entry 330
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    -0x1.40p3
+  },
+  { // Entry 331
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    -0x1.20p3
+  },
+  { // Entry 332
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    -0x1.p3
+  },
+  { // Entry 333
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    -0x1.c0p2
+  },
+  { // Entry 334
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    -0x1.80p2
+  },
+  { // Entry 335
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    -0x1.40p2
+  },
+  { // Entry 336
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    -0x1.p2
+  },
+  { // Entry 337
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    -0x1.80p1
+  },
+  { // Entry 338
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    -0x1.p1
+  },
+  { // Entry 339
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    -0x1.p0
+  },
+  { // Entry 340
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    0.0
+  },
+  { // Entry 341
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    0x1.p0
+  },
+  { // Entry 342
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    0x1.p1
+  },
+  { // Entry 343
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    0x1.80p1
+  },
+  { // Entry 344
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    0x1.p2
+  },
+  { // Entry 345
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    0x1.40p2
+  },
+  { // Entry 346
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    0x1.80p2
+  },
+  { // Entry 347
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    0x1.c0p2
+  },
+  { // Entry 348
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    0x1.p3
+  },
+  { // Entry 349
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    0x1.20p3
+  },
+  { // Entry 350
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    0x1.40p3
+  },
+  { // Entry 351
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    -0x1.40p3
+  },
+  { // Entry 352
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    -0x1.20p3
+  },
+  { // Entry 353
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    -0x1.p3
+  },
+  { // Entry 354
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    -0x1.c0p2
+  },
+  { // Entry 355
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    -0x1.80p2
+  },
+  { // Entry 356
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    -0x1.40p2
+  },
+  { // Entry 357
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    -0x1.p2
+  },
+  { // Entry 358
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    -0x1.80p1
+  },
+  { // Entry 359
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    -0x1.p1
+  },
+  { // Entry 360
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    -0x1.p0
+  },
+  { // Entry 361
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    0.0
+  },
+  { // Entry 362
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    0x1.p0
+  },
+  { // Entry 363
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    0x1.p1
+  },
+  { // Entry 364
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    0x1.80p1
+  },
+  { // Entry 365
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    0x1.p2
+  },
+  { // Entry 366
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    0x1.40p2
+  },
+  { // Entry 367
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    0x1.80p2
+  },
+  { // Entry 368
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    0x1.c0p2
+  },
+  { // Entry 369
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    0x1.p3
+  },
+  { // Entry 370
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    0x1.20p3
+  },
+  { // Entry 371
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    0x1.40p3
+  },
+  { // Entry 372
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    -0x1.40p3
+  },
+  { // Entry 373
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    -0x1.20p3
+  },
+  { // Entry 374
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    -0x1.p3
+  },
+  { // Entry 375
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    -0x1.c0p2
+  },
+  { // Entry 376
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    -0x1.80p2
+  },
+  { // Entry 377
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    -0x1.40p2
+  },
+  { // Entry 378
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    -0x1.p2
+  },
+  { // Entry 379
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    -0x1.80p1
+  },
+  { // Entry 380
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    -0x1.p1
+  },
+  { // Entry 381
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    -0x1.p0
+  },
+  { // Entry 382
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    0.0
+  },
+  { // Entry 383
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    0x1.p0
+  },
+  { // Entry 384
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    0x1.p1
+  },
+  { // Entry 385
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    0x1.80p1
+  },
+  { // Entry 386
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    0x1.p2
+  },
+  { // Entry 387
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    0x1.40p2
+  },
+  { // Entry 388
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    0x1.80p2
+  },
+  { // Entry 389
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    0x1.c0p2
+  },
+  { // Entry 390
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    0x1.p3
+  },
+  { // Entry 391
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    0x1.20p3
+  },
+  { // Entry 392
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    0x1.40p3
+  },
+  { // Entry 393
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    -0x1.40p3
+  },
+  { // Entry 394
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    -0x1.20p3
+  },
+  { // Entry 395
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    -0x1.p3
+  },
+  { // Entry 396
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    -0x1.c0p2
+  },
+  { // Entry 397
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    -0x1.80p2
+  },
+  { // Entry 398
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    -0x1.40p2
+  },
+  { // Entry 399
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    -0x1.p2
+  },
+  { // Entry 400
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    -0x1.80p1
+  },
+  { // Entry 401
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    -0x1.p1
+  },
+  { // Entry 402
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    -0x1.p0
+  },
+  { // Entry 403
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    0.0
+  },
+  { // Entry 404
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    0x1.p0
+  },
+  { // Entry 405
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    0x1.p1
+  },
+  { // Entry 406
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    0x1.80p1
+  },
+  { // Entry 407
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    0x1.p2
+  },
+  { // Entry 408
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    0x1.40p2
+  },
+  { // Entry 409
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    0x1.80p2
+  },
+  { // Entry 410
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    0x1.c0p2
+  },
+  { // Entry 411
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    0x1.p3
+  },
+  { // Entry 412
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    0x1.20p3
+  },
+  { // Entry 413
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    0x1.40p3
+  },
+  { // Entry 414
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    -0x1.40p3
+  },
+  { // Entry 415
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    -0x1.20p3
+  },
+  { // Entry 416
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    -0x1.p3
+  },
+  { // Entry 417
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    -0x1.c0p2
+  },
+  { // Entry 418
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    -0x1.80p2
+  },
+  { // Entry 419
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    -0x1.40p2
+  },
+  { // Entry 420
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    -0x1.p2
+  },
+  { // Entry 421
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    -0x1.80p1
+  },
+  { // Entry 422
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    -0x1.p1
+  },
+  { // Entry 423
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    -0x1.p0
+  },
+  { // Entry 424
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    0.0
+  },
+  { // Entry 425
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    0x1.p0
+  },
+  { // Entry 426
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    0x1.p1
+  },
+  { // Entry 427
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    0x1.80p1
+  },
+  { // Entry 428
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    0x1.p2
+  },
+  { // Entry 429
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    0x1.40p2
+  },
+  { // Entry 430
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    0x1.80p2
+  },
+  { // Entry 431
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    0x1.c0p2
+  },
+  { // Entry 432
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    0x1.p3
+  },
+  { // Entry 433
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    0x1.20p3
+  },
+  { // Entry 434
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    0x1.40p3
+  },
+  { // Entry 435
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    -0x1.40p3
+  },
+  { // Entry 436
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    -0x1.20p3
+  },
+  { // Entry 437
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    -0x1.p3
+  },
+  { // Entry 438
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    -0x1.c0p2
+  },
+  { // Entry 439
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    -0x1.80p2
+  },
+  { // Entry 440
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    -0x1.40p2
+  },
+  { // Entry 441
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    -0x1.p2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    -0x1.80p1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    -0x1.p1
+  },
+  { // Entry 444
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    -0x1.p0
+  },
+  { // Entry 445
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    0.0
+  },
+  { // Entry 446
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    0x1.p0
+  },
+  { // Entry 447
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    0x1.p1
+  },
+  { // Entry 448
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    0x1.80p1
+  },
+  { // Entry 449
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    0x1.p2
+  },
+  { // Entry 450
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    0x1.40p2
+  },
+  { // Entry 451
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    0x1.80p2
+  },
+  { // Entry 452
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    0x1.c0p2
+  },
+  { // Entry 453
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    0x1.p3
+  },
+  { // Entry 454
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    0x1.20p3
+  },
+  { // Entry 455
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    0x1.40p3
+  },
+  { // Entry 456
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    -0x1.40p3
+  },
+  { // Entry 457
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    -0x1.20p3
+  },
+  { // Entry 458
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    -0x1.p3
+  },
+  { // Entry 459
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    -0x1.c0p2
+  },
+  { // Entry 460
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    -0x1.80p2
+  },
+  { // Entry 461
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    -0x1.40p2
+  },
+  { // Entry 462
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    -0x1.p2
+  },
+  { // Entry 463
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    -0x1.80p1
+  },
+  { // Entry 464
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    -0x1.p1
+  },
+  { // Entry 465
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    -0x1.p0
+  },
+  { // Entry 466
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    0.0
+  },
+  { // Entry 467
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    0x1.p0
+  },
+  { // Entry 468
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    0x1.p1
+  },
+  { // Entry 469
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    0x1.80p1
+  },
+  { // Entry 470
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    0x1.p2
+  },
+  { // Entry 471
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    0x1.40p2
+  },
+  { // Entry 472
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    0x1.80p2
+  },
+  { // Entry 473
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    0x1.c0p2
+  },
+  { // Entry 474
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    0x1.p3
+  },
+  { // Entry 475
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    0x1.20p3
+  },
+  { // Entry 476
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    0x1.40p3
+  },
+  { // Entry 477
+    0x1.p-10,
+    0x1.p0,
+    -0x1.40p3
+  },
+  { // Entry 478
+    0x1.p-9,
+    0x1.p0,
+    -0x1.20p3
+  },
+  { // Entry 479
+    0x1.p-8,
+    0x1.p0,
+    -0x1.p3
+  },
+  { // Entry 480
+    0x1.p-7,
+    0x1.p0,
+    -0x1.c0p2
+  },
+  { // Entry 481
+    0x1.p-6,
+    0x1.p0,
+    -0x1.80p2
+  },
+  { // Entry 482
+    0x1.p-5,
+    0x1.p0,
+    -0x1.40p2
+  },
+  { // Entry 483
+    0x1.p-4,
+    0x1.p0,
+    -0x1.p2
+  },
+  { // Entry 484
+    0x1.p-3,
+    0x1.p0,
+    -0x1.80p1
+  },
+  { // Entry 485
+    0x1.p-2,
+    0x1.p0,
+    -0x1.p1
+  },
+  { // Entry 486
+    0x1.p-1,
+    0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 487
+    0x1.p0,
+    0x1.p0,
+    0.0
+  },
+  { // Entry 488
+    0x1.p1,
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 489
+    0x1.p2,
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 490
+    0x1.p3,
+    0x1.p0,
+    0x1.80p1
+  },
+  { // Entry 491
+    0x1.p4,
+    0x1.p0,
+    0x1.p2
+  },
+  { // Entry 492
+    0x1.p5,
+    0x1.p0,
+    0x1.40p2
+  },
+  { // Entry 493
+    0x1.p6,
+    0x1.p0,
+    0x1.80p2
+  },
+  { // Entry 494
+    0x1.p7,
+    0x1.p0,
+    0x1.c0p2
+  },
+  { // Entry 495
+    0x1.p8,
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 496
+    0x1.p9,
+    0x1.p0,
+    0x1.20p3
+  },
+  { // Entry 497
+    0x1.p10,
+    0x1.p0,
+    0x1.40p3
+  },
+  { // Entry 498
+    0x1.fffffep0,
+    0x1.fffffep127,
+    -0x1.fcp6
+  },
+  { // Entry 499
+    0x1.fffffep1,
+    0x1.fffffep127,
+    -0x1.f8p6
+  },
+  { // Entry 500
+    0x1.fffffep117,
+    0x1.fffffep127,
+    -0x1.40p3
+  },
+  { // Entry 501
+    0x1.fffffep118,
+    0x1.fffffep127,
+    -0x1.20p3
+  },
+  { // Entry 502
+    0x1.fffffep119,
+    0x1.fffffep127,
+    -0x1.p3
+  },
+  { // Entry 503
+    0x1.fffffep120,
+    0x1.fffffep127,
+    -0x1.c0p2
+  },
+  { // Entry 504
+    0x1.fffffep121,
+    0x1.fffffep127,
+    -0x1.80p2
+  },
+  { // Entry 505
+    0x1.fffffep122,
+    0x1.fffffep127,
+    -0x1.40p2
+  },
+  { // Entry 506
+    0x1.fffffep123,
+    0x1.fffffep127,
+    -0x1.p2
+  },
+  { // Entry 507
+    0x1.fffffep124,
+    0x1.fffffep127,
+    -0x1.80p1
+  },
+  { // Entry 508
+    0x1.fffffep125,
+    0x1.fffffep127,
+    -0x1.p1
+  },
+  { // Entry 509
+    0x1.fffffep126,
+    0x1.fffffep127,
+    -0x1.p0
+  },
+  { // Entry 510
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0
+  },
+  { // Entry 511
+    0x1.p-22,
+    0x1.p-149,
+    0x1.fcp6
+  },
+  { // Entry 512
+    0x1.p-23,
+    0x1.p-149,
+    0x1.f8p6
+  },
+  { // Entry 513
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 514
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 515
+    0x1.p-147,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 516
+    0x1.p-146,
+    0x1.p-149,
+    0x1.80p1
+  },
+  { // Entry 517
+    0x1.p-145,
+    0x1.p-149,
+    0x1.p2
+  },
+  { // Entry 518
+    0x1.p-144,
+    0x1.p-149,
+    0x1.40p2
+  },
+  { // Entry 519
+    0x1.p-143,
+    0x1.p-149,
+    0x1.80p2
+  },
+  { // Entry 520
+    0x1.p-142,
+    0x1.p-149,
+    0x1.c0p2
+  },
+  { // Entry 521
+    0x1.p-141,
+    0x1.p-149,
+    0x1.p3
+  },
+  { // Entry 522
+    0x1.p-140,
+    0x1.p-149,
+    0x1.20p3
+  },
+  { // Entry 523
+    0x1.p-139,
+    0x1.p-149,
+    0x1.40p3
+  },
+  { // Entry 524
+    0x1.p-129,
+    0x1.p-2,
+    -0x1.fcp6
+  },
+  { // Entry 525
+    0x1.p-128,
+    0x1.p-2,
+    -0x1.f8p6
+  },
+  { // Entry 526
+    0x1.p-128,
+    0x1.p-1,
+    -0x1.fcp6
+  },
+  { // Entry 527
+    0x1.p-127,
+    0x1.p-1,
+    -0x1.f8p6
+  },
+  { // Entry 528
+    0x1.80p-128,
+    0x1.80p-1,
+    -0x1.fcp6
+  },
+  { // Entry 529
+    0x1.80p-127,
+    0x1.80p-1,
+    -0x1.f8p6
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-2,
+    -0x1.2ap7
+  },
+  { // Entry 531
+    0.0f,
+    0x1.p-2,
+    -0x1.28p7
+  },
+  { // Entry 532
+    0.0f,
+    0x1.p-1,
+    -0x1.2ap7
+  },
+  { // Entry 533
+    0x1.p-149,
+    0x1.p-1,
+    -0x1.28p7
+  },
+  { // Entry 534
+    0.0f,
+    0x1.80p-1,
+    -0x1.2ap7
+  },
+  { // Entry 535
+    0x1.80p-149,
+    0x1.80p-1,
+    -0x1.28p7
+  },
+  { // Entry 536
+    0x1.p127,
+    0x1.p0,
+    0x1.fcp6
+  },
+  { // Entry 537
+    0x1.p126,
+    0x1.p0,
+    0x1.f8p6
+  },
+  { // Entry 538
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 539
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 540
+    0x1.p-147,
+    0x1.p-149,
+    0x1.p1
+  },
+  { // Entry 541
+    0x1.p-146,
+    0x1.p-149,
+    0x1.80p1
+  },
+  { // Entry 542
+    0x1.p-145,
+    0x1.p-149,
+    0x1.p2
+  },
+  { // Entry 543
+    0x1.p-144,
+    0x1.p-149,
+    0x1.40p2
+  },
+  { // Entry 544
+    0x1.p-143,
+    0x1.p-149,
+    0x1.80p2
+  },
+  { // Entry 545
+    0x1.p-142,
+    0x1.p-149,
+    0x1.c0p2
+  },
+  { // Entry 546
+    0x1.p-141,
+    0x1.p-149,
+    0x1.p3
+  },
+  { // Entry 547
+    0x1.p-140,
+    0x1.p-149,
+    0x1.20p3
+  },
+  { // Entry 548
+    0x1.p-139,
+    0x1.p-149,
+    0x1.40p3
+  },
+  { // Entry 549
+    0x1.p-138,
+    0x1.p-149,
+    0x1.60p3
+  },
+  { // Entry 550
+    0x1.p-137,
+    0x1.p-149,
+    0x1.80p3
+  },
+  { // Entry 551
+    0x1.p-136,
+    0x1.p-149,
+    0x1.a0p3
+  },
+  { // Entry 552
+    0x1.p-135,
+    0x1.p-149,
+    0x1.c0p3
+  },
+  { // Entry 553
+    0x1.p-134,
+    0x1.p-149,
+    0x1.e0p3
+  },
+  { // Entry 554
+    0x1.p-133,
+    0x1.p-149,
+    0x1.p4
+  },
+  { // Entry 555
+    0x1.p-132,
+    0x1.p-149,
+    0x1.10p4
+  },
+  { // Entry 556
+    0x1.p-131,
+    0x1.p-149,
+    0x1.20p4
+  },
+  { // Entry 557
+    0x1.p-130,
+    0x1.p-149,
+    0x1.30p4
+  },
+  { // Entry 558
+    0x1.p-129,
+    0x1.p-149,
+    0x1.40p4
+  },
+  { // Entry 559
+    0x1.p-128,
+    0x1.p-149,
+    0x1.50p4
+  },
+  { // Entry 560
+    0x1.p-127,
+    0x1.p-149,
+    0x1.60p4
+  },
+  { // Entry 561
+    0x1.p-126,
+    0x1.p-149,
+    0x1.70p4
+  },
+  { // Entry 562
+    0x1.p-125,
+    0x1.p-149,
+    0x1.80p4
+  },
+  { // Entry 563
+    0x1.p-124,
+    0x1.p-149,
+    0x1.90p4
+  },
+  { // Entry 564
+    0x1.p-123,
+    0x1.p-149,
+    0x1.a0p4
+  },
+  { // Entry 565
+    0x1.p-122,
+    0x1.p-149,
+    0x1.b0p4
+  },
+  { // Entry 566
+    0x1.p-121,
+    0x1.p-149,
+    0x1.c0p4
+  },
+  { // Entry 567
+    0x1.p-120,
+    0x1.p-149,
+    0x1.d0p4
+  },
+  { // Entry 568
+    0x1.p-119,
+    0x1.p-149,
+    0x1.e0p4
+  },
+  { // Entry 569
+    0x1.p-118,
+    0x1.p-149,
+    0x1.f0p4
+  },
+  { // Entry 570
+    0x1.p-117,
+    0x1.p-149,
+    0x1.p5
+  },
+  { // Entry 571
+    0x1.p-116,
+    0x1.p-149,
+    0x1.08p5
+  },
+  { // Entry 572
+    0x1.p-115,
+    0x1.p-149,
+    0x1.10p5
+  },
+  { // Entry 573
+    0x1.p-114,
+    0x1.p-149,
+    0x1.18p5
+  },
+  { // Entry 574
+    0x1.p-113,
+    0x1.p-149,
+    0x1.20p5
+  },
+  { // Entry 575
+    0x1.p-112,
+    0x1.p-149,
+    0x1.28p5
+  },
+  { // Entry 576
+    0x1.p-111,
+    0x1.p-149,
+    0x1.30p5
+  },
+  { // Entry 577
+    0x1.p-110,
+    0x1.p-149,
+    0x1.38p5
+  },
+  { // Entry 578
+    0x1.p-109,
+    0x1.p-149,
+    0x1.40p5
+  },
+  { // Entry 579
+    0x1.p-108,
+    0x1.p-149,
+    0x1.48p5
+  },
+  { // Entry 580
+    0x1.p-107,
+    0x1.p-149,
+    0x1.50p5
+  },
+  { // Entry 581
+    0x1.p-106,
+    0x1.p-149,
+    0x1.58p5
+  },
+  { // Entry 582
+    0x1.p-105,
+    0x1.p-149,
+    0x1.60p5
+  },
+  { // Entry 583
+    0x1.p-104,
+    0x1.p-149,
+    0x1.68p5
+  },
+  { // Entry 584
+    0x1.p-103,
+    0x1.p-149,
+    0x1.70p5
+  },
+  { // Entry 585
+    0x1.p-102,
+    0x1.p-149,
+    0x1.78p5
+  },
+  { // Entry 586
+    0x1.p-101,
+    0x1.p-149,
+    0x1.80p5
+  },
+  { // Entry 587
+    0x1.p-100,
+    0x1.p-149,
+    0x1.88p5
+  },
+  { // Entry 588
+    0x1.p-99,
+    0x1.p-149,
+    0x1.90p5
+  },
+  { // Entry 589
+    0x1.p-98,
+    0x1.p-149,
+    0x1.98p5
+  },
+  { // Entry 590
+    0x1.p-97,
+    0x1.p-149,
+    0x1.a0p5
+  },
+  { // Entry 591
+    0x1.p-96,
+    0x1.p-149,
+    0x1.a8p5
+  },
+  { // Entry 592
+    0x1.p-95,
+    0x1.p-149,
+    0x1.b0p5
+  },
+  { // Entry 593
+    0x1.p-94,
+    0x1.p-149,
+    0x1.b8p5
+  },
+  { // Entry 594
+    0x1.p-93,
+    0x1.p-149,
+    0x1.c0p5
+  },
+  { // Entry 595
+    0x1.p-92,
+    0x1.p-149,
+    0x1.c8p5
+  },
+  { // Entry 596
+    0x1.p-91,
+    0x1.p-149,
+    0x1.d0p5
+  },
+  { // Entry 597
+    0x1.p-90,
+    0x1.p-149,
+    0x1.d8p5
+  },
+  { // Entry 598
+    0x1.p-89,
+    0x1.p-149,
+    0x1.e0p5
+  },
+  { // Entry 599
+    0x1.p-88,
+    0x1.p-149,
+    0x1.e8p5
+  },
+  { // Entry 600
+    0x1.p-87,
+    0x1.p-149,
+    0x1.f0p5
+  },
+  { // Entry 601
+    0x1.p-86,
+    0x1.p-149,
+    0x1.f8p5
+  },
+  { // Entry 602
+    0x1.p-85,
+    0x1.p-149,
+    0x1.p6
+  },
+  { // Entry 603
+    0x1.p-84,
+    0x1.p-149,
+    0x1.04p6
+  },
+  { // Entry 604
+    0x1.p-83,
+    0x1.p-149,
+    0x1.08p6
+  },
+  { // Entry 605
+    0x1.p-82,
+    0x1.p-149,
+    0x1.0cp6
+  },
+  { // Entry 606
+    0x1.p-81,
+    0x1.p-149,
+    0x1.10p6
+  },
+  { // Entry 607
+    0x1.p-80,
+    0x1.p-149,
+    0x1.14p6
+  },
+  { // Entry 608
+    0x1.p-79,
+    0x1.p-149,
+    0x1.18p6
+  },
+  { // Entry 609
+    0x1.p-78,
+    0x1.p-149,
+    0x1.1cp6
+  },
+  { // Entry 610
+    0x1.p-77,
+    0x1.p-149,
+    0x1.20p6
+  },
+  { // Entry 611
+    0x1.p-76,
+    0x1.p-149,
+    0x1.24p6
+  },
+  { // Entry 612
+    0x1.p-75,
+    0x1.p-149,
+    0x1.28p6
+  },
+  { // Entry 613
+    0x1.p-74,
+    0x1.p-149,
+    0x1.2cp6
+  },
+  { // Entry 614
+    0x1.p-73,
+    0x1.p-149,
+    0x1.30p6
+  },
+  { // Entry 615
+    0x1.p-72,
+    0x1.p-149,
+    0x1.34p6
+  },
+  { // Entry 616
+    0x1.p-71,
+    0x1.p-149,
+    0x1.38p6
+  },
+  { // Entry 617
+    0x1.p-70,
+    0x1.p-149,
+    0x1.3cp6
+  },
+  { // Entry 618
+    0x1.p-69,
+    0x1.p-149,
+    0x1.40p6
+  },
+  { // Entry 619
+    0x1.p-68,
+    0x1.p-149,
+    0x1.44p6
+  },
+  { // Entry 620
+    0x1.p-67,
+    0x1.p-149,
+    0x1.48p6
+  },
+  { // Entry 621
+    0x1.p-66,
+    0x1.p-149,
+    0x1.4cp6
+  },
+  { // Entry 622
+    0x1.p-65,
+    0x1.p-149,
+    0x1.50p6
+  },
+  { // Entry 623
+    0x1.p-64,
+    0x1.p-149,
+    0x1.54p6
+  },
+  { // Entry 624
+    0x1.p-63,
+    0x1.p-149,
+    0x1.58p6
+  },
+  { // Entry 625
+    0x1.p-62,
+    0x1.p-149,
+    0x1.5cp6
+  },
+  { // Entry 626
+    0x1.p-61,
+    0x1.p-149,
+    0x1.60p6
+  },
+  { // Entry 627
+    0x1.p-60,
+    0x1.p-149,
+    0x1.64p6
+  },
+  { // Entry 628
+    0x1.p-59,
+    0x1.p-149,
+    0x1.68p6
+  },
+  { // Entry 629
+    0x1.p-58,
+    0x1.p-149,
+    0x1.6cp6
+  },
+  { // Entry 630
+    0x1.p-57,
+    0x1.p-149,
+    0x1.70p6
+  },
+  { // Entry 631
+    0x1.p-56,
+    0x1.p-149,
+    0x1.74p6
+  },
+  { // Entry 632
+    0x1.p-55,
+    0x1.p-149,
+    0x1.78p6
+  },
+  { // Entry 633
+    0x1.p-54,
+    0x1.p-149,
+    0x1.7cp6
+  },
+  { // Entry 634
+    0x1.p-53,
+    0x1.p-149,
+    0x1.80p6
+  },
+  { // Entry 635
+    0x1.p-52,
+    0x1.p-149,
+    0x1.84p6
+  },
+  { // Entry 636
+    0x1.p-51,
+    0x1.p-149,
+    0x1.88p6
+  },
+  { // Entry 637
+    0x1.p-50,
+    0x1.p-149,
+    0x1.8cp6
+  },
+  { // Entry 638
+    0x1.p-49,
+    0x1.p-149,
+    0x1.90p6
+  },
+  { // Entry 639
+    0x1.p-48,
+    0x1.p-149,
+    0x1.94p6
+  },
+  { // Entry 640
+    0x1.p-47,
+    0x1.p-149,
+    0x1.98p6
+  },
+  { // Entry 641
+    0x1.p-46,
+    0x1.p-149,
+    0x1.9cp6
+  },
+  { // Entry 642
+    0x1.p-45,
+    0x1.p-149,
+    0x1.a0p6
+  },
+  { // Entry 643
+    0x1.p-44,
+    0x1.p-149,
+    0x1.a4p6
+  },
+  { // Entry 644
+    0x1.p-43,
+    0x1.p-149,
+    0x1.a8p6
+  },
+  { // Entry 645
+    0x1.p-42,
+    0x1.p-149,
+    0x1.acp6
+  },
+  { // Entry 646
+    0x1.p-41,
+    0x1.p-149,
+    0x1.b0p6
+  },
+  { // Entry 647
+    0x1.p-40,
+    0x1.p-149,
+    0x1.b4p6
+  },
+  { // Entry 648
+    0x1.p-39,
+    0x1.p-149,
+    0x1.b8p6
+  },
+  { // Entry 649
+    0x1.p-38,
+    0x1.p-149,
+    0x1.bcp6
+  },
+  { // Entry 650
+    0x1.p-37,
+    0x1.p-149,
+    0x1.c0p6
+  },
+  { // Entry 651
+    0x1.p-36,
+    0x1.p-149,
+    0x1.c4p6
+  },
+  { // Entry 652
+    0x1.p-35,
+    0x1.p-149,
+    0x1.c8p6
+  },
+  { // Entry 653
+    0x1.p-34,
+    0x1.p-149,
+    0x1.ccp6
+  },
+  { // Entry 654
+    0x1.p-33,
+    0x1.p-149,
+    0x1.d0p6
+  },
+  { // Entry 655
+    0x1.p-32,
+    0x1.p-149,
+    0x1.d4p6
+  },
+  { // Entry 656
+    0x1.p-31,
+    0x1.p-149,
+    0x1.d8p6
+  },
+  { // Entry 657
+    0x1.p-30,
+    0x1.p-149,
+    0x1.dcp6
+  },
+  { // Entry 658
+    0x1.p-29,
+    0x1.p-149,
+    0x1.e0p6
+  },
+  { // Entry 659
+    0x1.p-28,
+    0x1.p-149,
+    0x1.e4p6
+  },
+  { // Entry 660
+    0x1.p-27,
+    0x1.p-149,
+    0x1.e8p6
+  },
+  { // Entry 661
+    0x1.p-26,
+    0x1.p-149,
+    0x1.ecp6
+  },
+  { // Entry 662
+    0x1.p-25,
+    0x1.p-149,
+    0x1.f0p6
+  },
+  { // Entry 663
+    0x1.p-24,
+    0x1.p-149,
+    0x1.f4p6
+  },
+  { // Entry 664
+    0x1.p-23,
+    0x1.p-149,
+    0x1.f8p6
+  },
+  { // Entry 665
+    0x1.p-22,
+    0x1.p-149,
+    0x1.fcp6
+  },
+  { // Entry 666
+    0x1.p-21,
+    0x1.p-149,
+    0x1.p7
+  },
+  { // Entry 667
+    0x1.p-20,
+    0x1.p-149,
+    0x1.02p7
+  },
+  { // Entry 668
+    0x1.p-19,
+    0x1.p-149,
+    0x1.04p7
+  },
+  { // Entry 669
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0
+  },
+  { // Entry 670
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    0x1.p0
+  },
+  { // Entry 671
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    0x1.p1
+  },
+  { // Entry 672
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    0x1.80p1
+  },
+  { // Entry 673
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    0x1.p2
+  },
+  { // Entry 674
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    0x1.40p2
+  },
+  { // Entry 675
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    0x1.80p2
+  },
+  { // Entry 676
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    0x1.c0p2
+  },
+  { // Entry 677
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    0x1.p3
+  },
+  { // Entry 678
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    0x1.20p3
+  },
+  { // Entry 679
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    0x1.40p3
+  },
+  { // Entry 680
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    0x1.60p3
+  },
+  { // Entry 681
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    0x1.80p3
+  },
+  { // Entry 682
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    0x1.a0p3
+  },
+  { // Entry 683
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    0x1.c0p3
+  },
+  { // Entry 684
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    0x1.e0p3
+  },
+  { // Entry 685
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    0x1.p4
+  },
+  { // Entry 686
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    0x1.10p4
+  },
+  { // Entry 687
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    0x1.20p4
+  },
+  { // Entry 688
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    0x1.30p4
+  },
+  { // Entry 689
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    0x1.40p4
+  },
+  { // Entry 690
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    0x1.50p4
+  },
+  { // Entry 691
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    0x1.60p4
+  },
+  { // Entry 692
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    0x1.70p4
+  },
+  { // Entry 693
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    0x1.80p4
+  },
+  { // Entry 694
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    0x1.90p4
+  },
+  { // Entry 695
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    0x1.a0p4
+  },
+  { // Entry 696
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    0x1.b0p4
+  },
+  { // Entry 697
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    0x1.c0p4
+  },
+  { // Entry 698
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    0x1.d0p4
+  },
+  { // Entry 699
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    0x1.e0p4
+  },
+  { // Entry 700
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    0x1.f0p4
+  },
+  { // Entry 701
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    0x1.p5
+  },
+  { // Entry 702
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    0x1.08p5
+  },
+  { // Entry 703
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    0x1.10p5
+  },
+  { // Entry 704
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    0x1.18p5
+  },
+  { // Entry 705
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    0x1.20p5
+  },
+  { // Entry 706
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    0x1.28p5
+  },
+  { // Entry 707
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    0x1.30p5
+  },
+  { // Entry 708
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    0x1.38p5
+  },
+  { // Entry 709
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    0x1.40p5
+  },
+  { // Entry 710
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    0x1.48p5
+  },
+  { // Entry 711
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    0x1.50p5
+  },
+  { // Entry 712
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    0x1.58p5
+  },
+  { // Entry 713
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    0x1.60p5
+  },
+  { // Entry 714
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    0x1.68p5
+  },
+  { // Entry 715
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    0x1.70p5
+  },
+  { // Entry 716
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    0x1.78p5
+  },
+  { // Entry 717
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    0x1.80p5
+  },
+  { // Entry 718
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    0x1.88p5
+  },
+  { // Entry 719
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    0x1.90p5
+  },
+  { // Entry 720
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    0x1.98p5
+  },
+  { // Entry 721
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    0x1.a0p5
+  },
+  { // Entry 722
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    0x1.a8p5
+  },
+  { // Entry 723
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    0x1.b0p5
+  },
+  { // Entry 724
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    0x1.b8p5
+  },
+  { // Entry 725
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    0x1.c0p5
+  },
+  { // Entry 726
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    0x1.c8p5
+  },
+  { // Entry 727
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    0x1.d0p5
+  },
+  { // Entry 728
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    0x1.d8p5
+  },
+  { // Entry 729
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    0x1.e0p5
+  },
+  { // Entry 730
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    0x1.e8p5
+  },
+  { // Entry 731
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    0x1.f0p5
+  },
+  { // Entry 732
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    0x1.f8p5
+  },
+  { // Entry 733
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    0x1.p6
+  },
+  { // Entry 734
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    0x1.04p6
+  },
+  { // Entry 735
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    0x1.08p6
+  },
+  { // Entry 736
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    0x1.0cp6
+  },
+  { // Entry 737
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    0x1.10p6
+  },
+  { // Entry 738
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    0x1.14p6
+  },
+  { // Entry 739
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    0x1.18p6
+  },
+  { // Entry 740
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    0x1.1cp6
+  },
+  { // Entry 741
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    0x1.20p6
+  },
+  { // Entry 742
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    0x1.24p6
+  },
+  { // Entry 743
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    0x1.28p6
+  },
+  { // Entry 744
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    0x1.2cp6
+  },
+  { // Entry 745
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    0x1.30p6
+  },
+  { // Entry 746
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    0x1.34p6
+  },
+  { // Entry 747
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    0x1.38p6
+  },
+  { // Entry 748
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    0x1.3cp6
+  },
+  { // Entry 749
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    0x1.40p6
+  },
+  { // Entry 750
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    0x1.44p6
+  },
+  { // Entry 751
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    0x1.48p6
+  },
+  { // Entry 752
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    0x1.4cp6
+  },
+  { // Entry 753
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    0x1.50p6
+  },
+  { // Entry 754
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    0x1.54p6
+  },
+  { // Entry 755
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    0x1.58p6
+  },
+  { // Entry 756
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    0x1.5cp6
+  },
+  { // Entry 757
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    0x1.60p6
+  },
+  { // Entry 758
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    0x1.64p6
+  },
+  { // Entry 759
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    0x1.68p6
+  },
+  { // Entry 760
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    0x1.6cp6
+  },
+  { // Entry 761
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    0x1.70p6
+  },
+  { // Entry 762
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    0x1.74p6
+  },
+  { // Entry 763
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    0x1.78p6
+  },
+  { // Entry 764
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    0x1.7cp6
+  },
+  { // Entry 765
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    0x1.80p6
+  },
+  { // Entry 766
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    0x1.84p6
+  },
+  { // Entry 767
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    0x1.88p6
+  },
+  { // Entry 768
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    0x1.8cp6
+  },
+  { // Entry 769
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    0x1.90p6
+  },
+  { // Entry 770
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    0x1.94p6
+  },
+  { // Entry 771
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    0x1.98p6
+  },
+  { // Entry 772
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    0x1.9cp6
+  },
+  { // Entry 773
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    0x1.a0p6
+  },
+  { // Entry 774
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    0x1.a4p6
+  },
+  { // Entry 775
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    0x1.a8p6
+  },
+  { // Entry 776
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    0x1.acp6
+  },
+  { // Entry 777
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    0x1.b0p6
+  },
+  { // Entry 778
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    0x1.b4p6
+  },
+  { // Entry 779
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    0x1.b8p6
+  },
+  { // Entry 780
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    0x1.bcp6
+  },
+  { // Entry 781
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    0x1.c0p6
+  },
+  { // Entry 782
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    0x1.c4p6
+  },
+  { // Entry 783
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    0x1.c8p6
+  },
+  { // Entry 784
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    0x1.ccp6
+  },
+  { // Entry 785
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    0x1.d0p6
+  },
+  { // Entry 786
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    0x1.d4p6
+  },
+  { // Entry 787
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    0x1.d8p6
+  },
+  { // Entry 788
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    0x1.dcp6
+  },
+  { // Entry 789
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    0x1.e0p6
+  },
+  { // Entry 790
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    0x1.e4p6
+  },
+  { // Entry 791
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    0x1.e8p6
+  },
+  { // Entry 792
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    0x1.ecp6
+  },
+  { // Entry 793
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    0x1.f0p6
+  },
+  { // Entry 794
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    0x1.f4p6
+  },
+  { // Entry 795
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    0x1.f8p6
+  },
+  { // Entry 796
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    0x1.fcp6
+  },
+  { // Entry 797
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    0x1.p7
+  },
+  { // Entry 798
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    0x1.02p7
+  },
+  { // Entry 799
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    0x1.04p7
+  },
+  { // Entry 800
+    0x1.p0,
+    0x1.p-149,
+    0x1.2ap7
+  },
+  { // Entry 801
+    0x1.p-1,
+    0x1.p-149,
+    0x1.28p7
+  },
+  { // Entry 802
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    0x1.2ap7
+  },
+  { // Entry 803
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    0x1.28p7
+  },
+  { // Entry 804
+    0x1.p-126,
+    0x1.p-149,
+    0x1.70p4
+  },
+  { // Entry 805
+    0x1.p-127,
+    0x1.p-149,
+    0x1.60p4
+  },
+  { // Entry 806
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    0x1.70p4
+  },
+  { // Entry 807
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    0x1.60p4
+  },
+  { // Entry 808
+    0x1.p-149,
+    0x1.p-149,
+    0.0
+  },
+  { // Entry 809
+    0x1.p-148,
+    0x1.p-149,
+    0x1.p0
+  },
+  { // Entry 810
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0
+  },
+  { // Entry 811
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    0x1.p0
+  },
+  { // Entry 812
+    HUGE_VALF,
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 813
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 814
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 815
+    HUGE_VALF,
+    0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 816
+    HUGE_VALF,
+    0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 817
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 818
+    HUGE_VALF,
+    0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 819
+    -HUGE_VALF,
+    -0x1.p-149,
+    HUGE_VALF
+  },
+  { // Entry 820
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    HUGE_VALF
+  },
+  { // Entry 821
+    -HUGE_VALF,
+    -0x1.p-126,
+    HUGE_VALF
+  },
+  { // Entry 822
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    HUGE_VALF
+  },
+  { // Entry 823
+    -HUGE_VALF,
+    -HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 824
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 825
+    0.0f,
+    0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 826
+    0.0,
+    0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 827
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 828
+    HUGE_VALF,
+    0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 829
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 830
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.fffffep127
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -0x1.fffffcp-127,
+    0x1.fffffep127
+  },
+  { // Entry 832
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.fffffep127
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 834
+    0.0f,
+    0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 835
+    0.0,
+    0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 836
+    0.0f,
+    0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 837
+    0.0,
+    0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 838
+    0.0f,
+    0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 839
+    0.0,
+    0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 840
+    0.0,
+    0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 841
+    -0.0,
+    -0.0f,
+    -HUGE_VALF
+  },
+  { // Entry 842
+    -0.0f,
+    -0x1.p-149,
+    -0x1.fffffep127
+  },
+  { // Entry 843
+    -0.0,
+    -0x1.p-149,
+    -HUGE_VALF
+  },
+  { // Entry 844
+    -0.0f,
+    -0x1.fffffcp-127,
+    -0x1.fffffep127
+  },
+  { // Entry 845
+    -0.0,
+    -0x1.fffffcp-127,
+    -HUGE_VALF
+  },
+  { // Entry 846
+    -0.0f,
+    -0x1.p-126,
+    -0x1.fffffep127
+  },
+  { // Entry 847
+    -0.0,
+    -0x1.p-126,
+    -HUGE_VALF
+  },
+  { // Entry 848
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 849
+    -0.0,
+    -0x1.fffffep127,
+    -HUGE_VALF
+  },
+  { // Entry 850
+    0.0,
+    0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 851
+    -0.0,
+    -0.0f,
+    0x1.fffffep127
+  },
+  { // Entry 852
+    0.0,
+    0.0f,
+    0.0f
+  },
+  { // Entry 853
+    -0.0,
+    -0.0f,
+    0.0f
+  },
+  { // Entry 854
+    0.0,
+    0.0f,
+    -0.0f
+  },
+  { // Entry 855
+    -0.0,
+    -0.0f,
+    -0.0f
+  },
+  { // Entry 856
+    0.0,
+    0.0f,
+    0x1.p0
+  },
+  { // Entry 857
+    -0.0,
+    -0.0f,
+    0x1.p0
+  },
+  { // Entry 858
+    0.0,
+    0.0f,
+    -0x1.p0
+  },
+  { // Entry 859
+    -0.0,
+    -0.0f,
+    -0x1.p0
+  },
+  { // Entry 860
+    0.0,
+    0.0f,
+    0x1.fcp6
+  },
+  { // Entry 861
+    -0.0,
+    -0.0f,
+    0x1.fcp6
+  },
+  { // Entry 862
+    0.0,
+    0.0f,
+    -0x1.fcp6
+  },
+  { // Entry 863
+    -0.0,
+    -0.0f,
+    -0x1.fcp6
+  },
+  { // Entry 864
+    0.0,
+    0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 865
+    -0.0,
+    -0.0f,
+    -0x1.fffffep127
+  },
+  { // Entry 866
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 867
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 868
+    HUGE_VALF,
+    HUGE_VALF,
+    0.0f
+  },
+  { // Entry 869
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0.0f
+  },
+  { // Entry 870
+    HUGE_VALF,
+    HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 871
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0.0f
+  },
+  { // Entry 872
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 873
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.p0
+  },
+  { // Entry 874
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 875
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.p0
+  },
+  { // Entry 876
+    HUGE_VALF,
+    HUGE_VALF,
+    0x1.fcp6
+  },
+  { // Entry 877
+    -HUGE_VALF,
+    -HUGE_VALF,
+    0x1.fcp6
+  },
+  { // Entry 878
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fcp6
+  },
+  { // Entry 879
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fcp6
+  },
+  { // Entry 880
+    HUGE_VALF,
+    HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 881
+    -HUGE_VALF,
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 882
+    0x1.fffffep127,
+    0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 883
+    0x1.fffffep127,
+    0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 884
+    0x1.p-126,
+    0x1.p-126,
+    0.0f
+  },
+  { // Entry 885
+    0x1.p-126,
+    0x1.p-126,
+    -0.0f
+  },
+  { // Entry 886
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 887
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 888
+    0x1.p-149,
+    0x1.p-149,
+    0.0f
+  },
+  { // Entry 889
+    0x1.p-149,
+    0x1.p-149,
+    -0.0f
+  },
+  { // Entry 890
+    -0x1.p-149,
+    -0x1.p-149,
+    0.0f
+  },
+  { // Entry 891
+    -0x1.p-149,
+    -0x1.p-149,
+    -0.0f
+  },
+  { // Entry 892
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    0.0f
+  },
+  { // Entry 893
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    -0.0f
+  },
+  { // Entry 894
+    -0x1.p-126,
+    -0x1.p-126,
+    0.0f
+  },
+  { // Entry 895
+    -0x1.p-126,
+    -0x1.p-126,
+    -0.0f
+  },
+  { // Entry 896
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    0.0f
+  },
+  { // Entry 897
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    -0.0f
+  },
+  { // Entry 898
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.p0
+  },
+  { // Entry 899
+    HUGE_VALF,
+    0x1.fffffep127,
+    0x1.fcp6
+  },
+  { // Entry 900
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.p0
+  },
+  { // Entry 901
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    0x1.fcp6
+  },
+  { // Entry 902
+    HUGE_VALF,
+    0x1.p-126,
+    0x1.3880p15
+  },
+  { // Entry 903
+    HUGE_VALF,
+    0x1.p-149,
+    0x1.3880p15
+  },
+  { // Entry 904
+    -HUGE_VALF,
+    -0x1.p-126,
+    0x1.3880p15
+  },
+  { // Entry 905
+    -HUGE_VALF,
+    -0x1.p-149,
+    0x1.3880p15
+  },
+  { // Entry 906
+    0x1.p-127,
+    0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 907
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 908
+    0.0f,
+    0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 909
+    -0.0f,
+    -0x1.p-149,
+    -0x1.p0
+  },
+  { // Entry 910
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    -0x1.p0
+  },
+  { // Entry 911
+    -0x1.p-127,
+    -0x1.p-126,
+    -0x1.p0
+  },
+  { // Entry 912
+    0.0f,
+    0x1.fffffep127,
+    -0x1.3880p15
+  },
+  { // Entry 913
+    -0.0f,
+    -0x1.fffffep127,
+    -0x1.3880p15
+  }
+};
diff --git a/tests/math_data/scalbn_intel_data.h b/tests/math_data/scalbn_intel_data.h
new file mode 100644
index 0000000..7b97530
--- /dev/null
+++ b/tests/math_data/scalbn_intel_data.h
@@ -0,0 +1,4333 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<double, double, int> g_scalbn_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.55555555555560p-1024,
+    -0x1.5555555555556p-2,
+    (int)-1022
+  },
+  { // Entry 2
+    -0x1.6db6db6db6db70p-1023,
+    -0x1.6db6db6db6db7p-1,
+    (int)-1022
+  },
+  { // Entry 3
+    -0x1.8e38e38e38e390p-1023,
+    -0x1.8e38e38e38e39p-1,
+    (int)-1022
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0p-1074,
+    (int)-10
+  },
+  { // Entry 6
+    0.0,
+    0x1.0p-1074,
+    (int)-47
+  },
+  { // Entry 7
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 8
+    0x1.29e4129e4129e0p-1024,
+    0x1.29e4129e4129ep-7,
+    (int)-1017
+  },
+  { // Entry 9
+    HUGE_VAL,
+    0x1.8e147ae147ae1p0,
+    (int)2147483647
+  },
+  { // Entry 10
+    0.0,
+    0x1.dddddddddddddp-2,
+    (int)-1073
+  },
+  { // Entry 11
+    0.0,
+    0x1.f7df7df7df7dfp-2,
+    (int)-1073
+  },
+  { // Entry 12
+    0x1.ffffffffffffc0p-1033,
+    0x1.ffffffffffffcp-1023,
+    (int)-10
+  },
+  { // Entry 13
+    0x1.ffffffffffffc0p-1022,
+    0x1.ffffffffffffcp-1023,
+    (int)1
+  },
+  { // Entry 14
+    0x1.ffffffffffffe0p-1070,
+    0x1.ffffffffffffep-1023,
+    (int)-47
+  },
+  { // Entry 15
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 16
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 17
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)2147483647
+  },
+  { // Entry 18
+    -0x1.p-10,
+    -0x1.0p0,
+    (int)-10
+  },
+  { // Entry 19
+    -0x1.p-9,
+    -0x1.0p0,
+    (int)-9
+  },
+  { // Entry 20
+    -0x1.p-8,
+    -0x1.0p0,
+    (int)-8
+  },
+  { // Entry 21
+    -0x1.p-7,
+    -0x1.0p0,
+    (int)-7
+  },
+  { // Entry 22
+    -0x1.p-6,
+    -0x1.0p0,
+    (int)-6
+  },
+  { // Entry 23
+    -0x1.p-5,
+    -0x1.0p0,
+    (int)-5
+  },
+  { // Entry 24
+    -0x1.p-4,
+    -0x1.0p0,
+    (int)-4
+  },
+  { // Entry 25
+    -0x1.p-3,
+    -0x1.0p0,
+    (int)-3
+  },
+  { // Entry 26
+    -0x1.p-2,
+    -0x1.0p0,
+    (int)-2
+  },
+  { // Entry 27
+    -0x1.p-1,
+    -0x1.0p0,
+    (int)-1
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0p0,
+    (int)0
+  },
+  { // Entry 29
+    -0x1.p1,
+    -0x1.0p0,
+    (int)1
+  },
+  { // Entry 30
+    -0x1.p2,
+    -0x1.0p0,
+    (int)2
+  },
+  { // Entry 31
+    -0x1.p3,
+    -0x1.0p0,
+    (int)3
+  },
+  { // Entry 32
+    -0x1.p4,
+    -0x1.0p0,
+    (int)4
+  },
+  { // Entry 33
+    -0x1.p5,
+    -0x1.0p0,
+    (int)5
+  },
+  { // Entry 34
+    -0x1.p6,
+    -0x1.0p0,
+    (int)6
+  },
+  { // Entry 35
+    -0x1.p7,
+    -0x1.0p0,
+    (int)7
+  },
+  { // Entry 36
+    -0x1.p8,
+    -0x1.0p0,
+    (int)8
+  },
+  { // Entry 37
+    -0x1.p9,
+    -0x1.0p0,
+    (int)9
+  },
+  { // Entry 38
+    -0x1.p10,
+    -0x1.0p0,
+    (int)10
+  },
+  { // Entry 39
+    -0x1.d1745d1745d170p-11,
+    -0x1.d1745d1745d17p-1,
+    (int)-10
+  },
+  { // Entry 40
+    -0x1.d1745d1745d170p-10,
+    -0x1.d1745d1745d17p-1,
+    (int)-9
+  },
+  { // Entry 41
+    -0x1.d1745d1745d170p-9,
+    -0x1.d1745d1745d17p-1,
+    (int)-8
+  },
+  { // Entry 42
+    -0x1.d1745d1745d170p-8,
+    -0x1.d1745d1745d17p-1,
+    (int)-7
+  },
+  { // Entry 43
+    -0x1.d1745d1745d170p-7,
+    -0x1.d1745d1745d17p-1,
+    (int)-6
+  },
+  { // Entry 44
+    -0x1.d1745d1745d170p-6,
+    -0x1.d1745d1745d17p-1,
+    (int)-5
+  },
+  { // Entry 45
+    -0x1.d1745d1745d170p-5,
+    -0x1.d1745d1745d17p-1,
+    (int)-4
+  },
+  { // Entry 46
+    -0x1.d1745d1745d170p-4,
+    -0x1.d1745d1745d17p-1,
+    (int)-3
+  },
+  { // Entry 47
+    -0x1.d1745d1745d170p-3,
+    -0x1.d1745d1745d17p-1,
+    (int)-2
+  },
+  { // Entry 48
+    -0x1.d1745d1745d170p-2,
+    -0x1.d1745d1745d17p-1,
+    (int)-1
+  },
+  { // Entry 49
+    -0x1.d1745d1745d170p-1,
+    -0x1.d1745d1745d17p-1,
+    (int)0
+  },
+  { // Entry 50
+    -0x1.d1745d1745d170p0,
+    -0x1.d1745d1745d17p-1,
+    (int)1
+  },
+  { // Entry 51
+    -0x1.d1745d1745d170p1,
+    -0x1.d1745d1745d17p-1,
+    (int)2
+  },
+  { // Entry 52
+    -0x1.d1745d1745d170p2,
+    -0x1.d1745d1745d17p-1,
+    (int)3
+  },
+  { // Entry 53
+    -0x1.d1745d1745d170p3,
+    -0x1.d1745d1745d17p-1,
+    (int)4
+  },
+  { // Entry 54
+    -0x1.d1745d1745d170p4,
+    -0x1.d1745d1745d17p-1,
+    (int)5
+  },
+  { // Entry 55
+    -0x1.d1745d1745d170p5,
+    -0x1.d1745d1745d17p-1,
+    (int)6
+  },
+  { // Entry 56
+    -0x1.d1745d1745d170p6,
+    -0x1.d1745d1745d17p-1,
+    (int)7
+  },
+  { // Entry 57
+    -0x1.d1745d1745d170p7,
+    -0x1.d1745d1745d17p-1,
+    (int)8
+  },
+  { // Entry 58
+    -0x1.d1745d1745d170p8,
+    -0x1.d1745d1745d17p-1,
+    (int)9
+  },
+  { // Entry 59
+    -0x1.d1745d1745d170p9,
+    -0x1.d1745d1745d17p-1,
+    (int)10
+  },
+  { // Entry 60
+    -0x1.a2e8ba2e8ba2e0p-11,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-10
+  },
+  { // Entry 61
+    -0x1.a2e8ba2e8ba2e0p-10,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-9
+  },
+  { // Entry 62
+    -0x1.a2e8ba2e8ba2e0p-9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-8
+  },
+  { // Entry 63
+    -0x1.a2e8ba2e8ba2e0p-8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-7
+  },
+  { // Entry 64
+    -0x1.a2e8ba2e8ba2e0p-7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-6
+  },
+  { // Entry 65
+    -0x1.a2e8ba2e8ba2e0p-6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-5
+  },
+  { // Entry 66
+    -0x1.a2e8ba2e8ba2e0p-5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-4
+  },
+  { // Entry 67
+    -0x1.a2e8ba2e8ba2e0p-4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-3
+  },
+  { // Entry 68
+    -0x1.a2e8ba2e8ba2e0p-3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-2
+  },
+  { // Entry 69
+    -0x1.a2e8ba2e8ba2e0p-2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)-1
+  },
+  { // Entry 70
+    -0x1.a2e8ba2e8ba2e0p-1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)0
+  },
+  { // Entry 71
+    -0x1.a2e8ba2e8ba2e0p0,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)1
+  },
+  { // Entry 72
+    -0x1.a2e8ba2e8ba2e0p1,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)2
+  },
+  { // Entry 73
+    -0x1.a2e8ba2e8ba2e0p2,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)3
+  },
+  { // Entry 74
+    -0x1.a2e8ba2e8ba2e0p3,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)4
+  },
+  { // Entry 75
+    -0x1.a2e8ba2e8ba2e0p4,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)5
+  },
+  { // Entry 76
+    -0x1.a2e8ba2e8ba2e0p5,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)6
+  },
+  { // Entry 77
+    -0x1.a2e8ba2e8ba2e0p6,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)7
+  },
+  { // Entry 78
+    -0x1.a2e8ba2e8ba2e0p7,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)8
+  },
+  { // Entry 79
+    -0x1.a2e8ba2e8ba2e0p8,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)9
+  },
+  { // Entry 80
+    -0x1.a2e8ba2e8ba2e0p9,
+    -0x1.a2e8ba2e8ba2ep-1,
+    (int)10
+  },
+  { // Entry 81
+    -0x1.745d1745d17450p-11,
+    -0x1.745d1745d1745p-1,
+    (int)-10
+  },
+  { // Entry 82
+    -0x1.745d1745d17450p-10,
+    -0x1.745d1745d1745p-1,
+    (int)-9
+  },
+  { // Entry 83
+    -0x1.745d1745d17450p-9,
+    -0x1.745d1745d1745p-1,
+    (int)-8
+  },
+  { // Entry 84
+    -0x1.745d1745d17450p-8,
+    -0x1.745d1745d1745p-1,
+    (int)-7
+  },
+  { // Entry 85
+    -0x1.745d1745d17450p-7,
+    -0x1.745d1745d1745p-1,
+    (int)-6
+  },
+  { // Entry 86
+    -0x1.745d1745d17450p-6,
+    -0x1.745d1745d1745p-1,
+    (int)-5
+  },
+  { // Entry 87
+    -0x1.745d1745d17450p-5,
+    -0x1.745d1745d1745p-1,
+    (int)-4
+  },
+  { // Entry 88
+    -0x1.745d1745d17450p-4,
+    -0x1.745d1745d1745p-1,
+    (int)-3
+  },
+  { // Entry 89
+    -0x1.745d1745d17450p-3,
+    -0x1.745d1745d1745p-1,
+    (int)-2
+  },
+  { // Entry 90
+    -0x1.745d1745d17450p-2,
+    -0x1.745d1745d1745p-1,
+    (int)-1
+  },
+  { // Entry 91
+    -0x1.745d1745d17450p-1,
+    -0x1.745d1745d1745p-1,
+    (int)0
+  },
+  { // Entry 92
+    -0x1.745d1745d17450p0,
+    -0x1.745d1745d1745p-1,
+    (int)1
+  },
+  { // Entry 93
+    -0x1.745d1745d17450p1,
+    -0x1.745d1745d1745p-1,
+    (int)2
+  },
+  { // Entry 94
+    -0x1.745d1745d17450p2,
+    -0x1.745d1745d1745p-1,
+    (int)3
+  },
+  { // Entry 95
+    -0x1.745d1745d17450p3,
+    -0x1.745d1745d1745p-1,
+    (int)4
+  },
+  { // Entry 96
+    -0x1.745d1745d17450p4,
+    -0x1.745d1745d1745p-1,
+    (int)5
+  },
+  { // Entry 97
+    -0x1.745d1745d17450p5,
+    -0x1.745d1745d1745p-1,
+    (int)6
+  },
+  { // Entry 98
+    -0x1.745d1745d17450p6,
+    -0x1.745d1745d1745p-1,
+    (int)7
+  },
+  { // Entry 99
+    -0x1.745d1745d17450p7,
+    -0x1.745d1745d1745p-1,
+    (int)8
+  },
+  { // Entry 100
+    -0x1.745d1745d17450p8,
+    -0x1.745d1745d1745p-1,
+    (int)9
+  },
+  { // Entry 101
+    -0x1.745d1745d17450p9,
+    -0x1.745d1745d1745p-1,
+    (int)10
+  },
+  { // Entry 102
+    -0x1.45d1745d1745c0p-11,
+    -0x1.45d1745d1745cp-1,
+    (int)-10
+  },
+  { // Entry 103
+    -0x1.45d1745d1745c0p-10,
+    -0x1.45d1745d1745cp-1,
+    (int)-9
+  },
+  { // Entry 104
+    -0x1.45d1745d1745c0p-9,
+    -0x1.45d1745d1745cp-1,
+    (int)-8
+  },
+  { // Entry 105
+    -0x1.45d1745d1745c0p-8,
+    -0x1.45d1745d1745cp-1,
+    (int)-7
+  },
+  { // Entry 106
+    -0x1.45d1745d1745c0p-7,
+    -0x1.45d1745d1745cp-1,
+    (int)-6
+  },
+  { // Entry 107
+    -0x1.45d1745d1745c0p-6,
+    -0x1.45d1745d1745cp-1,
+    (int)-5
+  },
+  { // Entry 108
+    -0x1.45d1745d1745c0p-5,
+    -0x1.45d1745d1745cp-1,
+    (int)-4
+  },
+  { // Entry 109
+    -0x1.45d1745d1745c0p-4,
+    -0x1.45d1745d1745cp-1,
+    (int)-3
+  },
+  { // Entry 110
+    -0x1.45d1745d1745c0p-3,
+    -0x1.45d1745d1745cp-1,
+    (int)-2
+  },
+  { // Entry 111
+    -0x1.45d1745d1745c0p-2,
+    -0x1.45d1745d1745cp-1,
+    (int)-1
+  },
+  { // Entry 112
+    -0x1.45d1745d1745c0p-1,
+    -0x1.45d1745d1745cp-1,
+    (int)0
+  },
+  { // Entry 113
+    -0x1.45d1745d1745c0p0,
+    -0x1.45d1745d1745cp-1,
+    (int)1
+  },
+  { // Entry 114
+    -0x1.45d1745d1745c0p1,
+    -0x1.45d1745d1745cp-1,
+    (int)2
+  },
+  { // Entry 115
+    -0x1.45d1745d1745c0p2,
+    -0x1.45d1745d1745cp-1,
+    (int)3
+  },
+  { // Entry 116
+    -0x1.45d1745d1745c0p3,
+    -0x1.45d1745d1745cp-1,
+    (int)4
+  },
+  { // Entry 117
+    -0x1.45d1745d1745c0p4,
+    -0x1.45d1745d1745cp-1,
+    (int)5
+  },
+  { // Entry 118
+    -0x1.45d1745d1745c0p5,
+    -0x1.45d1745d1745cp-1,
+    (int)6
+  },
+  { // Entry 119
+    -0x1.45d1745d1745c0p6,
+    -0x1.45d1745d1745cp-1,
+    (int)7
+  },
+  { // Entry 120
+    -0x1.45d1745d1745c0p7,
+    -0x1.45d1745d1745cp-1,
+    (int)8
+  },
+  { // Entry 121
+    -0x1.45d1745d1745c0p8,
+    -0x1.45d1745d1745cp-1,
+    (int)9
+  },
+  { // Entry 122
+    -0x1.45d1745d1745c0p9,
+    -0x1.45d1745d1745cp-1,
+    (int)10
+  },
+  { // Entry 123
+    -0x1.1745d1745d1730p-11,
+    -0x1.1745d1745d173p-1,
+    (int)-10
+  },
+  { // Entry 124
+    -0x1.1745d1745d1730p-10,
+    -0x1.1745d1745d173p-1,
+    (int)-9
+  },
+  { // Entry 125
+    -0x1.1745d1745d1730p-9,
+    -0x1.1745d1745d173p-1,
+    (int)-8
+  },
+  { // Entry 126
+    -0x1.1745d1745d1730p-8,
+    -0x1.1745d1745d173p-1,
+    (int)-7
+  },
+  { // Entry 127
+    -0x1.1745d1745d1730p-7,
+    -0x1.1745d1745d173p-1,
+    (int)-6
+  },
+  { // Entry 128
+    -0x1.1745d1745d1730p-6,
+    -0x1.1745d1745d173p-1,
+    (int)-5
+  },
+  { // Entry 129
+    -0x1.1745d1745d1730p-5,
+    -0x1.1745d1745d173p-1,
+    (int)-4
+  },
+  { // Entry 130
+    -0x1.1745d1745d1730p-4,
+    -0x1.1745d1745d173p-1,
+    (int)-3
+  },
+  { // Entry 131
+    -0x1.1745d1745d1730p-3,
+    -0x1.1745d1745d173p-1,
+    (int)-2
+  },
+  { // Entry 132
+    -0x1.1745d1745d1730p-2,
+    -0x1.1745d1745d173p-1,
+    (int)-1
+  },
+  { // Entry 133
+    -0x1.1745d1745d1730p-1,
+    -0x1.1745d1745d173p-1,
+    (int)0
+  },
+  { // Entry 134
+    -0x1.1745d1745d1730p0,
+    -0x1.1745d1745d173p-1,
+    (int)1
+  },
+  { // Entry 135
+    -0x1.1745d1745d1730p1,
+    -0x1.1745d1745d173p-1,
+    (int)2
+  },
+  { // Entry 136
+    -0x1.1745d1745d1730p2,
+    -0x1.1745d1745d173p-1,
+    (int)3
+  },
+  { // Entry 137
+    -0x1.1745d1745d1730p3,
+    -0x1.1745d1745d173p-1,
+    (int)4
+  },
+  { // Entry 138
+    -0x1.1745d1745d1730p4,
+    -0x1.1745d1745d173p-1,
+    (int)5
+  },
+  { // Entry 139
+    -0x1.1745d1745d1730p5,
+    -0x1.1745d1745d173p-1,
+    (int)6
+  },
+  { // Entry 140
+    -0x1.1745d1745d1730p6,
+    -0x1.1745d1745d173p-1,
+    (int)7
+  },
+  { // Entry 141
+    -0x1.1745d1745d1730p7,
+    -0x1.1745d1745d173p-1,
+    (int)8
+  },
+  { // Entry 142
+    -0x1.1745d1745d1730p8,
+    -0x1.1745d1745d173p-1,
+    (int)9
+  },
+  { // Entry 143
+    -0x1.1745d1745d1730p9,
+    -0x1.1745d1745d173p-1,
+    (int)10
+  },
+  { // Entry 144
+    -0x1.d1745d1745d140p-12,
+    -0x1.d1745d1745d14p-2,
+    (int)-10
+  },
+  { // Entry 145
+    -0x1.d1745d1745d140p-11,
+    -0x1.d1745d1745d14p-2,
+    (int)-9
+  },
+  { // Entry 146
+    -0x1.d1745d1745d140p-10,
+    -0x1.d1745d1745d14p-2,
+    (int)-8
+  },
+  { // Entry 147
+    -0x1.d1745d1745d140p-9,
+    -0x1.d1745d1745d14p-2,
+    (int)-7
+  },
+  { // Entry 148
+    -0x1.d1745d1745d140p-8,
+    -0x1.d1745d1745d14p-2,
+    (int)-6
+  },
+  { // Entry 149
+    -0x1.d1745d1745d140p-7,
+    -0x1.d1745d1745d14p-2,
+    (int)-5
+  },
+  { // Entry 150
+    -0x1.d1745d1745d140p-6,
+    -0x1.d1745d1745d14p-2,
+    (int)-4
+  },
+  { // Entry 151
+    -0x1.d1745d1745d140p-5,
+    -0x1.d1745d1745d14p-2,
+    (int)-3
+  },
+  { // Entry 152
+    -0x1.d1745d1745d140p-4,
+    -0x1.d1745d1745d14p-2,
+    (int)-2
+  },
+  { // Entry 153
+    -0x1.d1745d1745d140p-3,
+    -0x1.d1745d1745d14p-2,
+    (int)-1
+  },
+  { // Entry 154
+    -0x1.d1745d1745d140p-2,
+    -0x1.d1745d1745d14p-2,
+    (int)0
+  },
+  { // Entry 155
+    -0x1.d1745d1745d140p-1,
+    -0x1.d1745d1745d14p-2,
+    (int)1
+  },
+  { // Entry 156
+    -0x1.d1745d1745d140p0,
+    -0x1.d1745d1745d14p-2,
+    (int)2
+  },
+  { // Entry 157
+    -0x1.d1745d1745d140p1,
+    -0x1.d1745d1745d14p-2,
+    (int)3
+  },
+  { // Entry 158
+    -0x1.d1745d1745d140p2,
+    -0x1.d1745d1745d14p-2,
+    (int)4
+  },
+  { // Entry 159
+    -0x1.d1745d1745d140p3,
+    -0x1.d1745d1745d14p-2,
+    (int)5
+  },
+  { // Entry 160
+    -0x1.d1745d1745d140p4,
+    -0x1.d1745d1745d14p-2,
+    (int)6
+  },
+  { // Entry 161
+    -0x1.d1745d1745d140p5,
+    -0x1.d1745d1745d14p-2,
+    (int)7
+  },
+  { // Entry 162
+    -0x1.d1745d1745d140p6,
+    -0x1.d1745d1745d14p-2,
+    (int)8
+  },
+  { // Entry 163
+    -0x1.d1745d1745d140p7,
+    -0x1.d1745d1745d14p-2,
+    (int)9
+  },
+  { // Entry 164
+    -0x1.d1745d1745d140p8,
+    -0x1.d1745d1745d14p-2,
+    (int)10
+  },
+  { // Entry 165
+    -0x1.745d1745d17420p-12,
+    -0x1.745d1745d1742p-2,
+    (int)-10
+  },
+  { // Entry 166
+    -0x1.745d1745d17420p-11,
+    -0x1.745d1745d1742p-2,
+    (int)-9
+  },
+  { // Entry 167
+    -0x1.745d1745d17420p-10,
+    -0x1.745d1745d1742p-2,
+    (int)-8
+  },
+  { // Entry 168
+    -0x1.745d1745d17420p-9,
+    -0x1.745d1745d1742p-2,
+    (int)-7
+  },
+  { // Entry 169
+    -0x1.745d1745d17420p-8,
+    -0x1.745d1745d1742p-2,
+    (int)-6
+  },
+  { // Entry 170
+    -0x1.745d1745d17420p-7,
+    -0x1.745d1745d1742p-2,
+    (int)-5
+  },
+  { // Entry 171
+    -0x1.745d1745d17420p-6,
+    -0x1.745d1745d1742p-2,
+    (int)-4
+  },
+  { // Entry 172
+    -0x1.745d1745d17420p-5,
+    -0x1.745d1745d1742p-2,
+    (int)-3
+  },
+  { // Entry 173
+    -0x1.745d1745d17420p-4,
+    -0x1.745d1745d1742p-2,
+    (int)-2
+  },
+  { // Entry 174
+    -0x1.745d1745d17420p-3,
+    -0x1.745d1745d1742p-2,
+    (int)-1
+  },
+  { // Entry 175
+    -0x1.745d1745d17420p-2,
+    -0x1.745d1745d1742p-2,
+    (int)0
+  },
+  { // Entry 176
+    -0x1.745d1745d17420p-1,
+    -0x1.745d1745d1742p-2,
+    (int)1
+  },
+  { // Entry 177
+    -0x1.745d1745d17420p0,
+    -0x1.745d1745d1742p-2,
+    (int)2
+  },
+  { // Entry 178
+    -0x1.745d1745d17420p1,
+    -0x1.745d1745d1742p-2,
+    (int)3
+  },
+  { // Entry 179
+    -0x1.745d1745d17420p2,
+    -0x1.745d1745d1742p-2,
+    (int)4
+  },
+  { // Entry 180
+    -0x1.745d1745d17420p3,
+    -0x1.745d1745d1742p-2,
+    (int)5
+  },
+  { // Entry 181
+    -0x1.745d1745d17420p4,
+    -0x1.745d1745d1742p-2,
+    (int)6
+  },
+  { // Entry 182
+    -0x1.745d1745d17420p5,
+    -0x1.745d1745d1742p-2,
+    (int)7
+  },
+  { // Entry 183
+    -0x1.745d1745d17420p6,
+    -0x1.745d1745d1742p-2,
+    (int)8
+  },
+  { // Entry 184
+    -0x1.745d1745d17420p7,
+    -0x1.745d1745d1742p-2,
+    (int)9
+  },
+  { // Entry 185
+    -0x1.745d1745d17420p8,
+    -0x1.745d1745d1742p-2,
+    (int)10
+  },
+  { // Entry 186
+    -0x1.1745d1745d17p-12,
+    -0x1.1745d1745d170p-2,
+    (int)-10
+  },
+  { // Entry 187
+    -0x1.1745d1745d17p-11,
+    -0x1.1745d1745d170p-2,
+    (int)-9
+  },
+  { // Entry 188
+    -0x1.1745d1745d17p-10,
+    -0x1.1745d1745d170p-2,
+    (int)-8
+  },
+  { // Entry 189
+    -0x1.1745d1745d17p-9,
+    -0x1.1745d1745d170p-2,
+    (int)-7
+  },
+  { // Entry 190
+    -0x1.1745d1745d17p-8,
+    -0x1.1745d1745d170p-2,
+    (int)-6
+  },
+  { // Entry 191
+    -0x1.1745d1745d17p-7,
+    -0x1.1745d1745d170p-2,
+    (int)-5
+  },
+  { // Entry 192
+    -0x1.1745d1745d17p-6,
+    -0x1.1745d1745d170p-2,
+    (int)-4
+  },
+  { // Entry 193
+    -0x1.1745d1745d17p-5,
+    -0x1.1745d1745d170p-2,
+    (int)-3
+  },
+  { // Entry 194
+    -0x1.1745d1745d17p-4,
+    -0x1.1745d1745d170p-2,
+    (int)-2
+  },
+  { // Entry 195
+    -0x1.1745d1745d17p-3,
+    -0x1.1745d1745d170p-2,
+    (int)-1
+  },
+  { // Entry 196
+    -0x1.1745d1745d17p-2,
+    -0x1.1745d1745d170p-2,
+    (int)0
+  },
+  { // Entry 197
+    -0x1.1745d1745d17p-1,
+    -0x1.1745d1745d170p-2,
+    (int)1
+  },
+  { // Entry 198
+    -0x1.1745d1745d17p0,
+    -0x1.1745d1745d170p-2,
+    (int)2
+  },
+  { // Entry 199
+    -0x1.1745d1745d17p1,
+    -0x1.1745d1745d170p-2,
+    (int)3
+  },
+  { // Entry 200
+    -0x1.1745d1745d17p2,
+    -0x1.1745d1745d170p-2,
+    (int)4
+  },
+  { // Entry 201
+    -0x1.1745d1745d17p3,
+    -0x1.1745d1745d170p-2,
+    (int)5
+  },
+  { // Entry 202
+    -0x1.1745d1745d17p4,
+    -0x1.1745d1745d170p-2,
+    (int)6
+  },
+  { // Entry 203
+    -0x1.1745d1745d17p5,
+    -0x1.1745d1745d170p-2,
+    (int)7
+  },
+  { // Entry 204
+    -0x1.1745d1745d17p6,
+    -0x1.1745d1745d170p-2,
+    (int)8
+  },
+  { // Entry 205
+    -0x1.1745d1745d17p7,
+    -0x1.1745d1745d170p-2,
+    (int)9
+  },
+  { // Entry 206
+    -0x1.1745d1745d17p8,
+    -0x1.1745d1745d170p-2,
+    (int)10
+  },
+  { // Entry 207
+    -0x1.745d1745d173d0p-13,
+    -0x1.745d1745d173dp-3,
+    (int)-10
+  },
+  { // Entry 208
+    -0x1.745d1745d173d0p-12,
+    -0x1.745d1745d173dp-3,
+    (int)-9
+  },
+  { // Entry 209
+    -0x1.745d1745d173d0p-11,
+    -0x1.745d1745d173dp-3,
+    (int)-8
+  },
+  { // Entry 210
+    -0x1.745d1745d173d0p-10,
+    -0x1.745d1745d173dp-3,
+    (int)-7
+  },
+  { // Entry 211
+    -0x1.745d1745d173d0p-9,
+    -0x1.745d1745d173dp-3,
+    (int)-6
+  },
+  { // Entry 212
+    -0x1.745d1745d173d0p-8,
+    -0x1.745d1745d173dp-3,
+    (int)-5
+  },
+  { // Entry 213
+    -0x1.745d1745d173d0p-7,
+    -0x1.745d1745d173dp-3,
+    (int)-4
+  },
+  { // Entry 214
+    -0x1.745d1745d173d0p-6,
+    -0x1.745d1745d173dp-3,
+    (int)-3
+  },
+  { // Entry 215
+    -0x1.745d1745d173d0p-5,
+    -0x1.745d1745d173dp-3,
+    (int)-2
+  },
+  { // Entry 216
+    -0x1.745d1745d173d0p-4,
+    -0x1.745d1745d173dp-3,
+    (int)-1
+  },
+  { // Entry 217
+    -0x1.745d1745d173d0p-3,
+    -0x1.745d1745d173dp-3,
+    (int)0
+  },
+  { // Entry 218
+    -0x1.745d1745d173d0p-2,
+    -0x1.745d1745d173dp-3,
+    (int)1
+  },
+  { // Entry 219
+    -0x1.745d1745d173d0p-1,
+    -0x1.745d1745d173dp-3,
+    (int)2
+  },
+  { // Entry 220
+    -0x1.745d1745d173d0p0,
+    -0x1.745d1745d173dp-3,
+    (int)3
+  },
+  { // Entry 221
+    -0x1.745d1745d173d0p1,
+    -0x1.745d1745d173dp-3,
+    (int)4
+  },
+  { // Entry 222
+    -0x1.745d1745d173d0p2,
+    -0x1.745d1745d173dp-3,
+    (int)5
+  },
+  { // Entry 223
+    -0x1.745d1745d173d0p3,
+    -0x1.745d1745d173dp-3,
+    (int)6
+  },
+  { // Entry 224
+    -0x1.745d1745d173d0p4,
+    -0x1.745d1745d173dp-3,
+    (int)7
+  },
+  { // Entry 225
+    -0x1.745d1745d173d0p5,
+    -0x1.745d1745d173dp-3,
+    (int)8
+  },
+  { // Entry 226
+    -0x1.745d1745d173d0p6,
+    -0x1.745d1745d173dp-3,
+    (int)9
+  },
+  { // Entry 227
+    -0x1.745d1745d173d0p7,
+    -0x1.745d1745d173dp-3,
+    (int)10
+  },
+  { // Entry 228
+    -0x1.745d1745d17340p-14,
+    -0x1.745d1745d1734p-4,
+    (int)-10
+  },
+  { // Entry 229
+    -0x1.745d1745d17340p-13,
+    -0x1.745d1745d1734p-4,
+    (int)-9
+  },
+  { // Entry 230
+    -0x1.745d1745d17340p-12,
+    -0x1.745d1745d1734p-4,
+    (int)-8
+  },
+  { // Entry 231
+    -0x1.745d1745d17340p-11,
+    -0x1.745d1745d1734p-4,
+    (int)-7
+  },
+  { // Entry 232
+    -0x1.745d1745d17340p-10,
+    -0x1.745d1745d1734p-4,
+    (int)-6
+  },
+  { // Entry 233
+    -0x1.745d1745d17340p-9,
+    -0x1.745d1745d1734p-4,
+    (int)-5
+  },
+  { // Entry 234
+    -0x1.745d1745d17340p-8,
+    -0x1.745d1745d1734p-4,
+    (int)-4
+  },
+  { // Entry 235
+    -0x1.745d1745d17340p-7,
+    -0x1.745d1745d1734p-4,
+    (int)-3
+  },
+  { // Entry 236
+    -0x1.745d1745d17340p-6,
+    -0x1.745d1745d1734p-4,
+    (int)-2
+  },
+  { // Entry 237
+    -0x1.745d1745d17340p-5,
+    -0x1.745d1745d1734p-4,
+    (int)-1
+  },
+  { // Entry 238
+    -0x1.745d1745d17340p-4,
+    -0x1.745d1745d1734p-4,
+    (int)0
+  },
+  { // Entry 239
+    -0x1.745d1745d17340p-3,
+    -0x1.745d1745d1734p-4,
+    (int)1
+  },
+  { // Entry 240
+    -0x1.745d1745d17340p-2,
+    -0x1.745d1745d1734p-4,
+    (int)2
+  },
+  { // Entry 241
+    -0x1.745d1745d17340p-1,
+    -0x1.745d1745d1734p-4,
+    (int)3
+  },
+  { // Entry 242
+    -0x1.745d1745d17340p0,
+    -0x1.745d1745d1734p-4,
+    (int)4
+  },
+  { // Entry 243
+    -0x1.745d1745d17340p1,
+    -0x1.745d1745d1734p-4,
+    (int)5
+  },
+  { // Entry 244
+    -0x1.745d1745d17340p2,
+    -0x1.745d1745d1734p-4,
+    (int)6
+  },
+  { // Entry 245
+    -0x1.745d1745d17340p3,
+    -0x1.745d1745d1734p-4,
+    (int)7
+  },
+  { // Entry 246
+    -0x1.745d1745d17340p4,
+    -0x1.745d1745d1734p-4,
+    (int)8
+  },
+  { // Entry 247
+    -0x1.745d1745d17340p5,
+    -0x1.745d1745d1734p-4,
+    (int)9
+  },
+  { // Entry 248
+    -0x1.745d1745d17340p6,
+    -0x1.745d1745d1734p-4,
+    (int)10
+  },
+  { // Entry 249
+    0x1.20p-62,
+    0x1.2p-52,
+    (int)-10
+  },
+  { // Entry 250
+    0x1.20p-61,
+    0x1.2p-52,
+    (int)-9
+  },
+  { // Entry 251
+    0x1.20p-60,
+    0x1.2p-52,
+    (int)-8
+  },
+  { // Entry 252
+    0x1.20p-59,
+    0x1.2p-52,
+    (int)-7
+  },
+  { // Entry 253
+    0x1.20p-58,
+    0x1.2p-52,
+    (int)-6
+  },
+  { // Entry 254
+    0x1.20p-57,
+    0x1.2p-52,
+    (int)-5
+  },
+  { // Entry 255
+    0x1.20p-56,
+    0x1.2p-52,
+    (int)-4
+  },
+  { // Entry 256
+    0x1.20p-55,
+    0x1.2p-52,
+    (int)-3
+  },
+  { // Entry 257
+    0x1.20p-54,
+    0x1.2p-52,
+    (int)-2
+  },
+  { // Entry 258
+    0x1.20p-53,
+    0x1.2p-52,
+    (int)-1
+  },
+  { // Entry 259
+    0x1.20p-52,
+    0x1.2p-52,
+    (int)0
+  },
+  { // Entry 260
+    0x1.20p-51,
+    0x1.2p-52,
+    (int)1
+  },
+  { // Entry 261
+    0x1.20p-50,
+    0x1.2p-52,
+    (int)2
+  },
+  { // Entry 262
+    0x1.20p-49,
+    0x1.2p-52,
+    (int)3
+  },
+  { // Entry 263
+    0x1.20p-48,
+    0x1.2p-52,
+    (int)4
+  },
+  { // Entry 264
+    0x1.20p-47,
+    0x1.2p-52,
+    (int)5
+  },
+  { // Entry 265
+    0x1.20p-46,
+    0x1.2p-52,
+    (int)6
+  },
+  { // Entry 266
+    0x1.20p-45,
+    0x1.2p-52,
+    (int)7
+  },
+  { // Entry 267
+    0x1.20p-44,
+    0x1.2p-52,
+    (int)8
+  },
+  { // Entry 268
+    0x1.20p-43,
+    0x1.2p-52,
+    (int)9
+  },
+  { // Entry 269
+    0x1.20p-42,
+    0x1.2p-52,
+    (int)10
+  },
+  { // Entry 270
+    0x1.745d1745d17580p-14,
+    0x1.745d1745d1758p-4,
+    (int)-10
+  },
+  { // Entry 271
+    0x1.745d1745d17580p-13,
+    0x1.745d1745d1758p-4,
+    (int)-9
+  },
+  { // Entry 272
+    0x1.745d1745d17580p-12,
+    0x1.745d1745d1758p-4,
+    (int)-8
+  },
+  { // Entry 273
+    0x1.745d1745d17580p-11,
+    0x1.745d1745d1758p-4,
+    (int)-7
+  },
+  { // Entry 274
+    0x1.745d1745d17580p-10,
+    0x1.745d1745d1758p-4,
+    (int)-6
+  },
+  { // Entry 275
+    0x1.745d1745d17580p-9,
+    0x1.745d1745d1758p-4,
+    (int)-5
+  },
+  { // Entry 276
+    0x1.745d1745d17580p-8,
+    0x1.745d1745d1758p-4,
+    (int)-4
+  },
+  { // Entry 277
+    0x1.745d1745d17580p-7,
+    0x1.745d1745d1758p-4,
+    (int)-3
+  },
+  { // Entry 278
+    0x1.745d1745d17580p-6,
+    0x1.745d1745d1758p-4,
+    (int)-2
+  },
+  { // Entry 279
+    0x1.745d1745d17580p-5,
+    0x1.745d1745d1758p-4,
+    (int)-1
+  },
+  { // Entry 280
+    0x1.745d1745d17580p-4,
+    0x1.745d1745d1758p-4,
+    (int)0
+  },
+  { // Entry 281
+    0x1.745d1745d17580p-3,
+    0x1.745d1745d1758p-4,
+    (int)1
+  },
+  { // Entry 282
+    0x1.745d1745d17580p-2,
+    0x1.745d1745d1758p-4,
+    (int)2
+  },
+  { // Entry 283
+    0x1.745d1745d17580p-1,
+    0x1.745d1745d1758p-4,
+    (int)3
+  },
+  { // Entry 284
+    0x1.745d1745d17580p0,
+    0x1.745d1745d1758p-4,
+    (int)4
+  },
+  { // Entry 285
+    0x1.745d1745d17580p1,
+    0x1.745d1745d1758p-4,
+    (int)5
+  },
+  { // Entry 286
+    0x1.745d1745d17580p2,
+    0x1.745d1745d1758p-4,
+    (int)6
+  },
+  { // Entry 287
+    0x1.745d1745d17580p3,
+    0x1.745d1745d1758p-4,
+    (int)7
+  },
+  { // Entry 288
+    0x1.745d1745d17580p4,
+    0x1.745d1745d1758p-4,
+    (int)8
+  },
+  { // Entry 289
+    0x1.745d1745d17580p5,
+    0x1.745d1745d1758p-4,
+    (int)9
+  },
+  { // Entry 290
+    0x1.745d1745d17580p6,
+    0x1.745d1745d1758p-4,
+    (int)10
+  },
+  { // Entry 291
+    0x1.745d1745d174f0p-13,
+    0x1.745d1745d174fp-3,
+    (int)-10
+  },
+  { // Entry 292
+    0x1.745d1745d174f0p-12,
+    0x1.745d1745d174fp-3,
+    (int)-9
+  },
+  { // Entry 293
+    0x1.745d1745d174f0p-11,
+    0x1.745d1745d174fp-3,
+    (int)-8
+  },
+  { // Entry 294
+    0x1.745d1745d174f0p-10,
+    0x1.745d1745d174fp-3,
+    (int)-7
+  },
+  { // Entry 295
+    0x1.745d1745d174f0p-9,
+    0x1.745d1745d174fp-3,
+    (int)-6
+  },
+  { // Entry 296
+    0x1.745d1745d174f0p-8,
+    0x1.745d1745d174fp-3,
+    (int)-5
+  },
+  { // Entry 297
+    0x1.745d1745d174f0p-7,
+    0x1.745d1745d174fp-3,
+    (int)-4
+  },
+  { // Entry 298
+    0x1.745d1745d174f0p-6,
+    0x1.745d1745d174fp-3,
+    (int)-3
+  },
+  { // Entry 299
+    0x1.745d1745d174f0p-5,
+    0x1.745d1745d174fp-3,
+    (int)-2
+  },
+  { // Entry 300
+    0x1.745d1745d174f0p-4,
+    0x1.745d1745d174fp-3,
+    (int)-1
+  },
+  { // Entry 301
+    0x1.745d1745d174f0p-3,
+    0x1.745d1745d174fp-3,
+    (int)0
+  },
+  { // Entry 302
+    0x1.745d1745d174f0p-2,
+    0x1.745d1745d174fp-3,
+    (int)1
+  },
+  { // Entry 303
+    0x1.745d1745d174f0p-1,
+    0x1.745d1745d174fp-3,
+    (int)2
+  },
+  { // Entry 304
+    0x1.745d1745d174f0p0,
+    0x1.745d1745d174fp-3,
+    (int)3
+  },
+  { // Entry 305
+    0x1.745d1745d174f0p1,
+    0x1.745d1745d174fp-3,
+    (int)4
+  },
+  { // Entry 306
+    0x1.745d1745d174f0p2,
+    0x1.745d1745d174fp-3,
+    (int)5
+  },
+  { // Entry 307
+    0x1.745d1745d174f0p3,
+    0x1.745d1745d174fp-3,
+    (int)6
+  },
+  { // Entry 308
+    0x1.745d1745d174f0p4,
+    0x1.745d1745d174fp-3,
+    (int)7
+  },
+  { // Entry 309
+    0x1.745d1745d174f0p5,
+    0x1.745d1745d174fp-3,
+    (int)8
+  },
+  { // Entry 310
+    0x1.745d1745d174f0p6,
+    0x1.745d1745d174fp-3,
+    (int)9
+  },
+  { // Entry 311
+    0x1.745d1745d174f0p7,
+    0x1.745d1745d174fp-3,
+    (int)10
+  },
+  { // Entry 312
+    0x1.1745d1745d1790p-12,
+    0x1.1745d1745d179p-2,
+    (int)-10
+  },
+  { // Entry 313
+    0x1.1745d1745d1790p-11,
+    0x1.1745d1745d179p-2,
+    (int)-9
+  },
+  { // Entry 314
+    0x1.1745d1745d1790p-10,
+    0x1.1745d1745d179p-2,
+    (int)-8
+  },
+  { // Entry 315
+    0x1.1745d1745d1790p-9,
+    0x1.1745d1745d179p-2,
+    (int)-7
+  },
+  { // Entry 316
+    0x1.1745d1745d1790p-8,
+    0x1.1745d1745d179p-2,
+    (int)-6
+  },
+  { // Entry 317
+    0x1.1745d1745d1790p-7,
+    0x1.1745d1745d179p-2,
+    (int)-5
+  },
+  { // Entry 318
+    0x1.1745d1745d1790p-6,
+    0x1.1745d1745d179p-2,
+    (int)-4
+  },
+  { // Entry 319
+    0x1.1745d1745d1790p-5,
+    0x1.1745d1745d179p-2,
+    (int)-3
+  },
+  { // Entry 320
+    0x1.1745d1745d1790p-4,
+    0x1.1745d1745d179p-2,
+    (int)-2
+  },
+  { // Entry 321
+    0x1.1745d1745d1790p-3,
+    0x1.1745d1745d179p-2,
+    (int)-1
+  },
+  { // Entry 322
+    0x1.1745d1745d1790p-2,
+    0x1.1745d1745d179p-2,
+    (int)0
+  },
+  { // Entry 323
+    0x1.1745d1745d1790p-1,
+    0x1.1745d1745d179p-2,
+    (int)1
+  },
+  { // Entry 324
+    0x1.1745d1745d1790p0,
+    0x1.1745d1745d179p-2,
+    (int)2
+  },
+  { // Entry 325
+    0x1.1745d1745d1790p1,
+    0x1.1745d1745d179p-2,
+    (int)3
+  },
+  { // Entry 326
+    0x1.1745d1745d1790p2,
+    0x1.1745d1745d179p-2,
+    (int)4
+  },
+  { // Entry 327
+    0x1.1745d1745d1790p3,
+    0x1.1745d1745d179p-2,
+    (int)5
+  },
+  { // Entry 328
+    0x1.1745d1745d1790p4,
+    0x1.1745d1745d179p-2,
+    (int)6
+  },
+  { // Entry 329
+    0x1.1745d1745d1790p5,
+    0x1.1745d1745d179p-2,
+    (int)7
+  },
+  { // Entry 330
+    0x1.1745d1745d1790p6,
+    0x1.1745d1745d179p-2,
+    (int)8
+  },
+  { // Entry 331
+    0x1.1745d1745d1790p7,
+    0x1.1745d1745d179p-2,
+    (int)9
+  },
+  { // Entry 332
+    0x1.1745d1745d1790p8,
+    0x1.1745d1745d179p-2,
+    (int)10
+  },
+  { // Entry 333
+    0x1.745d1745d174a0p-12,
+    0x1.745d1745d174ap-2,
+    (int)-10
+  },
+  { // Entry 334
+    0x1.745d1745d174a0p-11,
+    0x1.745d1745d174ap-2,
+    (int)-9
+  },
+  { // Entry 335
+    0x1.745d1745d174a0p-10,
+    0x1.745d1745d174ap-2,
+    (int)-8
+  },
+  { // Entry 336
+    0x1.745d1745d174a0p-9,
+    0x1.745d1745d174ap-2,
+    (int)-7
+  },
+  { // Entry 337
+    0x1.745d1745d174a0p-8,
+    0x1.745d1745d174ap-2,
+    (int)-6
+  },
+  { // Entry 338
+    0x1.745d1745d174a0p-7,
+    0x1.745d1745d174ap-2,
+    (int)-5
+  },
+  { // Entry 339
+    0x1.745d1745d174a0p-6,
+    0x1.745d1745d174ap-2,
+    (int)-4
+  },
+  { // Entry 340
+    0x1.745d1745d174a0p-5,
+    0x1.745d1745d174ap-2,
+    (int)-3
+  },
+  { // Entry 341
+    0x1.745d1745d174a0p-4,
+    0x1.745d1745d174ap-2,
+    (int)-2
+  },
+  { // Entry 342
+    0x1.745d1745d174a0p-3,
+    0x1.745d1745d174ap-2,
+    (int)-1
+  },
+  { // Entry 343
+    0x1.745d1745d174a0p-2,
+    0x1.745d1745d174ap-2,
+    (int)0
+  },
+  { // Entry 344
+    0x1.745d1745d174a0p-1,
+    0x1.745d1745d174ap-2,
+    (int)1
+  },
+  { // Entry 345
+    0x1.745d1745d174a0p0,
+    0x1.745d1745d174ap-2,
+    (int)2
+  },
+  { // Entry 346
+    0x1.745d1745d174a0p1,
+    0x1.745d1745d174ap-2,
+    (int)3
+  },
+  { // Entry 347
+    0x1.745d1745d174a0p2,
+    0x1.745d1745d174ap-2,
+    (int)4
+  },
+  { // Entry 348
+    0x1.745d1745d174a0p3,
+    0x1.745d1745d174ap-2,
+    (int)5
+  },
+  { // Entry 349
+    0x1.745d1745d174a0p4,
+    0x1.745d1745d174ap-2,
+    (int)6
+  },
+  { // Entry 350
+    0x1.745d1745d174a0p5,
+    0x1.745d1745d174ap-2,
+    (int)7
+  },
+  { // Entry 351
+    0x1.745d1745d174a0p6,
+    0x1.745d1745d174ap-2,
+    (int)8
+  },
+  { // Entry 352
+    0x1.745d1745d174a0p7,
+    0x1.745d1745d174ap-2,
+    (int)9
+  },
+  { // Entry 353
+    0x1.745d1745d174a0p8,
+    0x1.745d1745d174ap-2,
+    (int)10
+  },
+  { // Entry 354
+    0x1.d1745d1745d1c0p-12,
+    0x1.d1745d1745d1cp-2,
+    (int)-10
+  },
+  { // Entry 355
+    0x1.d1745d1745d1c0p-11,
+    0x1.d1745d1745d1cp-2,
+    (int)-9
+  },
+  { // Entry 356
+    0x1.d1745d1745d1c0p-10,
+    0x1.d1745d1745d1cp-2,
+    (int)-8
+  },
+  { // Entry 357
+    0x1.d1745d1745d1c0p-9,
+    0x1.d1745d1745d1cp-2,
+    (int)-7
+  },
+  { // Entry 358
+    0x1.d1745d1745d1c0p-8,
+    0x1.d1745d1745d1cp-2,
+    (int)-6
+  },
+  { // Entry 359
+    0x1.d1745d1745d1c0p-7,
+    0x1.d1745d1745d1cp-2,
+    (int)-5
+  },
+  { // Entry 360
+    0x1.d1745d1745d1c0p-6,
+    0x1.d1745d1745d1cp-2,
+    (int)-4
+  },
+  { // Entry 361
+    0x1.d1745d1745d1c0p-5,
+    0x1.d1745d1745d1cp-2,
+    (int)-3
+  },
+  { // Entry 362
+    0x1.d1745d1745d1c0p-4,
+    0x1.d1745d1745d1cp-2,
+    (int)-2
+  },
+  { // Entry 363
+    0x1.d1745d1745d1c0p-3,
+    0x1.d1745d1745d1cp-2,
+    (int)-1
+  },
+  { // Entry 364
+    0x1.d1745d1745d1c0p-2,
+    0x1.d1745d1745d1cp-2,
+    (int)0
+  },
+  { // Entry 365
+    0x1.d1745d1745d1c0p-1,
+    0x1.d1745d1745d1cp-2,
+    (int)1
+  },
+  { // Entry 366
+    0x1.d1745d1745d1c0p0,
+    0x1.d1745d1745d1cp-2,
+    (int)2
+  },
+  { // Entry 367
+    0x1.d1745d1745d1c0p1,
+    0x1.d1745d1745d1cp-2,
+    (int)3
+  },
+  { // Entry 368
+    0x1.d1745d1745d1c0p2,
+    0x1.d1745d1745d1cp-2,
+    (int)4
+  },
+  { // Entry 369
+    0x1.d1745d1745d1c0p3,
+    0x1.d1745d1745d1cp-2,
+    (int)5
+  },
+  { // Entry 370
+    0x1.d1745d1745d1c0p4,
+    0x1.d1745d1745d1cp-2,
+    (int)6
+  },
+  { // Entry 371
+    0x1.d1745d1745d1c0p5,
+    0x1.d1745d1745d1cp-2,
+    (int)7
+  },
+  { // Entry 372
+    0x1.d1745d1745d1c0p6,
+    0x1.d1745d1745d1cp-2,
+    (int)8
+  },
+  { // Entry 373
+    0x1.d1745d1745d1c0p7,
+    0x1.d1745d1745d1cp-2,
+    (int)9
+  },
+  { // Entry 374
+    0x1.d1745d1745d1c0p8,
+    0x1.d1745d1745d1cp-2,
+    (int)10
+  },
+  { // Entry 375
+    0x1.1745d1745d1770p-11,
+    0x1.1745d1745d177p-1,
+    (int)-10
+  },
+  { // Entry 376
+    0x1.1745d1745d1770p-10,
+    0x1.1745d1745d177p-1,
+    (int)-9
+  },
+  { // Entry 377
+    0x1.1745d1745d1770p-9,
+    0x1.1745d1745d177p-1,
+    (int)-8
+  },
+  { // Entry 378
+    0x1.1745d1745d1770p-8,
+    0x1.1745d1745d177p-1,
+    (int)-7
+  },
+  { // Entry 379
+    0x1.1745d1745d1770p-7,
+    0x1.1745d1745d177p-1,
+    (int)-6
+  },
+  { // Entry 380
+    0x1.1745d1745d1770p-6,
+    0x1.1745d1745d177p-1,
+    (int)-5
+  },
+  { // Entry 381
+    0x1.1745d1745d1770p-5,
+    0x1.1745d1745d177p-1,
+    (int)-4
+  },
+  { // Entry 382
+    0x1.1745d1745d1770p-4,
+    0x1.1745d1745d177p-1,
+    (int)-3
+  },
+  { // Entry 383
+    0x1.1745d1745d1770p-3,
+    0x1.1745d1745d177p-1,
+    (int)-2
+  },
+  { // Entry 384
+    0x1.1745d1745d1770p-2,
+    0x1.1745d1745d177p-1,
+    (int)-1
+  },
+  { // Entry 385
+    0x1.1745d1745d1770p-1,
+    0x1.1745d1745d177p-1,
+    (int)0
+  },
+  { // Entry 386
+    0x1.1745d1745d1770p0,
+    0x1.1745d1745d177p-1,
+    (int)1
+  },
+  { // Entry 387
+    0x1.1745d1745d1770p1,
+    0x1.1745d1745d177p-1,
+    (int)2
+  },
+  { // Entry 388
+    0x1.1745d1745d1770p2,
+    0x1.1745d1745d177p-1,
+    (int)3
+  },
+  { // Entry 389
+    0x1.1745d1745d1770p3,
+    0x1.1745d1745d177p-1,
+    (int)4
+  },
+  { // Entry 390
+    0x1.1745d1745d1770p4,
+    0x1.1745d1745d177p-1,
+    (int)5
+  },
+  { // Entry 391
+    0x1.1745d1745d1770p5,
+    0x1.1745d1745d177p-1,
+    (int)6
+  },
+  { // Entry 392
+    0x1.1745d1745d1770p6,
+    0x1.1745d1745d177p-1,
+    (int)7
+  },
+  { // Entry 393
+    0x1.1745d1745d1770p7,
+    0x1.1745d1745d177p-1,
+    (int)8
+  },
+  { // Entry 394
+    0x1.1745d1745d1770p8,
+    0x1.1745d1745d177p-1,
+    (int)9
+  },
+  { // Entry 395
+    0x1.1745d1745d1770p9,
+    0x1.1745d1745d177p-1,
+    (int)10
+  },
+  { // Entry 396
+    0x1.45d1745d1746p-11,
+    0x1.45d1745d17460p-1,
+    (int)-10
+  },
+  { // Entry 397
+    0x1.45d1745d1746p-10,
+    0x1.45d1745d17460p-1,
+    (int)-9
+  },
+  { // Entry 398
+    0x1.45d1745d1746p-9,
+    0x1.45d1745d17460p-1,
+    (int)-8
+  },
+  { // Entry 399
+    0x1.45d1745d1746p-8,
+    0x1.45d1745d17460p-1,
+    (int)-7
+  },
+  { // Entry 400
+    0x1.45d1745d1746p-7,
+    0x1.45d1745d17460p-1,
+    (int)-6
+  },
+  { // Entry 401
+    0x1.45d1745d1746p-6,
+    0x1.45d1745d17460p-1,
+    (int)-5
+  },
+  { // Entry 402
+    0x1.45d1745d1746p-5,
+    0x1.45d1745d17460p-1,
+    (int)-4
+  },
+  { // Entry 403
+    0x1.45d1745d1746p-4,
+    0x1.45d1745d17460p-1,
+    (int)-3
+  },
+  { // Entry 404
+    0x1.45d1745d1746p-3,
+    0x1.45d1745d17460p-1,
+    (int)-2
+  },
+  { // Entry 405
+    0x1.45d1745d1746p-2,
+    0x1.45d1745d17460p-1,
+    (int)-1
+  },
+  { // Entry 406
+    0x1.45d1745d1746p-1,
+    0x1.45d1745d17460p-1,
+    (int)0
+  },
+  { // Entry 407
+    0x1.45d1745d1746p0,
+    0x1.45d1745d17460p-1,
+    (int)1
+  },
+  { // Entry 408
+    0x1.45d1745d1746p1,
+    0x1.45d1745d17460p-1,
+    (int)2
+  },
+  { // Entry 409
+    0x1.45d1745d1746p2,
+    0x1.45d1745d17460p-1,
+    (int)3
+  },
+  { // Entry 410
+    0x1.45d1745d1746p3,
+    0x1.45d1745d17460p-1,
+    (int)4
+  },
+  { // Entry 411
+    0x1.45d1745d1746p4,
+    0x1.45d1745d17460p-1,
+    (int)5
+  },
+  { // Entry 412
+    0x1.45d1745d1746p5,
+    0x1.45d1745d17460p-1,
+    (int)6
+  },
+  { // Entry 413
+    0x1.45d1745d1746p6,
+    0x1.45d1745d17460p-1,
+    (int)7
+  },
+  { // Entry 414
+    0x1.45d1745d1746p7,
+    0x1.45d1745d17460p-1,
+    (int)8
+  },
+  { // Entry 415
+    0x1.45d1745d1746p8,
+    0x1.45d1745d17460p-1,
+    (int)9
+  },
+  { // Entry 416
+    0x1.45d1745d1746p9,
+    0x1.45d1745d17460p-1,
+    (int)10
+  },
+  { // Entry 417
+    0x1.745d1745d17490p-11,
+    0x1.745d1745d1749p-1,
+    (int)-10
+  },
+  { // Entry 418
+    0x1.745d1745d17490p-10,
+    0x1.745d1745d1749p-1,
+    (int)-9
+  },
+  { // Entry 419
+    0x1.745d1745d17490p-9,
+    0x1.745d1745d1749p-1,
+    (int)-8
+  },
+  { // Entry 420
+    0x1.745d1745d17490p-8,
+    0x1.745d1745d1749p-1,
+    (int)-7
+  },
+  { // Entry 421
+    0x1.745d1745d17490p-7,
+    0x1.745d1745d1749p-1,
+    (int)-6
+  },
+  { // Entry 422
+    0x1.745d1745d17490p-6,
+    0x1.745d1745d1749p-1,
+    (int)-5
+  },
+  { // Entry 423
+    0x1.745d1745d17490p-5,
+    0x1.745d1745d1749p-1,
+    (int)-4
+  },
+  { // Entry 424
+    0x1.745d1745d17490p-4,
+    0x1.745d1745d1749p-1,
+    (int)-3
+  },
+  { // Entry 425
+    0x1.745d1745d17490p-3,
+    0x1.745d1745d1749p-1,
+    (int)-2
+  },
+  { // Entry 426
+    0x1.745d1745d17490p-2,
+    0x1.745d1745d1749p-1,
+    (int)-1
+  },
+  { // Entry 427
+    0x1.745d1745d17490p-1,
+    0x1.745d1745d1749p-1,
+    (int)0
+  },
+  { // Entry 428
+    0x1.745d1745d17490p0,
+    0x1.745d1745d1749p-1,
+    (int)1
+  },
+  { // Entry 429
+    0x1.745d1745d17490p1,
+    0x1.745d1745d1749p-1,
+    (int)2
+  },
+  { // Entry 430
+    0x1.745d1745d17490p2,
+    0x1.745d1745d1749p-1,
+    (int)3
+  },
+  { // Entry 431
+    0x1.745d1745d17490p3,
+    0x1.745d1745d1749p-1,
+    (int)4
+  },
+  { // Entry 432
+    0x1.745d1745d17490p4,
+    0x1.745d1745d1749p-1,
+    (int)5
+  },
+  { // Entry 433
+    0x1.745d1745d17490p5,
+    0x1.745d1745d1749p-1,
+    (int)6
+  },
+  { // Entry 434
+    0x1.745d1745d17490p6,
+    0x1.745d1745d1749p-1,
+    (int)7
+  },
+  { // Entry 435
+    0x1.745d1745d17490p7,
+    0x1.745d1745d1749p-1,
+    (int)8
+  },
+  { // Entry 436
+    0x1.745d1745d17490p8,
+    0x1.745d1745d1749p-1,
+    (int)9
+  },
+  { // Entry 437
+    0x1.745d1745d17490p9,
+    0x1.745d1745d1749p-1,
+    (int)10
+  },
+  { // Entry 438
+    0x1.a2e8ba2e8ba320p-11,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-10
+  },
+  { // Entry 439
+    0x1.a2e8ba2e8ba320p-10,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-9
+  },
+  { // Entry 440
+    0x1.a2e8ba2e8ba320p-9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-8
+  },
+  { // Entry 441
+    0x1.a2e8ba2e8ba320p-8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-7
+  },
+  { // Entry 442
+    0x1.a2e8ba2e8ba320p-7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-6
+  },
+  { // Entry 443
+    0x1.a2e8ba2e8ba320p-6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-5
+  },
+  { // Entry 444
+    0x1.a2e8ba2e8ba320p-5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-4
+  },
+  { // Entry 445
+    0x1.a2e8ba2e8ba320p-4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-3
+  },
+  { // Entry 446
+    0x1.a2e8ba2e8ba320p-3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-2
+  },
+  { // Entry 447
+    0x1.a2e8ba2e8ba320p-2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)-1
+  },
+  { // Entry 448
+    0x1.a2e8ba2e8ba320p-1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)0
+  },
+  { // Entry 449
+    0x1.a2e8ba2e8ba320p0,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)1
+  },
+  { // Entry 450
+    0x1.a2e8ba2e8ba320p1,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)2
+  },
+  { // Entry 451
+    0x1.a2e8ba2e8ba320p2,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)3
+  },
+  { // Entry 452
+    0x1.a2e8ba2e8ba320p3,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)4
+  },
+  { // Entry 453
+    0x1.a2e8ba2e8ba320p4,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)5
+  },
+  { // Entry 454
+    0x1.a2e8ba2e8ba320p5,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)6
+  },
+  { // Entry 455
+    0x1.a2e8ba2e8ba320p6,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)7
+  },
+  { // Entry 456
+    0x1.a2e8ba2e8ba320p7,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)8
+  },
+  { // Entry 457
+    0x1.a2e8ba2e8ba320p8,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)9
+  },
+  { // Entry 458
+    0x1.a2e8ba2e8ba320p9,
+    0x1.a2e8ba2e8ba32p-1,
+    (int)10
+  },
+  { // Entry 459
+    0x1.d1745d1745d1b0p-11,
+    0x1.d1745d1745d1bp-1,
+    (int)-10
+  },
+  { // Entry 460
+    0x1.d1745d1745d1b0p-10,
+    0x1.d1745d1745d1bp-1,
+    (int)-9
+  },
+  { // Entry 461
+    0x1.d1745d1745d1b0p-9,
+    0x1.d1745d1745d1bp-1,
+    (int)-8
+  },
+  { // Entry 462
+    0x1.d1745d1745d1b0p-8,
+    0x1.d1745d1745d1bp-1,
+    (int)-7
+  },
+  { // Entry 463
+    0x1.d1745d1745d1b0p-7,
+    0x1.d1745d1745d1bp-1,
+    (int)-6
+  },
+  { // Entry 464
+    0x1.d1745d1745d1b0p-6,
+    0x1.d1745d1745d1bp-1,
+    (int)-5
+  },
+  { // Entry 465
+    0x1.d1745d1745d1b0p-5,
+    0x1.d1745d1745d1bp-1,
+    (int)-4
+  },
+  { // Entry 466
+    0x1.d1745d1745d1b0p-4,
+    0x1.d1745d1745d1bp-1,
+    (int)-3
+  },
+  { // Entry 467
+    0x1.d1745d1745d1b0p-3,
+    0x1.d1745d1745d1bp-1,
+    (int)-2
+  },
+  { // Entry 468
+    0x1.d1745d1745d1b0p-2,
+    0x1.d1745d1745d1bp-1,
+    (int)-1
+  },
+  { // Entry 469
+    0x1.d1745d1745d1b0p-1,
+    0x1.d1745d1745d1bp-1,
+    (int)0
+  },
+  { // Entry 470
+    0x1.d1745d1745d1b0p0,
+    0x1.d1745d1745d1bp-1,
+    (int)1
+  },
+  { // Entry 471
+    0x1.d1745d1745d1b0p1,
+    0x1.d1745d1745d1bp-1,
+    (int)2
+  },
+  { // Entry 472
+    0x1.d1745d1745d1b0p2,
+    0x1.d1745d1745d1bp-1,
+    (int)3
+  },
+  { // Entry 473
+    0x1.d1745d1745d1b0p3,
+    0x1.d1745d1745d1bp-1,
+    (int)4
+  },
+  { // Entry 474
+    0x1.d1745d1745d1b0p4,
+    0x1.d1745d1745d1bp-1,
+    (int)5
+  },
+  { // Entry 475
+    0x1.d1745d1745d1b0p5,
+    0x1.d1745d1745d1bp-1,
+    (int)6
+  },
+  { // Entry 476
+    0x1.d1745d1745d1b0p6,
+    0x1.d1745d1745d1bp-1,
+    (int)7
+  },
+  { // Entry 477
+    0x1.d1745d1745d1b0p7,
+    0x1.d1745d1745d1bp-1,
+    (int)8
+  },
+  { // Entry 478
+    0x1.d1745d1745d1b0p8,
+    0x1.d1745d1745d1bp-1,
+    (int)9
+  },
+  { // Entry 479
+    0x1.d1745d1745d1b0p9,
+    0x1.d1745d1745d1bp-1,
+    (int)10
+  },
+  { // Entry 480
+    0x1.p-10,
+    0x1.0p0,
+    (int)-10
+  },
+  { // Entry 481
+    0x1.p-9,
+    0x1.0p0,
+    (int)-9
+  },
+  { // Entry 482
+    0x1.p-8,
+    0x1.0p0,
+    (int)-8
+  },
+  { // Entry 483
+    0x1.p-7,
+    0x1.0p0,
+    (int)-7
+  },
+  { // Entry 484
+    0x1.p-6,
+    0x1.0p0,
+    (int)-6
+  },
+  { // Entry 485
+    0x1.p-5,
+    0x1.0p0,
+    (int)-5
+  },
+  { // Entry 486
+    0x1.p-4,
+    0x1.0p0,
+    (int)-4
+  },
+  { // Entry 487
+    0x1.p-3,
+    0x1.0p0,
+    (int)-3
+  },
+  { // Entry 488
+    0x1.p-2,
+    0x1.0p0,
+    (int)-2
+  },
+  { // Entry 489
+    0x1.p-1,
+    0x1.0p0,
+    (int)-1
+  },
+  { // Entry 490
+    0x1.p0,
+    0x1.0p0,
+    (int)0
+  },
+  { // Entry 491
+    0x1.p1,
+    0x1.0p0,
+    (int)1
+  },
+  { // Entry 492
+    0x1.p2,
+    0x1.0p0,
+    (int)2
+  },
+  { // Entry 493
+    0x1.p3,
+    0x1.0p0,
+    (int)3
+  },
+  { // Entry 494
+    0x1.p4,
+    0x1.0p0,
+    (int)4
+  },
+  { // Entry 495
+    0x1.p5,
+    0x1.0p0,
+    (int)5
+  },
+  { // Entry 496
+    0x1.p6,
+    0x1.0p0,
+    (int)6
+  },
+  { // Entry 497
+    0x1.p7,
+    0x1.0p0,
+    (int)7
+  },
+  { // Entry 498
+    0x1.p8,
+    0x1.0p0,
+    (int)8
+  },
+  { // Entry 499
+    0x1.p9,
+    0x1.0p0,
+    (int)9
+  },
+  { // Entry 500
+    0x1.p10,
+    0x1.0p0,
+    (int)10
+  },
+  { // Entry 501
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023,
+    (int)-1023
+  },
+  { // Entry 502
+    0x1.fffffffffffff0p1,
+    0x1.fffffffffffffp1023,
+    (int)-1022
+  },
+  { // Entry 503
+    0x1.fffffffffffff0p23,
+    0x1.fffffffffffffp1023,
+    (int)-1000
+  },
+  { // Entry 504
+    0x1.fffffffffffff0p24,
+    0x1.fffffffffffffp1023,
+    (int)-999
+  },
+  { // Entry 505
+    0x1.fffffffffffff0p1013,
+    0x1.fffffffffffffp1023,
+    (int)-10
+  },
+  { // Entry 506
+    0x1.fffffffffffff0p1014,
+    0x1.fffffffffffffp1023,
+    (int)-9
+  },
+  { // Entry 507
+    0x1.fffffffffffff0p1015,
+    0x1.fffffffffffffp1023,
+    (int)-8
+  },
+  { // Entry 508
+    0x1.fffffffffffff0p1016,
+    0x1.fffffffffffffp1023,
+    (int)-7
+  },
+  { // Entry 509
+    0x1.fffffffffffff0p1017,
+    0x1.fffffffffffffp1023,
+    (int)-6
+  },
+  { // Entry 510
+    0x1.fffffffffffff0p1018,
+    0x1.fffffffffffffp1023,
+    (int)-5
+  },
+  { // Entry 511
+    0x1.fffffffffffff0p1019,
+    0x1.fffffffffffffp1023,
+    (int)-4
+  },
+  { // Entry 512
+    0x1.fffffffffffff0p1020,
+    0x1.fffffffffffffp1023,
+    (int)-3
+  },
+  { // Entry 513
+    0x1.fffffffffffff0p1021,
+    0x1.fffffffffffffp1023,
+    (int)-2
+  },
+  { // Entry 514
+    0x1.fffffffffffff0p1022,
+    0x1.fffffffffffffp1023,
+    (int)-1
+  },
+  { // Entry 515
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 516
+    0x1.p-51,
+    0x1.0p-1074,
+    (int)1023
+  },
+  { // Entry 517
+    0x1.p-52,
+    0x1.0p-1074,
+    (int)1022
+  },
+  { // Entry 518
+    0x1.p-74,
+    0x1.0p-1074,
+    (int)1000
+  },
+  { // Entry 519
+    0x1.p-75,
+    0x1.0p-1074,
+    (int)999
+  },
+  { // Entry 520
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 521
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 522
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 523
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 524
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 525
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 526
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 527
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 528
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 529
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 530
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 531
+    0x1.p-1025,
+    0x1.0p-2,
+    (int)-1023
+  },
+  { // Entry 532
+    0x1.p-1024,
+    0x1.0p-2,
+    (int)-1022
+  },
+  { // Entry 533
+    0x1.p-1024,
+    0x1.0p-1,
+    (int)-1023
+  },
+  { // Entry 534
+    0x1.p-1023,
+    0x1.0p-1,
+    (int)-1022
+  },
+  { // Entry 535
+    0x1.80p-1024,
+    0x1.8p-1,
+    (int)-1023
+  },
+  { // Entry 536
+    0x1.80p-1023,
+    0x1.8p-1,
+    (int)-1022
+  },
+  { // Entry 537
+    0.0,
+    0x1.0p-2,
+    (int)-1074
+  },
+  { // Entry 538
+    0.0,
+    0x1.0p-2,
+    (int)-1073
+  },
+  { // Entry 539
+    0.0,
+    0x1.0p-1,
+    (int)-1074
+  },
+  { // Entry 540
+    0x1.p-1074,
+    0x1.0p-1,
+    (int)-1073
+  },
+  { // Entry 541
+    0.0,
+    0x1.8p-1,
+    (int)-1074
+  },
+  { // Entry 542
+    0x1.80p-1074,
+    0x1.8p-1,
+    (int)-1073
+  },
+  { // Entry 543
+    0x1.p1023,
+    0x1.0p0,
+    (int)1023
+  },
+  { // Entry 544
+    0x1.p1022,
+    0x1.0p0,
+    (int)1022
+  },
+  { // Entry 545
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 546
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 547
+    0x1.p-1072,
+    0x1.0p-1074,
+    (int)2
+  },
+  { // Entry 548
+    0x1.p-1071,
+    0x1.0p-1074,
+    (int)3
+  },
+  { // Entry 549
+    0x1.p-1070,
+    0x1.0p-1074,
+    (int)4
+  },
+  { // Entry 550
+    0x1.p-1069,
+    0x1.0p-1074,
+    (int)5
+  },
+  { // Entry 551
+    0x1.p-1068,
+    0x1.0p-1074,
+    (int)6
+  },
+  { // Entry 552
+    0x1.p-1067,
+    0x1.0p-1074,
+    (int)7
+  },
+  { // Entry 553
+    0x1.p-1066,
+    0x1.0p-1074,
+    (int)8
+  },
+  { // Entry 554
+    0x1.p-1065,
+    0x1.0p-1074,
+    (int)9
+  },
+  { // Entry 555
+    0x1.p-1064,
+    0x1.0p-1074,
+    (int)10
+  },
+  { // Entry 556
+    0x1.p-1063,
+    0x1.0p-1074,
+    (int)11
+  },
+  { // Entry 557
+    0x1.p-1062,
+    0x1.0p-1074,
+    (int)12
+  },
+  { // Entry 558
+    0x1.p-1061,
+    0x1.0p-1074,
+    (int)13
+  },
+  { // Entry 559
+    0x1.p-1060,
+    0x1.0p-1074,
+    (int)14
+  },
+  { // Entry 560
+    0x1.p-1059,
+    0x1.0p-1074,
+    (int)15
+  },
+  { // Entry 561
+    0x1.p-1058,
+    0x1.0p-1074,
+    (int)16
+  },
+  { // Entry 562
+    0x1.p-1057,
+    0x1.0p-1074,
+    (int)17
+  },
+  { // Entry 563
+    0x1.p-1056,
+    0x1.0p-1074,
+    (int)18
+  },
+  { // Entry 564
+    0x1.p-1055,
+    0x1.0p-1074,
+    (int)19
+  },
+  { // Entry 565
+    0x1.p-1054,
+    0x1.0p-1074,
+    (int)20
+  },
+  { // Entry 566
+    0x1.p-1053,
+    0x1.0p-1074,
+    (int)21
+  },
+  { // Entry 567
+    0x1.p-1052,
+    0x1.0p-1074,
+    (int)22
+  },
+  { // Entry 568
+    0x1.p-1051,
+    0x1.0p-1074,
+    (int)23
+  },
+  { // Entry 569
+    0x1.p-1050,
+    0x1.0p-1074,
+    (int)24
+  },
+  { // Entry 570
+    0x1.p-1049,
+    0x1.0p-1074,
+    (int)25
+  },
+  { // Entry 571
+    0x1.p-1048,
+    0x1.0p-1074,
+    (int)26
+  },
+  { // Entry 572
+    0x1.p-1047,
+    0x1.0p-1074,
+    (int)27
+  },
+  { // Entry 573
+    0x1.p-1046,
+    0x1.0p-1074,
+    (int)28
+  },
+  { // Entry 574
+    0x1.p-1045,
+    0x1.0p-1074,
+    (int)29
+  },
+  { // Entry 575
+    0x1.p-1044,
+    0x1.0p-1074,
+    (int)30
+  },
+  { // Entry 576
+    0x1.p-1043,
+    0x1.0p-1074,
+    (int)31
+  },
+  { // Entry 577
+    0x1.p-1042,
+    0x1.0p-1074,
+    (int)32
+  },
+  { // Entry 578
+    0x1.p-1041,
+    0x1.0p-1074,
+    (int)33
+  },
+  { // Entry 579
+    0x1.p-1040,
+    0x1.0p-1074,
+    (int)34
+  },
+  { // Entry 580
+    0x1.p-1039,
+    0x1.0p-1074,
+    (int)35
+  },
+  { // Entry 581
+    0x1.p-1038,
+    0x1.0p-1074,
+    (int)36
+  },
+  { // Entry 582
+    0x1.p-1037,
+    0x1.0p-1074,
+    (int)37
+  },
+  { // Entry 583
+    0x1.p-1036,
+    0x1.0p-1074,
+    (int)38
+  },
+  { // Entry 584
+    0x1.p-1035,
+    0x1.0p-1074,
+    (int)39
+  },
+  { // Entry 585
+    0x1.p-1034,
+    0x1.0p-1074,
+    (int)40
+  },
+  { // Entry 586
+    0x1.p-1033,
+    0x1.0p-1074,
+    (int)41
+  },
+  { // Entry 587
+    0x1.p-1032,
+    0x1.0p-1074,
+    (int)42
+  },
+  { // Entry 588
+    0x1.p-1031,
+    0x1.0p-1074,
+    (int)43
+  },
+  { // Entry 589
+    0x1.p-1030,
+    0x1.0p-1074,
+    (int)44
+  },
+  { // Entry 590
+    0x1.p-1029,
+    0x1.0p-1074,
+    (int)45
+  },
+  { // Entry 591
+    0x1.p-1028,
+    0x1.0p-1074,
+    (int)46
+  },
+  { // Entry 592
+    0x1.p-1027,
+    0x1.0p-1074,
+    (int)47
+  },
+  { // Entry 593
+    0x1.p-1026,
+    0x1.0p-1074,
+    (int)48
+  },
+  { // Entry 594
+    0x1.p-1025,
+    0x1.0p-1074,
+    (int)49
+  },
+  { // Entry 595
+    0x1.p-1024,
+    0x1.0p-1074,
+    (int)50
+  },
+  { // Entry 596
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 597
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 598
+    0x1.p-1021,
+    0x1.0p-1074,
+    (int)53
+  },
+  { // Entry 599
+    0x1.p-1020,
+    0x1.0p-1074,
+    (int)54
+  },
+  { // Entry 600
+    0x1.p-1019,
+    0x1.0p-1074,
+    (int)55
+  },
+  { // Entry 601
+    0x1.p-1018,
+    0x1.0p-1074,
+    (int)56
+  },
+  { // Entry 602
+    0x1.p-1017,
+    0x1.0p-1074,
+    (int)57
+  },
+  { // Entry 603
+    0x1.p-1016,
+    0x1.0p-1074,
+    (int)58
+  },
+  { // Entry 604
+    0x1.p-1015,
+    0x1.0p-1074,
+    (int)59
+  },
+  { // Entry 605
+    0x1.p-1014,
+    0x1.0p-1074,
+    (int)60
+  },
+  { // Entry 606
+    0x1.p-1013,
+    0x1.0p-1074,
+    (int)61
+  },
+  { // Entry 607
+    0x1.p-1012,
+    0x1.0p-1074,
+    (int)62
+  },
+  { // Entry 608
+    0x1.p-1011,
+    0x1.0p-1074,
+    (int)63
+  },
+  { // Entry 609
+    0x1.p-1010,
+    0x1.0p-1074,
+    (int)64
+  },
+  { // Entry 610
+    0x1.p-1009,
+    0x1.0p-1074,
+    (int)65
+  },
+  { // Entry 611
+    0x1.p-1008,
+    0x1.0p-1074,
+    (int)66
+  },
+  { // Entry 612
+    0x1.p-1007,
+    0x1.0p-1074,
+    (int)67
+  },
+  { // Entry 613
+    0x1.p-1006,
+    0x1.0p-1074,
+    (int)68
+  },
+  { // Entry 614
+    0x1.p-1005,
+    0x1.0p-1074,
+    (int)69
+  },
+  { // Entry 615
+    0x1.p-1004,
+    0x1.0p-1074,
+    (int)70
+  },
+  { // Entry 616
+    0x1.p-1003,
+    0x1.0p-1074,
+    (int)71
+  },
+  { // Entry 617
+    0x1.p-1002,
+    0x1.0p-1074,
+    (int)72
+  },
+  { // Entry 618
+    0x1.p-1001,
+    0x1.0p-1074,
+    (int)73
+  },
+  { // Entry 619
+    0x1.p-1000,
+    0x1.0p-1074,
+    (int)74
+  },
+  { // Entry 620
+    0x1.p-999,
+    0x1.0p-1074,
+    (int)75
+  },
+  { // Entry 621
+    0x1.p-998,
+    0x1.0p-1074,
+    (int)76
+  },
+  { // Entry 622
+    0x1.p-997,
+    0x1.0p-1074,
+    (int)77
+  },
+  { // Entry 623
+    0x1.p-996,
+    0x1.0p-1074,
+    (int)78
+  },
+  { // Entry 624
+    0x1.p-995,
+    0x1.0p-1074,
+    (int)79
+  },
+  { // Entry 625
+    0x1.p-994,
+    0x1.0p-1074,
+    (int)80
+  },
+  { // Entry 626
+    0x1.p-993,
+    0x1.0p-1074,
+    (int)81
+  },
+  { // Entry 627
+    0x1.p-992,
+    0x1.0p-1074,
+    (int)82
+  },
+  { // Entry 628
+    0x1.p-991,
+    0x1.0p-1074,
+    (int)83
+  },
+  { // Entry 629
+    0x1.p-990,
+    0x1.0p-1074,
+    (int)84
+  },
+  { // Entry 630
+    0x1.p-989,
+    0x1.0p-1074,
+    (int)85
+  },
+  { // Entry 631
+    0x1.p-988,
+    0x1.0p-1074,
+    (int)86
+  },
+  { // Entry 632
+    0x1.p-987,
+    0x1.0p-1074,
+    (int)87
+  },
+  { // Entry 633
+    0x1.p-986,
+    0x1.0p-1074,
+    (int)88
+  },
+  { // Entry 634
+    0x1.p-985,
+    0x1.0p-1074,
+    (int)89
+  },
+  { // Entry 635
+    0x1.p-984,
+    0x1.0p-1074,
+    (int)90
+  },
+  { // Entry 636
+    0x1.p-983,
+    0x1.0p-1074,
+    (int)91
+  },
+  { // Entry 637
+    0x1.p-982,
+    0x1.0p-1074,
+    (int)92
+  },
+  { // Entry 638
+    0x1.p-981,
+    0x1.0p-1074,
+    (int)93
+  },
+  { // Entry 639
+    0x1.p-980,
+    0x1.0p-1074,
+    (int)94
+  },
+  { // Entry 640
+    0x1.p-979,
+    0x1.0p-1074,
+    (int)95
+  },
+  { // Entry 641
+    0x1.p-978,
+    0x1.0p-1074,
+    (int)96
+  },
+  { // Entry 642
+    0x1.p-977,
+    0x1.0p-1074,
+    (int)97
+  },
+  { // Entry 643
+    0x1.p-976,
+    0x1.0p-1074,
+    (int)98
+  },
+  { // Entry 644
+    0x1.p-975,
+    0x1.0p-1074,
+    (int)99
+  },
+  { // Entry 645
+    0x1.p-974,
+    0x1.0p-1074,
+    (int)100
+  },
+  { // Entry 646
+    0x1.p-973,
+    0x1.0p-1074,
+    (int)101
+  },
+  { // Entry 647
+    0x1.p-972,
+    0x1.0p-1074,
+    (int)102
+  },
+  { // Entry 648
+    0x1.p-971,
+    0x1.0p-1074,
+    (int)103
+  },
+  { // Entry 649
+    0x1.p-970,
+    0x1.0p-1074,
+    (int)104
+  },
+  { // Entry 650
+    0x1.p-969,
+    0x1.0p-1074,
+    (int)105
+  },
+  { // Entry 651
+    0x1.p-968,
+    0x1.0p-1074,
+    (int)106
+  },
+  { // Entry 652
+    0x1.p-967,
+    0x1.0p-1074,
+    (int)107
+  },
+  { // Entry 653
+    0x1.p-966,
+    0x1.0p-1074,
+    (int)108
+  },
+  { // Entry 654
+    0x1.p-965,
+    0x1.0p-1074,
+    (int)109
+  },
+  { // Entry 655
+    0x1.p-964,
+    0x1.0p-1074,
+    (int)110
+  },
+  { // Entry 656
+    0x1.p-963,
+    0x1.0p-1074,
+    (int)111
+  },
+  { // Entry 657
+    0x1.p-962,
+    0x1.0p-1074,
+    (int)112
+  },
+  { // Entry 658
+    0x1.p-961,
+    0x1.0p-1074,
+    (int)113
+  },
+  { // Entry 659
+    0x1.p-960,
+    0x1.0p-1074,
+    (int)114
+  },
+  { // Entry 660
+    0x1.p-959,
+    0x1.0p-1074,
+    (int)115
+  },
+  { // Entry 661
+    0x1.p-958,
+    0x1.0p-1074,
+    (int)116
+  },
+  { // Entry 662
+    0x1.p-957,
+    0x1.0p-1074,
+    (int)117
+  },
+  { // Entry 663
+    0x1.p-956,
+    0x1.0p-1074,
+    (int)118
+  },
+  { // Entry 664
+    0x1.p-955,
+    0x1.0p-1074,
+    (int)119
+  },
+  { // Entry 665
+    0x1.p-954,
+    0x1.0p-1074,
+    (int)120
+  },
+  { // Entry 666
+    0x1.p-953,
+    0x1.0p-1074,
+    (int)121
+  },
+  { // Entry 667
+    0x1.p-952,
+    0x1.0p-1074,
+    (int)122
+  },
+  { // Entry 668
+    0x1.p-951,
+    0x1.0p-1074,
+    (int)123
+  },
+  { // Entry 669
+    0x1.p-950,
+    0x1.0p-1074,
+    (int)124
+  },
+  { // Entry 670
+    0x1.p-949,
+    0x1.0p-1074,
+    (int)125
+  },
+  { // Entry 671
+    0x1.p-948,
+    0x1.0p-1074,
+    (int)126
+  },
+  { // Entry 672
+    0x1.p-947,
+    0x1.0p-1074,
+    (int)127
+  },
+  { // Entry 673
+    0x1.p-946,
+    0x1.0p-1074,
+    (int)128
+  },
+  { // Entry 674
+    0x1.p-945,
+    0x1.0p-1074,
+    (int)129
+  },
+  { // Entry 675
+    0x1.p-944,
+    0x1.0p-1074,
+    (int)130
+  },
+  { // Entry 676
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 677
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 678
+    0x1.ffffffffffffe0p-1021,
+    0x1.ffffffffffffep-1023,
+    (int)2
+  },
+  { // Entry 679
+    0x1.ffffffffffffe0p-1020,
+    0x1.ffffffffffffep-1023,
+    (int)3
+  },
+  { // Entry 680
+    0x1.ffffffffffffe0p-1019,
+    0x1.ffffffffffffep-1023,
+    (int)4
+  },
+  { // Entry 681
+    0x1.ffffffffffffe0p-1018,
+    0x1.ffffffffffffep-1023,
+    (int)5
+  },
+  { // Entry 682
+    0x1.ffffffffffffe0p-1017,
+    0x1.ffffffffffffep-1023,
+    (int)6
+  },
+  { // Entry 683
+    0x1.ffffffffffffe0p-1016,
+    0x1.ffffffffffffep-1023,
+    (int)7
+  },
+  { // Entry 684
+    0x1.ffffffffffffe0p-1015,
+    0x1.ffffffffffffep-1023,
+    (int)8
+  },
+  { // Entry 685
+    0x1.ffffffffffffe0p-1014,
+    0x1.ffffffffffffep-1023,
+    (int)9
+  },
+  { // Entry 686
+    0x1.ffffffffffffe0p-1013,
+    0x1.ffffffffffffep-1023,
+    (int)10
+  },
+  { // Entry 687
+    0x1.ffffffffffffe0p-1012,
+    0x1.ffffffffffffep-1023,
+    (int)11
+  },
+  { // Entry 688
+    0x1.ffffffffffffe0p-1011,
+    0x1.ffffffffffffep-1023,
+    (int)12
+  },
+  { // Entry 689
+    0x1.ffffffffffffe0p-1010,
+    0x1.ffffffffffffep-1023,
+    (int)13
+  },
+  { // Entry 690
+    0x1.ffffffffffffe0p-1009,
+    0x1.ffffffffffffep-1023,
+    (int)14
+  },
+  { // Entry 691
+    0x1.ffffffffffffe0p-1008,
+    0x1.ffffffffffffep-1023,
+    (int)15
+  },
+  { // Entry 692
+    0x1.ffffffffffffe0p-1007,
+    0x1.ffffffffffffep-1023,
+    (int)16
+  },
+  { // Entry 693
+    0x1.ffffffffffffe0p-1006,
+    0x1.ffffffffffffep-1023,
+    (int)17
+  },
+  { // Entry 694
+    0x1.ffffffffffffe0p-1005,
+    0x1.ffffffffffffep-1023,
+    (int)18
+  },
+  { // Entry 695
+    0x1.ffffffffffffe0p-1004,
+    0x1.ffffffffffffep-1023,
+    (int)19
+  },
+  { // Entry 696
+    0x1.ffffffffffffe0p-1003,
+    0x1.ffffffffffffep-1023,
+    (int)20
+  },
+  { // Entry 697
+    0x1.ffffffffffffe0p-1002,
+    0x1.ffffffffffffep-1023,
+    (int)21
+  },
+  { // Entry 698
+    0x1.ffffffffffffe0p-1001,
+    0x1.ffffffffffffep-1023,
+    (int)22
+  },
+  { // Entry 699
+    0x1.ffffffffffffe0p-1000,
+    0x1.ffffffffffffep-1023,
+    (int)23
+  },
+  { // Entry 700
+    0x1.ffffffffffffe0p-999,
+    0x1.ffffffffffffep-1023,
+    (int)24
+  },
+  { // Entry 701
+    0x1.ffffffffffffe0p-998,
+    0x1.ffffffffffffep-1023,
+    (int)25
+  },
+  { // Entry 702
+    0x1.ffffffffffffe0p-997,
+    0x1.ffffffffffffep-1023,
+    (int)26
+  },
+  { // Entry 703
+    0x1.ffffffffffffe0p-996,
+    0x1.ffffffffffffep-1023,
+    (int)27
+  },
+  { // Entry 704
+    0x1.ffffffffffffe0p-995,
+    0x1.ffffffffffffep-1023,
+    (int)28
+  },
+  { // Entry 705
+    0x1.ffffffffffffe0p-994,
+    0x1.ffffffffffffep-1023,
+    (int)29
+  },
+  { // Entry 706
+    0x1.ffffffffffffe0p-993,
+    0x1.ffffffffffffep-1023,
+    (int)30
+  },
+  { // Entry 707
+    0x1.ffffffffffffe0p-992,
+    0x1.ffffffffffffep-1023,
+    (int)31
+  },
+  { // Entry 708
+    0x1.ffffffffffffe0p-991,
+    0x1.ffffffffffffep-1023,
+    (int)32
+  },
+  { // Entry 709
+    0x1.ffffffffffffe0p-990,
+    0x1.ffffffffffffep-1023,
+    (int)33
+  },
+  { // Entry 710
+    0x1.ffffffffffffe0p-989,
+    0x1.ffffffffffffep-1023,
+    (int)34
+  },
+  { // Entry 711
+    0x1.ffffffffffffe0p-988,
+    0x1.ffffffffffffep-1023,
+    (int)35
+  },
+  { // Entry 712
+    0x1.ffffffffffffe0p-987,
+    0x1.ffffffffffffep-1023,
+    (int)36
+  },
+  { // Entry 713
+    0x1.ffffffffffffe0p-986,
+    0x1.ffffffffffffep-1023,
+    (int)37
+  },
+  { // Entry 714
+    0x1.ffffffffffffe0p-985,
+    0x1.ffffffffffffep-1023,
+    (int)38
+  },
+  { // Entry 715
+    0x1.ffffffffffffe0p-984,
+    0x1.ffffffffffffep-1023,
+    (int)39
+  },
+  { // Entry 716
+    0x1.ffffffffffffe0p-983,
+    0x1.ffffffffffffep-1023,
+    (int)40
+  },
+  { // Entry 717
+    0x1.ffffffffffffe0p-982,
+    0x1.ffffffffffffep-1023,
+    (int)41
+  },
+  { // Entry 718
+    0x1.ffffffffffffe0p-981,
+    0x1.ffffffffffffep-1023,
+    (int)42
+  },
+  { // Entry 719
+    0x1.ffffffffffffe0p-980,
+    0x1.ffffffffffffep-1023,
+    (int)43
+  },
+  { // Entry 720
+    0x1.ffffffffffffe0p-979,
+    0x1.ffffffffffffep-1023,
+    (int)44
+  },
+  { // Entry 721
+    0x1.ffffffffffffe0p-978,
+    0x1.ffffffffffffep-1023,
+    (int)45
+  },
+  { // Entry 722
+    0x1.ffffffffffffe0p-977,
+    0x1.ffffffffffffep-1023,
+    (int)46
+  },
+  { // Entry 723
+    0x1.ffffffffffffe0p-976,
+    0x1.ffffffffffffep-1023,
+    (int)47
+  },
+  { // Entry 724
+    0x1.ffffffffffffe0p-975,
+    0x1.ffffffffffffep-1023,
+    (int)48
+  },
+  { // Entry 725
+    0x1.ffffffffffffe0p-974,
+    0x1.ffffffffffffep-1023,
+    (int)49
+  },
+  { // Entry 726
+    0x1.ffffffffffffe0p-973,
+    0x1.ffffffffffffep-1023,
+    (int)50
+  },
+  { // Entry 727
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 728
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 729
+    0x1.ffffffffffffe0p-970,
+    0x1.ffffffffffffep-1023,
+    (int)53
+  },
+  { // Entry 730
+    0x1.ffffffffffffe0p-969,
+    0x1.ffffffffffffep-1023,
+    (int)54
+  },
+  { // Entry 731
+    0x1.ffffffffffffe0p-968,
+    0x1.ffffffffffffep-1023,
+    (int)55
+  },
+  { // Entry 732
+    0x1.ffffffffffffe0p-967,
+    0x1.ffffffffffffep-1023,
+    (int)56
+  },
+  { // Entry 733
+    0x1.ffffffffffffe0p-966,
+    0x1.ffffffffffffep-1023,
+    (int)57
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-965,
+    0x1.ffffffffffffep-1023,
+    (int)58
+  },
+  { // Entry 735
+    0x1.ffffffffffffe0p-964,
+    0x1.ffffffffffffep-1023,
+    (int)59
+  },
+  { // Entry 736
+    0x1.ffffffffffffe0p-963,
+    0x1.ffffffffffffep-1023,
+    (int)60
+  },
+  { // Entry 737
+    0x1.ffffffffffffe0p-962,
+    0x1.ffffffffffffep-1023,
+    (int)61
+  },
+  { // Entry 738
+    0x1.ffffffffffffe0p-961,
+    0x1.ffffffffffffep-1023,
+    (int)62
+  },
+  { // Entry 739
+    0x1.ffffffffffffe0p-960,
+    0x1.ffffffffffffep-1023,
+    (int)63
+  },
+  { // Entry 740
+    0x1.ffffffffffffe0p-959,
+    0x1.ffffffffffffep-1023,
+    (int)64
+  },
+  { // Entry 741
+    0x1.ffffffffffffe0p-958,
+    0x1.ffffffffffffep-1023,
+    (int)65
+  },
+  { // Entry 742
+    0x1.ffffffffffffe0p-957,
+    0x1.ffffffffffffep-1023,
+    (int)66
+  },
+  { // Entry 743
+    0x1.ffffffffffffe0p-956,
+    0x1.ffffffffffffep-1023,
+    (int)67
+  },
+  { // Entry 744
+    0x1.ffffffffffffe0p-955,
+    0x1.ffffffffffffep-1023,
+    (int)68
+  },
+  { // Entry 745
+    0x1.ffffffffffffe0p-954,
+    0x1.ffffffffffffep-1023,
+    (int)69
+  },
+  { // Entry 746
+    0x1.ffffffffffffe0p-953,
+    0x1.ffffffffffffep-1023,
+    (int)70
+  },
+  { // Entry 747
+    0x1.ffffffffffffe0p-952,
+    0x1.ffffffffffffep-1023,
+    (int)71
+  },
+  { // Entry 748
+    0x1.ffffffffffffe0p-951,
+    0x1.ffffffffffffep-1023,
+    (int)72
+  },
+  { // Entry 749
+    0x1.ffffffffffffe0p-950,
+    0x1.ffffffffffffep-1023,
+    (int)73
+  },
+  { // Entry 750
+    0x1.ffffffffffffe0p-949,
+    0x1.ffffffffffffep-1023,
+    (int)74
+  },
+  { // Entry 751
+    0x1.ffffffffffffe0p-948,
+    0x1.ffffffffffffep-1023,
+    (int)75
+  },
+  { // Entry 752
+    0x1.ffffffffffffe0p-947,
+    0x1.ffffffffffffep-1023,
+    (int)76
+  },
+  { // Entry 753
+    0x1.ffffffffffffe0p-946,
+    0x1.ffffffffffffep-1023,
+    (int)77
+  },
+  { // Entry 754
+    0x1.ffffffffffffe0p-945,
+    0x1.ffffffffffffep-1023,
+    (int)78
+  },
+  { // Entry 755
+    0x1.ffffffffffffe0p-944,
+    0x1.ffffffffffffep-1023,
+    (int)79
+  },
+  { // Entry 756
+    0x1.ffffffffffffe0p-943,
+    0x1.ffffffffffffep-1023,
+    (int)80
+  },
+  { // Entry 757
+    0x1.ffffffffffffe0p-942,
+    0x1.ffffffffffffep-1023,
+    (int)81
+  },
+  { // Entry 758
+    0x1.ffffffffffffe0p-941,
+    0x1.ffffffffffffep-1023,
+    (int)82
+  },
+  { // Entry 759
+    0x1.ffffffffffffe0p-940,
+    0x1.ffffffffffffep-1023,
+    (int)83
+  },
+  { // Entry 760
+    0x1.ffffffffffffe0p-939,
+    0x1.ffffffffffffep-1023,
+    (int)84
+  },
+  { // Entry 761
+    0x1.ffffffffffffe0p-938,
+    0x1.ffffffffffffep-1023,
+    (int)85
+  },
+  { // Entry 762
+    0x1.ffffffffffffe0p-937,
+    0x1.ffffffffffffep-1023,
+    (int)86
+  },
+  { // Entry 763
+    0x1.ffffffffffffe0p-936,
+    0x1.ffffffffffffep-1023,
+    (int)87
+  },
+  { // Entry 764
+    0x1.ffffffffffffe0p-935,
+    0x1.ffffffffffffep-1023,
+    (int)88
+  },
+  { // Entry 765
+    0x1.ffffffffffffe0p-934,
+    0x1.ffffffffffffep-1023,
+    (int)89
+  },
+  { // Entry 766
+    0x1.ffffffffffffe0p-933,
+    0x1.ffffffffffffep-1023,
+    (int)90
+  },
+  { // Entry 767
+    0x1.ffffffffffffe0p-932,
+    0x1.ffffffffffffep-1023,
+    (int)91
+  },
+  { // Entry 768
+    0x1.ffffffffffffe0p-931,
+    0x1.ffffffffffffep-1023,
+    (int)92
+  },
+  { // Entry 769
+    0x1.ffffffffffffe0p-930,
+    0x1.ffffffffffffep-1023,
+    (int)93
+  },
+  { // Entry 770
+    0x1.ffffffffffffe0p-929,
+    0x1.ffffffffffffep-1023,
+    (int)94
+  },
+  { // Entry 771
+    0x1.ffffffffffffe0p-928,
+    0x1.ffffffffffffep-1023,
+    (int)95
+  },
+  { // Entry 772
+    0x1.ffffffffffffe0p-927,
+    0x1.ffffffffffffep-1023,
+    (int)96
+  },
+  { // Entry 773
+    0x1.ffffffffffffe0p-926,
+    0x1.ffffffffffffep-1023,
+    (int)97
+  },
+  { // Entry 774
+    0x1.ffffffffffffe0p-925,
+    0x1.ffffffffffffep-1023,
+    (int)98
+  },
+  { // Entry 775
+    0x1.ffffffffffffe0p-924,
+    0x1.ffffffffffffep-1023,
+    (int)99
+  },
+  { // Entry 776
+    0x1.ffffffffffffe0p-923,
+    0x1.ffffffffffffep-1023,
+    (int)100
+  },
+  { // Entry 777
+    0x1.ffffffffffffe0p-922,
+    0x1.ffffffffffffep-1023,
+    (int)101
+  },
+  { // Entry 778
+    0x1.ffffffffffffe0p-921,
+    0x1.ffffffffffffep-1023,
+    (int)102
+  },
+  { // Entry 779
+    0x1.ffffffffffffe0p-920,
+    0x1.ffffffffffffep-1023,
+    (int)103
+  },
+  { // Entry 780
+    0x1.ffffffffffffe0p-919,
+    0x1.ffffffffffffep-1023,
+    (int)104
+  },
+  { // Entry 781
+    0x1.ffffffffffffe0p-918,
+    0x1.ffffffffffffep-1023,
+    (int)105
+  },
+  { // Entry 782
+    0x1.ffffffffffffe0p-917,
+    0x1.ffffffffffffep-1023,
+    (int)106
+  },
+  { // Entry 783
+    0x1.ffffffffffffe0p-916,
+    0x1.ffffffffffffep-1023,
+    (int)107
+  },
+  { // Entry 784
+    0x1.ffffffffffffe0p-915,
+    0x1.ffffffffffffep-1023,
+    (int)108
+  },
+  { // Entry 785
+    0x1.ffffffffffffe0p-914,
+    0x1.ffffffffffffep-1023,
+    (int)109
+  },
+  { // Entry 786
+    0x1.ffffffffffffe0p-913,
+    0x1.ffffffffffffep-1023,
+    (int)110
+  },
+  { // Entry 787
+    0x1.ffffffffffffe0p-912,
+    0x1.ffffffffffffep-1023,
+    (int)111
+  },
+  { // Entry 788
+    0x1.ffffffffffffe0p-911,
+    0x1.ffffffffffffep-1023,
+    (int)112
+  },
+  { // Entry 789
+    0x1.ffffffffffffe0p-910,
+    0x1.ffffffffffffep-1023,
+    (int)113
+  },
+  { // Entry 790
+    0x1.ffffffffffffe0p-909,
+    0x1.ffffffffffffep-1023,
+    (int)114
+  },
+  { // Entry 791
+    0x1.ffffffffffffe0p-908,
+    0x1.ffffffffffffep-1023,
+    (int)115
+  },
+  { // Entry 792
+    0x1.ffffffffffffe0p-907,
+    0x1.ffffffffffffep-1023,
+    (int)116
+  },
+  { // Entry 793
+    0x1.ffffffffffffe0p-906,
+    0x1.ffffffffffffep-1023,
+    (int)117
+  },
+  { // Entry 794
+    0x1.ffffffffffffe0p-905,
+    0x1.ffffffffffffep-1023,
+    (int)118
+  },
+  { // Entry 795
+    0x1.ffffffffffffe0p-904,
+    0x1.ffffffffffffep-1023,
+    (int)119
+  },
+  { // Entry 796
+    0x1.ffffffffffffe0p-903,
+    0x1.ffffffffffffep-1023,
+    (int)120
+  },
+  { // Entry 797
+    0x1.ffffffffffffe0p-902,
+    0x1.ffffffffffffep-1023,
+    (int)121
+  },
+  { // Entry 798
+    0x1.ffffffffffffe0p-901,
+    0x1.ffffffffffffep-1023,
+    (int)122
+  },
+  { // Entry 799
+    0x1.ffffffffffffe0p-900,
+    0x1.ffffffffffffep-1023,
+    (int)123
+  },
+  { // Entry 800
+    0x1.ffffffffffffe0p-899,
+    0x1.ffffffffffffep-1023,
+    (int)124
+  },
+  { // Entry 801
+    0x1.ffffffffffffe0p-898,
+    0x1.ffffffffffffep-1023,
+    (int)125
+  },
+  { // Entry 802
+    0x1.ffffffffffffe0p-897,
+    0x1.ffffffffffffep-1023,
+    (int)126
+  },
+  { // Entry 803
+    0x1.ffffffffffffe0p-896,
+    0x1.ffffffffffffep-1023,
+    (int)127
+  },
+  { // Entry 804
+    0x1.ffffffffffffe0p-895,
+    0x1.ffffffffffffep-1023,
+    (int)128
+  },
+  { // Entry 805
+    0x1.ffffffffffffe0p-894,
+    0x1.ffffffffffffep-1023,
+    (int)129
+  },
+  { // Entry 806
+    0x1.ffffffffffffe0p-893,
+    0x1.ffffffffffffep-1023,
+    (int)130
+  },
+  { // Entry 807
+    0x1.p0,
+    0x1.0p-1074,
+    (int)1074
+  },
+  { // Entry 808
+    0x1.p-1,
+    0x1.0p-1074,
+    (int)1073
+  },
+  { // Entry 809
+    0x1.ffffffffffffe0p51,
+    0x1.ffffffffffffep-1023,
+    (int)1074
+  },
+  { // Entry 810
+    0x1.ffffffffffffe0p50,
+    0x1.ffffffffffffep-1023,
+    (int)1073
+  },
+  { // Entry 811
+    0x1.p-1022,
+    0x1.0p-1074,
+    (int)52
+  },
+  { // Entry 812
+    0x1.p-1023,
+    0x1.0p-1074,
+    (int)51
+  },
+  { // Entry 813
+    0x1.ffffffffffffe0p-971,
+    0x1.ffffffffffffep-1023,
+    (int)52
+  },
+  { // Entry 814
+    0x1.ffffffffffffe0p-972,
+    0x1.ffffffffffffep-1023,
+    (int)51
+  },
+  { // Entry 815
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 816
+    0x1.p-1073,
+    0x1.0p-1074,
+    (int)1
+  },
+  { // Entry 817
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 818
+    0x1.ffffffffffffe0p-1022,
+    0x1.ffffffffffffep-1023,
+    (int)1
+  },
+  { // Entry 819
+    0.0,
+    0.0,
+    (int)0
+  },
+  { // Entry 820
+    -0.0,
+    -0.0,
+    (int)0
+  },
+  { // Entry 821
+    0.0,
+    0.0,
+    (int)1
+  },
+  { // Entry 822
+    -0.0,
+    -0.0,
+    (int)1
+  },
+  { // Entry 823
+    0.0,
+    0.0,
+    (int)-1
+  },
+  { // Entry 824
+    -0.0,
+    -0.0,
+    (int)-1
+  },
+  { // Entry 825
+    0.0,
+    0.0,
+    (int)127
+  },
+  { // Entry 826
+    -0.0,
+    -0.0,
+    (int)127
+  },
+  { // Entry 827
+    0.0,
+    0.0,
+    (int)-127
+  },
+  { // Entry 828
+    -0.0,
+    -0.0,
+    (int)-127
+  },
+  { // Entry 829
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)0
+  },
+  { // Entry 830
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 831
+    0x1.p-1022,
+    0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 832
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 833
+    0x1.p-1074,
+    0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 834
+    -0x1.p-1074,
+    -0x1.0p-1074,
+    (int)0
+  },
+  { // Entry 835
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023,
+    (int)0
+  },
+  { // Entry 836
+    -0x1.p-1022,
+    -0x1.0p-1022,
+    (int)0
+  },
+  { // Entry 837
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023,
+    (int)0
+  },
+  { // Entry 838
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)0
+  },
+  { // Entry 839
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)1
+  },
+  { // Entry 840
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)1
+  },
+  { // Entry 841
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 842
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-1
+  },
+  { // Entry 843
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)127
+  },
+  { // Entry 844
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)127
+  },
+  { // Entry 845
+    HUGE_VAL,
+    HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 846
+    -HUGE_VAL,
+    -HUGE_VAL,
+    (int)-127
+  },
+  { // Entry 847
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 848
+    HUGE_VAL,
+    0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 849
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)1
+  },
+  { // Entry 850
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023,
+    (int)127
+  },
+  { // Entry 851
+    HUGE_VAL,
+    0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 852
+    HUGE_VAL,
+    0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 853
+    -HUGE_VAL,
+    -0x1.0p-1022,
+    (int)40000
+  },
+  { // Entry 854
+    -HUGE_VAL,
+    -0x1.0p-1074,
+    (int)40000
+  },
+  { // Entry 855
+    0x1.p-1023,
+    0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 856
+    0x1.ffffffffffffe0p-1024,
+    0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 857
+    0.0,
+    0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 858
+    -0.0,
+    -0x1.0p-1074,
+    (int)-1
+  },
+  { // Entry 859
+    -0x1.ffffffffffffe0p-1024,
+    -0x1.ffffffffffffep-1023,
+    (int)-1
+  },
+  { // Entry 860
+    -0x1.p-1023,
+    -0x1.0p-1022,
+    (int)-1
+  },
+  { // Entry 861
+    0.0,
+    0x1.fffffffffffffp1023,
+    (int)-40000
+  },
+  { // Entry 862
+    -0.0,
+    -0x1.fffffffffffffp1023,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/scalbnf_intel_data.h b/tests/math_data/scalbnf_intel_data.h
new file mode 100644
index 0000000..a1ffec7
--- /dev/null
+++ b/tests/math_data/scalbnf_intel_data.h
@@ -0,0 +1,4288 @@
+/*
+ * 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.
+ */
+
+static data_1_2_t<float, float, int> g_scalbnf_intel_data[] = {
+  { // Entry 0
+    -0.0f,
+    -0x1.p-149,
+    (int)-10
+  },
+  { // Entry 1
+    -0x1.555554p-128,
+    -0x1.555554p-2,
+    (int)-126
+  },
+  { // Entry 2
+    -0x1.6db6dcp-128,
+    -0x1.6db6dcp-1,
+    (int)-127
+  },
+  { // Entry 3
+    -0x1.8e38e4p-128,
+    -0x1.8e38e4p-1,
+    (int)-127
+  },
+  { // Entry 4
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 5
+    0.0f,
+    0x1.p-149,
+    (int)-10
+  },
+  { // Entry 6
+    0x1.29e412p-127,
+    0x1.29e412p-7,
+    (int)-120
+  },
+  { // Entry 7
+    0.0f,
+    0x1.dddddep-2,
+    (int)-148
+  },
+  { // Entry 8
+    0.0f,
+    0x1.ffff60p-127,
+    (int)-23
+  },
+  { // Entry 9
+    0.0f,
+    0x1.ffff84p-127,
+    (int)-23
+  },
+  { // Entry 10
+    0x1.fffff8p-137,
+    0x1.fffff8p-127,
+    (int)-10
+  },
+  { // Entry 11
+    0.0f,
+    0x1.fffffep127,
+    (int)(-2147483647-1)
+  },
+  { // Entry 12
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)2147483647
+  },
+  { // Entry 13
+    -0x1.p-10,
+    -0x1.p0,
+    (int)-10
+  },
+  { // Entry 14
+    -0x1.p-9,
+    -0x1.p0,
+    (int)-9
+  },
+  { // Entry 15
+    -0x1.p-8,
+    -0x1.p0,
+    (int)-8
+  },
+  { // Entry 16
+    -0x1.p-7,
+    -0x1.p0,
+    (int)-7
+  },
+  { // Entry 17
+    -0x1.p-6,
+    -0x1.p0,
+    (int)-6
+  },
+  { // Entry 18
+    -0x1.p-5,
+    -0x1.p0,
+    (int)-5
+  },
+  { // Entry 19
+    -0x1.p-4,
+    -0x1.p0,
+    (int)-4
+  },
+  { // Entry 20
+    -0x1.p-3,
+    -0x1.p0,
+    (int)-3
+  },
+  { // Entry 21
+    -0x1.p-2,
+    -0x1.p0,
+    (int)-2
+  },
+  { // Entry 22
+    -0x1.p-1,
+    -0x1.p0,
+    (int)-1
+  },
+  { // Entry 23
+    -0x1.p0,
+    -0x1.p0,
+    (int)0
+  },
+  { // Entry 24
+    -0x1.p1,
+    -0x1.p0,
+    (int)1
+  },
+  { // Entry 25
+    -0x1.p2,
+    -0x1.p0,
+    (int)2
+  },
+  { // Entry 26
+    -0x1.p3,
+    -0x1.p0,
+    (int)3
+  },
+  { // Entry 27
+    -0x1.p4,
+    -0x1.p0,
+    (int)4
+  },
+  { // Entry 28
+    -0x1.p5,
+    -0x1.p0,
+    (int)5
+  },
+  { // Entry 29
+    -0x1.p6,
+    -0x1.p0,
+    (int)6
+  },
+  { // Entry 30
+    -0x1.p7,
+    -0x1.p0,
+    (int)7
+  },
+  { // Entry 31
+    -0x1.p8,
+    -0x1.p0,
+    (int)8
+  },
+  { // Entry 32
+    -0x1.p9,
+    -0x1.p0,
+    (int)9
+  },
+  { // Entry 33
+    -0x1.p10,
+    -0x1.p0,
+    (int)10
+  },
+  { // Entry 34
+    -0x1.d1745cp-11,
+    -0x1.d1745cp-1,
+    (int)-10
+  },
+  { // Entry 35
+    -0x1.d1745cp-10,
+    -0x1.d1745cp-1,
+    (int)-9
+  },
+  { // Entry 36
+    -0x1.d1745cp-9,
+    -0x1.d1745cp-1,
+    (int)-8
+  },
+  { // Entry 37
+    -0x1.d1745cp-8,
+    -0x1.d1745cp-1,
+    (int)-7
+  },
+  { // Entry 38
+    -0x1.d1745cp-7,
+    -0x1.d1745cp-1,
+    (int)-6
+  },
+  { // Entry 39
+    -0x1.d1745cp-6,
+    -0x1.d1745cp-1,
+    (int)-5
+  },
+  { // Entry 40
+    -0x1.d1745cp-5,
+    -0x1.d1745cp-1,
+    (int)-4
+  },
+  { // Entry 41
+    -0x1.d1745cp-4,
+    -0x1.d1745cp-1,
+    (int)-3
+  },
+  { // Entry 42
+    -0x1.d1745cp-3,
+    -0x1.d1745cp-1,
+    (int)-2
+  },
+  { // Entry 43
+    -0x1.d1745cp-2,
+    -0x1.d1745cp-1,
+    (int)-1
+  },
+  { // Entry 44
+    -0x1.d1745cp-1,
+    -0x1.d1745cp-1,
+    (int)0
+  },
+  { // Entry 45
+    -0x1.d1745cp0,
+    -0x1.d1745cp-1,
+    (int)1
+  },
+  { // Entry 46
+    -0x1.d1745cp1,
+    -0x1.d1745cp-1,
+    (int)2
+  },
+  { // Entry 47
+    -0x1.d1745cp2,
+    -0x1.d1745cp-1,
+    (int)3
+  },
+  { // Entry 48
+    -0x1.d1745cp3,
+    -0x1.d1745cp-1,
+    (int)4
+  },
+  { // Entry 49
+    -0x1.d1745cp4,
+    -0x1.d1745cp-1,
+    (int)5
+  },
+  { // Entry 50
+    -0x1.d1745cp5,
+    -0x1.d1745cp-1,
+    (int)6
+  },
+  { // Entry 51
+    -0x1.d1745cp6,
+    -0x1.d1745cp-1,
+    (int)7
+  },
+  { // Entry 52
+    -0x1.d1745cp7,
+    -0x1.d1745cp-1,
+    (int)8
+  },
+  { // Entry 53
+    -0x1.d1745cp8,
+    -0x1.d1745cp-1,
+    (int)9
+  },
+  { // Entry 54
+    -0x1.d1745cp9,
+    -0x1.d1745cp-1,
+    (int)10
+  },
+  { // Entry 55
+    -0x1.a2e8b8p-11,
+    -0x1.a2e8b8p-1,
+    (int)-10
+  },
+  { // Entry 56
+    -0x1.a2e8b8p-10,
+    -0x1.a2e8b8p-1,
+    (int)-9
+  },
+  { // Entry 57
+    -0x1.a2e8b8p-9,
+    -0x1.a2e8b8p-1,
+    (int)-8
+  },
+  { // Entry 58
+    -0x1.a2e8b8p-8,
+    -0x1.a2e8b8p-1,
+    (int)-7
+  },
+  { // Entry 59
+    -0x1.a2e8b8p-7,
+    -0x1.a2e8b8p-1,
+    (int)-6
+  },
+  { // Entry 60
+    -0x1.a2e8b8p-6,
+    -0x1.a2e8b8p-1,
+    (int)-5
+  },
+  { // Entry 61
+    -0x1.a2e8b8p-5,
+    -0x1.a2e8b8p-1,
+    (int)-4
+  },
+  { // Entry 62
+    -0x1.a2e8b8p-4,
+    -0x1.a2e8b8p-1,
+    (int)-3
+  },
+  { // Entry 63
+    -0x1.a2e8b8p-3,
+    -0x1.a2e8b8p-1,
+    (int)-2
+  },
+  { // Entry 64
+    -0x1.a2e8b8p-2,
+    -0x1.a2e8b8p-1,
+    (int)-1
+  },
+  { // Entry 65
+    -0x1.a2e8b8p-1,
+    -0x1.a2e8b8p-1,
+    (int)0
+  },
+  { // Entry 66
+    -0x1.a2e8b8p0,
+    -0x1.a2e8b8p-1,
+    (int)1
+  },
+  { // Entry 67
+    -0x1.a2e8b8p1,
+    -0x1.a2e8b8p-1,
+    (int)2
+  },
+  { // Entry 68
+    -0x1.a2e8b8p2,
+    -0x1.a2e8b8p-1,
+    (int)3
+  },
+  { // Entry 69
+    -0x1.a2e8b8p3,
+    -0x1.a2e8b8p-1,
+    (int)4
+  },
+  { // Entry 70
+    -0x1.a2e8b8p4,
+    -0x1.a2e8b8p-1,
+    (int)5
+  },
+  { // Entry 71
+    -0x1.a2e8b8p5,
+    -0x1.a2e8b8p-1,
+    (int)6
+  },
+  { // Entry 72
+    -0x1.a2e8b8p6,
+    -0x1.a2e8b8p-1,
+    (int)7
+  },
+  { // Entry 73
+    -0x1.a2e8b8p7,
+    -0x1.a2e8b8p-1,
+    (int)8
+  },
+  { // Entry 74
+    -0x1.a2e8b8p8,
+    -0x1.a2e8b8p-1,
+    (int)9
+  },
+  { // Entry 75
+    -0x1.a2e8b8p9,
+    -0x1.a2e8b8p-1,
+    (int)10
+  },
+  { // Entry 76
+    -0x1.745d14p-11,
+    -0x1.745d14p-1,
+    (int)-10
+  },
+  { // Entry 77
+    -0x1.745d14p-10,
+    -0x1.745d14p-1,
+    (int)-9
+  },
+  { // Entry 78
+    -0x1.745d14p-9,
+    -0x1.745d14p-1,
+    (int)-8
+  },
+  { // Entry 79
+    -0x1.745d14p-8,
+    -0x1.745d14p-1,
+    (int)-7
+  },
+  { // Entry 80
+    -0x1.745d14p-7,
+    -0x1.745d14p-1,
+    (int)-6
+  },
+  { // Entry 81
+    -0x1.745d14p-6,
+    -0x1.745d14p-1,
+    (int)-5
+  },
+  { // Entry 82
+    -0x1.745d14p-5,
+    -0x1.745d14p-1,
+    (int)-4
+  },
+  { // Entry 83
+    -0x1.745d14p-4,
+    -0x1.745d14p-1,
+    (int)-3
+  },
+  { // Entry 84
+    -0x1.745d14p-3,
+    -0x1.745d14p-1,
+    (int)-2
+  },
+  { // Entry 85
+    -0x1.745d14p-2,
+    -0x1.745d14p-1,
+    (int)-1
+  },
+  { // Entry 86
+    -0x1.745d14p-1,
+    -0x1.745d14p-1,
+    (int)0
+  },
+  { // Entry 87
+    -0x1.745d14p0,
+    -0x1.745d14p-1,
+    (int)1
+  },
+  { // Entry 88
+    -0x1.745d14p1,
+    -0x1.745d14p-1,
+    (int)2
+  },
+  { // Entry 89
+    -0x1.745d14p2,
+    -0x1.745d14p-1,
+    (int)3
+  },
+  { // Entry 90
+    -0x1.745d14p3,
+    -0x1.745d14p-1,
+    (int)4
+  },
+  { // Entry 91
+    -0x1.745d14p4,
+    -0x1.745d14p-1,
+    (int)5
+  },
+  { // Entry 92
+    -0x1.745d14p5,
+    -0x1.745d14p-1,
+    (int)6
+  },
+  { // Entry 93
+    -0x1.745d14p6,
+    -0x1.745d14p-1,
+    (int)7
+  },
+  { // Entry 94
+    -0x1.745d14p7,
+    -0x1.745d14p-1,
+    (int)8
+  },
+  { // Entry 95
+    -0x1.745d14p8,
+    -0x1.745d14p-1,
+    (int)9
+  },
+  { // Entry 96
+    -0x1.745d14p9,
+    -0x1.745d14p-1,
+    (int)10
+  },
+  { // Entry 97
+    -0x1.45d170p-11,
+    -0x1.45d170p-1,
+    (int)-10
+  },
+  { // Entry 98
+    -0x1.45d170p-10,
+    -0x1.45d170p-1,
+    (int)-9
+  },
+  { // Entry 99
+    -0x1.45d170p-9,
+    -0x1.45d170p-1,
+    (int)-8
+  },
+  { // Entry 100
+    -0x1.45d170p-8,
+    -0x1.45d170p-1,
+    (int)-7
+  },
+  { // Entry 101
+    -0x1.45d170p-7,
+    -0x1.45d170p-1,
+    (int)-6
+  },
+  { // Entry 102
+    -0x1.45d170p-6,
+    -0x1.45d170p-1,
+    (int)-5
+  },
+  { // Entry 103
+    -0x1.45d170p-5,
+    -0x1.45d170p-1,
+    (int)-4
+  },
+  { // Entry 104
+    -0x1.45d170p-4,
+    -0x1.45d170p-1,
+    (int)-3
+  },
+  { // Entry 105
+    -0x1.45d170p-3,
+    -0x1.45d170p-1,
+    (int)-2
+  },
+  { // Entry 106
+    -0x1.45d170p-2,
+    -0x1.45d170p-1,
+    (int)-1
+  },
+  { // Entry 107
+    -0x1.45d170p-1,
+    -0x1.45d170p-1,
+    (int)0
+  },
+  { // Entry 108
+    -0x1.45d170p0,
+    -0x1.45d170p-1,
+    (int)1
+  },
+  { // Entry 109
+    -0x1.45d170p1,
+    -0x1.45d170p-1,
+    (int)2
+  },
+  { // Entry 110
+    -0x1.45d170p2,
+    -0x1.45d170p-1,
+    (int)3
+  },
+  { // Entry 111
+    -0x1.45d170p3,
+    -0x1.45d170p-1,
+    (int)4
+  },
+  { // Entry 112
+    -0x1.45d170p4,
+    -0x1.45d170p-1,
+    (int)5
+  },
+  { // Entry 113
+    -0x1.45d170p5,
+    -0x1.45d170p-1,
+    (int)6
+  },
+  { // Entry 114
+    -0x1.45d170p6,
+    -0x1.45d170p-1,
+    (int)7
+  },
+  { // Entry 115
+    -0x1.45d170p7,
+    -0x1.45d170p-1,
+    (int)8
+  },
+  { // Entry 116
+    -0x1.45d170p8,
+    -0x1.45d170p-1,
+    (int)9
+  },
+  { // Entry 117
+    -0x1.45d170p9,
+    -0x1.45d170p-1,
+    (int)10
+  },
+  { // Entry 118
+    -0x1.1745ccp-11,
+    -0x1.1745ccp-1,
+    (int)-10
+  },
+  { // Entry 119
+    -0x1.1745ccp-10,
+    -0x1.1745ccp-1,
+    (int)-9
+  },
+  { // Entry 120
+    -0x1.1745ccp-9,
+    -0x1.1745ccp-1,
+    (int)-8
+  },
+  { // Entry 121
+    -0x1.1745ccp-8,
+    -0x1.1745ccp-1,
+    (int)-7
+  },
+  { // Entry 122
+    -0x1.1745ccp-7,
+    -0x1.1745ccp-1,
+    (int)-6
+  },
+  { // Entry 123
+    -0x1.1745ccp-6,
+    -0x1.1745ccp-1,
+    (int)-5
+  },
+  { // Entry 124
+    -0x1.1745ccp-5,
+    -0x1.1745ccp-1,
+    (int)-4
+  },
+  { // Entry 125
+    -0x1.1745ccp-4,
+    -0x1.1745ccp-1,
+    (int)-3
+  },
+  { // Entry 126
+    -0x1.1745ccp-3,
+    -0x1.1745ccp-1,
+    (int)-2
+  },
+  { // Entry 127
+    -0x1.1745ccp-2,
+    -0x1.1745ccp-1,
+    (int)-1
+  },
+  { // Entry 128
+    -0x1.1745ccp-1,
+    -0x1.1745ccp-1,
+    (int)0
+  },
+  { // Entry 129
+    -0x1.1745ccp0,
+    -0x1.1745ccp-1,
+    (int)1
+  },
+  { // Entry 130
+    -0x1.1745ccp1,
+    -0x1.1745ccp-1,
+    (int)2
+  },
+  { // Entry 131
+    -0x1.1745ccp2,
+    -0x1.1745ccp-1,
+    (int)3
+  },
+  { // Entry 132
+    -0x1.1745ccp3,
+    -0x1.1745ccp-1,
+    (int)4
+  },
+  { // Entry 133
+    -0x1.1745ccp4,
+    -0x1.1745ccp-1,
+    (int)5
+  },
+  { // Entry 134
+    -0x1.1745ccp5,
+    -0x1.1745ccp-1,
+    (int)6
+  },
+  { // Entry 135
+    -0x1.1745ccp6,
+    -0x1.1745ccp-1,
+    (int)7
+  },
+  { // Entry 136
+    -0x1.1745ccp7,
+    -0x1.1745ccp-1,
+    (int)8
+  },
+  { // Entry 137
+    -0x1.1745ccp8,
+    -0x1.1745ccp-1,
+    (int)9
+  },
+  { // Entry 138
+    -0x1.1745ccp9,
+    -0x1.1745ccp-1,
+    (int)10
+  },
+  { // Entry 139
+    -0x1.d17452p-12,
+    -0x1.d17452p-2,
+    (int)-10
+  },
+  { // Entry 140
+    -0x1.d17452p-11,
+    -0x1.d17452p-2,
+    (int)-9
+  },
+  { // Entry 141
+    -0x1.d17452p-10,
+    -0x1.d17452p-2,
+    (int)-8
+  },
+  { // Entry 142
+    -0x1.d17452p-9,
+    -0x1.d17452p-2,
+    (int)-7
+  },
+  { // Entry 143
+    -0x1.d17452p-8,
+    -0x1.d17452p-2,
+    (int)-6
+  },
+  { // Entry 144
+    -0x1.d17452p-7,
+    -0x1.d17452p-2,
+    (int)-5
+  },
+  { // Entry 145
+    -0x1.d17452p-6,
+    -0x1.d17452p-2,
+    (int)-4
+  },
+  { // Entry 146
+    -0x1.d17452p-5,
+    -0x1.d17452p-2,
+    (int)-3
+  },
+  { // Entry 147
+    -0x1.d17452p-4,
+    -0x1.d17452p-2,
+    (int)-2
+  },
+  { // Entry 148
+    -0x1.d17452p-3,
+    -0x1.d17452p-2,
+    (int)-1
+  },
+  { // Entry 149
+    -0x1.d17452p-2,
+    -0x1.d17452p-2,
+    (int)0
+  },
+  { // Entry 150
+    -0x1.d17452p-1,
+    -0x1.d17452p-2,
+    (int)1
+  },
+  { // Entry 151
+    -0x1.d17452p0,
+    -0x1.d17452p-2,
+    (int)2
+  },
+  { // Entry 152
+    -0x1.d17452p1,
+    -0x1.d17452p-2,
+    (int)3
+  },
+  { // Entry 153
+    -0x1.d17452p2,
+    -0x1.d17452p-2,
+    (int)4
+  },
+  { // Entry 154
+    -0x1.d17452p3,
+    -0x1.d17452p-2,
+    (int)5
+  },
+  { // Entry 155
+    -0x1.d17452p4,
+    -0x1.d17452p-2,
+    (int)6
+  },
+  { // Entry 156
+    -0x1.d17452p5,
+    -0x1.d17452p-2,
+    (int)7
+  },
+  { // Entry 157
+    -0x1.d17452p6,
+    -0x1.d17452p-2,
+    (int)8
+  },
+  { // Entry 158
+    -0x1.d17452p7,
+    -0x1.d17452p-2,
+    (int)9
+  },
+  { // Entry 159
+    -0x1.d17452p8,
+    -0x1.d17452p-2,
+    (int)10
+  },
+  { // Entry 160
+    -0x1.745d0cp-12,
+    -0x1.745d0cp-2,
+    (int)-10
+  },
+  { // Entry 161
+    -0x1.745d0cp-11,
+    -0x1.745d0cp-2,
+    (int)-9
+  },
+  { // Entry 162
+    -0x1.745d0cp-10,
+    -0x1.745d0cp-2,
+    (int)-8
+  },
+  { // Entry 163
+    -0x1.745d0cp-9,
+    -0x1.745d0cp-2,
+    (int)-7
+  },
+  { // Entry 164
+    -0x1.745d0cp-8,
+    -0x1.745d0cp-2,
+    (int)-6
+  },
+  { // Entry 165
+    -0x1.745d0cp-7,
+    -0x1.745d0cp-2,
+    (int)-5
+  },
+  { // Entry 166
+    -0x1.745d0cp-6,
+    -0x1.745d0cp-2,
+    (int)-4
+  },
+  { // Entry 167
+    -0x1.745d0cp-5,
+    -0x1.745d0cp-2,
+    (int)-3
+  },
+  { // Entry 168
+    -0x1.745d0cp-4,
+    -0x1.745d0cp-2,
+    (int)-2
+  },
+  { // Entry 169
+    -0x1.745d0cp-3,
+    -0x1.745d0cp-2,
+    (int)-1
+  },
+  { // Entry 170
+    -0x1.745d0cp-2,
+    -0x1.745d0cp-2,
+    (int)0
+  },
+  { // Entry 171
+    -0x1.745d0cp-1,
+    -0x1.745d0cp-2,
+    (int)1
+  },
+  { // Entry 172
+    -0x1.745d0cp0,
+    -0x1.745d0cp-2,
+    (int)2
+  },
+  { // Entry 173
+    -0x1.745d0cp1,
+    -0x1.745d0cp-2,
+    (int)3
+  },
+  { // Entry 174
+    -0x1.745d0cp2,
+    -0x1.745d0cp-2,
+    (int)4
+  },
+  { // Entry 175
+    -0x1.745d0cp3,
+    -0x1.745d0cp-2,
+    (int)5
+  },
+  { // Entry 176
+    -0x1.745d0cp4,
+    -0x1.745d0cp-2,
+    (int)6
+  },
+  { // Entry 177
+    -0x1.745d0cp5,
+    -0x1.745d0cp-2,
+    (int)7
+  },
+  { // Entry 178
+    -0x1.745d0cp6,
+    -0x1.745d0cp-2,
+    (int)8
+  },
+  { // Entry 179
+    -0x1.745d0cp7,
+    -0x1.745d0cp-2,
+    (int)9
+  },
+  { // Entry 180
+    -0x1.745d0cp8,
+    -0x1.745d0cp-2,
+    (int)10
+  },
+  { // Entry 181
+    -0x1.1745c6p-12,
+    -0x1.1745c6p-2,
+    (int)-10
+  },
+  { // Entry 182
+    -0x1.1745c6p-11,
+    -0x1.1745c6p-2,
+    (int)-9
+  },
+  { // Entry 183
+    -0x1.1745c6p-10,
+    -0x1.1745c6p-2,
+    (int)-8
+  },
+  { // Entry 184
+    -0x1.1745c6p-9,
+    -0x1.1745c6p-2,
+    (int)-7
+  },
+  { // Entry 185
+    -0x1.1745c6p-8,
+    -0x1.1745c6p-2,
+    (int)-6
+  },
+  { // Entry 186
+    -0x1.1745c6p-7,
+    -0x1.1745c6p-2,
+    (int)-5
+  },
+  { // Entry 187
+    -0x1.1745c6p-6,
+    -0x1.1745c6p-2,
+    (int)-4
+  },
+  { // Entry 188
+    -0x1.1745c6p-5,
+    -0x1.1745c6p-2,
+    (int)-3
+  },
+  { // Entry 189
+    -0x1.1745c6p-4,
+    -0x1.1745c6p-2,
+    (int)-2
+  },
+  { // Entry 190
+    -0x1.1745c6p-3,
+    -0x1.1745c6p-2,
+    (int)-1
+  },
+  { // Entry 191
+    -0x1.1745c6p-2,
+    -0x1.1745c6p-2,
+    (int)0
+  },
+  { // Entry 192
+    -0x1.1745c6p-1,
+    -0x1.1745c6p-2,
+    (int)1
+  },
+  { // Entry 193
+    -0x1.1745c6p0,
+    -0x1.1745c6p-2,
+    (int)2
+  },
+  { // Entry 194
+    -0x1.1745c6p1,
+    -0x1.1745c6p-2,
+    (int)3
+  },
+  { // Entry 195
+    -0x1.1745c6p2,
+    -0x1.1745c6p-2,
+    (int)4
+  },
+  { // Entry 196
+    -0x1.1745c6p3,
+    -0x1.1745c6p-2,
+    (int)5
+  },
+  { // Entry 197
+    -0x1.1745c6p4,
+    -0x1.1745c6p-2,
+    (int)6
+  },
+  { // Entry 198
+    -0x1.1745c6p5,
+    -0x1.1745c6p-2,
+    (int)7
+  },
+  { // Entry 199
+    -0x1.1745c6p6,
+    -0x1.1745c6p-2,
+    (int)8
+  },
+  { // Entry 200
+    -0x1.1745c6p7,
+    -0x1.1745c6p-2,
+    (int)9
+  },
+  { // Entry 201
+    -0x1.1745c6p8,
+    -0x1.1745c6p-2,
+    (int)10
+  },
+  { // Entry 202
+    -0x1.745dp-13,
+    -0x1.745dp-3,
+    (int)-10
+  },
+  { // Entry 203
+    -0x1.745dp-12,
+    -0x1.745dp-3,
+    (int)-9
+  },
+  { // Entry 204
+    -0x1.745dp-11,
+    -0x1.745dp-3,
+    (int)-8
+  },
+  { // Entry 205
+    -0x1.745dp-10,
+    -0x1.745dp-3,
+    (int)-7
+  },
+  { // Entry 206
+    -0x1.745dp-9,
+    -0x1.745dp-3,
+    (int)-6
+  },
+  { // Entry 207
+    -0x1.745dp-8,
+    -0x1.745dp-3,
+    (int)-5
+  },
+  { // Entry 208
+    -0x1.745dp-7,
+    -0x1.745dp-3,
+    (int)-4
+  },
+  { // Entry 209
+    -0x1.745dp-6,
+    -0x1.745dp-3,
+    (int)-3
+  },
+  { // Entry 210
+    -0x1.745dp-5,
+    -0x1.745dp-3,
+    (int)-2
+  },
+  { // Entry 211
+    -0x1.745dp-4,
+    -0x1.745dp-3,
+    (int)-1
+  },
+  { // Entry 212
+    -0x1.745dp-3,
+    -0x1.745dp-3,
+    (int)0
+  },
+  { // Entry 213
+    -0x1.745dp-2,
+    -0x1.745dp-3,
+    (int)1
+  },
+  { // Entry 214
+    -0x1.745dp-1,
+    -0x1.745dp-3,
+    (int)2
+  },
+  { // Entry 215
+    -0x1.745dp0,
+    -0x1.745dp-3,
+    (int)3
+  },
+  { // Entry 216
+    -0x1.745dp1,
+    -0x1.745dp-3,
+    (int)4
+  },
+  { // Entry 217
+    -0x1.745dp2,
+    -0x1.745dp-3,
+    (int)5
+  },
+  { // Entry 218
+    -0x1.745dp3,
+    -0x1.745dp-3,
+    (int)6
+  },
+  { // Entry 219
+    -0x1.745dp4,
+    -0x1.745dp-3,
+    (int)7
+  },
+  { // Entry 220
+    -0x1.745dp5,
+    -0x1.745dp-3,
+    (int)8
+  },
+  { // Entry 221
+    -0x1.745dp6,
+    -0x1.745dp-3,
+    (int)9
+  },
+  { // Entry 222
+    -0x1.745dp7,
+    -0x1.745dp-3,
+    (int)10
+  },
+  { // Entry 223
+    -0x1.745ce8p-14,
+    -0x1.745ce8p-4,
+    (int)-10
+  },
+  { // Entry 224
+    -0x1.745ce8p-13,
+    -0x1.745ce8p-4,
+    (int)-9
+  },
+  { // Entry 225
+    -0x1.745ce8p-12,
+    -0x1.745ce8p-4,
+    (int)-8
+  },
+  { // Entry 226
+    -0x1.745ce8p-11,
+    -0x1.745ce8p-4,
+    (int)-7
+  },
+  { // Entry 227
+    -0x1.745ce8p-10,
+    -0x1.745ce8p-4,
+    (int)-6
+  },
+  { // Entry 228
+    -0x1.745ce8p-9,
+    -0x1.745ce8p-4,
+    (int)-5
+  },
+  { // Entry 229
+    -0x1.745ce8p-8,
+    -0x1.745ce8p-4,
+    (int)-4
+  },
+  { // Entry 230
+    -0x1.745ce8p-7,
+    -0x1.745ce8p-4,
+    (int)-3
+  },
+  { // Entry 231
+    -0x1.745ce8p-6,
+    -0x1.745ce8p-4,
+    (int)-2
+  },
+  { // Entry 232
+    -0x1.745ce8p-5,
+    -0x1.745ce8p-4,
+    (int)-1
+  },
+  { // Entry 233
+    -0x1.745ce8p-4,
+    -0x1.745ce8p-4,
+    (int)0
+  },
+  { // Entry 234
+    -0x1.745ce8p-3,
+    -0x1.745ce8p-4,
+    (int)1
+  },
+  { // Entry 235
+    -0x1.745ce8p-2,
+    -0x1.745ce8p-4,
+    (int)2
+  },
+  { // Entry 236
+    -0x1.745ce8p-1,
+    -0x1.745ce8p-4,
+    (int)3
+  },
+  { // Entry 237
+    -0x1.745ce8p0,
+    -0x1.745ce8p-4,
+    (int)4
+  },
+  { // Entry 238
+    -0x1.745ce8p1,
+    -0x1.745ce8p-4,
+    (int)5
+  },
+  { // Entry 239
+    -0x1.745ce8p2,
+    -0x1.745ce8p-4,
+    (int)6
+  },
+  { // Entry 240
+    -0x1.745ce8p3,
+    -0x1.745ce8p-4,
+    (int)7
+  },
+  { // Entry 241
+    -0x1.745ce8p4,
+    -0x1.745ce8p-4,
+    (int)8
+  },
+  { // Entry 242
+    -0x1.745ce8p5,
+    -0x1.745ce8p-4,
+    (int)9
+  },
+  { // Entry 243
+    -0x1.745ce8p6,
+    -0x1.745ce8p-4,
+    (int)10
+  },
+  { // Entry 244
+    0x1.80p-33,
+    0x1.80p-23,
+    (int)-10
+  },
+  { // Entry 245
+    0x1.80p-32,
+    0x1.80p-23,
+    (int)-9
+  },
+  { // Entry 246
+    0x1.80p-31,
+    0x1.80p-23,
+    (int)-8
+  },
+  { // Entry 247
+    0x1.80p-30,
+    0x1.80p-23,
+    (int)-7
+  },
+  { // Entry 248
+    0x1.80p-29,
+    0x1.80p-23,
+    (int)-6
+  },
+  { // Entry 249
+    0x1.80p-28,
+    0x1.80p-23,
+    (int)-5
+  },
+  { // Entry 250
+    0x1.80p-27,
+    0x1.80p-23,
+    (int)-4
+  },
+  { // Entry 251
+    0x1.80p-26,
+    0x1.80p-23,
+    (int)-3
+  },
+  { // Entry 252
+    0x1.80p-25,
+    0x1.80p-23,
+    (int)-2
+  },
+  { // Entry 253
+    0x1.80p-24,
+    0x1.80p-23,
+    (int)-1
+  },
+  { // Entry 254
+    0x1.80p-23,
+    0x1.80p-23,
+    (int)0
+  },
+  { // Entry 255
+    0x1.80p-22,
+    0x1.80p-23,
+    (int)1
+  },
+  { // Entry 256
+    0x1.80p-21,
+    0x1.80p-23,
+    (int)2
+  },
+  { // Entry 257
+    0x1.80p-20,
+    0x1.80p-23,
+    (int)3
+  },
+  { // Entry 258
+    0x1.80p-19,
+    0x1.80p-23,
+    (int)4
+  },
+  { // Entry 259
+    0x1.80p-18,
+    0x1.80p-23,
+    (int)5
+  },
+  { // Entry 260
+    0x1.80p-17,
+    0x1.80p-23,
+    (int)6
+  },
+  { // Entry 261
+    0x1.80p-16,
+    0x1.80p-23,
+    (int)7
+  },
+  { // Entry 262
+    0x1.80p-15,
+    0x1.80p-23,
+    (int)8
+  },
+  { // Entry 263
+    0x1.80p-14,
+    0x1.80p-23,
+    (int)9
+  },
+  { // Entry 264
+    0x1.80p-13,
+    0x1.80p-23,
+    (int)10
+  },
+  { // Entry 265
+    0x1.745d48p-14,
+    0x1.745d48p-4,
+    (int)-10
+  },
+  { // Entry 266
+    0x1.745d48p-13,
+    0x1.745d48p-4,
+    (int)-9
+  },
+  { // Entry 267
+    0x1.745d48p-12,
+    0x1.745d48p-4,
+    (int)-8
+  },
+  { // Entry 268
+    0x1.745d48p-11,
+    0x1.745d48p-4,
+    (int)-7
+  },
+  { // Entry 269
+    0x1.745d48p-10,
+    0x1.745d48p-4,
+    (int)-6
+  },
+  { // Entry 270
+    0x1.745d48p-9,
+    0x1.745d48p-4,
+    (int)-5
+  },
+  { // Entry 271
+    0x1.745d48p-8,
+    0x1.745d48p-4,
+    (int)-4
+  },
+  { // Entry 272
+    0x1.745d48p-7,
+    0x1.745d48p-4,
+    (int)-3
+  },
+  { // Entry 273
+    0x1.745d48p-6,
+    0x1.745d48p-4,
+    (int)-2
+  },
+  { // Entry 274
+    0x1.745d48p-5,
+    0x1.745d48p-4,
+    (int)-1
+  },
+  { // Entry 275
+    0x1.745d48p-4,
+    0x1.745d48p-4,
+    (int)0
+  },
+  { // Entry 276
+    0x1.745d48p-3,
+    0x1.745d48p-4,
+    (int)1
+  },
+  { // Entry 277
+    0x1.745d48p-2,
+    0x1.745d48p-4,
+    (int)2
+  },
+  { // Entry 278
+    0x1.745d48p-1,
+    0x1.745d48p-4,
+    (int)3
+  },
+  { // Entry 279
+    0x1.745d48p0,
+    0x1.745d48p-4,
+    (int)4
+  },
+  { // Entry 280
+    0x1.745d48p1,
+    0x1.745d48p-4,
+    (int)5
+  },
+  { // Entry 281
+    0x1.745d48p2,
+    0x1.745d48p-4,
+    (int)6
+  },
+  { // Entry 282
+    0x1.745d48p3,
+    0x1.745d48p-4,
+    (int)7
+  },
+  { // Entry 283
+    0x1.745d48p4,
+    0x1.745d48p-4,
+    (int)8
+  },
+  { // Entry 284
+    0x1.745d48p5,
+    0x1.745d48p-4,
+    (int)9
+  },
+  { // Entry 285
+    0x1.745d48p6,
+    0x1.745d48p-4,
+    (int)10
+  },
+  { // Entry 286
+    0x1.745d30p-13,
+    0x1.745d30p-3,
+    (int)-10
+  },
+  { // Entry 287
+    0x1.745d30p-12,
+    0x1.745d30p-3,
+    (int)-9
+  },
+  { // Entry 288
+    0x1.745d30p-11,
+    0x1.745d30p-3,
+    (int)-8
+  },
+  { // Entry 289
+    0x1.745d30p-10,
+    0x1.745d30p-3,
+    (int)-7
+  },
+  { // Entry 290
+    0x1.745d30p-9,
+    0x1.745d30p-3,
+    (int)-6
+  },
+  { // Entry 291
+    0x1.745d30p-8,
+    0x1.745d30p-3,
+    (int)-5
+  },
+  { // Entry 292
+    0x1.745d30p-7,
+    0x1.745d30p-3,
+    (int)-4
+  },
+  { // Entry 293
+    0x1.745d30p-6,
+    0x1.745d30p-3,
+    (int)-3
+  },
+  { // Entry 294
+    0x1.745d30p-5,
+    0x1.745d30p-3,
+    (int)-2
+  },
+  { // Entry 295
+    0x1.745d30p-4,
+    0x1.745d30p-3,
+    (int)-1
+  },
+  { // Entry 296
+    0x1.745d30p-3,
+    0x1.745d30p-3,
+    (int)0
+  },
+  { // Entry 297
+    0x1.745d30p-2,
+    0x1.745d30p-3,
+    (int)1
+  },
+  { // Entry 298
+    0x1.745d30p-1,
+    0x1.745d30p-3,
+    (int)2
+  },
+  { // Entry 299
+    0x1.745d30p0,
+    0x1.745d30p-3,
+    (int)3
+  },
+  { // Entry 300
+    0x1.745d30p1,
+    0x1.745d30p-3,
+    (int)4
+  },
+  { // Entry 301
+    0x1.745d30p2,
+    0x1.745d30p-3,
+    (int)5
+  },
+  { // Entry 302
+    0x1.745d30p3,
+    0x1.745d30p-3,
+    (int)6
+  },
+  { // Entry 303
+    0x1.745d30p4,
+    0x1.745d30p-3,
+    (int)7
+  },
+  { // Entry 304
+    0x1.745d30p5,
+    0x1.745d30p-3,
+    (int)8
+  },
+  { // Entry 305
+    0x1.745d30p6,
+    0x1.745d30p-3,
+    (int)9
+  },
+  { // Entry 306
+    0x1.745d30p7,
+    0x1.745d30p-3,
+    (int)10
+  },
+  { // Entry 307
+    0x1.1745dep-12,
+    0x1.1745dep-2,
+    (int)-10
+  },
+  { // Entry 308
+    0x1.1745dep-11,
+    0x1.1745dep-2,
+    (int)-9
+  },
+  { // Entry 309
+    0x1.1745dep-10,
+    0x1.1745dep-2,
+    (int)-8
+  },
+  { // Entry 310
+    0x1.1745dep-9,
+    0x1.1745dep-2,
+    (int)-7
+  },
+  { // Entry 311
+    0x1.1745dep-8,
+    0x1.1745dep-2,
+    (int)-6
+  },
+  { // Entry 312
+    0x1.1745dep-7,
+    0x1.1745dep-2,
+    (int)-5
+  },
+  { // Entry 313
+    0x1.1745dep-6,
+    0x1.1745dep-2,
+    (int)-4
+  },
+  { // Entry 314
+    0x1.1745dep-5,
+    0x1.1745dep-2,
+    (int)-3
+  },
+  { // Entry 315
+    0x1.1745dep-4,
+    0x1.1745dep-2,
+    (int)-2
+  },
+  { // Entry 316
+    0x1.1745dep-3,
+    0x1.1745dep-2,
+    (int)-1
+  },
+  { // Entry 317
+    0x1.1745dep-2,
+    0x1.1745dep-2,
+    (int)0
+  },
+  { // Entry 318
+    0x1.1745dep-1,
+    0x1.1745dep-2,
+    (int)1
+  },
+  { // Entry 319
+    0x1.1745dep0,
+    0x1.1745dep-2,
+    (int)2
+  },
+  { // Entry 320
+    0x1.1745dep1,
+    0x1.1745dep-2,
+    (int)3
+  },
+  { // Entry 321
+    0x1.1745dep2,
+    0x1.1745dep-2,
+    (int)4
+  },
+  { // Entry 322
+    0x1.1745dep3,
+    0x1.1745dep-2,
+    (int)5
+  },
+  { // Entry 323
+    0x1.1745dep4,
+    0x1.1745dep-2,
+    (int)6
+  },
+  { // Entry 324
+    0x1.1745dep5,
+    0x1.1745dep-2,
+    (int)7
+  },
+  { // Entry 325
+    0x1.1745dep6,
+    0x1.1745dep-2,
+    (int)8
+  },
+  { // Entry 326
+    0x1.1745dep7,
+    0x1.1745dep-2,
+    (int)9
+  },
+  { // Entry 327
+    0x1.1745dep8,
+    0x1.1745dep-2,
+    (int)10
+  },
+  { // Entry 328
+    0x1.745d24p-12,
+    0x1.745d24p-2,
+    (int)-10
+  },
+  { // Entry 329
+    0x1.745d24p-11,
+    0x1.745d24p-2,
+    (int)-9
+  },
+  { // Entry 330
+    0x1.745d24p-10,
+    0x1.745d24p-2,
+    (int)-8
+  },
+  { // Entry 331
+    0x1.745d24p-9,
+    0x1.745d24p-2,
+    (int)-7
+  },
+  { // Entry 332
+    0x1.745d24p-8,
+    0x1.745d24p-2,
+    (int)-6
+  },
+  { // Entry 333
+    0x1.745d24p-7,
+    0x1.745d24p-2,
+    (int)-5
+  },
+  { // Entry 334
+    0x1.745d24p-6,
+    0x1.745d24p-2,
+    (int)-4
+  },
+  { // Entry 335
+    0x1.745d24p-5,
+    0x1.745d24p-2,
+    (int)-3
+  },
+  { // Entry 336
+    0x1.745d24p-4,
+    0x1.745d24p-2,
+    (int)-2
+  },
+  { // Entry 337
+    0x1.745d24p-3,
+    0x1.745d24p-2,
+    (int)-1
+  },
+  { // Entry 338
+    0x1.745d24p-2,
+    0x1.745d24p-2,
+    (int)0
+  },
+  { // Entry 339
+    0x1.745d24p-1,
+    0x1.745d24p-2,
+    (int)1
+  },
+  { // Entry 340
+    0x1.745d24p0,
+    0x1.745d24p-2,
+    (int)2
+  },
+  { // Entry 341
+    0x1.745d24p1,
+    0x1.745d24p-2,
+    (int)3
+  },
+  { // Entry 342
+    0x1.745d24p2,
+    0x1.745d24p-2,
+    (int)4
+  },
+  { // Entry 343
+    0x1.745d24p3,
+    0x1.745d24p-2,
+    (int)5
+  },
+  { // Entry 344
+    0x1.745d24p4,
+    0x1.745d24p-2,
+    (int)6
+  },
+  { // Entry 345
+    0x1.745d24p5,
+    0x1.745d24p-2,
+    (int)7
+  },
+  { // Entry 346
+    0x1.745d24p6,
+    0x1.745d24p-2,
+    (int)8
+  },
+  { // Entry 347
+    0x1.745d24p7,
+    0x1.745d24p-2,
+    (int)9
+  },
+  { // Entry 348
+    0x1.745d24p8,
+    0x1.745d24p-2,
+    (int)10
+  },
+  { // Entry 349
+    0x1.d1746ap-12,
+    0x1.d1746ap-2,
+    (int)-10
+  },
+  { // Entry 350
+    0x1.d1746ap-11,
+    0x1.d1746ap-2,
+    (int)-9
+  },
+  { // Entry 351
+    0x1.d1746ap-10,
+    0x1.d1746ap-2,
+    (int)-8
+  },
+  { // Entry 352
+    0x1.d1746ap-9,
+    0x1.d1746ap-2,
+    (int)-7
+  },
+  { // Entry 353
+    0x1.d1746ap-8,
+    0x1.d1746ap-2,
+    (int)-6
+  },
+  { // Entry 354
+    0x1.d1746ap-7,
+    0x1.d1746ap-2,
+    (int)-5
+  },
+  { // Entry 355
+    0x1.d1746ap-6,
+    0x1.d1746ap-2,
+    (int)-4
+  },
+  { // Entry 356
+    0x1.d1746ap-5,
+    0x1.d1746ap-2,
+    (int)-3
+  },
+  { // Entry 357
+    0x1.d1746ap-4,
+    0x1.d1746ap-2,
+    (int)-2
+  },
+  { // Entry 358
+    0x1.d1746ap-3,
+    0x1.d1746ap-2,
+    (int)-1
+  },
+  { // Entry 359
+    0x1.d1746ap-2,
+    0x1.d1746ap-2,
+    (int)0
+  },
+  { // Entry 360
+    0x1.d1746ap-1,
+    0x1.d1746ap-2,
+    (int)1
+  },
+  { // Entry 361
+    0x1.d1746ap0,
+    0x1.d1746ap-2,
+    (int)2
+  },
+  { // Entry 362
+    0x1.d1746ap1,
+    0x1.d1746ap-2,
+    (int)3
+  },
+  { // Entry 363
+    0x1.d1746ap2,
+    0x1.d1746ap-2,
+    (int)4
+  },
+  { // Entry 364
+    0x1.d1746ap3,
+    0x1.d1746ap-2,
+    (int)5
+  },
+  { // Entry 365
+    0x1.d1746ap4,
+    0x1.d1746ap-2,
+    (int)6
+  },
+  { // Entry 366
+    0x1.d1746ap5,
+    0x1.d1746ap-2,
+    (int)7
+  },
+  { // Entry 367
+    0x1.d1746ap6,
+    0x1.d1746ap-2,
+    (int)8
+  },
+  { // Entry 368
+    0x1.d1746ap7,
+    0x1.d1746ap-2,
+    (int)9
+  },
+  { // Entry 369
+    0x1.d1746ap8,
+    0x1.d1746ap-2,
+    (int)10
+  },
+  { // Entry 370
+    0x1.1745d8p-11,
+    0x1.1745d8p-1,
+    (int)-10
+  },
+  { // Entry 371
+    0x1.1745d8p-10,
+    0x1.1745d8p-1,
+    (int)-9
+  },
+  { // Entry 372
+    0x1.1745d8p-9,
+    0x1.1745d8p-1,
+    (int)-8
+  },
+  { // Entry 373
+    0x1.1745d8p-8,
+    0x1.1745d8p-1,
+    (int)-7
+  },
+  { // Entry 374
+    0x1.1745d8p-7,
+    0x1.1745d8p-1,
+    (int)-6
+  },
+  { // Entry 375
+    0x1.1745d8p-6,
+    0x1.1745d8p-1,
+    (int)-5
+  },
+  { // Entry 376
+    0x1.1745d8p-5,
+    0x1.1745d8p-1,
+    (int)-4
+  },
+  { // Entry 377
+    0x1.1745d8p-4,
+    0x1.1745d8p-1,
+    (int)-3
+  },
+  { // Entry 378
+    0x1.1745d8p-3,
+    0x1.1745d8p-1,
+    (int)-2
+  },
+  { // Entry 379
+    0x1.1745d8p-2,
+    0x1.1745d8p-1,
+    (int)-1
+  },
+  { // Entry 380
+    0x1.1745d8p-1,
+    0x1.1745d8p-1,
+    (int)0
+  },
+  { // Entry 381
+    0x1.1745d8p0,
+    0x1.1745d8p-1,
+    (int)1
+  },
+  { // Entry 382
+    0x1.1745d8p1,
+    0x1.1745d8p-1,
+    (int)2
+  },
+  { // Entry 383
+    0x1.1745d8p2,
+    0x1.1745d8p-1,
+    (int)3
+  },
+  { // Entry 384
+    0x1.1745d8p3,
+    0x1.1745d8p-1,
+    (int)4
+  },
+  { // Entry 385
+    0x1.1745d8p4,
+    0x1.1745d8p-1,
+    (int)5
+  },
+  { // Entry 386
+    0x1.1745d8p5,
+    0x1.1745d8p-1,
+    (int)6
+  },
+  { // Entry 387
+    0x1.1745d8p6,
+    0x1.1745d8p-1,
+    (int)7
+  },
+  { // Entry 388
+    0x1.1745d8p7,
+    0x1.1745d8p-1,
+    (int)8
+  },
+  { // Entry 389
+    0x1.1745d8p8,
+    0x1.1745d8p-1,
+    (int)9
+  },
+  { // Entry 390
+    0x1.1745d8p9,
+    0x1.1745d8p-1,
+    (int)10
+  },
+  { // Entry 391
+    0x1.45d17cp-11,
+    0x1.45d17cp-1,
+    (int)-10
+  },
+  { // Entry 392
+    0x1.45d17cp-10,
+    0x1.45d17cp-1,
+    (int)-9
+  },
+  { // Entry 393
+    0x1.45d17cp-9,
+    0x1.45d17cp-1,
+    (int)-8
+  },
+  { // Entry 394
+    0x1.45d17cp-8,
+    0x1.45d17cp-1,
+    (int)-7
+  },
+  { // Entry 395
+    0x1.45d17cp-7,
+    0x1.45d17cp-1,
+    (int)-6
+  },
+  { // Entry 396
+    0x1.45d17cp-6,
+    0x1.45d17cp-1,
+    (int)-5
+  },
+  { // Entry 397
+    0x1.45d17cp-5,
+    0x1.45d17cp-1,
+    (int)-4
+  },
+  { // Entry 398
+    0x1.45d17cp-4,
+    0x1.45d17cp-1,
+    (int)-3
+  },
+  { // Entry 399
+    0x1.45d17cp-3,
+    0x1.45d17cp-1,
+    (int)-2
+  },
+  { // Entry 400
+    0x1.45d17cp-2,
+    0x1.45d17cp-1,
+    (int)-1
+  },
+  { // Entry 401
+    0x1.45d17cp-1,
+    0x1.45d17cp-1,
+    (int)0
+  },
+  { // Entry 402
+    0x1.45d17cp0,
+    0x1.45d17cp-1,
+    (int)1
+  },
+  { // Entry 403
+    0x1.45d17cp1,
+    0x1.45d17cp-1,
+    (int)2
+  },
+  { // Entry 404
+    0x1.45d17cp2,
+    0x1.45d17cp-1,
+    (int)3
+  },
+  { // Entry 405
+    0x1.45d17cp3,
+    0x1.45d17cp-1,
+    (int)4
+  },
+  { // Entry 406
+    0x1.45d17cp4,
+    0x1.45d17cp-1,
+    (int)5
+  },
+  { // Entry 407
+    0x1.45d17cp5,
+    0x1.45d17cp-1,
+    (int)6
+  },
+  { // Entry 408
+    0x1.45d17cp6,
+    0x1.45d17cp-1,
+    (int)7
+  },
+  { // Entry 409
+    0x1.45d17cp7,
+    0x1.45d17cp-1,
+    (int)8
+  },
+  { // Entry 410
+    0x1.45d17cp8,
+    0x1.45d17cp-1,
+    (int)9
+  },
+  { // Entry 411
+    0x1.45d17cp9,
+    0x1.45d17cp-1,
+    (int)10
+  },
+  { // Entry 412
+    0x1.745d20p-11,
+    0x1.745d20p-1,
+    (int)-10
+  },
+  { // Entry 413
+    0x1.745d20p-10,
+    0x1.745d20p-1,
+    (int)-9
+  },
+  { // Entry 414
+    0x1.745d20p-9,
+    0x1.745d20p-1,
+    (int)-8
+  },
+  { // Entry 415
+    0x1.745d20p-8,
+    0x1.745d20p-1,
+    (int)-7
+  },
+  { // Entry 416
+    0x1.745d20p-7,
+    0x1.745d20p-1,
+    (int)-6
+  },
+  { // Entry 417
+    0x1.745d20p-6,
+    0x1.745d20p-1,
+    (int)-5
+  },
+  { // Entry 418
+    0x1.745d20p-5,
+    0x1.745d20p-1,
+    (int)-4
+  },
+  { // Entry 419
+    0x1.745d20p-4,
+    0x1.745d20p-1,
+    (int)-3
+  },
+  { // Entry 420
+    0x1.745d20p-3,
+    0x1.745d20p-1,
+    (int)-2
+  },
+  { // Entry 421
+    0x1.745d20p-2,
+    0x1.745d20p-1,
+    (int)-1
+  },
+  { // Entry 422
+    0x1.745d20p-1,
+    0x1.745d20p-1,
+    (int)0
+  },
+  { // Entry 423
+    0x1.745d20p0,
+    0x1.745d20p-1,
+    (int)1
+  },
+  { // Entry 424
+    0x1.745d20p1,
+    0x1.745d20p-1,
+    (int)2
+  },
+  { // Entry 425
+    0x1.745d20p2,
+    0x1.745d20p-1,
+    (int)3
+  },
+  { // Entry 426
+    0x1.745d20p3,
+    0x1.745d20p-1,
+    (int)4
+  },
+  { // Entry 427
+    0x1.745d20p4,
+    0x1.745d20p-1,
+    (int)5
+  },
+  { // Entry 428
+    0x1.745d20p5,
+    0x1.745d20p-1,
+    (int)6
+  },
+  { // Entry 429
+    0x1.745d20p6,
+    0x1.745d20p-1,
+    (int)7
+  },
+  { // Entry 430
+    0x1.745d20p7,
+    0x1.745d20p-1,
+    (int)8
+  },
+  { // Entry 431
+    0x1.745d20p8,
+    0x1.745d20p-1,
+    (int)9
+  },
+  { // Entry 432
+    0x1.745d20p9,
+    0x1.745d20p-1,
+    (int)10
+  },
+  { // Entry 433
+    0x1.a2e8c4p-11,
+    0x1.a2e8c4p-1,
+    (int)-10
+  },
+  { // Entry 434
+    0x1.a2e8c4p-10,
+    0x1.a2e8c4p-1,
+    (int)-9
+  },
+  { // Entry 435
+    0x1.a2e8c4p-9,
+    0x1.a2e8c4p-1,
+    (int)-8
+  },
+  { // Entry 436
+    0x1.a2e8c4p-8,
+    0x1.a2e8c4p-1,
+    (int)-7
+  },
+  { // Entry 437
+    0x1.a2e8c4p-7,
+    0x1.a2e8c4p-1,
+    (int)-6
+  },
+  { // Entry 438
+    0x1.a2e8c4p-6,
+    0x1.a2e8c4p-1,
+    (int)-5
+  },
+  { // Entry 439
+    0x1.a2e8c4p-5,
+    0x1.a2e8c4p-1,
+    (int)-4
+  },
+  { // Entry 440
+    0x1.a2e8c4p-4,
+    0x1.a2e8c4p-1,
+    (int)-3
+  },
+  { // Entry 441
+    0x1.a2e8c4p-3,
+    0x1.a2e8c4p-1,
+    (int)-2
+  },
+  { // Entry 442
+    0x1.a2e8c4p-2,
+    0x1.a2e8c4p-1,
+    (int)-1
+  },
+  { // Entry 443
+    0x1.a2e8c4p-1,
+    0x1.a2e8c4p-1,
+    (int)0
+  },
+  { // Entry 444
+    0x1.a2e8c4p0,
+    0x1.a2e8c4p-1,
+    (int)1
+  },
+  { // Entry 445
+    0x1.a2e8c4p1,
+    0x1.a2e8c4p-1,
+    (int)2
+  },
+  { // Entry 446
+    0x1.a2e8c4p2,
+    0x1.a2e8c4p-1,
+    (int)3
+  },
+  { // Entry 447
+    0x1.a2e8c4p3,
+    0x1.a2e8c4p-1,
+    (int)4
+  },
+  { // Entry 448
+    0x1.a2e8c4p4,
+    0x1.a2e8c4p-1,
+    (int)5
+  },
+  { // Entry 449
+    0x1.a2e8c4p5,
+    0x1.a2e8c4p-1,
+    (int)6
+  },
+  { // Entry 450
+    0x1.a2e8c4p6,
+    0x1.a2e8c4p-1,
+    (int)7
+  },
+  { // Entry 451
+    0x1.a2e8c4p7,
+    0x1.a2e8c4p-1,
+    (int)8
+  },
+  { // Entry 452
+    0x1.a2e8c4p8,
+    0x1.a2e8c4p-1,
+    (int)9
+  },
+  { // Entry 453
+    0x1.a2e8c4p9,
+    0x1.a2e8c4p-1,
+    (int)10
+  },
+  { // Entry 454
+    0x1.d17468p-11,
+    0x1.d17468p-1,
+    (int)-10
+  },
+  { // Entry 455
+    0x1.d17468p-10,
+    0x1.d17468p-1,
+    (int)-9
+  },
+  { // Entry 456
+    0x1.d17468p-9,
+    0x1.d17468p-1,
+    (int)-8
+  },
+  { // Entry 457
+    0x1.d17468p-8,
+    0x1.d17468p-1,
+    (int)-7
+  },
+  { // Entry 458
+    0x1.d17468p-7,
+    0x1.d17468p-1,
+    (int)-6
+  },
+  { // Entry 459
+    0x1.d17468p-6,
+    0x1.d17468p-1,
+    (int)-5
+  },
+  { // Entry 460
+    0x1.d17468p-5,
+    0x1.d17468p-1,
+    (int)-4
+  },
+  { // Entry 461
+    0x1.d17468p-4,
+    0x1.d17468p-1,
+    (int)-3
+  },
+  { // Entry 462
+    0x1.d17468p-3,
+    0x1.d17468p-1,
+    (int)-2
+  },
+  { // Entry 463
+    0x1.d17468p-2,
+    0x1.d17468p-1,
+    (int)-1
+  },
+  { // Entry 464
+    0x1.d17468p-1,
+    0x1.d17468p-1,
+    (int)0
+  },
+  { // Entry 465
+    0x1.d17468p0,
+    0x1.d17468p-1,
+    (int)1
+  },
+  { // Entry 466
+    0x1.d17468p1,
+    0x1.d17468p-1,
+    (int)2
+  },
+  { // Entry 467
+    0x1.d17468p2,
+    0x1.d17468p-1,
+    (int)3
+  },
+  { // Entry 468
+    0x1.d17468p3,
+    0x1.d17468p-1,
+    (int)4
+  },
+  { // Entry 469
+    0x1.d17468p4,
+    0x1.d17468p-1,
+    (int)5
+  },
+  { // Entry 470
+    0x1.d17468p5,
+    0x1.d17468p-1,
+    (int)6
+  },
+  { // Entry 471
+    0x1.d17468p6,
+    0x1.d17468p-1,
+    (int)7
+  },
+  { // Entry 472
+    0x1.d17468p7,
+    0x1.d17468p-1,
+    (int)8
+  },
+  { // Entry 473
+    0x1.d17468p8,
+    0x1.d17468p-1,
+    (int)9
+  },
+  { // Entry 474
+    0x1.d17468p9,
+    0x1.d17468p-1,
+    (int)10
+  },
+  { // Entry 475
+    0x1.p-10,
+    0x1.p0,
+    (int)-10
+  },
+  { // Entry 476
+    0x1.p-9,
+    0x1.p0,
+    (int)-9
+  },
+  { // Entry 477
+    0x1.p-8,
+    0x1.p0,
+    (int)-8
+  },
+  { // Entry 478
+    0x1.p-7,
+    0x1.p0,
+    (int)-7
+  },
+  { // Entry 479
+    0x1.p-6,
+    0x1.p0,
+    (int)-6
+  },
+  { // Entry 480
+    0x1.p-5,
+    0x1.p0,
+    (int)-5
+  },
+  { // Entry 481
+    0x1.p-4,
+    0x1.p0,
+    (int)-4
+  },
+  { // Entry 482
+    0x1.p-3,
+    0x1.p0,
+    (int)-3
+  },
+  { // Entry 483
+    0x1.p-2,
+    0x1.p0,
+    (int)-2
+  },
+  { // Entry 484
+    0x1.p-1,
+    0x1.p0,
+    (int)-1
+  },
+  { // Entry 485
+    0x1.p0,
+    0x1.p0,
+    (int)0
+  },
+  { // Entry 486
+    0x1.p1,
+    0x1.p0,
+    (int)1
+  },
+  { // Entry 487
+    0x1.p2,
+    0x1.p0,
+    (int)2
+  },
+  { // Entry 488
+    0x1.p3,
+    0x1.p0,
+    (int)3
+  },
+  { // Entry 489
+    0x1.p4,
+    0x1.p0,
+    (int)4
+  },
+  { // Entry 490
+    0x1.p5,
+    0x1.p0,
+    (int)5
+  },
+  { // Entry 491
+    0x1.p6,
+    0x1.p0,
+    (int)6
+  },
+  { // Entry 492
+    0x1.p7,
+    0x1.p0,
+    (int)7
+  },
+  { // Entry 493
+    0x1.p8,
+    0x1.p0,
+    (int)8
+  },
+  { // Entry 494
+    0x1.p9,
+    0x1.p0,
+    (int)9
+  },
+  { // Entry 495
+    0x1.p10,
+    0x1.p0,
+    (int)10
+  },
+  { // Entry 496
+    0x1.fffffep0,
+    0x1.fffffep127,
+    (int)-127
+  },
+  { // Entry 497
+    0x1.fffffep1,
+    0x1.fffffep127,
+    (int)-126
+  },
+  { // Entry 498
+    0x1.fffffep117,
+    0x1.fffffep127,
+    (int)-10
+  },
+  { // Entry 499
+    0x1.fffffep118,
+    0x1.fffffep127,
+    (int)-9
+  },
+  { // Entry 500
+    0x1.fffffep119,
+    0x1.fffffep127,
+    (int)-8
+  },
+  { // Entry 501
+    0x1.fffffep120,
+    0x1.fffffep127,
+    (int)-7
+  },
+  { // Entry 502
+    0x1.fffffep121,
+    0x1.fffffep127,
+    (int)-6
+  },
+  { // Entry 503
+    0x1.fffffep122,
+    0x1.fffffep127,
+    (int)-5
+  },
+  { // Entry 504
+    0x1.fffffep123,
+    0x1.fffffep127,
+    (int)-4
+  },
+  { // Entry 505
+    0x1.fffffep124,
+    0x1.fffffep127,
+    (int)-3
+  },
+  { // Entry 506
+    0x1.fffffep125,
+    0x1.fffffep127,
+    (int)-2
+  },
+  { // Entry 507
+    0x1.fffffep126,
+    0x1.fffffep127,
+    (int)-1
+  },
+  { // Entry 508
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 509
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 510
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 511
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 512
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 513
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 514
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 515
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 516
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 517
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 518
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 519
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 520
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 521
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 522
+    0x1.p-129,
+    0x1.p-2,
+    (int)-127
+  },
+  { // Entry 523
+    0x1.p-128,
+    0x1.p-2,
+    (int)-126
+  },
+  { // Entry 524
+    0x1.p-128,
+    0x1.p-1,
+    (int)-127
+  },
+  { // Entry 525
+    0x1.p-127,
+    0x1.p-1,
+    (int)-126
+  },
+  { // Entry 526
+    0x1.80p-128,
+    0x1.80p-1,
+    (int)-127
+  },
+  { // Entry 527
+    0x1.80p-127,
+    0x1.80p-1,
+    (int)-126
+  },
+  { // Entry 528
+    0.0f,
+    0x1.p-2,
+    (int)-149
+  },
+  { // Entry 529
+    0.0f,
+    0x1.p-2,
+    (int)-148
+  },
+  { // Entry 530
+    0.0f,
+    0x1.p-1,
+    (int)-149
+  },
+  { // Entry 531
+    0x1.p-149,
+    0x1.p-1,
+    (int)-148
+  },
+  { // Entry 532
+    0.0f,
+    0x1.80p-1,
+    (int)-149
+  },
+  { // Entry 533
+    0x1.80p-149,
+    0x1.80p-1,
+    (int)-148
+  },
+  { // Entry 534
+    0x1.p127,
+    0x1.p0,
+    (int)127
+  },
+  { // Entry 535
+    0x1.p126,
+    0x1.p0,
+    (int)126
+  },
+  { // Entry 536
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 537
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 538
+    0x1.p-147,
+    0x1.p-149,
+    (int)2
+  },
+  { // Entry 539
+    0x1.p-146,
+    0x1.p-149,
+    (int)3
+  },
+  { // Entry 540
+    0x1.p-145,
+    0x1.p-149,
+    (int)4
+  },
+  { // Entry 541
+    0x1.p-144,
+    0x1.p-149,
+    (int)5
+  },
+  { // Entry 542
+    0x1.p-143,
+    0x1.p-149,
+    (int)6
+  },
+  { // Entry 543
+    0x1.p-142,
+    0x1.p-149,
+    (int)7
+  },
+  { // Entry 544
+    0x1.p-141,
+    0x1.p-149,
+    (int)8
+  },
+  { // Entry 545
+    0x1.p-140,
+    0x1.p-149,
+    (int)9
+  },
+  { // Entry 546
+    0x1.p-139,
+    0x1.p-149,
+    (int)10
+  },
+  { // Entry 547
+    0x1.p-138,
+    0x1.p-149,
+    (int)11
+  },
+  { // Entry 548
+    0x1.p-137,
+    0x1.p-149,
+    (int)12
+  },
+  { // Entry 549
+    0x1.p-136,
+    0x1.p-149,
+    (int)13
+  },
+  { // Entry 550
+    0x1.p-135,
+    0x1.p-149,
+    (int)14
+  },
+  { // Entry 551
+    0x1.p-134,
+    0x1.p-149,
+    (int)15
+  },
+  { // Entry 552
+    0x1.p-133,
+    0x1.p-149,
+    (int)16
+  },
+  { // Entry 553
+    0x1.p-132,
+    0x1.p-149,
+    (int)17
+  },
+  { // Entry 554
+    0x1.p-131,
+    0x1.p-149,
+    (int)18
+  },
+  { // Entry 555
+    0x1.p-130,
+    0x1.p-149,
+    (int)19
+  },
+  { // Entry 556
+    0x1.p-129,
+    0x1.p-149,
+    (int)20
+  },
+  { // Entry 557
+    0x1.p-128,
+    0x1.p-149,
+    (int)21
+  },
+  { // Entry 558
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 559
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 560
+    0x1.p-125,
+    0x1.p-149,
+    (int)24
+  },
+  { // Entry 561
+    0x1.p-124,
+    0x1.p-149,
+    (int)25
+  },
+  { // Entry 562
+    0x1.p-123,
+    0x1.p-149,
+    (int)26
+  },
+  { // Entry 563
+    0x1.p-122,
+    0x1.p-149,
+    (int)27
+  },
+  { // Entry 564
+    0x1.p-121,
+    0x1.p-149,
+    (int)28
+  },
+  { // Entry 565
+    0x1.p-120,
+    0x1.p-149,
+    (int)29
+  },
+  { // Entry 566
+    0x1.p-119,
+    0x1.p-149,
+    (int)30
+  },
+  { // Entry 567
+    0x1.p-118,
+    0x1.p-149,
+    (int)31
+  },
+  { // Entry 568
+    0x1.p-117,
+    0x1.p-149,
+    (int)32
+  },
+  { // Entry 569
+    0x1.p-116,
+    0x1.p-149,
+    (int)33
+  },
+  { // Entry 570
+    0x1.p-115,
+    0x1.p-149,
+    (int)34
+  },
+  { // Entry 571
+    0x1.p-114,
+    0x1.p-149,
+    (int)35
+  },
+  { // Entry 572
+    0x1.p-113,
+    0x1.p-149,
+    (int)36
+  },
+  { // Entry 573
+    0x1.p-112,
+    0x1.p-149,
+    (int)37
+  },
+  { // Entry 574
+    0x1.p-111,
+    0x1.p-149,
+    (int)38
+  },
+  { // Entry 575
+    0x1.p-110,
+    0x1.p-149,
+    (int)39
+  },
+  { // Entry 576
+    0x1.p-109,
+    0x1.p-149,
+    (int)40
+  },
+  { // Entry 577
+    0x1.p-108,
+    0x1.p-149,
+    (int)41
+  },
+  { // Entry 578
+    0x1.p-107,
+    0x1.p-149,
+    (int)42
+  },
+  { // Entry 579
+    0x1.p-106,
+    0x1.p-149,
+    (int)43
+  },
+  { // Entry 580
+    0x1.p-105,
+    0x1.p-149,
+    (int)44
+  },
+  { // Entry 581
+    0x1.p-104,
+    0x1.p-149,
+    (int)45
+  },
+  { // Entry 582
+    0x1.p-103,
+    0x1.p-149,
+    (int)46
+  },
+  { // Entry 583
+    0x1.p-102,
+    0x1.p-149,
+    (int)47
+  },
+  { // Entry 584
+    0x1.p-101,
+    0x1.p-149,
+    (int)48
+  },
+  { // Entry 585
+    0x1.p-100,
+    0x1.p-149,
+    (int)49
+  },
+  { // Entry 586
+    0x1.p-99,
+    0x1.p-149,
+    (int)50
+  },
+  { // Entry 587
+    0x1.p-98,
+    0x1.p-149,
+    (int)51
+  },
+  { // Entry 588
+    0x1.p-97,
+    0x1.p-149,
+    (int)52
+  },
+  { // Entry 589
+    0x1.p-96,
+    0x1.p-149,
+    (int)53
+  },
+  { // Entry 590
+    0x1.p-95,
+    0x1.p-149,
+    (int)54
+  },
+  { // Entry 591
+    0x1.p-94,
+    0x1.p-149,
+    (int)55
+  },
+  { // Entry 592
+    0x1.p-93,
+    0x1.p-149,
+    (int)56
+  },
+  { // Entry 593
+    0x1.p-92,
+    0x1.p-149,
+    (int)57
+  },
+  { // Entry 594
+    0x1.p-91,
+    0x1.p-149,
+    (int)58
+  },
+  { // Entry 595
+    0x1.p-90,
+    0x1.p-149,
+    (int)59
+  },
+  { // Entry 596
+    0x1.p-89,
+    0x1.p-149,
+    (int)60
+  },
+  { // Entry 597
+    0x1.p-88,
+    0x1.p-149,
+    (int)61
+  },
+  { // Entry 598
+    0x1.p-87,
+    0x1.p-149,
+    (int)62
+  },
+  { // Entry 599
+    0x1.p-86,
+    0x1.p-149,
+    (int)63
+  },
+  { // Entry 600
+    0x1.p-85,
+    0x1.p-149,
+    (int)64
+  },
+  { // Entry 601
+    0x1.p-84,
+    0x1.p-149,
+    (int)65
+  },
+  { // Entry 602
+    0x1.p-83,
+    0x1.p-149,
+    (int)66
+  },
+  { // Entry 603
+    0x1.p-82,
+    0x1.p-149,
+    (int)67
+  },
+  { // Entry 604
+    0x1.p-81,
+    0x1.p-149,
+    (int)68
+  },
+  { // Entry 605
+    0x1.p-80,
+    0x1.p-149,
+    (int)69
+  },
+  { // Entry 606
+    0x1.p-79,
+    0x1.p-149,
+    (int)70
+  },
+  { // Entry 607
+    0x1.p-78,
+    0x1.p-149,
+    (int)71
+  },
+  { // Entry 608
+    0x1.p-77,
+    0x1.p-149,
+    (int)72
+  },
+  { // Entry 609
+    0x1.p-76,
+    0x1.p-149,
+    (int)73
+  },
+  { // Entry 610
+    0x1.p-75,
+    0x1.p-149,
+    (int)74
+  },
+  { // Entry 611
+    0x1.p-74,
+    0x1.p-149,
+    (int)75
+  },
+  { // Entry 612
+    0x1.p-73,
+    0x1.p-149,
+    (int)76
+  },
+  { // Entry 613
+    0x1.p-72,
+    0x1.p-149,
+    (int)77
+  },
+  { // Entry 614
+    0x1.p-71,
+    0x1.p-149,
+    (int)78
+  },
+  { // Entry 615
+    0x1.p-70,
+    0x1.p-149,
+    (int)79
+  },
+  { // Entry 616
+    0x1.p-69,
+    0x1.p-149,
+    (int)80
+  },
+  { // Entry 617
+    0x1.p-68,
+    0x1.p-149,
+    (int)81
+  },
+  { // Entry 618
+    0x1.p-67,
+    0x1.p-149,
+    (int)82
+  },
+  { // Entry 619
+    0x1.p-66,
+    0x1.p-149,
+    (int)83
+  },
+  { // Entry 620
+    0x1.p-65,
+    0x1.p-149,
+    (int)84
+  },
+  { // Entry 621
+    0x1.p-64,
+    0x1.p-149,
+    (int)85
+  },
+  { // Entry 622
+    0x1.p-63,
+    0x1.p-149,
+    (int)86
+  },
+  { // Entry 623
+    0x1.p-62,
+    0x1.p-149,
+    (int)87
+  },
+  { // Entry 624
+    0x1.p-61,
+    0x1.p-149,
+    (int)88
+  },
+  { // Entry 625
+    0x1.p-60,
+    0x1.p-149,
+    (int)89
+  },
+  { // Entry 626
+    0x1.p-59,
+    0x1.p-149,
+    (int)90
+  },
+  { // Entry 627
+    0x1.p-58,
+    0x1.p-149,
+    (int)91
+  },
+  { // Entry 628
+    0x1.p-57,
+    0x1.p-149,
+    (int)92
+  },
+  { // Entry 629
+    0x1.p-56,
+    0x1.p-149,
+    (int)93
+  },
+  { // Entry 630
+    0x1.p-55,
+    0x1.p-149,
+    (int)94
+  },
+  { // Entry 631
+    0x1.p-54,
+    0x1.p-149,
+    (int)95
+  },
+  { // Entry 632
+    0x1.p-53,
+    0x1.p-149,
+    (int)96
+  },
+  { // Entry 633
+    0x1.p-52,
+    0x1.p-149,
+    (int)97
+  },
+  { // Entry 634
+    0x1.p-51,
+    0x1.p-149,
+    (int)98
+  },
+  { // Entry 635
+    0x1.p-50,
+    0x1.p-149,
+    (int)99
+  },
+  { // Entry 636
+    0x1.p-49,
+    0x1.p-149,
+    (int)100
+  },
+  { // Entry 637
+    0x1.p-48,
+    0x1.p-149,
+    (int)101
+  },
+  { // Entry 638
+    0x1.p-47,
+    0x1.p-149,
+    (int)102
+  },
+  { // Entry 639
+    0x1.p-46,
+    0x1.p-149,
+    (int)103
+  },
+  { // Entry 640
+    0x1.p-45,
+    0x1.p-149,
+    (int)104
+  },
+  { // Entry 641
+    0x1.p-44,
+    0x1.p-149,
+    (int)105
+  },
+  { // Entry 642
+    0x1.p-43,
+    0x1.p-149,
+    (int)106
+  },
+  { // Entry 643
+    0x1.p-42,
+    0x1.p-149,
+    (int)107
+  },
+  { // Entry 644
+    0x1.p-41,
+    0x1.p-149,
+    (int)108
+  },
+  { // Entry 645
+    0x1.p-40,
+    0x1.p-149,
+    (int)109
+  },
+  { // Entry 646
+    0x1.p-39,
+    0x1.p-149,
+    (int)110
+  },
+  { // Entry 647
+    0x1.p-38,
+    0x1.p-149,
+    (int)111
+  },
+  { // Entry 648
+    0x1.p-37,
+    0x1.p-149,
+    (int)112
+  },
+  { // Entry 649
+    0x1.p-36,
+    0x1.p-149,
+    (int)113
+  },
+  { // Entry 650
+    0x1.p-35,
+    0x1.p-149,
+    (int)114
+  },
+  { // Entry 651
+    0x1.p-34,
+    0x1.p-149,
+    (int)115
+  },
+  { // Entry 652
+    0x1.p-33,
+    0x1.p-149,
+    (int)116
+  },
+  { // Entry 653
+    0x1.p-32,
+    0x1.p-149,
+    (int)117
+  },
+  { // Entry 654
+    0x1.p-31,
+    0x1.p-149,
+    (int)118
+  },
+  { // Entry 655
+    0x1.p-30,
+    0x1.p-149,
+    (int)119
+  },
+  { // Entry 656
+    0x1.p-29,
+    0x1.p-149,
+    (int)120
+  },
+  { // Entry 657
+    0x1.p-28,
+    0x1.p-149,
+    (int)121
+  },
+  { // Entry 658
+    0x1.p-27,
+    0x1.p-149,
+    (int)122
+  },
+  { // Entry 659
+    0x1.p-26,
+    0x1.p-149,
+    (int)123
+  },
+  { // Entry 660
+    0x1.p-25,
+    0x1.p-149,
+    (int)124
+  },
+  { // Entry 661
+    0x1.p-24,
+    0x1.p-149,
+    (int)125
+  },
+  { // Entry 662
+    0x1.p-23,
+    0x1.p-149,
+    (int)126
+  },
+  { // Entry 663
+    0x1.p-22,
+    0x1.p-149,
+    (int)127
+  },
+  { // Entry 664
+    0x1.p-21,
+    0x1.p-149,
+    (int)128
+  },
+  { // Entry 665
+    0x1.p-20,
+    0x1.p-149,
+    (int)129
+  },
+  { // Entry 666
+    0x1.p-19,
+    0x1.p-149,
+    (int)130
+  },
+  { // Entry 667
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 668
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 669
+    0x1.fffffcp-125,
+    0x1.fffffcp-127,
+    (int)2
+  },
+  { // Entry 670
+    0x1.fffffcp-124,
+    0x1.fffffcp-127,
+    (int)3
+  },
+  { // Entry 671
+    0x1.fffffcp-123,
+    0x1.fffffcp-127,
+    (int)4
+  },
+  { // Entry 672
+    0x1.fffffcp-122,
+    0x1.fffffcp-127,
+    (int)5
+  },
+  { // Entry 673
+    0x1.fffffcp-121,
+    0x1.fffffcp-127,
+    (int)6
+  },
+  { // Entry 674
+    0x1.fffffcp-120,
+    0x1.fffffcp-127,
+    (int)7
+  },
+  { // Entry 675
+    0x1.fffffcp-119,
+    0x1.fffffcp-127,
+    (int)8
+  },
+  { // Entry 676
+    0x1.fffffcp-118,
+    0x1.fffffcp-127,
+    (int)9
+  },
+  { // Entry 677
+    0x1.fffffcp-117,
+    0x1.fffffcp-127,
+    (int)10
+  },
+  { // Entry 678
+    0x1.fffffcp-116,
+    0x1.fffffcp-127,
+    (int)11
+  },
+  { // Entry 679
+    0x1.fffffcp-115,
+    0x1.fffffcp-127,
+    (int)12
+  },
+  { // Entry 680
+    0x1.fffffcp-114,
+    0x1.fffffcp-127,
+    (int)13
+  },
+  { // Entry 681
+    0x1.fffffcp-113,
+    0x1.fffffcp-127,
+    (int)14
+  },
+  { // Entry 682
+    0x1.fffffcp-112,
+    0x1.fffffcp-127,
+    (int)15
+  },
+  { // Entry 683
+    0x1.fffffcp-111,
+    0x1.fffffcp-127,
+    (int)16
+  },
+  { // Entry 684
+    0x1.fffffcp-110,
+    0x1.fffffcp-127,
+    (int)17
+  },
+  { // Entry 685
+    0x1.fffffcp-109,
+    0x1.fffffcp-127,
+    (int)18
+  },
+  { // Entry 686
+    0x1.fffffcp-108,
+    0x1.fffffcp-127,
+    (int)19
+  },
+  { // Entry 687
+    0x1.fffffcp-107,
+    0x1.fffffcp-127,
+    (int)20
+  },
+  { // Entry 688
+    0x1.fffffcp-106,
+    0x1.fffffcp-127,
+    (int)21
+  },
+  { // Entry 689
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 690
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 691
+    0x1.fffffcp-103,
+    0x1.fffffcp-127,
+    (int)24
+  },
+  { // Entry 692
+    0x1.fffffcp-102,
+    0x1.fffffcp-127,
+    (int)25
+  },
+  { // Entry 693
+    0x1.fffffcp-101,
+    0x1.fffffcp-127,
+    (int)26
+  },
+  { // Entry 694
+    0x1.fffffcp-100,
+    0x1.fffffcp-127,
+    (int)27
+  },
+  { // Entry 695
+    0x1.fffffcp-99,
+    0x1.fffffcp-127,
+    (int)28
+  },
+  { // Entry 696
+    0x1.fffffcp-98,
+    0x1.fffffcp-127,
+    (int)29
+  },
+  { // Entry 697
+    0x1.fffffcp-97,
+    0x1.fffffcp-127,
+    (int)30
+  },
+  { // Entry 698
+    0x1.fffffcp-96,
+    0x1.fffffcp-127,
+    (int)31
+  },
+  { // Entry 699
+    0x1.fffffcp-95,
+    0x1.fffffcp-127,
+    (int)32
+  },
+  { // Entry 700
+    0x1.fffffcp-94,
+    0x1.fffffcp-127,
+    (int)33
+  },
+  { // Entry 701
+    0x1.fffffcp-93,
+    0x1.fffffcp-127,
+    (int)34
+  },
+  { // Entry 702
+    0x1.fffffcp-92,
+    0x1.fffffcp-127,
+    (int)35
+  },
+  { // Entry 703
+    0x1.fffffcp-91,
+    0x1.fffffcp-127,
+    (int)36
+  },
+  { // Entry 704
+    0x1.fffffcp-90,
+    0x1.fffffcp-127,
+    (int)37
+  },
+  { // Entry 705
+    0x1.fffffcp-89,
+    0x1.fffffcp-127,
+    (int)38
+  },
+  { // Entry 706
+    0x1.fffffcp-88,
+    0x1.fffffcp-127,
+    (int)39
+  },
+  { // Entry 707
+    0x1.fffffcp-87,
+    0x1.fffffcp-127,
+    (int)40
+  },
+  { // Entry 708
+    0x1.fffffcp-86,
+    0x1.fffffcp-127,
+    (int)41
+  },
+  { // Entry 709
+    0x1.fffffcp-85,
+    0x1.fffffcp-127,
+    (int)42
+  },
+  { // Entry 710
+    0x1.fffffcp-84,
+    0x1.fffffcp-127,
+    (int)43
+  },
+  { // Entry 711
+    0x1.fffffcp-83,
+    0x1.fffffcp-127,
+    (int)44
+  },
+  { // Entry 712
+    0x1.fffffcp-82,
+    0x1.fffffcp-127,
+    (int)45
+  },
+  { // Entry 713
+    0x1.fffffcp-81,
+    0x1.fffffcp-127,
+    (int)46
+  },
+  { // Entry 714
+    0x1.fffffcp-80,
+    0x1.fffffcp-127,
+    (int)47
+  },
+  { // Entry 715
+    0x1.fffffcp-79,
+    0x1.fffffcp-127,
+    (int)48
+  },
+  { // Entry 716
+    0x1.fffffcp-78,
+    0x1.fffffcp-127,
+    (int)49
+  },
+  { // Entry 717
+    0x1.fffffcp-77,
+    0x1.fffffcp-127,
+    (int)50
+  },
+  { // Entry 718
+    0x1.fffffcp-76,
+    0x1.fffffcp-127,
+    (int)51
+  },
+  { // Entry 719
+    0x1.fffffcp-75,
+    0x1.fffffcp-127,
+    (int)52
+  },
+  { // Entry 720
+    0x1.fffffcp-74,
+    0x1.fffffcp-127,
+    (int)53
+  },
+  { // Entry 721
+    0x1.fffffcp-73,
+    0x1.fffffcp-127,
+    (int)54
+  },
+  { // Entry 722
+    0x1.fffffcp-72,
+    0x1.fffffcp-127,
+    (int)55
+  },
+  { // Entry 723
+    0x1.fffffcp-71,
+    0x1.fffffcp-127,
+    (int)56
+  },
+  { // Entry 724
+    0x1.fffffcp-70,
+    0x1.fffffcp-127,
+    (int)57
+  },
+  { // Entry 725
+    0x1.fffffcp-69,
+    0x1.fffffcp-127,
+    (int)58
+  },
+  { // Entry 726
+    0x1.fffffcp-68,
+    0x1.fffffcp-127,
+    (int)59
+  },
+  { // Entry 727
+    0x1.fffffcp-67,
+    0x1.fffffcp-127,
+    (int)60
+  },
+  { // Entry 728
+    0x1.fffffcp-66,
+    0x1.fffffcp-127,
+    (int)61
+  },
+  { // Entry 729
+    0x1.fffffcp-65,
+    0x1.fffffcp-127,
+    (int)62
+  },
+  { // Entry 730
+    0x1.fffffcp-64,
+    0x1.fffffcp-127,
+    (int)63
+  },
+  { // Entry 731
+    0x1.fffffcp-63,
+    0x1.fffffcp-127,
+    (int)64
+  },
+  { // Entry 732
+    0x1.fffffcp-62,
+    0x1.fffffcp-127,
+    (int)65
+  },
+  { // Entry 733
+    0x1.fffffcp-61,
+    0x1.fffffcp-127,
+    (int)66
+  },
+  { // Entry 734
+    0x1.fffffcp-60,
+    0x1.fffffcp-127,
+    (int)67
+  },
+  { // Entry 735
+    0x1.fffffcp-59,
+    0x1.fffffcp-127,
+    (int)68
+  },
+  { // Entry 736
+    0x1.fffffcp-58,
+    0x1.fffffcp-127,
+    (int)69
+  },
+  { // Entry 737
+    0x1.fffffcp-57,
+    0x1.fffffcp-127,
+    (int)70
+  },
+  { // Entry 738
+    0x1.fffffcp-56,
+    0x1.fffffcp-127,
+    (int)71
+  },
+  { // Entry 739
+    0x1.fffffcp-55,
+    0x1.fffffcp-127,
+    (int)72
+  },
+  { // Entry 740
+    0x1.fffffcp-54,
+    0x1.fffffcp-127,
+    (int)73
+  },
+  { // Entry 741
+    0x1.fffffcp-53,
+    0x1.fffffcp-127,
+    (int)74
+  },
+  { // Entry 742
+    0x1.fffffcp-52,
+    0x1.fffffcp-127,
+    (int)75
+  },
+  { // Entry 743
+    0x1.fffffcp-51,
+    0x1.fffffcp-127,
+    (int)76
+  },
+  { // Entry 744
+    0x1.fffffcp-50,
+    0x1.fffffcp-127,
+    (int)77
+  },
+  { // Entry 745
+    0x1.fffffcp-49,
+    0x1.fffffcp-127,
+    (int)78
+  },
+  { // Entry 746
+    0x1.fffffcp-48,
+    0x1.fffffcp-127,
+    (int)79
+  },
+  { // Entry 747
+    0x1.fffffcp-47,
+    0x1.fffffcp-127,
+    (int)80
+  },
+  { // Entry 748
+    0x1.fffffcp-46,
+    0x1.fffffcp-127,
+    (int)81
+  },
+  { // Entry 749
+    0x1.fffffcp-45,
+    0x1.fffffcp-127,
+    (int)82
+  },
+  { // Entry 750
+    0x1.fffffcp-44,
+    0x1.fffffcp-127,
+    (int)83
+  },
+  { // Entry 751
+    0x1.fffffcp-43,
+    0x1.fffffcp-127,
+    (int)84
+  },
+  { // Entry 752
+    0x1.fffffcp-42,
+    0x1.fffffcp-127,
+    (int)85
+  },
+  { // Entry 753
+    0x1.fffffcp-41,
+    0x1.fffffcp-127,
+    (int)86
+  },
+  { // Entry 754
+    0x1.fffffcp-40,
+    0x1.fffffcp-127,
+    (int)87
+  },
+  { // Entry 755
+    0x1.fffffcp-39,
+    0x1.fffffcp-127,
+    (int)88
+  },
+  { // Entry 756
+    0x1.fffffcp-38,
+    0x1.fffffcp-127,
+    (int)89
+  },
+  { // Entry 757
+    0x1.fffffcp-37,
+    0x1.fffffcp-127,
+    (int)90
+  },
+  { // Entry 758
+    0x1.fffffcp-36,
+    0x1.fffffcp-127,
+    (int)91
+  },
+  { // Entry 759
+    0x1.fffffcp-35,
+    0x1.fffffcp-127,
+    (int)92
+  },
+  { // Entry 760
+    0x1.fffffcp-34,
+    0x1.fffffcp-127,
+    (int)93
+  },
+  { // Entry 761
+    0x1.fffffcp-33,
+    0x1.fffffcp-127,
+    (int)94
+  },
+  { // Entry 762
+    0x1.fffffcp-32,
+    0x1.fffffcp-127,
+    (int)95
+  },
+  { // Entry 763
+    0x1.fffffcp-31,
+    0x1.fffffcp-127,
+    (int)96
+  },
+  { // Entry 764
+    0x1.fffffcp-30,
+    0x1.fffffcp-127,
+    (int)97
+  },
+  { // Entry 765
+    0x1.fffffcp-29,
+    0x1.fffffcp-127,
+    (int)98
+  },
+  { // Entry 766
+    0x1.fffffcp-28,
+    0x1.fffffcp-127,
+    (int)99
+  },
+  { // Entry 767
+    0x1.fffffcp-27,
+    0x1.fffffcp-127,
+    (int)100
+  },
+  { // Entry 768
+    0x1.fffffcp-26,
+    0x1.fffffcp-127,
+    (int)101
+  },
+  { // Entry 769
+    0x1.fffffcp-25,
+    0x1.fffffcp-127,
+    (int)102
+  },
+  { // Entry 770
+    0x1.fffffcp-24,
+    0x1.fffffcp-127,
+    (int)103
+  },
+  { // Entry 771
+    0x1.fffffcp-23,
+    0x1.fffffcp-127,
+    (int)104
+  },
+  { // Entry 772
+    0x1.fffffcp-22,
+    0x1.fffffcp-127,
+    (int)105
+  },
+  { // Entry 773
+    0x1.fffffcp-21,
+    0x1.fffffcp-127,
+    (int)106
+  },
+  { // Entry 774
+    0x1.fffffcp-20,
+    0x1.fffffcp-127,
+    (int)107
+  },
+  { // Entry 775
+    0x1.fffffcp-19,
+    0x1.fffffcp-127,
+    (int)108
+  },
+  { // Entry 776
+    0x1.fffffcp-18,
+    0x1.fffffcp-127,
+    (int)109
+  },
+  { // Entry 777
+    0x1.fffffcp-17,
+    0x1.fffffcp-127,
+    (int)110
+  },
+  { // Entry 778
+    0x1.fffffcp-16,
+    0x1.fffffcp-127,
+    (int)111
+  },
+  { // Entry 779
+    0x1.fffffcp-15,
+    0x1.fffffcp-127,
+    (int)112
+  },
+  { // Entry 780
+    0x1.fffffcp-14,
+    0x1.fffffcp-127,
+    (int)113
+  },
+  { // Entry 781
+    0x1.fffffcp-13,
+    0x1.fffffcp-127,
+    (int)114
+  },
+  { // Entry 782
+    0x1.fffffcp-12,
+    0x1.fffffcp-127,
+    (int)115
+  },
+  { // Entry 783
+    0x1.fffffcp-11,
+    0x1.fffffcp-127,
+    (int)116
+  },
+  { // Entry 784
+    0x1.fffffcp-10,
+    0x1.fffffcp-127,
+    (int)117
+  },
+  { // Entry 785
+    0x1.fffffcp-9,
+    0x1.fffffcp-127,
+    (int)118
+  },
+  { // Entry 786
+    0x1.fffffcp-8,
+    0x1.fffffcp-127,
+    (int)119
+  },
+  { // Entry 787
+    0x1.fffffcp-7,
+    0x1.fffffcp-127,
+    (int)120
+  },
+  { // Entry 788
+    0x1.fffffcp-6,
+    0x1.fffffcp-127,
+    (int)121
+  },
+  { // Entry 789
+    0x1.fffffcp-5,
+    0x1.fffffcp-127,
+    (int)122
+  },
+  { // Entry 790
+    0x1.fffffcp-4,
+    0x1.fffffcp-127,
+    (int)123
+  },
+  { // Entry 791
+    0x1.fffffcp-3,
+    0x1.fffffcp-127,
+    (int)124
+  },
+  { // Entry 792
+    0x1.fffffcp-2,
+    0x1.fffffcp-127,
+    (int)125
+  },
+  { // Entry 793
+    0x1.fffffcp-1,
+    0x1.fffffcp-127,
+    (int)126
+  },
+  { // Entry 794
+    0x1.fffffcp0,
+    0x1.fffffcp-127,
+    (int)127
+  },
+  { // Entry 795
+    0x1.fffffcp1,
+    0x1.fffffcp-127,
+    (int)128
+  },
+  { // Entry 796
+    0x1.fffffcp2,
+    0x1.fffffcp-127,
+    (int)129
+  },
+  { // Entry 797
+    0x1.fffffcp3,
+    0x1.fffffcp-127,
+    (int)130
+  },
+  { // Entry 798
+    0x1.p0,
+    0x1.p-149,
+    (int)149
+  },
+  { // Entry 799
+    0x1.p-1,
+    0x1.p-149,
+    (int)148
+  },
+  { // Entry 800
+    0x1.fffffcp22,
+    0x1.fffffcp-127,
+    (int)149
+  },
+  { // Entry 801
+    0x1.fffffcp21,
+    0x1.fffffcp-127,
+    (int)148
+  },
+  { // Entry 802
+    0x1.p-126,
+    0x1.p-149,
+    (int)23
+  },
+  { // Entry 803
+    0x1.p-127,
+    0x1.p-149,
+    (int)22
+  },
+  { // Entry 804
+    0x1.fffffcp-104,
+    0x1.fffffcp-127,
+    (int)23
+  },
+  { // Entry 805
+    0x1.fffffcp-105,
+    0x1.fffffcp-127,
+    (int)22
+  },
+  { // Entry 806
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 807
+    0x1.p-148,
+    0x1.p-149,
+    (int)1
+  },
+  { // Entry 808
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 809
+    0x1.fffffcp-126,
+    0x1.fffffcp-127,
+    (int)1
+  },
+  { // Entry 810
+    0.0,
+    0.0f,
+    (int)0
+  },
+  { // Entry 811
+    -0.0,
+    -0.0f,
+    (int)0
+  },
+  { // Entry 812
+    0.0,
+    0.0f,
+    (int)1
+  },
+  { // Entry 813
+    -0.0,
+    -0.0f,
+    (int)1
+  },
+  { // Entry 814
+    0.0,
+    0.0f,
+    (int)-1
+  },
+  { // Entry 815
+    -0.0,
+    -0.0f,
+    (int)-1
+  },
+  { // Entry 816
+    0.0,
+    0.0f,
+    (int)127
+  },
+  { // Entry 817
+    -0.0,
+    -0.0f,
+    (int)127
+  },
+  { // Entry 818
+    0.0,
+    0.0f,
+    (int)-127
+  },
+  { // Entry 819
+    -0.0,
+    -0.0f,
+    (int)-127
+  },
+  { // Entry 820
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)0
+  },
+  { // Entry 821
+    0x1.fffffep127,
+    0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 822
+    0x1.p-126,
+    0x1.p-126,
+    (int)0
+  },
+  { // Entry 823
+    0x1.fffffcp-127,
+    0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 824
+    0x1.p-149,
+    0x1.p-149,
+    (int)0
+  },
+  { // Entry 825
+    -0x1.p-149,
+    -0x1.p-149,
+    (int)0
+  },
+  { // Entry 826
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127,
+    (int)0
+  },
+  { // Entry 827
+    -0x1.p-126,
+    -0x1.p-126,
+    (int)0
+  },
+  { // Entry 828
+    -0x1.fffffep127,
+    -0x1.fffffep127,
+    (int)0
+  },
+  { // Entry 829
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)0
+  },
+  { // Entry 830
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)1
+  },
+  { // Entry 831
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)1
+  },
+  { // Entry 832
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 833
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-1
+  },
+  { // Entry 834
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)127
+  },
+  { // Entry 835
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)127
+  },
+  { // Entry 836
+    HUGE_VALF,
+    HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 837
+    -HUGE_VALF,
+    -HUGE_VALF,
+    (int)-127
+  },
+  { // Entry 838
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 839
+    HUGE_VALF,
+    0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 840
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)1
+  },
+  { // Entry 841
+    -HUGE_VALF,
+    -0x1.fffffep127,
+    (int)127
+  },
+  { // Entry 842
+    HUGE_VALF,
+    0x1.p-126,
+    (int)40000
+  },
+  { // Entry 843
+    HUGE_VALF,
+    0x1.p-149,
+    (int)40000
+  },
+  { // Entry 844
+    -HUGE_VALF,
+    -0x1.p-126,
+    (int)40000
+  },
+  { // Entry 845
+    -HUGE_VALF,
+    -0x1.p-149,
+    (int)40000
+  },
+  { // Entry 846
+    0x1.p-127,
+    0x1.p-126,
+    (int)-1
+  },
+  { // Entry 847
+    0x1.fffffcp-128,
+    0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 848
+    0.0f,
+    0x1.p-149,
+    (int)-1
+  },
+  { // Entry 849
+    -0.0f,
+    -0x1.p-149,
+    (int)-1
+  },
+  { // Entry 850
+    -0x1.fffffcp-128,
+    -0x1.fffffcp-127,
+    (int)-1
+  },
+  { // Entry 851
+    -0x1.p-127,
+    -0x1.p-126,
+    (int)-1
+  },
+  { // Entry 852
+    0.0f,
+    0x1.fffffep127,
+    (int)-40000
+  },
+  { // Entry 853
+    -0.0f,
+    -0x1.fffffep127,
+    (int)-40000
+  }
+};
diff --git a/tests/math_data/significand_intel_data.h b/tests/math_data/significand_intel_data.h
new file mode 100644
index 0000000..1076272
--- /dev/null
+++ b/tests/math_data/significand_intel_data.h
@@ -0,0 +1,638 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_significand_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.0p100
+  },
+  { // Entry 1
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp100
+  },
+  { // Entry 2
+    0x1.55555555555560p0,
+    0x1.5555555555556p100
+  },
+  { // Entry 3
+    0x1.80000000000010p0,
+    0x1.8000000000001p100
+  },
+  { // Entry 4
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp100
+  },
+  { // Entry 5
+    0x1.d5555555555570p0,
+    0x1.d555555555557p100
+  },
+  { // Entry 6
+    0x1.p0,
+    0x1.0p101
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p200
+  },
+  { // Entry 8
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp200
+  },
+  { // Entry 9
+    0x1.55555555555560p0,
+    0x1.5555555555556p200
+  },
+  { // Entry 10
+    0x1.80000000000010p0,
+    0x1.8000000000001p200
+  },
+  { // Entry 11
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp200
+  },
+  { // Entry 12
+    0x1.d5555555555570p0,
+    0x1.d555555555557p200
+  },
+  { // Entry 13
+    0x1.p0,
+    0x1.0p201
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.0p1000
+  },
+  { // Entry 15
+    0x1.2aaaaaaaaaaab0p0,
+    0x1.2aaaaaaaaaaabp1000
+  },
+  { // Entry 16
+    0x1.55555555555560p0,
+    0x1.5555555555556p1000
+  },
+  { // Entry 17
+    0x1.80000000000010p0,
+    0x1.8000000000001p1000
+  },
+  { // Entry 18
+    0x1.aaaaaaaaaaaac0p0,
+    0x1.aaaaaaaaaaaacp1000
+  },
+  { // Entry 19
+    0x1.d5555555555570p0,
+    0x1.d555555555557p1000
+  },
+  { // Entry 20
+    0x1.p0,
+    0x1.0p1001
+  },
+  { // Entry 21
+    -0x1.p0,
+    -0x1.0p101
+  },
+  { // Entry 22
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p100
+  },
+  { // Entry 23
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap100
+  },
+  { // Entry 24
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp100
+  },
+  { // Entry 25
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p100
+  },
+  { // Entry 26
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p100
+  },
+  { // Entry 27
+    -0x1.p0,
+    -0x1.0p100
+  },
+  { // Entry 28
+    -0x1.p0,
+    -0x1.0p201
+  },
+  { // Entry 29
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p200
+  },
+  { // Entry 30
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap200
+  },
+  { // Entry 31
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp200
+  },
+  { // Entry 32
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p200
+  },
+  { // Entry 33
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p200
+  },
+  { // Entry 34
+    -0x1.p0,
+    -0x1.0p200
+  },
+  { // Entry 35
+    -0x1.p0,
+    -0x1.0p1001
+  },
+  { // Entry 36
+    -0x1.d5555555555550p0,
+    -0x1.d555555555555p1000
+  },
+  { // Entry 37
+    -0x1.aaaaaaaaaaaaa0p0,
+    -0x1.aaaaaaaaaaaaap1000
+  },
+  { // Entry 38
+    -0x1.7ffffffffffff0p0,
+    -0x1.7ffffffffffffp1000
+  },
+  { // Entry 39
+    -0x1.55555555555540p0,
+    -0x1.5555555555554p1000
+  },
+  { // Entry 40
+    -0x1.2aaaaaaaaaaa90p0,
+    -0x1.2aaaaaaaaaaa9p1000
+  },
+  { // Entry 41
+    -0x1.p0,
+    -0x1.0p1000
+  },
+  { // Entry 42
+    0x1.p0,
+    0x1.0p50
+  },
+  { // Entry 43
+    0x1.p0,
+    0x1.0p51
+  },
+  { // Entry 44
+    0x1.p0,
+    0x1.0p52
+  },
+  { // Entry 45
+    0x1.p0,
+    0x1.0p53
+  },
+  { // Entry 46
+    0x1.p0,
+    0x1.0p-1026
+  },
+  { // Entry 47
+    0x1.ae8ba2e8ba2e80p0,
+    0x1.ae8ba2e8ba2e8p-1024
+  },
+  { // Entry 48
+    0x1.8e8ba2e8ba2e80p0,
+    0x1.8e8ba2e8ba2e8p-1023
+  },
+  { // Entry 49
+    0x1.22e8ba2e8ba2e0p0,
+    0x1.22e8ba2e8ba2ep-1022
+  },
+  { // Entry 50
+    0x1.7e8ba2e8ba2e80p0,
+    0x1.7e8ba2e8ba2e8p-1022
+  },
+  { // Entry 51
+    0x1.da2e8ba2e8ba20p0,
+    0x1.da2e8ba2e8ba2p-1022
+  },
+  { // Entry 52
+    0x1.1ae8ba2e8ba2e0p0,
+    0x1.1ae8ba2e8ba2ep-1021
+  },
+  { // Entry 53
+    0x1.48ba2e8ba2e8b0p0,
+    0x1.48ba2e8ba2e8bp-1021
+  },
+  { // Entry 54
+    0x1.768ba2e8ba2e80p0,
+    0x1.768ba2e8ba2e8p-1021
+  },
+  { // Entry 55
+    0x1.a45d1745d17450p0,
+    0x1.a45d1745d1745p-1021
+  },
+  { // Entry 56
+    0x1.d22e8ba2e8ba20p0,
+    0x1.d22e8ba2e8ba2p-1021
+  },
+  { // Entry 57
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1021
+  },
+  { // Entry 58
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 59
+    0x1.p0,
+    0x1.0p51
+  },
+  { // Entry 60
+    0x1.00000000000010p0,
+    0x1.0000000000001p51
+  },
+  { // Entry 61
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 62
+    0x1.p0,
+    0x1.0p52
+  },
+  { // Entry 63
+    0x1.00000000000010p0,
+    0x1.0000000000001p52
+  },
+  { // Entry 64
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 65
+    0x1.p0,
+    0x1.0p53
+  },
+  { // Entry 66
+    0x1.00000000000010p0,
+    0x1.0000000000001p53
+  },
+  { // Entry 67
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p51
+  },
+  { // Entry 68
+    -0x1.p0,
+    -0x1.0p51
+  },
+  { // Entry 69
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 70
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p52
+  },
+  { // Entry 71
+    -0x1.p0,
+    -0x1.0p52
+  },
+  { // Entry 72
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 73
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p53
+  },
+  { // Entry 74
+    -0x1.p0,
+    -0x1.0p53
+  },
+  { // Entry 75
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 76
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 77
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 78
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 79
+    0x1.p0,
+    0x1.0p-6
+  },
+  { // Entry 80
+    0x1.00000000000010p0,
+    0x1.0000000000001p-6
+  },
+  { // Entry 81
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 82
+    0x1.p0,
+    0x1.0p-5
+  },
+  { // Entry 83
+    0x1.00000000000010p0,
+    0x1.0000000000001p-5
+  },
+  { // Entry 84
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 85
+    0x1.p0,
+    0x1.0p-4
+  },
+  { // Entry 86
+    0x1.00000000000010p0,
+    0x1.0000000000001p-4
+  },
+  { // Entry 87
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 88
+    0x1.p0,
+    0x1.0p-3
+  },
+  { // Entry 89
+    0x1.00000000000010p0,
+    0x1.0000000000001p-3
+  },
+  { // Entry 90
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 91
+    0x1.p0,
+    0x1.0p-2
+  },
+  { // Entry 92
+    0x1.00000000000010p0,
+    0x1.0000000000001p-2
+  },
+  { // Entry 93
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 94
+    0x1.p0,
+    0x1.0p-1
+  },
+  { // Entry 95
+    0x1.00000000000010p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 96
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 97
+    -0.0,
+    -0.0
+  },
+  { // Entry 98
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 99
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 100
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 101
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 102
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 103
+    0x1.p0,
+    0x1.0p1
+  },
+  { // Entry 104
+    0x1.00000000000010p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 105
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 106
+    0x1.p0,
+    0x1.0p2
+  },
+  { // Entry 107
+    0x1.00000000000010p0,
+    0x1.0000000000001p2
+  },
+  { // Entry 108
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 109
+    0x1.p0,
+    0x1.0p3
+  },
+  { // Entry 110
+    0x1.00000000000010p0,
+    0x1.0000000000001p3
+  },
+  { // Entry 111
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 112
+    0x1.p0,
+    0x1.0p4
+  },
+  { // Entry 113
+    0x1.00000000000010p0,
+    0x1.0000000000001p4
+  },
+  { // Entry 114
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 115
+    0x1.p0,
+    0x1.0p5
+  },
+  { // Entry 116
+    0x1.00000000000010p0,
+    0x1.0000000000001p5
+  },
+  { // Entry 117
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 118
+    0x1.p0,
+    0x1.0p6
+  },
+  { // Entry 119
+    0x1.00000000000010p0,
+    0x1.0000000000001p6
+  },
+  { // Entry 120
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.0p7
+  },
+  { // Entry 122
+    0x1.00000000000010p0,
+    0x1.0000000000001p7
+  },
+  { // Entry 123
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 124
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 125
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 126
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 127
+    0x1.ffffffffffffe0p0,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 128
+    -0x1.ffffffffffffe0p0,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 129
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 130
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 131
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 132
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 133
+    0x1.00000000000010p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 134
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 135
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 136
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 137
+    0x1.fffffffffffff0p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 138
+    -0x1.fffffffffffff0p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 139
+    0x1.921fb54442d180p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 140
+    -0x1.921fb54442d180p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 141
+    0x1.00000000000010p0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 142
+    -0x1.00000000000010p0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 143
+    0x1.p0,
+    0x1.0p-1022
+  },
+  { // Entry 144
+    -0x1.p0,
+    -0x1.0p-1022
+  },
+  { // Entry 145
+    0x1.ffffffffffffe0p0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 146
+    -0x1.ffffffffffffe0p0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 147
+    0x1.ffffffffffffc0p0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 148
+    -0x1.ffffffffffffc0p0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 149
+    0x1.p0,
+    0x1.0p-1073
+  },
+  { // Entry 150
+    -0x1.p0,
+    -0x1.0p-1073
+  },
+  { // Entry 151
+    0x1.p0,
+    0x1.0p-1074
+  },
+  { // Entry 152
+    -0x1.p0,
+    -0x1.0p-1074
+  },
+  { // Entry 153
+    0.0,
+    0.0
+  },
+  { // Entry 154
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/significandf_intel_data.h b/tests/math_data/significandf_intel_data.h
new file mode 100644
index 0000000..47869b7
--- /dev/null
+++ b/tests/math_data/significandf_intel_data.h
@@ -0,0 +1,526 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_significandf_intel_data[] = {
+  { // Entry 0
+    0x1.p0,
+    0x1.p100
+  },
+  { // Entry 1
+    0x1.2aaaaap0,
+    0x1.2aaaaap100
+  },
+  { // Entry 2
+    0x1.555554p0,
+    0x1.555554p100
+  },
+  { // Entry 3
+    0x1.7ffffep0,
+    0x1.7ffffep100
+  },
+  { // Entry 4
+    0x1.aaaaa8p0,
+    0x1.aaaaa8p100
+  },
+  { // Entry 5
+    0x1.d55552p0,
+    0x1.d55552p100
+  },
+  { // Entry 6
+    0x1.fffffcp0,
+    0x1.fffffcp100
+  },
+  { // Entry 7
+    -0x1.p0,
+    -0x1.p101
+  },
+  { // Entry 8
+    -0x1.d55556p0,
+    -0x1.d55556p100
+  },
+  { // Entry 9
+    -0x1.aaaaacp0,
+    -0x1.aaaaacp100
+  },
+  { // Entry 10
+    -0x1.800002p0,
+    -0x1.800002p100
+  },
+  { // Entry 11
+    -0x1.555558p0,
+    -0x1.555558p100
+  },
+  { // Entry 12
+    -0x1.2aaaaep0,
+    -0x1.2aaaaep100
+  },
+  { // Entry 13
+    -0x1.000004p0,
+    -0x1.000004p100
+  },
+  { // Entry 14
+    0x1.p0,
+    0x1.p21
+  },
+  { // Entry 15
+    0x1.p0,
+    0x1.p22
+  },
+  { // Entry 16
+    0x1.p0,
+    0x1.p23
+  },
+  { // Entry 17
+    0x1.p0,
+    0x1.p24
+  },
+  { // Entry 18
+    0x1.p0,
+    0x1.p-130
+  },
+  { // Entry 19
+    0x1.ae8ba0p0,
+    0x1.ae8ba0p-128
+  },
+  { // Entry 20
+    0x1.8e8ba0p0,
+    0x1.8e8ba0p-127
+  },
+  { // Entry 21
+    0x1.22e8b8p0,
+    0x1.22e8b8p-126
+  },
+  { // Entry 22
+    0x1.7e8ba0p0,
+    0x1.7e8ba0p-126
+  },
+  { // Entry 23
+    0x1.da2e88p0,
+    0x1.da2e88p-126
+  },
+  { // Entry 24
+    0x1.1ae8b8p0,
+    0x1.1ae8b8p-125
+  },
+  { // Entry 25
+    0x1.48ba2cp0,
+    0x1.48ba2cp-125
+  },
+  { // Entry 26
+    0x1.768ba0p0,
+    0x1.768ba0p-125
+  },
+  { // Entry 27
+    0x1.a45d14p0,
+    0x1.a45d14p-125
+  },
+  { // Entry 28
+    0x1.d22e88p0,
+    0x1.d22e88p-125
+  },
+  { // Entry 29
+    0x1.fffffcp0,
+    0x1.fffffcp-125
+  },
+  { // Entry 30
+    0x1.fffffep0,
+    0x1.fffffep21
+  },
+  { // Entry 31
+    0x1.p0,
+    0x1.p22
+  },
+  { // Entry 32
+    0x1.000002p0,
+    0x1.000002p22
+  },
+  { // Entry 33
+    0x1.fffffep0,
+    0x1.fffffep22
+  },
+  { // Entry 34
+    0x1.p0,
+    0x1.p23
+  },
+  { // Entry 35
+    0x1.000002p0,
+    0x1.000002p23
+  },
+  { // Entry 36
+    0x1.fffffep0,
+    0x1.fffffep23
+  },
+  { // Entry 37
+    0x1.p0,
+    0x1.p24
+  },
+  { // Entry 38
+    0x1.000002p0,
+    0x1.000002p24
+  },
+  { // Entry 39
+    -0x1.000002p0,
+    -0x1.000002p22
+  },
+  { // Entry 40
+    -0x1.p0,
+    -0x1.p22
+  },
+  { // Entry 41
+    -0x1.fffffep0,
+    -0x1.fffffep21
+  },
+  { // Entry 42
+    -0x1.000002p0,
+    -0x1.000002p23
+  },
+  { // Entry 43
+    -0x1.p0,
+    -0x1.p23
+  },
+  { // Entry 44
+    -0x1.fffffep0,
+    -0x1.fffffep22
+  },
+  { // Entry 45
+    -0x1.000002p0,
+    -0x1.000002p24
+  },
+  { // Entry 46
+    -0x1.p0,
+    -0x1.p24
+  },
+  { // Entry 47
+    -0x1.fffffep0,
+    -0x1.fffffep23
+  },
+  { // Entry 48
+    0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 49
+    -0x1.fffffep0,
+    -0x1.fffffep127
+  },
+  { // Entry 50
+    0x1.fffffep0,
+    0x1.fffffep-7
+  },
+  { // Entry 51
+    0x1.p0,
+    0x1.p-6
+  },
+  { // Entry 52
+    0x1.000002p0,
+    0x1.000002p-6
+  },
+  { // Entry 53
+    0x1.fffffep0,
+    0x1.fffffep-6
+  },
+  { // Entry 54
+    0x1.p0,
+    0x1.p-5
+  },
+  { // Entry 55
+    0x1.000002p0,
+    0x1.000002p-5
+  },
+  { // Entry 56
+    0x1.fffffep0,
+    0x1.fffffep-5
+  },
+  { // Entry 57
+    0x1.p0,
+    0x1.p-4
+  },
+  { // Entry 58
+    0x1.000002p0,
+    0x1.000002p-4
+  },
+  { // Entry 59
+    0x1.fffffep0,
+    0x1.fffffep-4
+  },
+  { // Entry 60
+    0x1.p0,
+    0x1.p-3
+  },
+  { // Entry 61
+    0x1.000002p0,
+    0x1.000002p-3
+  },
+  { // Entry 62
+    0x1.fffffep0,
+    0x1.fffffep-3
+  },
+  { // Entry 63
+    0x1.p0,
+    0x1.p-2
+  },
+  { // Entry 64
+    0x1.000002p0,
+    0x1.000002p-2
+  },
+  { // Entry 65
+    0x1.fffffep0,
+    0x1.fffffep-2
+  },
+  { // Entry 66
+    0x1.p0,
+    0x1.p-1
+  },
+  { // Entry 67
+    0x1.000002p0,
+    0x1.000002p-1
+  },
+  { // Entry 68
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 69
+    0.0,
+    0.0
+  },
+  { // Entry 70
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 71
+    0x1.fffffep0,
+    0x1.fffffep-1
+  },
+  { // Entry 72
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 73
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 74
+    0x1.fffffep0,
+    0x1.fffffep0
+  },
+  { // Entry 75
+    0x1.p0,
+    0x1.p1
+  },
+  { // Entry 76
+    0x1.000002p0,
+    0x1.000002p1
+  },
+  { // Entry 77
+    0x1.fffffep0,
+    0x1.fffffep1
+  },
+  { // Entry 78
+    0x1.p0,
+    0x1.p2
+  },
+  { // Entry 79
+    0x1.000002p0,
+    0x1.000002p2
+  },
+  { // Entry 80
+    0x1.fffffep0,
+    0x1.fffffep2
+  },
+  { // Entry 81
+    0x1.p0,
+    0x1.p3
+  },
+  { // Entry 82
+    0x1.000002p0,
+    0x1.000002p3
+  },
+  { // Entry 83
+    0x1.fffffep0,
+    0x1.fffffep3
+  },
+  { // Entry 84
+    0x1.p0,
+    0x1.p4
+  },
+  { // Entry 85
+    0x1.000002p0,
+    0x1.000002p4
+  },
+  { // Entry 86
+    0x1.fffffep0,
+    0x1.fffffep4
+  },
+  { // Entry 87
+    0x1.p0,
+    0x1.p5
+  },
+  { // Entry 88
+    0x1.000002p0,
+    0x1.000002p5
+  },
+  { // Entry 89
+    0x1.fffffep0,
+    0x1.fffffep5
+  },
+  { // Entry 90
+    0x1.p0,
+    0x1.p6
+  },
+  { // Entry 91
+    0x1.000002p0,
+    0x1.000002p6
+  },
+  { // Entry 92
+    0x1.fffffep0,
+    0x1.fffffep6
+  },
+  { // Entry 93
+    0x1.p0,
+    0x1.p7
+  },
+  { // Entry 94
+    0x1.000002p0,
+    0x1.000002p7
+  },
+  { // Entry 95
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 96
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 97
+    0x1.fffffep0,
+    0x1.fffffep127
+  },
+  { // Entry 98
+    -0x1.fffffep0,
+    -0x1.fffffep127
+  },
+  { // Entry 99
+    0x1.fffffcp0,
+    0x1.fffffcp127
+  },
+  { // Entry 100
+    -0x1.fffffcp0,
+    -0x1.fffffcp127
+  },
+  { // Entry 101
+    0x1.921fb6p0,
+    0x1.921fb6p1
+  },
+  { // Entry 102
+    -0x1.921fb6p0,
+    -0x1.921fb6p1
+  },
+  { // Entry 103
+    0x1.921fb6p0,
+    0x1.921fb6p0
+  },
+  { // Entry 104
+    -0x1.921fb6p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 105
+    0x1.000002p0,
+    0x1.000002p0
+  },
+  { // Entry 106
+    -0x1.000002p0,
+    -0x1.000002p0
+  },
+  { // Entry 107
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 108
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 109
+    0x1.fffffep0,
+    0x1.fffffep-1
+  },
+  { // Entry 110
+    -0x1.fffffep0,
+    -0x1.fffffep-1
+  },
+  { // Entry 111
+    0x1.921fb6p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 112
+    -0x1.921fb6p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 113
+    0x1.000002p0,
+    0x1.000002p-126
+  },
+  { // Entry 114
+    -0x1.000002p0,
+    -0x1.000002p-126
+  },
+  { // Entry 115
+    0x1.p0,
+    0x1.p-126
+  },
+  { // Entry 116
+    -0x1.p0,
+    -0x1.p-126
+  },
+  { // Entry 117
+    0x1.fffffcp0,
+    0x1.fffffcp-127
+  },
+  { // Entry 118
+    -0x1.fffffcp0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 119
+    0x1.fffff8p0,
+    0x1.fffff8p-127
+  },
+  { // Entry 120
+    -0x1.fffff8p0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.p-148
+  },
+  { // Entry 122
+    -0x1.p0,
+    -0x1.p-148
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.p-149
+  },
+  { // Entry 124
+    -0x1.p0,
+    -0x1.p-149
+  },
+  { // Entry 125
+    0.0,
+    0.0f
+  },
+  { // Entry 126
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_sin_intel_data.h b/tests/math_data/sin_intel_data.h
similarity index 100%
rename from tests/math_sin_intel_data.h
rename to tests/math_data/sin_intel_data.h
diff --git a/tests/math_sincos_intel_data.h b/tests/math_data/sincos_intel_data.h
similarity index 100%
rename from tests/math_sincos_intel_data.h
rename to tests/math_data/sincos_intel_data.h
diff --git a/tests/math_sincosf_intel_data.h b/tests/math_data/sincosf_intel_data.h
similarity index 100%
rename from tests/math_sincosf_intel_data.h
rename to tests/math_data/sincosf_intel_data.h
diff --git a/tests/math_sinf_intel_data.h b/tests/math_data/sinf_intel_data.h
similarity index 100%
rename from tests/math_sinf_intel_data.h
rename to tests/math_data/sinf_intel_data.h
diff --git a/tests/math_data/sinh_intel_data.h b/tests/math_data/sinh_intel_data.h
new file mode 100644
index 0000000..bebc192
--- /dev/null
+++ b/tests/math_data/sinh_intel_data.h
@@ -0,0 +1,3054 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_sinh_intel_data[] = {
+  { // Entry 0
+    -0x1.20000000000f30000000003d82666666p-21,
+    -0x1.2p-21
+  },
+  { // Entry 1
+    0x1.20000000000f30000000003d82666666p-21,
+    0x1.2p-21
+  },
+  { // Entry 2
+    -0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    -0x1.20b0659d8a7e1p9
+  },
+  { // Entry 3
+    0x1.f9225f7e3193c80156e29378c34b23d3p831,
+    0x1.20b0659d8a7e1p9
+  },
+  { // Entry 4
+    -0x1.653a9c0c08b00f3a2fd5ec9fb1093ff9p52,
+    -0x1.288f5c28f5c28p5
+  },
+  { // Entry 5
+    0x1.653a9c0c08b00f3a2fd5ec9fb1093ff9p52,
+    0x1.288f5c28f5c28p5
+  },
+  { // Entry 6
+    -0x1.45f775546a77d77fe6234ab5d4ab1036p-1,
+    -0x1.3333333333333p-1
+  },
+  { // Entry 7
+    0x1.45f775546a77d77fe6234ab5d4ab1036p-1,
+    0x1.3333333333333p-1
+  },
+  { // Entry 8
+    -0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    -0x1.3c640p9
+  },
+  { // Entry 9
+    0x1.e128d3a99c4b28216511a7ad98d106f0p911,
+    0x1.3c640p9
+  },
+  { // Entry 10
+    -0x1.41ab9d8bc0cbf81eac0e2bbbbbeab96cp-5,
+    -0x1.41967803312afp-5
+  },
+  { // Entry 11
+    0x1.41ab9d8bc0cbf81eac0e2bbbbbeab96cp-5,
+    0x1.41967803312afp-5
+  },
+  { // Entry 12
+    -0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    -0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 13
+    0x1.f5f62d444f24c3bee8aeb75a413b8101p941,
+    0x1.46cf1a4e8eff8p9
+  },
+  { // Entry 14
+    -0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    -0x1.4aa0d96719fc6p9
+  },
+  { // Entry 15
+    0x1.fd0d27f4cfe98801d15fa2d48e5a54c0p952,
+    0x1.4aa0d96719fc6p9
+  },
+  { // Entry 16
+    -0x1.f7667599728a17ff07667fe41510ac6cp13,
+    -0x1.4c2b291cfadd2p3
+  },
+  { // Entry 17
+    0x1.f7667599728a17ff07667fe41510ac6cp13,
+    0x1.4c2b291cfadd2p3
+  },
+  { // Entry 18
+    -0x1.eb34f0a92ee7280128c114f07d355776p958,
+    -0x1.4cb09e65eb930p9
+  },
+  { // Entry 19
+    0x1.eb34f0a92ee7280128c114f07d355776p958,
+    0x1.4cb09e65eb930p9
+  },
+  { // Entry 20
+    -0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    -0x1.4d5b56d5b55acp9
+  },
+  { // Entry 21
+    0x1.d2108e9aa1b124168960a67f1cb28b07p960,
+    0x1.4d5b56d5b55acp9
+  },
+  { // Entry 22
+    -0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    -0x1.50dc3739dde8ep9
+  },
+  { // Entry 23
+    0x1.f68d7cf30e0123c2164c1368d213f9b5p970,
+    0x1.50dc3739dde8ep9
+  },
+  { // Entry 24
+    -0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    -0x1.529994bb15795p9
+  },
+  { // Entry 25
+    0x1.fd799430443f0800ef2fcf2cd9da9697p975,
+    0x1.529994bb15795p9
+  },
+  { // Entry 26
+    -0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    -0x1.5cf9ace27d120p9
+  },
+  { // Entry 27
+    0x1.e7b36eb1f1e698017d905c91e25df616p1005,
+    0x1.5cf9ace27d120p9
+  },
+  { // Entry 28
+    -0x1.99d18edc5720a8018d0c8bfbf7d98f9ap1011,
+    -0x1.5ef7bdef7c2eep9
+  },
+  { // Entry 29
+    0x1.99d18edc5720a8018d0c8bfbf7d98f9ap1011,
+    0x1.5ef7bdef7c2eep9
+  },
+  { // Entry 30
+    -0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    -0x1.5fc2907bbfb53p9
+  },
+  { // Entry 31
+    0x1.f3ae6e6ad6cf33f952b8d7d26abcd946p1013,
+    0x1.5fc2907bbfb53p9
+  },
+  { // Entry 32
+    -0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    -0x1.62e42fefa39eap9
+  },
+  { // Entry 33
+    0x1.fffffffffeb2a1b0e263ac68076ed4e0p1022,
+    0x1.62e42fefa39eap9
+  },
+  { // Entry 34
+    -0x1.94f8e42c219097ffbf5323a28f7d715cp-2,
+    -0x1.8b1896d9e5343p-2
+  },
+  { // Entry 35
+    0x1.94f8e42c219097ffbf5323a28f7d715cp-2,
+    0x1.8b1896d9e5343p-2
+  },
+  { // Entry 36
+    -0x1.90p-1069,
+    -0x1.9p-1069
+  },
+  { // Entry 37
+    0x1.90p-1069,
+    0x1.9p-1069
+  },
+  { // Entry 38
+    -0x1.a45c4bfc4132c8e8dd4e44e918fef502p-2,
+    -0x1.995e6ee493fe5p-2
+  },
+  { // Entry 39
+    0x1.a45c4bfc4132c8e8dd4e44e918fef502p-2,
+    0x1.995e6ee493fe5p-2
+  },
+  { // Entry 40
+    -0x1.c7a103379809b38132350ca766cba44bp-1,
+    -0x1.9a495ea447852p-1
+  },
+  { // Entry 41
+    0x1.c7a103379809b38132350ca766cba44bp-1,
+    0x1.9a495ea447852p-1
+  },
+  { // Entry 42
+    -0x1.9bfa3403f8d457fffa246d880ef814f1p-5,
+    -0x1.9bcdcc408ced3p-5
+  },
+  { // Entry 43
+    0x1.9bfa3403f8d457fffa246d880ef814f1p-5,
+    0x1.9bcdcc408ced3p-5
+  },
+  { // Entry 44
+    -0x1.aa8c3d4cb5bd9ffffe5e559c563d669cp-5,
+    -0x1.aa5af545ae880p-5
+  },
+  { // Entry 45
+    0x1.aa8c3d4cb5bd9ffffe5e559c563d669cp-5,
+    0x1.aa5af545ae880p-5
+  },
+  { // Entry 46
+    -0x1.e17e32eb8e6ce8f6dad6a738fa5f0b8ap-2,
+    -0x1.d15037f2ebe3cp-2
+  },
+  { // Entry 47
+    0x1.e17e32eb8e6ce8f6dad6a738fa5f0b8ap-2,
+    0x1.d15037f2ebe3cp-2
+  },
+  { // Entry 48
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 49
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 50
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 51
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 52
+    0x1.000000000000100000000aaaaaaaaaaap-41,
+    0x1.0000000000001p-41
+  },
+  { // Entry 53
+    -0x1.000000000000100000000aaaaaaaaaaap-41,
+    -0x1.0000000000001p-41
+  },
+  { // Entry 54
+    0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    0x1.0000000000007p8
+  },
+  { // Entry 55
+    -0x1.41c7a8814c78683cdbc165597ca61d23p368,
+    -0x1.0000000000007p8
+  },
+  { // Entry 56
+    0x1.1f43febb6d5ed7f79073c9dea85050fep45,
+    0x1.0000000e0p5
+  },
+  { // Entry 57
+    -0x1.1f43febb6d5ed7f79073c9dea85050fep45,
+    -0x1.0000000e0p5
+  },
+  { // Entry 58
+    0x1.749ea5cf24c2a801014b24d9686ff306p10,
+    0x1.0000000ffe017p3
+  },
+  { // Entry 59
+    -0x1.749ea5cf24c2a801014b24d9686ff306p10,
+    -0x1.0000000ffe017p3
+  },
+  { // Entry 60
+    0x1.0f2ebe19aebbcffe11114fde20a8b25dp22,
+    0x1.0000001p4
+  },
+  { // Entry 61
+    -0x1.0f2ebe19aebbcffe11114fde20a8b25dp22,
+    -0x1.0000001p4
+  },
+  { // Entry 62
+    0x1.d03d0547eb5af7ff9287bfe9ef08d02cp1,
+    0x1.0000040p1
+  },
+  { // Entry 63
+    -0x1.d03d0547eb5af7ff9287bfe9ef08d02cp1,
+    -0x1.0000040p1
+  },
+  { // Entry 64
+    0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    0x1.0000202p9
+  },
+  { // Entry 65
+    -0x1.94dbdfbb66bc651ee76572119d9c1c4cp737,
+    -0x1.0000202p9
+  },
+  { // Entry 66
+    0x1.203fc65a034d07ffda891ef079ee632dp45,
+    0x1.00070p5
+  },
+  { // Entry 67
+    -0x1.203fc65a034d07ffda891ef079ee632dp45,
+    -0x1.00070p5
+  },
+  { // Entry 68
+    0x1.043203c63ca348000c2d50e004eab9dfp-3,
+    0x1.03801bba53d5fp-3
+  },
+  { // Entry 69
+    -0x1.043203c63ca348000c2d50e004eab9dfp-3,
+    -0x1.03801bba53d5fp-3
+  },
+  { // Entry 70
+    0x1.d9ceb6fb3af22800eba0709ab550eb83p4,
+    0x1.0539a9db00fb0p2
+  },
+  { // Entry 71
+    -0x1.d9ceb6fb3af22800eba0709ab550eb83p4,
+    -0x1.0539a9db00fb0p2
+  },
+  { // Entry 72
+    0x1.19d9db769b3073db5694464547980ab3p-1,
+    0x1.0d44121952313p-1
+  },
+  { // Entry 73
+    -0x1.19d9db769b3073db5694464547980ab3p-1,
+    -0x1.0d44121952313p-1
+  },
+  { // Entry 74
+    0x1.11aa874937f657fefeb22f10657675b2p-3,
+    0x1.10dbb163423cfp-3
+  },
+  { // Entry 75
+    -0x1.11aa874937f657fefeb22f10657675b2p-3,
+    -0x1.10dbb163423cfp-3
+  },
+  { // Entry 76
+    0x1.a4e4693413b9970755c15633af25f96bp399,
+    0x1.15c18de877563p8
+  },
+  { // Entry 77
+    -0x1.a4e4693413b9970755c15633af25f96bp399,
+    -0x1.15c18de877563p8
+  },
+  { // Entry 78
+    0x1.1fae3d9220dd280102c022b12bc3f6fep-2,
+    0x1.1c065802b26eap-2
+  },
+  { // Entry 79
+    -0x1.1fae3d9220dd280102c022b12bc3f6fep-2,
+    -0x1.1c065802b26eap-2
+  },
+  { // Entry 80
+    0x1.20000000000f30000000003d82666666p-21,
+    0x1.2p-21
+  },
+  { // Entry 81
+    -0x1.20000000000f30000000003d82666666p-21,
+    -0x1.2p-21
+  },
+  { // Entry 82
+    0x1.35a9257a5a1cb7fecfa291714fac9f89p-1,
+    0x1.25589e6453a79p-1
+  },
+  { // Entry 83
+    -0x1.35a9257a5a1cb7fecfa291714fac9f89p-1,
+    -0x1.25589e6453a79p-1
+  },
+  { // Entry 84
+    0x1.eaa521edf1bc28014602191ce618c05fp845,
+    0x1.2586ca9cf411bp9
+  },
+  { // Entry 85
+    -0x1.eaa521edf1bc28014602191ce618c05fp845,
+    -0x1.2586ca9cf411bp9
+  },
+  { // Entry 86
+    0x1.6a09e667f3bc9b61130bc056d478d834p25,
+    0x1.25e4f7b2737fap4
+  },
+  { // Entry 87
+    -0x1.6a09e667f3bc9b61130bc056d478d834p25,
+    -0x1.25e4f7b2737fap4
+  },
+  { // Entry 88
+    0x1.2a9bbf545f09f7fffc2fd473fc2f8a9ep-2,
+    0x1.2687ce7bd7353p-2
+  },
+  { // Entry 89
+    -0x1.2a9bbf545f09f7fffc2fd473fc2f8a9ep-2,
+    -0x1.2687ce7bd7353p-2
+  },
+  { // Entry 90
+    0x1.2e6ae008ae071731ab9829f451a64edcp-2,
+    0x1.2a2f795d6b514p-2
+  },
+  { // Entry 91
+    -0x1.2e6ae008ae071731ab9829f451a64edcp-2,
+    -0x1.2a2f795d6b514p-2
+  },
+  { // Entry 92
+    0x1.fffffffffff84dc369f81dfdbc383332p25,
+    0x1.2b708872320dep4
+  },
+  { // Entry 93
+    -0x1.fffffffffff84dc369f81dfdbc383332p25,
+    -0x1.2b708872320dep4
+  },
+  { // Entry 94
+    0x1.7c12b8d57fdcf7fffa9ce5e99a4163dep0,
+    0x1.2fac64a42ceefp0
+  },
+  { // Entry 95
+    -0x1.7c12b8d57fdcf7fffa9ce5e99a4163dep0,
+    -0x1.2fac64a42ceefp0
+  },
+  { // Entry 96
+    0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    0x1.2fe8bcd183299p9
+  },
+  { // Entry 97
+    -0x1.dc851a55686d48012add3c02a54cc4d9p875,
+    -0x1.2fe8bcd183299p9
+  },
+  { // Entry 98
+    0x1.42546737e09d68014ec9badd9df8fee3p-1,
+    0x1.30208b74d1760p-1
+  },
+  { // Entry 99
+    -0x1.42546737e09d68014ec9badd9df8fee3p-1,
+    -0x1.30208b74d1760p-1
+  },
+  { // Entry 100
+    0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    0x1.30a324d6033b5p9
+  },
+  { // Entry 101
+    -0x1.ff12f7296b0408017eaaf48fbf280399p877,
+    -0x1.30a324d6033b5p9
+  },
+  { // Entry 102
+    0x1.46c46118f79ad3e3a58cffe90ae6c228p-1,
+    0x1.33ep-1
+  },
+  { // Entry 103
+    -0x1.46c46118f79ad3e3a58cffe90ae6c228p-1,
+    -0x1.33ep-1
+  },
+  { // Entry 104
+    0x1.4715736c9497d3c2ba6fecc679c26499p-1,
+    0x1.342454787e0eap-1
+  },
+  { // Entry 105
+    -0x1.4715736c9497d3c2ba6fecc679c26499p-1,
+    -0x1.342454787e0eap-1
+  },
+  { // Entry 106
+    0x1.8b2e83486133082860f65d0b54a3ff4cp0,
+    0x1.380p0
+  },
+  { // Entry 107
+    -0x1.8b2e83486133082860f65d0b54a3ff4cp0,
+    -0x1.380p0
+  },
+  { // Entry 108
+    0x1.94743c1df51b480057352f3dbc3a206dp0,
+    0x1.3d0p0
+  },
+  { // Entry 109
+    -0x1.94743c1df51b480057352f3dbc3a206dp0,
+    -0x1.3d0p0
+  },
+  { // Entry 110
+    0x1.43f3767f52a3a8603144ec06b8fc89a2p-2,
+    0x1.3ec6f4738ef75p-2
+  },
+  { // Entry 111
+    -0x1.43f3767f52a3a8603144ec06b8fc89a2p-2,
+    -0x1.3ec6f4738ef75p-2
+  },
+  { // Entry 112
+    0x1.411bd68cf1f6682ad666958c437bc7d6p-5,
+    0x1.4106cd4f76086p-5
+  },
+  { // Entry 113
+    -0x1.411bd68cf1f6682ad666958c437bc7d6p-5,
+    -0x1.4106cd4f76086p-5
+  },
+  { // Entry 114
+    0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    0x1.42a565e456e04p9
+  },
+  { // Entry 115
+    -0x1.f1ef9c8a4fdae801b19f8e42eff2c4a8p929,
+    -0x1.42a565e456e04p9
+  },
+  { // Entry 116
+    0x1.59ae6cfb065053d12a7ee2829e50cbc0p-1,
+    0x1.43af5aa457830p-1
+  },
+  { // Entry 117
+    -0x1.59ae6cfb065053d12a7ee2829e50cbc0p-1,
+    -0x1.43af5aa457830p-1
+  },
+  { // Entry 118
+    0x1.5a16aa3594c9d3c64013364ec2c00447p-1,
+    0x1.4405baf340402p-1
+  },
+  { // Entry 119
+    -0x1.5a16aa3594c9d3c64013364ec2c00447p-1,
+    -0x1.4405baf340402p-1
+  },
+  { // Entry 120
+    0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    0x1.456bf23e02428p9
+  },
+  { // Entry 121
+    -0x1.f4ec44194b642801a4afd4c50633e8aap937,
+    -0x1.456bf23e02428p9
+  },
+  { // Entry 122
+    0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    0x1.45c1feef8086cp9
+  },
+  { // Entry 123
+    -0x1.ea91d9533b394801bf3d3ec8f88de568p938,
+    -0x1.45c1feef8086cp9
+  },
+  { // Entry 124
+    0x1.5c98a49e6503ac198ec2bf98d4df0ce2p-1,
+    0x1.4618fe408b57ep-1
+  },
+  { // Entry 125
+    -0x1.5c98a49e6503ac198ec2bf98d4df0ce2p-1,
+    -0x1.4618fe408b57ep-1
+  },
+  { // Entry 126
+    0x1.4f14e08c88501827cbe80379c7e7c8c3p-2,
+    0x1.495f61b2c806cp-2
+  },
+  { // Entry 127
+    -0x1.4f14e08c88501827cbe80379c7e7c8c3p-2,
+    -0x1.495f61b2c806cp-2
+  },
+  { // Entry 128
+    0x1.50000000006078000000084f22cccccdp-20,
+    0x1.5p-20
+  },
+  { // Entry 129
+    -0x1.50000000006078000000084f22cccccdp-20,
+    -0x1.5p-20
+  },
+  { // Entry 130
+    0x1.6e81c7d17d1df3beb45414ca53bc3f28p-1,
+    0x1.54c834c39835cp-1
+  },
+  { // Entry 131
+    -0x1.6e81c7d17d1df3beb45414ca53bc3f28p-1,
+    -0x1.54c834c39835cp-1
+  },
+  { // Entry 132
+    0x1.9548e9688fb2e800c466e7d893328f68p991,
+    0x1.5807dc787a5d5p9
+  },
+  { // Entry 133
+    -0x1.9548e9688fb2e800c466e7d893328f68p991,
+    -0x1.5807dc787a5d5p9
+  },
+  { // Entry 134
+    0x1.85442a2969ace4a71757c1cdd6ab1b82p1007,
+    0x1.5d8e43cd6785dp9
+  },
+  { // Entry 135
+    -0x1.85442a2969ace4a71757c1cdd6ab1b82p1007,
+    -0x1.5d8e43cd6785dp9
+  },
+  { // Entry 136
+    0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    0x1.5dadf5d1e452cp9
+  },
+  { // Entry 137
+    -0x1.f2a3c29fc6d723a63e349bbcd7894a8ap1007,
+    -0x1.5dadf5d1e452cp9
+  },
+  { // Entry 138
+    0x1.6487aa6e34cb57fefbc4f4ef7b7281efp-2,
+    0x1.5db17c4a60fe4p-2
+  },
+  { // Entry 139
+    -0x1.6487aa6e34cb57fefbc4f4ef7b7281efp-2,
+    -0x1.5db17c4a60fe4p-2
+  },
+  { // Entry 140
+    0x1.edcb14879613e80176087c1a76dec97cp1008,
+    0x1.5e056ed40e56ep9
+  },
+  { // Entry 141
+    -0x1.edcb14879613e80176087c1a76dec97cp1008,
+    -0x1.5e056ed40e56ep9
+  },
+  { // Entry 142
+    0x1.6093d5bf2580f00bcdc6c88ac35d2640p-6,
+    0x1.608cdeb3ec111p-6
+  },
+  { // Entry 143
+    -0x1.6093d5bf2580f00bcdc6c88ac35d2640p-6,
+    -0x1.608cdeb3ec111p-6
+  },
+  { // Entry 144
+    0x1.614e81af3113300dfbdf1ed60454760dp-6,
+    0x1.61477f8e69928p-6
+  },
+  { // Entry 145
+    -0x1.614e81af3113300dfbdf1ed60454760dp-6,
+    -0x1.61477f8e69928p-6
+  },
+  { // Entry 146
+    0x1.96faa872a06aa3003f5158de9c570302p1023,
+    0x1.631f86ac0611bp9
+  },
+  { // Entry 147
+    -0x1.96faa872a06aa3003f5158de9c570302p1023,
+    -0x1.631f86ac0611bp9
+  },
+  { // Entry 148
+    0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    0x1.632ba58eae071p9
+  },
+  { // Entry 149
+    -0x1.bf668fc6f4f9d31f753c408261bb02b4p1023,
+    -0x1.632ba58eae071p9
+  },
+  { // Entry 150
+    0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    0x1.633ce8fb9f771p9
+  },
+  { // Entry 151
+    -0x1.ffffffffbcd3ae595303e74abb3fd75dp1023,
+    -0x1.633ce8fb9f771p9
+  },
+  { // Entry 152
+    0x1.fffffffff093ae594ed7508a02429436p1023,
+    0x1.633ce8fb9f840p9
+  },
+  { // Entry 153
+    -0x1.fffffffff093ae594ed7508a02429436p1023,
+    -0x1.633ce8fb9f840p9
+  },
+  { // Entry 154
+    0x1.fffffffff713ae594eafc080a48289f9p1023,
+    0x1.633ce8fb9f85ap9
+  },
+  { // Entry 155
+    -0x1.fffffffff713ae594eafc080a48289f9p1023,
+    -0x1.633ce8fb9f85ap9
+  },
+  { // Entry 156
+    0x1.63ceae09cb498fefee897d9d09f0f101p-6,
+    0x1.63c7858c9e520p-6
+  },
+  { // Entry 157
+    -0x1.63ceae09cb498fefee897d9d09f0f101p-6,
+    -0x1.63c7858c9e520p-6
+  },
+  { // Entry 158
+    0x1.650506712af37ff54f81db8832a797e9p-6,
+    0x1.64fdcb29465a9p-6
+  },
+  { // Entry 159
+    -0x1.650506712af37ff54f81db8832a797e9p-6,
+    -0x1.64fdcb29465a9p-6
+  },
+  { // Entry 160
+    0x1.8465153de7c007fffdec1cebc40841f7p-1,
+    0x1.66666666d5da3p-1
+  },
+  { // Entry 161
+    -0x1.8465153de7c007fffdec1cebc40841f7p-1,
+    -0x1.66666666d5da3p-1
+  },
+  { // Entry 162
+    0x1.f2056a8752c0a54d0803a9f0c00baf5ep0,
+    0x1.6b4p0
+  },
+  { // Entry 163
+    -0x1.f2056a8752c0a54d0803a9f0c00baf5ep0,
+    -0x1.6b4p0
+  },
+  { // Entry 164
+    0x1.f54f8eaffc4348da8305aef164c3ba94p0,
+    0x1.6ccp0
+  },
+  { // Entry 165
+    -0x1.f54f8eaffc4348da8305aef164c3ba94p0,
+    -0x1.6ccp0
+  },
+  { // Entry 166
+    0x1.71e202c00c2319229a5b86f0f26cabb1p-7,
+    0x1.71ep-7
+  },
+  { // Entry 167
+    -0x1.71e202c00c2319229a5b86f0f26cabb1p-7,
+    -0x1.71ep-7
+  },
+  { // Entry 168
+    0x1.773253dd3f311874a2f0c80764abf42dp-8,
+    0x1.7731cd8b74641p-8
+  },
+  { // Entry 169
+    -0x1.773253dd3f311874a2f0c80764abf42dp-8,
+    -0x1.7731cd8b74641p-8
+  },
+  { // Entry 170
+    0x1.a08a89e90462985ff5cdbef5be2c143ep-1,
+    0x1.7c874423b4655p-1
+  },
+  { // Entry 171
+    -0x1.a08a89e90462985ff5cdbef5be2c143ep-1,
+    -0x1.7c874423b4655p-1
+  },
+  { // Entry 172
+    0x1.808fd7f5059e47fed3be0eaf1b9815bdp-4,
+    0x1.7fffc7fffffffp-4
+  },
+  { // Entry 173
+    -0x1.808fd7f5059e47fed3be0eaf1b9815bdp-4,
+    -0x1.7fffc7fffffffp-4
+  },
+  { // Entry 174
+    0x1.804bf5b40d34e7d143ae427670a1c115p-5,
+    0x1.8027e9757bf31p-5
+  },
+  { // Entry 175
+    -0x1.804bf5b40d34e7d143ae427670a1c115p-5,
+    -0x1.8027e9757bf31p-5
+  },
+  { // Entry 176
+    0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    0x1.820d92fc4b42ap8
+  },
+  { // Entry 177
+    -0x1.f0e3e5b6c17c02a799c306dbc1b1a8ecp555,
+    -0x1.820d92fc4b42ap8
+  },
+  { // Entry 178
+    0x1.88665ffaada937dd93491498f2ee9defp-5,
+    0x1.884p-5
+  },
+  { // Entry 179
+    -0x1.88665ffaada937dd93491498f2ee9defp-5,
+    -0x1.884p-5
+  },
+  { // Entry 180
+    0x1.b4698d92404057ff9724122622082863p-1,
+    0x1.8bcbf70469a4cp-1
+  },
+  { // Entry 181
+    -0x1.b4698d92404057ff9724122622082863p-1,
+    -0x1.8bcbf70469a4cp-1
+  },
+  { // Entry 182
+    0x1.f612c0c32a0c700d32addc4c6c2b76c3p7,
+    0x1.8e0p2
+  },
+  { // Entry 183
+    -0x1.f612c0c32a0c700d32addc4c6c2b76c3p7,
+    -0x1.8e0p2
+  },
+  { // Entry 184
+    0x1.bc98715aec56c731186b8ab8deb14510p-1,
+    0x1.920p-1
+  },
+  { // Entry 185
+    -0x1.bc98715aec56c731186b8ab8deb14510p-1,
+    -0x1.920p-1
+  },
+  { // Entry 186
+    0x1.94618fa9fe2ddce9a5820eacd73ea447p-8,
+    0x1.9460e77feba40p-8
+  },
+  { // Entry 187
+    -0x1.94618fa9fe2ddce9a5820eacd73ea447p-8,
+    -0x1.9460e77feba40p-8
+  },
+  { // Entry 188
+    0x1.c6b5d3ca60e64ffffe54e7a9d176a802p-1,
+    0x1.9999999a10d54p-1
+  },
+  { // Entry 189
+    -0x1.c6b5d3ca60e64ffffe54e7a9d176a802p-1,
+    -0x1.9999999a10d54p-1
+  },
+  { // Entry 190
+    0x1.9c560cd3fc44bffffe366df58ed96becp-3,
+    0x1.9999999a33ce2p-3
+  },
+  { // Entry 191
+    -0x1.9c560cd3fc44bffffe366df58ed96becp-3,
+    -0x1.9999999a33ce2p-3
+  },
+  { // Entry 192
+    0x1.9a48733871434800020cf29985e49f30p-4,
+    0x1.9999999a54528p-4
+  },
+  { // Entry 193
+    -0x1.9a48733871434800020cf29985e49f30p-4,
+    -0x1.9999999a54528p-4
+  },
+  { // Entry 194
+    0x1.c6b5d3cb11239800020efc8821633bdep-1,
+    0x1.9999999a949b7p-1
+  },
+  { // Entry 195
+    -0x1.c6b5d3cb11239800020efc8821633bdep-1,
+    -0x1.9999999a949b7p-1
+  },
+  { // Entry 196
+    0x1.9c560cd481e637fffe01fbfdad836d2fp-3,
+    0x1.9999999ab6ceap-3
+  },
+  { // Entry 197
+    -0x1.9c560cd481e637fffe01fbfdad836d2fp-3,
+    -0x1.9999999ab6ceap-3
+  },
+  { // Entry 198
+    0x1.9c560cd64ac02ffffe536624b3aa885fp-3,
+    0x1.9999999c76abep-3
+  },
+  { // Entry 199
+    -0x1.9c560cd64ac02ffffe536624b3aa885fp-3,
+    -0x1.9999999c76abep-3
+  },
+  { // Entry 200
+    0x1.9c560cd6ec5c70000171ee4afa616629p-3,
+    0x1.9999999d151a4p-3
+  },
+  { // Entry 201
+    -0x1.9c560cd6ec5c70000171ee4afa616629p-3,
+    -0x1.9999999d151a4p-3
+  },
+  { // Entry 202
+    0x1.a5573f0e20f1a905add879f99041019fp-2,
+    0x1.9a468b4ef44ffp-2
+  },
+  { // Entry 203
+    -0x1.a5573f0e20f1a905add879f99041019fp-2,
+    -0x1.9a468b4ef44ffp-2
+  },
+  { // Entry 204
+    0x1.ffffffffffed457a42e161456cf862b2p590,
+    0x1.9a57d76d152fcp8
+  },
+  { // Entry 205
+    -0x1.ffffffffffed457a42e161456cf862b2p590,
+    -0x1.9a57d76d152fcp8
+  },
+  { // Entry 206
+    0x1.aebdc6208c1248b2ffbba5f783b92a1bp-2,
+    0x1.a2f46ea5f9049p-2
+  },
+  { // Entry 207
+    -0x1.aebdc6208c1248b2ffbba5f783b92a1bp-2,
+    -0x1.a2f46ea5f9049p-2
+  },
+  { // Entry 208
+    0x1.d64a3c2bfdf088565dad6aa8d6e58f04p-1,
+    0x1.a5294a5294a50p-1
+  },
+  { // Entry 209
+    -0x1.d64a3c2bfdf088565dad6aa8d6e58f04p-1,
+    -0x1.a5294a5294a50p-1
+  },
+  { // Entry 210
+    0x1.b000000000cd080000001d316399999bp-20,
+    0x1.bp-20
+  },
+  { // Entry 211
+    -0x1.b000000000cd080000001d316399999bp-20,
+    -0x1.bp-20
+  },
+  { // Entry 212
+    0x1.b6206a36aff4e7f3be1967dee6c19c2dp-3,
+    0x1.b2da0d9913589p-3
+  },
+  { // Entry 213
+    -0x1.b6206a36aff4e7f3be1967dee6c19c2dp-3,
+    -0x1.b2da0d9913589p-3
+  },
+  { // Entry 214
+    0x1.bd28b272834a2ff3d79fb12e37a18714p-6,
+    0x1.bd1aae2323510p-6
+  },
+  { // Entry 215
+    -0x1.bd28b272834a2ff3d79fb12e37a18714p-6,
+    -0x1.bd1aae2323510p-6
+  },
+  { // Entry 216
+    0x1.f8c25081d25d19d0d73bf466555bef04p-1,
+    0x1.be2p-1
+  },
+  { // Entry 217
+    -0x1.f8c25081d25d19d0d73bf466555bef04p-1,
+    -0x1.be2p-1
+  },
+  { // Entry 218
+    0x1.cc8f25f94323284f6d6454d3f3699088p-2,
+    0x1.be4b949799901p-2
+  },
+  { // Entry 219
+    -0x1.cc8f25f94323284f6d6454d3f3699088p-2,
+    -0x1.be4b949799901p-2
+  },
+  { // Entry 220
+    0x1.068f1b6fd97a97ffc554f2db188f9117p4,
+    0x1.bef89775b5e88p1
+  },
+  { // Entry 221
+    -0x1.068f1b6fd97a97ffc554f2db188f9117p4,
+    -0x1.bef89775b5e88p1
+  },
+  { // Entry 222
+    0x1.ca73ad17d1f0afff8b6da0d520741b26p-4,
+    0x1.c98p-4
+  },
+  { // Entry 223
+    -0x1.ca73ad17d1f0afff8b6da0d520741b26p-4,
+    -0x1.c98p-4
+  },
+  { // Entry 224
+    0x1.742768cc82d3b80460f95c20f53171c3p1,
+    0x1.c9eca0f325b42p0
+  },
+  { // Entry 225
+    -0x1.742768cc82d3b80460f95c20f53171c3p1,
+    -0x1.c9eca0f325b42p0
+  },
+  { // Entry 226
+    0x1.dc0aa0025b62b7fe5b0c13b7cc65bbc6p-2,
+    0x1.cc6p-2
+  },
+  { // Entry 227
+    -0x1.dc0aa0025b62b7fe5b0c13b7cc65bbc6p-2,
+    -0x1.cc6p-2
+  },
+  { // Entry 228
+    0x1.06c9ccd626cd8800020eb9e544490f6ap0,
+    0x1.cccccccd69451p-1
+  },
+  { // Entry 229
+    -0x1.06c9ccd626cd8800020eb9e544490f6ap0,
+    -0x1.cccccccd69451p-1
+  },
+  { // Entry 230
+    0x1.d862eb5cde4b0800f5b46008a4384f2ep-5,
+    0x1.d82p-5
+  },
+  { // Entry 231
+    -0x1.d862eb5cde4b0800f5b46008a4384f2ep-5,
+    -0x1.d82p-5
+  },
+  { // Entry 232
+    0x1.7b150909141397ff00cd2cb5dcdfc798p344,
+    0x1.df0e8443492b4p7
+  },
+  { // Entry 233
+    -0x1.7b150909141397ff00cd2cb5dcdfc798p344,
+    -0x1.df0e8443492b4p7
+  },
+  { // Entry 234
+    0x1.f370cce952a62835ca29e12b2844ca82p-2,
+    0x1.e18p-2
+  },
+  { // Entry 235
+    -0x1.f370cce952a62835ca29e12b2844ca82p-2,
+    -0x1.e18p-2
+  },
+  { // Entry 236
+    0x1.e6123f12db92680282920746b67b9489p-6,
+    0x1.e60p-6
+  },
+  { // Entry 237
+    -0x1.e6123f12db92680282920746b67b9489p-6,
+    -0x1.e60p-6
+  },
+  { // Entry 238
+    0x1.fc59700f23fc880595b286d94cb1161dp-2,
+    0x1.e97e4ca09cde7p-2
+  },
+  { // Entry 239
+    -0x1.fc59700f23fc880595b286d94cb1161dp-2,
+    -0x1.e97e4ca09cde7p-2
+  },
+  { // Entry 240
+    0x1.a8a3582361d82800005ec0718a5e8e7cp1,
+    0x1.ea11b1afdc907p0
+  },
+  { // Entry 241
+    -0x1.a8a3582361d82800005ec0718a5e8e7cp1,
+    -0x1.ea11b1afdc907p0
+  },
+  { // Entry 242
+    0x1.f4592b2dde8cf3813b817358e271e980p-3,
+    0x1.ef8p-3
+  },
+  { // Entry 243
+    -0x1.f4592b2dde8cf3813b817358e271e980p-3,
+    -0x1.ef8p-3
+  },
+  { // Entry 244
+    0x1.48f609e7b6aecf059a4b8c484c3bc435p21,
+    0x1.effffffffffffp3
+  },
+  { // Entry 245
+    -0x1.48f609e7b6aecf059a4b8c484c3bc435p21,
+    -0x1.effffffffffffp3
+  },
+  { // Entry 246
+    0x1.dbca9263f840fca48450e408fa36b56bp177,
+    0x1.effffffffffffp6
+  },
+  { // Entry 247
+    -0x1.dbca9263f840fca48450e408fa36b56bp177,
+    -0x1.effffffffffffp6
+  },
+  { // Entry 248
+    0x1.d3764167d84c26146f109714eda9a19ep715,
+    0x1.f0e540ea02272p8
+  },
+  { // Entry 249
+    -0x1.d3764167d84c26146f109714eda9a19ep715,
+    -0x1.f0e540ea02272p8
+  },
+  { // Entry 250
+    0x1.f44f7cd78c0c8d0cfdd38268b4c1b21ap-5,
+    0x1.f3fffffffffffp-5
+  },
+  { // Entry 251
+    -0x1.f44f7cd78c0c8d0cfdd38268b4c1b21ap-5,
+    -0x1.f3fffffffffffp-5
+  },
+  { // Entry 252
+    0x1.f4e4fe44a20e73bbcddcba0e9c46e803p-7,
+    0x1.f4ep-7
+  },
+  { // Entry 253
+    -0x1.f4e4fe44a20e73bbcddcba0e9c46e803p-7,
+    -0x1.f4ep-7
+  },
+  { // Entry 254
+    0x1.f4fd444ef4c02273e0c0b56c3b6b18f4p-11,
+    0x1.f4fd3f4fd3f41p-11
+  },
+  { // Entry 255
+    -0x1.f4fd444ef4c02273e0c0b56c3b6b18f4p-11,
+    -0x1.f4fd3f4fd3f41p-11
+  },
+  { // Entry 256
+    0x1.f776c257a56b780187bf905e80418279p-9,
+    0x1.f7767134f4c72p-9
+  },
+  { // Entry 257
+    -0x1.f776c257a56b780187bf905e80418279p-9,
+    -0x1.f7767134f4c72p-9
+  },
+  { // Entry 258
+    0x1.f78e0512e112b1c915f33b6d0094cbdfp-11,
+    0x1.f78dfffffffffp-11
+  },
+  { // Entry 259
+    -0x1.f78e0512e112b1c915f33b6d0094cbdfp-11,
+    -0x1.f78dfffffffffp-11
+  },
+  { // Entry 260
+    0x1.fd1a4703ffc8e2c09ee2d3142d879d53p-3,
+    0x1.f7fffffffffffp-3
+  },
+  { // Entry 261
+    -0x1.fd1a4703ffc8e2c09ee2d3142d879d53p-3,
+    -0x1.f7fffffffffffp-3
+  },
+  { // Entry 262
+    0x1.fd2b1321689993d9e7a4f5cc42e417e0p-3,
+    0x1.f8104d180ef13p-3
+  },
+  { // Entry 263
+    -0x1.fd2b1321689993d9e7a4f5cc42e417e0p-3,
+    -0x1.f8104d180ef13p-3
+  },
+  { // Entry 264
+    0x1.fa8247c8342301fdbf919432600eef6bp-11,
+    0x1.fa82429e54867p-11
+  },
+  { // Entry 265
+    -0x1.fa8247c8342301fdbf919432600eef6bp-11,
+    -0x1.fa82429e54867p-11
+  },
+  { // Entry 266
+    0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    0x1.fdfffffffffffp5
+  },
+  { // Entry 267
+    -0x1.f617a27e250ce1b06488e5167c0849a8p90,
+    -0x1.fdfffffffffffp5
+  },
+  { // Entry 268
+    0x1.fef54cde11851d4db7938ee57e080486p-7,
+    0x1.feeffffffffffp-7
+  },
+  { // Entry 269
+    -0x1.fef54cde11851d4db7938ee57e080486p-7,
+    -0x1.feeffffffffffp-7
+  },
+  { // Entry 270
+    0x1.0a8ddcf177d1eb7da9052d4b680c93e4p-1,
+    0x1.ff8ffffffffffp-2
+  },
+  { // Entry 271
+    -0x1.0a8ddcf177d1eb7da9052d4b680c93e4p-1,
+    -0x1.ff8ffffffffffp-2
+  },
+  { // Entry 272
+    0x1.ffb5499b99f503b876c9233146b88610p-6,
+    0x1.ff9ffffffffffp-6
+  },
+  { // Entry 273
+    -0x1.ffb5499b99f503b876c9233146b88610p-6,
+    -0x1.ff9ffffffffffp-6
+  },
+  { // Entry 274
+    0x1.ffd00553d57d8679faafbb417929037bp-11,
+    0x1.ffcffffffffffp-11
+  },
+  { // Entry 275
+    -0x1.ffd00553d57d8679faafbb417929037bp-11,
+    -0x1.ffcffffffffffp-11
+  },
+  { // Entry 276
+    0x1.738796c76ddd11a4fad67bda6a85c0a3p10,
+    0x1.ffcffffffffffp2
+  },
+  { // Entry 277
+    -0x1.738796c76ddd11a4fad67bda6a85c0a3p10,
+    -0x1.ffcffffffffffp2
+  },
+  { // Entry 278
+    0x1.3fd752cfca481ff79679f71c8aad6234p91,
+    0x1.ffeffffffffffp5
+  },
+  { // Entry 279
+    -0x1.3fd752cfca481ff79679f71c8aad6234p91,
+    -0x1.ffeffffffffffp5
+  },
+  { // Entry 280
+    0x1.fffc1154d51a88ed085860dce45cd0f6p-10,
+    0x1.fffbfbfffffffp-10
+  },
+  { // Entry 281
+    -0x1.fffc1154d51a88ed085860dce45cd0f6p-10,
+    -0x1.fffbfbfffffffp-10
+  },
+  { // Entry 282
+    0x1.0acb07d19f2eec122a06e05f2c4a0de4p-1,
+    0x1.fffc7ffffffffp-2
+  },
+  { // Entry 283
+    -0x1.0acb07d19f2eec122a06e05f2c4a0de4p-1,
+    -0x1.fffc7ffffffffp-2
+  },
+  { // Entry 284
+    0x1.00a9094ee88097ff3d5673552bc2eab6p-3,
+    0x1.fffc7ffffffffp-4
+  },
+  { // Entry 285
+    -0x1.00a9094ee88097ff3d5673552bc2eab6p-3,
+    -0x1.fffc7ffffffffp-4
+  },
+  { // Entry 286
+    0x1.7495e977202177ec68508f6f5a5b9165p10,
+    0x1.fffe7ffffffffp2
+  },
+  { // Entry 287
+    -0x1.7495e977202177ec68508f6f5a5b9165p10,
+    -0x1.fffe7ffffffffp2
+  },
+  { // Entry 288
+    0x1.b4a0165d618bc7fe4fd5aa6fcac302c1p4,
+    0x1.fffefffffffffp1
+  },
+  { // Entry 289
+    -0x1.b4a0165d618bc7fe4fd5aa6fcac302c1p4,
+    -0x1.fffefffffffffp1
+  },
+  { // Entry 290
+    0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    0x1.fffffdfffffffp6
+  },
+  { // Entry 291
+    -0x1.95e4816b60a8d769724b586e4deb3b1bp183,
+    -0x1.fffffdfffffffp6
+  },
+  { // Entry 292
+    0x1.1f43fcc441800800fcf1d836d2c62f72p45,
+    0x1.fffffffff97d6p4
+  },
+  { // Entry 293
+    -0x1.1f43fcc441800800fcf1d836d2c62f72p45,
+    -0x1.fffffffff97d6p4
+  },
+  { // Entry 294
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 295
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 296
+    0x1.9476504ba82057f69310608c30e76cebp737,
+    0x1.ffffffffffffep8
+  },
+  { // Entry 297
+    -0x1.9476504ba82057f69310608c30e76cebp737,
+    -0x1.ffffffffffffep8
+  },
+  { // Entry 298
+    0.0,
+    0.0
+  },
+  { // Entry 299
+    0x1.24d1fdb0fdc49fa1ed2d33be6d840c75p-4,
+    0x1.2492492492492p-4
+  },
+  { // Entry 300
+    -0x1.24d1fdb0fdc49fa1ed2d33be6d840c75p-4,
+    -0x1.2492492492492p-4
+  },
+  { // Entry 301
+    0x1.25914d4754aeca5885ba953dbac88d8fp-3,
+    0x1.2492492492492p-3
+  },
+  { // Entry 302
+    -0x1.25914d4754aeca5885ba953dbac88d8fp-3,
+    -0x1.2492492492492p-3
+  },
+  { // Entry 303
+    0x1.ba3934de293068e82220c3704c5750b7p-3,
+    0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 304
+    -0x1.ba3934de293068e82220c3704c5750b7p-3,
+    -0x1.b6db6db6db6dbp-3
+  },
+  { // Entry 305
+    0x1.28917a35f59b8990911b05edbc6f6ba1p-2,
+    0x1.2492492492492p-2
+  },
+  { // Entry 306
+    -0x1.28917a35f59b8990911b05edbc6f6ba1p-2,
+    -0x1.2492492492492p-2
+  },
+  { // Entry 307
+    0x1.7589dee6de0a2ec648852490e9ae54e2p-2,
+    0x1.6db6db6db6db6p-2
+  },
+  { // Entry 308
+    -0x1.7589dee6de0a2ec648852490e9ae54e2p-2,
+    -0x1.6db6db6db6db6p-2
+  },
+  { // Entry 309
+    0x1.c46a5bcd3c2c368c2591b8bba7e24256p-2,
+    0x1.b6db6db6db6dap-2
+  },
+  { // Entry 310
+    -0x1.c46a5bcd3c2c368c2591b8bba7e24256p-2,
+    -0x1.b6db6db6db6dap-2
+  },
+  { // Entry 311
+    0x1.0acd00fe63b95a9896032c78de2323c6p-1,
+    0x1.ffffffffffffep-2
+  },
+  { // Entry 312
+    -0x1.0acd00fe63b95a9896032c78de2323c6p-1,
+    -0x1.ffffffffffffep-2
+  },
+  { // Entry 313
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.0p-1
+  },
+  { // Entry 314
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.0p-1
+  },
+  { // Entry 315
+    0x1.34c1737f26250058df17aa0da89aa5fcp-1,
+    0x1.2492492492492p-1
+  },
+  { // Entry 316
+    -0x1.34c1737f26250058df17aa0da89aa5fcp-1,
+    -0x1.2492492492492p-1
+  },
+  { // Entry 317
+    0x1.604957b6e9223ab9f0acd5cd087d9d4bp-1,
+    0x1.4924924924924p-1
+  },
+  { // Entry 318
+    -0x1.604957b6e9223ab9f0acd5cd087d9d4bp-1,
+    -0x1.4924924924924p-1
+  },
+  { // Entry 319
+    0x1.8d9d8f1f9ecb929e09103f190149433dp-1,
+    0x1.6db6db6db6db6p-1
+  },
+  { // Entry 320
+    -0x1.8d9d8f1f9ecb929e09103f190149433dp-1,
+    -0x1.6db6db6db6db6p-1
+  },
+  { // Entry 321
+    0x1.bcf954b2503820857f4dbefa036f8e5ep-1,
+    0x1.9249249249248p-1
+  },
+  { // Entry 322
+    -0x1.bcf954b2503820857f4dbefa036f8e5ep-1,
+    -0x1.9249249249248p-1
+  },
+  { // Entry 323
+    0x1.ee9a8a4c3c72bcabcb7b2924d314efa2p-1,
+    0x1.b6db6db6db6dap-1
+  },
+  { // Entry 324
+    -0x1.ee9a8a4c3c72bcabcb7b2924d314efa2p-1,
+    -0x1.b6db6db6db6dap-1
+  },
+  { // Entry 325
+    0x1.116104c5878d4cf53fe2c1f3896ec672p0,
+    0x1.db6db6db6db6cp-1
+  },
+  { // Entry 326
+    -0x1.116104c5878d4cf53fe2c1f3896ec672p0,
+    -0x1.db6db6db6db6cp-1
+  },
+  { // Entry 327
+    0x1.2cd9fc44eb980cf78cf76e89b69a3e88p0,
+    0x1.ffffffffffffep-1
+  },
+  { // Entry 328
+    -0x1.2cd9fc44eb980cf78cf76e89b69a3e88p0,
+    -0x1.ffffffffffffep-1
+  },
+  { // Entry 329
+    0.0,
+    0.0
+  },
+  { // Entry 330
+    0x1.18e1e0472274e67654d0f855c36e861dp-6,
+    0x1.18de5ab277f45p-6
+  },
+  { // Entry 331
+    -0x1.18e1e0472274e67654d0f855c36e861dp-6,
+    -0x1.18de5ab277f45p-6
+  },
+  { // Entry 332
+    0x1.18ec712dd49a7583cfe81c5dccfd99b4p-5,
+    0x1.18de5ab277f45p-5
+  },
+  { // Entry 333
+    -0x1.18ec712dd49a7583cfe81c5dccfd99b4p-5,
+    -0x1.18de5ab277f45p-5
+  },
+  { // Entry 334
+    0x1.a57d14d0fcc06c297b511eb105c39b51p-5,
+    0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 335
+    -0x1.a57d14d0fcc06c297b511eb105c39b51p-5,
+    -0x1.a54d880bb3ee8p-5
+  },
+  { // Entry 336
+    0x1.1916b72b2648d65f042e701b14a371ddp-4,
+    0x1.18de5ab277f45p-4
+  },
+  { // Entry 337
+    -0x1.1916b72b2648d65f042e701b14a371ddp-4,
+    -0x1.18de5ab277f45p-4
+  },
+  { // Entry 338
+    0x1.5f8409b4e2d18ada55848296f71484b2p-4,
+    0x1.5f15f15f15f16p-4
+  },
+  { // Entry 339
+    -0x1.5f8409b4e2d18ada55848296f71484b2p-4,
+    -0x1.5f15f15f15f16p-4
+  },
+  { // Entry 340
+    0x1.a60bce73024b0ef37175d31aa5a941e6p-4,
+    0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 341
+    -0x1.a60bce73024b0ef37175d31aa5a941e6p-4,
+    -0x1.a54d880bb3ee7p-4
+  },
+  { // Entry 342
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 343
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 344
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 345
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 346
+    0x1.02243ce0549f980dc7c7d32c56687b61p-3,
+    0x1.01767dce434aap-3
+  },
+  { // Entry 347
+    -0x1.02243ce0549f980dc7c7d32c56687b61p-3,
+    -0x1.01767dce434aap-3
+  },
+  { // Entry 348
+    0x1.0df0f841fd4a69998703d2ffbf0e1544p-3,
+    0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 349
+    -0x1.0df0f841fd4a69998703d2ffbf0e1544p-3,
+    -0x1.0d2a6c405d9f8p-3
+  },
+  { // Entry 350
+    0x1.19bff54d4d1ca252438bfcad4485bbeep-3,
+    0x1.18de5ab277f46p-3
+  },
+  { // Entry 351
+    -0x1.19bff54d4d1ca252438bfcad4485bbeep-3,
+    -0x1.18de5ab277f46p-3
+  },
+  { // Entry 352
+    0x1.25914d4754aeeaac41a8543c0e5f84bfp-3,
+    0x1.2492492492494p-3
+  },
+  { // Entry 353
+    -0x1.25914d4754aeeaac41a8543c0e5f84bfp-3,
+    -0x1.2492492492494p-3
+  },
+  { // Entry 354
+    0x1.3165197a2ed9cb0dc90f9bb136a99057p-3,
+    0x1.30463796ac9e2p-3
+  },
+  { // Entry 355
+    -0x1.3165197a2ed9cb0dc90f9bb136a99057p-3,
+    -0x1.30463796ac9e2p-3
+  },
+  { // Entry 356
+    0x1.3d3b733536d3f9e48c1626776c18450fp-3,
+    0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 357
+    -0x1.3d3b733536d3f9e48c1626776c18450fp-3,
+    -0x1.3bfa2608c6f30p-3
+  },
+  { // Entry 358
+    0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 359
+    -0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 360
+    0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    0x1.47ae147ae147bp-3
+  },
+  { // Entry 361
+    -0x1.491473cd3e5bb6011680e1c412b75226p-3,
+    -0x1.47ae147ae147bp-3
+  },
+  { // Entry 362
+    0x1.227b2f27e6efe03d72b2c311d29c7884p-2,
+    0x1.1eb851eb851ecp-2
+  },
+  { // Entry 363
+    -0x1.227b2f27e6efe03d72b2c311d29c7884p-2,
+    -0x1.1eb851eb851ecp-2
+  },
+  { // Entry 364
+    0x1.a49c41f850ed2680ee94da3183c89a52p-2,
+    0x1.999999999999ap-2
+  },
+  { // Entry 365
+    -0x1.a49c41f850ed2680ee94da3183c89a52p-2,
+    -0x1.999999999999ap-2
+  },
+  { // Entry 366
+    0x1.1666dd8c17ac9986d3cd4018364fc2ecp-1,
+    0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 367
+    -0x1.1666dd8c17ac9986d3cd4018364fc2ecp-1,
+    -0x1.0a3d70a3d70a4p-1
+  },
+  { // Entry 368
+    0x1.5e832275691f29c754a69f08a0bda060p-1,
+    0x1.47ae147ae147bp-1
+  },
+  { // Entry 369
+    -0x1.5e832275691f29c754a69f08a0bda060p-1,
+    -0x1.47ae147ae147bp-1
+  },
+  { // Entry 370
+    0x1.abad155b6751a697130d8faafe9d512cp-1,
+    0x1.851eb851eb852p-1
+  },
+  { // Entry 371
+    -0x1.abad155b6751a697130d8faafe9d512cp-1,
+    -0x1.851eb851eb852p-1
+  },
+  { // Entry 372
+    0x1.ff0182a062c855926fe6373f9b3afd58p-1,
+    0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 373
+    -0x1.ff0182a062c855926fe6373f9b3afd58p-1,
+    -0x1.c28f5c28f5c29p-1
+  },
+  { // Entry 374
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 375
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 376
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 377
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 378
+    0x1.c034a7cd6ce9ade4f611fdd05d109cf6p7,
+    0x1.86bc88cbf1b67p2
+  },
+  { // Entry 379
+    -0x1.c034a7cd6ce9ade4f611fdd05d109cf6p7,
+    -0x1.86bc88cbf1b67p2
+  },
+  { // Entry 380
+    0x1.20af6cb9859eb23e91e63c28d18b0d0ap15,
+    0x1.66bc88cbf1b67p3
+  },
+  { // Entry 381
+    -0x1.20af6cb9859eb23e91e63c28d18b0d0ap15,
+    -0x1.66bc88cbf1b67p3
+  },
+  { // Entry 382
+    0x1.73e096cf57afce7adf9f1b2a216a5db5p22,
+    0x1.050d6698f548dp4
+  },
+  { // Entry 383
+    -0x1.73e096cf57afce7adf9f1b2a216a5db5p22,
+    -0x1.050d6698f548dp4
+  },
+  { // Entry 384
+    0x1.df0b13a84513e2ceb180507c54c5b904p29,
+    0x1.56bc88cbf1b67p4
+  },
+  { // Entry 385
+    -0x1.df0b13a84513e2ceb180507c54c5b904p29,
+    -0x1.56bc88cbf1b67p4
+  },
+  { // Entry 386
+    0x1.348bc1e018bc593ce2f9d1bc0f37e14fp37,
+    0x1.a86baafeee241p4
+  },
+  { // Entry 387
+    -0x1.348bc1e018bc593ce2f9d1bc0f37e14fp37,
+    -0x1.a86baafeee241p4
+  },
+  { // Entry 388
+    0x1.8d761a3398942448ea796c65748a869ep44,
+    0x1.fa1acd31ea91bp4
+  },
+  { // Entry 389
+    -0x1.8d761a3398942448ea796c65748a869ep44,
+    -0x1.fa1acd31ea91bp4
+  },
+  { // Entry 390
+    0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 391
+    -0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 392
+    0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 393
+    -0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 394
+    0x1.fffffffdffffca86c389578647f59234p14,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 395
+    -0x1.fffffffdffffca86c389578647f59234p14,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 396
+    0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 397
+    -0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 398
+    0x1.fffdffffffff6542c70828449eb21cd0p6,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 399
+    -0x1.fffdffffffff6542c70828449eb21cd0p6,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 400
+    0x1.fffdffffffffe5434708284488030bf1p6,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 401
+    -0x1.fffdffffffffe5434708284488030bf1p6,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 402
+    0x1.fffe000000006543c70828449153db11p6,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 403
+    -0x1.fffe000000006543c70828449153db11p6,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 404
+    0x1.fdffffffffffb254529345a3261b51eep2,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 405
+    -0x1.fdffffffffffb254529345a3261b51eep2,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 406
+    0x1.fdfffffffffff294529345a3207533d4p2,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 407
+    -0x1.fdfffffffffff294529345a3207533d4p2,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 408
+    0x1.fe000000000032d4529345a322c715bap2,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 409
+    -0x1.fe000000000032d4529345a322c715bap2,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 410
+    0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 411
+    -0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 412
+    0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 413
+    -0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 414
+    0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 415
+    -0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 416
+    0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 417
+    -0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 418
+    0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 419
+    -0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 420
+    0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 421
+    -0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 422
+    0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 423
+    -0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 424
+    0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 425
+    -0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 426
+    0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 427
+    -0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 428
+    0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 429
+    -0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 430
+    0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 431
+    -0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 432
+    0x1.64ab8f61134fac828131bf352af58253p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 433
+    -0x1.64ab8f61134fac828131bf352af58253p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 434
+    0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 435
+    -0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 436
+    0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 437
+    -0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 438
+    0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 439
+    -0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 440
+    0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 441
+    -0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 442
+    0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 443
+    -0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 444
+    0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 445
+    -0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 446
+    0x1.62eb4abcc5a7fb2748b0114da83216c8p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 447
+    -0x1.62eb4abcc5a7fb2748b0114da83216c8p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 448
+    0x1.62eb4abcc5a80b283eb077a1b2694ed2p-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 449
+    -0x1.62eb4abcc5a80b283eb077a1b2694ed2p-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 450
+    0x1.62eb4abcc5a81b2934b0ddf5bca09d0bp-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 451
+    -0x1.62eb4abcc5a81b2934b0ddf5bca09d0bp-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 452
+    -0x1.000000000000ca85c3898cffd1be6e61p31,
+    -0x1.62e42fefa39f0p4
+  },
+  { // Entry 453
+    0x1.000000000000ca85c3898cffd1be6e61p31,
+    0x1.62e42fefa39f0p4
+  },
+  { // Entry 454
+    -0x1.ffffffffffff950b871319ff0e6d55b0p30,
+    -0x1.62e42fefa39efp4
+  },
+  { // Entry 455
+    0x1.ffffffffffff950b871319ff0e6d55b0p30,
+    0x1.62e42fefa39efp4
+  },
+  { // Entry 456
+    -0x1.fffffffffffd950b87131a00795dce9dp30,
+    -0x1.62e42fefa39eep4
+  },
+  { // Entry 457
+    0x1.fffffffffffd950b87131a00795dce9dp30,
+    0x1.62e42fefa39eep4
+  },
+  { // Entry 458
+    -0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    -0x1.62e42fefa39f0p3
+  },
+  { // Entry 459
+    0x1.fffffffe0000ca86c38a57866d38f3f8p14,
+    0x1.62e42fefa39f0p3
+  },
+  { // Entry 460
+    -0x1.fffffffdffffca86c389578647f59234p14,
+    -0x1.62e42fefa39efp3
+  },
+  { // Entry 461
+    0x1.fffffffdffffca86c389578647f59234p14,
+    0x1.62e42fefa39efp3
+  },
+  { // Entry 462
+    -0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    -0x1.62e42fefa39eep3
+  },
+  { // Entry 463
+    0x1.fffffffdfffeca86c3885786a2b2306fp14,
+    0x1.62e42fefa39eep3
+  },
+  { // Entry 464
+    -0x1.fffe000000006543c70828449153db11p6,
+    -0x1.62e42fefa39f0p2
+  },
+  { // Entry 465
+    0x1.fffe000000006543c70828449153db11p6,
+    0x1.62e42fefa39f0p2
+  },
+  { // Entry 466
+    -0x1.fffdffffffffe5434708284488030bf1p6,
+    -0x1.62e42fefa39efp2
+  },
+  { // Entry 467
+    0x1.fffdffffffffe5434708284488030bf1p6,
+    0x1.62e42fefa39efp2
+  },
+  { // Entry 468
+    -0x1.fffdffffffff6542c70828449eb21cd0p6,
+    -0x1.62e42fefa39eep2
+  },
+  { // Entry 469
+    0x1.fffdffffffff6542c70828449eb21cd0p6,
+    0x1.62e42fefa39eep2
+  },
+  { // Entry 470
+    -0x1.fe000000000032d4529345a322c715bap2,
+    -0x1.62e42fefa39f0p1
+  },
+  { // Entry 471
+    0x1.fe000000000032d4529345a322c715bap2,
+    0x1.62e42fefa39f0p1
+  },
+  { // Entry 472
+    -0x1.fdfffffffffff294529345a3207533d4p2,
+    -0x1.62e42fefa39efp1
+  },
+  { // Entry 473
+    0x1.fdfffffffffff294529345a3207533d4p2,
+    0x1.62e42fefa39efp1
+  },
+  { // Entry 474
+    -0x1.fdffffffffffb254529345a3261b51eep2,
+    -0x1.62e42fefa39eep1
+  },
+  { // Entry 475
+    0x1.fdffffffffffb254529345a3261b51eep2,
+    0x1.62e42fefa39eep1
+  },
+  { // Entry 476
+    -0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    -0x1.62e42fefa39f0p0
+  },
+  { // Entry 477
+    0x1.e000000000001ae5e5f844b9efcd9cfbp0,
+    0x1.62e42fefa39f0p0
+  },
+  { // Entry 478
+    -0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    -0x1.62e42fefa39efp0
+  },
+  { // Entry 479
+    0x1.dffffffffffff8e5e5f844b9ef41e04cp0,
+    0x1.62e42fefa39efp0
+  },
+  { // Entry 480
+    -0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    -0x1.62e42fefa39eep0
+  },
+  { // Entry 481
+    0x1.dfffffffffffd6e5e5f844b9f096239ep0,
+    0x1.62e42fefa39eep0
+  },
+  { // Entry 482
+    -0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 483
+    0x1.8000000000000fd28746bf03f63ea1f7p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 484
+    -0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 485
+    0x1.7ffffffffffffbd28746bf03f622af6ep-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 486
+    -0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 487
+    0x1.7fffffffffffe7d28746bf03f666bce4p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 488
+    -0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 489
+    0x1.6a09e667f3bcd675afbd4bbe3407a91bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 490
+    -0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 491
+    0x1.6a09e667f3bcc57d38f06c515a94aa60p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 492
+    -0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 493
+    0x1.6a09e667f3bcb484c2238ce481384c44p-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 494
+    -0x1.64ab8f61134fac828131bf352af58253p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 495
+    0x1.64ab8f61134fac828131bf352af58253p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 496
+    -0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 497
+    0x1.64ab8f61134f9c44da464fa4b5054cc6p-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 498
+    -0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 499
+    0x1.64ab8f61134f8c07335ae0143f1aa9e7p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 500
+    -0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 501
+    0x1.6355e6ffbf9bb1add4c3c1aa0b006418p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 502
+    -0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 503
+    0x1.6355e6ffbf9ba19e726e44182bc81666p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 504
+    -0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 505
+    0x1.6355e6ffbf9b918f1018c6864c912c0bp-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 506
+    -0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 507
+    0x1.63009ba740a2ac7c7621e68d479279b3p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 508
+    -0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 509
+    0x1.63009ba740a29c789e02c0a4897fafa4p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 510
+    -0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 511
+    0x1.63009ba740a28c74c5e39abbcb6d3e54p-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 512
+    0x1.bfeb3206958461e0cd949b740397374bp262,
+    0x1.6db6db6db6db7p7
+  },
+  { // Entry 513
+    -0x1.bfeb3206958461e0cd949b740397374bp262,
+    -0x1.6db6db6db6db7p7
+  },
+  { // Entry 514
+    0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    0x1.db6db6db6db6ep7
+  },
+  { // Entry 515
+    -0x1.ee4adffc4816c196cc85c579b49b713cp341,
+    -0x1.db6db6db6db6ep7
+  },
+  { // Entry 516
+    0x1.10bbd304e4d53317191db80168f41e88p421,
+    0x1.2492492492492p8
+  },
+  { // Entry 517
+    -0x1.10bbd304e4d53317191db80168f41e88p421,
+    -0x1.2492492492492p8
+  },
+  { // Entry 518
+    0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    0x1.5b6db6db6db6dp8
+  },
+  { // Entry 519
+    -0x1.2cf8621aa3eacbce3c5c6aac7a52e872p500,
+    -0x1.5b6db6db6db6dp8
+  },
+  { // Entry 520
+    0x1.4c21539572c19b59fc629129d307d9b1p579,
+    0x1.9249249249248p8
+  },
+  { // Entry 521
+    -0x1.4c21539572c19b59fc629129d307d9b1p579,
+    -0x1.9249249249248p8
+  },
+  { // Entry 522
+    0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    0x1.c924924924923p8
+  },
+  { // Entry 523
+    -0x1.6e8422b4db33b6293cd44cd1c65585b2p658,
+    -0x1.c924924924923p8
+  },
+  { // Entry 524
+    0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    0x1.4492492492492p9
+  },
+  { // Entry 525
+    -0x1.6dde4c855f3397cd05f383e2ad5ef219p935,
+    -0x1.4492492492492p9
+  },
+  { // Entry 526
+    0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    0x1.4924924924924p9
+  },
+  { // Entry 527
+    -0x1.a178d253fc35a0b9802d9cd5f67cb7efp948,
+    -0x1.4924924924924p9
+  },
+  { // Entry 528
+    0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    0x1.4db6db6db6db6p9
+  },
+  { // Entry 529
+    -0x1.dc5a9c97ea13a0062828386dc2460ac2p961,
+    -0x1.4db6db6db6db6p9
+  },
+  { // Entry 530
+    0x1.0fc53c727155d9dd001733d4258e3203p975,
+    0x1.5249249249248p9
+  },
+  { // Entry 531
+    -0x1.0fc53c727155d9dd001733d4258e3203p975,
+    -0x1.5249249249248p9
+  },
+  { // Entry 532
+    0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    0x1.56db6db6db6dap9
+  },
+  { // Entry 533
+    -0x1.361a22f5879a158106bee1e89ea2a4d7p988,
+    -0x1.56db6db6db6dap9
+  },
+  { // Entry 534
+    0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    0x1.5b6db6db6db6cp9
+  },
+  { // Entry 535
+    -0x1.61d716eca93811f8d8288649dc2cee65p1001,
+    -0x1.5b6db6db6db6cp9
+  },
+  { // Entry 536
+    HUGE_VAL,
+    0x1.76db6db6db6dbp9
+  },
+  { // Entry 537
+    -HUGE_VAL,
+    -0x1.76db6db6db6dbp9
+  },
+  { // Entry 538
+    HUGE_VAL,
+    0x1.8db6db6db6db6p9
+  },
+  { // Entry 539
+    -HUGE_VAL,
+    -0x1.8db6db6db6db6p9
+  },
+  { // Entry 540
+    HUGE_VAL,
+    0x1.a492492492491p9
+  },
+  { // Entry 541
+    -HUGE_VAL,
+    -0x1.a492492492491p9
+  },
+  { // Entry 542
+    HUGE_VAL,
+    0x1.bb6db6db6db6cp9
+  },
+  { // Entry 543
+    -HUGE_VAL,
+    -0x1.bb6db6db6db6cp9
+  },
+  { // Entry 544
+    HUGE_VAL,
+    0x1.d249249249247p9
+  },
+  { // Entry 545
+    -HUGE_VAL,
+    -0x1.d249249249247p9
+  },
+  { // Entry 546
+    HUGE_VAL,
+    0x1.e924924924922p9
+  },
+  { // Entry 547
+    -HUGE_VAL,
+    -0x1.e924924924922p9
+  },
+  { // Entry 548
+    -0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    -0x1.6p9
+  },
+  { // Entry 549
+    0x1.93bf4ec282efb320a57f9ae02e01ae51p1014,
+    0x1.6p9
+  },
+  { // Entry 550
+    -0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    -0x1.5b6db6db6db6ep9
+  },
+  { // Entry 551
+    0x1.61d716eca99087be9352df5d131a5dd2p1001,
+    0x1.5b6db6db6db6ep9
+  },
+  { // Entry 552
+    -0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    -0x1.56db6db6db6dcp9
+  },
+  { // Entry 553
+    0x1.361a22f587e79c09c420d21ecffc00cdp988,
+    0x1.56db6db6db6dcp9
+  },
+  { // Entry 554
+    -0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    -0x1.524924924924ap9
+  },
+  { // Entry 555
+    0x1.0fc53c727199cb2c1cb391c8c6b1cb5bp975,
+    0x1.524924924924ap9
+  },
+  { // Entry 556
+    -0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    -0x1.4db6db6db6db8p9
+  },
+  { // Entry 557
+    0x1.dc5a9c97ea8ab6ad4e22cc3898b4d422p961,
+    0x1.4db6db6db6db8p9
+  },
+  { // Entry 558
+    -0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    -0x1.4924924924926p9
+  },
+  { // Entry 559
+    0x1.a178d253fc9dfeee152cb749eb6f6339p948,
+    0x1.4924924924926p9
+  },
+  { // Entry 560
+    -0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    -0x1.4492492492494p9
+  },
+  { // Entry 561
+    0x1.6dde4c855f8f0f60274b5c37930499f5p935,
+    0x1.4492492492494p9
+  },
+  { // Entry 562
+    -0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    -0x1.4000000000002p9
+  },
+  { // Entry 563
+    0x1.40a4b9c271c8c4271fbcc3df336e0edbp922,
+    0x1.4000000000002p9
+  },
+  { // Entry 564
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 565
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 566
+    -0.0,
+    -0.0
+  },
+  { // Entry 567
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 568
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 569
+    0x1.ecb353d02d5fb03947e320c5bccaac3fp-4,
+    0x1.eb851eb851eb7p-4
+  },
+  { // Entry 570
+    -0x1.ecb353d02d5fb03947e320c5bccaac3fp-4,
+    -0x1.eb851eb851eb7p-4
+  },
+  { // Entry 571
+    0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    0x1.eb851eb851eb8p-4
+  },
+  { // Entry 572
+    -0x1.ecb353d02d5fc056ceb2ce9e08b8f8d5p-4,
+    -0x1.eb851eb851eb8p-4
+  },
+  { // Entry 573
+    0x1.ecb353d02d5fd07455827c7654a9321fp-4,
+    0x1.eb851eb851eb9p-4
+  },
+  { // Entry 574
+    -0x1.ecb353d02d5fd07455827c7654a9321fp-4,
+    -0x1.eb851eb851eb9p-4
+  },
+  { // Entry 575
+    0x1.0acd00fe63b9639df6c641ed463c4ca0p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 576
+    -0x1.0acd00fe63b9639df6c641ed463c4ca0p-1,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 577
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.0p-1
+  },
+  { // Entry 578
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.0p-1
+  },
+  { // Entry 579
+    0x1.0acd00fe63b97eae190f824a7eebd40dp-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 580
+    -0x1.0acd00fe63b97eae190f824a7eebd40dp-1,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 581
+    0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 582
+    -0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 583
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 584
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 585
+    0x1.2cd9fc44eb983e58779b22745732962dp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 586
+    -0x1.2cd9fc44eb983e58779b22745732962dp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 587
+    0x1.ab5adb9c435e4cbe72415713a64f66a1p30,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 588
+    -0x1.ab5adb9c435e4cbe72415713a64f66a1p30,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 589
+    0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    0x1.6p4
+  },
+  { // Entry 590
+    -0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    -0x1.6p4
+  },
+  { // Entry 591
+    0x1.ab5adb9c4361a3742979ddd3968b9801p30,
+    0x1.6000000000001p4
+  },
+  { // Entry 592
+    -0x1.ab5adb9c4361a3742979ddd3968b9801p30,
+    -0x1.6000000000001p4
+  },
+  { // Entry 593
+    0x1.226af33b1fdae7ec593b8b45e80e54d2p32,
+    0x1.6ffffffffffffp4
+  },
+  { // Entry 594
+    -0x1.226af33b1fdae7ec593b8b45e80e54d2p32,
+    -0x1.6ffffffffffffp4
+  },
+  { // Entry 595
+    0x1.226af33b1fdc0a574c76ab2161309880p32,
+    0x1.7p4
+  },
+  { // Entry 596
+    -0x1.226af33b1fdc0a574c76ab2161309880p32,
+    -0x1.7p4
+  },
+  { // Entry 597
+    0x1.226af33b1fdd2cc23fb1cafdfcbdcf69p32,
+    0x1.7000000000001p4
+  },
+  { // Entry 598
+    -0x1.226af33b1fdd2cc23fb1cafdfcbdcf69p32,
+    -0x1.7000000000001p4
+  },
+  { // Entry 599
+    0x1.fffffffffffb9ede67b7a313285faa73p51,
+    0x1.25e4f7b2737f9p5
+  },
+  { // Entry 600
+    -0x1.fffffffffffb9ede67b7a313285faa73p51,
+    -0x1.25e4f7b2737f9p5
+  },
+  { // Entry 601
+    0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    0x1.25e4f7b2737fap5
+  },
+  { // Entry 602
+    -0x1.ffffffffffff9ede67b7a30e661c79e2p51,
+    -0x1.25e4f7b2737fap5
+  },
+  { // Entry 603
+    0x1.000000000001cf6f33dbd188d1eca4a9p52,
+    0x1.25e4f7b2737fbp5
+  },
+  { // Entry 604
+    -0x1.000000000001cf6f33dbd188d1eca4a9p52,
+    -0x1.25e4f7b2737fbp5
+  },
+  { // Entry 605
+    0x1.6a09e667f3b73b2e9b132d5142f3e5b3p52,
+    0x1.28aac01252c6cp5
+  },
+  { // Entry 606
+    -0x1.6a09e667f3b73b2e9b132d5142f3e5b3p52,
+    -0x1.28aac01252c6cp5
+  },
+  { // Entry 607
+    0x1.6a09e667f3ba0f4267e314c28d64e8a9p52,
+    0x1.28aac01252c6dp5
+  },
+  { // Entry 608
+    -0x1.6a09e667f3ba0f4267e314c28d64e8a9p52,
+    -0x1.28aac01252c6dp5
+  },
+  { // Entry 609
+    0x1.6a09e667f3bce35634b2fc397ffd853fp52,
+    0x1.28aac01252c6ep5
+  },
+  { // Entry 610
+    -0x1.6a09e667f3bce35634b2fc397ffd853fp52,
+    -0x1.28aac01252c6ep5
+  },
+  { // Entry 611
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 612
+    -0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 613
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 614
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 615
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 616
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 617
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 618
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 619
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 620
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 621
+    -0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 622
+    0x1.ffffffffff93ae594e9be425a010bdecp1023,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 623
+    0x1.fffffffffffff005555555555554d559p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 624
+    -0x1.fffffffffffff005555555555554d559p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 625
+    0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    0x1.0p-30
+  },
+  { // Entry 626
+    -0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    -0x1.0p-30
+  },
+  { // Entry 627
+    0x1.0000000000001002aaaaaaaaaaab2aacp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 628
+    -0x1.0000000000001002aaaaaaaaaaab2aacp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 629
+    0x1.00000000aaaaa2aaccccbcccd00cfb7ap-15,
+    0x1.fffffffffffffp-16
+  },
+  { // Entry 630
+    -0x1.00000000aaaaa2aaccccbcccd00cfb7ap-15,
+    -0x1.fffffffffffffp-16
+  },
+  { // Entry 631
+    0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    0x1.0p-15
+  },
+  { // Entry 632
+    -0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    -0x1.0p-15
+  },
+  { // Entry 633
+    0x1.00000000aaaabaaaccccecccd00d0b7ap-15,
+    0x1.0000000000001p-15
+  },
+  { // Entry 634
+    -0x1.00000000aaaabaaaccccecccd00d0b7ap-15,
+    -0x1.0000000000001p-15
+  },
+  { // Entry 635
+    0x1.0002aaaccccd94d9bbd8527c599a8bc7p-6,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 636
+    -0x1.0002aaaccccd94d9bbd8527c599a8bc7p-6,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 637
+    0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    0x1.0p-6
+  },
+  { // Entry 638
+    -0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    -0x1.0p-6
+  },
+  { // Entry 639
+    0x1.0002aaaccccdacda7bd9527ce2234152p-6,
+    0x1.0000000000001p-6
+  },
+  { // Entry 640
+    -0x1.0002aaaccccdacda7bd9527ce2234152p-6,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 641
+    0x1.000aaacccd00c83a3cace89e1977724dp-5,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 642
+    -0x1.000aaacccd00c83a3cace89e1977724dp-5,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 643
+    0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    0x1.0p-5
+  },
+  { // Entry 644
+    -0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    -0x1.0p-5
+  },
+  { // Entry 645
+    0x1.000aaacccd00e03d3cbce8c03bc0aefcp-5,
+    0x1.0000000000001p-5
+  },
+  { // Entry 646
+    -0x1.000aaacccd00e03d3cbce8c03bc0aefcp-5,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 647
+    0x1.002aacccd9cdc312002bf56151115c11p-4,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 648
+    -0x1.002aacccd9cdc312002bf56151115c11p-4,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 649
+    0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    0x1.0p-4
+  },
+  { // Entry 650
+    -0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    -0x1.0p-4
+  },
+  { // Entry 651
+    0x1.002aacccd9cddb1e012bfdea009d23c7p-4,
+    0x1.0000000000001p-4
+  },
+  { // Entry 652
+    -0x1.002aacccd9cddb1e012bfdea009d23c7p-4,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 653
+    0x1.00aaccd00d2f0572b58768290cca24c3p-3,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 654
+    -0x1.00aaccd00d2f0572b58768290cca24c3p-3,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 655
+    0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    0x1.0p-3
+  },
+  { // Entry 656
+    -0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    -0x1.0p-3
+  },
+  { // Entry 657
+    0x1.00aaccd00d2f1da2c5898a723319d3d5p-3,
+    0x1.0000000000001p-3
+  },
+  { // Entry 658
+    -0x1.00aaccd00d2f1da2c5898a723319d3d5p-3,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 659
+    0x1.02accd9d081016261f4b0ecbebb5dd8fp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 660
+    -0x1.02accd9d081016261f4b0ecbebb5dd8fp-2,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 661
+    0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    0x1.0p-2
+  },
+  { // Entry 662
+    -0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    -0x1.0p-2
+  },
+  { // Entry 663
+    0x1.02accd9d08102ee71fd3be5dd4a0a27ap-2,
+    0x1.0000000000001p-2
+  },
+  { // Entry 664
+    -0x1.02accd9d08102ee71fd3be5dd4a0a27ap-2,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 665
+    0x1.d03cf63b6e19d8da527239bc64c85ceap1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 666
+    -0x1.d03cf63b6e19d8da527239bc64c85ceap1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 667
+    0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    0x1.0p1
+  },
+  { // Entry 668
+    -0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    -0x1.0p1
+  },
+  { // Entry 669
+    0x1.d03cf63b6e1a3325409c12499bfc4fdap1,
+    0x1.0000000000001p1
+  },
+  { // Entry 670
+    -0x1.d03cf63b6e1a3325409c12499bfc4fdap1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 671
+    0x1.b4a380370362d5f21650a55c31b348b4p4,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 672
+    -0x1.b4a380370362d5f21650a55c31b348b4p4,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 673
+    0x1.b4a3803703630c8fe70261d92e563a88p4,
+    0x1.0p2
+  },
+  { // Entry 674
+    -0x1.b4a3803703630c8fe70261d92e563a88p4,
+    -0x1.0p2
+  },
+  { // Entry 675
+    0x1.b4a38037036379cb8865dad33c13c833p4,
+    0x1.0000000000001p2
+  },
+  { // Entry 676
+    -0x1.b4a38037036379cb8865dad33c13c833p4,
+    -0x1.0000000000001p2
+  },
+  { // Entry 677
+    0x1.749ea514eca5ffdf3fd18b7627cdbdc8p10,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 678
+    -0x1.749ea514eca5ffdf3fd18b7627cdbdc8p10,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 679
+    0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    0x1.0p3
+  },
+  { // Entry 680
+    -0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    -0x1.0p3
+  },
+  { // Entry 681
+    0x1.749ea514eca717563fc08323d3893d7ep10,
+    0x1.0000000000001p3
+  },
+  { // Entry 682
+    -0x1.749ea514eca717563fc08323d3893d7ep10,
+    -0x1.0000000000001p3
+  },
+  { // Entry 683
+    0x1.0f2ebd0a7ffdb64f4e0e5fcc0c593101p22,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 684
+    -0x1.0f2ebd0a7ffdb64f4e0e5fcc0c593101p22,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 685
+    0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    0x1.0p4
+  },
+  { // Entry 686
+    -0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    -0x1.0p4
+  },
+  { // Entry 687
+    0x1.0f2ebd0a7fff4d15699e1fd522e720dcp22,
+    0x1.0000000000001p4
+  },
+  { // Entry 688
+    -0x1.0f2ebd0a7fff4d15699e1fd522e720dcp22,
+    -0x1.0000000000001p4
+  },
+  { // Entry 689
+    0x1.1f43fcc4b661a8944ac389a7c7ae7b9dp45,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 690
+    -0x1.1f43fcc4b661a8944ac389a7c7ae7b9dp45,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 691
+    0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    0x1.0p5
+  },
+  { // Entry 692
+    -0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    -0x1.0p5
+  },
+  { // Entry 693
+    0x1.1f43fcc4b66506604111acd1ce1d4d5dp45,
+    0x1.0000000000001p5
+  },
+  { // Entry 694
+    -0x1.1f43fcc4b66506604111acd1ce1d4d5dp45,
+    -0x1.0000000000001p5
+  },
+  { // Entry 695
+    0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 696
+    -0x1.425982cf597a4d52c89ea857bbaa807ap91,
+    -0x1.fffffffffffffp5
+  },
+  { // Entry 697
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.0p6
+  },
+  { // Entry 698
+    -0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.0p6
+  },
+  { // Entry 699
+    0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    0x1.0000000000001p6
+  },
+  { // Entry 700
+    -0x1.425982cf5981db6bd97ac14c35e666c6p91,
+    -0x1.0000000000001p6
+  },
+  { // Entry 701
+    0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 702
+    -0x1.95e54c5dd41b20600dd601a0ae672ff4p183,
+    -0x1.fffffffffffffp6
+  },
+  { // Entry 703
+    0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    0x1.0p7
+  },
+  { // Entry 704
+    -0x1.95e54c5dd42177f53f4d5219df11ca3bp183,
+    -0x1.0p7
+  },
+  { // Entry 705
+    0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    0x1.0000000000001p7
+  },
+  { // Entry 706
+    -0x1.95e54c5dd42e271fa23bf3585b655060p183,
+    -0x1.0000000000001p7
+  },
+  { // Entry 707
+    0x1.41c7a8814be192a5df25b042af824efdp368,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 708
+    -0x1.41c7a8814be192a5df25b042af824efdp368,
+    -0x1.fffffffffffffp7
+  },
+  { // Entry 709
+    0x1.41c7a8814beba0e323300f777da65854p368,
+    0x1.0p8
+  },
+  { // Entry 710
+    -0x1.41c7a8814beba0e323300f777da65854p368,
+    -0x1.0p8
+  },
+  { // Entry 711
+    0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    0x1.0000000000001p8
+  },
+  { // Entry 712
+    -0x1.41c7a8814bffbd5dab44ced26faccbfbp368,
+    -0x1.0000000000001p8
+  },
+  { // Entry 713
+    0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 714
+    -0x1.9476504ba8399f5b97cae35beb78c3c5p737,
+    -0x1.fffffffffffffp8
+  },
+  { // Entry 715
+    0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    0x1.0p9
+  },
+  { // Entry 716
+    -0x1.9476504ba852e6c09c8567c01c5a6648p737,
+    -0x1.0p9
+  },
+  { // Entry 717
+    0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    0x1.0000000000001p9
+  },
+  { // Entry 718
+    -0x1.9476504ba885758aa5fa7545e10e8e46p737,
+    -0x1.0000000000001p9
+  },
+  { // Entry 719
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 720
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 721
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 722
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 723
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 724
+    HUGE_VAL,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 725
+    HUGE_VAL,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 726
+    0x1.718f45d72e67155cecb0017179d127e6p3,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 727
+    0x1.2690f661dd81ffd244e02b94a5c51d39p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 728
+    0x1.2cd9fc44eb983e58779b22745732962dp0,
+    0x1.0000000000001p0
+  },
+  { // Entry 729
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.0p0
+  },
+  { // Entry 730
+    0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 731
+    0x1.bcc270b5227365b85e43b36397224d94p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 732
+    0x1.00000000000010p-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 733
+    0x1.p-1022,
+    0x1.0p-1022
+  },
+  { // Entry 734
+    0x1.ffffffffffffe0p-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 735
+    0x1.ffffffffffffc0p-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 736
+    0x1.p-1073,
+    0x1.0p-1073
+  },
+  { // Entry 737
+    0x1.p-1074,
+    0x1.0p-1074
+  },
+  { // Entry 738
+    0.0,
+    0.0
+  },
+  { // Entry 739
+    -0.0,
+    -0.0
+  },
+  { // Entry 740
+    -0x1.p-1074,
+    -0x1.0p-1074
+  },
+  { // Entry 741
+    -0x1.p-1073,
+    -0x1.0p-1073
+  },
+  { // Entry 742
+    -0x1.ffffffffffffc0p-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 743
+    -0x1.ffffffffffffe0p-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 744
+    -0x1.p-1022,
+    -0x1.0p-1022
+  },
+  { // Entry 745
+    -0x1.00000000000010p-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 746
+    -0x1.bcc270b5227365b85e43b36397224d94p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 747
+    -0x1.2cd9fc44eb98194fc7a05b845e4f82b3p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 748
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.0p0
+  },
+  { // Entry 749
+    -0x1.2cd9fc44eb983e58779b22745732962dp0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 750
+    -0x1.2690f661dd81ffd244e02b94a5c51d39p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 751
+    -0x1.718f45d72e67155cecb0017179d127e6p3,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 752
+    -HUGE_VAL,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 753
+    -HUGE_VAL,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 754
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 755
+    0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 756
+    -0x1.ffffffffffd3ae594e9bda9b6b3a9168p1023,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 757
+    HUGE_VAL,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 758
+    -HUGE_VAL,
+    -0x1.633ce8fb9f87ep9
+  }
+};
diff --git a/tests/math_data/sinhf_intel_data.h b/tests/math_data/sinhf_intel_data.h
new file mode 100644
index 0000000..30afc1e
--- /dev/null
+++ b/tests/math_data/sinhf_intel_data.h
@@ -0,0 +1,2494 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_sinhf_intel_data[] = {
+  { // Entry 0
+    -0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    -0x1.p-21
+  },
+  { // Entry 1
+    0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    0x1.p-21
+  },
+  { // Entry 2
+    -0x1.1770c0fffee31db7a31664de401a57cdp-1,
+    -0x1.0b26eep-1
+  },
+  { // Entry 3
+    0x1.1770c0fffee31db7a31664de401a57cdp-1,
+    0x1.0b26eep-1
+  },
+  { // Entry 4
+    -0x1.204fd00000000000000f3ca3e81c03afp-37,
+    -0x1.204fd0p-37
+  },
+  { // Entry 5
+    0x1.204fd00000000000000f3ca3e81c03afp-37,
+    0x1.204fd0p-37
+  },
+  { // Entry 6
+    -0x1.43510055f383351ba9ec4cdf5b1b1fa5p-12,
+    -0x1.4351p-12
+  },
+  { // Entry 7
+    0x1.43510055f383351ba9ec4cdf5b1b1fa5p-12,
+    0x1.4351p-12
+  },
+  { // Entry 8
+    -0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    -0x1.561b10p6
+  },
+  { // Entry 9
+    0x1.4f1fe6fffd055403a0afa5f61f7ad456p122,
+    0x1.561b10p6
+  },
+  { // Entry 10
+    -0x1.76339d048c41010db95311bf38824f7fp-2,
+    -0x1.6e564ep-2
+  },
+  { // Entry 11
+    0x1.76339d048c41010db95311bf38824f7fp-2,
+    0x1.6e564ep-2
+  },
+  { // Entry 12
+    -0x1.a6399b00031ae7e2d10c4d5ca8b85bb6p-2,
+    -0x1.9b17d8p-2
+  },
+  { // Entry 13
+    0x1.a6399b00031ae7e2d10c4d5ca8b85bb6p-2,
+    0x1.9b17d8p-2
+  },
+  { // Entry 14
+    -0x1.ed9c6b045cf886a719553b239eced39ap-1,
+    -0x1.b62492p-1
+  },
+  { // Entry 15
+    0x1.ed9c6b045cf886a719553b239eced39ap-1,
+    0x1.b62492p-1
+  },
+  { // Entry 16
+    -0x1.ffb1b2f8d872ac8cb2c8ae78073874cep-1,
+    -0x1.c30c06p-1
+  },
+  { // Entry 17
+    0x1.ffb1b2f8d872ac8cb2c8ae78073874cep-1,
+    0x1.c30c06p-1
+  },
+  { // Entry 18
+    -0x1.490e3effd17cc5e5cebb7150a45530b0p9,
+    -0x1.cbae70p2
+  },
+  { // Entry 19
+    0x1.490e3effd17cc5e5cebb7150a45530b0p9,
+    0x1.cbae70p2
+  },
+  { // Entry 20
+    -0x1.d3735503c31601d8a231e42764dca76bp-12,
+    -0x1.d37354p-12
+  },
+  { // Entry 21
+    0x1.d3735503c31601d8a231e42764dca76bp-12,
+    0x1.d37354p-12
+  },
+  { // Entry 22
+    -0x1.d3750103c5df89146104862bc8eb9511p-12,
+    -0x1.d375p-12
+  },
+  { // Entry 23
+    0x1.d3750103c5df89146104862bc8eb9511p-12,
+    0x1.d375p-12
+  },
+  { // Entry 24
+    -0x1.d4bc08fe54522492a18ed763f5905a3cp-6,
+    -0x1.d4abacp-6
+  },
+  { // Entry 25
+    0x1.d4bc08fe54522492a18ed763f5905a3cp-6,
+    0x1.d4abacp-6
+  },
+  { // Entry 26
+    -0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    -0x1.fffcp1
+  },
+  { // Entry 27
+    0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    0x1.fffcp1
+  },
+  { // Entry 28
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 29
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 30
+    0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    0x1.p-21
+  },
+  { // Entry 31
+    -0x1.00000000000aaaaaaaaaaaccccccccccp-21,
+    -0x1.p-21
+  },
+  { // Entry 32
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 33
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 34
+    0x1.000002000000000000000aaaaaeaaaabp-41,
+    0x1.000002p-41
+  },
+  { // Entry 35
+    -0x1.000002000000000000000aaaaaeaaaabp-41,
+    -0x1.000002p-41
+  },
+  { // Entry 36
+    0x1.00aae5001d35b2cc9f1bf5024aad3fc7p-3,
+    0x1.000018p-3
+  },
+  { // Entry 37
+    -0x1.00aae5001d35b2cc9f1bf5024aad3fc7p-3,
+    -0x1.000018p-3
+  },
+  { // Entry 38
+    0x1.2cdc4cd13dbaaea971cf4c6df8d02db1p0,
+    0x1.000180p0
+  },
+  { // Entry 39
+    -0x1.2cdc4cd13dbaaea971cf4c6df8d02db1p0,
+    -0x1.000180p0
+  },
+  { // Entry 40
+    0x1.000220000000000000002aabbaacecacp-40,
+    0x1.000220p-40
+  },
+  { // Entry 41
+    -0x1.000220000000000000002aabbaacecacp-40,
+    -0x1.000220p-40
+  },
+  { // Entry 42
+    0x1.75b684fbb21e3fadfd76948a74ff619cp10,
+    0x1.0018p3
+  },
+  { // Entry 43
+    -0x1.75b684fbb21e3fadfd76948a74ff619cp10,
+    -0x1.0018p3
+  },
+  { // Entry 44
+    0x1.0af11706dc935e6b8d9889ffd9d7f9eep-1,
+    0x1.0020p-1
+  },
+  { // Entry 45
+    -0x1.0af11706dc935e6b8d9889ffd9d7f9eep-1,
+    -0x1.0020p-1
+  },
+  { // Entry 46
+    0x1.2de53500112b48b54416fd3ac0fd5d35p0,
+    0x1.00adp0
+  },
+  { // Entry 47
+    -0x1.2de53500112b48b54416fd3ac0fd5d35p0,
+    -0x1.00adp0
+  },
+  { // Entry 48
+    0x1.d311590094b7169257222f29159c5274p1,
+    0x1.00c0p1
+  },
+  { // Entry 49
+    -0x1.d311590094b7169257222f29159c5274p1,
+    -0x1.00c0p1
+  },
+  { // Entry 50
+    0x1.bb8be0f928fa482d264aec809030cb98p4,
+    0x1.0101p2
+  },
+  { // Entry 51
+    -0x1.bb8be0f928fa482d264aec809030cb98p4,
+    -0x1.0101p2
+  },
+  { // Entry 52
+    0x1.d6509cfff1b887cd50d3c7b33a490af5p1,
+    0x1.019bp1
+  },
+  { // Entry 53
+    -0x1.d6509cfff1b887cd50d3c7b33a490af5p1,
+    -0x1.019bp1
+  },
+  { // Entry 54
+    0x1.d99ef101df23c13de5368e55ebb4c952p45,
+    0x1.04p5
+  },
+  { // Entry 55
+    -0x1.d99ef101df23c13de5368e55ebb4c952p45,
+    -0x1.04p5
+  },
+  { // Entry 56
+    0x1.b61e5ca3a5e30b2f0a03f292f9ce0084p92,
+    0x1.04p6
+  },
+  { // Entry 57
+    -0x1.b61e5ca3a5e30b2f0a03f292f9ce0084p92,
+    -0x1.04p6
+  },
+  { // Entry 58
+    0x1.0f53c500dab3115ec83d0a87f389efa5p-1,
+    0x1.0401c0p-1
+  },
+  { // Entry 59
+    -0x1.0f53c500dab3115ec83d0a87f389efa5p-1,
+    -0x1.0401c0p-1
+  },
+  { // Entry 60
+    0x1.07a43d780cd02aa326997430cb72ec6ep-2,
+    0x1.04d0p-2
+  },
+  { // Entry 61
+    -0x1.07a43d780cd02aa326997430cb72ec6ep-2,
+    -0x1.04d0p-2
+  },
+  { // Entry 62
+    0x1.070b91000585e92eceba7f1d10686783p-5,
+    0x1.07p-5
+  },
+  { // Entry 63
+    -0x1.070b91000585e92eceba7f1d10686783p-5,
+    -0x1.07p-5
+  },
+  { // Entry 64
+    0x1.0aef2dfa6f09af758cfac3ec7bbe6580p-2,
+    0x1.08p-2
+  },
+  { // Entry 65
+    -0x1.0aef2dfa6f09af758cfac3ec7bbe6580p-2,
+    -0x1.08p-2
+  },
+  { // Entry 66
+    0x1.0ab8c103d210ecc999dea2fb1e601dffp-7,
+    0x1.0ab8p-7
+  },
+  { // Entry 67
+    -0x1.0ab8c103d210ecc999dea2fb1e601dffp-7,
+    -0x1.0ab8p-7
+  },
+  { // Entry 68
+    HUGE_VALF,
+    0x1.0bd822p85
+  },
+  { // Entry 69
+    -HUGE_VALF,
+    -0x1.0bd822p85
+  },
+  { // Entry 70
+    0x1.1b0bd9fff434fa99eb934f12cfcde40dp-1,
+    0x1.0e50p-1
+  },
+  { // Entry 71
+    -0x1.1b0bd9fff434fa99eb934f12cfcde40dp-1,
+    -0x1.0e50p-1
+  },
+  { // Entry 72
+    0x1.13a0d500d2f8e84e29cf7e0b47593d6bp-7,
+    0x1.13a0p-7
+  },
+  { // Entry 73
+    -0x1.13a0d500d2f8e84e29cf7e0b47593d6bp-7,
+    -0x1.13a0p-7
+  },
+  { // Entry 74
+    0x1.14635aff07928f6b82b6efd046d85611p-6,
+    0x1.1460p-6
+  },
+  { // Entry 75
+    -0x1.14635aff07928f6b82b6efd046d85611p-6,
+    -0x1.1460p-6
+  },
+  { // Entry 76
+    0x1.1837d7019c29ac4261d83dbdd9540770p-4,
+    0x1.18p-4
+  },
+  { // Entry 77
+    -0x1.1837d7019c29ac4261d83dbdd9540770p-4,
+    -0x1.18p-4
+  },
+  { // Entry 78
+    0x1.1e9a66ffff67888e2226adc979242050p-2,
+    0x1.1afcc0p-2
+  },
+  { // Entry 79
+    -0x1.1e9a66ffff67888e2226adc979242050p-2,
+    -0x1.1afcc0p-2
+  },
+  { // Entry 80
+    0x1.5851b581ab5774b6bc22fe804a609974p0,
+    0x1.1b08p0
+  },
+  { // Entry 81
+    -0x1.5851b581ab5774b6bc22fe804a609974p0,
+    -0x1.1b08p0
+  },
+  { // Entry 82
+    0x1.1fc09496b655ab5f571a14fc538740f3p-2,
+    0x1.1c18p-2
+  },
+  { // Entry 83
+    -0x1.1fc09496b655ab5f571a14fc538740f3p-2,
+    -0x1.1c18p-2
+  },
+  { // Entry 84
+    0x1.1c4fa6fffe2308d6059816c28ca68b93p-6,
+    0x1.1c4cp-6
+  },
+  { // Entry 85
+    -0x1.1c4fa6fffe2308d6059816c28ca68b93p-6,
+    -0x1.1c4cp-6
+  },
+  { // Entry 86
+    0x1.1ef0f05245d564eb621bc3580e810ecbp-7,
+    0x1.1ef0p-7
+  },
+  { // Entry 87
+    -0x1.1ef0f05245d564eb621bc3580e810ecbp-7,
+    -0x1.1ef0p-7
+  },
+  { // Entry 88
+    0x1.5ef59f4fb8454858c70cce0b76f0d1c1p0,
+    0x1.1ef8p0
+  },
+  { // Entry 89
+    -0x1.5ef59f4fb8454858c70cce0b76f0d1c1p0,
+    -0x1.1ef8p0
+  },
+  { // Entry 90
+    0x1.7922d2f6a620cc176196ee619e38cedep0,
+    0x1.2e073ap0
+  },
+  { // Entry 91
+    -0x1.7922d2f6a620cc176196ee619e38cedep0,
+    -0x1.2e073ap0
+  },
+  { // Entry 92
+    0x1.43b381fff77c0efbac7ee89fffb83db3p-1,
+    0x1.31497ep-1
+  },
+  { // Entry 93
+    -0x1.43b381fff77c0efbac7ee89fffb83db3p-1,
+    -0x1.31497ep-1
+  },
+  { // Entry 94
+    0x1.32b4320000022be269a7e0844e8fb427p-3,
+    0x1.3191a2p-3
+  },
+  { // Entry 95
+    -0x1.32b4320000022be269a7e0844e8fb427p-3,
+    -0x1.3191a2p-3
+  },
+  { // Entry 96
+    0x1.81e2b0f865f7d68960908dea8dbff652p0,
+    0x1.32e74cp0
+  },
+  { // Entry 97
+    -0x1.81e2b0f865f7d68960908dea8dbff652p0,
+    -0x1.32e74cp0
+  },
+  { // Entry 98
+    0x1.684f9300049996963e27553b525d785cp2,
+    0x1.36ea5cp1
+  },
+  { // Entry 99
+    -0x1.684f9300049996963e27553b525d785cp2,
+    -0x1.36ea5cp1
+  },
+  { // Entry 100
+    0x1.3e8c5a52344c5fc05de7cf393fd80bacp-12,
+    0x1.3e8c5ap-12
+  },
+  { // Entry 101
+    -0x1.3e8c5a52344c5fc05de7cf393fd80bacp-12,
+    -0x1.3e8c5ap-12
+  },
+  { // Entry 102
+    0x1.3ebc005259354f37ecfabafab164439dp-12,
+    0x1.3ebcp-12
+  },
+  { // Entry 103
+    -0x1.3ebc005259354f37ecfabafab164439dp-12,
+    -0x1.3ebcp-12
+  },
+  { // Entry 104
+    0x1.3ec66e52614b0b45d34f5458bd2b6d4ap-12,
+    0x1.3ec66ep-12
+  },
+  { // Entry 105
+    -0x1.3ec66e52614b0b45d34f5458bd2b6d4ap-12,
+    -0x1.3ec66ep-12
+  },
+  { // Entry 106
+    0x1.9a856d00436428754784f838aa53dcdep0,
+    0x1.403a42p0
+  },
+  { // Entry 107
+    -0x1.9a856d00436428754784f838aa53dcdep0,
+    -0x1.403a42p0
+  },
+  { // Entry 108
+    0x1.4674690003b5c33e7fd09a6bffacac02p-2,
+    0x1.4129d6p-2
+  },
+  { // Entry 109
+    -0x1.4674690003b5c33e7fd09a6bffacac02p-2,
+    -0x1.4129d6p-2
+  },
+  { // Entry 110
+    0x1.442556569d4a81e2d99f316cd704988bp-12,
+    0x1.442556p-12
+  },
+  { // Entry 111
+    -0x1.442556569d4a81e2d99f316cd704988bp-12,
+    -0x1.442556p-12
+  },
+  { // Entry 112
+    0x1.f897f07e50760e5213f6121940ce7277p115,
+    0x1.4455a8p6
+  },
+  { // Entry 113
+    -0x1.f897f07e50760e5213f6121940ce7277p115,
+    -0x1.4455a8p6
+  },
+  { // Entry 114
+    0x1.f7c601c26a0aab07acb3aed129529860p116,
+    0x1.4719c6p6
+  },
+  { // Entry 115
+    -0x1.f7c601c26a0aab07acb3aed129529860p116,
+    -0x1.4719c6p6
+  },
+  { // Entry 116
+    0x1.8fd142fffbf07bcd9c6607b02fc55b74p117,
+    0x1.48f2e4p6
+  },
+  { // Entry 117
+    -0x1.8fd142fffbf07bcd9c6607b02fc55b74p117,
+    -0x1.48f2e4p6
+  },
+  { // Entry 118
+    0x1.54e2c50008b73d8e4d7ed6ca4c155dbcp-3,
+    0x1.5354c2p-3
+  },
+  { // Entry 119
+    -0x1.54e2c50008b73d8e4d7ed6ca4c155dbcp-3,
+    -0x1.5354c2p-3
+  },
+  { // Entry 120
+    0x1.7ff7f6932445d2e31f1b7c20d7c7d875p125,
+    0x1.5ef7bcp6
+  },
+  { // Entry 121
+    -0x1.7ff7f6932445d2e31f1b7c20d7c7d875p125,
+    -0x1.5ef7bcp6
+  },
+  { // Entry 122
+    0x1.f13408794171d98e14f95245a340ab06p125,
+    0x1.600060p6
+  },
+  { // Entry 123
+    -0x1.f13408794171d98e14f95245a340ab06p125,
+    -0x1.600060p6
+  },
+  { // Entry 124
+    0x1.f916467349b058b9c38906911b856056p125,
+    0x1.60107cp6
+  },
+  { // Entry 125
+    -0x1.f916467349b058b9c38906911b856056p125,
+    -0x1.60107cp6
+  },
+  { // Entry 126
+    0x1.6918410000c5ae5656882e7cea64f25bp-2,
+    0x1.620054p-2
+  },
+  { // Entry 127
+    -0x1.6918410000c5ae5656882e7cea64f25bp-2,
+    -0x1.620054p-2
+  },
+  { // Entry 128
+    0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    0x1.62e4b4p6
+  },
+  { // Entry 129
+    -0x1.0021063836b49dcc89e4c5aab5e911d1p127,
+    -0x1.62e4b4p6
+  },
+  { // Entry 130
+    0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    0x1.6591c4p6
+  },
+  { // Entry 131
+    -0x1.f40a2c6c7e4eec4c0ed1fae32d255e23p127,
+    -0x1.6591c4p6
+  },
+  { // Entry 132
+    0x1.ff0714d44fc871ff0c086096f1bf0ae0p127,
+    0x1.65a806p6
+  },
+  { // Entry 133
+    -0x1.ff0714d44fc871ff0c086096f1bf0ae0p127,
+    -0x1.65a806p6
+  },
+  { // Entry 134
+    0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    0x1.65a8dap6
+  },
+  { // Entry 135
+    -0x1.ff70ec400b9c2d8dee878e30b56339bep127,
+    -0x1.65a8dap6
+  },
+  { // Entry 136
+    0x1.fff2d869d07d11d6c64d896f117f0094p127,
+    0x1.65a9dep6
+  },
+  { // Entry 137
+    -0x1.fff2d869d07d11d6c64d896f117f0094p127,
+    -0x1.65a9dep6
+  },
+  { // Entry 138
+    0x1.6e444103bc8945311358dde7a66bdb38p-2,
+    0x1.66dffap-2
+  },
+  { // Entry 139
+    -0x1.6e444103bc8945311358dde7a66bdb38p-2,
+    -0x1.66dffap-2
+  },
+  { // Entry 140
+    0x1.67cf01000052cb8c07fcbe6cb68dcc3dp-6,
+    0x1.67c79ap-6
+  },
+  { // Entry 141
+    -0x1.67cf01000052cb8c07fcbe6cb68dcc3dp-6,
+    -0x1.67c79ap-6
+  },
+  { // Entry 142
+    0x1.7800852fb7173f3c300caca6708f0d6fp-8,
+    0x1.77fffep-8
+  },
+  { // Entry 143
+    -0x1.7800852fb7173f3c300caca6708f0d6fp-8,
+    -0x1.77fffep-8
+  },
+  { // Entry 144
+    0x1.80000900001033334115f1660750774cp-10,
+    0x1.80p-10
+  },
+  { // Entry 145
+    -0x1.80000900001033334115f1660750774cp-10,
+    -0x1.80p-10
+  },
+  { // Entry 146
+    0x1.5df91cff9ace26df572d528a8d7e4d99p16,
+    0x1.8313eap3
+  },
+  { // Entry 147
+    -0x1.5df91cff9ace26df572d528a8d7e4d99p16,
+    -0x1.8313eap3
+  },
+  { // Entry 148
+    0x1.16c370fc40a0ef3180f8a61c8b25157cp1,
+    0x1.853c56p0
+  },
+  { // Entry 149
+    -0x1.16c370fc40a0ef3180f8a61c8b25157cp1,
+    -0x1.853c56p0
+  },
+  { // Entry 150
+    0x1.880000993055674ae98a9a44aa624509p-12,
+    0x1.88p-12
+  },
+  { // Entry 151
+    -0x1.880000993055674ae98a9a44aa624509p-12,
+    -0x1.88p-12
+  },
+  { // Entry 152
+    0x1.dab77d03d9ceea48387c7a3e5ebde612p16,
+    0x1.8cd558p3
+  },
+  { // Entry 153
+    -0x1.dab77d03d9ceea48387c7a3e5ebde612p16,
+    -0x1.8cd558p3
+  },
+  { // Entry 154
+    0x1.b36be4f606d0cd43778f0b56d6c78c69p3,
+    0x1.a70ca4p1
+  },
+  { // Entry 155
+    -0x1.b36be4f606d0cd43778f0b56d6c78c69p3,
+    -0x1.a70ca4p1
+  },
+  { // Entry 156
+    0x1.9fc768f63e2199d4161ad52c42c43993p8,
+    0x1.ae4a96p2
+  },
+  { // Entry 157
+    -0x1.9fc768f63e2199d4161ad52c42c43993p8,
+    -0x1.ae4a96p2
+  },
+  { // Entry 158
+    0x1.fddcb5028f3c5f2f9057b275fda963b5p-1,
+    0x1.c1c0p-1
+  },
+  { // Entry 159
+    -0x1.fddcb5028f3c5f2f9057b275fda963b5p-1,
+    -0x1.c1c0p-1
+  },
+  { // Entry 160
+    0x1.c9d78317aae58861bfa01747e05aaa21p-3,
+    0x1.c61c8ep-3
+  },
+  { // Entry 161
+    -0x1.c9d78317aae58861bfa01747e05aaa21p-3,
+    -0x1.c61c8ep-3
+  },
+  { // Entry 162
+    0x1.17d46d00e7aa2bd311c9d06faf31cd0fp4,
+    0x1.c71c78p1
+  },
+  { // Entry 163
+    -0x1.17d46d00e7aa2bd311c9d06faf31cd0fp4,
+    -0x1.c71c78p1
+  },
+  { // Entry 164
+    0x1.d00fdefedbdc86d82e34a1726ce6fd5ep-6,
+    0x1.cffffep-6
+  },
+  { // Entry 165
+    -0x1.d00fdefedbdc86d82e34a1726ce6fd5ep-6,
+    -0x1.cffffep-6
+  },
+  { // Entry 166
+    0x1.d12f11000068b29f1390f76019d191e9p-12,
+    0x1.d12f10p-12
+  },
+  { // Entry 167
+    -0x1.d12f11000068b29f1390f76019d191e9p-12,
+    -0x1.d12f10p-12
+  },
+  { // Entry 168
+    0x1.e161430003f635efa46c1b93b40d124ap-2,
+    0x1.d13608p-2
+  },
+  { // Entry 169
+    -0x1.e161430003f635efa46c1b93b40d124ap-2,
+    -0x1.d13608p-2
+  },
+  { // Entry 170
+    0x1.e518f10016d4233539a6a86b46de305dp9,
+    0x1.e48570p2
+  },
+  { // Entry 171
+    -0x1.e518f10016d4233539a6a86b46de305dp9,
+    -0x1.e48570p2
+  },
+  { // Entry 172
+    0x1.f882f8ffff8c2c97052fff77b0fe05cap-2,
+    0x1.e60da6p-2
+  },
+  { // Entry 173
+    -0x1.f882f8ffff8c2c97052fff77b0fe05cap-2,
+    -0x1.e60da6p-2
+  },
+  { // Entry 174
+    0x1.a6565af66cc00367cd4b44acef8fe3b4p1,
+    0x1.e8bce0p0
+  },
+  { // Entry 175
+    -0x1.a6565af66cc00367cd4b44acef8fe3b4p1,
+    -0x1.e8bce0p0
+  },
+  { // Entry 176
+    0x1.ee2fa5ffffffd478a109217059ddb3a9p-4,
+    0x1.ecfeb6p-4
+  },
+  { // Entry 177
+    -0x1.ee2fa5ffffffd478a109217059ddb3a9p-4,
+    -0x1.ecfeb6p-4
+  },
+  { // Entry 178
+    0x1.b54f74f65bab12830f959a3e2d7e1c61p1,
+    0x1.f14910p0
+  },
+  { // Entry 179
+    -0x1.b54f74f65bab12830f959a3e2d7e1c61p1,
+    -0x1.f14910p0
+  },
+  { // Entry 180
+    0x1.b56a96f6fbbb8045af62b07d5d56b656p1,
+    0x1.f1584ep0
+  },
+  { // Entry 181
+    -0x1.b56a96f6fbbb8045af62b07d5d56b656p1,
+    -0x1.f1584ep0
+  },
+  { // Entry 182
+    0x1.f6e42e000047623ec2a83a461e98dec7p-3,
+    0x1.f1f852p-3
+  },
+  { // Entry 183
+    -0x1.f6e42e000047623ec2a83a461e98dec7p-3,
+    -0x1.f1f852p-3
+  },
+  { // Entry 184
+    0x1.f6ec1458fb3487aac4bfeec4b6812670p-3,
+    0x1.f1fffep-3
+  },
+  { // Entry 185
+    -0x1.f6ec1458fb3487aac4bfeec4b6812670p-3,
+    -0x1.f1fffep-3
+  },
+  { // Entry 186
+    0x1.f2fda6fdfa98a35b66e5104fdacd2bd5p-9,
+    0x1.f2fd58p-9
+  },
+  { // Entry 187
+    -0x1.f2fda6fdfa98a35b66e5104fdacd2bd5p-9,
+    -0x1.f2fd58p-9
+  },
+  { // Entry 188
+    0x1.f8521dffffcd41462b0d73569b1d3819p-3,
+    0x1.f35bacp-3
+  },
+  { // Entry 189
+    -0x1.f8521dffffcd41462b0d73569b1d3819p-3,
+    -0x1.f35bacp-3
+  },
+  { // Entry 190
+    0x1.f4dda8fe2ec303fc7f7568475545139cp-11,
+    0x1.f4dda4p-11
+  },
+  { // Entry 191
+    -0x1.f4dda8fe2ec303fc7f7568475545139cp-11,
+    -0x1.f4dda4p-11
+  },
+  { // Entry 192
+    0x1.f51a7d0000ac50ad5402c949ba82e8a3p-11,
+    0x1.f51a78p-11
+  },
+  { // Entry 193
+    -0x1.f51a7d0000ac50ad5402c949ba82e8a3p-11,
+    -0x1.f51a78p-11
+  },
+  { // Entry 194
+    0x1.a664dced7cb98c68f2b973d65c676a35p21,
+    0x1.f7fffep3
+  },
+  { // Entry 195
+    -0x1.a664dced7cb98c68f2b973d65c676a35p21,
+    -0x1.f7fffep3
+  },
+  { // Entry 196
+    0x1.f9b658ffff3ce39965e1b291abc9efb8p-4,
+    0x1.f86facp-4
+  },
+  { // Entry 197
+    -0x1.f9b658ffff3ce39965e1b291abc9efb8p-4,
+    -0x1.f86facp-4
+  },
+  { // Entry 198
+    0x1.28c3fb0016be4fd802e83c9be0d9cad1p0,
+    0x1.faaee8p-1
+  },
+  { // Entry 199
+    -0x1.28c3fb0016be4fd802e83c9be0d9cad1p0,
+    -0x1.faaee8p-1
+  },
+  { // Entry 200
+    0x1.29b1530000004a3722ae1117c2787152p0,
+    0x1.fbe4b0p-1
+  },
+  { // Entry 201
+    -0x1.29b1530000004a3722ae1117c2787152p0,
+    -0x1.fbe4b0p-1
+  },
+  { // Entry 202
+    0x1.fc14d4961039dc857c796f56b34af3b3p-6,
+    0x1.fbfffep-6
+  },
+  { // Entry 203
+    -0x1.fc14d4961039dc857c796f56b34af3b3p-6,
+    -0x1.fbfffep-6
+  },
+  { // Entry 204
+    0x1.fc4d7fd2d8e70ecb66e028137da8ba9dp-7,
+    0x1.fc4848p-7
+  },
+  { // Entry 205
+    -0x1.fc4d7fd2d8e70ecb66e028137da8ba9dp-7,
+    -0x1.fc4848p-7
+  },
+  { // Entry 206
+    0x1.fce613caa0469e68c720c7696cf35c3dp-9,
+    0x1.fce5c0p-9
+  },
+  { // Entry 207
+    -0x1.fce613caa0469e68c720c7696cf35c3dp-9,
+    -0x1.fce5c0p-9
+  },
+  { // Entry 208
+    0x1.fdf50fe0194330cfcecb2935b09d09a3p-6,
+    0x1.fddffep-6
+  },
+  { // Entry 209
+    -0x1.fdf50fe0194330cfcecb2935b09d09a3p-6,
+    -0x1.fddffep-6
+  },
+  { // Entry 210
+    0x1.ff92198272299e9dd5a4315372947bb7p-4,
+    0x1.fe3ffep-4
+  },
+  { // Entry 211
+    -0x1.ff92198272299e9dd5a4315372947bb7p-4,
+    -0x1.fe3ffep-4
+  },
+  { // Entry 212
+    0x1.fed49818a86c9e5d357348cc86552ecfp-5,
+    0x1.fe7ffep-5
+  },
+  { // Entry 213
+    -0x1.fed49818a86c9e5d357348cc86552ecfp-5,
+    -0x1.fe7ffep-5
+  },
+  { // Entry 214
+    0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    0x1.ffdffep5
+  },
+  { // Entry 215
+    -0x1.3d59d2d8b22b41c2bb6334c9be7be902p91,
+    -0x1.ffdffep5
+  },
+  { // Entry 216
+    0x1.fff77f554451e1f58b2d5e1ecc407a66p-12,
+    0x1.fff77ep-12
+  },
+  { // Entry 217
+    -0x1.fff77f554451e1f58b2d5e1ecc407a66p-12,
+    -0x1.fff77ep-12
+  },
+  { // Entry 218
+    0x1.7474c2f9144f003acd66e60d58643f07p10,
+    0x1.fff8cep2
+  },
+  { // Entry 219
+    -0x1.7474c2f9144f003acd66e60d58643f07p10,
+    -0x1.fff8cep2
+  },
+  { // Entry 220
+    0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    0x1.fffcp1
+  },
+  { // Entry 221
+    -0x1.b495d8f96ad2507c36e288f42ed69c65p4,
+    -0x1.fffcp1
+  },
+  { // Entry 222
+    0x1.2cd7476ede0aac2c3be4d81efc1fae2bp0,
+    0x1.fffc7ep-1
+  },
+  { // Entry 223
+    -0x1.2cd7476ede0aac2c3be4d81efc1fae2bp0,
+    -0x1.fffc7ep-1
+  },
+  { // Entry 224
+    0x1.d03a90ffffa72affa30aae2126410fd3p1,
+    0x1.fffebap0
+  },
+  { // Entry 225
+    -0x1.d03a90ffffa72affa30aae2126410fd3p1,
+    -0x1.fffebap0
+  },
+  { // Entry 226
+    0x1.b4a0e9ff76786bf6ec2ea4f53a42a118p4,
+    0x1.ffff3ep1
+  },
+  { // Entry 227
+    -0x1.b4a0e9ff76786bf6ec2ea4f53a42a118p4,
+    -0x1.ffff3ep1
+  },
+  { // Entry 228
+    0.0,
+    0.0
+  },
+  { // Entry 229
+    0x1.24d1fe8cfad7f98fcdbea5882af8e32dp-4,
+    0x1.24924ap-4
+  },
+  { // Entry 230
+    -0x1.24d1fe8cfad7f98fcdbea5882af8e32dp-4,
+    -0x1.24924ap-4
+  },
+  { // Entry 231
+    0x1.25914e250092e5c3cddf2040afd79c65p-3,
+    0x1.24924ap-3
+  },
+  { // Entry 232
+    -0x1.25914e250092e5c3cddf2040afd79c65p-3,
+    -0x1.24924ap-3
+  },
+  { // Entry 233
+    0x1.ba393734ca25f6f4197cc41844ff6e7dp-3,
+    0x1.b6db70p-3
+  },
+  { // Entry 234
+    -0x1.ba393734ca25f6f4197cc41844ff6e7dp-3,
+    -0x1.b6db70p-3
+  },
+  { // Entry 235
+    0x1.28917b1a67c439ef2a28337ebef6dc3cp-2,
+    0x1.24924ap-2
+  },
+  { // Entry 236
+    -0x1.28917b1a67c439ef2a28337ebef6dc3cp-2,
+    -0x1.24924ap-2
+  },
+  { // Entry 237
+    0x1.7589df829503fa20ed8774c31e6a332cp-2,
+    0x1.6db6dcp-2
+  },
+  { // Entry 238
+    -0x1.7589df829503fa20ed8774c31e6a332cp-2,
+    -0x1.6db6dcp-2
+  },
+  { // Entry 239
+    0x1.c46a5c1d32d4860b81155aef808f7d0fp-2,
+    0x1.b6db6ep-2
+  },
+  { // Entry 240
+    -0x1.c46a5c1d32d4860b81155aef808f7d0fp-2,
+    -0x1.b6db6ep-2
+  },
+  { // Entry 241
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 242
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 243
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 244
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 245
+    0x1.34c1747f635dfc16c1d88e5910239fe8p-1,
+    0x1.24924ap-1
+  },
+  { // Entry 246
+    -0x1.34c1747f635dfc16c1d88e5910239fe8p-1,
+    -0x1.24924ap-1
+  },
+  { // Entry 247
+    0x1.604959cb9dca66a6c6b1d52214b88901p-1,
+    0x1.492494p-1
+  },
+  { // Entry 248
+    -0x1.604959cb9dca66a6c6b1d52214b88901p-1,
+    -0x1.492494p-1
+  },
+  { // Entry 249
+    0x1.8d9d92611935ee8bcc9e9c1bbcb4ec0dp-1,
+    0x1.6db6dep-1
+  },
+  { // Entry 250
+    -0x1.8d9d92611935ee8bcc9e9c1bbcb4ec0dp-1,
+    -0x1.6db6dep-1
+  },
+  { // Entry 251
+    0x1.bcf9593d2ecc12e3836d15a1067a7896p-1,
+    0x1.924928p-1
+  },
+  { // Entry 252
+    -0x1.bcf9593d2ecc12e3836d15a1067a7896p-1,
+    -0x1.924928p-1
+  },
+  { // Entry 253
+    0x1.ee9a9041b2e77dc8645b07cd35bf1333p-1,
+    0x1.b6db72p-1
+  },
+  { // Entry 254
+    -0x1.ee9a9041b2e77dc8645b07cd35bf1333p-1,
+    -0x1.b6db72p-1
+  },
+  { // Entry 255
+    0x1.116108889abd3fd6df9a909af5b4b3abp0,
+    0x1.db6dbcp-1
+  },
+  { // Entry 256
+    -0x1.116108889abd3fd6df9a909af5b4b3abp0,
+    -0x1.db6dbcp-1
+  },
+  { // Entry 257
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 258
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 259
+    0.0,
+    0.0
+  },
+  { // Entry 260
+    0x1.18e1df94a3c9eec616f3c33e116ff136p-6,
+    0x1.18de5ap-6
+  },
+  { // Entry 261
+    -0x1.18e1df94a3c9eec616f3c33e116ff136p-6,
+    -0x1.18de5ap-6
+  },
+  { // Entry 262
+    0x1.18ec707b41cb05757f702b2e7bc8168fp-5,
+    0x1.18de5ap-5
+  },
+  { // Entry 263
+    -0x1.18ec707b41cb05757f702b2e7bc8168fp-5,
+    -0x1.18de5ap-5
+  },
+  { // Entry 264
+    0x1.a57d14c544db6f79ccb29cf647ec3bd6p-5,
+    0x1.a54d88p-5
+  },
+  { // Entry 265
+    -0x1.a57d14c544db6f79ccb29cf647ec3bd6p-5,
+    -0x1.a54d88p-5
+  },
+  { // Entry 266
+    0x1.1916b67842dff1025e79e06864bad805p-4,
+    0x1.18de5ap-4
+  },
+  { // Entry 267
+    -0x1.1916b67842dff1025e79e06864bad805p-4,
+    -0x1.18de5ap-4
+  },
+  { // Entry 268
+    0x1.5f840854828275e07b52147a0b34cec2p-4,
+    0x1.5f15f0p-4
+  },
+  { // Entry 269
+    -0x1.5f840854828275e07b52147a0b34cec2p-4,
+    -0x1.5f15f0p-4
+  },
+  { // Entry 270
+    0x1.a60bcc64888b5d1a7338b1a0f9243f1ep-4,
+    0x1.a54d86p-4
+  },
+  { // Entry 271
+    -0x1.a60bcc64888b5d1a7338b1a0f9243f1ep-4,
+    -0x1.a54d86p-4
+  },
+  { // Entry 272
+    0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    0x1.eb851cp-4
+  },
+  { // Entry 273
+    -0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    -0x1.eb851cp-4
+  },
+  { // Entry 274
+    0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    0x1.eb851ep-4
+  },
+  { // Entry 275
+    -0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    -0x1.eb851ep-4
+  },
+  { // Entry 276
+    0x1.02243d1276143106404fa4cb3fcadf33p-3,
+    0x1.01767ep-3
+  },
+  { // Entry 277
+    -0x1.02243d1276143106404fa4cb3fcadf33p-3,
+    -0x1.01767ep-3
+  },
+  { // Entry 278
+    0x1.0df0f8011126593efedda045c8fa0e09p-3,
+    0x1.0d2a6cp-3
+  },
+  { // Entry 279
+    -0x1.0df0f8011126593efedda045c8fa0e09p-3,
+    -0x1.0d2a6cp-3
+  },
+  { // Entry 280
+    0x1.19bff49926d4870c4cae1f4076b8e37ap-3,
+    0x1.18de5ap-3
+  },
+  { // Entry 281
+    -0x1.19bff49926d4870c4cae1f4076b8e37ap-3,
+    -0x1.18de5ap-3
+  },
+  { // Entry 282
+    0x1.25914c1fc4d40b236a218f858c70fb53p-3,
+    0x1.249248p-3
+  },
+  { // Entry 283
+    -0x1.25914c1fc4d40b236a218f858c70fb53p-3,
+    -0x1.249248p-3
+  },
+  { // Entry 284
+    0x1.316517df03194e62cdc39c303b8105ffp-3,
+    0x1.304636p-3
+  },
+  { // Entry 285
+    -0x1.316517df03194e62cdc39c303b8105ffp-3,
+    -0x1.304636p-3
+  },
+  { // Entry 286
+    0x1.3d3b712639f615986771a910d344617ep-3,
+    0x1.3bfa24p-3
+  },
+  { // Entry 287
+    -0x1.3d3b712639f615986771a910d344617ep-3,
+    -0x1.3bfa24p-3
+  },
+  { // Entry 288
+    0x1.4914714a38430228edb55e7949c30a96p-3,
+    0x1.47ae12p-3
+  },
+  { // Entry 289
+    -0x1.4914714a38430228edb55e7949c30a96p-3,
+    -0x1.47ae12p-3
+  },
+  { // Entry 290
+    0x1.49147350c990b8731b5aa06b375e9ad0p-3,
+    0x1.47ae14p-3
+  },
+  { // Entry 291
+    -0x1.49147350c990b8731b5aa06b375e9ad0p-3,
+    -0x1.47ae14p-3
+  },
+  { // Entry 292
+    0x1.227b2f3d30af1d4e22444c8e7f338460p-2,
+    0x1.1eb852p-2
+  },
+  { // Entry 293
+    -0x1.227b2f3d30af1d4e22444c8e7f338460p-2,
+    -0x1.1eb852p-2
+  },
+  { // Entry 294
+    0x1.a49c42670497025996a8b3ff42a49c6fp-2,
+    0x1.99999ap-2
+  },
+  { // Entry 295
+    -0x1.a49c42670497025996a8b3ff42a49c6fp-2,
+    -0x1.99999ap-2
+  },
+  { // Entry 296
+    0x1.1666dcd198ff92b46da6bfab8aba56a0p-1,
+    0x1.0a3d70p-1
+  },
+  { // Entry 297
+    -0x1.1666dcd198ff92b46da6bfab8aba56a0p-1,
+    -0x1.0a3d70p-1
+  },
+  { // Entry 298
+    0x1.5e8321e07e76d08e1e985ab3cd7da5b6p-1,
+    0x1.47ae14p-1
+  },
+  { // Entry 299
+    -0x1.5e8321e07e76d08e1e985ab3cd7da5b6p-1,
+    -0x1.47ae14p-1
+  },
+  { // Entry 300
+    0x1.abad14f0aa07a2fd5cc86f6098a8cf80p-1,
+    0x1.851eb8p-1
+  },
+  { // Entry 301
+    -0x1.abad14f0aa07a2fd5cc86f6098a8cf80p-1,
+    -0x1.851eb8p-1
+  },
+  { // Entry 302
+    0x1.ff0182668411539d3db9b8fd9af11fd0p-1,
+    0x1.c28f5cp-1
+  },
+  { // Entry 303
+    -0x1.ff0182668411539d3db9b8fd9af11fd0p-1,
+    -0x1.c28f5cp-1
+  },
+  { // Entry 304
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 305
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 306
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 307
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 308
+    0x1.95525e4a2ef718eb0754642866b5a7d4p3,
+    0x1.9de826p1
+  },
+  { // Entry 309
+    -0x1.95525e4a2ef718eb0754642866b5a7d4p3,
+    -0x1.9de826p1
+  },
+  { // Entry 310
+    0x1.d9a0eee58bbd37706f9307edad7da7ecp6,
+    0x1.5de826p2
+  },
+  { // Entry 311
+    -0x1.d9a0eee58bbd37706f9307edad7da7ecp6,
+    -0x1.5de826p2
+  },
+  { // Entry 312
+    0x1.144da80a2e3513241fedacab70954631p10,
+    0x1.ecdc38p2
+  },
+  { // Entry 313
+    -0x1.144da80a2e3513241fedacab70954631p10,
+    -0x1.ecdc38p2
+  },
+  { // Entry 314
+    0x1.425f2a3eb0771d774c3e790cd0f40c63p13,
+    0x1.3de826p3
+  },
+  { // Entry 315
+    -0x1.425f2a3eb0771d774c3e790cd0f40c63p13,
+    -0x1.3de826p3
+  },
+  { // Entry 316
+    0x1.781f001b7cc45e8c057d098d300a73d1p16,
+    0x1.856230p3
+  },
+  { // Entry 317
+    -0x1.781f001b7cc45e8c057d098d300a73d1p16,
+    -0x1.856230p3
+  },
+  { // Entry 318
+    0x1.b6d506c59d8cbe5c54f7f8927c597f84p19,
+    0x1.ccdc3ap3
+  },
+  { // Entry 319
+    -0x1.b6d506c59d8cbe5c54f7f8927c597f84p19,
+    -0x1.ccdc3ap3
+  },
+  { // Entry 320
+    0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 321
+    -0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 322
+    0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    0x1.62e42cp3
+  },
+  { // Entry 323
+    -0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    -0x1.62e42cp3
+  },
+  { // Entry 324
+    0x1.ffffe103c7009212034b389759a93fddp14,
+    0x1.62e42ep3
+  },
+  { // Entry 325
+    -0x1.ffffe103c7009212034b389759a93fddp14,
+    -0x1.62e42ep3
+  },
+  { // Entry 326
+    0x1.00000081e308873bf3c21c42db0354c7p15,
+    0x1.62e430p3
+  },
+  { // Entry 327
+    -0x1.00000081e308873bf3c21c42db0354c7p15,
+    -0x1.62e430p3
+  },
+  { // Entry 328
+    0x1.fffde082c48329d920ae3d83c4008840p6,
+    0x1.62e42cp2
+  },
+  { // Entry 329
+    -0x1.fffde082c48329d920ae3d83c4008840p6,
+    -0x1.62e42cp2
+  },
+  { // Entry 330
+    0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    0x1.62e42ep2
+  },
+  { // Entry 331
+    -0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    -0x1.62e42ep2
+  },
+  { // Entry 332
+    0x1.fffe0082e38b59068dc66cd507e027edp6,
+    0x1.62e430p2
+  },
+  { // Entry 333
+    -0x1.fffe0082e38b59068dc66cd507e027edp6,
+    -0x1.62e430p2
+  },
+  { // Entry 334
+    0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    0x1.62e42cp1
+  },
+  { // Entry 335
+    -0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    -0x1.62e42cp1
+  },
+  { // Entry 336
+    0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    0x1.62e42ep1
+  },
+  { // Entry 337
+    -0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    -0x1.62e42ep1
+  },
+  { // Entry 338
+    0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    0x1.62e430p1
+  },
+  { // Entry 339
+    -0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    -0x1.62e430p1
+  },
+  { // Entry 340
+    0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    0x1.62e42cp0
+  },
+  { // Entry 341
+    -0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    -0x1.62e42cp0
+  },
+  { // Entry 342
+    0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    0x1.62e42ep0
+  },
+  { // Entry 343
+    -0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    -0x1.62e42ep0
+  },
+  { // Entry 344
+    0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    0x1.62e430p0
+  },
+  { // Entry 345
+    -0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    -0x1.62e430p0
+  },
+  { // Entry 346
+    0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 347
+    -0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 348
+    0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 349
+    -0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 350
+    0x1.8000001473795004b7cd26f5470cab89p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 351
+    -0x1.8000001473795004b7cd26f5470cab89p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 352
+    0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 353
+    -0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 354
+    0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 355
+    -0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 356
+    0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    0x1.62e430p-2
+  },
+  { // Entry 357
+    -0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 358
+    0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 359
+    -0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 360
+    0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 361
+    -0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 362
+    0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 363
+    -0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 364
+    0x1.6355e30c5322853739b87125ec22bdecp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 365
+    -0x1.6355e30c5322853739b87125ec22bdecp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 366
+    0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 367
+    -0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 368
+    0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 369
+    -0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 370
+    0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 371
+    -0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 372
+    0x1.630099b725ee198cf48f439e2807bf07p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 373
+    -0x1.630099b725ee198cf48f439e2807bf07p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 374
+    0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 375
+    -0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 376
+    0x1.62eb46cce5848efc0a888499742bfd4cp-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 377
+    -0x1.62eb46cce5848efc0a888499742bfd4cp-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 378
+    0x1.62eb48cd04449b44496ceeff57490075p-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 379
+    -0x1.62eb48cd04449b44496ceeff57490075p-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 380
+    0x1.62eb4acd2304a7e543238ca64b8cd689p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 381
+    -0x1.62eb4acd2304a7e543238ca64b8cd689p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 382
+    -0x1.00000105c611505c7f74a519f94171b0p31,
+    -0x1.62e430p4
+  },
+  { // Entry 383
+    0x1.00000105c611505c7f74a519f94171b0p31,
+    0x1.62e430p4
+  },
+  { // Entry 384
+    -0x1.ffffc20b8fe12f0e17406ea1dc598aa0p30,
+    -0x1.62e42ep4
+  },
+  { // Entry 385
+    0x1.ffffc20b8fe12f0e17406ea1dc598aa0p30,
+    0x1.62e42ep4
+  },
+  { // Entry 386
+    -0x1.ffff820b9b9fbc6b5dd9c276569c9e77p30,
+    -0x1.62e42cp4
+  },
+  { // Entry 387
+    0x1.ffff820b9b9fbc6b5dd9c276569c9e77p30,
+    0x1.62e42cp4
+  },
+  { // Entry 388
+    -0x1.00000081e308873bf3c21c42db0354c7p15,
+    -0x1.62e430p3
+  },
+  { // Entry 389
+    0x1.00000081e308873bf3c21c42db0354c7p15,
+    0x1.62e430p3
+  },
+  { // Entry 390
+    -0x1.ffffe103c7009212034b389759a93fddp14,
+    -0x1.62e42ep3
+  },
+  { // Entry 391
+    0x1.ffffe103c7009212034b389759a93fddp14,
+    0x1.62e42ep3
+  },
+  { // Entry 392
+    -0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    -0x1.62e42cp3
+  },
+  { // Entry 393
+    0x1.ffffc103c9f0158d22d963e5b764c750p14,
+    0x1.62e42cp3
+  },
+  { // Entry 394
+    -0x1.fffe0082e38b59068dc66cd507e027edp6,
+    -0x1.62e430p2
+  },
+  { // Entry 395
+    0x1.fffe0082e38b59068dc66cd507e027edp6,
+    0x1.62e430p2
+  },
+  { // Entry 396
+    -0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    -0x1.62e42ep2
+  },
+  { // Entry 397
+    0x1.fffdf082d3c741b1c6dfdaeedbc1cf8ep6,
+    0x1.62e42ep2
+  },
+  { // Entry 398
+    -0x1.fffde082c48329d920ae3d83c4008840p6,
+    -0x1.62e42cp2
+  },
+  { // Entry 399
+    0x1.fffde082c48329d920ae3d83c4008840p6,
+    0x1.62e42cp2
+  },
+  { // Entry 400
+    -0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    -0x1.62e430p1
+  },
+  { // Entry 401
+    0x1.fe000041b2f5bafed9bb81482ca2b8c4p2,
+    0x1.62e430p1
+  },
+  { // Entry 402
+    -0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    -0x1.62e42ep1
+  },
+  { // Entry 403
+    0x1.fdfff839b304a63e7b93e68eccb8b8e4p2,
+    0x1.62e42ep1
+  },
+  { // Entry 404
+    -0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    -0x1.62e42cp1
+  },
+  { // Entry 405
+    0x1.fdfff031b333717da1077c4a50b5cc66p2,
+    0x1.62e42cp1
+  },
+  { // Entry 406
+    -0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    -0x1.62e430p0
+  },
+  { // Entry 407
+    0x1.e0000022c44e3be0d8984e0b1642ab45p0,
+    0x1.62e430p0
+  },
+  { // Entry 408
+    -0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    -0x1.62e42ep0
+  },
+  { // Entry 409
+    0x1.dffffbe2c451be866a16d0ecdd9b167ep0,
+    0x1.62e42ep0
+  },
+  { // Entry 410
+    -0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    -0x1.62e42cp0
+  },
+  { // Entry 411
+    0x1.dffff7a2c45cc12beb2065181f0d2495p0,
+    0x1.62e42cp0
+  },
+  { // Entry 412
+    -0x1.8000001473795004b7cd26f5470cab89p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 413
+    0x1.8000001473795004b7cd26f5470cab89p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 414
+    -0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 415
+    0x1.7ffffd94737a03bf6ea2e40ff28f406bp-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 416
+    -0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 417
+    0x1.7ffffb14737c377a230d14a4c1d143bdp-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 418
+    -0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 419
+    0x1.6a09e6794e2f30cb2fc046292efc5a1dp-2,
+    0x1.62e430p-2
+  },
+  { // Entry 420
+    -0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 421
+    0x1.6a09e45a3f55bf3a68e492142f0e7acfp-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 422
+    -0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 423
+    0x1.6a09e23b307ca82c1b1f6dd4a0d1ed94p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 424
+    -0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 425
+    0x1.64ab8f71aebb8d82b05be9a027129269p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 426
+    -0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 427
+    0x1.64ab8d69f9de29ffa2a5944cf26374fap-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 428
+    -0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 429
+    0x1.64ab8b624500dcc74dc5de97a0720aabp-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 430
+    -0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 431
+    0x1.6355e7102bb7d9dbd8b8b0d68c09401bp-4,
+    0x1.62e430p-4
+  },
+  { // Entry 432
+    -0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 433
+    0x1.6355e50e3f6d2cc2dd6e747f61bb8c65p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 434
+    -0x1.6355e30c5322853739b87125ec22bdecp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 435
+    0x1.6355e30c5322853739b87125ec22bdecp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 436
+    -0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 437
+    0x1.63009bb7a0f1fda3e41657180afe2797p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 438
+    -0x1.630099b725ee198cf48f439e2807bf07p-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 439
+    0x1.630099b725ee198cf48f439e2807bf07p-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 440
+    -0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 441
+    0x1.630097b6aaea36d905a1e74a332b0102p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 442
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 443
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 444
+    0.0,
+    0.0
+  },
+  { // Entry 445
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 446
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 447
+    0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    0x1.eb851cp-4
+  },
+  { // Entry 448
+    -0x1.ecb35112d674d05785ec00066c2b3ec8p-4,
+    -0x1.eb851cp-4
+  },
+  { // Entry 449
+    0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    0x1.eb851ep-4
+  },
+  { // Entry 450
+    -0x1.ecb35316874ebf73aba92491a44e079fp-4,
+    -0x1.eb851ep-4
+  },
+  { // Entry 451
+    0x1.ecb3551a3828b6429eb2a33a17713014p-4,
+    0x1.eb8520p-4
+  },
+  { // Entry 452
+    -0x1.ecb3551a3828b6429eb2a33a17713014p-4,
+    -0x1.eb8520p-4
+  },
+  { // Entry 453
+    0x1.0accffddb7a12b4e6a96d72af3961f53p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 454
+    -0x1.0accffddb7a12b4e6a96d72af3961f53p-1,
+    -0x1.fffffep-2
+  },
+  { // Entry 455
+    0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    0x1.p-1
+  },
+  { // Entry 456
+    -0x1.0acd00fe63b96ca357895761ae66224ap-1,
+    -0x1.p-1
+  },
+  { // Entry 457
+    0x1.0acd033fbbeab766f2754da05aade930p-1,
+    0x1.000002p-1
+  },
+  { // Entry 458
+    -0x1.0acd033fbbeab766f2754da05aade930p-1,
+    -0x1.000002p-1
+  },
+  { // Entry 459
+    0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    0x1.fffffep-1
+  },
+  { // Entry 460
+    -0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 461
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 462
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 463
+    0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    0x1.000002p0
+  },
+  { // Entry 464
+    -0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    -0x1.000002p0
+  },
+  { // Entry 465
+    0x1.ab5aa630eb432540ea7a11d9455e5b65p30,
+    0x1.5ffffep4
+  },
+  { // Entry 466
+    -0x1.ab5aa630eb432540ea7a11d9455e5b65p30,
+    -0x1.5ffffep4
+  },
+  { // Entry 467
+    0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    0x1.60p4
+  },
+  { // Entry 468
+    -0x1.ab5adb9c435ff8194ddd9a72c8c01183p30,
+    -0x1.60p4
+  },
+  { // Entry 469
+    0x1.ab5b1107a22a36602250dcbb2b7eed81p30,
+    0x1.600002p4
+  },
+  { // Entry 470
+    -0x1.ab5b1107a22a36602250dcbb2b7eed81p30,
+    -0x1.600002p4
+  },
+  { // Entry 471
+    0x1.226aceedc3b97c2a0dd7e83bf16d5abdp32,
+    0x1.6ffffep4
+  },
+  { // Entry 472
+    -0x1.226aceedc3b97c2a0dd7e83bf16d5abdp32,
+    -0x1.6ffffep4
+  },
+  { // Entry 473
+    0x1.226af33b1fdc0a574c76ab2161309880p32,
+    0x1.70p4
+  },
+  { // Entry 474
+    -0x1.226af33b1fdc0a574c76ab2161309880p32,
+    -0x1.70p4
+  },
+  { // Entry 475
+    0x1.226b1788808844517796616972748648p32,
+    0x1.700002p4
+  },
+  { // Entry 476
+    -0x1.226b1788808844517796616972748648p32,
+    -0x1.700002p4
+  },
+  { // Entry 477
+    0x1.ffff8188b8b59acbb8a36c9f1de4adc7p22,
+    0x1.0a2b20p4
+  },
+  { // Entry 478
+    -0x1.ffff8188b8b59acbb8a36c9f1de4adc7p22,
+    -0x1.0a2b20p4
+  },
+  { // Entry 479
+    0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    0x1.0a2b22p4
+  },
+  { // Entry 480
+    -0x1.ffffc188ace6b110a80fe49615910ff2p22,
+    -0x1.0a2b22p4
+  },
+  { // Entry 481
+    0x1.000000c4548be32ddd1950fdd39f4c49p23,
+    0x1.0a2b24p4
+  },
+  { // Entry 482
+    -0x1.000000c4548be32ddd1950fdd39f4c49p23,
+    -0x1.0a2b24p4
+  },
+  { // Entry 483
+    0x1.ffffbec45834f71f62c471559658238ap10,
+    0x1.0a2b20p3
+  },
+  { // Entry 484
+    -0x1.ffffbec45834f71f62c471559658238ap10,
+    -0x1.0a2b20p3
+  },
+  { // Entry 485
+    0x1.ffffdec455613c8f512d34bec21133e4p10,
+    0x1.0a2b22p3
+  },
+  { // Entry 486
+    -0x1.ffffdec455613c8f512d34bec21133e4p10,
+    -0x1.0a2b22p3
+  },
+  { // Entry 487
+    0x1.fffffec4548d81de03eb840f2501233dp10,
+    0x1.0a2b24p3
+  },
+  { // Entry 488
+    -0x1.fffffec4548d81de03eb840f2501233dp10,
+    -0x1.0a2b24p3
+  },
+  { // Entry 489
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 490
+    -0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 491
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 492
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 493
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 494
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 495
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  },
+  { // Entry 496
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 497
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 498
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 499
+    -0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    -0x1.65a9f6p6
+  },
+  { // Entry 500
+    0x1.fffed83ee2532ac846bdff097cd2f43bp127,
+    0x1.65a9f6p6
+  },
+  { // Entry 501
+    0x1.fffffe00000000055555455555655559p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 502
+    -0x1.fffffe00000000055555455555655559p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 503
+    0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    0x1.p-30
+  },
+  { // Entry 504
+    -0x1.0000000000000002aaaaaaaaaaaaaaacp-30,
+    -0x1.p-30
+  },
+  { // Entry 505
+    0x1.0000020000000002aaaabaaaaacaaaacp-30,
+    0x1.000002p-30
+  },
+  { // Entry 506
+    -0x1.0000020000000002aaaabaaaaacaaaacp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 507
+    0x1.fffffe0155555155999d984449720172p-16,
+    0x1.fffffep-16
+  },
+  { // Entry 508
+    -0x1.fffffe0155555155999d984449720172p-16,
+    -0x1.fffffep-16
+  },
+  { // Entry 509
+    0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    0x1.p-15
+  },
+  { // Entry 510
+    -0x1.00000000aaaaaaaaccccccccd00d00d0p-15,
+    -0x1.p-15
+  },
+  { // Entry 511
+    0x1.00000200aaaaaeaaccd4ce222abd00fdp-15,
+    0x1.000002p-15
+  },
+  { // Entry 512
+    -0x1.00000200aaaaaeaaccd4ce222abd00fdp-15,
+    -0x1.000002p-15
+  },
+  { // Entry 513
+    0x1.0002a9acc4cd92374b92f33d0d8e44f7p-6,
+    0x1.fffffep-7
+  },
+  { // Entry 514
+    -0x1.0002a9acc4cd92374b92f33d0d8e44f7p-6,
+    -0x1.fffffep-7
+  },
+  { // Entry 515
+    0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    0x1.p-6
+  },
+  { // Entry 516
+    -0x1.0002aaaccccd9cd9fbd8a7d1dc72c44bp-6,
+    -0x1.p-6
+  },
+  { // Entry 517
+    0x1.0002acacdccdb24f5ce4216260c9d73ep-6,
+    0x1.000002p-6
+  },
+  { // Entry 518
+    -0x1.0002acacdccdb24f5ce4216260c9d73ep-6,
+    -0x1.000002p-6
+  },
+  { // Entry 519
+    0x1.000aa9ccad0025af274480ba84b0fbbcp-5,
+    0x1.fffffep-6
+  },
+  { // Entry 520
+    -0x1.000aa9ccad0025af274480ba84b0fbbcp-5,
+    -0x1.fffffep-6
+  },
+  { // Entry 521
+    0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    0x1.p-5
+  },
+  { // Entry 522
+    -0x1.000aaacccd00d03b3cb23dfecf8fcbdcp-5,
+    -0x1.p-5
+  },
+  { // Entry 523
+    0x1.000aaccd0d0226136f8e122926144f90p-5,
+    0x1.000002p-5
+  },
+  { // Entry 524
+    -0x1.000aaccd0d0226136f8e122926144f90p-5,
+    -0x1.000002p-5
+  },
+  { // Entry 525
+    0x1.002aabcc59c3209063dc64ea2e03bf70p-4,
+    0x1.fffffep-5
+  },
+  { // Entry 526
+    -0x1.002aabcc59c3209063dc64ea2e03bf70p-4,
+    -0x1.fffffep-5
+  },
+  { // Entry 527
+    0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    0x1.p-4
+  },
+  { // Entry 528
+    -0x1.002aacccd9cdcb1600814d8ee0ea5e98p-4,
+    -0x1.p-4
+  },
+  { // Entry 529
+    0x1.002aaecdd9e32321b9d285e5bac4a4bdp-4,
+    0x1.000002p-4
+  },
+  { // Entry 530
+    -0x1.002aaecdd9e32321b9d285e5bac4a4bdp-4,
+    -0x1.000002p-4
+  },
+  { // Entry 531
+    0x1.00aacbce0c844e1659887b1aa3a95e84p-3,
+    0x1.fffffep-4
+  },
+  { // Entry 532
+    -0x1.00aacbce0c844e1659887b1aa3a95e84p-3,
+    -0x1.fffffep-4
+  },
+  { // Entry 533
+    0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    0x1.p-3
+  },
+  { // Entry 534
+    -0x1.00aaccd00d2f0d82badd7396c439091ep-3,
+    -0x1.p-3
+  },
+  { // Entry 535
+    0x1.00aaced40e8498637f252d2fe50c3df3p-3,
+    0x1.000002p-3
+  },
+  { // Entry 536
+    -0x1.00aaced40e8498637f252d2fe50c3df3p-3,
+    -0x1.000002p-3
+  },
+  { // Entry 537
+    0x1.02accc94fd5fc9d5c6d93f41fe780d47p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 538
+    -0x1.02accc94fd5fc9d5c6d93f41fe780d47p-2,
+    -0x1.fffffep-3
+  },
+  { // Entry 539
+    0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    0x1.p-2
+  },
+  { // Entry 540
+    -0x1.02accd9d08101e6674cdf3fc8eaabf2ap-2,
+    -0x1.p-2
+  },
+  { // Entry 541
+    0x1.02accfad1d70f80837554f9fbb4fbbb9p-2,
+    0x1.000002p-2
+  },
+  { // Entry 542
+    -0x1.02accfad1d70f80837554f9fbb4fbbb9p-2,
+    -0x1.000002p-2
+  },
+  { // Entry 543
+    0x1.d03cf2784edbd911feefcda4d65799f9p1,
+    0x1.fffffep0
+  },
+  { // Entry 544
+    -0x1.d03cf2784edbd911feefcda4d65799f9p1,
+    -0x1.fffffep0
+  },
+  { // Entry 545
+    0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    0x1.p1
+  },
+  { // Entry 546
+    -0x1.d03cf63b6e19f6f34c802c96200970efp1,
+    -0x1.p1
+  },
+  { // Entry 547
+    0x1.d03cfdc1acabf591817690cd031d2cc7p1,
+    0x1.000002p1
+  },
+  { // Entry 548
+    -0x1.d03cfdc1acabf591817690cd031d2cc7p1,
+    -0x1.000002p1
+  },
+  { // Entry 549
+    0x1.b4a37963495a7a1c36845b0346599916p4,
+    0x1.fffffep1
+  },
+  { // Entry 550
+    -0x1.b4a37963495a7a1c36845b0346599916p4,
+    -0x1.fffffep1
+  },
+  { // Entry 551
+    0x1.b4a3803703630c8fe70261d92e563a88p4,
+    0x1.p2
+  },
+  { // Entry 552
+    -0x1.b4a3803703630c8fe70261d92e563a88p4,
+    -0x1.p2
+  },
+  { // Entry 553
+    0x1.b4a38dde77c6101fbf8ab4c24ce6ac27p4,
+    0x1.000002p2
+  },
+  { // Entry 554
+    -0x1.b4a38dde77c6101fbf8ab4c24ce6ac27p4,
+    -0x1.000002p2
+  },
+  { // Entry 555
+    0x1.749e996ff7805133d5d6b4402bd52f34p10,
+    0x1.fffffep2
+  },
+  { // Entry 556
+    -0x1.749e996ff7805133d5d6b4402bd52f34p10,
+    -0x1.fffffep2
+  },
+  { // Entry 557
+    0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    0x1.p3
+  },
+  { // Entry 558
+    -0x1.749ea514eca65d06ea7688aff46cfe09p10,
+    -0x1.p3
+  },
+  { // Entry 559
+    0x1.749ebc5ed809ebabcca514f4a486c5a8p10,
+    0x1.000002p3
+  },
+  { // Entry 560
+    -0x1.749ebc5ed809ebabcca514f4a486c5a8p10,
+    -0x1.000002p3
+  },
+  { // Entry 561
+    0x1.0f2eac1794b52d4201f8831417012cc1p22,
+    0x1.fffffep3
+  },
+  { // Entry 562
+    -0x1.0f2eac1794b52d4201f8831417012cc1p22,
+    -0x1.fffffep3
+  },
+  { // Entry 563
+    0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    0x1.p4
+  },
+  { // Entry 564
+    -0x1.0f2ebd0a7ffe3de6ac939fced0122707p22,
+    -0x1.p4
+  },
+  { // Entry 565
+    0x1.0f2edef059bdeb7814367009089b255ap22,
+    0x1.000002p4
+  },
+  { // Entry 566
+    -0x1.0f2edef059bdeb7814367009089b255ap22,
+    -0x1.000002p4
+  },
+  { // Entry 567
+    0x1.1f43d8dc3908b8ed87a5abc6c3ed2c73p45,
+    0x1.fffffep4
+  },
+  { // Entry 568
+    -0x1.1f43d8dc3908b8ed87a5abc6c3ed2c73p45,
+    -0x1.fffffep4
+  },
+  { // Entry 569
+    0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    0x1.p5
+  },
+  { // Entry 570
+    -0x1.1f43fcc4b662c7d847884009ffe4c4c3p45,
+    -0x1.p5
+  },
+  { // Entry 571
+    0x1.1f444495be8e1616a1e5e37a356cd622p45,
+    0x1.000002p5
+  },
+  { // Entry 572
+    -0x1.1f444495be8e1616a1e5e37a356cd622p45,
+    -0x1.000002p5
+  },
+  { // Entry 573
+    0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    0x1.fffffep5
+  },
+  { // Entry 574
+    -0x1.4259323902dbc6e62e3e07ce26cd904cp91,
+    -0x1.fffffep5
+  },
+  { // Entry 575
+    0x1.425982cf597cd205ce3d5b4edb031756p91,
+    0x1.p6
+  },
+  { // Entry 576
+    -0x1.425982cf597cd205ce3d5b4edb031756p91,
+    -0x1.p6
+  },
+  { // Entry 577
+    0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    0x1.000002p6
+  },
+  { // Entry 578
+    -0x1.425a23fc432fb5d556006a4d8e7ee11bp91,
+    -0x1.000002p6
+  },
+  { // Entry 579
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 580
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 581
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 582
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 583
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 584
+    HUGE_VALF,
+    0x1.fffffep127
+  },
+  { // Entry 585
+    HUGE_VALF,
+    0x1.fffffcp127
+  },
+  { // Entry 586
+    0x1.718f47f73f26d7350c83f4c71e2d335ep3,
+    0x1.921fb6p1
+  },
+  { // Entry 587
+    0x1.2690f74d668ce2b3a755fcc5d03d001ap1,
+    0x1.921fb6p0
+  },
+  { // Entry 588
+    0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    0x1.000002p0
+  },
+  { // Entry 589
+    0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    0x1.p0
+  },
+  { // Entry 590
+    0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    0x1.fffffep-1
+  },
+  { // Entry 591
+    0x1.bcc271add0bab156a8d0a0df56b0db93p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 592
+    0x1.000002p-126,
+    0x1.000002p-126
+  },
+  { // Entry 593
+    0x1.p-126,
+    0x1.p-126
+  },
+  { // Entry 594
+    0x1.fffffcp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 595
+    0x1.fffff8p-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 596
+    0x1.p-148,
+    0x1.p-148
+  },
+  { // Entry 597
+    0x1.p-149,
+    0x1.p-149
+  },
+  { // Entry 598
+    0.0,
+    0.0f
+  },
+  { // Entry 599
+    -0.0,
+    -0.0f
+  },
+  { // Entry 600
+    -0x1.p-149,
+    -0x1.p-149
+  },
+  { // Entry 601
+    -0x1.p-148,
+    -0x1.p-148
+  },
+  { // Entry 602
+    -0x1.fffff8p-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 603
+    -0x1.fffffcp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 604
+    -0x1.p-126,
+    -0x1.p-126
+  },
+  { // Entry 605
+    -0x1.000002p-126,
+    -0x1.000002p-126
+  },
+  { // Entry 606
+    -0x1.bcc271add0bab156a8d0a0df56b0db93p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 607
+    -0x1.2cd9fab9e4439e75ab2524ffce0283e9p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 608
+    -0x1.2cd9fc44eb9825a80249487f064ffd5cp0,
+    -0x1.p0
+  },
+  { // Entry 609
+    -0x1.2cd9ff5afa44ba9aa6eb599be725c9bap0,
+    -0x1.000002p0
+  },
+  { // Entry 610
+    -0x1.2690f74d668ce2b3a755fcc5d03d001ap1,
+    -0x1.921fb6p0
+  },
+  { // Entry 611
+    -0x1.718f47f73f26d7350c83f4c71e2d335ep3,
+    -0x1.921fb6p1
+  },
+  { // Entry 612
+    -HUGE_VALF,
+    -0x1.fffffcp127
+  },
+  { // Entry 613
+    -HUGE_VALF,
+    -0x1.fffffep127
+  },
+  { // Entry 614
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 615
+    0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    0x1.65a9f8p6
+  },
+  { // Entry 616
+    -0x1.ffffd83e8e7281a45e432bd58cbbc38ap127,
+    -0x1.65a9f8p6
+  },
+  { // Entry 617
+    HUGE_VALF,
+    0x1.65a9fap6
+  },
+  { // Entry 618
+    -HUGE_VALF,
+    -0x1.65a9fap6
+  }
+};
diff --git a/tests/math_data/sqrt_intel_data.h b/tests/math_data/sqrt_intel_data.h
new file mode 100644
index 0000000..c3417b8
--- /dev/null
+++ b/tests/math_data/sqrt_intel_data.h
@@ -0,0 +1,718 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_sqrt_intel_data[] = {
+  { // Entry 0
+    0x1.00000000000007ffffffffffffe0p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 1
+    0x1.00000000000007ffffffffffffe0p-5,
+    0x1.0000000000001p-10
+  },
+  { // Entry 2
+    0x1.00000000000007ffffffffffffe0p-20,
+    0x1.0000000000001p-40
+  },
+  { // Entry 3
+    0x1.6a09e667f3bcd459022e5304d0b08199p-511,
+    0x1.0000000000001p-1021
+  },
+  { // Entry 4
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 5
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 6
+    0x1.00000000000007ffffffffffffe0p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 7
+    0x1.0000000000000fffffffffffff80p0,
+    0x1.0000000000002p0
+  },
+  { // Entry 8
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p-3,
+    0x1.0000000000003p-5
+  },
+  { // Entry 9
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p-511,
+    0x1.0000000000003p-1021
+  },
+  { // Entry 10
+    0x1.00000000000017fffffffffffee0p-511,
+    0x1.0000000000003p-1022
+  },
+  { // Entry 11
+    0x1.6a09e667f3bceaf9a094d2409bd702e2p0,
+    0x1.0000000000003p1
+  },
+  { // Entry 12
+    0x1.00000000000037fffffffffff9e0p-3,
+    0x1.0000000000007p-6
+  },
+  { // Entry 13
+    0x1.00000000000037fffffffffff9e0p-511,
+    0x1.0000000000007p-1022
+  },
+  { // Entry 14
+    0x1.00000000000077ffffffffffe3e0p-1,
+    0x1.000000000000fp-2
+  },
+  { // Entry 15
+    0x1.6a09e667f40bfb3319b85c0967d96777p-21,
+    0x1.00000000007p-41
+  },
+  { // Entry 16
+    0x1.0000003ffffff8000001ffffff60p-10,
+    0x1.0000008p-20
+  },
+  { // Entry 17
+    0x1.0000007fffffe000000ffffff6000006p-20,
+    0x1.0000010p-40
+  },
+  { // Entry 18
+    0x1.000000ffffef78001087ff66d3e1aa74p-503,
+    0x1.000001ffffdffp-1006
+  },
+  { // Entry 19
+    0x1.000000ffffef8000107fff676001a8dfp-509,
+    0x1.000001ffffep-1018
+  },
+  { // Entry 20
+    0x1.000001fffffe000003fffff600001bffp50,
+    0x1.0000040p100
+  },
+  { // Entry 21
+    0x1.000001fffffe880002effff90be01238p-10,
+    0x1.0000040000011p-20
+  },
+  { // Entry 22
+    0x1.6a0a40db7d51f00038bb4d171626c123p-500,
+    0x1.00007feafp-999
+  },
+  { // Entry 23
+    0x1.6a2bd5be688300293f34c09a864348a7p-511,
+    0x1.003p-1021
+  },
+  { // Entry 24
+    0x1.6a6521b171386b3e9c9708c18094f81ep1,
+    0x1.0081159eb7531p3
+  },
+  { // Entry 25
+    0x1.6b20018577e83a548e15ae72516a45e5p1,
+    0x1.0189e42871b67p3
+  },
+  { // Entry 26
+    0x1.030dc4eb8784b800006b31393def4b78p-5,
+    0x1.0624dd322b9bdp-10
+  },
+  { // Entry 27
+    0x1.030dc4f1684a3000002a2118b9ff4fc3p-5,
+    0x1.0624dd3e110d4p-10
+  },
+  { // Entry 28
+    0x1.030dc4f1696f97ffffdbf85c70af7a32p-5,
+    0x1.0624dd3e135f1p-10
+  },
+  { // Entry 29
+    0x1.030dc4fce267800000008a6d267d447fp-5,
+    0x1.0624dd554b60ap-10
+  },
+  { // Entry 30
+    0x1.6e9b2675a66267ffc501a2a352d80cadp-11,
+    0x1.068p-21
+  },
+  { // Entry 31
+    0x1.6e9b2675a66267ffc501a2a352d80cadp-18,
+    0x1.068p-35
+  },
+  { // Entry 32
+    0x1.6ede29b025aaf0011c319ebac8dce9fap-11,
+    0x1.06ep-21
+  },
+  { // Entry 33
+    0x1.717983890b6a97fffff1c9e6db43dc37p48,
+    0x1.0a9fc36f5705dp97
+  },
+  { // Entry 34
+    0x1.752deb01e1aa48002dcf5a4f55adabf7p-4,
+    0x1.0fff6b87f90p-7
+  },
+  { // Entry 35
+    0x1.76356020885cca53989372a8049c6ccbp-11,
+    0x1.118p-21
+  },
+  { // Entry 36
+    0x1.7b63945a7c4cb40027ac4d7964bdfdffp-11,
+    0x1.192p-21
+  },
+  { // Entry 37
+    0x1.83821c9ec9b2a8003b649ec5754fa2e6p-6,
+    0x1.2549525495251p-11
+  },
+  { // Entry 38
+    0x1.8ac40868f92c17ff0ecf9e6c802c000ap-11,
+    0x1.306p-21
+  },
+  { // Entry 39
+    0x1.1a9dc8f6df10380eb98f9c8f8ada2dc3p-10,
+    0x1.380p-20
+  },
+  { // Entry 40
+    0x1.1a9dc8f6df10380eb98f9c8f8ada2dc3p-20,
+    0x1.380p-40
+  },
+  { // Entry 41
+    0x1.1d43ad1c267397ff000366e504ec0904p0,
+    0x1.3ddfc154bf689p0
+  },
+  { // Entry 42
+    0x1.2d4d2aa66779740440a7ac683ca92be7p0,
+    0x1.629e8d8dfe88ep0
+  },
+  { // Entry 43
+    0x1.ae89f995ad3ab3fed29f3cdde669565cp-1,
+    0x1.6a09e667f3bc9p-1
+  },
+  { // Entry 44
+    0x1.bb67ae8584caa73b25742d7078b83b89p-537,
+    0x1.8p-1073
+  },
+  { // Entry 45
+    0x1.bb67ae86abb307ffff9450222403ce3fp0,
+    0x1.80000001fecb9p1
+  },
+  { // Entry 46
+    0x1.404b92fd6a8120001cc2a21eb82dc383p-1,
+    0x1.90bd05c8ff254p-2
+  },
+  { // Entry 47
+    0x1.43d1363d61aec800006b07fe0fefdfa2p-2,
+    0x1.999999d880368p-4
+  },
+  { // Entry 48
+    0x1.4e78ac22c6f5e800ffc121b0def932c0p5,
+    0x1.b4ff1a0c9382fp10
+  },
+  { // Entry 49
+    0x1.50144b1c72dd17ff0012ebc586f4e10fp-519,
+    0x1.b93546c68p-1038
+  },
+  { // Entry 50
+    0x1.dfd052dbe76857ff0b1587ce79a18a73p7,
+    0x1.c1a69fccd6111p15
+  },
+  { // Entry 51
+    0x1.e4826468545d31f66cbd21db9f6249b7p-1,
+    0x1.ca7ea70a502bep-1
+  },
+  { // Entry 52
+    0x1.e96948d224f0585c0f7a85d30932126dp1,
+    0x1.d3d1b1bfd11bbp3
+  },
+  { // Entry 53
+    0x1.ee51da20312bfe8a4722b6c085901297p-512,
+    0x1.dd3fffffffffep-1023
+  },
+  { // Entry 54
+    0x1.5f744159f7e5efff106d1c5d5d64aa8dp-10,
+    0x1.e28p-20
+  },
+  { // Entry 55
+    0x1.fdcecc6f3d49e79e3d375b22e0b9f4b1p-11,
+    0x1.fbap-21
+  },
+  { // Entry 56
+    0x1.fe35a055fc4be7fc5f7d57d28e7bd1a7p0,
+    0x1.fc6cdb0930a24p1
+  },
+  { // Entry 57
+    0x1.feadd22799ac4801f8159ee8a6db5ef2p-1,
+    0x1.fd5c83adbf2a9p-1
+  },
+  { // Entry 58
+    0x1.ffbffbff80080000000200300a02205cp-5,
+    0x1.ff80000000380p-9
+  },
+  { // Entry 59
+    0x1.ffefffbffdffdbfe9fef7f2bf4ab6197p-512,
+    0x1.ffdfffffffffep-1023
+  },
+  { // Entry 60
+    0x1.ffff7fffeffff3fffcbffecfff75ffc0p-21,
+    0x1.fffefffffffffp-41
+  },
+  { // Entry 61
+    0x1.fffff3ffffdbf7ff27cff9aa4fbac71dp-21,
+    0x1.ffffe7fffffffp-41
+  },
+  { // Entry 62
+    0x1.fffff3ffffdbf7ff27cff9aa4fbac71dp-23,
+    0x1.ffffe7fffffffp-45
+  },
+  { // Entry 63
+    0x1.ffffff800000e0000037ffffdcffffdep-488,
+    0x1.ffffff000001ep-975
+  },
+  { // Entry 64
+    0x1.ffffff8000010000003fffffcfffffd4p-26,
+    0x1.ffffff0000022p-51
+  },
+  { // Entry 65
+    0x1.fffffff9fffff7f6ffffe7e4ffef939ap-21,
+    0x1.fffffff3fffffp-41
+  },
+  { // Entry 66
+    0x1.fffffffe000017ff000017feff7023fep-5,
+    0x1.fffffffc00003p-9
+  },
+  { // Entry 67
+    0x1.fffffffe000017ff000017feff7023fep-6,
+    0x1.fffffffc00003p-11
+  },
+  { // Entry 68
+    0x1.fffffffe000017ff000017feff7023fep-21,
+    0x1.fffffffc00003p-41
+  },
+  { // Entry 69
+    0x1.fffffffe000017ff000017feff7023fep-156,
+    0x1.fffffffc00003p-311
+  },
+  { // Entry 70
+    0x1.fffffffe000017ff000017feff7023fep-511,
+    0x1.fffffffc00003p-1021
+  },
+  { // Entry 71
+    0x1.fffffffe3ffff7ff3bfff8ff546ff6cfp-21,
+    0x1.fffffffc7ffffp-41
+  },
+  { // Entry 72
+    0x1.6a09e667f3b858019b5c99e309b9080ap-3,
+    0x1.fffffffffff37p-6
+  },
+  { // Entry 73
+    0x1.fffffffffffd77fffffffffe65efffffp-1,
+    0x1.fffffffffffafp-1
+  },
+  { // Entry 74
+    0x1.fffffffffffd77fffffffffe65efffffp-5,
+    0x1.fffffffffffafp-9
+  },
+  { // Entry 75
+    0x1.fffffffffffd77fffffffffe65efffffp-511,
+    0x1.fffffffffffafp-1021
+  },
+  { // Entry 76
+    0x1.ffffffffffff37ffffffffffd8efffffp1,
+    0x1.fffffffffffe7p3
+  },
+  { // Entry 77
+    0x1.ffffffffffffefffffffffffffbfffffp-4,
+    0x1.ffffffffffffep-7
+  },
+  { // Entry 78
+    0x1.ffffffffffffefffffffffffffbfffffp-21,
+    0x1.ffffffffffffep-41
+  },
+  { // Entry 79
+    0x1.ffffffffffffefffffffffffffbfffffp-511,
+    0x1.ffffffffffffep-1021
+  },
+  { // Entry 80
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 81
+    0x1.fffffffffffff7ffffffffffffefffffp-4,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 82
+    0x1.fffffffffffff7ffffffffffffefffffp-21,
+    0x1.fffffffffffffp-41
+  },
+  { // Entry 83
+    0x1.fffffffffffff7ffffffffffffefffffp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 84
+    0x1.306fe0a31b71419ddec788789fb4580ap-1,
+    0x1.6a09e667f3bcap-2
+  },
+  { // Entry 85
+    0x1.306fe0a31b71485806addf2d8b5a8b60p-1,
+    0x1.6a09e667f3bcbp-2
+  },
+  { // Entry 86
+    0x1.306fe0a31b714f122e9435e276dab0b9p-1,
+    0x1.6a09e667f3bccp-2
+  },
+  { // Entry 87
+    0x1.306fe0a31b7155cc567a8c976234c817p-1,
+    0x1.6a09e667f3bcdp-2
+  },
+  { // Entry 88
+    0x1.306fe0a31b715c867e60e34c4d68d179p-1,
+    0x1.6a09e667f3bcep-2
+  },
+  { // Entry 89
+    0x1.ae89f995ad3abd8251a455b971a538dbp-1,
+    0x1.6a09e667f3bcap-1
+  },
+  { // Entry 90
+    0x1.ae89f995ad3ac705d0a96e94fcab4a1ap-1,
+    0x1.6a09e667f3bcbp-1
+  },
+  { // Entry 91
+    0x1.ae89f995ad3ad0894fae8770877b8a1bp-1,
+    0x1.6a09e667f3bccp-1
+  },
+  { // Entry 92
+    0x1.ae89f995ad3ada0cceb3a04c1215f8ddp-1,
+    0x1.6a09e667f3bcdp-1
+  },
+  { // Entry 93
+    0x1.ae89f995ad3ae3904db8b9279c7a965fp-1,
+    0x1.6a09e667f3bcep-1
+  },
+  { // Entry 94
+    0x1.306fe0a31b71419ddec788789fb4580ap0,
+    0x1.6a09e667f3bcap0
+  },
+  { // Entry 95
+    0x1.306fe0a31b71485806addf2d8b5a8b60p0,
+    0x1.6a09e667f3bcbp0
+  },
+  { // Entry 96
+    0x1.306fe0a31b714f122e9435e276dab0b9p0,
+    0x1.6a09e667f3bccp0
+  },
+  { // Entry 97
+    0x1.306fe0a31b7155cc567a8c976234c817p0,
+    0x1.6a09e667f3bcdp0
+  },
+  { // Entry 98
+    0x1.306fe0a31b715c867e60e34c4d68d179p0,
+    0x1.6a09e667f3bcep0
+  },
+  { // Entry 99
+    0x1.ae89f995ad3abd8251a455b971a538dbp0,
+    0x1.6a09e667f3bcap1
+  },
+  { // Entry 100
+    0x1.ae89f995ad3ac705d0a96e94fcab4a1ap0,
+    0x1.6a09e667f3bcbp1
+  },
+  { // Entry 101
+    0x1.ae89f995ad3ad0894fae8770877b8a1bp0,
+    0x1.6a09e667f3bccp1
+  },
+  { // Entry 102
+    0x1.ae89f995ad3ada0cceb3a04c1215f8ddp0,
+    0x1.6a09e667f3bcdp1
+  },
+  { // Entry 103
+    0x1.ae89f995ad3ae3904db8b9279c7a965fp0,
+    0x1.6a09e667f3bcep1
+  },
+  { // Entry 104
+    0x1.fffffffffffff7ffffffffffffefffffp-4,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 105
+    0x1.p-3,
+    0x1.0p-6
+  },
+  { // Entry 106
+    0x1.00000000000007ffffffffffffe0p-3,
+    0x1.0000000000001p-6
+  },
+  { // Entry 107
+    0x1.6a09e667f3bcc3608b617397f7660a23p-3,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 108
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-3,
+    0x1.0p-5
+  },
+  { // Entry 109
+    0x1.6a09e667f3bcd459022e5304d0b08199p-3,
+    0x1.0000000000001p-5
+  },
+  { // Entry 110
+    0x1.fffffffffffff7ffffffffffffefffffp-3,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 111
+    0x1.p-2,
+    0x1.0p-4
+  },
+  { // Entry 112
+    0x1.00000000000007ffffffffffffe0p-2,
+    0x1.0000000000001p-4
+  },
+  { // Entry 113
+    0x1.6a09e667f3bcc3608b617397f7660a23p-2,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 114
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-2,
+    0x1.0p-3
+  },
+  { // Entry 115
+    0x1.6a09e667f3bcd459022e5304d0b08199p-2,
+    0x1.0000000000001p-3
+  },
+  { // Entry 116
+    0x1.fffffffffffff7ffffffffffffefffffp-2,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 117
+    0x1.p-1,
+    0x1.0p-2
+  },
+  { // Entry 118
+    0x1.00000000000007ffffffffffffe0p-1,
+    0x1.0000000000001p-2
+  },
+  { // Entry 119
+    0x1.6a09e667f3bcc3608b617397f7660a23p-1,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 120
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.0p-1
+  },
+  { // Entry 121
+    0x1.6a09e667f3bcd459022e5304d0b08199p-1,
+    0x1.0000000000001p-1
+  },
+  { // Entry 122
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 123
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 124
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 125
+    0x1.6a09e667f3bcc3608b617397f7660a23p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 126
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.0p1
+  },
+  { // Entry 127
+    0x1.6a09e667f3bcd459022e5304d0b08199p0,
+    0x1.0000000000001p1
+  },
+  { // Entry 128
+    0x1.fffffffffffff7ffffffffffffefffffp0,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 129
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 130
+    0x1.00000000000007ffffffffffffe0p1,
+    0x1.0000000000001p2
+  },
+  { // Entry 131
+    -0.0,
+    -0.0
+  },
+  { // Entry 132
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 133
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 134
+    0x1.p-511,
+    0x1.0p-1022
+  },
+  { // Entry 135
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 136
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 137
+    0x1.279a74590331d74bc03dae7e16ded15bp-512,
+    0x1.5555555555558p-1024
+  },
+  { // Entry 138
+    0x1.a20bd700c2c3e64872281df887e3cbf1p-512,
+    0x1.5555555555556p-1023
+  },
+  { // Entry 139
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 140
+    0x1.ffffffffece09fffffa494f9e6fc95edp-1,
+    0x1.ffffffffd9c14p-1
+  },
+  { // Entry 141
+    0x1.ffffffffece0a7ffffa49546646c95f1p-1,
+    0x1.ffffffffd9c15p-1
+  },
+  { // Entry 142
+    0x1.ffffffffece0afffffa49592e1bc95f5p-1,
+    0x1.ffffffffd9c16p-1
+  },
+  { // Entry 143
+    0x1.ffffffffece0b7ffffa495df5eec95fap-1,
+    0x1.ffffffffd9c17p-1
+  },
+  { // Entry 144
+    0x1.ffffffffece0bfffffa4962bdbfc95fep-1,
+    0x1.ffffffffd9c18p-1
+  },
+  { // Entry 145
+    0x1.ffffffffeae35fffff9092a326fb67c8p-1,
+    0x1.ffffffffd5c6cp-1
+  },
+  { // Entry 146
+    0x1.ffffffffeae367ffff9092f7996b67cep-1,
+    0x1.ffffffffd5c6dp-1
+  },
+  { // Entry 147
+    0x1.ffffffffeae36fffff90934c0bbb67d3p-1,
+    0x1.ffffffffd5c6ep-1
+  },
+  { // Entry 148
+    0x1.ffffffffeae377ffff9093a07deb67d8p-1,
+    0x1.ffffffffd5c6fp-1
+  },
+  { // Entry 149
+    0x1.ffffffffeae37fffff9093f4effb67ddp-1,
+    0x1.ffffffffd5c70p-1
+  },
+  { // Entry 150
+    0x1.fffffffffffff7ffffffffffffefffffp511,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 151
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 152
+    0x1.fffffffffffff7ffffffffffffefffffp511,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 153
+    0x1.ffffffffffffefffffffffffffbfffffp511,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 154
+    0x1.c5bf891b4ef6a7fc7dc11ccf9559536ep0,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 155
+    0x1.40d931ff627057a2dddf7c87edb63664p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 156
+    0x1.00000000000007ffffffffffffe0p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 157
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 158
+    0x1.fffffffffffff7ffffffffffffefffffp-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 159
+    0x1.c5bf891b4ef6a7fc7dc11ccf9559536ep-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 160
+    0x1.00000000000007ffffffffffffe0p-511,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 161
+    0x1.p-511,
+    0x1.0p-1022
+  },
+  { // Entry 162
+    0x1.ffffffffffffefffffffffffffbfffffp-512,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 163
+    0x1.ffffffffffffdffffffffffffeffffffp-512,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 164
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-537,
+    0x1.0p-1073
+  },
+  { // Entry 165
+    0x1.p-537,
+    0x1.0p-1074
+  },
+  { // Entry 166
+    0.0,
+    0.0
+  },
+  { // Entry 167
+    -0.0,
+    -0.0
+  },
+  { // Entry 168
+    0x1.p1,
+    0x1.0p2
+  },
+  { // Entry 169
+    0x1.p2,
+    0x1.0p4
+  },
+  { // Entry 170
+    0x1.80p1,
+    0x1.2p3
+  },
+  { // Entry 171
+    0x1.40p2,
+    0x1.9p4
+  },
+  { // Entry 172
+    0x1.p-1,
+    0x1.0p-2
+  },
+  { // Entry 173
+    0x1.c0p2,
+    0x1.880p5
+  },
+  { // Entry 174
+    0x1.40p3,
+    0x1.9p6
+  }
+};
diff --git a/tests/math_data/sqrtf_intel_data.h b/tests/math_data/sqrtf_intel_data.h
new file mode 100644
index 0000000..bd07143
--- /dev/null
+++ b/tests/math_data/sqrtf_intel_data.h
@@ -0,0 +1,710 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_sqrtf_intel_data[] = {
+  { // Entry 0
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 1
+    0x1.p-10,
+    0x1.p-20
+  },
+  { // Entry 2
+    0x1.000000ffffff8000007fffff600000dfp-1,
+    0x1.000002p-2
+  },
+  { // Entry 3
+    0x1.000000ffffff8000007fffff600000dfp-20,
+    0x1.000002p-40
+  },
+  { // Entry 4
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 5
+    0x1.6a09eaa61169a3b76f99ea0d364efd91p-63,
+    0x1.000006p-125
+  },
+  { // Entry 6
+    0x1.6a0a0584cc337abc8740253db45a12f6p-3,
+    0x1.00002cp-5
+  },
+  { // Entry 7
+    0x1.6a0a1ef97b51a8def43dbb5dc7f37ff0p-11,
+    0x1.000050p-21
+  },
+  { // Entry 8
+    0x1.6a0a1ef97b51a8def43dbb5dc7f37ff0p-18,
+    0x1.000050p-35
+  },
+  { // Entry 9
+    0x1.6a0a359a157a0b9bd4ff286a2eab2edfp-21,
+    0x1.000070p-41
+  },
+  { // Entry 10
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-6,
+    0x1.0000fcp-11
+  },
+  { // Entry 11
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-59,
+    0x1.0000fcp-117
+  },
+  { // Entry 12
+    0x1.6a0a9898a74a019a7cc18157814e39d9p-61,
+    0x1.0000fcp-121
+  },
+  { // Entry 13
+    0x1.6a0a9898a74a019a7cc18157814e39d9p1,
+    0x1.0000fcp3
+  },
+  { // Entry 14
+    0x1.6a0ab377552adf71413bdc5fdf2d3e0dp63,
+    0x1.000122p127
+  },
+  { // Entry 15
+    0x1.6a0b1d87f00e99851a9dcb6fb9c2d56ep-3,
+    0x1.0001b8p-5
+  },
+  { // Entry 16
+    0x1.6a0ba98930c5cb58722f06e15c330f95p-1,
+    0x1.00027ep-1
+  },
+  { // Entry 17
+    0x1.6a0bea96a144bf2a9c899380f11039d1p0,
+    0x1.0002dap1
+  },
+  { // Entry 18
+    0x1.6a0d3c935fb77764b4cc3f34e117a891p-49,
+    0x1.0004b8p-97
+  },
+  { // Entry 19
+    0x1.6a0d6700222327f1053e4a429adb015ep-3,
+    0x1.0004f4p-5
+  },
+  { // Entry 20
+    0x1.6a0dc893ce705ac35b85bb49e3aa1badp0,
+    0x1.00057ep1
+  },
+  { // Entry 21
+    0x1.001ffe003ff601bfac107ca6b29a0c31p-20,
+    0x1.0040p-40
+  },
+  { // Entry 22
+    0x1.6a3724d10762c86a71fe557d13336111p-21,
+    0x1.0040p-41
+  },
+  { // Entry 23
+    0x1.6a38a9884557da551f3ec21f785779d7p6,
+    0x1.004226p13
+  },
+  { // Entry 24
+    0x1.6abbeb82dbfd8f20f5923ab389eef7f3p-11,
+    0x1.00fcp-21
+  },
+  { // Entry 25
+    0x1.0085dd004f71f5362dd6a5e09a9cee74p-10,
+    0x1.010cp-20
+  },
+  { // Entry 26
+    0x1.0085dd004f71f5362dd6a5e09a9cee74p-20,
+    0x1.010cp-40
+  },
+  { // Entry 27
+    0x1.6cdb707e0273cc8e2a1d99aa3ad67b66p0,
+    0x1.040062p1
+  },
+  { // Entry 28
+    0x1.6e14fb33af5d199451a44c592d18f9e1p-11,
+    0x1.05c0p-21
+  },
+  { // Entry 29
+    0x1.6e3eedfff2f9d88cc837d36b17bce548p-11,
+    0x1.05fcp-21
+  },
+  { // Entry 30
+    0x1.708713bb31c17627489983a6397ff529p-1,
+    0x1.094250p-1
+  },
+  { // Entry 31
+    0x1.7214c125cb8b2284459daa230a47b9dfp-11,
+    0x1.0b80p-21
+  },
+  { // Entry 32
+    0x1.7528ce694c692ce6ecf340f96e7ac410p-9,
+    0x1.0ff7f8p-17
+  },
+  { // Entry 33
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-11,
+    0x1.0ffcp-21
+  },
+  { // Entry 34
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-49,
+    0x1.0ffcp-97
+  },
+  { // Entry 35
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-63,
+    0x1.0ffcp-125
+  },
+  { // Entry 36
+    0x1.752b9263582a2e3ab2a36ee98ed34a19p-68,
+    0x1.0ffcp-135
+  },
+  { // Entry 37
+    0x1.752bcd629c83e4378e77e8fb09e0dfb8p0,
+    0x1.0ffc56p1
+  },
+  { // Entry 38
+    0x1.752cdbac2ec6fddb69cc2e00bdf1fd02p4,
+    0x1.0ffde0p9
+  },
+  { // Entry 39
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p-4,
+    0x1.0ffe04p-7
+  },
+  { // Entry 40
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p-63,
+    0x1.0ffe04p-125
+  },
+  { // Entry 41
+    0x1.752cf45e665c37b7d77c8c9fb50cd678p1,
+    0x1.0ffe04p3
+  },
+  { // Entry 42
+    0x1.752d6a5c75cf3b16e5de9a228f3ef4dap1,
+    0x1.0ffeb0p3
+  },
+  { // Entry 43
+    0x1.752d6a5c75cf3b16e5de9a228f3ef4dap28,
+    0x1.0ffeb0p57
+  },
+  { // Entry 44
+    0x1.752e105f70189628b0d2d6e17ca2b9c5p1,
+    0x1.0fffa2p3
+  },
+  { // Entry 45
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-4,
+    0x1.0ffff8p-7
+  },
+  { // Entry 46
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-53,
+    0x1.0ffff8p-105
+  },
+  { // Entry 47
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-61,
+    0x1.0ffff8p-121
+  },
+  { // Entry 48
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p-62,
+    0x1.0ffff8p-123
+  },
+  { // Entry 49
+    0x1.752e4b5e4f95f6a45bcfd8721ccbf950p1,
+    0x1.0ffff8p3
+  },
+  { // Entry 50
+    0x1.784220501c1fc95d7e2043339d354588p-1,
+    0x1.148128p-1
+  },
+  { // Entry 51
+    0x1.78cc0a00054d7683165ea2815b6b8d14p-11,
+    0x1.154cp-21
+  },
+  { // Entry 52
+    0x1.7ea8336e0f268f6d05f0934a67b4840ap-32,
+    0x1.1dfd34p-63
+  },
+  { // Entry 53
+    0x1.0ec1270014d42e5424a7780b67b4974cp-10,
+    0x1.1e5cp-20
+  },
+  { // Entry 54
+    0x1.0f7a3974c0a036ead45a0017d4782e1ap-10,
+    0x1.1fe4p-20
+  },
+  { // Entry 55
+    0x1.10207f000077f1ab909fb7b5314f837fp-1,
+    0x1.214512p-2
+  },
+  { // Entry 56
+    0x1.8c4487000042dd2813dd730d1a7f3cabp1,
+    0x1.32b20ap3
+  },
+  { // Entry 57
+    0x1.8dc41537f0b639cb37aedfa8d531d4cfp-51,
+    0x1.3504e0p-101
+  },
+  { // Entry 58
+    0x1.8fae0c15ad389e24852497e80935e4b5p-63,
+    0x1.38p-125
+  },
+  { // Entry 59
+    0x1.95b8c0ffff868994f9ce14b11aa1cfd5p-2,
+    0x1.41810cp-3
+  },
+  { // Entry 60
+    0x1.a644fe00060ec83a5393c3c3cd39fc95p-1,
+    0x1.5c43c4p-1
+  },
+  { // Entry 61
+    0x1.b7070406a4527543e7e1a93c34a2d6f7p-1,
+    0x1.787488p-1
+  },
+  { // Entry 62
+    0x1.3836b2ffff863cbb58a0fb2bcad85474p-1,
+    0x1.7cc560p-2
+  },
+  { // Entry 63
+    0x1.bb67ad5dea55ebaf21faa9bb10eabdf1p-21,
+    0x1.7ffffep-41
+  },
+  { // Entry 64
+    0x1.ce7e96000007bfd0ed97130360c298ddp-1,
+    0x1.a1c692p-1
+  },
+  { // Entry 65
+    0x1.d10d73f80594d3d73fae1f2d6a130247p0,
+    0x1.a668f0p1
+  },
+  { // Entry 66
+    0x1.d94c090afeb02b92e741bb236186bc86p-1,
+    0x1.b58508p-1
+  },
+  { // Entry 67
+    0x1.de4315000013008bf12e454d672ffbdfp-2,
+    0x1.bebf4ap-3
+  },
+  { // Entry 68
+    0x1.e768d28cf1e3981570e875af113546c7p-21,
+    0x1.cffffep-41
+  },
+  { // Entry 69
+    0x1.e7f0cc5a77a783be336f9b5127709acep-1,
+    0x1.d10306p-1
+  },
+  { // Entry 70
+    0x1.f3169029c9867f10142750dc51d5843dp-1,
+    0x1.e6807cp-1
+  },
+  { // Entry 71
+    0x1.f6eb62d27730caff89a8d78c7314934ap-60,
+    0x1.eep-119
+  },
+  { // Entry 72
+    0x1.f8f3935d2ecc7256a14d7c8816275c60p-21,
+    0x1.f1fffep-41
+  },
+  { // Entry 73
+    0x1.f94a8e8524ece8623432ace75571785ep-1,
+    0x1.f2ab9ep-1
+  },
+  { // Entry 74
+    0x1.faa0p-1,
+    0x1.f54e72p-1
+  },
+  { // Entry 75
+    0x1.feefb698fc02e71c2377deb225837a87p-63,
+    0x1.fddffep-125
+  },
+  { // Entry 76
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 77
+    0x1.fffffdfffffefffffefffffebffffe3fp-4,
+    0x1.fffffcp-7
+  },
+  { // Entry 78
+    0x1.fffffdfffffefffffefffffebffffe3fp-21,
+    0x1.fffffcp-41
+  },
+  { // Entry 79
+    0x1.fffffdfffffefffffefffffebffffe3fp-63,
+    0x1.fffffcp-125
+  },
+  { // Entry 80
+    0x1.fffffeffffffbfffffdfffffebfffff1p-4,
+    0x1.fffffep-7
+  },
+  { // Entry 81
+    0x1.fffffeffffffbfffffdfffffebfffff1p0,
+    0x1.fffffep1
+  },
+  { // Entry 82
+    0x1.306fdec8dc9ad32b551e92585b7094f3p-1,
+    0x1.6a09e2p-2
+  },
+  { // Entry 83
+    0x1.306fdfa02198a13d946ad818ec615547p-1,
+    0x1.6a09e4p-2
+  },
+  { // Entry 84
+    0x1.306fe0776695d717e1e11958d56541cfp-1,
+    0x1.6a09e6p-2
+  },
+  { // Entry 85
+    0x1.306fe14eab9274ba3ec43d966959f47cp-1,
+    0x1.6a09e8p-2
+  },
+  { // Entry 86
+    0x1.306fe225f08e7a24ac572c4b8579785fp-1,
+    0x1.6a09eap-2
+  },
+  { // Entry 87
+    0x1.ae89f6f6fe087ac302131f3840da7a90p-1,
+    0x1.6a09e2p-1
+  },
+  { // Entry 88
+    0x1.ae89f8276dea8c7accb82339973f2af9p-1,
+    0x1.6a09e4p-1
+  },
+  { // Entry 89
+    0x1.ae89f957ddcbc6ed986cf1a0e754d170p-1,
+    0x1.6a09e6p-1
+  },
+  { // Entry 90
+    0x1.ae89fa884dac2a1b66fa324394d3c590p-1,
+    0x1.6a09e8p-1
+  },
+  { // Entry 91
+    0x1.ae89fbb8bd8bb6043a288cf0b4eef0aep-1,
+    0x1.6a09eap-1
+  },
+  { // Entry 92
+    0x1.306fdec8dc9ad32b551e92585b7094f3p0,
+    0x1.6a09e2p0
+  },
+  { // Entry 93
+    0x1.306fdfa02198a13d946ad818ec615547p0,
+    0x1.6a09e4p0
+  },
+  { // Entry 94
+    0x1.306fe0776695d717e1e11958d56541cfp0,
+    0x1.6a09e6p0
+  },
+  { // Entry 95
+    0x1.306fe14eab9274ba3ec43d966959f47cp0,
+    0x1.6a09e8p0
+  },
+  { // Entry 96
+    0x1.306fe225f08e7a24ac572c4b8579785fp0,
+    0x1.6a09eap0
+  },
+  { // Entry 97
+    0x1.ae89f6f6fe087ac302131f3840da7a90p0,
+    0x1.6a09e2p1
+  },
+  { // Entry 98
+    0x1.ae89f8276dea8c7accb82339973f2af9p0,
+    0x1.6a09e4p1
+  },
+  { // Entry 99
+    0x1.ae89f957ddcbc6ed986cf1a0e754d170p0,
+    0x1.6a09e6p1
+  },
+  { // Entry 100
+    0x1.ae89fa884dac2a1b66fa324394d3c590p0,
+    0x1.6a09e8p1
+  },
+  { // Entry 101
+    0x1.ae89fbb8bd8bb6043a288cf0b4eef0aep0,
+    0x1.6a09eap1
+  },
+  { // Entry 102
+    0x1.fffffeffffffbfffffdfffffebfffff1p-4,
+    0x1.fffffep-7
+  },
+  { // Entry 103
+    0x1.p-3,
+    0x1.p-6
+  },
+  { // Entry 104
+    0x1.000000ffffff8000007fffff600000dfp-3,
+    0x1.000002p-6
+  },
+  { // Entry 105
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-3,
+    0x1.fffffep-6
+  },
+  { // Entry 106
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-3,
+    0x1.p-5
+  },
+  { // Entry 107
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-3,
+    0x1.000002p-5
+  },
+  { // Entry 108
+    0x1.fffffeffffffbfffffdfffffebfffff1p-3,
+    0x1.fffffep-5
+  },
+  { // Entry 109
+    0x1.p-2,
+    0x1.p-4
+  },
+  { // Entry 110
+    0x1.000000ffffff8000007fffff600000dfp-2,
+    0x1.000002p-4
+  },
+  { // Entry 111
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-2,
+    0x1.fffffep-4
+  },
+  { // Entry 112
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-2,
+    0x1.p-3
+  },
+  { // Entry 113
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-2,
+    0x1.000002p-3
+  },
+  { // Entry 114
+    0x1.fffffeffffffbfffffdfffffebfffff1p-2,
+    0x1.fffffep-3
+  },
+  { // Entry 115
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 116
+    0x1.000000ffffff8000007fffff600000dfp-1,
+    0x1.000002p-2
+  },
+  { // Entry 117
+    0x1.6a09e5b2eec967cd97b2eff75f471493p-1,
+    0x1.fffffep-2
+  },
+  { // Entry 118
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-1,
+    0x1.p-1
+  },
+  { // Entry 119
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp-1,
+    0x1.000002p-1
+  },
+  { // Entry 120
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 121
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 122
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 123
+    0x1.6a09e5b2eec967cd97b2eff75f471493p0,
+    0x1.fffffep0
+  },
+  { // Entry 124
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep0,
+    0x1.p1
+  },
+  { // Entry 125
+    0x1.6a09e7d1fda27bf77d45272dd2d83a4bp0,
+    0x1.000002p1
+  },
+  { // Entry 126
+    0x1.fffffeffffffbfffffdfffffebfffff1p0,
+    0x1.fffffep1
+  },
+  { // Entry 127
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 128
+    0x1.000000ffffff8000007fffff600000dfp1,
+    0x1.000002p2
+  },
+  { // Entry 129
+    0.0,
+    0.0
+  },
+  { // Entry 130
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 131
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 132
+    0x1.p-63,
+    0x1.p-126
+  },
+  { // Entry 133
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 134
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 135
+    0x1.279a75809da58a0811243c04849bccb2p-64,
+    0x1.555558p-128
+  },
+  { // Entry 136
+    0x1.a20bd62fbcd82b1d65e201b6160bb97fp-64,
+    0x1.555554p-127
+  },
+  { // Entry 137
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 138
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 139
+    0x1.fffffdfffffefffffefffffebffffe3fp-1,
+    0x1.fffffcp-1
+  },
+  { // Entry 140
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 141
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 142
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 143
+    0x1.fffffcfffffdbffffc9ffff9abfff2b5p-1,
+    0x1.fffffap-1
+  },
+  { // Entry 144
+    0x1.fffffdfffffefffffefffffebffffe3fp-1,
+    0x1.fffffcp-1
+  },
+  { // Entry 145
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 146
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 147
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 148
+    0x1.fffffeffffffbfffffdfffffebfffff1p63,
+    0x1.fffffep127
+  },
+  { // Entry 149
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 150
+    0x1.fffffeffffffbfffffdfffffebfffff1p63,
+    0x1.fffffep127
+  },
+  { // Entry 151
+    0x1.fffffdfffffefffffefffffebffffe3fp63,
+    0x1.fffffcp127
+  },
+  { // Entry 152
+    0x1.c5bf89853a94d473c88f0dc85f187a6ep0,
+    0x1.921fb6p1
+  },
+  { // Entry 153
+    0x1.40d9324a48137bb45e891e1bdffe64c2p0,
+    0x1.921fb6p0
+  },
+  { // Entry 154
+    0x1.000000ffffff8000007fffff600000dfp0,
+    0x1.000002p0
+  },
+  { // Entry 155
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 156
+    0x1.fffffeffffffbfffffdfffffebfffff1p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 157
+    0x1.c5bf89853a94d473c88f0dc85f187a6ep-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 158
+    0x1.000000ffffff8000007fffff600000dfp-63,
+    0x1.000002p-126
+  },
+  { // Entry 159
+    0x1.p-63,
+    0x1.p-126
+  },
+  { // Entry 160
+    0x1.fffffdfffffefffffefffffebffffe3fp-64,
+    0x1.fffffcp-127
+  },
+  { // Entry 161
+    0x1.fffffbfffffbfffff7ffffebffffc7ffp-64,
+    0x1.fffff8p-127
+  },
+  { // Entry 162
+    0x1.p-74,
+    0x1.p-148
+  },
+  { // Entry 163
+    0x1.6a09e667f3bcc908b2fb1366ea957d3ep-75,
+    0x1.p-149
+  },
+  { // Entry 164
+    0.0,
+    0.0f
+  },
+  { // Entry 165
+    -0.0,
+    -0.0f
+  },
+  { // Entry 166
+    0x1.p1,
+    0x1.p2
+  },
+  { // Entry 167
+    0x1.p2,
+    0x1.p4
+  },
+  { // Entry 168
+    0x1.80p1,
+    0x1.20p3
+  },
+  { // Entry 169
+    0x1.40p2,
+    0x1.90p4
+  },
+  { // Entry 170
+    0x1.p-1,
+    0x1.p-2
+  },
+  { // Entry 171
+    0x1.c0p2,
+    0x1.88p5
+  },
+  { // Entry 172
+    0x1.40p3,
+    0x1.90p6
+  }
+};
diff --git a/tests/math_tan_intel_data.h b/tests/math_data/tan_intel_data.h
similarity index 100%
rename from tests/math_tan_intel_data.h
rename to tests/math_data/tan_intel_data.h
diff --git a/tests/math_tanf_intel_data.h b/tests/math_data/tanf_intel_data.h
similarity index 100%
rename from tests/math_tanf_intel_data.h
rename to tests/math_data/tanf_intel_data.h
diff --git a/tests/math_data/tanh_intel_data.h b/tests/math_data/tanh_intel_data.h
new file mode 100644
index 0000000..2e433ca
--- /dev/null
+++ b/tests/math_data/tanh_intel_data.h
@@ -0,0 +1,2938 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_tanh_intel_data[] = {
+  { // Entry 0
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p40
+  },
+  { // Entry 1
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p40
+  },
+  { // Entry 2
+    -0x1.fff5559997e1091212284e477e6b601bp-7,
+    -0x1.000000000000cp-6
+  },
+  { // Entry 3
+    0x1.fff5559997e1091212284e477e6b601bp-7,
+    0x1.000000000000cp-6
+  },
+  { // Entry 4
+    -0x1.fffffffffff4e7ff9444b603d6dd765cp-1,
+    -0x1.02020p4
+  },
+  { // Entry 5
+    0x1.fffffffffff4e7ff9444b603d6dd765cp-1,
+    0x1.02020p4
+  },
+  { // Entry 6
+    -0x1.fbae8ebca20d4c5880046e52256af91ep-3,
+    -0x1.033db279cac50p-2
+  },
+  { // Entry 7
+    0x1.fbae8ebca20d4c5880046e52256af91ep-3,
+    0x1.033db279cac50p-2
+  },
+  { // Entry 8
+    -0x1.ef865be1ef42880100008a5e4e4190c5p-1,
+    -0x1.0741ea37759d0p1
+  },
+  { // Entry 9
+    0x1.ef865be1ef42880100008a5e4e4190c5p-1,
+    0x1.0741ea37759d0p1
+  },
+  { // Entry 10
+    -0x1.fffffe4130884001624e28693fd77976p-1,
+    -0x1.17701b3bf0502p3
+  },
+  { // Entry 11
+    0x1.fffffe4130884001624e28693fd77976p-1,
+    0x1.17701b3bf0502p3
+  },
+  { // Entry 12
+    -0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    -0x1.5a6p0
+  },
+  { // Entry 13
+    0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    0x1.5a6p0
+  },
+  { // Entry 14
+    -0x1.4597c2c7089a5296d1b38cc8fc3b35b2p-1,
+    -0x1.80aa4dee35c52p-1
+  },
+  { // Entry 15
+    0x1.4597c2c7089a5296d1b38cc8fc3b35b2p-1,
+    0x1.80aa4dee35c52p-1
+  },
+  { // Entry 16
+    -0x1.8535183c81bec818a4482b6aa562704ap-4,
+    -0x1.86629b25ad139p-4
+  },
+  { // Entry 17
+    0x1.8535183c81bec818a4482b6aa562704ap-4,
+    0x1.86629b25ad139p-4
+  },
+  { // Entry 18
+    -0x1.49914b1c7a6a3040d7a1246b5c9a7223p-1,
+    -0x1.8765183af0bf8p-1
+  },
+  { // Entry 19
+    0x1.49914b1c7a6a3040d7a1246b5c9a7223p-1,
+    0x1.8765183af0bf8p-1
+  },
+  { // Entry 20
+    -0x1.9070fe4e6f41f7e2e1d3a8d017f0997ep-4,
+    -0x1.91b97a94248cep-4
+  },
+  { // Entry 21
+    0x1.9070fe4e6f41f7e2e1d3a8d017f0997ep-4,
+    0x1.91b97a94248cep-4
+  },
+  { // Entry 22
+    -0x1.53fca0a748a40b956f64ea48ae26ceb7p-1,
+    -0x1.999999999999ap-1
+  },
+  { // Entry 23
+    0x1.53fca0a748a40b956f64ea48ae26ceb7p-1,
+    0x1.999999999999ap-1
+  },
+  { // Entry 24
+    -0x1.afbec6429aad794d7f2a775b8759d621p-8,
+    -0x1.afc05f9bb3e19p-8
+  },
+  { // Entry 25
+    0x1.afbec6429aad794d7f2a775b8759d621p-8,
+    0x1.afc05f9bb3e19p-8
+  },
+  { // Entry 26
+    -0x1.ff142eecd1b15800cdeb0f526da78623p-1,
+    -0x1.c0cffc79a8e7ap1
+  },
+  { // Entry 27
+    0x1.ff142eecd1b15800cdeb0f526da78623p-1,
+    0x1.c0cffc79a8e7ap1
+  },
+  { // Entry 28
+    -0x1.69ee34427443cf9fe259a9bb2567fcc0p-1,
+    -0x1.c30c0608de324p-1
+  },
+  { // Entry 29
+    0x1.69ee34427443cf9fe259a9bb2567fcc0p-1,
+    0x1.c30c0608de324p-1
+  },
+  { // Entry 30
+    -0x1.78d4ef748dd52801170d542b2b0cb210p-1,
+    -0x1.e225b5b8fe514p-1
+  },
+  { // Entry 31
+    0x1.78d4ef748dd52801170d542b2b0cb210p-1,
+    0x1.e225b5b8fe514p-1
+  },
+  { // Entry 32
+    -0x1.ce716dc85f4f601568694f24eb23ca3cp-2,
+    -0x1.f2652ecbdc0f1p-2
+  },
+  { // Entry 33
+    0x1.ce716dc85f4f601568694f24eb23ca3cp-2,
+    0x1.f2652ecbdc0f1p-2
+  },
+  { // Entry 34
+    -0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    -0x1.ffffffff7ffffp-2
+  },
+  { // Entry 35
+    0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    0x1.ffffffff7ffffp-2
+  },
+  { // Entry 36
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep6
+  },
+  { // Entry 37
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep6
+  },
+  { // Entry 38
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 39
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 40
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p40
+  },
+  { // Entry 41
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p40
+  },
+  { // Entry 42
+    0x1.d9353d7568afe67b37fb989f559be834p-2,
+    0x1.0000000000007p-1
+  },
+  { // Entry 43
+    -0x1.d9353d7568afe67b37fb989f559be834p-2,
+    -0x1.0000000000007p-1
+  },
+  { // Entry 44
+    0x1.ffff5555999b9df5cab1d843ba27b16bp-9,
+    0x1.0000000000011p-8
+  },
+  { // Entry 45
+    -0x1.ffff5555999b9df5cab1d843ba27b16bp-9,
+    -0x1.0000000000011p-8
+  },
+  { // Entry 46
+    0x1.fff5559997e1e90412bd9e530b1bb1c8p-7,
+    0x1.0000000000013p-6
+  },
+  { // Entry 47
+    -0x1.fff5559997e1e90412bd9e530b1bb1c8p-7,
+    -0x1.0000000000013p-6
+  },
+  { // Entry 48
+    0x1.fd5992bc4b8938001f85b833d16495fap-4,
+    0x1.0000000000030p-3
+  },
+  { // Entry 49
+    -0x1.fd5992bc4b8938001f85b833d16495fap-4,
+    -0x1.0000000000030p-3
+  },
+  { // Entry 50
+    0x1.fff5559997f228001d929172a4eb85d4p-7,
+    0x1.0000000000095p-6
+  },
+  { // Entry 51
+    -0x1.fff5559997f228001d929172a4eb85d4p-7,
+    -0x1.0000000000095p-6
+  },
+  { // Entry 52
+    0x1.ed9505e1bc464849d749fc9de18202c2p-1,
+    0x1.00000000002p1
+  },
+  { // Entry 53
+    -0x1.ed9505e1bc464849d749fc9de18202c2p-1,
+    -0x1.00000000002p1
+  },
+  { // Entry 54
+    0x1.ff55997e035588295a0fea71abc3cb2ep-5,
+    0x1.0000000000243p-4
+  },
+  { // Entry 55
+    -0x1.ff55997e035588295a0fea71abc3cb2ep-5,
+    -0x1.0000000000243p-4
+  },
+  { // Entry 56
+    0x1.f597ea69a231a72e6af16bc1c1566108p-3,
+    0x1.0000000000380p-2
+  },
+  { // Entry 57
+    -0x1.f597ea69a231a72e6af16bc1c1566108p-3,
+    -0x1.0000000000380p-2
+  },
+  { // Entry 58
+    0x1.f597ea69a58af253fe597fddbebb43e2p-3,
+    0x1.00000000020p-2
+  },
+  { // Entry 59
+    -0x1.f597ea69a58af253fe597fddbebb43e2p-3,
+    -0x1.00000000020p-2
+  },
+  { // Entry 60
+    0x1.fffd55599de69fe673438a43e4e4e8f0p-8,
+    0x1.00000000022a0p-7
+  },
+  { // Entry 61
+    -0x1.fffd55599de69fe673438a43e4e4e8f0p-8,
+    -0x1.00000000022a0p-7
+  },
+  { // Entry 62
+    0x1.fffff872a91f87faf5806a50e5c4b91bp-1,
+    0x1.0000000002ff0p3
+  },
+  { // Entry 63
+    -0x1.fffff872a91f87faf5806a50e5c4b91bp-1,
+    -0x1.0000000002ff0p3
+  },
+  { // Entry 64
+    0x1.fffff872a91f87fb6e55d77442ed3d29p-1,
+    0x1.00000000030p3
+  },
+  { // Entry 65
+    -0x1.fffff872a91f87fb6e55d77442ed3d29p-1,
+    -0x1.00000000030p3
+  },
+  { // Entry 66
+    0x1.85efab5178d6d000016b608b6d73768fp-1,
+    0x1.00000000318b9p0
+  },
+  { // Entry 67
+    -0x1.85efab5178d6d000016b608b6d73768fp-1,
+    -0x1.00000000318b9p0
+  },
+  { // Entry 68
+    0x1.d9353d75bd3167fffe0ca38b641c896fp-2,
+    0x1.0000000035ba6p-1
+  },
+  { // Entry 69
+    -0x1.d9353d75bd3167fffe0ca38b641c896fp-2,
+    -0x1.0000000035ba6p-1
+  },
+  { // Entry 70
+    0x1.d9353d771617800000a9a580e469340ep-2,
+    0x1.0000000111012p-1
+  },
+  { // Entry 71
+    -0x1.d9353d771617800000a9a580e469340ep-2,
+    -0x1.0000000111012p-1
+  },
+  { // Entry 72
+    0x1.fd5992bf3fa307ce156b9614980779ecp-4,
+    0x1.000000018p-3
+  },
+  { // Entry 73
+    -0x1.fd5992bf3fa307ce156b9614980779ecp-4,
+    -0x1.000000018p-3
+  },
+  { // Entry 74
+    0x1.fff57197d7f21aad8cde741e0c0ad7fap-7,
+    0x1.00000e0p-6
+  },
+  { // Entry 75
+    -0x1.fff57197d7f21aad8cde741e0c0ad7fap-7,
+    -0x1.00000e0p-6
+  },
+  { // Entry 76
+    0x1.ff55b95e1854b7dec3a51ba27b39be8bp-5,
+    0x1.00001p-4
+  },
+  { // Entry 77
+    -0x1.ff55b95e1854b7dec3a51ba27b39be8bp-5,
+    -0x1.00001p-4
+  },
+  { // Entry 78
+    0x1.ff55ed7fe5192835b5778c9d03720c56p-5,
+    0x1.00002a2b0p-4
+  },
+  { // Entry 79
+    -0x1.ff55ed7fe5192835b5778c9d03720c56p-5,
+    -0x1.00002a2b0p-4
+  },
+  { // Entry 80
+    0x1.ffd9589953c32bc8da7c0ed0baa544b3p-6,
+    0x1.00020p-5
+  },
+  { // Entry 81
+    -0x1.ffd9589953c32bc8da7c0ed0baa544b3p-6,
+    -0x1.00020p-5
+  },
+  { // Entry 82
+    0x1.85fd1b1b96f55c651875290b2d7f494cp-1,
+    0x1.001p0
+  },
+  { // Entry 83
+    -0x1.85fd1b1b96f55c651875290b2d7f494cp-1,
+    -0x1.001p0
+  },
+  { // Entry 84
+    0x1.fdb8166cc3ed2817c1f59dbd8b23b2abp-4,
+    0x1.003p-3
+  },
+  { // Entry 85
+    -0x1.fdb8166cc3ed2817c1f59dbd8b23b2abp-4,
+    -0x1.003p-3
+  },
+  { // Entry 86
+    0x1.ffe8933bc5a6d7be8a7316e43ce9c6cdp-5,
+    0x1.0049c689802d0p-4
+  },
+  { // Entry 87
+    -0x1.ffe8933bc5a6d7be8a7316e43ce9c6cdp-5,
+    -0x1.0049c689802d0p-4
+  },
+  { // Entry 88
+    0x1.fa73af7a658375ff4348367f3830a567p-3,
+    0x1.0295fad40a580p-2
+  },
+  { // Entry 89
+    -0x1.fa73af7a658375ff4348367f3830a567p-3,
+    -0x1.0295fad40a580p-2
+  },
+  { // Entry 90
+    0x1.0624d77c51e6880001f9be17000b9cf1p-10,
+    0x1.0624dd3655b8ap-10
+  },
+  { // Entry 91
+    -0x1.0624d77c51e6880001f9be17000b9cf1p-10,
+    -0x1.0624dd3655b8ap-10
+  },
+  { // Entry 92
+    0x1.0624d79f9b19f7fffe0a9d21eca99d7cp-10,
+    0x1.0624dd599eee6p-10
+  },
+  { // Entry 93
+    -0x1.0624d79f9b19f7fffe0a9d21eca99d7cp-10,
+    -0x1.0624dd599eee6p-10
+  },
+  { // Entry 94
+    0x1.e429309abfffd2ddfd82de658136eba5p-2,
+    0x1.07020e041c084p-1
+  },
+  { // Entry 95
+    -0x1.e429309abfffd2ddfd82de658136eba5p-2,
+    -0x1.07020e041c084p-1
+  },
+  { // Entry 96
+    0x1.8c7f5c6b80f69a39323c4db93a0f72b0p-1,
+    0x1.080p0
+  },
+  { // Entry 97
+    -0x1.8c7f5c6b80f69a39323c4db93a0f72b0p-1,
+    -0x1.080p0
+  },
+  { // Entry 98
+    0x1.8d012ee7bd86f7ff002853771d7f8bf3p-1,
+    0x1.08a278c042d05p0
+  },
+  { // Entry 99
+    -0x1.8d012ee7bd86f7ff002853771d7f8bf3p-1,
+    -0x1.08a278c042d05p0
+  },
+  { // Entry 100
+    0x1.fffffe4130884001a9dd6277c63796bap-1,
+    0x1.17701b3bf052bp3
+  },
+  { // Entry 101
+    -0x1.fffffe4130884001a9dd6277c63796bap-1,
+    -0x1.17701b3bf052bp3
+  },
+  { // Entry 102
+    0x1.fdbcb70e1a79f7fae20bb105bc7b5a09p-2,
+    0x1.17bd082f7494ap-1
+  },
+  { // Entry 103
+    -0x1.fdbcb70e1a79f7fae20bb105bc7b5a09p-2,
+    -0x1.17bd082f7494ap-1
+  },
+  { // Entry 104
+    0x1.ff97efd9e06bae1b16cedbdb4a92304ep-2,
+    0x1.18f94c43e4254p-1
+  },
+  { // Entry 105
+    -0x1.ff97efd9e06bae1b16cedbdb4a92304ep-2,
+    -0x1.18f94c43e4254p-1
+  },
+  { // Entry 106
+    0x1.1abe341c3a920fff94d356d6f5ffbc8dp-7,
+    0x1.1acp-7
+  },
+  { // Entry 107
+    -0x1.1abe341c3a920fff94d356d6f5ffbc8dp-7,
+    -0x1.1acp-7
+  },
+  { // Entry 108
+    0x1.02e1e2b14b97c6a35cbdc397873184d2p-1,
+    0x1.1d1a3a347468fp-1
+  },
+  { // Entry 109
+    -0x1.02e1e2b14b97c6a35cbdc397873184d2p-1,
+    -0x1.1d1a3a347468fp-1
+  },
+  { // Entry 110
+    0x1.9d8d4198958f6f11c41090ab7e3accb0p-1,
+    0x1.1ed47ae8419b9p0
+  },
+  { // Entry 111
+    -0x1.9d8d4198958f6f11c41090ab7e3accb0p-1,
+    -0x1.1ed47ae8419b9p0
+  },
+  { // Entry 112
+    0x1.182d330b3abd2a2e07d69cfdde7a8e36p-2,
+    0x1.1f8p-2
+  },
+  { // Entry 113
+    -0x1.182d330b3abd2a2e07d69cfdde7a8e36p-2,
+    -0x1.1f8p-2
+  },
+  { // Entry 114
+    0x1.ffe0482ef94fe800fb76431a7260ec18p-1,
+    0x1.20a0ea0ea0f75p2
+  },
+  { // Entry 115
+    -0x1.ffe0482ef94fe800fb76431a7260ec18p-1,
+    -0x1.20a0ea0ea0f75p2
+  },
+  { // Entry 116
+    0x1.268f1d822590680082a05be831e4854ap-6,
+    0x1.26973dc7c5be6p-6
+  },
+  { // Entry 117
+    -0x1.268f1d822590680082a05be831e4854ap-6,
+    -0x1.26973dc7c5be6p-6
+  },
+  { // Entry 118
+    0x1.218ab0574162d800d421fdb840145675p-2,
+    0x1.29a69bd13ee87p-2
+  },
+  { // Entry 119
+    -0x1.218ab0574162d800d421fdb840145675p-2,
+    -0x1.29a69bd13ee87p-2
+  },
+  { // Entry 120
+    0x1.2a4dda7de0017fffffbc7994f1ba04a0p-2,
+    0x1.3333333389314p-2
+  },
+  { // Entry 121
+    -0x1.2a4dda7de0017fffffbc7994f1ba04a0p-2,
+    -0x1.3333333389314p-2
+  },
+  { // Entry 122
+    0x1.3588dea53e3e48000186808c28c507e0p-3,
+    0x1.37eca6a41e727p-3
+  },
+  { // Entry 123
+    -0x1.3588dea53e3e48000186808c28c507e0p-3,
+    -0x1.37eca6a41e727p-3
+  },
+  { // Entry 124
+    0x1.adc58b27626030403b9dea1c7eee05c0p-1,
+    0x1.3818fe847da14p0
+  },
+  { // Entry 125
+    -0x1.adc58b27626030403b9dea1c7eee05c0p-1,
+    -0x1.3818fe847da14p0
+  },
+  { // Entry 126
+    0x1.39e670f864e06800916b322435b7bc9ap-6,
+    0x1.39f046957a2f6p-6
+  },
+  { // Entry 127
+    -0x1.39e670f864e06800916b322435b7bc9ap-6,
+    -0x1.39f046957a2f6p-6
+  },
+  { // Entry 128
+    0x1.afb03526b454afc4fd8fbb37ba979691p-1,
+    0x1.3b6071d1f7484p0
+  },
+  { // Entry 129
+    -0x1.afb03526b454afc4fd8fbb37ba979691p-1,
+    -0x1.3b6071d1f7484p0
+  },
+  { // Entry 130
+    0x1.fff71a538fb237ffaecdafac07098ecdp-1,
+    0x1.494ee9ac8da60p2
+  },
+  { // Entry 131
+    -0x1.fff71a538fb237ffaecdafac07098ecdp-1,
+    -0x1.494ee9ac8da60p2
+  },
+  { // Entry 132
+    0x1.b8af4dc2536ea800f3619a37dabd112ep-1,
+    0x1.4bcc5e389c6a2p0
+  },
+  { // Entry 133
+    -0x1.b8af4dc2536ea800f3619a37dabd112ep-1,
+    -0x1.4bcc5e389c6a2p0
+  },
+  { // Entry 134
+    0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    0x1.5a6p0
+  },
+  { // Entry 135
+    -0x1.bfe15277a8709fff7196fc7ed299cacfp-1,
+    -0x1.5a6p0
+  },
+  { // Entry 136
+    0x1.31e258b9d59417ff0172bc482ad0836bp-1,
+    0x1.60d71db63fc38p-1
+  },
+  { // Entry 137
+    -0x1.31e258b9d59417ff0172bc482ad0836bp-1,
+    -0x1.60d71db63fc38p-1
+  },
+  { // Entry 138
+    0x1.62fd595702658ff6ef9857182535c62fp-6,
+    0x1.630b92e7f0f77p-6
+  },
+  { // Entry 139
+    -0x1.62fd595702658ff6ef9857182535c62fp-6,
+    -0x1.630b92e7f0f77p-6
+  },
+  { // Entry 140
+    0x1.33ea141cebb6430c668ffce962626636p-1,
+    0x1.64024f4a3b070p-1
+  },
+  { // Entry 141
+    -0x1.33ea141cebb6430c668ffce962626636p-1,
+    -0x1.64024f4a3b070p-1
+  },
+  { // Entry 142
+    0x1.64c8407c232917fafcc3fa7256f65979p-13,
+    0x1.64c840b5e30aap-13
+  },
+  { // Entry 143
+    -0x1.64c8407c232917fafcc3fa7256f65979p-13,
+    -0x1.64c840b5e30aap-13
+  },
+  { // Entry 144
+    0x1.35061c5e8c503500e45460954fc60ba0p-1,
+    0x1.65c0300548991p-1
+  },
+  { // Entry 145
+    -0x1.35061c5e8c503500e45460954fc60ba0p-1,
+    -0x1.65c0300548991p-1
+  },
+  { // Entry 146
+    0x1.fc659d3ccb3ad0f406e5741895bf529bp-1,
+    0x1.695ab3124e6f3p1
+  },
+  { // Entry 147
+    -0x1.fc659d3ccb3ad0f406e5741895bf529bp-1,
+    -0x1.695ab3124e6f3p1
+  },
+  { // Entry 148
+    0x1.698e7945aa772812eb8246c066fe12cep-4,
+    0x1.6a8p-4
+  },
+  { // Entry 149
+    -0x1.698e7945aa772812eb8246c066fe12cep-4,
+    -0x1.6a8p-4
+  },
+  { // Entry 150
+    0x1.c9a96d9b25e257fef42254a09c5a8e89p-1,
+    0x1.70dc370dc370cp0
+  },
+  { // Entry 151
+    -0x1.c9a96d9b25e257fef42254a09c5a8e89p-1,
+    -0x1.70dc370dc370cp0
+  },
+  { // Entry 152
+    0x1.729b0b53891cd8029a198f346aded3c6p-5,
+    0x1.72dbd9697a31ap-5
+  },
+  { // Entry 153
+    -0x1.729b0b53891cd8029a198f346aded3c6p-5,
+    -0x1.72dbd9697a31ap-5
+  },
+  { // Entry 154
+    0x1.42dfc90ce7990801849a792e4b568e22p-1,
+    0x1.7c2055eedea83p-1
+  },
+  { // Entry 155
+    -0x1.42dfc90ce7990801849a792e4b568e22p-1,
+    -0x1.7c2055eedea83p-1
+  },
+  { // Entry 156
+    0x1.445fe311097e8b509753e0bbd4d8de8ap-1,
+    0x1.7eap-1
+  },
+  { // Entry 157
+    -0x1.445fe311097e8b509753e0bbd4d8de8ap-1,
+    -0x1.7eap-1
+  },
+  { // Entry 158
+    0x1.7e9dcb8e6272f7ff7aebf989fc716171p-6,
+    0x1.7eaf9b6ae4ee3p-6
+  },
+  { // Entry 159
+    -0x1.7e9dcb8e6272f7ff7aebf989fc716171p-6,
+    -0x1.7eaf9b6ae4ee3p-6
+  },
+  { // Entry 160
+    0x1.459f0dcdb1b2522b5637d303656306dep-1,
+    0x1.80b68cceb89c4p-1
+  },
+  { // Entry 161
+    -0x1.459f0dcdb1b2522b5637d303656306dep-1,
+    -0x1.80b68cceb89c4p-1
+  },
+  { // Entry 162
+    0x1.45b3111d091a910621ec7f399ccdb8c2p-1,
+    0x1.80d82924ec44dp-1
+  },
+  { // Entry 163
+    -0x1.45b3111d091a910621ec7f399ccdb8c2p-1,
+    -0x1.80d82924ec44dp-1
+  },
+  { // Entry 164
+    0x1.49009c6556eed1e5e07615b5b4c368ecp-1,
+    0x1.866e5ae84b0e8p-1
+  },
+  { // Entry 165
+    -0x1.49009c6556eed1e5e07615b5b4c368ecp-1,
+    -0x1.866e5ae84b0e8p-1
+  },
+  { // Entry 166
+    0x1.49a2006d9598d0564979f87ef81c5b1cp-1,
+    0x1.8781a092a0f52p-1
+  },
+  { // Entry 167
+    -0x1.49a2006d9598d0564979f87ef81c5b1cp-1,
+    -0x1.8781a092a0f52p-1
+  },
+  { // Entry 168
+    0x1.862c8470e675a07e123ea879f8baebb3p-3,
+    0x1.8b0p-3
+  },
+  { // Entry 169
+    -0x1.862c8470e675a07e123ea879f8baebb3p-3,
+    -0x1.8b0p-3
+  },
+  { // Entry 170
+    0x1.8f77d5d8932c9ff9095e8f77fddd070dp-6,
+    0x1.8f8c1b47ec114p-6
+  },
+  { // Entry 171
+    -0x1.8f77d5d8932c9ff9095e8f77fddd070dp-6,
+    -0x1.8f8c1b47ec114p-6
+  },
+  { // Entry 172
+    0x1.830e23e04e0347fe78663f1c44eb84fbp-2,
+    0x1.974p-2
+  },
+  { // Entry 173
+    -0x1.830e23e04e0347fe78663f1c44eb84fbp-2,
+    -0x1.974p-2
+  },
+  { // Entry 174
+    0x1.536c6d4bc8352db7986656026697f1a9p-1,
+    0x1.98980p-1
+  },
+  { // Entry 175
+    -0x1.536c6d4bc8352db7986656026697f1a9p-1,
+    -0x1.98980p-1
+  },
+  { // Entry 176
+    0x1.53ca8372b3cf0800c109372ef0258556p-1,
+    0x1.994p-1
+  },
+  { // Entry 177
+    -0x1.53ca8372b3cf0800c109372ef0258556p-1,
+    -0x1.994p-1
+  },
+  { // Entry 178
+    0x1.94022794ca0f90111cd01b7fcb8cf9b6p-3,
+    0x1.996p-3
+  },
+  { // Entry 179
+    -0x1.94022794ca0f90111cd01b7fcb8cf9b6p-3,
+    -0x1.996p-3
+  },
+  { // Entry 180
+    0x1.9439830b85ad100001b86875e3435678p-3,
+    0x1.99999999e7fb6p-3
+  },
+  { // Entry 181
+    -0x1.9439830b85ad100001b86875e3435678p-3,
+    -0x1.99999999e7fb6p-3
+  },
+  { // Entry 182
+    0x1.8511573d83e2980001dfb476af7fd902p-2,
+    0x1.9999999b34a5bp-2
+  },
+  { // Entry 183
+    -0x1.8511573d83e2980001dfb476af7fd902p-2,
+    -0x1.9999999b34a5bp-2
+  },
+  { // Entry 184
+    0x1.9439830d887d0800010c022856ad8045p-3,
+    0x1.9999999bffa9bp-3
+  },
+  { // Entry 185
+    -0x1.9439830d887d0800010c022856ad8045p-3,
+    -0x1.9999999bffa9bp-3
+  },
+  { // Entry 186
+    0x1.983d7799ce1f6ffffe2004e393d95329p-4,
+    0x1.9999999d7d8a2p-4
+  },
+  { // Entry 187
+    -0x1.983d7799ce1f6ffffe2004e393d95329p-4,
+    -0x1.9999999d7d8a2p-4
+  },
+  { // Entry 188
+    0x1.983d779b6c85f7fffe2905fb22397b60p-4,
+    0x1.9999999f20191p-4
+  },
+  { // Entry 189
+    -0x1.983d779b6c85f7fffe2905fb22397b60p-4,
+    -0x1.9999999f20191p-4
+  },
+  { // Entry 190
+    0x1.dcba660c6fece80d4553119effdd5c2ep-1,
+    0x1.aaaaaaaaaaaacp0
+  },
+  { // Entry 191
+    -0x1.dcba660c6fece80d4553119effdd5c2ep-1,
+    -0x1.aaaaaaaaaaaacp0
+  },
+  { // Entry 192
+    0x1.ad59b59465b065170605cbf13988832ap-7,
+    0x1.ad6p-7
+  },
+  { // Entry 193
+    -0x1.ad59b59465b065170605cbf13988832ap-7,
+    -0x1.ad6p-7
+  },
+  { // Entry 194
+    0x1.6010ea0ed51797ff8b6ca7fede1b8d31p-1,
+    0x1.afd7ebf5faf80p-1
+  },
+  { // Entry 195
+    -0x1.6010ea0ed51797ff8b6ca7fede1b8d31p-1,
+    -0x1.afd7ebf5faf80p-1
+  },
+  { // Entry 196
+    0x1.9b46310eb4e6d7fcfcd6e280870e9b65p-2,
+    0x1.b3cfa6c7643acp-2
+  },
+  { // Entry 197
+    -0x1.9b46310eb4e6d7fcfcd6e280870e9b65p-2,
+    -0x1.b3cfa6c7643acp-2
+  },
+  { // Entry 198
+    0x1.630edae8786c8eac4ae4fc2ca2fa0dbep-1,
+    0x1.b590150dcf8bfp-1
+  },
+  { // Entry 199
+    -0x1.630edae8786c8eac4ae4fc2ca2fa0dbep-1,
+    -0x1.b590150dcf8bfp-1
+  },
+  { // Entry 200
+    0x1.657a4f7f260d4f26d7f76db01c856ac3p-1,
+    0x1.ba4108b264c6ap-1
+  },
+  { // Entry 201
+    -0x1.657a4f7f260d4f26d7f76db01c856ac3p-1,
+    -0x1.ba4108b264c6ap-1
+  },
+  { // Entry 202
+    0x1.ba73ec4f0359a005d109ed3d8245363fp-6,
+    0x1.ba8f78449f0b8p-6
+  },
+  { // Entry 203
+    -0x1.ba73ec4f0359a005d109ed3d8245363fp-6,
+    -0x1.ba8f78449f0b8p-6
+  },
+  { // Entry 204
+    0x1.b42aa86fc0c0afc4c48569cd92293a6fp-3,
+    0x1.baf2501e20528p-3
+  },
+  { // Entry 205
+    -0x1.b42aa86fc0c0afc4c48569cd92293a6fp-3,
+    -0x1.baf2501e20528p-3
+  },
+  { // Entry 206
+    0x1.e0eb93e911bfd7ffc1cbb555f083546ap-1,
+    0x1.bb6766c1a2624p0
+  },
+  { // Entry 207
+    -0x1.e0eb93e911bfd7ffc1cbb555f083546ap-1,
+    -0x1.bb6766c1a2624p0
+  },
+  { // Entry 208
+    0x1.bc9c90043f5afff80b989f92cea4b087p-6,
+    0x1.bcb883bb4a1d2p-6
+  },
+  { // Entry 209
+    -0x1.bc9c90043f5afff80b989f92cea4b087p-6,
+    -0x1.bcb883bb4a1d2p-6
+  },
+  { // Entry 210
+    0x1.66de0bef230e8802075b728fcffdea9ep-1,
+    0x1.bcf9b5e552e46p-1
+  },
+  { // Entry 211
+    -0x1.66de0bef230e8802075b728fcffdea9ep-1,
+    -0x1.bcf9b5e552e46p-1
+  },
+  { // Entry 212
+    0x1.c761f75b6966c8015bc19070f6ab5006p-6,
+    0x1.c78p-6
+  },
+  { // Entry 213
+    -0x1.c761f75b6966c8015bc19070f6ab5006p-6,
+    -0x1.c78p-6
+  },
+  { // Entry 214
+    0x1.71421350a064b0b3b168c6e13a942da1p-1,
+    0x1.d20p-1
+  },
+  { // Entry 215
+    -0x1.71421350a064b0b3b168c6e13a942da1p-1,
+    -0x1.d20p-1
+  },
+  { // Entry 216
+    0x1.ca9adc00daadf21de2f8e2a3b667acc3p-3,
+    0x1.d2827155cd7f2p-3
+  },
+  { // Entry 217
+    -0x1.ca9adc00daadf21de2f8e2a3b667acc3p-3,
+    -0x1.d2827155cd7f2p-3
+  },
+  { // Entry 218
+    0x1.d3af0b409493d80f16690d417a020954p-5,
+    0x1.d4315fde0fd60p-5
+  },
+  { // Entry 219
+    -0x1.d3af0b409493d80f16690d417a020954p-5,
+    -0x1.d4315fde0fd60p-5
+  },
+  { // Entry 220
+    0x1.ff53ef909a53c7ff46ae6492b249f914p-1,
+    0x1.d50p1
+  },
+  { // Entry 221
+    -0x1.ff53ef909a53c7ff46ae6492b249f914p-1,
+    -0x1.d50p1
+  },
+  { // Entry 222
+    0x1.d4c6dbdd6204b7fdaefa65c2de6c3bc1p-5,
+    0x1.d54a1b43f2119p-5
+  },
+  { // Entry 223
+    -0x1.d4c6dbdd6204b7fdaefa65c2de6c3bc1p-5,
+    -0x1.d54a1b43f2119p-5
+  },
+  { // Entry 224
+    0x1.d60c056eebcb57ea94de726e86f49ee6p-4,
+    0x1.d82076d07e0cap-4
+  },
+  { // Entry 225
+    -0x1.d60c056eebcb57ea94de726e86f49ee6p-4,
+    -0x1.d82076d07e0cap-4
+  },
+  { // Entry 226
+    0x1.745a81f5485b0dad83d3ad761f034d17p-1,
+    0x1.d8829d48d5ccap-1
+  },
+  { // Entry 227
+    -0x1.745a81f5485b0dad83d3ad761f034d17p-1,
+    -0x1.d8829d48d5ccap-1
+  },
+  { // Entry 228
+    0x1.dab77f34d301c900e13d05b912fca596p-7,
+    0x1.dacp-7
+  },
+  { // Entry 229
+    -0x1.dab77f34d301c900e13d05b912fca596p-7,
+    -0x1.dacp-7
+  },
+  { // Entry 230
+    0x1.d59fb2c4927767ffaf038b5b533e17b8p-3,
+    0x1.de2p-3
+  },
+  { // Entry 231
+    -0x1.d59fb2c4927767ffaf038b5b533e17b8p-3,
+    -0x1.de2p-3
+  },
+  { // Entry 232
+    0x1.bebc593435695f3e5d9dfdce8ac65911p-2,
+    0x1.ded4e157ebb5ap-2
+  },
+  { // Entry 233
+    -0x1.bebc593435695f3e5d9dfdce8ac65911p-2,
+    -0x1.ded4e157ebb5ap-2
+  },
+  { // Entry 234
+    0x1.d7665cf9bb8287f53cfd2d51f28dbc87p-3,
+    0x1.ep-3
+  },
+  { // Entry 235
+    -0x1.d7665cf9bb8287f53cfd2d51f28dbc87p-3,
+    -0x1.ep-3
+  },
+  { // Entry 236
+    0x1.e1839a63361cd36a2077ec3be46fb31cp-6,
+    0x1.e1a71c88d42abp-6
+  },
+  { // Entry 237
+    -0x1.e1839a63361cd36a2077ec3be46fb31cp-6,
+    -0x1.e1a71c88d42abp-6
+  },
+  { // Entry 238
+    0x1.e94414bfb8b1c926487a611c3e9c82fep-1,
+    0x1.e48p0
+  },
+  { // Entry 239
+    -0x1.e94414bfb8b1c926487a611c3e9c82fep-1,
+    -0x1.e48p0
+  },
+  { // Entry 240
+    0x1.e47ecb0b519ed4c405e6925c6189b4d5p-6,
+    0x1.e4a2f72376d83p-6
+  },
+  { // Entry 241
+    -0x1.e47ecb0b519ed4c405e6925c6189b4d5p-6,
+    -0x1.e4a2f72376d83p-6
+  },
+  { // Entry 242
+    0x1.e94fc93631c7e9191f4973a0d807d78ap-1,
+    0x1.e4c377153ca9ap0
+  },
+  { // Entry 243
+    -0x1.e94fc93631c7e9191f4973a0d807d78ap-1,
+    -0x1.e4c377153ca9ap0
+  },
+  { // Entry 244
+    0x1.c4cc03a3d0c237fdcf5623b5615bbe1dp-2,
+    0x1.e6577536d43e7p-2
+  },
+  { // Entry 245
+    -0x1.c4cc03a3d0c237fdcf5623b5615bbe1dp-2,
+    -0x1.e6577536d43e7p-2
+  },
+  { // Entry 246
+    0x1.c6214d5944547e0b684eaf0557117675p-2,
+    0x1.e80p-2
+  },
+  { // Entry 247
+    -0x1.c6214d5944547e0b684eaf0557117675p-2,
+    -0x1.e80p-2
+  },
+  { // Entry 248
+    0x1.7cd8fa892ecf17fe5da6a217f1e8d441p-1,
+    0x1.eb05b226cd194p-1
+  },
+  { // Entry 249
+    -0x1.7cd8fa892ecf17fe5da6a217f1e8d441p-1,
+    -0x1.eb05b226cd194p-1
+  },
+  { // Entry 250
+    0x1.fb638c376c8fa8010dbbb805d349366ep-6,
+    0x1.fb8d188a84c37p-6
+  },
+  { // Entry 251
+    -0x1.fb638c376c8fa8010dbbb805d349366ep-6,
+    -0x1.fb8d188a84c37p-6
+  },
+  { // Entry 252
+    0x1.ed02211fde846895e3a231ab4b15fc07p-1,
+    0x1.fbfffffffffffp0
+  },
+  { // Entry 253
+    -0x1.ed02211fde846895e3a231ab4b15fc07p-1,
+    -0x1.fbfffffffffffp0
+  },
+  { // Entry 254
+    0x1.85558570498f17fd9281ca9c45bffb5ep-1,
+    0x1.fe91bd20c2fa7p-1
+  },
+  { // Entry 255
+    -0x1.85558570498f17fd9281ca9c45bffb5ep-1,
+    -0x1.fe91bd20c2fa7p-1
+  },
+  { // Entry 256
+    0x1.ff8f55c580d0ad705f464b9e36c04624p-9,
+    0x1.ff8ffffffffffp-9
+  },
+  { // Entry 257
+    -0x1.ff8f55c580d0ad705f464b9e36c04624p-9,
+    -0x1.ff8ffffffffffp-9
+  },
+  { // Entry 258
+    0x1.ffcf558594f9980987b40863efca6716p-9,
+    0x1.ffcffffffffffp-9
+  },
+  { // Entry 259
+    -0x1.ffcf558594f9980987b40863efca6716p-9,
+    -0x1.ffcffffffffffp-9
+  },
+  { // Entry 260
+    0x1.ffb5619756262b83f716223082574b9bp-6,
+    0x1.ffep-6
+  },
+  { // Entry 261
+    -0x1.ffb5619756262b83f716223082574b9bp-6,
+    -0x1.ffep-6
+  },
+  { // Entry 262
+    0x1.ffe14573a7c18e0b1e2b616408b023d0p-9,
+    0x1.ffe1effffffffp-9
+  },
+  { // Entry 263
+    -0x1.ffe14573a7c18e0b1e2b616408b023d0p-9,
+    -0x1.ffe1effffffffp-9
+  },
+  { // Entry 264
+    0x1.ffed559996e8080e35db4ddd5c5067b7p-8,
+    0x1.ffeffffffffffp-8
+  },
+  { // Entry 265
+    -0x1.ffed559996e8080e35db4ddd5c5067b7p-8,
+    -0x1.ffeffffffffffp-8
+  },
+  { // Entry 266
+    0x1.fd595b1bf5ffd7fd760222476204a3c8p-4,
+    0x1.ffffc77ffff47p-4
+  },
+  { // Entry 267
+    -0x1.fd595b1bf5ffd7fd760222476204a3c8p-4,
+    -0x1.ffffc77ffff47p-4
+  },
+  { // Entry 268
+    0x1.85efa37cbe334800fffc63002c8c03eep-1,
+    0x1.ffffed5aeedc7p-1
+  },
+  { // Entry 269
+    -0x1.85efa37cbe334800fffc63002c8c03eep-1,
+    -0x1.ffffed5aeedc7p-1
+  },
+  { // Entry 270
+    0x1.85efa9d9032e6ebb257c9dc7befcea9cp-1,
+    0x1.fffffc7ffffffp-1
+  },
+  { // Entry 271
+    -0x1.85efa9d9032e6ebb257c9dc7befcea9cp-1,
+    -0x1.fffffc7ffffffp-1
+  },
+  { // Entry 272
+    0x1.f597ea2d3c6b112fb996697ab9d730f8p-3,
+    0x1.ffffffbfbffffp-3
+  },
+  { // Entry 273
+    -0x1.f597ea2d3c6b112fb996697ab9d730f8p-3,
+    -0x1.ffffffbfbffffp-3
+  },
+  { // Entry 274
+    0x1.f597ea3c82e148049b81276747b22a43p-3,
+    0x1.ffffffcffffffp-3
+  },
+  { // Entry 275
+    -0x1.f597ea3c82e148049b81276747b22a43p-3,
+    -0x1.ffffffcffffffp-3
+  },
+  { // Entry 276
+    0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    0x1.ffffffff7ffffp-2
+  },
+  { // Entry 277
+    -0x1.d9353d750404d7fd4bd76174b9eb0c4ap-2,
+    -0x1.ffffffff7ffffp-2
+  },
+  { // Entry 278
+    0x1.85efab514f10ed5614c26425b952b2a6p-1,
+    0x1.ffffffffff9ffp-1
+  },
+  { // Entry 279
+    -0x1.85efab514f10ed5614c26425b952b2a6p-1,
+    -0x1.ffffffffff9ffp-1
+  },
+  { // Entry 280
+    0x1.ffd559992af86be17634ba8180eb56e3p-6,
+    0x1.ffffffffffda8p-6
+  },
+  { // Entry 281
+    -0x1.ffd559992af86be17634ba8180eb56e3p-6,
+    -0x1.ffffffffffda8p-6
+  },
+  { // Entry 282
+    0x1.ff55997e02f5d7f9739cb079aec68ef1p-5,
+    0x1.ffffffffffe85p-5
+  },
+  { // Entry 283
+    -0x1.ff55997e02f5d7f9739cb079aec68ef1p-5,
+    -0x1.ffffffffffe85p-5
+  },
+  { // Entry 284
+    0x1.85efab514f38edfd97f9312bc98e2889p-1,
+    0x1.ffffffffffff3p-1
+  },
+  { // Entry 285
+    -0x1.85efab514f38edfd97f9312bc98e2889p-1,
+    -0x1.ffffffffffff3p-1
+  },
+  { // Entry 286
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep6
+  },
+  { // Entry 287
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep6
+  },
+  { // Entry 288
+    0.0,
+    0.0
+  },
+  { // Entry 289
+    0x1.1a5eeff27cc84e29675f038f1aba6042p-5,
+    0x1.1a7b9611a7b96p-5
+  },
+  { // Entry 290
+    -0x1.1a5eeff27cc84e29675f038f1aba6042p-5,
+    -0x1.1a7b9611a7b96p-5
+  },
+  { // Entry 291
+    0x1.1a09275c594348d69d3aa6bc5a6d3eacp-4,
+    0x1.1a7b9611a7b96p-4
+  },
+  { // Entry 292
+    -0x1.1a09275c594348d69d3aa6bc5a6d3eacp-4,
+    -0x1.1a7b9611a7b96p-4
+  },
+  { // Entry 293
+    0x1.a63815915c3db32a3543202f310ededbp-4,
+    0x1.a7b9611a7b961p-4
+  },
+  { // Entry 294
+    -0x1.a63815915c3db32a3543202f310ededbp-4,
+    -0x1.a7b9611a7b961p-4
+  },
+  { // Entry 295
+    0x1.18b472e84eb8a189e113a261ae412556p-3,
+    0x1.1a7b9611a7b96p-3
+  },
+  { // Entry 296
+    -0x1.18b472e84eb8a189e113a261ae412556p-3,
+    -0x1.1a7b9611a7b96p-3
+  },
+  { // Entry 297
+    0x1.5da54d60a7195c8adb545802f1bfc594p-3,
+    0x1.611a7b9611a7cp-3
+  },
+  { // Entry 298
+    -0x1.5da54d60a7195c8adb545802f1bfc594p-3,
+    -0x1.611a7b9611a7cp-3
+  },
+  { // Entry 299
+    0x1.a1c7a7122df5863ada1156ab3e6900a0p-3,
+    0x1.a7b9611a7b962p-3
+  },
+  { // Entry 300
+    -0x1.a1c7a7122df5863ada1156ab3e6900a0p-3,
+    -0x1.a7b9611a7b962p-3
+  },
+  { // Entry 301
+    0x1.e4f66c98ea9387f84c4b3ac494f670b7p-3,
+    0x1.ee58469ee5848p-3
+  },
+  { // Entry 302
+    -0x1.e4f66c98ea9387f84c4b3ac494f670b7p-3,
+    -0x1.ee58469ee5848p-3
+  },
+  { // Entry 303
+    0x1.13875ab3cead807903e1f1f3e8e5643ep-2,
+    0x1.1a7b9611a7b97p-2
+  },
+  { // Entry 304
+    -0x1.13875ab3cead807903e1f1f3e8e5643ep-2,
+    -0x1.1a7b9611a7b97p-2
+  },
+  { // Entry 305
+    0x1.33f8025638e0d966877007ff4292fc49p-2,
+    0x1.3dcb08d3dcb0ap-2
+  },
+  { // Entry 306
+    -0x1.33f8025638e0d966877007ff4292fc49p-2,
+    -0x1.3dcb08d3dcb0ap-2
+  },
+  { // Entry 307
+    0x1.53be3f9638299cc1042cd3014eb611a5p-2,
+    0x1.611a7b9611a7dp-2
+  },
+  { // Entry 308
+    -0x1.53be3f9638299cc1042cd3014eb611a5p-2,
+    -0x1.611a7b9611a7dp-2
+  },
+  { // Entry 309
+    0x1.72cc8acad74a0554ceab8f673d8fd9c1p-2,
+    0x1.8469ee58469f0p-2
+  },
+  { // Entry 310
+    -0x1.72cc8acad74a0554ceab8f673d8fd9c1p-2,
+    -0x1.8469ee58469f0p-2
+  },
+  { // Entry 311
+    0x1.9116d18d0f897a8cd0329175c1761056p-2,
+    0x1.a7b9611a7b963p-2
+  },
+  { // Entry 312
+    -0x1.9116d18d0f897a8cd0329175c1761056p-2,
+    -0x1.a7b9611a7b963p-2
+  },
+  { // Entry 313
+    0x1.ae92803956bf8fe7960fe047c58fe2cep-2,
+    0x1.cb08d3dcb08d6p-2
+  },
+  { // Entry 314
+    -0x1.ae92803956bf8fe7960fe047c58fe2cep-2,
+    -0x1.cb08d3dcb08d6p-2
+  },
+  { // Entry 315
+    0x1.cb3685d89f9d9f9f4ed38442b61bb2a8p-2,
+    0x1.ee58469ee5849p-2
+  },
+  { // Entry 316
+    -0x1.cb3685d89f9d9f9f4ed38442b61bb2a8p-2,
+    -0x1.ee58469ee5849p-2
+  },
+  { // Entry 317
+    0x1.e6fb52c30980e5f495d12b6477845637p-2,
+    0x1.08d3dcb08d3dep-1
+  },
+  { // Entry 318
+    -0x1.e6fb52c30980e5f495d12b6477845637p-2,
+    -0x1.08d3dcb08d3dep-1
+  },
+  { // Entry 319
+    0x1.00ed69341225491fa94ea8dd2d1c04adp-1,
+    0x1.1a7b9611a7b97p-1
+  },
+  { // Entry 320
+    -0x1.00ed69341225491fa94ea8dd2d1c04adp-1,
+    -0x1.1a7b9611a7b97p-1
+  },
+  { // Entry 321
+    0x1.0de8305e4cc3d5001e5239e63b8dbed5p-1,
+    0x1.2c234f72c2350p-1
+  },
+  { // Entry 322
+    -0x1.0de8305e4cc3d5001e5239e63b8dbed5p-1,
+    -0x1.2c234f72c2350p-1
+  },
+  { // Entry 323
+    0x1.1a6c5ded8f162aadbb0149b498cb1b24p-1,
+    0x1.3dcb08d3dcb09p-1
+  },
+  { // Entry 324
+    -0x1.1a6c5ded8f162aadbb0149b498cb1b24p-1,
+    -0x1.3dcb08d3dcb09p-1
+  },
+  { // Entry 325
+    0x1.2678f93777439d5d9ad904ba063ecb5ep-1,
+    0x1.4f72c234f72c2p-1
+  },
+  { // Entry 326
+    -0x1.2678f93777439d5d9ad904ba063ecb5ep-1,
+    -0x1.4f72c234f72c2p-1
+  },
+  { // Entry 327
+    0x1.320da7c091ef4552ae755c643a3b4933p-1,
+    0x1.611a7b9611a7bp-1
+  },
+  { // Entry 328
+    -0x1.320da7c091ef4552ae755c643a3b4933p-1,
+    -0x1.611a7b9611a7bp-1
+  },
+  { // Entry 329
+    0x1.3d2aa22040bdd68238402204b98c4e93p-1,
+    0x1.72c234f72c234p-1
+  },
+  { // Entry 330
+    -0x1.3d2aa22040bdd68238402204b98c4e93p-1,
+    -0x1.72c234f72c234p-1
+  },
+  { // Entry 331
+    0x1.47d0a82acb4267d301a5dffb3c9a40b2p-1,
+    0x1.8469ee58469edp-1
+  },
+  { // Entry 332
+    -0x1.47d0a82acb4267d301a5dffb3c9a40b2p-1,
+    -0x1.8469ee58469edp-1
+  },
+  { // Entry 333
+    0x1.5200f4a602b2eebb2c2d9b4d031da2b3p-1,
+    0x1.9611a7b9611a6p-1
+  },
+  { // Entry 334
+    -0x1.5200f4a602b2eebb2c2d9b4d031da2b3p-1,
+    -0x1.9611a7b9611a6p-1
+  },
+  { // Entry 335
+    0x1.5bbd30c7183021dd4ae1af94efeb7351p-1,
+    0x1.a7b9611a7b95fp-1
+  },
+  { // Entry 336
+    -0x1.5bbd30c7183021dd4ae1af94efeb7351p-1,
+    -0x1.a7b9611a7b95fp-1
+  },
+  { // Entry 337
+    0x1.650767b19bab5c9a85115d59c1bbbbecp-1,
+    0x1.b9611a7b96118p-1
+  },
+  { // Entry 338
+    -0x1.650767b19bab5c9a85115d59c1bbbbecp-1,
+    -0x1.b9611a7b96118p-1
+  },
+  { // Entry 339
+    0x1.6de1fa2868b7da01452d1e472d0223d9p-1,
+    0x1.cb08d3dcb08d1p-1
+  },
+  { // Entry 340
+    -0x1.6de1fa2868b7da01452d1e472d0223d9p-1,
+    -0x1.cb08d3dcb08d1p-1
+  },
+  { // Entry 341
+    0x1.764f9299df20114d026ebd244b4e904ap-1,
+    0x1.dcb08d3dcb08ap-1
+  },
+  { // Entry 342
+    -0x1.764f9299df20114d026ebd244b4e904ap-1,
+    -0x1.dcb08d3dcb08ap-1
+  },
+  { // Entry 343
+    0x1.7e5319a96b6639eb0ade7fa028ee0d3bp-1,
+    0x1.ee58469ee5843p-1
+  },
+  { // Entry 344
+    -0x1.7e5319a96b6639eb0ade7fa028ee0d3bp-1,
+    -0x1.ee58469ee5843p-1
+  },
+  { // Entry 345
+    0x1.85efab514f392a77871c49877ccdbfbep-1,
+    0x1.ffffffffffffcp-1
+  },
+  { // Entry 346
+    -0x1.85efab514f392a77871c49877ccdbfbep-1,
+    -0x1.ffffffffffffcp-1
+  },
+  { // Entry 347
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p100
+  },
+  { // Entry 348
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p100
+  },
+  { // Entry 349
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p100
+  },
+  { // Entry 350
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p100
+  },
+  { // Entry 351
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p100
+  },
+  { // Entry 352
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p100
+  },
+  { // Entry 353
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp100
+  },
+  { // Entry 354
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp100
+  },
+  { // Entry 355
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p100
+  },
+  { // Entry 356
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p100
+  },
+  { // Entry 357
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp100
+  },
+  { // Entry 358
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp100
+  },
+  { // Entry 359
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p100
+  },
+  { // Entry 360
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p100
+  },
+  { // Entry 361
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp100
+  },
+  { // Entry 362
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp100
+  },
+  { // Entry 363
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p100
+  },
+  { // Entry 364
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p100
+  },
+  { // Entry 365
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p100
+  },
+  { // Entry 366
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p100
+  },
+  { // Entry 367
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap100
+  },
+  { // Entry 368
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap100
+  },
+  { // Entry 369
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p100
+  },
+  { // Entry 370
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p100
+  },
+  { // Entry 371
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp100
+  },
+  { // Entry 372
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp100
+  },
+  { // Entry 373
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p100
+  },
+  { // Entry 374
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p100
+  },
+  { // Entry 375
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep100
+  },
+  { // Entry 376
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep100
+  },
+  { // Entry 377
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p100
+  },
+  { // Entry 378
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p100
+  },
+  { // Entry 379
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p100
+  },
+  { // Entry 380
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p100
+  },
+  { // Entry 381
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p100
+  },
+  { // Entry 382
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p100
+  },
+  { // Entry 383
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p100
+  },
+  { // Entry 384
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p100
+  },
+  { // Entry 385
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp100
+  },
+  { // Entry 386
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp100
+  },
+  { // Entry 387
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p200
+  },
+  { // Entry 388
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p200
+  },
+  { // Entry 389
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p200
+  },
+  { // Entry 390
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p200
+  },
+  { // Entry 391
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p200
+  },
+  { // Entry 392
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p200
+  },
+  { // Entry 393
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp200
+  },
+  { // Entry 394
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp200
+  },
+  { // Entry 395
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p200
+  },
+  { // Entry 396
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p200
+  },
+  { // Entry 397
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp200
+  },
+  { // Entry 398
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp200
+  },
+  { // Entry 399
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p200
+  },
+  { // Entry 400
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p200
+  },
+  { // Entry 401
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp200
+  },
+  { // Entry 402
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp200
+  },
+  { // Entry 403
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p200
+  },
+  { // Entry 404
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p200
+  },
+  { // Entry 405
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p200
+  },
+  { // Entry 406
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p200
+  },
+  { // Entry 407
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap200
+  },
+  { // Entry 408
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap200
+  },
+  { // Entry 409
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p200
+  },
+  { // Entry 410
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p200
+  },
+  { // Entry 411
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp200
+  },
+  { // Entry 412
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp200
+  },
+  { // Entry 413
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p200
+  },
+  { // Entry 414
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p200
+  },
+  { // Entry 415
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep200
+  },
+  { // Entry 416
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep200
+  },
+  { // Entry 417
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p200
+  },
+  { // Entry 418
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p200
+  },
+  { // Entry 419
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p200
+  },
+  { // Entry 420
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p200
+  },
+  { // Entry 421
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p200
+  },
+  { // Entry 422
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p200
+  },
+  { // Entry 423
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p200
+  },
+  { // Entry 424
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p200
+  },
+  { // Entry 425
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp200
+  },
+  { // Entry 426
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp200
+  },
+  { // Entry 427
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p1000
+  },
+  { // Entry 428
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p1000
+  },
+  { // Entry 429
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d79435e50d79p1000
+  },
+  { // Entry 430
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d79435e50d79p1000
+  },
+  { // Entry 431
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af286bca1af2p1000
+  },
+  { // Entry 432
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af286bca1af2p1000
+  },
+  { // Entry 433
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bca1af286bp1000
+  },
+  { // Entry 434
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bca1af286bp1000
+  },
+  { // Entry 435
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e50d79435e4p1000
+  },
+  { // Entry 436
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e50d79435e4p1000
+  },
+  { // Entry 437
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e50d79435dp1000
+  },
+  { // Entry 438
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e50d79435dp1000
+  },
+  { // Entry 439
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d79435e50d6p1000
+  },
+  { // Entry 440
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d79435e50d6p1000
+  },
+  { // Entry 441
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50d79435e4fp1000
+  },
+  { // Entry 442
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50d79435e4fp1000
+  },
+  { // Entry 443
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca1af286bc8p1000
+  },
+  { // Entry 444
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca1af286bc8p1000
+  },
+  { // Entry 445
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.79435e50d7941p1000
+  },
+  { // Entry 446
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.79435e50d7941p1000
+  },
+  { // Entry 447
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca1af286bap1000
+  },
+  { // Entry 448
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca1af286bap1000
+  },
+  { // Entry 449
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435e50d79433p1000
+  },
+  { // Entry 450
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435e50d79433p1000
+  },
+  { // Entry 451
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af286bca1acp1000
+  },
+  { // Entry 452
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af286bca1acp1000
+  },
+  { // Entry 453
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af286bca1af25p1000
+  },
+  { // Entry 454
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af286bca1af25p1000
+  },
+  { // Entry 455
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1af286bc9ep1000
+  },
+  { // Entry 456
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1af286bc9ep1000
+  },
+  { // Entry 457
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1af286bca17p1000
+  },
+  { // Entry 458
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1af286bca17p1000
+  },
+  { // Entry 459
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79435e50d790p1000
+  },
+  { // Entry 460
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79435e50d790p1000
+  },
+  { // Entry 461
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d79435e509p1000
+  },
+  { // Entry 462
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d79435e509p1000
+  },
+  { // Entry 463
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286bca1af282p1000
+  },
+  { // Entry 464
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286bca1af282p1000
+  },
+  { // Entry 465
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffbp1000
+  },
+  { // Entry 466
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffbp1000
+  },
+  { // Entry 467
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 468
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 469
+    -0.0,
+    -0.0
+  },
+  { // Entry 470
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 471
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 472
+    0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 473
+    -0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 474
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.0p-1
+  },
+  { // Entry 475
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.0p-1
+  },
+  { // Entry 476
+    0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 477
+    -0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 478
+    0x1.ffffffffffffd9ce09d9ac0077339fccp-2,
+    0x1.193ea7aad0309p-1
+  },
+  { // Entry 479
+    -0x1.ffffffffffffd9ce09d9ac0077339fccp-2,
+    -0x1.193ea7aad0309p-1
+  },
+  { // Entry 480
+    0x1.fffffffffffff1ce09d9ac0078052f7dp-2,
+    0x1.193ea7aad030ap-1
+  },
+  { // Entry 481
+    -0x1.fffffffffffff1ce09d9ac0078052f7dp-2,
+    -0x1.193ea7aad030ap-1
+  },
+  { // Entry 482
+    0x1.00000000000004e704ecd6003c0b5f97p-1,
+    0x1.193ea7aad030bp-1
+  },
+  { // Entry 483
+    -0x1.00000000000004e704ecd6003c0b5f97p-1,
+    -0x1.193ea7aad030bp-1
+  },
+  { // Entry 484
+    0x1.fffffffffffffffa422f887a2db9896bp-1,
+    0x1.5ffffffffffffp4
+  },
+  { // Entry 485
+    -0x1.fffffffffffffffa422f887a2db9896bp-1,
+    -0x1.5ffffffffffffp4
+  },
+  { // Entry 486
+    0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    0x1.6p4
+  },
+  { // Entry 487
+    -0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    -0x1.6p4
+  },
+  { // Entry 488
+    0x1.fffffffffffffffa422f887a2dd080adp-1,
+    0x1.6000000000001p4
+  },
+  { // Entry 489
+    -0x1.fffffffffffffffa422f887a2dd080adp-1,
+    -0x1.6000000000001p4
+  },
+  { // Entry 490
+    -0x1.3333333333333b4d120fbdf5bd629059p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 491
+    0x1.3333333333333b4d120fbdf5bd629059p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 492
+    -0x1.333333333333310fa16be6eb800e8ac1p-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 493
+    0x1.333333333333310fa16be6eb800e8ac1p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 494
+    -0x1.33333333333326d230c80fe142583755p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 495
+    0x1.33333333333326d230c80fe142583755p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 496
+    -0x1.5555555555556095b587a4471560a40bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 497
+    0x1.5555555555556095b587a4471560a40bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 498
+    -0x1.555555555555525cd1f96b638732caf9p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 499
+    0x1.555555555555525cd1f96b638732caf9p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 500
+    -0x1.5555555555554423ee6b327ff8df04ddp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 501
+    0x1.5555555555554423ee6b327ff8df04ddp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 502
+    -0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 503
+    0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 504
+    -0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 505
+    0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 506
+    -0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 507
+    0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 508
+    -0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 509
+    0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 510
+    -0x1.620185e5621404e51abfd52a9fb35582p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 511
+    0x1.620185e5621404e51abfd52a9fb35582p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 512
+    -0x1.620185e56213f503b3433a35f0d66857p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 513
+    0x1.620185e56213f503b3433a35f0d66857p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 514
+    -0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 515
+    0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 516
+    -0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 517
+    0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 518
+    -0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 519
+    0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 520
+    -0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 521
+    0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 522
+    -0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 523
+    0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 524
+    -0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 525
+    0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 526
+    0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    0x1.62e42fefa39eep-6
+  },
+  { // Entry 527
+    -0x1.62d5fb19f39d12df2be8e5f2eb3c6bb2p-6,
+    -0x1.62e42fefa39eep-6
+  },
+  { // Entry 528
+    0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    0x1.62e42fefa39efp-6
+  },
+  { // Entry 529
+    -0x1.62d5fb19f39d22dd401468a35602a39dp-6,
+    -0x1.62e42fefa39efp-6
+  },
+  { // Entry 530
+    0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    0x1.62e42fefa39f0p-6
+  },
+  { // Entry 531
+    -0x1.62d5fb19f39d32db543feb53c0c8af33p-6,
+    -0x1.62e42fefa39f0p-6
+  },
+  { // Entry 532
+    0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    0x1.62e42fefa39eep-5
+  },
+  { // Entry 533
+    -0x1.62ab64c8162a720b1fc786405b8c01adp-5,
+    -0x1.62e42fefa39eep-5
+  },
+  { // Entry 534
+    0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    0x1.62e42fefa39efp-5
+  },
+  { // Entry 535
+    -0x1.62ab64c8162a8203724db05bba6bf1f1p-5,
+    -0x1.62e42fefa39efp-5
+  },
+  { // Entry 536
+    0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    0x1.62e42fefa39f0p-5
+  },
+  { // Entry 537
+    -0x1.62ab64c8162a91fbc4d3da77194b3135p-5,
+    -0x1.62e42fefa39f0p-5
+  },
+  { // Entry 538
+    0x1.620185e56213f503b3433a35f0d66857p-4,
+    0x1.62e42fefa39eep-4
+  },
+  { // Entry 539
+    -0x1.620185e56213f503b3433a35f0d66857p-4,
+    -0x1.62e42fefa39eep-4
+  },
+  { // Entry 540
+    0x1.620185e5621404e51abfd52a9fb35582p-4,
+    0x1.62e42fefa39efp-4
+  },
+  { // Entry 541
+    -0x1.620185e5621404e51abfd52a9fb35582p-4,
+    -0x1.62e42fefa39efp-4
+  },
+  { // Entry 542
+    0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    0x1.62e42fefa39f0p-4
+  },
+  { // Entry 543
+    -0x1.620185e5621414c6823c701f4e8d83f5p-4,
+    -0x1.62e42fefa39f0p-4
+  },
+  { // Entry 544
+    0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    0x1.62e42fefa39eep-3
+  },
+  { // Entry 545
+    -0x1.5f619980c4335caeff4cd46b3e239e77p-3,
+    -0x1.62e42fefa39eep-3
+  },
+  { // Entry 546
+    0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    0x1.62e42fefa39efp-3
+  },
+  { // Entry 547
+    -0x1.5f619980c4336c366c1acb38d4f1b2bdp-3,
+    -0x1.62e42fefa39efp-3
+  },
+  { // Entry 548
+    0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    0x1.62e42fefa39f0p-3
+  },
+  { // Entry 549
+    -0x1.5f619980c4337bbdd8e8c2066bb51eb7p-3,
+    -0x1.62e42fefa39f0p-3
+  },
+  { // Entry 550
+    0x1.5555555555554423ee6b327ff8df04ddp-2,
+    0x1.62e42fefa39eep-2
+  },
+  { // Entry 551
+    -0x1.5555555555554423ee6b327ff8df04ddp-2,
+    -0x1.62e42fefa39eep-2
+  },
+  { // Entry 552
+    0x1.555555555555525cd1f96b638732caf9p-2,
+    0x1.62e42fefa39efp-2
+  },
+  { // Entry 553
+    -0x1.555555555555525cd1f96b638732caf9p-2,
+    -0x1.62e42fefa39efp-2
+  },
+  { // Entry 554
+    0x1.5555555555556095b587a4471560a40bp-2,
+    0x1.62e42fefa39f0p-2
+  },
+  { // Entry 555
+    -0x1.5555555555556095b587a4471560a40bp-2,
+    -0x1.62e42fefa39f0p-2
+  },
+  { // Entry 556
+    0x1.33333333333326d230c80fe142583755p-1,
+    0x1.62e42fefa39eep-1
+  },
+  { // Entry 557
+    -0x1.33333333333326d230c80fe142583755p-1,
+    -0x1.62e42fefa39eep-1
+  },
+  { // Entry 558
+    0x1.333333333333310fa16be6eb800e8ac1p-1,
+    0x1.62e42fefa39efp-1
+  },
+  { // Entry 559
+    -0x1.333333333333310fa16be6eb800e8ac1p-1,
+    -0x1.62e42fefa39efp-1
+  },
+  { // Entry 560
+    0x1.3333333333333b4d120fbdf5bd629059p-1,
+    0x1.62e42fefa39f0p-1
+  },
+  { // Entry 561
+    -0x1.3333333333333b4d120fbdf5bd629059p-1,
+    -0x1.62e42fefa39f0p-1
+  },
+  { // Entry 562
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 563
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39eep9
+  },
+  { // Entry 564
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 565
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39efp9
+  },
+  { // Entry 566
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 567
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39f0p9
+  },
+  { // Entry 568
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39f0p9
+  },
+  { // Entry 569
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39f0p9
+  },
+  { // Entry 570
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39efp9
+  },
+  { // Entry 571
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39efp9
+  },
+  { // Entry 572
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.72e42fefa39eep9
+  },
+  { // Entry 573
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.72e42fefa39eep9
+  },
+  { // Entry 574
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87cp9
+  },
+  { // Entry 575
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87cp9
+  },
+  { // Entry 576
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87dp9
+  },
+  { // Entry 577
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87dp9
+  },
+  { // Entry 578
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.633ce8fb9f87ep9
+  },
+  { // Entry 579
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.633ce8fb9f87ep9
+  },
+  { // Entry 580
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39f0p9
+  },
+  { // Entry 581
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39f0p9
+  },
+  { // Entry 582
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39efp9
+  },
+  { // Entry 583
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39efp9
+  },
+  { // Entry 584
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42fefa39eep9
+  },
+  { // Entry 585
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42fefa39eep9
+  },
+  { // Entry 586
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 587
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 588
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p63
+  },
+  { // Entry 589
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p63
+  },
+  { // Entry 590
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p63
+  },
+  { // Entry 591
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p63
+  },
+  { // Entry 592
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp26
+  },
+  { // Entry 593
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp26
+  },
+  { // Entry 594
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p27
+  },
+  { // Entry 595
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p27
+  },
+  { // Entry 596
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p27
+  },
+  { // Entry 597
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p27
+  },
+  { // Entry 598
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp23
+  },
+  { // Entry 599
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp23
+  },
+  { // Entry 600
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0p24
+  },
+  { // Entry 601
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0p24
+  },
+  { // Entry 602
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0000000000001p24
+  },
+  { // Entry 603
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0000000000001p24
+  },
+  { // Entry 604
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 605
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.fffffffffffffp4
+  },
+  { // Entry 606
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.0p5
+  },
+  { // Entry 607
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.0p5
+  },
+  { // Entry 608
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.0000000000001p5
+  },
+  { // Entry 609
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.0000000000001p5
+  },
+  { // Entry 610
+    0x1.fffffffffff1bdcd844f4df082619d92p-1,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 611
+    -0x1.fffffffffff1bdcd844f4df082619d92p-1,
+    -0x1.fffffffffffffp3
+  },
+  { // Entry 612
+    0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    0x1.0p4
+  },
+  { // Entry 613
+    -0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    -0x1.0p4
+  },
+  { // Entry 614
+    0x1.fffffffffff1bdcd844f4e1b48f910a4p-1,
+    0x1.0000000000001p4
+  },
+  { // Entry 615
+    -0x1.fffffffffff1bdcd844f4e1b48f910a4p-1,
+    -0x1.0000000000001p4
+  },
+  { // Entry 616
+    0x1.fffff872a91f8690ea47c1d1bd107d6ep-1,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 617
+    -0x1.fffff872a91f8690ea47c1d1bd107d6ep-1,
+    -0x1.fffffffffffffp2
+  },
+  { // Entry 618
+    0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    0x1.0p3
+  },
+  { // Entry 619
+    -0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    -0x1.0p3
+  },
+  { // Entry 620
+    0x1.fffff872a91f8690f59bc40d0febacbdp-1,
+    0x1.0000000000001p3
+  },
+  { // Entry 621
+    -0x1.fffff872a91f8690f59bc40d0febacbdp-1,
+    -0x1.0000000000001p3
+  },
+  { // Entry 622
+    0x1.ffa81708a0b421525ec9970925cd4155p-1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 623
+    -0x1.ffa81708a0b421525ec9970925cd4155p-1,
+    -0x1.fffffffffffffp1
+  },
+  { // Entry 624
+    0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    0x1.0p2
+  },
+  { // Entry 625
+    -0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    -0x1.0p2
+  },
+  { // Entry 626
+    0x1.ffa81708a0b4219447da163b49770c0ep-1,
+    0x1.0000000000001p2
+  },
+  { // Entry 627
+    -0x1.ffa81708a0b4219447da163b49770c0ep-1,
+    -0x1.0000000000001p2
+  },
+  { // Entry 628
+    0x1.ed9505e1bc3d3af0feae367ddede350ep-1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 629
+    -0x1.ed9505e1bc3d3af0feae367ddede350ep-1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 630
+    0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    0x1.0p1
+  },
+  { // Entry 631
+    -0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    -0x1.0p1
+  },
+  { // Entry 632
+    0x1.ed9505e1bc3d41b94f3c87bfc873b4a6p-1,
+    0x1.0000000000001p1
+  },
+  { // Entry 633
+    -0x1.ed9505e1bc3d41b94f3c87bfc873b4a6p-1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 634
+    0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 635
+    -0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 636
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.0p0
+  },
+  { // Entry 637
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.0p0
+  },
+  { // Entry 638
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 639
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 640
+    0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 641
+    -0x1.d9353d7568af29bbdeb6502490ea91f5p-2,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 642
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.0p-1
+  },
+  { // Entry 643
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.0p-1
+  },
+  { // Entry 644
+    0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    0x1.0000000000001p-1
+  },
+  { // Entry 645
+    -0x1.d9353d7568af4f7bbd5dc509eeb9c854p-2,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 646
+    0x1.f597ea69a1c850090bd4877911ae9956p-3,
+    0x1.fffffffffffffp-3
+  },
+  { // Entry 647
+    -0x1.f597ea69a1c850090bd4877911ae9956p-3,
+    -0x1.fffffffffffffp-3
+  },
+  { // Entry 648
+    0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    0x1.0p-2
+  },
+  { // Entry 649
+    -0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    -0x1.0p-2
+  },
+  { // Entry 650
+    0x1.f597ea69a1c87d27f2dc499b344c1b8cp-3,
+    0x1.0000000000001p-2
+  },
+  { // Entry 651
+    -0x1.f597ea69a1c87d27f2dc499b344c1b8cp-3,
+    -0x1.0000000000001p-2
+  },
+  { // Entry 652
+    0x1.fd5992bc4b834000063fd671ecd5ebeep-4,
+    0x1.fffffffffffffp-4
+  },
+  { // Entry 653
+    -0x1.fd5992bc4b834000063fd671ecd5ebeep-4,
+    -0x1.fffffffffffffp-4
+  },
+  { // Entry 654
+    0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    0x1.0p-3
+  },
+  { // Entry 655
+    -0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    -0x1.0p-3
+  },
+  { // Entry 656
+    0x1.fd5992bc4b836f4201c0adec0dd0980dp-4,
+    0x1.0000000000001p-3
+  },
+  { // Entry 657
+    -0x1.fd5992bc4b836f4201c0adec0dd0980dp-4,
+    -0x1.0000000000001p-3
+  },
+  { // Entry 658
+    0x1.ff55997e030d60692ab487c7d22013f6p-5,
+    0x1.fffffffffffffp-5
+  },
+  { // Entry 659
+    -0x1.ff55997e030d60692ab487c7d22013f6p-5,
+    -0x1.fffffffffffffp-5
+  },
+  { // Entry 660
+    0x1.ff55997e030d705935592a366a8a66d4p-5,
+    0x1.0p-4
+  },
+  { // Entry 661
+    -0x1.ff55997e030d705935592a366a8a66d4p-5,
+    -0x1.0p-4
+  },
+  { // Entry 662
+    0x1.ff55997e030d90394aa26f139b5c108ep-5,
+    0x1.0000000000001p-4
+  },
+  { // Entry 663
+    -0x1.ff55997e030d90394aa26f139b5c108ep-5,
+    -0x1.0000000000001p-4
+  },
+  { // Entry 664
+    0x1.ffd559992b1dd287055184b7d46402dap-6,
+    0x1.fffffffffffffp-6
+  },
+  { // Entry 665
+    -0x1.ffd559992b1dd287055184b7d46402dap-6,
+    -0x1.fffffffffffffp-6
+  },
+  { // Entry 666
+    0x1.ffd559992b1de28305fc17382205392ep-6,
+    0x1.0p-5
+  },
+  { // Entry 667
+    -0x1.ffd559992b1de28305fc17382205392ep-6,
+    -0x1.0p-5
+  },
+  { // Entry 668
+    0x1.ffd559992b1e027b07513c38bd46e616p-6,
+    0x1.0000000000001p-5
+  },
+  { // Entry 669
+    -0x1.ffd559992b1e027b07513c38bd46e616p-6,
+    -0x1.0000000000001p-5
+  },
+  { // Entry 670
+    0x1.fff5559997df792b111dad0e4c36a1efp-7,
+    0x1.fffffffffffffp-7
+  },
+  { // Entry 671
+    -0x1.fff5559997df792b111dad0e4c36a1efp-7,
+    -0x1.fffffffffffffp-7
+  },
+  { // Entry 672
+    0x1.fff5559997df892a1128575843fc0d52p-7,
+    0x1.0p-6
+  },
+  { // Entry 673
+    -0x1.fff5559997df892a1128575843fc0d52p-7,
+    -0x1.0p-6
+  },
+  { // Entry 674
+    0x1.fff5559997dfa928113dabec3386b41bp-7,
+    0x1.0000000000001p-6
+  },
+  { // Entry 675
+    -0x1.fff5559997dfa928113dabec3386b41bp-7,
+    -0x1.0000000000001p-6
+  },
+  { // Entry 676
+    0x1.fffffff555554599999a97df7ded4005p-15,
+    0x1.fffffffffffffp-15
+  },
+  { // Entry 677
+    -0x1.fffffff555554599999a97df7ded4005p-15,
+    -0x1.fffffffffffffp-15
+  },
+  { // Entry 678
+    0x1.fffffff555555599999997df7df7eab0p-15,
+    0x1.0p-14
+  },
+  { // Entry 679
+    -0x1.fffffff555555599999997df7df7eab0p-15,
+    -0x1.0p-14
+  },
+  { // Entry 680
+    0x1.fffffff555557599999797df7e0d4005p-15,
+    0x1.0000000000001p-14
+  },
+  { // Entry 681
+    -0x1.fffffff555557599999797df7e0d4005p-15,
+    -0x1.0000000000001p-14
+  },
+  { // Entry 682
+    0x1.ffffffffffffeff55555555555565599p-31,
+    0x1.fffffffffffffp-31
+  },
+  { // Entry 683
+    -0x1.ffffffffffffeff55555555555565599p-31,
+    -0x1.fffffffffffffp-31
+  },
+  { // Entry 684
+    0x1.fffffffffffffff55555555555555599p-31,
+    0x1.0p-30
+  },
+  { // Entry 685
+    -0x1.fffffffffffffff55555555555555599p-31,
+    -0x1.0p-30
+  },
+  { // Entry 686
+    0x1.0000000000000ffaaaaaaaaaaaa9aaccp-30,
+    0x1.0000000000001p-30
+  },
+  { // Entry 687
+    -0x1.0000000000000ffaaaaaaaaaaaa9aaccp-30,
+    -0x1.0000000000001p-30
+  },
+  { // Entry 688
+    0x1.ffffffffffffeffffffffffffffd5555p-56,
+    0x1.fffffffffffffp-56
+  },
+  { // Entry 689
+    -0x1.ffffffffffffeffffffffffffffd5555p-56,
+    -0x1.fffffffffffffp-56
+  },
+  { // Entry 690
+    0x1.fffffffffffffffffffffffffffd5555p-56,
+    0x1.0p-55
+  },
+  { // Entry 691
+    -0x1.fffffffffffffffffffffffffffd5555p-56,
+    -0x1.0p-55
+  },
+  { // Entry 692
+    0x1.0000000000000ffffffffffffffeaaaap-55,
+    0x1.0000000000001p-55
+  },
+  { // Entry 693
+    -0x1.0000000000000ffffffffffffffeaaaap-55,
+    -0x1.0000000000001p-55
+  },
+  { // Entry 694
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 695
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 696
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 697
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 698
+    0x1.p0,
+    HUGE_VAL
+  },
+  { // Entry 699
+    -0x1.p0,
+    -HUGE_VAL
+  },
+  { // Entry 700
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 701
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 702
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 703
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 704
+    0x1.fe175fa29280faada6e2c93ea708789ep-1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 705
+    -0x1.fe175fa29280faada6e2c93ea708789ep-1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 706
+    0x1.d594fdae482b98a703d473d9a8cd44cdp-1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 707
+    -0x1.d594fdae482b98a703d473d9a8cd44cdp-1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 708
+    0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    0x1.0000000000001p0
+  },
+  { // Entry 709
+    -0x1.85efab514f3952c8d133af19e5e8cdd6p-1,
+    -0x1.0000000000001p0
+  },
+  { // Entry 710
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.0p0
+  },
+  { // Entry 711
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.0p0
+  },
+  { // Entry 712
+    0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 713
+    -0x1.85efab514f393ea02c27fc50b2cbbe65p-1,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 714
+    0x1.4fc441fa6d6d6195ca63f8eb92d312a4p-1,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 715
+    -0x1.4fc441fa6d6d6195ca63f8eb92d312a4p-1,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 716
+    0x1.0000000000000fffffffffffffffffffp-1022,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 717
+    -0x1.0000000000000fffffffffffffffffffp-1022,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 718
+    0x1.ffffffffffffffffffffffffffffffffp-1023,
+    0x1.0p-1022
+  },
+  { // Entry 719
+    -0x1.ffffffffffffffffffffffffffffffffp-1023,
+    -0x1.0p-1022
+  },
+  { // Entry 720
+    0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 721
+    -0x1.ffffffffffffdfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 722
+    0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 723
+    -0x1.ffffffffffffbfffffffffffffffffffp-1023,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 724
+    0x1.ffffffffffffffffffffffffffffffffp-1074,
+    0x1.0p-1073
+  },
+  { // Entry 725
+    -0x1.ffffffffffffffffffffffffffffffffp-1074,
+    -0x1.0p-1073
+  },
+  { // Entry 726
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 727
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 728
+    0.0,
+    0.0
+  },
+  { // Entry 729
+    -0.0,
+    -0.0
+  }
+};
diff --git a/tests/math_data/tanhf_intel_data.h b/tests/math_data/tanhf_intel_data.h
new file mode 100644
index 0000000..be1cd9f
--- /dev/null
+++ b/tests/math_data/tanhf_intel_data.h
@@ -0,0 +1,2274 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_tanhf_intel_data[] = {
+  { // Entry 0
+    -0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    -0x1.0000c0p-4
+  },
+  { // Entry 1
+    0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    0x1.0000c0p-4
+  },
+  { // Entry 2
+    -0x1.fffffc0001871106009b5aaf55c49116p-1,
+    -0x1.0a2b2ap3
+  },
+  { // Entry 3
+    0x1.fffffc0001871106009b5aaf55c49116p-1,
+    0x1.0a2b2ap3
+  },
+  { // Entry 4
+    -0x1.f2c4e0c5399bd4c3248a88570584900dp-2,
+    -0x1.107fa4p-1
+  },
+  { // Entry 5
+    0x1.f2c4e0c5399bd4c3248a88570584900dp-2,
+    0x1.107fa4p-1
+  },
+  { // Entry 6
+    -0x1.968428ffd872ecb6c9fd8e70df8a8bfep-1,
+    -0x1.150498p0
+  },
+  { // Entry 7
+    0x1.968428ffd872ecb6c9fd8e70df8a8bfep-1,
+    0x1.150498p0
+  },
+  { // Entry 8
+    -0x1.fffffdfd7b7e46383ce8fadc5f8ea7eap-1,
+    -0x1.152e2ep3
+  },
+  { // Entry 9
+    0x1.fffffdfd7b7e46383ce8fadc5f8ea7eap-1,
+    0x1.152e2ep3
+  },
+  { // Entry 10
+    -0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    -0x1.1908p-4
+  },
+  { // Entry 11
+    0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    0x1.1908p-4
+  },
+  { // Entry 12
+    -0x1.fffffef20b998e5904f90043100cd5d3p-1,
+    -0x1.1f80p3
+  },
+  { // Entry 13
+    0x1.fffffef20b998e5904f90043100cd5d3p-1,
+    0x1.1f80p3
+  },
+  { // Entry 14
+    -0x1.fff9f601c71a50ea8042b6e535d99676p-1,
+    -0x1.55b54ep2
+  },
+  { // Entry 15
+    0x1.fff9f601c71a50ea8042b6e535d99676p-1,
+    0x1.55b54ep2
+  },
+  { // Entry 16
+    -0x1.35fec061664b9cf1b7b1484307f84259p-1,
+    -0x1.674804p-1
+  },
+  { // Entry 17
+    0x1.35fec061664b9cf1b7b1484307f84259p-1,
+    0x1.674804p-1
+  },
+  { // Entry 18
+    -0x1.8d9b1b0128196f89d9531df123a40ff4p-11,
+    -0x1.8d9b20p-11
+  },
+  { // Entry 19
+    0x1.8d9b1b0128196f89d9531df123a40ff4p-11,
+    0x1.8d9b20p-11
+  },
+  { // Entry 20
+    -0x1.e3b21701a09ce46bedfb3f6e4f5f9a30p-11,
+    -0x1.e3b220p-11
+  },
+  { // Entry 21
+    0x1.e3b21701a09ce46bedfb3f6e4f5f9a30p-11,
+    0x1.e3b220p-11
+  },
+  { // Entry 22
+    -0x1.fb070301e5b46bfdaf1d2a7bd9573b3cp-8,
+    -0x1.fb099ap-8
+  },
+  { // Entry 23
+    0x1.fb070301e5b46bfdaf1d2a7bd9573b3cp-8,
+    0x1.fb099ap-8
+  },
+  { // Entry 24
+    -0x1.ff85d977c45b8a463709fc31915c04bap-6,
+    -0x1.ffb06cp-6
+  },
+  { // Entry 25
+    0x1.ff85d977c45b8a463709fc31915c04bap-6,
+    0x1.ffb06cp-6
+  },
+  { // Entry 26
+    -0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    -0x1.ffff7ep-5
+  },
+  { // Entry 27
+    0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    0x1.ffff7ep-5
+  },
+  { // Entry 28
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 29
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 30
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p8
+  },
+  { // Entry 31
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p8
+  },
+  { // Entry 32
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p40
+  },
+  { // Entry 33
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p40
+  },
+  { // Entry 34
+    0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    0x1.0000c0p-4
+  },
+  { // Entry 35
+    -0x1.ff5717ff015e292b197aa6a5bd8ead11p-5,
+    -0x1.0000c0p-4
+  },
+  { // Entry 36
+    0x1.ffd7b90143bb5d654465fbf6eb08db94p-6,
+    0x1.000130p-5
+  },
+  { // Entry 37
+    -0x1.ffd7b90143bb5d654465fbf6eb08db94p-6,
+    -0x1.000130p-5
+  },
+  { // Entry 38
+    0x1.ff5816ffa9aaf77b52ddf52d862ee085p-5,
+    0x1.000140p-4
+  },
+  { // Entry 39
+    -0x1.ff5816ffa9aaf77b52ddf52d862ee085p-5,
+    -0x1.000140p-4
+  },
+  { // Entry 40
+    0x1.fd5c86dbf1ef7c0b7c17b5a5fc9384bap-4,
+    0x1.000180p-3
+  },
+  { // Entry 41
+    -0x1.fd5c86dbf1ef7c0b7c17b5a5fc9384bap-4,
+    -0x1.000180p-3
+  },
+  { // Entry 42
+    0x1.fff8d56199d2d1496393498af57a65c5p-7,
+    0x1.0001c0p-6
+  },
+  { // Entry 43
+    -0x1.fff8d56199d2d1496393498af57a65c5p-7,
+    -0x1.0001c0p-6
+  },
+  { // Entry 44
+    0x1.ff5a1500f7488c88a28967ef3279598bp-5,
+    0x1.000240p-4
+  },
+  { // Entry 45
+    -0x1.ff5a1500f7488c88a28967ef3279598bp-5,
+    -0x1.000240p-4
+  },
+  { // Entry 46
+    0x1.ffdd57997869c223859da246115830a8p-6,
+    0x1.0004p-5
+  },
+  { // Entry 47
+    -0x1.ffdd57997869c223859da246115830a8p-6,
+    -0x1.0004p-5
+  },
+  { // Entry 48
+    0x1.0003ffffffeaa9aaa6aaa777a223777cp-21,
+    0x1.0004p-21
+  },
+  { // Entry 49
+    -0x1.0003ffffffeaa9aaa6aaa777a223777cp-21,
+    -0x1.0004p-21
+  },
+  { // Entry 50
+    0x1.fffed101db6291871ee5b1f184662c14p-7,
+    0x1.0004bep-6
+  },
+  { // Entry 51
+    -0x1.fffed101db6291871ee5b1f184662c14p-7,
+    -0x1.0004bep-6
+  },
+  { // Entry 52
+    0x1.ffa82cfe3d3102474919a811a60807b3p-1,
+    0x1.0008p2
+  },
+  { // Entry 53
+    -0x1.ffa82cfe3d3102474919a811a60807b3p-1,
+    -0x1.0008p2
+  },
+  { // Entry 54
+    0x1.00718b006b52c2ab11702de3389d77dep-5,
+    0x1.0087p-5
+  },
+  { // Entry 55
+    -0x1.00718b006b52c2ab11702de3389d77dep-5,
+    -0x1.0087p-5
+  },
+  { // Entry 56
+    0x1.ffaacb36b2dfa869b4fddee9c98dc067p-1,
+    0x1.01p2
+  },
+  { // Entry 57
+    -0x1.ffaacb36b2dfa869b4fddee9c98dc067p-1,
+    -0x1.01p2
+  },
+  { // Entry 58
+    0x1.fffff900052e44ea345da5965f4d110ep-1,
+    0x1.0137p3
+  },
+  { // Entry 59
+    -0x1.fffff900052e44ea345da5965f4d110ep-1,
+    -0x1.0137p3
+  },
+  { // Entry 60
+    0x1.fc32f80000dd7b300750a0078a9054c1p-3,
+    0x1.03843ep-2
+  },
+  { // Entry 61
+    -0x1.fc32f80000dd7b300750a0078a9054c1p-3,
+    -0x1.03843ep-2
+  },
+  { // Entry 62
+    0x1.fd19570002093df94b65683f9a00917fp-3,
+    0x1.03ffp-2
+  },
+  { // Entry 63
+    -0x1.fd19570002093df94b65683f9a00917fp-3,
+    -0x1.03ffp-2
+  },
+  { // Entry 64
+    0x1.fde5d8ffff80b927d4d76ae1dce6f59bp-3,
+    0x1.046cp-2
+  },
+  { // Entry 65
+    -0x1.fde5d8ffff80b927d4d76ae1dce6f59bp-3,
+    -0x1.046cp-2
+  },
+  { // Entry 66
+    0x1.feb06fff85b879ae19eb2bc5cf70e031p-3,
+    0x1.04d8p-2
+  },
+  { // Entry 67
+    -0x1.feb06fff85b879ae19eb2bc5cf70e031p-3,
+    -0x1.04d8p-2
+  },
+  { // Entry 68
+    0x1.e6c426ed700f503e6583df7694a4979bp-2,
+    0x1.08b038p-1
+  },
+  { // Entry 69
+    -0x1.e6c426ed700f503e6583df7694a4979bp-2,
+    -0x1.08b038p-1
+  },
+  { // Entry 70
+    0x1.fffffc0001871106009b5aaf55c49116p-1,
+    0x1.0a2b2ap3
+  },
+  { // Entry 71
+    -0x1.fffffc0001871106009b5aaf55c49116p-1,
+    -0x1.0a2b2ap3
+  },
+  { // Entry 72
+    0x1.ffc392f4ab8d534aa69f7c5166cf0366p-1,
+    0x1.0cp2
+  },
+  { // Entry 73
+    -0x1.ffc392f4ab8d534aa69f7c5166cf0366p-1,
+    -0x1.0cp2
+  },
+  { // Entry 74
+    0x1.0acd33000032a880878690d403afbcbep-3,
+    0x1.0c5392p-3
+  },
+  { // Entry 75
+    -0x1.0acd33000032a880878690d403afbcbep-3,
+    -0x1.0c5392p-3
+  },
+  { // Entry 76
+    0x1.fffffcfb1bf37b0f791d7a17eb6b0a15p-1,
+    0x1.0eab7cp3
+  },
+  { // Entry 77
+    -0x1.fffffcfb1bf37b0f791d7a17eb6b0a15p-1,
+    -0x1.0eab7cp3
+  },
+  { // Entry 78
+    0x1.fffffcfb1e37253dc76193d1e1aed817p-1,
+    0x1.0eab88p3
+  },
+  { // Entry 79
+    -0x1.fffffcfb1e37253dc76193d1e1aed817p-1,
+    -0x1.0eab88p3
+  },
+  { // Entry 80
+    0x1.fffffcfb3902021b406b1ea187844f4bp-1,
+    0x1.0eac16p3
+  },
+  { // Entry 81
+    -0x1.fffffcfb3902021b406b1ea187844f4bp-1,
+    -0x1.0eac16p3
+  },
+  { // Entry 82
+    0x1.f5443f00c7ad11ba27b4800bc8cff692p-2,
+    0x1.12236ap-1
+  },
+  { // Entry 83
+    -0x1.f5443f00c7ad11ba27b4800bc8cff692p-2,
+    -0x1.12236ap-1
+  },
+  { // Entry 84
+    0x1.0db18affff41c0dc320851eef3614bffp-2,
+    0x1.1433d2p-2
+  },
+  { // Entry 85
+    -0x1.0db18affff41c0dc320851eef3614bffp-2,
+    -0x1.1433d2p-2
+  },
+  { // Entry 86
+    0x1.fffffdfdabb86f8672c461c08d04046fp-1,
+    0x1.152faep3
+  },
+  { // Entry 87
+    -0x1.fffffdfdabb86f8672c461c08d04046fp-1,
+    -0x1.152faep3
+  },
+  { // Entry 88
+    0x1.fa265d240155e5013f12a3b41500189ep-2,
+    0x1.155cp-1
+  },
+  { // Entry 89
+    -0x1.fa265d240155e5013f12a3b41500189ep-2,
+    -0x1.155cp-1
+  },
+  { // Entry 90
+    0x1.fc9a1a5f9c32905aaf97cba3f8aafaf0p-2,
+    0x1.16fcp-1
+  },
+  { // Entry 91
+    -0x1.fc9a1a5f9c32905aaf97cba3f8aafaf0p-2,
+    -0x1.16fcp-1
+  },
+  { // Entry 92
+    0x1.155868ffff4152df457a24ad6f413bdfp-3,
+    0x1.170f48p-3
+  },
+  { // Entry 93
+    -0x1.155868ffff4152df457a24ad6f413bdfp-3,
+    -0x1.170f48p-3
+  },
+  { // Entry 94
+    0x1.177d0f00f641d1e96c79c7abd75269b1p-6,
+    0x1.1784p-6
+  },
+  { // Entry 95
+    -0x1.177d0f00f641d1e96c79c7abd75269b1p-6,
+    -0x1.1784p-6
+  },
+  { // Entry 96
+    0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    0x1.1908p-4
+  },
+  { // Entry 97
+    -0x1.189751ff578effbe5ec0f53fb816c705p-4,
+    -0x1.1908p-4
+  },
+  { // Entry 98
+    0x1.1dce250138c3f920efea001b064975a3p-7,
+    0x1.1dd0p-7
+  },
+  { // Entry 99
+    -0x1.1dce250138c3f920efea001b064975a3p-7,
+    -0x1.1dd0p-7
+  },
+  { // Entry 100
+    0x1.1dda24c562621a0640fe0b86641cd64bp-7,
+    0x1.1ddcp-7
+  },
+  { // Entry 101
+    -0x1.1dda24c562621a0640fe0b86641cd64bp-7,
+    -0x1.1ddcp-7
+  },
+  { // Entry 102
+    0x1.1fa86e8f695d32c4d8d874744814444dp-6,
+    0x1.1fb0p-6
+  },
+  { // Entry 103
+    -0x1.1fa86e8f695d32c4d8d874744814444dp-6,
+    -0x1.1fb0p-6
+  },
+  { // Entry 104
+    0x1.a01401001045019528db07ebeec35ef9p-1,
+    0x1.2281aap0
+  },
+  { // Entry 105
+    -0x1.a01401001045019528db07ebeec35ef9p-1,
+    -0x1.2281aap0
+  },
+  { // Entry 106
+    0x1.aeea270075d91da2ac1928b5d795a866p-1,
+    0x1.3a0b6cp0
+  },
+  { // Entry 107
+    -0x1.aeea270075d91da2ac1928b5d795a866p-1,
+    -0x1.3a0b6cp0
+  },
+  { // Entry 108
+    0x1.58840500489a56042910d82b4425107cp-10,
+    0x1.588412p-10
+  },
+  { // Entry 109
+    -0x1.58840500489a56042910d82b4425107cp-10,
+    -0x1.588412p-10
+  },
+  { // Entry 110
+    0x1.fffc48bea6ea7bca9e3cc76637bfbfcep-1,
+    0x1.653fbcp2
+  },
+  { // Entry 111
+    -0x1.fffc48bea6ea7bca9e3cc76637bfbfcep-1,
+    -0x1.653fbcp2
+  },
+  { // Entry 112
+    0x1.fffc48d5dfe4c3c0ebf5fc4e969507bap-1,
+    0x1.654084p2
+  },
+  { // Entry 113
+    -0x1.fffc48d5dfe4c3c0ebf5fc4e969507bap-1,
+    -0x1.654084p2
+  },
+  { // Entry 114
+    0x1.fffc5933b716ebf93b846ed2d0629240p-1,
+    0x1.65ceb4p2
+  },
+  { // Entry 115
+    -0x1.fffc5933b716ebf93b846ed2d0629240p-1,
+    -0x1.65ceb4p2
+  },
+  { // Entry 116
+    0x1.6cc3070142cab25a8a3556c9810da1e8p-5,
+    0x1.6d00d0p-5
+  },
+  { // Entry 117
+    -0x1.6cc3070142cab25a8a3556c9810da1e8p-5,
+    -0x1.6d00d0p-5
+  },
+  { // Entry 118
+    0x1.6cc309003eed18aedf499413fadb462fp-5,
+    0x1.6d00d2p-5
+  },
+  { // Entry 119
+    -0x1.6cc309003eed18aedf499413fadb462fp-5,
+    -0x1.6d00d2p-5
+  },
+  { // Entry 120
+    0x1.fd3f72ffe427753610423980d1d05fedp-1,
+    0x1.7aa642p1
+  },
+  { // Entry 121
+    -0x1.fd3f72ffe427753610423980d1d05fedp-1,
+    -0x1.7aa642p1
+  },
+  { // Entry 122
+    0x1.7c2f60ffff4224b41b98aa2e87d40e93p-3,
+    0x1.80a516p-3
+  },
+  { // Entry 123
+    -0x1.7c2f60ffff4224b41b98aa2e87d40e93p-3,
+    -0x1.80a516p-3
+  },
+  { // Entry 124
+    0x1.fffec68f7d9cae8cb2022d2f6e1cb483p-1,
+    0x1.88c660p2
+  },
+  { // Entry 125
+    -0x1.fffec68f7d9cae8cb2022d2f6e1cb483p-1,
+    -0x1.88c660p2
+  },
+  { // Entry 126
+    0x1.8959449ca3adfa7d322370460455a902p-9,
+    0x1.895992p-9
+  },
+  { // Entry 127
+    -0x1.8959449ca3adfa7d322370460455a902p-9,
+    -0x1.895992p-9
+  },
+  { // Entry 128
+    0x1.fffecc86683d8ef8a1fb2cafaea1545fp-1,
+    0x1.8963c4p2
+  },
+  { // Entry 129
+    -0x1.fffecc86683d8ef8a1fb2cafaea1545fp-1,
+    -0x1.8963c4p2
+  },
+  { // Entry 130
+    0x1.79b6110000baefbe3999a6dff4c4acdbp-2,
+    0x1.8c6448p-2
+  },
+  { // Entry 131
+    -0x1.79b6110000baefbe3999a6dff4c4acdbp-2,
+    -0x1.8c6448p-2
+  },
+  { // Entry 132
+    0x1.9556a2f5d933a6a7c7cf78568bb7249ap-7,
+    0x1.955beep-7
+  },
+  { // Entry 133
+    -0x1.9556a2f5d933a6a7c7cf78568bb7249ap-7,
+    -0x1.955beep-7
+  },
+  { // Entry 134
+    0x1.a6460901ad2d3a62ccc87319783ddde8p-8,
+    0x1.a64788p-8
+  },
+  { // Entry 135
+    -0x1.a6460901ad2d3a62ccc87319783ddde8p-8,
+    -0x1.a64788p-8
+  },
+  { // Entry 136
+    0x1.62faf5001c03bf4b64fe9125b3ecbd72p-1,
+    0x1.b569c2p-1
+  },
+  { // Entry 137
+    -0x1.62faf5001c03bf4b64fe9125b3ecbd72p-1,
+    -0x1.b569c2p-1
+  },
+  { // Entry 138
+    0x1.ffffb2f40c1a3456b2931f183789727dp-1,
+    0x1.b5ad60p2
+  },
+  { // Entry 139
+    -0x1.ffffb2f40c1a3456b2931f183789727dp-1,
+    -0x1.b5ad60p2
+  },
+  { // Entry 140
+    0x1.b855a8c8313c4cd13e0f00b884857ca3p-7,
+    0x1.b85c72p-7
+  },
+  { // Entry 141
+    -0x1.b855a8c8313c4cd13e0f00b884857ca3p-7,
+    -0x1.b85c72p-7
+  },
+  { // Entry 142
+    0x1.af0793000035655bbe779d897c9f5d4ep-2,
+    0x1.cb9714p-2
+  },
+  { // Entry 143
+    -0x1.af0793000035655bbe779d897c9f5d4ep-2,
+    -0x1.cb9714p-2
+  },
+  { // Entry 144
+    0x1.cf812104022313677123e2625c6cb00bp-5,
+    0x1.cffffep-5
+  },
+  { // Entry 145
+    -0x1.cf812104022313677123e2625c6cb00bp-5,
+    -0x1.cffffep-5
+  },
+  { // Entry 146
+    0x1.d5132b00e44b3c951c3d25000110a656p-4,
+    0x1.d7244cp-4
+  },
+  { // Entry 147
+    -0x1.d5132b00e44b3c951c3d25000110a656p-4,
+    -0x1.d7244cp-4
+  },
+  { // Entry 148
+    0x1.bc797cffffff6db7359d1c595930bc63p-2,
+    0x1.dc0accp-2
+  },
+  { // Entry 149
+    -0x1.bc797cffffff6db7359d1c595930bc63p-2,
+    -0x1.dc0accp-2
+  },
+  { // Entry 150
+    0x1.dd556501c8476b8826b0d4995a3e0054p-7,
+    0x1.dd5e0ap-7
+  },
+  { // Entry 151
+    -0x1.dd556501c8476b8826b0d4995a3e0054p-7,
+    -0x1.dd5e0ap-7
+  },
+  { // Entry 152
+    0x1.dfe86501ca363c2f1da356d0632fe6c8p-7,
+    0x1.dff12ep-7
+  },
+  { // Entry 153
+    -0x1.dfe86501ca363c2f1da356d0632fe6c8p-7,
+    -0x1.dff12ep-7
+  },
+  { // Entry 154
+    0x1.d9d7000000930fc88ef47c6e1ada9a2ep-3,
+    0x1.e293c6p-3
+  },
+  { // Entry 155
+    -0x1.d9d7000000930fc88ef47c6e1ada9a2ep-3,
+    -0x1.e293c6p-3
+  },
+  { // Entry 156
+    0x1.e3871b0406361c77ff3262df09e8c737p-11,
+    0x1.e38724p-11
+  },
+  { // Entry 157
+    -0x1.e3871b0406361c77ff3262df09e8c737p-11,
+    -0x1.e38724p-11
+  },
+  { // Entry 158
+    0x1.e7f6c1d323d9985457500cf721006947p-7,
+    0x1.e7fffep-7
+  },
+  { // Entry 159
+    -0x1.e7f6c1d323d9985457500cf721006947p-7,
+    -0x1.e7fffep-7
+  },
+  { // Entry 160
+    0x1.7c54ecfffa1859038ca17969c97fe5dep-1,
+    0x1.e9de92p-1
+  },
+  { // Entry 161
+    -0x1.7c54ecfffa1859038ca17969c97fe5dep-1,
+    -0x1.e9de92p-1
+  },
+  { // Entry 162
+    0x1.f34e86fff858026738196409a11a9d77p-4,
+    0x1.f5cd60p-4
+  },
+  { // Entry 163
+    -0x1.f34e86fff858026738196409a11a9d77p-4,
+    -0x1.f5cd60p-4
+  },
+  { // Entry 164
+    0x1.f650cd01dd1dd3b74d4170b58162d604p-7,
+    0x1.f65ae0p-7
+  },
+  { // Entry 165
+    -0x1.f650cd01dd1dd3b74d4170b58162d604p-7,
+    -0x1.f65ae0p-7
+  },
+  { // Entry 166
+    0x1.f7f5d19736651657bb4a908bb6ce6f3cp-7,
+    0x1.f7fffep-7
+  },
+  { // Entry 167
+    -0x1.f7f5d19736651657bb4a908bb6ce6f3cp-7,
+    -0x1.f7fffep-7
+  },
+  { // Entry 168
+    0x1.f936b301e75e5596ad5b43deb4061c2cp-10,
+    0x1.f936dcp-10
+  },
+  { // Entry 169
+    -0x1.f936b301e75e5596ad5b43deb4061c2cp-10,
+    -0x1.f936dcp-10
+  },
+  { // Entry 170
+    0x1.fb5c247b97361255c41f765d4cbab28ep-10,
+    0x1.fb5c4ep-10
+  },
+  { // Entry 171
+    -0x1.fb5c247b97361255c41f765d4cbab28ep-10,
+    -0x1.fb5c4ep-10
+  },
+  { // Entry 172
+    0x1.fb60ee7a6a3af79f5ce57fd612d65a22p-10,
+    0x1.fb6118p-10
+  },
+  { // Entry 173
+    -0x1.fb60ee7a6a3af79f5ce57fd612d65a22p-10,
+    -0x1.fb6118p-10
+  },
+  { // Entry 174
+    0x1.fb61507a522ba9573e82098c0792ba25p-10,
+    0x1.fb617ap-10
+  },
+  { // Entry 175
+    -0x1.fb61507a522ba9573e82098c0792ba25p-10,
+    -0x1.fb617ap-10
+  },
+  { // Entry 176
+    0x1.fb896701df3450ee4bc970f28fb75445p-8,
+    0x1.fb8cp-8
+  },
+  { // Entry 177
+    -0x1.fb896701df3450ee4bc970f28fb75445p-8,
+    -0x1.fb8cp-8
+  },
+  { // Entry 178
+    0x1.fc3c1bffffc9f2bffbd43471548806fcp-4,
+    0x1.fede10p-4
+  },
+  { // Entry 179
+    -0x1.fc3c1bffffc9f2bffbd43471548806fcp-4,
+    -0x1.fede10p-4
+  },
+  { // Entry 180
+    0x1.fed5976f11593f5d7e4b3836da802317p-6,
+    0x1.fefffep-6
+  },
+  { // Entry 181
+    -0x1.fed5976f11593f5d7e4b3836da802317p-6,
+    -0x1.fefffep-6
+  },
+  { // Entry 182
+    0x1.ff1d56d81077af007425dda32d1f0031p-8,
+    0x1.ff1ffep-8
+  },
+  { // Entry 183
+    -0x1.ff1d56d81077af007425dda32d1f0031p-8,
+    -0x1.ff1ffep-8
+  },
+  { // Entry 184
+    0x1.fff1d3d1b5268bffb0a21ac78411370bp-7,
+    0x1.fffc7ep-7
+  },
+  { // Entry 185
+    -0x1.fff1d3d1b5268bffb0a21ac78411370bp-7,
+    -0x1.fffc7ep-7
+  },
+  { // Entry 186
+    0x1.fd580cdbebec6f60e3365d17ed60414ap-4,
+    0x1.fffe74p-4
+  },
+  { // Entry 187
+    -0x1.fd580cdbebec6f60e3365d17ed60414ap-4,
+    -0x1.fffe74p-4
+  },
+  { // Entry 188
+    0x1.f596b7f7b4c13c155c3efd93f5dfe6d2p-3,
+    0x1.fffebap-3
+  },
+  { // Entry 189
+    -0x1.f596b7f7b4c13c155c3efd93f5dfe6d2p-3,
+    -0x1.fffebap-3
+  },
+  { // Entry 190
+    0x1.f597340cb7cde9ab8349aed17bf234d0p-3,
+    0x1.ffff3ep-3
+  },
+  { // Entry 191
+    -0x1.f597340cb7cde9ab8349aed17bf234d0p-3,
+    -0x1.ffff3ep-3
+  },
+  { // Entry 192
+    0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    0x1.ffff7ep-5
+  },
+  { // Entry 193
+    -0x1.ff5517ffac72f276baf86702efd7f0e4p-5,
+    -0x1.ffff7ep-5
+  },
+  { // Entry 194
+    0x1.85ef82ffff600101847e4b0f9e445356p-1,
+    0x1.ffffa0p-1
+  },
+  { // Entry 195
+    -0x1.85ef82ffff600101847e4b0f9e445356p-1,
+    -0x1.ffffa0p-1
+  },
+  { // Entry 196
+    0x1.d9352125813bde3aa9ea505b2809fca3p-2,
+    0x1.ffffdcp-2
+  },
+  { // Entry 197
+    -0x1.d9352125813bde3aa9ea505b2809fca3p-2,
+    -0x1.ffffdcp-2
+  },
+  { // Entry 198
+    0x1.ffa817006391aeb5707dac7212cf73d5p-1,
+    0x1.fffffap1
+  },
+  { // Entry 199
+    -0x1.ffa817006391aeb5707dac7212cf73d5p-1,
+    -0x1.fffffap1
+  },
+  { // Entry 200
+    0x1.a86c170000be8e7f4d04a063da24860ep-3,
+    0x1.aea8e2p-3
+  },
+  { // Entry 201
+    -0x1.a86c170000be8e7f4d04a063da24860ep-3,
+    -0x1.aea8e2p-3
+  },
+  { // Entry 202
+    0.0,
+    0.0
+  },
+  { // Entry 203
+    0x1.1a5eefe0da6da46ea6f171425810e4dfp-5,
+    0x1.1a7b96p-5
+  },
+  { // Entry 204
+    -0x1.1a5eefe0da6da46ea6f171425810e4dfp-5,
+    -0x1.1a7b96p-5
+  },
+  { // Entry 205
+    0x1.1a09274ac6f7b6d4b727690be74eb0ddp-4,
+    0x1.1a7b96p-4
+  },
+  { // Entry 206
+    -0x1.1a09274ac6f7b6d4b727690be74eb0ddp-4,
+    -0x1.1a7b96p-4
+  },
+  { // Entry 207
+    0x1.a6381479e10e322568c693ec4f279989p-4,
+    0x1.a7b960p-4
+  },
+  { // Entry 208
+    -0x1.a6381479e10e322568c693ec4f279989p-4,
+    -0x1.a7b960p-4
+  },
+  { // Entry 209
+    0x1.18b472d6fbe7dee4499ec16056fea055p-3,
+    0x1.1a7b96p-3
+  },
+  { // Entry 210
+    -0x1.18b472d6fbe7dee4499ec16056fea055p-3,
+    -0x1.1a7b96p-3
+  },
+  { // Entry 211
+    0x1.5da54dc77f05440705ed9d5be3f9e9d8p-3,
+    0x1.611a7cp-3
+  },
+  { // Entry 212
+    -0x1.5da54dc77f05440705ed9d5be3f9e9d8p-3,
+    -0x1.611a7cp-3
+  },
+  { // Entry 213
+    0x1.a1c7a7ee254eb0b79612d120102ce9cdp-3,
+    0x1.a7b962p-3
+  },
+  { // Entry 214
+    -0x1.a1c7a7ee254eb0b79612d120102ce9cdp-3,
+    -0x1.a7b962p-3
+  },
+  { // Entry 215
+    0x1.e4f66de638560e22d3726a77da8f160fp-3,
+    0x1.ee5848p-3
+  },
+  { // Entry 216
+    -0x1.e4f66de638560e22d3726a77da8f160fp-3,
+    -0x1.ee5848p-3
+  },
+  { // Entry 217
+    0x1.13875aa36e2d8920626dbd412fff0a19p-2,
+    0x1.1a7b96p-2
+  },
+  { // Entry 218
+    -0x1.13875aa36e2d8920626dbd412fff0a19p-2,
+    -0x1.1a7b96p-2
+  },
+  { // Entry 219
+    0x1.33f8019585f3cc502e91eecf50e70e1ep-2,
+    0x1.3dcb08p-2
+  },
+  { // Entry 220
+    -0x1.33f8019585f3cc502e91eecf50e70e1ep-2,
+    -0x1.3dcb08p-2
+  },
+  { // Entry 221
+    0x1.53be3e2cd98b021967b9bd31e58b5176p-2,
+    0x1.611a7ap-2
+  },
+  { // Entry 222
+    -0x1.53be3e2cd98b021967b9bd31e58b5176p-2,
+    -0x1.611a7ap-2
+  },
+  { // Entry 223
+    0x1.72cc88c146572445dafcbe755d41bcabp-2,
+    0x1.8469ecp-2
+  },
+  { // Entry 224
+    -0x1.72cc88c146572445dafcbe755d41bcabp-2,
+    -0x1.8469ecp-2
+  },
+  { // Entry 225
+    0x1.9116ceec77a9f298abf6b13437746b97p-2,
+    0x1.a7b95ep-2
+  },
+  { // Entry 226
+    -0x1.9116ceec77a9f298abf6b13437746b97p-2,
+    -0x1.a7b95ep-2
+  },
+  { // Entry 227
+    0x1.ae927d0b74198b988ccf700a98369717p-2,
+    0x1.cb08d0p-2
+  },
+  { // Entry 228
+    -0x1.ae927d0b74198b988ccf700a98369717p-2,
+    -0x1.cb08d0p-2
+  },
+  { // Entry 229
+    0x1.cb3682279dc978565aefc3dbd264dc6bp-2,
+    0x1.ee5842p-2
+  },
+  { // Entry 230
+    -0x1.cb3682279dc978565aefc3dbd264dc6bp-2,
+    -0x1.ee5842p-2
+  },
+  { // Entry 231
+    0x1.e6fb4e9962e192a0d5bde52d580d91p-2,
+    0x1.08d3dap-1
+  },
+  { // Entry 232
+    -0x1.e6fb4e9962e192a0d5bde52d580d91p-2,
+    -0x1.08d3dap-1
+  },
+  { // Entry 233
+    0x1.00ed67a7ca644147f7f84f1f3f68eb4ep-1,
+    0x1.1a7b94p-1
+  },
+  { // Entry 234
+    -0x1.00ed67a7ca644147f7f84f1f3f68eb4ep-1,
+    -0x1.1a7b94p-1
+  },
+  { // Entry 235
+    0x1.0de82f529333a223ff587747d148653cp-1,
+    0x1.2c234ep-1
+  },
+  { // Entry 236
+    -0x1.0de82f529333a223ff587747d148653cp-1,
+    -0x1.2c234ep-1
+  },
+  { // Entry 237
+    0x1.1a6c5d5a29120e952b1038e517a86a7ap-1,
+    0x1.3dcb08p-1
+  },
+  { // Entry 238
+    -0x1.1a6c5d5a29120e952b1038e517a86a7ap-1,
+    -0x1.3dcb08p-1
+  },
+  { // Entry 239
+    0x1.2678f914054d8f29392b6e43daa2fe82p-1,
+    0x1.4f72c2p-1
+  },
+  { // Entry 240
+    -0x1.2678f914054d8f29392b6e43daa2fe82p-1,
+    -0x1.4f72c2p-1
+  },
+  { // Entry 241
+    0x1.320da804a66b5aea0e2572fe3978eac8p-1,
+    0x1.611a7cp-1
+  },
+  { // Entry 242
+    -0x1.320da804a66b5aea0e2572fe3978eac8p-1,
+    -0x1.611a7cp-1
+  },
+  { // Entry 243
+    0x1.3d2aa2c374c14e0b68b69e1f2aad8daep-1,
+    0x1.72c236p-1
+  },
+  { // Entry 244
+    -0x1.3d2aa2c374c14e0b68b69e1f2aad8daep-1,
+    -0x1.72c236p-1
+  },
+  { // Entry 245
+    0x1.47d0a924d14e34db0ec4761b0df7646dp-1,
+    0x1.8469f0p-1
+  },
+  { // Entry 246
+    -0x1.47d0a924d14e34db0ec4761b0df7646dp-1,
+    -0x1.8469f0p-1
+  },
+  { // Entry 247
+    0x1.5200f5eeb74275fa79657708d5b078b6p-1,
+    0x1.9611aap-1
+  },
+  { // Entry 248
+    -0x1.5200f5eeb74275fa79657708d5b078b6p-1,
+    -0x1.9611aap-1
+  },
+  { // Entry 249
+    0x1.5bbd32569013f13f86d8a0f1ef604c1dp-1,
+    0x1.a7b964p-1
+  },
+  { // Entry 250
+    -0x1.5bbd32569013f13f86d8a0f1ef604c1dp-1,
+    -0x1.a7b964p-1
+  },
+  { // Entry 251
+    0x1.650769803034e7d79ffaa44b0cc39437p-1,
+    0x1.b9611ep-1
+  },
+  { // Entry 252
+    -0x1.650769803034e7d79ffaa44b0cc39437p-1,
+    -0x1.b9611ep-1
+  },
+  { // Entry 253
+    0x1.6de1fc2ec1c6722f9de045bb1a94b919p-1,
+    0x1.cb08d8p-1
+  },
+  { // Entry 254
+    -0x1.6de1fc2ec1c6722f9de045bb1a94b919p-1,
+    -0x1.cb08d8p-1
+  },
+  { // Entry 255
+    0x1.764f94d0fb2866129f770f308fa0ba85p-1,
+    0x1.dcb092p-1
+  },
+  { // Entry 256
+    -0x1.764f94d0fb2866129f770f308fa0ba85p-1,
+    -0x1.dcb092p-1
+  },
+  { // Entry 257
+    0x1.7e531c0aa594c275df30c5b8451bba53p-1,
+    0x1.ee584cp-1
+  },
+  { // Entry 258
+    -0x1.7e531c0aa594c275df30c5b8451bba53p-1,
+    -0x1.ee584cp-1
+  },
+  { // Entry 259
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 260
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 261
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p100
+  },
+  { // Entry 262
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p100
+  },
+  { // Entry 263
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.0d7944p100
+  },
+  { // Entry 264
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.0d7944p100
+  },
+  { // Entry 265
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.1af288p100
+  },
+  { // Entry 266
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.1af288p100
+  },
+  { // Entry 267
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.286bccp100
+  },
+  { // Entry 268
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.286bccp100
+  },
+  { // Entry 269
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.35e510p100
+  },
+  { // Entry 270
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.35e510p100
+  },
+  { // Entry 271
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.435e54p100
+  },
+  { // Entry 272
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.435e54p100
+  },
+  { // Entry 273
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.50d798p100
+  },
+  { // Entry 274
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.50d798p100
+  },
+  { // Entry 275
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.5e50dcp100
+  },
+  { // Entry 276
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.5e50dcp100
+  },
+  { // Entry 277
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.6bca20p100
+  },
+  { // Entry 278
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.6bca20p100
+  },
+  { // Entry 279
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.794364p100
+  },
+  { // Entry 280
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.794364p100
+  },
+  { // Entry 281
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.86bca8p100
+  },
+  { // Entry 282
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.86bca8p100
+  },
+  { // Entry 283
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9435ecp100
+  },
+  { // Entry 284
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9435ecp100
+  },
+  { // Entry 285
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.a1af30p100
+  },
+  { // Entry 286
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.a1af30p100
+  },
+  { // Entry 287
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.af2874p100
+  },
+  { // Entry 288
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.af2874p100
+  },
+  { // Entry 289
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.bca1b8p100
+  },
+  { // Entry 290
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.bca1b8p100
+  },
+  { // Entry 291
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.ca1afcp100
+  },
+  { // Entry 292
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.ca1afcp100
+  },
+  { // Entry 293
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.d79440p100
+  },
+  { // Entry 294
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.d79440p100
+  },
+  { // Entry 295
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.e50d84p100
+  },
+  { // Entry 296
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.e50d84p100
+  },
+  { // Entry 297
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.f286c8p100
+  },
+  { // Entry 298
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.f286c8p100
+  },
+  { // Entry 299
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p101
+  },
+  { // Entry 300
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p101
+  },
+  { // Entry 301
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 302
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 303
+    0.0,
+    0.0
+  },
+  { // Entry 304
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 305
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 306
+    0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 307
+    -0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 308
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.p-1
+  },
+  { // Entry 309
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.p-1
+  },
+  { // Entry 310
+    0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    0x1.000002p-1
+  },
+  { // Entry 311
+    -0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 312
+    0x1.fffffa7fc7b1f6bc2e2cdde1540f0470p-2,
+    0x1.193ea4p-1
+  },
+  { // Entry 313
+    -0x1.fffffa7fc7b1f6bc2e2cdde1540f0470p-2,
+    -0x1.193ea4p-1
+  },
+  { // Entry 314
+    0x1.fffffd7fc7b5f6f475c594f45adc9be5p-2,
+    0x1.193ea6p-1
+  },
+  { // Entry 315
+    -0x1.fffffd7fc7b5f6f475c594f45adc9be5p-2,
+    -0x1.193ea6p-1
+  },
+  { // Entry 316
+    0x1.0000003fe3db7b965f4f34192b818b64p-1,
+    0x1.193ea8p-1
+  },
+  { // Entry 317
+    -0x1.0000003fe3db7b965f4f34192b818b64p-1,
+    -0x1.193ea8p-1
+  },
+  { // Entry 318
+    0x1.fffffffffffffffa422e1905e1f508eep-1,
+    0x1.5ffffep4
+  },
+  { // Entry 319
+    -0x1.fffffffffffffffa422e1905e1f508eep-1,
+    -0x1.5ffffep4
+  },
+  { // Entry 320
+    0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    0x1.60p4
+  },
+  { // Entry 321
+    -0x1.fffffffffffffffa422f887a2dc5050cp-1,
+    -0x1.60p4
+  },
+  { // Entry 322
+    0x1.fffffffffffffffa4230f7ee1db7f9b3p-1,
+    0x1.600002p4
+  },
+  { // Entry 323
+    -0x1.fffffffffffffffa4230f7ee1db7f9b3p-1,
+    -0x1.600002p4
+  },
+  { // Entry 324
+    -0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 325
+    0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 326
+    -0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 327
+    0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 328
+    -0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 329
+    0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 330
+    -0x1.55555563e05644101a754f1b989bf5e0p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 331
+    0x1.55555563e05644101a754f1b989bf5e0p-2,
+    0x1.62e430p-2
+  },
+  { // Entry 332
+    -0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 333
+    0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 334
+    -0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 335
+    0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 336
+    -0x1.5f619990a5492052ffe57497a9abd298p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 337
+    0x1.5f619990a5492052ffe57497a9abd298p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 338
+    -0x1.5f61979fb7af4d856def98ede8520596p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 339
+    0x1.5f61979fb7af4d856def98ede8520596p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 340
+    -0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 341
+    0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 342
+    -0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 343
+    0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    0x1.62e430p-4
+  },
+  { // Entry 344
+    -0x1.620183f9723c526db01581b03289e0f8p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 345
+    0x1.620183f9723c526db01581b03289e0f8p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 346
+    -0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 347
+    0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 348
+    -0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 349
+    0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 350
+    -0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 351
+    0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 352
+    -0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 353
+    0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 354
+    -0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 355
+    0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 356
+    -0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 357
+    0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 358
+    -0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 359
+    0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 360
+    0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    0x1.62e42cp-6
+  },
+  { // Entry 361
+    -0x1.62d5f72ac8fc64aef404ea2dd7db57a6p-6,
+    -0x1.62e42cp-6
+  },
+  { // Entry 362
+    0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    0x1.62e42ep-6
+  },
+  { // Entry 363
+    -0x1.62d5f92a8b81d6095737ce1a949ac4bep-6,
+    -0x1.62e42ep-6
+  },
+  { // Entry 364
+    0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    0x1.62e430p-6
+  },
+  { // Entry 365
+    -0x1.62d5fb2a4e0746b264bbd3e451c465d4p-6,
+    -0x1.62e430p-6
+  },
+  { // Entry 366
+    0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    0x1.62e42cp-5
+  },
+  { // Entry 367
+    -0x1.62ab60da5610343ba64510e844c87ed4p-5,
+    -0x1.62e42cp-5
+  },
+  { // Entry 368
+    0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    0x1.62e42ep-5
+  },
+  { // Entry 369
+    -0x1.62ab62d96060fd8e75e7cb16c3cd0f7bp-5,
+    -0x1.62e42ep-5
+  },
+  { // Entry 370
+    0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    0x1.62e430p-5
+  },
+  { // Entry 371
+    -0x1.62ab64d86ab1c41d432598f1a7016c16p-5,
+    -0x1.62e430p-5
+  },
+  { // Entry 372
+    0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    0x1.62e42cp-4
+  },
+  { // Entry 373
+    -0x1.620181fd454caef095a305bc4bfa5f8cp-4,
+    -0x1.62e42cp-4
+  },
+  { // Entry 374
+    0x1.620183f9723c526db01581b03289e0f8p-4,
+    0x1.62e42ep-4
+  },
+  { // Entry 375
+    -0x1.620183f9723c526db01581b03289e0f8p-4,
+    -0x1.62e42ep-4
+  },
+  { // Entry 376
+    0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    0x1.62e430p-4
+  },
+  { // Entry 377
+    -0x1.620185f59f2beaefe5f1ff532c6185e9p-4,
+    -0x1.62e430p-4
+  },
+  { // Entry 378
+    0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    0x1.62e42cp-3
+  },
+  { // Entry 379
+    -0x1.5f6195aeca155016a893d14088fd4ba5p-3,
+    -0x1.62e42cp-3
+  },
+  { // Entry 380
+    0x1.5f61979fb7af4d856def98ede8520596p-3,
+    0x1.62e42ep-3
+  },
+  { // Entry 381
+    -0x1.5f61979fb7af4d856def98ede8520596p-3,
+    -0x1.62e42ep-3
+  },
+  { // Entry 382
+    0x1.5f619990a5492052ffe57497a9abd298p-3,
+    0x1.62e430p-3
+  },
+  { // Entry 383
+    -0x1.5f619990a5492052ffe57497a9abd298p-3,
+    -0x1.62e430p-3
+  },
+  { // Entry 384
+    0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    0x1.62e42cp-2
+  },
+  { // Entry 385
+    -0x1.555551d5a7719020ec6cf2d7658d0ac8p-2,
+    -0x1.62e42cp-2
+  },
+  { // Entry 386
+    0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    0x1.62e42ep-2
+  },
+  { // Entry 387
+    -0x1.5555539cc3e435f2961e38240bc73aa4p-2,
+    -0x1.62e42ep-2
+  },
+  { // Entry 388
+    0x1.55555563e05644101a754f1b989bf5e0p-2,
+    0x1.62e430p-2
+  },
+  { // Entry 389
+    -0x1.55555563e05644101a754f1b989bf5e0p-2,
+    -0x1.62e430p-2
+  },
+  { // Entry 390
+    0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    0x1.62e42cp-1
+  },
+  { // Entry 391
+    -0x1.333330ae4f974c09dfacf6fd31a6a22ap-1,
+    -0x1.62e42cp-1
+  },
+  { // Entry 392
+    0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    0x1.62e42ep-1
+  },
+  { // Entry 393
+    -0x1.333331f5fdae082d6c69302af70f1ab2p-1,
+    -0x1.62e42ep-1
+  },
+  { // Entry 394
+    0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    0x1.62e430p-1
+  },
+  { // Entry 395
+    -0x1.3333333dabc33b19ad2c008a3f7d4144p-1,
+    -0x1.62e430p-1
+  },
+  { // Entry 396
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42cp6
+  },
+  { // Entry 397
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42cp6
+  },
+  { // Entry 398
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42ep6
+  },
+  { // Entry 399
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42ep6
+  },
+  { // Entry 400
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e430p6
+  },
+  { // Entry 401
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e430p6
+  },
+  { // Entry 402
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da2p6
+  },
+  { // Entry 403
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1da2p6
+  },
+  { // Entry 404
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1da0p6
+  },
+  { // Entry 405
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1da0p6
+  },
+  { // Entry 406
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.9d1d9ep6
+  },
+  { // Entry 407
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.9d1d9ep6
+  },
+  { // Entry 408
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9f6p6
+  },
+  { // Entry 409
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9f6p6
+  },
+  { // Entry 410
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9f8p6
+  },
+  { // Entry 411
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9f8p6
+  },
+  { // Entry 412
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.65a9fap6
+  },
+  { // Entry 413
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.65a9fap6
+  },
+  { // Entry 414
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e430p6
+  },
+  { // Entry 415
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e430p6
+  },
+  { // Entry 416
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42ep6
+  },
+  { // Entry 417
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42ep6
+  },
+  { // Entry 418
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.62e42cp6
+  },
+  { // Entry 419
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.62e42cp6
+  },
+  { // Entry 420
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep62
+  },
+  { // Entry 421
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep62
+  },
+  { // Entry 422
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p63
+  },
+  { // Entry 423
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p63
+  },
+  { // Entry 424
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p63
+  },
+  { // Entry 425
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p63
+  },
+  { // Entry 426
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep26
+  },
+  { // Entry 427
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep26
+  },
+  { // Entry 428
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p27
+  },
+  { // Entry 429
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p27
+  },
+  { // Entry 430
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p27
+  },
+  { // Entry 431
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p27
+  },
+  { // Entry 432
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep23
+  },
+  { // Entry 433
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep23
+  },
+  { // Entry 434
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.p24
+  },
+  { // Entry 435
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.p24
+  },
+  { // Entry 436
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.000002p24
+  },
+  { // Entry 437
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.000002p24
+  },
+  { // Entry 438
+    0x1.ffffffffffffffffffffffcd2c4a64d0p-1,
+    0x1.fffffep4
+  },
+  { // Entry 439
+    -0x1.ffffffffffffffffffffffcd2c4a64d0p-1,
+    -0x1.fffffep4
+  },
+  { // Entry 440
+    0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    0x1.p5
+  },
+  { // Entry 441
+    -0x1.ffffffffffffffffffffffcd2c5719bcp-1,
+    -0x1.p5
+  },
+  { // Entry 442
+    0x1.ffffffffffffffffffffffcd2c70838ap-1,
+    0x1.000002p5
+  },
+  { // Entry 443
+    -0x1.ffffffffffffffffffffffcd2c70838ap-1,
+    -0x1.000002p5
+  },
+  { // Entry 444
+    0x1.fffffffffff1bdcbbc08e2044832bbfep-1,
+    0x1.fffffep3
+  },
+  { // Entry 445
+    -0x1.fffffffffff1bdcbbc08e2044832bbfep-1,
+    -0x1.fffffep3
+  },
+  { // Entry 446
+    0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    0x1.p4
+  },
+  { // Entry 447
+    -0x1.fffffffffff1bdcd844f4dfec4941943p-1,
+    -0x1.p4
+  },
+  { // Entry 448
+    0x1.fffffffffff1bdd114db7ad966aba40dp-1,
+    0x1.000002p4
+  },
+  { // Entry 449
+    -0x1.fffffffffff1bdd114db7ad966aba40dp-1,
+    -0x1.000002p4
+  },
+  { // Entry 450
+    0x1.fffff872a8a6b12003ef317c57617676p-1,
+    0x1.fffffep2
+  },
+  { // Entry 451
+    -0x1.fffff872a8a6b12003ef317c57617676p-1,
+    -0x1.fffffep2
+  },
+  { // Entry 452
+    0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    0x1.p3
+  },
+  { // Entry 453
+    -0x1.fffff872a91f8690ee0e6d3ad8aee46bp-1,
+    -0x1.p3
+  },
+  { // Entry 454
+    0x1.fffff872aa11315c1a493c74b407aa6ep-1,
+    0x1.000002p3
+  },
+  { // Entry 455
+    -0x1.fffff872aa11315c1a493c74b407aa6ep-1,
+    -0x1.000002p3
+  },
+  { // Entry 456
+    0x1.ffa81705e1a8bbcbf5a3dcf7cb937ef6p-1,
+    0x1.fffffep1
+  },
+  { // Entry 457
+    -0x1.ffa81705e1a8bbcbf5a3dcf7cb937ef6p-1,
+    -0x1.fffffep1
+  },
+  { // Entry 458
+    0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    0x1.p2
+  },
+  { // Entry 459
+    -0x1.ffa81708a0b4216857246c19dc60acb8p-1,
+    -0x1.p2
+  },
+  { // Entry 460
+    0x1.ffa8170e1ecaaac35b6d81d682891126p-1,
+    0x1.000002p2
+  },
+  { // Entry 461
+    -0x1.ffa8170e1ecaaac35b6d81d682891126p-1,
+    -0x1.000002p2
+  },
+  { // Entry 462
+    0x1.ed950599638c18fec5bd8135b3976fafp-1,
+    0x1.fffffep0
+  },
+  { // Entry 463
+    -0x1.ed950599638c18fec5bd8135b3976fafp-1,
+    -0x1.fffffep0
+  },
+  { // Entry 464
+    0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    0x1.p1
+  },
+  { // Entry 465
+    -0x1.ed9505e1bc3d3d33c432fc3e8255c8b5p-1,
+    -0x1.p1
+  },
+  { // Entry 466
+    0x1.ed9506726d9c40b04cf2556073e90aecp-1,
+    0x1.000002p1
+  },
+  { // Entry 467
+    -0x1.ed9506726d9c40b04cf2556073e90aecp-1,
+    -0x1.000002p1
+  },
+  { // Entry 468
+    0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 469
+    -0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 470
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 471
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 472
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 473
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 474
+    0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    0x1.fffffep-2
+  },
+  { // Entry 475
+    -0x1.d9353be2bf67df131f7df0e337af4ca9p-2,
+    -0x1.fffffep-2
+  },
+  { // Entry 476
+    0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    0x1.p-1
+  },
+  { // Entry 477
+    -0x1.d9353d7568af365128ee21c65b08d3a7p-2,
+    -0x1.p-1
+  },
+  { // Entry 478
+    0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    0x1.000002p-1
+  },
+  { // Entry 479
+    -0x1.d935409abb3bb6925a21ec1ab4945211p-2,
+    -0x1.000002p-1
+  },
+  { // Entry 480
+    0x1.f597e8885827eed9d73369feec84841dp-3,
+    0x1.fffffep-3
+  },
+  { // Entry 481
+    -0x1.f597e8885827eed9d73369feec84841dp-3,
+    -0x1.fffffep-3
+  },
+  { // Entry 482
+    0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    0x1.p-2
+  },
+  { // Entry 483
+    -0x1.f597ea69a1c85f1358d71d84729c80c8p-3,
+    -0x1.p-2
+  },
+  { // Entry 484
+    0x1.f597ee2c35088eb5da928b278522fdc0p-3,
+    0x1.000002p-2
+  },
+  { // Entry 485
+    -0x1.f597ee2c35088eb5da928b278522fdc0p-3,
+    -0x1.000002p-2
+  },
+  { // Entry 486
+    0x1.fd5990c4365de99b093619573aed5eefp-4,
+    0x1.fffffep-4
+  },
+  { // Entry 487
+    -0x1.fd5990c4365de99b093619573aed5eefp-4,
+    -0x1.fffffep-4
+  },
+  { // Entry 488
+    0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    0x1.p-3
+  },
+  { // Entry 489
+    -0x1.fd5992bc4b834fc0af6ac8eff7d81040p-4,
+    -0x1.p-3
+  },
+  { // Entry 490
+    0x1.fd5996ac75cded089eba2285d0035a24p-4,
+    0x1.000002p-3
+  },
+  { // Entry 491
+    -0x1.fd5996ac75cded089eba2285d0035a24p-4,
+    -0x1.000002p-3
+  },
+  { // Entry 492
+    0x1.ff55978001b8da0e0ab4904fa64b8d32p-5,
+    0x1.fffffep-5
+  },
+  { // Entry 493
+    -0x1.ff55978001b8da0e0ab4904fa64b8d32p-5,
+    -0x1.fffffep-5
+  },
+  { // Entry 494
+    0x1.ff55997e030d705935592a366a8a66d4p-5,
+    0x1.p-4
+  },
+  { // Entry 495
+    -0x1.ff55997e030d705935592a366a8a66d4p-5,
+    -0x1.p-4
+  },
+  { // Entry 496
+    0x1.ff559d7a05b690ff7d0e4114c0eb72c1p-5,
+    0x1.000002p-4
+  },
+  { // Entry 497
+    -0x1.ff559d7a05b690ff7d0e4114c0eb72c1p-5,
+    -0x1.000002p-4
+  },
+  { // Entry 498
+    0x1.ffd55799ab088fb326e9ba18d0997203p-6,
+    0x1.fffffep-6
+  },
+  { // Entry 499
+    -0x1.ffd55799ab088fb326e9ba18d0997203p-6,
+    -0x1.fffffep-6
+  },
+  { // Entry 500
+    0x1.ffd559992b1de28305fc17382205392ep-6,
+    0x1.p-5
+  },
+  { // Entry 501
+    -0x1.ffd559992b1de28305fc17382205392ep-6,
+    -0x1.p-5
+  },
+  { // Entry 502
+    0x1.ffd55d982b488523c3e9758124e0628bp-6,
+    0x1.000002p-5
+  },
+  { // Entry 503
+    -0x1.ffd55d982b488523c3e9758124e0628bp-6,
+    -0x1.000002p-5
+  },
+  { // Entry 504
+    0x1.fff55399b7de33c0d4da3bfbdc23a5d4p-7,
+    0x1.fffffep-7
+  },
+  { // Entry 505
+    -0x1.fff55399b7de33c0d4da3bfbdc23a5d4p-7,
+    -0x1.fffffep-7
+  },
+  { // Entry 506
+    0x1.fff5559997df892a1128575843fc0d52p-7,
+    0x1.p-6
+  },
+  { // Entry 507
+    -0x1.fff5559997df892a1128575843fc0d52p-7,
+    -0x1.p-6
+  },
+  { // Entry 508
+    0x1.fff5599957e2333c99c37490eae25a5ap-7,
+    0x1.000002p-6
+  },
+  { // Entry 509
+    -0x1.fff5599957e2333c99c37490eae25a5ap-7,
+    -0x1.000002p-6
+  },
+  { // Entry 510
+    0x1.fffffdf5555575999978428a3604016fp-15,
+    0x1.fffffep-15
+  },
+  { // Entry 511
+    -0x1.fffffdf5555575999978428a3604016fp-15,
+    -0x1.fffffep-15
+  },
+  { // Entry 512
+    0x1.fffffff555555599999997df7df7eab0p-15,
+    0x1.p-14
+  },
+  { // Entry 513
+    -0x1.fffffff555555599999997df7df7eab0p-15,
+    -0x1.p-14
+  },
+  { // Entry 514
+    0x1.000001faaaaa8acccc8e2144eeefdea1p-14,
+    0x1.000002p-14
+  },
+  { // Entry 515
+    -0x1.000001faaaaa8acccc8e2144eeefdea1p-14,
+    -0x1.000002p-14
+  },
+  { // Entry 516
+    0x1.fffffdfffffffff55555755555355599p-31,
+    0x1.fffffep-31
+  },
+  { // Entry 517
+    -0x1.fffffdfffffffff55555755555355599p-31,
+    -0x1.fffffep-31
+  },
+  { // Entry 518
+    0x1.fffffffffffffff55555555555555599p-31,
+    0x1.p-30
+  },
+  { // Entry 519
+    -0x1.fffffffffffffff55555555555555599p-31,
+    -0x1.p-30
+  },
+  { // Entry 520
+    0x1.000001fffffffffaaaaa8aaaaa6aaaccp-30,
+    0x1.000002p-30
+  },
+  { // Entry 521
+    -0x1.000001fffffffffaaaaa8aaaaa6aaaccp-30,
+    -0x1.000002p-30
+  },
+  { // Entry 522
+    0x1.fffffdfffffffffffffffffffffd5555p-56,
+    0x1.fffffep-56
+  },
+  { // Entry 523
+    -0x1.fffffdfffffffffffffffffffffd5555p-56,
+    -0x1.fffffep-56
+  },
+  { // Entry 524
+    0x1.fffffffffffffffffffffffffffd5555p-56,
+    0x1.p-55
+  },
+  { // Entry 525
+    -0x1.fffffffffffffffffffffffffffd5555p-56,
+    -0x1.p-55
+  },
+  { // Entry 526
+    0x1.000001fffffffffffffffffffffeaaaap-55,
+    0x1.000002p-55
+  },
+  { // Entry 527
+    -0x1.000001fffffffffffffffffffffeaaaap-55,
+    -0x1.000002p-55
+  },
+  { // Entry 528
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 529
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 530
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 531
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 532
+    0x1.p0,
+    HUGE_VALF
+  },
+  { // Entry 533
+    -0x1.p0,
+    -HUGE_VALF
+  },
+  { // Entry 534
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffep127
+  },
+  { // Entry 535
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffep127
+  },
+  { // Entry 536
+    0x1.ffffffffffffffffffffffffffffffffp-1,
+    0x1.fffffcp127
+  },
+  { // Entry 537
+    -0x1.ffffffffffffffffffffffffffffffffp-1,
+    -0x1.fffffcp127
+  },
+  { // Entry 538
+    0x1.fe175fa8292deb3d8c41deec7c2ee47cp-1,
+    0x1.921fb6p1
+  },
+  { // Entry 539
+    -0x1.fe175fa8292deb3d8c41deec7c2ee47cp-1,
+    -0x1.921fb6p1
+  },
+  { // Entry 540
+    0x1.d594fde9eb7012c121b429007ea7884ap-1,
+    0x1.921fb6p0
+  },
+  { // Entry 541
+    -0x1.d594fde9eb7012c121b429007ea7884ap-1,
+    -0x1.921fb6p0
+  },
+  { // Entry 542
+    0x1.85efacff5cf7afdba442be92190b551bp-1,
+    0x1.000002p0
+  },
+  { // Entry 543
+    -0x1.85efacff5cf7afdba442be92190b551bp-1,
+    -0x1.000002p0
+  },
+  { // Entry 544
+    0x1.85efab514f394558632be293c4274fe6p-1,
+    0x1.p0
+  },
+  { // Entry 545
+    -0x1.85efab514f394558632be293c4274fe6p-1,
+    -0x1.p0
+  },
+  { // Entry 546
+    0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    0x1.fffffep-1
+  },
+  { // Entry 547
+    -0x1.85efaa7a485824cc9f98f88674c08b83p-1,
+    -0x1.fffffep-1
+  },
+  { // Entry 548
+    0x1.4fc442656d206b21f6dcd108d6a88ad7p-1,
+    0x1.921fb6p-1
+  },
+  { // Entry 549
+    -0x1.4fc442656d206b21f6dcd108d6a88ad7p-1,
+    -0x1.921fb6p-1
+  },
+  { // Entry 550
+    0x1.000001ffffffffffffffffffffffffffp-126,
+    0x1.000002p-126
+  },
+  { // Entry 551
+    -0x1.000001ffffffffffffffffffffffffffp-126,
+    -0x1.000002p-126
+  },
+  { // Entry 552
+    0x1.ffffffffffffffffffffffffffffffffp-127,
+    0x1.p-126
+  },
+  { // Entry 553
+    -0x1.ffffffffffffffffffffffffffffffffp-127,
+    -0x1.p-126
+  },
+  { // Entry 554
+    0x1.fffffbffffffffffffffffffffffffffp-127,
+    0x1.fffffcp-127
+  },
+  { // Entry 555
+    -0x1.fffffbffffffffffffffffffffffffffp-127,
+    -0x1.fffffcp-127
+  },
+  { // Entry 556
+    0x1.fffff7ffffffffffffffffffffffffffp-127,
+    0x1.fffff8p-127
+  },
+  { // Entry 557
+    -0x1.fffff7ffffffffffffffffffffffffffp-127,
+    -0x1.fffff8p-127
+  },
+  { // Entry 558
+    0x1.ffffffffffffffffffffffffffffffffp-149,
+    0x1.p-148
+  },
+  { // Entry 559
+    -0x1.ffffffffffffffffffffffffffffffffp-149,
+    -0x1.p-148
+  },
+  { // Entry 560
+    0.0f,
+    0x1.p-149
+  },
+  { // Entry 561
+    -0.0f,
+    -0x1.p-149
+  },
+  { // Entry 562
+    0.0,
+    0.0f
+  },
+  { // Entry 563
+    -0.0,
+    -0.0f
+  }
+};
diff --git a/tests/math_data/trunc_intel_data.h b/tests/math_data/trunc_intel_data.h
new file mode 100644
index 0000000..4d3a2d8
--- /dev/null
+++ b/tests/math_data/trunc_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<double, double> g_trunc_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    -0.0,
+    -0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    0x1.ffffffffffff80p49,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    0x1.ffffffffffffc0p50,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    0x1.ffffffffffffe0p51,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.8000000000001p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 73
+    -0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 74
+    -0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 75
+    -0x1.ffffffffffff80p49,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 76
+    -0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 77
+    -0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 78
+    -0x1.ffffffffffffc0p50,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 79
+    -0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 80
+    -0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 81
+    -0x1.ffffffffffffe0p51,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 82
+    -0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 83
+    -0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 84
+    -0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 85
+    -0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 86
+    -0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 87
+    -0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 88
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 89
+    0x1.fffffff8p29,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 91
+    0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 92
+    0x1.fffffff4p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    0x1.fffffff4p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 94
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 95
+    0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 96
+    0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 97
+    0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 99
+    0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 100
+    0x1.fffffff8p30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 101
+    0x1.fffffff8p30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 102
+    0x1.fffffff8p30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 104
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 105
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 106
+    0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 107
+    0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 109
+    0x1.fffffffcp30,
+    0x1.fffffffe0p30
+  },
+  { // Entry 110
+    0x1.fffffffcp30,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 111
+    0x1.fffffffcp30,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 112
+    0x1.fffffffcp30,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    0x1.fffffffcp30,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 115
+    0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 116
+    0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 117
+    0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 118
+    0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 120
+    0x1.p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 121
+    0x1.p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 122
+    0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 123
+    0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 124
+    0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 125
+    0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 126
+    0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 127
+    0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 128
+    0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 129
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 131
+    0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 132
+    -0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 134
+    -0x1.fffffff8p29,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 135
+    -0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 136
+    -0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 137
+    -0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 138
+    -0x1.fffffff4p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 139
+    -0x1.fffffff4p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 140
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 141
+    -0x1.fffffff8p30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 142
+    -0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 143
+    -0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 144
+    -0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 145
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 146
+    -0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 147
+    -0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 148
+    -0x1.fffffff8p30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 149
+    -0x1.fffffff8p30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 150
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 151
+    -0x1.fffffffcp30,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 152
+    -0x1.fffffffcp30,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 153
+    -0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 154
+    -0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 155
+    -0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 156
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 158
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 159
+    -0x1.fffffffcp30,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 160
+    -0x1.p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 161
+    -0x1.p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 163
+    -0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 164
+    -0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 165
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 174
+    -0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 175
+    0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 176
+    0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 178
+    0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 179
+    0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 180
+    0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 181
+    0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 183
+    0x1.00000000000010p63,
+    0x1.0000000000001p63
+  },
+  { // Entry 184
+    0x1.00000000000020p63,
+    0x1.0000000000002p63
+  },
+  { // Entry 185
+    0x1.ffffffffffffe0p63,
+    0x1.ffffffffffffep63
+  },
+  { // Entry 186
+    0x1.fffffffffffff0p63,
+    0x1.fffffffffffffp63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.0p64
+  },
+  { // Entry 188
+    0x1.00000000000010p64,
+    0x1.0000000000001p64
+  },
+  { // Entry 189
+    0x1.00000000000020p64,
+    0x1.0000000000002p64
+  },
+  { // Entry 190
+    -0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 191
+    -0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 193
+    -0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 194
+    -0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 195
+    -0x1.00000000000020p63,
+    -0x1.0000000000002p63
+  },
+  { // Entry 196
+    -0x1.00000000000010p63,
+    -0x1.0000000000001p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 198
+    -0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 199
+    -0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 200
+    -0x1.00000000000020p64,
+    -0x1.0000000000002p64
+  },
+  { // Entry 201
+    -0x1.00000000000010p64,
+    -0x1.0000000000001p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.0p64
+  },
+  { // Entry 203
+    -0x1.fffffffffffff0p63,
+    -0x1.fffffffffffffp63
+  },
+  { // Entry 204
+    -0x1.ffffffffffffe0p63,
+    -0x1.ffffffffffffep63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.0p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 209
+    0x1.fffffff8p30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 210
+    0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 211
+    0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 212
+    -0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 214
+    -0x1.fffffffcp30,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.006p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 284
+    HUGE_VAL,
+    HUGE_VAL
+  },
+  { // Entry 285
+    -HUGE_VAL,
+    -HUGE_VAL
+  },
+  { // Entry 286
+    0x1.fffffffffffff0p1023,
+    0x1.fffffffffffffp1023
+  },
+  { // Entry 287
+    -0x1.fffffffffffff0p1023,
+    -0x1.fffffffffffffp1023
+  },
+  { // Entry 288
+    0x1.ffffffffffffe0p1023,
+    0x1.ffffffffffffep1023
+  },
+  { // Entry 289
+    -0x1.ffffffffffffe0p1023,
+    -0x1.ffffffffffffep1023
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 304
+    0.0,
+    0x1.0p-1022
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 306
+    0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 308
+    0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 310
+    0.0,
+    0x1.0p-1073
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 312
+    0.0,
+    0x1.0p-1074
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 314
+    0.0,
+    0.0
+  },
+  { // Entry 315
+    -0.0,
+    -0.0
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.8p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.8p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.0p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.00001p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.0p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.00001p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.80001p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.80001p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffffp0
+  }
+};
diff --git a/tests/math_data/truncf_intel_data.h b/tests/math_data/truncf_intel_data.h
new file mode 100644
index 0000000..1f1a447
--- /dev/null
+++ b/tests/math_data/truncf_intel_data.h
@@ -0,0 +1,1338 @@
+/*
+ * 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.
+ */
+
+static data_1_1_t<float, float> g_truncf_intel_data[] = {
+  { // Entry 0
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    0.0,
+    0.0
+  },
+  { // Entry 2
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    0.0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 11
+    0x1.p0,
+    0x1.800002p0
+  },
+  { // Entry 12
+    0x1.p0,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    0x1.p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    0x1.8cp6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    0x1.90p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    0x1.f380p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    0x1.f4p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    0x1.fffff0p20,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    0x1.fffff8p21,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    0x1.fffffcp22,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 46
+    -0.0,
+    -0x1.000002p-1
+  },
+  { // Entry 47
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 48
+    -0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 49
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 50
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 51
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 52
+    -0x1.p0,
+    -0x1.800002p0
+  },
+  { // Entry 53
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 54
+    -0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 55
+    -0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 56
+    -0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 57
+    -0x1.p0,
+    -0x1.fffffep0
+  },
+  { // Entry 58
+    -0x1.p1,
+    -0x1.400002p1
+  },
+  { // Entry 59
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 60
+    -0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 61
+    -0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 62
+    -0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 63
+    -0x1.8cp6,
+    -0x1.8ffffep6
+  },
+  { // Entry 64
+    -0x1.90p6,
+    -0x1.920002p6
+  },
+  { // Entry 65
+    -0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 66
+    -0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 67
+    -0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 68
+    -0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 69
+    -0x1.f380p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 70
+    -0x1.f4p9,
+    -0x1.f44002p9
+  },
+  { // Entry 71
+    -0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 72
+    -0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 73
+    -0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 74
+    -0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 75
+    -0x1.fffff0p20,
+    -0x1.fffffep20
+  },
+  { // Entry 76
+    -0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 77
+    -0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 78
+    -0x1.fffff8p21,
+    -0x1.fffffep21
+  },
+  { // Entry 79
+    -0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 80
+    -0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 81
+    -0x1.fffffcp22,
+    -0x1.fffffep22
+  },
+  { // Entry 82
+    -0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 83
+    -0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 84
+    -0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 85
+    -0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 86
+    -0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 87
+    -0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 88
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 89
+    0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 90
+    0x1.p30,
+    0x1.p30
+  },
+  { // Entry 91
+    0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 92
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 95
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 96
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 97
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 98
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 99
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 100
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 101
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 102
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 103
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 104
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 105
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 106
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 107
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 108
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 109
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 110
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 111
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 112
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 113
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 114
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 115
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 116
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 117
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 118
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 119
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 120
+    0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 121
+    0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 122
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 131
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 132
+    -0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 133
+    -0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 134
+    -0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 135
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 136
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 137
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 138
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 139
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 140
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 141
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 142
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 143
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 144
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 145
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 146
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 147
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 148
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 149
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 150
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 151
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 152
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 153
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 154
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 155
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 156
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 157
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 158
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 159
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 160
+    -0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 161
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 162
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 163
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 164
+    -0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 165
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 174
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 175
+    0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 176
+    0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 177
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 178
+    0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 179
+    0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 180
+    0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 181
+    0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 182
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 183
+    0x1.000002p63,
+    0x1.000002p63
+  },
+  { // Entry 184
+    0x1.000004p63,
+    0x1.000004p63
+  },
+  { // Entry 185
+    0x1.fffffcp63,
+    0x1.fffffcp63
+  },
+  { // Entry 186
+    0x1.fffffep63,
+    0x1.fffffep63
+  },
+  { // Entry 187
+    0x1.p64,
+    0x1.p64
+  },
+  { // Entry 188
+    0x1.000002p64,
+    0x1.000002p64
+  },
+  { // Entry 189
+    0x1.000004p64,
+    0x1.000004p64
+  },
+  { // Entry 190
+    -0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 191
+    -0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 192
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 193
+    -0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 194
+    -0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 195
+    -0x1.000004p63,
+    -0x1.000004p63
+  },
+  { // Entry 196
+    -0x1.000002p63,
+    -0x1.000002p63
+  },
+  { // Entry 197
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 198
+    -0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 199
+    -0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 200
+    -0x1.000004p64,
+    -0x1.000004p64
+  },
+  { // Entry 201
+    -0x1.000002p64,
+    -0x1.000002p64
+  },
+  { // Entry 202
+    -0x1.p64,
+    -0x1.p64
+  },
+  { // Entry 203
+    -0x1.fffffep63,
+    -0x1.fffffep63
+  },
+  { // Entry 204
+    -0x1.fffffcp63,
+    -0x1.fffffcp63
+  },
+  { // Entry 205
+    0x1.p62,
+    0x1.p62
+  },
+  { // Entry 206
+    0x1.p63,
+    0x1.p63
+  },
+  { // Entry 207
+    -0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 208
+    -0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 209
+    0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 210
+    0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 211
+    0x1.p31,
+    0x1.p31
+  },
+  { // Entry 212
+    -0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 213
+    -0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 214
+    -0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 215
+    0x1.80p1,
+    0x1.fffffep1
+  },
+  { // Entry 216
+    0x1.p2,
+    0x1.p2
+  },
+  { // Entry 217
+    0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 218
+    0x1.c0p2,
+    0x1.fffffep2
+  },
+  { // Entry 219
+    0x1.p3,
+    0x1.p3
+  },
+  { // Entry 220
+    0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 221
+    0x1.e0p3,
+    0x1.fffffep3
+  },
+  { // Entry 222
+    0x1.p4,
+    0x1.p4
+  },
+  { // Entry 223
+    0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 224
+    0x1.f0p4,
+    0x1.fffffep4
+  },
+  { // Entry 225
+    0x1.p5,
+    0x1.p5
+  },
+  { // Entry 226
+    0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 227
+    0x1.f8p5,
+    0x1.fffffep5
+  },
+  { // Entry 228
+    0x1.p6,
+    0x1.p6
+  },
+  { // Entry 229
+    0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 230
+    0x1.fcp6,
+    0x1.fffffep6
+  },
+  { // Entry 231
+    0x1.p7,
+    0x1.p7
+  },
+  { // Entry 232
+    0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 233
+    0x1.fep7,
+    0x1.fffffep7
+  },
+  { // Entry 234
+    0x1.p8,
+    0x1.p8
+  },
+  { // Entry 235
+    0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 236
+    0x1.ffp8,
+    0x1.fffffep8
+  },
+  { // Entry 237
+    0x1.p9,
+    0x1.p9
+  },
+  { // Entry 238
+    0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 239
+    0x1.ff80p9,
+    0x1.fffffep9
+  },
+  { // Entry 240
+    0x1.p10,
+    0x1.p10
+  },
+  { // Entry 241
+    0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 242
+    0x1.ffc0p10,
+    0x1.fffffep10
+  },
+  { // Entry 243
+    0x1.p11,
+    0x1.p11
+  },
+  { // Entry 244
+    0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 245
+    0x1.ffe0p11,
+    0x1.fffffep11
+  },
+  { // Entry 246
+    0x1.p12,
+    0x1.p12
+  },
+  { // Entry 247
+    0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 248
+    0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 249
+    0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 250
+    0x1.p2,
+    0x1.200002p2
+  },
+  { // Entry 251
+    0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 252
+    0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 253
+    0x1.p3,
+    0x1.100002p3
+  },
+  { // Entry 254
+    0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 255
+    0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 256
+    0x1.p4,
+    0x1.080002p4
+  },
+  { // Entry 257
+    0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 258
+    0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 259
+    0x1.p5,
+    0x1.040002p5
+  },
+  { // Entry 260
+    0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 261
+    0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 262
+    0x1.p6,
+    0x1.020002p6
+  },
+  { // Entry 263
+    0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 264
+    0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 265
+    0x1.p7,
+    0x1.010002p7
+  },
+  { // Entry 266
+    0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 267
+    0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 268
+    0x1.p8,
+    0x1.008002p8
+  },
+  { // Entry 269
+    0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 270
+    0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 271
+    0x1.p9,
+    0x1.004002p9
+  },
+  { // Entry 272
+    0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 273
+    0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 274
+    0x1.p10,
+    0x1.002002p10
+  },
+  { // Entry 275
+    0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 276
+    0x1.0040p10,
+    0x1.0060p10
+  },
+  { // Entry 277
+    0x1.0040p10,
+    0x1.006002p10
+  },
+  { // Entry 278
+    0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 279
+    0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 280
+    0x1.p11,
+    0x1.001002p11
+  },
+  { // Entry 281
+    0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 282
+    0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 283
+    0x1.p12,
+    0x1.000802p12
+  },
+  { // Entry 284
+    HUGE_VALF,
+    HUGE_VALF
+  },
+  { // Entry 285
+    -HUGE_VALF,
+    -HUGE_VALF
+  },
+  { // Entry 286
+    0x1.fffffep127,
+    0x1.fffffep127
+  },
+  { // Entry 287
+    -0x1.fffffep127,
+    -0x1.fffffep127
+  },
+  { // Entry 288
+    0x1.fffffcp127,
+    0x1.fffffcp127
+  },
+  { // Entry 289
+    -0x1.fffffcp127,
+    -0x1.fffffcp127
+  },
+  { // Entry 290
+    0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 291
+    -0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 292
+    0x1.p0,
+    0x1.921fb6p0
+  },
+  { // Entry 293
+    -0x1.p0,
+    -0x1.921fb6p0
+  },
+  { // Entry 294
+    0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 295
+    -0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 296
+    0x1.p0,
+    0x1.p0
+  },
+  { // Entry 297
+    -0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 298
+    0.0,
+    0x1.fffffep-1
+  },
+  { // Entry 299
+    -0.0,
+    -0x1.fffffep-1
+  },
+  { // Entry 300
+    0.0,
+    0x1.921fb6p-1
+  },
+  { // Entry 301
+    -0.0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 302
+    0.0,
+    0x1.000002p-126
+  },
+  { // Entry 303
+    -0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 304
+    0.0,
+    0x1.p-126
+  },
+  { // Entry 305
+    -0.0,
+    -0x1.p-126
+  },
+  { // Entry 306
+    0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 307
+    -0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 308
+    0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 309
+    -0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 310
+    0.0,
+    0x1.p-148
+  },
+  { // Entry 311
+    -0.0,
+    -0x1.p-148
+  },
+  { // Entry 312
+    0.0,
+    0x1.p-149
+  },
+  { // Entry 313
+    -0.0,
+    -0x1.p-149
+  },
+  { // Entry 314
+    0.0,
+    0.0f
+  },
+  { // Entry 315
+    -0.0,
+    -0.0f
+  },
+  { // Entry 316
+    0x1.p0,
+    0x1.80p0
+  },
+  { // Entry 317
+    -0x1.p0,
+    -0x1.80p0
+  },
+  { // Entry 318
+    0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 319
+    -0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 320
+    0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 321
+    0.0,
+    0x1.p-1
+  },
+  { // Entry 322
+    0.0,
+    0x1.000010p-1
+  },
+  { // Entry 323
+    -0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 324
+    -0.0,
+    -0x1.p-1
+  },
+  { // Entry 325
+    -0.0,
+    -0x1.000010p-1
+  },
+  { // Entry 326
+    0x1.p0,
+    0x1.800010p0
+  },
+  { // Entry 327
+    0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 328
+    -0x1.p0,
+    -0x1.800010p0
+  },
+  { // Entry 329
+    -0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
diff --git a/tests/math_data_test.h b/tests/math_data_test.h
index f3d25ef..8aa2bf1 100644
--- a/tests/math_data_test.h
+++ b/tests/math_data_test.h
@@ -24,6 +24,12 @@
   T1 input;
 };
 
+template <typename T1>
+struct data_int_1_t {
+  int expected;
+  T1 input;
+};
+
 template <typename RT, typename T1, typename T2>
 struct data_1_2_t {
   RT expected;
@@ -38,6 +44,29 @@
   T input;
 };
 
+template <typename RT1, typename T>
+struct data_1_int_1_t {
+  RT1 expected1;
+  int expected2;
+  T input;
+};
+
+template <typename RT1, typename T1, typename T2>
+struct data_1_int_2_t {
+  RT1 expected1;
+  int expected2;
+  T1 input1;
+  T2 input2;
+};
+
+template <typename RT, typename T1, typename T2, typename T3>
+struct data_1_3_t {
+  RT expected;
+  T1 input1;
+  T2 input2;
+  T3 input3;
+};
+
 template <typename T> union fp_u;
 
 template <> union fp_u<float> {
@@ -117,6 +146,17 @@
   }
 }
 
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double) -> int function like ilogb(3).
+template <size_t ULP, typename T, size_t N>
+void DoMathDataTest(data_int_1_t<T> (&data)[N], int f(T)) {
+  fesetenv(FE_DFL_ENV);
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_EQ(data[i].expected, f(data[i].input)) << "Failed on element " << i;
+  }
+}
+
 // Runs through the array 'data' applying 'f' to each of the pairs of input values
 // and asserting that the result is within ULP ulps of the expected value.
 // For testing a (double, double) -> double function like pow(3).
@@ -146,3 +186,66 @@
     EXPECT_PRED_FORMAT2(predicate2, data[i].expected2, out2) << "Failed on element " << i;
   }
 }
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, double*) -> double function like modf(3).
+template <size_t ULP, typename RT1, typename RT2, typename T1, size_t N>
+void DoMathDataTest(data_2_1_t<RT1, RT2, T1> (&data)[N], RT1 f(T1, RT2*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  FpUlpEq<ULP, RT2> predicate2;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    RT2 out2;
+    out1 = f(data[i].input, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_PRED_FORMAT2(predicate2, data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, int*) -> double function like frexp(3).
+template <size_t ULP, typename RT1, typename T1, size_t N>
+void DoMathDataTest(data_1_int_1_t<RT1, T1> (&data)[N], RT1 f(T1, int*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    int out2;
+    out1 = f(data[i].input, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_EQ(data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the input values
+// and asserting that the results are within ULP ulps of the expected values.
+// For testing a (double, double, int*) -> double function like remquo(3).
+template <size_t ULP, typename RT1, typename T1, typename T2, size_t N>
+void DoMathDataTest(data_1_int_2_t<RT1, T1, T2> (&data)[N], RT1 f(T1, T2, int*)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT1> predicate1;
+  for (size_t i = 0; i < N; ++i) {
+    RT1 out1;
+    int out2;
+    out1 = f(data[i].input1, data[i].input2, &out2);
+    EXPECT_PRED_FORMAT2(predicate1, data[i].expected1, out1) << "Failed on element " << i;
+    EXPECT_EQ(data[i].expected2, out2) << "Failed on element " << i;
+  }
+}
+
+// Runs through the array 'data' applying 'f' to each of the pairs of input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double, double, double) -> double function like fma(3).
+template <size_t ULP, typename RT, typename T1, typename T2, typename T3, size_t N>
+void DoMathDataTest(data_1_3_t<RT, T1, T2, T3> (&data)[N], RT f(T1, T2, T3)) {
+  fesetenv(FE_DFL_ENV);
+  FpUlpEq<ULP, RT> predicate;
+  for (size_t i = 0; i < N; ++i) {
+    EXPECT_PRED_FORMAT2(predicate,
+                        data[i].expected, f(data[i].input1, data[i].input2, data[i].input3)) << "Failed on element " << i;
+  }
+}
+
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index e14d3dd..e616e9b 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -1379,72 +1379,492 @@
   ASSERT_TRUE(nextafterl(1.0L, 0.0L) - 1.0L < 0.0L);
 }
 
-#include "math_cos_intel_data.h"
+#include "math_data/acos_intel_data.h"
+TEST(math, acos_intel) {
+  DoMathDataTest<1>(g_acos_intel_data, acos);
+}
+
+#include "math_data/acosf_intel_data.h"
+TEST(math, acosf_intel) {
+  DoMathDataTest<1>(g_acosf_intel_data, acosf);
+}
+
+#include "math_data/acosh_intel_data.h"
+TEST(math, acosh_intel) {
+  DoMathDataTest<2>(g_acosh_intel_data, acosh);
+}
+
+#include "math_data/acoshf_intel_data.h"
+TEST(math, acoshf_intel) {
+  DoMathDataTest<2>(g_acoshf_intel_data, acoshf);
+}
+
+#include "math_data/asin_intel_data.h"
+TEST(math, asin_intel) {
+  DoMathDataTest<1>(g_asin_intel_data, asin);
+}
+
+#include "math_data/asinf_intel_data.h"
+TEST(math, asinf_intel) {
+  DoMathDataTest<1>(g_asinf_intel_data, asinf);
+}
+
+#include "math_data/asinh_intel_data.h"
+TEST(math, asinh_intel) {
+  DoMathDataTest<2>(g_asinh_intel_data, asinh);
+}
+
+#include "math_data/asinhf_intel_data.h"
+TEST(math, asinhf_intel) {
+  DoMathDataTest<2>(g_asinhf_intel_data, asinhf);
+}
+
+#include "math_data/atan2_intel_data.h"
+TEST(math, atan2_intel) {
+  DoMathDataTest<2>(g_atan2_intel_data, atan2);
+}
+
+#include "math_data/atan2f_intel_data.h"
+TEST(math, atan2f_intel) {
+  DoMathDataTest<2>(g_atan2f_intel_data, atan2f);
+}
+
+#include "math_data/atan_intel_data.h"
+TEST(math, atan_intel) {
+  DoMathDataTest<1>(g_atan_intel_data, atan);
+}
+
+#include "math_data/atanf_intel_data.h"
+TEST(math, atanf_intel) {
+  DoMathDataTest<1>(g_atanf_intel_data, atanf);
+}
+
+#include "math_data/atanh_intel_data.h"
+TEST(math, atanh_intel) {
+  DoMathDataTest<2>(g_atanh_intel_data, atanh);
+}
+
+#include "math_data/atanhf_intel_data.h"
+TEST(math, atanhf_intel) {
+  DoMathDataTest<2>(g_atanhf_intel_data, atanhf);
+}
+
+#include "math_data/cbrt_intel_data.h"
+TEST(math, cbrt_intel) {
+  DoMathDataTest<1>(g_cbrt_intel_data, cbrt);
+}
+
+#include "math_data/cbrtf_intel_data.h"
+TEST(math, cbrtf_intel) {
+  DoMathDataTest<1>(g_cbrtf_intel_data, cbrtf);
+}
+
+#include "math_data/ceil_intel_data.h"
+TEST(math, ceil_intel) {
+  DoMathDataTest<1>(g_ceil_intel_data, ceil);
+}
+
+#include "math_data/ceilf_intel_data.h"
+TEST(math, ceilf_intel) {
+  DoMathDataTest<1>(g_ceilf_intel_data, ceilf);
+}
+
+#include "math_data/copysign_intel_data.h"
+TEST(math, copysign_intel) {
+  DoMathDataTest<1>(g_copysign_intel_data, copysign);
+}
+
+#include "math_data/copysignf_intel_data.h"
+TEST(math, copysignf_intel) {
+  DoMathDataTest<1>(g_copysignf_intel_data, copysignf);
+}
+
+#include "math_data/cos_intel_data.h"
 TEST(math, cos_intel) {
   DoMathDataTest<1>(g_cos_intel_data, cos);
 }
 
-#include "math_cosf_intel_data.h"
+#include "math_data/cosf_intel_data.h"
 TEST(math, cosf_intel) {
   DoMathDataTest<1>(g_cosf_intel_data, cosf);
 }
 
-#include "math_exp_intel_data.h"
+#include "math_data/cosh_intel_data.h"
+TEST(math, cosh_intel) {
+  DoMathDataTest<2>(g_cosh_intel_data, cosh);
+}
+
+#include "math_data/coshf_intel_data.h"
+TEST(math, coshf_intel) {
+  DoMathDataTest<2>(g_coshf_intel_data, coshf);
+}
+
+#include "math_data/exp_intel_data.h"
 TEST(math, exp_intel) {
   DoMathDataTest<1>(g_exp_intel_data, exp);
 }
 
-#include "math_expf_intel_data.h"
+#include "math_data/expf_intel_data.h"
 TEST(math, expf_intel) {
   DoMathDataTest<1>(g_expf_intel_data, expf);
 }
 
-#include "math_log_intel_data.h"
+#include "math_data/exp2_intel_data.h"
+TEST(math, exp2_intel) {
+  DoMathDataTest<1>(g_exp2_intel_data, exp2);
+}
+
+#include "math_data/exp2f_intel_data.h"
+TEST(math, exp2f_intel) {
+  DoMathDataTest<1>(g_exp2f_intel_data, exp2f);
+}
+
+#include "math_data/expm1_intel_data.h"
+TEST(math, expm1_intel) {
+  DoMathDataTest<1>(g_expm1_intel_data, expm1);
+}
+
+#include "math_data/expm1f_intel_data.h"
+TEST(math, expm1f_intel) {
+  DoMathDataTest<1>(g_expm1f_intel_data, expm1f);
+}
+
+#include "math_data/fabs_intel_data.h"
+TEST(math, fabs_intel) {
+  DoMathDataTest<1>(g_fabs_intel_data, fabs);
+}
+
+#include "math_data/fabsf_intel_data.h"
+TEST(math, fabsf_intel) {
+  DoMathDataTest<1>(g_fabsf_intel_data, fabsf);
+}
+
+#include "math_data/fdim_intel_data.h"
+TEST(math, fdim_intel) {
+  DoMathDataTest<1>(g_fdim_intel_data, fdim);
+}
+
+#include "math_data/fdimf_intel_data.h"
+TEST(math, fdimf_intel) {
+  DoMathDataTest<1>(g_fdimf_intel_data, fdimf);
+}
+
+#include "math_data/floor_intel_data.h"
+TEST(math, floor_intel) {
+  DoMathDataTest<1>(g_floor_intel_data, floor);
+}
+
+#include "math_data/floorf_intel_data.h"
+TEST(math, floorf_intel) {
+  DoMathDataTest<1>(g_floorf_intel_data, floorf);
+}
+
+#include "math_data/fma_intel_data.h"
+TEST(math, fma_intel) {
+  DoMathDataTest<1>(g_fma_intel_data, fma);
+}
+
+#include "math_data/fmaf_intel_data.h"
+TEST(math, fmaf_intel) {
+  DoMathDataTest<1>(g_fmaf_intel_data, fmaf);
+}
+
+#include "math_data/fmax_intel_data.h"
+TEST(math, fmax_intel) {
+  DoMathDataTest<1>(g_fmax_intel_data, fmax);
+}
+
+#include "math_data/fmaxf_intel_data.h"
+TEST(math, fmaxf_intel) {
+  DoMathDataTest<1>(g_fmaxf_intel_data, fmaxf);
+}
+
+#include "math_data/fmin_intel_data.h"
+TEST(math, fmin_intel) {
+  DoMathDataTest<1>(g_fmin_intel_data, fmin);
+}
+
+#include "math_data/fminf_intel_data.h"
+TEST(math, fminf_intel) {
+  DoMathDataTest<1>(g_fminf_intel_data, fminf);
+}
+
+#include "math_data/fmod_intel_data.h"
+TEST(math, fmod_intel) {
+  DoMathDataTest<1>(g_fmod_intel_data, fmod);
+}
+
+#include "math_data/fmodf_intel_data.h"
+TEST(math, fmodf_intel) {
+  DoMathDataTest<1>(g_fmodf_intel_data, fmodf);
+}
+
+#include "math_data/frexp_intel_data.h"
+TEST(math, frexp_intel) {
+  DoMathDataTest<1>(g_frexp_intel_data, frexp);
+}
+
+#include "math_data/frexpf_intel_data.h"
+TEST(math, frexpf_intel) {
+  DoMathDataTest<1>(g_frexpf_intel_data, frexpf);
+}
+
+#include "math_data/hypot_intel_data.h"
+TEST(math, hypot_intel) {
+  DoMathDataTest<1>(g_hypot_intel_data, hypot);
+}
+
+#include "math_data/hypotf_intel_data.h"
+TEST(math, hypotf_intel) {
+  DoMathDataTest<1>(g_hypotf_intel_data, hypotf);
+}
+
+#include "math_data/ilogb_intel_data.h"
+TEST(math, ilogb_intel) {
+  DoMathDataTest<1>(g_ilogb_intel_data, ilogb);
+}
+
+#include "math_data/ilogbf_intel_data.h"
+TEST(math, ilogbf_intel) {
+  DoMathDataTest<1>(g_ilogbf_intel_data, ilogbf);
+}
+
+#include "math_data/ldexp_intel_data.h"
+TEST(math, ldexp_intel) {
+  DoMathDataTest<1>(g_ldexp_intel_data, ldexp);
+}
+
+#include "math_data/ldexpf_intel_data.h"
+TEST(math, ldexpf_intel) {
+  DoMathDataTest<1>(g_ldexpf_intel_data, ldexpf);
+}
+
+#include "math_data/log_intel_data.h"
 TEST(math, log_intel) {
   DoMathDataTest<1>(g_log_intel_data, log);
 }
 
-#include "math_logf_intel_data.h"
+#include "math_data/logf_intel_data.h"
 TEST(math, logf_intel) {
   DoMathDataTest<1>(g_logf_intel_data, logf);
 }
 
-#include "math_pow_intel_data.h"
+#include "math_data/log10_intel_data.h"
+TEST(math, log10_intel) {
+  DoMathDataTest<1>(g_log10_intel_data, log10);
+}
+
+#include "math_data/log10f_intel_data.h"
+TEST(math, log10f_intel) {
+  DoMathDataTest<1>(g_log10f_intel_data, log10f);
+}
+
+#include "math_data/log1p_intel_data.h"
+TEST(math, log1p_intel) {
+  DoMathDataTest<1>(g_log1p_intel_data, log1p);
+}
+
+#include "math_data/log1pf_intel_data.h"
+TEST(math, log1pf_intel) {
+  DoMathDataTest<1>(g_log1pf_intel_data, log1pf);
+}
+
+#include "math_data/log2_intel_data.h"
+TEST(math, log2_intel) {
+  DoMathDataTest<1>(g_log2_intel_data, log2);
+}
+
+#include "math_data/log2f_intel_data.h"
+TEST(math, log2f_intel) {
+  DoMathDataTest<1>(g_log2f_intel_data, log2f);
+}
+
+#include "math_data/logb_intel_data.h"
+TEST(math, logb_intel) {
+  DoMathDataTest<1>(g_logb_intel_data, logb);
+}
+
+#include "math_data/logbf_intel_data.h"
+TEST(math, logbf_intel) {
+  DoMathDataTest<1>(g_logbf_intel_data, logbf);
+}
+
+#include "math_data/modf_intel_data.h"
+TEST(math, modf_intel) {
+  DoMathDataTest<1>(g_modf_intel_data, modf);
+}
+
+#include "math_data/modff_intel_data.h"
+TEST(math, modff_intel) {
+  DoMathDataTest<1>(g_modff_intel_data, modff);
+}
+
+#include "math_data/nearbyint_intel_data.h"
+TEST(math, nearbyint_intel) {
+  DoMathDataTest<1>(g_nearbyint_intel_data, nearbyint);
+}
+
+#include "math_data/nearbyintf_intel_data.h"
+TEST(math, nearbyintf_intel) {
+  DoMathDataTest<1>(g_nearbyintf_intel_data, nearbyintf);
+}
+
+#include "math_data/nextafter_intel_data.h"
+TEST(math, nextafter_intel) {
+  DoMathDataTest<1>(g_nextafter_intel_data, nextafter);
+}
+
+#include "math_data/nextafterf_intel_data.h"
+TEST(math, nextafterf_intel) {
+  DoMathDataTest<1>(g_nextafterf_intel_data, nextafterf);
+}
+
+#include "math_data/pow_intel_data.h"
 TEST(math, pow_intel) {
   DoMathDataTest<1>(g_pow_intel_data, pow);
 }
 
-#include "math_powf_intel_data.h"
+#include "math_data/powf_intel_data.h"
 TEST(math, powf_intel) {
   DoMathDataTest<1>(g_powf_intel_data, powf);
 }
 
-#include "math_sin_intel_data.h"
+#include "math_data/remainder_intel_data.h"
+TEST(math, remainder_intel) {
+  DoMathDataTest<1>(g_remainder_intel_data, remainder);
+}
+
+#include "math_data/remainderf_intel_data.h"
+TEST(math, remainderf_intel) {
+  DoMathDataTest<1>(g_remainderf_intel_data, remainderf);
+}
+
+#include "math_data/remquo_intel_data.h"
+TEST(math, remquo_intel) {
+  DoMathDataTest<1>(g_remquo_intel_data, remquo);
+}
+
+#include "math_data/remquof_intel_data.h"
+TEST(math, remquof_intel) {
+  DoMathDataTest<1>(g_remquof_intel_data, remquof);
+}
+
+#include "math_data/rint_intel_data.h"
+TEST(math, rint_intel) {
+  DoMathDataTest<1>(g_rint_intel_data, rint);
+}
+
+#include "math_data/rintf_intel_data.h"
+TEST(math, rintf_intel) {
+  DoMathDataTest<1>(g_rintf_intel_data, rintf);
+}
+
+#include "math_data/round_intel_data.h"
+TEST(math, round_intel) {
+  DoMathDataTest<1>(g_round_intel_data, round);
+}
+
+#include "math_data/roundf_intel_data.h"
+TEST(math, roundf_intel) {
+  DoMathDataTest<1>(g_roundf_intel_data, roundf);
+}
+
+#include "math_data/scalb_intel_data.h"
+TEST(math, scalb_intel) {
+  DoMathDataTest<1>(g_scalb_intel_data, scalb);
+}
+
+#include "math_data/scalbf_intel_data.h"
+TEST(math, scalbf_intel) {
+  DoMathDataTest<1>(g_scalbf_intel_data, scalbf);
+}
+
+#include "math_data/scalbn_intel_data.h"
+TEST(math, scalbn_intel) {
+  DoMathDataTest<1>(g_scalbn_intel_data, scalbn);
+}
+
+#include "math_data/scalbnf_intel_data.h"
+TEST(math, scalbnf_intel) {
+  DoMathDataTest<1>(g_scalbnf_intel_data, scalbnf);
+}
+
+#include "math_data/significand_intel_data.h"
+TEST(math, significand_intel) {
+  DoMathDataTest<1>(g_significand_intel_data, significand);
+}
+
+#include "math_data/significandf_intel_data.h"
+TEST(math, significandf_intel) {
+  DoMathDataTest<1>(g_significandf_intel_data, significandf);
+}
+
+#include "math_data/sin_intel_data.h"
 TEST(math, sin_intel) {
   DoMathDataTest<1>(g_sin_intel_data, sin);
 }
 
-#include "math_sincos_intel_data.h"
-TEST(math, sincos_intel) {
-  DoMathDataTest<1>(g_sincos_intel_data, sincos);
-}
-
-#include "math_sincosf_intel_data.h"
-TEST(math, sincosf_intel) {
-  DoMathDataTest<1>(g_sincosf_intel_data, sincosf);
-}
-
-#include "math_sinf_intel_data.h"
+#include "math_data/sinf_intel_data.h"
 TEST(math, sinf_intel) {
   DoMathDataTest<1>(g_sinf_intel_data, sinf);
 }
 
-#include "math_tan_intel_data.h"
+#include "math_data/sinh_intel_data.h"
+TEST(math, sinh_intel) {
+  DoMathDataTest<2>(g_sinh_intel_data, sinh);
+}
+
+#include "math_data/sinhf_intel_data.h"
+TEST(math, sinhf_intel) {
+  DoMathDataTest<2>(g_sinhf_intel_data, sinhf);
+}
+
+#include "math_data/sincos_intel_data.h"
+TEST(math, sincos_intel) {
+  DoMathDataTest<1>(g_sincos_intel_data, sincos);
+}
+
+#include "math_data/sincosf_intel_data.h"
+TEST(math, sincosf_intel) {
+  DoMathDataTest<1>(g_sincosf_intel_data, sincosf);
+}
+
+#include "math_data/sqrt_intel_data.h"
+TEST(math, sqrt_intel) {
+  DoMathDataTest<1>(g_sqrt_intel_data, sqrt);
+}
+
+#include "math_data/sqrtf_intel_data.h"
+TEST(math, sqrtf_intel) {
+  DoMathDataTest<1>(g_sqrtf_intel_data, sqrtf);
+}
+
+#include "math_data/tan_intel_data.h"
 TEST(math, tan_intel) {
   DoMathDataTest<1>(g_tan_intel_data, tan);
 }
 
-#include "math_tanf_intel_data.h"
+#include "math_data/tanf_intel_data.h"
 TEST(math, tanf_intel) {
   DoMathDataTest<1>(g_tanf_intel_data, tanf);
 }
+
+#include "math_data/tanh_intel_data.h"
+TEST(math, tanh_intel) {
+  DoMathDataTest<2>(g_tanh_intel_data, tanh);
+}
+
+#include "math_data/tanhf_intel_data.h"
+TEST(math, tanhf_intel) {
+  DoMathDataTest<2>(g_tanhf_intel_data, tanhf);
+}
+
+#include "math_data/trunc_intel_data.h"
+TEST(math, trunc_intel) {
+  DoMathDataTest<1>(g_trunc_intel_data, trunc);
+}
+
+#include "math_data/truncf_intel_data.h"
+TEST(math, truncf_intel) {
+  DoMathDataTest<1>(g_truncf_intel_data, truncf);
+}
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 5dc60ee..f96ccf9 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -16,11 +16,6 @@
 
 #include <gtest/gtest.h>
 
-#include "private/ScopeGuard.h"
-#include "BionicDeathTest.h"
-#include "ScopedSignalHandler.h"
-#include "gtest_ex.h"
-
 #include <errno.h>
 #include <inttypes.h>
 #include <limits.h>
@@ -33,6 +28,20 @@
 #include <time.h>
 #include <unistd.h>
 
+#include <atomic>
+#include <regex>
+#include <vector>
+
+#include <base/file.h>
+#include <base/stringprintf.h>
+
+#include "private/bionic_macros.h"
+#include "private/ScopeGuard.h"
+#include "BionicDeathTest.h"
+#include "ScopedSignalHandler.h"
+
+extern "C" pid_t gettid();
+
 TEST(pthread, pthread_key_create) {
   pthread_key_t key;
   ASSERT_EQ(0, pthread_key_create(&key, NULL));
@@ -65,8 +74,7 @@
 
   for (int i = 0; i < nkeys; ++i) {
     pthread_key_t key;
-    // If this fails, it's likely that GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT is
-    // wrong.
+    // If this fails, it's likely that LIBC_PTHREAD_KEY_RESERVED_COUNT is wrong.
     ASSERT_EQ(0, pthread_key_create(&key, NULL)) << i << " of " << nkeys;
     keys.push_back(key);
     ASSERT_EQ(0, pthread_setspecific(key, reinterpret_cast<void*>(i)));
@@ -270,8 +278,11 @@
 
   sleep(1); // (Give t2 a chance to call pthread_join.)
 
-  // ...a call to pthread_detach on thread 1 will "succeed" (silently fail)...
+#if defined(__BIONIC__)
+  ASSERT_EQ(EINVAL, pthread_detach(t1));
+#else
   ASSERT_EQ(0, pthread_detach(t1));
+#endif
   AssertDetached(t1, false);
 
   spinhelper.UnSpin();
@@ -699,6 +710,103 @@
   ASSERT_EQ(0, pthread_rwlock_destroy(&l));
 }
 
+static void WaitUntilThreadSleep(std::atomic<pid_t>& pid) {
+  while (pid == 0) {
+    usleep(1000);
+  }
+  std::string filename = android::base::StringPrintf("/proc/%d/stat", pid.load());
+  std::regex regex {R"(\s+S\s+)"};
+
+  while (true) {
+    std::string content;
+    ASSERT_TRUE(android::base::ReadFileToString(filename, &content));
+    if (std::regex_search(content, regex)) {
+      break;
+    }
+    usleep(1000);
+  }
+}
+
+struct RwlockWakeupHelperArg {
+  pthread_rwlock_t lock;
+  enum Progress {
+    LOCK_INITIALIZED,
+    LOCK_WAITING,
+    LOCK_RELEASED,
+    LOCK_ACCESSED
+  };
+  std::atomic<Progress> progress;
+  std::atomic<pid_t> tid;
+};
+
+static void pthread_rwlock_reader_wakeup_writer_helper(RwlockWakeupHelperArg* arg) {
+  arg->tid = gettid();
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_INITIALIZED, arg->progress);
+  arg->progress = RwlockWakeupHelperArg::LOCK_WAITING;
+
+  ASSERT_EQ(EBUSY, pthread_rwlock_trywrlock(&arg->lock));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(&arg->lock));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_RELEASED, arg->progress);
+  ASSERT_EQ(0, pthread_rwlock_unlock(&arg->lock));
+
+  arg->progress = RwlockWakeupHelperArg::LOCK_ACCESSED;
+}
+
+TEST(pthread, pthread_rwlock_reader_wakeup_writer) {
+  RwlockWakeupHelperArg wakeup_arg;
+  ASSERT_EQ(0, pthread_rwlock_init(&wakeup_arg.lock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&wakeup_arg.lock));
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_INITIALIZED;
+  wakeup_arg.tid = 0;
+
+  pthread_t thread;
+  ASSERT_EQ(0, pthread_create(&thread, NULL,
+    reinterpret_cast<void* (*)(void*)>(pthread_rwlock_reader_wakeup_writer_helper), &wakeup_arg));
+  WaitUntilThreadSleep(wakeup_arg.tid);
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_WAITING, wakeup_arg.progress);
+
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_RELEASED;
+  ASSERT_EQ(0, pthread_rwlock_unlock(&wakeup_arg.lock));
+
+  ASSERT_EQ(0, pthread_join(thread, NULL));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_ACCESSED, wakeup_arg.progress);
+  ASSERT_EQ(0, pthread_rwlock_destroy(&wakeup_arg.lock));
+}
+
+static void pthread_rwlock_writer_wakeup_reader_helper(RwlockWakeupHelperArg* arg) {
+  arg->tid = gettid();
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_INITIALIZED, arg->progress);
+  arg->progress = RwlockWakeupHelperArg::LOCK_WAITING;
+
+  ASSERT_EQ(EBUSY, pthread_rwlock_tryrdlock(&arg->lock));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(&arg->lock));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_RELEASED, arg->progress);
+  ASSERT_EQ(0, pthread_rwlock_unlock(&arg->lock));
+
+  arg->progress = RwlockWakeupHelperArg::LOCK_ACCESSED;
+}
+
+TEST(pthread, pthread_rwlock_writer_wakeup_reader) {
+  RwlockWakeupHelperArg wakeup_arg;
+  ASSERT_EQ(0, pthread_rwlock_init(&wakeup_arg.lock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(&wakeup_arg.lock));
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_INITIALIZED;
+  wakeup_arg.tid = 0;
+
+  pthread_t thread;
+  ASSERT_EQ(0, pthread_create(&thread, NULL,
+    reinterpret_cast<void* (*)(void*)>(pthread_rwlock_writer_wakeup_reader_helper), &wakeup_arg));
+  WaitUntilThreadSleep(wakeup_arg.tid);
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_WAITING, wakeup_arg.progress);
+
+  wakeup_arg.progress = RwlockWakeupHelperArg::LOCK_RELEASED;
+  ASSERT_EQ(0, pthread_rwlock_unlock(&wakeup_arg.lock));
+
+  ASSERT_EQ(0, pthread_join(thread, NULL));
+  ASSERT_EQ(RwlockWakeupHelperArg::LOCK_ACCESSED, wakeup_arg.progress);
+  ASSERT_EQ(0, pthread_rwlock_destroy(&wakeup_arg.lock));
+}
+
 static int g_once_fn_call_count = 0;
 static void OnceFn() {
   ++g_once_fn_call_count;
@@ -742,23 +850,21 @@
 static void AtForkChild2() { g_atfork_child_calls = (g_atfork_child_calls << 4) | 2; }
 
 TEST(pthread, pthread_atfork_smoke) {
-  test_isolated([] {
-    ASSERT_EQ(0, pthread_atfork(AtForkPrepare1, AtForkParent1, AtForkChild1));
-    ASSERT_EQ(0, pthread_atfork(AtForkPrepare2, AtForkParent2, AtForkChild2));
+  ASSERT_EQ(0, pthread_atfork(AtForkPrepare1, AtForkParent1, AtForkChild1));
+  ASSERT_EQ(0, pthread_atfork(AtForkPrepare2, AtForkParent2, AtForkChild2));
 
-    int pid = fork();
-    ASSERT_NE(-1, pid) << strerror(errno);
+  int pid = fork();
+  ASSERT_NE(-1, pid) << strerror(errno);
 
-    // Child and parent calls are made in the order they were registered.
-    if (pid == 0) {
-      ASSERT_EQ(0x12, g_atfork_child_calls);
-      _exit(0);
-    }
-    ASSERT_EQ(0x12, g_atfork_parent_calls);
+  // Child and parent calls are made in the order they were registered.
+  if (pid == 0) {
+    ASSERT_EQ(0x12, g_atfork_child_calls);
+    _exit(0);
+  }
+  ASSERT_EQ(0x12, g_atfork_parent_calls);
 
-    // Prepare calls are made in the reverse order.
-    ASSERT_EQ(0x21, g_atfork_prepare_calls);
-  });
+  // Prepare calls are made in the reverse order.
+  ASSERT_EQ(0x21, g_atfork_prepare_calls);
 }
 
 TEST(pthread, pthread_attr_getscope) {
@@ -800,7 +906,7 @@
 }
 
 TEST(pthread, pthread_cond_broadcast__preserves_condattr_flags) {
-#if defined(__BIONIC__) // This tests a bionic implementation detail.
+#if defined(__BIONIC__)
   pthread_condattr_t attr;
   pthread_condattr_init(&attr);
 
@@ -813,16 +919,78 @@
   ASSERT_EQ(0, pthread_cond_signal(&cond_var));
   ASSERT_EQ(0, pthread_cond_broadcast(&cond_var));
 
-  attr = static_cast<pthread_condattr_t>(cond_var.value);
+  attr = static_cast<pthread_condattr_t>(*reinterpret_cast<uint32_t*>(cond_var.__private));
   clockid_t clock;
   ASSERT_EQ(0, pthread_condattr_getclock(&attr, &clock));
   ASSERT_EQ(CLOCK_MONOTONIC, clock);
   int pshared;
   ASSERT_EQ(0, pthread_condattr_getpshared(&attr, &pshared));
   ASSERT_EQ(PTHREAD_PROCESS_SHARED, pshared);
-#else // __BIONIC__
-  GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+#else  // !defined(__BIONIC__)
+  GTEST_LOG_(INFO) << "This tests a bionic implementation detail.\n";
+#endif  // !defined(__BIONIC__)
+}
+
+class pthread_CondWakeupTest : public ::testing::Test {
+ protected:
+  pthread_mutex_t mutex;
+  pthread_cond_t cond;
+
+  enum Progress {
+    INITIALIZED,
+    WAITING,
+    SIGNALED,
+    FINISHED,
+  };
+  std::atomic<Progress> progress;
+  pthread_t thread;
+
+ protected:
+  virtual void SetUp() {
+    ASSERT_EQ(0, pthread_mutex_init(&mutex, NULL));
+    ASSERT_EQ(0, pthread_cond_init(&cond, NULL));
+    progress = INITIALIZED;
+    ASSERT_EQ(0,
+      pthread_create(&thread, NULL, reinterpret_cast<void* (*)(void*)>(WaitThreadFn), this));
+  }
+
+  virtual void TearDown() {
+    ASSERT_EQ(0, pthread_join(thread, NULL));
+    ASSERT_EQ(FINISHED, progress);
+    ASSERT_EQ(0, pthread_cond_destroy(&cond));
+    ASSERT_EQ(0, pthread_mutex_destroy(&mutex));
+  }
+
+  void SleepUntilProgress(Progress expected_progress) {
+    while (progress != expected_progress) {
+      usleep(5000);
+    }
+    usleep(5000);
+  }
+
+ private:
+  static void WaitThreadFn(pthread_CondWakeupTest* test) {
+    ASSERT_EQ(0, pthread_mutex_lock(&test->mutex));
+    test->progress = WAITING;
+    while (test->progress == WAITING) {
+      ASSERT_EQ(0, pthread_cond_wait(&test->cond, &test->mutex));
+    }
+    ASSERT_EQ(SIGNALED, test->progress);
+    test->progress = FINISHED;
+    ASSERT_EQ(0, pthread_mutex_unlock(&test->mutex));
+  }
+};
+
+TEST_F(pthread_CondWakeupTest, signal) {
+  SleepUntilProgress(WAITING);
+  progress = SIGNALED;
+  pthread_cond_signal(&cond);
+}
+
+TEST_F(pthread_CondWakeupTest, broadcast) {
+  SleepUntilProgress(WAITING);
+  progress = SIGNALED;
+  pthread_cond_broadcast(&cond);
 }
 
 TEST(pthread, pthread_mutex_timedlock) {
@@ -1043,64 +1211,214 @@
   ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE));
   ASSERT_EQ(0, pthread_mutexattr_gettype(&attr, &attr_type));
   ASSERT_EQ(PTHREAD_MUTEX_RECURSIVE, attr_type);
+
+  ASSERT_EQ(0, pthread_mutexattr_destroy(&attr));
 }
 
-TEST(pthread, pthread_mutex_lock_NORMAL) {
-  pthread_mutexattr_t attr;
-  ASSERT_EQ(0, pthread_mutexattr_init(&attr));
-  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL));
-
+struct PthreadMutex {
   pthread_mutex_t lock;
-  ASSERT_EQ(0, pthread_mutex_init(&lock, &attr));
 
-  ASSERT_EQ(0, pthread_mutex_lock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_destroy(&lock));
+  PthreadMutex(int mutex_type) {
+    init(mutex_type);
+  }
+
+  ~PthreadMutex() {
+    destroy();
+  }
+
+ private:
+  void init(int mutex_type) {
+    pthread_mutexattr_t attr;
+    ASSERT_EQ(0, pthread_mutexattr_init(&attr));
+    ASSERT_EQ(0, pthread_mutexattr_settype(&attr, mutex_type));
+    ASSERT_EQ(0, pthread_mutex_init(&lock, &attr));
+    ASSERT_EQ(0, pthread_mutexattr_destroy(&attr));
+  }
+
+  void destroy() {
+    ASSERT_EQ(0, pthread_mutex_destroy(&lock));
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(PthreadMutex);
+};
+
+TEST(pthread, pthread_mutex_lock_NORMAL) {
+  PthreadMutex m(PTHREAD_MUTEX_NORMAL);
+
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
 }
 
 TEST(pthread, pthread_mutex_lock_ERRORCHECK) {
-  pthread_mutexattr_t attr;
-  ASSERT_EQ(0, pthread_mutexattr_init(&attr));
-  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK));
+  PthreadMutex m(PTHREAD_MUTEX_ERRORCHECK);
 
-  pthread_mutex_t lock;
-  ASSERT_EQ(0, pthread_mutex_init(&lock, &attr));
-
-  ASSERT_EQ(0, pthread_mutex_lock(&lock));
-  ASSERT_EQ(EDEADLK, pthread_mutex_lock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_trylock(&lock));
-  ASSERT_EQ(EBUSY, pthread_mutex_trylock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(EPERM, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_destroy(&lock));
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(EDEADLK, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(EBUSY, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(EPERM, pthread_mutex_unlock(&m.lock));
 }
 
 TEST(pthread, pthread_mutex_lock_RECURSIVE) {
-  pthread_mutexattr_t attr;
-  ASSERT_EQ(0, pthread_mutexattr_init(&attr));
-  ASSERT_EQ(0, pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE));
+  PthreadMutex m(PTHREAD_MUTEX_RECURSIVE);
 
-  pthread_mutex_t lock;
-  ASSERT_EQ(0, pthread_mutex_init(&lock, &attr));
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_trylock(&m.lock));
+  ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+  ASSERT_EQ(EPERM, pthread_mutex_unlock(&m.lock));
+}
 
-  ASSERT_EQ(0, pthread_mutex_lock(&lock));
-  ASSERT_EQ(0, pthread_mutex_lock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_trylock(&lock));
-  ASSERT_EQ(0, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(EPERM, pthread_mutex_unlock(&lock));
-  ASSERT_EQ(0, pthread_mutex_destroy(&lock));
+TEST(pthread, pthread_mutex_init_same_as_static_initializers) {
+  pthread_mutex_t lock_normal = PTHREAD_MUTEX_INITIALIZER;
+  PthreadMutex m1(PTHREAD_MUTEX_NORMAL);
+  ASSERT_EQ(0, memcmp(&lock_normal, &m1.lock, sizeof(pthread_mutex_t)));
+  pthread_mutex_destroy(&lock_normal);
+
+  pthread_mutex_t lock_errorcheck = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+  PthreadMutex m2(PTHREAD_MUTEX_ERRORCHECK);
+  ASSERT_EQ(0, memcmp(&lock_errorcheck, &m2.lock, sizeof(pthread_mutex_t)));
+  pthread_mutex_destroy(&lock_errorcheck);
+
+  pthread_mutex_t lock_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+  PthreadMutex m3(PTHREAD_MUTEX_RECURSIVE);
+  ASSERT_EQ(0, memcmp(&lock_recursive, &m3.lock, sizeof(pthread_mutex_t)));
+  ASSERT_EQ(0, pthread_mutex_destroy(&lock_recursive));
+}
+class MutexWakeupHelper {
+ private:
+  PthreadMutex m;
+  enum Progress {
+    LOCK_INITIALIZED,
+    LOCK_WAITING,
+    LOCK_RELEASED,
+    LOCK_ACCESSED
+  };
+  std::atomic<Progress> progress;
+  std::atomic<pid_t> tid;
+
+  static void thread_fn(MutexWakeupHelper* helper) {
+    helper->tid = gettid();
+    ASSERT_EQ(LOCK_INITIALIZED, helper->progress);
+    helper->progress = LOCK_WAITING;
+
+    ASSERT_EQ(0, pthread_mutex_lock(&helper->m.lock));
+    ASSERT_EQ(LOCK_RELEASED, helper->progress);
+    ASSERT_EQ(0, pthread_mutex_unlock(&helper->m.lock));
+
+    helper->progress = LOCK_ACCESSED;
+  }
+
+ public:
+  MutexWakeupHelper(int mutex_type) : m(mutex_type) {
+  }
+
+  void test() {
+    ASSERT_EQ(0, pthread_mutex_lock(&m.lock));
+    progress = LOCK_INITIALIZED;
+    tid = 0;
+
+    pthread_t thread;
+    ASSERT_EQ(0, pthread_create(&thread, NULL,
+      reinterpret_cast<void* (*)(void*)>(MutexWakeupHelper::thread_fn), this));
+
+    WaitUntilThreadSleep(tid);
+    ASSERT_EQ(LOCK_WAITING, progress);
+
+    progress = LOCK_RELEASED;
+    ASSERT_EQ(0, pthread_mutex_unlock(&m.lock));
+
+    ASSERT_EQ(0, pthread_join(thread, NULL));
+    ASSERT_EQ(LOCK_ACCESSED, progress);
+  }
+};
+
+TEST(pthread, pthread_mutex_NORMAL_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_NORMAL);
+  helper.test();
+}
+
+TEST(pthread, pthread_mutex_ERRORCHECK_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_ERRORCHECK);
+  helper.test();
+}
+
+TEST(pthread, pthread_mutex_RECURSIVE_wakeup) {
+  MutexWakeupHelper helper(PTHREAD_MUTEX_RECURSIVE);
+  helper.test();
 }
 
 TEST(pthread, pthread_mutex_owner_tid_limit) {
+#if defined(__BIONIC__) && !defined(__LP64__)
   FILE* fp = fopen("/proc/sys/kernel/pid_max", "r");
   ASSERT_TRUE(fp != NULL);
   long pid_max;
   ASSERT_EQ(1, fscanf(fp, "%ld", &pid_max));
   fclose(fp);
-  // Current pthread_mutex uses 16 bits to represent owner tid.
-  // Change the implementation if we need to support higher value than 65535.
+  // Bionic's pthread_mutex implementation on 32-bit devices uses 16 bits to represent owner tid.
   ASSERT_LE(pid_max, 65536);
+#else
+  GTEST_LOG_(INFO) << "This test does nothing as 32-bit tid is supported by pthread_mutex.\n";
+#endif
+}
+
+class StrictAlignmentAllocator {
+ public:
+  void* allocate(size_t size, size_t alignment) {
+    char* p = new char[size + alignment * 2];
+    allocated_array.push_back(p);
+    while (!is_strict_aligned(p, alignment)) {
+      ++p;
+    }
+    return p;
+  }
+
+  ~StrictAlignmentAllocator() {
+    for (auto& p : allocated_array) {
+      delete [] p;
+    }
+  }
+
+ private:
+  bool is_strict_aligned(char* p, size_t alignment) {
+    return (reinterpret_cast<uintptr_t>(p) % (alignment * 2)) == alignment;
+  }
+
+  std::vector<char*> allocated_array;
+};
+
+TEST(pthread, pthread_types_allow_four_bytes_alignment) {
+#if defined(__BIONIC__)
+  // For binary compatibility with old version, we need to allow 4-byte aligned data for pthread types.
+  StrictAlignmentAllocator allocator;
+  pthread_mutex_t* mutex = reinterpret_cast<pthread_mutex_t*>(
+                             allocator.allocate(sizeof(pthread_mutex_t), 4));
+  ASSERT_EQ(0, pthread_mutex_init(mutex, NULL));
+  ASSERT_EQ(0, pthread_mutex_lock(mutex));
+  ASSERT_EQ(0, pthread_mutex_unlock(mutex));
+  ASSERT_EQ(0, pthread_mutex_destroy(mutex));
+
+  pthread_cond_t* cond = reinterpret_cast<pthread_cond_t*>(
+                           allocator.allocate(sizeof(pthread_cond_t), 4));
+  ASSERT_EQ(0, pthread_cond_init(cond, NULL));
+  ASSERT_EQ(0, pthread_cond_signal(cond));
+  ASSERT_EQ(0, pthread_cond_broadcast(cond));
+  ASSERT_EQ(0, pthread_cond_destroy(cond));
+
+  pthread_rwlock_t* rwlock = reinterpret_cast<pthread_rwlock_t*>(
+                               allocator.allocate(sizeof(pthread_rwlock_t), 4));
+  ASSERT_EQ(0, pthread_rwlock_init(rwlock, NULL));
+  ASSERT_EQ(0, pthread_rwlock_rdlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_unlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_wrlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_unlock(rwlock));
+  ASSERT_EQ(0, pthread_rwlock_destroy(rwlock));
+
+#else
+  GTEST_LOG_(INFO) << "This test tests bionic implementation details.";
+#endif
 }
diff --git a/tests/stack_protector_test.cpp b/tests/stack_protector_test.cpp
index 8007711..22285d1 100644
--- a/tests/stack_protector_test.cpp
+++ b/tests/stack_protector_test.cpp
@@ -24,14 +24,10 @@
 #include <pthread.h>
 #include <stdint.h>
 #include <stdio.h>
-#include <sys/syscall.h>
 #include <unistd.h>
 #include <set>
 
-#if defined(__GLIBC__)
-// glibc doesn't expose gettid(2).
-pid_t gettid() { return syscall(__NR_gettid); }
-#endif // __GLIBC__
+extern "C" pid_t gettid();
 
 // For x86, bionic and glibc have per-thread stack guard values (all identical).
 #if defined(__i386__)
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 890e86e..62677cd 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -151,6 +151,15 @@
   fclose(fp);
 }
 
+TEST(stdio, getdelim_directory) {
+  FILE* fp = fopen("/proc", "r");
+  ASSERT_TRUE(fp != NULL);
+  char* word_read;
+  size_t allocated_length;
+  ASSERT_EQ(-1, getdelim(&word_read, &allocated_length, ' ', fp));
+  fclose(fp);
+}
+
 TEST(stdio, getline) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
@@ -965,3 +974,41 @@
 TEST(stdio, fwrite_after_fread_fast_path) {
   test_fwrite_after_fread(64*1024);
 }
+
+// http://b/19172514
+TEST(stdio, fread_after_fseek) {
+  TemporaryFile tf;
+
+  FILE* fp = fopen(tf.filename, "w+");
+  ASSERT_TRUE(fp != nullptr);
+
+  char file_data[12288];
+  for (size_t i = 0; i < 12288; i++) {
+    file_data[i] = i;
+  }
+  ASSERT_EQ(12288U, fwrite(file_data, 1, 12288, fp));
+  fclose(fp);
+
+  fp = fopen(tf.filename, "r");
+  ASSERT_TRUE(fp != nullptr);
+
+  char buffer[8192];
+  size_t cur_location = 0;
+  // Small read to populate internal buffer.
+  ASSERT_EQ(100U, fread(buffer, 1, 100, fp));
+  ASSERT_EQ(memcmp(file_data, buffer, 100), 0);
+
+  cur_location = static_cast<size_t>(ftell(fp));
+  // Large read to force reading into the user supplied buffer and bypassing
+  // the internal buffer.
+  ASSERT_EQ(8192U, fread(buffer, 1, 8192, fp));
+  ASSERT_EQ(memcmp(file_data+cur_location, buffer, 8192), 0);
+
+  // Small backwards seek to verify fseek does not reuse the internal buffer.
+  ASSERT_EQ(0, fseek(fp, -22, SEEK_CUR));
+  cur_location = static_cast<size_t>(ftell(fp));
+  ASSERT_EQ(22U, fread(buffer, 1, 22, fp));
+  ASSERT_EQ(memcmp(file_data+cur_location, buffer, 22), 0);
+
+  fclose(fp);
+}
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 137565e..1d63c76 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -1385,3 +1385,18 @@
   TestBasename("///", "");
   TestBasename("//usr//lib//", "");
 }
+
+TEST(string, strnlen_147048) {
+  // https://code.google.com/p/android/issues/detail?id=147048
+  char stack_src[64] = {0};
+  EXPECT_EQ(0U, strnlen(stack_src, 1024*1024*1024));
+  char* heap_src = new char[1];
+  *heap_src = '\0';
+  EXPECT_EQ(0U, strnlen(heap_src, 1024*1024*1024));
+  delete[] heap_src;
+}
+
+TEST(string, mempcpy) {
+  char dst[6];
+  ASSERT_EQ(&dst[4], reinterpret_cast<char*>(mempcpy(dst, "hello", 4)));
+}
diff --git a/tests/sys_stat_test.cpp b/tests/sys_stat_test.cpp
index 7bbb7c6..7c387ba 100644
--- a/tests/sys_stat_test.cpp
+++ b/tests/sys_stat_test.cpp
@@ -138,13 +138,18 @@
 #endif
 }
 
+static void AssertFileModeEquals(mode_t expected_mode, const char* filename) {
+  struct stat sb;
+  ASSERT_EQ(0, stat(filename, &sb));
+  mode_t mask = S_IRWXU | S_IRWXG | S_IRWXO;
+  ASSERT_EQ(expected_mode & mask, static_cast<mode_t>(sb.st_mode) & mask);
+}
+
 TEST(sys_stat, fchmodat_file) {
   TemporaryFile tf;
-  struct stat sb;
 
   ASSERT_EQ(0, fchmodat(AT_FDCWD, tf.filename, 0751, 0));
-  ASSERT_EQ(0, fstat(tf.fd, &sb));
-  ASSERT_TRUE(0751 == (sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)));
+  AssertFileModeEquals(0751, tf.filename);
 }
 
 TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_file) {
@@ -153,11 +158,9 @@
   int result = fchmodat(AT_FDCWD, tf.filename, 0751, AT_SYMLINK_NOFOLLOW);
 
 #if defined(__BIONIC__)
-  struct stat sb;
   ASSERT_EQ(0, result);
   ASSERT_EQ(0, errno);
-  ASSERT_EQ(0, fstat(tf.fd, &sb));
-  ASSERT_TRUE(0751 == (sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)));
+  AssertFileModeEquals(0751, tf.filename);
 #else
   // glibc 2.19 does not implement AT_SYMLINK_NOFOLLOW and always
   // returns ENOTSUP
@@ -169,14 +172,12 @@
 TEST(sys_stat, fchmodat_symlink) {
   TemporaryFile tf;
   char linkname[255];
-  struct stat sb;
 
   snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
 
   ASSERT_EQ(0, symlink(tf.filename, linkname));
   ASSERT_EQ(0, fchmodat(AT_FDCWD, linkname, 0751, 0));
-  ASSERT_EQ(0, fstat(tf.fd, &sb));
-  ASSERT_TRUE(0751 == (sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)));
+  AssertFileModeEquals(0751, tf.filename);
   unlink(linkname);
 }
 
@@ -194,28 +195,93 @@
   unlink(linkname);
 }
 
+static void AssertSymlinkModeEquals(mode_t expected_mode, const char* linkname) {
+  struct stat sb;
+  ASSERT_EQ(0, fstatat(AT_FDCWD, linkname, &sb, AT_SYMLINK_NOFOLLOW));
+  mode_t mask = S_IRWXU | S_IRWXG | S_IRWXO;
+  ASSERT_EQ(expected_mode & mask, static_cast<mode_t>(sb.st_mode) & mask);
+}
+
 TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_with_symlink) {
   TemporaryFile tf;
-  char linkname[255];
+  struct stat tf_sb;
+  ASSERT_EQ(0, stat(tf.filename, &tf_sb));
 
+  char linkname[255];
   snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
 
   ASSERT_EQ(0, symlink(tf.filename, linkname));
-  ASSERT_EQ(-1, fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW));
-  ASSERT_EQ(ENOTSUP, errno);
+  int result = fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW);
+  // It depends on the kernel whether chmod operation on symlink is allowed.
+  if (result == 0) {
+    AssertSymlinkModeEquals(0751, linkname);
+  } else {
+    ASSERT_EQ(-1, result);
+    ASSERT_EQ(ENOTSUP, errno);
+  }
+
+  // Target file mode shouldn't be modified.
+  AssertFileModeEquals(tf_sb.st_mode, tf.filename);
   unlink(linkname);
 }
 
 TEST(sys_stat, fchmodat_AT_SYMLINK_NOFOLLOW_with_dangling_symlink) {
   TemporaryFile tf;
+
   char linkname[255];
   char target[255];
-
   snprintf(linkname, sizeof(linkname), "%s.link", tf.filename);
   snprintf(target, sizeof(target), "%s.doesnotexist", tf.filename);
 
   ASSERT_EQ(0, symlink(target, linkname));
-  ASSERT_EQ(-1, fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW));
-  ASSERT_EQ(ENOTSUP, errno);
+  int result = fchmodat(AT_FDCWD, linkname, 0751, AT_SYMLINK_NOFOLLOW);
+  // It depends on the kernel whether chmod operation on symlink is allowed.
+  if (result == 0) {
+    AssertSymlinkModeEquals(0751, linkname);
+  } else {
+    ASSERT_EQ(-1, result);
+    ASSERT_EQ(ENOTSUP, errno);
+  }
+
   unlink(linkname);
 }
+
+TEST(sys_stat, faccessat_EINVAL) {
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", F_OK, ~AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(EINVAL, errno);
+#if defined(__BIONIC__)
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), 0));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", ~(R_OK | W_OK | X_OK), 0));
+  ASSERT_EQ(EINVAL, errno);
+#endif
+}
+
+TEST(sys_stat, faccessat_AT_SYMLINK_NOFOLLOW_EINVAL) {
+#if defined(__BIONIC__)
+  // Android doesn't support AT_SYMLINK_NOFOLLOW
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/dev/null", F_OK, AT_SYMLINK_NOFOLLOW));
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", F_OK, AT_SYMLINK_NOFOLLOW));
+#endif
+}
+
+TEST(sys_stat, faccessat_dev_null) {
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", F_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", R_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", W_OK, 0));
+  ASSERT_EQ(0, faccessat(AT_FDCWD, "/dev/null", R_OK|W_OK, 0));
+}
+
+TEST(sys_stat, faccessat_nonexistant) {
+  ASSERT_EQ(-1, faccessat(AT_FDCWD, "/blah", F_OK, AT_SYMLINK_NOFOLLOW));
+#if defined(__BIONIC__)
+  // Android doesn't support AT_SYMLINK_NOFOLLOW
+  ASSERT_EQ(EINVAL, errno);
+#else
+  ASSERT_EQ(ENOENT, errno);
+#endif
+}
diff --git a/tests/sys_statvfs_test.cpp b/tests/sys_statvfs_test.cpp
index 6b19e13..bff9e20 100644
--- a/tests/sys_statvfs_test.cpp
+++ b/tests/sys_statvfs_test.cpp
@@ -30,6 +30,11 @@
   EXPECT_EQ(0U, sb.f_ffree);
   EXPECT_EQ(0U, sb.f_fsid);
   EXPECT_EQ(255U, sb.f_namemax);
+
+  // The kernel sets a private bit to indicate that f_flags is valid.
+  // This flag is not supposed to be exposed to libc clients.
+  static const uint32_t ST_VALID = 0x0020;
+  EXPECT_TRUE((sb.f_flag & ST_VALID) == 0) << sb.f_flag;
 }
 
 TEST(sys_statvfs, statvfs) {
@@ -51,6 +56,7 @@
   close(fd);
   Check(sb);
 }
+
 TEST(sys_statvfs, fstatvfs64) {
   struct statvfs64 sb;
   int fd = open("/proc", O_RDONLY);
diff --git a/tests/sys_vfs_test.cpp b/tests/sys_vfs_test.cpp
index 4b05660..a521967 100644
--- a/tests/sys_vfs_test.cpp
+++ b/tests/sys_vfs_test.cpp
@@ -31,6 +31,11 @@
   EXPECT_EQ(0, sb.f_fsid.__val[0]);
   EXPECT_EQ(0, sb.f_fsid.__val[1]);
   EXPECT_EQ(255, static_cast<int>(sb.f_namelen));
+
+  // The kernel sets a private bit to indicate that f_flags is valid.
+  // This flag is not supposed to be exposed to libc clients.
+  static const uint32_t ST_VALID = 0x0020;
+  EXPECT_TRUE((sb.f_flags & ST_VALID) == 0) << sb.f_flags;
 }
 
 TEST(sys_vfs, statfs) {
@@ -52,6 +57,7 @@
   close(fd);
   Check(sb);
 }
+
 TEST(sys_vfs, fstatfs64) {
   struct statfs64 sb;
   int fd = open("/proc", O_RDONLY);
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index f5c0524..f54a461 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -801,3 +801,22 @@
   VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_UUCP);
 #endif // defined(__BIONIC__)
 }
+
+TEST(unistd, dup2_same) {
+  // POSIX says of dup2:
+  // If fildes2 is already a valid open file descriptor ...
+  // [and] fildes is equal to fildes2 ... dup2() shall return
+  // fildes2 without closing it.
+  // This isn't true of dup3(2), so we need to manually implement that.
+
+  // Equal and valid.
+  int fd = open("/proc/version", O_RDONLY);
+  ASSERT_TRUE(fd != -1);
+  ASSERT_EQ(fd, dup2(fd, fd));
+  ASSERT_EQ(0, close(fd)); // Check that dup2 didn't close fd.
+
+  // Equal, but invalid.
+  errno = 0;
+  ASSERT_EQ(-1, dup2(fd, fd));
+  ASSERT_EQ(EBADF, errno);
+}
diff --git a/tests/utils.h b/tests/utils.h
new file mode 100644
index 0000000..fd012a3
--- /dev/null
+++ b/tests/utils.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef __TEST_UTILS_H
+#define __TEST_UTILS_H
+#include <inttypes.h>
+#include <sys/mman.h>
+
+#include "private/ScopeGuard.h"
+
+struct map_record {
+  uintptr_t addr_start;
+  uintptr_t addr_end;
+
+  int perms;
+
+  size_t offset;
+
+  dev_t device;
+  ino_t inode;
+
+  std::string pathname;
+};
+
+class Maps {
+ public:
+  static bool parse_maps(std::vector<map_record>* maps) {
+    char path[64];
+    snprintf(path, sizeof(path), "/proc/self/task/%d/maps", getpid());
+    FILE* fp = fopen(path, "re");
+    if (fp == nullptr) {
+      return false;
+    }
+
+    auto fp_guard = make_scope_guard([&]() {
+      fclose(fp);
+    });
+
+    char line[BUFSIZ];
+    while (fgets(line, sizeof(line), fp) != nullptr) {
+      map_record record;
+      uint32_t dev_major, dev_minor;
+      char pathstr[BUFSIZ];
+      char prot[5]; // sizeof("rwxp")
+      if (sscanf(line, "%" SCNxPTR "-%" SCNxPTR " %4s %" SCNxPTR " %x:%x %lu %s",
+            &record.addr_start, &record.addr_end, prot, &record.offset,
+            &dev_major, &dev_minor, &record.inode, pathstr) == 8) {
+        record.perms = 0;
+        if (prot[0] == 'r') {
+          record.perms |= PROT_READ;
+        }
+        if (prot[1] == 'w') {
+          record.perms |= PROT_WRITE;
+        }
+        if (prot[2] == 'x') {
+          record.perms |= PROT_EXEC;
+        }
+
+        // TODO: parse shared/private?
+
+        record.device = makedev(dev_major, dev_minor);
+        record.pathname = pathstr;
+        maps->push_back(record);
+      }
+    }
+
+    return true;
+  }
+};
+
+#endif
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index a1d1501..e86d56d 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -667,3 +667,8 @@
   wcstoull_l(L"123", NULL, 37, LC_GLOBAL_LOCALE);
   ASSERT_EQ(EINVAL, errno);
 }
+
+TEST(wchar, wmempcpy) {
+  wchar_t dst[6];
+  ASSERT_EQ(&dst[4], wmempcpy(dst, L"hello", 4));
+}
diff --git a/tools/Android.mk b/tools/Android.mk
new file mode 100644
index 0000000..4dd66fe
--- /dev/null
+++ b/tools/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2015 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
diff --git a/tools/bionicbb/gerrit.py b/tools/bionicbb/gerrit.py
index 76e42b4..40719b4 100644
--- a/tools/bionicbb/gerrit.py
+++ b/tools/bionicbb/gerrit.py
@@ -62,8 +62,8 @@
         }
     }
     """
-    details = call('/changes/{}/revisions/{}/review'.format(
-        change_id, patch_set))
+    details = json.loads(call('/changes/{}/revisions/{}/review'.format(
+        change_id, patch_set)))
     labels = {'Code-Review': {}, 'Verified': {}}
     for review in details['labels']['Code-Review']['all']:
         if 'value' in review and 'email' in review:
diff --git a/tools/bionicbb/gmail_listener.py b/tools/bionicbb/gmail_listener.py
index 0cd31c9..770f0c4 100644
--- a/tools/bionicbb/gmail_listener.py
+++ b/tools/bionicbb/gmail_listener.py
@@ -190,8 +190,10 @@
         if lunch_target is not None:
             params['LUNCH_TARGET'] = lunch_target
         if not dry_run:
-            job = jenkins[build].invoke(build_params=params)
-            url = job.get_build().baseurl
+            _ = jenkins[build].invoke(build_params=params)
+            # https://issues.jenkins-ci.org/browse/JENKINS-27256
+            # url = job.get_build().baseurl
+            url = 'URL UNAVAILABLE'
         else:
             url = 'DRY_RUN_URL'
         print '{}({}): {} => {} {} {}'.format(
diff --git a/tools/relocation_packer/Android.mk b/tools/relocation_packer/Android.mk
new file mode 100644
index 0000000..99a39c0
--- /dev/null
+++ b/tools/relocation_packer/Android.mk
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2015 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.
+#
+
+common_cppflags := -Wall -Wextra -Wunused -Werror -Wold-style-cast
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := \
+  src/debug.cc \
+  src/delta_encoder.cc \
+  src/elf_file.cc \
+  src/leb128.cc \
+  src/packer.cc \
+  src/sleb128.cc \
+
+LOCAL_STATIC_LIBRARIES := libelf
+LOCAL_C_INCLUDES := external/elfutils/src/libelf
+LOCAL_MODULE := lib_relocation_packer
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := src/main.cc
+LOCAL_STATIC_LIBRARIES := lib_relocation_packer libelf
+LOCAL_C_INCLUDES := external/elfutils/src/libelf libnativehelper/include
+
+LOCAL_MODULE := relocation_packer
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_EXECUTABLE)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := \
+  src/debug_unittest.cc \
+  src/delta_encoder_unittest.cc \
+  src/elf_file_unittest.cc \
+  src/leb128_unittest.cc \
+  src/sleb128_unittest.cc \
+  src/packer_unittest.cc \
+
+LOCAL_STATIC_LIBRARIES := lib_relocation_packer libelf
+LOCAL_C_INCLUDES := external/elfutils/src/libelf
+
+LOCAL_CPPFLAGS := $(common_cppflags)
+
+LOCAL_MODULE := relocation_packer_unit_tests
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+include $(BUILD_HOST_NATIVE_TEST)
+
+# $(1) library name
+define copy-test-library
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE := $(1)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_PATH := $(HOST_OUT_EXECUTABLES)
+LOCAL_STRIP_MODULE := false
+LOCAL_SRC_FILES := test_data/$(1)
+include $(BUILD_PREBUILT)
+endef
+
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm32.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm32_packed.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm64.so))
+$(eval $(call copy-test-library,elf_file_unittest_relocs_arm64_packed.so))
diff --git a/tools/relocation_packer/LICENSE b/tools/relocation_packer/LICENSE
new file mode 100644
index 0000000..972bb2e
--- /dev/null
+++ b/tools/relocation_packer/LICENSE
@@ -0,0 +1,27 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/relocation_packer/src/debug.cc b/tools/relocation_packer/src/debug.cc
new file mode 100644
index 0000000..29d7ab0
--- /dev/null
+++ b/tools/relocation_packer/src/debug.cc
@@ -0,0 +1,55 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "debug.h"
+
+#include <stdlib.h>
+#include <iostream>
+#include <string>
+
+namespace relocation_packer {
+
+// Construct a new message logger.  Prints if level is less than or equal to
+// the level set with SetVerbose() and predicate is true.
+Logger::Logger(Severity severity, int level, bool predicate) {
+  severity_ = severity;
+  level_ = level;
+  predicate_ = predicate;
+}
+
+// On destruction, flush and print the strings accumulated.  Abort if FATAL.
+Logger::~Logger() {
+  if (predicate_) {
+    if (level_ <= max_level_) {
+      std::ostream* log = severity_ == INFO ? info_stream_ : error_stream_;
+      std::string tag;
+      switch (severity_) {
+        case INFO: tag = "INFO"; break;
+        case WARNING: tag = "WARNING"; break;
+        case ERROR: tag = "ERROR"; break;
+        case FATAL: tag = "FATAL"; break;
+      }
+      stream_.flush();
+      *log << tag << ": " << stream_.str() << std::endl;
+    }
+    if (severity_ == FATAL)
+      abort();
+  }
+}
+
+// Reset to initial state.
+void Logger::Reset() {
+  max_level_ = -1;
+  info_stream_ = &std::cout;
+  error_stream_ = &std::cerr;
+}
+
+// Verbosity.  Not thread-safe.
+int Logger::max_level_ = -1;
+
+// Logging streams.  Not thread-safe.
+std::ostream* Logger::info_stream_ = &std::cout;
+std::ostream* Logger::error_stream_ = &std::cerr;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/debug.h b/tools/relocation_packer/src/debug.h
new file mode 100644
index 0000000..48be6c1
--- /dev/null
+++ b/tools/relocation_packer/src/debug.h
@@ -0,0 +1,115 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Logging and checks.  Avoids a dependency on base.
+//
+// LOG(tag) prints messages.  Tags are INFO, WARNING, ERROR and FATAL.
+// INFO prints to stdout, the others to stderr.  FATAL aborts after printing.
+//
+// LOG_IF(tag, predicate) logs if predicate evaluates to true, else silent.
+//
+// VLOG(level) logs INFO messages where level is less than or equal to the
+// verbosity level set with SetVerbose().
+//
+// VLOG_IF(level, predicate) logs INFO if predicate evaluates to true,
+// else silent.
+//
+// CHECK(predicate) logs a FATAL error if predicate is false.
+// NOTREACHED() always aborts.
+// Log streams can be changed with SetStreams().  Logging is not thread-safe.
+//
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
+#define TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
+
+#include <limits.h>
+#include <ostream>
+#include <sstream>
+
+namespace relocation_packer {
+
+class Logger {
+ public:
+  enum Severity {INFO = 0, WARNING, ERROR, FATAL};
+
+  // Construct a new message logger.  Prints if level is less than or
+  // equal to the level set with SetVerbose() and predicate is true.
+  // |severity| is an enumerated severity.
+  // |level| is the verbosity level.
+  // |predicate| controls if the logger prints or is silent.
+  Logger(Severity severity, int level, bool predicate);
+
+  // On destruction, flush and print the strings accumulated in stream_.
+  ~Logger();
+
+  // Return the stream for this logger.
+  std::ostream& GetStream() { return stream_; }
+
+  // Set verbosity level.  Messages with a level less than or equal to
+  // this level are printed, others are discarded.  Static, not thread-safe.
+  static void SetVerbose(int level) { max_level_ = level; }
+
+  // Set info and error logging streams.  Static, not thread-safe.
+  static void SetStreams(std::ostream* info_stream,
+                         std::ostream* error_stream) {
+    info_stream_ = info_stream;
+    error_stream_ = error_stream;
+  }
+
+  // Reset to initial state.
+  static void Reset();
+
+ private:
+  // Message severity, verbosity level, and predicate.
+  Severity severity_;
+  int level_;
+  bool predicate_;
+
+  // String stream, accumulates message text.
+  std::ostringstream stream_;
+
+  // Verbosity for INFO messages.  Not thread-safe.
+  static int max_level_;
+
+  // Logging streams.  Not thread-safe.
+  static std::ostream* info_stream_;
+  static std::ostream* error_stream_;
+};
+
+}  // namespace relocation_packer
+
+// Make logging severities visible globally.
+typedef relocation_packer::Logger::Severity LogSeverity;
+using LogSeverity::INFO;
+using LogSeverity::WARNING;
+using LogSeverity::ERROR;
+using LogSeverity::FATAL;
+
+// LOG(severity) prints a message with the given severity, and aborts if
+// severity is FATAL.  LOG_IF(severity, predicate) does the same but only if
+// predicate is true.  INT_MIN is guaranteed to be less than or equal to
+// any verbosity level.
+#define LOG(severity) \
+    (relocation_packer::Logger(severity, INT_MIN, true).GetStream())
+#define LOG_IF(severity, predicate) \
+    (relocation_packer::Logger(severity, INT_MIN, (predicate)).GetStream())
+
+// VLOG(level) prints its message as INFO if level is less than or equal to
+// the current verbosity level.
+#define VLOG(level) \
+    (relocation_packer::Logger(INFO, (level), true).GetStream())
+#define VLOG_IF(level, predicate) \
+    (relocation_packer::Logger(INFO, (level), (predicate)).GetStream())
+
+// CHECK(predicate) fails with a FATAL log message if predicate is false.
+#define CHECK(predicate) (LOG_IF(FATAL, !(predicate)) \
+    << __FILE__ << ":" << __LINE__ << ": " \
+    << __FUNCTION__ << ": CHECK '" #predicate "' failed")
+
+// NOTREACHED() always fails with a FATAL log message.
+#define NOTREACHED(_) (LOG(FATAL) \
+    << __FILE__ << ":" << __LINE__ << ": " \
+    << __FUNCTION__ << ": NOTREACHED() hit")
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_DEBUG_H_
diff --git a/tools/relocation_packer/src/debug_unittest.cc b/tools/relocation_packer/src/debug_unittest.cc
new file mode 100644
index 0000000..b31e2ae
--- /dev/null
+++ b/tools/relocation_packer/src/debug_unittest.cc
@@ -0,0 +1,122 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "debug.h"
+
+#include <sstream>
+#include "gtest/gtest.h"
+
+namespace relocation_packer {
+
+TEST(Debug, Log) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  LOG(INFO) << "INFO log message";
+  LOG(WARNING) << "WARNING log message";
+  LOG(ERROR) << "ERROR log message";
+
+  EXPECT_EQ("INFO: INFO log message\n", info.str());
+  EXPECT_EQ("WARNING: WARNING log message\n"
+            "ERROR: ERROR log message\n", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, LogIf) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  LOG_IF(INFO, true) << "INFO log message";
+  LOG_IF(INFO, false) << "INFO log message, SHOULD NOT PRINT";
+  LOG_IF(WARNING, true) << "WARNING log message";
+  LOG_IF(WARNING, false) << "WARNING log message, SHOULD NOT PRINT";
+  LOG_IF(ERROR, true) << "ERROR log message";
+  LOG_IF(ERROR, false) << "ERROR log message, SHOULD NOT PRINT";
+  LOG_IF(FATAL, false) << "FATAL log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: INFO log message\n", info.str());
+  EXPECT_EQ("WARNING: WARNING log message\n"
+            "ERROR: ERROR log message\n", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, Vlog) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  VLOG(0) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG(1) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG(2) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("", info.str());
+  EXPECT_EQ("", error.str());
+
+  Logger::SetVerbose(1);
+
+  VLOG(0) << "VLOG 0 INFO log message";
+  VLOG(1) << "VLOG 1 INFO log message";
+  VLOG(2) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: VLOG 0 INFO log message\n"
+            "INFO: VLOG 1 INFO log message\n", info.str());
+  EXPECT_EQ("", error.str());
+  Logger::Reset();
+}
+
+TEST(Debug, VlogIf) {
+  Logger::Reset();
+  std::ostringstream info;
+  std::ostringstream error;
+  Logger::SetStreams(&info, &error);
+
+  VLOG_IF(0, true) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(1, true) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, true) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("", info.str());
+  EXPECT_EQ("", error.str());
+
+  Logger::SetVerbose(1);
+
+  VLOG_IF(0, true) << "VLOG 0 INFO log message";
+  VLOG_IF(0, false) << "VLOG 0 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(1, true) << "VLOG 1 INFO log message";
+  VLOG_IF(1, false) << "VLOG 1 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, true) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+  VLOG_IF(2, false) << "VLOG 2 INFO log message, SHOULD NOT PRINT";
+
+  EXPECT_EQ("INFO: VLOG 0 INFO log message\n"
+            "INFO: VLOG 1 INFO log message\n", info.str());
+  EXPECT_EQ("", error.str());
+  Logger::Reset();
+}
+
+TEST(DebugDeathTest, Fatal) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  EXPECT_DEATH(LOG(FATAL) << "FATAL log message", "FATAL: FATAL log message");
+  EXPECT_DEATH(
+      LOG_IF(FATAL, true) << "FATAL log message", "FATAL: FATAL log message");
+}
+
+TEST(DebugDeathTest, Check) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  CHECK(0 == 0);
+  EXPECT_DEATH(CHECK(0 == 1), "FATAL: .*:.*: .*: CHECK '0 == 1' failed");
+}
+
+TEST(DebugDeathTest, NotReached) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  Logger::Reset();
+  EXPECT_DEATH(NOTREACHED(), "FATAL: .*:.*: .*: NOTREACHED\\(\\) hit");
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/delta_encoder.cc b/tools/relocation_packer/src/delta_encoder.cc
new file mode 100644
index 0000000..8349d7c
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder.cc
@@ -0,0 +1,307 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "delta_encoder.h"
+
+#include <vector>
+
+#include "debug.h"
+
+static constexpr uint32_t RELOCATION_GROUPED_BY_INFO_FLAG = 1;
+static constexpr uint32_t RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG = 2;
+static constexpr uint32_t RELOCATION_GROUPED_BY_ADDEND_FLAG = 4;
+static constexpr uint32_t RELOCATION_GROUP_HAS_ADDEND_FLAG = 8;
+
+static bool is_relocation_grouped_by_info(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_INFO_FLAG) != 0;
+}
+
+static bool is_relocation_grouped_by_offset_delta(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG) != 0;
+}
+
+static bool is_relocation_grouped_by_addend(uint64_t flags) {
+  return (flags & RELOCATION_GROUPED_BY_ADDEND_FLAG) != 0;
+}
+
+static bool is_relocation_group_has_addend(uint64_t flags) {
+  return (flags & RELOCATION_GROUP_HAS_ADDEND_FLAG) != 0;
+}
+
+namespace relocation_packer {
+
+// Encode relocations into a delta encoded (packed) representation.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::Encode(const std::vector<ElfRela>& relocations,
+                                       std::vector<ElfAddr>* packed) {
+  if (relocations.size() == 0)
+    return;
+
+  // Start with the relocation count, then append groups
+  // TODO(dimitry): we might want to move it to DT_ANDROID_RELCOUNT section
+  packed->push_back(static_cast<ElfAddr>(relocations.size()));
+
+  // lets write starting offset (offset of the first reloc - first delta)
+  ElfAddr start_offset = relocations.size() > 1 ?
+      relocations[0].r_offset - (relocations[1].r_offset - relocations[0].r_offset) :
+      relocations[0].r_offset;
+
+  packed->push_back(start_offset);
+
+  // this one is used to calculate delta
+  ElfAddr previous_addend = 0;
+  ElfAddr previous_offset = start_offset;
+
+  for (size_t group_start = 0; group_start < relocations.size(); ) {
+    ElfAddr group_flags = 0;
+    ElfAddr group_offset_delta = 0;
+    ElfAddr group_addend = 0;
+    ElfAddr group_info = 0;
+
+    ElfAddr group_size = 0;
+
+    DetectGroup(relocations, group_start, previous_offset, &group_size, &group_flags,
+        &group_offset_delta, &group_info, &group_addend);
+
+    // write the group header
+    packed->push_back(group_size);
+    packed->push_back(group_flags);
+
+    if (is_relocation_grouped_by_offset_delta(group_flags)) {
+      packed->push_back(group_offset_delta);
+    }
+
+    if (is_relocation_grouped_by_info(group_flags)) {
+      packed->push_back(group_info);
+    }
+
+    if (is_relocation_group_has_addend(group_flags) &&
+        is_relocation_grouped_by_addend(group_flags)) {
+      packed->push_back(group_addend - previous_addend);
+      previous_addend = group_addend;
+    }
+
+    for (size_t i = 0; i < static_cast<size_t>(group_size); ++i) {
+      CHECK((group_start + i) < relocations.size());
+      const ElfRela* relocation = &relocations[group_start + i];
+
+      if (!is_relocation_grouped_by_offset_delta(group_flags)) {
+        packed->push_back(relocation->r_offset - previous_offset);
+      }
+      previous_offset = relocation->r_offset;
+
+      if (!is_relocation_grouped_by_info(group_flags)) {
+        packed->push_back(relocation->r_info);
+      }
+
+      if (is_relocation_group_has_addend(group_flags) &&
+          !is_relocation_grouped_by_addend(group_flags)) {
+        packed->push_back(relocation->r_addend - previous_addend);
+        previous_addend = relocation->r_addend;
+      }
+    }
+
+    // If the relocation group does not have an addend - reset it to 0
+    // to simplify addend computation for the group following this one.
+    if (!is_relocation_group_has_addend(group_flags)) {
+      previous_addend = 0;
+    }
+
+    group_start += group_size;
+  }
+}
+
+// Decode relocations from a delta encoded (packed) representation.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::Decode(const std::vector<ElfAddr>& packed,
+                                       std::vector<ElfRela>* relocations) {
+  if (packed.size() < 5) {
+    return;
+  }
+
+  size_t ndx = 0;
+  ElfAddr current_count = 0;
+  ElfAddr total_count = packed[ndx++];
+
+  ElfAddr offset = packed[ndx++];
+  ElfAddr info = 0;
+  ElfAddr addend = 0;
+
+  while(current_count < total_count) {
+    // read group
+    ElfAddr group_size = packed[ndx++];
+    ElfAddr group_flags = packed[ndx++];
+    ElfAddr group_offset_delta = 0;
+
+    if (is_relocation_grouped_by_offset_delta(group_flags)) {
+      group_offset_delta = packed[ndx++];
+    }
+
+    if (is_relocation_grouped_by_info(group_flags)) {
+      info = packed[ndx++];
+    }
+
+    if (is_relocation_group_has_addend(group_flags) &&
+        is_relocation_grouped_by_addend(group_flags)) {
+      addend += packed[ndx++];
+    }
+
+    // now read not grouped info
+    for (ElfAddr i = 0; i<group_size; ++i) {
+      if (is_relocation_grouped_by_offset_delta(group_flags)) {
+        offset += group_offset_delta;
+      } else {
+        offset += packed[ndx++];
+      }
+
+      if (!is_relocation_grouped_by_info(group_flags)) {
+        info = packed[ndx++];
+      }
+
+      if (is_relocation_group_has_addend(group_flags) &&
+          !is_relocation_grouped_by_addend(group_flags)) {
+        addend += packed[ndx++];
+      }
+
+      ElfRela reloc;
+      reloc.r_offset = offset;
+      reloc.r_info = info;
+      reloc.r_addend = is_relocation_group_has_addend(group_flags) ? addend : 0;
+      relocations->push_back(reloc);
+    }
+
+    if (!is_relocation_group_has_addend(group_flags)) {
+      addend = 0;
+    }
+
+    current_count += group_size;
+  }
+}
+
+// This function detects a way to group reloc_one and reloc_two, sets up group_flags
+// and initializes values for corresponding group_ fields. For example if relocations
+// can be grouped by r_info the function will set group_info variable.
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::DetectGroupFields(const ElfRela& reloc_one,
+                                                  const ElfRela& reloc_two,
+                                                  ElfAddr current_offset_delta,
+                                                  ElfAddr* group_flags,
+                                                  ElfAddr* group_offset_delta,
+                                                  ElfAddr* group_info,
+                                                  ElfAddr* group_addend) {
+  *group_flags = 0;
+
+  const ElfAddr offset_delta = static_cast<ElfAddr>(reloc_two.r_offset) -
+      static_cast<ElfAddr>(reloc_one.r_offset);
+
+  if (offset_delta == current_offset_delta) {
+    *group_flags |= RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG;
+    if (group_offset_delta != nullptr) {
+      *group_offset_delta = current_offset_delta;
+    }
+  }
+
+  if (reloc_one.r_info == reloc_two.r_info) {
+    *group_flags |= RELOCATION_GROUPED_BY_INFO_FLAG;
+    if (group_info != nullptr) {
+      *group_info = reloc_one.r_info;
+    }
+  }
+
+  if (reloc_one.r_addend != 0 || reloc_two.r_addend != 0) {
+    *group_flags |= RELOCATION_GROUP_HAS_ADDEND_FLAG;
+    if (reloc_one.r_addend == reloc_two.r_addend) {
+      *group_flags |= RELOCATION_GROUPED_BY_ADDEND_FLAG;
+      if (group_addend != nullptr) {
+        *group_addend = reloc_one.r_addend;
+      }
+    }
+  }
+}
+
+// This function is used to detect if there is better group available
+// during RelocationDeltaCodec<ELF>::DetectGroup processing.
+// Current implementation prefers having groups without addend (== zero addend)
+// to any other groups field with the ratio 3:1. This is because addend tends
+// to be more unevenly distributed than other fields.
+static uint32_t group_weight(uint64_t flags) {
+  uint32_t weight = 0;
+  if (!is_relocation_group_has_addend(flags)) {
+    weight += 3;
+  } else if (is_relocation_grouped_by_addend(flags)) {
+    weight += 1;
+  }
+
+  if (is_relocation_grouped_by_offset_delta(flags)) {
+    weight += 1;
+  }
+
+  if (is_relocation_grouped_by_info(flags)) {
+    weight += 1;
+  }
+
+  return weight;
+}
+
+template <typename ELF>
+void RelocationDeltaCodec<ELF>::DetectGroup(const std::vector<ElfRela>& relocations,
+                                          size_t group_starts_with, ElfAddr previous_offset,
+                                          ElfAddr* group_size, ElfAddr* group_flags,
+                                          ElfAddr* group_offset_delta, ElfAddr* group_info,
+                                          ElfAddr* group_addend) {
+  CHECK(group_starts_with < relocations.size());
+  CHECK(group_flags != nullptr);
+
+  const ElfRela& reloc_one = relocations[group_starts_with++];
+  if (group_starts_with == relocations.size()) {
+    *group_flags = reloc_one.r_addend == 0 ? 0 : RELOCATION_GROUP_HAS_ADDEND_FLAG;
+    *group_size = 1;
+    return;
+  }
+
+  const ElfAddr offset_delta = reloc_one.r_offset - previous_offset;
+
+  // detect group_flags
+  DetectGroupFields(reloc_one, relocations[group_starts_with], offset_delta, group_flags,
+      group_offset_delta, group_info, group_addend);
+
+  if (group_starts_with + 1 == relocations.size()) {
+    *group_size = 2;
+    return;
+  }
+
+  ElfAddr cnt = 1;
+  for (size_t i = group_starts_with; i < relocations.size() - 1; ++i) {
+    ElfAddr candidate_flags;
+    // check if next group (reloc_current; reloc_next) has better grouped_by flags
+    DetectGroupFields(relocations[i], relocations[i+1], offset_delta, &candidate_flags,
+        nullptr, nullptr, nullptr);
+
+    if (group_weight(*group_flags) < group_weight(candidate_flags)) {
+      break;
+    }
+    cnt++;
+
+    if (candidate_flags != *group_flags) {
+      break;
+    }
+
+    if (i + 1 == relocations.size() - 1) { // last one
+      cnt++;
+    }
+  }
+
+  // if as a result of checking candidates we ended up with cnt == 1
+  // reset flags to the default state
+  if (cnt == 1) {
+    *group_flags = reloc_one.r_addend == 0 ? 0 : RELOCATION_GROUP_HAS_ADDEND_FLAG;
+  }
+
+  *group_size = cnt;
+}
+
+template class RelocationDeltaCodec<ELF32_traits>;
+template class RelocationDeltaCodec<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/delta_encoder.h b/tools/relocation_packer/src/delta_encoder.h
new file mode 100644
index 0000000..46c324c
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder.h
@@ -0,0 +1,132 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Delta encode and decode REL/RELA section of elf file.
+//
+// The encoded data format is sequence of elements of ElfAddr type (unsigned long):
+//
+// [00] relocation_count - the total count of relocations
+// [01] initial r_offset - this is initial r_offset for the
+//                         relocation table.
+// followed by group structures:
+// [02] group
+// ...
+// [nn] group
+
+// the generalized format of the group is (! - always present ? - depends on group_flags):
+// --------------
+// ! group_size
+// ! group_flags
+// ? group_r_offset_delta when RELOCATION_GROUPED_BY_OFFSET_DELTA flag is set
+// ? group_r_info when RELOCATION_GROUPED_BY_INFO flag is set
+// ? group_r_addend_group_delta when RELOCATION_GROUP_HAS_ADDEND and RELOCATION_GROUPED_BY_ADDEND
+//   flag is set
+//
+// The group description is followed by individual relocations.
+// please note that there is a case when individual relocation
+// section could be empty - that is if every field ends up grouped.
+//
+// The format for individual relocations section is:
+// ? r_offset_delta - when RELOCATION_GROUPED_BY_OFFSET_DELTA is not set
+// ? r_info - when RELOCATION_GROUPED_BY_INFO flag is not set
+// ? r_addend_delta - RELOCATION_GROUP_HAS_ADDEND is set and RELOCATION_GROUPED_BY_ADDEND is not set
+//
+// For example lets pack the following relocations:
+//
+// Relocation section '.rela.dyn' at offset 0xbf58 contains 939 entries:
+//     Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
+//     00000000000a2178  0000000000000403 R_AARCH64_RELATIVE                        177a8
+//     00000000000a2180  0000000000000403 R_AARCH64_RELATIVE                        177cc
+//     00000000000a2188  0000000000000403 R_AARCH64_RELATIVE                        177e0
+//     00000000000a2190  0000000000000403 R_AARCH64_RELATIVE                        177f4
+//     00000000000a2198  0000000000000403 R_AARCH64_RELATIVE                        17804
+//     00000000000a21a0  0000000000000403 R_AARCH64_RELATIVE                        17818
+//     00000000000a21a8  0000000000000403 R_AARCH64_RELATIVE                        1782c
+//     00000000000a21b0  0000000000000403 R_AARCH64_RELATIVE                        17840
+//     00000000000a21b8  0000000000000403 R_AARCH64_RELATIVE                        17854
+//     00000000000a21c0  0000000000000403 R_AARCH64_RELATIVE                        17868
+//     00000000000a21c8  0000000000000403 R_AARCH64_RELATIVE                        1787c
+//     00000000000a21d0  0000000000000403 R_AARCH64_RELATIVE                        17890
+//     00000000000a21d8  0000000000000403 R_AARCH64_RELATIVE                        178a4
+//     00000000000a21e8  0000000000000403 R_AARCH64_RELATIVE                        178b8
+//
+// The header is going to be
+// [00] 14                 <- count
+// [01] 0x00000000000a2170 <- initial relocation (first relocation - delta,
+//                            the delta is 8 in this case)
+// -- starting the first and only group
+// [03] 14                 <- group size
+// [03] 0xb                <- flags RELOCATION_GROUP_HAS_ADDEND | RELOCATION_GROUPED_BY_OFFSET_DELTA
+//                            | RELOCATION_GROUPED_BY_INFO
+// [04] 8                  <- offset delta
+// [05] 0x403              <- r_info
+// -- end of group definition, starting list of r_addend deltas
+// [06] 0x177a8
+// [07] 0x24               = 177cc - 177a8
+// [08] 0x14               = 177e0 - 177cc
+// [09] 0x14               = 177f4 - 177e0
+// [10] 0x10               = 17804 - 177f4
+// [11] 0x14               = 17818 - 17804
+// [12] 0x14               = 1782c - 17818
+// [13] 0x14               = 17840 - 1782c
+// [14] 0x14               = 17854 - 17840
+// [15] 0x14               = 17868 - 17854
+// [16] 0x14               = 1787c - 17868
+// [17] 0x14               = 17890 - 1787c
+// [18] 0x14               = 178a4 - 17890
+// [19] 0x14               = 178b8 - 178a4
+// -- the end.
+
+// TODO (dimitry): consider using r_addend_group_delta in the way we use group offset delta, it can
+//                 save us more bytes...
+
+// The input ends when sum(group_size) == relocation_count
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
+#define TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
+
+#include <vector>
+
+#include "elf.h"
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// A RelocationDeltaCodec packs vectors of relative relocations with
+// addends into more compact forms, and unpacks them to reproduce the
+// pre-packed data.
+template <typename ELF>
+class RelocationDeltaCodec {
+ public:
+  typedef typename ELF::Addr ElfAddr;
+  typedef typename ELF::Rela ElfRela;
+
+  // Encode relocations with addends into a more compact form.
+  // |relocations| is a vector of relative relocation with addend structs.
+  // |packed| is the vector of packed words into which relocations are packed.
+  static void Encode(const std::vector<ElfRela>& relocations,
+                     std::vector<ElfAddr>* packed);
+
+  // Decode relative relocations with addends from their more compact form.
+  // |packed| is the vector of packed relocations.
+  // |relocations| is a vector of unpacked relative relocations.
+  static void Decode(const std::vector<ElfAddr>& packed,
+                     std::vector<ElfRela>* relocations);
+
+ private:
+  static void DetectGroup(const std::vector<ElfRela>& relocations,
+                          size_t group_starts_with, ElfAddr previous_offset,
+                          ElfAddr* group_size, ElfAddr* group_flags,
+                          ElfAddr* group_offset_delta, ElfAddr* group_info,
+                          ElfAddr* group_addend);
+
+  static void DetectGroupFields(const ElfRela& reloc_one, const ElfRela& reloc_two,
+                                ElfAddr current_offset_delta, ElfAddr* group_flags,
+                                ElfAddr* group_offset_delta, ElfAddr* group_info,
+                                ElfAddr* group_addend);
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_DELTA_ENCODER_H_
diff --git a/tools/relocation_packer/src/delta_encoder_unittest.cc b/tools/relocation_packer/src/delta_encoder_unittest.cc
new file mode 100644
index 0000000..06d9c96
--- /dev/null
+++ b/tools/relocation_packer/src/delta_encoder_unittest.cc
@@ -0,0 +1,223 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "delta_encoder.h"
+
+#include <vector>
+#include "elf.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+template <typename T>
+void AddRelocation(uint32_t addr,
+                   uint32_t info,
+                   int32_t addend,
+                   std::vector<T>* relocations) {
+  T relocation;
+  relocation.r_offset = addr;
+  relocation.r_info = info;
+  relocation.r_addend = addend;
+  relocations->push_back(relocation);
+}
+
+template <typename T>
+bool CheckRelocation(uint32_t addr,
+                     uint32_t info,
+                     int32_t addend,
+                     const T& relocation) {
+  return relocation.r_offset == addr &&
+      relocation.r_info == info &&
+      relocation.r_addend == addend;
+}
+
+}  // namespace
+
+namespace relocation_packer {
+
+template <typename ELF>
+static void encode() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<typename ELF::Addr> packed;
+
+  RelocationDeltaCodec<ELF> codec;
+
+  codec.Encode(relocations, &packed);
+
+  ASSERT_EQ(0U, packed.size());
+
+  // Initial relocation.
+  AddRelocation(0xf00d0000, 11U, 10000, &relocations);
+
+  codec.Encode(relocations, &packed);
+
+  // size of reloc table, size of group, flags, 3 fields, zero
+  EXPECT_EQ(7U, packed.size());
+  // One pair present.
+  size_t ndx = 0;
+  EXPECT_EQ(1U, packed[ndx++]);
+  EXPECT_EQ(0xf00d0000, packed[ndx++]);
+  EXPECT_EQ(1U, packed[ndx++]); // group_size
+  EXPECT_EQ(8U, packed[ndx++]); // flags
+  // Delta from the neutral element is zero
+  EXPECT_EQ(0U, packed[ndx++]); // offset_delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+  EXPECT_EQ(10000U, packed[ndx++]); // addend_delta
+
+  // Add a second relocation, 4 byte offset delta, 12 byte addend delta.
+  // same info
+  AddRelocation(0xf00d0004, 11U, 10012, &relocations);
+
+  packed.clear();
+  codec.Encode(relocations, &packed);
+
+  ndx = 0;
+  EXPECT_EQ(8U, packed.size());
+
+  EXPECT_EQ(2U, packed[ndx++]); // relocs count
+  EXPECT_EQ(0xf00cfffc, packed[ndx++]); // initial offset
+  EXPECT_EQ(2U, packed[ndx++]); // group count
+  EXPECT_EQ(11U, packed[ndx++]); // flags
+  EXPECT_EQ(4U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+
+  EXPECT_EQ(10000U, packed[ndx++]); // addend delta
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // Add a third relocation, 4 byte offset delta, 12 byte addend delta.
+  // different info
+  AddRelocation(0xf00d0008, 41U, 10024, &relocations);
+
+  // Add three more relocations, 8 byte offset deltas, -24 byte addend deltas.
+  AddRelocation(0xf00d0010, 42U, 10000, &relocations);
+  AddRelocation(0xf00d0018, 42U, 9976, &relocations);
+  AddRelocation(0xf00d0020, 42U, 9952, &relocations);
+
+  AddRelocation(0xf00d2028, 1042U, 0, &relocations);
+  AddRelocation(0xf00d2030, 3442U, 0, &relocations);
+
+  packed.clear();
+  codec.Encode(relocations, &packed);
+
+  ndx = 0;
+  EXPECT_EQ(26U, packed.size());
+  // Total number of relocs
+  EXPECT_EQ(8U, packed[ndx++]);
+  EXPECT_EQ(0xf00cfffc, packed[ndx++]);
+  // 2 in first group
+  EXPECT_EQ(2U, packed[ndx++]);
+  EXPECT_EQ(11U, packed[ndx++]); //flags
+  EXPECT_EQ(4U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(11U, packed[ndx++]); // info
+
+  // Initial relocation.
+  EXPECT_EQ(10000U, packed[ndx++]); // addend delta
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // second group has only one reloc
+  EXPECT_EQ(1U, packed[ndx++]); // count
+  EXPECT_EQ(8U, packed[ndx++]); // flags
+
+  EXPECT_EQ(4U, packed[ndx++]); // offset delta
+  EXPECT_EQ(41U, packed[ndx++]); // info
+  EXPECT_EQ(12U, packed[ndx++]); // addend delta
+
+  // next - 3 relocs grouped by info
+  EXPECT_EQ(3U, packed[ndx++]); // count
+  EXPECT_EQ(11U, packed[ndx++]); // flags
+  EXPECT_EQ(8U, packed[ndx++]); // group offset delta
+  EXPECT_EQ(42U, packed[ndx++]); // info
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+  EXPECT_EQ(static_cast<typename ELF::Addr>(-24), packed[ndx++]);
+
+  // and last - 2 relocations without addend
+  EXPECT_EQ(2U, packed[ndx++]);
+  EXPECT_EQ(0U, packed[ndx++]); // flags
+  // offset_deltas and r_infos for next 2 relocations
+  EXPECT_EQ(0x2008U, packed[ndx++]); // offset delta
+  EXPECT_EQ(1042U, packed[ndx++]); // r_info
+  EXPECT_EQ(0x8U, packed[ndx++]); // offset delta
+  EXPECT_EQ(3442U, packed[ndx++]); // r_info
+
+  EXPECT_EQ(packed.size(), ndx);
+}
+
+TEST(Delta, Encode32) {
+  encode<ELF32_traits>();
+}
+
+TEST(Delta, Encode64) {
+  encode<ELF64_traits>();
+}
+
+template <typename ELF>
+static void decode() {
+  std::vector<typename ELF::Addr> packed;
+  std::vector<typename ELF::Rela> relocations;
+
+  RelocationDeltaCodec<ELF> codec;
+  codec.Decode(packed, &relocations);
+
+  EXPECT_EQ(0U, relocations.size());
+
+  // Six pairs.
+  packed.push_back(6U); // count
+  packed.push_back(0xc0ddfffc); // base offset
+  packed.push_back(3U); // group count
+  packed.push_back(11U); // flags
+  packed.push_back(4U); // offset delta
+  packed.push_back(11U); // info
+  // Initial relocation.
+  packed.push_back(10000U);
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  packed.push_back(12U); // addend
+  packed.push_back(12U); // addend
+
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  packed.push_back(1U); // group count
+  packed.push_back(9U); // flags
+  packed.push_back(11U); // info
+
+  packed.push_back(8U);
+  packed.push_back(static_cast<typename ELF::Addr>(-24));
+  // next group with 2 relocs
+  packed.push_back(2U); // group count
+  packed.push_back(11U); // flags
+  packed.push_back(8U); // offset
+  packed.push_back(42U); // info
+
+  packed.push_back(static_cast<typename ELF::Addr>(-24)); // addend
+  packed.push_back(static_cast<typename ELF::Addr>(-24)); // addend
+
+  relocations.clear();
+  codec.Decode(packed, &relocations);
+
+  EXPECT_EQ(6U, relocations.size());
+  // Initial relocation.
+  EXPECT_TRUE(CheckRelocation(0xc0de0000, 11U, 10000, relocations[0]));
+  // Two relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation(0xc0de0004, 11U, 10012, relocations[1]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0008, 11U, 10024, relocations[2]));
+  // Three relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation(0xc0de0010, 11U, 10000, relocations[3]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0018, 42U, 9976, relocations[4]));
+  EXPECT_TRUE(CheckRelocation(0xc0de0020, 42U, 9952, relocations[5]));
+}
+
+TEST(Delta, Decode32) {
+  decode<ELF32_traits>();
+}
+
+TEST(Delta, Decode64) {
+  decode<ELF64_traits>();
+}
+
+// TODO (dimitry): add more tests (fix by 19 January 2038 03:14:07 UTC)
+// TODO (dimtiry): 1. Incorrect packed array for decode
+// TODO (dimtiry): 2. Try to catch situation where it is likely to get series of groups with size 1
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_file.cc b/tools/relocation_packer/src/elf_file.cc
new file mode 100644
index 0000000..20b25ef
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file.cc
@@ -0,0 +1,882 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Implementation notes:
+//
+// We need to remove a piece from the ELF shared library.  However, we also
+// want to avoid fixing DWARF cfi data and relative relocation addresses.
+// So after packing we shift offets and starting address of the RX segment
+// while preserving code/data vaddrs location.
+// This requires some fixups for symtab/hash/gnu_hash dynamic section addresses.
+
+#include "elf_file.h"
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "debug.h"
+#include "elf_traits.h"
+#include "libelf.h"
+#include "packer.h"
+
+namespace relocation_packer {
+
+// Out-of-band dynamic tags used to indicate the offset and size of the
+// android packed relocations section.
+static constexpr int32_t DT_ANDROID_REL = DT_LOOS + 2;
+static constexpr int32_t DT_ANDROID_RELSZ = DT_LOOS + 3;
+
+static constexpr int32_t DT_ANDROID_RELA = DT_LOOS + 4;
+static constexpr int32_t DT_ANDROID_RELASZ = DT_LOOS + 5;
+
+static constexpr uint32_t SHT_ANDROID_REL = SHT_LOOS + 1;
+static constexpr uint32_t SHT_ANDROID_RELA = SHT_LOOS + 2;
+
+// Alignment to preserve, in bytes.  This must be at least as large as the
+// largest d_align and sh_addralign values found in the loaded file.
+// Out of caution for RELRO page alignment, we preserve to a complete target
+// page.  See http://www.airs.com/blog/archives/189.
+static constexpr size_t kPreserveAlignment = 4096;
+
+// Get section data.  Checks that the section has exactly one data entry,
+// so that the section size and the data size are the same.  True in
+// practice for all sections we resize when packing or unpacking.  Done
+// by ensuring that a call to elf_getdata(section, data) returns NULL as
+// the next data entry.
+static Elf_Data* GetSectionData(Elf_Scn* section) {
+  Elf_Data* data = elf_getdata(section, NULL);
+  CHECK(data && elf_getdata(section, data) == NULL);
+  return data;
+}
+
+// Rewrite section data.  Allocates new data and makes it the data element's
+// buffer.  Relies on program exit to free allocated data.
+static void RewriteSectionData(Elf_Scn* section,
+                               const void* section_data,
+                               size_t size) {
+  Elf_Data* data = GetSectionData(section);
+  CHECK(size == data->d_size);
+  uint8_t* area = new uint8_t[size];
+  memcpy(area, section_data, size);
+  data->d_buf = area;
+}
+
+// Verbose ELF header logging.
+template <typename Ehdr>
+static void VerboseLogElfHeader(const Ehdr* elf_header) {
+  VLOG(1) << "e_phoff = " << elf_header->e_phoff;
+  VLOG(1) << "e_shoff = " << elf_header->e_shoff;
+  VLOG(1) << "e_ehsize = " << elf_header->e_ehsize;
+  VLOG(1) << "e_phentsize = " << elf_header->e_phentsize;
+  VLOG(1) << "e_phnum = " << elf_header->e_phnum;
+  VLOG(1) << "e_shnum = " << elf_header->e_shnum;
+  VLOG(1) << "e_shstrndx = " << elf_header->e_shstrndx;
+}
+
+// Verbose ELF program header logging.
+template <typename Phdr>
+static void VerboseLogProgramHeader(size_t program_header_index,
+                             const Phdr* program_header) {
+  std::string type;
+  switch (program_header->p_type) {
+    case PT_NULL: type = "NULL"; break;
+    case PT_LOAD: type = "LOAD"; break;
+    case PT_DYNAMIC: type = "DYNAMIC"; break;
+    case PT_INTERP: type = "INTERP"; break;
+    case PT_PHDR: type = "PHDR"; break;
+    case PT_GNU_RELRO: type = "GNU_RELRO"; break;
+    case PT_GNU_STACK: type = "GNU_STACK"; break;
+    case PT_ARM_EXIDX: type = "EXIDX"; break;
+    default: type = "(OTHER)"; break;
+  }
+  VLOG(1) << "phdr[" << program_header_index << "] : " << type;
+  VLOG(1) << "  p_offset = " << program_header->p_offset;
+  VLOG(1) << "  p_vaddr = " << program_header->p_vaddr;
+  VLOG(1) << "  p_paddr = " << program_header->p_paddr;
+  VLOG(1) << "  p_filesz = " << program_header->p_filesz;
+  VLOG(1) << "  p_memsz = " << program_header->p_memsz;
+  VLOG(1) << "  p_flags = " << program_header->p_flags;
+  VLOG(1) << "  p_align = " << program_header->p_align;
+}
+
+// Verbose ELF section header logging.
+template <typename Shdr>
+static void VerboseLogSectionHeader(const std::string& section_name,
+                             const Shdr* section_header) {
+  VLOG(1) << "section " << section_name;
+  VLOG(1) << "  sh_addr = " << section_header->sh_addr;
+  VLOG(1) << "  sh_offset = " << section_header->sh_offset;
+  VLOG(1) << "  sh_size = " << section_header->sh_size;
+  VLOG(1) << "  sh_entsize = " << section_header->sh_entsize;
+  VLOG(1) << "  sh_addralign = " << section_header->sh_addralign;
+}
+
+// Verbose ELF section data logging.
+static void VerboseLogSectionData(const Elf_Data* data) {
+  VLOG(1) << "  data";
+  VLOG(1) << "    d_buf = " << data->d_buf;
+  VLOG(1) << "    d_off = " << data->d_off;
+  VLOG(1) << "    d_size = " << data->d_size;
+  VLOG(1) << "    d_align = " << data->d_align;
+}
+
+// Load the complete ELF file into a memory image in libelf, and identify
+// the .rel.dyn or .rela.dyn, .dynamic, and .android.rel.dyn or
+// .android.rela.dyn sections.  No-op if the ELF file has already been loaded.
+template <typename ELF>
+bool ElfFile<ELF>::Load() {
+  if (elf_)
+    return true;
+
+  Elf* elf = elf_begin(fd_, ELF_C_RDWR, NULL);
+  CHECK(elf);
+
+  if (elf_kind(elf) != ELF_K_ELF) {
+    LOG(ERROR) << "File not in ELF format";
+    return false;
+  }
+
+  auto elf_header = ELF::getehdr(elf);
+  if (!elf_header) {
+    LOG(ERROR) << "Failed to load ELF header: " << elf_errmsg(elf_errno());
+    return false;
+  }
+
+  if (elf_header->e_type != ET_DYN) {
+    LOG(ERROR) << "ELF file is not a shared object";
+    return false;
+  }
+
+  // Require that our endianness matches that of the target, and that both
+  // are little-endian.  Safe for all current build/target combinations.
+  const int endian = elf_header->e_ident[EI_DATA];
+  CHECK(endian == ELFDATA2LSB);
+  CHECK(__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__);
+
+  const int file_class = elf_header->e_ident[EI_CLASS];
+  VLOG(1) << "endian = " << endian << ", file class = " << file_class;
+  VerboseLogElfHeader(elf_header);
+
+  auto elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header != nullptr);
+
+  const typename ELF::Phdr* dynamic_program_header = NULL;
+  for (size_t i = 0; i < elf_header->e_phnum; ++i) {
+    auto program_header = &elf_program_header[i];
+    VerboseLogProgramHeader(i, program_header);
+
+    if (program_header->p_type == PT_DYNAMIC) {
+      CHECK(dynamic_program_header == NULL);
+      dynamic_program_header = program_header;
+    }
+  }
+  CHECK(dynamic_program_header != nullptr);
+
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+
+  // Notes of the dynamic relocations, packed relocations, and .dynamic
+  // sections.  Found while iterating sections, and later stored in class
+  // attributes.
+  Elf_Scn* found_relocations_section = nullptr;
+  Elf_Scn* found_dynamic_section = nullptr;
+
+  // Notes of relocation section types seen.  We require one or the other of
+  // these; both is unsupported.
+  bool has_rel_relocations = false;
+  bool has_rela_relocations = false;
+
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != nullptr) {
+    auto section_header = ELF::getshdr(section);
+    std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+    VerboseLogSectionHeader(name, section_header);
+
+    // Note relocation section types.
+    if (section_header->sh_type == SHT_REL || section_header->sh_type == SHT_ANDROID_REL) {
+      has_rel_relocations = true;
+    }
+    if (section_header->sh_type == SHT_RELA || section_header->sh_type == SHT_ANDROID_RELA) {
+      has_rela_relocations = true;
+    }
+
+    // Note special sections as we encounter them.
+    if ((name == ".rel.dyn" || name == ".rela.dyn") &&
+        section_header->sh_size > 0) {
+      found_relocations_section = section;
+    }
+
+    if (section_header->sh_offset == dynamic_program_header->p_offset) {
+      found_dynamic_section = section;
+    }
+
+    // Ensure we preserve alignment, repeated later for the data block(s).
+    CHECK(section_header->sh_addralign <= kPreserveAlignment);
+
+    Elf_Data* data = NULL;
+    while ((data = elf_getdata(section, data)) != NULL) {
+      CHECK(data->d_align <= kPreserveAlignment);
+      VerboseLogSectionData(data);
+    }
+  }
+
+  // Loading failed if we did not find the required special sections.
+  if (!found_relocations_section) {
+    LOG(ERROR) << "Missing or empty .rel.dyn or .rela.dyn section";
+    return false;
+  }
+  if (!found_dynamic_section) {
+    LOG(ERROR) << "Missing .dynamic section";
+    return false;
+  }
+
+  // Loading failed if we could not identify the relocations type.
+  if (!has_rel_relocations && !has_rela_relocations) {
+    LOG(ERROR) << "No relocations sections found";
+    return false;
+  }
+  if (has_rel_relocations && has_rela_relocations) {
+    LOG(ERROR) << "Multiple relocations sections with different types found, "
+               << "not currently supported";
+    return false;
+  }
+
+  elf_ = elf;
+  relocations_section_ = found_relocations_section;
+  dynamic_section_ = found_dynamic_section;
+  relocations_type_ = has_rel_relocations ? REL : RELA;
+  return true;
+}
+
+// Helper for ResizeSection().  Adjust the main ELF header for the hole.
+template <typename ELF>
+static void AdjustElfHeaderForHole(typename ELF::Ehdr* elf_header,
+                                   typename ELF::Off hole_start,
+                                   ssize_t hole_size) {
+  if (elf_header->e_phoff > hole_start) {
+    elf_header->e_phoff += hole_size;
+    VLOG(1) << "e_phoff adjusted to " << elf_header->e_phoff;
+  }
+  if (elf_header->e_shoff > hole_start) {
+    elf_header->e_shoff += hole_size;
+    VLOG(1) << "e_shoff adjusted to " << elf_header->e_shoff;
+  }
+}
+
+// Helper for ResizeSection().  Adjust all section headers for the hole.
+template <typename ELF>
+static void AdjustSectionHeadersForHole(Elf* elf,
+                                        typename ELF::Off hole_start,
+                                        ssize_t hole_size) {
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != NULL) {
+    auto section_header = ELF::getshdr(section);
+    std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+
+    if (section_header->sh_offset > hole_start) {
+      section_header->sh_offset += hole_size;
+      VLOG(1) << "section " << name
+              << " sh_offset adjusted to " << section_header->sh_offset;
+    } else {
+      section_header->sh_addr -= hole_size;
+      VLOG(1) << "section " << name
+              << " sh_addr adjusted to " << section_header->sh_addr;
+    }
+  }
+}
+
+// Helper for ResizeSection().  Adjust the offsets of any program headers
+// that have offsets currently beyond the hole start.
+template <typename ELF>
+static void AdjustProgramHeaderOffsets(typename ELF::Phdr* program_headers,
+                                       size_t count,
+                                       typename ELF::Off hole_start,
+                                       ssize_t hole_size) {
+  for (size_t i = 0; i < count; ++i) {
+    typename ELF::Phdr* program_header = &program_headers[i];
+
+    if (program_header->p_offset > hole_start) {
+      // The hole start is past this segment, so adjust offset.
+      program_header->p_offset += hole_size;
+      VLOG(1) << "phdr[" << i
+              << "] p_offset adjusted to "<< program_header->p_offset;
+    } else {
+      program_header->p_vaddr -= hole_size;
+      program_header->p_paddr -= hole_size;
+      VLOG(1) << "phdr[" << i
+              << "] p_vaddr adjusted to "<< program_header->p_vaddr
+              << "; p_paddr adjusted to "<< program_header->p_paddr;
+    }
+  }
+}
+
+// Helper for ResizeSection().  Find the first loadable segment in the
+// file.  We expect it to map from file offset zero.
+template <typename ELF>
+static typename ELF::Phdr* FindLoadSegmentForHole(typename ELF::Phdr* program_headers,
+                                                  size_t count,
+                                                  typename ELF::Off hole_start) {
+  for (size_t i = 0; i < count; ++i) {
+    typename ELF::Phdr* program_header = &program_headers[i];
+
+    if (program_header->p_type == PT_LOAD &&
+        program_header->p_offset <= hole_start &&
+        (program_header->p_offset + program_header->p_filesz) >= hole_start ) {
+      return program_header;
+    }
+  }
+  LOG(FATAL) << "Cannot locate a LOAD segment with hole_start=0x" << std::hex << hole_start;
+  NOTREACHED();
+
+  return nullptr;
+}
+
+// Helper for ResizeSection().  Rewrite program headers.
+template <typename ELF>
+static void RewriteProgramHeadersForHole(Elf* elf,
+                                         typename ELF::Off hole_start,
+                                         ssize_t hole_size) {
+  const typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  CHECK(elf_header);
+
+  typename ELF::Phdr* elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header);
+
+  const size_t program_header_count = elf_header->e_phnum;
+
+  // Locate the segment that we can overwrite to form the new LOAD entry,
+  // and the segment that we are going to split into two parts.
+  typename ELF::Phdr* target_load_header =
+      FindLoadSegmentForHole<ELF>(elf_program_header, program_header_count, hole_start);
+
+  VLOG(1) << "phdr[" << target_load_header - elf_program_header << "] adjust";
+  // Adjust PT_LOAD program header memsz and filesz
+  target_load_header->p_filesz += hole_size;
+  target_load_header->p_memsz += hole_size;
+
+  // Adjust the offsets and p_vaddrs
+  AdjustProgramHeaderOffsets<ELF>(elf_program_header,
+                                  program_header_count,
+                                  hole_start,
+                                  hole_size);
+}
+
+// Helper for ResizeSection().  Locate and return the dynamic section.
+template <typename ELF>
+static Elf_Scn* GetDynamicSection(Elf* elf) {
+  const typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  CHECK(elf_header);
+
+  const typename ELF::Phdr* elf_program_header = ELF::getphdr(elf);
+  CHECK(elf_program_header);
+
+  // Find the program header that describes the dynamic section.
+  const typename ELF::Phdr* dynamic_program_header = NULL;
+  for (size_t i = 0; i < elf_header->e_phnum; ++i) {
+    const typename ELF::Phdr* program_header = &elf_program_header[i];
+
+    if (program_header->p_type == PT_DYNAMIC) {
+      dynamic_program_header = program_header;
+    }
+  }
+  CHECK(dynamic_program_header);
+
+  // Now find the section with the same offset as this program header.
+  Elf_Scn* dynamic_section = NULL;
+  Elf_Scn* section = NULL;
+  while ((section = elf_nextscn(elf, section)) != NULL) {
+    typename ELF::Shdr* section_header = ELF::getshdr(section);
+
+    if (section_header->sh_offset == dynamic_program_header->p_offset) {
+      dynamic_section = section;
+    }
+  }
+  CHECK(dynamic_section != NULL);
+
+  return dynamic_section;
+}
+
+// Helper for ResizeSection().  Adjust the .dynamic section for the hole.
+template <typename ELF>
+void ElfFile<ELF>::AdjustDynamicSectionForHole(Elf_Scn* dynamic_section,
+                                               typename ELF::Off hole_start,
+                                               ssize_t hole_size,
+                                               relocations_type_t relocations_type) {
+  CHECK(relocations_type != NONE);
+  Elf_Data* data = GetSectionData(dynamic_section);
+
+  auto dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+
+  if (hole_size > 0) { // expanding
+    hole_start += hole_size;
+  }
+
+  for (size_t i = 0; i < dynamics.size(); ++i) {
+    typename ELF::Dyn* dynamic = &dynamics[i];
+    const typename ELF::Sword tag = dynamic->d_tag;
+
+    // Any tags that hold offsets are adjustment candidates.
+    const bool is_adjustable = (tag == DT_PLTGOT ||
+                                tag == DT_HASH ||
+                                tag == DT_GNU_HASH ||
+                                tag == DT_STRTAB ||
+                                tag == DT_SYMTAB ||
+                                tag == DT_RELA ||
+                                tag == DT_INIT ||
+                                tag == DT_FINI ||
+                                tag == DT_REL ||
+                                tag == DT_JMPREL ||
+                                tag == DT_INIT_ARRAY ||
+                                tag == DT_FINI_ARRAY ||
+                                tag == DT_ANDROID_REL||
+                                tag == DT_ANDROID_RELA);
+
+    if (is_adjustable && dynamic->d_un.d_ptr <= hole_start) {
+      dynamic->d_un.d_ptr -= hole_size;
+      VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
+              << " d_ptr adjusted to " << dynamic->d_un.d_ptr;
+    }
+
+    // DT_RELSZ or DT_RELASZ indicate the overall size of relocations.
+    // Only one will be present.  Adjust by hole size.
+    if (tag == DT_RELSZ || tag == DT_RELASZ || tag == DT_ANDROID_RELSZ || tag == DT_ANDROID_RELASZ) {
+      dynamic->d_un.d_val += hole_size;
+      VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
+              << " d_val adjusted to " << dynamic->d_un.d_val;
+    }
+
+    // Ignore DT_RELCOUNT and DT_RELACOUNT: (1) nobody uses them and
+    // technically (2) the relative relocation count is not changed.
+
+    // DT_RELENT and DT_RELAENT don't change, ignore them as well.
+  }
+
+  void* section_data = &dynamics[0];
+  size_t bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section, section_data, bytes);
+}
+
+// Resize a section.  If the new size is larger than the current size, open
+// up a hole by increasing file offsets that come after the hole.  If smaller
+// than the current size, remove the hole by decreasing those offsets.
+template <typename ELF>
+void ElfFile<ELF>::ResizeSection(Elf* elf, Elf_Scn* section, size_t new_size,
+                                 typename ELF::Word new_sh_type,
+                                 relocations_type_t relocations_type) {
+
+  size_t string_index;
+  elf_getshdrstrndx(elf, &string_index);
+  auto section_header = ELF::getshdr(section);
+  std::string name = elf_strptr(elf, string_index, section_header->sh_name);
+
+  if (section_header->sh_size == new_size) {
+    return;
+  }
+
+  // Require that the section size and the data size are the same.  True
+  // in practice for all sections we resize when packing or unpacking.
+  Elf_Data* data = GetSectionData(section);
+  CHECK(data->d_off == 0 && data->d_size == section_header->sh_size);
+
+  // Require that the section is not zero-length (that is, has allocated
+  // data that we can validly expand).
+  CHECK(data->d_size && data->d_buf);
+
+  const auto hole_start = section_header->sh_offset;
+  const ssize_t hole_size = new_size - data->d_size;
+
+  VLOG_IF(1, (hole_size > 0)) << "expand section (" << name << ") size: " <<
+      data->d_size << " -> " << (data->d_size + hole_size);
+  VLOG_IF(1, (hole_size < 0)) << "shrink section (" << name << ") size: " <<
+      data->d_size << " -> " << (data->d_size + hole_size);
+
+  // libelf overrides sh_entsize for known sh_types, so it does not matter what we set
+  // for SHT_REL/SHT_RELA.
+  typename ELF::Xword new_entsize =
+      (new_sh_type == SHT_ANDROID_REL || new_sh_type == SHT_ANDROID_RELA) ? 1 : 0;
+
+  VLOG(1) << "Update section (" << name << ") entry size: " <<
+      section_header->sh_entsize << " -> " << new_entsize;
+
+  // Resize the data and the section header.
+  data->d_size += hole_size;
+  section_header->sh_size += hole_size;
+  section_header->sh_entsize = new_entsize;
+  section_header->sh_type = new_sh_type;
+
+  // Add the hole size to all offsets in the ELF file that are after the
+  // start of the hole.  If the hole size is positive we are expanding the
+  // section to create a new hole; if negative, we are closing up a hole.
+
+  // Start with the main ELF header.
+  typename ELF::Ehdr* elf_header = ELF::getehdr(elf);
+  AdjustElfHeaderForHole<ELF>(elf_header, hole_start, hole_size);
+
+  // Adjust all section headers.
+  AdjustSectionHeadersForHole<ELF>(elf, hole_start, hole_size);
+
+  // Rewrite the program headers to either split or coalesce segments,
+  // and adjust dynamic entries to match.
+  RewriteProgramHeadersForHole<ELF>(elf, hole_start, hole_size);
+
+  Elf_Scn* dynamic_section = GetDynamicSection<ELF>(elf);
+  AdjustDynamicSectionForHole(dynamic_section, hole_start, hole_size, relocations_type);
+}
+
+// Find the first slot in a dynamics array with the given tag.  The array
+// always ends with a free (unused) element, and which we exclude from the
+// search.  Returns dynamics->size() if not found.
+template <typename ELF>
+static size_t FindDynamicEntry(typename ELF::Sword tag,
+                               std::vector<typename ELF::Dyn>* dynamics) {
+  // Loop until the penultimate entry.  We exclude the end sentinel.
+  for (size_t i = 0; i < dynamics->size() - 1; ++i) {
+    if (dynamics->at(i).d_tag == tag) {
+      return i;
+    }
+  }
+
+  // The tag was not found.
+  return dynamics->size();
+}
+
+// Replace dynamic entry.
+template <typename ELF>
+static void ReplaceDynamicEntry(typename ELF::Sword tag,
+                                const typename ELF::Dyn& dyn,
+                                std::vector<typename ELF::Dyn>* dynamics) {
+  const size_t slot = FindDynamicEntry<ELF>(tag, dynamics);
+  if (slot == dynamics->size()) {
+    LOG(FATAL) << "Dynamic slot is not found for tag=" << tag;
+  }
+
+  // Replace this entry with the one supplied.
+  dynamics->at(slot) = dyn;
+  VLOG(1) << "dynamic[" << slot << "] overwritten with " << dyn.d_tag;
+}
+
+// Remove relative entries from dynamic relocations and write as packed
+// data into android packed relocations.
+template <typename ELF>
+bool ElfFile<ELF>::PackRelocations() {
+  // Load the ELF file into libelf.
+  if (!Load()) {
+    LOG(ERROR) << "Failed to load as ELF";
+    return false;
+  }
+
+  // Retrieve the current dynamic relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+  // we always pack rela, because packed format is pretty much the same
+  std::vector<typename ELF::Rela> relocations;
+
+  if (relocations_type_ == REL) {
+    // Convert data to a vector of relocations.
+    const typename ELF::Rel* relocations_base = reinterpret_cast<typename ELF::Rel*>(data->d_buf);
+    ConvertRelArrayToRelaVector(relocations_base,
+        data->d_size / sizeof(typename ELF::Rel), &relocations);
+    LOG(INFO) << "Relocations   : REL";
+  } else if (relocations_type_ == RELA) {
+    // Convert data to a vector of relocations with addends.
+    const typename ELF::Rela* relocations_base = reinterpret_cast<typename ELF::Rela*>(data->d_buf);
+    relocations = std::vector<typename ELF::Rela>(
+        relocations_base,
+        relocations_base + data->d_size / sizeof(relocations[0]));
+
+    LOG(INFO) << "Relocations   : RELA";
+  } else {
+    NOTREACHED();
+  }
+
+  return PackTypedRelocations(&relocations);
+}
+
+// Helper for PackRelocations().  Rel type is one of ELF::Rel or ELF::Rela.
+template <typename ELF>
+bool ElfFile<ELF>::PackTypedRelocations(std::vector<typename ELF::Rela>* relocations) {
+  typedef typename ELF::Rela Rela;
+
+  // If no relocations then we have nothing packable.  Perhaps
+  // the shared object has already been packed?
+  if (relocations->empty()) {
+    LOG(ERROR) << "No relocations found (already packed?)";
+    return false;
+  }
+
+  const size_t rel_size =
+      relocations_type_ == RELA ? sizeof(typename ELF::Rela) : sizeof(typename ELF::Rel);
+  const size_t initial_bytes = relocations->size() * rel_size;
+
+  LOG(INFO) << "Unpacked                   : " << initial_bytes << " bytes";
+  std::vector<uint8_t> packed;
+  RelocationPacker<ELF> packer;
+
+  // Pack relocations: dry run to estimate memory savings.
+  packer.PackRelocations(*relocations, &packed);
+  const size_t packed_bytes_estimate = packed.size() * sizeof(packed[0]);
+  LOG(INFO) << "Packed         (no padding): " << packed_bytes_estimate << " bytes";
+
+  if (packed.empty()) {
+    LOG(INFO) << "Too few relocations to pack";
+    return false;
+  }
+
+  // Pre-calculate the size of the hole we will close up when we rewrite
+  // dynamic relocations.  We have to adjust relocation addresses to
+  // account for this.
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+  ssize_t hole_size = initial_bytes - packed_bytes_estimate;
+
+  // hole_size needs to be page_aligned.
+  hole_size -= hole_size % kPreserveAlignment;
+
+  LOG(INFO) << "Compaction                 : " << hole_size << " bytes";
+
+  // Adjusting for alignment may have removed any packing benefit.
+  if (hole_size == 0) {
+    LOG(INFO) << "Too few relocations to pack after alignment";
+    return false;
+  }
+
+  if (hole_size <= 0) {
+    LOG(INFO) << "Packing relocations saves no space";
+    return false;
+  }
+
+  size_t data_padding_bytes = is_padding_relocations_ ?
+      initial_bytes - packed_bytes_estimate :
+      initial_bytes - hole_size - packed_bytes_estimate;
+
+  // pad data
+  std::vector<uint8_t> padding(data_padding_bytes, 0);
+  packed.insert(packed.end(), padding.begin(), padding.end());
+
+  const void* packed_data = &packed[0];
+
+  // Run a loopback self-test as a check that packing is lossless.
+  std::vector<Rela> unpacked;
+  packer.UnpackRelocations(packed, &unpacked);
+  CHECK(unpacked.size() == relocations->size());
+  CHECK(!memcmp(&unpacked[0],
+                &relocations->at(0),
+                unpacked.size() * sizeof(unpacked[0])));
+
+  // Rewrite the current dynamic relocations section with packed one then shrink it to size.
+  const size_t bytes = packed.size() * sizeof(packed[0]);
+  ResizeSection(elf_, relocations_section_, bytes,
+      relocations_type_ == REL ? SHT_ANDROID_REL : SHT_ANDROID_RELA, relocations_type_);
+  RewriteSectionData(relocations_section_, packed_data, bytes);
+
+  // TODO (dimitry): fix string table and replace .rel.dyn/plt with .android.rel.dyn/plt
+
+  // Rewrite .dynamic and rename relocation tags describing the packed android
+  // relocations.
+  Elf_Data* data = GetSectionData(dynamic_section_);
+  const typename ELF::Dyn* dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+  section_header = ELF::getshdr(relocations_section_);
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_ANDROID_REL : DT_ANDROID_RELA;
+    dyn.d_un.d_ptr = section_header->sh_addr;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_REL : DT_RELA, dyn, &dynamics);
+  }
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_ANDROID_RELSZ : DT_ANDROID_RELASZ;
+    dyn.d_un.d_val = section_header->sh_size;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_RELSZ : DT_RELASZ, dyn, &dynamics);
+  }
+
+  const void* dynamics_data = &dynamics[0];
+  const size_t dynamics_bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section_, dynamics_data, dynamics_bytes);
+
+  Flush();
+  return true;
+}
+
+// Find packed relative relocations in the packed android relocations
+// section, unpack them, and rewrite the dynamic relocations section to
+// contain unpacked data.
+template <typename ELF>
+bool ElfFile<ELF>::UnpackRelocations() {
+  // Load the ELF file into libelf.
+  if (!Load()) {
+    LOG(ERROR) << "Failed to load as ELF";
+    return false;
+  }
+
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+  // Retrieve the current packed android relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+
+  // Convert data to a vector of bytes.
+  const uint8_t* packed_base = reinterpret_cast<uint8_t*>(data->d_buf);
+  std::vector<uint8_t> packed(
+      packed_base,
+      packed_base + data->d_size / sizeof(packed[0]));
+
+  if ((section_header->sh_type == SHT_ANDROID_RELA || section_header->sh_type == SHT_ANDROID_REL) &&
+      packed.size() > 3 &&
+      packed[0] == 'A' &&
+      packed[1] == 'P' &&
+      (packed[2] == 'U' || packed[2] == 'S') &&
+      packed[3] == '2') {
+    LOG(INFO) << "Relocations   : " << (relocations_type_ == REL ? "REL" : "RELA");
+  } else {
+    LOG(ERROR) << "Packed relocations not found (not packed?)";
+    return false;
+  }
+
+  return UnpackTypedRelocations(packed);
+}
+
+// Helper for UnpackRelocations().  Rel type is one of ELF::Rel or ELF::Rela.
+template <typename ELF>
+bool ElfFile<ELF>::UnpackTypedRelocations(const std::vector<uint8_t>& packed) {
+  // Unpack the data to re-materialize the relative relocations.
+  const size_t packed_bytes = packed.size() * sizeof(packed[0]);
+  LOG(INFO) << "Packed           : " << packed_bytes << " bytes";
+  std::vector<typename ELF::Rela> unpacked_relocations;
+  RelocationPacker<ELF> packer;
+  packer.UnpackRelocations(packed, &unpacked_relocations);
+
+  const size_t relocation_entry_size =
+      relocations_type_ == REL ? sizeof(typename ELF::Rel) : sizeof(typename ELF::Rela);
+  const size_t unpacked_bytes = unpacked_relocations.size() * relocation_entry_size;
+  LOG(INFO) << "Unpacked         : " << unpacked_bytes << " bytes";
+
+  // Retrieve the current dynamic relocations section data.
+  Elf_Data* data = GetSectionData(relocations_section_);
+
+  LOG(INFO) << "Relocations      : " << unpacked_relocations.size() << " entries";
+
+  // If we found the same number of null relocation entries in the dynamic
+  // relocations section as we hold as unpacked relative relocations, then
+  // this is a padded file.
+
+  const bool is_padded = packed_bytes == unpacked_bytes;
+
+  // Unless padded, pre-apply relative relocations to account for the
+  // hole, and pre-adjust all relocation offsets accordingly.
+  typename ELF::Shdr* section_header = ELF::getshdr(relocations_section_);
+
+  if (!is_padded) {
+    LOG(INFO) << "Expansion     : " << unpacked_bytes - packed_bytes << " bytes";
+  }
+
+  // Rewrite the current dynamic relocations section with unpacked version of
+  // relocations.
+  const void* section_data = nullptr;
+  std::vector<typename ELF::Rel> unpacked_rel_relocations;
+  if (relocations_type_ == RELA) {
+    section_data = &unpacked_relocations[0];
+  } else if (relocations_type_ == REL) {
+    ConvertRelaVectorToRelVector(unpacked_relocations, &unpacked_rel_relocations);
+    section_data = &unpacked_rel_relocations[0];
+  } else {
+    NOTREACHED();
+  }
+
+  ResizeSection(elf_, relocations_section_, unpacked_bytes,
+      relocations_type_ == REL ? SHT_REL : SHT_RELA, relocations_type_);
+  RewriteSectionData(relocations_section_, section_data, unpacked_bytes);
+
+  // Rewrite .dynamic to remove two tags describing packed android relocations.
+  data = GetSectionData(dynamic_section_);
+  const typename ELF::Dyn* dynamic_base = reinterpret_cast<typename ELF::Dyn*>(data->d_buf);
+  std::vector<typename ELF::Dyn> dynamics(
+      dynamic_base,
+      dynamic_base + data->d_size / sizeof(dynamics[0]));
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_REL : DT_RELA;
+    dyn.d_un.d_ptr = section_header->sh_addr;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_ANDROID_REL : DT_ANDROID_RELA,
+        dyn, &dynamics);
+  }
+
+  {
+    typename ELF::Dyn dyn;
+    dyn.d_tag = relocations_type_ == REL ? DT_RELSZ : DT_RELASZ;
+    dyn.d_un.d_val = section_header->sh_size;
+    ReplaceDynamicEntry<ELF>(relocations_type_ == REL ? DT_ANDROID_RELSZ : DT_ANDROID_RELASZ,
+        dyn, &dynamics);
+  }
+
+  const void* dynamics_data = &dynamics[0];
+  const size_t dynamics_bytes = dynamics.size() * sizeof(dynamics[0]);
+  RewriteSectionData(dynamic_section_, dynamics_data, dynamics_bytes);
+
+  Flush();
+  return true;
+}
+
+// Flush rewritten shared object file data.
+template <typename ELF>
+void ElfFile<ELF>::Flush() {
+  // Flag all ELF data held in memory as needing to be written back to the
+  // file, and tell libelf that we have controlled the file layout.
+  elf_flagelf(elf_, ELF_C_SET, ELF_F_DIRTY);
+  elf_flagelf(elf_, ELF_C_SET, ELF_F_LAYOUT);
+
+  // Write ELF data back to disk.
+  const off_t file_bytes = elf_update(elf_, ELF_C_WRITE);
+  if (file_bytes == -1) {
+    LOG(ERROR) << "elf_update failed: " << elf_errmsg(elf_errno());
+  }
+
+  CHECK(file_bytes > 0);
+  VLOG(1) << "elf_update returned: " << file_bytes;
+
+  // Clean up libelf, and truncate the output file to the number of bytes
+  // written by elf_update().
+  elf_end(elf_);
+  elf_ = NULL;
+  const int truncate = ftruncate(fd_, file_bytes);
+  CHECK(truncate == 0);
+}
+
+template <typename ELF>
+void ElfFile<ELF>::ConvertRelArrayToRelaVector(const typename ELF::Rel* rel_array,
+                                               size_t rel_array_size,
+                                               std::vector<typename ELF::Rela>* rela_vector) {
+  for (size_t i = 0; i<rel_array_size; ++i) {
+    typename ELF::Rela rela;
+    rela.r_offset = rel_array[i].r_offset;
+    rela.r_info = rel_array[i].r_info;
+    rela.r_addend = 0;
+    rela_vector->push_back(rela);
+  }
+}
+
+template <typename ELF>
+void ElfFile<ELF>::ConvertRelaVectorToRelVector(const std::vector<typename ELF::Rela>& rela_vector,
+                                                std::vector<typename ELF::Rel>* rel_vector) {
+  for (auto rela : rela_vector) {
+    typename ELF::Rel rel;
+    rel.r_offset = rela.r_offset;
+    rel.r_info = rela.r_info;
+    CHECK(rela.r_addend == 0);
+    rel_vector->push_back(rel);
+  }
+}
+
+template class ElfFile<ELF32_traits>;
+template class ElfFile<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_file.h b/tools/relocation_packer/src/elf_file.h
new file mode 100644
index 0000000..a749d50
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file.h
@@ -0,0 +1,118 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// ELF shared object file updates handler.
+//
+// Provides functions to pack relocations in the .rel.dyn or .rela.dyn
+// sections, and unpack to return the file to its pre-packed state.
+//
+// SetPadding() causes PackRelocations() to pad .rel.dyn or .rela.dyn with
+// NONE-type entries rather than cutting a hole out of the shared object
+// file.  This keeps all load addresses and offsets constant, and enables
+// easier debugging and testing.
+//
+// A packed shared object file is shorter than its non-packed original.
+// Unpacking a packed file restores the file to its non-packed state.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
+#define TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
+
+#include <string.h>
+#include <vector>
+
+#include "elf.h"
+#include "libelf.h"
+#include "packer.h"
+
+namespace relocation_packer {
+
+// An ElfFile reads shared objects, and shuttles relative relocations
+// between .rel.dyn or .rela.dyn and .android.rel.dyn or .android.rela.dyn
+// sections.
+template <typename ELF>
+class ElfFile {
+ public:
+  explicit ElfFile(int fd)
+      : fd_(fd), is_padding_relocations_(false), elf_(NULL),
+        relocations_section_(NULL), dynamic_section_(NULL),
+        relocations_type_(NONE) {}
+  ~ElfFile() {}
+
+  // Set padding mode.  When padding, PackRelocations() will not shrink
+  // the .rel.dyn or .rela.dyn section, but instead replace relative with
+  // NONE-type entries.
+  // |flag| is true to pad .rel.dyn or .rela.dyn, false to shrink it.
+  inline void SetPadding(bool flag) { is_padding_relocations_ = flag; }
+
+  // Transfer relative relocations from .rel.dyn or .rela.dyn to a packed
+  // representation in .android.rel.dyn or .android.rela.dyn.  Returns true
+  // on success.
+  bool PackRelocations();
+
+  // Transfer relative relocations from a packed representation in
+  // .android.rel.dyn or .android.rela.dyn to .rel.dyn or .rela.dyn.  Returns
+  // true on success.
+  bool UnpackRelocations();
+
+ private:
+  enum relocations_type_t {
+    NONE = 0, REL, RELA
+  };
+
+  // Load a new ElfFile from a filedescriptor.  If flushing, the file must
+  // be open for read/write.  Returns true on successful ELF file load.
+  // |fd| is an open file descriptor for the shared object.
+  bool Load();
+
+  // Templated packer, helper for PackRelocations().  Rel type is one of
+  // ELF::Rel or ELF::Rela.
+  bool PackTypedRelocations(std::vector<typename ELF::Rela>* relocations);
+
+  // Templated unpacker, helper for UnpackRelocations().  Rel type is one of
+  // ELF::Rel or ELF::Rela.
+  bool UnpackTypedRelocations(const std::vector<uint8_t>& packed);
+
+  // Write ELF file changes.
+  void Flush();
+
+  void AdjustRelativeRelocationTargets(typename ELF::Off hole_start,
+                                       ssize_t hole_size,
+                                       std::vector<typename ELF::Rela>* relocations);
+
+  static void ResizeSection(Elf* elf, Elf_Scn* section, size_t new_size,
+                            typename ELF::Word new_sh_type, relocations_type_t relocations_type);
+
+  static void AdjustDynamicSectionForHole(Elf_Scn* dynamic_section,
+                                          typename ELF::Off hole_start,
+                                          ssize_t hole_size,
+                                          relocations_type_t relocations_type);
+
+  static void ConvertRelArrayToRelaVector(const typename ELF::Rel* rel_array, size_t rel_array_size,
+                                          std::vector<typename ELF::Rela>* rela_vector);
+
+  static void ConvertRelaVectorToRelVector(const std::vector<typename ELF::Rela>& rela_vector,
+                                           std::vector<typename ELF::Rel>* rel_vector);
+
+
+  // File descriptor opened on the shared object.
+  int fd_;
+
+  // If set, pad rather than shrink .rel.dyn or .rela.dyn.  Primarily for
+  // debugging, allows packing to be checked without affecting load addresses.
+  bool is_padding_relocations_;
+
+  // Libelf handle, assigned by Load().
+  Elf* elf_;
+
+  // Sections that we manipulate, assigned by Load().
+  Elf_Scn* relocations_section_;
+  Elf_Scn* dynamic_section_;
+
+  // Relocation type found, assigned by Load().
+  relocations_type_t relocations_type_;
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_
diff --git a/tools/relocation_packer/src/elf_file_unittest.cc b/tools/relocation_packer/src/elf_file_unittest.cc
new file mode 100644
index 0000000..434f101
--- /dev/null
+++ b/tools/relocation_packer/src/elf_file_unittest.cc
@@ -0,0 +1,188 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "elf_file.h"
+
+#include <limits.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+#include "debug.h"
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+void GetDataFilePath(const char* name, std::string* path) {
+  std::string data_dir;
+
+  const char* bindir = getenv("bindir");
+  if (bindir) {
+    data_dir = std::string(bindir);
+  } else {
+    char path[PATH_MAX];
+    memset(path, 0, sizeof(path));
+    ASSERT_NE(-1, readlink("/proc/self/exe", path, sizeof(path) - 1));
+
+    data_dir = std::string(path);
+    size_t pos = data_dir.rfind('/');
+    ASSERT_NE(std::string::npos, pos);
+
+    data_dir.erase(pos);
+  }
+
+  *path = data_dir + "/" + name;
+}
+
+void OpenRelocsTestFile(const char* name, FILE** stream) {
+  std::string path;
+  GetDataFilePath(name, &path);
+
+  FILE* testfile = fopen(path.c_str(), "rb");
+  ASSERT_FALSE(testfile == NULL) << "Error opening '" << path << "'";
+
+  FILE* temporary = tmpfile();
+  ASSERT_FALSE(temporary == NULL);
+
+  static const size_t buffer_size = 4096;
+  unsigned char buffer[buffer_size];
+
+  size_t bytes;
+  do {
+    bytes = fread(buffer, 1, sizeof(buffer), testfile);
+    ASSERT_EQ(bytes, fwrite(buffer, 1, bytes, temporary));
+  } while (bytes > 0);
+
+  ASSERT_EQ(0, fclose(testfile));
+  ASSERT_EQ(0, fseek(temporary, 0, SEEK_SET));
+  ASSERT_EQ(0, lseek(fileno(temporary), 0, SEEK_SET));
+
+  *stream = temporary;
+}
+
+void OpenRelocsTestFiles(const std::string& arch, FILE** relocs_so, FILE** packed_relocs_so) {
+  const std::string base = std::string("elf_file_unittest_relocs_") + arch;
+  const std::string relocs = base + ".so";
+  const std::string packed_relocs = base + "_packed.so";
+
+  OpenRelocsTestFile(relocs.c_str(), relocs_so);
+  OpenRelocsTestFile(packed_relocs.c_str(), packed_relocs_so);
+}
+
+void CloseRelocsTestFile(FILE* temporary) {
+  fclose(temporary);
+}
+
+void CloseRelocsTestFiles(FILE* relocs_so, FILE* packed_relocs_so) {
+  CloseRelocsTestFile(relocs_so);
+  CloseRelocsTestFile(packed_relocs_so);
+}
+
+void CheckFileContentsEqual(FILE* first, FILE* second) {
+  ASSERT_EQ(0, fseek(first, 0, SEEK_SET));
+  ASSERT_EQ(0, fseek(second, 0, SEEK_SET));
+
+  static const size_t buffer_size = 4096;
+  unsigned char first_buffer[buffer_size];
+  unsigned char second_buffer[buffer_size];
+
+  do {
+    size_t first_read = fread(first_buffer, 1, sizeof(first_buffer), first);
+    size_t second_read = fread(second_buffer, 1, sizeof(second_buffer), second);
+
+    EXPECT_EQ(first_read, second_read);
+    EXPECT_EQ(0, memcmp(first_buffer, second_buffer, first_read));
+  } while (!feof(first) && !feof(second));
+
+  EXPECT_TRUE(feof(first) && feof(second));
+}
+
+template <typename ELF>
+static void ProcessUnpack(FILE* relocs_so, FILE* packed_relocs_so) {
+  relocation_packer::ElfFile<ELF> elf_file(fileno(packed_relocs_so));
+
+  // Ensure packing fails (already packed).
+  EXPECT_FALSE(elf_file.PackRelocations());
+
+  // Unpack golden relocations, and check files are now identical.
+  EXPECT_TRUE(elf_file.UnpackRelocations());
+  CheckFileContentsEqual(packed_relocs_so, relocs_so);
+
+  CloseRelocsTestFiles(relocs_so, packed_relocs_so);
+}
+
+static void RunUnpackRelocationsTestFor(const std::string& arch) {
+  ASSERT_NE(static_cast<uint32_t>(EV_NONE), elf_version(EV_CURRENT));
+
+  FILE* relocs_so = NULL;
+  FILE* packed_relocs_so = NULL;
+  OpenRelocsTestFiles(arch, &relocs_so, &packed_relocs_so);
+
+  if (relocs_so != NULL && packed_relocs_so != NULL) {
+    // lets detect elf class
+    ASSERT_EQ(0, fseek(relocs_so, EI_CLASS, SEEK_SET))
+        << "Invalid file length: " << strerror(errno);
+    uint8_t elf_class = 0;
+    ASSERT_EQ(1U, fread(&elf_class, 1, 1, relocs_so));
+    ASSERT_EQ(0, fseek(relocs_so, 0, SEEK_SET));
+    if (elf_class == ELFCLASS32) {
+      ProcessUnpack<ELF32_traits>(relocs_so, packed_relocs_so);
+    } else {
+      ProcessUnpack<ELF64_traits>(relocs_so, packed_relocs_so);
+    }
+  }
+}
+
+template <typename ELF>
+static void ProcessPack(FILE* relocs_so, FILE* packed_relocs_so) {
+  relocation_packer::ElfFile<ELF> elf_file(fileno(relocs_so));
+
+  // Ensure unpacking fails (not packed).
+  EXPECT_FALSE(elf_file.UnpackRelocations());
+
+  // Pack relocations, and check files are now identical.
+  EXPECT_TRUE(elf_file.PackRelocations());
+  CheckFileContentsEqual(relocs_so, packed_relocs_so);
+
+  CloseRelocsTestFiles(relocs_so, packed_relocs_so);
+}
+
+static void RunPackRelocationsTestFor(const std::string& arch) {
+  ASSERT_NE(static_cast<uint32_t>(EV_NONE), elf_version(EV_CURRENT));
+
+  FILE* relocs_so = NULL;
+  FILE* packed_relocs_so = NULL;
+  OpenRelocsTestFiles(arch, &relocs_so, &packed_relocs_so);
+
+  if (relocs_so != NULL && packed_relocs_so != NULL) {
+    // lets detect elf class
+    ASSERT_EQ(0, fseek(packed_relocs_so, EI_CLASS, SEEK_SET))
+        << "Invalid file length: " << strerror(errno);
+    uint8_t elf_class = 0;
+    ASSERT_EQ(1U, fread(&elf_class, 1, 1, packed_relocs_so));
+    fseek(packed_relocs_so, 0, SEEK_SET);
+    if (elf_class == ELFCLASS32) {
+      ProcessPack<ELF32_traits>(relocs_so, packed_relocs_so);
+    } else {
+      ProcessPack<ELF64_traits>(relocs_so, packed_relocs_so);
+    }
+  }
+}
+
+}  // namespace
+
+namespace relocation_packer {
+
+TEST(ElfFile, PackRelocations) {
+  RunPackRelocationsTestFor("arm32");
+  RunPackRelocationsTestFor("arm64");
+}
+
+TEST(ElfFile, UnpackRelocations) {
+  RunUnpackRelocationsTestFor("arm32");
+  RunUnpackRelocationsTestFor("arm64");
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/elf_traits.h b/tools/relocation_packer/src/elf_traits.h
new file mode 100644
index 0000000..41b06c8
--- /dev/null
+++ b/tools/relocation_packer/src/elf_traits.h
@@ -0,0 +1,64 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Target-specific ELF type traits.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
+#define TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
+
+#include "elf.h"
+#include "libelf.h"
+
+// ELF is a traits structure used to provide convenient aliases for
+// 32/64 bit Elf types and functions, depending on the target file.
+
+struct ELF32_traits {
+  typedef Elf32_Addr Addr;
+  typedef Elf32_Dyn Dyn;
+  typedef Elf32_Ehdr Ehdr;
+  typedef Elf32_Off Off;
+  typedef Elf32_Phdr Phdr;
+  typedef Elf32_Rel Rel;
+  typedef Elf32_Rela Rela;
+  typedef Elf32_Shdr Shdr;
+  typedef Elf32_Sword Sword;
+  typedef Elf32_Sxword Sxword;
+  typedef Elf32_Sym Sym;
+  typedef Elf32_Word Word;
+  typedef Elf32_Xword Xword;
+  typedef Elf32_Half Half;
+
+  static inline Ehdr* getehdr(Elf* elf) { return elf32_getehdr(elf); }
+  static inline Phdr* getphdr(Elf* elf) { return elf32_getphdr(elf); }
+  static inline Shdr* getshdr(Elf_Scn* scn) { return elf32_getshdr(scn); }
+  static inline Word elf_r_type(Word info) { return ELF32_R_TYPE(info); }
+  static inline int elf_st_type(uint8_t info) { return ELF32_ST_TYPE(info); }
+  static inline Word elf_r_sym(Word info) { return ELF32_R_SYM(info); }
+};
+
+struct ELF64_traits {
+  typedef Elf64_Addr Addr;
+  typedef Elf64_Dyn Dyn;
+  typedef Elf64_Ehdr Ehdr;
+  typedef Elf64_Off Off;
+  typedef Elf64_Phdr Phdr;
+  typedef Elf64_Rel Rel;
+  typedef Elf64_Rela Rela;
+  typedef Elf64_Shdr Shdr;
+  typedef Elf64_Sword Sword;
+  typedef Elf64_Sxword Sxword;
+  typedef Elf64_Sym Sym;
+  typedef Elf64_Word Word;
+  typedef Elf64_Xword Xword;
+  typedef Elf64_Half Half;
+
+  static inline Ehdr* getehdr(Elf* elf) { return elf64_getehdr(elf); }
+  static inline Phdr* getphdr(Elf* elf) { return elf64_getphdr(elf); }
+  static inline Shdr* getshdr(Elf_Scn* scn) { return elf64_getshdr(scn); }
+  static inline Xword elf_r_type(Xword info) { return ELF64_R_TYPE(info); }
+  static inline int elf_st_type(uint8_t info) { return ELF64_ST_TYPE(info); }
+  static inline Word elf_r_sym(Xword info) { return ELF64_R_SYM(info); }
+};
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_ELF_TRAITS_H_
diff --git a/tools/relocation_packer/src/leb128.cc b/tools/relocation_packer/src/leb128.cc
new file mode 100644
index 0000000..101c557
--- /dev/null
+++ b/tools/relocation_packer/src/leb128.cc
@@ -0,0 +1,87 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "leb128.h"
+
+#include <stdint.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// Empty constructor and destructor to silence chromium-style.
+template <typename uint_t>
+Leb128Encoder<uint_t>::Leb128Encoder() { }
+
+template <typename uint_t>
+Leb128Encoder<uint_t>::~Leb128Encoder() { }
+
+// Add a single value to the encoding.  Values are encoded with variable
+// length.  The least significant 7 bits of each byte hold 7 bits of data,
+// and the most significant bit is set on each byte except the last.
+template <typename uint_t>
+void Leb128Encoder<uint_t>::Enqueue(uint_t value) {
+  uint_t uvalue = static_cast<uint_t>(value);
+  do {
+    const uint8_t byte = uvalue & 127;
+    uvalue >>= 7;
+    encoding_.push_back((uvalue ? 128 : 0) | byte);
+  } while (uvalue);
+}
+
+// Add a vector of values to the encoding.
+template <typename uint_t>
+void Leb128Encoder<uint_t>::EnqueueAll(const std::vector<uint_t>& values) {
+  for (size_t i = 0; i < values.size(); ++i) {
+    Enqueue(values[i]);
+  }
+}
+
+// Create a new decoder for the given encoded stream.
+template <typename uint_t>
+Leb128Decoder<uint_t>::Leb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with) {
+  encoding_ = encoding;
+  cursor_ = start_with;
+}
+
+// Empty destructor to silence chromium-style.
+template <typename uint_t>
+Leb128Decoder<uint_t>::~Leb128Decoder() { }
+
+// Decode and retrieve a single value from the encoding.  Read forwards until
+// a byte without its most significant bit is found, then read the 7 bit
+// fields of the bytes spanned to re-form the value.
+template <typename uint_t>
+uint_t Leb128Decoder<uint_t>::Dequeue() {
+  uint_t value = 0;
+
+  size_t shift = 0;
+  uint8_t byte;
+
+  // Loop until we reach a byte with its high order bit clear.
+  do {
+    byte = encoding_[cursor_++];
+    value |= static_cast<uint_t>(byte & 127) << shift;
+    shift += 7;
+  } while (byte & 128);
+
+  return value;
+}
+
+// Decode and retrieve all remaining values from the encoding.
+template <typename uint_t>
+void Leb128Decoder<uint_t>::DequeueAll(std::vector<uint_t>* values) {
+  while (cursor_ < encoding_.size()) {
+    values->push_back(Dequeue());
+  }
+}
+
+template class Leb128Encoder<uint32_t>;
+template class Leb128Encoder<uint64_t>;
+
+template class Leb128Decoder<uint32_t>;
+template class Leb128Decoder<uint64_t>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/leb128.h b/tools/relocation_packer/src/leb128.h
new file mode 100644
index 0000000..67fc4b8
--- /dev/null
+++ b/tools/relocation_packer/src/leb128.h
@@ -0,0 +1,75 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// LEB128 encoder and decoder for packed relative relocations.
+//
+// Packed relocations consist of a large number of relatively small
+// integer values.  Encoding these as LEB128 saves space.
+//
+// For more on LEB128 see http://en.wikipedia.org/wiki/LEB128.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_LEB128_H_
+#define TOOLS_RELOCATION_PACKER_SRC_LEB128_H_
+
+#include <stdint.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// Encode packed words as a LEB128 byte stream.
+template <typename uint_t>
+class Leb128Encoder {
+ public:
+  // Explicit (but empty) constructor and destructor, for chromium-style.
+  Leb128Encoder();
+  ~Leb128Encoder();
+
+  // Add a value to the encoding stream.
+  // |value| is the unsigned int to add.
+  void Enqueue(uint_t value);
+
+  // Add a vector of values to the encoding stream.
+  // |values| is the vector of unsigned ints to add.
+  void EnqueueAll(const std::vector<uint_t>& values);
+
+  // Retrieve the encoded representation of the values.
+  // |encoding| is the returned vector of encoded data.
+  void GetEncoding(std::vector<uint8_t>* encoding) { *encoding = encoding_; }
+
+ private:
+  // Growable vector holding the encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+};
+
+// Decode a LEB128 byte stream to produce packed words.
+template <typename uint_t>
+class Leb128Decoder {
+ public:
+  // Create a new decoder for the given encoded stream.
+  // |encoding| is the vector of encoded data.
+  explicit Leb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with);
+
+  // Explicit (but empty) destructor, for chromium-style.
+  ~Leb128Decoder();
+
+  // Retrieve the next value from the encoded stream.
+  uint_t Dequeue();
+
+  // Retrieve all remaining values from the encoded stream.
+  // |values| is the vector of decoded data.
+  void DequeueAll(std::vector<uint_t>* values);
+
+ private:
+  // Encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+
+  // Cursor indicating the current stream retrieval point.
+  size_t cursor_;
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_LEB128_H_
diff --git a/tools/relocation_packer/src/leb128_unittest.cc b/tools/relocation_packer/src/leb128_unittest.cc
new file mode 100644
index 0000000..8a7028c
--- /dev/null
+++ b/tools/relocation_packer/src/leb128_unittest.cc
@@ -0,0 +1,111 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "leb128.h"
+
+#include <vector>
+#include "gtest/gtest.h"
+
+namespace relocation_packer {
+
+TEST(Leb128, Encoder64) {
+  std::vector<uint64_t> values;
+  values.push_back(624485);
+  values.push_back(0);
+  values.push_back(1);
+  values.push_back(127);
+  values.push_back(128);
+
+  Leb128Encoder<uint64_t> encoder;
+  encoder.EnqueueAll(values);
+
+  encoder.Enqueue(4294967295);
+  encoder.Enqueue(18446744073709551615ul);
+
+  std::vector<uint8_t> encoding;
+  encoder.GetEncoding(&encoding);
+
+  EXPECT_EQ(23U, encoding.size());
+  // 624485
+  EXPECT_EQ(0xe5, encoding[0]);
+  EXPECT_EQ(0x8e, encoding[1]);
+  EXPECT_EQ(0x26, encoding[2]);
+  // 0
+  EXPECT_EQ(0x00, encoding[3]);
+  // 1
+  EXPECT_EQ(0x01, encoding[4]);
+  // 127
+  EXPECT_EQ(0x7f, encoding[5]);
+  // 128
+  EXPECT_EQ(0x80, encoding[6]);
+  EXPECT_EQ(0x01, encoding[7]);
+  // 4294967295
+  EXPECT_EQ(0xff, encoding[8]);
+  EXPECT_EQ(0xff, encoding[9]);
+  EXPECT_EQ(0xff, encoding[10]);
+  EXPECT_EQ(0xff, encoding[11]);
+  EXPECT_EQ(0x0f, encoding[12]);
+  // 18446744073709551615
+  EXPECT_EQ(0xff, encoding[13]);
+  EXPECT_EQ(0xff, encoding[14]);
+  EXPECT_EQ(0xff, encoding[15]);
+  EXPECT_EQ(0xff, encoding[16]);
+  EXPECT_EQ(0xff, encoding[17]);
+  EXPECT_EQ(0xff, encoding[18]);
+  EXPECT_EQ(0xff, encoding[19]);
+  EXPECT_EQ(0xff, encoding[20]);
+  EXPECT_EQ(0xff, encoding[21]);
+  EXPECT_EQ(0x01, encoding[22]);
+}
+
+TEST(Leb128, Decoder64) {
+  std::vector<uint8_t> encoding;
+  // 624485
+  encoding.push_back(0xe5);
+  encoding.push_back(0x8e);
+  encoding.push_back(0x26);
+  // 0
+  encoding.push_back(0x00);
+  // 1
+  encoding.push_back(0x01);
+  // 127
+  encoding.push_back(0x7f);
+  // 128
+  encoding.push_back(0x80);
+  encoding.push_back(0x01);
+  // 4294967295
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x0f);
+  // 18446744073709551615
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x01);
+
+  Leb128Decoder<uint64_t> decoder(encoding, 0);
+
+  EXPECT_EQ(624485U, decoder.Dequeue());
+
+  std::vector<uint64_t> dequeued;
+  decoder.DequeueAll(&dequeued);
+
+  EXPECT_EQ(6U, dequeued.size());
+  EXPECT_EQ(0U, dequeued[0]);
+  EXPECT_EQ(1U, dequeued[1]);
+  EXPECT_EQ(127U, dequeued[2]);
+  EXPECT_EQ(128U, dequeued[3]);
+  EXPECT_EQ(4294967295U, dequeued[4]);
+  EXPECT_EQ(18446744073709551615UL, dequeued[5]);
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/main.cc b/tools/relocation_packer/src/main.cc
new file mode 100644
index 0000000..8e9de6d
--- /dev/null
+++ b/tools/relocation_packer/src/main.cc
@@ -0,0 +1,150 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Tool to pack and unpack relative relocations in a shared library.
+//
+// Invoke with -v to trace actions taken when packing or unpacking.
+// Invoke with -p to pad removed relocations with R_*_NONE.  Suppresses
+// shrinking of .rel.dyn.
+// See PrintUsage() below for full usage details.
+//
+// NOTE: Breaks with libelf 0.152, which is buggy.  libelf 0.158 works.
+
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <string>
+
+#include "debug.h"
+#include "elf_file.h"
+#include "elf_traits.h"
+#include "libelf.h"
+
+#include "nativehelper/ScopedFd.h"
+
+static void PrintUsage(const char* argv0) {
+  std::string temporary = argv0;
+  const size_t last_slash = temporary.find_last_of("/");
+  if (last_slash != temporary.npos) {
+    temporary.erase(0, last_slash + 1);
+  }
+  const char* basename = temporary.c_str();
+
+  printf(
+      "Usage: %s [-u] [-v] [-p] file\n\n"
+      "Pack or unpack relative relocations in a shared library.\n\n"
+      "  -u, --unpack   unpack previously packed relative relocations\n"
+      "  -v, --verbose  trace object file modifications (for debugging)\n"
+      "  -p, --pad      do not shrink relocations, but pad (for debugging)\n\n",
+      basename);
+
+  printf(
+      "Debug sections are not handled, so packing should not be used on\n"
+      "shared libraries compiled for debugging or otherwise unstripped.\n");
+}
+
+int main(int argc, char* argv[]) {
+  bool is_unpacking = false;
+  bool is_verbose = false;
+  bool is_padding = false;
+
+  static const option options[] = {
+    {"unpack", 0, 0, 'u'}, {"verbose", 0, 0, 'v'}, {"pad", 0, 0, 'p'},
+    {"help", 0, 0, 'h'}, {NULL, 0, 0, 0}
+  };
+  bool has_options = true;
+  while (has_options) {
+    int c = getopt_long(argc, argv, "uvph", options, NULL);
+    switch (c) {
+      case 'u':
+        is_unpacking = true;
+        break;
+      case 'v':
+        is_verbose = true;
+        break;
+      case 'p':
+        is_padding = true;
+        break;
+      case 'h':
+        PrintUsage(argv[0]);
+        return 0;
+      case '?':
+        LOG(INFO) << "Try '" << argv[0] << " --help' for more information.";
+        return 1;
+      case -1:
+        has_options = false;
+        break;
+      default:
+        NOTREACHED();
+        return 1;
+    }
+  }
+  if (optind != argc - 1) {
+    LOG(INFO) << "Try '" << argv[0] << " --help' for more information.";
+    return 1;
+  }
+
+  if (elf_version(EV_CURRENT) == EV_NONE) {
+    LOG(WARNING) << "Elf Library is out of date!";
+  }
+
+  const char* file = argv[argc - 1];
+  ScopedFd fd(open(file, O_RDWR));
+  if (fd.get() == -1) {
+    LOG(ERROR) << file << ": " << strerror(errno);
+    return 1;
+  }
+
+  if (is_verbose)
+    relocation_packer::Logger::SetVerbose(1);
+
+  // We need to detect elf class in order to create
+  // correct implementation
+  uint8_t e_ident[EI_NIDENT];
+  if (TEMP_FAILURE_RETRY(read(fd.get(), e_ident, EI_NIDENT) != EI_NIDENT)) {
+    LOG(ERROR) << file << ": failed to read elf header:" << strerror(errno);
+    return 1;
+  }
+
+  if (TEMP_FAILURE_RETRY(lseek(fd.get(), 0, SEEK_SET)) != 0) {
+    LOG(ERROR) << file << ": lseek to 0 failed:" << strerror(errno);
+    return 1;
+  }
+
+  bool status = false;
+
+  if (e_ident[EI_CLASS] == ELFCLASS32) {
+    relocation_packer::ElfFile<ELF32_traits> elf_file(fd.get());
+    elf_file.SetPadding(is_padding);
+
+    if (is_unpacking) {
+      status = elf_file.UnpackRelocations();
+    } else {
+      status = elf_file.PackRelocations();
+    }
+  } else if (e_ident[EI_CLASS] == ELFCLASS64) {
+    relocation_packer::ElfFile<ELF64_traits> elf_file(fd.get());
+    elf_file.SetPadding(is_padding);
+
+    if (is_unpacking) {
+      status = elf_file.UnpackRelocations();
+    } else {
+      status = elf_file.PackRelocations();
+    }
+  } else {
+    LOG(ERROR) << file << ": unknown ELFCLASS: " << e_ident[EI_CLASS];
+    return 1;
+  }
+
+  if (!status) {
+    LOG(ERROR) << file << ": failed to pack/unpack file";
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/tools/relocation_packer/src/packer.cc b/tools/relocation_packer/src/packer.cc
new file mode 100644
index 0000000..8e30612
--- /dev/null
+++ b/tools/relocation_packer/src/packer.cc
@@ -0,0 +1,88 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "packer.h"
+
+#include <vector>
+
+#include "debug.h"
+#include "delta_encoder.h"
+#include "elf_traits.h"
+#include "leb128.h"
+#include "sleb128.h"
+
+namespace relocation_packer {
+
+// Pack relocations into a group encoded packed representation.
+template <typename ELF>
+void RelocationPacker<ELF>::PackRelocations(const std::vector<typename ELF::Rela>& relocations,
+                                            std::vector<uint8_t>* packed) {
+  // Run-length encode.
+  std::vector<typename ELF::Addr> packed_words;
+  RelocationDeltaCodec<ELF> codec;
+  codec.Encode(relocations, &packed_words);
+
+  // If insufficient data do nothing.
+  if (packed_words.empty())
+    return;
+
+  Sleb128Encoder<typename ELF::Addr> sleb128_encoder;
+  Leb128Encoder<typename ELF::Addr> leb128_encoder;
+
+  std::vector<uint8_t> leb128_packed;
+  std::vector<uint8_t> sleb128_packed;
+
+  leb128_encoder.EnqueueAll(packed_words);
+  leb128_encoder.GetEncoding(&leb128_packed);
+
+  sleb128_encoder.EnqueueAll(packed_words);
+  sleb128_encoder.GetEncoding(&sleb128_packed);
+
+  // TODO (simonb): Estimate savings on current android system image and consider using
+  // one encoder for all packed relocations to reduce complexity.
+  if (leb128_packed.size() <= sleb128_packed.size()) {
+    packed->push_back('A');
+    packed->push_back('P');
+    packed->push_back('U');
+    packed->push_back('2');
+    packed->insert(packed->end(), leb128_packed.begin(), leb128_packed.end());
+  } else {
+    packed->push_back('A');
+    packed->push_back('P');
+    packed->push_back('S');
+    packed->push_back('2');
+    packed->insert(packed->end(), sleb128_packed.begin(), sleb128_packed.end());
+  }
+}
+
+// Unpack relative relocations from a run-length encoded packed
+// representation.
+template <typename ELF>
+void RelocationPacker<ELF>::UnpackRelocations(
+    const std::vector<uint8_t>& packed,
+    std::vector<typename ELF::Rela>* relocations) {
+
+  std::vector<typename ELF::Addr> packed_words;
+  CHECK(packed.size() > 4 &&
+        packed[0] == 'A' &&
+        packed[1] == 'P' &&
+        (packed[2] == 'U' || packed[2] == 'S') &&
+        packed[3] == '2');
+
+  if (packed[2] == 'U') {
+    Leb128Decoder<typename ELF::Addr> decoder(packed, 4);
+    decoder.DequeueAll(&packed_words);
+  } else {
+    Sleb128Decoder<typename ELF::Addr> decoder(packed, 4);
+    decoder.DequeueAll(&packed_words);
+  }
+
+  RelocationDeltaCodec<ELF> codec;
+  codec.Decode(packed_words, relocations);
+}
+
+template class RelocationPacker<ELF32_traits>;
+template class RelocationPacker<ELF64_traits>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/packer.h b/tools/relocation_packer/src/packer.h
new file mode 100644
index 0000000..63f50e2
--- /dev/null
+++ b/tools/relocation_packer/src/packer.h
@@ -0,0 +1,37 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Pack relative relocations into a more compact form.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
+#define TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
+
+#include <stdint.h>
+#include <vector>
+
+#include "elf.h"
+
+namespace relocation_packer {
+
+// A RelocationPacker packs vectors of relocations into more
+// compact forms, and unpacks them to reproduce the pre-packed data.
+template <typename ELF>
+class RelocationPacker {
+ public:
+  // Pack relocations into a more compact form.
+  // |relocations| is a vector of relocation structs.
+  // |packed| is the vector of packed bytes into which relocations are packed.
+  static void PackRelocations(const std::vector<typename ELF::Rela>& relocations,
+                              std::vector<uint8_t>* packed);
+
+  // Unpack relocations from their more compact form.
+  // |packed| is the vector of packed relocations.
+  // |relocations| is a vector of unpacked relocation structs.
+  static void UnpackRelocations(const std::vector<uint8_t>& packed,
+                                std::vector<typename ELF::Rela>* relocations);
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_PACKER_H_
diff --git a/tools/relocation_packer/src/packer_unittest.cc b/tools/relocation_packer/src/packer_unittest.cc
new file mode 100644
index 0000000..8dddd8b
--- /dev/null
+++ b/tools/relocation_packer/src/packer_unittest.cc
@@ -0,0 +1,292 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "packer.h"
+
+#include <vector>
+#include "elf.h"
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+
+template <typename ELF>
+static void AddRelocation(typename ELF::Addr addr,
+                   typename ELF::Xword info,
+                   typename ELF::Sxword addend,
+                   std::vector<typename ELF::Rela>* relocations) {
+  typename ELF::Rela relocation;
+  relocation.r_offset = addr;
+  relocation.r_info = info;
+  relocation.r_addend = addend;
+
+  relocations->push_back(relocation);
+}
+
+template <typename ELF>
+static bool CheckRelocation(typename ELF::Addr addr,
+                     typename ELF::Xword info,
+                     typename ELF::Sxword addend,
+                     const typename ELF::Rela& relocation) {
+  return relocation.r_offset == addr &&
+      relocation.r_info == info &&
+      relocation.r_addend == addend;
+}
+
+namespace relocation_packer {
+
+template <typename ELF>
+static void DoPackNoAddend() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<uint8_t> packed;
+  // Initial relocation.
+  AddRelocation<ELF>(0xd1ce0000, 0x11, 0, &relocations);
+  // Two more relocations, 4 byte deltas.
+  AddRelocation<ELF>(0xd1ce0004, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0008, 0x11, 0, &relocations);
+  // Three more relocations, 8 byte deltas.
+  AddRelocation<ELF>(0xd1ce0010, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0018, 0x11, 0, &relocations);
+  AddRelocation<ELF>(0xd1ce0020, 0x11, 0, &relocations);
+
+  RelocationPacker<ELF> packer;
+
+  packed.clear();
+  packer.PackRelocations(relocations, &packed);
+
+  ASSERT_EQ(18U, packed.size());
+  // Identifier.
+  size_t ndx = 0;
+  EXPECT_EQ('A', packed[ndx++]);
+  EXPECT_EQ('P', packed[ndx++]);
+  EXPECT_EQ('U', packed[ndx++]);
+  EXPECT_EQ('2', packed[ndx++]);
+  // relocation count
+  EXPECT_EQ(6, packed[ndx++]);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d
+  EXPECT_EQ(0xfc, packed[ndx++]);
+  EXPECT_EQ(0xff, packed[ndx++]);
+  EXPECT_EQ(0xb7, packed[ndx++]);
+  EXPECT_EQ(0x8e, packed[ndx++]);
+  EXPECT_EQ(0x0d, packed[ndx++]);
+  // first group
+  EXPECT_EQ(3, packed[ndx++]);  // size
+  EXPECT_EQ(3, packed[ndx++]); // flags
+  EXPECT_EQ(4, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x11, packed[ndx++]); // r_info
+  // second group
+  EXPECT_EQ(3, packed[ndx++]);  // size
+  EXPECT_EQ(3, packed[ndx++]); // flags
+  EXPECT_EQ(8, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x11, packed[ndx++]); // r_info
+
+  EXPECT_EQ(ndx, packed.size());
+}
+
+TEST(Packer, PackNoAddend) {
+  DoPackNoAddend<ELF32_traits>();
+  DoPackNoAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoUnpackNoAddend() {
+  std::vector<typename ELF::Rela> relocations;
+  std::vector<uint8_t> packed;
+  packed.push_back('A');
+  packed.push_back('P');
+  packed.push_back('U');
+  packed.push_back('2');
+  // relocation count
+  packed.push_back(6);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d
+  packed.push_back(0xfc);
+  packed.push_back(0xff);
+  packed.push_back(0xb7);
+  packed.push_back(0x8e);
+  packed.push_back(0x0d);
+  // first group
+  packed.push_back(3);  // size
+  packed.push_back(3); // flags
+  packed.push_back(4); // r_offset_delta
+  packed.push_back(0x11); // r_info
+  // second group
+  packed.push_back(3);  // size
+  packed.push_back(3); // flags
+  packed.push_back(8); // r_offset_delta
+  packed.push_back(0x11); // r_info
+
+  RelocationPacker<ELF> packer;
+  packer.UnpackRelocations(packed, &relocations);
+
+  size_t ndx = 0;
+  EXPECT_EQ(6U, relocations.size());
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0000, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0004, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0008, 0x11, 0, relocations[ndx++]));
+
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0010, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0018, 0x11, 0, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0020, 0x11, 0, relocations[ndx++]));
+
+  EXPECT_EQ(ndx, relocations.size());
+}
+
+TEST(Packer, UnpackNoAddend) {
+  DoUnpackNoAddend<ELF32_traits>();
+  DoUnpackNoAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoPackWithAddend() {
+  std::vector<typename ELF::Rela> relocations;
+
+  // Initial relocation.
+  AddRelocation<ELF>(0xd1ce0000, 0x01, 10024, &relocations);
+  // Two more relocations, 4 byte offset deltas, 12 byte addend deltas.
+  AddRelocation<ELF>(0xd1ce0004, 0x01, 10012, &relocations);
+  AddRelocation<ELF>(0xd1ce0008, 0x01, 10024, &relocations);
+  // Three more relocations, 8 byte deltas, -24 byte addend deltas.
+  AddRelocation<ELF>(0xd1ce0010, 0x01, 10000, &relocations);
+  AddRelocation<ELF>(0xd1ce0018, 0x01, 9976, &relocations);
+  AddRelocation<ELF>(0xd1ce0020, 0x01, 9952, &relocations);
+
+  std::vector<uint8_t> packed;
+
+  RelocationPacker<ELF> packer;
+
+  packed.clear();
+  packer.PackRelocations(relocations, &packed);
+
+  EXPECT_EQ(26U, packed.size());
+  size_t ndx = 0;
+  // Identifier.
+  EXPECT_EQ('A', packed[ndx++]);
+  EXPECT_EQ('P', packed[ndx++]);
+  EXPECT_EQ('S', packed[ndx++]);
+  EXPECT_EQ('2', packed[ndx++]);
+  // Relocation count
+  EXPECT_EQ(6U, packed[ndx++]);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d/7d (depending on ELF::Addr)
+  EXPECT_EQ(0xfc, packed[ndx++]);
+  EXPECT_EQ(0xff, packed[ndx++]);
+  EXPECT_EQ(0xb7, packed[ndx++]);
+  EXPECT_EQ(0x8e, packed[ndx++]);
+  if (sizeof(typename ELF::Addr) == 8) {
+    // positive for uint64_t
+    EXPECT_EQ(0x0d, packed[ndx++]);
+  } else {
+    // negative for uint32_t
+    EXPECT_EQ(0x7d, packed[ndx++]);
+  }
+  // group 1
+  EXPECT_EQ(0x03, packed[ndx++]); // size
+  EXPECT_EQ(0x0b, packed[ndx++]); // flags
+  EXPECT_EQ(0x04, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x01, packed[ndx++]); // r_info
+  // group 1 - addend 1: 10024 = 0xa8, 0xce, 0x80
+  EXPECT_EQ(0xa8, packed[ndx++]);
+  EXPECT_EQ(0xce, packed[ndx++]);
+  EXPECT_EQ(0x00, packed[ndx++]);
+  // group 1 - addend 2: -12 = 0x74
+  EXPECT_EQ(0x74, packed[ndx++]);
+  // group 1 - addend 3: +12 = 0x0c
+  EXPECT_EQ(0x0c, packed[ndx++]);
+
+  // group 2
+  EXPECT_EQ(0x03, packed[ndx++]); // size
+  EXPECT_EQ(0x0b, packed[ndx++]); // flags
+  EXPECT_EQ(0x08, packed[ndx++]); // r_offset_delta
+  EXPECT_EQ(0x01, packed[ndx++]); // r_info
+
+  // group 2 - addend 1: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+  // group 2 - addend 2: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+  // group 2 - addend 3: -24 = 0x68
+  EXPECT_EQ(0x68, packed[ndx++]);
+
+  EXPECT_EQ(ndx, packed.size());
+}
+
+TEST(Packer, PackWithAddend) {
+  DoPackWithAddend<ELF32_traits>();
+  DoPackWithAddend<ELF64_traits>();
+}
+
+template <typename ELF>
+static void DoUnpackWithAddend() {
+  std::vector<uint8_t> packed;
+  // Identifier.
+  packed.push_back('A');
+  packed.push_back('P');
+  packed.push_back('S');
+  packed.push_back('2');
+  // Relocation count
+  packed.push_back(6U);
+  // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d
+  packed.push_back(0xfc);
+  packed.push_back(0xff);
+  packed.push_back(0xb7);
+  packed.push_back(0x8e);
+  if (sizeof(typename ELF::Addr) == 8) {
+    // positive for uint64_t
+    packed.push_back(0x0d);
+  } else {
+    // negative for uint32_t
+    packed.push_back(0x7d);
+  }
+  // group 1
+  packed.push_back(0x03); // size
+  packed.push_back(0x0b); // flags
+  packed.push_back(0x04); // r_offset_delta
+  packed.push_back(0x01); // r_info
+  // group 1 - addend 1: 10024 = 0xa8, 0xce, 0x80
+  packed.push_back(0xa8);
+  packed.push_back(0xce);
+  packed.push_back(0x00);
+  // group 1 - addend 2: -12 = 0x74
+  packed.push_back(0x74);
+  // group 1 - addend 3: +12 = 0x0c
+  packed.push_back(0x0c);
+
+  // group 2
+  packed.push_back(0x03); // size
+  packed.push_back(0x0b); // flags
+  packed.push_back(0x08); // r_offset_delta
+  packed.push_back(0x01); // r_info
+
+  // group 2 - addend 1: -24 = 0x68
+  packed.push_back(0x68);
+  // group 2 - addend 2: -24 = 0x68
+  packed.push_back(0x68);
+  // group 2 - addend 3: -24 = 0x68
+  packed.push_back(0x68);
+
+  std::vector<typename ELF::Rela> relocations;
+
+  RelocationPacker<ELF> packer;
+
+  relocations.clear();
+  packer.UnpackRelocations(packed, &relocations);
+
+  EXPECT_EQ(6U, relocations.size());
+  size_t ndx = 0;
+  // Initial relocation.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0000, 0x01, 10024, relocations[ndx++]));
+  // Two more relocations, 4 byte offset deltas, 12 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0004, 0x01, 10012, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0008, 0x01, 10024, relocations[ndx++]));
+  // Three more relocations, 8 byte offset deltas, -24 byte addend deltas.
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0010, 0x01, 10000, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0018, 0x01, 9976, relocations[ndx++]));
+  EXPECT_TRUE(CheckRelocation<ELF>(0xd1ce0020, 0x01, 9952, relocations[ndx++]));
+
+  EXPECT_EQ(ndx, relocations.size());
+}
+
+TEST(Packer, UnpackWithAddend) {
+  DoUnpackWithAddend<ELF32_traits>();
+  DoUnpackWithAddend<ELF64_traits>();
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/sleb128.cc b/tools/relocation_packer/src/sleb128.cc
new file mode 100644
index 0000000..12c21e3
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128.cc
@@ -0,0 +1,131 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sleb128.h"
+
+#include <limits.h>
+#include <stdint.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace {
+
+template <typename T>
+class uint_traits {};
+
+template <>
+class uint_traits<uint64_t> {
+ public:
+  typedef int64_t int_t;
+};
+
+template <>
+class uint_traits<uint32_t> {
+ public:
+  typedef int32_t int_t;
+};
+
+}
+
+namespace relocation_packer {
+
+// Empty constructor and destructor to silence chromium-style.
+template <typename uint_t>
+Sleb128Encoder<uint_t>::Sleb128Encoder() { }
+
+template <typename uint_t>
+Sleb128Encoder<uint_t>::~Sleb128Encoder() { }
+
+// Add a single value to the encoding.  Values are encoded with variable
+// length.  The least significant 7 bits of each byte hold 7 bits of data,
+// and the most significant bit is set on each byte except the last.  The
+// value is sign extended up to a multiple of 7 bits (ensuring that the
+// most significant bit is zero for a positive number and one for a
+// negative number).
+template <typename uint_t>
+void Sleb128Encoder<uint_t>::Enqueue(uint_t value) {
+  typedef typename uint_traits<uint_t>::int_t int_t;
+  static const size_t size = CHAR_BIT * sizeof(value);
+
+  bool more = true;
+  const bool negative = static_cast<int_t>(value) < 0;
+
+  while (more) {
+    uint8_t byte = value & 127;
+    value >>= 7;
+
+    // Sign extend if encoding a -ve value.
+    if (negative)
+      value |= -(static_cast<uint_t>(1) << (size - 7));
+
+    // The sign bit of byte is second high order bit.
+    const bool sign_bit = byte & 64;
+    if ((value == 0 && !sign_bit) || (value == static_cast<uint_t>(-1) && sign_bit))
+      more = false;
+    else
+      byte |= 128;
+    encoding_.push_back(byte);
+  }
+}
+
+// Add a vector of values to the encoding.
+template <typename uint_t>
+void Sleb128Encoder<uint_t>::EnqueueAll(const std::vector<uint_t>& values) {
+  for (size_t i = 0; i < values.size(); ++i) {
+    Enqueue(values[i]);
+  }
+}
+
+// Create a new decoder for the given encoded stream.
+template <typename uint_t>
+Sleb128Decoder<uint_t>::Sleb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with) {
+  encoding_ = encoding;
+  cursor_ = start_with;
+}
+
+// Empty destructor to silence chromium-style.
+template <typename uint_t>
+Sleb128Decoder<uint_t>::~Sleb128Decoder() { }
+
+// Decode and retrieve a single value from the encoding.  Consume bytes
+// until one without its most significant bit is found, and re-form the
+// value from the 7 bit fields of the bytes consumed.
+template <typename uint_t>
+uint_t Sleb128Decoder<uint_t>::Dequeue() {
+  uint_t value = 0;
+  static const size_t size = CHAR_BIT * sizeof(value);
+
+  size_t shift = 0;
+  uint8_t byte;
+
+  // Loop until we reach a byte with its high order bit clear.
+  do {
+    byte = encoding_[cursor_++];
+    value |= (static_cast<uint_t>(byte & 127) << shift);
+    shift += 7;
+  } while (byte & 128);
+
+  // The sign bit is second high order bit of the final byte decoded.
+  // Sign extend if value is -ve and we did not shift all of it.
+  if (shift < size && (byte & 64))
+    value |= -(static_cast<uint_t>(1) << shift);
+
+  return static_cast<uint_t>(value);
+}
+
+// Decode and retrieve all remaining values from the encoding.
+template <typename uint_t>
+void Sleb128Decoder<uint_t>::DequeueAll(std::vector<uint_t>* values) {
+  while (cursor_ < encoding_.size()) {
+    values->push_back(Dequeue());
+  }
+}
+
+template class Sleb128Encoder<uint32_t>;
+template class Sleb128Encoder<uint64_t>;
+template class Sleb128Decoder<uint32_t>;
+template class Sleb128Decoder<uint64_t>;
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/src/sleb128.h b/tools/relocation_packer/src/sleb128.h
new file mode 100644
index 0000000..3a63f66
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128.h
@@ -0,0 +1,76 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// SLEB128 encoder and decoder for packed relative relocations.
+//
+// Packed relocations consist of a large number of relatively small
+// integer values.  Encoding these as LEB128 saves space.
+//
+// For more on LEB128 see http://en.wikipedia.org/wiki/LEB128.
+
+#ifndef TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
+#define TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
+
+#include <stdint.h>
+#include <unistd.h>
+#include <vector>
+
+#include "elf_traits.h"
+
+namespace relocation_packer {
+
+// Encode packed words as a signed LEB128 byte stream.
+template<typename int_t>
+class Sleb128Encoder {
+ public:
+  // Explicit (but empty) constructor and destructor, for chromium-style.
+  Sleb128Encoder();
+  ~Sleb128Encoder();
+
+  // Add a value to the encoding stream.
+  // |value| is the signed int to add.
+  void Enqueue(int_t value);
+
+  // Add a vector of values to the encoding stream.
+  // |values| is the vector of signed ints to add.
+  void EnqueueAll(const std::vector<int_t>& values);
+
+  // Retrieve the encoded representation of the values.
+  // |encoding| is the returned vector of encoded data.
+  void GetEncoding(std::vector<uint8_t>* encoding) { *encoding = encoding_; }
+
+ private:
+  // Growable vector holding the encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+};
+
+// Decode a LEB128 byte stream to produce packed words.
+template <typename int_t>
+class Sleb128Decoder {
+ public:
+  // Create a new decoder for the given encoded stream.
+  // |encoding| is the vector of encoded data.
+  explicit Sleb128Decoder(const std::vector<uint8_t>& encoding, size_t start_with);
+
+  // Explicit (but empty) destructor, for chromium-style.
+  ~Sleb128Decoder();
+
+  // Retrieve the next value from the encoded stream.
+  int_t Dequeue();
+
+  // Retrieve all remaining values from the encoded stream.
+  // |values| is the vector of decoded data.
+  void DequeueAll(std::vector<int_t>* values);
+
+ private:
+  // Encoded LEB128 stream.
+  std::vector<uint8_t> encoding_;
+
+  // Cursor indicating the current stream retrieval point.
+  size_t cursor_;
+};
+
+}  // namespace relocation_packer
+
+#endif  // TOOLS_RELOCATION_PACKER_SRC_SLEB128_H_
diff --git a/tools/relocation_packer/src/sleb128_unittest.cc b/tools/relocation_packer/src/sleb128_unittest.cc
new file mode 100644
index 0000000..49a553c
--- /dev/null
+++ b/tools/relocation_packer/src/sleb128_unittest.cc
@@ -0,0 +1,166 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sleb128.h"
+
+#include <vector>
+#include "elf_traits.h"
+#include "gtest/gtest.h"
+
+namespace relocation_packer {
+
+TEST(Sleb128, Encoder64) {
+  std::vector<uint64_t> values;
+  values.push_back(624485U);
+  values.push_back(0U);
+  values.push_back(1U);
+  values.push_back(63U);
+  values.push_back(64U);
+  values.push_back(static_cast<uint64_t>(-1));
+  values.push_back(static_cast<uint64_t>(-624485));
+
+  Sleb128Encoder<uint64_t> encoder;
+  encoder.EnqueueAll(values);
+
+  encoder.Enqueue(2147483647U);
+  encoder.Enqueue(static_cast<uint64_t>(-2147483648));
+  encoder.Enqueue(9223372036854775807ULL);
+  encoder.Enqueue(static_cast<uint64_t>(-9223372036854775807LL - 1));
+
+  std::vector<uint8_t> encoding;
+  encoder.GetEncoding(&encoding);
+
+  EXPECT_EQ(42u, encoding.size());
+  // 624485
+  EXPECT_EQ(0xe5, encoding[0]);
+  EXPECT_EQ(0x8e, encoding[1]);
+  EXPECT_EQ(0x26, encoding[2]);
+  // 0
+  EXPECT_EQ(0x00, encoding[3]);
+  // 1
+  EXPECT_EQ(0x01, encoding[4]);
+  // 63
+  EXPECT_EQ(0x3f, encoding[5]);
+  // 64
+  EXPECT_EQ(0xc0, encoding[6]);
+  EXPECT_EQ(0x00, encoding[7]);
+  // -1
+  EXPECT_EQ(0x7f, encoding[8]);
+  // -624485
+  EXPECT_EQ(0x9b, encoding[9]);
+  EXPECT_EQ(0xf1, encoding[10]);
+  EXPECT_EQ(0x59, encoding[11]);
+  // 2147483647
+  EXPECT_EQ(0xff, encoding[12]);
+  EXPECT_EQ(0xff, encoding[13]);
+  EXPECT_EQ(0xff, encoding[14]);
+  EXPECT_EQ(0xff, encoding[15]);
+  EXPECT_EQ(0x07, encoding[16]);
+  // -2147483648
+  EXPECT_EQ(0x80, encoding[17]);
+  EXPECT_EQ(0x80, encoding[18]);
+  EXPECT_EQ(0x80, encoding[19]);
+  EXPECT_EQ(0x80, encoding[20]);
+  EXPECT_EQ(0x78, encoding[21]);
+  // 9223372036854775807
+  EXPECT_EQ(0xff, encoding[22]);
+  EXPECT_EQ(0xff, encoding[23]);
+  EXPECT_EQ(0xff, encoding[24]);
+  EXPECT_EQ(0xff, encoding[25]);
+  EXPECT_EQ(0xff, encoding[26]);
+  EXPECT_EQ(0xff, encoding[27]);
+  EXPECT_EQ(0xff, encoding[28]);
+  EXPECT_EQ(0xff, encoding[29]);
+  EXPECT_EQ(0xff, encoding[30]);
+  EXPECT_EQ(0x00, encoding[31]);
+  // -9223372036854775808
+  EXPECT_EQ(0x80, encoding[32]);
+  EXPECT_EQ(0x80, encoding[33]);
+  EXPECT_EQ(0x80, encoding[34]);
+  EXPECT_EQ(0x80, encoding[35]);
+  EXPECT_EQ(0x80, encoding[36]);
+  EXPECT_EQ(0x80, encoding[37]);
+  EXPECT_EQ(0x80, encoding[38]);
+  EXPECT_EQ(0x80, encoding[39]);
+  EXPECT_EQ(0x80, encoding[40]);
+  EXPECT_EQ(0x7f, encoding[41]);
+}
+
+TEST(Sleb128, Decoder) {
+  std::vector<uint8_t> encoding;
+  // 624485
+  encoding.push_back(0xe5);
+  encoding.push_back(0x8e);
+  encoding.push_back(0x26);
+  // 0
+  encoding.push_back(0x00);
+  // 1
+  encoding.push_back(0x01);
+  // 63
+  encoding.push_back(0x3f);
+  // 64
+  encoding.push_back(0xc0);
+  encoding.push_back(0x00);
+  // -1
+  encoding.push_back(0x7f);
+  // -624485
+  encoding.push_back(0x9b);
+  encoding.push_back(0xf1);
+  encoding.push_back(0x59);
+  // 2147483647
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x07);
+  // -2147483648
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x78);
+  // 9223372036854775807
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0xff);
+  encoding.push_back(0x00);
+  // -9223372036854775808
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x80);
+  encoding.push_back(0x7f);
+
+  Sleb128Decoder<uint64_t> decoder(encoding, 0);
+
+  EXPECT_EQ(624485U, decoder.Dequeue());
+
+  std::vector<uint64_t> dequeued;
+  decoder.DequeueAll(&dequeued);
+
+  EXPECT_EQ(10U, dequeued.size());
+  EXPECT_EQ(0U, dequeued[0]);
+  EXPECT_EQ(1U, dequeued[1]);
+  EXPECT_EQ(63U, dequeued[2]);
+  EXPECT_EQ(64U, dequeued[3]);
+  EXPECT_EQ(static_cast<uint64_t>(-1), dequeued[4]);
+  EXPECT_EQ(static_cast<uint64_t>(-624485), dequeued[5]);
+  EXPECT_EQ(2147483647U, dequeued[6]);
+  EXPECT_EQ(static_cast<uint64_t>(-2147483648), dequeued[7]);
+  EXPECT_EQ(9223372036854775807ULL, dequeued[8]);
+  EXPECT_EQ(static_cast<uint64_t>(-9223372036854775807LL - 1), dequeued[9]);
+}
+
+}  // namespace relocation_packer
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc b/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc
new file mode 100644
index 0000000..5e1fa74
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs.cc
@@ -0,0 +1,1014 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Test data for packing/unpacking.  When compiled, creates a run of
+// relative relocations.
+//
+// See generate_elf_file_unittest_relocs.sh for instructions on how to build
+// unit test data from this source file.
+
+const int i = 0;
+
+// Generator:
+// python -c 'for i in xrange(0,1000):print"const void* pointer_%d = &i;"%i'
+const void* pointer_0 = &i;
+const void* pointer_1 = &i;
+const void* pointer_2 = &i;
+const void* pointer_3 = &i;
+const void* pointer_4 = &i;
+const void* pointer_5 = &i;
+const void* pointer_6 = &i;
+const void* pointer_7 = &i;
+const void* pointer_8 = &i;
+const void* pointer_9 = &i;
+const void* pointer_10 = &i;
+const void* pointer_11 = &i;
+const void* pointer_12 = &i;
+const void* pointer_13 = &i;
+const void* pointer_14 = &i;
+const void* pointer_15 = &i;
+const void* pointer_16 = &i;
+const void* pointer_17 = &i;
+const void* pointer_18 = &i;
+const void* pointer_19 = &i;
+const void* pointer_20 = &i;
+const void* pointer_21 = &i;
+const void* pointer_22 = &i;
+const void* pointer_23 = &i;
+const void* pointer_24 = &i;
+const void* pointer_25 = &i;
+const void* pointer_26 = &i;
+const void* pointer_27 = &i;
+const void* pointer_28 = &i;
+const void* pointer_29 = &i;
+const void* pointer_30 = &i;
+const void* pointer_31 = &i;
+const void* pointer_32 = &i;
+const void* pointer_33 = &i;
+const void* pointer_34 = &i;
+const void* pointer_35 = &i;
+const void* pointer_36 = &i;
+const void* pointer_37 = &i;
+const void* pointer_38 = &i;
+const void* pointer_39 = &i;
+const void* pointer_40 = &i;
+const void* pointer_41 = &i;
+const void* pointer_42 = &i;
+const void* pointer_43 = &i;
+const void* pointer_44 = &i;
+const void* pointer_45 = &i;
+const void* pointer_46 = &i;
+const void* pointer_47 = &i;
+const void* pointer_48 = &i;
+const void* pointer_49 = &i;
+const void* pointer_50 = &i;
+const void* pointer_51 = &i;
+const void* pointer_52 = &i;
+const void* pointer_53 = &i;
+const void* pointer_54 = &i;
+const void* pointer_55 = &i;
+const void* pointer_56 = &i;
+const void* pointer_57 = &i;
+const void* pointer_58 = &i;
+const void* pointer_59 = &i;
+const void* pointer_60 = &i;
+const void* pointer_61 = &i;
+const void* pointer_62 = &i;
+const void* pointer_63 = &i;
+const void* pointer_64 = &i;
+const void* pointer_65 = &i;
+const void* pointer_66 = &i;
+const void* pointer_67 = &i;
+const void* pointer_68 = &i;
+const void* pointer_69 = &i;
+const void* pointer_70 = &i;
+const void* pointer_71 = &i;
+const void* pointer_72 = &i;
+const void* pointer_73 = &i;
+const void* pointer_74 = &i;
+const void* pointer_75 = &i;
+const void* pointer_76 = &i;
+const void* pointer_77 = &i;
+const void* pointer_78 = &i;
+const void* pointer_79 = &i;
+const void* pointer_80 = &i;
+const void* pointer_81 = &i;
+const void* pointer_82 = &i;
+const void* pointer_83 = &i;
+const void* pointer_84 = &i;
+const void* pointer_85 = &i;
+const void* pointer_86 = &i;
+const void* pointer_87 = &i;
+const void* pointer_88 = &i;
+const void* pointer_89 = &i;
+const void* pointer_90 = &i;
+const void* pointer_91 = &i;
+const void* pointer_92 = &i;
+const void* pointer_93 = &i;
+const void* pointer_94 = &i;
+const void* pointer_95 = &i;
+const void* pointer_96 = &i;
+const void* pointer_97 = &i;
+const void* pointer_98 = &i;
+const void* pointer_99 = &i;
+const void* pointer_100 = &i;
+const void* pointer_101 = &i;
+const void* pointer_102 = &i;
+const void* pointer_103 = &i;
+const void* pointer_104 = &i;
+const void* pointer_105 = &i;
+const void* pointer_106 = &i;
+const void* pointer_107 = &i;
+const void* pointer_108 = &i;
+const void* pointer_109 = &i;
+const void* pointer_110 = &i;
+const void* pointer_111 = &i;
+const void* pointer_112 = &i;
+const void* pointer_113 = &i;
+const void* pointer_114 = &i;
+const void* pointer_115 = &i;
+const void* pointer_116 = &i;
+const void* pointer_117 = &i;
+const void* pointer_118 = &i;
+const void* pointer_119 = &i;
+const void* pointer_120 = &i;
+const void* pointer_121 = &i;
+const void* pointer_122 = &i;
+const void* pointer_123 = &i;
+const void* pointer_124 = &i;
+const void* pointer_125 = &i;
+const void* pointer_126 = &i;
+const void* pointer_127 = &i;
+const void* pointer_128 = &i;
+const void* pointer_129 = &i;
+const void* pointer_130 = &i;
+const void* pointer_131 = &i;
+const void* pointer_132 = &i;
+const void* pointer_133 = &i;
+const void* pointer_134 = &i;
+const void* pointer_135 = &i;
+const void* pointer_136 = &i;
+const void* pointer_137 = &i;
+const void* pointer_138 = &i;
+const void* pointer_139 = &i;
+const void* pointer_140 = &i;
+const void* pointer_141 = &i;
+const void* pointer_142 = &i;
+const void* pointer_143 = &i;
+const void* pointer_144 = &i;
+const void* pointer_145 = &i;
+const void* pointer_146 = &i;
+const void* pointer_147 = &i;
+const void* pointer_148 = &i;
+const void* pointer_149 = &i;
+const void* pointer_150 = &i;
+const void* pointer_151 = &i;
+const void* pointer_152 = &i;
+const void* pointer_153 = &i;
+const void* pointer_154 = &i;
+const void* pointer_155 = &i;
+const void* pointer_156 = &i;
+const void* pointer_157 = &i;
+const void* pointer_158 = &i;
+const void* pointer_159 = &i;
+const void* pointer_160 = &i;
+const void* pointer_161 = &i;
+const void* pointer_162 = &i;
+const void* pointer_163 = &i;
+const void* pointer_164 = &i;
+const void* pointer_165 = &i;
+const void* pointer_166 = &i;
+const void* pointer_167 = &i;
+const void* pointer_168 = &i;
+const void* pointer_169 = &i;
+const void* pointer_170 = &i;
+const void* pointer_171 = &i;
+const void* pointer_172 = &i;
+const void* pointer_173 = &i;
+const void* pointer_174 = &i;
+const void* pointer_175 = &i;
+const void* pointer_176 = &i;
+const void* pointer_177 = &i;
+const void* pointer_178 = &i;
+const void* pointer_179 = &i;
+const void* pointer_180 = &i;
+const void* pointer_181 = &i;
+const void* pointer_182 = &i;
+const void* pointer_183 = &i;
+const void* pointer_184 = &i;
+const void* pointer_185 = &i;
+const void* pointer_186 = &i;
+const void* pointer_187 = &i;
+const void* pointer_188 = &i;
+const void* pointer_189 = &i;
+const void* pointer_190 = &i;
+const void* pointer_191 = &i;
+const void* pointer_192 = &i;
+const void* pointer_193 = &i;
+const void* pointer_194 = &i;
+const void* pointer_195 = &i;
+const void* pointer_196 = &i;
+const void* pointer_197 = &i;
+const void* pointer_198 = &i;
+const void* pointer_199 = &i;
+const void* pointer_200 = &i;
+const void* pointer_201 = &i;
+const void* pointer_202 = &i;
+const void* pointer_203 = &i;
+const void* pointer_204 = &i;
+const void* pointer_205 = &i;
+const void* pointer_206 = &i;
+const void* pointer_207 = &i;
+const void* pointer_208 = &i;
+const void* pointer_209 = &i;
+const void* pointer_210 = &i;
+const void* pointer_211 = &i;
+const void* pointer_212 = &i;
+const void* pointer_213 = &i;
+const void* pointer_214 = &i;
+const void* pointer_215 = &i;
+const void* pointer_216 = &i;
+const void* pointer_217 = &i;
+const void* pointer_218 = &i;
+const void* pointer_219 = &i;
+const void* pointer_220 = &i;
+const void* pointer_221 = &i;
+const void* pointer_222 = &i;
+const void* pointer_223 = &i;
+const void* pointer_224 = &i;
+const void* pointer_225 = &i;
+const void* pointer_226 = &i;
+const void* pointer_227 = &i;
+const void* pointer_228 = &i;
+const void* pointer_229 = &i;
+const void* pointer_230 = &i;
+const void* pointer_231 = &i;
+const void* pointer_232 = &i;
+const void* pointer_233 = &i;
+const void* pointer_234 = &i;
+const void* pointer_235 = &i;
+const void* pointer_236 = &i;
+const void* pointer_237 = &i;
+const void* pointer_238 = &i;
+const void* pointer_239 = &i;
+const void* pointer_240 = &i;
+const void* pointer_241 = &i;
+const void* pointer_242 = &i;
+const void* pointer_243 = &i;
+const void* pointer_244 = &i;
+const void* pointer_245 = &i;
+const void* pointer_246 = &i;
+const void* pointer_247 = &i;
+const void* pointer_248 = &i;
+const void* pointer_249 = &i;
+const void* pointer_250 = &i;
+const void* pointer_251 = &i;
+const void* pointer_252 = &i;
+const void* pointer_253 = &i;
+const void* pointer_254 = &i;
+const void* pointer_255 = &i;
+const void* pointer_256 = &i;
+const void* pointer_257 = &i;
+const void* pointer_258 = &i;
+const void* pointer_259 = &i;
+const void* pointer_260 = &i;
+const void* pointer_261 = &i;
+const void* pointer_262 = &i;
+const void* pointer_263 = &i;
+const void* pointer_264 = &i;
+const void* pointer_265 = &i;
+const void* pointer_266 = &i;
+const void* pointer_267 = &i;
+const void* pointer_268 = &i;
+const void* pointer_269 = &i;
+const void* pointer_270 = &i;
+const void* pointer_271 = &i;
+const void* pointer_272 = &i;
+const void* pointer_273 = &i;
+const void* pointer_274 = &i;
+const void* pointer_275 = &i;
+const void* pointer_276 = &i;
+const void* pointer_277 = &i;
+const void* pointer_278 = &i;
+const void* pointer_279 = &i;
+const void* pointer_280 = &i;
+const void* pointer_281 = &i;
+const void* pointer_282 = &i;
+const void* pointer_283 = &i;
+const void* pointer_284 = &i;
+const void* pointer_285 = &i;
+const void* pointer_286 = &i;
+const void* pointer_287 = &i;
+const void* pointer_288 = &i;
+const void* pointer_289 = &i;
+const void* pointer_290 = &i;
+const void* pointer_291 = &i;
+const void* pointer_292 = &i;
+const void* pointer_293 = &i;
+const void* pointer_294 = &i;
+const void* pointer_295 = &i;
+const void* pointer_296 = &i;
+const void* pointer_297 = &i;
+const void* pointer_298 = &i;
+const void* pointer_299 = &i;
+const void* pointer_300 = &i;
+const void* pointer_301 = &i;
+const void* pointer_302 = &i;
+const void* pointer_303 = &i;
+const void* pointer_304 = &i;
+const void* pointer_305 = &i;
+const void* pointer_306 = &i;
+const void* pointer_307 = &i;
+const void* pointer_308 = &i;
+const void* pointer_309 = &i;
+const void* pointer_310 = &i;
+const void* pointer_311 = &i;
+const void* pointer_312 = &i;
+const void* pointer_313 = &i;
+const void* pointer_314 = &i;
+const void* pointer_315 = &i;
+const void* pointer_316 = &i;
+const void* pointer_317 = &i;
+const void* pointer_318 = &i;
+const void* pointer_319 = &i;
+const void* pointer_320 = &i;
+const void* pointer_321 = &i;
+const void* pointer_322 = &i;
+const void* pointer_323 = &i;
+const void* pointer_324 = &i;
+const void* pointer_325 = &i;
+const void* pointer_326 = &i;
+const void* pointer_327 = &i;
+const void* pointer_328 = &i;
+const void* pointer_329 = &i;
+const void* pointer_330 = &i;
+const void* pointer_331 = &i;
+const void* pointer_332 = &i;
+const void* pointer_333 = &i;
+const void* pointer_334 = &i;
+const void* pointer_335 = &i;
+const void* pointer_336 = &i;
+const void* pointer_337 = &i;
+const void* pointer_338 = &i;
+const void* pointer_339 = &i;
+const void* pointer_340 = &i;
+const void* pointer_341 = &i;
+const void* pointer_342 = &i;
+const void* pointer_343 = &i;
+const void* pointer_344 = &i;
+const void* pointer_345 = &i;
+const void* pointer_346 = &i;
+const void* pointer_347 = &i;
+const void* pointer_348 = &i;
+const void* pointer_349 = &i;
+const void* pointer_350 = &i;
+const void* pointer_351 = &i;
+const void* pointer_352 = &i;
+const void* pointer_353 = &i;
+const void* pointer_354 = &i;
+const void* pointer_355 = &i;
+const void* pointer_356 = &i;
+const void* pointer_357 = &i;
+const void* pointer_358 = &i;
+const void* pointer_359 = &i;
+const void* pointer_360 = &i;
+const void* pointer_361 = &i;
+const void* pointer_362 = &i;
+const void* pointer_363 = &i;
+const void* pointer_364 = &i;
+const void* pointer_365 = &i;
+const void* pointer_366 = &i;
+const void* pointer_367 = &i;
+const void* pointer_368 = &i;
+const void* pointer_369 = &i;
+const void* pointer_370 = &i;
+const void* pointer_371 = &i;
+const void* pointer_372 = &i;
+const void* pointer_373 = &i;
+const void* pointer_374 = &i;
+const void* pointer_375 = &i;
+const void* pointer_376 = &i;
+const void* pointer_377 = &i;
+const void* pointer_378 = &i;
+const void* pointer_379 = &i;
+const void* pointer_380 = &i;
+const void* pointer_381 = &i;
+const void* pointer_382 = &i;
+const void* pointer_383 = &i;
+const void* pointer_384 = &i;
+const void* pointer_385 = &i;
+const void* pointer_386 = &i;
+const void* pointer_387 = &i;
+const void* pointer_388 = &i;
+const void* pointer_389 = &i;
+const void* pointer_390 = &i;
+const void* pointer_391 = &i;
+const void* pointer_392 = &i;
+const void* pointer_393 = &i;
+const void* pointer_394 = &i;
+const void* pointer_395 = &i;
+const void* pointer_396 = &i;
+const void* pointer_397 = &i;
+const void* pointer_398 = &i;
+const void* pointer_399 = &i;
+const void* pointer_400 = &i;
+const void* pointer_401 = &i;
+const void* pointer_402 = &i;
+const void* pointer_403 = &i;
+const void* pointer_404 = &i;
+const void* pointer_405 = &i;
+const void* pointer_406 = &i;
+const void* pointer_407 = &i;
+const void* pointer_408 = &i;
+const void* pointer_409 = &i;
+const void* pointer_410 = &i;
+const void* pointer_411 = &i;
+const void* pointer_412 = &i;
+const void* pointer_413 = &i;
+const void* pointer_414 = &i;
+const void* pointer_415 = &i;
+const void* pointer_416 = &i;
+const void* pointer_417 = &i;
+const void* pointer_418 = &i;
+const void* pointer_419 = &i;
+const void* pointer_420 = &i;
+const void* pointer_421 = &i;
+const void* pointer_422 = &i;
+const void* pointer_423 = &i;
+const void* pointer_424 = &i;
+const void* pointer_425 = &i;
+const void* pointer_426 = &i;
+const void* pointer_427 = &i;
+const void* pointer_428 = &i;
+const void* pointer_429 = &i;
+const void* pointer_430 = &i;
+const void* pointer_431 = &i;
+const void* pointer_432 = &i;
+const void* pointer_433 = &i;
+const void* pointer_434 = &i;
+const void* pointer_435 = &i;
+const void* pointer_436 = &i;
+const void* pointer_437 = &i;
+const void* pointer_438 = &i;
+const void* pointer_439 = &i;
+const void* pointer_440 = &i;
+const void* pointer_441 = &i;
+const void* pointer_442 = &i;
+const void* pointer_443 = &i;
+const void* pointer_444 = &i;
+const void* pointer_445 = &i;
+const void* pointer_446 = &i;
+const void* pointer_447 = &i;
+const void* pointer_448 = &i;
+const void* pointer_449 = &i;
+const void* pointer_450 = &i;
+const void* pointer_451 = &i;
+const void* pointer_452 = &i;
+const void* pointer_453 = &i;
+const void* pointer_454 = &i;
+const void* pointer_455 = &i;
+const void* pointer_456 = &i;
+const void* pointer_457 = &i;
+const void* pointer_458 = &i;
+const void* pointer_459 = &i;
+const void* pointer_460 = &i;
+const void* pointer_461 = &i;
+const void* pointer_462 = &i;
+const void* pointer_463 = &i;
+const void* pointer_464 = &i;
+const void* pointer_465 = &i;
+const void* pointer_466 = &i;
+const void* pointer_467 = &i;
+const void* pointer_468 = &i;
+const void* pointer_469 = &i;
+const void* pointer_470 = &i;
+const void* pointer_471 = &i;
+const void* pointer_472 = &i;
+const void* pointer_473 = &i;
+const void* pointer_474 = &i;
+const void* pointer_475 = &i;
+const void* pointer_476 = &i;
+const void* pointer_477 = &i;
+const void* pointer_478 = &i;
+const void* pointer_479 = &i;
+const void* pointer_480 = &i;
+const void* pointer_481 = &i;
+const void* pointer_482 = &i;
+const void* pointer_483 = &i;
+const void* pointer_484 = &i;
+const void* pointer_485 = &i;
+const void* pointer_486 = &i;
+const void* pointer_487 = &i;
+const void* pointer_488 = &i;
+const void* pointer_489 = &i;
+const void* pointer_490 = &i;
+const void* pointer_491 = &i;
+const void* pointer_492 = &i;
+const void* pointer_493 = &i;
+const void* pointer_494 = &i;
+const void* pointer_495 = &i;
+const void* pointer_496 = &i;
+const void* pointer_497 = &i;
+const void* pointer_498 = &i;
+const void* pointer_499 = &i;
+const void* pointer_500 = &i;
+const void* pointer_501 = &i;
+const void* pointer_502 = &i;
+const void* pointer_503 = &i;
+const void* pointer_504 = &i;
+const void* pointer_505 = &i;
+const void* pointer_506 = &i;
+const void* pointer_507 = &i;
+const void* pointer_508 = &i;
+const void* pointer_509 = &i;
+const void* pointer_510 = &i;
+const void* pointer_511 = &i;
+const void* pointer_512 = &i;
+const void* pointer_513 = &i;
+const void* pointer_514 = &i;
+const void* pointer_515 = &i;
+const void* pointer_516 = &i;
+const void* pointer_517 = &i;
+const void* pointer_518 = &i;
+const void* pointer_519 = &i;
+const void* pointer_520 = &i;
+const void* pointer_521 = &i;
+const void* pointer_522 = &i;
+const void* pointer_523 = &i;
+const void* pointer_524 = &i;
+const void* pointer_525 = &i;
+const void* pointer_526 = &i;
+const void* pointer_527 = &i;
+const void* pointer_528 = &i;
+const void* pointer_529 = &i;
+const void* pointer_530 = &i;
+const void* pointer_531 = &i;
+const void* pointer_532 = &i;
+const void* pointer_533 = &i;
+const void* pointer_534 = &i;
+const void* pointer_535 = &i;
+const void* pointer_536 = &i;
+const void* pointer_537 = &i;
+const void* pointer_538 = &i;
+const void* pointer_539 = &i;
+const void* pointer_540 = &i;
+const void* pointer_541 = &i;
+const void* pointer_542 = &i;
+const void* pointer_543 = &i;
+const void* pointer_544 = &i;
+const void* pointer_545 = &i;
+const void* pointer_546 = &i;
+const void* pointer_547 = &i;
+const void* pointer_548 = &i;
+const void* pointer_549 = &i;
+const void* pointer_550 = &i;
+const void* pointer_551 = &i;
+const void* pointer_552 = &i;
+const void* pointer_553 = &i;
+const void* pointer_554 = &i;
+const void* pointer_555 = &i;
+const void* pointer_556 = &i;
+const void* pointer_557 = &i;
+const void* pointer_558 = &i;
+const void* pointer_559 = &i;
+const void* pointer_560 = &i;
+const void* pointer_561 = &i;
+const void* pointer_562 = &i;
+const void* pointer_563 = &i;
+const void* pointer_564 = &i;
+const void* pointer_565 = &i;
+const void* pointer_566 = &i;
+const void* pointer_567 = &i;
+const void* pointer_568 = &i;
+const void* pointer_569 = &i;
+const void* pointer_570 = &i;
+const void* pointer_571 = &i;
+const void* pointer_572 = &i;
+const void* pointer_573 = &i;
+const void* pointer_574 = &i;
+const void* pointer_575 = &i;
+const void* pointer_576 = &i;
+const void* pointer_577 = &i;
+const void* pointer_578 = &i;
+const void* pointer_579 = &i;
+const void* pointer_580 = &i;
+const void* pointer_581 = &i;
+const void* pointer_582 = &i;
+const void* pointer_583 = &i;
+const void* pointer_584 = &i;
+const void* pointer_585 = &i;
+const void* pointer_586 = &i;
+const void* pointer_587 = &i;
+const void* pointer_588 = &i;
+const void* pointer_589 = &i;
+const void* pointer_590 = &i;
+const void* pointer_591 = &i;
+const void* pointer_592 = &i;
+const void* pointer_593 = &i;
+const void* pointer_594 = &i;
+const void* pointer_595 = &i;
+const void* pointer_596 = &i;
+const void* pointer_597 = &i;
+const void* pointer_598 = &i;
+const void* pointer_599 = &i;
+const void* pointer_600 = &i;
+const void* pointer_601 = &i;
+const void* pointer_602 = &i;
+const void* pointer_603 = &i;
+const void* pointer_604 = &i;
+const void* pointer_605 = &i;
+const void* pointer_606 = &i;
+const void* pointer_607 = &i;
+const void* pointer_608 = &i;
+const void* pointer_609 = &i;
+const void* pointer_610 = &i;
+const void* pointer_611 = &i;
+const void* pointer_612 = &i;
+const void* pointer_613 = &i;
+const void* pointer_614 = &i;
+const void* pointer_615 = &i;
+const void* pointer_616 = &i;
+const void* pointer_617 = &i;
+const void* pointer_618 = &i;
+const void* pointer_619 = &i;
+const void* pointer_620 = &i;
+const void* pointer_621 = &i;
+const void* pointer_622 = &i;
+const void* pointer_623 = &i;
+const void* pointer_624 = &i;
+const void* pointer_625 = &i;
+const void* pointer_626 = &i;
+const void* pointer_627 = &i;
+const void* pointer_628 = &i;
+const void* pointer_629 = &i;
+const void* pointer_630 = &i;
+const void* pointer_631 = &i;
+const void* pointer_632 = &i;
+const void* pointer_633 = &i;
+const void* pointer_634 = &i;
+const void* pointer_635 = &i;
+const void* pointer_636 = &i;
+const void* pointer_637 = &i;
+const void* pointer_638 = &i;
+const void* pointer_639 = &i;
+const void* pointer_640 = &i;
+const void* pointer_641 = &i;
+const void* pointer_642 = &i;
+const void* pointer_643 = &i;
+const void* pointer_644 = &i;
+const void* pointer_645 = &i;
+const void* pointer_646 = &i;
+const void* pointer_647 = &i;
+const void* pointer_648 = &i;
+const void* pointer_649 = &i;
+const void* pointer_650 = &i;
+const void* pointer_651 = &i;
+const void* pointer_652 = &i;
+const void* pointer_653 = &i;
+const void* pointer_654 = &i;
+const void* pointer_655 = &i;
+const void* pointer_656 = &i;
+const void* pointer_657 = &i;
+const void* pointer_658 = &i;
+const void* pointer_659 = &i;
+const void* pointer_660 = &i;
+const void* pointer_661 = &i;
+const void* pointer_662 = &i;
+const void* pointer_663 = &i;
+const void* pointer_664 = &i;
+const void* pointer_665 = &i;
+const void* pointer_666 = &i;
+const void* pointer_667 = &i;
+const void* pointer_668 = &i;
+const void* pointer_669 = &i;
+const void* pointer_670 = &i;
+const void* pointer_671 = &i;
+const void* pointer_672 = &i;
+const void* pointer_673 = &i;
+const void* pointer_674 = &i;
+const void* pointer_675 = &i;
+const void* pointer_676 = &i;
+const void* pointer_677 = &i;
+const void* pointer_678 = &i;
+const void* pointer_679 = &i;
+const void* pointer_680 = &i;
+const void* pointer_681 = &i;
+const void* pointer_682 = &i;
+const void* pointer_683 = &i;
+const void* pointer_684 = &i;
+const void* pointer_685 = &i;
+const void* pointer_686 = &i;
+const void* pointer_687 = &i;
+const void* pointer_688 = &i;
+const void* pointer_689 = &i;
+const void* pointer_690 = &i;
+const void* pointer_691 = &i;
+const void* pointer_692 = &i;
+const void* pointer_693 = &i;
+const void* pointer_694 = &i;
+const void* pointer_695 = &i;
+const void* pointer_696 = &i;
+const void* pointer_697 = &i;
+const void* pointer_698 = &i;
+const void* pointer_699 = &i;
+const void* pointer_700 = &i;
+const void* pointer_701 = &i;
+const void* pointer_702 = &i;
+const void* pointer_703 = &i;
+const void* pointer_704 = &i;
+const void* pointer_705 = &i;
+const void* pointer_706 = &i;
+const void* pointer_707 = &i;
+const void* pointer_708 = &i;
+const void* pointer_709 = &i;
+const void* pointer_710 = &i;
+const void* pointer_711 = &i;
+const void* pointer_712 = &i;
+const void* pointer_713 = &i;
+const void* pointer_714 = &i;
+const void* pointer_715 = &i;
+const void* pointer_716 = &i;
+const void* pointer_717 = &i;
+const void* pointer_718 = &i;
+const void* pointer_719 = &i;
+const void* pointer_720 = &i;
+const void* pointer_721 = &i;
+const void* pointer_722 = &i;
+const void* pointer_723 = &i;
+const void* pointer_724 = &i;
+const void* pointer_725 = &i;
+const void* pointer_726 = &i;
+const void* pointer_727 = &i;
+const void* pointer_728 = &i;
+const void* pointer_729 = &i;
+const void* pointer_730 = &i;
+const void* pointer_731 = &i;
+const void* pointer_732 = &i;
+const void* pointer_733 = &i;
+const void* pointer_734 = &i;
+const void* pointer_735 = &i;
+const void* pointer_736 = &i;
+const void* pointer_737 = &i;
+const void* pointer_738 = &i;
+const void* pointer_739 = &i;
+const void* pointer_740 = &i;
+const void* pointer_741 = &i;
+const void* pointer_742 = &i;
+const void* pointer_743 = &i;
+const void* pointer_744 = &i;
+const void* pointer_745 = &i;
+const void* pointer_746 = &i;
+const void* pointer_747 = &i;
+const void* pointer_748 = &i;
+const void* pointer_749 = &i;
+const void* pointer_750 = &i;
+const void* pointer_751 = &i;
+const void* pointer_752 = &i;
+const void* pointer_753 = &i;
+const void* pointer_754 = &i;
+const void* pointer_755 = &i;
+const void* pointer_756 = &i;
+const void* pointer_757 = &i;
+const void* pointer_758 = &i;
+const void* pointer_759 = &i;
+const void* pointer_760 = &i;
+const void* pointer_761 = &i;
+const void* pointer_762 = &i;
+const void* pointer_763 = &i;
+const void* pointer_764 = &i;
+const void* pointer_765 = &i;
+const void* pointer_766 = &i;
+const void* pointer_767 = &i;
+const void* pointer_768 = &i;
+const void* pointer_769 = &i;
+const void* pointer_770 = &i;
+const void* pointer_771 = &i;
+const void* pointer_772 = &i;
+const void* pointer_773 = &i;
+const void* pointer_774 = &i;
+const void* pointer_775 = &i;
+const void* pointer_776 = &i;
+const void* pointer_777 = &i;
+const void* pointer_778 = &i;
+const void* pointer_779 = &i;
+const void* pointer_780 = &i;
+const void* pointer_781 = &i;
+const void* pointer_782 = &i;
+const void* pointer_783 = &i;
+const void* pointer_784 = &i;
+const void* pointer_785 = &i;
+const void* pointer_786 = &i;
+const void* pointer_787 = &i;
+const void* pointer_788 = &i;
+const void* pointer_789 = &i;
+const void* pointer_790 = &i;
+const void* pointer_791 = &i;
+const void* pointer_792 = &i;
+const void* pointer_793 = &i;
+const void* pointer_794 = &i;
+const void* pointer_795 = &i;
+const void* pointer_796 = &i;
+const void* pointer_797 = &i;
+const void* pointer_798 = &i;
+const void* pointer_799 = &i;
+const void* pointer_800 = &i;
+const void* pointer_801 = &i;
+const void* pointer_802 = &i;
+const void* pointer_803 = &i;
+const void* pointer_804 = &i;
+const void* pointer_805 = &i;
+const void* pointer_806 = &i;
+const void* pointer_807 = &i;
+const void* pointer_808 = &i;
+const void* pointer_809 = &i;
+const void* pointer_810 = &i;
+const void* pointer_811 = &i;
+const void* pointer_812 = &i;
+const void* pointer_813 = &i;
+const void* pointer_814 = &i;
+const void* pointer_815 = &i;
+const void* pointer_816 = &i;
+const void* pointer_817 = &i;
+const void* pointer_818 = &i;
+const void* pointer_819 = &i;
+const void* pointer_820 = &i;
+const void* pointer_821 = &i;
+const void* pointer_822 = &i;
+const void* pointer_823 = &i;
+const void* pointer_824 = &i;
+const void* pointer_825 = &i;
+const void* pointer_826 = &i;
+const void* pointer_827 = &i;
+const void* pointer_828 = &i;
+const void* pointer_829 = &i;
+const void* pointer_830 = &i;
+const void* pointer_831 = &i;
+const void* pointer_832 = &i;
+const void* pointer_833 = &i;
+const void* pointer_834 = &i;
+const void* pointer_835 = &i;
+const void* pointer_836 = &i;
+const void* pointer_837 = &i;
+const void* pointer_838 = &i;
+const void* pointer_839 = &i;
+const void* pointer_840 = &i;
+const void* pointer_841 = &i;
+const void* pointer_842 = &i;
+const void* pointer_843 = &i;
+const void* pointer_844 = &i;
+const void* pointer_845 = &i;
+const void* pointer_846 = &i;
+const void* pointer_847 = &i;
+const void* pointer_848 = &i;
+const void* pointer_849 = &i;
+const void* pointer_850 = &i;
+const void* pointer_851 = &i;
+const void* pointer_852 = &i;
+const void* pointer_853 = &i;
+const void* pointer_854 = &i;
+const void* pointer_855 = &i;
+const void* pointer_856 = &i;
+const void* pointer_857 = &i;
+const void* pointer_858 = &i;
+const void* pointer_859 = &i;
+const void* pointer_860 = &i;
+const void* pointer_861 = &i;
+const void* pointer_862 = &i;
+const void* pointer_863 = &i;
+const void* pointer_864 = &i;
+const void* pointer_865 = &i;
+const void* pointer_866 = &i;
+const void* pointer_867 = &i;
+const void* pointer_868 = &i;
+const void* pointer_869 = &i;
+const void* pointer_870 = &i;
+const void* pointer_871 = &i;
+const void* pointer_872 = &i;
+const void* pointer_873 = &i;
+const void* pointer_874 = &i;
+const void* pointer_875 = &i;
+const void* pointer_876 = &i;
+const void* pointer_877 = &i;
+const void* pointer_878 = &i;
+const void* pointer_879 = &i;
+const void* pointer_880 = &i;
+const void* pointer_881 = &i;
+const void* pointer_882 = &i;
+const void* pointer_883 = &i;
+const void* pointer_884 = &i;
+const void* pointer_885 = &i;
+const void* pointer_886 = &i;
+const void* pointer_887 = &i;
+const void* pointer_888 = &i;
+const void* pointer_889 = &i;
+const void* pointer_890 = &i;
+const void* pointer_891 = &i;
+const void* pointer_892 = &i;
+const void* pointer_893 = &i;
+const void* pointer_894 = &i;
+const void* pointer_895 = &i;
+const void* pointer_896 = &i;
+const void* pointer_897 = &i;
+const void* pointer_898 = &i;
+const void* pointer_899 = &i;
+const void* pointer_900 = &i;
+const void* pointer_901 = &i;
+const void* pointer_902 = &i;
+const void* pointer_903 = &i;
+const void* pointer_904 = &i;
+const void* pointer_905 = &i;
+const void* pointer_906 = &i;
+const void* pointer_907 = &i;
+const void* pointer_908 = &i;
+const void* pointer_909 = &i;
+const void* pointer_910 = &i;
+const void* pointer_911 = &i;
+const void* pointer_912 = &i;
+const void* pointer_913 = &i;
+const void* pointer_914 = &i;
+const void* pointer_915 = &i;
+const void* pointer_916 = &i;
+const void* pointer_917 = &i;
+const void* pointer_918 = &i;
+const void* pointer_919 = &i;
+const void* pointer_920 = &i;
+const void* pointer_921 = &i;
+const void* pointer_922 = &i;
+const void* pointer_923 = &i;
+const void* pointer_924 = &i;
+const void* pointer_925 = &i;
+const void* pointer_926 = &i;
+const void* pointer_927 = &i;
+const void* pointer_928 = &i;
+const void* pointer_929 = &i;
+const void* pointer_930 = &i;
+const void* pointer_931 = &i;
+const void* pointer_932 = &i;
+const void* pointer_933 = &i;
+const void* pointer_934 = &i;
+const void* pointer_935 = &i;
+const void* pointer_936 = &i;
+const void* pointer_937 = &i;
+const void* pointer_938 = &i;
+const void* pointer_939 = &i;
+const void* pointer_940 = &i;
+const void* pointer_941 = &i;
+const void* pointer_942 = &i;
+const void* pointer_943 = &i;
+const void* pointer_944 = &i;
+const void* pointer_945 = &i;
+const void* pointer_946 = &i;
+const void* pointer_947 = &i;
+const void* pointer_948 = &i;
+const void* pointer_949 = &i;
+const void* pointer_950 = &i;
+const void* pointer_951 = &i;
+const void* pointer_952 = &i;
+const void* pointer_953 = &i;
+const void* pointer_954 = &i;
+const void* pointer_955 = &i;
+const void* pointer_956 = &i;
+const void* pointer_957 = &i;
+const void* pointer_958 = &i;
+const void* pointer_959 = &i;
+const void* pointer_960 = &i;
+const void* pointer_961 = &i;
+const void* pointer_962 = &i;
+const void* pointer_963 = &i;
+const void* pointer_964 = &i;
+const void* pointer_965 = &i;
+const void* pointer_966 = &i;
+const void* pointer_967 = &i;
+const void* pointer_968 = &i;
+const void* pointer_969 = &i;
+const void* pointer_970 = &i;
+const void* pointer_971 = &i;
+const void* pointer_972 = &i;
+const void* pointer_973 = &i;
+const void* pointer_974 = &i;
+const void* pointer_975 = &i;
+const void* pointer_976 = &i;
+const void* pointer_977 = &i;
+const void* pointer_978 = &i;
+const void* pointer_979 = &i;
+const void* pointer_980 = &i;
+const void* pointer_981 = &i;
+const void* pointer_982 = &i;
+const void* pointer_983 = &i;
+const void* pointer_984 = &i;
+const void* pointer_985 = &i;
+const void* pointer_986 = &i;
+const void* pointer_987 = &i;
+const void* pointer_988 = &i;
+const void* pointer_989 = &i;
+const void* pointer_990 = &i;
+const void* pointer_991 = &i;
+const void* pointer_992 = &i;
+const void* pointer_993 = &i;
+const void* pointer_994 = &i;
+const void* pointer_995 = &i;
+const void* pointer_996 = &i;
+const void* pointer_997 = &i;
+const void* pointer_998 = &i;
+const void* pointer_999 = &i;
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so
new file mode 100755
index 0000000..6ce6d0c
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so
new file mode 100755
index 0000000..d97ef82
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm32_packed.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so
new file mode 100755
index 0000000..945b450
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64.so
Binary files differ
diff --git a/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so
new file mode 100755
index 0000000..e44e459
--- /dev/null
+++ b/tools/relocation_packer/test_data/elf_file_unittest_relocs_arm64_packed.so
Binary files differ