@Honie: Deine Variante funktioniert zwar, aber sie ist sehr ungenau und erfordert bei grossem anzproben sehr viel Rechenzeit.
Hier ist eine extrem schnelle Variante nach Borwein:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, aalt: Extended;
p: array[0..5] of Extended;
i:integer;
begin
a:=sqrt(2);
b:=0;
p[0]:=2+a;
i:=0;
repeat
aalt:=a;
a := 1/2*(sqrt(aalt) + 1/sqrt(aalt));
b := sqrt(aalt)*(b+1)/(b+aalt);
p[i+1] := p[i]*b*(1+a)/(1+b);
inc(i);
until i>5;
end;
Sie ist jedoch nicht selbstkorrigierend, was aber keines Falls nötig ist, für nur 3 Stellen.
(Der Code stammt von
http://joachim.mohr.rottenburg.bei.t-online.de)