blob: 3c3c05bd10e693f4fdd0fe8bf01e4f57296e7838 [file] [log] [blame]
#include "libm.h"
double copysign(double x, double y) {
union {
double f;
uint64_t i;
} ux = {x}, uy = {y};
ux.i &= -1ULL / 2;
ux.i |= uy.i & 1ULL << 63;
return ux.f;
}