#include "mdd.h"
Go to the source code of this file.
Functions | |
mdd_t * | mdd_smooth (mdd_manager *mgr, mdd_t *fn, array_t *mvars) |
mdd_t* mdd_smooth | ( | mdd_manager * | mgr, | |
mdd_t * | fn, | |||
array_t * | mvars | |||
) |
Definition at line 19 of file mdd_smooth.c.
00023 { 00024 array_t *bdd_vars; 00025 int i, j, mv_no; 00026 mvar_type mv; 00027 mdd_t *top; 00028 bdd_t *temp; 00029 array_t *mvar_list = mdd_ret_mvar_list(mgr); 00030 00031 00032 if ( mvars == NIL(array_t) ) { 00033 top = bdd_dup(fn); 00034 printf("\nWARNING: Empty Array of Smoothing Variables\n"); 00035 return top; 00036 } 00037 else if ( array_n(mvars) == 0) { 00038 top = bdd_dup(fn); 00039 printf("\nWARNING: Empty Array of Smoothing Variables\n"); 00040 return top; 00041 } 00042 00043 00044 bdd_vars = array_alloc(bdd_t *, 0); 00045 for (i=0; i<array_n(mvars); i++) { 00046 mv_no = array_fetch(int, mvars, i); 00047 mv = array_fetch(mvar_type, mvar_list, mv_no); 00048 if (mv.status == MDD_BUNDLED) { 00049 (void) fprintf(stderr, 00050 "\nmdd_smooth: bundled variable %s used\n",mv.name); 00051 fail(""); 00052 } 00053 00054 for (j=0; j<mv.encode_length; j++) { 00055 temp = bdd_get_variable(mgr, mdd_ret_bvar_id(&mv,j) ); 00056 array_insert_last(bdd_t *, bdd_vars, temp); 00057 } 00058 } 00059 00060 top = bdd_smooth(fn, bdd_vars); 00061 00062 for (i=0; i<array_n(bdd_vars); i++) { 00063 temp = array_fetch(bdd_t *, bdd_vars, i); 00064 bdd_free(temp); 00065 } 00066 array_free(bdd_vars); 00067 00068 return top; 00069 }