Index: lutinmatrix/src/java/org/codelutin/math/matrix/AbstractMatrixND.java diff -u lutinmatrix/src/java/org/codelutin/math/matrix/AbstractMatrixND.java:1.17 lutinmatrix/src/java/org/codelutin/math/matrix/AbstractMatrixND.java:1.18 --- lutinmatrix/src/java/org/codelutin/math/matrix/AbstractMatrixND.java:1.17 Thu Sep 7 09:56:22 2006 +++ lutinmatrix/src/java/org/codelutin/math/matrix/AbstractMatrixND.java Mon Jan 15 13:42:39 2007 @@ -23,9 +23,9 @@ * Created: 29 oct. 2004 * * @author Benjamin Poussin - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ * - * Mise a jour: $Date: 2006/09/07 09:56:22 $ + * Mise a jour: $Date: 2007/01/15 13:42:39 $ * par : $Author: bpoussin $ */ @@ -33,7 +33,6 @@ import java.io.IOException; import java.io.Reader; -import java.io.StreamTokenizer; import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; @@ -42,11 +41,17 @@ import java.util.regex.Pattern; import org.apache.commons.collections.primitives.ArrayIntList; +import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.codelutin.util.ArrayUtil; public abstract class AbstractMatrixND implements MatrixND { // AbstractMatrixND + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(AbstractMatrixND.class); + abstract public MatrixIterator iterator(); abstract public double getValue(int [] coordinates); abstract public void setValue(int [] coordinates, double d); @@ -269,23 +274,46 @@ } public boolean equals(MatrixND mat){ - boolean result = + boolean result = true; // les dimensions doivent-être identique - MatrixHelper.sameDimension(getDim(), mat.getDim()) && + result = result && MatrixHelper.sameDimension(getDim(), mat.getDim()); // le nom doit être le même - getName().equals(mat.getName()); + result = result && getName().equals(mat.getName()); // toutes les données doivent être identique for(MatrixIterator i=mat.iterator(); result && i.next();){ - result = i.getValue() == getValue(i.getCoordinates()); + double v1 = i.getValue(); + double v2 = getValue(i.getCoordinates()); + result = v1 == v2; + if (log.isDebugEnabled()) { + log.debug("v1("+v1+")==v2("+v2+ ")="+result); + } +// System.out.println("v1("+v1+")==v2("+v2+ ")="+result); } // les sémantiques doivent-être identique for(int i=0; result && i