|
Packit |
992a25 |
set prototyped
|
|
Packit |
992a25 |
set nooptimize
|
|
Packit |
992a25 |
set stdio FEATURE/standards
|
|
Packit |
992a25 |
hdr float,limits,math,values
|
|
Packit |
992a25 |
lib,npt frexp,frexpl,ldexp,ldexpl,finite,finitel,isinfl,isnanl,copysign,copysignl FEATURE/standards math.h -lm
|
|
Packit |
992a25 |
lib fpclassify -lm note{ fpclassify present and works }end link{
|
|
Packit |
992a25 |
#include <sys/types.h>
|
|
Packit |
992a25 |
#include <sys/stat.h>
|
|
Packit |
992a25 |
#include <stdlib.h>
|
|
Packit |
992a25 |
#include <unistd.h>
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
int main() { return fpclassify(-0.0); }
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
lib isinf -lm note{ isinf present and works }end link{
|
|
Packit |
992a25 |
#include <sys/types.h>
|
|
Packit |
992a25 |
#include <sys/stat.h>
|
|
Packit |
992a25 |
#include <stdlib.h>
|
|
Packit |
992a25 |
#include <unistd.h>
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
int main() { return isinf(-0.0); }
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
lib isnan -lm note{ isnan present and works }end link{
|
|
Packit |
992a25 |
#include <sys/types.h>
|
|
Packit |
992a25 |
#include <sys/stat.h>
|
|
Packit |
992a25 |
#include <stdlib.h>
|
|
Packit |
992a25 |
#include <unistd.h>
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
int main() { return isnan(-0.0); }
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
lib signbit -lm note{ signbit present and works }end link{
|
|
Packit |
992a25 |
#include <sys/types.h>
|
|
Packit |
992a25 |
#include <sys/stat.h>
|
|
Packit |
992a25 |
#include <stdlib.h>
|
|
Packit |
992a25 |
#include <unistd.h>
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
int main() { return signbit(-0.0); }
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst ast_no_um2fm note{ no unsigned intmax => floatmax cast }end nolink{
|
|
Packit |
992a25 |
#include "FEATURE/common"
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
_ast_fltmax_t f = 0;
|
|
Packit |
992a25 |
unsigned _ast_intmax_t i = 0;
|
|
Packit |
992a25 |
f = i;
|
|
Packit |
992a25 |
i = f;
|
|
Packit |
992a25 |
return f == i;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst ast_mpy_overflow_fpe note{ fpe on mpy overflow }end noexecute{
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
float f;
|
|
Packit |
992a25 |
float p;
|
|
Packit |
992a25 |
int i;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
p = f = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
p = f;
|
|
Packit |
992a25 |
f *= 2.0;
|
|
Packit |
992a25 |
} while (f != p && ++i < 1024);
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst ast_div_underflow_fpe note{ fpe on div underflow }end noexecute{
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
float f;
|
|
Packit |
992a25 |
float p;
|
|
Packit |
992a25 |
int i;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
p = f = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
p = f;
|
|
Packit |
992a25 |
f /= 2.0;
|
|
Packit |
992a25 |
} while (f != p && ++i < 1024);
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
macro{
|
|
Packit |
992a25 |
#if _hdr_float
|
|
Packit |
992a25 |
#include <float.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_limits
|
|
Packit |
992a25 |
#include <limits.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_math
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_values
|
|
Packit |
992a25 |
#include <values.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !defined(FLT_MIN_EXP) && defined(FMINEXP)
|
|
Packit |
992a25 |
#define FLT_MIN_EXP FMINEXP
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(FLT_MIN) && defined(MINFLOAT)
|
|
Packit |
992a25 |
#define FLT_MIN MINFLOAT
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(FLT_MAX_EXP) && defined(FMAXEXP)
|
|
Packit |
992a25 |
#define FLT_MAX_EXP FMAXEXP
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(FLT_MAX) && defined(MAXFLOAT)
|
|
Packit |
992a25 |
#define FLT_MAX MAXFLOAT
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !defined(DBL_MIN_EXP) && defined(DMINEXP)
|
|
Packit |
992a25 |
#define DBL_MIN_EXP DMINEXP
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(DBL_MIN) && defined(MINDOUBLE)
|
|
Packit |
992a25 |
#define DBL_MIN MINDOUBLE
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(DBL_MAX_EXP) && defined(DMAXEXP)
|
|
Packit |
992a25 |
#define DBL_MAX_EXP DMAXEXP
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(DBL_MAX) && defined(MAXDOUBLE)
|
|
Packit |
992a25 |
#define DBL_MAX MAXDOUBLE
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
<<"#include <ast_common.h>">>
|
|
Packit |
992a25 |
#if _hdr_float
|
|
Packit |
992a25 |
<<"#include <float.h>">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_math
|
|
Packit |
992a25 |
<<"#include <math.h>">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_DIG
|
|
Packit |
992a25 |
<<"#ifndef FLT_DIG">>
|
|
Packit |
992a25 |
<<"#define FLT_DIG">> FLT_DIG
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX
|
|
Packit |
992a25 |
<<"#ifndef FLT_MAX">>
|
|
Packit |
992a25 |
<<"#define FLT_MAX">> FLT_MAX
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef FLT_MAX_10_EXP">>
|
|
Packit |
992a25 |
<<"#define FLT_MAX_10_EXP">> FLT_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX_EXP
|
|
Packit |
992a25 |
<<"#ifndef FLT_MAX_EXP">>
|
|
Packit |
992a25 |
<<"#define FLT_MAX_EXP">> FLT_MAX_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MIN
|
|
Packit |
992a25 |
<<"#ifndef FLT_MIN">>
|
|
Packit |
992a25 |
<<"#define FLT_MIN">> FLT_MIN
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef FLT_MIN_10_EXP">>
|
|
Packit |
992a25 |
<<"#define FLT_MIN_10_EXP">> FLT_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MIN_EXP
|
|
Packit |
992a25 |
<<"#ifndef FLT_MIN_EXP">>
|
|
Packit |
992a25 |
<<"#define FLT_MIN_EXP">> FLT_MIN_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef DBL_DIG
|
|
Packit |
992a25 |
<<"#ifndef DBL_DIG">>
|
|
Packit |
992a25 |
<<"#define DBL_DIG">> DBL_DIG
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MAX
|
|
Packit |
992a25 |
<<"#ifndef DBL_MAX">>
|
|
Packit |
992a25 |
<<"#define DBL_MAX">> DBL_MAX
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef DBL_MAX_10_EXP">>
|
|
Packit |
992a25 |
<<"#define DBL_MAX_10_EXP">> DBL_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MAX_EXP
|
|
Packit |
992a25 |
<<"#ifndef DBL_MAX_EXP">>
|
|
Packit |
992a25 |
<<"#define DBL_MAX_EXP">> DBL_MAX_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MIN
|
|
Packit |
992a25 |
<<"#ifndef DBL_MIN">>
|
|
Packit |
992a25 |
<<"#define DBL_MIN">> DBL_MIN
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef DBL_MIN_10_EXP">>
|
|
Packit |
992a25 |
<<"#define DBL_MIN_10_EXP">> DBL_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MIN_EXP
|
|
Packit |
992a25 |
<<"#ifndef DBL_MIN_EXP">>
|
|
Packit |
992a25 |
<<"#define DBL_MIN_EXP">> DBL_MIN_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef LDBL_DIG
|
|
Packit |
992a25 |
<<"#ifndef LDBL_DIG">>
|
|
Packit |
992a25 |
<<"#define LDBL_DIG">> LDBL_DIG
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MAX
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MAX">>
|
|
Packit |
992a25 |
<<"#define LDBL_MAX">> LDBL_MAX
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MAX_10_EXP">>
|
|
Packit |
992a25 |
<<"#define LDBL_MAX_10_EXP">> LDBL_MAX_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MAX_EXP
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MAX_EXP">>
|
|
Packit |
992a25 |
<<"#define LDBL_MAX_EXP">> LDBL_MAX_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MIN
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MIN">>
|
|
Packit |
992a25 |
<<"#define LDBL_MIN">> LDBL_MIN
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MIN_10_EXP">>
|
|
Packit |
992a25 |
<<"#define LDBL_MIN_10_EXP">> LDBL_MIN_10_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MIN_EXP
|
|
Packit |
992a25 |
<<"#ifndef LDBL_MIN_EXP">>
|
|
Packit |
992a25 |
<<"#define LDBL_MIN_EXP">> LDBL_MIN_EXP
|
|
Packit |
992a25 |
<<"#endif">>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst - note{ missing floating point limits }end output{
|
|
Packit |
992a25 |
#include "FEATURE/common"
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
#if _hdr_float
|
|
Packit |
992a25 |
#include <float.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_limits
|
|
Packit |
992a25 |
#include <limits.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_math
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_values
|
|
Packit |
992a25 |
#include <values.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#include <signal.h>
|
|
Packit |
992a25 |
#ifdef SIGFPE
|
|
Packit |
992a25 |
static int caught = 0;
|
|
Packit |
992a25 |
#if _STD_
|
|
Packit |
992a25 |
static void catch(int sig)
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
static void catch(sig) int sig;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
signal(sig, SIG_IGN);
|
|
Packit |
992a25 |
caught++;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
register int i;
|
|
Packit |
992a25 |
register int s;
|
|
Packit |
992a25 |
float f;
|
|
Packit |
992a25 |
float pf;
|
|
Packit |
992a25 |
float mf;
|
|
Packit |
992a25 |
float xf;
|
|
Packit |
992a25 |
double d;
|
|
Packit |
992a25 |
double pd;
|
|
Packit |
992a25 |
double md;
|
|
Packit |
992a25 |
char* fp;
|
|
Packit |
992a25 |
#if _ast_fltmax_double
|
|
Packit |
992a25 |
char* fs = "";
|
|
Packit |
992a25 |
char* ds = "";
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
_ast_fltmax_t l;
|
|
Packit |
992a25 |
_ast_fltmax_t pl;
|
|
Packit |
992a25 |
_ast_fltmax_t ml;
|
|
Packit |
992a25 |
char* fs = "F";
|
|
Packit |
992a25 |
char* ds = "";
|
|
Packit |
992a25 |
char* ls = "L";
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
unsigned long u;
|
|
Packit |
992a25 |
unsigned _ast_intmax_t w;
|
|
Packit |
992a25 |
unsigned _ast_intmax_t pw;
|
|
Packit |
992a25 |
unsigned _ast_intmax_t x;
|
|
Packit |
992a25 |
unsigned short us;
|
|
Packit |
992a25 |
unsigned int ui;
|
|
Packit |
992a25 |
unsigned long ul;
|
|
Packit |
992a25 |
unsigned _ast_intmax_t uq;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef SIGFPE
|
|
Packit |
992a25 |
signal(SIGFPE, catch);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
us = 0;
|
|
Packit |
992a25 |
us = ~us;
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
while (us /= 10)
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
printf("#define USHRT_DIG %d\n", i);
|
|
Packit |
992a25 |
ui = 0;
|
|
Packit |
992a25 |
ui = ~ui;
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
while (ui /= 10)
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
printf("#define UINT_DIG %d\n", i);
|
|
Packit |
992a25 |
ul = 0;
|
|
Packit |
992a25 |
ul = ~ul;
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
while (ul /= 10)
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
printf("#define ULONG_DIG %d\n", i);
|
|
Packit |
992a25 |
if (sizeof(uq) > sizeof(ul))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
uq = 0;
|
|
Packit |
992a25 |
uq = ~uq;
|
|
Packit |
992a25 |
i = 0;
|
|
Packit |
992a25 |
while (uq /= 10)
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
printf("#define ULLONG_DIG %d\n", i);
|
|
Packit |
992a25 |
printf("#define UINTMAX_DIG ULLONG_DIG\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
printf("#define UINTMAX_DIG ULONG_DIG\n");
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
w = 1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
pw = w;
|
|
Packit |
992a25 |
w *= 2;
|
|
Packit |
992a25 |
f = (_ast_intmax_t)w;
|
|
Packit |
992a25 |
x = (_ast_intmax_t)f;
|
|
Packit |
992a25 |
} while (w > pw && w == x);
|
|
Packit |
992a25 |
w = (pw - 1) + pw;
|
|
Packit |
992a25 |
u = ~0;
|
|
Packit |
992a25 |
if (u > w)
|
|
Packit |
992a25 |
u = w;
|
|
Packit |
992a25 |
printf("#define FLT_ULONG_MAX %lu.0F\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_ULLONG_MAX %llu.0F\n", w);
|
|
Packit |
992a25 |
printf("#define FLT_UINTMAX_MAX FLT_ULLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_ULLONG_MAX FLT_ULONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define FLT_UINTMAX_MAX FLT_ULONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u /= 2;
|
|
Packit |
992a25 |
w /= 2;
|
|
Packit |
992a25 |
printf("#define FLT_LONG_MAX %lu.0F\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_LLONG_MAX %llu.0F\n", w);
|
|
Packit |
992a25 |
printf("#define FLT_INTMAX_MAX FLT_LLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_LLONG_MAX FLT_LONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define FLT_INTMAX_MAX FLT_LONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u++;
|
|
Packit |
992a25 |
w++;
|
|
Packit |
992a25 |
printf("#define FLT_LONG_MIN (-%lu.0F)\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_LLONG_MIN (-%llu.0F)\n", w);
|
|
Packit |
992a25 |
printf("#define FLT_INTMAX_MIN FLT_LLONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define FLT_LLONG_MIN FLT_LONG_MIN\n");
|
|
Packit |
992a25 |
printf("#define FLT_INTMAX_MIN FLT_LONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#ifdef FLT_DIG
|
|
Packit |
992a25 |
s = FLT_DIG;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = pf = 1.0;
|
|
Packit |
992a25 |
s = -1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
s++;
|
|
Packit |
992a25 |
f *= 10.0;
|
|
Packit |
992a25 |
} while (f != (f + pf));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if defined(FLT_MIN) && defined(FLT_MIN_EXP)
|
|
Packit |
992a25 |
i = FLT_MIN_EXP;
|
|
Packit |
992a25 |
mf = FLT_MIN;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 3;
|
|
Packit |
992a25 |
f = pf = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
mf = pf;
|
|
Packit |
992a25 |
pf = f;
|
|
Packit |
992a25 |
f /= 2.0;
|
|
Packit |
992a25 |
} while (f < pf);
|
|
Packit |
992a25 |
#ifdef FLT_MIN_EXP
|
|
Packit |
992a25 |
i = FLT_MIN_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MIN
|
|
Packit |
992a25 |
mf = FLT_MIN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_DIG
|
|
Packit |
992a25 |
printf("#ifndef FLT_DIG\n");
|
|
Packit |
992a25 |
printf("#define FLT_DIG %d\n", s);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_MIN
|
|
Packit |
992a25 |
printf("#ifndef FLT_MIN\n");
|
|
Packit |
992a25 |
printf("#define FLT_MIN %.*E%s\n", s + 1, mf, fs);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_MIN_EXP
|
|
Packit |
992a25 |
printf("#ifndef FLT_MIN_EXP\n");
|
|
Packit |
992a25 |
printf("#define FLT_MIN_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if defined(FLT_MAX) && defined(FLT_MAX_EXP)
|
|
Packit |
992a25 |
i = FLT_MAX_EXP;
|
|
Packit |
992a25 |
f = FLT_MAX;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -1;
|
|
Packit |
992a25 |
f = pf = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
mf = pf;
|
|
Packit |
992a25 |
pf = f;
|
|
Packit |
992a25 |
f *= 2.0;
|
|
Packit |
992a25 |
} while (f > pf);
|
|
Packit |
992a25 |
#ifdef FLT_MAX_EXP
|
|
Packit |
992a25 |
i = FLT_MAX_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX
|
|
Packit |
992a25 |
f = FLT_MAX;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX_EXP
|
|
Packit |
992a25 |
i = FLT_MAX_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = 1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
f *= 2.0;
|
|
Packit |
992a25 |
} while (mf == (mf + f));
|
|
Packit |
992a25 |
f = (mf - f) * 2.0 + f;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
xf = f;
|
|
Packit |
992a25 |
#ifndef FLT_MAX
|
|
Packit |
992a25 |
printf("#ifndef FLT_MAX\n");
|
|
Packit |
992a25 |
printf("#define FLT_MAX %.*E%s\n", s + 1, f, fs);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_MAX_EXP
|
|
Packit |
992a25 |
printf("#ifndef FLT_MAX_EXP\n");
|
|
Packit |
992a25 |
printf("#define FLT_MAX_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef FLT_MIN_10_EXP
|
|
Packit |
992a25 |
i = FLT_MIN_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 2;
|
|
Packit |
992a25 |
f = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
pf = f;
|
|
Packit |
992a25 |
f /= 10.0;
|
|
Packit |
992a25 |
} while (f < pf);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_MIN_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef FLT_MIN_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define FLT_MIN_10_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef FLT_MAX_10_EXP
|
|
Packit |
992a25 |
i = FLT_MAX_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -2;
|
|
Packit |
992a25 |
f = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
pf = f;
|
|
Packit |
992a25 |
f *= 10.0;
|
|
Packit |
992a25 |
} while (f > pf);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef FLT_MAX_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef FLT_MAX_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define FLT_MAX_10_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
w = 1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
pw = w;
|
|
Packit |
992a25 |
w *= 2;
|
|
Packit |
992a25 |
d = (_ast_intmax_t)w;
|
|
Packit |
992a25 |
x = (_ast_intmax_t)d;
|
|
Packit |
992a25 |
} while (w > pw && w == x);
|
|
Packit |
992a25 |
w = (pw - 1) + pw;
|
|
Packit |
992a25 |
u = ~0;
|
|
Packit |
992a25 |
if (u > w)
|
|
Packit |
992a25 |
u = w;
|
|
Packit |
992a25 |
printf("#define DBL_ULONG_MAX %lu.0\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_ULLONG_MAX %llu.0\n", w);
|
|
Packit |
992a25 |
printf("#define DBL_UINTMAX_MAX DBL_ULLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_ULLONG_MAX DBL_ULONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define DBL_UINTMAX_MAX DBL_ULONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u /= 2;
|
|
Packit |
992a25 |
w /= 2;
|
|
Packit |
992a25 |
printf("#define DBL_LONG_MAX %lu.0\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_LLONG_MAX %llu.0\n", w);
|
|
Packit |
992a25 |
printf("#define DBL_INTMAX_MAX DBL_LLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_LLONG_MAX DBL_LONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define DBL_INTMAX_MAX DBL_LONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u++;
|
|
Packit |
992a25 |
w++;
|
|
Packit |
992a25 |
printf("#define DBL_LONG_MIN (-%lu.0)\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_LLONG_MIN (-%llu.0)\n", w);
|
|
Packit |
992a25 |
printf("#define DBL_INTMAX_MIN DBL_LLONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define DBL_LLONG_MIN DBL_LONG_MIN\n");
|
|
Packit |
992a25 |
printf("#define DBL_INTMAX_MIN DBL_LONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#ifdef DBL_DIG
|
|
Packit |
992a25 |
s = DBL_DIG;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
d = pd = 1.0;
|
|
Packit |
992a25 |
s = -1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
s++;
|
|
Packit |
992a25 |
d *= 10.0;
|
|
Packit |
992a25 |
} while (d != (d + pd));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if defined(DBL_MIN) && defined(DBL_MIN_EXP)
|
|
Packit |
992a25 |
i = DBL_MIN_EXP;
|
|
Packit |
992a25 |
md = DBL_MIN;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 3;
|
|
Packit |
992a25 |
d = pd = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
md = pd;
|
|
Packit |
992a25 |
pd = d;
|
|
Packit |
992a25 |
d /= 2.0;
|
|
Packit |
992a25 |
} while (d < pd);
|
|
Packit |
992a25 |
#ifdef DBL_MIN_EXP
|
|
Packit |
992a25 |
i = DBL_MIN_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MIN
|
|
Packit |
992a25 |
md = DBL_MIN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_DIG
|
|
Packit |
992a25 |
printf("#ifndef DBL_DIG\n");
|
|
Packit |
992a25 |
printf("#define DBL_DIG %d\n", s);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MIN
|
|
Packit |
992a25 |
printf("#ifndef DBL_MIN\n");
|
|
Packit |
992a25 |
printf("#define DBL_MIN %.*E%s\n", s + 1, md, ds);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MIN_EXP
|
|
Packit |
992a25 |
printf("#ifndef DBL_MIN_EXP\n");
|
|
Packit |
992a25 |
printf("#define DBL_MIN_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if defined(DBL_MAX) && defined(DBL_MAX_EXP)
|
|
Packit |
992a25 |
i = DBL_MAX_EXP;
|
|
Packit |
992a25 |
d = DBL_MAX;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -1;
|
|
Packit |
992a25 |
d = pd = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
md = pd;
|
|
Packit |
992a25 |
pd = d;
|
|
Packit |
992a25 |
d *= 2.0;
|
|
Packit |
992a25 |
} while (d > pd);
|
|
Packit |
992a25 |
d = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
d *= 2.0;
|
|
Packit |
992a25 |
} while (md == (md + d));
|
|
Packit |
992a25 |
d = (md - d) * 2.0 + d;
|
|
Packit |
992a25 |
#ifdef DBL_MAX_EXP
|
|
Packit |
992a25 |
i = DBL_MAX_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MAX
|
|
Packit |
992a25 |
d = DBL_MAX;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MAX
|
|
Packit |
992a25 |
printf("#ifndef DBL_MAX\n");
|
|
Packit |
992a25 |
printf("#define DBL_MAX %.*E%s\n", s + 1, d, ds);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MAX_EXP
|
|
Packit |
992a25 |
printf("#ifndef DBL_MAX_EXP\n");
|
|
Packit |
992a25 |
printf("#define DBL_MAX_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef DBL_MIN_10_EXP
|
|
Packit |
992a25 |
i = DBL_MIN_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 2;
|
|
Packit |
992a25 |
d = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
pd = d;
|
|
Packit |
992a25 |
d /= 10.0;
|
|
Packit |
992a25 |
} while (d < pd);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MIN_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef DBL_MIN_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define DBL_MIN_10_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef DBL_MAX_10_EXP
|
|
Packit |
992a25 |
i = DBL_MAX_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -2;
|
|
Packit |
992a25 |
d = 1.0;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
pd = d;
|
|
Packit |
992a25 |
d *= 10.0;
|
|
Packit |
992a25 |
} while (d > pd);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef DBL_MAX_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef DBL_MAX_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define DBL_MAX_10_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_ast_fltmax_double
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
w = 1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
pw = w;
|
|
Packit |
992a25 |
w *= 2;
|
|
Packit |
992a25 |
l = (_ast_intmax_t)w;
|
|
Packit |
992a25 |
x = (_ast_intmax_t)l;
|
|
Packit |
992a25 |
} while (w > pw && w == x);
|
|
Packit |
992a25 |
w = (pw - 1) + pw;
|
|
Packit |
992a25 |
u = ~0;
|
|
Packit |
992a25 |
if (u > w)
|
|
Packit |
992a25 |
u = w;
|
|
Packit |
992a25 |
printf("#define LDBL_ULONG_MAX %lu.0L\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_ULLONG_MAX %llu.0L\n", w);
|
|
Packit |
992a25 |
printf("#define LDBL_UINTMAX_MAX LDBL_ULLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_ULLONG_MAX LDBL_ULONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define LDBL_UINTMAX_MAX LDBL_ULONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u /= 2;
|
|
Packit |
992a25 |
w /= 2;
|
|
Packit |
992a25 |
printf("#define LDBL_LONG_MAX %lu.0L\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_LLONG_MAX %llu.0L\n", w);
|
|
Packit |
992a25 |
printf("#define LDBL_INTMAX_MAX LDBL_LLONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_LLONG_MAX LDBL_LONG_MAX\n");
|
|
Packit |
992a25 |
printf("#define LDBL_INTMAX_MAX LDBL_LONG_MAX\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
u++;
|
|
Packit |
992a25 |
w++;
|
|
Packit |
992a25 |
printf("#define LDBL_LONG_MIN (-%lu.0L)\n", u);
|
|
Packit |
992a25 |
if (sizeof(w) > sizeof(u))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_LLONG_MIN (-%llu.0L)\n", w);
|
|
Packit |
992a25 |
printf("#define LDBL_INTMAX_MIN LDBL_LLONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
printf("#define LDBL_LLONG_MIN LDBL_LONG_MIN\n");
|
|
Packit |
992a25 |
printf("#define LDBL_INTMAX_MIN LDBL_LONG_MIN\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#ifdef LDBL_DIG
|
|
Packit |
992a25 |
s = LDBL_DIG;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
l = pl = 1.0L;
|
|
Packit |
992a25 |
s = -1;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
s++;
|
|
Packit |
992a25 |
l *= 10.0L;
|
|
Packit |
992a25 |
} while (l != (l + pl));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if defined(LDBL_MIN) && defined(LDBL_MIN_EXP)
|
|
Packit |
992a25 |
i = LDBL_MIN_EXP;
|
|
Packit |
992a25 |
ml = LDBL_MIN;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 3;
|
|
Packit |
992a25 |
l = pl = 1.0L;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
ml = pl;
|
|
Packit |
992a25 |
pl = l;
|
|
Packit |
992a25 |
l /= 2.0L;
|
|
Packit |
992a25 |
} while (l < pl);
|
|
Packit |
992a25 |
#ifdef LDBL_MIN_EXP
|
|
Packit |
992a25 |
i = LDBL_MIN_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MIN
|
|
Packit |
992a25 |
ml = LDBL_MIN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_DIG
|
|
Packit |
992a25 |
printf("#ifndef LDBL_DIG\n");
|
|
Packit |
992a25 |
printf("#define LDBL_DIG %d\n", s);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MIN
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MIN\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MIN %.*LE%s\n", s + 1, ml, ls);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MIN_EXP
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MIN_EXP\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MIN_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if defined(LDBL_MAX) && defined(LDBL_MAX_EXP)
|
|
Packit |
992a25 |
i = LDBL_MAX_EXP;
|
|
Packit |
992a25 |
l = LDBL_MAX;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -1;
|
|
Packit |
992a25 |
l = pl = 1.0L;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
ml = pl;
|
|
Packit |
992a25 |
pl = l;
|
|
Packit |
992a25 |
l *= 2.0L;
|
|
Packit |
992a25 |
} while (l > pl);
|
|
Packit |
992a25 |
l = 1.0L;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
l *= 2.0L;
|
|
Packit |
992a25 |
} while (ml == (ml + l));
|
|
Packit |
992a25 |
l = (ml - l) * 2.0L + l;
|
|
Packit |
992a25 |
#ifdef LDBL_MAX_EXP
|
|
Packit |
992a25 |
i = LDBL_MAX_EXP;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MAX
|
|
Packit |
992a25 |
l = LDBL_MAX;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MAX
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MAX\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MAX %.*LE%s\n", s + 1, l, ls);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MAX_EXP
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MAX_EXP\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MAX_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef LDBL_MIN_10_EXP
|
|
Packit |
992a25 |
i = LDBL_MIN_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = 2;
|
|
Packit |
992a25 |
l = 1.0L;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i--;
|
|
Packit |
992a25 |
pl = l;
|
|
Packit |
992a25 |
l /= 10.0L;
|
|
Packit |
992a25 |
} while (l < pl);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MIN_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MIN_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MIN_10_EXP (%d)\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef LDBL_MAX_10_EXP
|
|
Packit |
992a25 |
i = LDBL_MAX_10_EXP;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
i = -2;
|
|
Packit |
992a25 |
l = 1.0L;
|
|
Packit |
992a25 |
do
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
i++;
|
|
Packit |
992a25 |
pl = l;
|
|
Packit |
992a25 |
l *= 10.0L;
|
|
Packit |
992a25 |
} while (l > pl);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifndef LDBL_MAX_10_EXP
|
|
Packit |
992a25 |
printf("#ifndef LDBL_MAX_10_EXP\n");
|
|
Packit |
992a25 |
printf("#define LDBL_MAX_10_EXP %d\n", i);
|
|
Packit |
992a25 |
printf("#endif\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
fp = "LDBL";
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
fp = "DBL";
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
printf("#define FLTMAX_UINTMAX_MAX %s_UINTMAX_MAX\n", fp);
|
|
Packit |
992a25 |
printf("#define FLTMAX_INTMAX_MAX %s_INTMAX_MAX\n", fp);
|
|
Packit |
992a25 |
printf("#define FLTMAX_INTMAX_MIN %s_INTMAX_MIN\n", fp);
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#ifdef SIGFPE
|
|
Packit |
992a25 |
if (!caught)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
#if !__MVS__
|
|
Packit |
992a25 |
f = xf;
|
|
Packit |
992a25 |
f *= 2;
|
|
Packit |
992a25 |
if (!f)
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
caught = 1;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
if (caught)
|
|
Packit |
992a25 |
printf("\n#define _ast_fltsig %d\n", SIGFPE);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
#if !_lib_frexp || _npt_frexp
|
|
Packit |
992a25 |
printf("extern double frexp(double, int*);\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !_lib_frexpl || _npt_frexpl
|
|
Packit |
992a25 |
printf("extern _ast_fltmax_t frexpl(_ast_fltmax_t, int*);\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !_lib_ldexp || _npt_ldexp
|
|
Packit |
992a25 |
printf("extern double ldexp(double, int);\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !_lib_ldexpl || _npt_ldexpl
|
|
Packit |
992a25 |
printf("extern _ast_fltmax_t ldexpl(_ast_fltmax_t, int);\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst - note{ double exponent bitfoolery }end output{
|
|
Packit |
992a25 |
#include "FEATURE/common"
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
typedef union _dbl_exp_u
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
unsigned _ast_int4_t e[sizeof(double) / 4];
|
|
Packit |
992a25 |
double f;
|
|
Packit |
992a25 |
} _ast_dbl_exp_t;
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
int i;
|
|
Packit |
992a25 |
int j;
|
|
Packit |
992a25 |
unsigned _ast_int4_t e;
|
|
Packit |
992a25 |
_ast_dbl_exp_t a;
|
|
Packit |
992a25 |
_ast_dbl_exp_t b;
|
|
Packit |
992a25 |
a.f = 1;
|
|
Packit |
992a25 |
b.f = 2;
|
|
Packit |
992a25 |
for (i = 0; i < sizeof(a.e) / sizeof(a.e[0]); i++)
|
|
Packit |
992a25 |
if (e = a.e[i] ^ b.e[i])
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
for (j = i + 1; j < sizeof(a.e) / sizeof(a.e[0]); j++)
|
|
Packit |
992a25 |
if (a.e[j] ^ b.e[j])
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
printf("typedef union _ast_dbl_exp_u\n{\n\tuint32_t\t\te[sizeof(double)/4];\n\tdouble\t\t\tf;\n} _ast_dbl_exp_t;\n\n");
|
|
Packit |
992a25 |
printf("#define _ast_dbl_exp_index %d\n", i);
|
|
Packit |
992a25 |
for (i = 0; !(e & 1); e >>= 1, i++);
|
|
Packit |
992a25 |
printf("#define _ast_dbl_exp_shift %d\n\n", i);
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst - note{ long double exponent bitfoolery }end output{
|
|
Packit |
992a25 |
#include "FEATURE/common"
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
typedef union _ast_fltmax_exp_u
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
unsigned _ast_int4_t e[sizeof(_ast_fltmax_t) / 4];
|
|
Packit |
992a25 |
_ast_fltmax_t f;
|
|
Packit |
992a25 |
} _ast_fltmax_exp_t;
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
int i;
|
|
Packit |
992a25 |
int j;
|
|
Packit |
992a25 |
unsigned _ast_int4_t e;
|
|
Packit |
992a25 |
_ast_fltmax_exp_t a;
|
|
Packit |
992a25 |
_ast_fltmax_exp_t b;
|
|
Packit |
992a25 |
a.f = 1;
|
|
Packit |
992a25 |
b.f = 2;
|
|
Packit |
992a25 |
for (i = 0; i < sizeof(a.e) / sizeof(a.e[0]); i++)
|
|
Packit |
992a25 |
if (e = a.e[i] ^ b.e[i])
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
for (j = i + 1; j < sizeof(a.e) / sizeof(a.e[0]); j++)
|
|
Packit |
992a25 |
if (a.e[j] ^ b.e[j])
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
printf("typedef union _fltmax_exp_u\n{\n\tuint32_t\t\te[sizeof(_ast_fltmax_t)/4];\n\t_ast_fltmax_t\t\tf;\n} _ast_fltmax_exp_t;\n\n");
|
|
Packit |
992a25 |
printf("#define _ast_fltmax_exp_index\t%d\n", i);
|
|
Packit |
992a25 |
for (i = 0; !(e & 1); e >>= 1, i++);
|
|
Packit |
992a25 |
printf("#define _ast_fltmax_exp_shift\t%d\n\n", i);
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst - -DN=1 - -DN=2 note{ _ast_fltmax_t maximum integral type }end output{
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
#if N == 1
|
|
Packit |
992a25 |
unsigned long long m;
|
|
Packit |
992a25 |
long double f = 123.456;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
m = f;
|
|
Packit |
992a25 |
if (!m || f == m)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
printf("#define _ast_flt_unsigned_max_t unsigned long long\n");
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
printf("#define _ast_flt_unsigned_max_t unsigned long\n");
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tst - -DSCAN=1 - -lm -DSTRTO=1 - -DMAC=1 - -DDIV=1 - -DEXP=1 - -DADD=1 - -DMPY=1 note{ INF and NAN memory representations }end output{
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
#define _AIX_COMPATIBILITY 1
|
|
Packit |
992a25 |
#define _FP_MODE_VARIABLE 1
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#include "FEATURE/common"
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
#include <sys/types.h>
|
|
Packit |
992a25 |
#include <signal.h>
|
|
Packit |
992a25 |
#if _hdr_float
|
|
Packit |
992a25 |
#include <float.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_limits
|
|
Packit |
992a25 |
#include <limits.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_math
|
|
Packit |
992a25 |
#include <math.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _hdr_values
|
|
Packit |
992a25 |
#include <values.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if STRTO && _hdr_stdlib
|
|
Packit |
992a25 |
#include <stdlib.h>
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(FLT_MAX) && defined(MAXFLOAT)
|
|
Packit |
992a25 |
#define FLT_MAX MAXFLOAT
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if !defined(DBL_MAX) && defined(MAXDOUBLE)
|
|
Packit |
992a25 |
#define DBL_MAX MAXDOUBLE
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if _ast_fltmax_double
|
|
Packit |
992a25 |
#undef LDBL_MAX
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
static void
|
|
Packit |
992a25 |
#if _STD_
|
|
Packit |
992a25 |
list(const char* typ, const char* var, void* val, int siz)
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
list(typ, var, val, siz)
|
|
Packit |
992a25 |
char* typ;
|
|
Packit |
992a25 |
char* var;
|
|
Packit |
992a25 |
void* val;
|
|
Packit |
992a25 |
int siz;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
register unsigned char* u = (unsigned char*)val;
|
|
Packit |
992a25 |
register unsigned char* e = u + siz;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
printf("#define _ast_%s_%s_init\t0x%02x", typ, var, *u);
|
|
Packit |
992a25 |
while (++u < e)
|
|
Packit |
992a25 |
printf(",0x%02x", *u);
|
|
Packit |
992a25 |
printf("\n");
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
main()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
#if SCAN || STRTO
|
|
Packit |
992a25 |
#undef NAN
|
|
Packit |
992a25 |
#define NAN "NaN"
|
|
Packit |
992a25 |
#undef INF
|
|
Packit |
992a25 |
#define INF "INF"
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
float f;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(NAN, "%g", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = atof(NAN);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("flt", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(INF, "%g", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = atof(INF);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("flt", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
double f;
|
|
Packit |
992a25 |
#if STRTO
|
|
Packit |
992a25 |
char* e;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(NAN, "%lg", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = strtod(NAN, &e);
|
|
Packit |
992a25 |
if (*e)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("dbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(INF, "%lg", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = strtod(INF, &e);
|
|
Packit |
992a25 |
if (*e)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("dbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#ifdef LDBL_MAX
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
long double f;
|
|
Packit |
992a25 |
#if STRTO
|
|
Packit |
992a25 |
char* e;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(NAN, "%Lg", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = strtold(NAN, &e);
|
|
Packit |
992a25 |
if (*e)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("ldbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if SCAN
|
|
Packit |
992a25 |
if (sscanf(INF, "%Lg", &f) != 1)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
f = strtold(INF, &e);
|
|
Packit |
992a25 |
if (*e)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("ldbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
#ifdef SIGFPE
|
|
Packit |
992a25 |
signal(SIGFPE, SIG_IGN);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef FLT_MAX
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
float f = FLT_MAX;
|
|
Packit |
992a25 |
#if DIV
|
|
Packit |
992a25 |
float z = 0;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
f = 0.0 / z;
|
|
Packit |
992a25 |
if (!f)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
list("flt", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
f = 1.0 / z;
|
|
Packit |
992a25 |
list("flt", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
#if ADD
|
|
Packit |
992a25 |
f += f;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if EXP
|
|
Packit |
992a25 |
f = exp(f);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MPY
|
|
Packit |
992a25 |
f *= 2;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = FLT_QNAN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("flt", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = FLT_INFINITY;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("flt", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef DBL_MAX
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
double f = DBL_MAX;
|
|
Packit |
992a25 |
#if DIV
|
|
Packit |
992a25 |
double z = 0;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
f = 0.0 / z;
|
|
Packit |
992a25 |
if (!f)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
list("dbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
f = 1.0 / z;
|
|
Packit |
992a25 |
list("dbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
#if ADD
|
|
Packit |
992a25 |
f += f;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if EXP
|
|
Packit |
992a25 |
f = exp(f);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MPY
|
|
Packit |
992a25 |
f *= 2;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = DBL_QNAN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("dbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = DBL_INFINITY;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("dbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#ifdef LDBL_MAX
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
long double f = LDBL_MAX;
|
|
Packit |
992a25 |
#if DIV
|
|
Packit |
992a25 |
long double z = 0;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
f = 0.0 / z;
|
|
Packit |
992a25 |
if (!f)
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
list("ldbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
f = 1.0 / z;
|
|
Packit |
992a25 |
list("ldbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
#if ADD
|
|
Packit |
992a25 |
f += f;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if EXP
|
|
Packit |
992a25 |
f = exp(f);
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MPY
|
|
Packit |
992a25 |
f *= 2;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = LDBL_QNAN;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("ldbl", "nan", &f, sizeof(f));
|
|
Packit |
992a25 |
#if MAC
|
|
Packit |
992a25 |
f = LDBL_INFINITY;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
list("ldbl", "inf", &f, sizeof(f));
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
return 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
}end
|