Line data Source code
1 :
2 : /* @(#)s_copysign.c 1.3 95/01/18 */
3 : /*
4 : * ====================================================
5 : * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6 : *
7 : * Developed at SunSoft, a Sun Microsystems, Inc. business.
8 : * Permission to use, copy, modify, and distribute this
9 : * software is freely granted, provided that this notice
10 : * is preserved.
11 : * ====================================================
12 : */
13 :
14 : /*
15 : * copysign(double x, double y)
16 : * copysign(x,y) returns a value with the magnitude of x and
17 : * with the sign bit of y.
18 : */
19 :
20 : #include "fdlibm.h"
21 :
22 : #ifndef _DOUBLE_IS_32BITS
23 :
24 : #ifdef __STDC__
25 0 : double copysign(double x, double y)
26 : #else
27 : double copysign(x,y)
28 : double x,y;
29 : #endif
30 : {
31 : uint32_t hx, hy;
32 0 : GET_HIGH_WORD(hx, x);
33 0 : GET_HIGH_WORD(hy, y);
34 0 : SET_HIGH_WORD(x, (hx&0x7fffffff)|(hy&0x80000000));
35 0 : return x;
36 : }
37 : #endif /* _DOUBLE_IS_32BITS */
|