home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / lang / pascal / 7957 < prev    next >
Encoding:
Internet Message Format  |  1993-01-07  |  2.2 KB

  1. Path: sparky!uunet!munnari.oz.au!ariel.ucs.unimelb.EDU.AU!ucsvc.ucs.unimelb.edu.au!lugb!news
  2. Newsgroups: comp.lang.pascal
  3. Subject: Re: powers in TURBO pascal
  4. Message-ID: <1993Jan8.011629.16911@lugb.latrobe.edu.au>
  5. From: CHEAC@LURE.LATROBE.EDU.AU (CZERWINSKI,Alex)
  6. Date: Fri, 8 Jan 1993 01:16:29 GMT
  7. Sender: news@lugb.latrobe.edu.au (USENET News System)
  8. References: <30DEC92.02825818.0033@music.mus.polymtl.ca> <dmurdoch.262.725736007@mast.queensu.ca> <1992Dec30.174246.2523@news.uni-stuttgart.de>
  9. Organization: La Trobe University
  10. In-Reply-To: lehnert@ifsws1.sozialforschung.uni-stuttgart.de's message of Wed, 30 Dec 1992 17:42:46 GMT
  11. X-News-Reader: VMS NEWS 1.24
  12. Lines: 48
  13.  
  14. In <1992Dec30.174246.2523@news.uni-stuttgart.de> lehnert@ifsws1.sozialforschung.uni-stuttgart.de writes:
  15.  
  16. > Hi, everybody,
  17. > I suppose it's trivial, but ...
  18. > What is the TURBO pascal operator for "x to the power of y"?
  19. > I tried ^ (reserved for pointers), **, and others,
  20. > and consulted the Borland Reference Books;
  21. > Maybe somebody can help me.
  22. > Thanks,
  23. > Doris
  24. > -- 
  25. > Doris Lehnert            lehnert@ifsws1.sozialforschung.uni-stuttgart.de
  26. > Universitaet Stuttgart, Institut fuer Sozialforschung
  27.  
  28.  Here is an answer by Prof. Timo Salmi :
  29.  
  30.  
  31.  Q: I need a power function but there is none in Turbo Pascal.
  32.  
  33.  A: Pascals do not have an inbuilt power function. You have to write
  34. one yourself. The common, but non-general method is defining
  35.    function POWERFN (number, exponent : real) : real;
  36.      begin
  37.        powerfn := Exp(exponent*Ln(number));
  38.      end;
  39. To make it general use:
  40.    (* Generalized power function by Prof. Timo Salmi *)
  41.    function GENPOWFN (number, exponent : real) : real;
  42.    begin
  43.      if (exponent = 0.0) then
  44.        genpowfn := 1.0
  45.      else if number = 0.0 then
  46.        genpowfn := 0.0
  47.      else if abs(exponent*Ln(abs(number))) > 87.498 then
  48.        begin writeln ('Overflow in GENPOWFN expression'); halt; end
  49.      else if number > 0.0 then
  50.        genpowfn := Exp(exponent*Ln(number))
  51.      else if (number < 0.0) and (Frac(exponent) = 0.0) then
  52.        if Odd(Round(exponent)) then
  53.          genpowfn := -GENPOWFN (-number, exponent)
  54.        else
  55.          genpowfn :=  GENPOWFN (-number, exponent)
  56.      else
  57.        begin writeln ('Invalid GENPOWFN expression'); halt; end;
  58.    end;  (* genpowfn *)
  59.