1 #ifndef DOXYGEN_SHOULD_SKIP_THIS 48 #define MAX_DIGITS 255L
56 #define DEFAULT_DIGITS 100L
61 typedef __int64 int64_t;
62 typedef unsigned __int64 uint64_t;
76 #define FORMAT "%4.4u" 77 #define MAXD 2147483647L
84 #define MAXD 9223372036854775807L
85 #define BASE 1000000000L
86 #define FORMAT "%9.9u" 111 #define addint(a, b, c) *(c) = *(a) + *(b) 112 #define changesign(a) (*(a) = -*(a)) 113 #define copy(a, b) ((a)[0
] = (b)[0
]) 114 #define decint(a, b) *(a) = *(a) - *(b) 115 #define divint(a, b, c) 118 #define exactdivint(a, b, c) *(c) = *(a) / *(b); 119 #define mp_greater(a, b) (*(a) > *(b)) 120 #define itomp(in, a) *(a) = in 121 #define linint(a, ka, b, kb) *(a) = *(a)*ka + *(b)*kb 122 #define mulint(a, b, c) *(c) = *(a) * *(b) 123 #define one(a) (*(a) == 1
) 124 #define negative(a) (*(a) < 0
) 125 #define normalize(a) ()0
126 #define positive(a) (*(a) > 0
) 127 #define sign(a) (*(a) < 0
? NEG
: POS
) 128 #define storesign(a, sa) (*(a) = labs(*(a)) * sa) 129 #define subint(a, b, c) *(c) = *(a) - *(b) 130 #define iszero(a) (*(a) == 0
) 144 #define errcheck(s, e) 145 if ((int64_t)(e) == -1L
) { 151 #define CALLOC(n, s) xcalloc(n, s, __LINE__, __FILE__) 157 typedef int64_t lrs_mp[1];
158 typedef int64_t* lrs_mp_t;
159 typedef int64_t** lrs_mp_vector;
160 typedef int64_t*** lrs_mp_matrix;
166 extern int64_t lrs_digits;
167 extern int64_t lrs_record_digits;
169 extern FILE* lrs_ifp;
170 extern FILE* lrs_ofp;
176 int64_t lrs_mp_init(int64_t dec_digits,
180 #define lrs_alloc_mp(a) 181 #define lrs_clear_mp(a) 183 lrs_mp_t lrs_alloc_mp_t();
185 lrs_alloc_mp_vector(int64_t n);
187 lrs_alloc_mp_matrix(int64_t m,
190 void lrs_clear_mp_vector(lrs_mp_vector a, int64_t n);
191 void lrs_clear_mp_matrix(lrs_mp_matrix a, int64_t m, int64_t n);
197 void atomp(
const char s[], lrs_mp a);
198 int64_t compare(lrs_mp a, lrs_mp b);
199 void gcd(lrs_mp u, lrs_mp v);
200 void mptodouble(lrs_mp a,
double* x);
201 int64_t mptoi(lrs_mp a);
203 string pmp(
char name[], lrs_mp a);
204 string prat(
char name[], lrs_mp Nt, lrs_mp Dt);
205 char* cprat(
char name[], lrs_mp Nt, lrs_mp Dt);
207 plrs_readrat(lrs_mp Na,
211 void pmp(
char name[], lrs_mp a);
212 void prat(
char name[], lrs_mp Nt, lrs_mp Dt);
214 void readmp(lrs_mp a);
215 int64_t readrat(lrs_mp Na,
217 void reduce(lrs_mp Na, lrs_mp Da);
224 void atoaa(
const char in[],
227 int64_t atos(
char s[]);
228 int64_t comprod(lrs_mp Na,
232 void divrat(lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc);
234 void getfactorial(lrs_mp factorial, int64_t k);
235 void linrat(lrs_mp Na,
243 void lcm(lrs_mp a, lrs_mp b);
244 void mulrat(lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc);
246 int64_t myrandom(int64_t num,
248 void notimpl(
char s[]);
249 void rattodouble(lrs_mp a,
252 void reduceint(lrs_mp Na, lrs_mp Da);
253 void reducearray(lrs_mp_vector p,
255 void scalerat(lrs_mp Na, lrs_mp Da, int64_t ka);
261 void lrs_getdigits(int64_t* a, int64_t* b);
263 void stringcpy(
char* s,
char* t);
267 void* xcalloc(int64_t n, int64_t s, int64_t l,
char* f);
269 void lrs_default_digits_overflow();