1#ifndef DOXYGEN_SHOULD_SKIP_THIS
46#define MAX_DIGITS 255L
54#define DEFAULT_DIGITS 100L
59typedef __int64 int64_t;
60typedef unsigned __int64 uint64_t;
74#define FORMAT "%4.4lu"
75#define MAXD 2147483647L
82#define MAXD 9223372036854775807L
83#define BASE 1000000000L
84#define FORMAT "%9.9lu"
109#define exactdivint(a, b, c) \
110 divint((a), (b), (c))
111#define positive(a) (((a)[0] < 2 || ((a)[0] == 2 && (a)[1] == 0)) ? FALSE : TRUE)
112#define negative(a) (((a)[0] > -2 || ((a)[0] == -2 && (a)[1] == 0)) ? FALSE : TRUE)
113#define iszero(a) ((((a)[0] == 2 || (a)[0] == -2) && (a)[1] == 0) ? TRUE : FALSE)
114#define one(a) (((a)[0] == 2 && (a)[1] == 1) ? TRUE : FALSE)
116#define sign(a) (((a)[0] < 0) ? NEG : POS)
117#define storesign(a, sa) a[0] = ((a)[0] > 0) ? (sa) * ((a)[0]) : -(sa) * ((a)[0])
118#define changesign(a) a[0] = -(a)[0]
119#define storelength(a, la) a[0] = ((a)[0] > 0) ? (la) : -(la)
126#define DEC2DIG(d) ((d) % BASE_DIG ? (d) / BASE_DIG + 1 : (d) / BASE_DIG)
127#define DIG2DEC(d) ((d)*BASE_DIG)
134#define errcheck(s, e) \
135 if ((int64_t)(e) == -1L) { \
141#define CALLOC(n, s) xcalloc(n, s, __LINE__, __FILE__)
144extern int64_t lrs_digits;
145extern int64_t lrs_record_digits;
156 lrs_mp[MAX_DIGITS + 1];
157typedef int64_t* lrs_mp_t;
158typedef int64_t** lrs_mp_vector;
159typedef int64_t*** lrs_mp_matrix;
166#define lrs_alloc_mp(a)
167#define lrs_clear_mp(a)
168lrs_mp_t lrs_alloc_mp_t();
170lrs_alloc_mp_vector(int64_t n);
172lrs_alloc_mp_matrix(int64_t m,
174int64_t lrs_mp_init(int64_t dec_digits,
177void lrs_clear_mp_vector(lrs_mp_vector a, int64_t n);
178void lrs_clear_mp_matrix(lrs_mp_matrix a, int64_t m, int64_t n);
184int64_t length(lrs_mp a);
185void atomp(
char s[], lrs_mp a);
186int64_t compare(lrs_mp a, lrs_mp b);
187void copy(lrs_mp a, lrs_mp b);
191void gcd(lrs_mp u, lrs_mp v);
192int64_t mp_greater(lrs_mp a, lrs_mp b);
193void itomp(int64_t in, lrs_mp a);
198void mptodouble(lrs_mp a,
double* x);
199int64_t mptoi(lrs_mp a);
200void mulint(lrs_mp a, lrs_mp b, lrs_mp c);
201void normalize(lrs_mp a);
203string pmp(
char name[], lrs_mp a);
204string prat(
char name[], lrs_mp Nt, lrs_mp Dt);
205char* cprat(
char name[], lrs_mp Nt, lrs_mp Dt);
207plrs_readrat(lrs_mp Na,
211void pmp(
char name[], lrs_mp a);
212void prat(
char name[], lrs_mp Nt, lrs_mp Dt);
214int64_t readrat(lrs_mp Na,
216void reduce(lrs_mp Na, lrs_mp Da);
226void addint(lrs_mp a, lrs_mp b, lrs_mp c);
227int64_t atos(
char s[]);
228int64_t comprod(lrs_mp Na,
232void decint(lrs_mp a, lrs_mp b);
233void divrat(lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc);
235void getfactorial(lrs_mp factorial, int64_t k);
237void linrat(lrs_mp Na,
245void lcm(lrs_mp a, lrs_mp b);
246void mulrat(lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc);
248int64_t myrandom(int64_t num,
250void notimpl(
char s[]);
251void rattodouble(lrs_mp a,
254void reduceint(lrs_mp Na, lrs_mp Da);
255void reducearray(lrs_mp_vector p,
257void scalerat(lrs_mp Na, lrs_mp Da, int64_t ka);
258void subint(lrs_mp a, lrs_mp b, lrs_mp c);
266void lrs_getdigits(int64_t* a, int64_t* b);
268void stringcpy(
char* s,
char* t);
270void* xcalloc(int64_t n, int64_t s, int64_t l,
char* f);
272void lrs_default_digits_overflow();
273void digits_overflow();