/* Last edited on 2009-02-10 11:18:37 by stolfi */ /* Tests of various floating-point values, limits, format, sizes. */ #include #include #include void dbp(char *s, double x); void dbp(char *s, double x) { int e; double f = frexp(x, &e); printf("%-8s = %25.17le f = %25.17le e = %+d\n", s, x, f, e); } int main(int argc, char **argv) { double m = DBL_MAX; dbp("m", m); dbp("m/8", m/8); dbp("8/m", 8/m); dbp("1/m", 1/m); double g = log(m); dbp("g", g); double s = sqrt(m); dbp("s", s); dbp("1/s", 1/s); int e; double f = frexp(m, &e); printf("(f,e) = %25.17le * 2^{%d}\n",f,e); double c = 1+2*(1-f); dbp("c", c); int z0 = sizeof(float); int z1 = sizeof(double); int z2 = sizeof(long double); printf("sizes = %d %d %d bytes\n",z0,z1,z2); short int t = 0; printf("t = %hd\n",t); long double N = 1; printf("N = %50.42Le\n",N); /* Testing the number of matissa bits in a {long double}: */ long double D = 1; int eD = 0; long double P, Q; do { D = D/2; eD++; P = Q; Q = N + D; } while (Q != N); printf("D = %50.42Le eD = %d\n",D, eD); printf("P = %50.42Le\n",P); return 0; }