00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __BASIS_H
00025 #define __BASIS_H
00026
00027 #include "config.h"
00028 #include "dstruct.h"
00029 #include "lpdefs.h"
00030 #include "lpdata.h"
00031
00032 #if EGLPNUM_TYPE != DBL_TYPE && EGLPNUM_TYPE != LDBL_TYPE
00033 extern EGlpNum_t CB_PRI_RLIMIT;
00034 extern EGlpNum_t CB_INF_RATIO;
00035 extern EGlpNum_t CB_EPS;
00036 #endif
00037
00038 typedef struct var_data
00039 {
00040 int nartif;
00041 int nslacks;
00042 int nfree;
00043 int nbndone;
00044 int nbounded;
00045 int nfixed;
00046 EGlpNum_t cmax;
00047 }
00048 var_data;
00049
00050 void ILLbasis_init_vardata (
00051 var_data * vd);
00052 void ILLbasis_clear_vardata (
00053 var_data * vd);
00054
00055 int ILLbasis_build_basisinfo (
00056 lpinfo * lp),
00057 ILLbasis_get_initial (
00058 lpinfo * lp,
00059 int algorithm),
00060 ILLbasis_get_cinitial (
00061 lpinfo * lp,
00062 int algorithm),
00063 ILLbasis_load (
00064 lpinfo * lp,
00065 ILLlp_basis * B),
00066 ILLbasis_tableau_row (
00067 lpinfo * lp,
00068 int row,
00069 EGlpNum_t * brow,
00070 EGlpNum_t * trow,
00071 EGlpNum_t * rhs,
00072 int strict),
00073 ILLbasis_factor (
00074 lpinfo * lp,
00075 int *singular),
00076 ILLbasis_refactor (
00077 lpinfo * lp),
00078 ILLbasis_update (
00079 lpinfo * lp,
00080 svector * y,
00081 int lindex,
00082 int *refactor,
00083 int *singular);
00084
00085 void ILLbasis_column_solve (
00086 lpinfo * lp,
00087 svector * rhs,
00088 svector * soln),
00089 ILLbasis_column_solve_update (
00090 lpinfo * lp,
00091 svector * rhs,
00092 svector * upd,
00093 svector * soln),
00094 ILLbasis_row_solve (
00095 lpinfo * lp,
00096 svector * rhs,
00097 svector * soln),
00098 ILLbasis_free_basisinfo (
00099 lpinfo * lp),
00100 ILLbasis_free_fbasisinfo (
00101 lpinfo * lp),
00102 ILLbasis_init_basisinfo (
00103 lpinfo * lp);
00104
00105 #endif