317#define ladPRIMFEAS 1<<0
318#define ladPRIMALCHK 1<<1
319#define ladPFQUIET 1<<2
320#define ladDUALFEAS 1<<3
321#define ladDUALCHK 1<<4
322#define ladDFQUIET 1<<5
324#define ladPRIMALS 1<<7
325#define ladFACTOR 1<<8
326#define ladEXPAND 1<<9
383#define vstatNBFX 1<<5
384#define vstatNBUB 1<<6
385#define vstatNBLB 1<<7
386#define vstatNBFR 1<<8
388#define vstatBUUB 1<<10
389#define vstatBLLB 1<<11
396#define vstatNOPIVOT ((flags) 1<<(sizeof(flags)*8-2))
397#define vstatNOPER ((flags) 1<<(sizeof(flags)*8-3))
398#define vstatNOLOAD ((flags) 1<<(sizeof(flags)*8-4))
401 (vstatBFX|vstatBUUB|vstatBUB|vstatB|vstatBLB|vstatBLLB|vstatBFR)
402#define vstatNONBASIC (vstatNBFX|vstatNBUB|vstatNBLB)
403#define vstatEXOTIC (vstatSB|vstatNBFR)
405#define vstatSTATUS (vstatBASIC|vstatNONBASIC|vstatEXOTIC)
406#define vstatQUALS (vstatNOPIVOT|vstatNOPER|vstatNOLOAD)
414#define VALID_STATUS(zz_status_zz) \
415 (zz_status_zz == vstatBFX || zz_status_zz == vstatBUB || \
416 zz_status_zz == vstatB || zz_status_zz == vstatBLB || \
417 zz_status_zz == vstatBFR || \
418 zz_status_zz == vstatNBFX || zz_status_zz == vstatNBUB || \
419 zz_status_zz == vstatNBLB || zz_status_zz == vstatNBFR || \
420 zz_status_zz == vstatSB)
495#define lpctlNOFREE 1<<0
496#define lpctlONLYFREE 1<<1
497#define lpctlUBNDCHG 1<<2
498#define lpctlLBNDCHG 1<<3
499#define lpctlRHSCHG 1<<4
500#define lpctlOBJCHG 1<<5
501#define lpctlACTVARSIN 1<<6
502#define lpctlINITACTVAR 1<<7
503#define lpctlINITACTCON 1<<8
505#define lpctlACTVARSOUT 1<<10
507#define lpctlDYVALID 1<<11
684#if defined(DYLP_INTERNAL) || defined(BONSAIG)
692# define BND_TOLER dy_tols->pfeas
696# define INF_TOLER dy_tols->inf
699#define withintol(zz_val_zz,zz_tgt_zz,zz_tol_zz) \
700 (fabs((zz_val_zz)-(zz_tgt_zz)) <= zz_tol_zz)
702#define setcleanzero(zz_val_zz,zz_tol_zz) \
703 if (fabs(zz_val_zz) < zz_tol_zz) zz_val_zz = 0
705#define atbnd(zz_val_zz,zz_bnd_zz) \
706 ((fabs(zz_bnd_zz) < INF_TOLER) && \
707 (fabs((zz_val_zz)-(zz_bnd_zz)) < BND_TOLER*(1.0+fabs(zz_bnd_zz))))
709#define belowbnd(zz_val_zz,zz_bnd_zz) \
710 ((fabs(zz_bnd_zz) < INF_TOLER) ? \
711 (((zz_bnd_zz)-(zz_val_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \
712 (zz_val_zz < zz_bnd_zz))
714#define abovebnd(zz_val_zz,zz_bnd_zz) \
715 ((fabs(zz_bnd_zz) < INF_TOLER) ? \
716 (((zz_val_zz)-(zz_bnd_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \
717 (zz_val_zz > zz_bnd_zz))
719#define withinbnds(zz_lb_zz,zz_val_zz,zz_ub_zz) \
720 (!abovebnd(zz_val_zz,zz_ub_zz) && !belowbnd(zz_val_zz,zz_lb_zz))
741#define snaptol1(zz_tgt_zz) (dy_tols->zero*(1.0+(zz_tgt_zz)))
743#define snaptol2(zz_tgt_zz,zz_dst_zz) \
744 (dy_tols->zero*(1.0+maxx((zz_tgt_zz),(zz_dst_zz))))
746#define snaptol3(zz_tol_zz,zz_tgt_zz,zz_dst_zz) \
747 ((zz_tol_zz)*(1.0+maxx((zz_tgt_zz),(zz_dst_zz))))
1122 struct {
int strat ; } ppsel ;
1128 int deactlvl ; } con ;
1143 float cons ; } active ;
1156 bool vars ; } finpurge ;
1300 #define DYSTATS_MAXDEGEN 25
1301 #define DYSTATS_HISTBINS 37
1311 bool *fin ; } cons ;
1314 int *deactcnt ; } vars ;
1321 int maxpivs ; } factor ;
1328 int puntret ; } pivrej ;
1337 int maxrnk ; } dmulti ;
1341 int promote ; } pmulti ;
1342 struct {
int prevpiv ;
1362 struct {
int iters ;
1364 struct {
int iters ;
1366 struct {
int iters ;
1381#define ACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] > 0)
1382#define INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] <= 0)
1383#define LOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] == 0)
1384#define MARK_UNLOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = -1)
1385#define MARK_INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = 0)
1387#define ACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] > 0)
1388#define INACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] <= 0)
1389#define LOADABLE_VAR(zz_vndx_zz) \
1390 ((dy_origvars[(zz_vndx_zz)] < 0) && \
1391 flgoff(((flags) -dy_origvars[(zz_vndx_zz)]),vstatNOLOAD|vstatNBFX))
1392#define MARK_INACTIVE_VAR(zz_vndx_zz,zz_val_zz) \
1393 (dy_origvars[(zz_vndx_zz)] = (zz_val_zz))
1568 double *p2obj ; } p1obj ;
1570 int unloadable ; } cons ;
1571 struct {
int loadable ;
1572 int unloadable ; } vars ;
1576 struct {
int iters ;
1578 struct {
int iters ;
1580 struct {
int iters ;
1586 int dinf ; } basis ;
1599 struct {
double norm1 ;
1602 int maxndx ; } dual ;
1783 bool genvars,
int *inactndxs) ;
1789 int cnt,
int *ocndxs,
int **inactvars) ;
1799 int cnt,
int *ovndxs),
1811 double *abarij,
double *delta,
int *xjcand),
1819 int xjcand,
int xicand),
1827 double abarij,
double maxabarij),
1848 int *p_xjndx,
int *p_indir,
double *p_cbarj,
1849 double *p_abarij,
double *p_delta,
int *xicand),
1895extern bool dy_chkstatus(
int vndx),
1897extern void dy_chkdual(
int lvl) ;
1905 flags **p_dst_status,
1906 int src_statuslen,
flags *src_status) ;
1914 double **p_ocbar,
int *p_nbcnt,
int **p_nbvars),
1916 double nubi,
double xi,
double nlbi,
1917 int nbcnt,
int *nbvars,
1918 double *cbar,
double *p_upeni,
double *p_dpeni) ;
1936 int *p_numRays,
double ***p_rays) ;
1938 int *p_numRays,
double ***p_rays,
bool trueDuals) ;
1949 const double *c,
bool trueDuals) ;
1953 double **p_xB,
int **p_indB) ;
1970 int xindx,
int outdir,
double abarij,
double delta) ;
lpstats_struct * dy_stats
char * dy_prtpivparms(int lvl)
bool dy_abarj(lpprob_struct *orig_lp, int tgt_j, double **p_abarj)
bool dy_actNBPrimArch(consys_struct *orig_sys, int ovndx)
void dy_checkpivtol(void)
void dy_freelclsystem(lpprob_struct *orig_lp, bool freesys)
dyret_enum dy_duenna(dyret_enum pivresult, int xjndx, int xindx, int xjcand, int xicand)
void dy_colStatus(lpprob_struct *orig_lp, flags **p_colstat)
dyret_enum dy_pivot(int xipos, double abarij, double maxabarj)
bool dy_dumpcompact(ioid chn, bool echo, lpprob_struct *soln, bool nbzeros)
void dy_setgtxecho(bool echo)
void dy_btran(double *col)
lpret_enum dy_primal(void)
dyret_enum dy_updateprimals(int j, double deltaj, double *p_abarj)
dyret_enum dy_factor(flags *calcflgs)
dyret_enum dy_coldstart(consys_struct *orig_sys)
dyret_enum dy_dualdegenout(int level)
dyret_enum dy_warmstart(lpprob_struct *orig_lp)
double dy_calcdualobj(void)
bool dy_dupbasis(int dst_basissze, basis_struct **p_dst_basis, basis_struct *src_basis, int dst_statussze, flags **p_dst_status, int src_statuslen, flags *src_status)
bool dy_deactBLogPrimCon(consys_struct *orig_sys, int i)
int dy_activateCons(consys_struct *orig_sys, bool with_vars)
void dy_logStatus(lpprob_struct *orig_lp, flags **p_logstat)
dyret_enum dy_crash(void)
bool dy_abari(lpprob_struct *orig_lp, int tgt_i, double **p_abari, double **p_betai)
dyret_enum dy_dealWithPunt(void)
void dy_setprintopts(int lvl, lpopts_struct *opts)
void dy_checkdefaults(consys_struct *sys, lpopts_struct *opts, lptols_struct *tols)
void dy_setbasicstatus(void)
bool dy_betak(lpprob_struct *orig_lp, int col_k, double **p_betaj)
dyret_enum dy_dualpivot(int xindx, int outdir, int *p_xjndx, int *p_indir, double *p_cbarj, double *p_abarij, double *p_delta, int *xicand)
lpret_enum dylp(lpprob_struct *orig_lp, lpopts_struct *orig_opts, lptols_struct *orig_tols, lpstats_struct *orig_stats)
dyret_enum dy_primalpivot(int xjndx, int indir, int *xindx, int *outdir, double *abarij, double *delta, int *xjcand)
bool dy_loadcon(consys_struct *orig_sys, int orig_ndx, bool genvars, int *inactndxs)
void dy_finishup(lpprob_struct *orig_lp, dyphase_enum phase)
void dy_freesoln(lpprob_struct *lpprob)
char * dy_prtvstat(flags status)
void dy_ftran(double *col, bool save)
bool dy_expandxopt(lpprob_struct *lp, double **p_xopt)
void dy_rowDualsGivenC(lpprob_struct *orig_lp, double **p_y, const double *c, bool trueDuals)
bool dy_deactBPrimArch(consys_struct *orig_sys, int ovndx)
bool dy_pricedualpiv(lpprob_struct *orig_lp, int oxindx, double nubi, double xi, double nlbi, int nbcnt, int *nbvars, double *cbar, double *p_upeni, double *p_dpeni)
void dy_initpivrej(int sze)
bool dy_reducerhs(double *rhs, bool init)
bool dy_actBLogPrimConList(consys_struct *orig_sys, int cnt, int *ocndxs, int **inactvars)
bool dy_deactNBLogPrimCon(consys_struct *orig_sys, int i)
const char * dy_prtlpret(lpret_enum lpret)
int dy_activateVars(consys_struct *orig_sys, int *candidates)
void dy_dumpstats(ioid chn, bool echo, lpstats_struct *lpstats, consys_struct *orig_sys)
bool dy_calcprimals(void)
bool dy_initlclsystem(lpprob_struct *orig_lp, bool hotstart)
bool dy_actNBPrimArchList(consys_struct *orig_sys, int cnt, int *ovndxs)
bool dy_betaj(lpprob_struct *orig_lp, int tgt_j, double **p_betaj)
bool dy_swapobjs(dyphase_enum phase)
bool dy_actBLogPrimCon(consys_struct *orig_sys, int i, int *inactvars)
bool dy_clrpivrej(int *entries)
dyret_enum dy_addtopivrej(int xkndx, dyret_enum why, double abarij, double maxabarij)
void dy_rowDuals(lpprob_struct *orig_lp, double **p_y, bool trueDuals)
dyret_enum dy_primalin(int initcol, int scan, int *xjndx, int *nextcol)
void dy_setlogchn(ioid chn)
void dy_scaling_vectors(const double **rscale, const double **cscale)
void dy_logpivot(dyret_enum result, int xjndx, int indir, double cbarj, int xindx, int outdir, double abarij, double delta)
void dy_freestats(lpstats_struct **p_lpstats)
bool dy_setpivparms(int curdelta, int mindelta)
void dy_defaults(lpopts_struct **opts, lptols_struct **tols)
int dy_deactivateCons(consys_struct *orig_sys)
consys_struct * dy_scaled_origsys()
int dy_deactivateVars(consys_struct *orig_sys)
bool dy_primalRays(lpprob_struct *orig_lp, int *p_numRays, double ***p_rays)
int dy_dualaddvars(consys_struct *orig_sys)
void dy_rowPrimals(lpprob_struct *orig_lp, double **p_xB, int **p_indB)
bool dy_deactNBPrimArch(consys_struct *orig_sys, int ovndx)
lpret_enum dyret2lpret(dyret_enum dyret)
void dy_colPrimals(lpprob_struct *orig_lp, double **p_x)
dyret_enum dy_hotstart(lpprob_struct *orig_lp)
void dy_colDuals(lpprob_struct *orig_lp, double **p_cbar, bool trueDuals)
dyret_enum dy_degenout(int level)
dyret_enum dy_accchk(flags *checks)
bool dy_pricenbvars(lpprob_struct *orig_lp, flags priceme, double **p_ocbar, int *p_nbcnt, int **p_nbvars)
dyret_enum dy_dualout(int *xindx)
double dy_calcpinfeas(void)
bool dy_betai(lpprob_struct *orig_lp, int tgt_i, double **p_betai)
const char * dy_prtdyret(dyret_enum retcode)
bool dy_dualRays(lpprob_struct *orig_lp, bool fullRay, int *p_numRays, double ***p_rays, bool trueDuals)
double dy_chkpiv(double abarij, double maxabarj)
int dy_activateBndCons(consys_struct *orig_sys)
void dy_logPrimals(lpprob_struct *orig_lp, double **p_logx)
const char * dy_prtlpphase(dyphase_enum phase, bool abbrv)
void dy_finalstats(lpstats_struct *lpstats)
void dy_initstats(lpstats_struct **p_lpstats, consys_struct *orig_sys)