1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*******************************************************************************
- * *
- * File sign.c, *
- * Functions copysign and __signbitd. *
- * For PowerPC based machines. *
- * *
- * Copyright © 1991, 2001 Apple Computer, Inc. All rights reserved. *
- * *
- * Written by Ali Sazegari, started on June 1991. *
- * *
- * August 26 1991: no CFront Version 1.1d17 warnings. *
- * September 06 1991: passes the test suite with invalid raised on *
- * signaling nans. sane rom code behaves the same. *
- * September 24 1992: took the Ò#include support.hÓ out. *
- * Dcember 02 1992: PowerPC port. *
- * July 20 1994: __fabs added *
- * July 21 1994: deleted unnecessary functions: neg, COPYSIGNnew, *
- * and SIGNNUMnew. *
- * April 11 2001: first port to os x using gcc. *
- * removed fabs and deffered to gcc for direct *
- * instruction generation. *
- * *
- *******************************************************************************/
- #include <math.h>
- #include "../../fp_private.h"
- /*******************************************************************************
- * *
- * Function copysign. *
- * Implementation of copysign for the PowerPC. *
- * *
- ********************************************************************************
- * Note: The order of the operands in this function is reversed from that *
- * suggested in the IEEE standard 754. *
- *******************************************************************************/
- libm_hidden_proto(copysign)
- double copysign ( double arg2, double arg1 )
- {
- union
- {
- dHexParts hex;
- double dbl;
- } x, y;
- /*******************************************************************************
- * No need to flush NaNs out. *
- *******************************************************************************/
- x.dbl = arg1;
- y.dbl = arg2;
- y.hex.high = y.hex.high & 0x7FFFFFFF;
- y.hex.high = ( y.hex.high | ( x.hex.high & dSgnMask ) );
- return y.dbl;
- }
- libm_hidden_def(copysign)
|