home *** CD-ROM | disk | FTP | other *** search
- (*--------------------------------------------------------------------------*)
- (* PowerI -- raise real to integer power *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION PowerI( x: REAL; i: INTEGER ) : REAL;
-
- (*--------------------------------------------------------------------------*)
- (* *)
- (* Function: PowerI *)
- (* *)
- (* Purpose: Performs exponentiation of real to integer power. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Powval := Power( x : REAL; i: INTEGER ) : REAL; *)
- (* *)
- (* x --- base *)
- (* i --- power to raise base to *)
- (* *)
- (* Calls: None *)
- (* *)
- (*--------------------------------------------------------------------------*)
-
- VAR
- Temp: REAL;
- AbsI: INTEGER;
-
- BEGIN (* PowerI *)
-
- IF i < 0 THEN
- BEGIN
- i := -i;
- IF x <> 0.0 THEN x := 1.0 / x;
- END;
-
- Temp := 1.0;
-
- WHILE( i > 0 ) DO
- BEGIN
-
- WHILE ( NOT ODD( i ) ) DO
- BEGIN
- i := i DIV 2;
- x := x * x;
- END;
-
- i := i - 1;
- Temp := Temp * x;
-
- END;
-
- PowerI := Temp;
-
- END (* PowerI *);
-