46 lines
1.4 KiB
Java
46 lines
1.4 KiB
Java
/*
|
||
This is a Java Program to Implement Borwein Algorithm. Borwein’s algorithm is an algorithm devised by Jonathan and Peter Borwein to calculate the value of 1/π.
|
||
*/
|
||
|
||
/**
|
||
** Java Program to Implement Borwein Algorithm
|
||
**/
|
||
import java.util.Scanner;
|
||
|
||
/** Class Borwein **/
|
||
public class Borwein
|
||
{
|
||
/** compute 1/pi **/
|
||
public double getOneByPi(int k)
|
||
{
|
||
double ak = 6.0 - 4 * Math.sqrt(2);
|
||
double yk = Math.sqrt(2) - 1.0;
|
||
double ak1 ;
|
||
double yk1 ;
|
||
for (int i = 0; i < k; i++)
|
||
{
|
||
yk1 = (1 - Math.pow((1 - yk * yk * yk * yk),(0.25)))/(1 + Math.pow((1 - yk * yk * yk * yk),(0.25)));
|
||
ak1 = ak * Math.pow((1 + yk1), 4) - Math.pow(2, 2 * i + 3) * yk1 * (1 + yk1 + yk1 * yk1);
|
||
yk = yk1;
|
||
ak = ak1;
|
||
}
|
||
return ak;
|
||
}
|
||
/** Main function **/
|
||
public static void main (String[] args)
|
||
{
|
||
Scanner scan = new Scanner(System.in);
|
||
System.out.println("Borwein 1/Pi Algorithm Test\n");
|
||
/** Make an object of Borwein class **/
|
||
Borwein b = new Borwein();
|
||
System.out.println("Enter number of iterations ");
|
||
int k = scan.nextInt();
|
||
System.out.println("\nValue of 1/pi : "+ b.getOneByPi(k));
|
||
}
|
||
}
|
||
|
||
/*
|
||
Enter number of iterations
|
||
5
|
||
|
||
Value of 1/pi : 0.31830988618379075 |