diff options
Diffstat (limited to 'src/eval.rs')
| -rw-r--r-- | src/eval.rs | 8 |
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)), } |
