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

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


The following commit(s) were added to refs/heads/main by this push:
     new 3e6e462854 [MINOR] Add general contains and specific contains nan on 
DenseBlock
3e6e462854 is described below

commit 3e6e462854b1818893e86443aae858ae1cfc1088
Author: Sebastian Baunsgaard <baunsga...@apache.org>
AuthorDate: Fri Apr 5 16:58:37 2024 +0200

    [MINOR] Add general contains and specific contains nan on DenseBlock
---
 .../org/apache/sysds/runtime/data/DenseBlock.java  | 34 ++++++++++++++++++++--
 .../apache/sysds/runtime/data/DenseBlockBool.java  |  2 +-
 .../apache/sysds/runtime/data/DenseBlockFP32.java  |  2 +-
 .../apache/sysds/runtime/data/DenseBlockFP64.java  |  2 +-
 .../sysds/runtime/data/DenseBlockFP64DEDUP.java    |  2 +-
 .../apache/sysds/runtime/data/DenseBlockInt32.java |  2 +-
 .../apache/sysds/runtime/data/DenseBlockInt64.java |  2 +-
 .../apache/sysds/runtime/data/DenseBlockLBool.java |  2 +-
 .../apache/sysds/runtime/data/DenseBlockLFP32.java |  2 +-
 .../apache/sysds/runtime/data/DenseBlockLFP64.java |  2 +-
 .../sysds/runtime/data/DenseBlockLFP64DEDUP.java   |  2 +-
 .../sysds/runtime/data/DenseBlockLInt32.java       |  2 +-
 .../sysds/runtime/data/DenseBlockLInt64.java       |  2 +-
 .../sysds/runtime/data/DenseBlockLString.java      |  2 +-
 .../sysds/runtime/data/DenseBlockString.java       |  2 +-
 15 files changed, 46 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlock.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlock.java
index 0a30d79250..0baf881936 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlock.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlock.java
@@ -67,6 +67,8 @@ public abstract class DenseBlock implements Serializable, 
Block
 
        /**
         * Get the ith dimensions size of the dense block.
+        * 
+        * 0 is rows , 1 is cols, etc.
         *
         * @param i the number of dimension to get
         * @return the size of the dimension
@@ -414,7 +416,7 @@ public abstract class DenseBlock implements Serializable, 
Block
         * @param toIndex   ending index in block (exclusive)
         * @param v         value
         */
-       protected abstract void fillBlock(int bix, int fromIndex, int toIndex, 
double v);
+       public abstract void fillBlock(int bix, int fromIndex, int toIndex, 
double v);
 
        /**
         * Set a value at a position given by block index and index in that 
block.
@@ -669,14 +671,42 @@ public abstract class DenseBlock implements Serializable, 
Block
         * @param ru row upper bound (exclusive)
         * @return true if pattern appears at least once, otherwise false
         */
+
        public boolean contains(double pattern, int rl, int ru) {
                boolean NaNpattern = Double.isNaN(pattern);
                int clen = _odims[0];
                for(int i=rl; i<ru; i++) {
                        double[] vals = values(i);
                        int pos = pos(i);
-                       for(int j=pos; j<pos+clen; j++)
+                       for(int j=pos; j<pos+clen; j++){
                                if(vals[j]==pattern || (NaNpattern && 
Double.isNaN(vals[j])))
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       public boolean contains(double pattern) {
+               if(Double.isNaN(pattern))
+                       return containsNan();
+
+               for(int i = 0; i < numBlocks(); i++) {
+                       double[] vals = valuesAt(i);
+                       int len = size(i);
+                       for(int j = 0; j < len; j++)
+                               if(vals[j] == pattern)
+                                       return true;
+               }
+               return false;
+       }
+
+       private boolean containsNan() {
+               for(int i = 0; i < numBlocks(); i++) {
+                       final double[] vals = valuesAt(i);
+                       final int len = size(i);
+                       for(int j = 0; j < len; j++)
+                               // nan Check is v != v
+                               if(vals[j] != vals[j])
                                        return true;
                }
                return false;
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockBool.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockBool.java
index 247526701a..3d94fcf8af 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockBool.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockBool.java
@@ -142,7 +142,7 @@ public class DenseBlockBool extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                _data.set(fromIndex, toIndex, v != 0);
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP32.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP32.java
index f435efacbd..519c17d83d 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP32.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP32.java
@@ -128,7 +128,7 @@ public class DenseBlockFP32 extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_data, fromIndex, toIndex, (float)v);
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64.java
index f837e95820..eb93777fa4 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64.java
@@ -135,7 +135,7 @@ public class DenseBlockFP64 extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_data, fromIndex, toIndex, v);
        }
 
diff --git 
a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64DEDUP.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64DEDUP.java
index af16ec3d85..2f3008c727 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64DEDUP.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockFP64DEDUP.java
@@ -292,7 +292,7 @@ public class DenseBlockFP64DEDUP extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                int roffset = fromIndex / _emb_size;
                int coffset = fromIndex % _emb_size;
                int r2offset = fromIndex / _emb_size;
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt32.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt32.java
index 428c0b8f88..6f3c2a6622 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt32.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt32.java
@@ -128,7 +128,7 @@ public class DenseBlockInt32 extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_data, fromIndex, toIndex, UtilFunctions.toInt(v));
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt64.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt64.java
index d61d78e2b9..ffe790e81a 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt64.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockInt64.java
@@ -129,7 +129,7 @@ public class DenseBlockInt64 extends DenseBlockDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_data, fromIndex, toIndex, UtilFunctions.toLong(v));
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLBool.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLBool.java
index e49b3a9b7c..ab3bd98b9c 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLBool.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLBool.java
@@ -146,7 +146,7 @@ public class DenseBlockLBool extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                _blocks[bix].set(fromIndex, toIndex, v != 0);
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP32.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP32.java
index 266c9635eb..4122db2fae 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP32.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP32.java
@@ -109,7 +109,7 @@ public class DenseBlockLFP32 extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_blocks[bix], fromIndex, toIndex, (float)v);
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64.java
index 2ffac0468f..1d0bc3ccfb 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64.java
@@ -101,7 +101,7 @@ public class DenseBlockLFP64 extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_blocks[bix], fromIndex,toIndex, v);
        }
 
diff --git 
a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64DEDUP.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64DEDUP.java
index b12de816b2..79c02b7ac6 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64DEDUP.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLFP64DEDUP.java
@@ -174,7 +174,7 @@ public class DenseBlockLFP64DEDUP extends DenseBlockLDRB{
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                throw new NotImplementedException();
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt32.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt32.java
index 826b73b142..0880440e46 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt32.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt32.java
@@ -105,7 +105,7 @@ public class DenseBlockLInt32 extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_blocks[bix], fromIndex, toIndex, 
UtilFunctions.toInt(v));
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt64.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt64.java
index 43228b18bc..d9ffc26176 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt64.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLInt64.java
@@ -105,7 +105,7 @@ public class DenseBlockLInt64 extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_blocks[bix], fromIndex, toIndex, 
UtilFunctions.toLong(v));
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLString.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLString.java
index 191017ae43..0ab267abec 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockLString.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockLString.java
@@ -105,7 +105,7 @@ public class DenseBlockLString extends DenseBlockLDRB
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_blocks[bix], fromIndex, toIndex, 
String.valueOf(v));
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/data/DenseBlockString.java 
b/src/main/java/org/apache/sysds/runtime/data/DenseBlockString.java
index 287c4d0f90..657a0f6559 100644
--- a/src/main/java/org/apache/sysds/runtime/data/DenseBlockString.java
+++ b/src/main/java/org/apache/sysds/runtime/data/DenseBlockString.java
@@ -114,7 +114,7 @@ public class DenseBlockString extends DenseBlockDRB {
        }
 
        @Override
-       protected void fillBlock(int bix, int fromIndex, int toIndex, double v) 
{
+       public void fillBlock(int bix, int fromIndex, int toIndex, double v) {
                Arrays.fill(_data, fromIndex, toIndex, String.valueOf(v));
        }
 

Reply via email to