PPL Configured C Language Interface  1.2
ppl_c_implementation_common.cc
Go to the documentation of this file.
1 /* Implementation of the C interface: variables and non-inline functions.
2  Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
3  Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
4 
5 This file is part of the Parma Polyhedra Library (PPL).
6 
7 The PPL is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 The PPL is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
20 
21 For the most up-to-date information see the Parma Polyhedra Library
22 site: http://bugseng.com/products/ppl/ . */
23 
24 /* Interface for Coefficient. */
25 
27 
28 namespace Parma_Polyhedra_Library {
29 
30 namespace Interfaces {
31 
32 namespace C {
33 
34 error_handler_type user_error_handler = 0;
35 
36 extern "C" const char*
37 c_variable_default_output_function(ppl_dimension_type var) {
38 #if PPL_SIZEOF_SIZE_T == PPL_SIZEOF_INT
39 # define FORMAT "%u"
40 # define CONVERSION (unsigned)
41 #elif PPL_SIZEOF_SIZE_T == PPL_SIZEOF_LONG
42 # define FORMAT "%lu"
43 # define CONVERSION (unsigned long)
44 #elif PPL_SIZEOF_SIZE_T == PPL_SIZEOF_LONG_LONG
45 # define FORMAT "%llu"
46 # define CONVERSION (unsigned long long)
47 #else
48 # error "Unsupported definition for `size_t'."
49 #endif
50  // On a 64-bits architecture, `var' will not be more than 2^64-1,
51  // (2^64-1)/26 is written with 18 decimal digits, plus one letter,
52  // plus one terminator makes 20.
53 #if defined(ULLONG_MAX) && ULLONG_MAX > 18446744073709551615ULL
54 # error "Please enlarge the buffer in the following line."
55 #endif
56  static char buffer[20];
57  buffer[0] = static_cast<char>('A' + var % 26);
58  if (ppl_dimension_type i = var / 26) {
59  int r = sprintf(buffer+1, FORMAT, CONVERSION i);
60  if (r < 0)
61  return 0;
62  else if (r >= 19) {
63  errno = ERANGE;
64  return 0;
65  }
66  }
67  else
68  buffer[1] = '\0';
69  return buffer;
70 }
71 
72 // Holds a pointer to the C current output function.
73 ppl_io_variable_output_function_type* c_variable_output_function;
74 
75 void
76 cxx_Variable_output_function(std::ostream& s, const Variable v) {
77  const char* b = c_variable_output_function(v.id());
78  if (b == 0)
79  // Something went wrong in the client's output function.
80  // Client code will know what to do: we do nothing.
81  return;
82  s << b;
83 }
84 
85 extern "C" typedef const char*
86 c_variable_output_function_type(ppl_dimension_type var);
87 
88 // Holds a pointer to the C++ saved output function.
89 Variable::output_function_type* saved_cxx_Variable_output_function;
90 
91 void
92 notify_error(enum ppl_enum_error_code code, const char* description) {
93  if (user_error_handler != 0)
94  user_error_handler(code, description);
95 }
96 
97 Parma_Polyhedra_Library::Watchdog* p_timeout_object = 0;
98 
99 typedef
102 
103 Weightwatch* p_deterministic_timeout_object = 0;
104 
105 void
106 reset_timeout() {
107  if (p_timeout_object != 0) {
108  delete p_timeout_object;
109  p_timeout_object = 0;
111  }
112 }
113 
114 void
115 reset_deterministic_timeout() {
116  if (p_deterministic_timeout_object != 0) {
117  delete p_deterministic_timeout_object;
118  p_deterministic_timeout_object = 0;
120  }
121 }
122 
123 } // namespace C
124 
125 } // namespace Interfaces
126 
127 } // namespace Parma_Polyhedra_Library
128 
129 using namespace Parma_Polyhedra_Library;
131 
136 
138 
142 
146 
151 
154 
162 
165 
166 int
167 ppl_set_error_handler(error_handler_type h) {
168  user_error_handler = h;
169  return 0;
170 }
171 
172 int
173 ppl_initialize(void) try {
174  initialize();
175 
176  PPL_POLY_CON_RELATION_IS_DISJOINT
178  PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS
180  PPL_POLY_CON_RELATION_IS_INCLUDED
182  PPL_POLY_CON_RELATION_SATURATES
184 
185  PPL_POLY_GEN_RELATION_SUBSUMES
187 
188  PPL_COMPLEXITY_CLASS_POLYNOMIAL = POLYNOMIAL_COMPLEXITY;
189  PPL_COMPLEXITY_CLASS_SIMPLEX = SIMPLEX_COMPLEXITY;
190  PPL_COMPLEXITY_CLASS_ANY = ANY_COMPLEXITY;
191 
192  PPL_MIP_PROBLEM_STATUS_UNFEASIBLE = UNFEASIBLE_MIP_PROBLEM;
193  PPL_MIP_PROBLEM_STATUS_UNBOUNDED = UNBOUNDED_MIP_PROBLEM;
194  PPL_MIP_PROBLEM_STATUS_OPTIMIZED = OPTIMIZED_MIP_PROBLEM;
195 
196  PPL_MIP_PROBLEM_CONTROL_PARAMETER_NAME_PRICING
198  PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_FLOAT
200  PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_EXACT
202  PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_TEXTBOOK
204 
205  PPL_PIP_PROBLEM_STATUS_UNFEASIBLE = UNFEASIBLE_PIP_PROBLEM;
206  PPL_PIP_PROBLEM_STATUS_OPTIMIZED = OPTIMIZED_PIP_PROBLEM;
207 
208  PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_CUTTING_STRATEGY
210  PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_FIRST
212  PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_DEEPEST
214  PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_ALL
216  PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_PIVOT_ROW_STRATEGY
218  PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_FIRST
220  PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_MAX_COLUMN
222 
223  PPL_OPTIMIZATION_MODE_MINIMIZATION = MINIMIZATION;
224  PPL_OPTIMIZATION_MODE_MAXIMIZATION = MAXIMIZATION;
225 
226  c_variable_output_function = c_variable_default_output_function;
227  saved_cxx_Variable_output_function = Variable::get_output_function();
228  Variable::set_output_function(cxx_Variable_output_function);
229 
230  return 0;
231 }
232 CATCH_ALL
233 
234 int
235 ppl_finalize(void) try {
236  Variable::set_output_function(saved_cxx_Variable_output_function);
237 
238  finalize();
239  return 0;
240 }
241 CATCH_ALL
242 
243 int
244 ppl_set_timeout(unsigned csecs) try {
245  // In case a timeout was already set.
246  reset_timeout();
247  static timeout_exception e;
249  p_timeout_object = new Watchdog(csecs, abandon_expensive_computations, e);
250  return 0;
251 }
252 CATCH_ALL
253 
254 int
255 ppl_reset_timeout(void) try {
256  reset_timeout();
257  return 0;
258 }
259 CATCH_ALL
260 
261 int
262 ppl_set_deterministic_timeout(unsigned long unscaled_weight,
263  unsigned scale) try {
264  // In case a deterministic timeout was already set.
265  reset_deterministic_timeout();
266  static timeout_exception e;
268  p_deterministic_timeout_object
269  = new Weightwatch(Traits::compute_delta(unscaled_weight, scale),
271  return 0;
272 }
273 CATCH_ALL
274 
275 int
277  reset_deterministic_timeout();
278  return 0;
279 }
280 CATCH_ALL
281 
282 int
285  return 0;
286 }
287 CATCH_ALL
288 
289 int
292  return 0;
293 }
294 CATCH_ALL
295 
296 int
297 ppl_irrational_precision(unsigned* p) try {
298  *p = irrational_precision();
299  return 0;
300 }
301 CATCH_ALL
302 
303 int
306  return 0;
307 }
308 CATCH_ALL
309 
310 int
311 ppl_version_major(void) try {
312  return static_cast<int>(version_major());
313 }
314 CATCH_ALL
315 
316 int
317 ppl_version_minor(void) try {
318  return static_cast<int>(version_minor());
319 }
320 CATCH_ALL
321 
322 int
324  return static_cast<int>(version_revision());
325 }
326 CATCH_ALL
327 
328 int
329 ppl_version_beta(void) try {
330  return static_cast<int>(version_beta());
331 }
332 CATCH_ALL
333 
334 int
335 ppl_version(const char** p) try {
336  // Note: use explicit qualification to avoid clashes on, e.g.,
337  // Solaris 2.9, where `version' is the name of an enum defined in
338  // math.h.
340  return 0;
341 }
342 CATCH_ALL
343 
344 int
345 ppl_banner(const char** p) try {
346  *p = banner();
347  return 0;
348 }
349 CATCH_ALL
350 
351 int
353  *m = max_space_dimension();
354  return 0;
355 }
356 CATCH_ALL
357 
358 int
360  *m = not_a_dimension();
361  return 0;
362 }
363 CATCH_ALL
364 
365 int
366 ppl_new_Coefficient(ppl_Coefficient_t* pc) try {
367  *pc = to_nonconst(new Coefficient(0));
368  return 0;
369 }
370 CATCH_ALL
371 
372 int
373 ppl_new_Coefficient_from_mpz_t(ppl_Coefficient_t* pc, mpz_t z) try {
374  *pc = to_nonconst(new Coefficient(reinterpret_mpz_class(z)));
375  return 0;
376 }
377 CATCH_ALL
378 
379 int
381  ppl_const_Coefficient_t c) try {
382  const Coefficient& cc = *to_const(c);
383  *pc = to_nonconst(new Coefficient(cc));
384  return 0;
385 }
386 CATCH_ALL
387 
388 int
389 ppl_Coefficient_to_mpz_t(ppl_const_Coefficient_t c, mpz_t z) try {
390  assign_r(reinterpret_mpz_class(z), *to_const(c), ROUND_NOT_NEEDED);
391  return 0;
392 }
393 CATCH_ALL
394 
395 int
396 ppl_delete_Coefficient(ppl_const_Coefficient_t c) try {
397  delete to_const(c);
398  return 0;
399 }
400 CATCH_ALL
401 
402 int
403 ppl_assign_Coefficient_from_mpz_t(ppl_Coefficient_t dst, mpz_t z) try {
404  Coefficient& ddst = *to_nonconst(dst);
405  ddst = reinterpret_mpz_class(z);
406  return 0;
407 }
408 CATCH_ALL
409 
410 int
412  ppl_const_Coefficient_t src) try {
413  const Coefficient& ssrc = *to_const(src);
414  Coefficient& ddst = *to_nonconst(dst);
415  ddst = ssrc;
416  return 0;
417 }
418 CATCH_ALL
419 
420 int
421 ppl_Coefficient_OK(ppl_const_Coefficient_t /* c */) try {
422  return 1;
423 }
424 CATCH_ALL
425 
426 int
428  return std::numeric_limits<Coefficient>::is_bounded ? 1 : 0;
429 }
430 CATCH_ALL
431 
432 int
433 ppl_Coefficient_min(mpz_t min) try {
434  if (std::numeric_limits<Coefficient>::is_bounded) {
435  assign_r(reinterpret_mpz_class(min),
436  std::numeric_limits<Coefficient>::min(),
438  return 1;
439  }
440  else
441  return 0;
442 }
443 CATCH_ALL
444 
445 int
446 ppl_Coefficient_max(mpz_t max) try {
447  if (std::numeric_limits<Coefficient>::is_bounded) {
448  assign_r(reinterpret_mpz_class(max),
449  std::numeric_limits<Coefficient>::max(),
451  return 1;
452  }
453  else
454  return 0;
455 }
456 CATCH_ALL
457 
458 /* Interface for Linear_Expression. */
459 
460 int
461 ppl_new_Linear_Expression(ppl_Linear_Expression_t* ple) try {
462  *ple = to_nonconst(new Linear_Expression());
463  return 0;
464 }
465 CATCH_ALL
466 
467 int
468 ppl_new_Linear_Expression_with_dimension(ppl_Linear_Expression_t* ple,
469  ppl_dimension_type d) try {
470  *ple = to_nonconst(d == 0
471  ? new Linear_Expression(0)
472  : new Linear_Expression(0*Variable(d-1)));
473  return 0;
474 }
475 CATCH_ALL
476 
477 int
479 (ppl_Linear_Expression_t* ple, ppl_const_Linear_Expression_t le) try {
480  const Linear_Expression& lle = *to_const(le);
481  *ple = to_nonconst(new Linear_Expression(lle));
482  return 0;
483 }
484 CATCH_ALL
485 
486 int
487 ppl_delete_Linear_Expression(ppl_const_Linear_Expression_t le) try {
488  delete to_const(le);
489  return 0;
490 }
491 CATCH_ALL
492 
493 int
495 (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) try {
496  const Linear_Expression& ssrc = *to_const(src);
497  Linear_Expression& ddst = *to_nonconst(dst);
498  ddst = ssrc;
499  return 0;
500 }
501 CATCH_ALL
502 
503 int
504 ppl_Linear_Expression_add_to_coefficient(ppl_Linear_Expression_t le,
505  ppl_dimension_type var,
506  ppl_const_Coefficient_t n) try {
507  Linear_Expression& lle = *to_nonconst(le);
508  const Coefficient& nn = *to_const(n);
509  add_mul_assign(lle, nn, Variable(var));
510  return 0;
511 }
512 CATCH_ALL
513 
514 int
516  ppl_const_Coefficient_t n) try {
517  Linear_Expression& lle = *to_nonconst(le);
518  const Coefficient& nn = *to_const(n);
519  lle += nn;
520  return 0;
521 }
522 CATCH_ALL
523 
524 int
526 (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) try {
527  Linear_Expression& ddst = *to_nonconst(dst);
528  const Linear_Expression& ssrc = *to_const(src);
529  ddst += ssrc;
530  return 0;
531 }
532 CATCH_ALL
533 
534 int
536 (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) try {
537  Linear_Expression& ddst = *to_nonconst(dst);
538  const Linear_Expression& ssrc = *to_const(src);
539  ddst -= ssrc;
540  return 0;
541 }
542 CATCH_ALL
543 
544 int
546  ppl_const_Coefficient_t n) try {
547  Linear_Expression& lle = *to_nonconst(le);
548  const Coefficient& nn = *to_const(n);
549  lle *= nn;
550  return 0;
551 }
552 CATCH_ALL
553 
554 int
555 ppl_Linear_Expression_space_dimension(ppl_const_Linear_Expression_t le,
556  ppl_dimension_type* m) try {
557  *m = to_const(le)->space_dimension();
558  return 0;
559 }
560 CATCH_ALL
561 
562 int
563 ppl_Linear_Expression_coefficient(ppl_const_Linear_Expression_t le,
564  ppl_dimension_type var,
565  ppl_Coefficient_t n) try {
566  const Linear_Expression& lle = *to_const(le);
567  Coefficient& nn = *to_nonconst(n);
568  nn = lle.coefficient(Variable(var));
569  return 0;
570 }
571 CATCH_ALL
572 
573 int
574 ppl_Linear_Expression_inhomogeneous_term(ppl_const_Linear_Expression_t le,
575  ppl_Coefficient_t n) try {
576  const Linear_Expression& lle = *to_const(le);
577  Coefficient& nn = *to_nonconst(n);
578  nn = lle.inhomogeneous_term();
579  return 0;
580 }
581 CATCH_ALL
582 
583 int
584 ppl_Linear_Expression_OK(ppl_const_Linear_Expression_t le) try {
585  return to_const(le)->OK() ? 1 : 0;
586 }
587 CATCH_ALL
588 
589 int
590 ppl_Linear_Expression_is_zero(ppl_const_Linear_Expression_t le) try {
591  return to_const(le)->is_zero() ? 1 : 0;
592 }
593 CATCH_ALL
594 
595 int
597  (ppl_const_Linear_Expression_t le) try {
598  return to_const(le)->all_homogeneous_terms_are_zero() ? 1 : 0;
599 }
600 CATCH_ALL
601 
602 /* Interface for Constraint. */
603 
604 int
605 ppl_new_Constraint(ppl_Constraint_t* pc,
606  ppl_const_Linear_Expression_t le,
607  enum ppl_enum_Constraint_Type t) try {
608  Constraint* ppc;
609  const Linear_Expression& lle = *to_const(le);
610  switch (t) {
612  ppc = new Constraint(lle == 0);
613  break;
615  ppc = new Constraint(lle >= 0);
616  break;
618  ppc = new Constraint(lle > 0);
619  break;
621  ppc = new Constraint(lle <= 0);
622  break;
624  ppc = new Constraint(lle < 0);
625  break;
626  default:
627  throw std::invalid_argument("ppl_new_Constraint(pc, le, t): "
628  "t invalid");
629  }
630  *pc = to_nonconst(ppc);
631  return 0;
632 }
633 CATCH_ALL
634 
635 int
636 ppl_new_Constraint_zero_dim_false(ppl_Constraint_t* pc) try {
637  *pc = to_nonconst(new Constraint(Constraint::zero_dim_false()));
638  return 0;
639 }
640 CATCH_ALL
641 
642 int
643 ppl_new_Constraint_zero_dim_positivity(ppl_Constraint_t* pc) try {
644  *pc = to_nonconst(new Constraint(Constraint::zero_dim_positivity()));
645  return 0;
646 }
647 CATCH_ALL
648 
649 int
651  ppl_const_Constraint_t c) try {
652  const Constraint& cc = *to_const(c);
653  *pc = to_nonconst(new Constraint(cc));
654  return 0;
655 }
656 CATCH_ALL
657 
658 int
659 ppl_delete_Constraint(ppl_const_Constraint_t le) try {
660  delete to_const(le);
661  return 0;
662 }
663 CATCH_ALL
664 
665 int
667  ppl_const_Constraint_t src) try {
668  const Constraint& ssrc = *to_const(src);
669  Constraint& ddst = *to_nonconst(dst);
670  ddst = ssrc;
671  return 0;
672 }
673 CATCH_ALL
674 
675 int
676 ppl_Constraint_space_dimension(ppl_const_Constraint_t c,
677  ppl_dimension_type* m) try {
678  *m = to_const(c)->space_dimension();
679  return 0;
680 }
681 CATCH_ALL
682 
683 int
684 ppl_Constraint_type(ppl_const_Constraint_t c) try {
685  switch (to_const(c)->type()) {
692  }
693  PPL_UNREACHABLE;
694 }
695 CATCH_ALL
696 
697 int
698 ppl_Constraint_coefficient(ppl_const_Constraint_t c,
699  ppl_dimension_type var,
700  ppl_Coefficient_t n) try {
701  const Constraint& cc = *to_const(c);
702  Coefficient& nn = *to_nonconst(n);
703  nn = cc.coefficient(Variable(var));
704  return 0;
705 }
706 CATCH_ALL
707 
708 int
709 ppl_Constraint_inhomogeneous_term(ppl_const_Constraint_t c,
710  ppl_Coefficient_t n) try {
711  const Constraint& cc = *to_const(c);
712  Coefficient& nn = *to_nonconst(n);
713  nn = cc.inhomogeneous_term();
714  return 0;
715 }
716 CATCH_ALL
717 
718 int
719 ppl_Constraint_OK(ppl_const_Constraint_t c) try {
720  return to_const(c)->OK() ? 1 : 0;
721 }
722 CATCH_ALL
723 
724 int
725 ppl_new_Linear_Expression_from_Constraint(ppl_Linear_Expression_t* ple,
726  ppl_const_Constraint_t c) try {
727  const Constraint& cc = *to_const(c);
728  *ple = to_nonconst(new Linear_Expression(cc.expression()));
729  return 0;
730 }
731 CATCH_ALL
732 
733 /* Interface for Constraint_System. */
734 
735 int
736 ppl_new_Constraint_System(ppl_Constraint_System_t* pcs) try {
737  *pcs = to_nonconst(new Constraint_System());
738  return 0;
739 }
740 CATCH_ALL
741 
742 int
743 ppl_new_Constraint_System_zero_dim_empty(ppl_Constraint_System_t* pcs) try {
744  *pcs = to_nonconst(new
746  return 0;
747 }
748 CATCH_ALL
749 
750 
751 int
752 ppl_new_Constraint_System_from_Constraint(ppl_Constraint_System_t* pcs,
753  ppl_const_Constraint_t c) try {
754  const Constraint& cc = *to_const(c);
755  *pcs = to_nonconst(new Constraint_System(cc));
756  return 0;
757 }
758 CATCH_ALL
759 
760 int
762 (ppl_Constraint_System_t* pcs, ppl_const_Constraint_System_t cs) try {
763  const Constraint_System& ccs = *to_const(cs);
764  *pcs = to_nonconst(new Constraint_System(ccs));
765  return 0;
766 }
767 CATCH_ALL
768 
769 int
770 ppl_delete_Constraint_System(ppl_const_Constraint_System_t cs) try {
771  delete to_const(cs);
772  return 0;
773 }
774 CATCH_ALL
775 
776 int
778 (ppl_Constraint_System_t dst, ppl_const_Constraint_System_t src) try {
779  const Constraint_System& ssrc = *to_const(src);
780  Constraint_System& ddst = *to_nonconst(dst);
781  ddst = ssrc;
782  return 0;
783 }
784 CATCH_ALL
785 
786 int
787 ppl_Constraint_System_space_dimension(ppl_const_Constraint_System_t cs,
788  ppl_dimension_type* m) try {
789  *m = to_const(cs)->space_dimension();
790  return 0;
791 }
792 CATCH_ALL
793 
794 int
796 (ppl_const_Constraint_System_t cs) try {
797  const Constraint_System& ccs = *to_const(cs);
798  return ccs.empty() ? 1 : 0;
799 }
800 CATCH_ALL
801 
802 int
804 (ppl_const_Constraint_System_t cs) try {
805  const Constraint_System& ccs = *to_const(cs);
806  return ccs.has_strict_inequalities() ? 1 : 0;
807 }
808 CATCH_ALL
809 
810 int
811 ppl_Constraint_System_clear(ppl_Constraint_System_t cs) try {
812  to_nonconst(cs)->clear();
813  return 0;
814 }
815 CATCH_ALL
816 
817 int
818 ppl_Constraint_System_insert_Constraint(ppl_Constraint_System_t cs,
819  ppl_const_Constraint_t c) try {
820  const Constraint& cc = *to_const(c);
821  Constraint_System& ccs = *to_nonconst(cs);
822  ccs.insert(cc);
823  return 0;
824 }
825 CATCH_ALL
826 
827 int
828 ppl_Constraint_System_OK(ppl_const_Constraint_System_t cs) try {
829  return to_const(cs)->OK() ? 1 : 0;
830 }
831 CATCH_ALL
832 
833 /* Interface for Constraint_System::const_iterator. */
834 
835 int
837 (ppl_Constraint_System_const_iterator_t* pcit) try {
838  *pcit = to_nonconst(new Constraint_System::const_iterator());
839  return 0;
840 }
841 CATCH_ALL
842 
843 int
845 (ppl_Constraint_System_const_iterator_t* pcit,
846  ppl_const_Constraint_System_const_iterator_t cit) try {
847  *pcit = to_nonconst(new Constraint_System::const_iterator(*to_const(cit)));
848  return 0;
849 }
850 CATCH_ALL
851 
852 int
854 (ppl_const_Constraint_System_const_iterator_t cit)
855  try {
856  delete to_const(cit);
857  return 0;
858 }
859 CATCH_ALL
860 
861 int
863 (ppl_Constraint_System_const_iterator_t dst,
864  ppl_const_Constraint_System_const_iterator_t src) try {
865  const Constraint_System::const_iterator& ssrc = *to_const(src);
866  Constraint_System::const_iterator& ddst = *to_nonconst(dst);
867  ddst = ssrc;
868  return 0;
869 }
870 CATCH_ALL
871 
872 int
873 ppl_Constraint_System_begin(ppl_const_Constraint_System_t cs,
874  ppl_Constraint_System_const_iterator_t cit) try {
875  const Constraint_System& ccs = *to_const(cs);
876  Constraint_System::const_iterator& ccit = *to_nonconst(cit);
877  ccit = ccs.begin();
878  return 0;
879 }
880 CATCH_ALL
881 
882 int
883 ppl_Constraint_System_end(ppl_const_Constraint_System_t cs,
884  ppl_Constraint_System_const_iterator_t cit) try {
885  const Constraint_System& ccs = *to_const(cs);
886  Constraint_System::const_iterator& ccit = *to_nonconst(cit);
887  ccit = ccs.end();
888  return 0;
889 }
890 CATCH_ALL
891 
892 int
894 (ppl_const_Constraint_System_const_iterator_t cit,
895  ppl_const_Constraint_t* pc) try {
896  const Constraint_System::const_iterator& ccit = *to_const(cit);
897  const Constraint& c = *ccit;
898  *pc = to_const(&c);
899  return 0;
900 }
901 CATCH_ALL
902 
903 int
905 (ppl_Constraint_System_const_iterator_t cit) try {
906  Constraint_System::const_iterator& ccit = *to_nonconst(cit);
907  ++ccit;
908  return 0;
909 }
910 CATCH_ALL
911 
912 int
914 (ppl_const_Constraint_System_const_iterator_t x,
915  ppl_const_Constraint_System_const_iterator_t y) try {
916  const Constraint_System::const_iterator& xx = *to_const(x);
917  const Constraint_System::const_iterator& yy = *to_const(y);
918  return (xx == yy) ? 1 : 0;
919 }
920 CATCH_ALL
921 
922 /* Interface for Generator. */
923 
924 int
925 ppl_new_Generator(ppl_Generator_t* pg,
926  ppl_const_Linear_Expression_t le,
928  ppl_const_Coefficient_t d) try {
929  Generator* ppg;
930  const Linear_Expression& lle = *to_const(le);
931  const Coefficient& dd = *to_const(d);
932  switch (t) {
934  ppg = new Generator(Generator::point(lle, dd));
935  break;
937  ppg = new Generator(Generator::closure_point(lle, dd));
938  break;
940  ppg = new Generator(Generator::ray(lle));
941  break;
943  ppg = new Generator(Generator::line(lle));
944  break;
945  default:
946  throw std::invalid_argument("ppl_new_Generator(pg, le, t, d): t invalid");
947  }
948  *pg = to_nonconst(ppg);
949  return 0;
950 }
951 CATCH_ALL
952 
953 int
954 ppl_new_Generator_zero_dim_point(ppl_Generator_t* pg) try {
955  *pg = to_nonconst(new Generator(Generator::zero_dim_point()));
956  return 0;
957 }
958 CATCH_ALL
959 
960 int
962  *pg = to_nonconst(new Generator(Generator::zero_dim_closure_point()));
963  return 0;
964 }
965 CATCH_ALL
966 
967 int
969  ppl_const_Generator_t g) try {
970  const Generator& gg = *to_const(g);
971  *pg = to_nonconst(new Generator(gg));
972  return 0;
973 }
974 CATCH_ALL
975 
976 int
977 ppl_delete_Generator(ppl_const_Generator_t le) try {
978  delete to_const(le);
979  return 0;
980 }
981 CATCH_ALL
982 
983 int
985  ppl_const_Generator_t src) try {
986  const Generator& ssrc = *to_const(src);
987  Generator& ddst = *to_nonconst(dst);
988  ddst = ssrc;
989  return 0;
990 }
991 CATCH_ALL
992 
993 int
994 ppl_Generator_space_dimension(ppl_const_Generator_t g,
995  ppl_dimension_type* m) try {
996  *m = to_const(g)->space_dimension();
997  return 0;
998 }
999 CATCH_ALL
1000 
1001 int
1002 ppl_Generator_type(ppl_const_Generator_t g) try {
1003  switch (to_const(g)->type()) {
1004  case Generator::LINE:
1005  return PPL_GENERATOR_TYPE_LINE;
1006  case Generator::RAY:
1007  return PPL_GENERATOR_TYPE_RAY;
1008  case Generator::POINT:
1009  return PPL_GENERATOR_TYPE_POINT;
1012  }
1013  PPL_UNREACHABLE;
1014 }
1015 CATCH_ALL
1016 
1017 int
1018 ppl_Generator_coefficient(ppl_const_Generator_t g,
1019  ppl_dimension_type var,
1020  ppl_Coefficient_t n) try {
1021  const Generator& gg = *to_const(g);
1022  Coefficient& nn = *to_nonconst(n);
1023  nn = gg.coefficient(Variable(var));
1024  return 0;
1025 }
1026 CATCH_ALL
1027 
1028 int
1029 ppl_Generator_divisor(ppl_const_Generator_t g,
1030  ppl_Coefficient_t n) try {
1031  const Generator& gg = *to_const(g);
1032  Coefficient& nn = *to_nonconst(n);
1033  nn = gg.divisor();
1034  return 0;
1035 }
1036 CATCH_ALL
1037 
1038 int
1039 ppl_Generator_OK(ppl_const_Generator_t g) try {
1040  return to_const(g)->OK() ? 1 : 0;
1041 }
1042 CATCH_ALL
1043 
1044 int
1045 ppl_new_Linear_Expression_from_Generator(ppl_Linear_Expression_t* ple,
1046  ppl_const_Generator_t g) try {
1047  const Generator& gg = *to_const(g);
1048  *ple = to_nonconst(new Linear_Expression(gg.expression()));
1049  return 0;
1050 }
1051 CATCH_ALL
1052 
1053 /* Interface for Generator_System. */
1054 
1055 int
1056 ppl_new_Generator_System(ppl_Generator_System_t* pgs) try {
1057  *pgs = to_nonconst(new Generator_System());
1058  return 0;
1059 }
1060 CATCH_ALL
1061 
1062 int
1063 ppl_new_Generator_System_zero_dim_univ(ppl_Generator_System_t* pgs) try {
1064  *pgs = to_nonconst(new Generator_System(Generator_System::zero_dim_univ()));
1065  return 0;
1066 }
1067 CATCH_ALL
1068 
1069 int
1070 ppl_new_Generator_System_from_Generator(ppl_Generator_System_t* pgs,
1071  ppl_const_Generator_t g) try {
1072  const Generator& gg = *to_const(g);
1073  *pgs = to_nonconst(new Generator_System(gg));
1074  return 0;
1075 }
1076 CATCH_ALL
1077 
1078 int
1080 (ppl_Generator_System_t* pgs, ppl_const_Generator_System_t gs) try {
1081  const Generator_System& ggs = *to_const(gs);
1082  *pgs = to_nonconst(new Generator_System(ggs));
1083  return 0;
1084 }
1085 CATCH_ALL
1086 
1087 int
1088 ppl_delete_Generator_System(ppl_const_Generator_System_t gs) try {
1089  delete to_const(gs);
1090  return 0;
1091 }
1092 CATCH_ALL
1093 
1094 int
1096 (ppl_Generator_System_t dst, ppl_const_Generator_System_t src) try {
1097  const Generator_System& ssrc = *to_const(src);
1098  Generator_System& ddst = *to_nonconst(dst);
1099  ddst = ssrc;
1100  return 0;
1101 }
1102 CATCH_ALL
1103 
1104 int
1105 ppl_Generator_System_space_dimension(ppl_const_Generator_System_t gs,
1106  ppl_dimension_type* m) try {
1107  *m = to_const(gs)->space_dimension();
1108  return 0;
1109 }
1110 CATCH_ALL
1111 
1112 int
1114 (ppl_const_Generator_System_t gs) try {
1115  const Generator_System& cgs = *to_const(gs);
1116  return cgs.empty() ? 1 : 0;
1117 }
1118 CATCH_ALL
1119 
1120 int
1121 ppl_Generator_System_clear(ppl_Generator_System_t gs) try {
1122  to_nonconst(gs)->clear();
1123  return 0;
1124 }
1125 CATCH_ALL
1126 
1127 int
1128 ppl_Generator_System_insert_Generator(ppl_Generator_System_t gs,
1129  ppl_const_Generator_t g) try {
1130  const Generator& gg = *to_const(g);
1131  Generator_System& ggs = *to_nonconst(gs);
1132  ggs.insert(gg);
1133  return 0;
1134 }
1135 CATCH_ALL
1136 
1137 int
1138 ppl_Generator_System_OK(ppl_const_Generator_System_t gs) try {
1139  return to_const(gs)->OK() ? 1 : 0;
1140 }
1141 CATCH_ALL
1142 
1143 /* Interface for Generator_System::const_iterator. */
1144 
1145 int
1147 (ppl_Generator_System_const_iterator_t* pgit) try {
1148  *pgit = to_nonconst(new Generator_System::const_iterator());
1149  return 0;
1150 }
1151 CATCH_ALL
1152 
1153 int
1155 (ppl_Generator_System_const_iterator_t* pgit,
1156  ppl_const_Generator_System_const_iterator_t git) try {
1157  *pgit = to_nonconst(new Generator_System::const_iterator(*to_const(git)));
1158  return 0;
1159 }
1160 CATCH_ALL
1161 
1162 int
1164 (ppl_const_Generator_System_const_iterator_t git) try {
1165  delete to_const(git);
1166  return 0;
1167 }
1168 CATCH_ALL
1169 
1170 int
1172 (ppl_Generator_System_const_iterator_t dst,
1173  ppl_const_Generator_System_const_iterator_t src) try {
1174  const Generator_System::const_iterator& ssrc = *to_const(src);
1175  Generator_System::const_iterator& ddst = *to_nonconst(dst);
1176  ddst = ssrc;
1177  return 0;
1178 }
1179 CATCH_ALL
1180 
1181 int
1182 ppl_Generator_System_begin(ppl_const_Generator_System_t gs,
1183  ppl_Generator_System_const_iterator_t git) try {
1184  const Generator_System& ggs = *to_const(gs);
1185  Generator_System::const_iterator& ggit = *to_nonconst(git);
1186  ggit = ggs.begin();
1187  return 0;
1188 }
1189 CATCH_ALL
1190 
1191 int
1192 ppl_Generator_System_end(ppl_const_Generator_System_t gs,
1193  ppl_Generator_System_const_iterator_t git) try {
1194  const Generator_System& ggs = *to_const(gs);
1195  Generator_System::const_iterator& ggit = *to_nonconst(git);
1196  ggit = ggs.end();
1197  return 0;
1198 }
1199 CATCH_ALL
1200 
1201 int
1203 (ppl_const_Generator_System_const_iterator_t git,
1204  ppl_const_Generator_t* pg) try {
1205  const Generator_System::const_iterator& ggit = *to_const(git);
1206  const Generator& c = *ggit;
1207  *pg = to_const(&c);
1208  return 0;
1209 }
1210 CATCH_ALL
1211 
1212 int
1214 (ppl_Generator_System_const_iterator_t git) try {
1215  Generator_System::const_iterator& ggit = *to_nonconst(git);
1216  ++ggit;
1217  return 0;
1218 }
1219 CATCH_ALL
1220 
1221 int
1223 (ppl_const_Generator_System_const_iterator_t x,
1224  ppl_const_Generator_System_const_iterator_t y) try {
1225  const Generator_System::const_iterator& xx = *to_const(x);
1226  const Generator_System::const_iterator& yy = *to_const(y);
1227  return (xx == yy) ? 1 : 0;
1228 }
1229 CATCH_ALL
1230 
1231 /* Interface for Congruence. */
1232 
1233 int
1234 ppl_new_Congruence(ppl_Congruence_t* pc,
1235  ppl_const_Linear_Expression_t le,
1236  ppl_const_Coefficient_t m) try {
1237  Congruence* ppc;
1238  const Linear_Expression& lle = *to_const(le);
1239  const Coefficient& mm = *to_const(m);
1240  ppc = new Congruence((lle %= 0) / mm);
1241  *pc = to_nonconst(ppc);
1242  return 0;
1243 }
1244 CATCH_ALL
1245 
1246 int
1247 ppl_new_Congruence_zero_dim_false(ppl_Congruence_t* pc) try {
1248  *pc = to_nonconst(new Congruence(Congruence::zero_dim_false()));
1249  return 0;
1250 }
1251 CATCH_ALL
1252 
1253 int
1254 ppl_new_Congruence_zero_dim_integrality(ppl_Congruence_t* pc) try {
1255  *pc = to_nonconst(new Congruence(Congruence::zero_dim_integrality()));
1256  return 0;
1257 }
1258 CATCH_ALL
1259 
1260 int
1262  ppl_const_Congruence_t c) try {
1263  const Congruence& cc = *to_const(c);
1264  *pc = to_nonconst(new Congruence(cc));
1265  return 0;
1266 }
1267 CATCH_ALL
1268 
1269 int
1270 ppl_delete_Congruence(ppl_const_Congruence_t le) try {
1271  delete to_const(le);
1272  return 0;
1273 }
1274 CATCH_ALL
1275 
1276 int
1278  ppl_const_Congruence_t src) try {
1279  const Congruence& ssrc = *to_const(src);
1280  Congruence& ddst = *to_nonconst(dst);
1281  ddst = ssrc;
1282  return 0;
1283 }
1284 CATCH_ALL
1285 
1286 int
1287 ppl_Congruence_space_dimension(ppl_const_Congruence_t c,
1288  ppl_dimension_type* m) try {
1289  *m = to_const(c)->space_dimension();
1290  return 0;
1291 }
1292 CATCH_ALL
1293 
1294 int
1295 ppl_Congruence_coefficient(ppl_const_Congruence_t c,
1296  ppl_dimension_type var,
1297  ppl_Coefficient_t n) try {
1298  const Congruence& cc = *to_const(c);
1299  Coefficient& nn = *to_nonconst(n);
1300  nn = cc.coefficient(Variable(var));
1301  return 0;
1302 }
1303 CATCH_ALL
1304 
1305 int
1306 ppl_Congruence_inhomogeneous_term(ppl_const_Congruence_t c,
1307  ppl_Coefficient_t n) try {
1308  const Congruence& cc = *to_const(c);
1309  Coefficient& nn = *to_nonconst(n);
1310  nn = cc.inhomogeneous_term();
1311  return 0;
1312 }
1313 CATCH_ALL
1314 
1315 int
1316 ppl_Congruence_modulus(ppl_const_Congruence_t c,
1317  ppl_Coefficient_t m) try {
1318  const Congruence& cc = *to_const(c);
1319  Coefficient& mm = *to_nonconst(m);
1320  mm = cc.modulus();
1321  return 0;
1322 }
1323 CATCH_ALL
1324 
1325 int
1326 ppl_Congruence_OK(ppl_const_Congruence_t c) try {
1327  return to_const(c)->OK() ? 1 : 0;
1328 }
1329 CATCH_ALL
1330 
1331 int
1332 ppl_new_Linear_Expression_from_Congruence(ppl_Linear_Expression_t* ple,
1333  ppl_const_Congruence_t c) try {
1334  const Congruence& cc = *to_const(c);
1335  *ple = to_nonconst(new Linear_Expression(cc.expression()));
1336  return 0;
1337 }
1338 CATCH_ALL
1339 
1340 /* Interface for Congruence_System. */
1341 
1342 int
1343 ppl_new_Congruence_System(ppl_Congruence_System_t* pcs) try {
1344  *pcs = to_nonconst(new Congruence_System());
1345  return 0;
1346 }
1347 CATCH_ALL
1348 
1349 int
1350 ppl_new_Congruence_System_zero_dim_empty(ppl_Congruence_System_t* pcs) try {
1351  *pcs = to_nonconst(new
1353  return 0;
1354 }
1355 CATCH_ALL
1356 
1357 
1358 int
1359 ppl_new_Congruence_System_from_Congruence(ppl_Congruence_System_t* pcs,
1360  ppl_const_Congruence_t c) try {
1361  const Congruence& cc = *to_const(c);
1362  *pcs = to_nonconst(new Congruence_System(cc));
1363  return 0;
1364 }
1365 CATCH_ALL
1366 
1367 int
1369 (ppl_Congruence_System_t* pcs, ppl_const_Congruence_System_t cs) try {
1370  const Congruence_System& ccs = *to_const(cs);
1371  *pcs = to_nonconst(new Congruence_System(ccs));
1372  return 0;
1373 }
1374 CATCH_ALL
1375 
1376 int
1377 ppl_delete_Congruence_System(ppl_const_Congruence_System_t cs) try {
1378  delete to_const(cs);
1379  return 0;
1380 }
1381 CATCH_ALL
1382 
1383 int
1385 (ppl_Congruence_System_t dst, ppl_const_Congruence_System_t src) try {
1386  const Congruence_System& ssrc = *to_const(src);
1387  Congruence_System& ddst = *to_nonconst(dst);
1388  ddst = ssrc;
1389  return 0;
1390 }
1391 CATCH_ALL
1392 
1393 int
1394 ppl_Congruence_System_space_dimension(ppl_const_Congruence_System_t cs,
1395  ppl_dimension_type* m) try {
1396  *m = to_const(cs)->space_dimension();
1397  return 0;
1398 }
1399 CATCH_ALL
1400 
1401 int
1403 (ppl_const_Congruence_System_t cs) try {
1404  const Congruence_System& ccs = *to_const(cs);
1405  return ccs.empty() ? 1 : 0;
1406 }
1407 CATCH_ALL
1408 
1409 int
1410 ppl_Congruence_System_clear(ppl_Congruence_System_t cs) try {
1411  to_nonconst(cs)->clear();
1412  return 0;
1413 }
1414 CATCH_ALL
1415 
1416 int
1417 ppl_Congruence_System_insert_Congruence(ppl_Congruence_System_t cs,
1418  ppl_const_Congruence_t c) try {
1419  const Congruence& cc = *to_const(c);
1420  Congruence_System& ccs = *to_nonconst(cs);
1421  ccs.insert(cc);
1422  return 0;
1423 }
1424 CATCH_ALL
1425 
1426 int
1427 ppl_Congruence_System_OK(ppl_const_Congruence_System_t cs) try {
1428  return to_const(cs)->OK() ? 1 : 0;
1429 }
1430 CATCH_ALL
1431 
1432 /* Interface for Congruence_System::const_iterator. */
1433 
1434 int
1436 (ppl_Congruence_System_const_iterator_t* pcit) try {
1437  *pcit = to_nonconst(new Congruence_System::const_iterator());
1438  return 0;
1439 }
1440 CATCH_ALL
1441 
1442 int
1444 (ppl_Congruence_System_const_iterator_t* pcit,
1445  ppl_const_Congruence_System_const_iterator_t cit) try {
1446  *pcit = to_nonconst(new Congruence_System::const_iterator(*to_const(cit)));
1447  return 0;
1448 }
1449 CATCH_ALL
1450 
1451 int
1453 (ppl_const_Congruence_System_const_iterator_t cit)
1454  try {
1455  delete to_const(cit);
1456  return 0;
1457 }
1458 CATCH_ALL
1459 
1460 int
1462 (ppl_Congruence_System_const_iterator_t dst,
1463  ppl_const_Congruence_System_const_iterator_t src) try {
1464  const Congruence_System::const_iterator& ssrc = *to_const(src);
1465  Congruence_System::const_iterator& ddst = *to_nonconst(dst);
1466  ddst = ssrc;
1467  return 0;
1468 }
1469 CATCH_ALL
1470 
1471 int
1472 ppl_Congruence_System_begin(ppl_const_Congruence_System_t cs,
1473  ppl_Congruence_System_const_iterator_t cit) try {
1474  const Congruence_System& ccs = *to_const(cs);
1475  Congruence_System::const_iterator& ccit = *to_nonconst(cit);
1476  ccit = ccs.begin();
1477  return 0;
1478 }
1479 CATCH_ALL
1480 
1481 int
1482 ppl_Congruence_System_end(ppl_const_Congruence_System_t cs,
1483  ppl_Congruence_System_const_iterator_t cit) try {
1484  const Congruence_System& ccs = *to_const(cs);
1485  Congruence_System::const_iterator& ccit = *to_nonconst(cit);
1486  ccit = ccs.end();
1487  return 0;
1488 }
1489 CATCH_ALL
1490 
1491 int
1493 (ppl_const_Congruence_System_const_iterator_t cit,
1494  ppl_const_Congruence_t* pc) try {
1495  const Congruence_System::const_iterator& ccit = *to_const(cit);
1496  const Congruence& c = *ccit;
1497  *pc = to_const(&c);
1498  return 0;
1499 }
1500 CATCH_ALL
1501 
1502 int
1504 (ppl_Congruence_System_const_iterator_t cit) try {
1505  Congruence_System::const_iterator& ccit = *to_nonconst(cit);
1506  ++ccit;
1507  return 0;
1508 }
1509 CATCH_ALL
1510 
1511 int
1513 (ppl_const_Congruence_System_const_iterator_t x,
1514  ppl_const_Congruence_System_const_iterator_t y) try {
1515  const Congruence_System::const_iterator& xx = *to_const(x);
1516  const Congruence_System::const_iterator& yy = *to_const(y);
1517  return (xx == yy) ? 1 : 0;
1518 }
1519 CATCH_ALL
1520 
1521 /* Interface for Grid_Generator. */
1522 
1523 int
1524 ppl_new_Grid_Generator(ppl_Grid_Generator_t* pg,
1525  ppl_const_Linear_Expression_t le,
1527  ppl_const_Coefficient_t d) try {
1528  Grid_Generator* ppg;
1529  const Linear_Expression& lle = *to_const(le);
1530  const Coefficient& dd = *to_const(d);
1531  switch (t) {
1533  ppg = new Grid_Generator(Grid_Generator::grid_line(lle));
1534  break;
1536  ppg = new Grid_Generator(Grid_Generator::parameter(lle));
1537  break;
1539  ppg = new Grid_Generator(Grid_Generator::grid_point(lle, dd));
1540  break;
1541  default:
1542  throw std::invalid_argument("ppl_new_Grid_Generator(pg, le, t, d): "
1543  "t invalid");
1544  }
1545  *pg = to_nonconst(ppg);
1546  return 0;
1547 }
1548 CATCH_ALL
1549 
1550 int
1551 ppl_new_Grid_Generator_zero_dim_point(ppl_Grid_Generator_t* pg) try {
1552  *pg = to_nonconst(new Grid_Generator(Grid_Generator::zero_dim_point()));
1553  return 0;
1554 }
1555 CATCH_ALL
1556 
1557 int
1559  ppl_const_Grid_Generator_t g) try {
1560  const Grid_Generator& gg = *to_const(g);
1561  *pg = to_nonconst(new Grid_Generator(gg));
1562  return 0;
1563 }
1564 CATCH_ALL
1565 
1566 int
1567 ppl_delete_Grid_Generator(ppl_const_Grid_Generator_t le) try {
1568  delete to_const(le);
1569  return 0;
1570 }
1571 CATCH_ALL
1572 
1573 int
1575 (ppl_Grid_Generator_t dst,
1576  ppl_const_Grid_Generator_t src) try {
1577  const Grid_Generator& ssrc = *to_const(src);
1578  Grid_Generator& ddst = *to_nonconst(dst);
1579  ddst = ssrc;
1580  return 0;
1581 }
1582 CATCH_ALL
1583 
1584 int
1585 ppl_Grid_Generator_space_dimension(ppl_const_Grid_Generator_t g,
1586  ppl_dimension_type* m) try {
1587  *m = to_const(g)->space_dimension();
1588  return 0;
1589 }
1590 CATCH_ALL
1591 
1592 int
1593 ppl_Grid_Generator_type(ppl_const_Grid_Generator_t g) try {
1594  switch (to_const(g)->type()) {
1595  case Grid_Generator::LINE:
1599  case Grid_Generator::POINT:
1601  }
1602  PPL_UNREACHABLE;
1603 }
1604 CATCH_ALL
1605 
1606 int
1607 ppl_Grid_Generator_coefficient(ppl_const_Grid_Generator_t g,
1608  ppl_dimension_type var,
1609  ppl_Coefficient_t n) try {
1610  const Grid_Generator& gg = *to_const(g);
1611  Coefficient& nn = *to_nonconst(n);
1612  nn = gg.coefficient(Variable(var));
1613  return 0;
1614 }
1615 CATCH_ALL
1616 
1617 int
1618 ppl_Grid_Generator_divisor(ppl_const_Grid_Generator_t g,
1619  ppl_Coefficient_t n) try {
1620  const Grid_Generator& gg = *to_const(g);
1621  Coefficient& nn = *to_nonconst(n);
1622  nn = gg.divisor();
1623  return 0;
1624 }
1625 CATCH_ALL
1626 
1627 int
1628 ppl_Grid_Generator_OK(ppl_const_Grid_Generator_t g) try {
1629  return to_const(g)->OK() ? 1 : 0;
1630 }
1631 CATCH_ALL
1632 
1633 // FIXME: to be restored soon.
1634 // int
1635 // ppl_new_Linear_Expression_from_Grid_Generator
1636 // (ppl_Linear_Expression_t* ple,
1637 // ppl_const_Grid_Generator_t g) try {
1638 // const Grid_Generator& gg = *to_const(g);
1639 // *ple = to_nonconst(new Linear_Expression(gg));
1640 // return 0;
1641 // }
1642 // CATCH_ALL
1643 
1644 /* Interface for Grid_Generator_System. */
1645 
1646 int
1647 ppl_new_Grid_Generator_System(ppl_Grid_Generator_System_t* pgs) try {
1648  *pgs = to_nonconst(new Grid_Generator_System());
1649  return 0;
1650 }
1651 CATCH_ALL
1652 
1653 int
1655 (ppl_Grid_Generator_System_t* pgs) try {
1656  *pgs = to_nonconst
1658  return 0;
1659 }
1660 CATCH_ALL
1661 
1662 int
1664 (ppl_Grid_Generator_System_t* pgs, ppl_const_Grid_Generator_t g) try {
1665  const Grid_Generator& gg = *to_const(g);
1666  *pgs = to_nonconst(new Grid_Generator_System(gg));
1667  return 0;
1668 }
1669 CATCH_ALL
1670 
1671 int
1673 (ppl_Grid_Generator_System_t* pgs, ppl_const_Grid_Generator_System_t gs) try {
1674  const Grid_Generator_System& ggs = *to_const(gs);
1675  *pgs = to_nonconst(new Grid_Generator_System(ggs));
1676  return 0;
1677 }
1678 CATCH_ALL
1679 
1680 int
1681 ppl_delete_Grid_Generator_System(ppl_const_Grid_Generator_System_t gs) try {
1682  delete to_const(gs);
1683  return 0;
1684 }
1685 CATCH_ALL
1686 
1687 int
1689 (ppl_Grid_Generator_System_t dst, ppl_const_Grid_Generator_System_t src) try {
1690  const Grid_Generator_System& ssrc = *to_const(src);
1691  Grid_Generator_System& ddst = *to_nonconst(dst);
1692  ddst = ssrc;
1693  return 0;
1694 }
1695 CATCH_ALL
1696 
1697 int
1698 ppl_Grid_Generator_System_space_dimension(ppl_const_Grid_Generator_System_t gs,
1699  ppl_dimension_type* m) try {
1700  *m = to_const(gs)->space_dimension();
1701  return 0;
1702 }
1703 CATCH_ALL
1704 
1705 int
1707 (ppl_const_Grid_Generator_System_t gs) try {
1708  const Grid_Generator_System& cgs = *to_const(gs);
1709  return cgs.empty() ? 1 : 0;
1710 }
1711 CATCH_ALL
1712 
1713 int
1714 ppl_Grid_Generator_System_clear(ppl_Grid_Generator_System_t gs) try {
1715  to_nonconst(gs)->clear();
1716  return 0;
1717 }
1718 CATCH_ALL
1719 
1720 int
1722 (ppl_Grid_Generator_System_t gs,
1723  ppl_const_Grid_Generator_t g) try {
1724  const Grid_Generator& gg = *to_const(g);
1725  Grid_Generator_System& ggs = *to_nonconst(gs);
1726  ggs.insert(gg);
1727  return 0;
1728 }
1729 CATCH_ALL
1730 
1731 int
1732 ppl_Grid_Generator_System_OK(ppl_const_Grid_Generator_System_t gs) try {
1733  return to_const(gs)->OK() ? 1 : 0;
1734 }
1735 CATCH_ALL
1736 
1737 /* Interface for Grid_Generator_System::const_iterator. */
1738 
1739 int
1741 (ppl_Grid_Generator_System_const_iterator_t* pgit) try {
1742  *pgit = to_nonconst(new Grid_Generator_System::const_iterator());
1743  return 0;
1744 }
1745 CATCH_ALL
1746 
1747 int
1749 (ppl_Grid_Generator_System_const_iterator_t* pgit,
1750  ppl_const_Grid_Generator_System_const_iterator_t git) try {
1751  *pgit = to_nonconst
1752  (new Grid_Generator_System::const_iterator(*to_const(git)));
1753  return 0;
1754 }
1755 CATCH_ALL
1756 
1757 int
1759 (ppl_const_Grid_Generator_System_const_iterator_t git) try {
1760  delete to_const(git);
1761  return 0;
1762 }
1763 CATCH_ALL
1764 
1765 int
1767 (ppl_Grid_Generator_System_const_iterator_t dst,
1768  ppl_const_Grid_Generator_System_const_iterator_t src) try {
1769  const Grid_Generator_System::const_iterator& ssrc = *to_const(src);
1770  Grid_Generator_System::const_iterator& ddst = *to_nonconst(dst);
1771  ddst = ssrc;
1772  return 0;
1773 }
1774 CATCH_ALL
1775 
1776 int
1778 (ppl_const_Grid_Generator_System_t gs,
1779  ppl_Grid_Generator_System_const_iterator_t git) try {
1780  const Grid_Generator_System& ggs = *to_const(gs);
1781  Grid_Generator_System::const_iterator& ggit = *to_nonconst(git);
1782  ggit = ggs.begin();
1783  return 0;
1784 }
1785 CATCH_ALL
1786 
1787 int
1789 (ppl_const_Grid_Generator_System_t gs,
1790  ppl_Grid_Generator_System_const_iterator_t git) try {
1791  const Grid_Generator_System& ggs = *to_const(gs);
1792  Grid_Generator_System::const_iterator& ggit = *to_nonconst(git);
1793  ggit = ggs.end();
1794  return 0;
1795 }
1796 CATCH_ALL
1797 
1798 int
1800 (ppl_const_Grid_Generator_System_const_iterator_t git,
1801  ppl_const_Grid_Generator_t* pg) try {
1802  const Grid_Generator_System::const_iterator& ggit = *to_const(git);
1803  const Grid_Generator& g = *ggit;
1804  *pg = to_const(&g);
1805  return 0;
1806 }
1807 CATCH_ALL
1808 
1809 int
1811 (ppl_Grid_Generator_System_const_iterator_t git) try {
1812  Grid_Generator_System::const_iterator& ggit = *to_nonconst(git);
1813  ++ggit;
1814  return 0;
1815 }
1816 CATCH_ALL
1817 
1818 int
1820 (ppl_const_Grid_Generator_System_const_iterator_t x,
1821  ppl_const_Grid_Generator_System_const_iterator_t y) try {
1822  const Grid_Generator_System::const_iterator& xx = *to_const(x);
1823  const Grid_Generator_System::const_iterator& yy = *to_const(y);
1824  return (xx == yy) ? 1 : 0;
1825 }
1826 CATCH_ALL
1827 
1828 int
1830  ppl_dimension_type d) try {
1831  *pmip = to_nonconst(new MIP_Problem(d));
1832  return 0;
1833 }
1834 CATCH_ALL
1835 
1836 int
1837 ppl_new_MIP_Problem(ppl_MIP_Problem_t* pmip,
1839  ppl_const_Constraint_System_t cs,
1840  ppl_const_Linear_Expression_t le, int m) try {
1841  const Constraint_System& ccs = *to_const(cs);
1842  const Linear_Expression& lle = *to_const(le);
1845  *pmip = to_nonconst(new MIP_Problem(d, ccs, lle, mm));
1846  return 0;
1847 }
1848 CATCH_ALL
1849 
1850 int
1852  ppl_const_MIP_Problem_t mip) try {
1853  const MIP_Problem& mmip = *to_const(mip);
1854  *pmip = to_nonconst(new MIP_Problem(mmip));
1855  return 0;
1856 }
1857 CATCH_ALL
1858 
1859 int
1860 ppl_delete_MIP_Problem(ppl_const_MIP_Problem_t mip) try {
1861  delete to_const(mip);
1862  return 0;
1863 }
1864 CATCH_ALL
1865 
1866 int
1868  ppl_const_MIP_Problem_t src) try {
1869  const MIP_Problem& ssrc = *to_const(src);
1870  MIP_Problem& ddst = *to_nonconst(dst);
1871  ddst = ssrc;
1872  return 0;
1873 }
1874 CATCH_ALL
1875 
1876 int
1877 ppl_MIP_Problem_space_dimension(ppl_const_MIP_Problem_t mip,
1878  ppl_dimension_type* m) try {
1879  *m = to_const(mip)->space_dimension();
1880  return 0;
1881 }
1882 CATCH_ALL
1883 
1884 int
1886  ppl_dimension_type* m) try {
1887  const MIP_Problem& mmip = *to_const(mip);
1888  *m = mmip.integer_space_dimensions().size();
1889  return 0;
1890 }
1891 CATCH_ALL
1892 
1893 int
1894 ppl_MIP_Problem_integer_space_dimensions(ppl_const_MIP_Problem_t mip,
1895  ppl_dimension_type ds[]) try {
1896  const Variables_Set& vars = to_const(mip)->integer_space_dimensions();
1897  ppl_dimension_type* ds_i = ds;
1898  for (Variables_Set::const_iterator v_iter = vars.begin(),
1899  v_end = vars.end(); v_iter != v_end; ++v_iter, ++ds_i)
1900  *ds_i = *v_iter;
1901  return 0;
1902 }
1903 CATCH_ALL
1904 
1905 int
1906 ppl_MIP_Problem_number_of_constraints(ppl_const_MIP_Problem_t mip,
1907  ppl_dimension_type* m) try {
1908  const MIP_Problem& mmip = *to_const(mip);
1909  *m = static_cast<ppl_dimension_type>(mmip.constraints_end() - mmip.constraints_begin());
1910  return 0;
1911 }
1912 CATCH_ALL
1913 
1914 int
1915 ppl_MIP_Problem_constraint_at_index(ppl_const_MIP_Problem_t mip,
1917  ppl_const_Constraint_t* pc) try {
1918 #ifndef NDEBUG
1920  ppl_MIP_Problem_number_of_constraints(mip, &num_constraints);
1921  assert(i < num_constraints);
1922 #endif
1923  const MIP_Problem& mmip = *to_const(mip);
1924  const Constraint& c = *(mmip.constraints_begin() + i);
1925  *pc = to_const(&c);
1926  return 0;
1927 }
1928 CATCH_ALL
1929 
1930 int
1931 ppl_MIP_Problem_objective_function(ppl_const_MIP_Problem_t mip,
1932  ppl_const_Linear_Expression_t* ple) try {
1933  const Linear_Expression& le = to_const(mip)->objective_function();
1934  *ple = to_const(&le);
1935  return 0;
1936 }
1937 CATCH_ALL
1938 
1939 int
1940 ppl_MIP_Problem_optimization_mode(ppl_const_MIP_Problem_t mip) try {
1941  return to_const(mip)->optimization_mode();
1942 }
1943 CATCH_ALL
1944 
1945 int
1946 ppl_MIP_Problem_clear(ppl_MIP_Problem_t mip) try {
1947  to_nonconst(mip)->clear();
1948  return 0;
1949 }
1950 CATCH_ALL
1951 
1952 int
1954  ppl_dimension_type d) try {
1955  MIP_Problem& mmip = *to_nonconst(mip);
1957  return 0;
1958 }
1959 CATCH_ALL
1960 
1961 int
1963  ppl_dimension_type ds[],
1964  size_t n) try {
1965  MIP_Problem& mmip = *to_nonconst(mip);
1966  Variables_Set vars;
1967  for (ppl_dimension_type i = n; i-- > 0; )
1968  vars.insert(ds[i]);
1970  return 0;
1971 }
1972 CATCH_ALL
1973 
1974 int
1975 ppl_MIP_Problem_add_constraint(ppl_MIP_Problem_t mip,
1976  ppl_const_Constraint_t c) try {
1977  const Constraint& cc = *to_const(c);
1978  MIP_Problem& mmip = *to_nonconst(mip);
1979  mmip.add_constraint(cc);
1980  return 0;
1981 }
1982 CATCH_ALL
1983 
1984 int
1985 ppl_MIP_Problem_add_constraints(ppl_MIP_Problem_t mip,
1986  ppl_const_Constraint_System_t cs) try {
1987  const Constraint_System& ccs = *to_const(cs);
1988  MIP_Problem& mmip = *to_nonconst(mip);
1989  mmip.add_constraints(ccs);
1990  return 0;
1991 }
1992 CATCH_ALL
1993 
1994 int
1996  ppl_const_Linear_Expression_t le) try {
1997  const Linear_Expression& lle = *to_const(le);
1998  MIP_Problem& mmip = *to_nonconst(mip);
1999  mmip.set_objective_function(lle);
2000  return 0;
2001 }
2002 CATCH_ALL
2003 
2004 int
2005 ppl_MIP_Problem_set_optimization_mode(ppl_MIP_Problem_t mip, int mode) try {
2006  MIP_Problem& mmip = *to_nonconst(mip);
2009  mmip.set_optimization_mode(m);
2010  return 0;
2011 }
2012 CATCH_ALL
2013 
2014 int
2015 ppl_MIP_Problem_is_satisfiable(ppl_const_MIP_Problem_t mip) try {
2016  return to_const(mip)->is_satisfiable() ? 1 : 0;
2017 }
2018 CATCH_ALL
2019 
2020 int
2021 ppl_MIP_Problem_solve(ppl_const_MIP_Problem_t mip) try {
2022  return to_const(mip)->solve();
2023 }
2024 CATCH_ALL
2025 
2026 int
2028  ppl_const_Generator_t g,
2029  ppl_Coefficient_t num,
2030  ppl_Coefficient_t den) try {
2031  const MIP_Problem& mmip = *to_const(mip);
2032  const Generator& gg = *to_const(g);
2033  Coefficient& nnum = *to_nonconst(num);
2034  Coefficient& dden = *to_nonconst(den);
2035  mmip.evaluate_objective_function(gg, nnum, dden);
2036  return 0;
2037 }
2038 CATCH_ALL
2039 
2040 int
2041 ppl_MIP_Problem_feasible_point(ppl_const_MIP_Problem_t mip,
2042  ppl_const_Generator_t* pg) try {
2043  const Generator& g = to_const(mip)->feasible_point();
2044  *pg = to_const(&g);
2045  return 0;
2046 }
2047 CATCH_ALL
2048 
2049 int
2050 ppl_MIP_Problem_optimizing_point(ppl_const_MIP_Problem_t mip,
2051  ppl_const_Generator_t* pg) try {
2052  const Generator& g = to_const(mip)->optimizing_point();
2053  *pg = to_const(&g);
2054  return 0;
2055 }
2056 CATCH_ALL
2057 
2058 int
2059 ppl_MIP_Problem_optimal_value(ppl_const_MIP_Problem_t mip,
2060  ppl_Coefficient_t num,
2061  ppl_Coefficient_t den) try {
2062  Coefficient& nnum = *to_nonconst(num);
2063  Coefficient& dden = *to_nonconst(den);
2064  to_const(mip)->optimal_value(nnum, dden);
2065  return 0;
2066 }
2067 CATCH_ALL
2068 
2069 int
2070 ppl_MIP_Problem_get_control_parameter(ppl_const_MIP_Problem_t mip,
2071  int name) try {
2073  = static_cast<MIP_Problem::Control_Parameter_Name>(name);
2074  return to_const(mip)->get_control_parameter(n);
2075 }
2076 CATCH_ALL
2077 
2078 int
2080  int value) try {
2083  to_nonconst(mip)->set_control_parameter(v);
2084  return 0;
2085 }
2086 CATCH_ALL
2087 
2088 int
2089 ppl_MIP_Problem_OK(ppl_const_MIP_Problem_t mip) try {
2090  return to_const(mip)->OK() ? 1 : 0;
2091 }
2092 CATCH_ALL
2093 
2094 int
2095 ppl_MIP_Problem_total_memory_in_bytes(ppl_const_MIP_Problem_t mip,
2096  size_t* sz) try {
2097  *sz = to_const(mip)->total_memory_in_bytes();
2098  return 0;
2099 }
2100 CATCH_ALL
2101 
2102 int
2103 ppl_MIP_Problem_external_memory_in_bytes(ppl_const_MIP_Problem_t mip,
2104  size_t* sz) try {
2105  *sz = to_const(mip)->external_memory_in_bytes();
2106  return 0;
2107 }
2108 CATCH_ALL
2109 
2110 int
2112  ppl_dimension_type d) try {
2113  *ppip = to_nonconst(new PIP_Problem(d));
2114  return 0;
2115 }
2116 CATCH_ALL
2117 
2118 int
2120  ppl_const_PIP_Problem_t pip) try {
2121  const PIP_Problem& spip = *to_const(pip);
2122  *dpip = to_nonconst(new PIP_Problem(spip));
2123  return 0;
2124 }
2125 CATCH_ALL
2126 
2127 int
2129 (ppl_PIP_Problem_t* ppip,
2131  ppl_Constraint_System_const_iterator_t first,
2132  ppl_Constraint_System_const_iterator_t last,
2133  size_t n,
2134  ppl_dimension_type ds[]) try {
2135  Variables_Set p_vars;
2136  for (ppl_dimension_type i = n; i-- > 0; )
2137  p_vars.insert(ds[i]);
2138  *ppip = to_nonconst(new PIP_Problem(d, *to_const(first),
2139  *to_const(last), p_vars));
2140  return 0;
2141 }
2142 CATCH_ALL
2143 
2144 int
2146  ppl_const_PIP_Problem_t src) try {
2147  const PIP_Problem& ssrc = *to_const(src);
2148  PIP_Problem& ddst = *to_nonconst(dst);
2149  ddst = ssrc;
2150  return 0;
2151 }
2152 CATCH_ALL
2153 
2154 int
2155 ppl_delete_PIP_Problem(ppl_const_PIP_Problem_t pip) try {
2156  delete to_const(pip);
2157  return 0;
2158 }
2159 CATCH_ALL
2160 
2161 int
2162 ppl_PIP_Problem_space_dimension(ppl_const_PIP_Problem_t pip,
2163  ppl_dimension_type* m) try {
2164  *m = to_const(pip)->space_dimension();
2165  return 0;
2166 }
2167 CATCH_ALL
2168 
2169 int
2171 (ppl_const_PIP_Problem_t pip, ppl_dimension_type* m) try {
2172  const PIP_Problem& ppip = *to_const(pip);
2173  *m = ppip.parameter_space_dimensions().size();
2174  return 0;
2175 }
2176 CATCH_ALL
2177 
2178 int
2180  ppl_dimension_type ds[]) try {
2181  const Variables_Set& vars = to_const(pip)->parameter_space_dimensions();
2182  ppl_dimension_type* ds_i = ds;
2183  for (Variables_Set::const_iterator v_iter = vars.begin(),
2184  v_end = vars.end(); v_iter != v_end; ++v_iter, ++ds_i)
2185  *ds_i = *v_iter;
2186  return 0;
2187 }
2188 CATCH_ALL
2189 
2190 int
2191 ppl_PIP_Problem_number_of_constraints(ppl_const_PIP_Problem_t pip,
2192  ppl_dimension_type* m) try {
2193  const PIP_Problem& ppip = *to_const(pip);
2194  *m = static_cast<ppl_dimension_type>(ppip.constraints_end() - ppip.constraints_begin());
2195  return 0;
2196 }
2197 CATCH_ALL
2198 
2199 int
2200 ppl_PIP_Problem_constraint_at_index(ppl_const_PIP_Problem_t pip,
2202  ppl_const_Constraint_t* pc) try {
2203 #ifndef NDEBUG
2205  ppl_PIP_Problem_number_of_constraints(pip, &num_constraints);
2206  assert(i < num_constraints);
2207 #endif
2208  const PIP_Problem& ppip = *to_const(pip);
2209  const Constraint& c = *(ppip.constraints_begin() + i);
2210  *pc = to_const(&c);
2211  return 0;
2212 }
2213 CATCH_ALL
2214 int
2215 ppl_PIP_Problem_clear(ppl_PIP_Problem_t pip) try {
2216  to_nonconst(pip)->clear();
2217  return 0;
2218 }
2219 CATCH_ALL
2220 int
2222  ppl_dimension_type pip_vars,
2223  ppl_dimension_type pip_params)
2224  try {
2225  PIP_Problem& spip = *to_nonconst(pip);
2226  spip.add_space_dimensions_and_embed(pip_vars,pip_params);
2227  return 0;
2228 }
2229 CATCH_ALL
2230 int
2232  ppl_dimension_type ds[],
2233  size_t n) try {
2234  PIP_Problem& ppip = *to_nonconst(pip);
2235  Variables_Set vars;
2236  for (ppl_dimension_type i = n; i-- > 0; )
2237  vars.insert(ds[i]);
2239  return 0;
2240 }
2241 CATCH_ALL
2242 int
2243 ppl_PIP_Problem_add_constraint(ppl_PIP_Problem_t pip,
2244  ppl_const_Constraint_t c) try {
2245  const Constraint& cc = *to_const(c);
2246  PIP_Problem& ppip = *to_nonconst(pip);
2247  ppip.add_constraint(cc);
2248  return 0;
2249 }
2250 CATCH_ALL
2251 
2252 int
2253 ppl_PIP_Problem_add_constraints(ppl_PIP_Problem_t pip,
2254  ppl_const_Constraint_System_t cs) try {
2255  const Constraint_System& ccs = *to_const(cs);
2256  PIP_Problem& ppip = *to_nonconst(pip);
2257  ppip.add_constraints(ccs);
2258  return 0;
2259 }
2260 CATCH_ALL
2261 int
2262 ppl_PIP_Problem_is_satisfiable(ppl_const_PIP_Problem_t pip) try {
2263  return to_const(pip)->is_satisfiable() ? 1 : 0;
2264 }
2265 CATCH_ALL
2266 int
2267 ppl_PIP_Problem_solve(ppl_const_PIP_Problem_t pip) try {
2268  return to_const(pip)->solve();
2269 }
2270 CATCH_ALL
2271 
2272 int
2273 ppl_PIP_Problem_solution(ppl_const_PIP_Problem_t pip,
2274  ppl_const_PIP_Tree_Node_t* ppip_tree) try {
2275  *ppip_tree = to_const(to_const(pip)->solution());
2276  return 0;
2277 }
2278 CATCH_ALL
2279 
2280 int
2281 ppl_PIP_Problem_optimizing_solution(ppl_const_PIP_Problem_t pip,
2282  ppl_const_PIP_Tree_Node_t* ppip_tree) try {
2283  *ppip_tree = to_const(to_const(pip)->optimizing_solution());
2284  return 0;
2285 }
2286 CATCH_ALL
2287 
2288 int
2289 ppl_PIP_Problem_OK(ppl_const_PIP_Problem_t pip) try {
2290  return to_const(pip)->OK() ? 1 : 0;
2291 }
2292 CATCH_ALL
2293 
2294 int
2295 ppl_PIP_Problem_get_control_parameter(ppl_const_PIP_Problem_t pip,
2296  int name) try {
2298  = static_cast<PIP_Problem::Control_Parameter_Name>(name);
2299  return to_const(pip)->get_control_parameter(n);
2300 }
2301 CATCH_ALL
2302 
2303 int
2305  int value) try {
2308  to_nonconst(pip)->set_control_parameter(v);
2309  return 0;
2310 }
2311 CATCH_ALL
2312 
2313 int
2315  ppl_dimension_type* pd) try {
2316  *pd = to_const(pip)->get_big_parameter_dimension();
2317  return 0;
2318 }
2319 CATCH_ALL
2320 
2321 int
2323  ppl_dimension_type d) try {
2324  to_nonconst(pip)->set_big_parameter_dimension(d);
2325  return 0;
2326 }
2327 CATCH_ALL
2328 
2329 int
2330 ppl_PIP_Problem_total_memory_in_bytes(ppl_const_PIP_Problem_t pip,
2331  size_t* sz) try {
2332  *sz = to_const(pip)->total_memory_in_bytes();
2333  return 0;
2334 }
2335 CATCH_ALL
2336 
2337 int
2338 ppl_PIP_Problem_external_memory_in_bytes(ppl_const_PIP_Problem_t pip,
2339  size_t* sz) try {
2340  *sz = to_const(pip)->external_memory_in_bytes();
2341  return 0;
2342 }
2343 CATCH_ALL
2344 
2345 int
2346 ppl_PIP_Tree_Node_as_solution(ppl_const_PIP_Tree_Node_t spip_tree,
2347  ppl_const_PIP_Solution_Node_t* dpip_tree) try {
2348  *dpip_tree = to_const(to_const(spip_tree)->as_solution());
2349  return 0;
2350 }
2351 CATCH_ALL
2352 
2353 int
2354 ppl_PIP_Tree_Node_as_decision(ppl_const_PIP_Tree_Node_t spip_tree,
2355  ppl_const_PIP_Decision_Node_t* dpip_tree) try {
2356  *dpip_tree = to_const(to_const(spip_tree)->as_decision());
2357  return 0;
2358 }
2359 CATCH_ALL
2360 
2361 int
2362 ppl_PIP_Tree_Node_get_constraints(ppl_const_PIP_Tree_Node_t pip_tree,
2363  ppl_const_Constraint_System_t* pcs) try {
2364  const PIP_Tree_Node& spip_tree = *to_const(pip_tree);
2365  const Constraint_System& cs = spip_tree.constraints();
2366  *pcs = to_const(&cs);
2367  return 0;
2368 }
2369 CATCH_ALL
2370 
2371 int
2372 ppl_PIP_Tree_Node_OK(ppl_const_PIP_Tree_Node_t pip_tree) try {
2373  return to_const(pip_tree)->OK() ? 1 : 0;
2374 }
2375 CATCH_ALL
2376 
2377 int
2378 ppl_PIP_Tree_Node_number_of_artificials(ppl_const_PIP_Tree_Node_t pip_tree,
2379  ppl_dimension_type* m) try {
2380  const PIP_Tree_Node& node = *to_const(pip_tree);
2381  *m = node.art_parameter_count();
2382  return 0;
2383 }
2384 CATCH_ALL
2385 
2386 int
2388 (ppl_const_PIP_Tree_Node_t pip_tree,
2389  ppl_Artificial_Parameter_Sequence_const_iterator_t pit) try {
2390  PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator& spit
2391  = *to_nonconst(pit);
2392  spit = to_const(pip_tree)->art_parameter_begin();
2393  return 0;
2394 }
2395 CATCH_ALL
2396 
2397 int
2399 (ppl_const_PIP_Tree_Node_t pip_tree,
2400  ppl_Artificial_Parameter_Sequence_const_iterator_t pit) try {
2401  PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator& spit
2402  = *to_nonconst(pit);
2403  spit = to_const(pip_tree)->art_parameter_end();
2404  return 0;
2405 }
2406 CATCH_ALL
2407 
2408 int
2410  (ppl_const_PIP_Solution_Node_t pip_sol,
2411  ppl_dimension_type var,
2412  ppl_const_Linear_Expression_t* le) try {
2413  const PIP_Solution_Node& spip_sol = *to_const(pip_sol);
2414  const Linear_Expression& lle = spip_sol.parametric_values(Variable(var));
2415  *le = to_const(&lle);
2416  return 0;
2417 }
2418 CATCH_ALL
2419 
2420 int
2421 ppl_PIP_Solution_Node_OK(ppl_const_PIP_Solution_Node_t pip_sol) try {
2422  return to_const(pip_sol)->OK() ? 1 : 0;
2423 }
2424 CATCH_ALL
2425 
2426 int
2427 ppl_PIP_Decision_Node_OK(ppl_const_PIP_Decision_Node_t pip_dec) try {
2428  return to_const(pip_dec)->OK() ? 1 : 0;
2429 }
2430 CATCH_ALL
2431 
2432 int
2433 ppl_PIP_Decision_Node_get_child_node(ppl_const_PIP_Decision_Node_t pip_dec,
2434  int b,
2435  ppl_const_PIP_Tree_Node_t* pip_tree) try {
2436  *pip_tree = to_const(to_const(pip_dec)->child_node(b != 0));
2437  return 0;
2438 }
2439 CATCH_ALL
2440 
2441 int
2443 (ppl_const_Artificial_Parameter_t ap,
2444  ppl_Linear_Expression_t le) try {
2445  const Artificial_Parameter& sap = *to_const(ap);
2446  Linear_Expression& lle = *to_nonconst(le);
2447  lle = sap;
2448  return 0;
2449 }
2450 CATCH_ALL
2451 
2452 int
2453 ppl_Artificial_Parameter_coefficient(ppl_const_Artificial_Parameter_t ap,
2454  ppl_dimension_type var,
2455  ppl_Coefficient_t n) try {
2456  const Artificial_Parameter& sap = *to_const(ap);
2457  Coefficient& nn = *to_nonconst(n);
2458  nn = sap.coefficient(Variable(var));
2459  return 0;
2460 }
2461 CATCH_ALL
2462 
2463 int
2465 (ppl_const_Artificial_Parameter_t ap, ppl_Coefficient_t n) try {
2466  const Artificial_Parameter& sap = *to_const(ap);
2467  Coefficient& nn = *to_nonconst(n);
2468  nn = sap.inhomogeneous_term();
2469  return 0;
2470 }
2471 CATCH_ALL
2472 
2473 
2474 int
2475 ppl_Artificial_Parameter_denominator(ppl_const_Artificial_Parameter_t ap,
2476  ppl_Coefficient_t n) try {
2477  const Artificial_Parameter& sap = *to_const(ap);
2478  Coefficient& nn = *to_nonconst(n);
2479  nn = sap.denominator();
2480  return 0;
2481 }
2482 CATCH_ALL
2483 
2484 
2485 /* Interface for Artificial_Parameter_Sequence::const_iterator. */
2486 
2487 int
2489 (ppl_Artificial_Parameter_Sequence_const_iterator_t* papit) try {
2490  *papit = to_nonconst(new Artificial_Parameter_Sequence::const_iterator());
2491  return 0;
2492 }
2493 CATCH_ALL
2494 
2495 int
2497 (ppl_Artificial_Parameter_Sequence_const_iterator_t* papit,
2498  ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit) try {
2499  *papit = to_nonconst(new Artificial_Parameter_Sequence::const_iterator(*to_const(apit)));
2500  return 0;
2501 }
2502 CATCH_ALL
2503 
2504 int
2506 (ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit)
2507  try {
2508  delete to_const(apit);
2509  return 0;
2510 }
2511 CATCH_ALL
2512 
2513 int
2515 (ppl_Artificial_Parameter_Sequence_const_iterator_t dst,
2516  ppl_const_Artificial_Parameter_Sequence_const_iterator_t src) try {
2517  const Artificial_Parameter_Sequence::const_iterator& ssrc = *to_const(src);
2518  Artificial_Parameter_Sequence::const_iterator& ddst = *to_nonconst(dst);
2519  ddst = ssrc;
2520  return 0;
2521 }
2522 CATCH_ALL
2523 
2524 int
2526 (ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit,
2527  ppl_const_Artificial_Parameter_t* pap) try {
2528  const Artificial_Parameter_Sequence::const_iterator& papit = *to_const(apit);
2529  const Artificial_Parameter& ap = *papit;
2530  *pap = to_const(&ap);
2531  return 0;
2532 }
2533 CATCH_ALL
2534 
2535 int
2537 (ppl_Artificial_Parameter_Sequence_const_iterator_t apit) try {
2538  Artificial_Parameter_Sequence::const_iterator& papit = *to_nonconst(apit);
2539  ++papit;
2540  return 0;
2541 }
2542 CATCH_ALL
2543 
2544 int
2546 (ppl_const_Artificial_Parameter_Sequence_const_iterator_t x,
2547  ppl_const_Artificial_Parameter_Sequence_const_iterator_t y) try {
2548  const Artificial_Parameter_Sequence::const_iterator& xx = *to_const(x);
2549  const Artificial_Parameter_Sequence::const_iterator& yy = *to_const(y);
2550  return (xx == yy) ? 1 : 0;
2551 }
2552 CATCH_ALL
2553 
2554 int
2556  const char* b = c_variable_output_function(var);
2557  if (b == 0 || puts(b) < 0)
2558  return PPL_STDIO_ERROR;
2559  return 0;
2560 }
2561 CATCH_ALL
2562 
2563 int
2565  const char* b = c_variable_output_function(var);
2566  if (b == 0 || fputs(b, stream) < 0)
2567  return PPL_STDIO_ERROR;
2568  return 0;
2569 }
2570 CATCH_ALL
2571 
2572 int
2574  const char* b = c_variable_output_function(var);
2575  if (b == 0)
2576  return PPL_STDIO_ERROR;
2577  *strp = strdup(b);
2578  if (*strp == 0)
2579  return PPL_ERROR_OUT_OF_MEMORY;
2580  return 0;
2581 }
2582 CATCH_ALL
2583 
2584 /* No ascii dump for Coefficient. */
2586 
2588 
2590 
2592 
2594 
2596 
2598 
2600 
2602 
2604 
2606 
2608 
2610 
2612 
2614 
2615 DEFINE_OUTPUT_FUNCTIONS(Artificial_Parameter)
2616 
2617 char*
2618 ppl_io_wrap_string(const char* src,
2619  unsigned indent_depth,
2620  unsigned preferred_first_line_length,
2621  unsigned preferred_line_length) {
2622  using namespace IO_Operators;
2623  return strdup(wrap_string(src, indent_depth,
2624  preferred_first_line_length,
2625  preferred_line_length).c_str());
2626 }
2627 
2628 int
2630 try {
2631  c_variable_output_function = p;
2632  return 0;
2633 }
2634 CATCH_ALL
2635 
2636 int
2638 try {
2639  *pp = c_variable_output_function;
2640  return 0;
2641 }
2642 CATCH_ALL
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Congruence_System_const_iterator_from_Congruence_System_const_iterator(ppl_Congruence_System_const_iterator_t dst, ppl_const_Congruence_System_const_iterator_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION char * ppl_io_wrap_string(const char *src, unsigned indent_depth, unsigned preferred_first_line_length, unsigned preferred_line_length)
Utility function for the wrapping of lines of text.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_OK(ppl_const_MIP_Problem_t mip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System_from_Congruence_System(ppl_Congruence_System_t *pcs, ppl_const_Congruence_System_t cs)
#define CONVERSION
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System_from_Congruence(ppl_Congruence_System_t *pcs, ppl_const_Congruence_t c)
Enable_If< Is_Native_Or_Checked< To >::value &&Is_Special< From >::value, Result >::type assign_r(To &to, const From &, Rounding_Dir dir)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_total_memory_in_bytes(ppl_const_PIP_Problem_t pip, size_t *sz)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_OK(ppl_const_Grid_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Solution_Node_get_parametric_values(ppl_const_PIP_Solution_Node_t pip_sol, ppl_dimension_type var, ppl_const_Linear_Expression_t *le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Generator_from_Generator(ppl_Generator_t dst, ppl_const_Generator_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_begin(ppl_const_PIP_Tree_Node_t pip_tree, ppl_Artificial_Parameter_Sequence_const_iterator_t pit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_begin(ppl_const_Constraint_System_t cs, ppl_Constraint_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_set_rounding_for_PPL(void)
Sets the FPU rounding mode so that the PPL abstractions based on floating point numbers work correctl...
unsigned int PPL_POLY_CON_RELATION_IS_INCLUDED
Individual bit saying that the polyhedron is included in the set of points satisfying the constraint...
static Poly_Con_Relation is_disjoint()
static Poly_Gen_Relation subsumes()
dimension_type max_space_dimension()
unsigned int PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS
Individual bit saying that the polyhedron intersects the set of points satisfying the constraint...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Constraint_from_Constraint(ppl_Constraint_t dst, ppl_const_Constraint_t src)
int PPL_MIP_PROBLEM_STATUS_UNFEASIBLE
const_iterator constraints_end() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_insert_Congruence(ppl_Congruence_System_t cs, ppl_const_Congruence_t c)
void set_optimization_mode(Optimization_Mode mode)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_divisor(ppl_const_Generator_t g, ppl_Coefficient_t n)
Coefficient_traits::const_reference modulus() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_add_Linear_Expression_to_Linear_Expression(ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src)
int ppl_initialize(void)
Initializes the Parma Polyhedra Library. This function must be called before any other function...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_const_iterator_increment(ppl_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Constraint_System_from_Constraint_System(ppl_Constraint_System_t dst, ppl_const_Constraint_System_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_OK(ppl_const_Generator_System_t gs)
Optimization_Mode
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_evaluate_objective_function(ppl_const_MIP_Problem_t mip, ppl_const_Generator_t g, ppl_Coefficient_t num, ppl_Coefficient_t den)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_inhomogeneous_term(ppl_const_Constraint_t c, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Congruence_System(ppl_const_Congruence_System_t cs)
static const Generator_System & zero_dim_univ()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_integer_space_dimensions(ppl_const_MIP_Problem_t mip, ppl_dimension_type ds[])
void add_constraint(const Constraint &c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_all_homogeneous_terms_are_zero(ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_MIP_Problem(ppl_const_MIP_Problem_t mip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_as_solution(ppl_const_PIP_Tree_Node_t spip_tree, ppl_const_PIP_Solution_Node_t *dpip_tree)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Grid_Generator(ppl_const_Grid_Generator_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_from_Grid_Generator(ppl_Grid_Generator_t *pg, ppl_const_Grid_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_zero_dim_false(ppl_Constraint_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Constraint_System_const_iterator(ppl_const_Constraint_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_set_big_parameter_dimension(ppl_PIP_Problem_t pip, ppl_dimension_type d)
ppl_enum_error_code
Defines the error codes that any function may return.
Definition: ppl_c.h:341
void add_constraints(const Constraint_System &cs)
size_t ppl_dimension_type
An unsigned integral type for representing space dimensions.
Definition: ppl_c.h:506
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_space_dimension(ppl_const_Grid_Generator_t g, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_MIP_Problem_from_MIP_Problem(ppl_MIP_Problem_t dst, ppl_const_MIP_Problem_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_empty(ppl_const_Grid_Generator_System_t gs)
void add_constraints(const Constraint_System &cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_modulus(ppl_const_Congruence_t c, ppl_Coefficient_t m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_PIP_Problem_from_PIP_Problem(ppl_PIP_Problem_t dst, ppl_const_PIP_Problem_t src)
Coefficient_traits::const_reference inhomogeneous_term() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_OK(ppl_const_Generator_t g)
value
const_iterator constraints_end() const
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_ALL
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_OK(ppl_const_Congruence_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_external_memory_in_bytes(ppl_const_PIP_Problem_t pip, size_t *sz)
const Linear_Expression & parametric_values(Variable var) const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_end(ppl_const_Grid_Generator_System_t gs, ppl_Grid_Generator_System_const_iterator_t git)
static const Generator & zero_dim_point()
static output_function_type * get_output_function()
dimension_type not_a_dimension()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_add_constraints(ppl_PIP_Problem_t pip, ppl_const_Constraint_System_t cs)
static Generator ray(const Linear_Expression &e, Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_space_dimension(ppl_const_Generator_t g, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_number_of_parameter_space_dimensions(ppl_const_PIP_Problem_t pip, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint(ppl_Constraint_t *pc, ppl_const_Linear_Expression_t le, enum ppl_enum_Constraint_Type t)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Coefficient_min(mpz_t min)
void add_mul_assign(GMP_Integer &x, const GMP_Integer &y, const GMP_Integer &z)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression_from_Congruence(ppl_Linear_Expression_t *ple, ppl_const_Congruence_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_OK(ppl_const_Grid_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System_zero_dim_empty(ppl_Constraint_System_t *pcs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System_const_iterator(ppl_Grid_Generator_System_const_iterator_t *pgit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_has_strict_inequalities(ppl_const_Constraint_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System(ppl_Generator_System_t *pgs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Decision_Node_get_child_node(ppl_const_PIP_Decision_Node_t pip_dec, int b, ppl_const_PIP_Tree_Node_t *pip_tree)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_solution(ppl_const_PIP_Problem_t pip, ppl_const_PIP_Tree_Node_t *ppip_tree)
static const Constraint_System & zero_dim_empty()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_subtract_Linear_Expression_from_Linear_Expression(ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src)
static const Constraint & zero_dim_false()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_inhomogeneous_term(ppl_const_Linear_Expression_t le, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Grid_Generator_System_const_iterator(ppl_const_Grid_Generator_System_const_iterator_t git)
dimension_type num_constraints(const Constraint_System &cs)
static const Grid_Generator & zero_dim_point()
static const Congruence_System & zero_dim_empty()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_zero_dim_positivity(ppl_Constraint_t *pc)
static Poly_Con_Relation is_included()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_add_constraint(ppl_PIP_Problem_t pip, ppl_const_Constraint_t c)
#define DEFINE_PRINT_FUNCTIONS(Type)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Coefficient_from_mpz_t(ppl_Coefficient_t *pc, mpz_t z)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression_from_Linear_Expression(ppl_Linear_Expression_t *ple, ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_clear(ppl_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_clear(ppl_MIP_Problem_t mip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_io_asprint_variable(char **strp, ppl_dimension_type var)
Pretty-prints var to a malloc-allocated string, a pointer to which is returned via strp...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_OK(ppl_const_Constraint_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_banner(const char **p)
Writes to *p a pointer to a character string containing the PPL banner.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator(ppl_Grid_Generator_System_const_iterator_t *pgit, ppl_const_Grid_Generator_System_const_iterator_t git)
const char * ppl_io_variable_output_function_type(ppl_dimension_type var)
The type of output functions used for printing variables.
Definition: ppl_c.h:550
int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_FLOAT
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Congruence(ppl_const_Congruence_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_solve(ppl_const_PIP_Problem_t pip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_io_fprint_variable(FILE *stream, ppl_dimension_type var)
Pretty-prints var to the given output stream.
#define FORMAT
#define DEFINE_OUTPUT_FUNCTIONS(Type)
static Poly_Con_Relation saturates()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_coefficient(ppl_const_Congruence_t c, ppl_dimension_type var, ppl_Coefficient_t n)
std::string wrap_string(const std::string &src_string, unsigned indent_depth, unsigned preferred_first_line_length, unsigned preferred_line_length)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_parameter_space_dimensions(ppl_const_PIP_Problem_t pip, ppl_dimension_type ds[])
void evaluate_objective_function(const Generator &evaluating_point, Coefficient &numer, Coefficient &denom) const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_begin(ppl_const_Congruence_System_t cs, ppl_Congruence_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_get_constraints(ppl_const_PIP_Tree_Node_t pip_tree, ppl_const_Constraint_System_t *pcs)
Coefficient_traits::const_reference inhomogeneous_term() const
void add_constraint(const Constraint &c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_set_timeout(unsigned csecs)
Sets the timeout for computations whose completion could require an exponential amount of time...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_coefficient(ppl_const_Linear_Expression_t le, ppl_dimension_type var, ppl_Coefficient_t n)
unsigned int PPL_POLY_CON_RELATION_SATURATES
Individual bit saying that the polyhedron is included in the set of points saturating the constraint...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_optimizing_point(ppl_const_MIP_Problem_t mip, ppl_const_Generator_t *pg)
ppl_enum_Constraint_Type
Describes the relations represented by a constraint.
Definition: ppl_c.h:1134
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_solve(ppl_const_MIP_Problem_t mip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_OK(ppl_const_PIP_Tree_Node_t pip_tree)
static Generator closure_point(const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_reset_timeout(void)
Resets the timeout time so that the computation is not interrupted.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System_from_Generator(ppl_Generator_System_t *pgs, ppl_const_Generator_t g)
Coefficient_traits::const_reference coefficient(Variable v) const
void output_function_type(std::ostream &s, const Variable v)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Linear_Expression(ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_const_iterator_equal_test(ppl_const_Grid_Generator_System_const_iterator_t x, ppl_const_Grid_Generator_System_const_iterator_t y)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System_from_Constraint_System(ppl_Constraint_System_t *pcs, ppl_const_Constraint_System_t cs)
void set_irrational_precision(const unsigned p)
Coefficient_traits::const_reference coefficient(Variable v) const
const Variables_Set & integer_space_dimensions() const
int PPL_MIP_PROBLEM_STATUS_UNBOUNDED
dimension_type id() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_MIP_Problem(ppl_MIP_Problem_t *pmip, ppl_dimension_type d, ppl_const_Constraint_System_t cs, ppl_const_Linear_Expression_t le, int m)
static Generator line(const Linear_Expression &e, Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_space_dimension(ppl_const_MIP_Problem_t mip, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_get_Linear_Expression(ppl_const_Artificial_Parameter_t ap, ppl_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_version_revision(void)
Returns the revision number of the PPL version.
static const Congruence & zero_dim_false()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_coefficient(ppl_const_Constraint_t c, ppl_dimension_type var, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_coefficient(ppl_const_Artificial_Parameter_t ap, ppl_dimension_type var, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_max_space_dimension(ppl_dimension_type *m)
Writes to m the maximum space dimension this library can handle.
int PPL_OPTIMIZATION_MODE_MAXIMIZATION
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator(ppl_Grid_Generator_System_const_iterator_t dst, ppl_const_Grid_Generator_System_const_iterator_t src)
unsigned int PPL_COMPLEXITY_CLASS_POLYNOMIAL
Code of the worst-case polynomial complexity class.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_OK(ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_PIP_Problem(ppl_const_PIP_Problem_t pip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_divisor(ppl_const_Grid_Generator_t g, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_restore_pre_PPL_rounding(void)
Sets the FPU rounding mode as it was before initialization of the PPL.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_total_memory_in_bytes(ppl_const_MIP_Problem_t mip, size_t *sz)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_from_Congruence(ppl_Congruence_t *pc, ppl_const_Congruence_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_add_to_parameter_space_dimensions(ppl_PIP_Problem_t pip, ppl_dimension_type ds[], size_t n)
static const Congruence & zero_dim_integrality()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_add_constraint(ppl_MIP_Problem_t mip, ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_const_iterator_dereference(ppl_const_Generator_System_const_iterator_t git, ppl_const_Generator_t *pg)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Artificial_Parameter_Sequence_const_iterator(ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Coefficient_max(mpz_t max)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_insert_Constraint(ppl_Constraint_System_t cs, ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_empty(ppl_const_Generator_System_t gs)
dimension_type art_parameter_count() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_const_iterator_dereference(ppl_const_Constraint_System_const_iterator_t cit, ppl_const_Constraint_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_MIP_Problem_from_MIP_Problem(ppl_MIP_Problem_t *pmip, ppl_const_MIP_Problem_t mip)
const_iterator constraints_begin() const
static Grid_Generator parameter(const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_finalize(void)
Finalizes the Parma Polyhedra Library. This function must be called after any other function...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Coefficient(ppl_Coefficient_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_space_dimension(ppl_const_Grid_Generator_System_t gs, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_from_Generator(ppl_Generator_t *pg, ppl_const_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_denominator(ppl_const_Artificial_Parameter_t ap, ppl_Coefficient_t n)
const Variables_Set & parameter_space_dimensions() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Decision_Node_OK(ppl_const_PIP_Decision_Node_t pip_dec)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression_from_Constraint(ppl_Linear_Expression_t *ple, ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_PIP_Problem_from_constraints(ppl_PIP_Problem_t *ppip, ppl_dimension_type d, ppl_Constraint_System_const_iterator_t first, ppl_Constraint_System_const_iterator_t last, size_t n, ppl_dimension_type ds[])
ppl_enum_Grid_Generator_Type
Describes the different kinds of grid generators.
Definition: ppl_c.h:2036
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Constraint_System_const_iterator_from_Constraint_System_const_iterator(ppl_Constraint_System_const_iterator_t dst, ppl_const_Constraint_System_const_iterator_t src)
Coefficient_traits::const_reference divisor() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System_const_iterator(ppl_Congruence_System_const_iterator_t *pcit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_const_iterator_equal_test(ppl_const_Generator_System_const_iterator_t x, ppl_const_Generator_System_const_iterator_t y)
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_MAX_COLUMN
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_PIP_Problem_from_PIP_Problem(ppl_PIP_Problem_t *dpip, ppl_const_PIP_Problem_t pip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression_from_Generator(ppl_Linear_Expression_t *ple, ppl_const_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Coefficient_from_Coefficient(ppl_Coefficient_t *pc, ppl_const_Coefficient_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Grid_Generator_System_from_Grid_Generator_System(ppl_Grid_Generator_System_t dst, ppl_const_Grid_Generator_System_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_irrational_precision(unsigned *p)
Writes to p the precision parameter used for irrational calculations.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_feasible_point(ppl_const_MIP_Problem_t mip, ppl_const_Generator_t *pg)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_type(ppl_const_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_space_dimension(ppl_const_PIP_Problem_t pip, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Generator_System(ppl_const_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_clear(ppl_Congruence_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Congruence_System_from_Congruence_System(ppl_Congruence_System_t dst, ppl_const_Congruence_System_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_number_of_constraints(ppl_const_PIP_Problem_t pip, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Artificial_Parameter_Sequence_const_iterator(ppl_Artificial_Parameter_Sequence_const_iterator_t *papit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression(ppl_Linear_Expression_t *ple)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Coefficient_to_mpz_t(ppl_const_Coefficient_t c, mpz_t z)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System_const_iterator_from_Constraint_System_const_iterator(ppl_Constraint_System_const_iterator_t *pcit, ppl_const_Constraint_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_as_decision(ppl_const_PIP_Tree_Node_t spip_tree, ppl_const_PIP_Decision_Node_t *dpip_tree)
int PPL_OPTIMIZATION_MODE_MINIMIZATION
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_const_iterator_dereference(ppl_const_Grid_Generator_System_const_iterator_t git, ppl_const_Grid_Generator_t *pg)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_version_major(void)
Returns the major number of the PPL version.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_multiply_Linear_Expression_by_Coefficient(ppl_Linear_Expression_t le, ppl_const_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_version(const char **p)
Writes to *p a pointer to a character string containing the PPL version.
const Constraint_System & constraints() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Constraint_System(ppl_const_Constraint_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_OK(ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_OK(ppl_const_Congruence_System_t cs)
int PPL_MIP_PROBLEM_STATUS_OPTIMIZED
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System_zero_dim_univ(ppl_Grid_Generator_System_t *pgs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_space_dimension(ppl_const_Congruence_System_t cs, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System_from_Constraint(ppl_Constraint_System_t *pcs, ppl_const_Constraint_t c)
int PPL_MIP_PROBLEM_CONTROL_PARAMETER_NAME_PRICING
PPL_COEFFICIENT_TYPE Coefficient
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_coefficient(ppl_const_Generator_t g, ppl_dimension_type var, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_space_dimension(ppl_const_Constraint_t c, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_zero_dim_closure_point(ppl_Generator_t *pg)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_get_control_parameter(ppl_const_MIP_Problem_t mip, int name)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator(ppl_Artificial_Parameter_Sequence_const_iterator_t dst, ppl_const_Artificial_Parameter_Sequence_const_iterator_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_reset_deterministic_timeout(void)
Resets the deterministic timeout so that the computation is not interrupted.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_is_zero(ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_const_iterator_increment(ppl_Congruence_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_set_deterministic_timeout(unsigned long unscaled_weight, unsigned scale)
Sets a threshold for computations whose completion could require an exponential amount of time...
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Generator_System_from_Generator_System(ppl_Generator_System_t dst, ppl_const_Generator_System_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_not_a_dimension(ppl_dimension_type *m)
Writes to m a value that does not designate a valid dimension.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_io_get_variable_output_function(ppl_io_variable_output_function_type **pp)
Writes a pointer to the current variable output function to pp.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_empty(ppl_const_Congruence_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_set_control_parameter(ppl_MIP_Problem_t mip, int value)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_io_print_variable(ppl_dimension_type var)
Pretty-prints var to stdout.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator(ppl_Artificial_Parameter_Sequence_const_iterator_t *papit, ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_is_satisfiable(ppl_const_MIP_Problem_t mip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_OK(ppl_const_PIP_Problem_t pip)
unsigned int PPL_POLY_GEN_RELATION_SUBSUMES
Individual bit saying that adding the generator would not change the polyhedron.
static const Generator & zero_dim_closure_point()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator(ppl_Grid_Generator_t *pg, ppl_const_Linear_Expression_t le, enum ppl_enum_Grid_Generator_Type t, ppl_const_Coefficient_t d)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System_const_iterator(ppl_Generator_System_const_iterator_t *pgit)
int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_EXACT
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_space_dimension(ppl_const_Constraint_System_t cs, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_type(ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_zero_dim_false(ppl_Congruence_t *pc)
int ppl_set_error_handler(error_handler_type h)
int PPL_PIP_PROBLEM_STATUS_UNFEASIBLE
static Generator point(const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_clear(ppl_Grid_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_const_iterator_dereference(ppl_const_Congruence_System_const_iterator_t cit, ppl_const_Congruence_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_optimization_mode(ppl_const_MIP_Problem_t mip)
int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_TEXTBOOK
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_inhomogeneous_term(ppl_const_Artificial_Parameter_t ap, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_Sequence_const_iterator_increment(ppl_Artificial_Parameter_Sequence_const_iterator_t apit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_clear(ppl_PIP_Problem_t pip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_clear(ppl_Constraint_System_t cs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Generator_System_const_iterator_from_Generator_System_const_iterator(ppl_Generator_System_const_iterator_t dst, ppl_const_Generator_System_const_iterator_t src)
unsigned int PPL_COMPLEXITY_CLASS_ANY
Code of the universal complexity class.
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_CUTTING_STRATEGY
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Coefficient_is_bounded(void)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System(ppl_Grid_Generator_System_t *pgs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Linear_Expression_with_dimension(ppl_Linear_Expression_t *ple, ppl_dimension_type d)
static Grid_Generator grid_point(const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_set_optimization_mode(ppl_MIP_Problem_t mip, int mode)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_coefficient(ppl_const_Grid_Generator_t g, ppl_dimension_type var, ppl_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_insert_Generator(ppl_Generator_System_t gs, ppl_const_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_version_beta(void)
Returns the beta number of the PPL version.
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_FIRST
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Congruence_System_const_iterator(ppl_const_Congruence_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_version_minor(void)
Returns the minor number of the PPL version.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_const_iterator_equal_test(ppl_const_Congruence_System_const_iterator_t x, ppl_const_Congruence_System_const_iterator_t y)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_constraint_at_index(ppl_const_PIP_Problem_t pip, ppl_dimension_type i, ppl_const_Constraint_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_const_iterator_increment(ppl_Constraint_System_const_iterator_t cit)
static Grid_Generator grid_line(const Linear_Expression &e, Representation r=default_representation)
int PPL_PIP_PROBLEM_STATUS_OPTIMIZED
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_add_to_integer_space_dimensions(ppl_MIP_Problem_t mip, ppl_dimension_type ds[], size_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Grid_Generator_System(ppl_const_Grid_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Congruence_from_Congruence(ppl_Congruence_t dst, ppl_const_Congruence_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Generator(ppl_const_Generator_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_number_of_integer_space_dimensions(ppl_const_MIP_Problem_t mip, ppl_dimension_type *m)
unsigned irrational_precision()
int ppl_io_set_variable_output_function(ppl_io_variable_output_function_type *p)
Sets the output function to be used for printing variables to p.
static const Grid_Generator_System & zero_dim_univ()
static const Constraint & zero_dim_positivity()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_space_dimension(ppl_const_Linear_Expression_t le, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_insert_Grid_Generator(ppl_Grid_Generator_System_t gs, ppl_const_Grid_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System(ppl_Congruence_System_t *pcs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence(ppl_Congruence_t *pc, ppl_const_Linear_Expression_t le, ppl_const_Coefficient_t m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Coefficient(ppl_const_Coefficient_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_from_Constraint(ppl_Constraint_t *pc, ppl_const_Constraint_t c)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System_from_Grid_Generator_System(ppl_Grid_Generator_System_t *pgs, ppl_const_Grid_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_space_dimension(ppl_const_Congruence_t c, ppl_dimension_type *m)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_System_from_Grid_Generator(ppl_Grid_Generator_System_t *pgs, ppl_const_Grid_Generator_t g)
unsigned int PPL_POLY_CON_RELATION_IS_DISJOINT
Individual bit saying that the polyhedron and the set of points satisfying the constraint are disjoin...
void set_objective_function(const Linear_Expression &obj)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_space_dimension(ppl_const_Generator_System_t gs, ppl_dimension_type *m)
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_FIRST
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_number_of_artificials(ppl_const_PIP_Tree_Node_t pip_tree, ppl_dimension_type *m)
const char * version()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_PIP_Problem_from_space_dimension(ppl_PIP_Problem_t *ppip, ppl_dimension_type d)
Coefficient_traits::const_reference coefficient(Variable v) const
ppl_enum_Generator_Type
Describes the different kinds of generators.
Definition: ppl_c.h:1444
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_const_iterator_equal_test(ppl_const_Constraint_System_const_iterator_t x, ppl_const_Constraint_System_const_iterator_t y)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_set_irrational_precision(unsigned p)
Sets the precision parameter used for irrational calculations.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System_zero_dim_empty(ppl_Congruence_System_t *pcs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Linear_Expression_from_Linear_Expression(ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Grid_Generator_zero_dim_point(ppl_Grid_Generator_t *pg)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_add_to_inhomogeneous(ppl_Linear_Expression_t le, ppl_const_Coefficient_t n)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_constraint_at_index(ppl_const_MIP_Problem_t mip, ppl_dimension_type i, ppl_const_Constraint_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_add_space_dimensions_and_embed(ppl_PIP_Problem_t pip, ppl_dimension_type pip_vars, ppl_dimension_type pip_params)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System_const_iterator(ppl_Constraint_System_const_iterator_t *pcit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Constraint(ppl_const_Constraint_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_type(ppl_const_Grid_Generator_t g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_MIP_Problem_from_space_dimension(ppl_MIP_Problem_t *pmip, ppl_dimension_type d)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System_from_Generator_System(ppl_Generator_System_t *pgs, ppl_const_Generator_System_t gs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_optimizing_solution(ppl_const_PIP_Problem_t pip, ppl_const_PIP_Tree_Node_t *ppip_tree)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_optimal_value(ppl_const_MIP_Problem_t mip, ppl_Coefficient_t num, ppl_Coefficient_t den)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_objective_function(ppl_const_MIP_Problem_t mip, ppl_const_Linear_Expression_t *ple)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_external_memory_in_bytes(ppl_const_MIP_Problem_t mip, size_t *sz)
Coefficient_traits::const_reference divisor() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Linear_Expression_add_to_coefficient(ppl_Linear_Expression_t le, ppl_dimension_type var, ppl_const_Coefficient_t n)
Coefficient c
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_const_iterator_increment(ppl_Grid_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Solution_Node_OK(ppl_const_PIP_Solution_Node_t pip_sol)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_end(ppl_const_Constraint_System_t cs, ppl_Constraint_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Coefficient_OK(ppl_const_Coefficient_t)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_add_constraints(ppl_MIP_Problem_t mip, ppl_const_Constraint_System_t cs)
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_PIVOT_ROW_STRATEGY
Coefficient_traits::const_reference inhomogeneous_term() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_begin(ppl_const_Generator_System_t gs, ppl_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_inhomogeneous_term(ppl_const_Congruence_t c, ppl_Coefficient_t n)
Coefficient_traits::const_reference coefficient(Variable v) const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Constraint_System(ppl_Constraint_System_t *pcs)
static void set_output_function(output_function_type *p)
void add_to_parameter_space_dimensions(const Variables_Set &p_vars)
void add_space_dimensions_and_embed(dimension_type m)
const Throwable *volatile abandon_expensive_computations
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Tree_Node_end(ppl_const_PIP_Tree_Node_t pip_tree, ppl_Artificial_Parameter_Sequence_const_iterator_t pit)
const_iterator constraints_begin() const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_get_big_parameter_dimension(ppl_const_PIP_Problem_t pip, ppl_dimension_type *pd)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Grid_Generator_from_Grid_Generator(ppl_Grid_Generator_t dst, ppl_const_Grid_Generator_t src)
Coefficient_traits::const_reference coefficient(Variable v) const
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Coefficient_from_Coefficient(ppl_Coefficient_t dst, ppl_const_Coefficient_t src)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_delete_Generator_System_const_iterator(ppl_const_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Generator_System_end(ppl_const_Generator_System_t gs, ppl_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_Sequence_const_iterator_dereference(ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit, ppl_const_Artificial_Parameter_t *pap)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Constraint_System_empty(ppl_const_Constraint_System_t cs)
unsigned int PPL_COMPLEXITY_CLASS_SIMPLEX
Code of the worst-case exponential but typically polynomial complexity class.
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Congruence_System_end(ppl_const_Congruence_System_t cs, ppl_Congruence_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Artificial_Parameter_Sequence_const_iterator_equal_test(ppl_const_Artificial_Parameter_Sequence_const_iterator_t x, ppl_const_Artificial_Parameter_Sequence_const_iterator_t y)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_is_satisfiable(ppl_const_PIP_Problem_t pip)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_set_objective_function(ppl_MIP_Problem_t mip, ppl_const_Linear_Expression_t le)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_get_control_parameter(ppl_const_PIP_Problem_t pip, int name)
void add_space_dimensions_and_embed(dimension_type m_vars, dimension_type m_params)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_assign_Coefficient_from_mpz_t(ppl_Coefficient_t dst, mpz_t z)
const char * banner()
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_Grid_Generator_System_begin(ppl_const_Grid_Generator_System_t gs, ppl_Grid_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_System_const_iterator_from_Congruence_System_const_iterator(ppl_Congruence_System_const_iterator_t *pcit, ppl_const_Congruence_System_const_iterator_t cit)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator(ppl_Generator_t *pg, ppl_const_Linear_Expression_t le, enum ppl_enum_Generator_Type t, ppl_const_Coefficient_t d)
static Poly_Con_Relation strictly_intersects()
int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_DEEPEST
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_add_space_dimensions_and_embed(ppl_MIP_Problem_t mip, ppl_dimension_type d)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_MIP_Problem_number_of_constraints(ppl_const_MIP_Problem_t mip, ppl_dimension_type *m)
void insert(const Grid_Generator &g)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System_const_iterator_from_Generator_System_const_iterator(ppl_Generator_System_const_iterator_t *pgit, ppl_const_Generator_System_const_iterator_t git)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_PIP_Problem_set_control_parameter(ppl_PIP_Problem_t pip, int value)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_System_zero_dim_univ(ppl_Generator_System_t *pgs)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Congruence_zero_dim_integrality(ppl_Congruence_t *pc)
PPL_ERROR_INVALID_ARGUMENT PPL_ERROR_LENGTH_ERROR PPL_ARITHMETIC_OVERFLOW PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION int ppl_new_Generator_zero_dim_point(ppl_Generator_t *pg)
void add_to_integer_space_dimensions(const Variables_Set &i_vars)