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/09 05:50:38 UTC

incubator-systemml git commit: [SYSTEMML-1167] Fix size propagation right indexing (all rows/columns)

Repository: incubator-systemml
Updated Branches:
  refs/heads/master 30b6cb03f -> d3cfcafcf


[SYSTEMML-1167] Fix size propagation right indexing (all rows/columns)

This patch fixes specific issues of inferring the size of X[1:n,1:m],
where n=nrow(Y) and m=ncol(Z). Until now, we always used n=nrow(X) and
m=ncol(X) even if Y!=X or Z!=X.

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

Branch: refs/heads/master
Commit: d3cfcafcf38ab2b11f47621c475da44614e4f582
Parents: 30b6cb0
Author: Matthias Boehm <mb...@gmail.com>
Authored: Thu Feb 9 04:56:07 2017 +0100
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Thu Feb 9 06:50:16 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/sysml/hops/IndexingOp.java     | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/d3cfcafc/src/main/java/org/apache/sysml/hops/IndexingOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/IndexingOp.java b/src/main/java/org/apache/sysml/hops/IndexingOp.java
index 0d870b9..9437cef 100644
--- a/src/main/java/org/apache/sysml/hops/IndexingOp.java
+++ b/src/main/java/org/apache/sysml/hops/IndexingOp.java
@@ -402,7 +402,6 @@ public class IndexingOp extends Hop
 	@Override
 	public void refreshSizeInformation()
 	{
-		Hop input1 = getInput().get(0); //original matrix
 		Hop input2 = getInput().get(1); //inpRowL
 		Hop input3 = getInput().get(2); //inpRowU
 		Hop input4 = getInput().get(3); //inpColL
@@ -421,9 +420,11 @@ public class IndexingOp extends Hop
 		//set dimension information
 		if( _rowLowerEqualsUpper ) //ROWS
 			setDim1(1);
-		else if( allRows ) 
-			setDim1(input1.getDim1());
-		else if( constRowRange ){
+		else if( allRows ) {
+			//input3 guaranteed to be a unaryop-nrow
+			setDim1(input3.getInput().get(0).getDim1());
+		}
+		else if( constRowRange ) {
 			setDim1( HopRewriteUtils.getIntValueSafe((LiteralOp)input3)
 					-HopRewriteUtils.getIntValueSafe((LiteralOp)input2)+1 );
 		}
@@ -433,9 +434,11 @@ public class IndexingOp extends Hop
 		
 		if( _colLowerEqualsUpper ) //COLS
 			setDim2(1);
-		else if( allCols ) 
-			setDim2(input1.getDim2());
-		else if( constColRange ){
+		else if( allCols ) {
+			//input5 guaranteed to be a unaryop-ncol
+			setDim2(input5.getInput().get(0).getDim2());
+		}
+		else if( constColRange ) {
 			setDim2( HopRewriteUtils.getIntValueSafe((LiteralOp)input5)
 					-HopRewriteUtils.getIntValueSafe((LiteralOp)input4)+1 );
 		}