altoslib: fix computation of TeleGPS battery voltage
[fw/altos] / src / math / sf_copysign.c
1 /* sf_copysign.c -- float version of s_copysign.c.
2  * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
3  */
4
5 /*
6  * ====================================================
7  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
8  *
9  * Developed at SunPro, a Sun Microsystems, Inc. business.
10  * Permission to use, copy, modify, and distribute this
11  * software is freely granted, provided that this notice 
12  * is preserved.
13  * ====================================================
14  */
15
16 /*
17  * copysignf(float x, float y)
18  * copysignf(x,y) returns a value with the magnitude of x and
19  * with the sign bit of y.
20  */
21
22 #include "fdlibm.h"
23
24 #ifdef __STDC__
25         float copysignf(float x, float y)
26 #else
27         float copysignf(x,y)
28         float x,y;
29 #endif
30 {
31         __uint32_t ix,iy;
32         GET_FLOAT_WORD(ix,x);
33         GET_FLOAT_WORD(iy,y);
34         SET_FLOAT_WORD(x,(ix&0x7fffffff)|(iy&0x80000000));
35         return x;
36 }
37
38 #ifdef _DOUBLE_IS_32BITS
39
40 #ifdef __STDC__
41         double copysign(double x, double y)
42 #else
43         double copysign(x,y)
44         double x,y;
45 #endif
46 {
47         return (double) copysignf((float) x, (float) y);
48 }
49
50 #endif /* defined(_DOUBLE_IS_32BITS) */