Mercurial > hg > octave-nkf
diff liboctave/CColVector.cc @ 1947:5ab3c25a3cf9
[project @ 1996-02-14 01:50:42 by jwe]
author | jwe |
---|---|
date | Wed, 14 Feb 1996 01:50:42 +0000 |
parents | 1281a23a34dd |
children | 1b57120c997b |
line wrap: on
line diff
--- a/liboctave/CColVector.cc +++ b/liboctave/CColVector.cc @@ -435,26 +435,35 @@ ComplexColumnVector operator * (const ComplexMatrix& m, const ComplexColumnVector& a) { + ComplexColumnVector retval; + int nr = m.rows (); int nc = m.cols (); + if (nc != a.length ()) + (*current_liboctave_error_handler) + ("nonconformant matrix multiplication attempted"); + else { - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); - return ComplexColumnVector (); + if (nc == 0 || nr == 0) + retval.resize (nr, 0.0); + else + { + int ld = nr; + + retval.resize (nr); + Complex *y = retval.fortran_vec (); + + F77_XFCN (zgemv, ZGEMV, ("N", nr, nc, 1.0, m.data (), ld, + a.data (), 1, 0.0, y, 1, 1L)); + + if (f77_exception_encountered) + (*current_liboctave_error_handler) + ("unrecoverable error in zgemv"); + } } - if (nc == 0 || nr == 0) - return ComplexColumnVector (0); - - int ld = nr; - - Complex *y = new Complex [nr]; - - F77_FCN (zgemv, ZGEMV) ("N", nr, nc, 1.0, m.data (), ld, a.data (), - 1, 0.0, y, 1, 1L); - - return ComplexColumnVector (y, nr); + return retval; } // column vector by column vector -> column vector operations