8 #ifndef EXPLICIT_MAPMAKING_SCALAPACK_WRAPPER_HPP_
9 #define EXPLICIT_MAPMAKING_SCALAPACK_WRAPPER_HPP_
15 inline bool i_am_in_grid(
const std::vector<int>& desc) {
return desc[1] != -1; }
17 int numroc_w(
int m,
int mb_a,
int myroc,
int rsrc_a,
int n_proc);
19 int descinit_w(std::vector<int>* desc,
int m,
int n,
int mb,
int nb,
int irsrc,
int icsrc,
int icontxt,
int lld);
21 void pdgemr2d_w(
int m,
int n, std::vector<double>* a,
int ia,
int ja, std::vector<int>* desca,
22 std::vector<double>* b,
int ib,
int jb, std::vector<int>* descb,
int ictxt);
24 void pdgemm_w(
char transa,
char transb,
int m,
int n,
int k,
double alpha,
25 std::vector<double>* a,
int ia,
int ja, std::vector<int>* desca,
26 std::vector<double>* b,
int ib,
int jb, std::vector<int>* descb,
27 double beta, std::vector<double>* c,
int ic,
int jc, std::vector<int>* descc);
29 void pdgemv_w(
char transa,
int m,
int n,
double alpha,
30 std::vector<double>* a,
int ia,
int ja, std::vector<int>* desca,
31 std::vector<double>* x,
int ix,
int jx, std::vector<int>* descx,
int incx,
32 double beta, std::vector<double>* y,
int iy,
int jy, std::vector<int>* descy,
int incy);
34 int dsyev_w(
char jobz,
char uplo,
int n, std::vector<double>* a,
int lda,
35 std::vector<double>* w, std::vector<double>* work,
int lwork);
37 int dgemv_w(
char trans,
int m,
int n,
double alpha, std::vector<double>* a,
int lda,
38 std::vector<double>* x,
int inc_x,
39 double beta, std::vector<double>* y,
int inc_y);
41 int dgemv_w(
char trans,
int m,
int n,
double alpha, std::vector<double>* a,
int lda,
42 std::vector<double>* x,
int inc_x);
44 int pdsyevr_w(
char jobz,
char range,
char uplo,
int n,
45 std::vector<double>* a,
int ia,
int ja, std::vector<int>* desca,
46 double vl,
double vu,
int il,
int iu,
int* m,
int* nz, std::vector<double>* w,
47 std::vector<double>* z,
int iz,
int jz, std::vector<int>* descz,
48 std::vector<double>* work,
int lwork, std::vector<int>* iwork,
int liwork);
50 int sym_inv_ev(
char uplo, std::vector<double>* a,
double cn_threshold);
57 int psym_inv_ev(
char uplo, std::vector<double>* a, std::vector<int>* desca,
58 double cn_threshold, std::vector<double>* w, std::vector<double>* u,
59 std::pair<int, int> coor_proc_grid,
int side_grid);
62 #endif // EXPLICIT_MAPMAKING_SCALAPACK_WRAPPER_HPP_