diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-05-30 11:35:54 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-05-30 11:35:54 -0700 |
| commit | 405e5eb597709eebeefdc679e4c63b396248c3bc (patch) | |
| tree | f7166986f0b6c6cce891a287ae20f63142edca20 /src/eval.rs | |
| parent | 12febf6f88e62fd70cca1b7a87212dc8c0edb027 (diff) | |
| download | qc-405e5eb597709eebeefdc679e4c63b396248c3bc.tar.zst | |
Fix exponential for i128.
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)), } |
