s_copysign.c (1060B)
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#if defined(LIBM_SCCS) && !defined(lint) 14static const char rcsid[] = 15 "$NetBSD: s_copysign.c,v 1.8 1995/05/10 20:46:57 jtc Exp $"; 16#endif 17 18/* 19 * copysign(double x, double y) 20 * copysign(x,y) returns a value with the magnitude of x and 21 * with the sign bit of y. 22 */ 23 24#include "math_libm.h" 25#include "math_private.h" 26 27libm_hidden_proto(copysign) 28#ifdef __STDC__ 29 double copysign(double x, double y) 30#else 31 double copysign(x, y) 32 double x, y; 33#endif 34{ 35 u_int32_t hx, hy; 36 GET_HIGH_WORD(hx, x); 37 GET_HIGH_WORD(hy, y); 38 SET_HIGH_WORD(x, (hx & 0x7fffffff) | (hy & 0x80000000)); 39 return x; 40} 41 42libm_hidden_def(copysign)