Exemplo n.º 1
0
void Num_gemm_zprimme(char *transa, char *transb, int m, int n, int k,
                      Complex_Z alpha, Complex_Z *a, int lda, Complex_Z *b, int ldb,
                      Complex_Z beta, Complex_Z *c, int ldc) {

#ifdef NUM_CRAY
    _fcd transa_fcd, transb_fcd;

    transa_fcd = _cptofcd(transa, strlen(transa));
    transb_fcd = _cptofcd(transb, strlen(transb));
    ZGEMM(transa_fcd, transb_fcd, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta,
          c, &ldc);
#else
    ZGEMM(transa, transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc);
#endif

}
Exemplo n.º 2
0
//---------------------------------------------------------
void umAxB(const ZMat& A, const ZMat& B, ZMat& C)
//---------------------------------------------------------
{
  //-------------------------
  // C = A * B
  //-------------------------
  // A = op(A) is (M,K)
  // B = op(B) is (K,N)
  //        C  is (M,N)
  //-------------------------
  int M=A.num_rows(), K=A.num_cols(), N=B.num_cols();
  int LDA=M, LDB=K, LDC=M;
  std::complex<double> one=1.0, zero=0.0;
  if (B.num_rows() != K) { umERROR("umAxB(A,B,C)", "wrong dimensions"); }
  C.resize(M,N);

  ZGEMM ('N','N',M,N,K, one,A.data(),LDA, 
                           B.data(),LDB, 
                      zero,C.data(),LDC);
}