This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

conformtest: Improve math.h tests for X/Open versions


Lots of conformtest tests for XPG3, XPG4 and UNIX98 fail because of
inaccurate expectations for math.h.  I propose this patch to fix these
(and one XOPEN2K expectation).  Tested x86_64.

I checked my changes against XPG4 and UNIX98, using XPG4 as the
references for both _XOPEN_SOURCE _XOPEN_SOURCE_EXTENDED
(conformtest's "XPG4") and plain _XOPEN_SOURCE (conformtest's
"XPG3").  I did not attempt to check the correctness of expectations I
was not changing.

2012-04-28  Joseph Myers  <joseph@codesourcery.com>

	* conform/data/math.h-data [XPG3 || XPG4 || UNIX98] (fpclassify):
	Do not expect macro.
	[XPG3 || XPG4 || UNIX98] (isfinite): Likewise.
	[XPG3 || XPG4 || UNIX98] (isinf): Likewise.
	[XPG3 || XPG4 || UNIX98] (isnan): Likewise.
	[XPG3 || XPG4 || UNIX98] (isnormal): Likewise.
	[XPG3 || XPG4 || UNIX98] (signbit): Likewise.
	[XPG3 || XPG4 || UNIX98] (isgreater): Likewise.
	[XPG3 || XPG4 || UNIX98] (isgreaterequal): Likewise.
	[XPG3 || XPG4 || UNIX98] (isless): Likewise.
	[XPG3 || XPG4 || UNIX98] (islessequal): Likewise.
	[XPG3 || XPG4 || UNIX98] (islessgreater): Likewise.
	[XPG3 || XPG4 || UNIX98] (isunordered): Likewise.
	[XPG3 || XPG4 || UNIX98] (isnan): Expect as function.
	[XPG3 || XPG4 || UNIX98] (HUGE_VALF): Do not expect.
	[XPG3 || XPG4 || UNIX98] (HUGE_VALL): Likewise.
	[XPG3 || XPG4 || UNIX98] (INFINITY): Likewise.
	[XPG3 || XPG4 || UNIX98] (NAN): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_INFINITE): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_NAN): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_NORMAL): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_SUBNORMAL): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_ZERO): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_FAST_FMA): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_FAST_FMAF): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_FAST_FMAL): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_ILOGB0): Likewise.
	[XPG3 || XPG4 || UNIX98] (FP_ILOGBNAN): Likewise.
	[XPG3 || XPG4 || UNIX98] (copysign): Likewise.
	[XPG3 || XPG4 || UNIX98] (exp2): Likewise.
	[XPG3 || XPG4 || UNIX98] (log2): Likewise.
	[XPG3 || XPG4 || UNIX98] (tgama): Likewise.
	[XPG3] (acosh): Likewise.
	[XPG3] (asinh): Likewise.
	[XPG3] (atanh): Likewise.
	[XPG3] (cbrt): Likewise.
	[XPG3] (expm1): Likewise.
	[XPG3] (ilogb): Likewise.
	[XPG3] (log1p): Likewise.
	[XPG3] (logb): Likewise.
	[XPG3] (nextafter): Likewise.
	[XPG3 || XPG4 || UNIX98] (nexttoward): Likewise.
	[XPG3 || XPG4 || UNIX98] (nearbyint): Likewise.
	[XPG3] (remainder): Likewise.
	[XPG3] (rint): Likewise.
	[XPG3 || XPG4 || UNIX98] (round): Likewise.
	[XPG3 || XPG4 || UNIX98] (trunc): Likewise.
	[XPG3 || XPG4 || UNIX98] (lrint): Likewise.
	[XPG3 || XPG4 || UNIX98] (llrint): Likewise.
	[XPG3 || XPG4 || UNIX98] (lround): Likewise.
	[XPG3 || XPG4 || UNIX98] (llround): Likewise.
	[XPG3 || XPG4 || UNIX98] (remquo): Likewise.
	[UNIX98 || XOPEN2K] (scalb): Expect.
	[XPG3 || XPG4 || UNIX98] (scalbn): Do not expect.
	[XPG3 || XPG4 || UNIX98] (scalbln): Likewise.
	[XPG3 || XPG4 || UNIX98] (fdim): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmax): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmin): Likewise.
	[XPG3 || XPG4 || UNIX98] (fma): Likewise.
	[XPG3 || XPG4 || UNIX98] (nan): Likewise.
	[XPG3 || XPG4 || UNIX98] (acosf): Likewise.
	[XPG3 || XPG4 || UNIX98] (asinf): Likewise.
	[XPG3 || XPG4 || UNIX98] (atanf): Likewise.
	[XPG3 || XPG4 || UNIX98] (atan2f): Likewise.
	[XPG3 || XPG4 || UNIX98] (ceilf): Likewise.
	[XPG3 || XPG4 || UNIX98] (copysignf): Likewise.
	[XPG3 || XPG4 || UNIX98] (cosf): Likewise.
	[XPG3 || XPG4 || UNIX98] (coshf): Likewise.
	[XPG3 || XPG4 || UNIX98] (expf): Likewise.
	[XPG3 || XPG4 || UNIX98] (exp2f): Likewise.
	[XPG3 || XPG4 || UNIX98] (fabsf): Likewise.
	[XPG3 || XPG4 || UNIX98] (floorf): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmodf): Likewise.
	[XPG3 || XPG4 || UNIX98] (frexpf): Likewise.
	[XPG3 || XPG4 || UNIX98] (ldexpf): Likewise.
	[XPG3 || XPG4 || UNIX98] (logf): Likewise.
	[XPG3 || XPG4 || UNIX98] (log10f): Likewise.
	[XPG3 || XPG4 || UNIX98] (log2f): Likewise.
	[XPG3 || XPG4 || UNIX98] (modff): Likewise.
	[XPG3 || XPG4 || UNIX98] (powf): Likewise.
	[XPG3 || XPG4 || UNIX98] (sinf): Likewise.
	[XPG3 || XPG4 || UNIX98] (sinhf): Likewise.
	[XPG3 || XPG4 || UNIX98] (sqrtf): Likewise.
	[XPG3 || XPG4 || UNIX98] (tanf): Likewise.
	[XPG3 || XPG4 || UNIX98] (tanhf): Likewise.
	[XPG3 || XPG4 || UNIX98] (erff): Likewise.
	[XPG3 || XPG4 || UNIX98] (erfcf): Likewise.
	[XPG3 || XPG4 || UNIX98] (gammaf): Likewise.
	[XPG3 || XPG4 || UNIX98] (hypotf): Likewise.
	[XPG3 || XPG4 || UNIX98] (j0f): Likewise.
	[XPG3 || XPG4 || UNIX98] (j1f): Likewise.
	[XPG3 || XPG4 || UNIX98] (jnf): Likewise.
	[XPG3 || XPG4 || UNIX98] (lgammaf): Likewise.
	[XPG3 || XPG4 || UNIX98] (tgammaf): Likewise.
	[XPG3 || XPG4 || UNIX98] (y0f): Likewise.
	[XPG3 || XPG4 || UNIX98] (y1f): Likewise.
	[XPG3 || XPG4 || UNIX98] (ynf): Likewise.
	[XPG3 || XPG4 || UNIX98] (acoshf): Likewise.
	[XPG3 || XPG4 || UNIX98] (asinhf): Likewise.
	[XPG3 || XPG4 || UNIX98] (atanhf): Likewise.
	[XPG3 || XPG4 || UNIX98] (cbrtf): Likewise.
	[XPG3 || XPG4 || UNIX98] (expm1f): Likewise.
	[XPG3 || XPG4 || UNIX98] (ilogbf): Likewise.
	[XPG3 || XPG4 || UNIX98] (log1pf): Likewise.
	[XPG3 || XPG4 || UNIX98] (logbf): Likewise.
	[XPG3 || XPG4 || UNIX98] (nextafterf): Likewise.
	[XPG3 || XPG4 || UNIX98] (nexttowardf): Likewise.
	[XPG3 || XPG4 || UNIX98] (nearbyintf): Likewise.
	[XPG3 || XPG4 || UNIX98] (remainderf): Likewise.
	[XPG3 || XPG4 || UNIX98] (rintf): Likewise.
	[XPG3 || XPG4 || UNIX98] (roundf): Likewise.
	[XPG3 || XPG4 || UNIX98] (truncf): Likewise.
	[XPG3 || XPG4 || UNIX98] (lrintf): Likewise.
	[XPG3 || XPG4 || UNIX98] (llrintf): Likewise.
	[XPG3 || XPG4 || UNIX98] (lroundf): Likewise.
	[XPG3 || XPG4 || UNIX98] (llroundf): Likewise.
	[XPG3 || XPG4 || UNIX98] (remquof): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalbf): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalbnf): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalblnf): Likewise.
	[XPG3 || XPG4 || UNIX98] (fdimf): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmaxf): Likewise.
	[XPG3 || XPG4 || UNIX98] (fminf): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmaf): Likewise.
	[XPG3 || XPG4 || UNIX98] (nanf): Likewise.
	[XPG3 || XPG4 || UNIX98] (acosl): Likewise.
	[XPG3 || XPG4 || UNIX98] (asinl): Likewise.
	[XPG3 || XPG4 || UNIX98] (atanl): Likewise.
	[XPG3 || XPG4 || UNIX98] (atan2l): Likewise.
	[XPG3 || XPG4 || UNIX98] (ceill): Likewise.
	[XPG3 || XPG4 || UNIX98] (copysignl): Likewise.
	[XPG3 || XPG4 || UNIX98] (cosl): Likewise.
	[XPG3 || XPG4 || UNIX98] (coshl): Likewise.
	[XPG3 || XPG4 || UNIX98] (expl): Likewise.
	[XPG3 || XPG4 || UNIX98] (exp2l): Likewise.
	[XPG3 || XPG4 || UNIX98] (fabsl): Likewise.
	[XPG3 || XPG4 || UNIX98] (floorl): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmodl): Likewise.
	[XPG3 || XPG4 || UNIX98] (frexpl): Likewise.
	[XPG3 || XPG4 || UNIX98] (ldexpl): Likewise.
	[XPG3 || XPG4 || UNIX98] (logl): Likewise.
	[XPG3 || XPG4 || UNIX98] (log10l): Likewise.
	[XPG3 || XPG4 || UNIX98] (log2l): Likewise.
	[XPG3 || XPG4 || UNIX98] (modfl): Likewise.
	[XPG3 || XPG4 || UNIX98] (powl): Likewise.
	[XPG3 || XPG4 || UNIX98] (sinl): Likewise.
	[XPG3 || XPG4 || UNIX98] (sinhl): Likewise.
	[XPG3 || XPG4 || UNIX98] (sqrtl): Likewise.
	[XPG3 || XPG4 || UNIX98] (tanl): Likewise.
	[XPG3 || XPG4 || UNIX98] (tanhl): Likewise.
	[XPG3 || XPG4 || UNIX98] (erfl): Likewise.
	[XPG3 || XPG4 || UNIX98] (erfcl): Likewise.
	[XPG3 || XPG4 || UNIX98] (gammal): Likewise.
	[XPG3 || XPG4 || UNIX98] (hypotl): Likewise.
	[XPG3 || XPG4 || UNIX98] (j0l): Likewise.
	[XPG3 || XPG4 || UNIX98] (j1l): Likewise.
	[XPG3 || XPG4 || UNIX98] (jnl): Likewise.
	[XPG3 || XPG4 || UNIX98] (lgammal): Likewise.
	[XPG3 || XPG4 || UNIX98] (tgammal): Likewise.
	[XPG3 || XPG4 || UNIX98] (y0l): Likewise.
	[XPG3 || XPG4 || UNIX98] (y1l): Likewise.
	[XPG3 || XPG4 || UNIX98] (ynl): Likewise.
	[XPG3 || XPG4 || UNIX98] (acoshl): Likewise.
	[XPG3 || XPG4 || UNIX98] (asinhl): Likewise.
	[XPG3 || XPG4 || UNIX98] (atanhl): Likewise.
	[XPG3 || XPG4 || UNIX98] (cbrtl): Likewise.
	[XPG3 || XPG4 || UNIX98] (expm1l): Likewise.
	[XPG3 || XPG4 || UNIX98] (ilogbl): Likewise.
	[XPG3 || XPG4 || UNIX98] (log1pl): Likewise.
	[XPG3 || XPG4 || UNIX98] (logbl): Likewise.
	[XPG3 || XPG4 || UNIX98] (nextafterl): Likewise.
	[XPG3 || XPG4 || UNIX98] (nexttowardl): Likewise.
	[XPG3 || XPG4 || UNIX98] (nearbyintl): Likewise.
	[XPG3 || XPG4 || UNIX98] (remainderl): Likewise.
	[XPG3 || XPG4 || UNIX98] (rintl): Likewise.
	[XPG3 || XPG4 || UNIX98] (roundl): Likewise.
	[XPG3 || XPG4 || UNIX98] (truncl): Likewise.
	[XPG3 || XPG4 || UNIX98] (lrintl): Likewise.
	[XPG3 || XPG4 || UNIX98] (llrintl): Likewise.
	[XPG3 || XPG4 || UNIX98] (lroundl): Likewise.
	[XPG3 || XPG4 || UNIX98] (llroundl): Likewise.
	[XPG3 || XPG4 || UNIX98] (remquol): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalbl): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalbnl): Likewise.
	[XPG3 || XPG4 || UNIX98] (scalblnl): Likewise.
	[XPG3 || XPG4 || UNIX98] (fdiml): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmaxl): Likewise.
	[XPG3 || XPG4 || UNIX98] (fminl): Likewise.
	[XPG3 || XPG4 || UNIX98] (fmal): Likewise.
	[XPG3 || XPG4 || UNIX98] (nanl): Likewise.

diff --git a/conform/data/math.h-data b/conform/data/math.h-data
index 5f1f11d..ce41dc5 100644
--- a/conform/data/math.h-data
+++ b/conform/data/math.h-data
@@ -1,6 +1,7 @@
 constant HUGE_VAL
 
 #if !defined ISO && !defined POSIX
+# if !defined XPG3 && !defined XPG4 && !defined UNIX98
 macro fpclassify
 macro isfinite
 macro isinf
@@ -13,6 +14,10 @@ macro isless
 macro islessequal
 macro islessgreater
 macro isunordered
+# endif
+# if defined XPG3 || defined XPG4 || defined UNIX98
+function double isnan (double)
+# endif
 
 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 constant M_E
@@ -31,6 +36,7 @@ constant M_SQRT1_2
 
 constant MAXFLOAT
 # endif
+# if !defined XPG3 && !defined XPG4 && !defined UNIX98
 constant HUGE_VALF
 constant HUGE_VALL
 constant INFINITY
@@ -49,7 +55,6 @@ optional-macro FP_FAST_FMAL
 constant FP_ILOGB0
 constant FP_ILOGBNAN
 
-# if !defined XPG3 && !defined XPG4 && !defined UNIX98
 macro MATH_ERRNO == 1
 macro MATH_ERREXCEPT == 2
 
@@ -62,13 +67,13 @@ function double asin (double)
 function double atan (double)
 function double atan2 (double, double)
 function double ceil (double)
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function double copysign (double, double)
 #endif
 function double cos (double)
 function double cosh (double)
 function double exp (double)
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function double exp2 (double)
 #endif
 function double fabs (double)
@@ -78,7 +83,7 @@ function double frexp (double, int*)
 function double ldexp (double, int)
 function double log (double)
 function double log10 (double)
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function double log2 (double)
 #endif
 function double modf (double, double*)
@@ -103,12 +108,15 @@ function double j1 (double)
 function double jn (int, double)
 # endif
 function double lgamma (double)
+# if !defined XPG3 && !defined XPG4 && !defined UNIX98
 function double tgamma (double)
+# endif
 # if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function double y0 (double)
 function double y1 (double)
 function double yn (int, double)
 # endif
+# if !defined XPG3
 function double acosh (double)
 function double asinh (double)
 function double atanh (double)
@@ -118,10 +126,13 @@ function int ilogb (double)
 function double log1p (double)
 function double logb (double)
 function double nextafter (double, double)
+#  if !defined XPG4 && !defined UNIX98
 function double nexttoward (double, long double)
 function double nearbyint (double)
+#  endif
 function double remainder (double, double)
 function double rint (double)
+#  if !defined XPG4 && !defined UNIX98
 function double round (double)
 function double trunc (double)
 function long lrint (double)
@@ -129,9 +140,11 @@ function {long long} llrint (double)
 function long lround (double)
 function {long long} llround (double)
 function double remquo (double, double, int*)
-# if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
+#  endif
+#  if defined XPG4 || defined UNIX98 || defined XOPEN2K
 function double scalb (double, double)
-# endif
+#  endif
+#  if !defined XPG4 && !defined UNIX98
 function double scalbn (double, int)
 function double scalbln (double, long)
 function double fdim (double, double)
@@ -139,6 +152,8 @@ function double fmax (double, double)
 function double fmin (double, double)
 function double fma (double, double, double)
 function double nan (const char*)
+#  endif
+# endif
 
 # if !defined POSIX && !defined POSIX2008
 // variable signgam
@@ -146,7 +161,7 @@ allow signgam
 # endif
 #endif
 
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function float acosf (float)
 function float asinf (float)
 function float atanf (float)
@@ -174,9 +189,6 @@ function float tanf (float)
 function float tanhf (float)
 function float erff (float)
 function float erfcf (float)
-#if defined XPG3 || defined XPG4 || defined UNIX98
-function float gammaf (float)
-#endif
 function float hypotf (float, float)
 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function float j0f (float)
@@ -210,9 +222,6 @@ function {long long} llrintf (float)
 function long lroundf (float)
 function {long long} llroundf (float)
 function float remquof (float, float, int*)
-#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
-function float scalbf (float, float)
-#endif
 function float scalbnf (float, int)
 function float scalblnf (float, long)
 function float fdimf (float, float)
@@ -248,9 +257,6 @@ function {long double} tanl (long double)
 function {long double} tanhl (long double)
 function {long double} erfl (long double)
 function {long double} erfcl (long double)
-#if defined XPG3 || defined XPG4 || defined UNIX98
-function {long double} gammal (long double)
-#endif
 function {long double} hypotl (long double, long double)
 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {long double} j0l (long double)
@@ -284,9 +290,6 @@ function {long long} llrintl (long double)
 function long lroundl (long double)
 function {long long} llroundl (long double)
 function {long double} remquol (long double, long double, int*)
-#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
-function {long double} scalbl (long double, long double)
-#endif
 function {long double} scalbnl (long double, int)
 function {long double} scalblnl (long double, long)
 function {long double} fdiml (long double, long double)

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]