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)