5
volatile long double in1 = -1.0L / 0.0L;
6
volatile long double in2 = 1.0L / 0.0L;
8
volatile long double ld1 = 3.51L;
9
volatile double ld2 = 3.51;
10
volatile float ld3 = 3.51F;
12
#define ARG1_FCT(NAME) \
13
do {printf (#NAME ": %g %g %g\n", (double) NAME##l (ld1), \
14
(double) NAME (ld2), \
15
(double) NAME##f (ld3)); \
18
#define ARG2_FCT(NAME,VAL) \
19
do {printf (#NAME ": %g %g %g\n", (double) NAME##l (ld1, VAL##L), \
20
(double) NAME (ld2, VAL), \
21
(double) NAME##f (ld3, VAL##f)); \
24
#define ARG3_FCT(NAME,VAL,VAL2) \
25
do {printf (#NAME ": %g %g %g\n", (double) NAME##l (ld1, VAL##L, VAL2##L), \
26
(double) NAME (ld2, VAL, VAL2), \
27
(double) NAME##f (ld3, VAL##f, VAL2##f)); \
30
#define ARG2_FCTINT(NAME) \
31
do {printf (#NAME ": %g %g %g\n", (double) NAME##l (ld1, 2), \
32
(double) NAME (ld2, 2), \
33
(double) NAME##f (ld3, 2)); \
36
#define ARG2_FCTPINT(NAME) \
39
printf (#NAME ": %g", (double) NAME##l (ld1, &i)); \
41
printf (" %g", (double) NAME (ld2, &i)); \
43
printf (" %g", (double) NAME##f (ld3, &i)); \
44
printf ("=%d\n", i); \
48
#define printfmt PRIu64
50
#define printfmt PRIu32
55
printf ("sizeof(float)=%"printfmt", sizeof(double)=%"printfmt", sizeof(long double)=%"printfmt"\n", sizeof (float), sizeof(double), sizeof(long double));
56
printf ("%g %g %g\n", (double) ld1, (double) ld2, (double) ld3);
67
ARG2_FCT (atan2, 0.5);
75
// double __cdecl ldexp(double _X,int _Y);
76
// double __cdecl frexp(double _X,int *_Y);
77
// double __cdecl modf(double _X,double *_Y);
97
ARG2_FCT (remainder, 2.0);
98
ARG2_FCT (copysign, -1.0);
99
ARG2_FCT (nexttoward, 0.5);
100
ARG2_FCT (nexttoward, 0.5);
101
ARG2_FCT (fdim, 0.5);
102
ARG2_FCT (fmax, 0.5);
103
ARG2_FCT (fmin, 0.5);
104
ARG2_FCT (hypot, 1.5);
106
ARG2_FCTPINT (frexp);
109
ARG2_FCTINT (scalbn);
110
ARG2_FCTINT (scalbln);
111
ARG3_FCT (fma, 2.0, 1.5);
112
printf ("%g is%s nan\n", (double) in1, isnan (in1) ? "" :" not");
113
printf ("%g is%s inf\n", (double) in1, isinf (in1) ? "" :" not");
114
__mingw_printf ("Ld:%Lg d:%g f:%g\n", ld1, ld2, (double) ld3);