Home | History | Annotate | Line # | Download | only in math
      1 /* s_copysignl.c -- long double version of s_copysign.c.
      2  * Conversion to long double by Jakub Jelinek, jj (at) ultra.linux.cz.
      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 #if defined(LIBM_SCCS) && !defined(lint)
     17 static char rcsid[] = "NetBSD: ";
     18 #endif
     19 
     20 /*
     21  * copysignq(long double x, long double y)
     22  * copysignq(x,y) returns a value with the magnitude of x and
     23  * with the sign bit of y.
     24  */
     25 
     26 #define NO_MATH_REDIRECT
     27 
     28 #include "quadmath-imp.h"
     29 
     30 __float128 copysignq(__float128 x, __float128 y)
     31 {
     32 	uint64_t hx,hy;
     33 	GET_FLT128_MSW64(hx,x);
     34 	GET_FLT128_MSW64(hy,y);
     35 	SET_FLT128_MSW64(x,(hx&0x7fffffffffffffffULL)
     36 			    |(hy&0x8000000000000000ULL));
     37         return x;
     38 }
     39