### 21.8 Maximum and Minimum values

The following functions find the maximum and minimum values of a dataset (or their indices). If the data contains `NaN`s then a `NaN` will be returned, since the maximum or minimum value is undefined. For functions which return an index, the location of the first `NaN` in the array is returned.

Function: double gsl_stats_max (const double data[], size_t stride, size_t n)

  This function returns the maximum value in data, a dataset of length n with stride stride. The maximum value is defined as the value of the element x_i which satisfies x_i >= x_j for all j.

  If you want instead to find the element with the largest absolute magnitude you will need to apply `fabs` or `abs` to your data before calling this function.

Function: double gsl_stats_min (const double data[], size_t stride, size_t n)

  This function returns the minimum value in data, a dataset of length n with stride stride. The minimum value is defined as the value of the element x_i which satisfies x_i <= x_j for all j.

  If you want instead to find the element with the smallest absolute magnitude you will need to apply `fabs` or `abs` to your data before calling this function.

Function: void gsl_stats_minmax (double * min, double * max, const double data[], size_t stride, size_t n)

  This function finds both the minimum and maximum values min, max in data in a single pass.

Function: size_t gsl_stats_max_index (const double data[], size_t stride, size_t n)

  This function returns the index of the maximum value in data, a dataset of length n with stride stride. The maximum value is defined as the value of the element x_i which satisfies x_i >= x_j for all j. When there are several equal maximum elements then the first one is chosen.

Function: size_t gsl_stats_min_index (const double data[], size_t stride, size_t n)

  This function returns the index of the minimum value in data, a dataset of length n with stride stride. The minimum value is defined as the value of the element x_i which satisfies x_i >= x_j for all j. When there are several equal minimum elements then the first one is chosen.

Function: void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], size_t stride, size_t n)

  This function returns the indexes min_index, max_index of the minimum and maximum values in data in a single pass.