Pi: Difference between revisions
Content added Content deleted
(→{{header|J}}: Use alternative (non-reserved) letter as variable name & add whitespace) |
No edit summary |
||
Line 4,480: | Line 4,480: | ||
3.14159265358979 |
3.14159265358979 |
||
</lang> |
</lang> |
||
=={{header|Prolog}}== |
|||
Using coroutine with freeze/2 predicate: |
|||
<lang Prolog> |
|||
pi_spigot :- |
|||
pi(X), |
|||
forall(member(Y, X), write(Y)). |
|||
pi(OUT) :- |
|||
pi(1, 180, 60, 2, OUT). |
|||
pi(Q, R, T, I, OUT) :- |
|||
freeze(OUT, |
|||
( OUT = [Digit | OUT_] |
|||
-> U is 3 * (3 * I + 1) * (3 * I + 2), |
|||
Y is (Q * (27 * I - 12) + 5 * R) // (5 * T), |
|||
Digit is Y, |
|||
Q2 is 10 * Q * I * (2 * I - 1), |
|||
R2 is 10 * U * (Q * (5 * I - 2) + R - Y * T), |
|||
T2 is T * U, |
|||
I2 is I + 1, |
|||
pi(Q2, R2, T2, I2, OUT_) |
|||
; true)).</lang> |
|||
=={{header|PureBasic}}== |
=={{header|PureBasic}}== |