t2ex/bsd_source/lib/libc/src_bsd/math/s_copysign.c | bare source | permlink (0.08 seconds) |
1: /* @(#)s_copysign.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: * copysign(double x, double y) 15: * copysign(x,y) returns a value with the magnitude of x and 16: * with the sign bit of y. 17: */ 18: 19: /* LINTLIBRARY */ 20: 21: #include <sys/cdefs.h> 22: #include <float.h> 23: #include <math.h> 24: 25: #include "math_private.h" 26: 27: double 28: copysign(double x, double y) 29: { 30: u_int32_t hx,hy; 31: GET_HIGH_WORD(hx,x); 32: GET_HIGH_WORD(hy,y); 33: SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000)); 34: return x; 35: } 36: 37: #if LDBL_MANT_DIG == 53 38: #ifdef lint 39: /* PROTOLIB1 */ 40: long double copysignl(long double, long double); 41: #else /* lint */ 42: __weak_alias(copysignl, copysign); 43: #endif /* lint */ 44: #endif /* LDBL_MANT_DIG == 53 */