# mxGetPi, mxGetPr, mxSetPi, mxSetPr

## Purpose

Get and set pointers to the real and imaginary parts of a Matrix.

## C Synopsis

```double *`mxGetPi(pm)`
Matrix *`pm;`
double *`mxGetPr(pm)`
Matrix *`pm;`
void mxSetPi(pm,pi)
Matrix *`pm;`
double *`pr;`
void mxSetPr(pm,pr)
Matrix *`pm;`
double *`pr;`
```

## Fortran Synopsis

```integer*`4 function mxGetPr(pm)`
integer*`4 function mxGetPi(pm)`
subroutine mxSetPr(pm,pr)
subroutine mxSetPi(pm,pi)
integer*`4 pm,pr,pi`
```

## Arguments

`pi`
pointer to the imaginary part of Matrix
`pm`
pointer to the Matrix structure
`pr`
pointer to the real part of Matrix

## Description

These routines let you get and set the pointers to the real and imaginary parts of a Matrix. If the pointer returned by `mxGetPi` is 0 (`NULL`), the Matrix is purely real. You can also use `mxIsComplex` to test if a Matrix is complex.

The imaginary parts of all input Matrices to a MATLAB function are allocated if any of the input Matrices are complex.

If you use `mxGetPr` or `mxGetPi`, note that `mxFreeMatrix` frees `pr` and `pi` using `mxFree`, so `pr` and `pi` should be set only to memory allocated with `mxCalloc`; they should not be set to statically allocated memory. See the "Matrix Data Structure" section in Chapter 1 for a complete description of these properties of a Matrix.

(c) Copyright 1994 by The MathWorks, Inc.