package example; import java.math.BigInteger; /** * Compute PI just to have something to do, * from http://rosettacode.org/wiki/Pi#Java */ public class Pi { private static final BigInteger TWO = BigInteger.valueOf(2); private static final BigInteger THREE = BigInteger.valueOf(3); private static final BigInteger FOUR = BigInteger.valueOf(4); private static final BigInteger SEVEN = BigInteger.valueOf(7); private BigInteger q = BigInteger.ONE; private BigInteger r = BigInteger.ZERO; private BigInteger t = BigInteger.ONE; private BigInteger k = BigInteger.ONE; private BigInteger n = BigInteger.valueOf(3); private BigInteger l = BigInteger.valueOf(3); /** * Start. */ public void calcPiDigits() { BigInteger nn, nr; boolean first = true; while (true) { if (FOUR.multiply(q).add(r).subtract(t).compareTo(n.multiply(t)) == -1) { System.out.print(n); if (first) { System.out.print("."); first = false; } nr = BigInteger.TEN.multiply(r.subtract(n.multiply(t))); n = BigInteger.TEN.multiply(THREE.multiply(q).add(r)).divide(t) .subtract(BigInteger.TEN.multiply(n)); q = q.multiply(BigInteger.TEN); r = nr; System.out.flush(); } else { nr = TWO.multiply(q).add(r).multiply(l); nn = q.multiply(SEVEN.multiply(k)).add(TWO).add(r.multiply(l)) .divide(t.multiply(l)); q = q.multiply(k); t = t.multiply(l); l = l.add(TWO); k = k.add(BigInteger.ONE); n = nn; r = nr; } } } }