/* nag_outlier_peirce_two_var (g07gbc) Example Program.
 *
 * NAGPRODCODE Version.
 *
 * Copyright 2016 Numerical Algorithms Group.
 *
 * Mark 26, 2016.
 */

/* Pre-processor includes */
#include <stdio.h>
#include <math.h>
#include <nag.h>
#include <nag_stdlib.h>
#include <nagg07.h>

int main(void)
{

  /* Integer scalar and array declarations */
  Integer n, exit_status;

  /* NAG structures and types */
  Nag_Boolean outlier;
  NagError fail;

  /* Double scalar and array declarations */
  double e, var1, var2, x, lx, ux;

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

  exit_status = 0;

  printf("nag_outlier_peirce_two_var (g07gbc) Example Program Results\n");

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

  /* Loop through all the lines in the input file, reading in the sample size,
     variances and value to test */
  while (scanf("%" NAG_IFMT " %lf %lf %lf%*[^\n] ", &n, &e, &var1, &var2)
         != EOF) {

    /* Use nag_outlier_peirce_two_var (g07gbc) to check whether e is a
       potential outlier */
    outlier =
           nag_outlier_peirce_two_var(n, e, var1, var2, &x, &lx, &ux, &fail);
    if (fail.code != NE_NOERROR) {
      printf("Error from nag_outlier_peirce_two_var (g07gbc).\n%s\n",
             fail.message);
      exit_status = 1;
      goto END;
    }

    /* Display the results */
    printf(" Sample size                              : %10" NAG_IFMT "\n",
           n);
    printf(" Largest absolute residual (E)            : %10.3f\n", e);
    printf(" Variance for whole sample                : %10.3f\n", var1);
    printf(" Variance excluding E                     : %10.3f\n", var2);
    printf(" Estimate for cutoff (X)                  : %10.3f\n", x);
    printf(" Lower limit for cutoff (LX)              : %10.3f\n", lx);
    printf(" Upper limit for cutoff (UX)              : %10.3f\n", ux);
    if (outlier)
      printf(" E is a potential outlier\n");
    else
      printf(" E does not appear to be an outlier\n");
    printf("\n");
  }

END:

  return exit_status;
}