function hermite_test04 ( )

%*****************************************************************************80
%
%% HERMITE_TEST04 interpolates the Runge function using equally spaced data.
%
%  Licensing:
%
%    This code is distributed under the GNU LGPL license.
%
%  Modified:
%
%    31 October 2011
%
%  Author:
%
%    John Burkardt
%
  fprintf ( 1, '\n' );
  fprintf ( 1, 'HERMITE_TEST04\n' );
  fprintf ( 1, '  HERMITE computes the Hermite interpolant to data.\n' );
  fprintf ( 1, '  Here, f(x) is the Runge function\n' );
  fprintf ( 1, '  and the data is evaluated at equally spaced points.\n' );
  fprintf ( 1, '  As N increases, the maximum error grows.\n' );
  fprintf ( 1, '\n' );
  fprintf ( 1, '     N     Max | F(X) - H(F(X)) |\n' );
  fprintf ( 1, '\n' );

  for n = 3 : 2 : 15

    nd = 2 * ( n - 1 ) + 1;
    ns = 10 * ( n - 1 ) + 1;
    xlo = -5.0;
    xhi = +5.0;
    x = linspace ( xlo, xhi, n );

    y(1:n) = 1.0 ./ ( 1.0 + x(1:n).^2 );
    yp(1:n) = - 2.0 * x(1:n) ./ ( 1.0 + x(1:n).^2 ).^2;

    [ xd, yd, xdp, ydp ] = hermite_interpolant ( n, x, y, yp );
%
%  Compare exact and interpolant at sample points.
%
    xs = linspace ( xlo, xhi, ns );

    ys = dif_vals ( nd, xd, yd, ns, xs );

    max_dif = 0.0;
    for i = 1 : ns
      xt = xs(i);
      yt = 1.0 / ( 1.0 + xt * xt );
      max_dif = max ( max_dif, abs ( ys(i) - yt ) );
    end

    fprintf ( 1, '  %4d  %14g\n', n, max_dif );

  end

  return
end
