Guest User

Untitled

a guest
Mar 17th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.21 KB | None | 0 0
  1. public static BigDecimal getPI(int accuracy) {
  2.  
  3.         BigDecimal sum = BigDecimal.valueOf(0);
  4.         BigDecimal i = BigDecimal.valueOf(0);
  5.  
  6.         while (i.intValue() <= accuracy) {
  7.  
  8.             sum = sum.add(factorial(i.multiply(BigDecimal.valueOf(6)))
  9.                     .multiply(i.multiply(BigDecimal.valueOf(545140134)).add(BigDecimal.valueOf(13591409)))
  10.                     .multiply((BigDecimal.valueOf(-1).pow(i.intValue())))
  11.                     .divide(factorial(i.multiply(BigDecimal.valueOf(3)).multiply(factorial(i).pow(3)
  12.                             .multiply(BigDecimal.valueOf(640320).pow(3).pow(i.add(BigDecimal.valueOf(0.5)).intValue()))))));
  13.  
  14.             i = i.add(BigDecimal.ONE);
  15.         }
  16.  
  17.         return BigDecimal.valueOf(1).divide(sum.multiply(BigDecimal.valueOf(12)));
  18.  
  19.     }
  20.  
  21.  
  22.     public static BigDecimal factorial(BigDecimal n) {
  23.         BigDecimal inc = new BigDecimal("1");
  24.         BigDecimal fact = new BigDecimal("1");
  25.         BigDecimal c = new BigDecimal("1");
  26.  
  27.         for (; c.intValue() <= n.intValue(); ) {
  28.             fact = fact.multiply(inc);
  29.             inc = inc.add(BigDecimal.ONE);
  30.             c = c.add(BigDecimal.ONE);
  31.         }
  32.  
  33.         return fact;
  34.     }
Advertisement
Add Comment
Please, Sign In to add comment