mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-27 22:43:30 +08:00
42 lines
1.6 KiB
Java
42 lines
1.6 KiB
Java
package com.thealgorithms.divideandconquer;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
class StrassenMatrixMultiplicationTest {
|
|
|
|
StrassenMatrixMultiplication SMM = new StrassenMatrixMultiplication();
|
|
|
|
// Strassen Matrix Multiplication can only be allplied to matrices of size 2^n
|
|
// and has to be a Square Matrix
|
|
|
|
@Test
|
|
public void StrassenMatrixMultiplicationTest2x2() {
|
|
int[][] A = { { 1, 2 }, { 3, 4 } };
|
|
int[][] B = { { 5, 6 }, { 7, 8 } };
|
|
int[][] expResult = { { 19, 22 }, { 43, 50 } };
|
|
int[][] actResult = SMM.multiply(A, B);
|
|
assertArrayEquals(expResult, actResult);
|
|
}
|
|
|
|
@Test
|
|
void StrassenMatrixMultiplicationTest4x4() {
|
|
int[][] A = { { 1, 2, 5, 4 }, { 9, 3, 0, 6 }, { 4, 6, 3, 1 }, { 0, 2, 0, 6 } };
|
|
int[][] B = { { 1, 0, 4, 1 }, { 1, 2, 0, 2 }, { 0, 3, 1, 3 }, { 1, 8, 1, 2 } };
|
|
int[][] expResult = { { 7, 51, 13, 28 }, { 18, 54, 42, 27 }, { 11, 29, 20, 27 }, { 8, 52, 6, 16 } };
|
|
int[][] actResult = SMM.multiply(A, B);
|
|
assertArrayEquals(expResult, actResult);
|
|
}
|
|
|
|
@Test
|
|
void StrassenMatrixMultiplicationTestNegetiveNumber4x4() {
|
|
int[][] A = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } };
|
|
int[][] B = { { 1, -2, -3, 4 }, { 4, -3, -2, 1 }, { 5, -6, -7, 8 }, { 8, -7, -6, -5 } };
|
|
int[][] expResult = { { 56, -54, -52, 10 }, { 128, -126, -124, 42 }, { 200, -198, -196, 74 },
|
|
{ 272, -270, -268, 106 } };
|
|
int[][] actResult = SMM.multiply(A, B);
|
|
assertArrayEquals(expResult, actResult);
|
|
}
|
|
|
|
} |