gonzui


Format: Advanced Search

t2ex/bsd_source/lib/libc/src_bsd/math/e_scalb.cbare sourcepermlink (0.02 seconds)

Search this content:

    1: /* @(#)e_scalb.c 5.1 93/09/24 */
    2: /*
    3:  * ====================================================
    4:  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
    5:  *
    6:  * Developed at SunPro, a Sun Microsystems, Inc. business.
    7:  * Permission to use, copy, modify, and distribute this
    8:  * software is freely granted, provided that this notice 
    9:  * is preserved.
   10:  * ====================================================
   11:  */
   12: 
   13: /*
   14:  * scalb(x, fn) is provide for
   15:  * passing various standard test suite. One 
   16:  * should use scalbn() instead.
   17:  */
   18: 
   19: #include "math.h"
   20: #include "math_private.h"
   21: 
   22: #ifdef _SCALB_INT
   23: double
   24: scalb(double x, int fn)
   25: {
   26:         return scalbn(x, fn);
   27: }
   28: 
   29: #else
   30: 
   31: double
   32: scalb(double x, double fn)
   33: {
   34:         if (isnan(x)||isnan(fn)) return x*fn;
   35:         if (!finite(fn)) {
   36:             if(fn>0.0) return x*fn;
   37:             else       return x/(-fn);
   38:         }
   39:         if (rint(fn)!=fn) return (fn-fn)/(fn-fn);
   40:         if ( fn > 65000.0) return scalbn(x, 65000);
   41:         if (-fn > 65000.0) return scalbn(x,-65000);
   42:         return scalbn(x,(int)fn);
   43: }
   44: #endif