1 #include <stdio.h>
2 #include <math.h>
3
4 int main();
5 int main2();
6 int main3();
7 int main4();
8
main()9 int main() {
10 printf("+inf:\n");
11 float fx = (float)INFINITY; unsigned int *fxi = (unsigned int*)&fx;
12 double dx = (double)INFINITY; long unsigned long int *dxi = (long unsigned long int*)&dx;
13 long double ldx = (long double)INFINITY; long unsigned long int *ldxi1 = (long unsigned long int*)&ldx; long unsigned long int *ldxi2 = &(ldxi1[1]);
14 printf("\t\tf d ld\n");
15 printf("correct:\t%x %x %x\n", isinf(fx), isinf(dx), isinf(ldx));
16 printf("as floats:\t%x %x %x\n", isinf(*(float*)fxi), isinf(*(float*)dxi), isinf(*(float*)ldxi1));
17 printf("as double:\t%x %x %x\n", isinf(*(double*)fxi), isinf(*(double*)dxi), isinf(*(double*)ldxi1));
18 printf("as long double:\t%x %x %x\n", isinf(*(long double*)fxi), isinf(*(long double*)dxi), isinf(*(long double*)ldxi1));
19 printf("sizes ?4 8 12?:\t%d %d %d\n", (int)sizeof(fx), (int)sizeof(dx), (int)sizeof(ldx));
20 printf("sizes:\t%d %d %d\n", (int)sizeof(*fxi), (int)sizeof(*dxi), (int)sizeof(*ldxi1)*2);
21 printf("bit repr:\n f: %x\n d: %llx\n ld: %llx%llx\n", *fxi, *dxi, (0xFFFF)&*ldxi2, *ldxi1);
22 printf("\n");
23 main2();
24 return 0;
25 }
26
main2()27 int main2() {
28 printf("-inf:\n");
29 float fx = (float)-INFINITY; unsigned int *fxi = (unsigned int*)&fx;
30 double dx = (double)-INFINITY; long unsigned long int *dxi = (long unsigned long int*)&dx;
31 long double ldx = (long double)-INFINITY; long unsigned long int *ldxi1 = (long unsigned long int*)&ldx; long unsigned long int *ldxi2 = &(ldxi1[1]);
32 printf("\t\tf d ld\n");
33 printf("correct:\t%x %x %x\n", isinf(fx), isinf(dx), isinf(ldx));
34 printf("as floats:\t%x %x %x\n", isinf(*(float*)fxi), isinf(*(float*)dxi), isinf(*(float*)ldxi1));
35 printf("as double:\t%x %x %x\n", isinf(*(double*)fxi), isinf(*(double*)dxi), isinf(*(double*)ldxi1));
36 printf("as long double:\t%x %x %x\n", isinf(*(long double*)fxi), isinf(*(long double*)dxi), isinf(*(long double*)ldxi1));
37 printf("sizes ?4 8 12?:\t%d %d %d\n", (int)sizeof(fx), (int)sizeof(dx), (int)sizeof(ldx));
38 printf("bit repr:\n f: %x\n d: %llx\n ld: %llx%llx\n", *fxi, *dxi, (0xFFFF)&*ldxi2, *ldxi1);
39 printf("\n");
40 main3();
41 return 0;
42 }
43
main3()44 int main3() {
45 printf("+NaN:\n");
46 float fx = (float)NAN; unsigned int *fxi = (unsigned int*)&fx;
47 double dx = (double)NAN; long unsigned long int *dxi = (long unsigned long int*)&dx;
48 long double ldx = (long double)NAN; long unsigned long int *ldxi1 = (long unsigned long int*)&ldx; long unsigned long int *ldxi2 = &(ldxi1[1]);
49 printf("\t\tf d ld\n");
50 printf("correct:\t%x %x %x\n", isnan(fx), isnan(dx), isnan(ldx));
51 printf("as floats:\t%x %x %x\n", isnan(*(float*)fxi), isnan(*(float*)dxi), isnan(*(float*)ldxi1));
52 printf("as double:\t%x %x %x\n", isnan(*(double*)fxi), isnan(*(double*)dxi), isnan(*(double*)ldxi1));
53 printf("as long double:\t%x %x %x\n", isnan(*(long double*)fxi), isnan(*(long double*)dxi), isnan(*(long double*)ldxi1));
54 printf("sizes ?4 8 12?:\t%d %d %d\n", (int)sizeof(fx), (int)sizeof(dx), (int)sizeof(ldx));
55 printf("sizes:\t%d %d %d\n", (int)sizeof(*fxi), (int)sizeof(*dxi), (int)sizeof(*ldxi1)*2);
56 printf("bit repr:\n f: %x\n d: %llx\n ld: %llx%llx\n", *fxi, *dxi, (0xFFFF)&*ldxi2, *ldxi1);
57 printf("\n");
58 main4();
59 return 0;
60 }
61
main4()62 int main4() {
63 printf("-NaN:\n");
64 float fx = (float)-NAN; unsigned int *fxi = (unsigned int*)&fx;
65 double dx = (double)-NAN; long unsigned long int *dxi = (long unsigned long int*)&dx;
66 long double ldx = (long double)-NAN; long unsigned long int *ldxi1 = (long unsigned long int*)&ldx; long unsigned long int *ldxi2 = &(ldxi1[1]);
67 printf("\t\tf d ld\n");
68 printf("correct:\t%x %x %x\n", isnan(fx), isnan(dx), isnan(ldx));
69 printf("as floats:\t%x %x %x\n", isnan(*(float*)fxi), isnan(*(float*)dxi), isnan(*(float*)ldxi1));
70 printf("as double:\t%x %x %x\n", isnan(*(double*)fxi), isnan(*(double*)dxi), isnan(*(double*)ldxi1));
71 printf("as long double:\t%x %x %x\n", isnan(*(long double*)fxi), isnan(*(long double*)dxi), isnan(*(long double*)ldxi1));
72 printf("sizes ?4 8 12?:\t%d %d %d\n", (int)sizeof(fx), (int)sizeof(dx), (int)sizeof(ldx));
73 printf("bit repr:\n f: %x\n d: %llx\n ld: %llx%llx\n", *fxi, *dxi, (0xFFFF)&*ldxi2, *ldxi1);
74 printf("\n");
75 return 0;
76 }
77