t3x.org / sketchy / library / expt.html
SketchyLISP
Reference
  Copyright (C) 2006
Nils M Holm

expt

Conformance: R5RS

Purpose: Compute the x raised to the power of y. X may be a natural or integer number. y must be natural.

Arguments:
X - number (base)
Y - number (exponent)

Model:

(define (expt x y)
  (letrec
    ((exp (lambda (x y r)
      (cond ((zero? y) r)
        (#t (exp x (- y 1) (* x r)))))))
    (exp (integer x) (natural y) 1)))

Implementation:

(define (expt x y)
  (letrec
    ((square (lambda (x)
      (* x x)))
    (_expt (lambda (x y)
      (cond ((zero? y) 1)
        ((even? y)
          (square (_expt x (nquotient y 2))))
        (#t (* x (square (_expt x (nquotient y 2)))))))))
    (_expt (integer x) (natural y))))

Example:

(expt 2 5) 
=> 32

See also:
digits, sqrt, gcd.