void unpack_check <S, T>() where S : unmanaged where T : unmanaged { for (var j = 0; j < SampleSize; j++) { var src = Random.Next <S>(); Span <T> dst = stackalloc T[bitsize <S>()]; gbits.unpack(src, dst); var bs = BitString.FromScalar(src); for (var i = 0; i < bs.Length; i++) { var expect = bs[i] ? one <T>() : zero <T>(); var actual = dst[i]; Claim.eq(expect, actual); } } var x = Random.Span <S>(SampleSize); Span <T> y1 = new T[x.Length * bitsize <S>()]; gbits.unpack(x, y1); var y2 = BitString.FromScalars(x); for (var i = 0; i < y1.Length; i++) { var expect = y2[i] ? one <T>() : zero <T>(); var actual = y1[i]; Claim.yea(gmath.eq(expect, actual)); } }
void binary_digits_check <T>() where T : unmanaged { for (var i = 0; i < SampleSize; i++) { var x = Random.Next <T>(); bd_match_check <T>(BitString.FromScalar(x).Format(false, true), x); } }
void bv_create_fixedG <V, S>() where V : unmanaged, IFixedBits <V, S> where S : unmanaged { for (var i = 0; i < SampleSize; i++) { var src = Random.Next <S>(); var bv = gbits.bitvector <V, S>(src); var bs = BitString.FromScalar(src); for (var j = 0; j < bv.Length; j++) { Claim.eq(bv[j], bs[j]); } } }
public void bs_to_u32() { var x0 = 0b_01011000_00001000_11111010_01100101u; var x1 = x0.ToBitString(); var x2 = x1.TakeValue <uint>(); Claim.eq(x0, x2); var x = 0b10100001100101010001u; var bsSrc = "0000010100001100101010001"; var bs1 = BitString.Parse(bsSrc); Claim.eq((int)bs1.Length, bsSrc.Length); var bs2 = BitString.FromScalar(x); var y = bs1.TakeValue <uint>(); Claim.eq(x, y); Claim.yea(bs1.Equals(bs2)); }