blob: 26982cea7ced1cc8cf834784487343bb31eee134 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
|
#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;
}
|