Annotation of 3BSD/libc/gen/ldexp.c, revision 1.1.1.1

1.1       root        1: double
                      2: ldexp(fr,exp) double fr; int exp;{
                      3: double huge    = 1.701411834604692293e38;
                      4:        int neg;
                      5:        int i;
                      6:        double frexp();
                      7: 
                      8:        neg = 0;
                      9:        if(fr<0){
                     10:                fr = -fr;
                     11:                neg = 1;
                     12:                }
                     13:        fr = frexp(fr,&i);
                     14:        while(fr<.5){
                     15:                fr = 2*fr;
                     16:                i = i-1;
                     17:                }
                     18:        exp = exp+i;
                     19:        if(exp>127)
                     20:                if(neg)
                     21:                        return(-huge);
                     22:                else
                     23:                        return(huge);
                     24:        if(exp<-127)
                     25:                return(0);
                     26:        while(exp>30){
                     27:                fr = fr*(1L<<30);
                     28:                exp = exp-30;
                     29:                }
                     30:        while(exp<-30){
                     31:                fr = fr/(1L<<30);
                     32:                exp = exp+30;
                     33:                }
                     34:        if(exp>0)
                     35:                fr = fr*(1L<<exp);
                     36:        if(exp<0)
                     37:                fr = fr/(1L<<-exp);
                     38:        if(neg) fr = -fr;
                     39:        return(fr);
                     40:        }

unix.superglobalmegacorp.com

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