package rebelsky.util; import java.math.BigDecimal; public class MyMath { public static double sqrt(double n, double epsilon) { double approx = 1.0; double TWO = 2.0; System.out.println("Computing the square root of " + n); while (Math.abs(n - approx*approx) > epsilon) { System.out.println(" Current approximation: " + approx); approx = (approx + (n/approx)) / 2.0; } System.out.println("Final approximation: " + approx); return approx; } // sqrt(BigDecimal, BigDecimal) public static BigDecimal sqrt(BigDecimal n, BigDecimal epsilon) { BigDecimal approx = new BigDecimal(1.0); BigDecimal TWO = new BigDecimal(2.0); System.out.println("Computing the square root of " + n); while (n.subtract(approx.multiply(approx)).abs().compareTo(epsilon) > 0) { System.out.println(" Current approximation: " + approx); approx = approx.add(n.divide(approx, BigDecimal.ROUND_HALF_UP)).divide(TWO, BigDecimal.ROUND_HALF_UP); } System.out.println("Final approximation: " + approx); return approx; } // sqrt(BigDecimal, BigDecimal) }