public void SfmtInitArrayTest() { const int size = 1024; ReadOnlySpan <uint> key = stackalloc uint[] { 0x1234, 0x5678, 0x9abc, 0xdef0 }; var sfmt = new SfmtPrimitiveState(); var array = new AlignedArray <uint>(size, 16); InitByArray(sfmt, key); { var expected = File.ReadLines("./Data/initArrayFirstState.txt").Select(x => uint.Parse(x)).ToArray(); var actual = new Span <uint>(sfmt.State, N32); actual.Length.Is(expected.Length); for (var i = 0; i < expected.Length; i++) { actual[i].Is(expected[i]); } } FillArray32(sfmt, array, 1024); { var expected = File.ReadLines("./Data/initArrayNextState.txt").Select(x => uint.Parse(x)).ToArray(); var actual = new Span <uint>(sfmt.State, N32); actual.Length.Is(expected.Length); for (var i = 0; i < expected.Length; i++) { actual[i].Is(expected[i]); } } { var expected = File.ReadLines("./Data/initArrayRnd32.txt").Select(x => uint.Parse(x)).ToArray(); var fst = array.ToArray(); FillArray32(sfmt, array, 1024); var second = array.ToArray(); var actual = fst.Concat(second).ToArray(); actual.Length.Is(expected.Length); for (var i = 0; i < actual.Length; i++) { actual[i].Is(expected[i]); } } } }
public void SfmtFillArray64Test() { const int size = 1024; var sfmt = new SfmtPrimitiveState(); var buffer = new AlignedArray <ulong>(size, 16); InitGenRand(sfmt, 1234); FillArray64(sfmt, buffer, size); { var expected = File.ReadLines("./Data/AfterStateFill64.txt").Select(x => uint.Parse(x)).ToArray(); var actual = new Span <uint>(sfmt.State, N32); actual.Length.Is(expected.Length); for (var i = 0; i < actual.Length; i++) { actual[i].Is(expected[i]); } } { var actA = buffer.ToArray(); FillArray64(sfmt, buffer, size); var actB = buffer.ToArray(); var act = actA.Concat(actB).ToArray(); var expected = File.ReadLines("./Data/Init1234Fill64.txt").Select(x => ulong.Parse(x)).ToArray(); act.Length.Is(expected.Length); for (var i = 0; i < act.Length; i++) { act[i].Is(expected[i]); } } }
public void SfmtFillArray32Test() { const int size = 1024; using var sfmt = new SfmtPrimitiveState(); var buffer = new AlignedArray <uint>(size, 16); InitGenRand(sfmt, 1234); FillArray32(sfmt, buffer, size); var expected = File.ReadLines("./Data/AfterStateFill32.txt").Select(x => uint.Parse(x)).ToArray(); var actual = new Span <uint>(sfmt.State, N32); actual.Length.Is(expected.Length); for (var i = 0; i < actual.Length; i++) { actual[i].Is(expected[i]); } var actualA = buffer.ToArray(); FillArray32(sfmt, buffer, size); var actualB = buffer.ToArray(); var actualM = actualA.Concat(actualB).ToArray(); expected = File.ReadLines("./Data/init1234Fill32.txt").Select(x => uint.Parse(x)).ToArray(); actualM.Length.Is(expected.Length); for (var i = 0; i < actualM.Length; i++) { actualM[i].Is(expected[i]); } }