Add x86 optimization of rint functions and tests

Change-Id: I5e7696ff9bcb1efc2625100ef8565b68dca2326c
Signed-off-by: Jingwei Zhang <jingwei.zhang@intel.com>
diff --git a/libm/Android.mk b/libm/Android.mk
index 7e0656d..5dd140b 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -345,6 +345,8 @@
     x86/libm_reduce_pi04l.S \
     x86/libm_sincos_huge.S \
     x86/libm_tancot_huge.S \
+    x86/lrint.S \
+    x86/lrintf.S \
     x86/s_atan.S \
     x86/s_cbrt.S \
     x86/s_cos.S \
@@ -372,6 +374,8 @@
     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_lrint.c \
+    upstream-freebsd/lib/msun/src/s_lrintf.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 \
@@ -382,6 +386,8 @@
     x86/ceilf.S \
     x86/floor.S \
     x86/floorf.S \
+    x86/rint.S \
+    x86/rintf.S \
     x86/trunc.S \
     x86/truncf.S \
 
@@ -390,6 +396,8 @@
     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_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
     upstream-freebsd/lib/msun/src/s_trunc.c \
     upstream-freebsd/lib/msun/src/s_truncf.c \
 
@@ -412,6 +420,8 @@
     x86_64/e_log.S \
     x86_64/e_pow.S \
     x86_64/e_sinh.S \
+    x86_64/lrint.S \
+    x86_64/lrintf.S \
     x86_64/s_atan.S \
     x86_64/s_cbrt.S \
     x86_64/s_cos.S \
@@ -439,6 +449,10 @@
     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_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_sin.c \
     upstream-freebsd/lib/msun/src/s_tan.c \
     upstream-freebsd/lib/msun/src/s_tanh.c \
@@ -449,6 +463,8 @@
     x86_64/ceilf.S \
     x86_64/floor.S \
     x86_64/floorf.S \
+    x86_64/rint.S \
+    x86_64/rintf.S \
     x86_64/trunc.S \
     x86_64/truncf.S \
 
@@ -457,6 +473,8 @@
     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_rint.c \
+    upstream-freebsd/lib/msun/src/s_rintf.c \
     upstream-freebsd/lib/msun/src/s_trunc.c \
     upstream-freebsd/lib/msun/src/s_truncf.c \
 
diff --git a/libm/fake_long_double.c b/libm/fake_long_double.c
index 5edf839..20148a3 100644
--- a/libm/fake_long_double.c
+++ b/libm/fake_long_double.c
@@ -30,7 +30,9 @@
 long double fminl(long double a1, long double a2) { return fmin(a1, a2); }
 int ilogbl(long double a1) { return ilogb(a1); }
 long long llrintl(long double a1) { return llrint(a1); }
+#if !defined(__i386__) // x86 has an assembler lrint/lrintl.
 long lrintl(long double a1) { return lrint(a1); }
+#endif
 long long llroundl(long double a1) { return llround(a1); }
 long lroundl(long double a1) { return lround(a1); }
 long double modfl(long double a1, long double* a2) { double i; double f = modf(a1, &i); *a2 = i; return f; }
diff --git a/libm/x86/lrint.S b/libm/x86/lrint.S
new file mode 100644
index 0000000..48d71dd
--- /dev/null
+++ b/libm/x86/lrint.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(lrint)
+  // LP32 sizeof(long) == 4.
+  movsd     0x4(%esp),%xmm0
+  cvtsd2si  %xmm0, %eax
+  ret
+END(lrint)
+
+// LP32 sizeof(long double) == sizeof(double).
+ALIAS_SYMBOL(lrintl, lrint);
diff --git a/libm/x86/lrintf.S b/libm/x86/lrintf.S
new file mode 100644
index 0000000..bc8fcb3
--- /dev/null
+++ b/libm/x86/lrintf.S
@@ -0,0 +1,33 @@
+/*
+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(lrintf)
+  // LP32 sizeof(long) == 4.
+  movss     0x4(%esp),%xmm0
+  cvtss2si  %xmm0, %eax
+  ret
+END(lrintf)
diff --git a/libm/x86/rint.S b/libm/x86/rint.S
new file mode 100644
index 0000000..85635f2
--- /dev/null
+++ b/libm/x86/rint.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(rint)
+  subl    $12,%esp
+  movsd   16(%esp),%xmm0
+  roundsd $4,%xmm0,%xmm0
+  movsd   %xmm0,(%esp)
+  fldl    (%esp)
+  addl    $12,%esp
+  ret
+END(rint)
+
+// LP32 sizeof(long double) == sizeof(double).
+ALIAS_SYMBOL(rintl, rint);
diff --git a/libm/x86/rintf.S b/libm/x86/rintf.S
new file mode 100644
index 0000000..9f82400
--- /dev/null
+++ b/libm/x86/rintf.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(rintf)
+  subl    $12,%esp
+  movss   16(%esp),%xmm0
+  roundss $4,%xmm0,%xmm0
+  movss   %xmm0,(%esp)
+  flds    (%esp)
+  add     $12,%esp
+  ret
+END(rintf)
diff --git a/libm/x86_64/lrint.S b/libm/x86_64/lrint.S
new file mode 100644
index 0000000..f809a1f
--- /dev/null
+++ b/libm/x86_64/lrint.S
@@ -0,0 +1,35 @@
+/*
+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(lrint)
+  // LP64 sizeof(long) == 8.
+  cvtsd2si  %xmm0, %rax
+  ret
+END(lrint)
+
+// LP64 sizeof(long long) == sizeof(long).
+ALIAS_SYMBOL(llrint, lrint);
diff --git a/libm/x86_64/lrintf.S b/libm/x86_64/lrintf.S
new file mode 100644
index 0000000..a661cbc
--- /dev/null
+++ b/libm/x86_64/lrintf.S
@@ -0,0 +1,35 @@
+/*
+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(lrintf)
+  // LP64 sizeof(long) == 8.
+  cvtss2si  %xmm0, %rax
+  ret
+END(lrintf)
+
+// LP64 sizeof(long long) == sizeof(long).
+ALIAS_SYMBOL(llrintf, lrintf);
diff --git a/libm/x86_64/rint.S b/libm/x86_64/rint.S
new file mode 100644
index 0000000..098fdc5
--- /dev/null
+++ b/libm/x86_64/rint.S
@@ -0,0 +1,31 @@
+/*
+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(rint)
+  roundsd $0x4,%xmm0,%xmm0
+  retq
+END(rint)
diff --git a/libm/x86_64/rintf.S b/libm/x86_64/rintf.S
new file mode 100644
index 0000000..09f5e9c
--- /dev/null
+++ b/libm/x86_64/rintf.S
@@ -0,0 +1,31 @@
+/*
+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(rintf)
+  roundss $0x4,%xmm0,%xmm0
+  retq
+END(rintf)
diff --git a/tests/math_data/llrint_intel_data.h b/tests/math_data/llrint_intel_data.h
new file mode 100644
index 0000000..a6861c2
--- /dev/null
+++ b/tests/math_data/llrint_intel_data.h
@@ -0,0 +1,1242 @@
+/*
+ * Copyright (C) 2016 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_llong_1_t<double> g_llrint_intel_data[] = {
+  { // Entry 0
+    (long long int)0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    (long long int)0.0,
+    -0.0
+  },
+  { // Entry 2
+    (long long int)0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    (long long int)0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    (long long int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    (long long int)0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    (long long int)0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    (long long int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    (long long int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    (long long int)0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    (long long int)0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    (long long int)0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    (long long int)0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    (long long int)0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    (long long int)0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    (long long int)0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    (long long int)0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    (long long int)0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    (long long int)0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    (long long int)0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    (long long int)0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    (long long int)0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    (long long int)0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    (long long int)0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    (long long int)0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    (long long int)0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    (long long int)0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    (long long int)0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    (long long int)0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    (long long int)0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    (long long int)0x1.p50,
+    0x1.fffffffffffffp49
+  },
+  { // Entry 31
+    (long long int)0x1.p50,
+    0x1.0p50
+  },
+  { // Entry 32
+    (long long int)0x1.p50,
+    0x1.0000000000001p50
+  },
+  { // Entry 33
+    (long long int)0x1.p51,
+    0x1.fffffffffffffp50
+  },
+  { // Entry 34
+    (long long int)0x1.p51,
+    0x1.0p51
+  },
+  { // Entry 35
+    (long long int)0x1.p51,
+    0x1.0000000000001p51
+  },
+  { // Entry 36
+    (long long int)0x1.p52,
+    0x1.fffffffffffffp51
+  },
+  { // Entry 37
+    (long long int)0x1.p52,
+    0x1.0p52
+  },
+  { // Entry 38
+    (long long int)0x1.00000000000010p52,
+    0x1.0000000000001p52
+  },
+  { // Entry 39
+    (long long int)0x1.fffffffffffff0p52,
+    0x1.fffffffffffffp52
+  },
+  { // Entry 40
+    (long long int)0x1.p53,
+    0x1.0p53
+  },
+  { // Entry 41
+    (long long int)0x1.00000000000010p53,
+    0x1.0000000000001p53
+  },
+  { // Entry 42
+    (long long int)0x1.fffffffffffff0p53,
+    0x1.fffffffffffffp53
+  },
+  { // Entry 43
+    (long long int)0x1.p54,
+    0x1.0p54
+  },
+  { // Entry 44
+    (long long int)0x1.00000000000010p54,
+    0x1.0000000000001p54
+  },
+  { // Entry 45
+    (long long int)-0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 46
+    (long long int)0.0,
+    -0x1.0p-1
+  },
+  { // Entry 47
+    (long long int)0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 48
+    (long long int)-0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 49
+    (long long int)-0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 50
+    (long long int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 51
+    (long long int)-0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 52
+    (long long int)-0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 53
+    (long long int)-0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 54
+    (long long int)-0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 55
+    (long long int)-0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 56
+    (long long int)-0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 57
+    (long long int)-0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 58
+    (long long int)-0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 59
+    (long long int)-0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 60
+    (long long int)-0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 61
+    (long long int)-0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 62
+    (long long int)-0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 63
+    (long long int)-0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 64
+    (long long int)-0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 65
+    (long long int)-0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 66
+    (long long int)-0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 67
+    (long long int)-0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 68
+    (long long int)-0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 69
+    (long long int)-0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 70
+    (long long int)-0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 71
+    (long long int)-0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 72
+    (long long int)-0x1.p50,
+    -0x1.0000000000001p50
+  },
+  { // Entry 73
+    (long long int)-0x1.p50,
+    -0x1.0p50
+  },
+  { // Entry 74
+    (long long int)-0x1.p50,
+    -0x1.fffffffffffffp49
+  },
+  { // Entry 75
+    (long long int)-0x1.p51,
+    -0x1.0000000000001p51
+  },
+  { // Entry 76
+    (long long int)-0x1.p51,
+    -0x1.0p51
+  },
+  { // Entry 77
+    (long long int)-0x1.p51,
+    -0x1.fffffffffffffp50
+  },
+  { // Entry 78
+    (long long int)-0x1.00000000000010p52,
+    -0x1.0000000000001p52
+  },
+  { // Entry 79
+    (long long int)-0x1.p52,
+    -0x1.0p52
+  },
+  { // Entry 80
+    (long long int)-0x1.p52,
+    -0x1.fffffffffffffp51
+  },
+  { // Entry 81
+    (long long int)-0x1.00000000000010p53,
+    -0x1.0000000000001p53
+  },
+  { // Entry 82
+    (long long int)-0x1.p53,
+    -0x1.0p53
+  },
+  { // Entry 83
+    (long long int)-0x1.fffffffffffff0p52,
+    -0x1.fffffffffffffp52
+  },
+  { // Entry 84
+    (long long int)-0x1.00000000000010p54,
+    -0x1.0000000000001p54
+  },
+  { // Entry 85
+    (long long int)-0x1.p54,
+    -0x1.0p54
+  },
+  { // Entry 86
+    (long long int)-0x1.fffffffffffff0p53,
+    -0x1.fffffffffffffp53
+  },
+  { // Entry 87
+    (long long int)0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 88
+    (long long int)0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 89
+    (long long int)0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 90
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 91
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 92
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 93
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 94
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 95
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 96
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 97
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 98
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 99
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 100
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 101
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 102
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 103
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 104
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 105
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 106
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 107
+    (long long int)0x1.p31,
+    0x1.fffffffe0p30
+  },
+  { // Entry 108
+    (long long int)0x1.p31,
+    0x1.fffffffe00001p30
+  },
+  { // Entry 109
+    (long long int)0x1.p31,
+    0x1.fffffffe00002p30
+  },
+  { // Entry 110
+    (long long int)0x1.p31,
+    0x1.ffffffffffffep30
+  },
+  { // Entry 111
+    (long long int)0x1.p31,
+    0x1.fffffffffffffp30
+  },
+  { // Entry 112
+    (long long int)0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 113
+    (long long int)0x1.p31,
+    0x1.0000000000001p31
+  },
+  { // Entry 114
+    (long long int)0x1.p31,
+    0x1.0000000000002p31
+  },
+  { // Entry 115
+    (long long int)0x1.p31,
+    0x1.00000000ffffep31
+  },
+  { // Entry 116
+    (long long int)0x1.p31,
+    0x1.00000000fffffp31
+  },
+  { // Entry 117
+    (long long int)0x1.p31,
+    0x1.000000010p31
+  },
+  { // Entry 118
+    (long long int)0x1.00000002p31,
+    0x1.0000000100001p31
+  },
+  { // Entry 119
+    (long long int)0x1.00000002p31,
+    0x1.0000000100002p31
+  },
+  { // Entry 120
+    (long long int)0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 121
+    (long long int)0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 122
+    (long long int)0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 123
+    (long long int)0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 124
+    (long long int)0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 125
+    (long long int)0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 126
+    (long long int)0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 127
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 128
+    (long long int)0x1.p31,
+    0x1.0p31
+  },
+  { // Entry 129
+    (long long int)0x1.00000002p31,
+    0x1.000000020p31
+  },
+  { // Entry 130
+    (long long int)-0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 131
+    (long long int)-0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 132
+    (long long int)-0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 133
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 134
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 135
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 136
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 137
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 138
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 139
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 140
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 141
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 142
+    (long long int)-0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 143
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 144
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 145
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 146
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 147
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 148
+    (long long int)-0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 149
+    (long long int)-0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 150
+    (long long int)-0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 151
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 152
+    (long long int)-0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 153
+    (long long int)-0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 154
+    (long long int)-0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 155
+    (long long int)-0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 156
+    (long long int)-0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 157
+    (long long int)-0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 158
+    (long long int)-0x1.00000002p31,
+    -0x1.0000000100002p31
+  },
+  { // Entry 159
+    (long long int)-0x1.00000002p31,
+    -0x1.0000000100001p31
+  },
+  { // Entry 160
+    (long long int)-0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 161
+    (long long int)-0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 162
+    (long long int)-0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 163
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 164
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 165
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 166
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 167
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 168
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 169
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 170
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 171
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 172
+    (long long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 173
+    (long long int)0x1.ffffffffffffe0p61,
+    0x1.ffffffffffffep61
+  },
+  { // Entry 174
+    (long long int)0x1.fffffffffffff0p61,
+    0x1.fffffffffffffp61
+  },
+  { // Entry 175
+    (long long int)0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 176
+    (long long int)0x1.00000000000010p62,
+    0x1.0000000000001p62
+  },
+  { // Entry 177
+    (long long int)0x1.00000000000020p62,
+    0x1.0000000000002p62
+  },
+  { // Entry 178
+    (long long int)0x1.ffffffffffffe0p62,
+    0x1.ffffffffffffep62
+  },
+  { // Entry 179
+    (long long int)0x1.fffffffffffff0p62,
+    0x1.fffffffffffffp62
+  },
+  { // Entry 180
+    (long long int)-0x1.00000000000020p62,
+    -0x1.0000000000002p62
+  },
+  { // Entry 181
+    (long long int)-0x1.00000000000010p62,
+    -0x1.0000000000001p62
+  },
+  { // Entry 182
+    (long long int)-0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 183
+    (long long int)-0x1.fffffffffffff0p61,
+    -0x1.fffffffffffffp61
+  },
+  { // Entry 184
+    (long long int)-0x1.ffffffffffffe0p61,
+    -0x1.ffffffffffffep61
+  },
+  { // Entry 185
+    (long long int)-0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 186
+    (long long int)-0x1.fffffffffffff0p62,
+    -0x1.fffffffffffffp62
+  },
+  { // Entry 187
+    (long long int)-0x1.ffffffffffffe0p62,
+    -0x1.ffffffffffffep62
+  },
+  { // Entry 188
+    (long long int)0x1.p62,
+    0x1.0p62
+  },
+  { // Entry 189
+    (long long int)-0x1.p62,
+    -0x1.0p62
+  },
+  { // Entry 190
+    (long long int)-0x1.p63,
+    -0x1.0p63
+  },
+  { // Entry 191
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 192
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 193
+    (long long int)0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 194
+    (long long int)-0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 195
+    (long long int)-0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 196
+    (long long int)-0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 197
+    (long long int)0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 198
+    (long long int)0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 199
+    (long long int)0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 200
+    (long long int)0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 201
+    (long long int)0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 202
+    (long long int)0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 203
+    (long long int)0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 204
+    (long long int)0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 205
+    (long long int)0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 206
+    (long long int)0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 207
+    (long long int)0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 208
+    (long long int)0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 209
+    (long long int)0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 210
+    (long long int)0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 211
+    (long long int)0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 212
+    (long long int)0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 213
+    (long long int)0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 214
+    (long long int)0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 215
+    (long long int)0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 216
+    (long long int)0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 217
+    (long long int)0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 218
+    (long long int)0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 219
+    (long long int)0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 220
+    (long long int)0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 221
+    (long long int)0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 222
+    (long long int)0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 223
+    (long long int)0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 224
+    (long long int)0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 225
+    (long long int)0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 226
+    (long long int)0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 227
+    (long long int)0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 228
+    (long long int)0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 229
+    (long long int)0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 230
+    (long long int)0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 231
+    (long long int)0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 232
+    (long long int)0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 233
+    (long long int)0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 234
+    (long long int)0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 235
+    (long long int)0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 236
+    (long long int)0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 237
+    (long long int)0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 238
+    (long long int)0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 239
+    (long long int)0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 240
+    (long long int)0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 241
+    (long long int)0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 242
+    (long long int)0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 243
+    (long long int)0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 244
+    (long long int)0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 245
+    (long long int)0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 246
+    (long long int)0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 247
+    (long long int)0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 248
+    (long long int)0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 249
+    (long long int)0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 250
+    (long long int)0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 251
+    (long long int)0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 252
+    (long long int)0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 253
+    (long long int)0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 254
+    (long long int)0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 255
+    (long long int)0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 256
+    (long long int)0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 257
+    (long long int)0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 258
+    (long long int)0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 259
+    (long long int)0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 260
+    (long long int)0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 261
+    (long long int)0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 262
+    (long long int)0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 263
+    (long long int)0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 264
+    (long long int)0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 265
+    (long long int)0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 266
+    (long long int)0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 267
+    (long long int)-0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 268
+    (long long int)0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 269
+    (long long int)-0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 270
+    (long long int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 271
+    (long long int)-0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 272
+    (long long int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 273
+    (long long int)-0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 274
+    (long long int)0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 275
+    (long long int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 276
+    (long long int)0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 277
+    (long long int)-0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 278
+    (long long int)0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 279
+    (long long int)0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 280
+    (long long int)0.0,
+    0x1.0p-1022
+  },
+  { // Entry 281
+    (long long int)0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 282
+    (long long int)0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 283
+    (long long int)0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 284
+    (long long int)0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 285
+    (long long int)0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 286
+    (long long int)0.0,
+    0x1.0p-1073
+  },
+  { // Entry 287
+    (long long int)0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 288
+    (long long int)0.0,
+    0x1.0p-1074
+  },
+  { // Entry 289
+    (long long int)0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 290
+    (long long int)0.0,
+    0.0
+  },
+  { // Entry 291
+    (long long int)0.0,
+    -0.0
+  },
+  { // Entry 292
+    (long long int)0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 293
+    (long long int)-0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 294
+    (long long int)0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 295
+    (long long int)-0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 296
+    (long long int)0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 297
+    (long long int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 298
+    (long long int)0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 299
+    (long long int)0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 300
+    (long long int)0.0,
+    -0x1.0p-1
+  },
+  { // Entry 301
+    (long long int)-0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 302
+    (long long int)0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 303
+    (long long int)0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 304
+    (long long int)-0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 305
+    (long long int)-0x1.p0,
+    -0x1.7ffffp0
+  }
+};
\ No newline at end of file
diff --git a/tests/math_data/llrintf_intel_data.h b/tests/math_data/llrintf_intel_data.h
new file mode 100644
index 0000000..ecb22da
--- /dev/null
+++ b/tests/math_data/llrintf_intel_data.h
@@ -0,0 +1,1242 @@
+/*
+ * Copyright (C) 2016 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_llong_1_t<float> g_llrintf_intel_data[] = {
+  { // Entry 0
+    (long long int)0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    (long long int)0.0,
+    0.0
+  },
+  { // Entry 2
+    (long long int)0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    (long long int)0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    (long long int)0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    (long long int)0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    (long long int)0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    (long long int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    (long long int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    (long long int)0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    (long long int)0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    (long long int)0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    (long long int)0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    (long long int)0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    (long long int)0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    (long long int)0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    (long long int)0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    (long long int)0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    (long long int)0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    (long long int)0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    (long long int)0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    (long long int)0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    (long long int)0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    (long long int)0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    (long long int)0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    (long long int)0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    (long long int)0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    (long long int)0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    (long long int)0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    (long long int)0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    (long long int)0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    (long long int)0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    (long long int)0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    (long long int)0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    (long long int)0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    (long long int)0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    (long long int)0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    (long long int)0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    (long long int)0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    (long long int)0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    (long long int)0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    (long long int)0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    (long long int)0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    (long long int)0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    (long long int)0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    (long long int)-0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 46
+    (long long int)0.0,
+    -0x1.p-1
+  },
+  { // Entry 47
+    (long long int)0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 48
+    (long long int)-0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 49
+    (long long int)-0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 50
+    (long long int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 51
+    (long long int)-0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 52
+    (long long int)-0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 53
+    (long long int)-0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 54
+    (long long int)-0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 55
+    (long long int)-0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 56
+    (long long int)-0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 57
+    (long long int)-0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 58
+    (long long int)-0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 59
+    (long long int)-0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 60
+    (long long int)-0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 61
+    (long long int)-0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 62
+    (long long int)-0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 63
+    (long long int)-0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 64
+    (long long int)-0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 65
+    (long long int)-0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 66
+    (long long int)-0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 67
+    (long long int)-0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 68
+    (long long int)-0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 69
+    (long long int)-0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 70
+    (long long int)-0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 71
+    (long long int)-0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 72
+    (long long int)-0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 73
+    (long long int)-0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 74
+    (long long int)-0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 75
+    (long long int)-0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 76
+    (long long int)-0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 77
+    (long long int)-0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 78
+    (long long int)-0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 79
+    (long long int)-0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 80
+    (long long int)-0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 81
+    (long long int)-0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 82
+    (long long int)-0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 83
+    (long long int)-0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 84
+    (long long int)-0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 85
+    (long long int)-0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 86
+    (long long int)-0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 87
+    (long long int)0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 88
+    (long long int)0x1.p30,
+    0x1.p30
+  },
+  { // Entry 89
+    (long long int)0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 90
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 91
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 92
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 93
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 94
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 95
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 96
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 97
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 98
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 99
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 100
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 101
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 102
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 103
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 104
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 105
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 106
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 107
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 108
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 109
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 110
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 111
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 112
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 113
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 114
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 115
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 116
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 117
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 118
+    (long long int)0x1.000002p31,
+    0x1.000002p31
+  },
+  { // Entry 119
+    (long long int)0x1.000004p31,
+    0x1.000004p31
+  },
+  { // Entry 120
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 121
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 122
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 123
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 124
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 125
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 126
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 127
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 128
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 129
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 130
+    (long long int)-0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 131
+    (long long int)-0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 132
+    (long long int)-0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 133
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 134
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 135
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 136
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 137
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 138
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 139
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 140
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 141
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 142
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 143
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 144
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 145
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 146
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 147
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 148
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 149
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 150
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 151
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 152
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 153
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 154
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 155
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 156
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 157
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 158
+    (long long int)-0x1.000004p31,
+    -0x1.000004p31
+  },
+  { // Entry 159
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 160
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 161
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 162
+    (long long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 163
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 164
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 165
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 166
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 167
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 168
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 169
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 170
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 171
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 172
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 173
+    (long long int)0x1.fffffcp61,
+    0x1.fffffcp61
+  },
+  { // Entry 174
+    (long long int)0x1.fffffep61,
+    0x1.fffffep61
+  },
+  { // Entry 175
+    (long long int)0x1.p62,
+    0x1.p62
+  },
+  { // Entry 176
+    (long long int)0x1.000002p62,
+    0x1.000002p62
+  },
+  { // Entry 177
+    (long long int)0x1.000004p62,
+    0x1.000004p62
+  },
+  { // Entry 178
+    (long long int)0x1.fffffcp62,
+    0x1.fffffcp62
+  },
+  { // Entry 179
+    (long long int)0x1.fffffep62,
+    0x1.fffffep62
+  },
+  { // Entry 180
+    (long long int)-0x1.000004p62,
+    -0x1.000004p62
+  },
+  { // Entry 181
+    (long long int)-0x1.000002p62,
+    -0x1.000002p62
+  },
+  { // Entry 182
+    (long long int)-0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 183
+    (long long int)-0x1.fffffep61,
+    -0x1.fffffep61
+  },
+  { // Entry 184
+    (long long int)-0x1.fffffcp61,
+    -0x1.fffffcp61
+  },
+  { // Entry 185
+    (long long int)-0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 186
+    (long long int)-0x1.fffffep62,
+    -0x1.fffffep62
+  },
+  { // Entry 187
+    (long long int)-0x1.fffffcp62,
+    -0x1.fffffcp62
+  },
+  { // Entry 188
+    (long long int)0x1.p62,
+    0x1.p62
+  },
+  { // Entry 189
+    (long long int)-0x1.p62,
+    -0x1.p62
+  },
+  { // Entry 190
+    (long long int)-0x1.p63,
+    -0x1.p63
+  },
+  { // Entry 191
+    (long long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 192
+    (long long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 193
+    (long long int)0x1.p31,
+    0x1.p31
+  },
+  { // Entry 194
+    (long long int)-0x1.000002p31,
+    -0x1.000002p31
+  },
+  { // Entry 195
+    (long long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 196
+    (long long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 197
+    (long long int)0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 198
+    (long long int)0x1.p2,
+    0x1.p2
+  },
+  { // Entry 199
+    (long long int)0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 200
+    (long long int)0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 201
+    (long long int)0x1.p3,
+    0x1.p3
+  },
+  { // Entry 202
+    (long long int)0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 203
+    (long long int)0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 204
+    (long long int)0x1.p4,
+    0x1.p4
+  },
+  { // Entry 205
+    (long long int)0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 206
+    (long long int)0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 207
+    (long long int)0x1.p5,
+    0x1.p5
+  },
+  { // Entry 208
+    (long long int)0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 209
+    (long long int)0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 210
+    (long long int)0x1.p6,
+    0x1.p6
+  },
+  { // Entry 211
+    (long long int)0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 212
+    (long long int)0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 213
+    (long long int)0x1.p7,
+    0x1.p7
+  },
+  { // Entry 214
+    (long long int)0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 215
+    (long long int)0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 216
+    (long long int)0x1.p8,
+    0x1.p8
+  },
+  { // Entry 217
+    (long long int)0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 218
+    (long long int)0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 219
+    (long long int)0x1.p9,
+    0x1.p9
+  },
+  { // Entry 220
+    (long long int)0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 221
+    (long long int)0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 222
+    (long long int)0x1.p10,
+    0x1.p10
+  },
+  { // Entry 223
+    (long long int)0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 224
+    (long long int)0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 225
+    (long long int)0x1.p11,
+    0x1.p11
+  },
+  { // Entry 226
+    (long long int)0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 227
+    (long long int)0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 228
+    (long long int)0x1.p12,
+    0x1.p12
+  },
+  { // Entry 229
+    (long long int)0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 230
+    (long long int)0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 231
+    (long long int)0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 232
+    (long long int)0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 233
+    (long long int)0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 234
+    (long long int)0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 235
+    (long long int)0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 236
+    (long long int)0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 237
+    (long long int)0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 238
+    (long long int)0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 239
+    (long long int)0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 240
+    (long long int)0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 241
+    (long long int)0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 242
+    (long long int)0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 243
+    (long long int)0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 244
+    (long long int)0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 245
+    (long long int)0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 246
+    (long long int)0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 247
+    (long long int)0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 248
+    (long long int)0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 249
+    (long long int)0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 250
+    (long long int)0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 251
+    (long long int)0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 252
+    (long long int)0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 253
+    (long long int)0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 254
+    (long long int)0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 255
+    (long long int)0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 256
+    (long long int)0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 257
+    (long long int)0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 258
+    (long long int)0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 259
+    (long long int)0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 260
+    (long long int)0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 261
+    (long long int)0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 262
+    (long long int)0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 263
+    (long long int)0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 264
+    (long long int)0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 265
+    (long long int)0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 266
+    (long long int)0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 267
+    (long long int)-0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 268
+    (long long int)0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 269
+    (long long int)-0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 270
+    (long long int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 271
+    (long long int)-0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 272
+    (long long int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 273
+    (long long int)-0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 274
+    (long long int)0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 275
+    (long long int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 276
+    (long long int)0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 277
+    (long long int)-0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 278
+    (long long int)0.0,
+    0x1.000002p-126
+  },
+  { // Entry 279
+    (long long int)0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 280
+    (long long int)0.0,
+    0x1.p-126
+  },
+  { // Entry 281
+    (long long int)0.0,
+    -0x1.p-126
+  },
+  { // Entry 282
+    (long long int)0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 283
+    (long long int)0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 284
+    (long long int)0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 285
+    (long long int)0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 286
+    (long long int)0.0,
+    0x1.p-148
+  },
+  { // Entry 287
+    (long long int)0.0,
+    -0x1.p-148
+  },
+  { // Entry 288
+    (long long int)0.0,
+    0x1.p-149
+  },
+  { // Entry 289
+    (long long int)0.0,
+    -0x1.p-149
+  },
+  { // Entry 290
+    (long long int)0.0,
+    0.0f
+  },
+  { // Entry 291
+    (long long int)0.0,
+    -0.0f
+  },
+  { // Entry 292
+    (long long int)0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 293
+    (long long int)-0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 294
+    (long long int)0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 295
+    (long long int)-0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 296
+    (long long int)0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 297
+    (long long int)0.0,
+    0x1.p-1
+  },
+  { // Entry 298
+    (long long int)0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 299
+    (long long int)0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 300
+    (long long int)0.0,
+    -0x1.p-1
+  },
+  { // Entry 301
+    (long long int)-0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 302
+    (long long int)0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 303
+    (long long int)0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 304
+    (long long int)-0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 305
+    (long long int)-0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
\ No newline at end of file
diff --git a/tests/math_data/lrint_intel_data.h b/tests/math_data/lrint_intel_data.h
new file mode 100644
index 0000000..a034be4
--- /dev/null
+++ b/tests/math_data/lrint_intel_data.h
@@ -0,0 +1,982 @@
+/*
+ * Copyright (C) 2016 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_long_1_t<double> g_lrint_intel_data[] = {
+  { // Entry 0
+    (long int)0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 1
+    (long int)0.0,
+    -0.0
+  },
+  { // Entry 2
+    (long int)0.0,
+    0x1.0p-1074
+  },
+  { // Entry 3
+    (long int)0.0,
+    0x1.fffffffffffffp-2
+  },
+  { // Entry 4
+    (long int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 5
+    (long int)0x1.p0,
+    0x1.0000000000001p-1
+  },
+  { // Entry 6
+    (long int)0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 7
+    (long int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 8
+    (long int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 9
+    (long int)0x1.p0,
+    0x1.7ffffffffffffp0
+  },
+  { // Entry 10
+    (long int)0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 11
+    (long int)0x1.p1,
+    0x1.8000000000001p0
+  },
+  { // Entry 12
+    (long int)0x1.p1,
+    0x1.fffffffffffffp0
+  },
+  { // Entry 13
+    (long int)0x1.p1,
+    0x1.0p1
+  },
+  { // Entry 14
+    (long int)0x1.p1,
+    0x1.0000000000001p1
+  },
+  { // Entry 15
+    (long int)0x1.p1,
+    0x1.3ffffffffffffp1
+  },
+  { // Entry 16
+    (long int)0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 17
+    (long int)0x1.80p1,
+    0x1.4000000000001p1
+  },
+  { // Entry 18
+    (long int)0x1.90p6,
+    0x1.8ffffffffffffp6
+  },
+  { // Entry 19
+    (long int)0x1.90p6,
+    0x1.9p6
+  },
+  { // Entry 20
+    (long int)0x1.90p6,
+    0x1.9000000000001p6
+  },
+  { // Entry 21
+    (long int)0x1.90p6,
+    0x1.91fffffffffffp6
+  },
+  { // Entry 22
+    (long int)0x1.90p6,
+    0x1.920p6
+  },
+  { // Entry 23
+    (long int)0x1.94p6,
+    0x1.9200000000001p6
+  },
+  { // Entry 24
+    (long int)0x1.f4p9,
+    0x1.f3fffffffffffp9
+  },
+  { // Entry 25
+    (long int)0x1.f4p9,
+    0x1.f40p9
+  },
+  { // Entry 26
+    (long int)0x1.f4p9,
+    0x1.f400000000001p9
+  },
+  { // Entry 27
+    (long int)0x1.f4p9,
+    0x1.f43ffffffffffp9
+  },
+  { // Entry 28
+    (long int)0x1.f4p9,
+    0x1.f44p9
+  },
+  { // Entry 29
+    (long int)0x1.f480p9,
+    0x1.f440000000001p9
+  },
+  { // Entry 30
+    (long int)-0x1.p0,
+    -0x1.0000000000001p-1
+  },
+  { // Entry 31
+    (long int)0.0,
+    -0x1.0p-1
+  },
+  { // Entry 32
+    (long int)0.0,
+    -0x1.fffffffffffffp-2
+  },
+  { // Entry 33
+    (long int)-0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 34
+    (long int)-0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 35
+    (long int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 36
+    (long int)-0x1.p1,
+    -0x1.8000000000001p0
+  },
+  { // Entry 37
+    (long int)-0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 38
+    (long int)-0x1.p0,
+    -0x1.7ffffffffffffp0
+  },
+  { // Entry 39
+    (long int)-0x1.p1,
+    -0x1.0000000000001p1
+  },
+  { // Entry 40
+    (long int)-0x1.p1,
+    -0x1.0p1
+  },
+  { // Entry 41
+    (long int)-0x1.p1,
+    -0x1.fffffffffffffp0
+  },
+  { // Entry 42
+    (long int)-0x1.80p1,
+    -0x1.4000000000001p1
+  },
+  { // Entry 43
+    (long int)-0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 44
+    (long int)-0x1.p1,
+    -0x1.3ffffffffffffp1
+  },
+  { // Entry 45
+    (long int)-0x1.90p6,
+    -0x1.9000000000001p6
+  },
+  { // Entry 46
+    (long int)-0x1.90p6,
+    -0x1.9p6
+  },
+  { // Entry 47
+    (long int)-0x1.90p6,
+    -0x1.8ffffffffffffp6
+  },
+  { // Entry 48
+    (long int)-0x1.94p6,
+    -0x1.9200000000001p6
+  },
+  { // Entry 49
+    (long int)-0x1.90p6,
+    -0x1.920p6
+  },
+  { // Entry 50
+    (long int)-0x1.90p6,
+    -0x1.91fffffffffffp6
+  },
+  { // Entry 51
+    (long int)-0x1.f4p9,
+    -0x1.f400000000001p9
+  },
+  { // Entry 52
+    (long int)-0x1.f4p9,
+    -0x1.f40p9
+  },
+  { // Entry 53
+    (long int)-0x1.f4p9,
+    -0x1.f3fffffffffffp9
+  },
+  { // Entry 54
+    (long int)-0x1.f480p9,
+    -0x1.f440000000001p9
+  },
+  { // Entry 55
+    (long int)-0x1.f4p9,
+    -0x1.f44p9
+  },
+  { // Entry 56
+    (long int)-0x1.f4p9,
+    -0x1.f43ffffffffffp9
+  },
+  { // Entry 57
+    (long int)0x1.p30,
+    0x1.fffffffffffffp29
+  },
+  { // Entry 58
+    (long int)0x1.p30,
+    0x1.0p30
+  },
+  { // Entry 59
+    (long int)0x1.p30,
+    0x1.0000000000001p30
+  },
+  { // Entry 60
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff7ffffep30
+  },
+  { // Entry 61
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff7fffffp30
+  },
+  { // Entry 62
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 63
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff800001p30
+  },
+  { // Entry 64
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff800002p30
+  },
+  { // Entry 65
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff9ffffep30
+  },
+  { // Entry 66
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff9fffffp30
+  },
+  { // Entry 67
+    (long int)0x1.fffffff8p30,
+    0x1.fffffffa0p30
+  },
+  { // Entry 68
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffa00001p30
+  },
+  { // Entry 69
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffa00002p30
+  },
+  { // Entry 70
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffbffffep30
+  },
+  { // Entry 71
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 72
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 73
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 74
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc00002p30
+  },
+  { // Entry 75
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffdffffep30
+  },
+  { // Entry 76
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffdfffffp30
+  },
+  { // Entry 77
+    (long int)0x1.ffffffe0p30,
+    0x1.ffffffep30
+  },
+  { // Entry 78
+    (long int)0x1.ffffffe4p30,
+    0x1.ffffffe40p30
+  },
+  { // Entry 79
+    (long int)0x1.ffffffe8p30,
+    0x1.ffffffe80p30
+  },
+  { // Entry 80
+    (long int)0x1.ffffffecp30,
+    0x1.ffffffec0p30
+  },
+  { // Entry 81
+    (long int)0x1.fffffff0p30,
+    0x1.fffffffp30
+  },
+  { // Entry 82
+    (long int)0x1.fffffff4p30,
+    0x1.fffffff40p30
+  },
+  { // Entry 83
+    (long int)0x1.fffffff8p30,
+    0x1.fffffff80p30
+  },
+  { // Entry 84
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 85
+    (long int)-0x1.p30,
+    -0x1.0000000000001p30
+  },
+  { // Entry 86
+    (long int)-0x1.p30,
+    -0x1.0p30
+  },
+  { // Entry 87
+    (long int)-0x1.p30,
+    -0x1.fffffffffffffp29
+  },
+  { // Entry 88
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff800002p30
+  },
+  { // Entry 89
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff800001p30
+  },
+  { // Entry 90
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff80p30
+  },
+  { // Entry 91
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff7fffffp30
+  },
+  { // Entry 92
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff7ffffep30
+  },
+  { // Entry 93
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffa00002p30
+  },
+  { // Entry 94
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffa00001p30
+  },
+  { // Entry 95
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffffa0p30
+  },
+  { // Entry 96
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff9fffffp30
+  },
+  { // Entry 97
+    (long int)-0x1.fffffff8p30,
+    -0x1.fffffff9ffffep30
+  },
+  { // Entry 98
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffc00002p30
+  },
+  { // Entry 99
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffc00001p30
+  },
+  { // Entry 100
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffc0p30
+  },
+  { // Entry 101
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffbfffffp30
+  },
+  { // Entry 102
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffbffffep30
+  },
+  { // Entry 103
+    (long int)-0x1.p31,
+    -0x1.fffffffe00002p30
+  },
+  { // Entry 104
+    (long int)-0x1.p31,
+    -0x1.fffffffe00001p30
+  },
+  { // Entry 105
+    (long int)-0x1.p31,
+    -0x1.fffffffe0p30
+  },
+  { // Entry 106
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffdfffffp30
+  },
+  { // Entry 107
+    (long int)-0x1.fffffffcp30,
+    -0x1.fffffffdffffep30
+  },
+  { // Entry 108
+    (long int)-0x1.p31,
+    -0x1.0000000000002p31
+  },
+  { // Entry 109
+    (long int)-0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 110
+    (long int)-0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 111
+    (long int)-0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 112
+    (long int)-0x1.p31,
+    -0x1.ffffffffffffep30
+  },
+  { // Entry 113
+    (long int)-0x1.p31,
+    -0x1.000000010p31
+  },
+  { // Entry 114
+    (long int)-0x1.p31,
+    -0x1.00000000fffffp31
+  },
+  { // Entry 115
+    (long int)-0x1.p31,
+    -0x1.00000000ffffep31
+  },
+  { // Entry 116
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 117
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 118
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 119
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 120
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 121
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 122
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 123
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 124
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 125
+    (long int)-0x1.ffffffe0p30,
+    -0x1.ffffffep30
+  },
+  { // Entry 126
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffbfffffp30
+  },
+  { // Entry 127
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc0p30
+  },
+  { // Entry 128
+    (long int)0x1.fffffffcp30,
+    0x1.fffffffc00001p30
+  },
+  { // Entry 129
+    (long int)-0x1.p31,
+    -0x1.0000000000001p31
+  },
+  { // Entry 130
+    (long int)-0x1.p31,
+    -0x1.0p31
+  },
+  { // Entry 131
+    (long int)-0x1.p31,
+    -0x1.fffffffffffffp30
+  },
+  { // Entry 132
+    (long int)0x1.p2,
+    0x1.fffffffffffffp1
+  },
+  { // Entry 133
+    (long int)0x1.p2,
+    0x1.0p2
+  },
+  { // Entry 134
+    (long int)0x1.p2,
+    0x1.0000000000001p2
+  },
+  { // Entry 135
+    (long int)0x1.p3,
+    0x1.fffffffffffffp2
+  },
+  { // Entry 136
+    (long int)0x1.p3,
+    0x1.0p3
+  },
+  { // Entry 137
+    (long int)0x1.p3,
+    0x1.0000000000001p3
+  },
+  { // Entry 138
+    (long int)0x1.p4,
+    0x1.fffffffffffffp3
+  },
+  { // Entry 139
+    (long int)0x1.p4,
+    0x1.0p4
+  },
+  { // Entry 140
+    (long int)0x1.p4,
+    0x1.0000000000001p4
+  },
+  { // Entry 141
+    (long int)0x1.p5,
+    0x1.fffffffffffffp4
+  },
+  { // Entry 142
+    (long int)0x1.p5,
+    0x1.0p5
+  },
+  { // Entry 143
+    (long int)0x1.p5,
+    0x1.0000000000001p5
+  },
+  { // Entry 144
+    (long int)0x1.p6,
+    0x1.fffffffffffffp5
+  },
+  { // Entry 145
+    (long int)0x1.p6,
+    0x1.0p6
+  },
+  { // Entry 146
+    (long int)0x1.p6,
+    0x1.0000000000001p6
+  },
+  { // Entry 147
+    (long int)0x1.p7,
+    0x1.fffffffffffffp6
+  },
+  { // Entry 148
+    (long int)0x1.p7,
+    0x1.0p7
+  },
+  { // Entry 149
+    (long int)0x1.p7,
+    0x1.0000000000001p7
+  },
+  { // Entry 150
+    (long int)0x1.p8,
+    0x1.fffffffffffffp7
+  },
+  { // Entry 151
+    (long int)0x1.p8,
+    0x1.0p8
+  },
+  { // Entry 152
+    (long int)0x1.p8,
+    0x1.0000000000001p8
+  },
+  { // Entry 153
+    (long int)0x1.p9,
+    0x1.fffffffffffffp8
+  },
+  { // Entry 154
+    (long int)0x1.p9,
+    0x1.0p9
+  },
+  { // Entry 155
+    (long int)0x1.p9,
+    0x1.0000000000001p9
+  },
+  { // Entry 156
+    (long int)0x1.p10,
+    0x1.fffffffffffffp9
+  },
+  { // Entry 157
+    (long int)0x1.p10,
+    0x1.0p10
+  },
+  { // Entry 158
+    (long int)0x1.p10,
+    0x1.0000000000001p10
+  },
+  { // Entry 159
+    (long int)0x1.p11,
+    0x1.fffffffffffffp10
+  },
+  { // Entry 160
+    (long int)0x1.p11,
+    0x1.0p11
+  },
+  { // Entry 161
+    (long int)0x1.p11,
+    0x1.0000000000001p11
+  },
+  { // Entry 162
+    (long int)0x1.p12,
+    0x1.fffffffffffffp11
+  },
+  { // Entry 163
+    (long int)0x1.p12,
+    0x1.0p12
+  },
+  { // Entry 164
+    (long int)0x1.p12,
+    0x1.0000000000001p12
+  },
+  { // Entry 165
+    (long int)0x1.p2,
+    0x1.1ffffffffffffp2
+  },
+  { // Entry 166
+    (long int)0x1.p2,
+    0x1.2p2
+  },
+  { // Entry 167
+    (long int)0x1.40p2,
+    0x1.2000000000001p2
+  },
+  { // Entry 168
+    (long int)0x1.p3,
+    0x1.0ffffffffffffp3
+  },
+  { // Entry 169
+    (long int)0x1.p3,
+    0x1.1p3
+  },
+  { // Entry 170
+    (long int)0x1.20p3,
+    0x1.1000000000001p3
+  },
+  { // Entry 171
+    (long int)0x1.p4,
+    0x1.07fffffffffffp4
+  },
+  { // Entry 172
+    (long int)0x1.p4,
+    0x1.080p4
+  },
+  { // Entry 173
+    (long int)0x1.10p4,
+    0x1.0800000000001p4
+  },
+  { // Entry 174
+    (long int)0x1.p5,
+    0x1.03fffffffffffp5
+  },
+  { // Entry 175
+    (long int)0x1.p5,
+    0x1.040p5
+  },
+  { // Entry 176
+    (long int)0x1.08p5,
+    0x1.0400000000001p5
+  },
+  { // Entry 177
+    (long int)0x1.p6,
+    0x1.01fffffffffffp6
+  },
+  { // Entry 178
+    (long int)0x1.p6,
+    0x1.020p6
+  },
+  { // Entry 179
+    (long int)0x1.04p6,
+    0x1.0200000000001p6
+  },
+  { // Entry 180
+    (long int)0x1.p7,
+    0x1.00fffffffffffp7
+  },
+  { // Entry 181
+    (long int)0x1.p7,
+    0x1.010p7
+  },
+  { // Entry 182
+    (long int)0x1.02p7,
+    0x1.0100000000001p7
+  },
+  { // Entry 183
+    (long int)0x1.p8,
+    0x1.007ffffffffffp8
+  },
+  { // Entry 184
+    (long int)0x1.p8,
+    0x1.008p8
+  },
+  { // Entry 185
+    (long int)0x1.01p8,
+    0x1.0080000000001p8
+  },
+  { // Entry 186
+    (long int)0x1.p9,
+    0x1.003ffffffffffp9
+  },
+  { // Entry 187
+    (long int)0x1.p9,
+    0x1.004p9
+  },
+  { // Entry 188
+    (long int)0x1.0080p9,
+    0x1.0040000000001p9
+  },
+  { // Entry 189
+    (long int)0x1.p10,
+    0x1.001ffffffffffp10
+  },
+  { // Entry 190
+    (long int)0x1.p10,
+    0x1.002p10
+  },
+  { // Entry 191
+    (long int)0x1.0040p10,
+    0x1.0020000000001p10
+  },
+  { // Entry 192
+    (long int)0x1.0040p10,
+    0x1.005ffffffffffp10
+  },
+  { // Entry 193
+    (long int)0x1.0080p10,
+    0x1.006p10
+  },
+  { // Entry 194
+    (long int)0x1.0080p10,
+    0x1.0060000000001p10
+  },
+  { // Entry 195
+    (long int)0x1.p11,
+    0x1.000ffffffffffp11
+  },
+  { // Entry 196
+    (long int)0x1.p11,
+    0x1.001p11
+  },
+  { // Entry 197
+    (long int)0x1.0020p11,
+    0x1.0010000000001p11
+  },
+  { // Entry 198
+    (long int)0x1.p12,
+    0x1.0007fffffffffp12
+  },
+  { // Entry 199
+    (long int)0x1.p12,
+    0x1.00080p12
+  },
+  { // Entry 200
+    (long int)0x1.0010p12,
+    0x1.0008000000001p12
+  },
+  { // Entry 201
+    (long int)0x1.80p1,
+    0x1.921fb54442d18p1
+  },
+  { // Entry 202
+    (long int)-0x1.80p1,
+    -0x1.921fb54442d18p1
+  },
+  { // Entry 203
+    (long int)0x1.p1,
+    0x1.921fb54442d18p0
+  },
+  { // Entry 204
+    (long int)-0x1.p1,
+    -0x1.921fb54442d18p0
+  },
+  { // Entry 205
+    (long int)0x1.p0,
+    0x1.0000000000001p0
+  },
+  { // Entry 206
+    (long int)-0x1.p0,
+    -0x1.0000000000001p0
+  },
+  { // Entry 207
+    (long int)0x1.p0,
+    0x1.0p0
+  },
+  { // Entry 208
+    (long int)-0x1.p0,
+    -0x1.0p0
+  },
+  { // Entry 209
+    (long int)0x1.p0,
+    0x1.fffffffffffffp-1
+  },
+  { // Entry 210
+    (long int)-0x1.p0,
+    -0x1.fffffffffffffp-1
+  },
+  { // Entry 211
+    (long int)0x1.p0,
+    0x1.921fb54442d18p-1
+  },
+  { // Entry 212
+    (long int)-0x1.p0,
+    -0x1.921fb54442d18p-1
+  },
+  { // Entry 213
+    (long int)0.0,
+    0x1.0000000000001p-1022
+  },
+  { // Entry 214
+    (long int)0.0,
+    -0x1.0000000000001p-1022
+  },
+  { // Entry 215
+    (long int)0.0,
+    0x1.0p-1022
+  },
+  { // Entry 216
+    (long int)0.0,
+    -0x1.0p-1022
+  },
+  { // Entry 217
+    (long int)0.0,
+    0x1.ffffffffffffep-1023
+  },
+  { // Entry 218
+    (long int)0.0,
+    -0x1.ffffffffffffep-1023
+  },
+  { // Entry 219
+    (long int)0.0,
+    0x1.ffffffffffffcp-1023
+  },
+  { // Entry 220
+    (long int)0.0,
+    -0x1.ffffffffffffcp-1023
+  },
+  { // Entry 221
+    (long int)0.0,
+    0x1.0p-1073
+  },
+  { // Entry 222
+    (long int)0.0,
+    -0x1.0p-1073
+  },
+  { // Entry 223
+    (long int)0.0,
+    0x1.0p-1074
+  },
+  { // Entry 224
+    (long int)0.0,
+    -0x1.0p-1074
+  },
+  { // Entry 225
+    (long int)0.0,
+    0.0
+  },
+  { // Entry 226
+    (long int)0.0,
+    -0.0
+  },
+  { // Entry 227
+    (long int)0x1.p1,
+    0x1.8p0
+  },
+  { // Entry 228
+    (long int)-0x1.p1,
+    -0x1.8p0
+  },
+  { // Entry 229
+    (long int)0x1.p1,
+    0x1.4p1
+  },
+  { // Entry 230
+    (long int)-0x1.p1,
+    -0x1.4p1
+  },
+  { // Entry 231
+    (long int)0.0,
+    0x1.fffffp-2
+  },
+  { // Entry 232
+    (long int)0.0,
+    0x1.0p-1
+  },
+  { // Entry 233
+    (long int)0x1.p0,
+    0x1.00001p-1
+  },
+  { // Entry 234
+    (long int)0.0,
+    -0x1.fffffp-2
+  },
+  { // Entry 235
+    (long int)0.0,
+    -0x1.0p-1
+  },
+  { // Entry 236
+    (long int)-0x1.p0,
+    -0x1.00001p-1
+  },
+  { // Entry 237
+    (long int)0x1.p1,
+    0x1.80001p0
+  },
+  { // Entry 238
+    (long int)0x1.p0,
+    0x1.7ffffp0
+  },
+  { // Entry 239
+    (long int)-0x1.p1,
+    -0x1.80001p0
+  },
+  { // Entry 240
+    (long int)-0x1.p0,
+    -0x1.7ffffp0
+  }
+};
\ No newline at end of file
diff --git a/tests/math_data/lrintf_intel_data.h b/tests/math_data/lrintf_intel_data.h
new file mode 100644
index 0000000..bd771b2
--- /dev/null
+++ b/tests/math_data/lrintf_intel_data.h
@@ -0,0 +1,1002 @@
+/*
+ * Copyright (C) 2016 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_long_1_t<float> g_lrintf_intel_data[] = {
+  { // Entry 0
+    (long int)0.0,
+    -0x1.p-149
+  },
+  { // Entry 1
+    (long int)0.0,
+    0.0
+  },
+  { // Entry 2
+    (long int)0.0,
+    0x1.p-149
+  },
+  { // Entry 3
+    (long int)0.0,
+    0x1.fffffep-2
+  },
+  { // Entry 4
+    (long int)0.0,
+    0x1.p-1
+  },
+  { // Entry 5
+    (long int)0x1.p0,
+    0x1.000002p-1
+  },
+  { // Entry 6
+    (long int)0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 7
+    (long int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 8
+    (long int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 9
+    (long int)0x1.p0,
+    0x1.7ffffep0
+  },
+  { // Entry 10
+    (long int)0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 11
+    (long int)0x1.p1,
+    0x1.800002p0
+  },
+  { // Entry 12
+    (long int)0x1.p1,
+    0x1.fffffep0
+  },
+  { // Entry 13
+    (long int)0x1.p1,
+    0x1.p1
+  },
+  { // Entry 14
+    (long int)0x1.p1,
+    0x1.000002p1
+  },
+  { // Entry 15
+    (long int)0x1.p1,
+    0x1.3ffffep1
+  },
+  { // Entry 16
+    (long int)0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 17
+    (long int)0x1.80p1,
+    0x1.400002p1
+  },
+  { // Entry 18
+    (long int)0x1.90p6,
+    0x1.8ffffep6
+  },
+  { // Entry 19
+    (long int)0x1.90p6,
+    0x1.90p6
+  },
+  { // Entry 20
+    (long int)0x1.90p6,
+    0x1.900002p6
+  },
+  { // Entry 21
+    (long int)0x1.90p6,
+    0x1.91fffep6
+  },
+  { // Entry 22
+    (long int)0x1.90p6,
+    0x1.92p6
+  },
+  { // Entry 23
+    (long int)0x1.94p6,
+    0x1.920002p6
+  },
+  { // Entry 24
+    (long int)0x1.f4p9,
+    0x1.f3fffep9
+  },
+  { // Entry 25
+    (long int)0x1.f4p9,
+    0x1.f4p9
+  },
+  { // Entry 26
+    (long int)0x1.f4p9,
+    0x1.f40002p9
+  },
+  { // Entry 27
+    (long int)0x1.f4p9,
+    0x1.f43ffep9
+  },
+  { // Entry 28
+    (long int)0x1.f4p9,
+    0x1.f440p9
+  },
+  { // Entry 29
+    (long int)0x1.f480p9,
+    0x1.f44002p9
+  },
+  { // Entry 30
+    (long int)0x1.p21,
+    0x1.fffffep20
+  },
+  { // Entry 31
+    (long int)0x1.p21,
+    0x1.p21
+  },
+  { // Entry 32
+    (long int)0x1.p21,
+    0x1.000002p21
+  },
+  { // Entry 33
+    (long int)0x1.p22,
+    0x1.fffffep21
+  },
+  { // Entry 34
+    (long int)0x1.p22,
+    0x1.p22
+  },
+  { // Entry 35
+    (long int)0x1.p22,
+    0x1.000002p22
+  },
+  { // Entry 36
+    (long int)0x1.p23,
+    0x1.fffffep22
+  },
+  { // Entry 37
+    (long int)0x1.p23,
+    0x1.p23
+  },
+  { // Entry 38
+    (long int)0x1.000002p23,
+    0x1.000002p23
+  },
+  { // Entry 39
+    (long int)0x1.fffffep23,
+    0x1.fffffep23
+  },
+  { // Entry 40
+    (long int)0x1.p24,
+    0x1.p24
+  },
+  { // Entry 41
+    (long int)0x1.000002p24,
+    0x1.000002p24
+  },
+  { // Entry 42
+    (long int)0x1.fffffep24,
+    0x1.fffffep24
+  },
+  { // Entry 43
+    (long int)0x1.p25,
+    0x1.p25
+  },
+  { // Entry 44
+    (long int)0x1.000002p25,
+    0x1.000002p25
+  },
+  { // Entry 45
+    (long int)-0x1.p0,
+    -0x1.000002p-1
+  },
+  { // Entry 46
+    (long int)0.0,
+    -0x1.p-1
+  },
+  { // Entry 47
+    (long int)0.0,
+    -0x1.fffffep-2
+  },
+  { // Entry 48
+    (long int)-0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 49
+    (long int)-0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 50
+    (long int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 51
+    (long int)-0x1.p1,
+    -0x1.800002p0
+  },
+  { // Entry 52
+    (long int)-0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 53
+    (long int)-0x1.p0,
+    -0x1.7ffffep0
+  },
+  { // Entry 54
+    (long int)-0x1.p1,
+    -0x1.000002p1
+  },
+  { // Entry 55
+    (long int)-0x1.p1,
+    -0x1.p1
+  },
+  { // Entry 56
+    (long int)-0x1.p1,
+    -0x1.fffffep0
+  },
+  { // Entry 57
+    (long int)-0x1.80p1,
+    -0x1.400002p1
+  },
+  { // Entry 58
+    (long int)-0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 59
+    (long int)-0x1.p1,
+    -0x1.3ffffep1
+  },
+  { // Entry 60
+    (long int)-0x1.90p6,
+    -0x1.900002p6
+  },
+  { // Entry 61
+    (long int)-0x1.90p6,
+    -0x1.90p6
+  },
+  { // Entry 62
+    (long int)-0x1.90p6,
+    -0x1.8ffffep6
+  },
+  { // Entry 63
+    (long int)-0x1.94p6,
+    -0x1.920002p6
+  },
+  { // Entry 64
+    (long int)-0x1.90p6,
+    -0x1.92p6
+  },
+  { // Entry 65
+    (long int)-0x1.90p6,
+    -0x1.91fffep6
+  },
+  { // Entry 66
+    (long int)-0x1.f4p9,
+    -0x1.f40002p9
+  },
+  { // Entry 67
+    (long int)-0x1.f4p9,
+    -0x1.f4p9
+  },
+  { // Entry 68
+    (long int)-0x1.f4p9,
+    -0x1.f3fffep9
+  },
+  { // Entry 69
+    (long int)-0x1.f480p9,
+    -0x1.f44002p9
+  },
+  { // Entry 70
+    (long int)-0x1.f4p9,
+    -0x1.f440p9
+  },
+  { // Entry 71
+    (long int)-0x1.f4p9,
+    -0x1.f43ffep9
+  },
+  { // Entry 72
+    (long int)-0x1.p21,
+    -0x1.000002p21
+  },
+  { // Entry 73
+    (long int)-0x1.p21,
+    -0x1.p21
+  },
+  { // Entry 74
+    (long int)-0x1.p21,
+    -0x1.fffffep20
+  },
+  { // Entry 75
+    (long int)-0x1.p22,
+    -0x1.000002p22
+  },
+  { // Entry 76
+    (long int)-0x1.p22,
+    -0x1.p22
+  },
+  { // Entry 77
+    (long int)-0x1.p22,
+    -0x1.fffffep21
+  },
+  { // Entry 78
+    (long int)-0x1.000002p23,
+    -0x1.000002p23
+  },
+  { // Entry 79
+    (long int)-0x1.p23,
+    -0x1.p23
+  },
+  { // Entry 80
+    (long int)-0x1.p23,
+    -0x1.fffffep22
+  },
+  { // Entry 81
+    (long int)-0x1.000002p24,
+    -0x1.000002p24
+  },
+  { // Entry 82
+    (long int)-0x1.p24,
+    -0x1.p24
+  },
+  { // Entry 83
+    (long int)-0x1.fffffep23,
+    -0x1.fffffep23
+  },
+  { // Entry 84
+    (long int)-0x1.000002p25,
+    -0x1.000002p25
+  },
+  { // Entry 85
+    (long int)-0x1.p25,
+    -0x1.p25
+  },
+  { // Entry 86
+    (long int)-0x1.fffffep24,
+    -0x1.fffffep24
+  },
+  { // Entry 87
+    (long int)0x1.fffffep29,
+    0x1.fffffep29
+  },
+  { // Entry 88
+    (long int)0x1.p30,
+    0x1.p30
+  },
+  { // Entry 89
+    (long int)0x1.000002p30,
+    0x1.000002p30
+  },
+  { // Entry 90
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 91
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 92
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 93
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 94
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 95
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 96
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 97
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 98
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 99
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 100
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 101
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 102
+    (long int)-0x1.000002p30,
+    -0x1.000002p30
+  },
+  { // Entry 103
+    (long int)-0x1.p30,
+    -0x1.p30
+  },
+  { // Entry 104
+    (long int)-0x1.fffffep29,
+    -0x1.fffffep29
+  },
+  { // Entry 105
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 106
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 107
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 108
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 109
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 110
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 111
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 112
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 113
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 114
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 115
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 116
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 117
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 118
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 119
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 120
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 121
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 122
+    (long int)-0x1.fffffcp30,
+    -0x1.fffffcp30
+  },
+  { // Entry 123
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 124
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 125
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 126
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 127
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 128
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 129
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 130
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 131
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 132
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 133
+    (long int)0x1.fffffcp30,
+    0x1.fffffcp30
+  },
+  { // Entry 134
+    (long int)0x1.fffffep30,
+    0x1.fffffep30
+  },
+  { // Entry 135
+    (long int)-0x1.p31,
+    -0x1.p31
+  },
+  { // Entry 136
+    (long int)-0x1.fffffep30,
+    -0x1.fffffep30
+  },
+  { // Entry 137
+    (long int)0x1.p2,
+    0x1.fffffep1
+  },
+  { // Entry 138
+    (long int)0x1.p2,
+    0x1.p2
+  },
+  { // Entry 139
+    (long int)0x1.p2,
+    0x1.000002p2
+  },
+  { // Entry 140
+    (long int)0x1.p3,
+    0x1.fffffep2
+  },
+  { // Entry 141
+    (long int)0x1.p3,
+    0x1.p3
+  },
+  { // Entry 142
+    (long int)0x1.p3,
+    0x1.000002p3
+  },
+  { // Entry 143
+    (long int)0x1.p4,
+    0x1.fffffep3
+  },
+  { // Entry 144
+    (long int)0x1.p4,
+    0x1.p4
+  },
+  { // Entry 145
+    (long int)0x1.p4,
+    0x1.000002p4
+  },
+  { // Entry 146
+    (long int)0x1.p5,
+    0x1.fffffep4
+  },
+  { // Entry 147
+    (long int)0x1.p5,
+    0x1.p5
+  },
+  { // Entry 148
+    (long int)0x1.p5,
+    0x1.000002p5
+  },
+  { // Entry 149
+    (long int)0x1.p6,
+    0x1.fffffep5
+  },
+  { // Entry 150
+    (long int)0x1.p6,
+    0x1.p6
+  },
+  { // Entry 151
+    (long int)0x1.p6,
+    0x1.000002p6
+  },
+  { // Entry 152
+    (long int)0x1.p7,
+    0x1.fffffep6
+  },
+  { // Entry 153
+    (long int)0x1.p7,
+    0x1.p7
+  },
+  { // Entry 154
+    (long int)0x1.p7,
+    0x1.000002p7
+  },
+  { // Entry 155
+    (long int)0x1.p8,
+    0x1.fffffep7
+  },
+  { // Entry 156
+    (long int)0x1.p8,
+    0x1.p8
+  },
+  { // Entry 157
+    (long int)0x1.p8,
+    0x1.000002p8
+  },
+  { // Entry 158
+    (long int)0x1.p9,
+    0x1.fffffep8
+  },
+  { // Entry 159
+    (long int)0x1.p9,
+    0x1.p9
+  },
+  { // Entry 160
+    (long int)0x1.p9,
+    0x1.000002p9
+  },
+  { // Entry 161
+    (long int)0x1.p10,
+    0x1.fffffep9
+  },
+  { // Entry 162
+    (long int)0x1.p10,
+    0x1.p10
+  },
+  { // Entry 163
+    (long int)0x1.p10,
+    0x1.000002p10
+  },
+  { // Entry 164
+    (long int)0x1.p11,
+    0x1.fffffep10
+  },
+  { // Entry 165
+    (long int)0x1.p11,
+    0x1.p11
+  },
+  { // Entry 166
+    (long int)0x1.p11,
+    0x1.000002p11
+  },
+  { // Entry 167
+    (long int)0x1.p12,
+    0x1.fffffep11
+  },
+  { // Entry 168
+    (long int)0x1.p12,
+    0x1.p12
+  },
+  { // Entry 169
+    (long int)0x1.p12,
+    0x1.000002p12
+  },
+  { // Entry 170
+    (long int)0x1.p2,
+    0x1.1ffffep2
+  },
+  { // Entry 171
+    (long int)0x1.p2,
+    0x1.20p2
+  },
+  { // Entry 172
+    (long int)0x1.40p2,
+    0x1.200002p2
+  },
+  { // Entry 173
+    (long int)0x1.p3,
+    0x1.0ffffep3
+  },
+  { // Entry 174
+    (long int)0x1.p3,
+    0x1.10p3
+  },
+  { // Entry 175
+    (long int)0x1.20p3,
+    0x1.100002p3
+  },
+  { // Entry 176
+    (long int)0x1.p4,
+    0x1.07fffep4
+  },
+  { // Entry 177
+    (long int)0x1.p4,
+    0x1.08p4
+  },
+  { // Entry 178
+    (long int)0x1.10p4,
+    0x1.080002p4
+  },
+  { // Entry 179
+    (long int)0x1.p5,
+    0x1.03fffep5
+  },
+  { // Entry 180
+    (long int)0x1.p5,
+    0x1.04p5
+  },
+  { // Entry 181
+    (long int)0x1.08p5,
+    0x1.040002p5
+  },
+  { // Entry 182
+    (long int)0x1.p6,
+    0x1.01fffep6
+  },
+  { // Entry 183
+    (long int)0x1.p6,
+    0x1.02p6
+  },
+  { // Entry 184
+    (long int)0x1.04p6,
+    0x1.020002p6
+  },
+  { // Entry 185
+    (long int)0x1.p7,
+    0x1.00fffep7
+  },
+  { // Entry 186
+    (long int)0x1.p7,
+    0x1.01p7
+  },
+  { // Entry 187
+    (long int)0x1.02p7,
+    0x1.010002p7
+  },
+  { // Entry 188
+    (long int)0x1.p8,
+    0x1.007ffep8
+  },
+  { // Entry 189
+    (long int)0x1.p8,
+    0x1.0080p8
+  },
+  { // Entry 190
+    (long int)0x1.01p8,
+    0x1.008002p8
+  },
+  { // Entry 191
+    (long int)0x1.p9,
+    0x1.003ffep9
+  },
+  { // Entry 192
+    (long int)0x1.p9,
+    0x1.0040p9
+  },
+  { // Entry 193
+    (long int)0x1.0080p9,
+    0x1.004002p9
+  },
+  { // Entry 194
+    (long int)0x1.p10,
+    0x1.001ffep10
+  },
+  { // Entry 195
+    (long int)0x1.p10,
+    0x1.0020p10
+  },
+  { // Entry 196
+    (long int)0x1.0040p10,
+    0x1.002002p10
+  },
+  { // Entry 197
+    (long int)0x1.0040p10,
+    0x1.005ffep10
+  },
+  { // Entry 198
+    (long int)0x1.0080p10,
+    0x1.0060p10
+  },
+  { // Entry 199
+    (long int)0x1.0080p10,
+    0x1.006002p10
+  },
+  { // Entry 200
+    (long int)0x1.p11,
+    0x1.000ffep11
+  },
+  { // Entry 201
+    (long int)0x1.p11,
+    0x1.0010p11
+  },
+  { // Entry 202
+    (long int)0x1.0020p11,
+    0x1.001002p11
+  },
+  { // Entry 203
+    (long int)0x1.p12,
+    0x1.0007fep12
+  },
+  { // Entry 204
+    (long int)0x1.p12,
+    0x1.0008p12
+  },
+  { // Entry 205
+    (long int)0x1.0010p12,
+    0x1.000802p12
+  },
+  { // Entry 206
+    (long int)0x1.80p1,
+    0x1.921fb6p1
+  },
+  { // Entry 207
+    (long int)-0x1.80p1,
+    -0x1.921fb6p1
+  },
+  { // Entry 208
+    (long int)0x1.p1,
+    0x1.921fb6p0
+  },
+  { // Entry 209
+    (long int)-0x1.p1,
+    -0x1.921fb6p0
+  },
+  { // Entry 210
+    (long int)0x1.p0,
+    0x1.000002p0
+  },
+  { // Entry 211
+    (long int)-0x1.p0,
+    -0x1.000002p0
+  },
+  { // Entry 212
+    (long int)0x1.p0,
+    0x1.p0
+  },
+  { // Entry 213
+    (long int)-0x1.p0,
+    -0x1.p0
+  },
+  { // Entry 214
+    (long int)0x1.p0,
+    0x1.fffffep-1
+  },
+  { // Entry 215
+    (long int)-0x1.p0,
+    -0x1.fffffep-1
+  },
+  { // Entry 216
+    (long int)0x1.p0,
+    0x1.921fb6p-1
+  },
+  { // Entry 217
+    (long int)-0x1.p0,
+    -0x1.921fb6p-1
+  },
+  { // Entry 218
+    (long int)0.0,
+    0x1.000002p-126
+  },
+  { // Entry 219
+    (long int)0.0,
+    -0x1.000002p-126
+  },
+  { // Entry 220
+    (long int)0.0,
+    0x1.p-126
+  },
+  { // Entry 221
+    (long int)0.0,
+    -0x1.p-126
+  },
+  { // Entry 222
+    (long int)0.0,
+    0x1.fffffcp-127
+  },
+  { // Entry 223
+    (long int)0.0,
+    -0x1.fffffcp-127
+  },
+  { // Entry 224
+    (long int)0.0,
+    0x1.fffff8p-127
+  },
+  { // Entry 225
+    (long int)0.0,
+    -0x1.fffff8p-127
+  },
+  { // Entry 226
+    (long int)0.0,
+    0x1.p-148
+  },
+  { // Entry 227
+    (long int)0.0,
+    -0x1.p-148
+  },
+  { // Entry 228
+    (long int)0.0,
+    0x1.p-149
+  },
+  { // Entry 229
+    (long int)0.0,
+    -0x1.p-149
+  },
+  { // Entry 230
+    (long int)0.0,
+    0.0f
+  },
+  { // Entry 231
+    (long int)0.0,
+    -0.0f
+  },
+  { // Entry 232
+    (long int)0x1.p1,
+    0x1.80p0
+  },
+  { // Entry 233
+    (long int)-0x1.p1,
+    -0x1.80p0
+  },
+  { // Entry 234
+    (long int)0x1.p1,
+    0x1.40p1
+  },
+  { // Entry 235
+    (long int)-0x1.p1,
+    -0x1.40p1
+  },
+  { // Entry 236
+    (long int)0.0,
+    0x1.fffff0p-2
+  },
+  { // Entry 237
+    (long int)0.0,
+    0x1.p-1
+  },
+  { // Entry 238
+    (long int)0x1.p0,
+    0x1.000010p-1
+  },
+  { // Entry 239
+    (long int)0.0,
+    -0x1.fffff0p-2
+  },
+  { // Entry 240
+    (long int)0.0,
+    -0x1.p-1
+  },
+  { // Entry 241
+    (long int)-0x1.p0,
+    -0x1.000010p-1
+  },
+  { // Entry 242
+    (long int)0x1.p1,
+    0x1.800010p0
+  },
+  { // Entry 243
+    (long int)0x1.p0,
+    0x1.7ffff0p0
+  },
+  { // Entry 244
+    (long int)-0x1.p1,
+    -0x1.800010p0
+  },
+  { // Entry 245
+    (long int)-0x1.p0,
+    -0x1.7ffff0p0
+  }
+};
\ No newline at end of file
diff --git a/tests/math_data_test.h b/tests/math_data_test.h
index 8aa2bf1..0aba701 100644
--- a/tests/math_data_test.h
+++ b/tests/math_data_test.h
@@ -30,6 +30,18 @@
   T1 input;
 };
 
+template <typename T1>
+struct data_long_1_t {
+  long expected;
+  T1 input;
+};
+
+template <typename T1>
+struct data_llong_1_t {
+  long long expected;
+  T1 input;
+};
+
 template <typename RT, typename T1, typename T2>
 struct data_1_2_t {
   RT expected;
@@ -157,6 +169,28 @@
   }
 }
 
+// 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) -> long int function like lrint(3).
+template <size_t ULP, typename T, size_t N>
+void DoMathDataTest(data_long_1_t<T> (&data)[N], long 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 input values
+// and asserting that the result is within ULP ulps of the expected value.
+// For testing a (double) -> long long int function like llrint(3).
+template <size_t ULP, typename T, size_t N>
+void DoMathDataTest(data_llong_1_t<T> (&data)[N], long long 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).
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index e616e9b..c805cc2 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -1639,6 +1639,16 @@
   DoMathDataTest<1>(g_ldexpf_intel_data, ldexpf);
 }
 
+#include "math_data/llrint_intel_data.h"
+TEST(math, llrint_intel) {
+  DoMathDataTest<1>(g_llrint_intel_data, llrint);
+}
+
+#include "math_data/llrintf_intel_data.h"
+TEST(math, llrintf_intel) {
+  DoMathDataTest<1>(g_llrintf_intel_data, llrintf);
+}
+
 #include "math_data/log_intel_data.h"
 TEST(math, log_intel) {
   DoMathDataTest<1>(g_log_intel_data, log);
@@ -1689,6 +1699,16 @@
   DoMathDataTest<1>(g_logbf_intel_data, logbf);
 }
 
+#include "math_data/lrint_intel_data.h"
+TEST(math, lrint_intel) {
+  DoMathDataTest<1>(g_lrint_intel_data, lrint);
+}
+
+#include "math_data/lrintf_intel_data.h"
+TEST(math, lrintf_intel) {
+  DoMathDataTest<1>(g_lrintf_intel_data, lrintf);
+}
+
 #include "math_data/modf_intel_data.h"
 TEST(math, modf_intel) {
   DoMathDataTest<1>(g_modf_intel_data, modf);