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