Skip to content

Instantly share code, notes, and snippets.

@andanteyk
Created March 16, 2023 01:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andanteyk/013739dde1669162ff30200b1ab96879 to your computer and use it in GitHub Desktop.
Save andanteyk/013739dde1669162ff30200b1ab96879 to your computer and use it in GitHub Desktop.
LXM PRNG test vectors
using Microsoft.VisualStudio.TestTools.UnitTesting;
using RngLab.Rng.Generators;
using System.Linq;
namespace RngLab.UnitTest.Generators;
[TestClass]
public class LxmTest
{
[TestMethod]
public void L32X64Mix()
{
var rng = new L32X64Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0x2a162bd60afba596,
0x4873895bf8b54e56,
0xd225cfec3c126b35,
0x8bc32086f289f5a4,
0xbbe0056312cff6a0,
0xc32ef05041339f62,
0xcd4f913053887271,
0x6c30b015c88f1f4d,
0x7bd9cafc4be9f6e4,
0x0aea8995ca88e3d2,
0xe1ee0b19855a0283,
0xe337795ec8646825,
0x0ab47580611f54a1,
0xa8e41ab2e6f6d472,
0x7887ea83d998f697,
0xb0a29bbf97583d62,
0x6bef7e4791d52713,
0x8f074fcc4bb49f17,
0xf071b84777c0baeb,
0x818d7a97e614e96b,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L64X128StarStar()
{
var rng = new L64X128StarStar(42);
CollectionAssert.AreEqual(new ulong[] {
0x9360c5e0b424dcb1,
0x6b3b9fa3ba05ac32,
0x8db81a115e97f8f5,
0x6c9325490d43eca5,
0xd69cb502803698e9,
0x642d6430a3e99611,
0xab20fbc1fc2b1ca2,
0x34384b3fb750d9c5,
0xf4b25692d649eec8,
0x11e97110bfb3724d,
0x7b667cb30bc5666d,
0x427cc8f07b7e24e7,
0xfed5b272d9908b36,
0xdc1718fe00788828,
0x08ff70f1ab30b82c,
0xb3c4239f9fcbb99a,
0x37a00cbd08be7967,
0x6d0082abed9644a8,
0xef0a648c01638104,
0x2573eef7f308cf14,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L64X128Mix()
{
var rng = new L64X128Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0xb2482ded0ba7ac12,
0xabc6a30a803e9910,
0xb52050e95869e138,
0xd0bb322ded7531ec,
0x882b4c1e1da17c8a,
0x1c59ac3fd001527e,
0x8a34cb2e8f0c35cf,
0xe557452feb44d812,
0x2a10676878351b11,
0xfa4919641f499dd4,
0x2bfdd7a1879ce27a,
0xe116dbfe0de7c847,
0x52873f5d9ff5c03c,
0xa389183105007524,
0xeb3db2882678cefd,
0xfbd1718c64e1047c,
0xa03b4214224aa416,
0x8f3e51879bc7f10b,
0xf9fe583aa0f722cb,
0xb5d7a44c708beb63,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L64X256Mix()
{
var rng = new L64X256Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0xb2482ded0ba7ac12,
0xc316ee8cfd72e9cc,
0x7e7e6ffec1d2f289,
0xe37240b563aaaa71,
0x952d861ef8dd204a,
0xed9a06a32108e7a3,
0xafaa1f627e0f8d59,
0x71f6218656a6d81f,
0xf47f016f6c319422,
0x502db5e9608385d1,
0x2a4264893fa9530e,
0x33c194c541425485,
0x6d73caba3b229481,
0xa6074842aef4ef4c,
0x1aa0432531fe78bc,
0xe017e306ff38b590,
0x0463f47cfd5eed6d,
0xb0b375e6cc99590c,
0xe3261fa06d6a084e,
0xcb1dad0338f31470,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L64X1024Mix()
{
var rng = new L64X1024Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0xb2482ded0ba7ac12,
0xc0fe7b0a5cc7a49d,
0x7fe43bff36afdf31,
0xc220f444fabdcd1c,
0x5d7472f4bf9df9f9,
0x25cc529168c5d527,
0xe3e399f395ee0fe8,
0xb9faf3cf89b5de55,
0x829e424a22e0bc28,
0x36573f974a49efea,
0xe36b3fc838f8da88,
0xbc33705275ac8c34,
0xce891d413749ba3a,
0xb70531d89c9c4d0b,
0x90ce9371d470a501,
0x38ce9c6a16c5d932,
0xb1d8dd41aef136e5,
0xed4410e3bbb6b95c,
0x782d4b61ca091e94,
0x461c54dfedecc89a,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L128X128Mix()
{
var rng = new L128X128Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0x30b8341f3b1ed3cb,
0xf1c0d98bdfab3d05,
0x7623be27e6460d11,
0x8a5bdc9126baf706,
0x5ac5e43c5939bfa4,
0xac0a4d34489b9faf,
0x9e875864fd8d795b,
0x13f8fffe6ae374fb,
0x73267a4be1597734,
0x461bba2dca20f2c2,
0x97cc1074f77e99a5,
0xf9f5a13b63ef2b74,
0x410616bd63d1aa8e,
0x64778b7209fa1fd6,
0x305e02e3cd2e0020,
0x710ee020b51ac835,
0xa6e87d668e8fa5d2,
0xd75ac6167122929c,
0x5ba3c87d062260f9,
0x5c5837cfa219abd8,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L128X256Mix()
{
var rng = new L128X256Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0x30b8341f3b1ed3cb,
0xf47c4ab5743b9050,
0xc1bbf18c2f46ec1f,
0x22846b804f5134ba,
0x653c549192331ef8,
0x766be9ac7c0d0b88,
0x020540760bae4cc0,
0x8ee2b43a54e7e276,
0x96547c2c7ff99b6c,
0x5446b0e94de7790f,
0x4a84b974968ed649,
0x0ebf3c220e2b2d15,
0x1e98cabba772bd72,
0xbe8d24234099f099,
0x5b122dbcba6119a1,
0xfd98ce00fa26847e,
0x1ee1d2cfd94c3bd7,
0x81ff11e80158323f,
0x82c5dede44f94c37,
0xe5c530c49f4259cb,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
[TestMethod]
public void L128X1024Mix()
{
var rng = new L128X1024Mix(42);
CollectionAssert.AreEqual(new ulong[] {
0x30b8341f3b1ed3cb,
0x8fedbf228b3e0151,
0x9f6d20712bc587f6,
0x9346e839c9262ff3,
0xba933e21237f9cd9,
0xabe79fb97394b63e,
0xb0f602561e0e5019,
0x1e025a48de83bb0c,
0x98385ce94c95ecb9,
0xc74e0b43ed5a5cbf,
0xcceec49b825e78f3,
0xd9480915eec20097,
0x0918c2106f4a08c3,
0x2ec1276613f2aac5,
0x9e5ee8b96eceb632,
0x0c179cb66f81ca89,
0x4c484e63c14e542c,
0x851054003d953589,
0x85bc94f4f889520f,
0x9beda0c217a7a701,
}, Enumerable.Range(0, 20).Select(_ => rng.Next()).ToArray());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment