Branch data Line data Source code
1 : : /* s_copysignf.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 : : #include "cdefs-compat.h"
17 : : //__FBSDID("$FreeBSD: src/lib/msun/src/s_copysignf.c,v 1.10 2008/02/22 02:30:35 das Exp $");
18 : :
19 : : /*
20 : : * copysignf(float x, float y)
21 : : * copysignf(x,y) returns a value with the magnitude of x and
22 : : * with the sign bit of y.
23 : : */
24 : :
25 : : #include <openlibm_math.h>
26 : :
27 : : #include "math_private.h"
28 : :
29 : : OLM_DLLEXPORT float
30 : 17 : copysignf(float x, float y)
31 : : {
32 : : u_int32_t ix,iy;
33 : 17 : GET_FLOAT_WORD(ix,x);
34 : 17 : GET_FLOAT_WORD(iy,y);
35 : 17 : SET_FLOAT_WORD(x,(ix&0x7fffffff)|(iy&0x80000000));
36 : 17 : return x;
37 : : }
|