MachineEpsilon.java

/*
 * Created on 2004/07/01
 *
 * $Id: MachineEpsilon.java,v 1.3 2005/08/20 15:05:53 koga Exp $
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.cga.number;

/**
 * マシンイプシロンを求めます。
 * 
 * @author Hiroki
 * @version $Revision: 1.3 $. 2004/07/01
 */
public final class MachineEpsilon {

  /**
   * コンストラクタ。
   */
  private MachineEpsilon() {
    //
  }

  /**
   * double型のときのマシンイプシロンを求めます。
   * 
   * @return マシンイプシロン。
   */
  public static double getDoubleMachineEpsilon() {
    double dme = 1;
    double dtest = 1 + dme;

    while (1 != dtest) {
      dme = dme / 2;
      dtest = 1 + dme;
    }

    return dme;
  }

  //    public static void main(String[] args) {
  //        double me = MachineEpsilon.getDoubleMachineEpsilon();
  //        Matrix.setFormatLength(25);
  //        System.out.println(1.0 == 1.0 - me);
  //        Matrix A = new RealMatrix(new double[] { 1.0 });
  //        RealIntervalMatrix a = IntervalMaker.makeInterval(A);
  //        a.print();
  //    }
}