iscc: add inverse operation
[barvinok.git] / verify.h
blobcecf66f86a8605bfc7612c08abf256a6b039b1b5
1 #ifndef VERIFY_H
2 #define VERIFY_H
4 #include <barvinok/polylib.h>
5 #include "argp.h"
7 #if defined(__cplusplus)
8 extern "C" {
9 #endif
11 struct verify_options {
12 int verify;
13 int exact;
14 int print_all;
15 int continue_on_error;
16 int m;
17 int M;
18 int r;
20 /* "generated" options */
21 int st;
22 const char **params;
23 struct barvinok_options *barvinok;
26 extern struct argp verify_argp;
27 void verify_options_set_range(struct verify_options *options, int dim);
29 Polyhedron *check_poly_context_scan(Polyhedron *P, Polyhedron **C,
30 unsigned nparam,
31 const struct verify_options *options);
32 void check_poly_init(Polyhedron *C, struct verify_options *options);
33 void check_poly_print(int ok, int nparam, Value *z,
34 Value want_n, Value want_d,
35 Value got_n, Value got_d,
36 const char *op, const char *check,
37 const char *long_op,
38 const struct verify_options *options);
40 struct check_poly_data;
41 typedef int (*check_poly_fun)(const struct check_poly_data *data,
42 int nparam, Value *z,
43 const struct verify_options *options);
44 struct check_poly_data {
45 Value *z;
46 check_poly_fun check;
49 int check_poly(Polyhedron *CS, const struct check_poly_data *data,
50 int nparam, int pos, Value *z,
51 const struct verify_options *options);
53 struct check_EP_data {
54 struct check_poly_data cp;
55 int n_S;
56 Polyhedron **S;
58 const evalue *EP;
61 int check_EP(struct check_EP_data *data, unsigned nvar, unsigned nparam,
62 struct verify_options *options);
63 void evalue_optimum(const struct check_EP_data *data, Value *opt, int sign);
64 void check_EP_set_scan(struct check_EP_data *data, Polyhedron *C,
65 unsigned MaxRays);
66 void check_EP_clear_scan(struct check_EP_data *data);
68 #if defined(__cplusplus)
70 #endif
72 #endif