Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package testbench;
- import java.math.BigDecimal;
- import java.math.BigInteger;
- import java.math.MathContext;
- import java.util.Random;
- import Bench.IBenchmark;
- class Dummy {
- public void m() {
- }
- }
- public class TestCPUDigitsOfPi implements IBenchmark {
- protected int array[];
- protected int n;
- private boolean running;
- BigDecimal a = new BigDecimal(1.0);
- BigDecimal b = new BigDecimal(1.0 / (2^(1/2)));
- BigDecimal t = new BigDecimal(1/4.0);
- BigDecimal p = new BigDecimal(1.0);
- public void initialize(Object ...params) {
- this.running = true; //set running
- Random random = new Random();
- this.n = (Integer) params[0];
- this.array = new int[n];
- for(int i = 0; i < n; i++)
- array[i] = random.nextInt(1000);
- }
- private void computePi3() {
- }
- private void computePi2() {
- }
- public static int log2(int x)
- {
- return (int)(Math.log(x) / Math.log(2));
- }
- BigDecimal pi = new BigDecimal("0");
- BigDecimal a1;
- MathContext mc = new MathContext(100);
- MathContext power = new MathContext(2);
- private BigDecimal computePi1(int n) // numar de cifre corecte in pi
- {
- double i = 0;
- System.out.println(log2(n));
- for(i = 0; i <= n; i++)//while(i <= n )//log2(n)
- {
- a1 = (a.add(b, mc));
- a1 = a1.divide(new BigDecimal(2.0), mc); //inainte avea mc aici
- b = (a.multiply(b, mc));
- b = b.sqrt(mc);
- t = t.subtract(p.multiply((a.subtract(a1).pow(2, mc)), mc));
- p = p.multiply(new BigDecimal(2.0), mc);
- //a = a1;
- }
- pi = ((a1.add(b, mc)).pow(2, mc)).divide(t.multiply(new BigDecimal(4.0), mc), mc);
- return pi;
- }
- public void run(Object[] ... param) {
- }
- @Override
- public void clean() {
- }
- @Override
- public void cancel() {
- this.running = false; //clear running
- }
- @Override
- public void run(Object... param) {
- int option = (Integer)(param[0]);
- switch(option)
- {
- case 1:
- BigDecimal pi = new BigDecimal(1.0);
- pi = computePi1((Integer)(param[1])); //al doilea argument
- System.out.println(pi);
- break;
- case 2:
- computePi2();
- break;
- case 3:
- computePi3();
- break;
- default:
- throw new IllegalArgumentException("Invalid option, press 1 - 3");
- }
- }
- @Override
- public void warmup() {
- for (int i = 0; i < 100000; i++) {
- Dummy dummy = new Dummy();
- dummy.m();
- }
- }
- @Override
- public void run() {
- // TODO Auto-generated method stub
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement