function spline_test12 ( )

%*****************************************************************************80
%
%% spline_test12() tests bpab_approx().
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    01 February 2009
%
%  Author
%
%    John Burkardt
%
  maxdata = 10;

  fprintf ( 1, '\n' );
  fprintf ( 1, 'TEST12\n' );
  fprintf ( 1, '  BP_APPROX evaluates the Bernstein polynomial\n' );
  fprintf ( 1, '    approximant to a function F(X).\n' );

  a = 1.0E+00;
  b = 3.0E+00;

  for ndata = 0 : 3 : 9

    for i = 0 : ndata

      if ( ndata == 0 )
        xdata(i+1) = 0.5E+00 * ( a + b );
      else
        xdata(i+1) = ( ( ndata - i ) * a   ...
                   + (         i ) * b ) ...
                   / ( ndata );
      end

      ydata(i+1) = sin ( xdata(i+1) );

    end

    fprintf ( 1, '\n' );
    fprintf ( 1, '    XDATA, YDATA\n' );
    fprintf ( 1, '\n' );
    for i = 1 : ndata + 1
      fprintf ( 1, '%14f  %14f\n', xdata(i), ydata(i) );
    end

    fprintf ( 1, '\n' );
    fprintf ( 1, '  Bernstein approximant of degree N = %d\n', ndata );
    fprintf ( 1, '\n' );
    fprintf ( 1, '    X      F(X)     BERN(X)    ERROR\n' );
    fprintf ( 1, '\n' );

    nsample = 2 * ndata + 1;

    for i = 1 : nsample

      if ( nsample == 1 )
        xval = 0.5E+00 * ( a + b );
      else
        xval = ( ( nsample - i     ) * a   ...
               + (           i - 1 ) * b ) ...
               / ( nsample     - 1 );
      end

      yval = bpab_approx ( ndata, a, b, ydata, xval );

      fprintf ( 1, '%14f  %14f  %14f  %14f\n', xval, sin(xval), ...
        yval, yval - sin(xval) );

    end

  end

  return
end
