File: POWER.PS of Tape: Various/Decus/decus-3
(Source file text) 

FUNCTION POWER(X: REAL; Y: INTEGER): REAL ; (*Y >= 0*)
VAR W,Z: REAL; I: INTEGER;
BEGIN W := X; Z := 1; I := Y;
    WHILE I > 0 DO
    BEGIN (*Z*(W**I) = X ** Y*)
       IF ODD(I) THEN Z := Z*W;
       I := I DIV 2;
       W := SQR(W)
    END;
    (*Z = X**Y*)
    POWER := Z
END;