function exp(int a, int p) returns int if return 1 | val := a for val := val*a rof fi return val end exp
function exp(int a, int p) returns int if return 1 | val := exp(a, p/2) if p is even return val*val | p is odd return val*val*a fi fi end exp