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());
