From 08a80cfbda34952abdcda6b7bb13b2c338a1e7b5 Mon Sep 17 00:00:00 2001 From: Marcel Keller Date: Tue, 16 Feb 2021 16:06:43 +1100 Subject: [PATCH] General exponentation. --- Compiler/types.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Compiler/types.py b/Compiler/types.py index cfe8b11e..c3e495b4 100644 --- a/Compiler/types.py +++ b/Compiler/types.py @@ -279,7 +279,13 @@ class _number(object): res *= self return res else: - return NotImplemented + bits = exp.bit_decompose() + powers = [self] + while len(powers) < len(bits): + powers.append(powers[-1] ** 2) + multiplicands = [b.if_else(p, 1) for b, p in zip(bits, powers)] + res = util.tree_reduce(operator.mul, multiplicands) + return res def mul_no_reduce(self, other, res_params=None): return self * other