# MatProductReplaceMats
Replace input matrices for a matrix product. 
## Synopsis
```
#include "petscmat.h" 
PetscErrorCode MatProductReplaceMats(Mat A, Mat B, Mat C, Mat D)
```
Collective on Mat


## Input Parameters

- ***A -*** the matrix or NULL if not being replaced
- ***B -*** the matrix or NULL if not being replaced
- ***C -*** the matrix or NULL if not being replaced
- ***D -*** the matrix product





## Note
To reuse the symbolic phase, the input matrices must have exactly the same data structure as the replaced one.
If the type of any of the input matrices is different than what was previously used, or their symmetry flag changed but
the symbolic phase took advantage of their symmetry, the product is cleared and `MatProductSetFromOptions()` and `MatProductSymbolic()` are invoked again.


## See Also
 `Mat`, `MatProductCreate()`, `MatProductSetFromOptions()`, `MatProductSymbolic().` `MatProductClear()`

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/mat/interface/matproduct.c.html#MatProductReplaceMats">src/mat/interface/matproduct.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/interface/matproduct.c)


[Index of all Mat routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
