changeset 9563:11d06cf2fb94 octave-forge

sparsersb: interface to rsb_set_initopt_as_string; the sparsersbbench.m will print out the evaluated command before its speedup; doc update.
author michelemartone
date Mon, 05 Mar 2012 18:46:32 +0000
parents 33e72956e207
children 6a4eca6874d7
files main/sparsersb/doc/sparsersb.txt main/sparsersb/src/sparsersb.cc main/sparsersb/src/sparsersbbench.m
diffstat 3 files changed, 30 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/main/sparsersb/doc/sparsersb.txt	Mon Mar 05 17:48:09 2012 +0000
+++ b/main/sparsersb/doc/sparsersb.txt	Mon Mar 05 18:46:32 2012 +0000
@@ -31,7 +31,17 @@
      Uses `M = max (I)', `N = max (J)'
 
  -- Loadable Function: S = sparsersb (M, N)
-     Equivalent to `sparsersb ([], [], [], M, N, 0)'
+     If M and N are integers, equivalent to `sparsersb ([], [], [], M,
+     N, 0)'
+
+ -- Loadable Function: S = sparsersb ("set", OPN, OPV)
+     If OPN is a string representing a valid librsb option name and OPV
+     is a string representing a valid librsb option value, the
+     correspondent librsb option will be set.
+
+ -- Loadable Function: S = sparsersb (A, S)
+     If A is a sparsersb matrix and S is a string, S will be
+     interpreted as a query string about matrix A.
 
      Please note that on `sparsersb' type variables are available most,
      but not all of the operators available for `full' or `sparse'
--- a/main/sparsersb/src/sparsersb.cc	Mon Mar 05 17:48:09 2012 +0000
+++ b/main/sparsersb/src/sparsersb.cc	Mon Mar 05 18:46:32 2012 +0000
@@ -1525,6 +1525,9 @@
 @deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (@var{m}, @var{n})\n\
 If @var{m} and @var{n} are integers, equivalent to @code{"RSBOI_FNS" ([], [], [], @var{m}, @var{n}, 0)}\n\
 \n\
+@deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (\"set\", @var{opn}, @var{opv})\n\
+If @var{opn} is a string representing a valid librsb option name and @var{opv} is a string representing a valid librsb option value, the correspondent librsb option will be set.\n\
+\n\
 @deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (@var{A}, @var{S})\n\
 If @var{A} is a "RSBOI_FNS" matrix and @var{S} is a string, @var{S} will be interpreted as a query string about matrix @var{A}.\n\
 \n"\
@@ -1557,16 +1560,25 @@
 		RSBOI_0_ERROR(RSBOI_0_NOCOERRMSG);
 #endif
 	install_sparse_rsb();
-	if (nargin == 1 || nargin == 2)
+         if( nargin == 3 && args(0).is_string() && args(0).string_value()=="set" && args(1).is_string() && args(2).is_string())
+	{
+		rsb_err_t errval=RSB_ERR_NO_ERROR;
+		const char *os=args(1).string_value().c_str();
+		const char *ov=args(2).string_value().c_str();
+		errval=rsb_set_initopt_as_string(os,ov);
+		/* FIXME: missing some diagnostic output */
+		goto ret;
+	}
+
+	if ( nargin == 1 || nargin == 2 )
 	{
 		rsb_type_t typecode=RSBOI_TYPECODE;
-		if (nargin >= 2)/* FIXME: this is wierd ! */
+		if (nargin >= 2)/* FIXME: this is weird ! */
 #if RSBOI_WANT_DOUBLE_COMPLEX
 			typecode=RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX;
 #else
 			RSBOI_0_ERROR(RSBOI_0_NOCOERRMSG);
 #endif
-			octave_stdout << "info?\n";
 		if (nargin == 2 && args(0).type_name()==RSB_OI_TYPEINFO_STRING && args(1).is_string())
 		{
 			char ss[RSBOI_INFOBUF];
--- a/main/sparsersb/src/sparsersbbench.m	Mon Mar 05 17:48:09 2012 +0000
+++ b/main/sparsersb/src/sparsersbbench.m	Mon Mar 05 18:46:32 2012 +0000
@@ -1,5 +1,6 @@
 #!/usr/bin/octave -q
 # TODO: document this file's functions so they get installed and are properly usable.
+# TODO: sprand should not be used in a consistent way
 
 function dt=sparsersbbench(precmd,cmd,postcmd,mint)
 # ..
@@ -27,10 +28,12 @@
 	postdots=sprintf(";until ((dt=toc())>=%f);",mint);
 	all=[gprecmd,dots,precmd,predots,cmd,postdots,postcmd,dots,gpostcmd];
 #	printf("will see speedup for %s\n",all);
+	printf("#%s #-> speedup is...",all);
 	dtr=sparsersbbench([gprecmd,"", precmd,""], cmd,[ postcmd,":",gpostcmd],mint);
 	dto=sparsersbbench([gprecmd,"",rprecmd,""],rcmd,[rpostcmd,":",gpostcmd],mint);
 	speedup=dto/dtr;
-	printf("%.2f speedup for %s\n",speedup,all);
+	printf("%.2f\n",speedup);
+#	printf("%.2f speedup for %s\n",speedup,all);
 end
 
 function sparsersbbench_battery(mstring,mint)