コード例 #1
0
ファイル: BV64Algebra.cs プロジェクト: tannergooding/runtime
 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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: UInt64Solver.cs プロジェクト: mikem8361/runtime
 public List <ulong> GenerateMinterms(HashSet <ulong> constraints) => MintermGenerator <ulong> .GenerateMinterms(this, constraints);