Example #1
0
/**
 * Tests a single evaluator function from the high-level interface.
 * 
 * See test_interp2d in this file for usage examples.
 */
static inline int test_single_high_level(
    double (*evaluator)(const interp2d_spline*, const double, const double, gsl_interp_accel*, gsl_interp_accel*),
    int (*evaluator_e)(const interp2d_spline*, const double, const double, gsl_interp_accel*, gsl_interp_accel*, double*),
    const interp2d_spline* interp, const double x, const double y, gsl_interp_accel* xa, gsl_interp_accel* ya, const double expected_results[], size_t i
) {
    if (expected_results != NULL) {
        int failures = 0;
        int status;
        double result = evaluator(interp, x, y, xa, ya);
        gsl_test_abs(result, expected_results[i], 1e-10, "high level %s %d", interp2d_spline_name(interp), i);
        if (fabs(result - expected_results[i]) > 1e-10) {
            // test failed
            failures++;
        }
        status = evaluator_e(interp, x, y, xa, ya, &result);
        if (status != GSL_SUCCESS) {
            // something went wrong
            failures++;
        }
        else {
            gsl_test_abs(result, expected_results[i], 1e-10, "high level POSIX %s %d", interp2d_spline_name(interp), i);
            if (fabs(result - expected_results[i]) > 1e-10) {
                // test failed - wrong result
                failures++;
            }
        }
    }
    else {
        return 0;
    }
}
Example #2
0
/* tests a single evaluator function from the high-level interface */
static int
test_single_high_level(
    double (*evaluator)(const gsl_spline2d *, const double, const double,
                        gsl_interp_accel *, gsl_interp_accel *),
    int (*evaluator_e)(const gsl_spline2d *, const double, const double,
                       gsl_interp_accel *, gsl_interp_accel *, double *),
    const gsl_spline2d * interp, const double x, const double y,
    gsl_interp_accel * xa, gsl_interp_accel * ya,
    const double expected_results[], size_t i)
{
  if (expected_results != NULL)
    {
      int status;
      double result = evaluator(interp, x, y, xa, ya);

      gsl_test_rel(result, expected_results[i], 1e-10,
                   "high level %s %d", gsl_spline2d_name(interp), i);

      status = evaluator_e(interp, x, y, xa, ya, &result);
      if (status == GSL_SUCCESS)
        {
          gsl_test_rel(result, expected_results[i], 1e-10,
                       "high level _e %s %d", gsl_spline2d_name(interp), i);
        }
    }

  return 0;
}