aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)),
}