factor.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include "config.h"
#include "iqsutil.h"
#include "lpdefs.h"
#include "factor.h"

Include dependency graph for factor.c:

Go to the source code of this file.

Defines

#define EGlpNumSetToMaxAbsAndDo(a, b, c)
#define SETPERM(f, s, r, c)

Functions

static int add_col_nz (factor_work *f, int r, int c)
static int add_nonzero (factor_work *f, int row, int col, EGlpNum_t val)
static void btranl3_delay2 (factor_work *f, int r)
static void btranl3_process2 (factor_work *f, int r, svector *x)
static void btranu3_delay2 (factor_work *f, int r)
static void btranu3_process2 (factor_work *f, int r, svector *x)
static int build_iteration_l_data (factor_work *f)
static int build_iteration_u_data (factor_work *f)
static void clear_row (factor_work *f, int r)
static void clear_work (factor_work *f)
static int create_column (factor_work *f, svector *a, int col, int *p_last_rank)
static int create_factor_space (factor_work *f)
static int create_row (factor_work *f, EGlpNum_t *a, int row, int minrank)
static int delete_column (factor_work *f, int col)
static void delete_nonzero_col (factor_work *f, int col, int ind)
static int delete_nonzero_row (factor_work *f, int row, int ind)
static int delete_row (factor_work *f, int row, svector *x)
static int dense_build_matrix (factor_work *f)
static int dense_create_col (factor_work *f, int i)
static void dense_elim (factor_work *f, int r, int c)
static int dense_factor (factor_work *f)
static int dense_find_pivot (factor_work *f, int *p_r, int *p_c)
static int dense_replace (factor_work *f)
static int dense_replace_row (factor_work *f, int i)
static void dense_swap (factor_work *f, int r, int c)
static void disable_col (factor_work *f, int c)
static int elim (factor_work *f, int r, int c)
static int elim_row (factor_work *f, int elim_r, int r, int c, EGlpNum_t *p_pivot_coef)
static int eliminate_row (factor_work *f, int rank_p, int rank_r)
static int expand_col (factor_work *f, int col)
static int expand_row (factor_work *f, int row)
static void find_coef (factor_work *f, int r, int c, EGlpNum_t *coef)
static int find_pivot (factor_work *f, int *p_r, int *p_c)
static void find_pivot_column (factor_work *f, int c, int *p_r)
static void find_pivot_row (factor_work *f, int r, int *p_c)
static void ftranl3_delay2 (factor_work *f, int c)
static void ftranl3_process2 (factor_work *f, int c, svector *x)
static void ftranu3_delay2 (factor_work *f, int c)
static void ftranu3_process2 (factor_work *f, int c, svector *x)
static int handle_singularity (factor_work *f)
int ILLfactor (factor_work *f, int *basis, int *cbeg, int *clen, int *cindx, EGlpNum_t *ccoef, int *p_nsing, int **p_singr, int **p_singc)
void ILLfactor_btran (factor_work *f, svector *a, svector *x)
static void ILLfactor_btrane (factor_work *f, EGlpNum_t *x)
static void ILLfactor_btrane2 (factor_work *f, svector *x)
static void ILLfactor_btranl2 (factor_work *f, EGlpNum_t *x)
static void ILLfactor_btranl3 (factor_work *f, svector *a, svector *x)
static void ILLfactor_btranu (factor_work *f, EGlpNum_t *a, svector *x)
static void ILLfactor_btranu3 (factor_work *f, svector *a, svector *x)
int ILLfactor_create_factor_work (factor_work *f, int dim)
void ILLfactor_free_factor_work (factor_work *f)
void ILLfactor_ftran (factor_work *f, svector *a, svector *x)
void ILLfactor_ftran_update (factor_work *f, svector *a, svector *upd, svector *x)
static void ILLfactor_ftrane (factor_work *f, EGlpNum_t *a)
static void ILLfactor_ftrane2 (factor_work *f, svector *a)
static void ILLfactor_ftranl (factor_work *f, EGlpNum_t *a)
static void ILLfactor_ftranl3 (factor_work *f, svector *a, svector *x)
static void ILLfactor_ftranu (factor_work *f, EGlpNum_t *a, svector *x)
static void ILLfactor_ftranu3 (factor_work *f, svector *a, svector *x)
void ILLfactor_init_factor_work (factor_work *f)
int ILLfactor_set_factor_dparam (factor_work *f, int param, EGlpNum_t val)
int ILLfactor_set_factor_iparam (factor_work *f, int param, int val)
static int ILLfactor_try (factor_work *f, int *basis, int *cbeg, int *clen, int *cindx, EGlpNum_t *ccoef)
int ILLfactor_update (factor_work *f, svector *a, int col_p, int *p_refact)
static int init_matrix (factor_work *f, int *basis, int *cbeg, int *clen, int *in_ucindx, EGlpNum_t *in_uccoef)
static void load_row (factor_work *f, int r)
static int make_lc_space (factor_work *f, int space)
static int make_uc_space (factor_work *f, int space)
static int make_ur_space (factor_work *f, int space)
static int move_pivot (factor_work *f, int rank_r)
static int move_pivot_col (factor_work *f, int c, int r)
static int move_pivot_row (factor_work *f, int r, int c)
static void remove_col (factor_work *f, int c)
static void remove_col_nz (factor_work *f, int r, int c)
static void remove_row (factor_work *f, int r)
static void remove_row_nz (factor_work *f, int r, int c)
static void serow_delay (factor_work *f, int r, int rank_r)
static int serow_process (factor_work *f, int r, svector *newr, int rank_r)
static void set_col_nz (factor_work *f, int c)
static void set_row_nz (factor_work *f, int r)
static void shift_permutations (factor_work *f, int rank_p, int rank_r)
static int sparse_eliminate_row (factor_work *f, svector *x, int row_p, int rank_r)


Define Documentation

#define EGlpNumSetToMaxAbsAndDo ( a,
b,
 ) 

Value:

if(EGlpNumIsGreatZero(b))\
  {\
    if(EGlpNumIsLess(a,b)){\
      EGlpNumCopy(a,b);\
      c;\
      }\
  }\
  else\
  {\
    EGlpNumSign(a);\
    if(EGlpNumIsLess(b,a)){\
      EGlpNumCopy(a,b);\
      c;\
      }\
    EGlpNumSign(a);\
  }

Definition at line 28 of file factor.c.

Referenced by dense_find_pivot().

#define SETPERM ( f,
s,
r,
 ) 

Value:

{                    \
        f->rperm[f->rrank[r]] = f->rperm[s];  \
        f->rrank[f->rperm[s]] = f->rrank[r];  \
        f->rperm[s] = r;                      \
        f->rrank[r] = s;                      \
                                              \
        f->cperm[f->crank[c]] = f->cperm[s];  \
        f->crank[f->cperm[s]] = f->crank[c];  \
        f->cperm[s] = c;                      \
        f->crank[c] = s;                      \
}

Definition at line 1481 of file factor.c.

Referenced by elim().


Function Documentation

static int add_col_nz ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 1148 of file factor.c.

References uc_info::cbeg, make_uc_space(), uc_info::nzcnt, set_col_nz(), factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uc_space, and factor_work::ucindx.

Referenced by elim_row().

Here is the call graph for this function:

static int add_nonzero ( factor_work f,
int  row,
int  col,
EGlpNum_t  val 
) [static]

Definition at line 4773 of file factor.c.

References uc_info::cbeg, expand_col(), expand_row(), ur_info::nzcnt, uc_info::nzcnt, ur_info::rbeg, factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::ur_freebeg, factor_work::ur_inf, factor_work::ur_space, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by create_column(), create_row(), and sparse_eliminate_row().

Here is the call graph for this function:

static void btranl3_delay2 ( factor_work f,
int  r 
) [static]

Definition at line 3997 of file factor.c.

References factor_work::lr_inf, factor_work::lrindx, lr_info::nzcnt, lr_info::rbeg, and lr_info::rrank.

Referenced by ILLfactor_btranl3().

static void btranl3_process2 ( factor_work f,
int  r,
svector x 
) [static]

Definition at line 4071 of file factor.c.

References svector::coef, svector::indx, factor_work::lr_inf, factor_work::lrcoef, factor_work::lrindx, lr_info::nzcnt, svector::nzcnt, lr_info::rbeg, lr_info::rrank, factor_work::szero_tol, and factor_work::work_coef.

Referenced by ILLfactor_btranl3().

static void btranu3_delay2 ( factor_work f,
int  r 
) [static]

Definition at line 4385 of file factor.c.

References factor_work::crank, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::ur_inf, and factor_work::urindx.

Referenced by ILLfactor_btranu3().

static void btranu3_process2 ( factor_work f,
int  r,
svector x 
) [static]

Definition at line 4459 of file factor.c.

References svector::coef, factor_work::crank, svector::indx, svector::nzcnt, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::ur_inf, factor_work::urcoef, factor_work::urindx, and factor_work::work_coef.

Referenced by ILLfactor_btranu3().

static int build_iteration_l_data ( factor_work f  )  [static]

Definition at line 2183 of file factor.c.

References lc_info::c, lc_info::cbeg, lc_info::crank, lc_info::delay, lr_info::delay, factor_work::dim, ILL_IFFREE, ILL_SAFE_MALLOC, factor_work::lc_inf, factor_work::lccoef, factor_work::lcindx, factor_work::lr_inf, factor_work::lrcoef, factor_work::lrindx, factor_work::maxelem_cur, factor_work::maxelem_factor, lr_info::nzcnt, factor_work::nzcnt_cur, factor_work::nzcnt_factor, lr_info::r, lr_info::rbeg, and lr_info::rrank.

Referenced by ILLfactor_try().

static int build_iteration_u_data ( factor_work f  )  [static]

Definition at line 2033 of file factor.c.

References uc_info::cbeg, uc_info::delay, ur_info::delay, factor_work::dim, ILL_IFFREE, ILL_SAFE_MALLOC, uc_info::nzcnt, factor_work::nzcnt_factor, ur_info::rbeg, factor_work::rperm, factor_work::rrank, factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uc_space, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::ur_freebeg, factor_work::ur_inf, factor_work::ur_space, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by ILLfactor_try().

static void clear_row ( factor_work f,
int  r 
) [static]

Definition at line 743 of file factor.c.

References ur_info::nzcnt, ur_info::rbeg, factor_work::ur_inf, factor_work::urindx, factor_work::work_coef, and factor_work::work_indx.

Referenced by elim().

static void clear_work ( factor_work f  )  [static]

Definition at line 710 of file factor.c.

References factor_work::dim, and factor_work::work_coef.

static int create_column ( factor_work f,
svector a,
int  col,
int *  p_last_rank 
) [static]

Definition at line 4953 of file factor.c.

References add_nonzero(), svector::coef, svector::indx, factor_work::maxelem_cur, svector::nzcnt, factor_work::nzcnt_cur, and factor_work::rrank.

Referenced by ILLfactor_update().

Here is the call graph for this function:

static int create_factor_space ( factor_work f  )  [static]

Definition at line 1810 of file factor.c.

References factor_work::dim, ILL_SAFE_MALLOC, factor_work::uc_inf, factor_work::uc_space, factor_work::uc_space_mul, factor_work::ucindx, and factor_work::ur_inf.

Referenced by init_matrix().

static int create_row ( factor_work f,
EGlpNum_t *  a,
int  row,
int  minrank 
) [static]

Definition at line 5127 of file factor.c.

References add_nonzero(), factor_work::cperm, factor_work::dim, factor_work::fzero_tol, and factor_work::maxelem_cur.

Here is the call graph for this function:

static int delete_column ( factor_work f,
int  col 
) [static]

Definition at line 4878 of file factor.c.

References uc_info::cbeg, delete_nonzero_row(), uc_info::nzcnt, factor_work::nzcnt_cur, factor_work::uc_inf, factor_work::ucindx, and factor_work::ucrind.

Referenced by ILLfactor_update().

Here is the call graph for this function:

static void delete_nonzero_col ( factor_work f,
int  col,
int  ind 
) [static]

Definition at line 4852 of file factor.c.

References uc_info::cbeg, uc_info::nzcnt, ur_info::rbeg, factor_work::uc_inf, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::ur_inf, and factor_work::urcind.

Referenced by delete_row().

static int delete_nonzero_row ( factor_work f,
int  row,
int  ind 
) [static]

Definition at line 4819 of file factor.c.

References uc_info::cbeg, ur_info::nzcnt, ur_info::rbeg, factor_work::uc_inf, factor_work::ucrind, factor_work::ur_inf, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by delete_column().

static int delete_row ( factor_work f,
int  row,
svector x 
) [static]

Definition at line 4913 of file factor.c.

References svector::coef, delete_nonzero_col(), svector::indx, svector::nzcnt, ur_info::nzcnt, factor_work::nzcnt_cur, ur_info::rbeg, factor_work::ur_inf, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Here is the call graph for this function:

static int dense_build_matrix ( factor_work f  )  [static]

Definition at line 2322 of file factor.c.

References factor_work::crank, factor_work::dcols, factor_work::dense_base, factor_work::dim, factor_work::dmat, factor_work::drows, factor_work::nstages, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::stage, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by dense_factor().

static int dense_create_col ( factor_work f,
int  i 
) [static]

Definition at line 2594 of file factor.c.

References factor_work::dcols, factor_work::dense_base, factor_work::dmat, factor_work::drows, factor_work::fzero_tol, factor_work::lc_inf, and factor_work::rperm.

Referenced by dense_replace().

static void dense_elim ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 2456 of file factor.c.

References factor_work::dcols, factor_work::dense_base, dense_swap(), factor_work::dmat, factor_work::drows, factor_work::fzero_tol, factor_work::maxelem_factor, factor_work::rperm, factor_work::stage, and factor_work::ur_inf.

Referenced by dense_factor().

Here is the call graph for this function:

static int dense_factor ( factor_work f  )  [static]

Definition at line 2667 of file factor.c.

References factor_work::dense_base, dense_build_matrix(), dense_elim(), dense_find_pivot(), dense_replace(), E_FACTOR_BLOWUP, E_NO_PIVOT, E_SINGULAR_INTERNAL, handle_singularity(), factor_work::maxelem_factor, factor_work::maxelem_orig, factor_work::maxmult, factor_work::nstages, factor_work::partial_cur, and factor_work::stage.

Referenced by ILLfactor_try().

Here is the call graph for this function:

static int dense_find_pivot ( factor_work f,
int *  p_r,
int *  p_c 
) [static]

Definition at line 2368 of file factor.c.

References factor_work::dcols, factor_work::dense_base, factor_work::dmat, factor_work::drows, E_NO_PIVOT, EGlpNumSetToMaxAbsAndDo, factor_work::rperm, factor_work::stage, and factor_work::ur_inf.

Referenced by dense_factor().

static int dense_replace ( factor_work f  )  [static]

Definition at line 2646 of file factor.c.

References factor_work::dcols, dense_create_col(), dense_replace_row(), factor_work::dmat, and factor_work::drows.

Referenced by dense_factor().

Here is the call graph for this function:

static int dense_replace_row ( factor_work f,
int  i 
) [static]

Definition at line 2537 of file factor.c.

References factor_work::cperm, factor_work::dcols, factor_work::dense_base, factor_work::dmat, factor_work::fzero_tol, factor_work::rperm, and factor_work::ur_inf.

Referenced by dense_replace().

static void dense_swap ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 2418 of file factor.c.

References factor_work::cperm, factor_work::crank, factor_work::dcols, factor_work::dense_base, factor_work::dmat, factor_work::drows, EGLPNUM_SWAP, ILL_SWAP, factor_work::rperm, factor_work::rrank, and factor_work::stage.

Referenced by dense_elim().

static void disable_col ( factor_work f,
int  c 
) [static]

Definition at line 1201 of file factor.c.

References uc_info::next, uc_info::prev, and factor_work::uc_inf.

Referenced by find_pivot().

static int elim ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 1493 of file factor.c.

References lc_info::c, uc_info::cbeg, lc_info::cbeg, clear_row(), EGLPNUM_SWAP, elim_row(), factor_work::lc_freebeg, factor_work::lc_inf, factor_work::lc_space, factor_work::lccoef, factor_work::lcindx, load_row(), make_lc_space(), ur_info::max, factor_work::nstages, uc_info::nzcnt, ur_info::nzcnt, lc_info::nzcnt, ur_info::rbeg, remove_col(), remove_col_nz(), remove_row(), remove_row_nz(), SETPERM, factor_work::stage, factor_work::uc_inf, factor_work::ucindx, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by ILLfactor_try().

Here is the call graph for this function:

static int elim_row ( factor_work f,
int  elim_r,
int  r,
int  c,
EGlpNum_t *  p_pivot_coef 
) [static]

Definition at line 1284 of file factor.c.

References add_col_nz(), find_coef(), factor_work::fzero_tol, make_ur_space(), ur_info::nzcnt, ur_info::pivcnt, ur_info::rbeg, remove_col_nz(), set_row_nz(), factor_work::ur_freebeg, factor_work::ur_inf, factor_work::ur_space, factor_work::urcoef, factor_work::urindx, factor_work::work_coef, and factor_work::work_indx.

Referenced by elim().

Here is the call graph for this function:

static int eliminate_row ( factor_work f,
int  rank_p,
int  rank_r 
) [static]

Definition at line 5051 of file factor.c.

References factor_work::cperm, E_UPDATE_NOSPACE, factor_work::er_freebeg, factor_work::er_space, factor_work::ercoef, factor_work::erindx, factor_work::fzero_tol, factor_work::maxelem_cur, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::ur_inf, factor_work::urcoef, factor_work::urindx, and factor_work::work_coef.

static int expand_col ( factor_work f,
int  col 
) [static]

Definition at line 4695 of file factor.c.

References uc_info::cbeg, make_uc_space(), uc_info::nzcnt, factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uc_space, factor_work::uccoef, factor_work::ucindx, and factor_work::ucrind.

Referenced by add_nonzero().

Here is the call graph for this function:

static int expand_row ( factor_work f,
int  row 
) [static]

Definition at line 4734 of file factor.c.

References make_ur_space(), ur_info::nzcnt, ur_info::rbeg, factor_work::ur_freebeg, factor_work::ur_inf, factor_work::ur_space, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by add_nonzero().

Here is the call graph for this function:

static void find_coef ( factor_work f,
int  r,
int  c,
EGlpNum_t *  coef 
) [static]

Definition at line 1260 of file factor.c.

References ur_info::nzcnt, ur_info::rbeg, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by elim_row(), and find_pivot_column().

static int find_pivot ( factor_work f,
int *  p_r,
int *  p_c 
) [static]

Definition at line 1703 of file factor.c.

References uc_info::cbeg, factor_work::dim, disable_col(), E_NO_PIVOT, find_pivot_column(), find_pivot_row(), factor_work::max_k, ur_info::next, uc_info::next, factor_work::p, uc_info::prev, ur_info::rbeg, factor_work::uc_inf, factor_work::ucindx, factor_work::ur_inf, and factor_work::urindx.

Referenced by ILLfactor_try().

Here is the call graph for this function:

static void find_pivot_column ( factor_work f,
int  c,
int *  p_r 
) [static]

Definition at line 1625 of file factor.c.

References uc_info::cbeg, find_coef(), uc_info::nzcnt, ur_info::pivcnt, factor_work::uc_inf, factor_work::ucindx, and factor_work::ur_inf.

Referenced by find_pivot().

Here is the call graph for this function:

static void find_pivot_row ( factor_work f,
int  r,
int *  p_c 
) [static]

Definition at line 1665 of file factor.c.

References factor_work::partial_cur, ur_info::pivcnt, ur_info::rbeg, factor_work::uc_inf, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by find_pivot().

static void ftranl3_delay2 ( factor_work f,
int  c 
) [static]

Definition at line 3089 of file factor.c.

References lc_info::cbeg, lc_info::crank, factor_work::lc_inf, factor_work::lcindx, and lc_info::nzcnt.

Referenced by ILLfactor_ftranl3().

static void ftranl3_process2 ( factor_work f,
int  c,
svector x 
) [static]

Definition at line 3162 of file factor.c.

References lc_info::cbeg, svector::coef, lc_info::crank, svector::indx, factor_work::lc_inf, factor_work::lccoef, factor_work::lcindx, lc_info::nzcnt, svector::nzcnt, and factor_work::work_coef.

Referenced by ILLfactor_ftranl3().

static void ftranu3_delay2 ( factor_work f,
int  c 
) [static]

Definition at line 3490 of file factor.c.

References uc_info::cbeg, factor_work::cperm, uc_info::nzcnt, factor_work::rrank, factor_work::uc_inf, and factor_work::ucindx.

Referenced by ILLfactor_ftranu3().

static void ftranu3_process2 ( factor_work f,
int  c,
svector x 
) [static]

Definition at line 3565 of file factor.c.

References uc_info::cbeg, svector::coef, factor_work::cperm, svector::indx, svector::nzcnt, uc_info::nzcnt, factor_work::rrank, factor_work::szero_tol, factor_work::uc_inf, factor_work::uccoef, factor_work::ucindx, and factor_work::work_coef.

Referenced by ILLfactor_ftranu3().

static int handle_singularity ( factor_work f  )  [static]

Definition at line 2285 of file factor.c.

References factor_work::cperm, E_SING_NO_DATA, ILL_IFFREE, ILL_SAFE_MALLOC, factor_work::nstages, factor_work::p_nsing, factor_work::p_singc, factor_work::p_singr, factor_work::rperm, and factor_work::stage.

Referenced by dense_factor(), and ILLfactor_try().

int ILLfactor ( factor_work f,
int *  basis,
int *  cbeg,
int *  clen,
int *  cindx,
EGlpNum_t *  ccoef,
int *  p_nsing,
int **  p_singr,
int **  p_singc 
)

Definition at line 2961 of file factor.c.

References E_FACTOR_BLOWUP, ILLfactor_try(), factor_work::p_nsing, factor_work::p_singc, factor_work::p_singr, and factor_work::partial_cur.

Referenced by ILLbasis_factor(), and main().

Here is the call graph for this function:

void ILLfactor_btran ( factor_work f,
svector a,
svector x 
)

Definition at line 4549 of file factor.c.

References svector::coef, factor_work::dim, ILLfactor_btrane2(), ILLfactor_btranu(), ILLfactor_btranu3(), svector::indx, svector::nzcnt, SPARSE_FACTOR, factor_work::work_coef, and factor_work::xtmp.

Referenced by ILLbasis_row_solve(), and main().

Here is the call graph for this function:

static void ILLfactor_btrane ( factor_work f,
EGlpNum_t *  x 
) [static]

Definition at line 4160 of file factor.c.

References factor_work::dim, factor_work::er_inf, factor_work::ercoef, factor_work::erindx, factor_work::etacnt, er_info::nzcnt, and er_info::rbeg.

static void ILLfactor_btrane2 ( factor_work f,
svector x 
) [static]

Definition at line 4214 of file factor.c.

References svector::coef, factor_work::er_inf, factor_work::ercoef, factor_work::erindx, factor_work::etacnt, svector::indx, er_info::nzcnt, svector::nzcnt, er_info::rbeg, factor_work::work_coef, and factor_work::work_indx.

Referenced by ILLfactor_btran().

static void ILLfactor_btranl2 ( factor_work f,
EGlpNum_t *  x 
) [static]

Definition at line 3919 of file factor.c.

References factor_work::dim, factor_work::lr_inf, factor_work::lrcoef, factor_work::lrindx, lr_info::nzcnt, and lr_info::rbeg.

static void ILLfactor_btranl3 ( factor_work f,
svector a,
svector x 
) [static]

Definition at line 4121 of file factor.c.

References btranl3_delay2(), btranl3_process2(), svector::coef, svector::indx, factor_work::lr_inf, svector::nzcnt, and factor_work::work_coef.

Here is the call graph for this function:

static void ILLfactor_btranu ( factor_work f,
EGlpNum_t *  a,
svector x 
) [static]

Definition at line 4302 of file factor.c.

References svector::coef, factor_work::cperm, factor_work::dim, svector::indx, svector::nzcnt, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::szero_tol, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by ILLfactor_btran().

static void ILLfactor_btranu3 ( factor_work f,
svector a,
svector x 
) [static]

Definition at line 4509 of file factor.c.

References btranu3_delay2(), btranu3_process2(), svector::coef, svector::indx, svector::nzcnt, factor_work::ur_inf, and factor_work::work_coef.

Referenced by ILLfactor_btran().

Here is the call graph for this function:

int ILLfactor_create_factor_work ( factor_work f,
int  dim 
)

Definition at line 263 of file factor.c.

References factor_work::cperm, factor_work::crank, factor_work::dim, factor_work::etacnt, ILL_SAFE_MALLOC, ILLfactor_free_factor_work(), ILLsvector_alloc(), factor_work::lc_inf, factor_work::lr_inf, ur_info::max, factor_work::max_k, ur_info::next, uc_info::next, lr_info::nzcnt, lc_info::nzcnt, ur_info::nzcnt, uc_info::nzcnt, ur_info::prev, uc_info::prev, factor_work::rperm, factor_work::rrank, factor_work::uc_inf, factor_work::ur_inf, factor_work::work_coef, factor_work::work_indx, and factor_work::xtmp.

Referenced by ILLbasis_factor(), and main().

Here is the call graph for this function:

void ILLfactor_free_factor_work ( factor_work f  ) 

Definition at line 131 of file factor.c.

References factor_work::cperm, factor_work::crank, factor_work::dim, factor_work::dmat, factor_work::er_inf, factor_work::ercoef, factor_work::erindx, ILL_IFFREE, ILLsvector_free(), factor_work::lc_inf, factor_work::lccoef, factor_work::lcindx, factor_work::lr_inf, factor_work::lrcoef, factor_work::lrindx, ur_info::max, factor_work::max_k, factor_work::rperm, factor_work::rrank, factor_work::uc_inf, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::ur_inf, factor_work::urcind, factor_work::urcoef, factor_work::urindx, factor_work::work_coef, factor_work::work_indx, and factor_work::xtmp.

Referenced by ILLbasis_factor(), ILLbasis_free_basisinfo(), ILLfactor_create_factor_work(), and main().

Here is the call graph for this function:

void ILLfactor_ftran ( factor_work f,
svector a,
svector x 
)

Definition at line 3656 of file factor.c.

References svector::coef, factor_work::dim, ILLfactor_ftranl3(), svector::indx, svector::nzcnt, SPARSE_FACTOR, and factor_work::work_coef.

Referenced by ILLbasis_column_solve(), and main().

Here is the call graph for this function:

void ILLfactor_ftran_update ( factor_work f,
svector a,
svector upd,
svector x 
)

Definition at line 3777 of file factor.c.

References svector::coef, factor_work::dim, ILLfactor_ftranl3(), svector::indx, svector::nzcnt, SPARSE_FACTOR, and factor_work::work_coef.

Referenced by ILLbasis_column_solve_update(), and main().

Here is the call graph for this function:

static void ILLfactor_ftrane ( factor_work f,
EGlpNum_t *  a 
) [static]

Definition at line 3250 of file factor.c.

References factor_work::dim, factor_work::er_inf, factor_work::ercoef, factor_work::erindx, factor_work::etacnt, er_info::nzcnt, and er_info::rbeg.

static void ILLfactor_ftrane2 ( factor_work f,
svector a 
) [static]

Definition at line 3302 of file factor.c.

References svector::coef, factor_work::er_inf, factor_work::ercoef, factor_work::erindx, factor_work::etacnt, factor_work::fzero_tol, svector::indx, er_info::nzcnt, svector::nzcnt, er_info::rbeg, factor_work::work_coef, and factor_work::work_indx.

static void ILLfactor_ftranl ( factor_work f,
EGlpNum_t *  a 
) [static]

Definition at line 3012 of file factor.c.

References lc_info::cbeg, factor_work::dim, factor_work::lc_inf, factor_work::lccoef, and factor_work::lcindx.

static void ILLfactor_ftranl3 ( factor_work f,
svector a,
svector x 
) [static]

Definition at line 3211 of file factor.c.

References svector::coef, ftranl3_delay2(), ftranl3_process2(), svector::indx, factor_work::lc_inf, svector::nzcnt, and factor_work::work_coef.

Referenced by ILLfactor_ftran(), and ILLfactor_ftran_update().

Here is the call graph for this function:

static void ILLfactor_ftranu ( factor_work f,
EGlpNum_t *  a,
svector x 
) [static]

Definition at line 3407 of file factor.c.

References uc_info::cbeg, svector::coef, factor_work::cperm, factor_work::dim, svector::indx, svector::nzcnt, uc_info::nzcnt, factor_work::rperm, factor_work::szero_tol, factor_work::uc_inf, factor_work::uccoef, and factor_work::ucindx.

static void ILLfactor_ftranu3 ( factor_work f,
svector a,
svector x 
) [static]

Definition at line 3616 of file factor.c.

References svector::coef, ftranu3_delay2(), ftranu3_process2(), svector::indx, svector::nzcnt, factor_work::uc_inf, and factor_work::work_coef.

Here is the call graph for this function:

void ILLfactor_init_factor_work ( factor_work f  ) 

Definition at line 84 of file factor.c.

References factor_work::cperm, factor_work::crank, factor_work::dense_fract, factor_work::dense_min, factor_work::dmat, factor_work::er_inf, factor_work::er_space_mul, factor_work::ercoef, factor_work::erindx, factor_work::etamax, factor_work::fzero_tol, factor_work::grow_mul, ILLsvector_init(), factor_work::lc_inf, factor_work::lc_space_mul, factor_work::lccoef, factor_work::lcindx, factor_work::lr_inf, factor_work::lrcoef, factor_work::lrindx, factor_work::max_k, factor_work::maxmult, factor_work::minmult, OBJBND_TOLER, factor_work::p, factor_work::partial_cur, factor_work::partial_tol, factor_work::rperm, factor_work::rrank, factor_work::szero_tol, SZERO_TOLER, factor_work::uc_inf, factor_work::uc_space_mul, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::updmaxmult, factor_work::ur_inf, factor_work::ur_space_mul, factor_work::urcind, factor_work::urcoef, factor_work::urindx, factor_work::work_coef, factor_work::work_indx, and factor_work::xtmp.

Referenced by ILLbasis_factor(), and main().

Here is the call graph for this function:

int ILLfactor_set_factor_dparam ( factor_work f,
int  param,
EGlpNum_t  val 
)

Definition at line 211 of file factor.c.

References factor_work::dense_fract, factor_work::er_space_mul, factor_work::fzero_tol, factor_work::grow_mul, factor_work::lc_space_mul, factor_work::lr_space_mul, factor_work::maxmult, factor_work::partial_cur, factor_work::partial_tol, QS_FACTOR_DENSE_FRACT, QS_FACTOR_ER_SPACE_MUL, QS_FACTOR_FZERO_TOL, QS_FACTOR_GROW_MUL, QS_FACTOR_LC_SPACE_MUL, QS_FACTOR_LR_SPACE_MUL, QS_FACTOR_MAXMULT, QS_FACTOR_PARTIAL_TOL, QS_FACTOR_SZERO_TOL, QS_FACTOR_UC_SPACE_MUL, QS_FACTOR_UPDMAXMULT, QS_FACTOR_UR_SPACE_MUL, factor_work::szero_tol, factor_work::uc_space_mul, factor_work::updmaxmult, and factor_work::ur_space_mul.

Referenced by ILLfct_compute_binvrow(), and ILLfct_compute_yz().

int ILLfactor_set_factor_iparam ( factor_work f,
int  param,
int  val 
)

Definition at line 184 of file factor.c.

References factor_work::dense_min, factor_work::etamax, factor_work::max_k, factor_work::p, QS_FACTOR_DENSE_MIN, QS_FACTOR_ETAMAX, QS_FACTOR_MAX_K, and QS_FACTOR_P.

static int ILLfactor_try ( factor_work f,
int *  basis,
int *  cbeg,
int *  clen,
int *  cindx,
EGlpNum_t *  ccoef 
) [static]

Definition at line 2762 of file factor.c.

References build_iteration_l_data(), build_iteration_u_data(), dense_factor(), factor_work::dense_fract, factor_work::dense_min, factor_work::dim, E_FACTOR_BLOWUP, E_NO_PIVOT, E_SINGULAR_INTERNAL, elim(), find_pivot(), handle_singularity(), init_matrix(), factor_work::maxelem_factor, factor_work::maxelem_orig, factor_work::maxmult, factor_work::minmult, factor_work::nstages, uc_info::nzcnt, factor_work::partial_cur, factor_work::partial_tol, ur_info::pivcnt, factor_work::stage, factor_work::uc_inf, and factor_work::ur_inf.

Referenced by ILLfactor().

Here is the call graph for this function:

int ILLfactor_update ( factor_work f,
svector a,
int  col_p,
int *  p_refact 
)

Definition at line 5474 of file factor.c.

References uc_info::cbeg, svector::coef, factor_work::crank, create_column(), delete_column(), factor_work::etacnt, factor_work::etamax, svector::indx, svector::nzcnt, ur_info::nzcnt, ur_info::rbeg, factor_work::rrank, factor_work::uc_inf, factor_work::ucindx, factor_work::ur_inf, factor_work::urindx, and factor_work::work_coef.

Referenced by ILLbasis_update(), and main().

Here is the call graph for this function:

static int init_matrix ( factor_work f,
int *  basis,
int *  cbeg,
int *  clen,
int *  in_ucindx,
EGlpNum_t *  in_uccoef 
) [static]

Definition at line 1879 of file factor.c.

References create_factor_space(), factor_work::dim, factor_work::fzero_tol, factor_work::max_k, ur_info::nzcnt, uc_info::nzcnt, ur_info::rbeg, factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uc_space, factor_work::ucindx, factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by ILLfactor_try().

Here is the call graph for this function:

static void load_row ( factor_work f,
int  r 
) [static]

Definition at line 723 of file factor.c.

References ur_info::nzcnt, ur_info::rbeg, factor_work::ur_inf, factor_work::urcoef, factor_work::urindx, factor_work::work_coef, and factor_work::work_indx.

Referenced by elim().

static int make_lc_space ( factor_work f,
int  space 
) [static]

Definition at line 983 of file factor.c.

References factor_work::grow_mul, ILL_IFFREE, ILL_SAFE_MALLOC, factor_work::lc_freebeg, factor_work::lc_space, factor_work::lccoef, and factor_work::lcindx.

Referenced by elim().

static int make_uc_space ( factor_work f,
int  space 
) [static]

Definition at line 873 of file factor.c.

References uc_info::cbeg, factor_work::dim, factor_work::grow_mul, ILL_IFFREE, ILL_SAFE_MALLOC, uc_info::nzcnt, factor_work::uc_freebeg, factor_work::uc_inf, factor_work::uc_space, factor_work::uccoef, factor_work::ucindx, and factor_work::ucrind.

Referenced by add_col_nz(), and expand_col().

static int make_ur_space ( factor_work f,
int  space 
) [static]

Definition at line 762 of file factor.c.

References factor_work::dim, factor_work::grow_mul, ILL_IFFREE, ILL_SAFE_MALLOC, ur_info::nzcnt, ur_info::rbeg, factor_work::ur_freebeg, factor_work::ur_inf, factor_work::ur_space, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by elim_row(), and expand_row().

static int move_pivot ( factor_work f,
int  rank_r 
) [static]

Definition at line 5444 of file factor.c.

References factor_work::cperm, E_UPDATE_SINGULAR_COL, move_pivot_col(), move_pivot_row(), and factor_work::rperm.

Here is the call graph for this function:

static int move_pivot_col ( factor_work f,
int  c,
int  r 
) [static]

Definition at line 5405 of file factor.c.

References __QS_SB_VERB, uc_info::cbeg, E_UPDATE_SINGULAR_COL, EGLPNUM_SWAP, ILL_SWAP, uc_info::nzcnt, ur_info::rbeg, factor_work::uc_inf, factor_work::uccoef, factor_work::ucindx, factor_work::ucrind, factor_work::ur_inf, and factor_work::urcind.

Referenced by move_pivot().

static int move_pivot_row ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 5365 of file factor.c.

References __QS_SB_VERB, uc_info::cbeg, E_UPDATE_SINGULAR_ROW, EGLPNUM_SWAP, ILL_SWAP, ur_info::nzcnt, ur_info::rbeg, factor_work::uc_inf, factor_work::ucrind, factor_work::ur_inf, factor_work::urcind, factor_work::urcoef, and factor_work::urindx.

Referenced by move_pivot().

static void remove_col ( factor_work f,
int  c 
) [static]

Definition at line 1217 of file factor.c.

References uc_info::cbeg, uc_info::next, uc_info::nzcnt, uc_info::prev, factor_work::uc_inf, and factor_work::ucindx.

Referenced by elim().

static void remove_col_nz ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 1084 of file factor.c.

References uc_info::cbeg, uc_info::nzcnt, set_col_nz(), factor_work::uc_inf, and factor_work::ucindx.

Referenced by elim(), and elim_row().

Here is the call graph for this function:

static void remove_row ( factor_work f,
int  r 
) [static]

Definition at line 1244 of file factor.c.

References ur_info::next, ur_info::prev, and factor_work::ur_inf.

Referenced by elim().

static void remove_row_nz ( factor_work f,
int  r,
int  c 
) [static]

Definition at line 1109 of file factor.c.

References EGLPNUM_SWAP, ILL_SWAP, ur_info::pivcnt, ur_info::rbeg, set_row_nz(), factor_work::ur_inf, factor_work::urcoef, and factor_work::urindx.

Referenced by elim().

Here is the call graph for this function:

static void serow_delay ( factor_work f,
int  r,
int  rank_r 
) [static]

Definition at line 5178 of file factor.c.

References factor_work::crank, ur_info::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::ur_inf, and factor_work::urindx.

Referenced by sparse_eliminate_row().

static int serow_process ( factor_work f,
int  r,
svector newr,
int  rank_r 
) [static]

Definition at line 5212 of file factor.c.

References svector::coef, factor_work::crank, E_UPDATE_NOSPACE, factor_work::er_freebeg, factor_work::er_space, factor_work::ercoef, factor_work::erindx, factor_work::fzero_tol, svector::indx, factor_work::maxelem_cur, ur_info::nzcnt, svector::nzcnt, ur_info::rbeg, factor_work::rperm, factor_work::ur_inf, factor_work::urcoef, factor_work::urindx, and factor_work::work_coef.

Referenced by sparse_eliminate_row().

static void set_col_nz ( factor_work f,
int  c 
) [static]

Definition at line 1038 of file factor.c.

References factor_work::dim, factor_work::max_k, uc_info::next, uc_info::nzcnt, uc_info::prev, and factor_work::uc_inf.

Referenced by add_col_nz(), and remove_col_nz().

static void set_row_nz ( factor_work f,
int  r 
) [static]

Definition at line 1061 of file factor.c.

References factor_work::dim, factor_work::max_k, ur_info::next, ur_info::pivcnt, ur_info::prev, and factor_work::ur_inf.

Referenced by elim_row(), and remove_row_nz().

static void shift_permutations ( factor_work f,
int  rank_p,
int  rank_r 
) [static]

Definition at line 5025 of file factor.c.

References factor_work::cperm, factor_work::crank, factor_work::rperm, and factor_work::rrank.

static int sparse_eliminate_row ( factor_work f,
svector x,
int  row_p,
int  rank_r 
) [static]

Definition at line 5302 of file factor.c.

References add_nonzero(), svector::coef, factor_work::crank, factor_work::dim, ILL_IFFREE, ILL_SAFE_MALLOC, svector::indx, svector::nzcnt, factor_work::nzcnt_cur, serow_delay(), serow_process(), factor_work::ur_inf, and factor_work::work_coef.

Here is the call graph for this function:


Generated on Thu Mar 29 09:35:24 2012 for QSopt_ex by  doxygen 1.4.7