:orphan:
# ReductionType
determines what type of column reduction (one that is not a type of norm defined in `NormType`) to compute 
## Synopsis
```
typedef enum {
  REDUCTION_SUM_REALPART       = 10,
  REDUCTION_MEAN_REALPART      = 11,
  REDUCTION_SUM_IMAGINARYPART  = 12,
  REDUCTION_MEAN_IMAGINARYPART = 13
} ReductionType;
```

## Values

- ***`REDUCTION_SUM_REALPART` -*** sum of real part of each matrix column
- ***`REDUCTION_SUM_IMAGINARYPART` -*** sum of imaginary part of each matrix column
- ***`REDUCTION_MEAN_REALPART` -*** arithmetic mean of real part of each matrix column
- ***`REDUCTION_MEAN_IMAGINARYPART` -*** arithmetic mean of imaginary part of each matrix column





## Developer Note
The constants defined in `ReductionType` MUST BE DISTINCT from those defined in `NormType`.
This is because `MatGetColumnReductions()` is used to compute both norms and other types of reductions,
and the constants defined in both `NormType` and `ReductionType` are used to designate the desired operation.


## See Also
 [](ch_vectors), `MatGetColumnReductions()`, `MatGetColumnNorms()`, `NormType`, `REDUCTION_SUM_REALPART`,
`REDUCTION_SUM_IMAGINARYPART`, `REDUCTION_MEAN_REALPART`, `REDUCTION_NORM_1`, `REDUCTION_NORM_2`, `REDUCTION_NORM_FROBENIUS`, `REDUCTION_NORM_INFINITY`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/include/petscvec.h.html#ReductionType">include/petscvec.h</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscvec.h)


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