1#ifndef DOXYGEN_SHOULD_SKIP_THIS
5#define VERSION "v.6.2 2016.3.28"
6#define AUTHOR "*Copyright (c) 1995,2016, David Avis avis@cs.mcgill.ca "
44#define ARITH "lrslong.h"
47#define ARITH "lrsgmp.h"
49#define ARITH "lrsmp.h"
58typedef __int64 int64_t;
59typedef unsigned __int64 uint64_t;
66#define errcheck(s, e) \
67 if ((int64_t)(e) == -1L) { \
73#define CALLOC(n, s) xcalloc(n, s, __LINE__, __FILE__)
78#define MAX_LRS_GLOBALS 10000L
117typedef struct lrs_dic_struct
132 struct lrs_dic_struct *prev, *next;
135typedef struct lrs_dat
156 int64_t *isave, *jsave;
166 int64_t startcount[5];
200 int64_t printcobasis;
214 int64_t saved_count[3];
223 lrs_dic *Qhead, *Qtail;
233void post_output(
const char*,
const char*);
234void plrs_read_dat(lrs_dat* Q, std::ifstream& ff);
235void plrs_read_dic(lrs_dic* P, lrs_dat* Q, std::ifstream& ff);
236void plrs_readfacets(lrs_dat* Q, int64_t facet[],
string facets);
237void plrs_readlinearity(lrs_dat* Q,
string line);
252lrs_alloc_dat(
const char* name);
253lrs_dic* lrs_alloc_dic(lrs_dat* Q);
254int64_t lrs_estimate(lrs_dic* P,
257int64_t lrs_read_dat(lrs_dat* Q,
260int64_t lrs_read_dic(lrs_dic* P,
262int64_t lrs_checkbound(
265int64_t lrs_getfirstbasis(
273void lrs_getinput(lrs_dic* P,
279int64_t lrs_getnextbasis(lrs_dic** dict_p,
284int64_t lrs_getsolution(lrs_dic* P, lrs_dat* Q, lrs_mp_vector output, int64_t col);
286 lrs_dic* P, lrs_dat* Q, int64_t col, int64_t comment, lrs_mp_vector output);
287int64_t lrs_getvertex(lrs_dic* P, lrs_dat* Q, lrs_mp_vector output);
288void lrs_close(
char* name);
291void lrs_lpoutput(lrs_dic* P,
293 lrs_mp_vector output);
294void lrs_printcobasis(
298void lrs_printoutput(lrs_dat* Q, lrs_mp_vector output);
299void lrs_printrow(
char name[],
301 lrs_mp_vector output,
303void lrs_printsol(lrs_dic* P,
309void lrs_printtotals(lrs_dic* P, lrs_dat* Q);
310int64_t lrs_set_digits(
313lrs_solvelp(lrs_dic* P,
326int64_t getabasis(lrs_dic* P,
329void getnextoutput(lrs_dic* P,
334int64_t ismin(lrs_dic* P,
338int64_t lexmin(lrs_dic* P,
341void pivot(lrs_dic* P,
345int64_t primalfeasible(lrs_dic* P,
347int64_t lrs_ratio(lrs_dic* P, lrs_dat* Q, int64_t col);
348int64_t removecobasicindex(lrs_dic* P,
351int64_t restartpivots(lrs_dic* P,
353int64_t reverse(lrs_dic* P,
358selectpivot(lrs_dic* P,
363dan_selectpivot(lrs_dic* P,
367void update(lrs_dic* P,
371void updatevolume(lrs_dic* P,
379lrs_degenerate(lrs_dic* P,
381void print_basis(FILE* fp, lrs_dat* Q);
382void printA(lrs_dic* P,
384void pimat(lrs_dic* P,
389int64_t readfacets(lrs_dat* Q, int64_t facet[]);
390int64_t readlinearity(lrs_dat* Q);
391void rescaledet(lrs_dic* P,
395void rescalevolume(lrs_dic* P,
399int64_t lrs_leaf(lrs_dic* P, lrs_dat* Q);
406int64_t checkredund(lrs_dic* P, lrs_dat* Q);
409int64_t checkcobasic(lrs_dic* P,
425void lrs_free_dic(lrs_dic* P, lrs_dat* Q);
426void lrs_free_dic2(lrs_dic* P, lrs_dat* Q);
427void lrs_free_dat(lrs_dat* Q);
428void copy_dict(lrs_dat* global, lrs_dic* dest, lrs_dic* src);
429lrs_dic* alloc_memory(lrs_dat* Q);
430lrs_dic* lrs_getdic(lrs_dat* Q);
431lrs_dic* resize(lrs_dic* P, lrs_dat* Q);
436void lprat(
const char* name,
440lreadrat(int64_t* Num,
442void reorder(int64_t a[],
445void reorder1(int64_t a[],
455int64_t lrs_solve_lp(lrs_dic* P,
471void lrs_set_obj(lrs_dic* P,