home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 10 / potenz.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-07-22  |  1.2 KB  |  29 lines

  1. (* -------------------------------------------------------- *)
  2. (*                         POTENZ.PAS                       *)
  3. { Berechnet Pot. x hoch y, sofern diese gebildet werden kann }
  4. FUNCTION Potenz (x, y: REAL): REAL;
  5.  
  6. CONST MaxReal = 1E38;  { Beisp. f. max. zulaessige Real-Zahl }
  7. VAR   Zaehler : INTEGER;
  8.       Produkt : REAL;
  9.  
  10. BEGIN
  11.   IF x = 0 THEN                      { Sonderfall: Basis = 0 }
  12.     IF y = 0 THEN Potenz := 1  { Sonder-Sonderfall: 0 hoch 0 }
  13.     ELSE Potenz := 0
  14.   ELSE IF ABS(Ln(ABS(x))*y) > Ln(MaxReal) THEN Potenz := 0
  15.                            { Ergebnis zu klein oder zu gross }
  16.   ELSE IF y = Trunc(y) THEN            { Exponent ganzzahlig }
  17.   BEGIN
  18.     Produkt := 1;
  19.     FOR Zaehler := 1 TO ABS(Trunc(y)) DO
  20.       Produkt := Produkt*x;  { Beachte: x hoch 0 ist stets 1 }
  21.     IF x < 0 THEN Produkt := 1/Produkt;   { Exponent negativ }
  22.     Potenz := Produkt
  23.   END
  24.   ELSE IF x <= 0 THEN Potenz := 0 { kein sinnvolles Ergebnis }
  25.   ELSE Potenz := Exp(Ln(x)*y)                   { Normalfall }
  26. END;
  27. (* -------------------------------------------------------- *)
  28. (*                     Ende POTENZ.PAS                      *)
  29.