ldbl_presolve.c File Reference

#include "qs_config.h"
#include "ldbl_iqsutil.h"
#include "ldbl_lpdata.h"
#include "ldbl_lpdefs.h"

Include dependency graph for ldbl_presolve.c:

Go to the source code of this file.

Data Structures

struct  ldbl_edge
struct  ldbl_graph
struct  ldbl_intptr
struct  ldbl_node

Defines

#define ldbl_ILL_LP_STATUS_OK   (0)
#define ldbl_ILL_PRE_COL_LOGICAL   (1)
#define ldbl_ILL_PRE_COL_STRUC   (0)
#define ldbl_ILL_PRE_DELETE_EMPTY_COLUMN   (7)
#define ldbl_ILL_PRE_DELETE_EMPTY_ROW   (1)
#define ldbl_ILL_PRE_DELETE_FIXED_VARIABLE   (3)
#define ldbl_ILL_PRE_DELETE_FORCED_VARIABLE   (4)
#define ldbl_ILL_PRE_DELETE_FREE_SINGLETON_VARIABLE   (6)
#define ldbl_ILL_PRE_DELETE_SINGLETON_ROW   (2)
#define ldbl_ILL_PRE_DELETE_SINGLETON_VARIABLE   (5)
#define ldbl_ILL_PRE_FEAS_TOL   ldbl_PFEAS_TOLER
#define ldbl_ILL_PRE_ZERO_TOL   ldbl_PIVOT_TOLER

Functions

 ILL_PTRWORLD_ROUTINES (ILL_PTRWORLD_LISTFREE_ROUTINE(ldbl_intptr, intptralloc, intptr_bulkalloc, intptrfree)
static int ldbl_add_to_list (ILLptrworld *world, ldbl_intptr **list, int i)
static int ldbl_build_graph (ldbl_ILLlpdata *lp, ldbl_graph *G)
static void ldbl_dump_graph (ldbl_graph *G)
static void ldbl_dump_line (ldbl_ILLlp_preline *line)
static int ldbl_duplicate_cols (ldbl_graph *G, int *hit)
static int ldbl_duplicate_rows (ldbl_graph *G, int *hit)
static int ldbl_empty_columns (ldbl_graph *G, ldbl_ILLlp_predata *pre)
static int ldbl_fixed_variables (ldbl_graph *G, ldbl_ILLlp_predata *pre)
static int ldbl_forcing_constraints (ldbl_graph *G, ldbl_ILLlp_predata *pre, int *hit)
static void ldbl_free_graph (ldbl_graph *G)
static int ldbl_gather_dup_lists (int *s, int count, int *duptotal, int **dupcnt, int **dupind)
static void ldbl_get_implied_rhs_bounds (ldbl_graph *G, int i, long double *lb, long double *ub)
static void ldbl_get_implied_variable_bounds (ldbl_graph *G, int j, ldbl_edge *a_ij, long double *lb, long double *ub)
static int ldbl_get_next_preop (ldbl_ILLlp_predata *pre, ldbl_ILLlp_preop **op)
static int ldbl_grab_lp_info (ldbl_graph *G, char **colnames, ldbl_ILLlp_sinfo *info)
static int ldbl_grab_lp_line (ldbl_graph *G, int indx, ldbl_ILLlp_preline *line, int row_or_col)
void ldbl_ILLlp_predata_free (ldbl_ILLlp_predata *pre)
void ldbl_ILLlp_predata_init (ldbl_ILLlp_predata *pre)
void ldbl_ILLlp_preline_free (ldbl_ILLlp_preline *line)
void ldbl_ILLlp_preline_init (ldbl_ILLlp_preline *line)
void ldbl_ILLlp_preop_free (ldbl_ILLlp_preop *op)
void ldbl_ILLlp_preop_init (ldbl_ILLlp_preop *op)
int ldbl_ILLlp_presolve (ldbl_ILLlpdata *lp, int pre_types)
int ldbl_ILLlp_scale (ldbl_ILLlpdata *lp)
void ldbl_ILLlp_sinfo_free (ldbl_ILLlp_sinfo *sinfo)
void ldbl_ILLlp_sinfo_init (ldbl_ILLlp_sinfo *sinfo)
int ldbl_ILLlp_sinfo_print (ldbl_ILLlp_sinfo *s)
static void ldbl_init_graph (ldbl_graph *G)
static void ldbl_set_fixed_variable (ldbl_graph *G, int j, long double val)
static int ldbl_simple_presolve (ldbl_ILLlpdata *lp, ldbl_ILLlp_predata *pre, ldbl_ILLlp_sinfo *info, int pre_types, int *status)
static int ldbl_singleton_columns (ldbl_graph *G, ldbl_ILLlp_predata *pre, int *hit)
static int ldbl_singleton_rows (ldbl_graph *G, ldbl_ILLlp_predata *pre, int *hit)

Variables

static int ldbl_debug = 0
static int TRACE = 0


Define Documentation

#define ldbl_ILL_LP_STATUS_OK   (0)

Definition at line 52 of file ldbl_presolve.c.

Referenced by ldbl_ILLlp_presolve(), and ldbl_simple_presolve().

#define ldbl_ILL_PRE_COL_LOGICAL   (1)

Definition at line 65 of file ldbl_presolve.c.

Referenced by ldbl_dump_graph().

#define ldbl_ILL_PRE_COL_STRUC   (0)

Definition at line 64 of file ldbl_presolve.c.

Referenced by ldbl_duplicate_cols(), ldbl_duplicate_rows(), and ldbl_grab_lp_info().

#define ldbl_ILL_PRE_DELETE_EMPTY_COLUMN   (7)

Definition at line 62 of file ldbl_presolve.c.

Referenced by ldbl_empty_columns(), and ldbl_simple_presolve().

#define ldbl_ILL_PRE_DELETE_EMPTY_ROW   (1)

Definition at line 56 of file ldbl_presolve.c.

Referenced by ldbl_simple_presolve(), and ldbl_singleton_rows().

#define ldbl_ILL_PRE_DELETE_FIXED_VARIABLE   (3)

Definition at line 58 of file ldbl_presolve.c.

Referenced by ldbl_fixed_variables(), and ldbl_simple_presolve().

#define ldbl_ILL_PRE_DELETE_FORCED_VARIABLE   (4)

Definition at line 59 of file ldbl_presolve.c.

Referenced by ldbl_forcing_constraints(), and ldbl_simple_presolve().

#define ldbl_ILL_PRE_DELETE_FREE_SINGLETON_VARIABLE   (6)

Definition at line 61 of file ldbl_presolve.c.

Referenced by ldbl_simple_presolve(), and ldbl_singleton_columns().

#define ldbl_ILL_PRE_DELETE_SINGLETON_ROW   (2)

Definition at line 57 of file ldbl_presolve.c.

Referenced by ldbl_simple_presolve(), and ldbl_singleton_rows().

#define ldbl_ILL_PRE_DELETE_SINGLETON_VARIABLE   (5)

Definition at line 60 of file ldbl_presolve.c.

Referenced by ldbl_simple_presolve(), and ldbl_singleton_columns().

#define ldbl_ILL_PRE_FEAS_TOL   ldbl_PFEAS_TOLER

Definition at line 53 of file ldbl_presolve.c.

Referenced by ldbl_empty_columns(), ldbl_forcing_constraints(), ldbl_get_implied_variable_bounds(), and ldbl_singleton_rows().

#define ldbl_ILL_PRE_ZERO_TOL   ldbl_PIVOT_TOLER

Definition at line 54 of file ldbl_presolve.c.

Referenced by ldbl_duplicate_cols(), and ldbl_duplicate_rows().


Function Documentation

ILL_PTRWORLD_ROUTINES ( ILL_PTRWORLD_LISTFREE_ROUTINE (  ldbl_intptr,
intptralloc  ,
intptr_bulkalloc  ,
intptrfree   
)

Definition at line 218 of file ldbl_presolve.c.

References ILL_SAFE_MALLOC, ldbl_ILL_MAXDOUBLE, ldbl_ILLlp_rows_clear(), ldbl_ILLmatrix::matbeg, ldbl_ILLmatrix::matcnt, ldbl_ILLmatrix::matcols, ldbl_ILLmatrix::matcolsize, ldbl_ILLmatrix::matfree, ldbl_ILLmatrix::matind, ldbl_ILLmatrix::matsize, and ldbl_ILLmatrix::matval.

Here is the call graph for this function:

static int ldbl_add_to_list ( ILLptrworld world,
ldbl_intptr **  list,
int  i 
)

Definition at line 2241 of file ldbl_presolve.c.

References ILL_RETURN, ldbl_intptr::next, and ldbl_intptr::this_val.

Referenced by ldbl_singleton_rows().

static int ldbl_build_graph ( ldbl_ILLlpdata lp,
ldbl_graph G 
)

Definition at line 2264 of file ldbl_presolve.c.

References ldbl_ILLlpdata::A, ldbl_graph::adjspace, ldbl_edge::coef, ldbl_graph::cols, ldbl_node::deg, ldbl_graph::edgelist, ILL_SAFE_MALLOC, ldbl_ILLlpdata::ncols, ldbl_ILLlpdata::nrows, ldbl_graph::nzcount, ldbl_ILLlpdata::nzcount, ldbl_ILLlpdata::objsense, ldbl_graph::objsense, ldbl_graph::rows, ldbl_node::rowsense, and ldbl_ILLlpdata::sense.

Referenced by ldbl_simple_presolve().

static void ldbl_dump_graph ( ldbl_graph G  ) 

Definition at line 2385 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_graph::cols, ldbl_node::coltype, ldbl_edge::coltype, ldbl_node::deg, ldbl_node::del, ldbl_graph::ecount, ldbl_ILL_PRE_COL_LOGICAL, ldbl_node::lower, ldbl_graph::ncols, ldbl_graph::nrows, ldbl_node::obj, ldbl_node::rhs, ldbl_edge::row, ldbl_graph::rows, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

static void ldbl_dump_line ( ldbl_ILLlp_preline line  ) 

Definition at line 812 of file ldbl_presolve.c.

References ldbl_ILLlp_preline::count, ldbl_ILLlp_preline::ind, ldbl_ILLlp_preline::lower, ldbl_ILLlp_preline::obj, ldbl_ILLlp_preline::rhs, ldbl_ILLlp_preline::row_or_col, ldbl_ILLlp_preline::upper, and ldbl_ILLlp_preline::val.

Referenced by ldbl_simple_presolve().

static int ldbl_duplicate_cols ( ldbl_graph G,
int *  hit 
)

Definition at line 1799 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_graph::cols, ldbl_node::coltype, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ILL_CLEANUP_IF, ILL_IFFREE, ILL_RETURN, ILL_SAFE_MALLOC, ILLutil_zeit(), k2, ldbl_gather_dup_lists(), ldbl_ILL_MAXINT, ldbl_ILL_PRE_COL_STRUC, ldbl_ILL_PRE_ZERO_TOL, ldbl_graph::ncols, ldbl_graph::nrows, ldbl_graph::rows, and t.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static int ldbl_duplicate_rows ( ldbl_graph G,
int *  hit 
)

Definition at line 1660 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_graph::cols, ldbl_node::coltype, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ILL_IFFREE, ILL_RETURN, ILL_SAFE_MALLOC, ILLutil_zeit(), k2, ldbl_ILL_MAXINT, ldbl_ILL_PRE_COL_STRUC, ldbl_ILL_PRE_ZERO_TOL, ldbl_graph::ncols, ldbl_graph::nrows, ldbl_edge::row, ldbl_graph::rows, ldbl_node::rowsense, and t.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static int ldbl_empty_columns ( ldbl_graph G,
ldbl_ILLlp_predata pre 
)

Definition at line 1082 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_ILLlp_preop::colindex, ldbl_graph::cols, ldbl_node::deg, ldbl_node::del, ILL_CLEANUP_IF, ILL_RETURN, ldbl_get_next_preop(), ldbl_grab_lp_line(), ldbl_ILL_MAXDOUBLE, ldbl_ILL_MINDOUBLE, ldbl_ILL_PRE_DELETE_EMPTY_COLUMN, ldbl_ILL_PRE_FEAS_TOL, ldbl_set_fixed_variable(), ldbl_ILLlp_preop::line, ldbl_node::lower, ldbl_graph::ncols, ldbl_node::obj, ldbl_graph::objsense, ldbl_ILLlp_preop::ptype, ldbl_ILLlp_preop::rowindex, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static int ldbl_fixed_variables ( ldbl_graph G,
ldbl_ILLlp_predata pre 
)

Definition at line 1045 of file ldbl_presolve.c.

References ldbl_ILLlp_preop::colindex, ldbl_graph::cols, ldbl_node::del, ILL_CLEANUP_IF, ILL_RETURN, ldbl_get_next_preop(), ldbl_grab_lp_line(), ldbl_ILL_PRE_DELETE_FIXED_VARIABLE, ldbl_set_fixed_variable(), ldbl_ILLlp_preop::line, ldbl_node::lower, ldbl_graph::ncols, ldbl_ILLlp_preop::ptype, ldbl_ILLlp_preop::rowindex, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static int ldbl_forcing_constraints ( ldbl_graph G,
ldbl_ILLlp_predata pre,
int *  hit 
)

Definition at line 1336 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_ILLlp_preop::colindex, ldbl_graph::cols, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ILL_CLEANUP_IF, ldbl_get_implied_rhs_bounds(), ldbl_get_next_preop(), ldbl_grab_lp_line(), ldbl_ILL_PRE_DELETE_FORCED_VARIABLE, ldbl_ILL_PRE_FEAS_TOL, ldbl_set_fixed_variable(), ldbl_ILLlp_preop::line, ldbl_node::lower, ldbl_graph::nrows, ldbl_ILLlp_predata::opcount, ldbl_ILLlp_preop::ptype, ldbl_ILLlp_preop::rowindex, ldbl_graph::rows, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static void ldbl_free_graph ( ldbl_graph G  ) 

Definition at line 2458 of file ldbl_presolve.c.

References ldbl_graph::adjspace, ldbl_edge::coef, ldbl_graph::cols, ldbl_graph::edgelist, ILL_IFFREE, ILLptrworld_delete(), ldbl_graph::intptrworld, ldbl_init_graph(), ldbl_graph::nzcount, and ldbl_graph::rows.

Here is the call graph for this function:

static int ldbl_gather_dup_lists ( int *  s,
int  count,
int *  duptotal,
int **  dupcnt,
int **  dupind 
)

Definition at line 1931 of file ldbl_presolve.c.

References ILL_IFFREE, ILL_RETURN, ILL_SAFE_MALLOC, and ldbl_ILL_MAXINT.

Referenced by ldbl_duplicate_cols().

static void ldbl_get_implied_rhs_bounds ( ldbl_graph G,
int  i,
long double *  lb,
long double *  ub 
)

Definition at line 2075 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_graph::cols, ldbl_node::deg, ldbl_edge::del, ldbl_ILL_MAXDOUBLE, ldbl_ILL_MINDOUBLE, and ldbl_graph::rows.

Referenced by ldbl_forcing_constraints(), and ldbl_get_implied_variable_bounds().

static void ldbl_get_implied_variable_bounds ( ldbl_graph G,
int  j,
ldbl_edge a_ij,
long double *  lb,
long double *  ub 
)

Definition at line 2164 of file ldbl_presolve.c.

References ldbl_edge::coef, ldbl_graph::cols, ldbl_get_implied_rhs_bounds(), ldbl_ILL_MAXDOUBLE, ldbl_ILL_MINDOUBLE, ldbl_ILL_PRE_FEAS_TOL, ldbl_node::lower, ldbl_node::rhs, ldbl_edge::row, ldbl_graph::rows, and ldbl_node::upper.

Referenced by ldbl_singleton_columns().

Here is the call graph for this function:

static int ldbl_get_next_preop ( ldbl_ILLlp_predata pre,
ldbl_ILLlp_preop **  op 
)

Definition at line 2215 of file ldbl_presolve.c.

References ILL_RETURN, ldbl_ILLlp_preop_init(), ldbl_ILLlp_predata::opcount, ldbl_ILLlp_predata::oplist, and ldbl_ILLlp_predata::opsize.

Referenced by ldbl_empty_columns(), ldbl_fixed_variables(), ldbl_forcing_constraints(), ldbl_singleton_columns(), and ldbl_singleton_rows().

Here is the call graph for this function:

static int ldbl_grab_lp_info ( ldbl_graph G,
char **  colnames,
ldbl_ILLlp_sinfo info 
)

Definition at line 838 of file ldbl_presolve.c.

References ldbl_ILLlp_sinfo::A, ldbl_node::adj, ldbl_edge::coef, ldbl_ILLlp_sinfo::colnames, ldbl_graph::cols, ldbl_ILLlp_sinfo::colsize, ldbl_node::coltype, ldbl_node::deg, ldbl_node::del, ILL_namebufsize, ILL_SAFE_MALLOC, ldbl_ILL_PRE_COL_STRUC, ldbl_node::lower, ldbl_ILLlp_sinfo::lower, ldbl_ILLmatrix::matbeg, ldbl_ILLmatrix::matcnt, ldbl_ILLmatrix::matcols, ldbl_ILLmatrix::matcolsize, ldbl_ILLmatrix::matfree, ldbl_ILLmatrix::matind, ldbl_ILLmatrix::matrows, ldbl_ILLmatrix::matsize, ldbl_ILLmatrix::matval, ldbl_ILLlp_sinfo::ncols, ldbl_graph::ncols, ldbl_ILLlp_sinfo::nrows, ldbl_graph::nrows, ldbl_ILLlp_sinfo::nzcount, ldbl_node::obj, ldbl_ILLlp_sinfo::obj, ldbl_node::rhs, ldbl_ILLlp_sinfo::rhs, ldbl_edge::row, ldbl_graph::rows, ldbl_ILLlp_sinfo::rowsize, ldbl_node::upper, and ldbl_ILLlp_sinfo::upper.

static int ldbl_grab_lp_line ( ldbl_graph G,
int  indx,
ldbl_ILLlp_preline line,
int  row_or_col 
)

Definition at line 747 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_graph::cols, ldbl_ILLlp_preline::count, ldbl_node::deg, ldbl_edge::del, and ldbl_graph::rows.

Referenced by ldbl_empty_columns(), ldbl_fixed_variables(), ldbl_forcing_constraints(), ldbl_singleton_columns(), and ldbl_singleton_rows().

void ldbl_ILLlp_predata_free ( ldbl_ILLlp_predata pre  ) 

Definition at line 2599 of file ldbl_presolve.c.

References ldbl_ILLlp_predata::colfixval, ldbl_ILLlp_predata::colmap, ldbl_ILLlp_predata::colscale, ILL_IFFREE, ldbl_ILLlp_predata_init(), ldbl_ILLlp_preop_free(), ldbl_ILLlp_predata::opcount, ldbl_ILLlp_predata::oplist, ldbl_ILLlp_predata::rowfixval, ldbl_ILLlp_predata::rowmap, and ldbl_ILLlp_predata::rowscale.

Referenced by ldbl_ILLlp_presolve().

Here is the call graph for this function:

void ldbl_ILLlp_predata_init ( ldbl_ILLlp_predata pre  ) 

void ldbl_ILLlp_preline_free ( ldbl_ILLlp_preline line  ) 

Definition at line 2663 of file ldbl_presolve.c.

References ILL_IFFREE, ldbl_ILLlp_preline::ind, ldbl_ILLlp_preline::lower, ldbl_ILLlp_preline::obj, ldbl_ILLlp_preline::rhs, ldbl_ILLlp_preline::upper, and ldbl_ILLlp_preline::val.

Referenced by ldbl_ILLlp_preop_free().

void ldbl_ILLlp_preline_init ( ldbl_ILLlp_preline line  ) 

Definition at line 2644 of file ldbl_presolve.c.

References ldbl_ILLlp_preline::count, ldbl_ILLlp_preline::ind, ldbl_ILLlp_preline::lower, ldbl_ILLlp_preline::obj, ldbl_ILLlp_preline::rhs, ldbl_ILLlp_preline::upper, and ldbl_ILLlp_preline::val.

Referenced by ldbl_ILLlp_preop_init().

void ldbl_ILLlp_preop_free ( ldbl_ILLlp_preop op  ) 

Definition at line 2634 of file ldbl_presolve.c.

References ldbl_ILLlp_preline_free(), ldbl_ILLlp_preop_init(), and ldbl_ILLlp_preop::line.

Referenced by ldbl_ILLlp_predata_free().

Here is the call graph for this function:

void ldbl_ILLlp_preop_init ( ldbl_ILLlp_preop op  ) 

Definition at line 2622 of file ldbl_presolve.c.

References ldbl_ILLlp_preop::colindex, ldbl_ILLlp_preline_init(), ldbl_ILLlp_preop::line, ldbl_ILLlp_preop::ptype, and ldbl_ILLlp_preop::rowindex.

Referenced by ldbl_get_next_preop(), and ldbl_ILLlp_preop_free().

Here is the call graph for this function:

int ldbl_ILLlp_presolve ( ldbl_ILLlpdata lp,
int  pre_types 
)

Definition at line 462 of file ldbl_presolve.c.

References ILL_CLEANUP_IF, ILL_IFFREE, ILL_RETURN, ILL_SAFE_MALLOC, ldbl_ILL_LP_STATUS_OK, ldbl_ILLlp_predata_free(), ldbl_ILLlp_predata_init(), ldbl_ILLlp_sinfo_free(), ldbl_ILLlp_sinfo_init(), ldbl_simple_presolve(), ldbl_ILLlpdata::presolve, and ldbl_ILLlpdata::sinfo.

Here is the call graph for this function:

int ldbl_ILLlp_scale ( ldbl_ILLlpdata lp  ) 

Definition at line 349 of file ldbl_presolve.c.

References ldbl_ILLlpdata::A, ILL_ERROR, ldbl_ILL_MAXDOUBLE, ldbl_ILL_MINDOUBLE, ldbl_ILLlpdata::lower, ldbl_ILLmatrix::matbeg, ldbl_ILLmatrix::matcnt, ldbl_ILLmatrix::matind, ldbl_ILLmatrix::matval, ldbl_ILLlpdata::ncols, ldbl_ILLlpdata::nrows, ldbl_ILLlpdata::nstruct, ldbl_ILLlpdata::obj, ldbl_ILLlpdata::rhs, ldbl_ILLlpdata::rowmap, ldbl_ILLlpdata::structmap, and ldbl_ILLlpdata::upper.

void ldbl_ILLlp_sinfo_free ( ldbl_ILLlp_sinfo sinfo  ) 

void ldbl_ILLlp_sinfo_init ( ldbl_ILLlp_sinfo sinfo  ) 

int ldbl_ILLlp_sinfo_print ( ldbl_ILLlp_sinfo s  ) 

Definition at line 2482 of file ldbl_presolve.c.

References ldbl_ILLlp_sinfo::A, ldbl_ILLlpdata::A, ldbl_ILLlp_sinfo::colnames, ldbl_ILLlpdata::colnames, ILL_IFFREE, ILL_RETURN, ILL_SAFE_MALLOC, ldbl_ILLlpdata::intmarker, ldbl_ILLlpdata_init(), ldbl_ILLlp_sinfo::lower, ldbl_ILLlpdata::lower, ldbl_ILLmatrix::matbeg, ldbl_ILLmatrix::matcnt, ldbl_ILLmatrix::matind, ldbl_ILLmatrix::matval, ldbl_ILLlp_sinfo::ncols, ldbl_ILLlpdata::ncols, ldbl_ILLlp_sinfo::nrows, ldbl_ILLlpdata::nrows, ldbl_ILLlp_sinfo::nzcount, ldbl_ILLlpdata::nzcount, ldbl_ILLlp_sinfo::obj, ldbl_ILLlpdata::obj, ldbl_ILLlpdata::objname, ldbl_ILLlp_sinfo::objsense, ldbl_ILLlpdata::objsense, ldbl_ILLlpdata::probname, ldbl_ILLlp_sinfo::rhs, ldbl_ILLlpdata::rhs, ldbl_ILLlpdata::rownames, ldbl_ILLlpdata::sense, ldbl_ILLlp_sinfo::upper, and ldbl_ILLlpdata::upper.

Here is the call graph for this function:

static void ldbl_init_graph ( ldbl_graph G  ) 

Definition at line 2442 of file ldbl_presolve.c.

References ldbl_graph::adjspace, ldbl_graph::cols, ldbl_graph::ecount, ldbl_graph::edgelist, ILLptrworld_init(), ldbl_graph::intptrworld, ldbl_graph::ncols, ldbl_graph::nrows, and ldbl_graph::rows.

Referenced by ldbl_free_graph(), and ldbl_simple_presolve().

Here is the call graph for this function:

static void ldbl_set_fixed_variable ( ldbl_graph G,
int  j,
long double  val 
) [static]

Definition at line 2054 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_graph::cols, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ldbl_edge::row, and ldbl_graph::rows.

Referenced by ldbl_empty_columns(), ldbl_fixed_variables(), and ldbl_forcing_constraints().

static int ldbl_simple_presolve ( ldbl_ILLlpdata lp,
ldbl_ILLlp_predata pre,
ldbl_ILLlp_sinfo info,
int  pre_types,
int *  status 
) [static]

Definition at line 580 of file ldbl_presolve.c.

References ldbl_ILLlp_preop::colindex, ILL_CLEANUP_IF, ldbl_build_graph(), ldbl_debug, ldbl_dump_graph(), ldbl_dump_line(), ldbl_duplicate_cols(), ldbl_duplicate_rows(), ldbl_empty_columns(), ldbl_fixed_variables(), ldbl_forcing_constraints(), ldbl_ILL_LP_STATUS_OK, ldbl_ILL_PRE_DELETE_EMPTY_COLUMN, ldbl_ILL_PRE_DELETE_EMPTY_ROW, ldbl_ILL_PRE_DELETE_FIXED_VARIABLE, ldbl_ILL_PRE_DELETE_FORCED_VARIABLE, ldbl_ILL_PRE_DELETE_FREE_SINGLETON_VARIABLE, ldbl_ILL_PRE_DELETE_SINGLETON_ROW, ldbl_ILL_PRE_DELETE_SINGLETON_VARIABLE, ldbl_ILL_PRE_DUPLICATE_COL, ldbl_ILL_PRE_DUPLICATE_ROW, ldbl_ILL_PRE_EMPTY_COL, ldbl_ILL_PRE_FIXED, ldbl_ILL_PRE_FORCING, ldbl_ILL_PRE_SINGLE_COL, ldbl_ILL_PRE_SINGLE_ROW, ldbl_init_graph(), ldbl_singleton_columns(), ldbl_singleton_rows(), ldbl_ILLlp_preop::line, ldbl_ILLlpdata::ncols, ldbl_ILLlpdata::nrows, ldbl_ILLlpdata::nzcount, ldbl_ILLlp_predata::opcount, ldbl_ILLlp_predata::oplist, ldbl_ILLlp_preop::ptype, and ldbl_ILLlp_preop::rowindex.

Referenced by ldbl_ILLlp_presolve().

Here is the call graph for this function:

static int ldbl_singleton_columns ( ldbl_graph G,
ldbl_ILLlp_predata pre,
int *  hit 
)

Definition at line 1416 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_ILLlp_preop::colindex, ldbl_graph::cols, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ILL_CLEANUP_IF, ldbl_get_implied_variable_bounds(), ldbl_get_next_preop(), ldbl_grab_lp_line(), ldbl_ILL_MAXDOUBLE, ldbl_ILL_MINDOUBLE, ldbl_ILL_PRE_DELETE_FREE_SINGLETON_VARIABLE, ldbl_ILL_PRE_DELETE_SINGLETON_VARIABLE, ldbl_ILLlp_preop::line, ldbl_node::lower, ldbl_graph::ncols, ldbl_node::obj, ldbl_ILLlp_predata::opcount, ldbl_ILLlp_preop::ptype, ldbl_ILLlp_preop::rowindex, ldbl_graph::rows, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:

static int ldbl_singleton_rows ( ldbl_graph G,
ldbl_ILLlp_predata pre,
int *  hit 
)

Definition at line 1167 of file ldbl_presolve.c.

References ldbl_node::adj, ldbl_edge::coef, ldbl_edge::col, ldbl_ILLlp_preop::colindex, ldbl_graph::cols, ldbl_node::deg, ldbl_edge::del, ldbl_node::del, ILL_CLEANUP_IF, ILL_SAFE_MALLOC, ldbl_graph::intptrworld, ldbl_add_to_list(), ldbl_get_next_preop(), ldbl_grab_lp_line(), ldbl_ILL_PRE_DELETE_EMPTY_ROW, ldbl_ILL_PRE_DELETE_SINGLETON_ROW, ldbl_ILL_PRE_FEAS_TOL, ldbl_ILLlp_preop::line, ldbl_node::lower, ldbl_intptr::next, ldbl_graph::nrows, ldbl_ILLlp_preop::ptype, ldbl_ILLlp_preline::rhs, ldbl_node::rhs, ldbl_edge::row, ldbl_ILLlp_preop::rowindex, ldbl_graph::rows, and ldbl_node::upper.

Referenced by ldbl_simple_presolve().

Here is the call graph for this function:


Variable Documentation

int ldbl_debug = 0 [static]

Definition at line 67 of file ldbl_presolve.c.

Referenced by ldbl_simple_presolve().

int TRACE = 0 [static]

Definition at line 24 of file ldbl_presolve.c.


Generated on Thu Mar 29 09:40:15 2012 for QSopt_ex by  doxygen 1.4.7