---
title: vDSP_maxmgvi
framework: accelerate
role: symbol
role_heading: Function
path: accelerate/vdsp_maxmgvi
---

# vDSP_maxmgvi

Calculates the maximum magnitude and corresponding index in a single-precision vector.

## Declaration

```occ
extern void vDSP_maxmgvi(const float *__A, vDSP_Stride __IA, float *__C, vDSP_Length *__I, vDSP_Length __N);
```

## Parameters

- `__A`: The input vector, A.
- `__IA`: The distance between the elements in the input vector.
- `__C`: The output scalar value, C. If N is zero, the function sets C to 0.
- `__I`: The output scalar value, I. If N is zero, the function sets I to 0.
- `__N`: The number of elements that the function processes.

## Discussion

Discussion This function calculates the maximum magnitude and its corresponding index of the first N elements of the input vector and writes the results to the output scalar parameters, C and I, respectively.

The following code shows an example of using this function:     let stride = vDSP_Stride(1)          let a: [Float] = [-1.5, 2.25, 3.6,                        0.2, -0.1, -4.3]     let n = vDSP_Length(a.count)          var c: Float = .nan     var i: vDSP_Length = 0          vDSP_maxmgvi(a,                  stride,                  &c,                  &i,                  n)          print("max magnitude", c,           "index", i)   // Prints "max magnitude 4.3 index 5".

## See Also

### Calculating the index of the maximum value of a vector

- [vDSP_maxvi](accelerate/vdsp_maxvi.md)
- [vDSP_maxviD](accelerate/vdsp_maxvid.md)
- [vDSP_maxmgviD](accelerate/vdsp_maxmgvid.md)
