comparison liboctave/array/fCMatrix.cc @ 21120:499b851fbfae

Replace pattern if/err_XXX/else/code with if/err_XXX/ code. * schur.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-sparse.cc, ov-float.h, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-range.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-scalar.h, ov-str-mat.cc, ops.h, pt-idx.cc, Array.cc, CColVector.cc, CMatrix.cc, CRowVector.cc, MSparse.cc, PermMatrix.cc, Sparse.cc, dColVector.cc, dMatrix.cc, dRowVector.cc, dSparse.cc, fCColVector.cc, fCMatrix.cc, fCRowVector.cc, fColVector.cc, fMatrix.cc, fRowVector.cc: Replace pattern if/err_XXX/else/code with if/err_XXX/ code.
author Rik <rik@octave.org>
date Wed, 20 Jan 2016 16:58:59 -0800
parents 358aa7fcbd33
children 228b65504557
comparison
equal deleted inserted replaced
21119:90cd0f9442d5 21120:499b851fbfae
3718 octave_idx_type b_nr = trb ? b.cols () : b.rows (); 3718 octave_idx_type b_nr = trb ? b.cols () : b.rows ();
3719 octave_idx_type b_nc = trb ? b.rows () : b.cols (); 3719 octave_idx_type b_nc = trb ? b.rows () : b.cols ();
3720 3720
3721 if (a_nc != b_nr) 3721 if (a_nc != b_nr)
3722 err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc); 3722 err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc);
3723 else 3723
3724 { 3724 if (a_nr == 0 || a_nc == 0 || b_nc == 0)
3725 if (a_nr == 0 || a_nc == 0 || b_nc == 0) 3725 retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
3726 retval = FloatComplexMatrix (a_nr, b_nc, 0.0); 3726 else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
3727 else if (a.data () == b.data () && a_nr == b_nc && tra != trb) 3727 {
3728 octave_idx_type lda = a.rows ();
3729
3730 // FIXME: looking at the reference BLAS, it appears that it
3731 // should not be necessary to initialize the output matrix if
3732 // BETA is 0 in the call to CHERK, but ATLAS appears to
3733 // use the result matrix before zeroing the elements.
3734
3735 retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
3736 FloatComplex *c = retval.fortran_vec ();
3737
3738 const char ctra = get_blas_trans_arg (tra, cja);
3739 if (cja || cjb)
3728 { 3740 {
3729 octave_idx_type lda = a.rows (); 3741 F77_XFCN (cherk, CHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
3730 3742 F77_CONST_CHAR_ARG2 (&ctra, 1),
3731 // FIXME: looking at the reference BLAS, it appears that it 3743 a_nr, a_nc, 1.0,
3732 // should not be necessary to initialize the output matrix if 3744 a.data (), lda, 0.0, c, a_nr
3733 // BETA is 0 in the call to CHERK, but ATLAS appears to 3745 F77_CHAR_ARG_LEN (1)
3734 // use the result matrix before zeroing the elements. 3746 F77_CHAR_ARG_LEN (1)));
3735 3747 for (octave_idx_type j = 0; j < a_nr; j++)
3736 retval = FloatComplexMatrix (a_nr, b_nc, 0.0); 3748 for (octave_idx_type i = 0; i < j; i++)
3737 FloatComplex *c = retval.fortran_vec (); 3749 retval.xelem (j,i) = std::conj (retval.xelem (i,j));
3738
3739 const char ctra = get_blas_trans_arg (tra, cja);
3740 if (cja || cjb)
3741 {
3742 F77_XFCN (cherk, CHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
3743 F77_CONST_CHAR_ARG2 (&ctra, 1),
3744 a_nr, a_nc, 1.0,
3745 a.data (), lda, 0.0, c, a_nr
3746 F77_CHAR_ARG_LEN (1)
3747 F77_CHAR_ARG_LEN (1)));
3748 for (octave_idx_type j = 0; j < a_nr; j++)
3749 for (octave_idx_type i = 0; i < j; i++)
3750 retval.xelem (j,i) = std::conj (retval.xelem (i,j));
3751 }
3752 else
3753 {
3754 F77_XFCN (csyrk, CSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
3755 F77_CONST_CHAR_ARG2 (&ctra, 1),
3756 a_nr, a_nc, 1.0,
3757 a.data (), lda, 0.0, c, a_nr
3758 F77_CHAR_ARG_LEN (1)
3759 F77_CHAR_ARG_LEN (1)));
3760 for (octave_idx_type j = 0; j < a_nr; j++)
3761 for (octave_idx_type i = 0; i < j; i++)
3762 retval.xelem (j,i) = retval.xelem (i,j);
3763
3764 }
3765
3766 } 3750 }
3767 else 3751 else
3768 { 3752 {
3769 octave_idx_type lda = a.rows (); 3753 F77_XFCN (csyrk, CSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
3770 octave_idx_type tda = a.cols (); 3754 F77_CONST_CHAR_ARG2 (&ctra, 1),
3771 octave_idx_type ldb = b.rows (); 3755 a_nr, a_nc, 1.0,
3772 octave_idx_type tdb = b.cols (); 3756 a.data (), lda, 0.0, c, a_nr
3773 3757 F77_CHAR_ARG_LEN (1)
3774 retval = FloatComplexMatrix (a_nr, b_nc, 0.0); 3758 F77_CHAR_ARG_LEN (1)));
3775 FloatComplex *c = retval.fortran_vec (); 3759 for (octave_idx_type j = 0; j < a_nr; j++)
3776 3760 for (octave_idx_type i = 0; i < j; i++)
3777 if (b_nc == 1 && a_nr == 1) 3761 retval.xelem (j,i) = retval.xelem (i,j);
3762
3763 }
3764
3765 }
3766 else
3767 {
3768 octave_idx_type lda = a.rows ();
3769 octave_idx_type tda = a.cols ();
3770 octave_idx_type ldb = b.rows ();
3771 octave_idx_type tdb = b.cols ();
3772
3773 retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
3774 FloatComplex *c = retval.fortran_vec ();
3775
3776 if (b_nc == 1 && a_nr == 1)
3777 {
3778 if (cja == cjb)
3778 { 3779 {
3779 if (cja == cjb) 3780 F77_FUNC (xcdotu, XCDOTU) (a_nc, a.data (), 1, b.data (), 1,
3780 { 3781 *c);
3781 F77_FUNC (xcdotu, XCDOTU) (a_nc, a.data (), 1, b.data (), 1, 3782 if (cja) *c = std::conj (*c);
3782 *c);
3783 if (cja) *c = std::conj (*c);
3784 }
3785 else if (cja)
3786 F77_FUNC (xcdotc, XCDOTC) (a_nc, a.data (), 1, b.data (), 1,
3787 *c);
3788 else
3789 F77_FUNC (xcdotc, XCDOTC) (a_nc, b.data (), 1, a.data (), 1,
3790 *c);
3791 } 3783 }
3792 else if (b_nc == 1 && ! cjb) 3784 else if (cja)
3793 { 3785 F77_FUNC (xcdotc, XCDOTC) (a_nc, a.data (), 1, b.data (), 1,
3794 const char ctra = get_blas_trans_arg (tra, cja); 3786 *c);
3795 F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3796 lda, tda, 1.0, a.data (), lda,
3797 b.data (), 1, 0.0, c, 1
3798 F77_CHAR_ARG_LEN (1)));
3799 }
3800 else if (a_nr == 1 && ! cja && ! cjb)
3801 {
3802 const char crevtrb = get_blas_trans_arg (! trb, cjb);
3803 F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
3804 ldb, tdb, 1.0, b.data (), ldb,
3805 a.data (), 1, 0.0, c, 1
3806 F77_CHAR_ARG_LEN (1)));
3807 }
3808 else 3787 else
3809 { 3788 F77_FUNC (xcdotc, XCDOTC) (a_nc, b.data (), 1, a.data (), 1,
3810 const char ctra = get_blas_trans_arg (tra, cja); 3789 *c);
3811 const char ctrb = get_blas_trans_arg (trb, cjb); 3790 }
3812 F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1), 3791 else if (b_nc == 1 && ! cjb)
3813 F77_CONST_CHAR_ARG2 (&ctrb, 1), 3792 {
3814 a_nr, b_nc, a_nc, 1.0, a.data (), 3793 const char ctra = get_blas_trans_arg (tra, cja);
3815 lda, b.data (), ldb, 0.0, c, a_nr 3794 F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3816 F77_CHAR_ARG_LEN (1) 3795 lda, tda, 1.0, a.data (), lda,
3817 F77_CHAR_ARG_LEN (1))); 3796 b.data (), 1, 0.0, c, 1
3818 } 3797 F77_CHAR_ARG_LEN (1)));
3798 }
3799 else if (a_nr == 1 && ! cja && ! cjb)
3800 {
3801 const char crevtrb = get_blas_trans_arg (! trb, cjb);
3802 F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
3803 ldb, tdb, 1.0, b.data (), ldb,
3804 a.data (), 1, 0.0, c, 1
3805 F77_CHAR_ARG_LEN (1)));
3806 }
3807 else
3808 {
3809 const char ctra = get_blas_trans_arg (tra, cja);
3810 const char ctrb = get_blas_trans_arg (trb, cjb);
3811 F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3812 F77_CONST_CHAR_ARG2 (&ctrb, 1),
3813 a_nr, b_nc, a_nc, 1.0, a.data (),
3814 lda, b.data (), ldb, 0.0, c, a_nr
3815 F77_CHAR_ARG_LEN (1)
3816 F77_CHAR_ARG_LEN (1)));
3819 } 3817 }
3820 } 3818 }
3821 3819
3822 return retval; 3820 return retval;
3823 } 3821 }