solve.f90 Source File


Source Code

submodule(specialmatrices_circulant) circulant_linear_solver
   implicit none(type, external)
contains
   module procedure solve_single_rhs
   x = real(ifft(fft(cmplx(b, kind=dp), A%n)/A%c_hat, A%n))/A%n
   end procedure solve_single_rhs

   module procedure solve_multi_rhs
   integer(ilp) :: i
   x = b
   do concurrent(i=1:size(b, 2))
      x(:, i) = solve(A, b(:, i))
   end do
   end procedure solve_multi_rhs
end submodule circulant_linear_solver