use crate::natural::arithmetic::mul::schonhage_strassen::limbs_add_signed_limb_mod_2expp1;
use crate::platform::Limb;
crate_test_fn! {limbs_norm_mod_2expp1(t: &mut [Limb], limbs: usize) {
let hi = t[limbs];
if hi != 0 {
t[limbs] = 0;
limbs_add_signed_limb_mod_2expp1(t, limbs, hi.wrapping_neg());
let hi = t[limbs];
if hi != 0 {
t[limbs] = 0;
limbs_add_signed_limb_mod_2expp1(t, limbs, hi.wrapping_neg());
if t[limbs] == Limb::MAX {
t[limbs] = 0;
limbs_add_signed_limb_mod_2expp1(t, limbs, 1);
}
}
}
}}