commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From celes...@apache.org
Subject svn commit: r1178073 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math/linear/ test/java/org/apache/commons/math/linear/
Date Sat, 01 Oct 2011 19:09:01 GMT
Author: celestin
Date: Sat Oct  1 19:09:00 2011
New Revision: 1178073

URL: http://svn.apache.org/viewvc?rev=1178073&view=rev
Log:
Some changes to the interface of iterative linear solvers. Replaced the confusing boolean
param inPlace in the solve() methods by two sets of methods: solve() and solveInPlace().

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/ConjugateGradient.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/IterativeLinearSolver.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/PreconditionedIterativeLinearSolver.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/ConjugateGradientTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/ConjugateGradient.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/ConjugateGradient.java?rev=1178073&r1=1178072&r2=1178073&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/ConjugateGradient.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/ConjugateGradient.java
Sat Oct  1 19:09:00 2011
@@ -61,8 +61,9 @@ import org.apache.commons.math.util.Iter
  * <dt><a id="BARR1994">Barret et al. (1994)</a></dt>
  * <dd>R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. M. Donato, J. Dongarra,
  * V. Eijkhout, R. Pozo, C. Romine and H. Van der Vorst,
- * <em>Templates for the Solution of Linear Systems: Building Blocks for
- * Iterative Methods</em>, SIAM</dd>
+ * <a href="http://www.netlib.org/linalg/html_templates/Templates.html"><em>
+ * Templates for the Solution of Linear Systems: Building Blocks for Iterative
+ * Methods</em></a>, SIAM</dd>
  * <dt><a id="STRA2002">Strakos and Tichy (2002)
  * <dt>
  * <dd>Z. Strakos and P. Tichy, <a
@@ -82,7 +83,8 @@ public class ConjugateGradient
      * The type of all events fired by this implementation of the Conjugate
      * Gradient method.
      *
-     * @version $Id$
+     * @version $Id: ConjugateGradient.java 1175404 2011-09-25 14:48:18Z
+     * celestin $
      */
     public abstract static class ConjugateGradientEvent
         extends IterativeLinearSolverEvent
@@ -95,7 +97,7 @@ public class ConjugateGradient
          * Creates a new instance of this class.
          *
          * @param source The iterative algorithm on which the event initially
-         *        occurred.
+         * occurred.
          */
         public ConjugateGradientEvent(final Object source) {
             super(source);
@@ -124,7 +126,7 @@ public class ConjugateGradient
      * @param maxIterations Maximum number of iterations.
      * @param delta &delta; parameter for the default stopping criterion.
      * @param check {@code true} if positive definiteness of both matrix and
-     *        preconditioner should be checked.
+     * preconditioner should be checked.
      */
     public ConjugateGradient(final int maxIterations, final double delta,
                              final boolean check) {
@@ -140,7 +142,7 @@ public class ConjugateGradient
      * @param manager Custom iteration manager.
      * @param delta &delta; parameter for the default stopping criterion.
      * @param check {@code true} if positive definiteness of both matrix and
-     *        preconditioner should be checked.
+     * preconditioner should be checked.
      */
     public ConjugateGradient(final IterationManager manager,
                              final double delta, final boolean check) {
@@ -161,13 +163,12 @@ public class ConjugateGradient
 
     /** {@inheritDoc} */
     @Override
-    public RealVector solve(final RealLinearOperator a,
-                            final InvertibleRealLinearOperator m,
-                            final RealVector b, final RealVector x0,
-                            final boolean inPlace)
+    public RealVector solveInPlace(final RealLinearOperator a,
+                                   final InvertibleRealLinearOperator m,
+                                   final RealVector b, final RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException, MaxCountExceededException {
-        checkParameters(a, m, b, x0, inPlace);
+        checkParameters(a, m, b, x0);
         final IterationManager manager = getIterationManager();
         // Initialization of default stopping criterion
         manager.resetIterationCount();
@@ -176,16 +177,7 @@ public class ConjugateGradient
         // p and x are constructed as copies of x0, since presumably, the type
         // of x is optimized for the calculation of the matrix-vector product
         // A.x.
-        final RealVector x;
-        if (inPlace) {
-            x = x0;
-        } else {
-            if (x0 != null) {
-                x = x0.copy();
-            } else {
-                x = new ArrayRealVector(a.getColumnDimension());
-            }
-        }
+        final RealVector x = x0;
         final RealVector p = x.copy();
         RealVector q = a.operate(p);
         manager.incrementIterationCount();

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/IterativeLinearSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/IterativeLinearSolver.java?rev=1178073&r1=1178072&r2=1178073&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/IterativeLinearSolver.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/IterativeLinearSolver.java
Sat Oct  1 19:09:00 2011
@@ -49,35 +49,36 @@ public abstract class IterativeLinearSol
      * Creates a new instance of this class, with custom iteration manager.
      *
      * @param manager Custom iteration manager.
+     * @throws NullArgumentException if {@code manager} is {@code null}.
      */
-    public IterativeLinearSolver(final IterationManager manager) {
+    public IterativeLinearSolver(final IterationManager manager)
+        throws NullArgumentException {
         MathUtils.checkNotNull(manager);
         this.manager = manager;
     }
+
     /**
      * Performs all dimension checks on the parameters of
-     * {@link #solve(RealLinearOperator, RealVector, RealVector, boolean)}, and
-     * throws an exception if one of the checks fails.
+     * {@link #solve(RealLinearOperator, RealVector, RealVector) solve} and
+     * {@link #solveInPlace(RealLinearOperator, RealVector, RealVector) solveInPlace},
+     * and throws an exception if one of the checks fails.
      *
      * @param a Linear operator A of the system.
      * @param b Right-hand side vector.
-     * @param x0 Initial guess of the solution (can be {@code null} if
-     *        {@code inPlace} is set to {@code false}).
-     * @param inPlace {@code true} if the initial guess is to be updated with
-     *        the current estimate of the solution.
+     * @param x0 Initial guess of the solution.
      * @throws NullArgumentException if one of the parameters is {@code null}.
      * @throws NonSquareLinearOperatorException if {@code a} is not square.
      * @throws DimensionMismatchException if {@code b} or {@code x0} have
-     *         dimensions inconsistent with {@code a}.
+     * dimensions inconsistent with {@code a}.
      */
     protected static void checkParameters(final RealLinearOperator a,
                                           final RealVector b,
-                                          final RealVector x0,
-                                          final boolean inPlace)
+                                          final RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException {
         MathUtils.checkNotNull(a);
         MathUtils.checkNotNull(b);
+        MathUtils.checkNotNull(x0);
         if (a.getRowDimension() != a.getColumnDimension()) {
             throw new NonSquareLinearOperatorException(a.getRowDimension(),
                                                        a.getColumnDimension());
@@ -86,10 +87,7 @@ public abstract class IterativeLinearSol
             throw new DimensionMismatchException(b.getDimension(),
                                                  a.getRowDimension());
         }
-        if (inPlace) {
-            MathUtils.checkNotNull(x0);
-        }
-        if ((x0 != null) && (x0.getDimension() != a.getColumnDimension())) {
+        if (x0.getDimension() != a.getColumnDimension()) {
             throw new DimensionMismatchException(x0.getDimension(),
                                                  a.getColumnDimension());
         }
@@ -106,28 +104,70 @@ public abstract class IterativeLinearSol
 
     /**
      * Returns an estimate of the solution to the linear system A &middot; x =
-     * b. If no initial estimate of the solution is provided, (0, &hellip;, 0)
-     * is assumed.
+     * b.
+     *
+     * @param a Linear operator A of the system.
+     * @param b Right-hand side vector.
+     * @return A new vector containing the solution.
+     * @throws NullArgumentException if one of the parameters is {@code null}.
+     * @throws NonSquareLinearOperatorException if {@code a} is not square.
+     * @throws DimensionMismatchException if {@code b} has dimensions
+     * inconsistent with {@code a}.
+     * @throws MaxCountExceededException at exhaustion of the iteration count,
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
+     */
+    public RealVector solve(RealLinearOperator a, RealVector b)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(a);
+        final RealVector x = new ArrayRealVector(a.getColumnDimension());
+        x.set(0.);
+        return solveInPlace(a, b, x);
+    }
+
+    /**
+     * Returns an estimate of the solution to the linear system A &middot; x =
+     * b.
+     *
+     * @param a Linear operator A of the system.
+     * @param b Right-hand side vector.
+     * @param x0 Initial guess of the solution.
+     * @return A new vector containing the solution.
+     * @throws NullArgumentException if one of the parameters is {@code null}.
+     * @throws NonSquareLinearOperatorException if {@code a} is not square.
+     * @throws DimensionMismatchException if {@code b} or {@code x0} have
+     * dimensions inconsistent with {@code a}.
+     * @throws MaxCountExceededException at exhaustion of the iteration count,
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
+     */
+    public RealVector solve(RealLinearOperator a, RealVector b, RealVector x0)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(x0);
+        return solveInPlace(a, b, x0.copy());
+    }
+
+    /**
+     * Returns an estimate of the solution to the linear system A &middot; x =
+     * b. The solution is computed in-place (initial guess is modified).
      *
      * @param a Linear operator A of the system.
      * @param b Right-hand side vector.
-     * @param x0 Initial guess of the solution (can be {@code null} if
-     *        {@code inPlace} is set to {@code false}).
-     * @param inPlace {@code true} if the initial guess is to be updated with
-     *        the current estimate of the solution.
-     * @return A reference to {@code x0} (shallow copy) if {@code inPlace} was
-     *         set to {@code true}. Otherwise, a new vector containing the
-     *         solution.
+     * @param x0 Initial guess of the solution.
+     * @return A reference to {@code x0} (shallow copy) updated with the
+     * solution.
      * @throws NullArgumentException if one of the parameters is {@code null}.
      * @throws NonSquareLinearOperatorException if {@code a} is not square.
      * @throws DimensionMismatchException if {@code b} or {@code x0} have
-     *         dimensions inconsistent with {@code a}.
+     * dimensions inconsistent with {@code a}.
      * @throws MaxCountExceededException at exhaustion of the iteration count,
-     *         unless a custom {@link MaxCountExceededCallback callback} has
-     *         been set at construction.
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
      */
-    public abstract RealVector solve(RealLinearOperator a, RealVector b,
-                                     RealVector x0, boolean inPlace)
+    public abstract RealVector solveInPlace(RealLinearOperator a, RealVector b,
+                                            RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException, MaxCountExceededException;
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/PreconditionedIterativeLinearSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/PreconditionedIterativeLinearSolver.java?rev=1178073&r1=1178072&r2=1178073&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/PreconditionedIterativeLinearSolver.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/PreconditionedIterativeLinearSolver.java
Sat Oct  1 19:09:00 2011
@@ -20,6 +20,7 @@ import org.apache.commons.math.exception
 import org.apache.commons.math.exception.MaxCountExceededException;
 import org.apache.commons.math.exception.NullArgumentException;
 import org.apache.commons.math.util.IterationManager;
+import org.apache.commons.math.util.MathUtils;
 
 /**
  * This abstract class defines preconditioned iterative solvers. When A is
@@ -48,41 +49,88 @@ public abstract class PreconditionedIter
      * Creates a new instance of this class, with custom iteration manager.
      *
      * @param manager Custom iteration manager.
+     * @throws NullArgumentException if {@code manager} is {@code null}.
      */
-    public PreconditionedIterativeLinearSolver(final IterationManager manager) {
+    public PreconditionedIterativeLinearSolver(final IterationManager manager)
+        throws NullArgumentException {
         super(manager);
     }
 
     /**
+     * Returns an estimate of the solution to the linear system A &middot; x =
+     * b.
+     *
+     * @param a Linear operator A of the system.
+     * @param m Preconditioner (can be {@code null}).
+     * @param b Right-hand side vector.
+     * @param x0 Initial guess of the solution.
+     * @return A new vector containing the solution.
+     * @throws NullArgumentException if one of the parameters is {@code null}.
+     * @throws NonSquareLinearOperatorException if {@code a} or {@code m} is not
+     * square.
+     * @throws DimensionMismatchException if {@code m}, {@code b} or {@code x0}
+     * have dimensions inconsistent with {@code a}.
+     * @throws MaxCountExceededException at exhaustion of the iteration count,
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
+     */
+    public RealVector solve(final RealLinearOperator a,
+                            final InvertibleRealLinearOperator m,
+                            final RealVector b, final RealVector x0)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(x0);
+        return solveInPlace(a, m, b, x0.copy());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RealVector solve(final RealLinearOperator a, final RealVector b)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(a);
+        final RealVector x = new ArrayRealVector(a.getColumnDimension());
+        x.set(0.);
+        return solveInPlace(a, null, b, x);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RealVector solve(final RealLinearOperator a, final RealVector b,
+                            final RealVector x0)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(x0);
+        return solveInPlace(a, null, b, x0.copy());
+    }
+
+    /**
      * Performs all dimension checks on the parameters of
-     * {@link #solve(RealLinearOperator, InvertibleRealLinearOperator, RealVector, RealVector,
boolean)}
+     * {@link #solve(RealLinearOperator, InvertibleRealLinearOperator, RealVector, RealVector)
solve}
+     * and
+     * {@link #solveInPlace(RealLinearOperator, InvertibleRealLinearOperator, RealVector,
RealVector) solveInPlace}
      * , and throws an exception if one of the checks fails.
      *
      * @param a Linear operator A of the system.
      * @param m Preconditioner (can be {@code null}).
      * @param b Right-hand side vector.
-     * @param x0 Initial guess of the solution (can be {@code null} if
-     *        {@code inPlace} is set to {@code false}).
-     * @param inPlace {@code true} if the initial guess is to be updated with
-     *        the current estimate of the solution.
+     * @param x0 Initial guess of the solution.
      * @throws NullArgumentException if one of the parameters is {@code null}.
      * @throws NonSquareLinearOperatorException if {@code a} or {@code m} is not
-     *         square.
-     * @throws DimensionMismatchException if {@code m}, {@code b} or {@code x}
-     *         have dimensions inconsistent with {@code a}.
+     * square.
+     * @throws DimensionMismatchException if {@code m}, {@code b} or {@code x0}
+     * have dimensions inconsistent with {@code a}.
      */
     protected static void checkParameters(final RealLinearOperator a,
                                           final InvertibleRealLinearOperator m,
                                           final RealVector b,
-                                          final RealVector x0,
-                                          final boolean inPlace)
+                                          final RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException {
-        checkParameters(a, b, x0, inPlace);
+        checkParameters(a, b, x0);
         if (m != null) {
             if (m.getColumnDimension() != m.getRowDimension()) {
-                throw new NonSquareLinearOperatorException(
-                                                           m.getColumnDimension(),
+                throw new NonSquareLinearOperatorException(m.getColumnDimension(),
                                                            m.getRowDimension());
             }
             if (m.getRowDimension() != a.getRowDimension()) {
@@ -94,42 +142,61 @@ public abstract class PreconditionedIter
 
     /**
      * Returns an estimate of the solution to the linear system A &middot; x =
-     * b. If no initial estimate of the solution is provided, (0, &hellip;, 0)
-     * is assumed.
+     * b.
      *
      * @param a Linear operator A of the system.
      * @param m Preconditioner (can be {@code null}).
      * @param b Right-hand side vector.
-     * @param x0 Initial guess of the solution (can be {@code null} if
-     *        {@code inPlace} is set to {@code false}).
-     * @param inPlace {@code true} if the initial guess is to be updated with
-     *        the current estimate of the solution.
-     * @return A reference to {@code x0} (shallow copy) if {@code update} was
-     *         set to {@code true}. Otherwise, a new vector containing the
-     *         solution.
+     * @return A new vector containing the solution.
      * @throws NullArgumentException if one of the parameters is {@code null}.
      * @throws NonSquareLinearOperatorException if {@code a} or {@code m} is not
-     *         square.
-     * @throws DimensionMismatchException if {@code m}, {@code b} or {@code x}
-     *         have dimensions inconsistent with {@code a}.
+     * square.
+     * @throws DimensionMismatchException if {@code m} or {@code b} have
+     * dimensions inconsistent with {@code a}.
      * @throws MaxCountExceededException at exhaustion of the iteration count,
-     *         unless a custom {@link MaxCountExceededCallback callback} has
-     *         been set at construction.
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
      */
-    public abstract RealVector solve(RealLinearOperator a,
-                                     InvertibleRealLinearOperator m,
-                                     RealVector b, RealVector x0,
-                                     final boolean inPlace)
+    public RealVector solve(RealLinearOperator a,
+                            InvertibleRealLinearOperator m, RealVector b)
+        throws NullArgumentException, NonSquareLinearOperatorException,
+        DimensionMismatchException, MaxCountExceededException {
+        MathUtils.checkNotNull(a);
+        final RealVector x = new ArrayRealVector(a.getColumnDimension());
+        return solveInPlace(a, m, b, x);
+    }
+
+    /**
+     * Returns an estimate of the solution to the linear system A &middot; x =
+     * b. The solution is computed in-place (initial guess is modified).
+     *
+     * @param a Linear operator A of the system.
+     * @param m Preconditioner (can be {@code null}).
+     * @param b Right-hand side vector.
+     * @param x0 Initial guess of the solution.
+     * @return A reference to {@code x0} (shallow copy) updated with the
+     * solution.
+     * @throws NullArgumentException if one of the parameters is {@code null}.
+     * @throws NonSquareLinearOperatorException if {@code a} or {@code m} is not
+     * square.
+     * @throws DimensionMismatchException if {@code m}, {@code b} or {@code x0}
+     * have dimensions inconsistent with {@code a}.
+     * @throws MaxCountExceededException at exhaustion of the iteration count,
+     * unless a custom {@link MaxCountExceededCallback callback} has been set at
+     * construction.
+     */
+    public abstract RealVector solveInPlace(RealLinearOperator a,
+                                            InvertibleRealLinearOperator m,
+                                            RealVector b, RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException, MaxCountExceededException;
 
     /** {@inheritDoc} */
     @Override
-    public RealVector solve(final RealLinearOperator a, final RealVector b,
-                            final RealVector x0, final boolean inPlace)
+    public RealVector solveInPlace(final RealLinearOperator a,
+                                   final RealVector b, final RealVector x0)
         throws NullArgumentException, NonSquareLinearOperatorException,
         DimensionMismatchException, MaxCountExceededException {
-        checkParameters(a, b, x0, inPlace);
-        return solve(a, null, b, x0, inPlace);
+        return solveInPlace(a, null, b, x0);
     }
 }

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/ConjugateGradientTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/ConjugateGradientTest.java?rev=1178073&r1=1178072&r2=1178073&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/ConjugateGradientTest.java
(original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/ConjugateGradientTest.java
Sat Oct  1 19:09:00 2011
@@ -32,7 +32,7 @@ public class ConjugateGradientTest {
         solver = new ConjugateGradient(10, 0., false);
         final ArrayRealVector b = new ArrayRealVector(a.getRowDimension());
         final ArrayRealVector x = new ArrayRealVector(a.getColumnDimension());
-        solver.solve(a, b, x, false);
+        solver.solve(a, b, x);
     }
 
     @Test(expected = DimensionMismatchException.class)
@@ -42,7 +42,7 @@ public class ConjugateGradientTest {
         solver = new ConjugateGradient(10, 0., false);
         final ArrayRealVector b = new ArrayRealVector(2);
         final ArrayRealVector x = new ArrayRealVector(3);
-        solver.solve(a, b, x, false);
+        solver.solve(a, b, x);
     }
 
     @Test(expected = DimensionMismatchException.class)
@@ -52,7 +52,7 @@ public class ConjugateGradientTest {
         solver = new ConjugateGradient(10, 0., false);
         final ArrayRealVector b = new ArrayRealVector(3);
         final ArrayRealVector x = new ArrayRealVector(2);
-        solver.solve(a, b, x, false);
+        solver.solve(a, b, x);
     }
 
     @Test(expected = NonPositiveDefiniteLinearOperatorException.class)
@@ -68,7 +68,7 @@ public class ConjugateGradientTest {
         b.setEntry(0, -1.);
         b.setEntry(1, -1.);
         final ArrayRealVector x = new ArrayRealVector(2);
-        solver.solve(a, b, x, false);
+        solver.solve(a, b, x);
     }
 
     @Test
@@ -83,7 +83,7 @@ public class ConjugateGradientTest {
         for (int j = 0; j < n; j++) {
             b.set(0.);
             b.setEntry(j, 1.);
-            final RealVector x = solver.solve(a, b, null, false);
+            final RealVector x = solver.solve(a, b);
             for (int i = 0; i < n; i++) {
                 final double actual = x.getEntry(i);
                 final double expected = ainv.getEntry(i, j);
@@ -108,7 +108,7 @@ public class ConjugateGradientTest {
             b.setEntry(j, 1.);
             final RealVector x0 = new ArrayRealVector(n);
             x0.set(1.);
-            final RealVector x = solver.solve(a, b, x0, true);
+            final RealVector x = solver.solveInPlace(a, b, x0);
             Assert.assertSame("x should be a reference to x0", x0, x);
             for (int i = 0; i < n; i++) {
                 final double actual = x.getEntry(i);
@@ -134,7 +134,7 @@ public class ConjugateGradientTest {
             b.setEntry(j, 1.);
             final RealVector x0 = new ArrayRealVector(n);
             x0.set(1.);
-            final RealVector x = solver.solve(a, b, x0, false);
+            final RealVector x = solver.solve(a, b, x0);
             Assert.assertNotSame("x should not be a reference to x0", x0, x);
             for (int i = 0; i < n; i++) {
                 final double actual = x.getEntry(i);
@@ -186,7 +186,7 @@ public class ConjugateGradientTest {
             b.set(0.);
             b.setEntry(j, 1.);
 
-            final RealVector x = solver.solve(a, b, null, false);
+            final RealVector x = solver.solve(a, b);
             final RealVector y = a.operate(x);
             for (int i = 0; i < n; i++) {
                 final double actual = b.getEntry(i) - y.getEntry(i);
@@ -228,7 +228,7 @@ public class ConjugateGradientTest {
         final PreconditionedIterativeLinearSolver solver;
         solver = new ConjugateGradient(10, 0d, false);
         final ArrayRealVector b = new ArrayRealVector(a.getRowDimension());
-        solver.solve(a, m, b, null, false);
+        solver.solve(a, m, b);
     }
 
     @Test(expected = DimensionMismatchException.class)
@@ -260,7 +260,7 @@ public class ConjugateGradientTest {
         final PreconditionedIterativeLinearSolver solver;
         solver = new ConjugateGradient(10, 0d, false);
         final ArrayRealVector b = new ArrayRealVector(a.getRowDimension());
-        solver.solve(a, m, b, null, false);
+        solver.solve(a, m, b);
     }
 
     @Test(expected = NonPositiveDefiniteLinearOperatorException.class)
@@ -304,7 +304,7 @@ public class ConjugateGradientTest {
         final ArrayRealVector b = new ArrayRealVector(2);
         b.setEntry(0, -1d);
         b.setEntry(1, -1d);
-        solver.solve(a, m, b, null, false);
+        solver.solve(a, m, b);
     }
 
     @Test
@@ -320,7 +320,7 @@ public class ConjugateGradientTest {
         for (int j = 0; j < n; j++) {
             b.set(0.);
             b.setEntry(j, 1.);
-            final RealVector x = solver.solve(a, m, b, null, false);
+            final RealVector x = solver.solve(a, m, b);
             for (int i = 0; i < n; i++) {
                 final double actual = x.getEntry(i);
                 final double expected = ainv.getEntry(i, j);
@@ -364,7 +364,7 @@ public class ConjugateGradientTest {
         for (int j = 0; j < n; j++) {
             b.set(0.);
             b.setEntry(j, 1.);
-            final RealVector x = solver.solve(a, m, b, null, false);
+            final RealVector x = solver.solve(a, m, b);
             final RealVector y = a.operate(x);
             double rnorm = 0.;
             for (int i = 0; i < n; i++) {
@@ -411,8 +411,8 @@ public class ConjugateGradientTest {
         for (int j = 0; j < 1; j++) {
             b.set(0.);
             b.setEntry(j, 1.);
-            final RealVector px = pcg.solve(a, m, b, null, false);
-            final RealVector x = cg.solve(a, b, null, false);
+            final RealVector px = pcg.solve(a, m, b);
+            final RealVector x = cg.solve(a, b);
             final int npcg = pcg.getIterationManager().getIterations();
             final int ncg = cg.getIterationManager().getIterations();
             msg = String.format(pattern, npcg, ncg);
@@ -465,7 +465,7 @@ public class ConjugateGradientTest {
         for (int j = 0; j < n; j++) {
             b.set(0.);
             b.setEntry(j, 1.);
-            solver.solve(a, b, null, false);
+            solver.solve(a, b);
             String msg = String.format("column %d (initialization)", j);
             Assert.assertEquals(msg, 1, count[0]);
             msg = String.format("column %d (iterations started)", j);



Mime
View raw message