#include "mdd.h"
Go to the source code of this file.
Functions | |
mdd_t * | mdd_func2c_mod (mdd_manager *mgr, int mvar1, int mvar2, int constant, boolean(*func4)(int, int, int, int)) |
boolean | eq_plus3mod (int x, int y, int z, int range) |
boolean | geq_plus3mod (int x, int y, int z, int range) |
boolean | gt_plus3mod (int x, int y, int z, int range) |
boolean | leq_plus3mod (int x, int y, int z, int range) |
boolean | lt_plus3mod (int x, int y, int z, int range) |
boolean | neq_plus3mod (int x, int y, int z, int range) |
boolean | eq_minus3mod (int x, int y, int z, int range) |
boolean | geq_minus3mod (int x, int y, int z, int range) |
boolean | gt_minus3mod (int x, int y, int z, int range) |
boolean | leq_minus3mod (int x, int y, int z, int range) |
boolean | lt_minus3mod (int x, int y, int z, int range) |
boolean | neq_minus3mod (int x, int y, int z, int range) |
boolean eq_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 120 of file mdd_func2cmod.c.
boolean eq_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 84 of file mdd_func2cmod.c.
boolean geq_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 126 of file mdd_func2cmod.c.
boolean geq_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 90 of file mdd_func2cmod.c.
boolean gt_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 132 of file mdd_func2cmod.c.
boolean gt_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 96 of file mdd_func2cmod.c.
boolean leq_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 138 of file mdd_func2cmod.c.
boolean leq_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 102 of file mdd_func2cmod.c.
boolean lt_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 144 of file mdd_func2cmod.c.
boolean lt_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 108 of file mdd_func2cmod.c.
mdd_t* mdd_func2c_mod | ( | mdd_manager * | mgr, | |
int | mvar1, | |||
int | mvar2, | |||
int | constant, | |||
boolean(*)(int, int, int, int) | func4 | |||
) |
Definition at line 19 of file mdd_func2cmod.c.
00025 { 00026 mvar_type x, y; 00027 array_t *child_list_x, *child_list_y; 00028 int i, j; 00029 mdd_t *tx, *ty; 00030 array_t *mvar_list = mdd_ret_mvar_list(mgr); 00031 mdd_t *one, *zero; 00032 00033 x = array_fetch(mvar_type, mvar_list, mvar1); 00034 y = array_fetch(mvar_type, mvar_list, mvar2); 00035 00036 if (x.status == MDD_BUNDLED) { 00037 (void) fprintf(stderr, 00038 "\nWarning: mdd_func2c, bundled variable %s is used\n", x.name); 00039 fail(""); 00040 } 00041 00042 if (y.status == MDD_BUNDLED) { 00043 (void) fprintf(stderr, 00044 "\nWarning: mdd_func2c, bundled variable %s is used\n", y.name); 00045 fail(""); 00046 } 00047 00048 if((x.values != y.values) || ( constant < 0) || ( constant >= x.values) ) { 00049 (void) fprintf(stderr, "\n mdd_func2c_mod: Cannot operate with two different ranges\n"); 00050 exit(1); 00051 } 00052 00053 00054 one = mdd_one(mgr); 00055 zero = mdd_zero(mgr); 00056 00057 child_list_x = array_alloc(mdd_t *, 0); 00058 for (i=0; i<x.values; i++) { 00059 child_list_y = array_alloc(mdd_t *, 0); 00060 for (j=0; j<y.values; j++) { 00061 if (func4(i,j,constant,x.values)) 00062 array_insert_last(mdd_t *, child_list_y, one); 00063 else 00064 array_insert_last(mdd_t *, child_list_y, zero); 00065 } 00066 ty = mdd_case(mgr, mvar2, child_list_y); 00067 array_insert_last(mdd_t *, child_list_x, ty); 00068 array_free(child_list_y); 00069 } 00070 tx = mdd_case(mgr, mvar1, child_list_x); 00071 array_free(child_list_x); 00072 00073 mdd_free(zero); 00074 mdd_free(one); 00075 00076 return tx; 00077 }
boolean neq_minus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 150 of file mdd_func2cmod.c.
boolean neq_plus3mod | ( | int | x, | |
int | y, | |||
int | z, | |||
int | range | |||
) |
Definition at line 114 of file mdd_func2cmod.c.