# Program to check Involutory Matrix

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
```

## 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

 ` `

Output :

`Involutory Matrix`

## tags:

Mathematical Matrix Mathematical Matrix