Mercurial > forge
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) %