JAL-3205 faster calculation with symmetric score matrix
[jalview.git] / src / jalview / math / Matrix.java
index 77862c8..1e8f39d 100755 (executable)
@@ -984,4 +984,48 @@ public class Matrix implements MatrixI
   {
     e = v;
   }
+
+  @Override
+  public int hashCode()
+  {
+    return (int) getTotal();
+  }
+
+  public double getTotal()
+  {
+    double d = 0d;
+    for (int i = 0; i < this.height(); i++)
+    {
+      for (int j = 0; j < this.width(); j++)
+      {
+        d += value[i][j];
+      }
+    }
+    return d;
+  }
+
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (!(obj instanceof MatrixI))
+    {
+      return false;
+    }
+    MatrixI m2 = (MatrixI) obj;
+    if (this.height() != m2.height() || this.width() != m2.width())
+    {
+      return false;
+    }
+    for (int i = 0; i < this.height(); i++)
+    {
+      for (int j = 0; j < this.width(); j++)
+      {
+        if (this.getValue(i, j) != m2.getValue(i, j))
+        {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
 }