# HG changeset patch # User Jaroslav Hajek # Date 1245309297 -7200 # Node ID be6867ba810469f35ac25473ff43bff0a9cb2347 # Parent d4b1314a7c311a3c1123e12f2e10ba4fdd991cdf avoid useless zero initialization when doing matrix multiply diff --git a/liboctave/CMatrix.cc b/liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -2903,7 +2903,7 @@ { octave_idx_type a_len = a.length (); - retval.resize (len, a_len); + retval = ComplexMatrix (len, a_len); Complex *c = retval.fortran_vec (); F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), @@ -3788,12 +3788,12 @@ else { if (a_nr == 0 || a_nc == 0 || b_nc == 0) - retval.resize (a_nr, b_nc, 0.0); + retval = ComplexMatrix (a_nr, b_nc, 0.0); else if (a.data () == b.data () && a_nr == b_nc && transa != transb) { octave_idx_type lda = a.rows (); - retval.resize (a_nr, b_nc); + retval = ComplexMatrix (a_nr, b_nc); Complex *c = retval.fortran_vec (); const char *ctransa = get_blas_trans_arg (transa, conja); @@ -3829,7 +3829,7 @@ octave_idx_type lda = a.rows (), tda = a.cols (); octave_idx_type ldb = b.rows (), tdb = b.cols (); - retval.resize (a_nr, b_nc); + retval = ComplexMatrix (a_nr, b_nc); Complex *c = retval.fortran_vec (); if (b_nc == 1 && a_nr == 1) diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,11 @@ +2009-06-18 Jaroslav Hajek + + * dMatrix.cc (xgemm): Replace resize() with uninitialized allocations + where appropriate. + * fMatrix.cc (xgemm): Ditto. + * CMatrix.cc (xgemm): Ditto. + * fCMatrix.cc (xgemm): Ditto. + 2009-06-12 Jaroslav Hajek * oct-sort.cc (octave_sort::lookupm, octave_sort::lookupb): New diff --git a/liboctave/dMatrix.cc b/liboctave/dMatrix.cc --- a/liboctave/dMatrix.cc +++ b/liboctave/dMatrix.cc @@ -2592,7 +2592,7 @@ { octave_idx_type a_len = a.length (); - retval.resize (len, a_len); + retval = Matrix (len, a_len); double *c = retval.fortran_vec (); F77_XFCN (dgemm, DGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), @@ -3188,12 +3188,12 @@ else { if (a_nr == 0 || a_nc == 0 || b_nc == 0) - retval.resize (a_nr, b_nc, 0.0); + retval = Matrix (a_nr, b_nc, 0.0); else if (a.data () == b.data () && a_nr == b_nc && transa != transb) { octave_idx_type lda = a.rows (); - retval.resize (a_nr, b_nc); + retval = Matrix (a_nr, b_nc); double *c = retval.fortran_vec (); const char *ctransa = get_blas_trans_arg (transa); @@ -3213,7 +3213,7 @@ octave_idx_type lda = a.rows (), tda = a.cols (); octave_idx_type ldb = b.rows (), tdb = b.cols (); - retval.resize (a_nr, b_nc); + retval = Matrix (a_nr, b_nc); double *c = retval.fortran_vec (); if (b_nc == 1) diff --git a/liboctave/fCMatrix.cc b/liboctave/fCMatrix.cc --- a/liboctave/fCMatrix.cc +++ b/liboctave/fCMatrix.cc @@ -2896,7 +2896,7 @@ { octave_idx_type a_len = a.length (); - retval.resize (len, a_len); + retval = FloatComplexMatrix (len, a_len); FloatComplex *c = retval.fortran_vec (); F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), @@ -3781,12 +3781,12 @@ else { if (a_nr == 0 || a_nc == 0 || b_nc == 0) - retval.resize (a_nr, b_nc, 0.0); + retval = FloatComplexMatrix (a_nr, b_nc, 0.0); else if (a.data () == b.data () && a_nr == b_nc && transa != transb) { octave_idx_type lda = a.rows (); - retval.resize (a_nr, b_nc); + retval = FloatComplexMatrix (a_nr, b_nc); FloatComplex *c = retval.fortran_vec (); const char *ctransa = get_blas_trans_arg (transa, conja); @@ -3822,7 +3822,7 @@ octave_idx_type lda = a.rows (), tda = a.cols (); octave_idx_type ldb = b.rows (), tdb = b.cols (); - retval.resize (a_nr, b_nc); + retval = FloatComplexMatrix (a_nr, b_nc); FloatComplex *c = retval.fortran_vec (); if (b_nc == 1 && a_nr == 1) diff --git a/liboctave/fMatrix.cc b/liboctave/fMatrix.cc --- a/liboctave/fMatrix.cc +++ b/liboctave/fMatrix.cc @@ -2591,7 +2591,7 @@ { octave_idx_type a_len = a.length (); - retval.resize (len, a_len); + retval = FloatMatrix (len, a_len); float *c = retval.fortran_vec (); F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), @@ -3187,12 +3187,12 @@ else { if (a_nr == 0 || a_nc == 0 || b_nc == 0) - retval.resize (a_nr, b_nc, 0.0); + retval = FloatMatrix (a_nr, b_nc, 0.0); else if (a.data () == b.data () && a_nr == b_nc && transa != transb) { octave_idx_type lda = a.rows (); - retval.resize (a_nr, b_nc); + retval = FloatMatrix (a_nr, b_nc); float *c = retval.fortran_vec (); const char *ctransa = get_blas_trans_arg (transa); @@ -3212,7 +3212,7 @@ octave_idx_type lda = a.rows (), tda = a.cols (); octave_idx_type ldb = b.rows (), tdb = b.cols (); - retval.resize (a_nr, b_nc); + retval = FloatMatrix (a_nr, b_nc); float *c = retval.fortran_vec (); if (b_nc == 1)