// test_Big_math.java generate Pi, e to 100 fraction bits (error<1/2^100) // and test a few other functiond sqrt, sin, cos, atan, exp // compile and run javac -cp . Big_math.java // javac -cp . test_Big_math.java // java -cp . test_Big_math import java.math.BigDecimal; public class test_Big_math { Big_math B = new Big_math(); // B. for Big_math functions BigDecimal natural_e; BigDecimal pi; BigDecimal epsilon; BigDecimal tmp; BigDecimal two = new BigDecimal(2.0); BigDecimal half = new BigDecimal("0.5"); int prec = 100; // digits // precision in bits = about 3.32 precision in digits public test_Big_math() // constructor { System.out.println("test_Big_math running"); natural_e = B.naturalE(prec); // precision System.out.println("natural_e="+natural_e); epsilon = half.pow(prec); System.out.println("epsilon="+epsilon); pi = B.Npi(); System.out.println("pi="+pi); System.out.println("test exp"); BigDecimal e1 = B.exp(new BigDecimal("1")); BigDecimal e2 = B.exp(new BigDecimal("2")); BigDecimal diff = e1.subtract(B.sqrt(e2)); System.out.println(" e="+natural_e); System.out.println("exp(1)="+e1); System.out.println(" err e-exp(1)="+natural_e.subtract(e1)); System.out.println("exp(2)="+e2); System.out.println("exp(1)-sqrt(exp(2))="+diff); System.out.println("exp(.001)="+B.exp(new BigDecimal("0.001"))); System.out.println("exp(100)="+B.exp(new BigDecimal("100"))); System.out.println(); // test atan System.out.println("test atan, compute Pi"); BigDecimal a1 = B.atan(new BigDecimal("1")); BigDecimal ep1 = B.epsilon.add(new BigDecimal("1")); BigDecimal b1 = (new BigDecimal("2")).subtract((B.sqrt( new BigDecimal("3")))); b1 = b1.setScale(prec,BigDecimal.ROUND_DOWN); BigDecimal a2 = B.atan(ep1.divide(B.sqrt(new BigDecimal("3")),BigDecimal.ROUND_DOWN)); BigDecimal a3 = B.atan(b1); BigDecimal b2 = ((new BigDecimal("2")).multiply(B.sqrt(b1))).subtract( new BigDecimal("1")); b2 = b2.setScale(prec,BigDecimal.ROUND_DOWN); b2 = b2.divide(b1, BigDecimal.ROUND_DOWN); BigDecimal a4 = B.atan(b2); System.out.println("atan(1)="+a1); System.out.println("atan(1/sqrt(3))="+a2); System.out.println("atan(2-sqrt(3))="+a3); System.out.println("atan(b2)="+a4); System.out.println("Pi 4*a1="+a1.multiply(new BigDecimal("4"))); System.out.println("Pi 6*a2="+a2.multiply(new BigDecimal("6"))); System.out.println("Pi 12*a3="+a3.multiply(new BigDecimal("12"))); BigDecimal pi4 = a4.multiply(new BigDecimal("24")); System.out.println("Pi 24*a4="+pi4); System.out.println(" err npi-Pi24="+pi.subtract(pi4)); System.out.println(); // test sin System.out.println("test sin"); BigDecimal pid2 = pi.divide(new BigDecimal("2")); BigDecimal sin50 = B.sin((pi.multiply(new BigDecimal("50")).add(pid2))); System.out.println("sin(50pi+pi/2)= 1 ="+sin50); BigDecimal sin50n = B.sin((pi.multiply(new BigDecimal("-50")).subtract( pid2))); System.out.println("sin(-50pi-pi/2)= -1 ="+sin50n); System.out.println(" "); System.out.println("end test_Big_math"); } public static void main (String[] args) { new test_Big_math(); } } // end test_Big_math.java