diff options
Diffstat (limited to 'vendor/compiler_builtins/libm/src/math/copysign.rs')
-rw-r--r-- | vendor/compiler_builtins/libm/src/math/copysign.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/vendor/compiler_builtins/libm/src/math/copysign.rs b/vendor/compiler_builtins/libm/src/math/copysign.rs new file mode 100644 index 000000000..1527fb6ea --- /dev/null +++ b/vendor/compiler_builtins/libm/src/math/copysign.rs @@ -0,0 +1,11 @@ +/// Sign of Y, magnitude of X (f64) +/// +/// Constructs a number with the magnitude (absolute value) of its +/// first argument, `x`, and the sign of its second argument, `y`. +pub fn copysign(x: f64, y: f64) -> f64 { + let mut ux = x.to_bits(); + let uy = y.to_bits(); + ux &= (!0) >> 1; + ux |= uy & (1 << 63); + f64::from_bits(ux) +} |