Pi-calculator
Gepost door manu hobert op 05-09-2010 17:29.
Mijn script om pi te berekenen
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php
$start_time = microtime(true);
$digits = 100; //hoeveel digits je wilt
bcscale($digits+10); //+10 for the extra precision
$output_pi = "3.";
$pi = 0;
$k = 0;
//calculate first iteration
$a = bcdiv(1, bcpow(16,$k));
$b = bcdiv(4, (8*$k+1));
$c = bcdiv(2, (8*$k+4));
$d = bcdiv(1, (8*$k+5));
$e = bcdiv(1, (8*$k+6));
$f = bcsub($b, $c);
$g = bcsub($f, $d);
$h = bcsub($g, $e);
$i = bcmul($a, $h);
$pi = bcadd($pi, $i);
for($k = 1;$k <= $digits;$k++){
set_time_limit(60);
//calculate next iteration
$a = bcdiv(1, bcpow(16,$k));
$b = bcdiv(4, (8*$k+1));
$c = bcdiv(2, (8*$k+4));
$d = bcdiv(1, (8*$k+5));
$e = bcdiv(1, (8*$k+6));
$f = bcsub($b, $c);
$g = bcsub($f, $d);
$h = bcsub($g, $e);
$i = bcmul($a, $h);
$pi = bcadd($pi, $i);
}
echo bcadd($pi, 0, $digits);
echo "<br>";
$time = microtime(true) - $start_time;
echo "we have calculated " . $digits . " digits in " . $time . " seconds !";
?> |
wat het doet
-het berekend pi met ... getallen na de komma
-het is snel ≈ 5seconden voor 1000 getallen
-het zegt hoelang het erover gedaan heeft
Bestanden van dit script
pi.php
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php
$start_time = microtime(true);
$digits = 100; //hoeveel digits je wilt
bcscale($digits+10); //+10 for the extra precision
$output_pi = "3.";
$pi = 0;
$k = 0;
//calculate first iteration
$a = bcdiv(1, bcpow(16,$k));
$b = bcdiv(4, (8*$k+1));
$c = bcdiv(2, (8*$k+4));
$d = bcdiv(1, (8*$k+5));
$e = bcdiv(1, (8*$k+6));
$f = bcsub($b, $c);
$g = bcsub($f, $d);
$h = bcsub($g, $e);
$i = bcmul($a, $h);
$pi = bcadd($pi, $i);
for($k = 1;$k <= $digits;$k++){
set_time_limit(60);
//calculate next iteration
$a = bcdiv(1, bcpow(16,$k));
$b = bcdiv(4, (8*$k+1));
$c = bcdiv(2, (8*$k+4));
$d = bcdiv(1, (8*$k+5));
$e = bcdiv(1, (8*$k+6));
$f = bcsub($b, $c);
$g = bcsub($f, $d);
$h = bcsub($g, $e);
$i = bcmul($a, $h);
$pi = bcadd($pi, $i);
}
echo bcadd($pi, 0, $digits);
echo "<br>";
$time = microtime(true) - $start_time;
echo "we have calculated " . $digits . " digits in " . $time . " seconds !";
?> |
Commentaar
10-09-2010 13:47


