```/* nag_multi_students_t (g01hdc) Example Program.
*
* Copyright 2017 Numerical Algorithms Group.
*
* Mark 26.2, 2017.
*/

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <nag.h>
#include <nag_stdlib.h>
#include <nagg01.h>

#define RC(I, J) rc[(I-1)*tdrc + J-1]

int main(void)
{
/* Integer scalar and array declarations */
Integer exit_status = 0;
Integer fmax, i, ierr, j, tdrc, n, nsampl, numsub;
Nag_Boolean iscov;

/* Double scalar and array declarations */
double epsabs, epsrel, errest, nu, prob;
double *a = 0, *b = 0, *delta = 0, *rc = 0;

/* NAG structures */
Nag_TailProbability *tail = 0;
NagError fail;

/* Character scalar and array declarations */
char nag_enum_arg[30 + 1];

printf("nag_multi_students_t (g01hdc) Example Program Results\n\n");

/* Skip heading in data file */
scanf("%*[^\n] ");
scanf("%" NAG_IFMT, &n);
scanf("%30s%*[^\n] ", nag_enum_arg);

/* nag_enum_name_to_value (x04nac).
* Converts NAG enum member name to value
*/
iscov = (Nag_Boolean) nag_enum_name_to_value(nag_enum_arg);

tdrc = n;
numsub = 200;
nsampl = 8;
fmax = 25000;
epsabs = 0.0;
epsrel = 1.0e-3;

if (!(tail = NAG_ALLOC(n, Nag_TailProbability)) ||
!(a = NAG_ALLOC(n, double)) ||
!(b = NAG_ALLOC(n, double)) ||
!(delta = NAG_ALLOC(n, double)) || !(rc = NAG_ALLOC(tdrc * n, double)))
{
printf("Allocation failure\n");
exit_status = -1;
goto END;
}

while (1) {
ierr = scanf("%*[^\n] ");

if (ierr == EOF)
break;
scanf("%lf%*[^\n] ", &nu);

/* read NAG enum member name as string and convert using
* nag_enum_name_to_value (x04nac).
*/
for (j = 0; j < n; j++) {
scanf("%30s", nag_enum_arg);
tail[j] = (Nag_TailProbability) nag_enum_name_to_value(nag_enum_arg);
}
scanf("%*[^\n]");

for (j = 0; j < n; j++)
scanf("%lf", &a[j]);
scanf("%*[^\n] ");

for (j = 0; j < n; j++)
scanf("%lf", &b[j]);
scanf("%*[^\n] ");

for (j = 0; j < n; j++)
scanf("%lf", &delta[j]);
scanf("%*[^\n] ");

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

/* nag_multi_students_t (g01hdc). Multivariate Student's t probability */
INIT_FAIL(fail);
prob = nag_multi_students_t(n, tail, a, b, nu, delta, iscov, rc, tdrc,
epsabs, epsrel, numsub, nsampl, fmax, &errest,
&fail);

if (fail.code == NE_NOERROR) {
printf("%24s%24.7e\n", "Probability:   ", prob);
printf("%24s%24.2e\n\n", "Error estimate:", errest);
}
else {
printf("nag_multi_students_t (g01hdc) failed.\n%s\n", fail.message);
exit_status = 1;
}
}

END:

NAG_FREE(a);
NAG_FREE(b);
NAG_FREE(delta);
NAG_FREE(rc);
NAG_FREE(tail);

return exit_status;
}
```