infft - Algorithm for fast computation of an iNFFT using fast summation

 Computes an inverse NFFT, i.e. approximates the Fourier coefficients fhat
 in sums of the form
 
   f(y_j) = sum_{k = -N/2}^{N/2-1} fhat_k * exp(2*pi*i*k*y_j),  j = 1,...,M,
 
 where y_j and f(y_j) are given.

 For this purpose a new direct method is used in case that the number of 
 knots (M) equals the number of the unknown Fourier coefficients (N).
 Another restriction is that this algorithm only works in 1-D because it 
 uses the Lagrange interpolation scheme which is only feasible in the 
 one-dimensional setting.

 Hence, the computation of an iNFFT can be reduced to the computation of 
 some needed coefficients and the application of one FFT afterwards.
 For the evaluation of thereby occurrent sums fast summation is used.

 For more details see [1].

------------------------------------------------------------------------------------------------
 INPUT:
 y - Knots where the iNFFT should be computed      
 f - Function evaluations at points y                    
 m - Cut-off parameter for NFFT                    (optional)        default: m = 4
 p - Degree of smoothness of regularization        (optional)        default: p = 4
 n - Expansion degree                              (optional)        default: n = 2*N
 eps_I - Inner boundary (<=1/4)                    (optional)        default: eps_I = 4*p/n
 sigma - Oversampling factor for NFFT              (optional)        default: sigma = 2
------------------------------------------------------------------------------------------------
 OUTPUT:
 fbar - Computed Fourier coefficients
 times - Includes the following fields:            (optional)
   times.t_c - Computing time for coefficients c_l
   times.t_d - Computing time for coefficients d_j
   times.t_g - Computing time for coefficients g_l
   times.t_fft - Computing time for FFT
   times.t_total - Total computing time for iNFFT
   times.t_direct - Total computing time for the exact computation
------------------------------------------------------------------------------------------------

 The optional input arguments can be commited to infft.m as follows
     infft(y,'name',value,'name',value,...)
 e.g. 
     infft(y,'sigma',2).

 Use the Matlab script file simple_test.m for a simple demonstration.



Reference:

   [1]  M. Kircheis. Die Direkte Inverse NFFT,
        Bachelor Thesis, Chemnitz University of Technology, 2017.
