Mercurial > forge
changeset 12536:17251eaea9e5 octave-forge
rsboi_spsm seems to work on nrhs=1.
octave --eval "A=sparse([1,2,3],[1,2,3],[2,2,2])*i ; C=complex(A); x=[10,100;20,200;30,300]; A,C,x,(sparse(C)\x),(sparsersb(C)\x), sparse(C)'\x,sparsersb(C)'\x"
octave --eval "A=sparse([1,2,3],[1,2,3],[2,2,2])*1 ; C=real(A); x=[10,100;20,200;30,300]; A,C,x,(sparse(C)\x),(sparsersb(C)\x), sparse(C)'\x,sparsersb(C)'\x"
author | michelemartone |
---|---|
date | Sat, 18 Oct 2014 13:25:10 +0000 |
parents | 1c5a3153ba3a |
children | b644dc25de64 |
files | main/sparsersb/src/sparsersb.cc |
diffstat | 1 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/main/sparsersb/src/sparsersb.cc Sat Oct 18 13:14:46 2014 +0000 +++ b/main/sparsersb/src/sparsersb.cc Sat Oct 18 13:25:10 2014 +0000 @@ -55,8 +55,7 @@ * update to symmetric be forbidden or rather trigger a conversion ? * after file read, return various structural info * norm computation - * format spacings for readability - * TODO: rsboi_spsm against complex is missing + * reformat code for readability * Note: although librsb has been optimized for performance, sparsersb is not. * Developer notes: @@ -1339,15 +1338,14 @@ RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); if(v1.is_complex_type()) { - /* FIXME: useless case. */ ComplexMatrix retval= v2.complex_matrix_value(); octave_idx_type b_nc = retval.cols (); octave_idx_type b_nr = retval.rows (); - octave_idx_type ldb=b_nr; - octave_idx_type ldc=v1.rows(); - octave_idx_type nrhs=b_nc; - octave_idx_type nels=retval.rows()*retval.cols(); - errval=rsb_spsm(transA,&rsboi_pone,v1.mtxAp,nrhs,RSB_OI_DMTXORDER,&rsboi_zero,(const RSBOI_T*)retval.data(),ldb,(RSBOI_T*)retval.data(),ldc); + octave_idx_type ldb = b_nr; + octave_idx_type ldc = v1.rows(); + octave_idx_type nrhs = b_nc; + octave_idx_type nels = retval.rows()*retval.cols(); + errval = rsb_spsm(transA,&rsboi_pone,v1.mtxAp,nrhs,RSB_OI_DMTXORDER,&rsboi_zero,(const RSBOI_T*)retval.data(),ldb,(RSBOI_T*)retval.data(),ldc); if(RSBOI_SOME_ERROR(errval)) { if(errval==RSB_ERR_INVALID_NUMERICAL_DATA) @@ -1365,14 +1363,16 @@ } else { - Matrix retval=v2.matrix_value(); + Matrix retval = v2.matrix_value(); octave_idx_type b_nc = retval.cols (); octave_idx_type b_nr = retval.rows (); - octave_idx_type ldb=b_nr; - octave_idx_type ldc=v1.rows(); - octave_idx_type nrhs=b_nc; - octave_idx_type nels=retval.rows()*retval.cols(); - errval=rsb_spsm(transA,&rsboi_pone,v1.mtxAp,nrhs,RSB_OI_DMTXORDER,&rsboi_zero,(const RSBOI_T*)retval.data(),ldb,(RSBOI_T*)retval.data(),ldc); + octave_idx_type ldb = b_nr; + octave_idx_type ldc = v1.rows(); + octave_idx_type nrhs = b_nc; + octave_idx_type nels = retval.rows()*retval.cols(); + + errval = rsb_spsm(transA,&rsboi_pone,v1.mtxAp,nrhs,RSB_OI_DMTXORDER,&rsboi_zero,(const RSBOI_T*)retval.data(),ldb,(RSBOI_T*)retval.data(),ldc); + if(RSBOI_SOME_ERROR(errval)) { if(errval==RSB_ERR_INVALID_NUMERICAL_DATA)