(root)/
gcc-13.2.0/
libquadmath/
math/
copysignq.c
       1  /* s_copysignl.c -- long double version of s_copysign.c.
       2   * Conversion to long double by Jakub Jelinek, jj@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  }