From e0223a4c201b42ca35c73bfad84477efc61f06b2 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 13 Aug 2024 16:32:00 -0400 Subject: Support ^ exponentiation for integers --- builtins/integers.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'builtins/integers.c') diff --git a/builtins/integers.c b/builtins/integers.c index 53e38aab..e55d2ab0 100644 --- a/builtins/integers.c +++ b/builtins/integers.c @@ -291,6 +291,17 @@ public Int_t Int$abs(Int_t x) return Int$from_mpz(result); } +public Int_t Int$power(Int_t base, Int_t exponent) +{ + int64_t exp = Int$as_i64(exponent); + if (__builtin_expect(exp < 0, 0)) + fail("Cannot take a negative power of an integer!"); + mpz_t result; + mpz_init_set_int(result, base); + mpz_pow_ui(result, result, exp); + return Int$from_mpz(result); +} + public Int_t Int$random(Int_t min, Int_t max) { int32_t cmp = Int$compare(&min, &max, &$Int); if (cmp > 0) -- cgit v1.2.3