aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-05-30 11:35:54 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-05-30 11:35:54 -0700
commit405e5eb597709eebeefdc679e4c63b396248c3bc (patch)
treef7166986f0b6c6cce891a287ae20f63142edca20
parent12febf6f88e62fd70cca1b7a87212dc8c0edb027 (diff)
downloadqc-405e5eb597709eebeefdc679e4c63b396248c3bc.tar.zst
Fix exponential for i128.
-rw-r--r--src/eval.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/eval.rs b/src/eval.rs
index 4d6ec80..b08bf81 100644
--- a/src/eval.rs
+++ b/src/eval.rs
@@ -22,7 +22,7 @@ impl Num {
}
}
- fn powi(self, p: u64) -> Num {
+ fn powi(self, p: i128) -> Num {
if p == 0 {
return int(1);
}
@@ -38,13 +38,13 @@ impl Num {
pub fn pow(self, other: Num) -> Num {
match other {
Num::Int(i) => {
- if let Ok(u) = u64::try_from(i) {
- return self.powi(u);
+ if i >= 0 {
+ return self.powi(i);
}
if let Ok(i_32) = i32::try_from(i) {
return float(self.as_float().powi(i_32));
}
- float(1.).div(self).powi(-i as u64)
+ float(1.).div(self).powi(-i)
}
Num::Float(f) => float(self.as_float().powf(f)),
}