changeset 1072:92e89d9031ed octave-forge

spreal spimag and new tests
author aadler
date Sat, 18 Oct 2003 04:55:47 +0000
parents a8242850c6bb
children 0a72b0728ec9
files main/sparse/Makefile main/sparse/complex_sparse_ops.cc main/sparse/make_sparse.cc main/sparse/sp_test.m
diffstat 4 files changed, 305 insertions(+), 188 deletions(-) [+]
line wrap: on
line diff
--- a/main/sparse/Makefile	Sat Oct 18 01:13:00 2003 +0000
+++ b/main/sparse/Makefile	Sat Oct 18 04:55:47 2003 +0000
@@ -2,6 +2,9 @@
 # $Id$
 #
 # $Log$
+# Revision 1.16  2003/10/18 04:55:47  aadler
+# spreal spimag and new tests
+#
 # Revision 1.15  2003/08/30 03:03:05  aadler
 # mods to prevent segfaults for sparse
 #
@@ -141,7 +144,8 @@
 NAME     =   make_sparse
 OBJLINKS =   spfind.oct sparse.oct full.oct splu.oct nnz.oct \
              spinv.oct is_sparse.oct spabs.oct \
-             is_real_sparse.oct is_complex_sparse.oct
+             is_real_sparse.oct is_complex_sparse.oct \
+	     spimag.oct spreal.oct
 SUPERLU  =   SuperLU
 S_INC=   -I$(SUPERLU)/SRC/ -I$(SUPERLU)/CBLAS
 
--- a/main/sparse/complex_sparse_ops.cc	Sat Oct 18 01:13:00 2003 +0000
+++ b/main/sparse/complex_sparse_ops.cc	Sat Oct 18 04:55:47 2003 +0000
@@ -1542,8 +1542,12 @@
    return create_SuperMatrix( Unr,Unc,cx, coefX, ridxX, cidxX );
 }                   
 
+
 /*
  * $Log$
+ * Revision 1.19  2003/10/18 04:55:47  aadler
+ * spreal spimag and new tests
+ *
  * Revision 1.18  2003/08/29 21:21:15  aadler
  * mods to fix bugs for empty sparse
  *
--- a/main/sparse/make_sparse.cc	Sat Oct 18 01:13:00 2003 +0000
+++ b/main/sparse/make_sparse.cc	Sat Oct 18 04:55:47 2003 +0000
@@ -343,6 +343,100 @@
    return retval;
 }
 
+DEFUN_DLD (spreal, args, nargout ,
+    "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} {@var{abs_a} =} spreal( @var{a} );\n\
+SPREAL : real part of a complex sparse matrix\n\
+@seealso{sparse, spabs, spimag}\n\
+@end deftypefn")
+{
+   octave_value_list retval;
+
+   if (args.length() < 1) {
+      print_usage ("spreal");
+      return retval;
+   }
+
+   if (args(0).type_name () == "sparse" ) {
+       retval(0)= args(0);
+   } else
+   if ( args(0).type_name () == "complex_sparse" ) {
+      const octave_sparse& A =
+           (const octave_sparse&) args(0).get_rep();
+      SuperMatrix X= A.super_matrix();
+
+      DEFINE_SP_POINTERS_CPLX( X )
+      int nnz= NCFX->nnz;
+
+      double *coefB = doubleMalloc(nnz);
+      int *   ridxB = intMalloc(nnz);
+      int *   cidxB = intMalloc(X.ncol+1);
+
+      for ( int i=0; i<=Xnc; i++)
+         cidxB[i]=  cidxX[i];
+
+      for ( int i=0; i< nnz; i++) {
+         doublecomplex * dc= (doublecomplex *) &coefX[i];
+         coefB[i]=  dc->r;
+         ridxB[i]=  ridxX[i];
+      }
+
+      SuperMatrix B= create_SuperMatrix( Xnr, Xnc, nnz, coefB, ridxB, cidxB );
+      retval(0)= new octave_sparse(B);
+   } else
+     gripe_wrong_type_arg ("spreal", args(0));
+
+   return retval;
+}
+
+DEFUN_DLD (spimag, args, nargout ,
+    "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} {@var{abs_a} =} spimag( @var{a} );\n\
+SPIMAG : imaginary part of a complex sparse matrix\n\
+@seealso{sparse, spabs, spreal}\n\
+@end deftypefn")
+{
+   octave_value_list retval;
+
+   if (args.length() < 1) {
+      print_usage ("spimag");
+      return retval;
+   }
+
+   if (args(0).type_name () == "sparse" ) {
+      ColumnVector empty;
+      retval(0)= new octave_sparse( assemble_sparse(
+                   args(0).columns(), args(0).rows(), empty, empty, empty, 0));
+   } else
+   if ( args(0).type_name () == "complex_sparse" ) {
+      const octave_sparse& A =
+           (const octave_sparse&) args(0).get_rep();
+      SuperMatrix X= A.super_matrix();
+
+      DEFINE_SP_POINTERS_CPLX( X )
+      int nnz= NCFX->nnz;
+
+      double *coefB = doubleMalloc(nnz);
+      int *   ridxB = intMalloc(nnz);
+      int *   cidxB = intMalloc(X.ncol+1);
+
+      for ( int i=0; i<=Xnc; i++)
+         cidxB[i]=  cidxX[i];
+
+      for ( int i=0; i< nnz; i++) {
+         doublecomplex * dc= (doublecomplex *) &coefX[i];
+         coefB[i]=  dc->i;
+         ridxB[i]=  ridxX[i];
+      }
+
+      SuperMatrix B= create_SuperMatrix( Xnr, Xnc, nnz, coefB, ridxB, cidxB );
+      retval(0)= new octave_sparse(B);
+   } else
+     gripe_wrong_type_arg ("spimag", args(0));
+
+   return retval;
+}
+
 
 DEFINE_OCTAVE_ALLOCATOR (octave_sparse);
 
@@ -353,6 +447,9 @@
 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_complex_sparse, "complex_sparse");
 /*
  * $Log$
+ * Revision 1.12  2003/10/18 04:55:47  aadler
+ * spreal spimag and new tests
+ *
  * Revision 1.11  2003/10/18 01:13:00  aadler
  * texinfo for documentation strings
  *
--- a/main/sparse/sp_test.m	Sat Oct 18 01:13:00 2003 +0000
+++ b/main/sparse/sp_test.m	Sat Oct 18 04:55:47 2003 +0000
@@ -193,185 +193,193 @@
    i=i+1;      % i=25
 
 %
-% spabs
+% spabs, spimag, spreal
 %
    res(i)= res(i)     +   all(all(  full(spabs(ars)) == abs(arf) ));  
    i=i+1;      % i=26
    res(i)= res(i)     +   all(all(  full(spabs(acs)) == abs(acf) ));  
    i=i+1;      % i=27
+   res(i)= res(i)     +   all(all(  full(spreal(ars)) == real(arf) ));  
+   i=i+1;      % i=28
+   res(i)= res(i)     +   all(all(  full(spreal(acs)) == real(acf) ));  
+   i=i+1;      % i=29
+   res(i)= res(i)     +   all(all(  full(spimag(ars)) == imag(arf) ));  
+   i=i+1;      % i=30
+   res(i)= res(i)     +   all(all(  full(spimag(acs)) == imag(acf) ));  
+   i=i+1;      % i=31
 %    
 % test sparse op scalar operations
 %
    res(i)= res(i)     +all(all( (ars==frn) == (arf==frn) ));
-   i=i+1;      % i=28
+   i=i+1;      % i=32
    res(i)= res(i)     +all(all( (frn==ars) == (frn==arf) ));
-   i=i+1;      % i=29
+   i=i+1;      % i=33
    res(i)= res(i)     +all(all( (frn+ars) == (frn+arf) ));
-   i=i+1;      % i=30
+   i=i+1;      % i=34
    res(i)= res(i)     +all(all( (ars+frn) == (arf+frn) ));
-   i=i+1;      % i=31
+   i=i+1;      % i=35
    res(i)= res(i)     +all(all( (frn-ars) == (frn-arf) ));
-   i=i+1;      % i=32
+   i=i+1;      % i=36
    res(i)= res(i)     +all(all( (ars-frn) == (arf-frn) ));
-   i=i+1;      % i=33
+   i=i+1;      % i=37
    res(i)= res(i)     +all(all( (frn*ars) == (frn*arf) ));
-   i=i+1;      % i=34
+   i=i+1;      % i=38
    res(i)= res(i)     +all(all( (ars*frn) == (arf*frn) ));
-   i=i+1;      % i=35
+   i=i+1;      % i=39
    res(i)= res(i)     +all(all( (frn.*ars) == (frn.*arf) ));
-   i=i+1;      % i=36
+   i=i+1;      % i=40
    res(i)= res(i)     +all(all( (ars.*frn) == (arf.*frn) ));
-   i=i+1;      % i=37
+   i=i+1;      % i=41
    res(i)= res(i)     +all(all( abs( (frn\ars) - (frn\arf) )<errortol ));
-   i=i+1;      % i=38
+   i=i+1;      % i=42
    res(i)= res(i)     +all(all( abs( (ars/frn) - (arf/frn) )<errortol ));
-   i=i+1;      % i=39
+   i=i+1;      % i=43
    [jnk1,jnk2, sp_values] = spfind( ars.^frn );
    full_vals=                       arf.^frn;
    full_vals= full_vals(~isnan(full_vals) & ~isinf(full_vals) & (full_vals~=0));
    res(i)= res(i)     +all(all( (sp_values(:) - full_vals(:)) <errortol ));
-   i=i+1;      % i=40
+   i=i+1;      % i=44
 %    
 % test sparse op complex scalar operations
 %
    res(i)= res(i)     +all(all( (ars==fcn) == (arf==fcn) ));
-   i=i+1;      % i=41
+   i=i+1;      % i=45
    res(i)= res(i)     +all(all( (fcn==ars) == (fcn==arf) ));
-   i=i+1;      % i=42
+   i=i+1;      % i=46
    res(i)= res(i)     +all(all( (fcn+ars) == (fcn+arf) ));
-   i=i+1;      % i=43
+   i=i+1;      % i=47
    res(i)= res(i)     +all(all( (ars+fcn) == (arf+fcn) ));
-   i=i+1;      % i=44
+   i=i+1;      % i=48
    res(i)= res(i)     +all(all( (fcn-ars) == (fcn-arf) ));
-   i=i+1;      % i=45
+   i=i+1;      % i=49
    res(i)= res(i)     +all(all( (ars-fcn) == (arf-fcn) ));
-   i=i+1;      % i=46
+   i=i+1;      % i=50
    res(i)= res(i)     + issparse( (fcn*ars) );
-   i=i+1;      % i=47
+   i=i+1;      % i=51
    res(i)= res(i)     +all(all( (fcn*ars) == (fcn*arf) ));
-   i=i+1;      % i=48
+   i=i+1;      % i=52
    res(i)= res(i)     + issparse( (ars*fcn) );
-   i=i+1;      % i=49
+   i=i+1;      % i=53
    res(i)= res(i)     +all(all( (ars*fcn) == (arf*fcn) ));
-   i=i+1;      % i=50
+   i=i+1;      % i=54
    res(i)= res(i)     + issparse( (fcn.*ars) );
-   i=i+1;      % i=51
+   i=i+1;      % i=55
    res(i)= res(i)     +all(all( (fcn.*ars) == (fcn.*arf) ));
-   i=i+1;      % i=52
+   i=i+1;      % i=56
    res(i)= res(i)     + issparse( (ars.*fcn) );
-   i=i+1;      % i=53
+   i=i+1;      % i=57
    res(i)= res(i)     +all(all( (ars.*fcn) == (arf.*fcn) ));
-   i=i+1;      % i=54
+   i=i+1;      % i=58
    res(i)= res(i)     + issparse( (fcn\ars) );
-   i=i+1;      % i=55
+   i=i+1;      % i=59
    res(i)= res(i)     +all(all( abs( (fcn\ars) - (fcn\arf) )<errortol ));
-   i=i+1;      % i=56
+   i=i+1;      % i=60
    res(i)= res(i)     + issparse( (ars/fcn) );
-   i=i+1;      % i=57
+   i=i+1;      % i=61
    res(i)= res(i)     +all(all( abs( (ars/fcn) - (arf/fcn) )<errortol ));
-   i=i+1;      % i=58
+   i=i+1;      % i=62
    [jnk1,jnk2, sp_values] = spfind( ars.^fcn );
    full_vals=                       arf.^fcn;
    full_vals= full_vals(~isnan(full_vals) & ~isinf(full_vals) & (full_vals~=0));
    res(i)= res(i)     +all(all( (sp_values(:) - full_vals(:)) <errortol ));
-   i=i+1;      % i=59
+   i=i+1;      % i=63
 %    
 % test complex sparse op scalar operations
 %
    res(i)= res(i)     + issparse( (acs*frn) );
-   i=i+1;      % i=60
+   i=i+1;      % i=64
    res(i)= res(i)     +all(all( (acs==frn) == (acf==frn) ));
-   i=i+1;      % i=61
+   i=i+1;      % i=65
    res(i)= res(i)     + issparse( (frn*acs) );
-   i=i+1;      % i=62
+   i=i+1;      % i=66
    res(i)= res(i)     +all(all( (frn==acs) == (frn==acf) ));
-   i=i+1;      % i=63
+   i=i+1;      % i=67
    res(i)= res(i)     +all(all( (frn+acs) == (frn+acf) ));
-   i=i+1;      % i=64
-   res(i)= res(i)     +all(all( (acs+frn) == (acf+frn) ));
-   i=i+1;      % i=65
-   res(i)= res(i)     +all(all( (frn-acs) == (frn-acf) ));
-   i=i+1;      % i=66
-   res(i)= res(i)     +all(all( (acs-frn) == (acf-frn) ));
-   i=i+1;      % i=67
-   res(i)= res(i)     + issparse( (frn*acs) );
    i=i+1;      % i=68
-   res(i)= res(i)     +all(all( (frn*acs) == (frn*acf) ));
+   res(i)= res(i)     +all(all( (acs+frn) == (acf+frn) ));
    i=i+1;      % i=69
-   res(i)= res(i)     +all(all( (acs*frn) == (acf*frn) ));
+   res(i)= res(i)     +all(all( (frn-acs) == (frn-acf) ));
    i=i+1;      % i=70
-   res(i)= res(i)     + issparse( (frn.*acs) );
+   res(i)= res(i)     +all(all( (acs-frn) == (acf-frn) ));
    i=i+1;      % i=71
-   res(i)= res(i)     +all(all( (frn.*acs) == (frn.*acf) ));
+   res(i)= res(i)     + issparse( (frn*acs) );
    i=i+1;      % i=72
-   res(i)= res(i)     +all(all( (acs.*frn) == (acf.*frn) ));
+   res(i)= res(i)     +all(all( (frn*acs) == (frn*acf) ));
    i=i+1;      % i=73
-   res(i)= res(i)     + issparse( (frn\acs) );
+   res(i)= res(i)     +all(all( (acs*frn) == (acf*frn) ));
    i=i+1;      % i=74
-   res(i)= res(i)     +all(all( abs( (frn\acs) - (frn\acf) )<errortol ));
+   res(i)= res(i)     + issparse( (frn.*acs) );
    i=i+1;      % i=75
+   res(i)= res(i)     +all(all( (frn.*acs) == (frn.*acf) ));
+   i=i+1;      % i=76
+   res(i)= res(i)     +all(all( (acs.*frn) == (acf.*frn) ));
+   i=i+1;      % i=77
+   res(i)= res(i)     + issparse( (frn\acs) );
+   i=i+1;      % i=78
+   res(i)= res(i)     +all(all( abs( (frn\acs) - (frn\acf) )<errortol ));
+   i=i+1;      % i=79
    res(i)= res(i)     +all(all( abs( (acs/frn) - (acf/frn) )<errortol ));
-   i=i+1;      % i=76
+   i=i+1;      % i=80
    [jnk1,jnk2, sp_values] = spfind( acs.^frn );
    full_vals=                       acf.^frn;
    full_vals= full_vals(~isnan(full_vals) & ~isinf(full_vals) & (full_vals~=0));
    res(i)= res(i)     +all(all( sp_values(:) == full_vals(:) ));
-   i=i+1;      % i=77
+   i=i+1;      % i=81
 %    
 % test complex sparse op complex scalar operations
 %
    res(i)= res(i)     +all(all( (acs==fcn) == (acf==fcn) ));
-   i=i+1;      % i=78
+   i=i+1;      % i=82
    res(i)= res(i)     +all(all( (fcn==acs) == (fcn==acf) ));
-   i=i+1;      % i=79
+   i=i+1;      % i=83
    res(i)= res(i)     +all(all( (fcn+acs) == (fcn+acf) ));
-   i=i+1;      % i=80
+   i=i+1;      % i=84
    res(i)= res(i)     +all(all( (acs+fcn) == (acf+fcn) ));
-   i=i+1;      % i=81
+   i=i+1;      % i=85
    res(i)= res(i)     +all(all( (fcn-acs) == (fcn-acf) ));
-   i=i+1;      % i=82
+   i=i+1;      % i=86
    res(i)= res(i)     +all(all( (acs-fcn) == (acf-fcn) ));
-   i=i+1;      % i=83
+   i=i+1;      % i=87
    res(i)= res(i)     +all(all( (fcn*acs) == (fcn*acf) ));
-   i=i+1;      % i=84
+   i=i+1;      % i=88
    res(i)= res(i)     +all(all( (acs*fcn) == (acf*fcn) ));
-   i=i+1;      % i=85
+   i=i+1;      % i=89
    res(i)= res(i)     +all(all( (fcn.*acs) == (fcn.*acf) ));
-   i=i+1;      % i=86
+   i=i+1;      % i=90
    res(i)= res(i)     +all(all( (acs.*fcn) == (acf.*fcn) ));
-   i=i+1;      % i=87
+   i=i+1;      % i=91
    res(i)= res(i)     +all(all( abs( (fcn\acs) - (fcn\acf) )<errortol ));
-   i=i+1;      % i=88
+   i=i+1;      % i=92
    res(i)= res(i)     +all(all( abs( (acs/fcn) - (acf/fcn) )<errortol ));
-   i=i+1;      % i=89
+   i=i+1;      % i=93
    [jnk1,jnk2, sp_values] = spfind( acs.^fcn );
    full_vals=                       acf.^fcn;
    full_vals= full_vals(~isnan(full_vals) & ~isinf(full_vals) & (full_vals~=0));
    res(i)= res(i)     +all(all( sp_values(:) == full_vals(:) ));
-   i=i+1;      % i=90
+   i=i+1;      % i=94
 
 %
 % sparse uary ops
 %
    res(i)= res(i)     +all(all( ars.' ==  arf.' ));  
-   i=i+1;      % i=91
+   i=i+1;      % i=95
    res(i)= res(i)     +all(all( ars'  ==  arf' ));  
-   i=i+1;      % i=92
+   i=i+1;      % i=96
    res(i)= res(i)     +all(all( -ars  == -arf ));  
-   i=i+1;      % i=93
+   i=i+1;      % i=97
    res(i)= res(i)     +all(all( ~ars  == ~arf ));  
-   i=i+1;      % i=94
+   i=i+1;      % i=98
 %
 % complex sparse uary ops
 %
    res(i)= res(i)     +all(all( acs.' ==  acf.' ));  
-   i=i+1;      % i=95
+   i=i+1;      % i=99
    res(i)= res(i)     +all(all( acs'  ==  acf' ));  
-   i=i+1;      % i=96
+   i=i+1;      % i=100
    res(i)= res(i)     +all(all( -acs  == -acf ));  
-   i=i+1;      % i=97
+   i=i+1;      % i=101
    res(i)= res(i)     +all(all( ~acs  == ~acf ));  
-   i=i+1;      % i=98
+   i=i+1;      % i=102
 
 %
 % sparse op sparse and  sparse op matrix
@@ -382,52 +390,52 @@
    # FIXME: this breaks if drs is 1x1
    rdif= abs(drs\erf - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=99
+   i=i+1;      % i=103
 
    rdif= abs(drf\ers - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=100
+   i=i+1;      % i=104
 
    rdif= abs(drs\ers - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=101
+   i=i+1;      % i=105
 
    res(i)= res(i)     +all(all( ars+brs == arf+brf )); 
-   i=i+1;      % i=102
+   i=i+1;      % i=106
    res(i)= res(i)     +all(all( arf+brs == arf+brf ));  
-   i=i+1;      % i=103
+   i=i+1;      % i=107
    res(i)= res(i)     +all(all( ars+brf == arf+brf ));  
-   i=i+1;      % i=104
+   i=i+1;      % i=108
    res(i)= res(i)     +all(all( ars-brs == arf-brf ));  
-   i=i+1;      % i=105
+   i=i+1;      % i=109
    res(i)= res(i)     +all(all( arf-brs == arf-brf ));  
-   i=i+1;      % i=106
+   i=i+1;      % i=110
    res(i)= res(i)     +all(all( ars-brf == arf-brf ));  
-   i=i+1;      % i=107
+   i=i+1;      % i=111
    res(i)= res(i)     +all(all( (ars>brs) == (arf>brf) ));  
-   i=i+1;      % i=108
+   i=i+1;      % i=112
    res(i)= res(i)     +all(all( (ars<brs) == (arf<brf) ));  
-   i=i+1;      % i=109
+   i=i+1;      % i=113
    res(i)= res(i)     +all(all( (ars!=brs) == (arf!=brf) ));  
-   i=i+1;      % i=110
+   i=i+1;      % i=114
    res(i)= res(i)     +all(all( (ars>=brs) == (arf>=brf) ));  
-   i=i+1;      % i=111
+   i=i+1;      % i=115
    res(i)= res(i)     +all(all( (ars<=brs) == (arf<=brf) ));  
-   i=i+1;      % i=112
+   i=i+1;      % i=116
    res(i)= res(i)     +all(all( (ars==brs) == (arf==brf) ));  
-   i=i+1;      % i=113
+   i=i+1;      % i=117
    res(i)= res(i)     +all(all( ars.*brs == arf.*brf ));  
-   i=i+1;      % i=114
+   i=i+1;      % i=118
    res(i)= res(i)     +all(all( arf.*brs == arf.*brf ));  
-   i=i+1;      % i=115
+   i=i+1;      % i=119
    res(i)= res(i)     +all(all( ars.*brf == arf.*brf ));  
-   i=i+1;      % i=116
+   i=i+1;      % i=120
    res(i)= res(i)     +all(all( ars*crs == arf*crf ));  
-   i=i+1;      % i=117
+   i=i+1;      % i=121
    res(i)= res(i)     +all(all( arf*crs == arf*crf ));  
-   i=i+1;      % i=118
+   i=i+1;      % i=122
    res(i)= res(i)     +all(all( ars*crf == arf*crf ));  
-   i=i+1;      % i=119
+   i=i+1;      % i=123
 
 %
 % sparse op complex sparse and  sparse op complex matrix
@@ -438,53 +446,53 @@
    # FIXME: this breaks if drs is 1x1
    rdif= abs(drs\ecf - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=120
+   i=i+1;      % i=124
 
    rdif= abs(drf\ecs - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=121
+   i=i+1;      % i=125
 
 # TODO: not avail yet
 #  rdif= abs(drs\ecs - df_ef) < abs(mag*df_ef);
 #  res(i)= res(i)     +all(all( rdif ));
-#  i=i+1;      % i=122
+#  i=i+1;      % i=126
 
    res(i)= res(i)     +all(all( ars+bcs == arf+bcf )); 
-   i=i+1;      % i=123
+   i=i+1;      % i=127
    res(i)= res(i)     +all(all( arf+bcs == arf+bcf ));  
-   i=i+1;      % i=124
+   i=i+1;      % i=128
    res(i)= res(i)     +all(all( ars+bcf == arf+bcf ));  
-   i=i+1;      % i=125
+   i=i+1;      % i=129
    res(i)= res(i)     +all(all( ars-bcs == arf-bcf ));  
-   i=i+1;      % i=126
+   i=i+1;      % i=130
    res(i)= res(i)     +all(all( arf-bcs == arf-bcf ));  
-   i=i+1;      % i=127
+   i=i+1;      % i=131
    res(i)= res(i)     +all(all( ars-bcf == arf-bcf ));  
-   i=i+1;      % i=128
+   i=i+1;      % i=132
    res(i)= res(i)     +all(all( (ars>bcs) == (arf>bcf) ));  
-   i=i+1;      % i=129
+   i=i+1;      % i=133
    res(i)= res(i)     +all(all( (ars<bcs) == (arf<bcf) ));  
-   i=i+1;      % i=130
+   i=i+1;      % i=134
    res(i)= res(i)     +all(all( (ars!=bcs) == (arf!=bcf) ));  
-   i=i+1;      % i=131
+   i=i+1;      % i=135
    res(i)= res(i)     +all(all( (ars>=bcs) == (arf>=bcf) ));  
-   i=i+1;      % i=132
+   i=i+1;      % i=136
    res(i)= res(i)     +all(all( (ars<=bcs) == (arf<=bcf) ));  
-   i=i+1;      % i=133
+   i=i+1;      % i=137
    res(i)= res(i)     +all(all( (ars==bcs) == (arf==bcf) ));  
-   i=i+1;      % i=134
+   i=i+1;      % i=138
    res(i)= res(i)     +all(all( ars.*bcs == arf.*bcf ));  
-   i=i+1;      % i=135
+   i=i+1;      % i=139
    res(i)= res(i)     +all(all( arf.*bcs == arf.*bcf ));  
-   i=i+1;      % i=136
+   i=i+1;      % i=140
    res(i)= res(i)     +all(all( ars.*bcf == arf.*bcf ));  
-   i=i+1;      % i=137
+   i=i+1;      % i=141
    res(i)= res(i)     +all(all( ars*ccs == arf*ccf ));  
-   i=i+1;      % i=138
+   i=i+1;      % i=142
    res(i)= res(i)     +all(all( arf*ccs == arf*ccf ));  
-   i=i+1;      % i=139
+   i=i+1;      % i=143
    res(i)= res(i)     +all(all( ars*ccf == arf*ccf ));  
-   i=i+1;      % i=140
+   i=i+1;      % i=144
 
 %
 % complex sparse op sparse and  complex sparse op matrix
@@ -495,58 +503,58 @@
    # FIXME: this breaks if drs is 1x1
    rdif= abs(dcs\erf - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=141
+   i=i+1;      % i=145
 
    rdif= abs(dcf\ers - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=142
+   i=i+1;      % i=146
 
    df_ef= dcf\erf;
    rdif= abs(dcs\ers - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=143
+   i=i+1;      % i=147
 
    df_ef= drf\ecf;
    rdif= abs(drs\ecs - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=144
+   i=i+1;      % i=148
 
    res(i)= res(i)     +all(all( acs+brs == acf+brf )); 
-   i=i+1;      % i=145
+   i=i+1;      % i=149
    res(i)= res(i)     +all(all( acf+brs == acf+brf ));  
-   i=i+1;      % i=146
+   i=i+1;      % i=150
    res(i)= res(i)     +all(all( acs+brf == acf+brf ));  
-   i=i+1;      % i=147
+   i=i+1;      % i=151
    res(i)= res(i)     +all(all( acs-brs == acf-brf ));  
-   i=i+1;      % i=148
+   i=i+1;      % i=152
    res(i)= res(i)     +all(all( acf-brs == acf-brf ));  
-   i=i+1;      % i=149
+   i=i+1;      % i=153
    res(i)= res(i)     +all(all( acs-brf == acf-brf ));  
-   i=i+1;      % i=150
+   i=i+1;      % i=154
    res(i)= res(i)     +all(all( (acs>brs) == (acf>brf) ));  
-   i=i+1;      % i=151
+   i=i+1;      % i=155
    res(i)= res(i)     +all(all( (acs<brs) == (acf<brf) ));  
-   i=i+1;      % i=152
+   i=i+1;      % i=156
    res(i)= res(i)     +all(all( (acs!=brs) == (acf!=brf) ));  
-   i=i+1;      % i=153
+   i=i+1;      % i=157
    res(i)= res(i)     +all(all( (acs>=brs) == (acf>=brf) ));  
-   i=i+1;      % i=154
+   i=i+1;      % i=158
    res(i)= res(i)     +all(all( (acs<=brs) == (acf<=brf) ));  
-   i=i+1;      % i=155
+   i=i+1;      % i=159
    res(i)= res(i)     +all(all( (acs==brs) == (acf==brf) ));  
-   i=i+1;      % i=156
+   i=i+1;      % i=160
    res(i)= res(i)     +all(all( acs.*brs == acf.*brf ));  
-   i=i+1;      % i=157
+   i=i+1;      % i=161
    res(i)= res(i)     +all(all( acf.*brs == acf.*brf ));  
-   i=i+1;      % i=158
+   i=i+1;      % i=162
    res(i)= res(i)     +all(all( acs.*brf == acf.*brf ));  
-   i=i+1;      % i=159
+   i=i+1;      % i=163
    res(i)= res(i)     +all(all( acs*crs == acf*crf ));  
-   i=i+1;      % i=160
+   i=i+1;      % i=164
    res(i)= res(i)     +all(all( acf*crs == acf*crf ));  
-   i=i+1;      % i=161
+   i=i+1;      % i=165
    res(i)= res(i)     +all(all( acs*crf == acf*crf ));  
-   i=i+1;      % i=162
+   i=i+1;      % i=166
 
 %
 % complex sparse op complex sparse and  complex sparse op complex matrix
@@ -557,52 +565,52 @@
    # FIXME: this breaks if drs is 1x1
    rdif= abs(dcs\ecf - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=163
+   i=i+1;      % i=167
 
    rdif= abs(dcf\ecs - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=164
+   i=i+1;      % i=168
 
    rdif= abs(dcs\ecs - df_ef) < abs(mag*df_ef);
    res(i)= res(i)     +all(all( rdif ));
-   i=i+1;      % i=165
+   i=i+1;      % i=169
 
    res(i)= res(i)     +all(all( acs+bcs == acf+bcf )); 
-   i=i+1;      % i=166
+   i=i+1;      % i=170
    res(i)= res(i)     +all(all( acf+bcs == acf+bcf ));  
-   i=i+1;      % i=167
+   i=i+1;      % i=171
    res(i)= res(i)     +all(all( acs+bcf == acf+bcf ));  
-   i=i+1;      % i=168
+   i=i+1;      % i=172
    res(i)= res(i)     +all(all( acs-bcs == acf-bcf ));  
-   i=i+1;      % i=169
+   i=i+1;      % i=173
    res(i)= res(i)     +all(all( acf-bcs == acf-bcf ));  
-   i=i+1;      % i=170
+   i=i+1;      % i=174
    res(i)= res(i)     +all(all( acs-bcf == acf-bcf ));  
-   i=i+1;      % i=171
+   i=i+1;      % i=175
    res(i)= res(i)     +all(all( (acs>bcs) == (acf>bcf) ));  
-   i=i+1;      % i=172
+   i=i+1;      % i=176
    res(i)= res(i)     +all(all( (acs<bcs) == (acf<bcf) ));  
-   i=i+1;      % i=173
+   i=i+1;      % i=177
    res(i)= res(i)     +all(all( (acs!=bcs) == (acf!=bcf) ));  
-   i=i+1;      % i=174
+   i=i+1;      % i=178
    res(i)= res(i)     +all(all( (acs>=bcs) == (acf>=bcf) ));  
-   i=i+1;      % i=175
+   i=i+1;      % i=179
    res(i)= res(i)     +all(all( (acs<=bcs) == (acf<=bcf) ));  
-   i=i+1;      % i=176
+   i=i+1;      % i=180
    res(i)= res(i)     +all(all( (acs==bcs) == (acf==bcf) ));  
-   i=i+1;      % i=177
+   i=i+1;      % i=181
    res(i)= res(i)     +all(all( acs.*bcs == acf.*bcf ));  
-   i=i+1;      % i=178
+   i=i+1;      % i=182
    res(i)= res(i)     +all(all( acf.*bcs == acf.*bcf ));  
-   i=i+1;      % i=179
+   i=i+1;      % i=183
    res(i)= res(i)     +all(all( acs.*bcf == acf.*bcf ));  
-   i=i+1;      % i=180
+   i=i+1;      % i=184
    res(i)= res(i)     +all(all( abs( acs*ccs - acf*ccf ) < errortol ));  
-   i=i+1;      % i=181
+   i=i+1;      % i=185
    res(i)= res(i)     +all(all( abs( acf*ccs - acf*ccf ) < errortol ));  
-   i=i+1;      % i=182
+   i=i+1;      % i=186
    res(i)= res(i)     +all(all( abs( acs*ccf - acf*ccf ) < errortol ));  
-   i=i+1;      % i=183
+   i=i+1;      % i=187
 
 %
 % sparse select operations
@@ -611,17 +619,17 @@
    r1= ars(sel1); r2=arf(sel1);
    res(i)= res(i)     +all( r1(:) == r2(:) );
 %  res(i)= res(i)     +all( ars(sel1) == arf(sel1 ));
-   i=i+1;      % i=184
+   i=i+1;      % i=188
    res(i)= res(i)     +all( ars(:) == arf(:));
-   i=i+1;      % i=185
+   i=i+1;      % i=189
    res(i)= res(i)     +all(all( ars(sely,selx) == arf(sely,selx) ));
-   i=i+1;      % i=186
+   i=i+1;      % i=190
    res(i)= res(i)     +all(all( ars( :  ,selx) == arf( :  ,selx) ));
-   i=i+1;      % i=187
+   i=i+1;      % i=191
    res(i)= res(i)     +all(all( ars(sely, :  ) == arf(sely, :  ) ));
-   i=i+1;      % i=188
+   i=i+1;      % i=192
    res(i)= res(i)     +all(all( ars(:,:) == arf(:,:) ));
-   i=i+1;      % i=189
+   i=i+1;      % i=193
 
 %
 % complex sparse select operations
@@ -629,17 +637,17 @@
    r1= acs(sel1); r2=acf(sel1);
    res(i)= res(i)     +all( r1(:) == r2(:) );
 %  res(i)= res(i)     +all( ars(sel1) == arf(sel1 ));
-   i=i+1;      % i=190
+   i=i+1;      % i=194
    res(i)= res(i)     +all( ars(:) == arf(:));
-   i=i+1;      % i=191
+   i=i+1;      % i=195
    res(i)= res(i)     +all(all( ars(sely,selx) == arf(sely,selx) ));
-   i=i+1;      % i=192
+   i=i+1;      % i=196
    res(i)= res(i)     +all(all( ars( :  ,selx) == arf( :  ,selx) ));
-   i=i+1;      % i=193
+   i=i+1;      % i=197
    res(i)= res(i)     +all(all( ars(sely, :  ) == arf(sely, :  ) ));
-   i=i+1;      % i=194
+   i=i+1;      % i=198
    res(i)= res(i)     +all(all( ars(:,:) == arf(:,:) ));
-   i=i+1;      % i=195
+   i=i+1;      % i=199
 
 %
 % sparse LU and inverse
@@ -658,7 +666,7 @@
    res(i)= res(i) + all( [  ...
                all(all( abs(Ls2*Us2 - Lf2*Uf2 )< mag )) ; ...
                       1 ] );
-   i=i+1;      % i=196
+   i=i+1;      % i=200
                                         
    if OCTAVE
       [Ls4,Us4,PsR,PsC] = splu( drs );
@@ -676,13 +684,13 @@
                   all(all( Us4 .* UU == Us4 )) ] );
    end
 
-   i=i+1;      % i=197
+   i=i+1;      % i=201
 
    dsi = spinv( drs );
    mag= errortol;
    res(i)= res(i) + all(all( ...
            abs( inv(drf) - dsi ) <= mag*(1+abs(inv(drf))) ));
-   i=i+1;      % i=198
+   i=i+1;      % i=202
 
    if OCTAVE
       res(i)= res(i)    +all( spfind(ars) == find(arf) );
@@ -692,11 +700,11 @@
       [I,J,S]= find(ars);
       [N,M]  = size(ars);
    end
-   i=i+1;      % i=199
+   i=i+1;      % i=203
 
    asnew= sparse(I,J,S,N,M);
    res(i)= res(i)    +all( all( asnew == ars ));
-   i=i+1;      % i=200
+   i=i+1;      % i=204
 
 %
 % complex sparse LU and inverse
@@ -715,7 +723,7 @@
    res(i)= res(i) + all( [  ...
                all(all( abs(Ls2*Us2 - Lf2*Uf2 )< mag )) ; ...
                       1 ] );
-   i=i+1;      % i=201
+   i=i+1;      % i=205
 
    if OCTAVE
       [Ls4,Us4,PsR,PsC] = splu( dcs );
@@ -732,13 +740,13 @@
                   all(all( Ls4 .* LL == Ls4 )) ;
                   all(all( Us4 .* UU == Us4 )) ] );
    end
-   i=i+1;      % i=202
+   i=i+1;      % i=206
 
    dci = spinv( dcs );
    mag= errortol;
    res(i)= res(i) + all(all( ...
            abs( inv(dcf) - dci ) <= mag*(1+abs(inv(dcf))) ));
-   i=i+1;      % i=203
+   i=i+1;      % i=207
 
    if OCTAVE
       res(i)= res(i)    +all( spfind(acs) == find(acf) );
@@ -748,11 +756,11 @@
       [I,J,S]= find(acs);
       [N,M]  = size(acs);
    end
-   i=i+1;      % i=204
+   i=i+1;      % i=208
 
    asnew= sparse(I,J,S,N,M);
    res(i)= res(i)    +all( all( asnew == acs ));
-   i=i+1;      % i=205
+   i=i+1;      % i=209
 
    % test sparse assembly using 'sum' or 'unique'
    tf1= zeros(N,M);
@@ -769,24 +777,24 @@
 
    % test normal assembly
    res(i)= res(i)    +all( all( sparse(rr,cc,1,N,M) == tf2 ));
-   i=i+1;      % i=206
+   i=i+1;      % i=210
 
    % test 'unique' assembly
    res(i)= res(i)    +all( all( sparse(rr,cc,1,N,M,'unique') == tf1 ));
-   i=i+1;      % i=207
+   i=i+1;      % i=211
 
    % test 'sum' assembly
    res(i)= res(i)    +all( all( sparse(rr,cc,1,N,M,'sum') == tf2 ));
-   i=i+1;      % i=208
+   i=i+1;      % i=212
 
    % test 'sphcat' 'spvcat'
    res(i)= res(i)    +all( all(
        sphcat( ars,brs,brs,ars ) == [ars,brs,brs,ars] ));
-   i=i+1;      % i=209
+   i=i+1;      % i=213
 
    res(i)= res(i)    +all( all(
        spvcat( ars,brs,brs,ars ) == [ars;brs;brs;ars] ));
-   i=i+1;      % i=210
+   i=i+1;      % i=214
 
 
 end 
@@ -808,6 +816,7 @@
 
 % segfault test from Fabian@isas-berlin.de
 % expected behaviour is to emit error
+printf( 'Test for crash: expected behaviour is to emit error...\n');
 eval("spinv( sparse( [1,1;1,1]   ) );");
 eval("spinv( sparse( [1,1;1,1+i] ) );");
 eval("spinv( sparse( [0,0;0,1]   ) );");
@@ -825,6 +834,9 @@
 
 %
 % $Log$
+% Revision 1.16  2003/10/18 04:55:47  aadler
+% spreal spimag and new tests
+%
 % Revision 1.15  2003/09/12 14:22:42  adb014
 % Changes to allow use with latest CVS of octave (do_fortran_indexing, etc)
 %