Author: erans
Date: Fri Sep  9 15:44:57 2011
New Revision: 1167252

URL: http://svn.apache.org/viewvc?rev=1167252&view=rev
Log:
NonPositiveDefiniteMatrixException": Changed base class, and modified message so
that it is (a little) less misleading (it is closer to the actual check which 
can
only report that it detects non-definite-positiveness at some point of the
transformation).
Changed test in "CholeskyDecompositionImpl" to allow "O" for the threshold while
keeping the requirement that the element must be strictly positive.

Modified:
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/CholeskyDecompositionImpl.java
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/NonPositiveDefiniteMatrixException.java

Modified: 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java?rev=1167252&r1=1167251&r2=1167252&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java
 (original)
+++ 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java
 Fri Sep  9 15:44:57 2011
@@ -185,8 +185,8 @@ public enum LocalizedFormats implements 
     ALPHA("alpha"), /* keep */
     BETA("beta"), /* keep */
     NOT_POSITIVE_COLUMNDIMENSION("invalid column dimension: {0} (must be 
positive)"),
-    NOT_POSITIVE_DEFINITE_MATRIX("not positive definite matrix"),
-    NON_POSITIVE_DEFINITE_MATRIX("not positive definite matrix: diagonal 
element at ({1},{1}) is smaller than {2} ({0})"), /* keep */
+    NOT_POSITIVE_DEFINITE_MATRIX("not positive definite matrix"), /* keep */
+    NON_POSITIVE_DEFINITE_MATRIX("not positive definite matrix: diagonal 
element at ({1},{1}) is smaller than {2} ({0})"),
     NON_POSITIVE_DEFINITE_LINEAR_OPERATOR("non positive definite linear 
operator"), /* keep */
     NON_SELF_ADJOINT_LINEAR_OPERATOR("non self-adjoint linear operator"), /* 
keep */
     NON_SQUARE_LINEAR_OPERATOR("non square ({0}x{1}) linear operator"), /* 
keep */

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=1167252&r1=1167251&r2=1167252&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
 Fri Sep  9 15:44:57 2011
@@ -125,7 +125,7 @@ public class CholeskyDecompositionImpl i
             final double[] ltI = lTData[i];
 
             // check diagonal element
-            if (ltI[i] < absolutePositivityThreshold) {
+            if (ltI[i] <= absolutePositivityThreshold) {
                 throw new NonPositiveDefiniteMatrixException(ltI[i], i, 
absolutePositivityThreshold);
             }
 

Modified: 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/NonPositiveDefiniteMatrixException.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/NonPositiveDefiniteMatrixException.java?rev=1167252&r1=1167251&r2=1167252&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/NonPositiveDefiniteMatrixException.java
 (original)
+++ 
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/NonPositiveDefiniteMatrixException.java
 Fri Sep  9 15:44:57 2011
@@ -16,8 +16,9 @@
  */
 package org.apache.commons.math.linear;
 
-import org.apache.commons.math.exception.MathIllegalNumberException;
+import org.apache.commons.math.exception.NumberIsTooSmallException;
 import org.apache.commons.math.exception.util.LocalizedFormats;
+import org.apache.commons.math.exception.util.ExceptionContext;
 
 /**
  * Exception to be thrown when a positive definite matrix is expected.
@@ -25,7 +26,7 @@ import org.apache.commons.math.exception
  * @since 3.0
  * @version $Id$
  */
-public class NonPositiveDefiniteMatrixException extends 
MathIllegalNumberException {
+public class NonPositiveDefiniteMatrixException extends 
NumberIsTooSmallException {
     /** Serializable version Id. */
     private static final long serialVersionUID = 1641613838113738061L;
     /** Index (diagonal element). */
@@ -43,9 +44,13 @@ public class NonPositiveDefiniteMatrixEx
     public NonPositiveDefiniteMatrixException(double wrong,
                                               int index,
                                               double threshold) {
-        super(LocalizedFormats.NON_POSITIVE_DEFINITE_MATRIX, wrong, index, 
threshold);
+        super(wrong, threshold, false);
         this.index = index;
         this.threshold = threshold;
+
+        final ExceptionContext context = getContext();
+        context.addMessage(LocalizedFormats.NOT_POSITIVE_DEFINITE_MATRIX);
+        context.addMessage(LocalizedFormats.ARRAY_ELEMENT, wrong, index);
     }
 
     /**


Reply via email to