0
Je cherchais la définition en Pascal étendu pour l'opération d'exponentiation **. Je cherche depuis un moment maintenant et n'arrive pas à le trouver.Pascal ** définition (exponent)
i.e 2**3 = 8
Je cherchais la définition en Pascal étendu pour l'opération d'exponentiation **. Je cherche depuis un moment maintenant et n'arrive pas à le trouver.Pascal ** définition (exponent)
i.e 2**3 = 8
En FreePascal il est mis en œuvre dans l'unité de calcul:
operator ** (bas,expo : float) e: float; inline;
begin
e:=power(bas,expo);
end;
operator ** (bas,expo : int64) i: int64; inline;
begin
i:=round(intpower(bas,expo));
end;
function power(base,exponent : float) : float;
begin
if Exponent=0.0 then
result:=1.0
else if (base=0.0) and (exponent>0.0) then
result:=0.0
else if (abs(exponent)<=maxint) and (frac(exponent)=0.0) then
result:=intpower(base,trunc(exponent))
else if base>0.0 then
result:=exp(exponent * ln (base))
else
InvalidArgument;
end;
function intpower(base : float;const exponent : Integer) : float;
var
i : longint;
begin
if (base = 0.0) and (exponent = 0) then
result:=1
else
begin
i:=abs(exponent);
intpower:=1.0;
while i>0 do
begin
while (i and 1)=0 do
begin
i:=i shr 1;
base:=sqr(base);
end;
i:=i-1;
intpower:=intpower*base;
end;
if exponent<0 then
intpower:=1.0/intpower;
end;
end;
Que voulez-vous dire par définition? C'est ce qu'on appelle l'exponentiation et elle est probablement mise en œuvre en utilisant l'approche du carré et multiplier ou une variante de cela. – Thomas
La plupart des implémentations Pascal fournissent des fonctions standard pour Exp, Ln et Power. Par exemple: http://www.freepascal.org/docs-html/rtl/math/power.html – paulsm4
Je cherchais comment Pascal l'a implémenté – thesentyclimate413