comparison liboctave/CMatrix.cc @ 11516:53edbf95fbb6

avoid GCC warnings
author John W. Eaton <jwe@octave.org>
date Thu, 13 Jan 2011 15:40:14 -0500
parents 5ea2644b0111
children 141b3fb5cef7
comparison
equal deleted inserted replaced
11515:6dbf9bcce90e 11516:53edbf95fbb6
3690 %!assert([rv*M.';rv*M.'],[rv;rv]*M.',1e-14) 3690 %!assert([rv*M.';rv*M.'],[rv;rv]*M.',1e-14)
3691 %!assert([rv*M';rv*M'],[rv;rv]*M',1e-14) 3691 %!assert([rv*M';rv*M'],[rv;rv]*M',1e-14)
3692 %!assert(2*rv*cv,[rv,rv]*[cv;cv],1e-14) 3692 %!assert(2*rv*cv,[rv,rv]*[cv;cv],1e-14)
3693 */ 3693 */
3694 3694
3695 static const char * 3695 static inline char
3696 get_blas_trans_arg (bool trans, bool conj) 3696 get_blas_trans_arg (bool trans, bool conj)
3697 { 3697 {
3698 static char blas_notrans = 'N', blas_trans = 'T', blas_conj_trans = 'C'; 3698 return trans ? (conj ? 'C' : 'T') : 'N';
3699 return trans ? (conj ? &blas_conj_trans : &blas_trans) : &blas_notrans;
3700 } 3699 }
3701 3700
3702 // the general GEMM operation 3701 // the general GEMM operation
3703 3702
3704 ComplexMatrix 3703 ComplexMatrix
3727 octave_idx_type lda = a.rows (); 3726 octave_idx_type lda = a.rows ();
3728 3727
3729 retval = ComplexMatrix (a_nr, b_nc); 3728 retval = ComplexMatrix (a_nr, b_nc);
3730 Complex *c = retval.fortran_vec (); 3729 Complex *c = retval.fortran_vec ();
3731 3730
3732 const char *ctra = get_blas_trans_arg (tra, cja); 3731 const char ctra = get_blas_trans_arg (tra, cja);
3733 if (cja || cjb) 3732 if (cja || cjb)
3734 { 3733 {
3735 F77_XFCN (zherk, ZHERK, (F77_CONST_CHAR_ARG2 ("U", 1), 3734 F77_XFCN (zherk, ZHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
3736 F77_CONST_CHAR_ARG2 (ctra, 1), 3735 F77_CONST_CHAR_ARG2 (&ctra, 1),
3737 a_nr, a_nc, 1.0, 3736 a_nr, a_nc, 1.0,
3738 a.data (), lda, 0.0, c, a_nr 3737 a.data (), lda, 0.0, c, a_nr
3739 F77_CHAR_ARG_LEN (1) 3738 F77_CHAR_ARG_LEN (1)
3740 F77_CHAR_ARG_LEN (1))); 3739 F77_CHAR_ARG_LEN (1)));
3741 for (octave_idx_type j = 0; j < a_nr; j++) 3740 for (octave_idx_type j = 0; j < a_nr; j++)
3743 retval.xelem (j,i) = std::conj (retval.xelem (i,j)); 3742 retval.xelem (j,i) = std::conj (retval.xelem (i,j));
3744 } 3743 }
3745 else 3744 else
3746 { 3745 {
3747 F77_XFCN (zsyrk, ZSYRK, (F77_CONST_CHAR_ARG2 ("U", 1), 3746 F77_XFCN (zsyrk, ZSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
3748 F77_CONST_CHAR_ARG2 (ctra, 1), 3747 F77_CONST_CHAR_ARG2 (&ctra, 1),
3749 a_nr, a_nc, 1.0, 3748 a_nr, a_nc, 1.0,
3750 a.data (), lda, 0.0, c, a_nr 3749 a.data (), lda, 0.0, c, a_nr
3751 F77_CHAR_ARG_LEN (1) 3750 F77_CHAR_ARG_LEN (1)
3752 F77_CHAR_ARG_LEN (1))); 3751 F77_CHAR_ARG_LEN (1)));
3753 for (octave_idx_type j = 0; j < a_nr; j++) 3752 for (octave_idx_type j = 0; j < a_nr; j++)
3777 else 3776 else
3778 F77_FUNC (xzdotc, XZDOTC) (a_nc, b.data (), 1, a.data (), 1, *c); 3777 F77_FUNC (xzdotc, XZDOTC) (a_nc, b.data (), 1, a.data (), 1, *c);
3779 } 3778 }
3780 else if (b_nc == 1 && ! cjb) 3779 else if (b_nc == 1 && ! cjb)
3781 { 3780 {
3782 const char *ctra = get_blas_trans_arg (tra, cja); 3781 const char ctra = get_blas_trans_arg (tra, cja);
3783 F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (ctra, 1), 3782 F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3784 lda, tda, 1.0, a.data (), lda, 3783 lda, tda, 1.0, a.data (), lda,
3785 b.data (), 1, 0.0, c, 1 3784 b.data (), 1, 0.0, c, 1
3786 F77_CHAR_ARG_LEN (1))); 3785 F77_CHAR_ARG_LEN (1)));
3787 } 3786 }
3788 else if (a_nr == 1 && ! cja && ! cjb) 3787 else if (a_nr == 1 && ! cja && ! cjb)
3789 { 3788 {
3790 const char *crevtrb = get_blas_trans_arg (! trb, cjb); 3789 const char crevtrb = get_blas_trans_arg (! trb, cjb);
3791 F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (crevtrb, 1), 3790 F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
3792 ldb, tdb, 1.0, b.data (), ldb, 3791 ldb, tdb, 1.0, b.data (), ldb,
3793 a.data (), 1, 0.0, c, 1 3792 a.data (), 1, 0.0, c, 1
3794 F77_CHAR_ARG_LEN (1))); 3793 F77_CHAR_ARG_LEN (1)));
3795 } 3794 }
3796 else 3795 else
3797 { 3796 {
3798 const char *ctra = get_blas_trans_arg (tra, cja); 3797 const char ctra = get_blas_trans_arg (tra, cja);
3799 const char *ctrb = get_blas_trans_arg (trb, cjb); 3798 const char ctrb = get_blas_trans_arg (trb, cjb);
3800 F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 (ctra, 1), 3799 F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3801 F77_CONST_CHAR_ARG2 (ctrb, 1), 3800 F77_CONST_CHAR_ARG2 (&ctrb, 1),
3802 a_nr, b_nc, a_nc, 1.0, a.data (), 3801 a_nr, b_nc, a_nc, 1.0, a.data (),
3803 lda, b.data (), ldb, 0.0, c, a_nr 3802 lda, b.data (), ldb, 0.0, c, a_nr
3804 F77_CHAR_ARG_LEN (1) 3803 F77_CHAR_ARG_LEN (1)
3805 F77_CHAR_ARG_LEN (1))); 3804 F77_CHAR_ARG_LEN (1)));
3806 } 3805 }