#include <stdio.h>
#include <limits.h>
#include "arithmetic_errors.h"
Go to the source code of this file.
Classes | |
struct | col |
struct | frac |
Defines | |
#define | __LONG_LONG_MAX__ 9223372036854775807LL |
#define | LONG_LONG_MAX __LONG_LONG_MAX__ |
#define | LONG_LONG_MIN (-LONG_LONG_MAX-1) |
#define | ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1) |
#define | LINEAR_VALUE_STRING "gmp" |
#define | VALUE_FMT "%s" |
#define | VALUE_TO_LONG(val) (mpz_get_si(val)) |
#define | VALUE_TO_INT(val) ((int)mpz_get_si(val)) |
#define | VALUE_TO_FLOAT(val) ((float)((int)mpz_get_si(val))) |
#define | VALUE_TO_DOUBLE(val) (mpz_get_d(val)) |
#define | value_init(val) ((val) = 0) |
#define | value_assign(v1, v2) ((v1) = (v2)) |
#define | value_set_si(val, i) ((val) = (Value)(i)) |
#define | value_set_double(val, d) ((val) = (Value)(d)) |
#define | value_clear(val) ((val) = 0) |
#define | value_read(val, str) (sscanf((str),VALUE_FMT,&(val))) |
#define | value_print(Dst, fmt, val) (fprintf((Dst),(fmt),(val))) |
#define | value_swap(v1, v2) |
#define | int_to_value(i) ((Value)(i)) |
#define | long_to_value(l) ((Value)(l)) |
#define | float_to_value(f) ((Value)(f)) |
#define | double_to_value(d) ((Value)(d)) |
#define | value_eq(v1, v2) ((v1)==(v2)) |
#define | value_ne(v1, v2) ((v1)!=(v2)) |
#define | value_gt(v1, v2) ((v1)>(v2)) |
#define | value_ge(v1, v2) ((v1)>=(v2)) |
#define | value_lt(v1, v2) ((v1)<(v2)) |
#define | value_le(v1, v2) ((v1)<=(v2)) |
#define | value_sign(v) (value_eq(v,VALUE_ZERO)?0:value_lt(v,VALUE_ZERO)?-1:1) |
#define | value_compare(v1, v2) (value_eq(v1,v2)?0:value_lt(v1,v2)?-1:1) |
#define | value_plus(v1, v2) ((v1)+(v2)) |
#define | value_div(v1, v2) ((v1)/(v2)) |
#define | value_mod(v1, v2) ((v1)%(v2)) |
#define | value_direct_multiply(v1, v2) ((v1)*(v2)) |
#define | value_minus(v1, v2) ((v1)-(v2)) |
#define | value_pdiv(v1, v2) (divide((v1),(v2))) |
#define | value_pmod(v1, v2) (modulo((v1),(v2))) |
#define | value_min(v1, v2) (value_le((v1),(v2))? (v1): (v2)) |
#define | value_max(v1, v2) (value_ge((v1),(v2))? (v1): (v2)) |
#define | value_or(v1, v2) ((v1)|(v2)) |
#define | value_and(v1, v2) ((v1)&(v2)) |
#define | value_lshift(v1, v2) ((v1)<<(v2)) |
#define | value_rshift(v1, v2) ((v1)>>(v2)) |
#define | value_addto(ref, val1, val2) ((ref) = (val1)+(val2)) |
#define | value_add_int(ref, val, vint) ((ref) = (val)+(Value)(vint)) |
#define | value_increment(ref, val) ((ref) = (val)+VALUE_ONE) |
#define | value_direct_product(ref, val1, val2) ((ref) = (val1)*(val2)) |
#define | value_multiply(ref, val1, val2) ((ref) = value_mult((val1),(val2))) |
#define | value_substract(ref, val1, val2) ((ref) = (val1)-(val2)) |
#define | value_sub_int(ref, val, vint) ((ref) = (val)-(Value)(vint)) |
#define | value_decrement(ref, val) ((ref) = (val)-VALUE_ONE) |
#define | value_division(ref, val1, val2) ((ref) = (val1)/(val2)) |
#define | value_modulus(ref, val1, val2) ((ref) = (val1)%(val2)) |
#define | value_pdivision(ref, val1, val2) ((ref) = value_pdiv((val1),(val2))) |
#define | value_pmodulus(ref, val1, val2) ((ref) = value_pmod((val1),(val2))) |
#define | value_oppose(ref, val) ((ref) = value_uminus((val))) |
#define | value_absolute(ref, val) ((ref) = value_abs((val))) |
#define | value_minimum(ref, val1, val2) ((ref) = value_min((val1),(val2))) |
#define | value_maximum(ref, val1, val2) ((ref) = value_max((val1),(val2))) |
#define | value_orto(ref, val1, val2) ((ref) = (val1)|(val2)) |
#define | value_andto(ref, val1, val2) ((ref) = (val1)&(val2)) |
#define | value_uminus(val) (-(val)) |
#define | value_not(val) (~(val)) |
#define | value_abs(val) |
#define | value_pos_p(val) value_gt(val,VALUE_ZERO) |
#define | value_neg_p(val) value_lt(val,VALUE_ZERO) |
#define | value_posz_p(val) value_ge(val,VALUE_ZERO) |
#define | value_negz_p(val) value_le(val,VALUE_ZERO) |
#define | value_zero_p(val) value_eq(val,VALUE_ZERO) |
#define | value_notzero_p(val) value_ne(val,VALUE_ZERO) |
#define | value_one_p(val) value_eq(val,VALUE_ONE) |
#define | value_notone_p(val) value_ne(val,VALUE_ONE) |
#define | value_mone_p(val) value_eq(val,VALUE_MONE) |
#define | value_notmone_p(val) value_ne(val,VALUE_MONE) |
#define | value_min_p(val) value_eq(val,VALUE_MIN) |
#define | value_max_p(val) value_eq(val,VALUE_MAX) |
#define | value_notmin_p(val) value_ne(val,VALUE_MIN) |
#define | value_notmax_p(val) value_ne(val,VALUE_MAX) |
#define | value_protected_hard_idiv_multiply(v, w, throw) |
#define | value_protected_multiply(v, w, throw) value_protected_hard_idiv_multiply(v,w,throw) |
#define | value_protected_mult(v, w) value_protected_multiply(v,w,THROW(overflow_error)) |
#define | value_protected_product(v, w) v=value_protected_mult(v,w) |
#define | value_mult(v, w) |
#define | value_product(v, w) v=value_mult(v,w) |
#define | ABS(x) (((x)>=0) ? (x) : -(x)) |
#define | MIN(x, y) (((x)>=(y))?(y):(x)) |
#define | MAX(x, y) (((x)>=(y))?(x):(y)) |
#define | SIGN(x) (((x)>0)? 1 : ((x)==0? 0 : -1)) |
#define | DIVIDE(x, y) |
#define | POSITIVE_DIVIDE(x, y) ((x)>0 ? (x)/(y) : - (-(x)+(y)-1)/(y)) |
#define | MODULO(x, y) ((y)>0 ? POSITIVE_MODULO(x,y) : POSITIVE_MODULO(-x,-y)) |
#define | POSITIVE_MODULO(x, y) |
#define | divide(a, b) DIVIDE(a,b) |
#define | modulo(a, b) MODULO(a,b) |
Typedefs | |
typedef mpz_t | Value |
typedef col | tableau |
Functions | |
void | dump_exception_stack_to_file (FILE *) |
void | dump_exception_stack (void) |
jmp_buf * | push_exception_on_stack (int, char *, char *, int) |
void | pop_exception_from_stack (int, char *, char *, int) |
void | throw_exception (int, const char *, const char *, int) |
Variables | |
unsigned int | overflow_error |
unsigned int | simplex_arithmetic_error |
unsigned int | user_exception_error |
unsigned int | parser_exception_error |
unsigned int | any_exception_error |
unsigned int | the_last_just_thrown_exception |
int | linear_exception_debug_mode |
|
Definition at line 59 of file arithmetique.h. |
|
Definition at line 550 of file arithmetique.h. |
|
Definition at line 595 of file arithmetique.h. |
|
Value: ((y)>0? POSITIVE_DIVIDE(x,y) : \ -POSITIVE_DIVIDE((x),(-(y)))) Definition at line 573 of file arithmetique.h. |
|
Definition at line 339 of file arithmetique.h. |
|
Definition at line 338 of file arithmetique.h. |
|
Definition at line 336 of file arithmetique.h. |
|
Definition at line 233 of file arithmetique.h. |
|
Definition at line 62 of file arithmetique.h. |
|
Definition at line 64 of file arithmetique.h. |
|
Definition at line 337 of file arithmetique.h. |
|
Definition at line 561 of file arithmetique.h. |
|
Definition at line 558 of file arithmetique.h. |
|
Definition at line 597 of file arithmetique.h. |
|
Definition at line 580 of file arithmetique.h. |
|
Definition at line 577 of file arithmetique.h. |
|
Value: ((x) > 0 ? (x)%(y) : \ ((x)%(y) == 0 ? 0 : ((y)-(-(x))%(y)))) Definition at line 588 of file arithmetique.h. |
|
Definition at line 565 of file arithmetique.h. |
|
Definition at line 66 of file arithmetique.h. |
|
Value: (value_posz_p(val)? \ (val) : \ (value_ne((val), VALUE_NAN) ? \ value_uminus(val) : \ (THROW (overflow_error), VALUE_NAN ))) Definition at line 396 of file arithmetique.h. |
|
Definition at line 386 of file arithmetique.h. Referenced by Combine(), encore(), GaussSimplify(), Gcd(), hermite(), old_Polyhedron_Preprocess(), petit_c(), petit_l(), Print_Vertex(), Vector_Gcd(), and Vector_Min_Not_Zero(). |
|
Definition at line 374 of file arithmetique.h. Referenced by count_points(), FindSimple(), lower_upper_bounds(), P_Enum(), and Polyhedron_Preprocess2(). |
|
|
Definition at line 367 of file arithmetique.h. |
|
Definition at line 390 of file arithmetique.h. |
|
|
|
Definition at line 353 of file arithmetique.h. |
|
Definition at line 380 of file arithmetique.h. Referenced by addToFilter(), AffineSmith(), cherche_min(), FindSimple(), hermite(), Polyhedron_Image_Enumerate(), smith(), and SubConstraint(). |
|
Definition at line 360 of file arithmetique.h. |
|
Definition at line 376 of file arithmetique.h. |
|
Definition at line 358 of file arithmetique.h. |
|
|
Definition at line 343 of file arithmetique.h. Referenced by DomainCost(), FindSimple(), Remove_Redundants(), and Simplify(). |
|
Definition at line 235 of file arithmetique.h. Referenced by AffineSmith(), check_poly(), main(), P_Enum(), Polyhedron_Preprocess2(), Polyhedron_Print(), Print_Domain(), print_evalue(), and Print_Vertex(). |
|
Definition at line 346 of file arithmetique.h. Referenced by cherche_min(), Gauss4(), GaussSimplify(), isinHnf(), petit_c(), petit_l(), and Simplify(). |
|
Definition at line 345 of file arithmetique.h. Referenced by AffinePartCompare(), DomainCost(), FindSimple(), LinearPartCompare(), lower_upper_bounds(), P_Enum(), Polyhedron_Preprocess2(), Simplify(), and Vector_Normalize(). |
|
Definition at line 375 of file arithmetique.h. Referenced by check_poly(), cherche_min(), count_points(), exist_points(), FindSimple(), P_Enum(), Remove_Redundants(), and Simplify(). |
|
|
Definition at line 348 of file arithmetique.h. Referenced by check_poly(), cherche_min(), count_points(), exist_points(), and Polyhedron_Preprocess2(). |
|
Definition at line 368 of file arithmetique.h. |
|
Definition at line 347 of file arithmetique.h. Referenced by AffinePartCompare(), count_points(), DomainCost(), exist_points(), hermite(), LinearPartCompare(), lower_upper_bounds(), P_Enum(), Polyhedron_Preprocess2(), Remove_Redundants(), Simplify(), Vector_Min_Not_Zero(), and Vector_Sort(). |
|
Definition at line 365 of file arithmetique.h. |
|
Definition at line 415 of file arithmetique.h. |
|
Definition at line 388 of file arithmetique.h. Referenced by Vector_Max(). |
|
Definition at line 364 of file arithmetique.h. |
|
Definition at line 414 of file arithmetique.h. |
|
Definition at line 387 of file arithmetique.h. Referenced by Vector_Min(). |
|
Definition at line 361 of file arithmetique.h. |
|
Definition at line 359 of file arithmetique.h. |
|
Definition at line 382 of file arithmetique.h. Referenced by AffineSmith(), encore(), Gcd(), hermite(), isIntegral(), lower_upper_bounds(), P_Enum(), smith(), SolveDiophantine(), and Vector_Gcd(). |
|
Definition at line 412 of file arithmetique.h. Referenced by Degenerate(), Print_Domain(), and Print_Vertex(). |
|
Value: value_protected_multiply(v,w, \ (fprintf(stderr,"[value_mult] value overflow!\n"),THROW(overflow_error))) Definition at line 465 of file arithmetique.h. |
|
|
Definition at line 344 of file arithmetique.h. Referenced by AlmostSameAffinePart(), check_poly(), DomainCost(), eequal(), Polyhedron_Preprocess(), Remove_Redundants(), sameAffinepart(), sameLattice(), SameLinearPart(), SolveDiophantine(), and Vector_Equal(). |
|
Definition at line 405 of file arithmetique.h. Referenced by AffineSmith(), CalcBase(), cherche_min(), Chernikova(), Gauss4(), GaussSimplify(), hermite(), in_domain(), lower_upper_bounds(), Matrix_Inverse(), P_Enum(), Polyhedron_Preprocess(), PolyhedronIncludes(), PolyhedronLTQ(), RaySort(), smith(), and Vector_Normalize_Positive(). |
|
Definition at line 407 of file arithmetique.h. Referenced by old_Polyhedron_Preprocess(). |
|
Definition at line 395 of file arithmetique.h. |
|
Definition at line 417 of file arithmetique.h. |
|
Definition at line 416 of file arithmetique.h. |
|
Definition at line 413 of file arithmetique.h. Referenced by count_points(). |
|
Definition at line 411 of file arithmetique.h. Referenced by compute_evalue(), eadd(), emul(), Enumerate_NoParameters(), GaussSimplify(), GenParamPolyhedron(), IsLattice(), MatInverse(), Matrix_Inverse(), new_eadd(), Orthogonal_Base(), print_evalue(), Print_Vertex(), Rays_Mult(), Rays_Mult_Transpose(), Scan_Vertices(), Vector_Gcd(), and Vector_Normalize_Positive(). |
|
|
Definition at line 410 of file arithmetique.h. Referenced by GaussSimplify(), isEmptyLattice(), LatticeImage(), PolyhedronLTQ(), Print_Domain(), rat_prodmat(), reduce_evalue(), and Remove_Redundants(). |
|
|
Definition at line 366 of file arithmetique.h. |
|
Definition at line 389 of file arithmetique.h. Referenced by Vector_Or(). |
|
Definition at line 362 of file arithmetique.h. |
|
Definition at line 383 of file arithmetique.h. |
|
Definition at line 357 of file arithmetique.h. |
|
Definition at line 363 of file arithmetique.h. |
|
Definition at line 384 of file arithmetique.h. Referenced by compute_enode(). |
|
Definition at line 404 of file arithmetique.h. Referenced by cherche_min(), exist_points(), FindSimple(), lower_upper_bounds(), P_Enum(), Polyhedron_Image_Enumerate(), PolyhedronLTQ(), and Print_Domain(). |
|
Definition at line 406 of file arithmetique.h. Referenced by addToFilter(), FindSimple(), old_Polyhedron_Preprocess(), and Print_Vertex(). |
|
Definition at line 330 of file arithmetique.h. Referenced by AffineSmith(), check_poly(), cherche_min(), Chernikova(), count_points(), Enumerate_NoParameters(), main(), Matrix_Print(), P_Enum(), Polyhedron_Enumerate(), Polyhedron_Preprocess(), Polyhedron_Preprocess2(), Polyhedron_Print(), Polyhedron_PrintConstraints(), Print_Domain(), print_evalue(), Print_Vertex(), and Vector_Print(). |
|
Definition at line 468 of file arithmetique.h. |
|
Value: ((value_zero_p(w) || value_zero_p(v))? VALUE_ZERO: \ value_lt(value_abs(v),value_div(VALUE_MAX,value_abs(w)))? \ value_direct_multiply(v,w): (throw, VALUE_NAN)) Definition at line 429 of file arithmetique.h. |
|
Definition at line 448 of file arithmetique.h. |
|
Definition at line 442 of file arithmetique.h. |
|
Definition at line 450 of file arithmetique.h. |
|
Definition at line 329 of file arithmetique.h. Referenced by main(), Matrix_Read_Input(), and Vector_Read(). |
|
Definition at line 369 of file arithmetique.h. |
|
Definition at line 327 of file arithmetique.h. Referenced by compute_poly(). |
|
|
Definition at line 352 of file arithmetique.h. |
|
Definition at line 379 of file arithmetique.h. Referenced by lower_upper_bounds(), P_Enum(), Polyhedron_Preprocess(), and Polyhedron_Preprocess2(). |
|
Definition at line 378 of file arithmetique.h. Referenced by count_points(), Elim_Columns(), exist_points(), FindHermiteBasisofDomain(), hermite(), LatticePreimage(), main(), MatInverse(), Matrix_Inverse(), Orthogonal_Base(), P_Enum(), Polyhedron_Image_Enumerate(), Polyhedron_Preprocess2(), SolveDiophantine(), Soustraire_ligne(), TestRank(), and Vector_Sub(). |
|
Value: {Value tmp; tmp = v2; \ v2 = v1; v1 = tmp; \ } Definition at line 331 of file arithmetique.h. Referenced by Vector_Exchange(). |
|
Definition at line 244 of file arithmetique.h. Referenced by compute_enode(), and compute_evalue(). |
|
Definition at line 243 of file arithmetique.h. |
|
Definition at line 242 of file arithmetique.h. Referenced by check_poly(), compute_enode(), main(), P_Enum(), Simplify(), and SplitLattice(). |
|
Definition at line 241 of file arithmetique.h. |
|
Definition at line 394 of file arithmetique.h. |
|
|
|
|
|
Definition at line 213 of file errors.c. References dump_exception_stack_to_file(). Referenced by pop_exception_from_stack(), push_exception_on_stack(), and throw_exception(). |
|
Definition at line 196 of file errors.c. References exception_index, and exception_stack. Referenced by dump_exception_stack(). |
|
Definition at line 265 of file errors.c. References dump_exception_stack(), exception_debug_message, exception_debug_trace, exception_index, exception_stack, pop_callback, same_string_p, and the_last_just_thrown_exception. |
|
Definition at line 229 of file errors.c. References dump_exception_stack(), exception_debug_message, exception_debug_trace, exception_index, exception_stack, MAX_STACKED_CONTEXTS, push_callback, and the_last_just_thrown_exception. |
|
Definition at line 309 of file errors.c. References dump_exception_stack(), exception_debug_message, exception_debug_trace, exception_index, exception_stack, linear_exception_debug_mode, linear_exception_verbose, linear_number_of_exception_thrown, pop_callback, the_last_just_thrown_exception, and linear_exception_holder::what. |
|
Definition at line 607 of file arithmetique.h. Referenced by AddConstraints(), AddRays(), align_context(), BuildSat(), Chernikova(), Constraints2Polyhedron(), DomainConvex(), DomainCost(), DomainImage(), DomainPreimage(), FindSimple(), Gauss4(), get_exception_name(), Polyhedron_Image(), Polyhedron_Preimage(), Rays2Polyhedron(), Rays_Mult(), Rays_Mult_Transpose(), Remove_Redundants(), SimplifyConstraints(), Stras_DomainSimplify(), and SubConstraint(). |
|
Definition at line 609 of file arithmetique.h. Referenced by throw_exception(). |
|
Definition at line 603 of file arithmetique.h. Referenced by Enumerate_NoParameters(), get_exception_name(), and Polyhedron_Enumerate(). |
|
Definition at line 606 of file arithmetique.h. Referenced by get_exception_name(). |
|
Definition at line 604 of file arithmetique.h. Referenced by get_exception_name(). |
|
Definition at line 608 of file arithmetique.h. |
|
Definition at line 605 of file arithmetique.h. Referenced by get_exception_name(). |