Update.
* conform/conformtest.pl: Implement optional-macro. * conform/data/math.h-data: Update for XPG6. * math/math.h (HUGE): Define as FLT_MAX value but don't use FLT_MAX. Don't include <float.h>. (MAXFLOAT): Likewise. * math/math.h: Define MATH_ERRNO and MATH_ERREXCEPT.
This commit is contained in:
parent
a7927149a1
commit
12b64309cf
@ -1,5 +1,14 @@
|
||||
2001-01-26 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* conform/conformtest.pl: Implement optional-macro.
|
||||
* conform/data/math.h-data: Update for XPG6.
|
||||
|
||||
* math/math.h (HUGE): Define as FLT_MAX value but don't use
|
||||
FLT_MAX. Don't include <float.h>.
|
||||
(MAXFLOAT): Likewise.
|
||||
|
||||
* math/math.h: Define MATH_ERRNO and MATH_ERREXCEPT.
|
||||
|
||||
* include/bits/xopen_lim.h: Don't define FOPEN_MAX here.
|
||||
|
||||
* conform/data/limits.h-data: Mark constants as optional wherever
|
||||
|
@ -361,7 +361,7 @@ while ($#headers >= 0) {
|
||||
$res = compiletest ($fnamebase, "Testing for constant $const",
|
||||
"NOT PRESENT", $res, 1);
|
||||
|
||||
if ($value ne "") {
|
||||
if ($value ne "" && $res == 0) {
|
||||
# Generate a program to test for the value of this constant.
|
||||
open (TESTFILE, ">$fnamebase.c");
|
||||
print TESTFILE "$prepend";
|
||||
@ -373,7 +373,7 @@ while ($#headers >= 0) {
|
||||
$res = runtest ($fnamebase, "Testing for value of constant $const",
|
||||
"Constant \"$const\" has not the right value.", $res);
|
||||
}
|
||||
} elsif (/^constant *([a-zA-Z0-9_]*) ([>=<]+) ([A-Za-z0-9_]*)/) {
|
||||
} elsif (/^constant *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_]*)/) {
|
||||
my($const) = $1;
|
||||
my($op) = $2;
|
||||
my($value) = $3;
|
||||
@ -464,7 +464,7 @@ while ($#headers >= 0) {
|
||||
$res = compiletest ($fnamebase, "Testing for constant $const",
|
||||
"NOT PRESENT", $res, 1);
|
||||
|
||||
if ($value ne "") {
|
||||
if ($value ne "" && $res == 0) {
|
||||
# Generate a program to test for the value of this constant.
|
||||
open (TESTFILE, ">$fnamebase.c");
|
||||
print TESTFILE "$prepend";
|
||||
@ -726,6 +726,56 @@ while ($#headers >= 0) {
|
||||
|
||||
$res = runtest ($fnamebase, "Testing for value of macro $macro",
|
||||
"Macro \"$macro\" has not the right value.", $res);
|
||||
} elsif (/^optional-macro *([^ ]*)/) {
|
||||
my($macro) = "$1";
|
||||
|
||||
# Remember that this name is allowed.
|
||||
push @allow, $macro;
|
||||
|
||||
# Generate a program to test for availability of this macro.
|
||||
open (TESTFILE, ">$fnamebase.c");
|
||||
print TESTFILE "$prepend";
|
||||
print TESTFILE "#include <$h>\n";
|
||||
print TESTFILE "#ifndef $macro\n";
|
||||
print TESTFILE "# error \"Macro $macro not defined\"\n";
|
||||
print TESTFILE "#endif\n";
|
||||
close (TESTFILE);
|
||||
|
||||
compiletest ($fnamebase, "Test availability of macro $macro",
|
||||
"NOT PRESENT", $missing, 1);
|
||||
} elsif (/^macro *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_]*)/) {
|
||||
my($macro) = "$1";
|
||||
my($op) = $2;
|
||||
my($value) = $3;
|
||||
my($res) = $missing;
|
||||
|
||||
# Remember that this name is allowed.
|
||||
push @allow, $macro;
|
||||
|
||||
# Generate a program to test for availability of this macro.
|
||||
open (TESTFILE, ">$fnamebase.c");
|
||||
print TESTFILE "$prepend";
|
||||
print TESTFILE "#include <$h>\n";
|
||||
print TESTFILE "#ifndef $macro\n";
|
||||
print TESTFILE "# error \"Macro $macro not defined\"\n";
|
||||
print TESTFILE "#endif\n";
|
||||
close (TESTFILE);
|
||||
|
||||
$res = compiletest ($fnamebase, "Test availability of macro $macro",
|
||||
"Macro \"$macro\" is not available.", $res, 0);
|
||||
|
||||
if ($value ne "") {
|
||||
# Generate a program to test for the value of this constant.
|
||||
open (TESTFILE, ">$fnamebase.c");
|
||||
print TESTFILE "$prepend";
|
||||
print TESTFILE "#include <$h>\n";
|
||||
# Negate the value since 0 means ok
|
||||
print TESTFILE "int main (void) { return !($macro $op $value); }\n";
|
||||
close (TESTFILE);
|
||||
|
||||
$res = runtest ($fnamebase, "Testing for value of constant $macro",
|
||||
"Macro \"$macro\" has not the right value.", $res);
|
||||
}
|
||||
} elsif (/^macro *([^ ]*)/) {
|
||||
my($macro) = "$1";
|
||||
|
||||
|
@ -1,4 +1,17 @@
|
||||
#if !defined ISO && !defined POSIX
|
||||
macro fpclassify
|
||||
macro isfinite
|
||||
macro isinf
|
||||
macro isnan
|
||||
macro isnormal
|
||||
macro signbit
|
||||
macro isgreater
|
||||
macro isgreaterequal
|
||||
macro isless
|
||||
macro islessequal
|
||||
macro islessgreater
|
||||
macro isunordered
|
||||
|
||||
constant M_E
|
||||
constant M_LOG2E
|
||||
constant M_LOG10E
|
||||
@ -15,6 +28,26 @@ constant M_SQRT1_2
|
||||
|
||||
constant MAXFLOAT
|
||||
constant HUGE_VAL
|
||||
constant HUGE_VALF
|
||||
constant HUGE_VALL
|
||||
constant INFINITY
|
||||
constant NAN
|
||||
|
||||
macro FP_INFINITE
|
||||
macro FP_NAN
|
||||
macro FP_NORMAL
|
||||
macro FP_SUBNORMAL
|
||||
macro FP_ZERO
|
||||
|
||||
optional-macro FP_FAST_FMA
|
||||
optional-macro FP_FAST_FMAF
|
||||
optional-macro FP_FAST_FMAL
|
||||
|
||||
constant FP_ILOGB0
|
||||
constant FP_ILOGBNAN
|
||||
|
||||
macro MATH_ERRNO == 1
|
||||
macro MATH_ERREXCEPT == 2
|
||||
#endif
|
||||
|
||||
function double acos (double)
|
||||
@ -22,9 +55,11 @@ function double asin (double)
|
||||
function double atan (double)
|
||||
function double atan2 (double, double)
|
||||
function double ceil (double)
|
||||
function double copysign (double, double)
|
||||
function double cos (double)
|
||||
function double cosh (double)
|
||||
function double exp (double)
|
||||
function double exp2 (double)
|
||||
function double fabs (double)
|
||||
function double floor (double)
|
||||
function double fmod (double, double)
|
||||
@ -32,6 +67,7 @@ function double frexp (double, int*)
|
||||
function double ldexp (double, int)
|
||||
function double log (double)
|
||||
function double log10 (double)
|
||||
function double log2 (double)
|
||||
function double modf (double, double*)
|
||||
function double pow (double, double)
|
||||
function double sin (double)
|
||||
@ -47,6 +83,7 @@ function double j0 (double)
|
||||
function double j1 (double)
|
||||
function double jn (int, double)
|
||||
function double lgamma (double)
|
||||
function double tgamma (double)
|
||||
function double y0 (double)
|
||||
function double y1 (double)
|
||||
function double yn (int, double)
|
||||
@ -60,21 +97,174 @@ function int ilogb (double)
|
||||
function double log1p (double)
|
||||
function double logb (double)
|
||||
function double nextafter (double, double)
|
||||
function double nexttoward (double, long double)
|
||||
function double nearbyint (double)
|
||||
function double remainder (double, double)
|
||||
function double rint (double)
|
||||
function double round (double)
|
||||
function double trunc (double)
|
||||
function long lrint (double)
|
||||
function {long long} llrint (double)
|
||||
function long lround (double)
|
||||
function {long long} llround (double)
|
||||
function double remquo (double, double, int*)
|
||||
function double scalb (double, double)
|
||||
function double scalbn (double, int)
|
||||
function double scalbln (double, long)
|
||||
function double fdim (double, double)
|
||||
function double fmax (double, double)
|
||||
function double fmin (double, double)
|
||||
function double fma (double, double, double)
|
||||
function double nan (const char*)
|
||||
|
||||
// variable signgam
|
||||
allow signgam
|
||||
|
||||
#if !defined ISO && !defined POSIX
|
||||
function float acosf (float)
|
||||
function float asinf (float)
|
||||
function float atanf (float)
|
||||
function float atan2f (float, float)
|
||||
function float ceilf (float)
|
||||
function float copysignf (float, float)
|
||||
function float cosf (float)
|
||||
function float coshf (float)
|
||||
function float expf (float)
|
||||
function float exp2f (float)
|
||||
function float fabsf (float)
|
||||
function float floorf (float)
|
||||
function float fmodf (float, float)
|
||||
function float frexpf (float, int*)
|
||||
function float ldexpf (float, int)
|
||||
function float logf (float)
|
||||
function float log10f (float)
|
||||
function float log2f (float)
|
||||
function float modff (float, float*)
|
||||
function float powf (float, float)
|
||||
function float sinf (float)
|
||||
function float sinhf (float)
|
||||
function float sqrtf (float)
|
||||
function float tanf (float)
|
||||
function float tanhf (float)
|
||||
function float erff (float)
|
||||
function float erfcf (float)
|
||||
function float gammaf (float)
|
||||
function float hypotf (float, float)
|
||||
function float j0f (float)
|
||||
function float j1f (float)
|
||||
function float jnf (int, float)
|
||||
function float lgammaf (float)
|
||||
function float tgammaf (float)
|
||||
function float y0f (float)
|
||||
function float y1f (float)
|
||||
function float ynf (int, float)
|
||||
function int isnanf (float)
|
||||
function float acoshf (float)
|
||||
function float asinhf (float)
|
||||
function float atanhf (float)
|
||||
function float cbrtf (float)
|
||||
function float expm1f (float)
|
||||
function int ilogbf (float)
|
||||
function float log1pf (float)
|
||||
function float logbf (float)
|
||||
function float nextafterf (float, float)
|
||||
function float nexttowardf (float, long double)
|
||||
function float nearbyintf (float)
|
||||
function float remainderf (float, float)
|
||||
function float rintf (float)
|
||||
function float roundf (float)
|
||||
function float truncf (float)
|
||||
function long lrintf (float)
|
||||
function {long long} llrintf (float)
|
||||
function long lroundf (float)
|
||||
function {long long} llroundf (float)
|
||||
function float remquof (float, float, int*)
|
||||
function float scalbf (float, float)
|
||||
function float scalbnf (float, int)
|
||||
function float scalblnf (float, long)
|
||||
function float fdimf (float, float)
|
||||
function float fmaxf (float, float)
|
||||
function float fminf (float, float)
|
||||
function float fmaf (float, float, float)
|
||||
function float nanf (const char*)
|
||||
|
||||
function {long double} acosl (long double)
|
||||
function {long double} asinl (long double)
|
||||
function {long double} atanl (long double)
|
||||
function {long double} atan2l (long double, long double)
|
||||
function {long double} ceill (long double)
|
||||
function {long double} copysignl (long double, long double)
|
||||
function {long double} cosl (long double)
|
||||
function {long double} coshl (long double)
|
||||
function {long double} expl (long double)
|
||||
function {long double} exp2l (long double)
|
||||
function {long double} fabsl (long double)
|
||||
function {long double} floorl (long double)
|
||||
function {long double} fmodl (long double, long double)
|
||||
function {long double} frexpl (long double, int*)
|
||||
function {long double} ldexpl (long double, int)
|
||||
function {long double} logl (long double)
|
||||
function {long double} log10l (long double)
|
||||
function {long double} log2l (long double)
|
||||
function {long double} modfl (long double, long double*)
|
||||
function {long double} powl (long double, long double)
|
||||
function {long double} sinl (long double)
|
||||
function {long double} sinhl (long double)
|
||||
function {long double} sqrtl (long double)
|
||||
function {long double} tanl (long double)
|
||||
function {long double} tanhl (long double)
|
||||
function {long double} erfl (long double)
|
||||
function {long double} erfcl (long double)
|
||||
function {long double} gammal (long double)
|
||||
function {long double} hypotl (long double, long double)
|
||||
function {long double} j0l (long double)
|
||||
function {long double} j1l (long double)
|
||||
function {long double} jnl (int, long double)
|
||||
function {long double} lgammal (long double)
|
||||
function {long double} tgammal (long double)
|
||||
function {long double} y0l (long double)
|
||||
function {long double} y1l (long double)
|
||||
function {long double} ynl (int, long double)
|
||||
function int isnanl (long double)
|
||||
function {long double} acoshl (long double)
|
||||
function {long double} asinhl (long double)
|
||||
function {long double} atanhl (long double)
|
||||
function {long double} cbrtl (long double)
|
||||
function {long double} expm1l (long double)
|
||||
function int ilogbl (long double)
|
||||
function {long double} log1pl (long double)
|
||||
function {long double} logbl (long double)
|
||||
function {long double} nextafterl (long double, long double)
|
||||
function {long double} nexttowardl (long double, long double)
|
||||
function {long double} nearbyintl (long double)
|
||||
function {long double} remainderl (long double, long double)
|
||||
function {long double} rintl (long double)
|
||||
function {long double} roundl (long double)
|
||||
function {long double} truncl (long double)
|
||||
function long lrintl (long double)
|
||||
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*)
|
||||
function {long double} scalbl (long double, long double)
|
||||
function {long double} scalbnl (long double, int)
|
||||
function {long double} scalblnl (long double, long)
|
||||
function {long double} fdiml (long double, long double)
|
||||
function {long double} fmaxl (long double, long double)
|
||||
function {long double} fminl (long double, long double)
|
||||
function {long double} fmal (long double, long double, long double)
|
||||
function {long double} nanl (const char*)
|
||||
#else
|
||||
allow acosf
|
||||
allow asinf
|
||||
allow atanf
|
||||
allow atan2f
|
||||
allow ceilf
|
||||
allow copysignf
|
||||
allow cosf
|
||||
allow coshf
|
||||
allow expf
|
||||
allow exp2f
|
||||
allow fabsf
|
||||
allow floorf
|
||||
allow fmodf
|
||||
@ -82,6 +272,7 @@ allow frexpf
|
||||
allow ldexpf
|
||||
allow logf
|
||||
allow log10f
|
||||
allow log2f
|
||||
allow powf
|
||||
allow sinf
|
||||
allow sinhf
|
||||
@ -96,6 +287,7 @@ allow j0f
|
||||
allow j1f
|
||||
allow jnf
|
||||
allow lgammaf
|
||||
allow tgammaf
|
||||
allow y0f
|
||||
allow y1f
|
||||
allow ynf
|
||||
@ -118,9 +310,11 @@ allow asinl
|
||||
allow atanl
|
||||
allow atan2l
|
||||
allow ceill
|
||||
allow copysignl
|
||||
allow cosl
|
||||
allow coshl
|
||||
allow expl
|
||||
allow exp2l
|
||||
allow fabsl
|
||||
allow floorl
|
||||
allow fmodl
|
||||
@ -128,6 +322,7 @@ allow frexpl
|
||||
allow ldexpl
|
||||
allow logl
|
||||
allow log10l
|
||||
allow log2l
|
||||
allow powl
|
||||
allow sinl
|
||||
allow sinhl
|
||||
@ -142,6 +337,7 @@ allow j0l
|
||||
allow j1l
|
||||
allow jnl
|
||||
allow lgammal
|
||||
allow tgammal
|
||||
allow y0l
|
||||
allow y1l
|
||||
allow ynl
|
||||
@ -158,5 +354,7 @@ allow nextafterl
|
||||
allow remainderl
|
||||
allow rintl
|
||||
allow scalbl
|
||||
#endif
|
||||
|
||||
allow *_t
|
||||
allow FP_*
|
||||
|
12
math/math.h
12
math/math.h
@ -1,5 +1,5 @@
|
||||
/* Declarations for math functions.
|
||||
Copyright (C) 1991,92,93,95,96,97,98,99 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991,92,93,95,96,97,98,99,2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -229,6 +229,10 @@ enum
|
||||
? __isinf (x) : __isinfl (x))
|
||||
# endif
|
||||
|
||||
/* Bitmasks for the math_errhandling macro. */
|
||||
# define MATH_ERRNO 1 /* errno set by math functions. */
|
||||
# define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */
|
||||
|
||||
#endif /* Use ISO C99. */
|
||||
|
||||
#ifdef __USE_MISC
|
||||
@ -285,15 +289,13 @@ extern int matherr (struct exception *__exc);
|
||||
# define PLOSS 6
|
||||
|
||||
/* SVID mode specifies returning this large value instead of infinity. */
|
||||
# define HUGE FLT_MAX
|
||||
# include <float.h> /* Defines FLT_MAX. */
|
||||
# define HUGE 3.40282347e+38F
|
||||
|
||||
#else /* !SVID */
|
||||
|
||||
# ifdef __USE_XOPEN
|
||||
/* X/Open wants another strange constant. */
|
||||
# define MAXFLOAT FLT_MAX
|
||||
# include <float.h>
|
||||
# define MAXFLOAT 3.40282347e+38F
|
||||
# endif
|
||||
|
||||
#endif /* SVID */
|
||||
|
Loading…
x
Reference in New Issue
Block a user