summaryrefslogtreecommitdiffstats
path: root/vendor/libm/src/math/j1f.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/libm/src/math/j1f.rs')
-rw-r--r--vendor/libm/src/math/j1f.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/vendor/libm/src/math/j1f.rs b/vendor/libm/src/math/j1f.rs
index 83ac1acff..c39f8ff7e 100644
--- a/vendor/libm/src/math/j1f.rs
+++ b/vendor/libm/src/math/j1f.rs
@@ -49,7 +49,7 @@ fn common(ix: u32, x: f32, y1: bool, sign: bool) -> f32 {
if sign {
cc = -cc;
}
- return INVSQRTPI * (cc as f32) / sqrtf(x);
+ return (((INVSQRTPI as f64) * cc) / (sqrtf(x) as f64)) as f32;
}
/* R0/S0 on [0,2] */
@@ -356,3 +356,25 @@ fn qonef(x: f32) -> f32 {
s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
return (0.375 + r / s) / x;
}
+
+// PowerPC tests are failing on LLVM 13: https://github.com/rust-lang/rust/issues/88520
+#[cfg(not(target_arch = "powerpc64"))]
+#[cfg(test)]
+mod tests {
+ use super::{j1f, y1f};
+ #[test]
+ fn test_j1f_2488() {
+ // 0x401F3E49
+ assert_eq!(j1f(2.4881766_f32), 0.49999475_f32);
+ }
+ #[test]
+ fn test_y1f_2002() {
+ //allow slightly different result on x87
+ let res = y1f(2.0000002_f32);
+ if cfg!(all(target_arch = "x86", not(target_feature = "sse2"))) && (res == -0.10703231_f32)
+ {
+ return;
+ }
+ assert_eq!(res, -0.10703229_f32);
+ }
+}