Example usage for java.lang ArithmeticException ArithmeticException

List of usage examples for java.lang ArithmeticException ArithmeticException

Introduction

In this page you can find the example usage for java.lang ArithmeticException ArithmeticException.

Prototype

public ArithmeticException() 

Source Link

Document

Constructs an ArithmeticException with no detail message.

Usage

From source file:org.cirdles.ludwig.isoplot3.Pub.java

/**
 * This method combines Ludwig's Age7Corr and AgeEr7Corr.
 *
 * Ludwig specifies Age7Corr: Age from uncorrected Tera-Wasserburg ratios,
assuming the specified common-Pb 207/206.
        //from   w ww  .  ja v  a  2s. com
Ludwig specifies AgeEr7Corr: Calculation of 207-corrected age8Corr error.
 *
 * @param totPb6U8
 * @param totPb6U8err
 * @param totPb76
 * @param totPb76err
 * @param commPb76
 * @param lambda235
 * @param lambda238
 * @param uRatio
 * @return double [2] containing age7corrected, age7correctedErr
 */
public static double[] age7corrWithErr(double totPb6U8, double totPb6U8err, double totPb76, double totPb76err,
        double commPb76, double lambda235, double lambda238, double uRatio) throws ArithmeticException {

    //commPb76 = sComm0_76;
    double commPb76err = 0.0;

    int iterationMax = 999;

    double totPb7U5 = totPb76 * uRatio * totPb6U8;
    double t = 0.0;
    double toler = 0.001;
    double delta = 0.0;
    double t1 = 1000.0e6;

    // Solve using Newton's method, using 1000 Ma as trial age8Corr.
    double e5;
    double e8;

    int iterations = 0;
    do {
        iterations++;

        t = t1;

        e5 = lambda235 * t;
        if (Math.abs(e5) > MAXEXP) {
            throw new ArithmeticException();
        }
        e8 = Math.exp(lambda238 * t);
        e5 = Math.exp(e5);
        double ee8 = e8 - 1.0;
        double ee5 = e5 - 1.0;

        double f = uRatio * commPb76 * (totPb6U8 - ee8) - totPb7U5 + ee5;
        double deriv = lambda235 * e5 - uRatio * commPb76 * lambda238 * e8;
        if (deriv == 0.0) {
            throw new ArithmeticException();
        }

        delta = -f / deriv;
        t1 = t + delta;

    } while ((Math.abs(delta) >= toler) && (iterations < iterationMax));

    // calculate error
    double totPb7U5var = uRatio * uRatio
            * (Math.pow(totPb6U8 * totPb76err, 2) + Math.pow(totPb76 * totPb6U8err, 2));
    e8 = Math.exp(lambda238 * t);
    e5 = Math.exp(lambda235 * t);
    double ee8 = e8 - 1.0;

    double denom = Math.pow(uRatio * commPb76 * lambda238 * e8 - lambda235 * e5, 2);
    double numer1 = Math.pow(uRatio * (totPb6U8 - ee8) * commPb76err, 2);
    double numer2 = uRatio * uRatio * commPb76 * (commPb76 - 2.0 * totPb76) * totPb6U8err * totPb6U8err;
    double numer3 = totPb7U5var;
    double numer = numer1 + numer2 + numer3;

    return new double[] { t, Math.sqrt(numer / denom) };
}

From source file:ffx.numerics.MultipoleTensor.java

public void setR_QI(double r[], double lambdaFunction) {
    x = 0.0;/*from  ww  w.  j  a v a2 s  . c  o m*/
    y = 0.0;
    double zl = r[2] + lambdaFunction;
    r2 = r[0] * r[0] + r[1] * r[1] + zl * zl;
    if (r2 == 0.0) {
        throw new ArithmeticException();
    }
    z = sqrt(r2);
    R = z;
    setQIRotationMatrix(r[0], r[1], r[2] + lambdaFunction);
}

From source file:org.cirdles.ludwig.isoplot3.Pub.java

/**
 * This method combines Ludwig's Age8Corr and AgeEr8Corr.
 *
 * Ludwig specifies Age8Corr: Age from uncorrected Tera-Wasserburg ratios,
assuming the specified common-Pb 207/206.
        /* www . j ava 2 s.c om*/
Ludwig specifies AgeEr8Corr: Error in 208-corrected age8Corr (input-ratio
errors are absolute).
 *
 * @param totPb6U8 double
 * @param totPb6U8err double
 * @param totPb8Th2 double
 * @param totPb8Th2err double
 * @param th2U8 double
 * @param th2U8err double
 * @param sComm0_86
 * @param lambda232
 * @param lambda238
 * @return double [2] containing age8corrected, age8correctedErr
 */
public static double[] age8corrWithErr(double totPb6U8, double totPb6U8err, double totPb8Th2,
        double totPb8Th2err, double th2U8, double th2U8err, double sComm0_86, double lambda232,
        double lambda238) throws ArithmeticException {

    double commPb68 = 1.0 / sComm0_86;
    double commPb68err = 0.0;

    int iterationMax = 999;

    double t = 0.0;
    double toler = 0.001;
    double delta = 0.0;
    double t1 = 1000.0e6;

    // Solve using Newton's method, using 1000 Ma as trial age8Corr.
    double e2;
    double e8;

    int iterations = 0;
    do {
        iterations++;

        t = t1;

        e8 = lambda238 * t;
        if (Math.abs(e8) > MAXEXP) {
            throw new ArithmeticException();
        }
        e8 = Math.exp(e8);
        e2 = Math.exp(lambda232 * t);

        double f = totPb6U8 - e8 + 1.0 - th2U8 * commPb68 * (totPb8Th2 - e2 + 1);
        double deriv = th2U8 * commPb68 * lambda232 * e2 - lambda238 * e8;
        if (deriv == 0.0) {
            throw new ArithmeticException();
        }

        delta = -f / deriv;
        t1 = t + delta;

    } while ((Math.abs(delta) >= toler) && (iterations < iterationMax));

    double age8Corr = t1;

    // calculate error
    double g = totPb8Th2;
    double sigmaG = totPb8Th2err;
    double h = th2U8;
    double sigmaH = th2U8err;
    // July 2018 Simon dscovered that Ludwig zeroes this error - th2U8err;
    sigmaH = 0.0;
    double sigmaA = totPb6U8err;
    double psiI = commPb68;
    double sigmaPsiI = commPb68err;

    e2 = Math.exp(lambda232 * age8Corr);
    e8 = Math.exp(lambda238 * age8Corr);

    double p = g + 1.0 - e2;

    t1 = Math.pow(h * sigmaG, 2);
    double t2 = Math.pow(p * sigmaH, 2);
    double t3 = Math.pow(h * p * sigmaPsiI / psiI, 2);
    double k = lambda238 * e8 - h * psiI * lambda232 * e2;

    double numer = Math.pow(sigmaA, 2) + Math.pow(psiI, 2) * (t1 + t2 + t3);
    double denom = k * k;

    double ageEr8Corr = Math.sqrt(numer / denom);

    return new double[] { age8Corr, ageEr8Corr };
}

From source file:ffx.numerics.MultipoleTensor.java

private void nanWarning(double energy, double[] r, double[] Qi, double[] Qk, double[] Fi, double[] Ti,
        double[] Tk) {
    StringBuilder sb = new StringBuilder();
    if (Double.isInfinite(energy)) {
        sb.append(format("DotK infinite: \n"));
    } else if (Double.isNaN(energy)) {
        sb.append(format("DotK was NaN:  \n"));
    }/*w w  w  .java 2 s.co m*/
    sb.append(format(" r:  %s\n Qi: %s\n Qk: %s\n Fi: %s\n Ti: %s\n Tk: %s\n", formArr(r), formArr(Qi),
            formArr(Qk), formArr(Fi), formArr(Ti), formArr(Tk)));
    double total = qk * E000;
    double total2 = qxyi * E110;
    //        sb.append(format("DotK components:"
    //                + "\n (1) %.4f %.4f %.4f %.4f %.4f\n (2) %.4f %.4f %.4f %.4f %.4f"
    //                + "\n (3) %.4f %.4f %.4f %.4f %.4f\n (4) %.4f %.4f %.4f %.4f %.4f"
    //                + "\n (5) %.4f %.4f %.4f",
    //                E000, E100, E010, E001, E200,
    //                E020, E002, E110, E101, E011,
    //                  qi,  dxi,  dyi,  dzi, qxxi,
    //                qyyi, qzzi, qxyi, qxzi, qyzi,
    //                  qk,  dxk,  dyk,  dzk, qxxk,
    //                qyyk, qzzk, qxyi, qxzk, qyzk,
    //                total, total2, total + 2.0*total2));
    double[] Exxx = new double[] { E000, E100, E010, E001, E200, E020, E002, E110, E010, E001 };
    double[] mpoleI = new double[] { qi, dxi, dyi, dzi, qxxi, qyyi, qzzi, qxyi, qxzi, qyzi };
    double[] mpoleK = new double[] { qk, dxk, dyk, dzk, qxxk, qyyk, qzzk, qxyk, qxzk, qyzk };
    sb.append(format("DotK components:\n Exxx:   %s\n mpoleI: %s\n mpoleK: %s", formArr(Exxx), formArr(mpoleI),
            formArr(mpoleK)));
    (new ArithmeticException()).printStackTrace();
    logger.warning(sb.toString());
}