diff options
Diffstat (limited to 'libm/powerpc/w_scalb.c')
-rw-r--r-- | libm/powerpc/w_scalb.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/libm/powerpc/w_scalb.c b/libm/powerpc/w_scalb.c index 98a2b7d3f..c93c74b68 100644 --- a/libm/powerpc/w_scalb.c +++ b/libm/powerpc/w_scalb.c @@ -1,26 +1,26 @@ /*********************************************************************** ** File: scalb.c -** +** ** Contains: C source code for implementations of floating-point ** scalb functions defined in header <fp.h>. In ** particular, this file contains implementations of ** functions scalb and scalbl for double and long double ** formats on PowerPC platforms. -** +** ** Written by: Jon Okada, SANEitation Engineer, ext. 4-4838 -** +** ** Copyright: © 1992 by Apple Computer, Inc., all rights reserved -** +** ** Change History ( most recent first ): ** ** 28 May 97 ali made an speed improvement for large n, ** removed scalbl. ** 12 Dec 92 JPO First created. -** +** ***********************************************************************/ -typedef union - { +typedef union + { struct { #if defined(__BIG_ENDIAN__) unsigned long int hi; @@ -41,35 +41,35 @@ static const double twoToM1022 = 2.225073858507201383e-308; // 0x1p-1022 double scalb( double x, long int n ) returns its argument x scaled by the factor 2^m. NaNs, signed zeros, and infinities are propagated by this function regardless of the value of n. - + Exceptions: OVERFLOW/INEXACT or UNDERFLOW inexact may occur; INVALID for signaling NaN inputs ( quiet NaN returned ). - + Calls: none. ***********************************************************************/ double scalb ( double x, int n ) { DblInHex xInHex; - + xInHex.words.lo = 0UL; // init. low half of xInHex - - if ( n > 1023 ) + + if ( n > 1023 ) { // large positive scaling if ( n > 2097 ) // huge scaling return ( ( x * twoTo1023 ) * twoTo1023 ) * twoTo1023; - while ( n > 1023 ) + while ( n > 1023 ) { // scale reduction loop x *= twoTo1023; // scale x by 2^1023 n -= 1023; // reduce n by 1023 } } - - else if ( n < -1022 ) + + else if ( n < -1022 ) { // large negative scaling if ( n < -2098 ) // huge negative scaling return ( ( x * twoToM1022 ) * twoToM1022 ) * twoToM1022; - while ( n < -1022 ) + while ( n < -1022 ) { // scale reduction loop x *= twoToM1022; // scale x by 2^( -1022 ) n += 1022; // incr n by 1022 |