public void pack_span32u() { var x0 = BitVector32.FromScalar(0b00001010110000101001001111011001u); var x1 = BitVector32.FromScalar(0b00001010110110101001001111000001u); var src = Random.Span <byte>(Pow2.T04).ReadOnly(); var packed = span <uint>(src.Length / 4); gbits.pack(src, packed); for (var i = 0; i < packed.Length; i++) { var x = BitVector32.FromScalar(BitConverter.ToUInt32(src.Slice(4 * i))); var y = BitVector32.FromScalar(packed[i]); Claim.eq((uint)x, (uint)y, AppMsg.Error($"{x.ToBitString()} != {y.ToBitString()}")); } }
public void extract32() { var src = Random.Stream <uint>().Take(SampleSize).ToArray(); var lower = Random.Stream(leftclosed <byte>(0, 16)).Take(SampleSize).ToArray(); var upper = Random.Stream(leftclosed <byte>(16, 32)).Take(SampleSize).ToArray(); for (var i = 0; i < SampleSize; i++) { var v1 = BitVector.Load(src[i]); var v2 = BitVector32.FromScalar(src[i]); Claim.eq(v1.ToBitVector32(), v2); var r1 = v1.SliceCell(lower[i], upper[i]); var r2 = v2.Between(lower[i], upper[i]); Claim.eq(r1, r2); } }