"CODE" 31204;
"PROCEDURE" LNG INT POWER(U,EXPONENT,RESULT);
"VALUE" EXPONENT; "INTEGER" EXPONENT; "INTEGER""ARRAY" U,RESULT;
"BEGIN""INTEGER" MAX,I,N;
   MAX:=U[0] * EXPONENT;
   "BEGIN""INTEGER""ARRAY" Y,Z,H[0:MAX];
      "COMMENT" Y:=1, Z:=U;
      Y[0]:=Y[1]:=1;
      "FOR" I:=U[0] "STEP" -1 "UNTIL" 0 "DO" Z[I]:=U[I];
   HALVE: N:=EXPONENT//2; "IF" N+N=EXPONENT "THEN" "GOTO" SQUARE Z;
      LNG INT MULT(Y,Z,H);
      "FOR" I:=H[0] "STEP" -1 "UNTIL" 0 "DO" Y[I]:=H[I];
      "IF" N=0 "THEN" "GOTO" READY;
   SQUARE Z: LNG INT MULT(Z,Z,H);
      "FOR" I:=H[0] "STEP" -1 "UNTIL" 0 "DO" Z[I]:=H[I];
      EXPONENT:=N; "GOTO"HALVE;
   READY: "FOR" I:=Y[0] "STEP" -1 "UNTIL" 0 "DO" RESULT[I]:=Y[I]
   "END"
"END" LNG INT POWER;
        "EOP"