src/mdd/mdd_smooth.c File Reference

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

Go to the source code of this file.

Functions

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

Function Documentation

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 }


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