function [ yval, ypval ] = spline_linear_val ( ndata, tdata, ydata, tval )
%*****************************************************************************80
%
%% SPLINE_LINEAR_VAL evaluates a piecewise linear spline at a point.
%
% Discussion:
%
% Because of the extremely simple form of the linear spline,
% the raw data points ( TDATA(I), YDATA(I)) can be used directly to
% evaluate the spline at any point. No processing of the data
% is required.
%
% Licensing:
%
% This code is distributed under the GNU LGPL license.
%
% Modified:
%
% 24 January 2004
%
% Author:
%
% John Burkardt
%
% Parameters:
%
% Input, integer NDATA, the number of data points defining the spline.
%
% Input, real TDATA(NDATA), YDATA(NDATA), the values of the independent
% and dependent variables at the data points. The values of TDATA should
% be distinct and increasing.
%
% Input, real TVAL, the point at which the spline is to be evaluated.
%
% Output, real YVAL, YPVAL, the value of the spline and its first
% derivative dYdT at TVAL. YPVAL is not reliable if TVAL is exactly
% equal to TDATA(I) for some I.
%
%
% Find the interval [ TDATA(LEFT), TDATA(RIGHT) ] that contains, or is
% nearest to, TVAL.
%
[ left, right ] = r8vec_bracket ( ndata, tdata, tval );
%
% Now evaluate the piecewise linear function.
%
ypval = ( ydata(right) - ydata(left) ) / ( tdata(right) - tdata(left) );
yval = ydata(left) + ( tval - tdata(left) ) * ypval;
return
end