math: ldexp, modf, nearbyint, scalb are correctly rounded
authorSzabolcs Nagy <nsz@port70.net>
Thu, 1 Nov 2012 13:59:36 +0000 (14:59 +0100)
committerSzabolcs Nagy <nsz@port70.net>
Thu, 1 Nov 2012 13:59:36 +0000 (14:59 +0100)
src/math/ldexp.c
src/math/ldexpf.c
src/math/ldexpl.c
src/math/modf.c
src/math/modff.c
src/math/modfl.c
src/math/nearbyint.c
src/math/nearbyintf.c
src/math/nearbyintl.c
src/math/scalb.c
src/math/scalbf.c

index 4ab011f..1d18160 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperr(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s ldexp(%a, %lld) want %a got %a, ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->i, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 01b037c..37a7c03 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperrf(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s ldexpf(%a, %lld) want %a got %a, ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->i, p->y, y, d, d-p->dy, p->dy);
                        err++;
index f1c6439..c45e9c5 100644 (file)
@@ -37,7 +37,7 @@ int main(void)
                        err++;
                }
                d = ulperrl(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s ldexpl(%La, %lld) want %La got %La ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->i, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 86be04f..f30582d 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                }
                d = ulperr(y, p->y, p->dy);
                di = ulperr(yi, p->y2, p->dy2);
-               if (!checkulp(d, p->r) || !checkulp(di, p->r)) {
+               if (!checkcr(y, p->y, p->r) || !checkcr(yi, p->y2, p->r)) {
                        printf("%s:%d: %s modf(%a) want %a,%a got %a,%a, ulperr %.3f = %a + %a, %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, p->y2, y, yi, d, d-p->dy, p->dy, di, di-p->dy2, p->dy2);
                        err++;
index e6ed290..0791dc0 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                }
                d = ulperr(y, p->y, p->dy);
                di = ulperr(yi, p->y2, p->dy2);
-               if (!checkulp(d, p->r) || !checkulp(di, p->r)) {
+               if (!checkcr(y, p->y, p->r) || !checkcr(yi, p->y2, p->r)) {
                        printf("%s:%d: %s modff(%a) want %a,%a got %a,%a, ulperr %.3f = %a + %a, %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, p->y2, y, yi, d, d-p->dy, p->dy, di, di-p->dy2, p->dy2);
                        err++;
index 72d3b1d..c555cd4 100644 (file)
@@ -36,7 +36,7 @@ int main(void)
                }
                d = ulperr(y, p->y, p->dy);
                di = ulperr(yi, p->y2, p->dy2);
-               if (!checkulp(d, p->r) || !checkulp(di, p->r)) {
+               if (!checkcr(y, p->y, p->r) || !checkcr(yi, p->y2, p->r)) {
                        printf("%s:%d: %s modf(%La) want %La,%La got %La,%La, ulperr %.3f = %a + %a, %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, p->y2, y, yi, d, d-p->dy, p->dy, di, di-p->dy2, p->dy2);
                        err++;
index 927f129..db5a58c 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperr(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s nearbyint(%a) want %a got %a ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 13de8ed..4e8be0a 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperrf(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s nearbyintf(%a) want %a got %a ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 9bbc94e..a86e83b 100644 (file)
@@ -37,7 +37,7 @@ int main(void)
                        err++;
                }
                d = ulperrl(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s nearbyintl(%La) want %La got %La ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 35ef2ce..95a5533 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperr(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s scalb(%a,%a) want %a got %a ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->x2, p->y, y, d, d-p->dy, p->dy);
                        err++;
index 233c14d..8c190cc 100644 (file)
@@ -32,7 +32,7 @@ int main(void)
                        err++;
                }
                d = ulperrf(y, p->y, p->dy);
-               if (!checkulp(d, p->r)) {
+               if (!checkcr(y, p->y, p->r)) {
                        printf("%s:%d: %s scalbf(%a,%a) want %a got %a ulperr %.3f = %a + %a\n",
                                p->file, p->line, rstr(p->r), p->x, p->x2, p->y, y, d, d-p->dy, p->dy);
                        err++;