Mercurial > jwe > octave
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 } |