constructors.f90 Source File


Source Code

submodule(specialmatrices_diagonal) diagonal_constructors
   use stdlib_linalg, only: diag
   implicit none(type, external)
contains
   module procedure initialize
   ! Utility function to construct a `Diagonal` matrix filled with zeros.
   A%n = n; allocate (A%dv(n)); A%dv = 0.0_dp
   end procedure

   module procedure construct
   ! Utility function to construct a `Diagonal` matrix from a rank-1 array.
   A%n = size(dv); A%dv = dv
   end procedure

   module procedure construct_constant
   ! Utility function to construct a `Diagonal` matrix with constant value.
   integer(ilp) :: i
   A%n = n; A%dv = [(d, i=1, n)]
   end procedure

   module procedure dense_to_diag
   ! Utility function to construct a `Diagonal` matrix from a rank-2 array.
   B = Diagonal(diag(A))
   end procedure
end submodule