1
/* dplex.h: Header file for dplex.c
2
written by Komei Fukuda, fukuda@ifor.math.ethz.ch
3
Version 0.61, December 1, 1997
6
/* dplex.c : C-Implementation of the dual simplex method for
7
solving an LP: max/min c^T x subject to x in P, where
9
Please read COPYING (GNU General Public Licence) and
10
the manual cddman.tex for detail.
17
typedef long rowrange;
18
typedef long colrange;
19
typedef set_type rowset; /* set_type defined in setoper.h */
20
typedef set_type colset;
21
typedef long *rowindex;
22
/* rowindex should be intialized to be an array of [mm+1] components */
23
typedef long colindex[dp_NMAX+1];
24
typedef double *Amatrix[dp_MMAX];
25
typedef double Arow[dp_NMAX];
26
typedef double *Bmatrix[dp_NMAX];
28
typedef char dp_FilenameType[dp_filenamelen];
31
dp_DimensionTooLarge, dp_LowColumnRank, dp_ImproperInputFormat,
32
dp_FileNotFound, dp_None
36
dp_Real, dp_Rational, dp_Integer, dp_Unknown
41
} dp_LPConversionType;
44
dp_CrissCross, dp_DualSimplex
48
dp_LPSundecided, dp_Optimal, dp_Inconsistent, dp_DualInconsistent,
49
dp_StrucInconsistent, dp_StrucDualInconsistent,
50
dp_Unbounded, dp_DualUnbounded
53
void dp_LPInput(FILE **f, dp_FilenameType, rowrange *m, colrange *n, Amatrix A,
54
dp_LPConversionType *Conversion, rowrange *objrow, colrange *rhscol,
57
void dp_InitializeBmatrix(colrange n_size, Bmatrix T);
59
void dp_LPSolve(dp_LPConversionType, dp_LPSolverType,
60
rowrange, colrange, Amatrix, Bmatrix BasisInverse,
61
rowrange OBJrow, colrange RHScol, int UsePrevBasis, dp_LPStatusType *LPS,
62
double *optvalue, Arow sol, Arow dsol, colindex NBIndex,
63
rowrange *re, colrange *se, long *iter, dp_ErrorType *);
65
void dp_FindInteriorPoint(dp_LPSolverType,
66
rowrange, colrange, Amatrix, rowrange, colrange, dp_LPStatusType *,
67
double *, Arow, long *, dp_ErrorType *); /* new function of the version 061. */
69
void dp_WriteLPResult(FILE *, dp_LPConversionType, dp_LPSolverType,
70
rowrange m_size, colrange n_size, Amatrix A, rowrange objrow, colrange rhscol,
71
dp_LPStatusType, double, Arow, Arow, colindex, rowrange, colrange, long, dp_ErrorType);
73
void dp_WriteErrorMessages(FILE *, dp_ErrorType);
75
int dp_Nonnegative(double);
76
int dp_Nonpositive(double);
77
int dp_Positive(double);
78
int dp_Negative(double);
80
int dp_Nonzero(double);