Eg pow-log
(define pow-log
(car (code-rec
`((code pow-log
(base exp k)
((const pow-loop pow-loop)
(const one 1)
(jump pow-loop base exp one one base k))
,'())
(code pow-loop
(base exp res bit square k)
((prim t1 ,> bit exp)
(if t1
((jump k res)))
(prim ns ,* square square)
(prim nb ,(lambda (n) (* n 2)) bit)
(prim t2 ,(lambda (b e)
(not (= 0 (bitwise-and b e))))
bit exp)
(const pow-loop pow-loop)
(if t2
((prim nres ,* res square)
(jump pow-loop base exp nres nb ns k)))
(jump pow-loop base exp res nb ns k))
,'())))))
resulting in
> (eval-root pow-log (list 2 10 top))
eval-root pow-log
eval-root pow-loop
eval-root pow-loop
eval-root pow-loop
eval-root pow-loop
eval-root pow-loop
eval-root top
1024