aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754/ldbl-128ibm
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h5
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c (renamed from sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c)33
4 files changed, 37 insertions, 4 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/Makefile b/sysdeps/ieee754/ldbl-128ibm/Makefile
index eb625a7..bdba6cc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/Makefile
+++ b/sysdeps/ieee754/ldbl-128ibm/Makefile
@@ -11,6 +11,6 @@ endif
ifeq ($(subdir),math)
tests += test-fmodl-ldbl-128ibm test-remainderl-ldbl-128ibm \
- test-remquol-ldbl-128ibm test-iscanonical-ldbl-128ibm \
+ test-remquol-ldbl-128ibm test-canonical-ldbl-128ibm \
test-totalorderl-ldbl-128ibm
endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h b/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h
new file mode 100644
index 0000000..bee080b
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h
@@ -0,0 +1,5 @@
+#include_next <bits/iscanonical.h>
+
+#ifndef _ISOMAC
+libm_hidden_proto (__iscanonicall)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c b/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c
index 100b401..63ddb82 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c
@@ -57,3 +57,4 @@ __iscanonicall (long double x)
int expdiff = hexp - lexp;
return expdiff > 53 || (expdiff == 53 && low_p2 && (ix & 1) == 0);
}
+libm_hidden_def (__iscanonicall)
diff --git a/sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c b/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c
index fc16250..1fe1bc4 100644
--- a/sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c
+++ b/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c
@@ -1,4 +1,4 @@
-/* Test iscanonical for ldbl-128ibm.
+/* Test iscanonical and canonicalizel for ldbl-128ibm.
Copyright (C) 2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -188,10 +188,37 @@ do_test (void)
long double ld = ldbl_pack (tests[i].hi, tests[i].lo);
bool canonical = iscanonical (ld);
if (canonical == tests[i].canonical)
- printf ("PASS: test %zu\n", i);
+ {
+ printf ("PASS: iscanonical test %zu\n", i);
+ long double ldc = 12345.0L;
+ bool canonicalize_ret = canonicalizel (&ldc, &ld);
+ if (canonicalize_ret == !canonical)
+ {
+ printf ("PASS: canonicalizel test %zu\n", i);
+ bool canon_ok;
+ if (!canonical)
+ canon_ok = ldc == 12345.0L;
+ else if (isnan (ld))
+ canon_ok = isnan (ldc) && !issignaling (ldc);
+ else
+ canon_ok = ldc == ld;
+ if (canon_ok)
+ printf ("PASS: canonicalized value test %zu\n", i);
+ else
+ {
+ printf ("FAIL: canonicalized value test %zu\n", i);
+ result = 1;
+ }
+ }
+ else
+ {
+ printf ("FAIL: canonicalizel test %zu\n", i);
+ result = 1;
+ }
+ }
else
{
- printf ("FAIL: test %zu\n", i);
+ printf ("FAIL: iscanonical test %zu\n", i);
result = 1;
}
}