diff options
Diffstat (limited to 'omegalib/examples/c_code/example.c')
-rw-r--r-- | omegalib/examples/c_code/example.c | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/omegalib/examples/c_code/example.c b/omegalib/examples/c_code/example.c deleted file mode 100644 index 8bd84b3..0000000 --- a/omegalib/examples/c_code/example.c +++ /dev/null @@ -1,89 +0,0 @@ -#include <omega.h> - -// THIS NEEDS TO BE A LOT SIMPLER - I'M CUTTING IT DOWN - -// R := { [i,j] -> [i', j'] : -// 1 <= i, i' <= n && 1 <= j <= L(i) && 1 <= j' <= m && -// j = j' && i < i' } -// -// S := { [x,y] : 1 <= x <= n && y <= x + 5 && x is divisible by 17 && -// there exists z such that y <= z <= x && -// ( z is divisible by 8 || z+5x is divisible by 12 ) } - -using namespace omega; -int main() { - Relation S(2); - S.name_set_var(1, "x"); - S.name_set_var(2, "y"); - - assert( S.is_set()); - - Free_Var_Decl n("n"); - - -/* Relation R(2,2); */ -/* assert(!R.is_set()); */ - -/* Free_Var_Decl m("m"); */ -/* Free_Var_Decl l("L", 1); */ - -/* Variable_ID local_n = R.get_local(&n); */ -/* Variable_ID local_m = R.get_local(&m); */ -/* Variable_ID l_in = R.get_local(&l, Input_Tuple); */ -/* Variable_ID l_out = R.get_local(&l, Output_Tuple); */ - -/* Variable_ID in1 = R.input_var(1); */ -/* Variable_ID in2 = R.input_var(2); */ -/* Variable_ID out1 = R.output_var(1); */ -/* Variable_ID out2 = R.output_var(2); */ - - Variable_ID x = S.set_var(1); - Variable_ID y = S.set_var(2); - - F_And *S_root = S.add_and(); - - GEQ_Handle xmin = S_root->add_GEQ(); // x-1 >= 0 - xmin.update_coef(x, 1); - xmin.update_const(-1); - GEQ_Handle xmax = S_root->add_GEQ(); // n-x >= 0 - xmax.update_coef(x, -1); - xmax.update_coef(S.get_local(&n), 1); - GEQ_Handle ymax = S_root->add_GEQ(); // x+5-y >= 0 - ymax.update_coef(x, 1); - ymax.update_coef(y, -1); - ymax.update_const(5); - - // x is divisible by 17 - S_root->add_stride(17).update_coef(x,1); - - F_Exists *e = S_root->add_exists(); - - Variable_ID z = e->declare("z"); // exists z - F_And *z_stuff = e->add_and(); - - GEQ_Handle zmin = z_stuff->add_GEQ(); // z-y >= 0 - zmin.update_coef(z,1); - zmin.update_coef(y,-1); - GEQ_Handle zmax = z_stuff->add_GEQ(); // x-z >= 0 - zmax.update_coef(x,1); - zmax.update_coef(z,-1); - - F_Or *o = z_stuff->add_or(); - Stride_Handle z8 = o->add_and()->add_stride(8); - z8.update_coef(z,1); // z divisible by 8 - - Stride_Handle z12 = o->add_and()->add_stride(12); - z12.update_coef(z,1); - z12.update_coef(x,5); // z+5x divisible by 12 - - - S.print(); - S.finalize(); - S.prefix_print(); - S.is_upper_bound_satisfiable(); - S.print(); - S.prefix_print(); - - return 0; -} - |