# HG changeset patch # User John W. Eaton # Date 1330023026 18000 # Node ID ed8c4921bf614dd6d2cf3bcf32d6fdd85aacb9d7 # Parent ba4d6343524b406b0d15aee34579f80783581c54 correctly fill result for M * v for Nx0 * 0x1 operations * dColVector.cc (operator * (const Matrix&, const ColumnVector&)): Fill result if NC is 0. * CColVector.cc (operator * (const ComplexMatrix&, const ComplexColumnVector&)): Likewise. * fCColVector.cc (const FloatComplexMatrix&, const FloatComplexColumnVector&)): Likewise. * fColVector.cc (const FloatMatrix&, const FloatColumnVector&)): Likewise. diff -r ba4d6343524b -r ed8c4921bf61 liboctave/CColVector.cc --- a/liboctave/CColVector.cc Wed Feb 22 14:39:41 2012 -0500 +++ b/liboctave/CColVector.cc Thu Feb 23 13:50:26 2012 -0500 @@ -346,13 +346,19 @@ if (nr != 0) { - Complex *y = retval.fortran_vec (); + if (nc == 0) + retval.fill (0.0); + else + { + Complex *y = retval.fortran_vec (); - F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0, m.data (), nr, - a.data (), 1, 0.0, y, 1 - F77_CHAR_ARG_LEN (1))); + F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), + nr, nc, 1.0, m.data (), nr, + a.data (), 1, 0.0, y, 1 + F77_CHAR_ARG_LEN (1))); + } } + } return retval; diff -r ba4d6343524b -r ed8c4921bf61 liboctave/dColVector.cc --- a/liboctave/dColVector.cc Wed Feb 22 14:39:41 2012 -0500 +++ b/liboctave/dColVector.cc Thu Feb 23 13:50:26 2012 -0500 @@ -212,12 +212,17 @@ if (nr != 0) { - double *y = retval.fortran_vec (); + if (nc == 0) + retval.fill (0.0); + else + { + double *y = retval.fortran_vec (); - F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0, m.data (), nr, - a.data (), 1, 0.0, y, 1 - F77_CHAR_ARG_LEN (1))); + F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), + nr, nc, 1.0, m.data (), nr, + a.data (), 1, 0.0, y, 1 + F77_CHAR_ARG_LEN (1))); + } } } diff -r ba4d6343524b -r ed8c4921bf61 liboctave/fCColVector.cc --- a/liboctave/fCColVector.cc Wed Feb 22 14:39:41 2012 -0500 +++ b/liboctave/fCColVector.cc Thu Feb 23 13:50:26 2012 -0500 @@ -346,12 +346,17 @@ if (nr != 0) { - FloatComplex *y = retval.fortran_vec (); + if (nc == 0) + retval.fill (0.0); + else + { + FloatComplex *y = retval.fortran_vec (); - F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0f, m.data (), nr, - a.data (), 1, 0.0f, y, 1 - F77_CHAR_ARG_LEN (1))); + F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), + nr, nc, 1.0f, m.data (), nr, + a.data (), 1, 0.0f, y, 1 + F77_CHAR_ARG_LEN (1))); + } } } diff -r ba4d6343524b -r ed8c4921bf61 liboctave/fColVector.cc --- a/liboctave/fColVector.cc Wed Feb 22 14:39:41 2012 -0500 +++ b/liboctave/fColVector.cc Thu Feb 23 13:50:26 2012 -0500 @@ -211,12 +211,17 @@ if (nr != 0) { - float *y = retval.fortran_vec (); + if (nc == 0) + retval.fill (0.0); + else + { + float *y = retval.fortran_vec (); - F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0f, m.data (), nr, - a.data (), 1, 0.0f, y, 1 - F77_CHAR_ARG_LEN (1))); + F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), + nr, nc, 1.0f, m.data (), nr, + a.data (), 1, 0.0f, y, 1 + F77_CHAR_ARG_LEN (1))); + } } }