NAG Library Manual, Mark 28.7
```/* nag_univar_estim_genpareto (g07bfc) Example Program.
*
* Copyright 2022 Numerical Algorithms Group.
*
* Mark 28.7, 2022.
*/
/* Pre-processor includes */
#include <math.h>
#include <nag.h>
#include <stdio.h>

int main(void) {
/* Integer scalar and array declarations */
Integer exit_status = 0;
Integer i, n;

/* Double scalar and array declarations */
double asvc[4], beta, ll, obsvc[4], xi, *y = 0;

/* Character scalar and array declarations */
char soptopt[12];

/* NAG types */
NagError fail;
Nag_OptimOpt optopt;

/* Initialize the error structure */
INIT_FAIL(fail);

printf("nag_univar_estim_genpareto (g07bfc) Example Program Results\n\n");

/* Skip header in data file */
scanf("%*[^\n] ");

scanf("%" NAG_IFMT "%11s%*[^\n]", &n, soptopt);
optopt = (Nag_OptimOpt)nag_enum_name_to_value(soptopt);

/* Allocate data array */
if (!(y = NAG_ALLOC(n, double))) {
printf("Allocation failure\n");
exit_status = -1;
goto END;
}

for (i = 1; i <= n; i++)
scanf("%lf", &y[i - 1]);
scanf("%*[^\n]");

/* Calculate the GPD parameter estimates */
nag_univar_estim_genpareto(n, y, optopt, &xi, &beta, asvc, obsvc, &ll, &fail);

/* Print parameter estimates */
switch (fail.code) {
case NE_NOERROR:
case NW_PARAM_DIST:
case NW_PARAM_DIST_ASYM:
case NW_PARAM_DIST_OBS:
printf(" Parameter estimates\n");
printf(" %-12s%12.6e\n %-12s%12.6e\n", "xi", xi, "beta", beta);
break;
default:
printf("Error from nag_univar_estim_genpareto (g07bfc).\n%s\n",
fail.message);
exit_status = -1;
goto END;
}

/* Print parameter distribution */
if (optopt == Nag_MOMMLE || optopt == Nag_PWMMLE) {
switch (fail.code) {
case NW_PARAM_DIST:
case NW_PARAM_DIST_OBS:
printf(" %s\n", fail.message);
exit_status = -1;
break;
default:
printf("\n Observed distribution\n");
printf(" %-20s%12.6e\n %-20s%12.6e\n %-20s%12.6e\n", "Var(xi)", obsvc[0],
"Var(beta)", obsvc[3], "Covar(xi,beta)", obsvc[1]);
printf("\n Final log-likelihood: %12.6e\n", ll);
}
} else {
switch (fail.code) {
case NW_PARAM_DIST:
case NW_PARAM_DIST_ASYM:
printf(" %s\n", fail.message);
exit_status = -1;
break;
default:
printf("\n Asymptotic distribution\n");
printf(" %-20s%12.6e\n %-20s%12.6e\n %-20s%12.6e\n", "Var(xi)", asvc[0],
"Var(beta)", asvc[3], "Covar(xi,beta)", asvc[1]);
}
}

END:
NAG_FREE(y);

return exit_status;
}
```