about summary refs log tree commit diff
path: root/src/libstd/f32.rs
diff options
context:
space:
mode:
authorPhosphorus15 <steepout@qq.com>2019-08-20 12:39:12 +0800
committerPhosphorus15 <steepout@qq.com>2019-08-20 12:39:12 +0800
commit535efa4afd3bb5a141eae8579f54aa641ccedaa2 (patch)
tree8bc50a374bbb64b2dea15141a9cf282692f2e798 /src/libstd/f32.rs
parent64e3a10a82e6abad20f4a56750dac4cdd5df19ab (diff)
Used `copysign` to avoid unnecessary branches.
Diffstat (limited to 'src/libstd/f32.rs')
-rw-r--r--src/libstd/f32.rs10
1 files changed, 1 insertions, 9 deletions
diff --git a/src/libstd/f32.rs b/src/libstd/f32.rs
index ba75650fc4c..dcb035993ae 100644
--- a/src/libstd/f32.rs
+++ b/src/libstd/f32.rs
@@ -910,15 +910,7 @@ impl f32 {
     pub fn asinh(self) -> f32 {
         match self {
             x if x == NEG_INFINITY => NEG_INFINITY,
-            x if x.is_sign_negative() => {
-                let v = (x + ((x * x) + 1.0).sqrt()).ln();
-                if v.is_sign_negative() {
-                    v
-                } else {
-                    -v
-                }
-            }
-            x => (x + ((x * x) + 1.0).sqrt()).ln()
+            x => (x + ((x * x) + 1.0).sqrt()).ln().copysign(self)
         }
     }