|
func expon(_, {.is_zero}) { 1 }
|
|
|
|
func expon(base, exp {.is_neg}) {
|
|
expon(1/base, -exp)
|
|
}
|
|
|
|
func expon(base, exp {.is_int}) {
|
|
|
|
var c = 1
|
|
while (exp > 1) {
|
|
c *= base if exp.is_odd
|
|
base *= base
|
|
exp >>= 1
|
|
}
|
|
|
|
return (base * c)
|
|
}
|
|
|
|
say expon(3, 10)
|
|
say expon(5.5, -3)
|