subroutine c_invert_tridiag_block_matrix_mat(Nb,N,Amat)
integer,intent(in) :: Nb
integer,intent(in) :: N
complex(8),dimension(Nb*N,Nb*N),intent(inout) :: Amat
complex(8),dimension(Nb-1,N,N) :: sub_
complex(8),dimension(Nb,N,N) :: diag_
complex(8),dimension(Nb-1,N,N) :: over_
complex(8),dimension(Nb,N,N) :: Inv
integer :: i,j,is,js,iblock
call get_tridiag(Nb,N,Amat,sub_,diag_,over_)
call inv_tridiag(Nb,N,sub_,diag_,over_,Inv)
Amat= dcmplx(0d0,0d0)
do iblock=1,Nb
do i=1,N
do j=1,N
is = i + (iblock-1)*N
js = j + (iblock-1)*N
Amat(is,js) = Inv(iblock,i,j)
enddo
enddo
enddo
end subroutine c_invert_tridiag_block_matrix_mat