home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!munnari.oz.au!ariel.ucs.unimelb.EDU.AU!ucsvc.ucs.unimelb.edu.au!lugb!news
- Newsgroups: comp.lang.pascal
- Subject: Re: powers in TURBO pascal
- Message-ID: <1993Jan8.011629.16911@lugb.latrobe.edu.au>
- From: CHEAC@LURE.LATROBE.EDU.AU (CZERWINSKI,Alex)
- Date: Fri, 8 Jan 1993 01:16:29 GMT
- Sender: news@lugb.latrobe.edu.au (USENET News System)
- References: <30DEC92.02825818.0033@music.mus.polymtl.ca> <dmurdoch.262.725736007@mast.queensu.ca> <1992Dec30.174246.2523@news.uni-stuttgart.de>
- Organization: La Trobe University
- In-Reply-To: lehnert@ifsws1.sozialforschung.uni-stuttgart.de's message of Wed, 30 Dec 1992 17:42:46 GMT
- X-News-Reader: VMS NEWS 1.24
- Lines: 48
-
- In <1992Dec30.174246.2523@news.uni-stuttgart.de> lehnert@ifsws1.sozialforschung.uni-stuttgart.de writes:
-
- > Hi, everybody,
- > I suppose it's trivial, but ...
- >
- > What is the TURBO pascal operator for "x to the power of y"?
- >
- > I tried ^ (reserved for pointers), **, and others,
- > and consulted the Borland Reference Books;
- > Maybe somebody can help me.
- >
- > Thanks,
- > Doris
- > --
- > Doris Lehnert lehnert@ifsws1.sozialforschung.uni-stuttgart.de
- > Universitaet Stuttgart, Institut fuer Sozialforschung
-
- Here is an answer by Prof. Timo Salmi :
-
-
- Q: I need a power function but there is none in Turbo Pascal.
-
- A: Pascals do not have an inbuilt power function. You have to write
- one yourself. The common, but non-general method is defining
- function POWERFN (number, exponent : real) : real;
- begin
- powerfn := Exp(exponent*Ln(number));
- end;
- To make it general use:
- (* Generalized power function by Prof. Timo Salmi *)
- function GENPOWFN (number, exponent : real) : real;
- begin
- if (exponent = 0.0) then
- genpowfn := 1.0
- else if number = 0.0 then
- genpowfn := 0.0
- else if abs(exponent*Ln(abs(number))) > 87.498 then
- begin writeln ('Overflow in GENPOWFN expression'); halt; end
- else if number > 0.0 then
- genpowfn := Exp(exponent*Ln(number))
- else if (number < 0.0) and (Frac(exponent) = 0.0) then
- if Odd(Round(exponent)) then
- genpowfn := -GENPOWFN (-number, exponent)
- else
- genpowfn := GENPOWFN (-number, exponent)
- else
- begin writeln ('Invalid GENPOWFN expression'); halt; end;
- end; (* genpowfn *)
-