Handle i32::MIN in Number::two_pow and Number::ten_pow (#771)

* In Number::two_pow, handle i32::MIN case

* In Number::ten_pow, handle i32::MIN case
This commit is contained in:
Jay Lorch
2026-07-24 07:47:55 -07:00
committed by GitHub
parent 8b844e4c53
commit e8482f5abe

View File

@@ -781,7 +781,8 @@ impl Number {
if e >= 0 { if e >= 0 {
Ok(two_pow_positive(e as u32)) Ok(two_pow_positive(e as u32))
} else { } else {
let denom = two_pow_positive((-e) as u32); // Must cast to i64 before negating in case it's i32::MIN
let denom = two_pow_positive((-(e as i64)) as u32);
Number::from(1u64).divide(&denom) Number::from(1u64).divide(&denom)
} }
} }
@@ -790,7 +791,8 @@ impl Number {
if e >= 0 { if e >= 0 {
Ok(ten_pow_positive(e as u32)) Ok(ten_pow_positive(e as u32))
} else { } else {
let denom = ten_pow_positive((-e) as u32); // Must cast to i64 before negating in case it's i32::MIN
let denom = ten_pow_positive((-(e as i64)) as u32);
Number::from(1u64).divide(&denom) Number::from(1u64).divide(&denom)
} }
} }