public void perm16() { var p2 = Perm.Define <N16>((1, 10), (2, 11), (3, 8)); var bsx2 = ((ushort)0b1000110111000100).ToBitString(); var bsy2 = BitString.FromBitSeq(bsx2.BitSeq.Permute(p2)); var bsz2 = bsx2.Permute(p2); Claim.eq(bsy2, bsz2); }
public void extract_64u() { var bv8 = BitVector8.FromScalar(0b10000000); var bv16 = bv8.Concat(bv8); var bv32 = bv16.Concat(bv16); var bv64 = bv32.Concat(bv32); var bs8 = bv8.ToBitString(); var bs16 = bs8.Concat(bs8); var bs32 = bs16.Concat(bs16); var bs64 = bs32.Concat(bs32); Claim.eq(bv8.ToBitString(), bs8); Claim.eq(bv8, bs8.ToBitVector(n8)); Claim.eq(bv16.ToBitString(), bs16); Claim.eq(bv16, bs16.ToBitVector(n16)); Claim.eq(bv32.ToBitString(), bs32); Claim.eq(bv32, bs32.ToBitVector(n32)); Claim.eq(bv64.ToBitString(), bs64); Claim.eq(bv64, bs64.ToBitVector(n64)); var bv64x = Bits.gather(bv64, BitMask64.Msb8).ToBitVector(); Claim.eq((byte)0xFF, bv64x.Byte(0)); var unpacked = new byte[] { 1, 0, 0, 1, 1, 0, 1, 1 }; var x = BitConverter.ToUInt64(unpacked, 0); var y = Bits.gather(x, BitMask64.Lsb8).ToBitVector(); var z1 = y.Byte(0).ToBitString(); var z2 = BitString.FromBitSeq(unpacked); Claim.eq(z1, z2); }