c_kronecker_product Function

function c_kronecker_product(A, B) result(AxB)

Arguments

Type IntentOptional Attributes Name
complex(kind=8), intent(in) :: A(:,:)
complex(kind=8), intent(in) :: B(:,:)

Return Value complex(kind=8), (size(A,1)*size(B,1),size(A,2)*size(B,2))


Source Code

function c_kronecker_product(A,B) result(AxB)
  complex(8),intent(in) :: A(:,:), B(:,:)
  integer               :: i,j
  integer               :: rowA,colA
  integer               :: rowB,colB
  complex(8)            :: AxB(size(A,1)*size(B,1),size(A,2)*size(B,2))
  AxB = zero
  rowA=size(A,1) ; colA=size(A,2)
  rowB=size(B,1) ; colB=size(B,2)
  forall(i=1:rowA,j=1:colA)
     AxB(1+rowB*(i-1):rowB*i,1+colB*(j-1):colB*j)  =  A(i,j)*B(:,:)
  end forall
end function c_kronecker_product