示例#1
0
// ---------------------------------------------------------------------- 
int zgemm(cpx alpha, const CpxNumMat& A, const CpxNumMat& B, cpx beta, CpxNumMat& C)
{
  assert( A.m() == C.m() );  assert( A.n() == B.m() );  assert( B.n() == C.n() );
  char transa = 'N';
  char transb = 'N';
  int m = C.m();  int n = C.n();  int k = A.n();
  zgemm_(&transa, &transb, &m, &n, &k,
	 &alpha, A.data(), &m, B.data(), &k, &beta, C.data(), &m);
  return 0;
}
示例#2
0
inline float energy(CpxNumMat& m)
{
  float val=0;
  cpx* data = m.data();
  for(int i=0; i<m.m()*m.n(); i++) {	 //val += data[i].re*data[i].re + data[i].im*data[i].im;
	 val += norm(data[i]);
  }
  return val;
}
示例#3
0
//Y <- a M X + b Y
// ----------------------------------------------------------------------
int zgemv(cpx alpha, const CpxNumMat& A, const CpxNumVec& X, cpx beta, CpxNumVec& Y)
{
  assert(Y.m() == A.m());
  assert(A.n() == X.m());
  char trans = 'N';
  int m = A.m();  int n = A.n();
  int incx = 1;  int incy = 1;
  zgemv_(&trans, &m, &n, &alpha, A.data(), &m, X.data(), &incx, &beta, Y.data(), &incy);
  return 0;
}