This file is indexed.

/usr/include/cdd/cddtypes_f.h is in libcdd-dev 094b.dfsg-4.2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
/* automatically generated by sed scripts from the c source named below: */
/* cddtypes.h: Header file for cddlib.c 
   written by Komei Fukuda, fukuda@ifor.math.ethz.ch
   Version 0.94b, Aug. 24, 2005
*/

/* cddlib.c : C-Implementation of the double description method for
   computing all vertices and extreme rays of the polyhedron 
   P= {x :  b - A x >= 0}.  
   Please read COPYING (GNU General Public Licence) and
   the manual cddlibman.tex for detail.
*/

#ifndef  _CDDTYPES_HF
#define  _CDDTYPES_HF
#endif  /* _CDDTYPES_HF */

#define ddf_COPYRIGHT   "Copyright (C) 1996, Komei Fukuda, fukuda@ifor.math.ethz.ch"
#define ddf_DDVERSION   "Version 0.94b (August 25, 2005)"
#include <time.h>

#define ddf_wordlenmax     127
#define ddf_linelenmax     255
#define ddf_datawidth       10
#define ddf_filenamelen    255

#define ddf_FALSE 0
#define ddf_TRUE 1

typedef int ddf_boolean;

typedef long ddf_rowrange;
typedef long ddf_colrange;
typedef long ddf_bigrange;

typedef set_type ddf_rowset;
typedef set_type ddf_colset;
typedef long *ddf_rowindex;   
typedef int *ddf_rowflag;   
typedef long *ddf_colindex;
typedef myfloat **ddf_Amatrix;
typedef myfloat *ddf_Arow;
typedef set_type *ddf_SetVector;
typedef myfloat **ddf_Bmatrix;
typedef set_type *ddf_Aincidence;

/* typedef char ddf_FilenameType[ddf_filenamelen]; deleted 000505*/
typedef char ddf_DataFileType[ddf_filenamelen];
typedef char ddf_LineType[ddf_linelenmax];
typedef char ddf_WordType[ddf_wordlenmax];

typedef struct ddf_raydata *ddf_RayPtr;

typedef struct ddf_raydata {
  myfloat *Ray;
  ddf_rowset ZeroSet;
  ddf_rowrange FirstInfeasIndex;  /* the first inequality the ray violates */
  ddf_boolean feasible;  /* flag to store the feasibility */
  myfloat ARay;   /* temporary area to store some row of A*Ray */
  ddf_RayPtr Next;
} ddf_RayType;

typedef struct ddf_adjacencydata *ddf_AdjacencyPtr;
typedef struct ddf_adjacencydata {
  ddf_RayPtr Ray1, Ray2;
  ddf_AdjacencyPtr Next;
} ddf_AdjacencyType;

typedef enum {
  ddf_Combinatorial, ddf_Algebraic
} ddf_AdjacencyTestType;

typedef enum {
  ddf_MaxIndex, ddf_MinIndex, ddf_MinCutoff, ddf_MaxCutoff, ddf_MixCutoff,
   ddf_LexMin, ddf_LexMax, ddf_RandomRow
} ddf_RowOrderType;

typedef enum {
  ddf_Unknown=0, ddf_Real, ddf_Rational, ddf_Integer
} ddf_NumberType;

typedef enum {
  ddf_Unspecified=0, ddf_Inequality, ddf_Generator
} ddf_RepresentationType;

typedef enum {
  ddf_IneToGen, ddf_GenToIne, ddf_LPMax, ddf_LPMin, ddf_InteriorFind
} ddf_ConversionType;

typedef enum {
  ddf_IncOff=0, ddf_IncCardinality, ddf_IncSet
} ddf_IncidenceOutputType;

typedef enum {
  ddf_AdjOff=0, ddf_AdjacencyList,  ddf_AdjacencyDegree
} ddf_AdjacencyOutputType;

typedef enum {
  ddf_Auto, ddf_SemiAuto, ddf_Manual
} ddf_FileInputModeType;   
   /* Auto if a input filename is specified by command arguments */

typedef enum {
  ddf_DimensionTooLarge, ddf_ImproperInputFormat, 
  ddf_NegativeMatrixSize, ddf_EmptyVrepresentation, ddf_EmptyHrepresentation, ddf_EmptyRepresentation,
  ddf_IFileNotFound, ddf_OFileNotOpen, ddf_NoLPObjective, ddf_NoRealNumberSupport,
  ddf_NotAvailForH, ddf_NotAvailForV, ddf_CannotHandleLinearity,
  ddf_RowIndexOutOfRange, ddf_ColIndexOutOfRange,
  ddf_LPCycling, ddf_NumericallyInconsistent,
  ddf_NoError
} ddf_ErrorType;

typedef enum {
  ddf_InProgress, ddf_AllFound, ddf_RegionEmpty
} ddf_CompStatusType;

/* --- LP types ---- */

typedef enum {
  ddf_LPnone=0, ddf_LPmax, ddf_LPmin
} ddf_LPObjectiveType;

typedef enum {
  ddf_CrissCross, ddf_DualSimplex
} ddf_LPSolverType;

typedef enum {
  ddf_LPSundecided, ddf_Optimal, ddf_Inconsistent, ddf_DualInconsistent,
  ddf_StrucInconsistent, ddf_StrucDualInconsistent,
  ddf_Unbounded, ddf_DualUnbounded
} ddf_LPStatusType;

typedef struct ddf_lpsolution *ddf_LPSolutionPtr;
typedef struct ddf_lpsolution {
  ddf_DataFileType filename;
  ddf_LPObjectiveType objective;
  ddf_LPSolverType solver; 
  ddf_rowrange m;
  ddf_colrange d;
  ddf_NumberType numbtype;

  ddf_LPStatusType LPS;  /* the current solution status */
  myfloat optvalue;  /* optimal value */
  ddf_Arow sol;   /* primal solution */
  ddf_Arow dsol;  /* dual solution */
  ddf_colindex nbindex;  /* current basis represented by nonbasic indices */
  ddf_rowrange re;  /* row index as a certificate in the case of inconsistency */
  ddf_colrange se;  /* col index as a certificate in the case of dual inconsistency */
  long pivots[5]; 
   /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross,
      pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */
  long total_pivots;
} ddf_LPSolutionType;


typedef struct ddf_lpdata *ddf_LPPtr;
typedef struct ddf_lpdata {
  ddf_DataFileType filename;
  ddf_LPObjectiveType objective;
  ddf_LPSolverType solver; 
  ddf_boolean Homogeneous;  
     /* The first column except for the obj row is all zeros. */
  ddf_rowrange m;
  ddf_colrange d;
  ddf_Amatrix A;
  ddf_Bmatrix B;
  ddf_rowrange objrow;
  ddf_colrange rhscol;
  ddf_NumberType numbtype;
  ddf_rowrange eqnumber;  /* the number of equalities */
  ddf_rowset equalityset;  

  ddf_boolean redcheck_extensive;  /* Apply the extensive redundancy check. */
  ddf_rowrange ired; /* the row index for the redundancy checking */
  ddf_rowset redset_extra;  /* a set of rows that are newly recognized redundan by the extensive search. */
  ddf_rowset redset_accum;  /* the accumulated set of rows that are recognized redundant */
  ddf_rowset posset_extra;  /* a set of rows that are recognized non-linearity */

  ddf_boolean lexicopivot;  /* flag to use the lexicogrphic pivot rule (symbolic perturbation). */

  ddf_LPStatusType LPS;  /* the current solution status */
  ddf_rowrange m_alloc; /* the allocated row size of matrix A */
  ddf_colrange d_alloc; /* the allocated col size of matrix A */
  myfloat optvalue;  /* optimal value */
  ddf_Arow sol;   /* primal solution */
  ddf_Arow dsol;  /* dual solution */
  ddf_colindex nbindex;  /* current basis represented by nonbasic indices */
  ddf_rowrange re;  /* row index as a certificate in the case of inconsistency */
  ddf_colrange se;  /* col index as a certificate in the case of dual inconsistency */
  long pivots[5]; 
   /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross,
      pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */
  long total_pivots;
  int use_given_basis;  /* switch to indicate the use of the given basis */
  ddf_colindex given_nbindex;  /* given basis represented by nonbasic indices */
  time_t starttime;
  time_t endtime;
} ddf_LPType;


/*----  end of LP Types ----- */


typedef struct  ddf_matrixdata *ddf_MatrixPtr;
typedef struct  ddf_matrixdata {
  ddf_rowrange rowsize;
  ddf_rowset linset; 
    /*  a subset of rows of linearity (ie, generators of
        linearity space for V-representation, and equations
        for H-representation. */
  ddf_colrange colsize;
  ddf_RepresentationType representation;
  ddf_NumberType numbtype;
  ddf_Amatrix matrix;
  ddf_LPObjectiveType objective;
  ddf_Arow rowvec;
} ddf_MatrixType;

typedef struct ddf_setfamily *ddf_SetFamilyPtr;
typedef struct ddf_setfamily {
  ddf_bigrange famsize;
  ddf_bigrange setsize;
  ddf_SetVector set;  
} ddf_SetFamilyType;


typedef struct ddf_nodedata *ddf_NodePtr;
typedef struct ddf_nodedata {ddf_bigrange key; ddf_NodePtr next;} ddf_NodeType;

typedef struct ddf_graphdata *ddf_GraphPtr;
typedef struct ddf_graphdata {
  ddf_bigrange vsize;
  ddf_NodePtr *adjlist;  /* should be initialized to have vsize components */
} ddf_GraphType;


typedef struct ddf_polyhedradata *ddf_PolyhedraPtr;
typedef struct ddf_conedata *ddf_ConePtr;

typedef struct ddf_polyhedradata {
  ddf_RepresentationType representation;  /* given representation */
  ddf_boolean homogeneous;
  ddf_colrange d;
  ddf_rowrange m;
  ddf_Amatrix A;   /* Inequality System:  m times d matrix */
  ddf_NumberType numbtype;
  ddf_ConePtr child;  /* pointing to the homogenized cone data */
  ddf_rowrange m_alloc; /* allocated row size of matrix A */
  ddf_colrange d_alloc; /* allocated col size of matrix A */
  ddf_Arow c;           /* cost vector */

  ddf_rowflag EqualityIndex;  
    /* ith component is 1 if it is equality, -1 if it is strict inequality, 0 otherwise. */

  ddf_boolean IsEmpty;  /* This is to tell whether the set is empty or not */
  
  ddf_boolean NondegAssumed;
  ddf_boolean InitBasisAtBottom;
  ddf_boolean RestrictedEnumeration;
  ddf_boolean RelaxedEnumeration;

  ddf_rowrange m1; 
    /* = m or m+1 (when representation=Inequality && !homogeneous)
       This data is written after ddf_ConeDataLoad is called.  This
       determines the size of Ainc. */
  ddf_boolean AincGenerated;
    /* Indicates whether Ainc, Ared, Adom are all computed.
       All the variables below are valid only when this is TRUE */
  ddf_colrange ldim;   /* linearity dimension */
  ddf_bigrange n; 
    /* the size of output = total number of rays 
       in the computed cone + linearity dimension */
  ddf_Aincidence Ainc;
    /* incidence of input and output */
  ddf_rowset Ared;  
    /* redundant set of rows whose removal results in a minimal system */
  ddf_rowset Adom;  
    /* dominant set of rows (those containing all rays). */

} ddf_PolyhedraType;


typedef struct ddf_conedata {
  ddf_RepresentationType representation;
  ddf_rowrange m;
  ddf_colrange d;
  ddf_Amatrix A;
  ddf_NumberType numbtype;
  ddf_PolyhedraPtr parent;  /* pointing to the original polyhedra data */
  ddf_rowrange m_alloc; /* allocated row size of matrix A */
  ddf_colrange d_alloc; /* allocated col size of matrix A */

/* CONTROL: variables to control computation */
  ddf_rowrange Iteration;
  ddf_RowOrderType HalfspaceOrder;
  ddf_RayPtr FirstRay, LastRay, ArtificialRay; /* The second description: Generator */
  ddf_RayPtr PosHead, ZeroHead, NegHead, PosLast, ZeroLast, NegLast;
  ddf_AdjacencyType **Edges;  /* adjacency relation storage for iteration k */
  unsigned int rseed;  /* random seed for random row permutation */

  ddf_boolean ColReduced;  /* flag to indicate that a column basis is computed and reduced */
  ddf_bigrange LinearityDim;   
           /*  the dimension of the linearity space (when input is H), and
               the size of a minimal system of equations to determine the space (when V). */
  ddf_colrange d_orig;  /* the size d of the original matrix A */
  ddf_colindex newcol;  /* the size d of the original matrix A */
  
  ddf_colindex InitialRayIndex;   /* InitialRayIndex[s] (s>=1) stores the corr. row index */
  ddf_rowindex OrderVector;
  ddf_boolean RecomputeRowOrder;
  ddf_boolean PreOrderedRun;
  ddf_rowset GroundSet, EqualitySet, NonequalitySet, 
       AddedHalfspaces, WeaklyAddedHalfspaces, InitialHalfspaces;
  long RayCount, FeasibleRayCount, WeaklyFeasibleRayCount,
       TotalRayCount, ZeroRayCount;
  long EdgeCount, TotalEdgeCount;
  long count_int,count_int_good,count_int_bad; /* no. of intersection operations */

  ddf_Bmatrix B;
  ddf_Bmatrix Bsave;  /* a copy of the dual basis inverse used to reduce the matrix A */

/* STATES: variables to represent current state. */
  ddf_ErrorType Error;
  ddf_CompStatusType CompStatus;  /* Computation Status */
  time_t starttime, endtime;
} ddf_ConeType;

/* Global Variables */
extern ddf_boolean ddf_debug;
extern ddf_boolean ddf_log;

/* end of cddtypes.h */