Pi: Difference between revisions

627 bytes added ,  2 years ago
no edit summary
(→‎{{header|J}}: Use alternative (non-reserved) letter as variable name & add whitespace)
No edit summary
Line 4,480:
3.14159265358979
</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}}==
Anonymous user