| ... | ... | @@ -81,9 +81,13 @@ fn rationalApproxBinary32(z: f32) f32 { |
| 81 | 81 | const pS2: f32 = -8.6563630030e-03; |
| 82 | 82 | const qS1: f32 = -7.0662963390e-01; |
| 83 | 83 | |
| 84 | | const p = z * (pS0 + z * (pS1 + z * pS2)); |
| 85 | | const q = 1.0 + z * qS1; |
| 86 | | return p / q; |
| 84 | // f64 is used instead of f32 to avoid |
| 85 | // a vectorization on x86_64. The vectorization |
| 86 | // causes extra floating point execeptions |
| 87 | // that are prohibited by libc-test. |
| 88 | const p: f64 = @as(f64, @floatCast(z)) * (pS0 + z * (pS1 + z * pS2)); |
| 89 | const q: f64 = 1.0 + z * qS1; |
| 90 | return @floatCast(p / q); |
| 87 | 91 | } |
| 88 | 92 | |
| 89 | 93 | fn acosBinary32(x: f32) f32 { |