Package eas.math.matrix.bigDecimal.jama

Source Code of eas.math.matrix.bigDecimal.jama.Maths

package eas.math.matrix.bigDecimal.jama;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.MathContext;

import eas.math.matrix.bigDecimal.MatrixBigDecimal;

public class Maths implements Serializable {

    private static final long serialVersionUID = -9098270767955609067L;

/** sqrt(a^2 + b^2) without under/overflow. **/

   public static BigDecimal hypot(BigDecimal a, BigDecimal b, int roundingMode) {
       BigDecimal r;
      if (a.abs().compareTo(b.abs()) > 0) {
          int scale = MatrixBigDecimal.GLOBAL_SCALE;
         r = b.divide(a, scale);
         r = a.abs().multiply(sqrt(r.multiply(r, new MathContext(scale)).add(BigDecimal.ONE), scale, roundingMode), new MathContext(scale));
      } else if (b.compareTo(BigDecimal.ZERO) != 0) {
          int scale = MatrixBigDecimal.GLOBAL_SCALE;
         r = a.divide(b, scale);
         r = b.abs().multiply(sqrt(r.multiply(r, new MathContext(scale)).add(BigDecimal.ONE), scale, roundingMode), new MathContext(scale));
      } else {
         r = BigDecimal.ZERO;
      }
      return r;
   }
  
   public static final BigDecimal TWO = new BigDecimal("2");
  
   public static BigDecimal sqrt(BigDecimal a, final int scale, final int roundingMode) {
       BigDecimal x0 = new BigDecimal("0");
       BigDecimal x1 = new BigDecimal(Math.sqrt(a.doubleValue()));
       while (!x0.equals(x1)) {
           x0 = x1;
           x1 = a.divide(x0, scale, roundingMode);
           x1 = x1.add(x0);
           x1 = x1.divide(TWO, scale, roundingMode);

       }
       return x1;
   }

   public static void printMatrix(JamaMatrixBigDecimal mat) {
       for (int i = 0; i < mat.getColumnDimension(); i++) {
           for (int j = 0; j < mat.getRowDimension(); j++) {
               System.out.print(" | " + mat.get(j, i));
           }
           System.out.println();
       }
   }

   public static void setScale(JamaMatrixBigDecimal mat) {
       for (int i = 0; i < mat.getColumnDimension(); i++) {
           for (int j = 0; j < mat.getRowDimension(); j++) {
               mat.get(j, i).setScale(100);
           }
       }
   }
}
TOP

Related Classes of eas.math.matrix.bigDecimal.jama.Maths

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.