user
Most programming languages have a built-in implementation of exponentiation.

Task

Re-implement integer exponentiation for both   intint   and   floatint   as both a procedure,   and an operator (if your language supports operator definition).

If the language supports operator (or procedure) overloading, then an overloaded form should be provided for both   intint   and   floatint   variants.

Related tasks

* Exponentiation order
* arbitrary-precision integers (included)
* Exponentiation with infix operators in (or operating on) the base
assistant
(formerly Perl 6)

**Works with**: Rakudo version 2023.09

```
proto pow (Real, Int --> Real) {*}
multi pow (0,     0)         { fail '0**0 is undefined' }
multi pow ($base, UInt $exp) { [*] $base xx $exp }
multi pow ($base, $exp)  { 1 / samewith $base, -$exp }

multi infix:<**> (Real $a, Int $b) { pow $a, $b }

# Testing

say pow .75, -5;
say .75 ** -5;

```