hmm....prinzipiell hat Jelly ja recht
Aber ich konnte es natürlich nicht lassen
Delphi-Quellcode:
function CalculatePi(Raster: Int64): Extended;
var i: Integer;
Upper, Lower, T, RQuad: Int64;
E: Currency; //Currency...selbe genauigkeit, 2 Byte weniger...die Nachkommastellen interessieren hier eh nicht
begin
Upper:=0; Lower:=0;
RQuad:=Raster*Raster; //Einmal Quadrieren reicht
for i:=0 to Raster-1 do
begin
T:=i+1; // Wenns Integer bleibt gibts nen Overflow
E:=Sqrt(RQuad - T*T);
Inc(Upper,Ceil(E)); //Max und Min zählen
Inc(Lower,Floor(E));
end;
Result:=2*(Upper+Lower)/RQuad; //Aus Durchschnitt PI berechnen
end;
relevante rechenzeiten...
die gibts erst ab eine Rastergröße von ca. 1.000.000 (Athlon 2600+)
Übersicht:
Delphi-Quellcode:
Raster Millisek Genauigkeit(Stellen)
1000 0 2
10000 2 4
100000 21 5
1000000 214 6
10000000 2225 7
100000000 22681 8
gemessen mit QueryPerformanceCounter....
Sinnlos...aber es geht...