From 23261bafe63affcb8d61ad3d241ec3a222ff77ee Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 10:35:20 +0200 Subject: [PATCH] Restore funny fix for intel --- base/serial/psb_cspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_dspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_sspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_zspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- 4 files changed, 456 insertions(+), 32 deletions(-) diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.f90 index a62bbcf6..1ceed43d 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.f90 @@ -37,11 +37,10 @@ ! subroutine psb_cspspmm(a,b,c,info) use psb_mat_mod - use psb_c_csr_mat_mod - use psb_c_csc_mat_mod - use psb_c_serial_mod, psb_protect_name => psb_cspspmm - implicit none - +!!$ use psb_c_csr_mat_mod +!!$ use psb_c_csc_mat_mod + !use psb_c_serial_mod, psb_protect_name => psb_cspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_cspmat_type), intent(in) :: a,b type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_csymbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_cspmat_type + import :: psb_ipk_ + implicit none + type(psb_cspmat_type), intent(in) :: a,b + type(psb_cspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_csymbmm + subroutine psb_cbase_symbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_c_base_sparse_mat), intent(in) :: a,b + type(psb_c_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_cbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_cnumbmm(a,b,c) + use psb_c_mat_mod, only : psb_cspmat_type + import :: psb_ipk_ + implicit none + type(psb_cspmat_type), intent(in) :: a,b + type(psb_cspmat_type), intent(inout) :: c + end subroutine psb_cnumbmm + subroutine psb_cbase_numbmm(a,b,c) + use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_c_base_sparse_mat), intent(in) :: a,b + type(psb_c_csr_sparse_mat), intent(inout) :: c + end subroutine psb_cbase_numbmm + end interface psb_numbmm + 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_ @@ -120,9 +173,9 @@ end subroutine psb_cspspmm subroutine psb_lcspspmm(a,b,c,info) use psb_mat_mod - use psb_c_csr_mat_mod - use psb_c_csc_mat_mod - use psb_c_serial_mod, psb_protect_name => psb_lcspspmm +!!$ use psb_c_csr_mat_mod +!!$ use psb_c_csc_mat_mod + !use psb_c_serial_mod, psb_protect_name => psb_lcspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lcsymbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_lcspmat_type + import :: psb_ipk_ + implicit none + type(psb_lcspmat_type), intent(in) :: a,b + type(psb_lcspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lcsymbmm + subroutine psb_lcbase_symbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lc_base_sparse_mat), intent(in) :: a,b + type(psb_lc_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lcbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lcnumbmm(a,b,c) + use psb_c_mat_mod, only : psb_lcspmat_type + import :: psb_ipk_ + implicit none + type(psb_lcspmat_type), intent(in) :: a,b + type(psb_lcspmat_type), intent(inout) :: c + end subroutine psb_lcnumbmm + subroutine psb_lcbase_numbmm(a,b,c) + use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lc_base_sparse_mat), intent(in) :: a,b + type(psb_lc_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lcbase_numbmm + end interface psb_numbmm + 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_ diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.f90 index 60059208..216313e0 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.f90 @@ -37,11 +37,10 @@ ! subroutine psb_dspspmm(a,b,c,info) use psb_mat_mod - use psb_d_csr_mat_mod - use psb_d_csc_mat_mod - use psb_d_serial_mod, psb_protect_name => psb_dspspmm - implicit none - +!!$ use psb_d_csr_mat_mod +!!$ use psb_d_csc_mat_mod + !use psb_d_serial_mod, psb_protect_name => psb_dspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_dspmat_type), intent(in) :: a,b type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_dsymbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_dspmat_type + import :: psb_ipk_ + implicit none + type(psb_dspmat_type), intent(in) :: a,b + type(psb_dspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dsymbmm + subroutine psb_dbase_symbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_base_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_dnumbmm(a,b,c) + use psb_d_mat_mod, only : psb_dspmat_type + import :: psb_ipk_ + implicit none + type(psb_dspmat_type), intent(in) :: a,b + type(psb_dspmat_type), intent(inout) :: c + end subroutine psb_dnumbmm + subroutine psb_dbase_numbmm(a,b,c) + use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_base_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(inout) :: c + end subroutine psb_dbase_numbmm + end interface psb_numbmm + interface + subroutine psb_dcsrspspmm(a,b,c,info) + use psb_d_mat_mod, only : psb_d_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_csr_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dcsrspspmm + subroutine psb_dcscspspmm(a,b,c,info) + use psb_d_mat_mod, only : psb_d_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_csc_sparse_mat), intent(in) :: a,b + type(psb_d_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dcscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ end subroutine psb_dspspmm subroutine psb_ldspspmm(a,b,c,info) use psb_mat_mod - use psb_d_csr_mat_mod - use psb_d_csc_mat_mod - use psb_d_serial_mod, psb_protect_name => psb_ldspspmm +!!$ use psb_d_csr_mat_mod +!!$ use psb_d_csc_mat_mod + !use psb_d_serial_mod, psb_protect_name => psb_ldspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_ldsymbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ldspmat_type + import :: psb_ipk_ + implicit none + type(psb_ldspmat_type), intent(in) :: a,b + type(psb_ldspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldsymbmm + subroutine psb_ldbase_symbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_base_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_ldnumbmm(a,b,c) + use psb_d_mat_mod, only : psb_ldspmat_type + import :: psb_ipk_ + implicit none + type(psb_ldspmat_type), intent(in) :: a,b + type(psb_ldspmat_type), intent(inout) :: c + end subroutine psb_ldnumbmm + subroutine psb_ldbase_numbmm(a,b,c) + use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_base_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(inout) :: c + end subroutine psb_ldbase_numbmm + end interface psb_numbmm + interface + subroutine psb_ldcsrspspmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ld_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_csr_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldcsrspspmm + subroutine psb_ldcscspspmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ld_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_csc_sparse_mat), intent(in) :: a,b + type(psb_ld_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldcscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.f90 index 6c05fb79..4dc5df40 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.f90 @@ -37,11 +37,10 @@ ! subroutine psb_sspspmm(a,b,c,info) use psb_mat_mod - use psb_s_csr_mat_mod - use psb_s_csc_mat_mod - use psb_s_serial_mod, psb_protect_name => psb_sspspmm - implicit none - +!!$ use psb_s_csr_mat_mod +!!$ use psb_s_csc_mat_mod + !use psb_s_serial_mod, psb_protect_name => psb_sspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_sspmat_type), intent(in) :: a,b type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_ssymbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_sspmat_type + import :: psb_ipk_ + implicit none + type(psb_sspmat_type), intent(in) :: a,b + type(psb_sspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ssymbmm + subroutine psb_sbase_symbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_base_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_sbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_snumbmm(a,b,c) + use psb_s_mat_mod, only : psb_sspmat_type + import :: psb_ipk_ + implicit none + type(psb_sspmat_type), intent(in) :: a,b + type(psb_sspmat_type), intent(inout) :: c + end subroutine psb_snumbmm + subroutine psb_sbase_numbmm(a,b,c) + use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_base_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(inout) :: c + end subroutine psb_sbase_numbmm + end interface psb_numbmm + interface + subroutine psb_scsrspspmm(a,b,c,info) + use psb_s_mat_mod, only : psb_s_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_csr_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_scsrspspmm + subroutine psb_scscspspmm(a,b,c,info) + use psb_s_mat_mod, only : psb_s_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_csc_sparse_mat), intent(in) :: a,b + type(psb_s_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_scscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ end subroutine psb_sspspmm subroutine psb_lsspspmm(a,b,c,info) use psb_mat_mod - use psb_s_csr_mat_mod - use psb_s_csc_mat_mod - use psb_s_serial_mod, psb_protect_name => psb_lsspspmm +!!$ use psb_s_csr_mat_mod +!!$ use psb_s_csc_mat_mod + !use psb_s_serial_mod, psb_protect_name => psb_lsspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lssymbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_lsspmat_type + import :: psb_ipk_ + implicit none + type(psb_lsspmat_type), intent(in) :: a,b + type(psb_lsspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lssymbmm + subroutine psb_lsbase_symbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_base_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lsbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lsnumbmm(a,b,c) + use psb_s_mat_mod, only : psb_lsspmat_type + import :: psb_ipk_ + implicit none + type(psb_lsspmat_type), intent(in) :: a,b + type(psb_lsspmat_type), intent(inout) :: c + end subroutine psb_lsnumbmm + subroutine psb_lsbase_numbmm(a,b,c) + use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_base_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lsbase_numbmm + end interface psb_numbmm + interface + subroutine psb_lscsrspspmm(a,b,c,info) + use psb_s_mat_mod, only : psb_ls_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_csr_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lscsrspspmm + subroutine psb_lscscspspmm(a,b,c,info) + use psb_s_mat_mod, only : psb_ls_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_csc_sparse_mat), intent(in) :: a,b + type(psb_ls_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lscscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.f90 index 97ef2c81..831e4b9c 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.f90 @@ -37,11 +37,10 @@ ! subroutine psb_zspspmm(a,b,c,info) use psb_mat_mod - use psb_z_csr_mat_mod - use psb_z_csc_mat_mod - use psb_z_serial_mod, psb_protect_name => psb_zspspmm - implicit none - +!!$ use psb_z_csr_mat_mod +!!$ use psb_z_csc_mat_mod + !use psb_z_serial_mod, psb_protect_name => psb_zspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_zspmat_type), intent(in) :: a,b type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_zsymbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_zspmat_type + import :: psb_ipk_ + implicit none + type(psb_zspmat_type), intent(in) :: a,b + type(psb_zspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zsymbmm + subroutine psb_zbase_symbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_base_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_znumbmm(a,b,c) + use psb_z_mat_mod, only : psb_zspmat_type + import :: psb_ipk_ + implicit none + type(psb_zspmat_type), intent(in) :: a,b + type(psb_zspmat_type), intent(inout) :: c + end subroutine psb_znumbmm + subroutine psb_zbase_numbmm(a,b,c) + use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_base_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(inout) :: c + end subroutine psb_zbase_numbmm + end interface psb_numbmm + interface + subroutine psb_zcsrspspmm(a,b,c,info) + use psb_z_mat_mod, only : psb_z_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_csr_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zcsrspspmm + subroutine psb_zcscspspmm(a,b,c,info) + use psb_z_mat_mod, only : psb_z_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_csc_sparse_mat), intent(in) :: a,b + type(psb_z_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zcscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ end subroutine psb_zspspmm subroutine psb_lzspspmm(a,b,c,info) use psb_mat_mod - use psb_z_csr_mat_mod - use psb_z_csc_mat_mod - use psb_z_serial_mod, psb_protect_name => psb_lzspspmm +!!$ use psb_z_csr_mat_mod +!!$ use psb_z_csc_mat_mod + !use psb_z_serial_mod, psb_protect_name => psb_lzspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lzsymbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lzspmat_type + import :: psb_ipk_ + implicit none + type(psb_lzspmat_type), intent(in) :: a,b + type(psb_lzspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzsymbmm + subroutine psb_lzbase_symbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_base_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lznumbmm(a,b,c) + use psb_z_mat_mod, only : psb_lzspmat_type + import :: psb_ipk_ + implicit none + type(psb_lzspmat_type), intent(in) :: a,b + type(psb_lzspmat_type), intent(inout) :: c + end subroutine psb_lznumbmm + subroutine psb_lzbase_numbmm(a,b,c) + use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_base_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lzbase_numbmm + end interface psb_numbmm + interface + subroutine psb_lzcsrspspmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lz_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_csr_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzcsrspspmm + subroutine psb_lzcscspspmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lz_csc_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_csc_sparse_mat), intent(in) :: a,b + type(psb_lz_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzcscspspmm + end interface call psb_erractionsave(err_act) info = psb_success_