copysign.c raw

   1  #include "libm.h"
   2  
   3  double copysign(double x, double y) {
   4  	union {double f; uint64_t i;} ux={x}, uy={y};
   5  	ux.i &= -1ULL/2;
   6  	ux.i |= uy.i & 1ULL<<63;
   7  	return ux.f;
   8  }
   9