comparison liboctave/fMatrix.cc @ 11516:53edbf95fbb6

avoid GCC warnings
author John W. Eaton <jwe@octave.org>
date Thu, 13 Jan 2011 15:40:14 -0500
parents 7c573eb981eb
children 141b3fb5cef7
comparison
equal deleted inserted replaced
11515:6dbf9bcce90e 11516:53edbf95fbb6
3093 %!assert([rv*M;rv*M],[rv;rv]*M,5e-6) 3093 %!assert([rv*M;rv*M],[rv;rv]*M,5e-6)
3094 %!assert([rv*M';rv*M'],[rv;rv]*M',5e-6) 3094 %!assert([rv*M';rv*M'],[rv;rv]*M',5e-6)
3095 %!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-6) 3095 %!assert(2*rv*cv,[rv,rv]*[cv;cv],5e-6)
3096 */ 3096 */
3097 3097
3098 static const char * 3098 static char
3099 get_blas_trans_arg (bool trans) 3099 get_blas_trans_arg (bool trans)
3100 { 3100 {
3101 static char blas_notrans = 'N', blas_trans = 'T'; 3101 return trans ? 'T' : 'N';
3102 return (trans) ? &blas_trans : &blas_notrans;
3103 } 3102 }
3104 3103
3105 // the general GEMM operation 3104 // the general GEMM operation
3106 3105
3107 FloatMatrix 3106 FloatMatrix
3129 octave_idx_type lda = a.rows (); 3128 octave_idx_type lda = a.rows ();
3130 3129
3131 retval = FloatMatrix (a_nr, b_nc); 3130 retval = FloatMatrix (a_nr, b_nc);
3132 float *c = retval.fortran_vec (); 3131 float *c = retval.fortran_vec ();
3133 3132
3134 const char *ctra = get_blas_trans_arg (tra); 3133 const char ctra = get_blas_trans_arg (tra);
3135 F77_XFCN (ssyrk, SSYRK, (F77_CONST_CHAR_ARG2 ("U", 1), 3134 F77_XFCN (ssyrk, SSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
3136 F77_CONST_CHAR_ARG2 (ctra, 1), 3135 F77_CONST_CHAR_ARG2 (&ctra, 1),
3137 a_nr, a_nc, 1.0, 3136 a_nr, a_nc, 1.0,
3138 a.data (), lda, 0.0, c, a_nr 3137 a.data (), lda, 0.0, c, a_nr
3139 F77_CHAR_ARG_LEN (1) 3138 F77_CHAR_ARG_LEN (1)
3140 F77_CHAR_ARG_LEN (1))); 3139 F77_CHAR_ARG_LEN (1)));
3141 for (int j = 0; j < a_nr; j++) 3140 for (int j = 0; j < a_nr; j++)
3155 { 3154 {
3156 if (a_nr == 1) 3155 if (a_nr == 1)
3157 F77_FUNC (xsdot, XSDOT) (a_nc, a.data (), 1, b.data (), 1, *c); 3156 F77_FUNC (xsdot, XSDOT) (a_nc, a.data (), 1, b.data (), 1, *c);
3158 else 3157 else
3159 { 3158 {
3160 const char *ctra = get_blas_trans_arg (tra); 3159 const char ctra = get_blas_trans_arg (tra);
3161 F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (ctra, 1), 3160 F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3162 lda, tda, 1.0, a.data (), lda, 3161 lda, tda, 1.0, a.data (), lda,
3163 b.data (), 1, 0.0, c, 1 3162 b.data (), 1, 0.0, c, 1
3164 F77_CHAR_ARG_LEN (1))); 3163 F77_CHAR_ARG_LEN (1)));
3165 } 3164 }
3166 } 3165 }
3167 else if (a_nr == 1) 3166 else if (a_nr == 1)
3168 { 3167 {
3169 const char *crevtrb = get_blas_trans_arg (! trb); 3168 const char crevtrb = get_blas_trans_arg (! trb);
3170 F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (crevtrb, 1), 3169 F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
3171 ldb, tdb, 1.0, b.data (), ldb, 3170 ldb, tdb, 1.0, b.data (), ldb,
3172 a.data (), 1, 0.0, c, 1 3171 a.data (), 1, 0.0, c, 1
3173 F77_CHAR_ARG_LEN (1))); 3172 F77_CHAR_ARG_LEN (1)));
3174 } 3173 }
3175 else 3174 else
3176 { 3175 {
3177 const char *ctra = get_blas_trans_arg (tra); 3176 const char ctra = get_blas_trans_arg (tra);
3178 const char *ctrb = get_blas_trans_arg (trb); 3177 const char ctrb = get_blas_trans_arg (trb);
3179 F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 (ctra, 1), 3178 F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
3180 F77_CONST_CHAR_ARG2 (ctrb, 1), 3179 F77_CONST_CHAR_ARG2 (&ctrb, 1),
3181 a_nr, b_nc, a_nc, 1.0, a.data (), 3180 a_nr, b_nc, a_nc, 1.0, a.data (),
3182 lda, b.data (), ldb, 0.0, c, a_nr 3181 lda, b.data (), ldb, 0.0, c, a_nr
3183 F77_CHAR_ARG_LEN (1) 3182 F77_CHAR_ARG_LEN (1)
3184 F77_CHAR_ARG_LEN (1))); 3183 F77_CHAR_ARG_LEN (1)));
3185 } 3184 }