#include "mdd.h"
Go to the source code of this file.
Functions | |
static void | mdd_pr_cubes (mdd_manager *mgr) |
static void | mdd_pr_minterms (mdd_manager *mgr) |
void | mdd_search (mdd_manager *mgr, bdd_t *top, int phase, boolean minterms) |
static void mdd_pr_cubes | ( | mdd_manager * | mgr | ) | [static] |
Definition at line 19 of file mdd_search.c.
00020 { 00021 int i, j; 00022 array_t *mvar_list = mdd_ret_mvar_list(mgr); 00023 mvar_type mv; 00024 00025 for (i=0; i<array_n(mvar_list); i++) { 00026 mv = array_fetch(mvar_type, mvar_list, i); 00027 (void) printf("\n%s = ", mv.name); 00028 for (j=0; j<mv.encode_length; j++) 00029 (void) printf("%d",mv.encoding[j]); 00030 } 00031 (void) printf("\n"); 00032 }
static void mdd_pr_minterms | ( | mdd_manager * | mgr | ) | [static] |
Definition at line 35 of file mdd_search.c.
00036 { 00037 /* not implemented yet */ 00038 00039 int i, j; 00040 mvar_type mv; 00041 array_t *mvar_list = mdd_ret_mvar_list(mgr); 00042 00043 for (i=0; i<array_n(mvar_list); i++) { 00044 mv = array_fetch(mvar_type, mvar_list, i); 00045 (void) printf("\n%s = ", mv.name); 00046 for (j=0; j<mv.encode_length; j++) 00047 (void) printf("%d",mv.encoding[j]); 00048 } 00049 (void) printf("\n"); 00050 }
void mdd_search | ( | mdd_manager * | mgr, | |
bdd_t * | top, | |||
int | phase, | |||
boolean | minterms | |||
) |
Definition at line 53 of file mdd_search.c.
00058 { 00059 int is_complemented; 00060 bdd_t *child, *top_uncomp; 00061 00062 if (mdd_is_tautology(top,1)) { 00063 if (phase == 1) { 00064 if (minterms == 1) mdd_pr_minterms(mgr); 00065 else mdd_pr_cubes(mgr); 00066 } 00067 return; 00068 } 00069 if (mdd_is_tautology(top,0)) { 00070 if (phase == 0) { 00071 if (minterms == 1) mdd_pr_minterms(mgr); 00072 else mdd_pr_cubes(mgr); 00073 } 00074 return; 00075 } 00076 00077 (void)bdd_get_node(top,&is_complemented); 00078 00079 if (is_complemented != 0) { 00080 phase = toggle(phase); 00081 } 00082 00083 (void) mdd_mark(mgr, top, 1); 00084 00085 if (is_complemented) top_uncomp = bdd_not(top); 00086 else top_uncomp = mdd_dup(top); 00087 00088 child = bdd_then(top_uncomp); 00089 mdd_search(mgr, child, phase, minterms); 00090 mdd_free(child); 00091 00092 00093 child = bdd_else(top_uncomp); 00094 (void) mdd_mark(mgr, top, 0); 00095 mdd_search(mgr, child, phase, minterms); 00096 mdd_unmark(mgr, top); 00097 00098 mdd_free(top_uncomp); 00099 mdd_free(child); 00100 return; 00101 }