Exemple #1
0
        /// <summary>
        /// Creates the matrix determined by a permutation
        /// </summary>
        /// <param name="src">The source permutation</param>
        public static BitMatrix8 ToBitMatrix(this Perm <N8> src)
        {
            var dst = BitMatrix8.Alloc();

            for (var row = 0; row < src.Length; row++)
            {
                dst[row, src[row]] = Bit.On;
            }
            return(dst);
        }
Exemple #2
0
 public void create_8x8()
 {
     var src = Random.Stream<ulong>().Take(Pow2.T07).GetEnumerator();
     while(src.MoveNext())
     {
         var m1 = BitMatrix8.From(src.Current);
         var n = new N8();
         var m2 = BitMatrix.Load(n,n, src.Current.ToBytes());
         for(var i=0; i<8; i++)
         for(var j=0; j<8; j++)
             Claim.eq(m1[i,j], m2[i,j]);
     }
 }
Exemple #3
0
        public static BitMatrix8 bmm(BitMatrix8 lhs, BitMatrix8 rhs)
        {
            var dst = BitMatrix8.Alloc();

            rhs = rhs.Transpose();
            for (var i = 0; i < lhs.RowCount; i++)
            {
                var row = lhs.RowVector(i);
                for (var j = 0; j < rhs.ColCount; j++)
                {
                    var col = rhs.RowVector(j);
                    dst[i, j] = ModProd(row, col);
                }
            }
            return(dst);
        }
Exemple #4
0
        public void bm_and_8x8_check()
        {
            for (var i = 0; i < SampleSize; i++)
            {
                var A = Random.BitMatrix(n8);
                var B = Random.BitMatrix(n8);

                var xBytes = A.Bytes.Replicate();
                var yBytes = B.Bytes.Replicate();
                var zBytes = gbitspan.and(xBytes, yBytes);
                var expect = BitMatrix8.From(zBytes);

                var C = A & B;
                Claim.yea(expect == C);
            }
        }
Exemple #5
0
 public static BitMatrix8 and(BitMatrix8 lhs, BitMatrix8 rhs)
 => BitMatrix8.From((ulong)lhs & (ulong)rhs);
Exemple #6
0
 public static Matrix <N8, T> unpack <T>(BitMatrix8 src, Matrix <N8, T> dst)
     where T : unmanaged
 {
     gbits.unpack(src.Data, dst.Data.AsSpan());
     return(dst);
 }