Annotation of coherent/b/bin/db_400/float1.c, revision 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.