|
|
|
|
@ -37,7 +37,7 @@
|
|
|
|
|
!
|
|
|
|
|
subroutine psb_cspspmm(a,b,c,info)
|
|
|
|
|
use psb_mat_mod
|
|
|
|
|
use psb_c_serial_mod, psb_protect_name => psb_cspspmm
|
|
|
|
|
!use psb_c_serial_mod, psb_protect_name => psb_cspspmm
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
|
|
type(psb_cspmat_type), intent(in) :: a,b
|
|
|
|
|
@ -48,6 +48,24 @@ subroutine psb_cspspmm(a,b,c,info)
|
|
|
|
|
integer(psb_ipk_) :: err_act
|
|
|
|
|
character(len=*), parameter :: name='psb_spspmm'
|
|
|
|
|
logical :: done_spmm
|
|
|
|
|
interface
|
|
|
|
|
subroutine psb_ccsrspspmm(a,b,c,info)
|
|
|
|
|
use psb_c_mat_mod, only : psb_c_csr_sparse_mat
|
|
|
|
|
import :: psb_ipk_
|
|
|
|
|
implicit none
|
|
|
|
|
class(psb_c_csr_sparse_mat), intent(in) :: a,b
|
|
|
|
|
type(psb_c_csr_sparse_mat), intent(out) :: c
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_ccsrspspmm
|
|
|
|
|
subroutine psb_ccscspspmm(a,b,c,info)
|
|
|
|
|
use psb_c_mat_mod, only : psb_c_csc_sparse_mat
|
|
|
|
|
import :: psb_ipk_
|
|
|
|
|
implicit none
|
|
|
|
|
class(psb_c_csc_sparse_mat), intent(in) :: a,b
|
|
|
|
|
type(psb_c_csc_sparse_mat), intent(out) :: c
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_ccscspspmm
|
|
|
|
|
end interface
|
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
|
info = psb_success_
|
|
|
|
|
|
|
|
|
|
@ -118,7 +136,7 @@ end subroutine psb_cspspmm
|
|
|
|
|
|
|
|
|
|
subroutine psb_lcspspmm(a,b,c,info)
|
|
|
|
|
use psb_mat_mod
|
|
|
|
|
use psb_c_serial_mod, psb_protect_name => psb_lcspspmm
|
|
|
|
|
! use psb_c_serial_mod, psb_protect_name => psb_lcspspmm
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
|
|
type(psb_lcspmat_type), intent(in) :: a,b
|
|
|
|
|
@ -129,7 +147,25 @@ subroutine psb_lcspspmm(a,b,c,info)
|
|
|
|
|
integer(psb_ipk_) :: err_act
|
|
|
|
|
character(len=*), parameter :: name='psb_spspmm'
|
|
|
|
|
logical :: done_spmm
|
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
|
interface
|
|
|
|
|
subroutine psb_lccsrspspmm(a,b,c,info)
|
|
|
|
|
use psb_c_mat_mod, only : psb_lc_csr_sparse_mat
|
|
|
|
|
import :: psb_ipk_
|
|
|
|
|
implicit none
|
|
|
|
|
class(psb_lc_csr_sparse_mat), intent(in) :: a,b
|
|
|
|
|
type(psb_lc_csr_sparse_mat), intent(out) :: c
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_lccsrspspmm
|
|
|
|
|
subroutine psb_lccscspspmm(a,b,c,info)
|
|
|
|
|
use psb_c_mat_mod, only : psb_lc_csc_sparse_mat
|
|
|
|
|
import :: psb_ipk_
|
|
|
|
|
implicit none
|
|
|
|
|
class(psb_lc_csc_sparse_mat), intent(in) :: a,b
|
|
|
|
|
type(psb_lc_csc_sparse_mat), intent(out) :: c
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_lccscspspmm
|
|
|
|
|
end interface
|
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
|
info = psb_success_
|
|
|
|
|
|
|
|
|
|
if ((a%is_null()) .or.(b%is_null())) then
|
|
|
|
|
|