You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2012/07/15 23:06:33 UTC
svn commit: r1361797 -
/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java
Author: erans
Date: Sun Jul 15 21:06:33 2012
New Revision: 1361797
URL: http://svn.apache.org/viewvc?rev=1361797&view=rev
Log:
Moved variable declarations closer to their point of use.
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java?rev=1361797&r1=1361796&r2=1361797&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/LaguerreSolver.java Sun Jul 15 21:06:33 2012
@@ -262,15 +262,15 @@ public class LaguerreSolver extends Abst
throw new NoDataException(LocalizedFormats.POLYNOMIAL);
}
// Coefficients for deflated polynomial.
- Complex c[] = new Complex[n + 1];
+ final Complex c[] = new Complex[n + 1];
for (int i = 0; i <= n; i++) {
c[i] = coefficients[i];
}
// Solve individual roots successively.
- Complex root[] = new Complex[n];
+ final Complex root[] = new Complex[n];
for (int i = 0; i < n; i++) {
- Complex subarray[] = new Complex[n - i + 1];
+ final Complex subarray[] = new Complex[n - i + 1];
System.arraycopy(c, 0, subarray, 0, subarray.length);
root[i] = solve(subarray, initial);
// Polynomial deflation using synthetic division.
@@ -313,26 +313,18 @@ public class LaguerreSolver extends Abst
final double relativeAccuracy = getRelativeAccuracy();
final double functionValueAccuracy = getFunctionValueAccuracy();
- Complex N = new Complex(n, 0.0);
- Complex N1 = new Complex(n - 1, 0.0);
+ final Complex N = new Complex(n, 0);
+ final Complex N1 = new Complex(n - 1, 0);
- Complex pv = null;
- Complex dv = null;
- Complex d2v = null;
- Complex G = null;
- Complex G2 = null;
- Complex H = null;
- Complex delta = null;
- Complex denominator = null;
Complex z = initial;
Complex oldz = new Complex(Double.POSITIVE_INFINITY,
Double.POSITIVE_INFINITY);
while (true) {
// Compute pv (polynomial value), dv (derivative value), and
// d2v (second derivative value) simultaneously.
- pv = coefficients[n];
- dv = Complex.ZERO;
- d2v = Complex.ZERO;
+ Complex pv = coefficients[n];
+ Complex dv = Complex.ZERO;
+ Complex d2v = Complex.ZERO;
for (int j = n-1; j >= 0; j--) {
d2v = dv.add(z.multiply(d2v));
dv = pv.add(z.multiply(dv));
@@ -341,8 +333,8 @@ public class LaguerreSolver extends Abst
d2v = d2v.multiply(new Complex(2.0, 0.0));
// check for convergence
- double tolerance = FastMath.max(relativeAccuracy * z.abs(),
- absoluteAccuracy);
+ final double tolerance = FastMath.max(relativeAccuracy * z.abs(),
+ absoluteAccuracy);
if ((z.subtract(oldz)).abs() <= tolerance) {
return z;
}
@@ -351,15 +343,15 @@ public class LaguerreSolver extends Abst
}
// now pv != 0, calculate the new approximation
- G = dv.divide(pv);
- G2 = G.multiply(G);
- H = G2.subtract(d2v.divide(pv));
- delta = N1.multiply((N.multiply(H)).subtract(G2));
+ final Complex G = dv.divide(pv);
+ final Complex G2 = G.multiply(G);
+ final Complex H = G2.subtract(d2v.divide(pv));
+ final Complex delta = N1.multiply((N.multiply(H)).subtract(G2));
// choose a denominator larger in magnitude
- Complex deltaSqrt = delta.sqrt();
- Complex dplus = G.add(deltaSqrt);
- Complex dminus = G.subtract(deltaSqrt);
- denominator = dplus.abs() > dminus.abs() ? dplus : dminus;
+ final Complex deltaSqrt = delta.sqrt();
+ final Complex dplus = G.add(deltaSqrt);
+ final Complex dminus = G.subtract(deltaSqrt);
+ final Complex denominator = dplus.abs() > dminus.abs() ? dplus : dminus;
// Perturb z if denominator is zero, for instance,
// p(x) = x^3 + 1, z = 0.
if (denominator.equals(new Complex(0.0, 0.0))) {