home *** CD-ROM | disk | FTP | other *** search
- (* -------------------------------------------------------- *)
- (* POTENZ.PAS *)
- { Berechnet Pot. x hoch y, sofern diese gebildet werden kann }
- FUNCTION Potenz (x, y: REAL): REAL;
-
- CONST MaxReal = 1E38; { Beisp. f. max. zulaessige Real-Zahl }
- VAR Zaehler : INTEGER;
- Produkt : REAL;
-
- BEGIN
- IF x = 0 THEN { Sonderfall: Basis = 0 }
- IF y = 0 THEN Potenz := 1 { Sonder-Sonderfall: 0 hoch 0 }
- ELSE Potenz := 0
- ELSE IF ABS(Ln(ABS(x))*y) > Ln(MaxReal) THEN Potenz := 0
- { Ergebnis zu klein oder zu gross }
- ELSE IF y = Trunc(y) THEN { Exponent ganzzahlig }
- BEGIN
- Produkt := 1;
- FOR Zaehler := 1 TO ABS(Trunc(y)) DO
- Produkt := Produkt*x; { Beachte: x hoch 0 ist stets 1 }
- IF x < 0 THEN Produkt := 1/Produkt; { Exponent negativ }
- Potenz := Produkt
- END
- ELSE IF x <= 0 THEN Potenz := 0 { kein sinnvolles Ergebnis }
- ELSE Potenz := Exp(Ln(x)*y) { Normalfall }
- END;
- (* -------------------------------------------------------- *)
- (* Ende POTENZ.PAS *)
-