48 1291, 1699, 1999, 2357, 2953, 3313, 3907, 4177,
49 4831, 5147, 5647, 6343, 6899, 7103, 7873, 8147 };
54 for ( i = 0; i <
nWords; i++ )
55 uHash ^= ~pSim[i] * s_Primes[i & 0xf];
57 for ( i = 0; i <
nWords; i++ )
58 uHash ^= pSim[i] * s_Primes[i & 0xf];
59 return (
int)(uHash % nTableSize);
79 for ( w = 0; w <
nWords; w++ )
85 for ( w = 0; w <
nWords; w++ )
96 if ( (pSim0[0] & 1) != (pSim1[0] & 1) )
98 for ( w = 0; w <
nWords; w++ )
99 if ( pSim0[w] != ~pSim1[w] )
104 for ( w = 0; w <
nWords; w++ )
105 if ( pSim0[w] != pSim1[w] )
130 int Repr =
GIA_VOID, EntPrev = -1, Ent, i;
223 int * pTable, nTableSize, i, k, Key;
232 if ( pTable[Key] == 0 )
311 int i, iRepr, iObj, Result = 1;
314 printf(
"Pair (%d, %d) are still equivalent.\n", iRepr, iObj ), Result = 0;
static int Abc_PrimeCudd(unsigned int p)
int Ssc_GiaSimClassRefineOneBit(Gia_Man_t *p, int i)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Gia_ObjIsCand(Gia_Obj_t *pObj)
static ABC_NAMESPACE_IMPL_START int Ssc_GiaSimHashKey(Gia_Man_t *p, int iObj, int nTableSize)
DECLARATIONS ///.
void Ssc_GiaSimProcessRefined(Gia_Man_t *p, Vec_Int_t *vRefined)
static int Gia_ObjIsHead(Gia_Man_t *p, int Id)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
void Ssc_GiaClassesInit(Gia_Man_t *p)
FUNCTION DECLARATIONS ///.
int Ssc_GiaClassesRefine(Gia_Man_t *p)
static void Gia_ObjSetRepr(Gia_Man_t *p, int Id, int Num)
static int s_Primes[MAX_PRIMES]
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Ssc_GiaSimAreEqualBit(Gia_Man_t *p, int iObj0, int iObj1)
static int Ssc_GiaSimAreEqual(Gia_Man_t *p, int iObj0, int iObj1)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
static int Gia_ObjIsConst(Gia_Man_t *p, int Id)
#define ABC_NAMESPACE_IMPL_END
#define Gia_ClassForEachObj1(p, i, iObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
int Ssc_GiaSimClassRefineOne(Gia_Man_t *p, int i)
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
#define Gia_ManForEachCand(p, pObj, i)
static int Gia_ObjNext(Gia_Man_t *p, int Id)
#define ABC_NAMESPACE_IMPL_START
static void Gia_ObjSetNext(Gia_Man_t *p, int Id, int Num)
static int Gia_ObjIsTail(Gia_Man_t *p, int Id)
static int Vec_IntSize(Vec_Int_t *p)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
#define ABC_CALLOC(type, num)
static word * Gia_ObjSim(Gia_Man_t *p, int Id)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Gia_ObjSimWords(Gia_Man_t *p)
static int Ssc_GiaSimIsConst0(Gia_Man_t *p, int iObj0)
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ObjRepr(Gia_Man_t *p, int Id)
void Ssc_GiaClassesCheckPairs(Gia_Man_t *p, Vec_Int_t *vDisPairs)
void Ssc_GiaSimClassCreate(Gia_Man_t *p, Vec_Int_t *vClass)