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