SuperLU_DIST  4.0
superlu_dist on CPU and GPU clusters
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Macros | Functions
mc64ad_dist.c File Reference

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

#include "superlu_ddefs.h"

Macros

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

Functions

int_t mc64id_dist (int_t *icntl)
 
int_t mc64ad_dist (int_t *job, int_t *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *num, int_t *cperm, int_t *liw, int_t *iw, int_t *ldw, double *dw, int_t *icntl, int_t *info)
 
int_t mc64bd_dist (int_t *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int_t *num, int_t *jperm, int_t *pr, int_t *q, int_t *l, double *d__)
 
int_t mc64dd_ (int_t *i__, int_t *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int_t mc64ed_ (int_t *qlen, int_t *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int_t mc64fd_ (int_t *pos0, int_t *qlen, int_t *n, int_t *q, double *d__, int_t *l, int_t *iway)
 
int_t mc64rd_dist (int_t *n, int_t *ne, int_t *ip, int_t *irn, double *a)
 
int_t mc64sd_dist (int_t *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int_t *numx, int_t *w, int_t *len, int_t *lenl, int_t *lenh, int_t *fc, int_t *iw, int_t *iw4)
 
int_t 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_t mc64ud_dist (int_t *id, int_t *mod, int_t *n, int_t *irn, int_t *lirn, int_t *ip, int_t *lenc, int_t *fc, int_t *iperm, int_t *num, int_t *numx, int_t *pr, int_t *arp, int_t *cv, int_t *out)
 
int_t mc64wd_dist (int_t *n, int_t *ne, int_t *ip, int_t *irn, double *a, int_t *iperm, int_t *num, int_t *jperm, int_t *out, int_t *pr, int_t *q, int_t *l, double *u, double *d__)
 

Detailed Description

Permute large entries to the main diagonal.

Macro Definition Documentation

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

Function Documentation

int_t mc64ad_dist ( int_t job,
int_t n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t num,
int_t cperm,
int_t liw,
int_t iw,
int_t ldw,
double *  dw,
int_t icntl,
int_t 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). 
int_t mc64bd_dist ( int_t n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int_t num,
int_t jperm,
int_t pr,
int_t q,
int_t l,
double *  d__ 
)
int_t mc64dd_ ( int_t i__,
int_t n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)
int_t mc64ed_ ( int_t qlen,
int_t n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)
int_t mc64fd_ ( int_t pos0,
int_t qlen,
int_t n,
int_t q,
double *  d__,
int_t l,
int_t iway 
)
int_t mc64id_dist ( int_t icntl)
int_t 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_t mc64rd_dist ( int_t n,
int_t ne,
int_t ip,
int_t irn,
double *  a 
)
int_t mc64sd_dist ( int_t n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int_t numx,
int_t w,
int_t len,
int_t lenl,
int_t lenh,
int_t fc,
int_t iw,
int_t iw4 
)
int_t mc64ud_dist ( int_t id,
int_t mod,
int_t n,
int_t irn,
int_t lirn,
int_t ip,
int_t lenc,
int_t fc,
int_t iperm,
int_t num,
int_t numx,
int_t pr,
int_t arp,
int_t cv,
int_t out 
)
int_t mc64wd_dist ( int_t n,
int_t ne,
int_t ip,
int_t irn,
double *  a,
int_t iperm,
int_t num,
int_t jperm,
int_t out,
int_t pr,
int_t q,
int_t l,
double *  u,
double *  d__ 
)