13: 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 *)
On the lighter side of things an extract from an answer of mine in
the late comp.lang.pascal UseNet newsgroup:
>anyone point out why X**Y is not allowed in Turbo Pascal?
The situation in TP is a left-over from standard
Pascal. You'll recall that Pascal was originally
devised for teaching programming, not for
something as silly and frivolous as actually
writing programs. :-)