# Program To Multiply Two Matrices

The task here to multiply 2 matrices either be square or rectangular.

Examples:

``````Input : mat1[][] = {{1, 2},
{3, 4}}
mat2[][] = {{1, 1},
{1, 1}}
Output : {{3, 3},
{7, 7}}
Input : mat1[][] = {{2, 4},
{3, 4}}
mat2[][] = {{1, 2},
{1, 3}}
Output : {{6, 16},
{7, 18}}``````

## Multiplication of Square Matrices :

The below program multiplies two square matrices of size 4*4, we can change N for different dimensions. This program is written in form of C++.

```// C++ program to multiply
// two square matrices.
#include <iostream>

using namespace std;

#define N 4

// This function multiplies
// mat1[][] and mat2[][], and
// stores the result in res[][]
void multiply(int mat1[][N],
int mat2[][N],
int res[][N])
{
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
res[i][j] = 0;
for (k = 0; k < N; k++)
res[i][j] += mat1[i][k] * mat2[k][j];
}
}
}

// Driver Code
int main()
{
int i, j;
int res[N][N]; // To store result
int mat1[N][N] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

int mat2[N][N] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

multiply(mat1, mat2, res);

cout << "Result matrix is \n";
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
cout << res[i][j] << " ";
cout << "\n";
}

return 0;
}```

### C Program To Multiply Two Square Matrices:

```// C program to multiply two square matrices.
#include <stdio.h>
#define N 4

// This function multiplies mat1[][] and mat2[][],
// and stores the result in res[][]
void multiply(int mat1[][N], int mat2[][N], int res[][N])
{
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
res[i][j] = 0;
for (k = 0; k < N; k++)
res[i][j] += mat1[i][k] * mat2[k][j];
}
}
}

int main()
{
int mat1[N][N] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

int mat2[N][N] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

int res[N][N]; // To store result
int i, j;
multiply(mat1, mat2, res);

printf("Result matrix is \n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", res[i][j]);
printf("\n");
}

return 0;
}```

### Java Program To Multiply Two Square Matrices:

```// Java program to multiply two square
// matrices.
import java.io.*;

class GFG {

static int N = 4;

// This function multiplies mat1[][]
// and mat2[][], and stores the result
// in res[][]
static void multiply(int mat1[][],
int mat2[][], int res[][])
{
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
res[i][j] = 0;
for (k = 0; k < N; k++)
res[i][j] += mat1[i][k]
* mat2[k][j];
}
}
}

// Driver code
public static void main(String[] args)
{
int mat1[][] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

int mat2[][] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

// To store result
int res[][] = new int[N][N];
int i, j;
multiply(mat1, mat2, res);

System.out.println("Result matrix"
+ " is ");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
System.out.print(res[i][j]
+ " ");
System.out.println();
}
}
}

// This code is contributed by anuj_67.```

### 4×4 matrix multiplication using Python3 Using Function:

```# 4x4 matrix multiplication using Python3
# Function definition
def matrix_multiplication(M, N):
# List to store matrix multiplication result
R = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]

for i in range(0, 4):
for j in range(0, 4):
for k in range(0, 4):
R[i][j] += M[i][k] * N[k][j]

for i in range(0, 4):
for j in range(0, 4):
# if we use print(), by default cursor moves to next line each time,
# Now we can explicitly define ending character or sequence passing
# second parameter as end ="<character or string>"
# syntax: print(<variable or value to print>, end ="<ending with>")
# Here space (" ") is used to print a gape after printing
# each element of R
print(R[i][j], end =" ")
print("\n", end ="")

# First matrix. M is a list
M = [[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]]

# Second matrix. N is a list
N = [[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]]

# Call matrix_multiplication function
matrix_multiplication(M, N)

# This code is contributed by Santanu```

### C# Program to multiply two square matrices:

```// C# program to multiply two square
// matrices.
using System;

class GFG {

static int N = 4;

// This function multiplies mat1[][]
// and mat2[][], and stores the result
// in res[][]
static void multiply(int[, ] mat1,
int[, ] mat2, int[, ] res)
{
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
res[i, j] = 0;
for (k = 0; k < N; k++)
res[i, j] += mat1[i, k]
* mat2[k, j];
}
}
}

// Driver code
public static void Main()
{
int[, ] mat1 = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

int[, ] mat2 = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 },
{ 4, 4, 4, 4 } };

// To store result
int[, ] res = new int[N, N];
int i, j;
multiply(mat1, mat2, res);

Console.WriteLine("Result matrix"
+ " is ");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
Console.Write(res[i, j]
+ " ");
Console.WriteLine();
}
}
}

// This code is contributed by anuj_67.```

### PHP Program To Multiply Two Matrices:

```<?php
// PHP program to multiply two
// square matrices.

// This function multiplies mat1[][] and
// mat2[][], and stores the result in res[][]
function multiply(&\$mat1, &\$mat2, &\$res)
{
\$N = 4;
for (\$i = 0; \$i < \$N; \$i++)
{
for (\$j = 0; \$j < \$N; \$j++)
{
\$res[\$i][\$j] = 0;
for (\$k = 0; \$k < \$N; \$k++)
\$res[\$i][\$j] += \$mat1[\$i][\$k] *
\$mat2[\$k][\$j];
}
}
}

// Driver Code
\$mat1 = array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));

\$mat2 = array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));

multiply(\$mat1, \$mat2, \$res);
\$N = 4;
echo ("Result matrix is \n");
for (\$i = 0; \$i < \$N; \$i++)
{
for (\$j = 0; \$j < \$N; \$j++)
{
echo (\$res[\$i][\$j]);
echo(" ");
}
echo ("\n");
}

// This code is contributed
// by Shivi_Aggarwal
?>```