This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
26_numerics/complex/13450.cc and IBM long double
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Tue, 14 Nov 2006 14:43:33 +0000 (UTC)
- Subject: 26_numerics/complex/13450.cc and IBM long double
The libstdc++ test 26_numerics/complex/13450.cc cannot work reliably for
IBM long double, since we define epsilon correctly for this type which
means 100 * epsilon can be smaller than 1ulp for a particular long double
value (and so the test is only likely to pass if all three computed
complex values are actually identical). Thus this patch disables the long
double testing in this testcase for the IBM long double case. OK to
commit?
2006-11-14 Joseph Myers <joseph@codesourcery.com>
* testsuite/26_numerics/complex/13450.cc: Do not test long double
in IBM long double case.
Index: libstdc++-v3/testsuite/26_numerics/complex/13450.cc
===================================================================
--- libstdc++-v3/testsuite/26_numerics/complex/13450.cc (revision 118811)
+++ libstdc++-v3/testsuite/26_numerics/complex/13450.cc (working copy)
@@ -61,6 +61,11 @@
d2 = 1.4;
test01_do(d1, d2);
+#if __LDBL_MANT_DIG__ != 106
+ /* For IBM long double, epsilon is too small (since 1.0 plus any
+ double is representable) to be able to expect results within
+ epsilon * 100 (which may be much less than 1ulp for a particular
+ long double value). */
long double ld1 = -1.0l;
long double ld2 = 0.5l;
test01_do(ld1, ld2);
@@ -68,6 +73,7 @@
ld1 = -3.2l;
ld2 = 1.4l;
test01_do(ld1, ld2);
+#endif
}
int main()
--
Joseph S. Myers
joseph@codesourcery.com