constructors.f90 Source File


Source Code

submodule(specialmatrices_circulant) circulant_constructors
   implicit none(type, external)
contains
   module procedure initialize
   A%n = n; allocate(A%c(n)) ; A%c = 0.0_dp
   !> Initialize the workspace for the FFT and its inverse.
   A%c_hat = 0.0_dp
   end procedure

   module procedure construct
   integer(ilp) :: n
   !> Initialize the standard matrix data.
   n = size(c) ; A%n = n; A%c = c
   !> Fourier Transform of the generating vector.
   A%c_hat = fft(cmplx(c, kind=dp), n)
   end procedure
end submodule