# Program to check Involutory Matrix

• Difficulty Level : Basic
• Last Updated : 19 Aug, 2022

Given a matrix and the task is to check matrix is involutory matrix or not.

Involutory Matrix: A matrix is said to be involutory matrix if matrix multiply by itself return the identity matrix. Involutory matrix is the matrix that is its own inverse. The matrix A is said to be involutory matrix if A * A = I. Where I is the identity matrix.

Examples:

```Input : mat[N][N] = {{1, 0, 0},
{0, -1, 0},
{0, 0, -1}}
Output : Involutory Matrix

Input : mat[N][N] = {{1, 0, 0},
{0, 1, 0},
{0, 0, 1}}
Output : Involutory Matrix```

Implementation:

## C++

 `// Program to implement involutory matrix.` `#include ` `#define N 3` `using` `namespace` `std;`   `// Function for matrix multiplication.` `void` `multiply(``int` `mat[][N], ``int` `res[][N])` `{` `    ``for` `(``int` `i = 0; i < N; i++) {` `        ``for` `(``int` `j = 0; j < N; j++) {` `            ``res[i][j] = 0;` `            ``for` `(``int` `k = 0; k < N; k++)` `                ``res[i][j] += mat[i][k] * mat[k][j];` `        ``}` `    ``}` `}`   `// Function to check involutory matrix.` `bool` `InvolutoryMatrix(``int` `mat[N][N])` `{` `    ``int` `res[N][N];`   `    ``// multiply function call.` `    ``multiply(mat, res);`   `    ``for` `(``int` `i = 0; i < N; i++) {` `        ``for` `(``int` `j = 0; j < N; j++) {` `            ``if` `(i == j && res[i][j] != 1)` `                ``return` `false``;` `            ``if` `(i != j && res[i][j] != 0)` `                ``return` `false``;` `        ``}` `    ``}` `    ``return` `true``;` `}`   `// Driver function.` `int` `main()` `{` `    ``int` `mat[N][N] = { { 1, 0, 0 },` `                      ``{ 0, -1, 0 },` `                      ``{ 0, 0, -1 } };`   `    ``// Function call. If function return` `    ``// true then if part will execute otherwise` `    ``// else part will execute.` `    ``if` `(InvolutoryMatrix(mat))` `        ``cout << ``"Involutory Matrix"``;` `    ``else` `        ``cout << ``"Not Involutory Matrix"``;`   `    ``return` `0;` `}`

## Java

 `// Java  Program to implement ` `// involutory matrix.` `import` `java.io.*;`   `class` `GFG {` `    `  `    ``static` `int` `N = ``3``;` `    `  `    ``// Function for matrix multiplication.` `    ``static` `void` `multiply(``int` `mat[][], ``int` `res[][])` `    ``{` `        ``for` `(``int` `i = ``0``; i < N; i++) {` `            ``for` `(``int` `j = ``0``; j < N; j++) {` `                ``res[i][j] = ``0``;` `                ``for` `(``int` `k = ``0``; k < N; k++)` `                    ``res[i][j] += mat[i][k] * mat[k][j];` `            ``}` `        ``}` `    ``}` `    `  `    ``// Function to check involutory matrix.` `    ``static` `boolean` `InvolutoryMatrix(``int` `mat[][])` `    ``{` `        ``int` `res[][] = ``new` `int``[N][N];` `    `  `        ``// multiply function call.` `        ``multiply(mat, res);` `    `  `        ``for` `(``int` `i = ``0``; i < N; i++) {` `            ``for` `(``int` `j = ``0``; j < N; j++) {` `                ``if` `(i == j && res[i][j] != ``1``)` `                    ``return` `false``;` `                ``if` `(i != j && res[i][j] != ``0``)` `                    ``return` `false``;` `            ``}` `        ``}` `        ``return` `true``;` `    ``}` `    `  `    ``// Driver function.` `    ``public` `static` `void` `main (String[] args) ` `    ``{` `        `  `        ``int` `mat[][] = { { ``1``, ``0``, ``0` `},` `                        ``{ ``0``, -``1``, ``0` `},` `                        ``{ ``0``, ``0``, -``1` `} };` `    `  `        ``// Function call. If function return` `        ``// true then if part will execute ` `        ``// otherwise else part will execute.` `        ``if` `(InvolutoryMatrix(mat))` `            ``System.out.println ( ``"Involutory Matrix"``);` `        ``else` `            ``System.out.println ( ``"Not Involutory Matrix"``);` `    `  `            `  `    ``}` `}`   `// This code is contributed by vt_m`

## Python3

 `# Program to implement involutory matrix.` `N ``=` `3``;`   `# Function for matrix multiplication.` `def` `multiply(mat, res):`   `    ``for` `i ``in` `range``(N): ` `        ``for` `j ``in` `range``(N):` `            ``res[i][j] ``=` `0``;` `            ``for` `k ``in` `range``(N):` `                ``res[i][j] ``+``=` `mat[i][k] ``*` `mat[k][j];` `    ``return` `res;`   `# Function to check involutory matrix.` `def` `InvolutoryMatrix(mat):`   `    ``res``=``[[``0` `for` `i ``in` `range``(N)] ` `            ``for` `j ``in` `range``(N)];`   `    ``# multiply function call.` `    ``res ``=` `multiply(mat, res);`   `    ``for` `i ``in` `range``(N): ` `        ``for` `j ``in` `range``(N):` `            ``if` `(i ``=``=` `j ``and` `res[i][j] !``=` `1``):` `                ``return` `False``;` `            ``if` `(i !``=` `j ``and` `res[i][j] !``=` `0``):` `                ``return` `False``;` `    ``return` `True``;`   `# Driver Code` `mat ``=` `[[``1``, ``0``, ``0``], [``0``, ``-``1``, ``0``], [``0``, ``0``, ``-``1``]];`   `# Function call. If function ` `# return true then if part ` `# will execute otherwise` `# else part will execute.` `if` `(InvolutoryMatrix(mat)):` `    ``print``(``"Involutory Matrix"``);` `else``:` `    ``print``(``"Not Involutory Matrix"``);`   `# This code is contributed by mits`

## C#

 `// C# Program to implement ` `// involutory matrix.` `using` `System;`   `class` `GFG {` `    `  `    ``static` `int` `N = 3;` `    `  `    ``// Function for matrix multiplication.` `    ``static` `void` `multiply(``int` `[,]mat, ``int` `[,]res)` `    ``{` `        ``for` `(``int` `i = 0; i < N; i++) {` `            ``for` `(``int` `j = 0; j < N; j++) {` `                ``res[i,j] = 0;` `                ``for` `(``int` `k = 0; k < N; k++)` `                    ``res[i,j] += mat[i,k] * mat[k,j];` `            ``}` `        ``}` `    ``}` `    `  `    ``// Function to check involutory matrix.` `    ``static` `bool` `InvolutoryMatrix(``int` `[,]mat)` `    ``{` `        ``int` `[,]res = ``new` `int``[N,N];` `    `  `        ``// multiply function call.` `        ``multiply(mat, res);` `    `  `        ``for` `(``int` `i = 0; i < N; i++) {` `            ``for` `(``int` `j = 0; j < N; j++) {` `                ``if` `(i == j && res[i,j] != 1)` `                    ``return` `false``;` `                ``if` `(i != j && res[i,j] != 0)` `                    ``return` `false``;` `            ``}` `        ``}` `        ``return` `true``;` `    ``}` `    `  `    ``// Driver function.` `    ``public` `static` `void` `Main () ` `    ``{` `        `  `        ``int` `[,]mat = { { 1, 0, 0 },` `                        ``{ 0, -1, 0 },` `                        ``{ 0, 0, -1 } };` `    `  `        ``// Function call. If function return` `        ``// true then if part will execute ` `        ``// otherwise else part will execute.` `        ``if` `(InvolutoryMatrix(mat))` `            ``Console.WriteLine( ``"Involutory Matrix"``);` `        ``else` `            ``Console.WriteLine( ``"Not Involutory Matrix"``);` `    `  `            `  `    ``}` `}`   `// This code is contributed by vt_m`

## PHP

 ``

## Javascript

 ``

Output

`Involutory Matrix`

Time Complexity: O(n3)
Auxiliary Space: O(n2), since n2 extra space has been taken.

My Personal Notes arrow_drop_up
Related Articles