aboutsummaryrefslogtreecommitdiff
path: root/src/d2s.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/d2s.rs')
-rw-r--r--src/d2s.rs60
1 files changed, 8 insertions, 52 deletions
diff --git a/src/d2s.rs b/src/d2s.rs
index 862fd5f..392577a 100644
--- a/src/d2s.rs
+++ b/src/d2s.rs
@@ -24,9 +24,6 @@ pub use crate::d2s_full_table::*;
use crate::d2s_intrinsics::*;
#[cfg(feature = "small")]
pub use crate::d2s_small_table::*;
-#[cfg(not(maybe_uninit))]
-use core::mem;
-#[cfg(maybe_uninit)]
use core::mem::MaybeUninit;
pub const DOUBLE_MANTISSA_BITS: u32 = 52;
@@ -117,14 +114,7 @@ pub fn d2d(ieee_mantissa: u64, ieee_exponent: u32) -> FloatingDecimal64 {
let mut vr: u64;
let mut vp: u64;
let mut vm: u64;
- #[cfg(not(maybe_uninit))]
- {
- vp = unsafe { mem::uninitialized() };
- vm = unsafe { mem::uninitialized() };
- }
- #[cfg(maybe_uninit)]
let mut vp_uninit: MaybeUninit<u64> = MaybeUninit::uninit();
- #[cfg(maybe_uninit)]
let mut vm_uninit: MaybeUninit<u64> = MaybeUninit::uninit();
let e10: i32;
let mut vm_is_trailing_zeros = false;
@@ -147,30 +137,13 @@ pub fn d2d(ieee_mantissa: u64, ieee_exponent: u32) -> FloatingDecimal64 {
DOUBLE_POW5_INV_SPLIT.get_unchecked(q as usize)
},
i as u32,
- #[cfg(maybe_uninit)]
- {
- vp_uninit.as_mut_ptr()
- },
- #[cfg(not(maybe_uninit))]
- {
- &mut vp
- },
- #[cfg(maybe_uninit)]
- {
- vm_uninit.as_mut_ptr()
- },
- #[cfg(not(maybe_uninit))]
- {
- &mut vm
- },
+ vp_uninit.as_mut_ptr(),
+ vm_uninit.as_mut_ptr(),
mm_shift,
)
};
- #[cfg(maybe_uninit)]
- {
- vp = unsafe { vp_uninit.assume_init() };
- vm = unsafe { vm_uninit.assume_init() };
- }
+ vp = unsafe { vp_uninit.assume_init() };
+ vm = unsafe { vm_uninit.assume_init() };
if q <= 21 {
// This should use q <= 22, but I think 21 is also safe. Smaller values
// may still be safe, but it's more difficult to reason about them.
@@ -206,30 +179,13 @@ pub fn d2d(ieee_mantissa: u64, ieee_exponent: u32) -> FloatingDecimal64 {
DOUBLE_POW5_SPLIT.get_unchecked(i as usize)
},
j as u32,
- #[cfg(maybe_uninit)]
- {
- vp_uninit.as_mut_ptr()
- },
- #[cfg(not(maybe_uninit))]
- {
- &mut vp
- },
- #[cfg(maybe_uninit)]
- {
- vm_uninit.as_mut_ptr()
- },
- #[cfg(not(maybe_uninit))]
- {
- &mut vm
- },
+ vp_uninit.as_mut_ptr(),
+ vm_uninit.as_mut_ptr(),
mm_shift,
)
};
- #[cfg(maybe_uninit)]
- {
- vp = unsafe { vp_uninit.assume_init() };
- vm = unsafe { vm_uninit.assume_init() };
- }
+ vp = unsafe { vp_uninit.assume_init() };
+ vm = unsafe { vm_uninit.assume_init() };
if q <= 1 {
// {vr,vp,vm} is trailing zeros if {mv,mp,mm} has at least q trailing 0 bits.
// mv = 4 * m2, so it always has at least two trailing 0 bits.