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 2018/02/16 08:34:36 UTC

[4/4] systemml git commit: [SYSTEMML-2151] Fix correctness of codegen row powAdd for sparse

[SYSTEMML-2151] Fix correctness of codegen row powAdd for sparse

This patch fixes the result correctness of the codegen powAdd vector
(primitive as used in codegen row operations) for sparse inputs.
 

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

Branch: refs/heads/master
Commit: 5837953e94cc427aaf8207d9c94cea36a50499cf
Parents: de8f2c7
Author: Matthias Boehm <mb...@gmail.com>
Authored: Fri Feb 16 00:09:03 2018 -0800
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Fri Feb 16 00:09:03 2018 -0800

----------------------------------------------------------------------
 .../apache/sysml/runtime/codegen/LibSpoofPrimitives.java    | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/5837953e/src/main/java/org/apache/sysml/runtime/codegen/LibSpoofPrimitives.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/LibSpoofPrimitives.java b/src/main/java/org/apache/sysml/runtime/codegen/LibSpoofPrimitives.java
index fe34507..bcb2f4d 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/LibSpoofPrimitives.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/LibSpoofPrimitives.java
@@ -655,15 +655,16 @@ public class LibSpoofPrimitives
 	}
 
 	public static void vectPowAdd(double[] a, double bval, double[] c, int[] aix, int ai, int ci, int alen, int len) {
-		if( bval == 0 ) //handle 0^0=1
+		if( bval == 0 ) //handle 0^0=1 & a^0=1
 			for( int j=0; j<len; j++ )
 				c[ci + j] += 1;
-		for( int j = ai; j < ai+alen; j++ )
-			c[ci + aix[j]] += Math.pow(a[j], bval) - 1;
+		else //handle 0^b=0 & a^b
+			for( int j = ai; j < ai+alen; j++ )
+				c[ci + aix[j]] += Math.pow(a[j], bval);
 	}
 	
 	public static void vectPowAdd(double bval, double[] a, double[] c, int[] aix, int ai, int ci, int alen, int len) {
-		for( int j=0; j<len; j++ )
+		for( int j=0; j<len; j++ ) //handle 0^0=1 & b^0=1
 			c[ci + j] += 1;
 		for( int j = ai; j < ai+alen; j++ )
 			c[ci + aix[j]] += Math.pow(bval, a[j]) - 1;