the last block column
418  {
419  IT * blocknnz = new IT[A.nbr]; // nnz per block responsible
420  for(IT i=0; i<A.nbr; ++i)
421  {
422  blocknnz[i] = A.top[i][j] - A.top[i][j-1];
423  }
424  sum[j-1] = std::accumulate(blocknnz, blocknnz + (A.nbr-1), 0); // ignore the last block row
425  delete [] blocknnz;
426  }
427  float colave = std::accumulate(sum.begin(), sum.end(), 0.0) / static_cast<float>(A.nbc-1);
428  vector<float>::iterator colmax = std::max_element(sum.begin(), sum.end());
429  return (*colmax) / colave;
430 }
431 
432 
433 #endif
434 
csbsym.h
bicsb_gespmv
void bicsb_gespmv(const BiCsb< NT, IT > &A, const RHS *__restrict x, LHS *__restrict y)
Definition: friends.h:113
BmCsb::rowsize
IT rowsize() const
Definition: bmcsb.h:33
BmSym::isPar
bool isPar() const
Definition: bmsym.h:65
BmCsb
Definition: bmcsb.h:21
BiCsb::rowsize
IT rowsize() const
Definition: bicsb.h:34
csbsym_gespmv
void csbsym_gespmv(const CsbSym< NT, IT > &A, const NT *__restrict x, NT *__restrict y)
Definition: friends.h:281
prescan
unsigned prescan(unsigned *a, MTYPE *const M, int n)
Definition: utility.h:191