function [ azero, a, b ] = r8vec_sftf ( n, r )

%*****************************************************************************80
%
%% R8VEC_SFTF computes a "slow" forward Fourier transform of an R8VEC.
%
%  Discussion:
%
%    SFTF and SFTB are inverses of each other.  If we begin with data
%    R and apply SFTB to it, and then apply SFTB to the resulting AZERO, 
%    A, and B, we should get back the original R.
%
%  Licensing:
%
%    This code is distributed under the GNU LGPL license.
%
%  Modified:
%
%    24 July 2017
%
%  Author:
%
%    John Burkardt
%
%  Parameters:
%
%    Input, integer N, the number of data values.
%
%    Input, real R(N), the data to be transformed.
%
%    Output, real AZERO, = sum ( 1 <= I <= N ) R(I) / N.
%
%    Output, real A(N/2), B(N/2), the Fourier coefficients.
%
  azero = sum ( r(1:n) ) / n;

  for i = 1 : floor (  n / 2 )

    a(i) = 0.0;
    b(i) = 0.0;

    for j = 1 : n
      theta = 2 * i * ( j - 1 ) * pi / n;
      a(i) = a(i) + r(j) * cos ( theta );
      b(i) = b(i) + r(j) * sin ( theta );
    end

    a(i) = a(i) / n;
    b(i) = b(i) / n;

    if ( mod ( n, 2 ) == 1 || i ~= floor ( n / 2 ) )
      a(i) = 2.0 * a(i);
      b(i) = 2.0 * b(i);
    end

  end

  return
end
