Author: celestin
Date: Mon Sep 5 03:30:22 2011
New Revision: 1165155
URL: http://svn.apache.org/viewvc?rev=1165155&view=rev
Log:
In CholeskyDecompositionImpl.Solver
- removed solve(double[]) according to JIRA MATH-653
- removed solve(ArrayRealVector) because it entails no performance gain over
the general solve(RealVector)
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java?rev=1165155&r1=1165154&r2=1165155&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java
Mon Sep 5 03:30:22 2011
@@ -196,13 +196,13 @@ public class CholeskyDecompositionImpl i
}
/** {@inheritDoc} */
- public double[] solve(double[] b) {
+ public RealVector solve(final RealVector b) {
final int m = lTData.length;
- if (b.length != m) {
- throw new DimensionMismatchException(b.length, m);
+ if (b.getDimension() != m) {
+ throw new DimensionMismatchException(b.getDimension(), m);
}
- final double[] x = b.clone();
+ final double[] x = b.getData();
// Solve LY = b
for (int j = 0; j < m; j++) {
@@ -223,54 +223,7 @@ public class CholeskyDecompositionImpl i
}
}
- return x;
- }
-
- /** {@inheritDoc} */
- public RealVector solve(RealVector b) {
- try {
- return solve((ArrayRealVector) b);
- } catch (ClassCastException cce) {
-
- final int m = lTData.length;
- if (b.getDimension() != m) {
- throw new DimensionMismatchException(b.getDimension(), m);
- }
-
- final double[] x = b.getData();
-
- // Solve LY = b
- for (int j = 0; j < m; j++) {
- final double[] lJ = lTData[j];
- x[j] /= lJ[j];
- final double xJ = x[j];
- for (int i = j + 1; i < m; i++) {
- x[i] -= xJ * lJ[i];
- }
- }
-
- // Solve LTX = Y
- for (int j = m - 1; j >= 0; j--) {
- x[j] /= lTData[j][j];
- final double xJ = x[j];
- for (int i = 0; i < j; i++) {
- x[i] -= xJ * lTData[i][j];
- }
- }
-
- return new ArrayRealVector(x, false);
- }
- }
-
- /** Solve the linear equation A × X = B.
- * <p>The A matrix is implicit here. It is </p>
- * @param b right-hand side of the equation A × X = B
- * @return a vector X such that A × X = B
- * @throws DimensionMismatchException if the matrices dimensions do
not match.
- * @throws SingularMatrixException if the decomposed matrix is
singular.
- */
- public ArrayRealVector solve(ArrayRealVector b) {
- return new ArrayRealVector(solve(b.getDataRef()), false);
+ return new ArrayRealVector(x, false);
}
/** Solve the linear equation A × X = B for matrices A.