List of usage examples for java.lang ArithmeticException ArithmeticException
public ArithmeticException()
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()); }