function add (x : integer; y : integer) return integer is begin return x + y; end; function add2 (x : integer; y : integer) return integer is begin return add(x, y) + add(x, y); end; function even (x: integer) return integer is begin if (x / 2) * 2 = x then return 1; else return 0; end if; end; function slow_pow (base : integer; exponent : integer) return integer is result : integer; begin result := 1; for j in 1 .. exponent loop result := result * base; end; return result; end; function fib (n : integer) return integer is type table is array of integer; values : table [10]; begin values [0] := 1; values [1] := 1; for j in 2 .. n loop values [j] := values [j - 1] + values [j - 2]; end; return values [n]; end; function fib2 (a : integer; n : integer) return integer is begin a [0] := 1; a [1] := 1; for j in 2 .. n loop a [j] := a [j - 1] + a [j - 2]; end; return a [n]; end; function recurse (x : integer) return integer is begin if x = 0 then return 0; else return recurse (x - 1) + x; end if; end; function pow (base: integer; exponent : integer) return integer is temp : integer; begin if exponent = 0 then return 1; end if; if exponent = 1 then return base; end if; if (even (exponent)) then temp := pow (base, exponent / 2); return temp * temp; end if; return base * pow (base, exponent - 1); end;