10 #define PDGESVD pdgesvd_ 11 #define PSGESVD psgesvd_ 12 #define PCGESVD pcgesvd_ 13 #define PZGESVD pzgesvd_ 14 #define PSGEQRF psgeqrf_ 15 #define PDGEQRF pdgeqrf_ 16 #define PCGEQRF pcgeqrf_ 17 #define PZGEQRF pzgeqrf_ 18 #define PSORGQR psorgqr_ 19 #define PDORGQR pdorgqr_ 20 #define PCUNGQR pcungqr_ 21 #define PZUNGQR pzungqr_ 22 #define DESCINIT descinit_ 23 #define BLACS_GRIDINFO blacs_gridinfo_ 24 #define BLACS_GRIDINIT blacs_gridinit_ 29 #define PDGESVD pdgesvd 30 #define PSGESVD psgesvd 31 #define PCGESVD pcgesvd 32 #define PZGESVD pzgesvd 33 #define PSGEQRF psgeqrf 34 #define PDGEQRF pdgeqrf 35 #define PCGEQRF pcgeqrf 36 #define PZGEQRF pzgeqrf 37 #define PSORGQR psorgqr 38 #define PDORGQR pdorgqr 39 #define PCUNGQR pcungqr 40 #define PZUNGQR pzungqr 41 #define DESCINIT descinit 42 #define BLACS_GRIDINFO blacs_gridinfo 43 #define BLACS_GRIDINIT blacs_gridinit 49 void DGELSD(
int * m,
int * n,
int * k,
double const * A,
int * lda_A,
double * B,
int * lda_B,
double * S,
double * cond,
int *
rank,
double * work,
int * lwork,
int * iwork,
int * info);
52 void DGEQRF(
int const * M,
int const * N,
double * A,
int const * LDA,
double * TAU2,
double * WORK,
int const * LWORK,
int * INFO);
55 void DORMQR(
char const * SIDE,
char const * TRANS,
int const * M,
int const * N,
int const * K,
double const * A,
int const * LDA,
double const * TAU2,
double * C,
int const * LDC,
double * WORK,
int const * LWORK,
int * INFO);
58 void cdgelsd(
int m,
int n,
int k,
double const * A,
int lda_A,
double * B,
int lda_B,
double * S,
double cond,
int * rank,
double * work,
int lwork,
int * iwork,
int * info){
60 DGELSD(&m, &n, &k, A, &lda_A, B, &lda_B, S, &cond, rank, work, &lwork, iwork, info);
66 void cdgeqrf(
int M,
int N,
double * A,
int LDA,
double * TAU2,
double * WORK,
int LWORK,
int * INFO){
68 DGEQRF(&M, &N, A, &LDA, TAU2, WORK, &LWORK, INFO);
74 void cdormqr(
char SIDE,
char TRANS,
int M,
int N,
int K,
double const * A,
int LDA,
double const * TAU2,
double * C,
int LDC,
double * WORK,
int LWORK,
int * INFO){
76 DORMQR(&SIDE, &TRANS, &M, &N, &K, A, &LDA, TAU2, C, &LDC, WORK, &LWORK, INFO);
89 void BLACS_GRIDINIT(
int * icontxt,
char * order,
int * nprow,
int * npcol);
140 std::complex<float> *,
145 std::complex<float> *,
149 std::complex<float> *,
163 std::complex<double> *,
168 std::complex<double> *,
172 std::complex<double> *,
210 std::complex<float> *,
214 std::complex<float> *,
215 std::complex<float> *,
222 std::complex<double> *,
226 std::complex<double> *,
227 std::complex<double> *,
265 std::complex<float> *,
269 std::complex<float> *,
270 std::complex<float> *,
280 std::complex<double> *,
284 std::complex<double> *,
285 std::complex<double> *,
340 PSGESVD(&JOBU, &JOBVT, &M, &N, A, &IA, &JA, DESCA, S, U, &IU, &JU, DESCU, VT, &IVT, &JVT, DESCVT, WORK, &LWORK, info);
368 PDGESVD(&JOBU, &JOBVT, &M, &N, A, &IA, &JA, DESCA, S, U, &IU, &JU, DESCU, VT, &IVT, &JVT, DESCVT, WORK, &LWORK, info);
376 void pgesvd< std::complex<float> >(
char JOBU,
380 std::complex<float> * A,
384 std::complex<float> * cS,
385 std::complex<float> * U,
389 std::complex<float> * VT,
393 std::complex<float> * WORK,
397 float * S = (
float*)cS;
399 rwork =
new float[4*std::max(M,N)+1];
400 PCGESVD(&JOBU, &JOBVT, &M, &N, A, &IA, &JA, DESCA, S, U, &IU, &JU, DESCU, VT, &IVT, &JVT, DESCVT, (
float*)WORK, &LWORK, rwork, info);
403 for (
int i=std::min(M,N)-1; i>=0; i--){
415 void pgesvd< std::complex<double> >(
char JOBU,
419 std::complex<double> * A,
423 std::complex<double> * cS,
424 std::complex<double> * U,
428 std::complex<double> * VT,
432 std::complex<double> * WORK,
436 double * S = (
double*)cS;
438 rwork =
new double[4*std::max(M,N)+1];
439 PZGESVD(&JOBU, &JOBVT, &M, &N, A, &IA, &JA, DESCA, S, U, &IU, &JU, DESCU, VT, &IVT, &JVT, DESCVT, (
double*)WORK, &LWORK, rwork, info);
442 for (
int i=std::min(M,N)-1; i>=0; i--){
464 PSGEQRF(&M,&N,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
482 PDGEQRF(&M,&N,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
489 void pgeqrf< std::complex<float> >(
int M,
491 std::complex<float> * A,
495 std::complex<float> * TAU2,
496 std::complex<float> * WORK,
500 PCGEQRF(&M,&N,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
508 void pgeqrf< std::complex<double> >(
int M,
510 std::complex<double> * A,
514 std::complex<double> * TAU2,
515 std::complex<double> * WORK,
519 PZGEQRF(&M,&N,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
539 PSORGQR(&M,&N,&K,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
558 PDORGQR(&M,&N,&K,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
565 void porgqr< std::complex<float> >(
int M,
568 std::complex<float> * A,
572 std::complex<float> * TAU2,
573 std::complex<float> * WORK,
577 PCUNGQR(&M,&N,&K,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
585 void porgqr< std::complex<double> >(
int M,
588 std::complex<double> * A,
592 std::complex<double> * TAU2,
593 std::complex<double> * WORK,
597 PZUNGQR(&M,&N,&K,A,&IA,&JA,DESCA,TAU2,WORK,&LWORK,INFO);
615 DESCINIT(desc,&m,&n,&mb,&nb,&irsrc,&icsrc,&ictxt, &LLD, info);
645 void cblacs_gridinfo(
int contxt,
int * nprow,
int * npcol,
int * myprow,
int * mypcol){
653 void cblacs_gridmap(
int * contxt,
int * usermap,
int ldup,
int nprow0,
int npcol0){
void pgeqrf< double >(int M, int N, double *A, int IA, int JA, int const *DESCA, double *TAU2, double *WORK, int LWORK, int *INFO)
void Cblacs_gridinit(int *, char *, int, int)
void cblacs_get(int contxt, int what, int *val)
void pgesvd< float >(char JOBU, char JOBVT, int M, int N, float *A, int IA, int JA, int *DESCA, float *S, float *U, int IU, int JU, int *DESCU, float *VT, int IVT, int JVT, int *DESCVT, float *WORK, int LWORK, int *info)
void cblacs_pinfo(int *mypnum, int *nprocs)
void Cblacs_get(int, int, int *)
void Cblacs_gridinfo(int, int *, int *, int *, int *)
void Cblacs_gridexit(int)
void porgqr< double >(int M, int N, int K, double *A, int IA, int JA, int const *DESCA, double *TAU2, double *WORK, int LWORK, int *INFO)
void cblacs_gridinit(int *contxt, char *row, int nprow, int npcol)
void cdormqr(char SIDE, char TRANS, int M, int N, int K, double const *A, int LDA, double const *TAU2, double *C, int LDC, double *WORK, int LWORK, int *INFO)
void cdgeqrf(int M, int N, double *A, int LDA, double *TAU2, double *WORK, int LWORK, int *INFO)
void cblacs_gridexit(int contxt)
void Cblacs_gridmap(int *, int *, int, int, int)
void pgeqrf< float >(int M, int N, float *A, int IA, int JA, int const *DESCA, float *TAU2, float *WORK, int LWORK, int *INFO)
void porgqr< float >(int M, int N, int K, float *A, int IA, int JA, int const *DESCA, float *TAU2, float *WORK, int LWORK, int *INFO)
void Cblacs_barrier(int, char *)
void cdgelsd(int m, int n, int k, double const *A, int lda_A, double *B, int lda_B, double *S, double cond, int *rank, double *work, int lwork, int *iwork, int *info)
void pgesvd< double >(char JOBU, char JOBVT, int M, int N, double *A, int IA, int JA, int *DESCA, double *S, double *U, int IU, int JU, int *DESCU, double *VT, int IVT, int JVT, int *DESCVT, double *WORK, int LWORK, int *info)
void cdescinit(int *desc, int m, int n, int mb, int nb, int irsrc, int icsrc, int ictxt, int LLD, int *info)
void cblacs_gridmap(int *contxt, int *usermap, int ldup, int nprow0, int npcol0)
void cblacs_gridinfo(int contxt, int *nprow, int *npcol, int *myprow, int *mypcol)
void cblacs_barrier(int contxt, char *scope)
void Cblacs_pinfo(int *, int *)