copysign.c 198 B

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