Repository: systemml
Updated Branches:
  refs/heads/master 2ec6d4d7c -> f700df2c8


[SYSTEMML-1626] Fix compiler/runtime dimension checks for solve

Closes #753.


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

Branch: refs/heads/master
Commit: f700df2c88e3f60c5603cccf83927738771f6d8b
Parents: 2ec6d4d
Author: Janardhan Pulivarthi <[email protected]>
Authored: Thu Apr 5 18:01:54 2018 -0700
Committer: Matthias Boehm <[email protected]>
Committed: Thu Apr 5 18:01:55 2018 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/parser/BuiltinFunctionExpression.java | 3 ++-
 .../org/apache/sysml/runtime/matrix/data/LibCommonsMath.java    | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/f700df2c/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java 
b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
index e1ac9da..8ce197f 100644
--- a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
@@ -1096,7 +1096,8 @@ public class BuiltinFunctionExpression extends 
DataIdentifier
                                raiseValidateError("Second input to solve() 
must be a vector", conditional);
                        
                        if ( getFirstExpr().getOutput().dimsKnown() && 
getSecondExpr().getOutput().dimsKnown() && 
-                                       getFirstExpr().getOutput().getDim1() != 
getSecondExpr().getOutput().getDim1() )
+                                       getFirstExpr().getOutput().getDim1() != 
getSecondExpr().getOutput().getDim1() &&
+                                       getFirstExpr().getOutput().getDim1() != 
getFirstExpr().getOutput().getDim2())
                                raiseValidateError("Dimension mismatch in a 
call to solve()", conditional);
                        
                        output.setDataType(DataType.MATRIX);

http://git-wip-us.apache.org/repos/asf/systemml/blob/f700df2c/src/main/java/org/apache/sysml/runtime/matrix/data/LibCommonsMath.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibCommonsMath.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibCommonsMath.java
index 4efc3aa..22572ba 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibCommonsMath.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibCommonsMath.java
@@ -78,8 +78,11 @@ public class LibCommonsMath
        }
        
        public static MatrixBlock matrixMatrixOperations(MatrixObject in1, 
MatrixObject in2, String opcode) {
-               if(opcode.equals("solve"))
+               if(opcode.equals("solve")) {
+                       if (in1.getNumRows() != in1.getNumColumns())
+                               throw new DMLRuntimeException("The A matrix, in 
solve(A,b) should have squared dimensions.");
                        return computeSolve(in1, in2);
+               }
                return null;
        }
        

Reply via email to