AcouSTO  version 2.0

◆ condition_number()

void condition_number ( DOUBLE norm,
DOUBLE cond 
)
23  {
24  int descY[9];
25  COMPLEX* work;
26  int lwork;
27  DOUBLE* rwork;
28  int lrwork;
29  int info;
30  int gRows,gCols;
31  int ione=1;
32  int izero=0;
33 
34  int locRows, locCols;
35  DOUBLE _norm,_cond;
36 
37  gRows = modgeominfo->ncntr + modgeominfo->nchief;
38  gCols = modgeominfo->ncntr;
39 
40  work = calloc(2,sizeof(COMPLEX));
41  rwork = calloc(2,sizeof(DOUBLE));
42 
43  lwork = -1;
44  lrwork = -1;
45 
46  locRows = numroc_(&gRows ,&runinfo->row_block_size,&runinfo->myrow,&izero,&runinfo->nprows);
47  locCols = numroc_(&gCols ,&runinfo->col_block_size,&runinfo->mycol,&izero,&runinfo->npcols);
48 
49  descinit_(descY ,&gRows,&gCols,&runinfo->row_block_size,&runinfo->col_block_size,&izero,&izero,&runinfo->ctxt,&locRows,&info);
50 
51  pzgecon_("I", &gRows, solution->matY, &ione ,&ione, descY,&_norm,&_cond, work,&lwork, rwork, &lrwork,&info);
52  lwork = (int) work[0]; free(work); work = calloc(lwork ,sizeof(COMPLEX));
53  lrwork = (int) rwork[0]; free(rwork); rwork = calloc(lrwork,sizeof(DOUBLE));
54 
55  pzgecon_("I", &gRows, solution->matY, &ione ,&ione, descY,&_norm,&_cond, work,&lwork, rwork, &lrwork,&info);
56  printf(" _NORM(Y) = %10.8E\n",_norm);
57  printf(" _RCOND(Y) = %10.8E ; _COND(Y) = %10.8E\n",_cond,1.0/_cond);
58 
59 }
struct run_info * runinfo
Definition: globals.h:34
int npcols
Definition: structs.h:113
int ncntr
Definition: structs.h:299
COMPLEX * matY
Definition: structs.h:603
int myrow
Definition: structs.h:115
int nprows
Definition: structs.h:111
int nchief
Definition: structs.h:301
void pzgecon_(char *trans, int *n, COMPLEX *A, int *ia, int *ja, int *desca, DOUBLE *_norm, DOUBLE *_cond, COMPLEX *work, int *lwork, DOUBLE *rwork, int *lrwork, int *info)
int ctxt
Definition: structs.h:109
void descinit_(int *desc, int *m, int *n, int *mb, int *nb, int *ia, int *ja, int *ictxt, int *llda, int *info)
struct solution_struct * solution
Definition: globals.h:52
#define COMPLEX
Definition: types.h:48
int mycol
Definition: structs.h:117
double DOUBLE
Definition: types.h:44
int numroc_(int *m, int *mb, int *p, int *ia, int *npr)
int col_block_size
Definition: structs.h:121
int row_block_size
Definition: structs.h:119
#define calloc(n, size)
Definition: allocation.h:37
struct modgeom_info * modgeominfo
Definition: globals.h:38