RosettaCodeData/Task/Exponentiation-operator/Sidef/exponentiation-operator-1.sidef

21 lines
284 B
Text
Raw Permalink Normal View History

2016-12-05 23:44:36 +01:00
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)