changeset 12065:899122410ea5 release-3-2-x

more fixes & tests for matrix multiply
author Jaroslav Hajek <highegg@gmail.com>
date Sun, 23 Aug 2009 11:11:27 +0200
parents 8e8da2c36e7e
children 634697062fe1
files liboctave/CMatrix.cc liboctave/ChangeLog liboctave/dMatrix.cc liboctave/fCMatrix.cc liboctave/fMatrix.cc
diffstat 5 files changed, 29 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/CMatrix.cc
+++ b/liboctave/CMatrix.cc
@@ -3755,7 +3755,11 @@
 %! cv = randn(10,1)+i*rand(10,1);
 %! rv = randn(1,10)+i*rand(1,10);
 %!assert([M*cv,M*cv],M*[cv,cv],1e-14)
+%!assert([M.'*cv,M.'*cv],M.'*[cv,cv],1e-14)
+%!assert([M'*cv,M'*cv],M'*[cv,cv],1e-14)
 %!assert([rv*M;rv*M],[rv;rv]*M,1e-14)
+%!assert([rv*M.';rv*M.'],[rv;rv]*M.',1e-14)
+%!assert([rv*M';rv*M'],[rv;rv]*M',1e-14)
 %!assert(2*rv*cv,[rv,rv]*[cv;cv],1e-14)
 */
 
@@ -3853,7 +3857,7 @@
                                        b.data (), 1, 0.0, c, 1
                                        F77_CHAR_ARG_LEN (1)));
             }
-          else if (a_nr == 1 && ! conja)
+          else if (a_nr == 1 && ! conja && ! conjb)
             {
               const char *crevtransb = get_blas_trans_arg (! transb, conjb);
               F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (crevtransb, 1),
--- a/liboctave/ChangeLog
+++ b/liboctave/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dMatrix.cc, fMatrix.cc, CMatrix.cc, fCMatrix.cc: Add more tests.
+	* CMatrix.cc (xgemm): Fix vector * matrix case.
+	* fCMatrix.cc (xgemm): Ditto.
+
 2009-08-16  Jaroslav Hajek  <highegg@gmail.com>
 
 	* fMatrix.cc, fCMatrix.cc: Make tests use single precision.
--- a/liboctave/dMatrix.cc
+++ b/liboctave/dMatrix.cc
@@ -3159,7 +3159,9 @@
 %! cv = randn(10,1);
 %! rv = randn(1,10);
 %!assert([M*cv,M*cv],M*[cv,cv],1e-14)
+%!assert([M'*cv,M'*cv],M'*[cv,cv],1e-14)
 %!assert([rv*M;rv*M],[rv;rv]*M,1e-14)
+%!assert([rv*M';rv*M'],[rv;rv]*M',1e-14)
 %!assert(2*rv*cv,[rv,rv]*[cv;cv],1e-14)
 */
 
--- a/liboctave/fCMatrix.cc
+++ b/liboctave/fCMatrix.cc
@@ -3744,12 +3744,16 @@
 
 /* Test some simple identities
 %!shared M, cv, rv
-%! M = randn(10,10)+i*rand(10,10);
-%! cv = randn(10,1)+i*rand(10,1);
-%! rv = randn(1,10)+i*rand(1,10);
-%!assert([M*cv,M*cv],M*[cv,cv],5e-7)
-%!assert([rv*M;rv*M],[rv;rv]*M,5e-7)
-%!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-7)
+%! M = single(randn(10,10))+i*single(rand(10,10));
+%! cv = single(randn(10,1))+i*single(rand(10,1));
+%! rv = single(randn(1,10))+i*single(rand(1,10));
+%!assert([M*cv,M*cv],M*[cv,cv],5e-6)
+%!assert([M.'*cv,M.'*cv],M.'*[cv,cv],5e-6)
+%!assert([M'*cv,M'*cv],M'*[cv,cv],5e-6)
+%!assert([rv*M;rv*M],[rv;rv]*M,5e-6)
+%!assert([rv*M.';rv*M.'],[rv;rv]*M.',5e-6)
+%!assert([rv*M';rv*M'],[rv;rv]*M',5e-6)
+%!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-6)
 */
 
 static const char *
@@ -3846,7 +3850,7 @@
                                        b.data (), 1, 0.0, c, 1
                                        F77_CHAR_ARG_LEN (1)));
             }
-          else if (a_nr == 1 && ! conja)
+          else if (a_nr == 1 && ! conja && ! conjb)
             {
               const char *crevtransb = get_blas_trans_arg (! transb, conjb);
               F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (crevtransb, 1),
--- a/liboctave/fMatrix.cc
+++ b/liboctave/fMatrix.cc
@@ -3157,9 +3157,11 @@
 %! M = single(randn(10,10));
 %! cv = single(randn(10,1));
 %! rv = single(randn(1,10));
-%!assert([M*cv,M*cv],M*[cv,cv],5e-7)
-%!assert([rv*M;rv*M],[rv;rv]*M,5e-7)
-%!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-7)
+%!assert([M*cv,M*cv],M*[cv,cv],5e-6)
+%!assert([M'*cv,M'*cv],M'*[cv,cv],5e-6)
+%!assert([rv*M;rv*M],[rv;rv]*M,5e-6)
+%!assert([rv*M';rv*M'],[rv;rv]*M',5e-6)
+%!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-6)
 */
 
 static const char *