Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static BigDecimal getPI(int accuracy) {
- BigDecimal sum = BigDecimal.valueOf(0);
- BigDecimal i = BigDecimal.valueOf(0);
- while (i.intValue() <= accuracy) {
- sum = sum.add(factorial(i.multiply(BigDecimal.valueOf(6)))
- .multiply(i.multiply(BigDecimal.valueOf(545140134)).add(BigDecimal.valueOf(13591409)))
- .multiply((BigDecimal.valueOf(-1).pow(i.intValue())))
- .divide(factorial(i.multiply(BigDecimal.valueOf(3)).multiply(factorial(i).pow(3)
- .multiply(BigDecimal.valueOf(640320).pow(3).pow(i.add(BigDecimal.valueOf(0.5)).intValue()))))));
- i = i.add(BigDecimal.ONE);
- }
- return BigDecimal.valueOf(1).divide(sum.multiply(BigDecimal.valueOf(12)));
- }
- public static BigDecimal factorial(BigDecimal n) {
- BigDecimal inc = new BigDecimal("1");
- BigDecimal fact = new BigDecimal("1");
- BigDecimal c = new BigDecimal("1");
- for (; c.intValue() <= n.intValue(); ) {
- fact = fact.multiply(inc);
- inc = inc.add(BigDecimal.ONE);
- c = c.add(BigDecimal.ONE);
- }
- return fact;
- }
Advertisement
Add Comment
Please, Sign In to add comment