1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*******************************************************************************
- * *
- * File frexpldexp.c, *
- * Functions frexp(x) and ldexp(x), *
- * Implementation of frexp and ldexp functions for the PowerPC. *
- * *
- * Copyright © 1991 Apple Computer, Inc. All rights reserved. *
- * *
- * Written by Ali Sazegari, started on January 1991, *
- * *
- * W A R N I N G: This routine expects a 64 bit double model. *
- * *
- * December03 1992: first rs6000 implementation. *
- * October 05 1993: added special cases for NaN and ° in frexp. *
- * May 27 1997: improved the performance of frexp by eliminating the *
- * switch statement. *
- * June 13 2001: (ram) rewrote frexp to eliminate calls to scalb and *
- * logb. *
- * *
- *******************************************************************************/
- #include <limits.h>
- #include <math.h>
- typedef union
- {
- struct {
- #if defined(__BIG_ENDIAN__)
- unsigned long int hi;
- unsigned long int lo;
- #else
- unsigned long int lo;
- unsigned long int hi;
- #endif
- } words;
- double dbl;
- } DblInHex;
- double ldexp ( double value, int exp )
- {
- if ( exp > SHRT_MAX )
- exp = SHRT_MAX;
- else if ( exp < -SHRT_MAX )
- exp = -SHRT_MAX;
- return scalb ( value, exp );
- }
|