public virtual void TestElementwiseProduct(ConcatVectorTest.DenseTestVector d1, ConcatVectorTest.DenseTestVector d2) { for (int i = 0; i < d1.values.Length; i++) { for (int j = 0; j < d1.values[i].Length; j++) { Assume.AssumeTrue(d1.values[i][j] == d1.vector.GetValueAt(i, j)); } } for (int i_1 = 0; i_1 < d2.values.Length; i_1++) { for (int j = 0; j < d2.values[i_1].Length; j++) { Assume.AssumeTrue(d2.values[i_1][j] == d2.vector.GetValueAt(i_1, j)); } } ConcatVector clone = d1.vector.DeepClone(); clone.ElementwiseProductInPlace(d2.vector); for (int i_2 = 0; i_2 < d1.values.Length; i_2++) { for (int j = 0; j < d1.values[i_2].Length; j++) { double val = 0.0f; if (i_2 < d2.values.Length) { if (j < d2.values[i_2].Length) { val = d1.values[i_2][j] * d2.values[i_2][j]; } } NUnit.Framework.Assert.AreEqual(clone.GetValueAt(i_2, j), 5.0e-4, val); } } }
public virtual void TestElementwiseSparseToSparse(int sparseIndex1, double val1, int sparseIndex2, double val2) { ConcatVector v1 = new ConcatVector(1); v1.SetSparseComponent(0, (int)sparseIndex1, val1); ConcatVector v2 = new ConcatVector(1); v2.SetSparseComponent(0, (int)sparseIndex2, val2); v1.ElementwiseProductInPlace(v2); for (int i = 0; i < 10; i++) { double expected = 0.0f; if (i == sparseIndex1 && i == sparseIndex2) { expected = val1 * val2; } NUnit.Framework.Assert.AreEqual(v1.GetValueAt(0, i), 5.0e-4, expected); } }
public virtual void TestElementwiseSparseToDense(double[] dense1, int sparseIndex, double v) { ConcatVector v1 = new ConcatVector(1); v1.SetDenseComponent(0, dense1); ConcatVector v2 = new ConcatVector(1); v2.SetSparseComponent(0, (int)sparseIndex, v); v1.ElementwiseProductInPlace(v2); for (int i = 0; i < dense1.Length; i++) { double expected = 0.0f; if (i == sparseIndex) { expected = dense1[i] * v; } NUnit.Framework.Assert.AreEqual(v1.GetValueAt(0, i), 5.0e-4, expected); } }