copysignl.c raw

   1  #include "libm.h"
   2  
   3  #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
   4  long double copysignl(long double x, long double y)
   5  {
   6  	return copysign(x, y);
   7  }
   8  #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
   9  long double copysignl(long double x, long double y)
  10  {
  11  	union ldshape ux = {x}, uy = {y};
  12  	ux.i.se &= 0x7fff;
  13  	ux.i.se |= uy.i.se & 0x8000;
  14  	return ux.f;
  15  }
  16  #endif
  17