Skip to main content
`Ctrl`+`K`

# MatCreateNormal

Creates a new `MATNORMAL` matrix object that behaves like \(A^T A\).

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatCreateNormal(Mat A, Mat *N)

Collective

## Input Parameter

- A - the (possibly rectangular) matrix

## Output Parameter

- N - the matrix that represents \(A^T A \)

## Notes

The product \(A^T A\) is NOT actually formed! Rather the new matrix object performs the matrix-vector product, `MatMult()`, by first multiplying by \(A\) and then \(A^T\)

If `MatGetFactor()` is called on this matrix with `MAT_FACTOR_QR` then the inner matrix `A` is used for the factorization

## See Also

Matrices, `Mat`, `MATNORMAL`, `MatMult()`, `MatNormalGetMat()`, `MATNORMALHERMITIAN`, `MatCreateNormalHermitian()`

## Level

intermediate

## Location

src/mat/impls/normal/normm.c

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages