This is an automated email from the ASF dual-hosted git repository.

mboehm7 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/systemds.git

commit 45d97202f64b00adb3a12c54988b185b6f12da27
Author: Matthias Boehm <[email protected]>
AuthorDate: Thu Aug 4 22:42:19 2022 +0200

    [MINOR] Fix builtin/parser datatype and size propagation issues
---
 scripts/builtin/executePipeline.dml                               | 8 ++++----
 scripts/builtin/imputeByFD.dml                                    | 6 +++---
 .../java/org/apache/sysds/parser/BuiltinFunctionExpression.java   | 5 +++--
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/scripts/builtin/executePipeline.dml 
b/scripts/builtin/executePipeline.dml
index d6729e72c5..cfd1899d96 100644
--- a/scripts/builtin/executePipeline.dml
+++ b/scripts/builtin/executePipeline.dml
@@ -386,13 +386,13 @@ return (Matrix[Double] X, Matrix[Double] Y)
       synthesized = matrix(0,0,0) # initialize variable
       start_class = 1
       end_class = 0
-      k = table(XY[, 1], 1)
-      getMax = max(k)
-      maxKIndex = as.scalar(rowIndexMax(t(k)))
+      kmat = table(XY[, 1], 1)
+      getMax = max(kmat)
+      maxKIndex = as.scalar(rowIndexMax(t(kmat)))
       outSet = matrix(0, 0, ncol(XY))
       remainingRatio = ifelse((remainingRatio%%100) >= 50, remainingRatio+(100 
- (remainingRatio%%100)),
       remainingRatio-(remainingRatio%%100))
-      for(i in 1: nrow(k), check=0) {
+      for(i in 1: nrow(kmat), check=0) {
         end_class = end_class + as.scalar(classes[i])
         class_t = XY[start_class:end_class, ]
         if((i != maxKIndex) & (nrow(class_t) > 1)) {
diff --git a/scripts/builtin/imputeByFD.dml b/scripts/builtin/imputeByFD.dml
index 2f078c056a..8b3af64635 100644
--- a/scripts/builtin/imputeByFD.dml
+++ b/scripts/builtin/imputeByFD.dml
@@ -42,10 +42,10 @@ m_imputeByFD = function(Matrix[Double] X, Matrix[Double] Y, 
Double threshold, Bo
   if( threshold < 0 | threshold > 1 )
     stop("Stopping due to invalid input, threshold required in interval [0, 1] 
found "+threshold)
 
-  if(min(X) < 1 | min(Y) < 1)
-  {
+  if(min(X) < 1 | min(Y) < 1) {
     print("imputeByFD: source or target contain values less than 1")
-    
+    Y = matrix(0, 1, 1);
+    Y_imp = matrix(0, 1, 1);
   }
   else {
     # impute missing values and fix errors
diff --git 
a/src/main/java/org/apache/sysds/parser/BuiltinFunctionExpression.java 
b/src/main/java/org/apache/sysds/parser/BuiltinFunctionExpression.java
index 0da5609afd..c5db658dfa 100644
--- a/src/main/java/org/apache/sysds/parser/BuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysds/parser/BuiltinFunctionExpression.java
@@ -683,11 +683,12 @@ public class BuiltinFunctionExpression extends 
DataIdentifier
                        // cumsum(X);
                        checkNumParameters(1);
                        checkMatrixParam(getFirstExpr());
-                       if( getOpCode() == Builtins.CUMSUMPROD && id.getDim2() 
> 2 )
+                       boolean cumSP = getOpCode() == Builtins.CUMSUMPROD;
+                       if( cumSP && id.getDim2() > 2 )
                                raiseValidateError("Cumsumprod only supported 
over two-column matrices", conditional);
                        
                        output.setDataType(DataType.MATRIX);
-                       output.setDimensions(id.getDim1(), id.getDim2());
+                       output.setDimensions(id.getDim1(), cumSP ? 1 : 
id.getDim2());
                        output.setBlocksize (id.getBlocksize());
                        output.setValueType(id.getValueType());
                        

Reply via email to