#include "mdd.h"
Go to the source code of this file.
Functions | |
mdd_t * | mdd_func2 (mdd_manager *mgr, int mvar1, int mvar2, boolean(*func2)(int, int)) |
boolean | eq2 (int x, int y) |
boolean | geq2 (int x, int y) |
boolean | gt2 (int x, int y) |
boolean | leq2 (int x, int y) |
boolean | lt2 (int x, int y) |
boolean | neq2 (int x, int y) |
boolean | unary_minus2 (int x, int y) |
boolean eq2 | ( | int | x, | |
int | y | |||
) |
Definition at line 74 of file mdd_func2.c.
boolean geq2 | ( | int | x, | |
int | y | |||
) |
Definition at line 80 of file mdd_func2.c.
boolean gt2 | ( | int | x, | |
int | y | |||
) |
Definition at line 86 of file mdd_func2.c.
boolean leq2 | ( | int | x, | |
int | y | |||
) |
Definition at line 92 of file mdd_func2.c.
boolean lt2 | ( | int | x, | |
int | y | |||
) |
Definition at line 98 of file mdd_func2.c.
mdd_t* mdd_func2 | ( | mdd_manager * | mgr, | |
int | mvar1, | |||
int | mvar2, | |||
boolean(*)(int, int) | func2 | |||
) |
Definition at line 19 of file mdd_func2.c.
00024 { 00025 mvar_type x, y; 00026 array_t *child_list_x, *child_list_y; 00027 int i, j; 00028 mdd_t *tx, *ty; 00029 array_t *mvar_list = mdd_ret_mvar_list(mgr); 00030 mdd_t *one, *zero; 00031 00032 one = mdd_one(mgr); 00033 zero = mdd_zero(mgr); 00034 00035 x = array_fetch(mvar_type, mvar_list, mvar1); 00036 y = array_fetch(mvar_type, mvar_list, mvar2); 00037 00038 if (x.status == MDD_BUNDLED) { 00039 (void) fprintf(stderr, 00040 "\nWarning: mdd_func2, bundled variable %s is used\n", x.name); 00041 fail(""); 00042 } 00043 00044 if (y.status == MDD_BUNDLED) { 00045 (void) fprintf(stderr, 00046 "\nWarning: mdd_func2 bundled variable %s is used\n", y.name); 00047 fail(""); 00048 } 00049 00050 child_list_x = array_alloc(mdd_t *, 0); 00051 for (i=0; i<x.values; i++) { 00052 child_list_y = array_alloc(mdd_t *, 0); 00053 for (j=0; j<y.values; j++) { 00054 if (func2(i,j)) 00055 array_insert_last(mdd_t *, child_list_y, one); 00056 else 00057 array_insert_last(mdd_t *, child_list_y, zero); 00058 } 00059 ty = mdd_case(mgr, mvar2, child_list_y); 00060 array_insert_last(mdd_t *, child_list_x, ty); 00061 array_free(child_list_y); 00062 } 00063 tx = mdd_case(mgr, mvar1, child_list_x); 00064 array_free(child_list_x); 00065 mdd_free(one); 00066 mdd_free(zero); 00067 return tx; 00068 }
boolean neq2 | ( | int | x, | |
int | y | |||
) |
Definition at line 104 of file mdd_func2.c.
boolean unary_minus2 | ( | int | x, | |
int | y | |||
) |
Definition at line 110 of file mdd_func2.c.