diff --git a/src/f32.rs b/src/f32.rs index a132af3..90d944e 100644 --- a/src/f32.rs +++ b/src/f32.rs @@ -88,10 +88,7 @@ pub use u10::{ }; mod u15; -#[rustfmt::skip] -pub use u15::{ - erfcf as erfc_u15, -}; +pub use u15::erfcf as erfc_u15; mod u35; #[rustfmt::skip] @@ -434,7 +431,7 @@ fn ilogbkf(mut d: f32) -> i32 { } else { d }; - let q = ((d.to_bits() >> 23) & 0xff) as i32; + let q = ((d.to_bits() as i32) >> 23) & 0xff; if m { q - (64 + 0x7f) } else { @@ -446,7 +443,7 @@ fn ilogbkf(mut d: f32) -> i32 { // normalized FP value. #[inline] fn ilogb2kf(d: f32) -> i32 { - ((d.to_bits() >> 23) & 0xff) as i32 - 0x7f + (((d.to_bits() as i32) >> 23) & 0xff) - 0x7f } #[inline] @@ -939,7 +936,7 @@ pub fn fmodf(x: f32, y: f32) -> f32 { if d == 0. { 0. } else { - f32::from_bits(d.to_bits() - 1) + f32::from_bits(((d.to_bits() as i32) - 1) as u32) } } diff --git a/src/f32/u05.rs b/src/f32/u05.rs index d1bbc5f..6e4fd56 100644 --- a/src/f32/u05.rs +++ b/src/f32/u05.rs @@ -180,7 +180,7 @@ pub fn sqrtf(mut d: f32) -> f32 { } // http://en.wikipedia.org/wiki/Fast_inverse_square_root - let mut x = f32::from_bits(0x_5f37_5a86 - ((d + 1e-45).to_bits() >> 1)); + let mut x = f32::from_bits((0x_5f37_5a86 - (((d + 1e-45).to_bits() as i32) >> 1)) as u32); x *= 1.5 - 0.5 * d * x * x; x *= 1.5 - 0.5 * d * x * x; diff --git a/src/f32/u35.rs b/src/f32/u35.rs index 32f7ba0..9425ad3 100644 --- a/src/f32/u35.rs +++ b/src/f32/u35.rs @@ -796,7 +796,7 @@ pub fn sqrtf(mut d: f32) -> f32 { } // http://en.wikipedia.org/wiki/Fast_inverse_square_root - let mut x = f32::from_bits(0x_5f37_5a86 - ((d + 1e-45).to_bits() >> 1)); + let mut x = f32::from_bits((0x_5f37_5a86 - (((d + 1e-45).to_bits() as i32) >> 1)) as u32); x *= 1.5 - 0.5 * d * x * x; x *= 1.5 - 0.5 * d * x * x; diff --git a/src/f32x.rs b/src/f32x.rs index 8203b66..f592c5e 100644 --- a/src/f32x.rs +++ b/src/f32x.rs @@ -538,7 +538,7 @@ where { let o = d.simd_lt(F32x::splat(5.421_010_862_427_522_e-20)); d = o.select(F32x::splat(1.844_674_407_370_955_2_e19) * d, d); - let q = (d.to_bits() >> U32x::splat(23)).cast() & I32x::splat(0xff); + let q = (d.to_bits().cast() >> I32x::splat(23)) & I32x::splat(0xff); q - o.select(I32x::splat(64 + 0x7f), I32x::splat(0x7f)) } @@ -551,8 +551,8 @@ pub(crate) fn ilogb2kf(d: F32x) -> I32x where LaneCount: SupportedLaneCount, { - let q = d.to_bits(); - let mut q = (q >> U32x::splat(23)).cast(); + let q = d.to_bits().cast(); + let mut q = q >> I32x::splat(23); q &= I32x::splat(0xff); q - I32x::splat(0x7f) } diff --git a/src/f32x/u05.rs b/src/f32x/u05.rs index 0fbdabc..6b20718 100644 --- a/src/f32x/u05.rs +++ b/src/f32x/u05.rs @@ -149,7 +149,7 @@ where let mut x = F32x::from_bits( (I32x::splat(0x_5f37_5a86) - - ((d + F32x::splat(1e-45)).to_bits() >> U32x::splat(1)).cast()) + - ((d + F32x::splat(1e-45)).to_bits().cast() >> I32x::splat(1))) .cast(), ); diff --git a/src/f32x/u35.rs b/src/f32x/u35.rs index 0ffdec2..ee5c4c9 100644 --- a/src/f32x/u35.rs +++ b/src/f32x/u35.rs @@ -1124,10 +1124,10 @@ where { let e = F32x::from_bits( U32x::splat(0x_2000_0000) - + (U32x::splat(0x_7f00_0000) & (d.to_bits() >> U32x::splat(1))), + + (U32x::splat(0x_7f00_0000) & (d.to_bits().cast() >> I32x::splat(1))), ); let m = F32x::from_bits( - I32x::splat(0x_3f00_0000) + (I32x::splat(0x_01ff_ffff) & I32x::from_bits(d)), + I32x::splat(0x_3f00_0000) + (I32x::splat(0x_01ff_ffff) & d.to_bits().cast()), ); let mut x = vrsqrteq_f32(m); x = vmulq_f32(x, vrsqrtsq_f32(m, vmulq_f32(x, x))); diff --git a/src/f64.rs b/src/f64.rs index 72c767e..e66456b 100644 --- a/src/f64.rs +++ b/src/f64.rs @@ -119,10 +119,7 @@ pub use u10::{ }; mod u15; -#[rustfmt::skip] -pub use u15::{ - erfc as erfc_u15, -}; +pub use u15::erfc as erfc_u15; mod u35; #[rustfmt::skip] pub use u35::{