From b29166c60a9909f90438b63423d35149d5c9b3c1 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 4 May 2026 14:20:48 +0200 Subject: [PATCH] New templated H and C files in CBIND, take 1 --- cbind/base/Makefile | 2 +- cbind/base/psb_c_cbase.h | 28 ++++++++++---------- cbind/base/psb_c_dbase.c | 22 ++++++++-------- cbind/base/psb_c_dbase.h | 55 +++++++++++++++++++--------------------- cbind/base/psb_c_dcomm.h | 6 +++-- cbind/base/psb_c_sbase.h | 52 ++++++++++++++++++------------------- cbind/base/psb_c_scomm.h | 6 +++-- cbind/base/psb_c_zbase.h | 48 +++++++++++++++++------------------ cbind/base/psb_c_zcomm.h | 6 +++-- 9 files changed, 115 insertions(+), 110 deletions(-) diff --git a/cbind/base/Makefile b/cbind/base/Makefile index 893d0f0c..580843bb 100644 --- a/cbind/base/Makefile +++ b/cbind/base/Makefile @@ -48,7 +48,7 @@ $(FOBJS): $(FMODS) $(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) $(FCUDEFINES) -c $< -o $@ -objs: $(OBJS) $(CMOD) +objs: $(OBJS) /bin/cp -p *$(.mod) $(CMOD) $(HERE) lib: objs $(AR) $(HERE)/$(LIBNAME) $(OBJS) diff --git a/cbind/base/psb_c_cbase.h b/cbind/base/psb_c_cbase.h index c671dabd..b6a04d25 100644 --- a/cbind/base/psb_c_cbase.h +++ b/cbind/base/psb_c_cbase.h @@ -18,16 +18,16 @@ typedef struct PSB_C_CSPMAT { /* dense vectors */ psb_c_cvector* psb_c_new_cvector(); psb_i_t psb_c_cvect_get_nrows(psb_c_cvector *xh); -psb_c_t *psb_c_cvect_get_cpy( psb_c_cvector *xh); -psb_i_t psb_c_cvect_f_get_cpy(psb_c_t *v, psb_c_cvector *xh); +psb_c_t *psb_c_cvect_get_cpy(psb_c_cvector *xh); +psb_i_t psb_c_cvect_f_get_cpy(psb_c_t *v, psb_c_cvector *xh); psb_i_t psb_c_cvect_zero(psb_c_cvector *xh); psb_i_t *psb_c_cvect_f_get_pnt(psb_c_cvector *xh); -psb_i_t psb_c_cvect_clone(psb_c_cvector *xh,psb_c_cvector *yh); +psb_i_t psb_c_cvect_clone(psb_c_cvector *xh, psb_c_cvector *yh); psb_i_t psb_c_cgeall(psb_c_cvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_cgeall_remote(psb_c_cvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_cgeall_remote_options(psb_c_cvector *xh, psb_c_descriptor *cdh, - psb_i_t bldmode, psb_i_t duple); + psb_i_t bldmode, psb_i_t dupl); psb_i_t psb_c_cgeins(psb_i_t nz, const psb_l_t *irw, const psb_c_t *val, psb_c_cvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_cgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_c_t *val, @@ -35,7 +35,8 @@ psb_i_t psb_c_cgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_c_t *val, psb_i_t psb_c_cgeasb(psb_c_cvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_cgeasb_options(psb_c_cvector *xh, psb_c_descriptor *cdh, psb_i_t dupl); psb_i_t psb_c_cgeasb_options_format(psb_c_cvector *xh, psb_c_descriptor *cdh, - const char *fmt, psb_i_t dupl); + const char *fmt, psb_i_t dupl); + psb_i_t psb_c_cgefree(psb_c_cvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_cgereinit(psb_c_cvector *xh, psb_c_descriptor *cdh, bool clear); psb_c_t psb_c_cgetelem(psb_c_cvector *xh,psb_l_t index,psb_c_descriptor *cd); @@ -43,6 +44,7 @@ psb_c_t psb_c_cmatgetelem(psb_c_cspmat *ah,psb_l_t rowindex,psb_l_t colindex, psb_i_t psb_c_csetelem(psb_l_t index, psb_c_t val, psb_c_cvector *xh, psb_c_descriptor *cd); + /* sparse matrices*/ psb_c_cspmat* psb_c_new_cspmat(); psb_i_t psb_c_cspall(psb_c_cspmat *mh, psb_c_descriptor *cdh); @@ -54,16 +56,16 @@ psb_i_t psb_c_cspins(psb_i_t nz, const psb_l_t *irw, const psb_l_t *icl, psb_i_t psb_c_cmat_get_nrows(psb_c_cspmat *mh); psb_i_t psb_c_cmat_get_ncols(psb_c_cspmat *mh); psb_l_t psb_c_cnnz(psb_c_cspmat *mh,psb_c_descriptor *cdh); -bool psb_c_cis_matupd(psb_c_cspmat *mh,psb_c_descriptor *cdh); -bool psb_c_cis_matasb(psb_c_cspmat *mh,psb_c_descriptor *cdh); -bool psb_c_cis_matbld(psb_c_cspmat *mh,psb_c_descriptor *cdh); +bool psb_c_cis_matupd(psb_c_cspmat *mh,psb_c_descriptor *cdh); +bool psb_c_cis_matasb(psb_c_cspmat *mh,psb_c_descriptor *cdh); +bool psb_c_cis_matbld(psb_c_cspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_cset_matupd(psb_c_cspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_cset_matasb(psb_c_cspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_cset_matbld(psb_c_cspmat *mh,psb_c_descriptor *cdh); -psb_i_t psb_c_ccopy_mat(psb_c_cspmat *ah,psb_c_cspmat *bh,psb_c_descriptor *cdh); +psb_i_t psb_c_ccopy_mat(psb_c_cspmat *ah,psb_c_cspmat *bh,psb_c_descriptor *cdh); -psb_i_t psb_c_cspasb_opt(psb_c_cspmat *mh, psb_c_descriptor *cdh, - const char *afmt, psb_i_t upd, psb_i_t dupl); +/* psb_i_t psb_c_cspasb_opt(psb_c_cspmat *mh, psb_c_descriptor *cdh, */ +/* const char *afmt, psb_i_t upd, psb_i_t dupl); */ psb_i_t psb_c_csprn(psb_c_cspmat *mh, psb_c_descriptor *cdh, _Bool clear); psb_i_t psb_c_cmat_name_print(psb_c_cspmat *mh, char *name); psb_i_t psb_c_cvect_set_scal(psb_c_cvector *xh, psb_c_t val); @@ -101,8 +103,8 @@ psb_i_t psb_c_cgeinv(psb_c_cvector *xh,psb_c_cvector *yh,psb_c_descriptor *cdh); psb_i_t psb_c_cgeinv_check(psb_c_cvector *xh,psb_c_cvector *yh,psb_c_descriptor *cdh, bool flag); psb_i_t psb_c_cgeabs(psb_c_cvector *xh,psb_c_cvector *yh,psb_c_cvector *cdh); psb_i_t psb_c_cgecmp(psb_c_cvector *xh,psb_s_t ch,psb_c_cvector *zh,psb_c_descriptor *cdh); -bool psb_c_cgecmpmat(psb_c_cspmat *ah,psb_c_cspmat *bh,psb_s_t tol,psb_c_descriptor *cdh); -bool psb_c_cgecmpmat_val(psb_c_cspmat *ah,psb_c_t val,psb_s_t tol,psb_c_descriptor *cdh); +bool psb_c_cgecmpmat(psb_c_cspmat *ah,psb_c_cspmat *bh,psb_s_t tol,psb_c_descriptor *cdh); +bool psb_c_cgecmpmat_val(psb_c_cspmat *ah,psb_c_t val,psb_s_t tol,psb_c_descriptor *cdh); psb_i_t psb_c_cgeaddconst(psb_c_cvector *xh,psb_c_t bh,psb_c_cvector *zh,psb_c_descriptor *cdh); psb_s_t psb_c_cgenrm2_weight(psb_c_cvector *xh,psb_c_cvector *wh,psb_c_descriptor *cdh); psb_s_t psb_c_cgenrm2_weightmask(psb_c_cvector *xh,psb_c_cvector *wh,psb_c_cvector *idvh,psb_c_descriptor *cdh); diff --git a/cbind/base/psb_c_dbase.c b/cbind/base/psb_c_dbase.c index 6b619194..6b31d18e 100644 --- a/cbind/base/psb_c_dbase.c +++ b/cbind/base/psb_c_dbase.c @@ -4,27 +4,27 @@ psb_c_dvector* psb_c_new_dvector() { psb_c_dvector* temp; - + temp=(psb_c_dvector *) malloc(sizeof(psb_c_dvector)); temp->dvector=NULL; return(temp); } psb_d_t* psb_c_dvect_get_cpy(psb_c_dvector *xh) -{ +{ psb_d_t *temp=NULL; - psb_i_t vsize=0; - - if ((vsize=psb_c_dvect_get_nrows(xh))<0) + psb_i_t vsize=0; + + if ((vsize=psb_c_dvect_get_nrows(xh))<0) return(temp); - - if (vsize==0) + + if (vsize==0) vsize=1; - + if ((temp=(psb_d_t *)malloc(vsize*sizeof(psb_d_t)))!=NULL) psb_c_dvect_f_get_cpy(temp,xh); - - return(temp); + + return(temp); } @@ -32,7 +32,7 @@ psb_d_t* psb_c_dvect_get_cpy(psb_c_dvector *xh) psb_c_dspmat* psb_c_new_dspmat() { psb_c_dspmat* temp; - + temp=(psb_c_dspmat *) malloc(sizeof(psb_c_dspmat)); temp->dspmat=NULL; return(temp); diff --git a/cbind/base/psb_c_dbase.h b/cbind/base/psb_c_dbase.h index d3c00744..174257bd 100644 --- a/cbind/base/psb_c_dbase.h +++ b/cbind/base/psb_c_dbase.h @@ -18,15 +18,16 @@ typedef struct PSB_C_DSPMAT { /* dense vectors */ psb_c_dvector* psb_c_new_dvector(); psb_i_t psb_c_dvect_get_nrows(psb_c_dvector *xh); -psb_d_t *psb_c_dvect_get_cpy( psb_c_dvector *xh); -psb_i_t psb_c_dvect_f_get_cpy(psb_d_t *v, psb_c_dvector *xh); +psb_d_t *psb_c_dvect_get_cpy(psb_c_dvector *xh); +psb_i_t psb_c_dvect_f_get_cpy(psb_d_t *v, psb_c_dvector *xh); psb_i_t psb_c_dvect_zero(psb_c_dvector *xh); -psb_d_t *psb_c_dvect_f_get_pnt( psb_c_dvector *xh); -psb_i_t psb_c_dvect_clone(psb_c_dvector *xh,psb_c_dvector *yh); +psb_i_t *psb_c_dvect_f_get_pnt(psb_c_dvector *xh); +psb_i_t psb_c_dvect_clone(psb_c_dvector *xh, psb_c_dvector *yh); + psb_i_t psb_c_dgeall(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dgeall_remote(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dgeall_remote_options(psb_c_dvector *xh, psb_c_descriptor *cdh, - psb_i_t bldmode, psb_i_t duple); + psb_i_t bldmode, psb_i_t dupl); psb_i_t psb_c_dgeins(psb_i_t nz, const psb_l_t *irw, const psb_d_t *val, psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_d_t *val, @@ -34,16 +35,16 @@ psb_i_t psb_c_dgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_d_t *val, psb_i_t psb_c_dgeasb(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dgeasb_options(psb_c_dvector *xh, psb_c_descriptor *cdh, psb_i_t dupl); psb_i_t psb_c_dgeasb_options_format(psb_c_dvector *xh, psb_c_descriptor *cdh, - psb_i_t dupl, const char *fmt); + const char *fmt, psb_i_t dupl); + psb_i_t psb_c_dgefree(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dgereinit(psb_c_dvector *xh, psb_c_descriptor *cdh, bool clear); psb_d_t psb_c_dgetelem(psb_c_dvector *xh,psb_l_t index,psb_c_descriptor *cd); -psb_d_t psb_c_dmatgetelem(psb_c_dspmat *ah,psb_l_t rowindex, - psb_l_t colindex,psb_c_descriptor *cdh); -psb_d_t psb_c_dgetelem(psb_c_dvector *xh, psb_l_t index,psb_c_descriptor *cd); -psb_i_t psb_c_dsetelem(psb_l_t index, psb_d_t val, +psb_d_t psb_c_dmatgetelem(psb_c_dspmat *ah,psb_l_t rowindex,psb_l_t colindex,psb_c_descriptor *cdh); +psb_i_t psb_c_dsetelem(psb_l_t index, psb_c_t val, psb_c_dvector *xh, psb_c_descriptor *cd); + /* sparse matrices*/ psb_c_dspmat* psb_c_new_dspmat(); psb_i_t psb_c_dspall(psb_c_dspmat *mh, psb_c_descriptor *cdh); @@ -55,35 +56,35 @@ psb_i_t psb_c_dspins(psb_i_t nz, const psb_l_t *irw, const psb_l_t *icl, psb_i_t psb_c_dmat_get_nrows(psb_c_dspmat *mh); psb_i_t psb_c_dmat_get_ncols(psb_c_dspmat *mh); psb_l_t psb_c_dnnz(psb_c_dspmat *mh,psb_c_descriptor *cdh); -bool psb_c_dis_matupd(psb_c_dspmat *mh,psb_c_descriptor *cdh); -bool psb_c_dis_matasb(psb_c_dspmat *mh,psb_c_descriptor *cdh); -bool psb_c_dis_matbld(psb_c_dspmat *mh,psb_c_descriptor *cdh); +bool psb_c_dis_matupd(psb_c_dspmat *mh,psb_c_descriptor *cdh); +bool psb_c_dis_matasb(psb_c_dspmat *mh,psb_c_descriptor *cdh); +bool psb_c_dis_matbld(psb_c_dspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_dset_matupd(psb_c_dspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_dset_matasb(psb_c_dspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_dset_matbld(psb_c_dspmat *mh,psb_c_descriptor *cdh); -psb_i_t psb_c_dcopy_mat(psb_c_dspmat *ah,psb_c_dspmat *bh,psb_c_descriptor *cdh); +psb_i_t psb_c_dcopy_mat(psb_c_dspmat *ah,psb_c_dspmat *bh,psb_c_descriptor *cdh); -psb_i_t psb_c_dspasb_opt(psb_c_dspmat *mh, psb_c_descriptor *cdh, - const char *afmt, psb_i_t upd, psb_i_t dupl); +/* psb_i_t psb_c_dspasb_opt(psb_c_dspmat *mh, psb_c_descriptor *cdh, */ +/* const char *afmt, psb_i_t upd, psb_i_t dupl); */ psb_i_t psb_c_dsprn(psb_c_dspmat *mh, psb_c_descriptor *cdh, _Bool clear); psb_i_t psb_c_dmat_name_print(psb_c_dspmat *mh, char *name); -psb_i_t psb_c_dvect_set_scal(psb_c_dvector *xh, psb_d_t val); -psb_i_t psb_c_dvect_set_scal_bound(psb_c_dvector *xh, psb_d_t val, +psb_i_t psb_c_dvect_set_scal(psb_c_dvector *xh, psb_d_t val); +psb_i_t psb_c_dvect_set_scal_bound(psb_c_dvector *xh, psb_c_t val, psb_i_t ifirst, psb_i_t ilast); -psb_i_t psb_c_dvect_set_vect(psb_c_dvector *xh, psb_d_t *val, psb_i_t n); +psb_i_t psb_c_dvect_set_vect(psb_c_dvector *xh, psb_d_t *val, psb_i_t n); psb_d_t psb_c_dvect_get_entry(psb_c_dvector *xh, psb_i_t index); -psb_i_t psb_c_dvect_set_entry(psb_c_dvector *xh, psb_i_t index, psb_d_t val); +psb_i_t psb_c_dvect_set_entry(psb_c_dvector *xh, psb_i_t index, psb_c_t val); /* psblas computational routines */ psb_d_t psb_c_dgedot(psb_c_dvector *xh, psb_c_dvector *yh, psb_c_descriptor *cdh); psb_d_t psb_c_dgenrm2(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_d_t psb_c_dgeamax(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_d_t psb_c_dgeasum(psb_c_dvector *xh, psb_c_descriptor *cdh); -psb_d_t psb_c_dgenrmi(psb_c_dvector *xh, psb_c_descriptor *cdh); +psb_d_t psb_c_dgenrmi(psb_c_dspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_dgeaxpby(psb_d_t alpha, psb_c_dvector *xh, psb_d_t beta, psb_c_dvector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_dgeaxpbyz(psb_d_t alpha, psb_c_dvector *xh, - psb_d_t beta, psb_c_dvector *yh, psb_c_dvector *zh, psb_c_descriptor *cdh); + psb_d_t beta, psb_c_dvector *yh, psb_c_dvector *zh, psb_c_descriptor *cdh); psb_i_t psb_c_dspmm(psb_d_t alpha, psb_c_dspmat *ah, psb_c_dvector *xh, psb_d_t beta, psb_c_dvector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_dspmm_opt(psb_d_t alpha, psb_c_dspmat *ah, psb_c_dvector *xh, @@ -100,21 +101,17 @@ psb_i_t psb_c_dgediv2(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_dvector *zh,psb_ psb_i_t psb_c_dgediv2_check(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_dvector *zh,psb_c_descriptor *cdh, bool flag); psb_i_t psb_c_dgeinv(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_descriptor *cdh); psb_i_t psb_c_dgeinv_check(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_descriptor *cdh, bool flag); -psb_i_t psb_c_dgeabs(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_descriptor *cdh); +psb_i_t psb_c_dgeabs(psb_c_dvector *xh,psb_c_dvector *yh,psb_c_dvector *cdh); psb_i_t psb_c_dgecmp(psb_c_dvector *xh,psb_d_t ch,psb_c_dvector *zh,psb_c_descriptor *cdh); -bool psb_c_dgecmpmat(psb_c_dspmat *ah,psb_c_dspmat *bh,psb_d_t tol,psb_c_descriptor *cdh); -bool psb_c_dgecmpmat_val(psb_c_dspmat *ah,psb_d_t val,psb_d_t tol,psb_c_descriptor *cdh); +bool psb_c_dgecmpmat(psb_c_dspmat *ah,psb_c_dspmat *bh,psb_d_t tol,psb_c_descriptor *cdh); +bool psb_c_dgecmpmat_val(psb_c_dspmat *ah,psb_d_t val,psb_d_t tol,psb_c_descriptor *cdh); psb_i_t psb_c_dgeaddconst(psb_c_dvector *xh,psb_d_t bh,psb_c_dvector *zh,psb_c_descriptor *cdh); psb_d_t psb_c_dgenrm2_weight(psb_c_dvector *xh,psb_c_dvector *wh,psb_c_descriptor *cdh); psb_d_t psb_c_dgenrm2_weightmask(psb_c_dvector *xh,psb_c_dvector *wh,psb_c_dvector *idvh,psb_c_descriptor *cdh); -psb_i_t psb_c_dmask(psb_c_dvector *ch,psb_c_dvector *xh,psb_c_dvector *mh, bool *t, psb_c_descriptor *cdh); -psb_d_t psb_c_dgemin(psb_c_dvector *xh,psb_c_descriptor *cdh); -psb_d_t psb_c_dminquotient(psb_c_dvector *xh,psb_c_dvector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_dspscal(psb_d_t alpha, psb_c_dspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_dspscalpid(psb_d_t alpha, psb_c_dspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_dspaxpby(psb_d_t alpha, psb_c_dspmat *ah, psb_d_t beta, psb_c_dspmat *bh, psb_c_descriptor *cdh); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/cbind/base/psb_c_dcomm.h b/cbind/base/psb_c_dcomm.h index cbffc3b1..4e8bdb46 100644 --- a/cbind/base/psb_c_dcomm.h +++ b/cbind/base/psb_c_dcomm.h @@ -12,13 +12,15 @@ extern "C" { psb_i_t psb_c_dovrl(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_dovrl_opt(psb_c_dvector *xh, psb_c_descriptor *cdh, psb_i_t update, psb_i_t mode); - psb_i_t psb_c_dvscatter(psb_l_t ng, psb_d_t *gx, psb_c_dvector *xh, psb_c_descriptor *cdh); + psb_i_t psb_c_dvscatter(psb_l_t ng, psb_c_t *gx, psb_c_dvector *xh, + psb_c_descriptor *cdh); psb_d_t* psb_c_dvgather(psb_c_dvector *xh, psb_c_descriptor *cdh); psb_c_dspmat* psb_c_dspgather(psb_c_dspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_dvgather_f(psb_d_t* gv, psb_c_dvector *xh, psb_c_descriptor *cdh); - psb_i_t psb_c_dspgather_f(psb_c_dspmat* ga, psb_c_dspmat *ah, psb_c_descriptor *cdh); + psb_i_t psb_c_dspgather_f(psb_c_dspmat* ga, psb_c_dspmat *ah, + psb_c_descriptor *cdh); #ifdef __cplusplus diff --git a/cbind/base/psb_c_sbase.h b/cbind/base/psb_c_sbase.h index abc96b2a..c50ebc35 100644 --- a/cbind/base/psb_c_sbase.h +++ b/cbind/base/psb_c_sbase.h @@ -18,16 +18,16 @@ typedef struct PSB_C_SSPMAT { /* dense vectors */ psb_c_svector* psb_c_new_svector(); psb_i_t psb_c_svect_get_nrows(psb_c_svector *xh); -psb_s_t *psb_c_svect_get_cpy( psb_c_svector *xh); -psb_i_t psb_c_svect_f_get_cpy(psb_s_t *v, psb_c_svector *xh); +psb_s_t *psb_c_svect_get_cpy(psb_c_svector *xh); +psb_i_t psb_c_svect_f_get_cpy(psb_s_t *v, psb_c_svector *xh); psb_i_t psb_c_svect_zero(psb_c_svector *xh); -psb_s_t *psb_c_svect_f_get_pnt( psb_c_svector *xh); -psb_i_t psb_c_svect_clone(psb_c_svector *xh,psb_c_svector *yh); +psb_i_t *psb_c_svect_f_get_pnt(psb_c_svector *xh); +psb_i_t psb_c_svect_clone(psb_c_svector *xh, psb_c_svector *yh); psb_i_t psb_c_sgeall(psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sgeall_remote(psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sgeall_remote_options(psb_c_svector *xh, psb_c_descriptor *cdh, - psb_i_t bldmode, psb_i_t duple); + psb_i_t bldmode, psb_i_t dupl); psb_i_t psb_c_sgeins(psb_i_t nz, const psb_l_t *irw, const psb_s_t *val, psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_s_t *val, @@ -35,15 +35,16 @@ psb_i_t psb_c_sgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_s_t *val, psb_i_t psb_c_sgeasb(psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sgeasb_options(psb_c_svector *xh, psb_c_descriptor *cdh, psb_i_t dupl); psb_i_t psb_c_sgeasb_options_format(psb_c_svector *xh, psb_c_descriptor *cdh, - const char *fmt, psb_i_t dupl); + const char *fmt, psb_i_t dupl); + psb_i_t psb_c_sgefree(psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sgereinit(psb_c_svector *xh, psb_c_descriptor *cdh, bool clear); psb_s_t psb_c_sgetelem(psb_c_svector *xh,psb_l_t index,psb_c_descriptor *cd); -psb_s_t psb_c_smatgetelem(psb_c_sspmat *ah,psb_l_t rowindex, - psb_l_t colindex,psb_c_descriptor *cdh); -psb_i_t psb_c_ssetelem(psb_l_t index, psb_s_t val, +psb_s_t psb_c_smatgetelem(psb_c_sspmat *ah,psb_l_t rowindex,psb_l_t colindex,psb_c_descriptor *cdh); +psb_i_t psb_c_ssetelem(psb_l_t index, psb_c_t val, psb_c_svector *xh, psb_c_descriptor *cd); + /* sparse matrices*/ psb_c_sspmat* psb_c_new_sspmat(); psb_i_t psb_c_sspall(psb_c_sspmat *mh, psb_c_descriptor *cdh); @@ -55,24 +56,24 @@ psb_i_t psb_c_sspins(psb_i_t nz, const psb_l_t *irw, const psb_l_t *icl, psb_i_t psb_c_smat_get_nrows(psb_c_sspmat *mh); psb_i_t psb_c_smat_get_ncols(psb_c_sspmat *mh); psb_l_t psb_c_snnz(psb_c_sspmat *mh,psb_c_descriptor *cdh); -bool psb_c_sis_matupd(psb_c_sspmat *mh,psb_c_descriptor *cdh); -bool psb_c_sis_matasb(psb_c_sspmat *mh,psb_c_descriptor *cdh); -bool psb_c_sis_matbld(psb_c_sspmat *mh,psb_c_descriptor *cdh); +bool psb_c_sis_matupd(psb_c_sspmat *mh,psb_c_descriptor *cdh); +bool psb_c_sis_matasb(psb_c_sspmat *mh,psb_c_descriptor *cdh); +bool psb_c_sis_matbld(psb_c_sspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_sset_matupd(psb_c_sspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_sset_matasb(psb_c_sspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_sset_matbld(psb_c_sspmat *mh,psb_c_descriptor *cdh); -psb_i_t psb_c_scopy_mat(psb_c_sspmat *ah,psb_c_sspmat *bh,psb_c_descriptor *cdh); - - psb_i_t psb_c_sspasb_opt(psb_c_sspmat *mh, psb_c_descriptor *cdh, - const char *afmt, psb_i_t upd, psb_i_t dupl); +psb_i_t psb_c_scopy_mat(psb_c_sspmat *ah,psb_c_sspmat *bh,psb_c_descriptor *cdh); + +/* psb_i_t psb_c_sspasb_opt(psb_c_sspmat *mh, psb_c_descriptor *cdh, */ +/* const char *afmt, psb_i_t upd, psb_i_t dupl); */ psb_i_t psb_c_ssprn(psb_c_sspmat *mh, psb_c_descriptor *cdh, _Bool clear); psb_i_t psb_c_smat_name_print(psb_c_sspmat *mh, char *name); -psb_i_t psb_c_svect_set_scal(psb_c_svector *xh, psb_s_t val); -psb_i_t psb_c_svect_set_scal_bound(psb_c_svector *xh, psb_s_t val, +psb_i_t psb_c_svect_set_scal(psb_c_svector *xh, psb_s_t val); +psb_i_t psb_c_svect_set_scal_bound(psb_c_svector *xh, psb_c_t val, psb_i_t ifirst, psb_i_t ilast); -psb_i_t psb_c_svect_set_vect(psb_c_svector *xh, psb_s_t *val, psb_i_t n); +psb_i_t psb_c_svect_set_vect(psb_c_svector *xh, psb_s_t *val, psb_i_t n); psb_s_t psb_c_svect_get_entry(psb_c_svector *xh, psb_i_t index); -psb_i_t psb_c_svect_set_entry(psb_c_svector *xh, psb_i_t index, psb_s_t val); +psb_i_t psb_c_svect_set_entry(psb_c_svector *xh, psb_i_t index, psb_c_t val); /* psblas computational routines */ psb_s_t psb_c_sgedot(psb_c_svector *xh, psb_c_svector *yh, psb_c_descriptor *cdh); @@ -83,7 +84,7 @@ psb_s_t psb_c_sgenrmi(psb_c_sspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_sgeaxpby(psb_s_t alpha, psb_c_svector *xh, psb_s_t beta, psb_c_svector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_sgeaxpbyz(psb_s_t alpha, psb_c_svector *xh, - psb_s_t beta, psb_c_svector *yh, psb_c_svector *zh, psb_c_descriptor *cdh); + psb_s_t beta, psb_c_svector *yh, psb_c_svector *zh, psb_c_descriptor *cdh); psb_i_t psb_c_sspmm(psb_s_t alpha, psb_c_sspmat *ah, psb_c_svector *xh, psb_s_t beta, psb_c_svector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_sspmm_opt(psb_s_t alpha, psb_c_sspmat *ah, psb_c_svector *xh, @@ -100,18 +101,17 @@ psb_i_t psb_c_sgediv2(psb_c_svector *xh,psb_c_svector *yh,psb_c_svector *zh,psb_ psb_i_t psb_c_sgediv2_check(psb_c_svector *xh,psb_c_svector *yh,psb_c_svector *zh,psb_c_descriptor *cdh, bool flag); psb_i_t psb_c_sgeinv(psb_c_svector *xh,psb_c_svector *yh,psb_c_descriptor *cdh); psb_i_t psb_c_sgeinv_check(psb_c_svector *xh,psb_c_svector *yh,psb_c_descriptor *cdh, bool flag); -psb_i_t psb_c_sgeabs(psb_c_svector *xh,psb_c_svector *yh,psb_c_descriptor *cdh); +psb_i_t psb_c_sgeabs(psb_c_svector *xh,psb_c_svector *yh,psb_c_svector *cdh); psb_i_t psb_c_sgecmp(psb_c_svector *xh,psb_s_t ch,psb_c_svector *zh,psb_c_descriptor *cdh); -bool psb_c_sgecmpmat(psb_c_sspmat *ah,psb_c_sspmat *bh,psb_s_t tol,psb_c_descriptor *cdh); -bool psb_c_sgecmpmat_val(psb_c_sspmat *ah,psb_s_t val,psb_s_t tol,psb_c_descriptor *cdh); +bool psb_c_sgecmpmat(psb_c_sspmat *ah,psb_c_sspmat *bh,psb_s_t tol,psb_c_descriptor *cdh); +bool psb_c_sgecmpmat_val(psb_c_sspmat *ah,psb_s_t val,psb_s_t tol,psb_c_descriptor *cdh); psb_i_t psb_c_sgeaddconst(psb_c_svector *xh,psb_s_t bh,psb_c_svector *zh,psb_c_descriptor *cdh); psb_s_t psb_c_sgenrm2_weight(psb_c_svector *xh,psb_c_svector *wh,psb_c_descriptor *cdh); psb_s_t psb_c_sgenrm2_weightmask(psb_c_svector *xh,psb_c_svector *wh,psb_c_svector *idvh,psb_c_descriptor *cdh); -psb_i_t psb_c_smask(psb_c_svector *ch,psb_c_svector *xh,psb_c_svector *mh, bool *t, psb_c_descriptor *cdh); -psb_s_t psb_c_sgemin(psb_c_svector *xh,psb_c_descriptor *cdh); psb_i_t psb_c_sspscal(psb_s_t alpha, psb_c_sspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_sspscalpid(psb_s_t alpha, psb_c_sspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_sspaxpby(psb_s_t alpha, psb_c_sspmat *ah, psb_s_t beta, psb_c_sspmat *bh, psb_c_descriptor *cdh); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/cbind/base/psb_c_scomm.h b/cbind/base/psb_c_scomm.h index be1f81bf..f3354bff 100644 --- a/cbind/base/psb_c_scomm.h +++ b/cbind/base/psb_c_scomm.h @@ -12,13 +12,15 @@ extern "C" { psb_i_t psb_c_sovrl(psb_c_svector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_sovrl_opt(psb_c_svector *xh, psb_c_descriptor *cdh, psb_i_t update, psb_i_t mode); - psb_i_t psb_c_svscatter(psb_l_t ng, psb_s_t *gx, psb_c_svector *xh, psb_c_descriptor *cdh); + psb_i_t psb_c_svscatter(psb_l_t ng, psb_c_t *gx, psb_c_svector *xh, + psb_c_descriptor *cdh); psb_s_t* psb_c_svgather(psb_c_svector *xh, psb_c_descriptor *cdh); psb_c_sspmat* psb_c_sspgather(psb_c_sspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_svgather_f(psb_s_t* gv, psb_c_svector *xh, psb_c_descriptor *cdh); - psb_i_t psb_c_sspgather_f(psb_c_sspmat* ga, psb_c_sspmat *ah, psb_c_descriptor *cdh); + psb_i_t psb_c_sspgather_f(psb_c_sspmat* ga, psb_c_sspmat *ah, + psb_c_descriptor *cdh); #ifdef __cplusplus diff --git a/cbind/base/psb_c_zbase.h b/cbind/base/psb_c_zbase.h index 235723b6..b3f49d35 100644 --- a/cbind/base/psb_c_zbase.h +++ b/cbind/base/psb_c_zbase.h @@ -18,16 +18,16 @@ typedef struct PSB_C_ZSPMAT { /* dense vectors */ psb_c_zvector* psb_c_new_zvector(); psb_i_t psb_c_zvect_get_nrows(psb_c_zvector *xh); -psb_z_t *psb_c_zvect_get_cpy( psb_c_zvector *xh); -psb_i_t psb_c_zvect_f_get_cpy(psb_z_t *v, psb_c_zvector *xh); +psb_z_t *psb_c_zvect_get_cpy(psb_c_zvector *xh); +psb_i_t psb_c_zvect_f_get_cpy(psb_z_t *v, psb_c_zvector *xh); psb_i_t psb_c_zvect_zero(psb_c_zvector *xh); -psb_z_t *psb_c_zvect_f_get_pnt( psb_c_zvector *xh); -psb_i_t psb_c_zvect_clone(psb_c_zvector *xh,psb_c_zvector *yh); +psb_i_t *psb_c_zvect_f_get_pnt(psb_c_zvector *xh); +psb_i_t psb_c_zvect_clone(psb_c_zvector *xh, psb_c_zvector *yh); psb_i_t psb_c_zgeall(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zgeall_remote(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zgeall_remote_options(psb_c_zvector *xh, psb_c_descriptor *cdh, - psb_i_t bldmode, psb_i_t duple); + psb_i_t bldmode, psb_i_t dupl); psb_i_t psb_c_zgeins(psb_i_t nz, const psb_l_t *irw, const psb_z_t *val, psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_z_t *val, @@ -35,15 +35,16 @@ psb_i_t psb_c_zgeins_add(psb_i_t nz, const psb_l_t *irw, const psb_z_t *val, psb_i_t psb_c_zgeasb(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zgeasb_options(psb_c_zvector *xh, psb_c_descriptor *cdh, psb_i_t dupl); psb_i_t psb_c_zgeasb_options_format(psb_c_zvector *xh, psb_c_descriptor *cdh, - const char *fmt, psb_i_t dupl); + const char *fmt, psb_i_t dupl); + psb_i_t psb_c_zgefree(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zgereinit(psb_c_zvector *xh, psb_c_descriptor *cdh, bool clear); psb_z_t psb_c_zgetelem(psb_c_zvector *xh,psb_l_t index,psb_c_descriptor *cd); -psb_z_t psb_c_zmatgetelem(psb_c_zspmat *ah,psb_l_t rowindex, - psb_l_t colindex,psb_c_descriptor *cdh); -psb_i_t psb_c_zsetelem(psb_l_t index, psb_z_t val, +psb_z_t psb_c_zmatgetelem(psb_c_zspmat *ah,psb_l_t rowindex,psb_l_t colindex,psb_c_descriptor *cdh); +psb_i_t psb_c_zsetelem(psb_l_t index, psb_c_t val, psb_c_zvector *xh, psb_c_descriptor *cd); + /* sparse matrices*/ psb_c_zspmat* psb_c_new_zspmat(); psb_i_t psb_c_zspall(psb_c_zspmat *mh, psb_c_descriptor *cdh); @@ -55,25 +56,24 @@ psb_i_t psb_c_zspins(psb_i_t nz, const psb_l_t *irw, const psb_l_t *icl, psb_i_t psb_c_zmat_get_nrows(psb_c_zspmat *mh); psb_i_t psb_c_zmat_get_ncols(psb_c_zspmat *mh); psb_l_t psb_c_znnz(psb_c_zspmat *mh,psb_c_descriptor *cdh); -bool psb_c_zis_matupd(psb_c_zspmat *mh,psb_c_descriptor *cdh); -bool psb_c_zis_matasb(psb_c_zspmat *mh,psb_c_descriptor *cdh); -bool psb_c_zis_matbld(psb_c_zspmat *mh,psb_c_descriptor *cdh); +bool psb_c_zis_matupd(psb_c_zspmat *mh,psb_c_descriptor *cdh); +bool psb_c_zis_matasb(psb_c_zspmat *mh,psb_c_descriptor *cdh); +bool psb_c_zis_matbld(psb_c_zspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_zset_matupd(psb_c_zspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_zset_matasb(psb_c_zspmat *mh,psb_c_descriptor *cdh); psb_i_t psb_c_zset_matbld(psb_c_zspmat *mh,psb_c_descriptor *cdh); -psb_i_t psb_c_zcopy_mat(psb_c_zspmat *ah,psb_c_zspmat *bh,psb_c_descriptor *cdh); - +psb_i_t psb_c_zcopy_mat(psb_c_zspmat *ah,psb_c_zspmat *bh,psb_c_descriptor *cdh); -psb_i_t psb_c_zspasb_opt(psb_c_zspmat *mh, psb_c_descriptor *cdh, - const char *afmt, psb_i_t upd, psb_i_t dupl); +/* psb_i_t psb_c_zspasb_opt(psb_c_zspmat *mh, psb_c_descriptor *cdh, */ +/* const char *afmt, psb_i_t upd, psb_i_t dupl); */ psb_i_t psb_c_zsprn(psb_c_zspmat *mh, psb_c_descriptor *cdh, _Bool clear); psb_i_t psb_c_zmat_name_print(psb_c_zspmat *mh, char *name); -psb_i_t psb_c_zvect_set_scal(psb_c_zvector *xh, psb_z_t val); -psb_i_t psb_c_zvect_set_scal_bound(psb_c_zvector *xh, psb_z_t val, +psb_i_t psb_c_zvect_set_scal(psb_c_zvector *xh, psb_z_t val); +psb_i_t psb_c_zvect_set_scal_bound(psb_c_zvector *xh, psb_c_t val, psb_i_t ifirst, psb_i_t ilast); -psb_i_t psb_c_zvect_set_vect(psb_c_zvector *xh, psb_z_t *val, psb_i_t n); +psb_i_t psb_c_zvect_set_vect(psb_c_zvector *xh, psb_z_t *val, psb_i_t n); psb_z_t psb_c_zvect_get_entry(psb_c_zvector *xh, psb_i_t index); -psb_i_t psb_c_zvect_set_entry(psb_c_zvector *xh, psb_i_t index, psb_z_t val); +psb_i_t psb_c_zvect_set_entry(psb_c_zvector *xh, psb_i_t index, psb_c_t val); /* psblas computational routines */ psb_z_t psb_c_zgedot(psb_c_zvector *xh, psb_c_zvector *yh, psb_c_descriptor *cdh); @@ -84,7 +84,7 @@ psb_d_t psb_c_zgenrmi(psb_c_zspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_zgeaxpby(psb_z_t alpha, psb_c_zvector *xh, psb_z_t beta, psb_c_zvector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_zgeaxpbyz(psb_z_t alpha, psb_c_zvector *xh, - psb_z_t beta, psb_c_zvector *yh, psb_c_zvector *zh, psb_c_descriptor *cdh); + psb_z_t beta, psb_c_zvector *yh, psb_c_zvector *zh, psb_c_descriptor *cdh); psb_i_t psb_c_zspmm(psb_z_t alpha, psb_c_zspmat *ah, psb_c_zvector *xh, psb_z_t beta, psb_c_zvector *yh, psb_c_descriptor *cdh); psb_i_t psb_c_zspmm_opt(psb_z_t alpha, psb_c_zspmat *ah, psb_c_zvector *xh, @@ -101,10 +101,10 @@ psb_i_t psb_c_zgediv2(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_zvector *zh,psb_ psb_i_t psb_c_zgediv2_check(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_zvector *zh,psb_c_descriptor *cdh, bool flag); psb_i_t psb_c_zgeinv(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_descriptor *cdh); psb_i_t psb_c_zgeinv_check(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_descriptor *cdh, bool flag); -psb_i_t psb_c_zgeabs(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_descriptor *cdh); +psb_i_t psb_c_zgeabs(psb_c_zvector *xh,psb_c_zvector *yh,psb_c_zvector *cdh); psb_i_t psb_c_zgecmp(psb_c_zvector *xh,psb_d_t ch,psb_c_zvector *zh,psb_c_descriptor *cdh); -bool psb_c_zgecmpmat(psb_c_zspmat *ah,psb_c_zspmat *bh,psb_d_t tol,psb_c_descriptor *cdh); -bool psb_c_zgecmpmat_val(psb_c_zspmat *ah,psb_z_t val,psb_d_t tol,psb_c_descriptor *cdh); +bool psb_c_zgecmpmat(psb_c_zspmat *ah,psb_c_zspmat *bh,psb_d_t tol,psb_c_descriptor *cdh); +bool psb_c_zgecmpmat_val(psb_c_zspmat *ah,psb_z_t val,psb_d_t tol,psb_c_descriptor *cdh); psb_i_t psb_c_zgeaddconst(psb_c_zvector *xh,psb_z_t bh,psb_c_zvector *zh,psb_c_descriptor *cdh); psb_d_t psb_c_zgenrm2_weight(psb_c_zvector *xh,psb_c_zvector *wh,psb_c_descriptor *cdh); psb_d_t psb_c_zgenrm2_weightmask(psb_c_zvector *xh,psb_c_zvector *wh,psb_c_zvector *idvh,psb_c_descriptor *cdh); diff --git a/cbind/base/psb_c_zcomm.h b/cbind/base/psb_c_zcomm.h index 8b7ca7e0..38f778e2 100644 --- a/cbind/base/psb_c_zcomm.h +++ b/cbind/base/psb_c_zcomm.h @@ -12,13 +12,15 @@ extern "C" { psb_i_t psb_c_zovrl(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_i_t psb_c_zovrl_opt(psb_c_zvector *xh, psb_c_descriptor *cdh, psb_i_t update, psb_i_t mode); - psb_i_t psb_c_zvscatter(psb_l_t ng, psb_z_t *gx, psb_c_zvector *xh, psb_c_descriptor *cdh); + psb_i_t psb_c_zvscatter(psb_l_t ng, psb_c_t *gx, psb_c_zvector *xh, + psb_c_descriptor *cdh); psb_z_t* psb_c_zvgather(psb_c_zvector *xh, psb_c_descriptor *cdh); psb_c_zspmat* psb_c_zspgather(psb_c_zspmat *ah, psb_c_descriptor *cdh); psb_i_t psb_c_zvgather_f(psb_z_t* gv, psb_c_zvector *xh, psb_c_descriptor *cdh); - psb_i_t psb_c_zspgather_f(psb_c_zspmat* ga, psb_c_zspmat *ah, psb_c_descriptor *cdh); + psb_i_t psb_c_zspgather_f(psb_c_zspmat* ga, psb_c_zspmat *ah, + psb_c_descriptor *cdh); #ifdef __cplusplus