Added a test showing the limitation of sparse matrices implementation.

JIRA:MATH-870.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570209 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Luc Maisonobe 2014-02-20 14:52:13 +00:00
parent fe0f518f50
commit 4332119866
1 changed files with 21 additions and 1 deletions

View File

@ -17,6 +17,7 @@
package org.apache.commons.math3.linear;
import org.apache.commons.math3.exception.NumberIsTooLargeException;
import org.junit.Assert;
import org.junit.Test;
public final class OpenMapRealMatrixTest {
@ -26,4 +27,23 @@ public final class OpenMapRealMatrixTest {
new OpenMapRealMatrix(3, Integer.MAX_VALUE);
}
}
@Test
public void testMath870() {
// Caveat: This implementation assumes that, for any {@code x},
// the equality {@code x * 0d == 0d} holds. But it is is not true for
// {@code NaN}. Moreover, zero entries will lose their sign.
// Some operations (that involve {@code NaN} and/or infinities) may
// thus give incorrect results.
OpenMapRealMatrix a = new OpenMapRealMatrix(3, 3);
OpenMapRealMatrix x = new OpenMapRealMatrix(3, 1);
x.setEntry(0, 0, Double.NaN);
x.setEntry(2, 0, Double.NEGATIVE_INFINITY);
OpenMapRealMatrix b = a.multiply(x);
for (int i = 0; i < b.getRowDimension(); ++i) {
for (int j = 0; j < b.getColumnDimension(); ++j) {
// NaNs and infinities have disappeared, this is a limitation of our implementation
Assert.assertEquals(0.0, b.getEntry(i, j), 1.0e-20);
}
}
}
}