math: fix pow signed shift ub
[oweals/musl.git] / src / math / copysignf.c
1 #include <math.h>
2 #include <stdint.h>
3
4 float copysignf(float x, float y)
5 {
6         union {float f; uint32_t i;} ux={x}, uy={y};
7         ux.i &= 0x7fffffff;
8         ux.i |= uy.i & 0x80000000;
9         return ux.f;
10 }