public BV64Algebra(CharSetSolver solver, BDD[] minterms) : base(new MintermClassifier(solver, minterms), solver.ComputeDomainSizes(minterms), minterms) { Debug.Assert(minterms.Length <= 64); _mintermGenerator = new MintermGenerator <ulong>(this); _false = 0; _true = _bits == 64 ? ulong.MaxValue : ulong.MaxValue >> (64 - _bits); }
public BitVector64Algebra(CharSetSolver solver, BDD[] minterms) { Debug.Assert(minterms.Length <= 64); _minterms = minterms; _mintermGenerator = new MintermGenerator <ulong>(this); _classifier = new MintermClassifier(solver, minterms); True = minterms.Length == 64 ? ulong.MaxValue : ulong.MaxValue >> (64 - minterms.Length); }
public UInt64Algebra(BDD[] minterms) { Debug.Assert(minterms.Length <= 64); _minterms = minterms; _mintermGenerator = new MintermGenerator <ulong>(this); _classifier = new MintermClassifier(minterms); True = minterms.Length == 64 ? ulong.MaxValue : ulong.MaxValue >> (64 - minterms.Length); }
public UInt64Solver(BDD[] minterms, CharSetSolver solver) { Debug.Assert(minterms.Length <= 64); _minterms = minterms; _mintermGenerator = new MintermGenerator <ulong>(this); _classifier = new MintermClassifier(minterms, solver); Full = minterms.Length == 64 ? ulong.MaxValue : ulong.MaxValue >> (64 - minterms.Length); }
public BVAlgebra(CharSetSolver solver, BDD[] minterms) : base(new MintermClassifier(solver, minterms), solver.ComputeDomainSizes(minterms), minterms) { _mintermGenerator = new MintermGenerator <BV>(this); False = BV.CreateFalse(_bits); True = BV.CreateTrue(_bits); var singleBitVectors = new BV[_bits]; for (int i = 0; i < singleBitVectors.Length; i++) { singleBitVectors[i] = BV.CreateSingleBit(_bits, i); } _minterms = singleBitVectors; }
public BitVectorAlgebra(CharSetSolver solver, BDD[] minterms) { _minterms = minterms; _classifier = new MintermClassifier(solver, minterms); _mintermGenerator = new MintermGenerator <BitVector>(this); var singleBitVectors = new BitVector[minterms.Length]; for (int i = 0; i < singleBitVectors.Length; i++) { singleBitVectors[i] = BitVector.CreateSingleBit(minterms.Length, i); } _mintermVectors = singleBitVectors; False = BitVector.CreateFalse(minterms.Length); True = BitVector.CreateTrue(minterms.Length); }
public BitVectorSolver(BDD[] minterms, CharSetSolver solver) { _minterms = minterms; _classifier = new MintermClassifier(minterms, solver); _mintermGenerator = new MintermGenerator <BitVector>(this); var singleBitVectors = new BitVector[minterms.Length]; for (int i = 0; i < singleBitVectors.Length; i++) { singleBitVectors[i] = BitVector.CreateSingleBit(minterms.Length, i); } _mintermVectors = singleBitVectors; Empty = BitVector.CreateFalse(minterms.Length); Full = BitVector.CreateTrue(minterms.Length); }
public List <ulong> GenerateMinterms(HashSet <ulong> constraints) => MintermGenerator <ulong> .GenerateMinterms(this, constraints);