Annotation of coherent/b/bin/db_400/float1.c, revision 1.1.1.1

1.1       root        1: /* float1.c - test of floating point */
                      2: 
                      3: #include <stdio.h>
                      4: 
                      5: #if 0
                      6: #define FORCE(var,val)  {*(int *)(&var) = val;dumpl("FORCE ",var);}
                      7: #else
                      8: #define FORCE(var,val)
                      9: #endif
                     10: 
                     11: main()
                     12: {
                     13:        float x = 1.0, y = 2.0, z;
                     14: 
                     15:        xpr(&x);
                     16:        dumpl("x = ", x);
                     17:        FORCE(x, 0x3F800000);
                     18:        xpr(&y);
                     19:        dumpl("y = ", y);
                     20:        FORCE(y, 0x40000000);
                     21:        fflush(stdout);
                     22: 
                     23:        z = x + y;
                     24:        xpr(&z);
                     25:        dumpl("z = ", z);
                     26:        FORCE(z, 0x40400000);
                     27:        fflush(stdout);
                     28: 
                     29:        printf("%f + %f = %f\n", x, y, z);
                     30:        printf("that was formatted %%f output\n");
                     31:        fflush(stdout);
                     32: }
                     33: 
                     34: /* Dump a double as 16 hex digits */
                     35: dumpl(name,flo,fhi)
                     36: char * name;
                     37: int flo, fhi;
                     38: {
                     39:        int exponent;
                     40:        int schi;
                     41:        char sgn;
                     42: 
                     43:        printf("%s%08x,%08x  ", name, fhi, flo);
                     44: 
                     45:        sgn = (fhi & 0x80000000) ? '-' : '+';
                     46:        exponent = (fhi >> 20) & 0x7FF;
                     47:        exponent -= 1023;
                     48:        schi = fhi & 0xFFFFF;
                     49: 
                     50:        printf("%c1.%05x,%08xx2**%d\n", sgn, schi, flo, exponent);
                     51: }
                     52: 
                     53: /* dump a float as 8 hex digits - called with address of the float */
                     54: xpr(fa)
                     55: int * fa;
                     56: {
                     57:        printf("%08x  ", *fa);
                     58: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.