Annotation of coherent/b/lib/libc/crt/i386/modf.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * libc/crt/modf.c
                      3:  */
                      4: 
                      5: /*
                      6:  * double
                      7:  * modf(real, dp)
                      8:  * double real, *dp;
                      9:  *
                     10:  * modf() finds g = greatest integer <= real,
                     11:  * then stores g through dp and returns real - g.
                     12:  * This version uses a machine dependent subroutine
                     13:  *     double _modf(real, dp, e)
                     14:  * which assumes real >= 0, 1 <= e = exponent(real) <= DMBITS+1,
                     15:  * where DMBITS is the number of mantissa bits in a double.
                     16:  */
                     17: 
                     18: #if    _IEEE
                     19: #define        DEBITS  11
                     20: #define        DMBITS  52
                     21: #define        FEBITS   8
                     22: #define        FMBITS  23
                     23: #endif
                     24: 
                     25: #if    _DECVAX
                     26: #define        DEBITS   8
                     27: #define        DMBITS  55
                     28: #define        FEBITS   8
                     29: #define        FMBITS  23
                     30: #endif
                     31: 
                     32: extern double  _modf();
                     33: extern double  frexp();
                     34: 
                     35: double
                     36: modf(d, dp) double d; register double *dp;
                     37: {
                     38:        int e;
                     39: 
                     40:        frexp(d, &e);
                     41:        if (e >= DMBITS+1) {                    /* very large d */
                     42:                *dp = d;
                     43:                return 0.0;
                     44:        } else if (e <= 0) {                    /* -1. < d < 1. */
                     45:                *dp = 0.0;
                     46:                return d;
                     47:        } else if (d >= 0.0)
                     48:                return _modf(d, dp, e);         /* d >= 0., 1 <= e < DMBITS+1 */
                     49: 
                     50:        /* d is negative. */
                     51:        d = _modf(-d, dp, e);
                     52:        *dp = -*dp;
                     53:        return -d;
                     54: }
                     55: 
                     56: /* end of modf.c */

unix.superglobalmegacorp.com

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