181 if ((LDA < pastix_imax(1,Am)) && (Am > 0)) {
184 if ((LDB < pastix_imax(1,Bm)) && (Bm > 0)) {
187 if ((LDC < pastix_imax(1,M)) && (M > 0)) {
193 if ( ( ( transA ==
PastixNoTrans ) && ( LWORK < (M+1)*K) ) ||
195 pastix_print_error(
"CORE_gemdm: Illegal value of LWORK\n" );
197 pastix_print_error(
"LWORK %d < (M=%d+1)*K=%d ", LWORK, M, K );
200 pastix_print_error(
"LWORK %d < (N=%d+1)*K=%d ", LWORK, N, K );
206 if (M == 0 || N == 0 ||
207 ((alpha == 0.0 || K == 0) && beta == 1.0) ) {
215 cblas_scopy(K, D, incD, wD2, 1);
226 for (j=0; j<K; j++, wD++) {
228 cblas_scopy(M, &A[LDA*j], 1, &w[M*j], 1);
229 cblas_sscal(M, (delta), &w[M*j], 1);
233 cblas_sgemm(CblasColMajor, CblasNoTrans, (CBLAS_TRANSPOSE)transB,
244 for (j=0; j<K; j++, wD++) {
246 cblas_scopy(N, &B[j], LDB, &w[N*j], 1);
247 cblas_sscal(N, (delta), &w[N*j], 1);
251 cblas_sgemm(CblasColMajor, (CBLAS_TRANSPOSE)transA, CblasTrans,
259 #if defined(PRECISION_z) || defined(PRECISION_c)
263 for (j=0; j<K; j++, wD++) {
265 cblas_scopy(N, &B[LDB*j], 1, &w[N*j], 1);
266 ret = LAPACKE_slacgv_work(N, &w[N*j], 1);
268 cblas_sscal(N, (delta), &w[N*j], 1);
275 for (j=0; j<K; j++, wD++) {
277 cblas_scopy(N, &B[LDB*j], 1, &w[N*j], 1);
278 cblas_sscal(N, (delta), &w[N*j], 1);
283 cblas_sgemm(CblasColMajor, (CBLAS_TRANSPOSE)transA, CblasNoTrans,
int core_sgemdm(pastix_trans_t transA, pastix_trans_t transB, int M, int N, int K, float alpha, const float *A, int LDA, const float *B, int LDB, float beta, float *C, int LDC, const float *D, int incD, float *WORK, int LWORK)
Perform one of the following matrix-matrix operations.
enum pastix_trans_e pastix_trans_t
Transpostion.