You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/02/15 18:49:25 UTC

[2/4] incubator-systemml git commit: [SYSTEMML-1265] Fix robustness quantile/iqm check for integer weights

[SYSTEMML-1265] Fix robustness quantile/iqm check for integer weights 

Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/12d79c54
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/12d79c54
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/12d79c54

Branch: refs/heads/master
Commit: 12d79c5481838fbf31d2ec3a86c3b9c4c5af1265
Parents: 0e6411d
Author: Matthias Boehm <mb...@gmail.com>
Authored: Tue Feb 14 19:26:27 2017 -0800
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Wed Feb 15 10:49:20 2017 -0800

----------------------------------------------------------------------
 .../sysml/runtime/matrix/data/MatrixBlock.java       | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/12d79c54/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
index 746ac17..a6de5ec 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
@@ -4843,11 +4843,18 @@ public class MatrixBlock extends MatrixValue implements CacheBlock, Externalizab
 		throws DMLRuntimeException 
 	{
 		double sum_wt = 0;
-		for (int i=0; i < getNumRows(); i++ )
-			sum_wt += quickGetValue(i, 1);
-		if ( Math.floor(sum_wt) < sum_wt ) {
-			throw new DMLRuntimeException("Unexpected error while computing quantile -- weights must be integers.");
+		for (int i=0; i < getNumRows(); i++ ) {
+			double tmp = quickGetValue(i, 1);
+			sum_wt += tmp;		
+			
+			// test all values not just final sum_wt to ensure that non-integer weights
+			// don't cancel each other out; integer weights are required by all quantiles, etc
+			if( Math.floor(tmp) < tmp ) {
+				throw new DMLRuntimeException("Wrong input data, quantile weights "
+						+ "are expected to be integers but found '"+tmp+"'.");
+			}
 		}
+		
 		return sum_wt;
 	}