diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml
index 32f3f23812..a734685b80 100644
--- a/libraries-2/pom.xml
+++ b/libraries-2/pom.xml
@@ -50,6 +50,11 @@
picocli
${picocli.version}
+
+ org.ejml
+ ejml-all
+ ${ejml.version}
+
org.springframework.boot
spring-boot-starter
@@ -93,10 +98,10 @@
test
-
- edu.uci.ics
- crawler4j
- ${crawler4j.version}
+
+ edu.uci.ics
+ crawler4j
+ ${crawler4j.version}
@@ -109,5 +114,6 @@
3.17.2
4.4.0
2.1.4.RELEASE
+ 0.37.1
diff --git a/libraries-2/src/test/java/com/baeldung/ejml/SimpleMatrixUnitTest.java b/libraries-2/src/test/java/com/baeldung/ejml/SimpleMatrixUnitTest.java
new file mode 100644
index 0000000000..0f394889c0
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/ejml/SimpleMatrixUnitTest.java
@@ -0,0 +1,47 @@
+package com.baeldung.ejml;
+
+import org.ejml.simple.SimpleMatrix;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class SimpleMatrixUnitTest {
+
+ @Test
+ void givenTwoMatrices_whenMultiply_thenMultiplicatedMatrix() {
+ SimpleMatrix firstMatrix = new SimpleMatrix(
+ new double[][] {
+ new double[] {1d, 5d},
+ new double[] {2d, 3d},
+ new double[] {1d ,7d}
+ }
+ );
+
+ SimpleMatrix secondMatrix = new SimpleMatrix(
+ new double[][] {
+ new double[] {1d, 2d, 3d, 7d},
+ new double[] {5d, 2d, 8d, 1d}
+ }
+ );
+
+ SimpleMatrix expected = new SimpleMatrix(
+ new double[][] {
+ new double[] {26d, 12d, 43d, 12d},
+ new double[] {17d, 10d, 30d, 17d},
+ new double[] {36d, 16d, 59d, 14d}
+ }
+ );
+
+ SimpleMatrix actual = firstMatrix.mult(secondMatrix);
+
+ assertThat(actual.numRows()).isEqualTo(expected.numRows());
+ assertThat(actual.numCols()).isEqualTo(expected.numCols());
+ for (int row = 0; row < actual.numRows(); row++) {
+ for (int col = 0; col < actual.numCols(); col++) {
+ assertThat(actual.get(row, col))
+ .describedAs("Cells at [%d, %d] don't match", row, col)
+ .isEqualTo(expected.get(row, col));
+ }
+ }
+ }
+}