SuperLU Distributed 8.2.1
Distributed memory sparse direct solver
mc64ad_dist.c File Reference

Permute large entries to the main diagonal. More...

#include "superlu_ddefs.h"
Include dependency graph for mc64ad_dist.c:

Macros

#define abs(x)   ((x) >= 0 ? (x) : -(x))
 
#define min(a, b)   ((a) < (b)) ? (a) : (b)
 

Functions

int mc64id_dist (int *icntl)
 
int mc64ad_dist (int *job, int *n, int_t *ne, int_t *ip, int_t *irn, double *a, int *num, int_t *cperm, int_t *liw, int_t *iw, int_t *ldw, double *dw, int *icntl, int *info)
 
int mc64bd_dist (int *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int *num, int_t *jperm, int_t *pr, int_t *q, int_t *l, double *d__)
 
int mc64dd_dist (int_t *i__, int *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int mc64ed_dist (int_t *qlen, int *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int mc64fd_dist (int_t *pos0, int_t *qlen, int *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int mc64rd_dist (int *n, int_t *ne, int_t *ip, int_t *irn, double *a)
 
int mc64sd_dist (int *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int *numx, int_t *w, int_t *len, int_t *lenl, int_t *lenh, int_t *fc, int_t *iw, int_t *iw4)
 
int mc64qd_dist (int_t *ip, int_t *lenl, int_t *lenh, int_t *w, int_t *wlen, double *a, int_t *nval, double *val)
 
int mc64ud_dist (int_t *id, int_t *mod, int *n, int_t *irn, int_t *lirn, int_t *ip, int_t *lenc, int_t *fc, int_t *iperm, int *num, int *numx, int_t *pr, int_t *arp, int_t *cv, int_t *out)
 
int mc64wd_dist (int *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int *num, int_t *jperm, int_t *out, int_t *pr, int_t *q, int_t *l, double *u, double *d__)
 

Variables

static int_t c__1 = 1
 
static int_t c__2 = 2
 

Detailed Description

Permute large entries to the main diagonal.

Macro Definition Documentation

◆ abs

#define abs (   x)    ((x) >= 0 ? (x) : -(x))

◆ min

#define min (   a,
 
)    ((a) < (b)) ? (a) : (b)

Function Documentation

◆ mc64ad_dist()

int mc64ad_dist ( int *  job,
int *  n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int *  num,
int_t cperm,
int_t liw,
int_t iw,
int_t ldw,
double *  dw,
int *  icntl,
int *  info 
)
This subroutine attempts to find a column permutation for an NxN 
sparse matrix A = {a_ij} that makes the permuted matrix have N 
entries on its diagonal. 
If the matrix is structurally nonsingular, the subroutine optionally 
returns a column permutation that maximizes the smallest element 
on the diagonal, maximizes the sum of the diagonal entries, or 
maximizes the product of the diagonal entries of the permuted matrix. 
For the latter option, the subroutine also finds scaling factors 
that may be used to scale the matrix so that the nonzero diagonal 
entries of the permuted matrix are one in absolute value and all the 
off-diagonal entries are less than or equal to one in absolute value. 
The natural logarithms of the scaling factors u(i), i=1..N, for the 
rows and v(j), j=1..N, for the columns are returned so that the 
scaled matrix B = {b_ij} has entries b_ij = a_ij * EXP(u_i + v_j). 
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mc64bd_dist()

int mc64bd_dist ( int *  n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int *  num,
int_t jperm,
int_t pr,
int_t q,
int_t l,
double *  d__ 
)
Here is the call graph for this function:

◆ mc64dd_dist()

int mc64dd_dist ( int_t i__,
int *  n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)

◆ mc64ed_dist()

int mc64ed_dist ( int_t qlen,
int *  n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)

◆ mc64fd_dist()

int mc64fd_dist ( int_t pos0,
int_t qlen,
int *  n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)

◆ mc64id_dist()

int mc64id_dist ( int *  icntl)

◆ mc64qd_dist()

int mc64qd_dist ( int_t ip,
int_t lenl,
int_t lenh,
int_t w,
int_t wlen,
double *  a,
int_t nval,
double *  val 
)

◆ mc64rd_dist()

int mc64rd_dist ( int *  n,
int_t ne,
int_t ip,
int_t irn,
double *  a 
)

◆ mc64sd_dist()

int mc64sd_dist ( int *  n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int *  numx,
int_t w,
int_t len,
int_t lenl,
int_t lenh,
int_t fc,
int_t iw,
int_t iw4 
)
Here is the call graph for this function:

◆ mc64ud_dist()

int mc64ud_dist ( int_t id,
int_t mod,
int *  n,
int_t irn,
int_t lirn,
int_t ip,
int_t lenc,
int_t fc,
int_t iperm,
int *  num,
int *  numx,
int_t pr,
int_t arp,
int_t cv,
int_t out 
)

◆ mc64wd_dist()

int mc64wd_dist ( int *  n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int *  num,
int_t jperm,
int_t out,
int_t pr,
int_t q,
int_t l,
double *  u,
double *  d__ 
)
Here is the call graph for this function:

Variable Documentation

◆ c__1

int_t c__1 = 1
static

◆ c__2

int_t c__2 = 2
static