src/mdd/mdd_consensus.c File Reference

#include "mdd.h"
Include dependency graph for mdd_consensus.c:

Go to the source code of this file.

Functions

mdd_tmdd_consensus (mdd_manager *mgr, mdd_t *fn, array_t *mvars)

Function Documentation

mdd_t* mdd_consensus ( mdd_manager mgr,
mdd_t fn,
array_t mvars 
)

Definition at line 19 of file mdd_consensus.c.

00023 {
00024     array_t *bdd_vars;
00025     int i, j, mv_no, num;
00026     mvar_type mv;
00027     mdd_t *top;
00028         bdd_t *tmp;
00029     array_t *mvar_list = mdd_ret_mvar_list(mgr);
00030 
00031     bdd_vars = array_alloc(bdd_t *, 0);
00032 
00033 
00034     if ( mvars == NIL( array_t ) ) {
00035         printf("\nWARNING: Empty Array of Consensus Variables\n");
00036         array_free(bdd_vars);
00037         return ( mdd_dup(fn) ) ;
00038     }
00039 
00040     else if ( array_n(mvars) == 0)  {
00041         printf("\nWARNING: Empty Array of Consensus Variables\n");
00042         array_free(bdd_vars);
00043         return ( mdd_dup(fn) ) ;
00044     }
00045 
00046 
00047     for (i=0; i<array_n(mvars); i++) {
00048         mv_no = array_fetch(int, mvars, i);
00049         mv = array_fetch(mvar_type, mvar_list, mv_no);
00050         if (mv.status == MDD_BUNDLED) {
00051                 (void) fprintf(stderr, 
00052                 "\nmdd_consensus: bundled variable %s used\n",mv.name);
00053                 fail("");
00054         }
00055 
00056         for (j = 0; j < mv.encode_length; j ++) {
00057             tmp = bdd_get_variable(mgr, (unsigned int) mdd_ret_bvar_id(&mv, j) );
00058             array_insert_last(bdd_t *, bdd_vars, tmp);
00059         }
00060     }
00061     top = bdd_consensus(fn, bdd_vars);
00062         num = array_n(bdd_vars);
00063         for(i=0; i<num; i++){
00064                 bdd_free(array_fetch(bdd_t *, bdd_vars, i));
00065         }
00066     array_free(bdd_vars);
00067     return top;
00068 }


Generated on Tue Jan 12 13:57:25 2010 for glu-2.2 by  doxygen 1.6.1