/* * r = radius = 1 * A_Circle = r^2 * Pi = r * r * A_Square = (2*r)^2 = 4 * r * r * X_C_S = A_Circle / A_Square * Y_C_S = InCircleCount / SampleCount * X_C_Y = Y_C_S * InCircleCount / SampleCount = Pi * 1/4 <=> * Pi = 4 * InCircleCount / SampleCount */ public class Pi { private static double THRESHOLD=0.000001f; private static double root(double x){ if(x < 0) return -1.0f; double t0,t1; t0=1.0f; do{ t1=t0; t0=(t1 + x/t1)/2.0f; }while(Math.abs(t0 - t1) >= THRESHOLD); return t0; } private static float calc(int steps){ int c = 0; double x,y; for(int i = 0; i