src/mdd/mdd_func2.c File Reference

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

Go to the source code of this file.

Functions

mdd_tmdd_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)

Function Documentation

boolean eq2 ( int  x,
int  y 
)

Definition at line 74 of file mdd_func2.c.

00075 {
00076     return (x == y);
00077 }

boolean geq2 ( int  x,
int  y 
)

Definition at line 80 of file mdd_func2.c.

00081 {
00082     return (x >= y);
00083 }

boolean gt2 ( int  x,
int  y 
)

Definition at line 86 of file mdd_func2.c.

00087 {
00088     return (x > y);
00089 }

boolean leq2 ( int  x,
int  y 
)

Definition at line 92 of file mdd_func2.c.

00093 {
00094     return (x <= y);
00095 }

boolean lt2 ( int  x,
int  y 
)

Definition at line 98 of file mdd_func2.c.

00099 {
00100     return (x < y);
00101 }

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.

00105 {
00106     return (x != y);
00107 }

boolean unary_minus2 ( int  x,
int  y 
)

Definition at line 110 of file mdd_func2.c.

00111 {
00112     return (x+y == 0);
00113 }


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