This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-rng.git
commit 98470ad190dccf4187c3f55dd09194cc5ad17fa9 Author: Alex Herbert <aherb...@apache.org> AuthorDate: Thu Mar 27 14:52:12 2025 +0000 Update reference data using full byte[] seed. The bug JDK-8283083 has been fixed and L128X256MixRandom correctly supports a byte[] seed. The reference output has been recreated. This eliminates the requirement for the LCG state to be 1L. --- .../commons/rng/core/source64/L128X256MixTest.java | 87 +++++++++++----------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X256MixTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X256MixTest.java index 64461ca3..084da7ba 100644 --- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X256MixTest.java +++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X256MixTest.java @@ -69,67 +69,68 @@ class L128X256MixTest extends AbstractLXMTest { @Override Stream<Arguments> getReferenceData() { /* - * Reference data from JDK 17: + * Reference data from JDK 21: * java.util.random.RandomGeneratorFactory.of("L128X256MixRandom").create(seed) - * Full seed expanded from a single long value using the same method in the - * OpenJDK source (v17) and recorded in the order used by the Commons RNG code. * - * Note: This is a different from the other LXMTest instances due to a constructor - * bug in JDK 17 L128X256MixRandom. The result is an initial state for the LCG - * that is always 1L. - * See: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8283083 + * Full byte[] seed created using SecureRandom.nextBytes. The seed was converted + * to long[] by filling the long bits sequentially starting at the most significant + * byte matching the method used by the JDK, e.g. + * long[] result = new long[seed.length / Long.BYTES]; + * ByteBuffer.wrap(seed).order(ByteOrder.BIG_ENDIAN).asLongBuffer().get(result); + * + * Note: Seed order: LCG addition; LCG state; XBG state. */ return Stream.of( Arguments.of( new long[] { - 0xaac2f67d761dadc6L, 0xe584ab0136fa95fcL, 0x0000000000000000L, 0x0000000000000001L, - 0xa56f550e4455ad6bL, 0xfa8c6a4c0b4f87c1L, 0x97aa5a6091689f0cL, 0x97774f9a7b01252aL, + 0xaa05bb6a00e362a1L, 0x3ae176af61091150L, 0x4bf580302146b227L, 0x39db3019e6d00068L, + 0xf3c7901acb51e7efL, 0x5257d2d89424a228L, 0x039b4e3bf0867638L, 0xca0e544f6f4e4c46L, }, new long[] { - 0x0f6839e2df51d066L, 0x63828bfa952b7223L, 0x1449a6518fc6698aL, 0xf0d255739e8a95a9L, - 0xdc2277916582ab84L, 0x855172869dc4ad71L, 0x9f1e38cd53f3aeceL, 0x8f0cfee1ed210171L, - 0xdb86b178e98ef8d0L, 0x6e53a3629d1485f7L, 0x033da8ec17c6256cL, 0x94a44e70d72cd494L, - 0x71a2171e09f1503dL, 0x6355ff323a49300eL, 0x4d4f7e37beec3a76L, 0x5391b119c23afe81L, - 0x21a28a3f83d71acaL, 0xe157ce29ed8a468dL, 0xfbcbeab9dfa54c0aL, 0x5bd0072c9751b499L, - 0x1f3ea8c1456a2cd3L, 0x656f6535b5a3d4d4L, 0xba7d0ee7b7cf61b8L, 0x8c26ad19a4660e2aL, - 0x9ca6f47a205fdcdeL, 0xa2ae34ee95f8d89eL, 0xb6de34b282c7b220L, 0xf8c1d88a8d284430L, - 0x4df71c7f08c3ad4bL, 0x9c7a7168f01b7905L, 0x93252635246315e0L, 0xcaaa648c929f8b87L, - 0x9d5f169be9b8050dL, 0xa24bb43e098948daL, 0x47d1147f27e102eeL, 0xcf80915231874ea4L, - 0xfb5a2832f261afc7L, 0xe4ed459ebe0e8d4dL, 0xa5f9df78cfed42d3L, 0x1cc368014904ab73L, + 0x6d866f06c3b33a81L, 0xd9b432396d9f0095L, 0x5c6f57e856fc8312L, 0x71672e7d6c147c4dL, + 0x90d6b6e290b94b16L, 0x115558add3a2ec66L, 0xc05eaa84d8bd9e8fL, 0xe28dd6fac10304b3L, + 0xd4e655f8e6188df0L, 0x80ce7cbe29d2e193L, 0x1d412157be774c4aL, 0x6e5a2de7f921cf6dL, + 0x17aecce35169ffa6L, 0x46cc5d574a1a63fcL, 0x31659705536905b3L, 0x4bcbf2a430dbf65cL, + 0x66941d88b416536cL, 0x7c6f181beb0de730L, 0x95563ca139a29259L, 0x24de25bfd5f5d4faL, + 0xac294de79355b668L, 0x282c6865fba13198L, 0xd583a9e4736a7dcfL, 0x40229c3b0d0027bbL, + 0xc1a1a81f5f2d9bdfL, 0x78c35b56820ac017L, 0xc66efcbfb91ef941L, 0x4a9cc983926c7333L, + 0x4060f5cb47ac3d7eL, 0x3d4e509e45306b8bL, 0x3eed027aa5aa3cc6L, 0xa00321247d435dc4L, + 0x38d72a9a1fcf24e1L, 0x0f89ee0b709e1906L, 0x77e692a51693bc5aL, 0x5670e87e6eb4ed15L, + 0x8e7eda4a370271a9L, 0xd6c157bfea09abb8L, 0x7cb846fbd89f7692L, 0xabbceb32f3a82c7cL, }), Arguments.of( new long[] { - 0x6e1a741ae7ec03ebL, 0xf5363e7b44211d57L, 0x0000000000000000L, 0x0000000000000001L, - 0x0114edb0b4bbfa18L, 0x83154f7914d38972L, 0x8d932b636513ae0eL, 0xa0bb24e85d97c9fcL, + 0x5f7e521c22234349L, 0x43275c2d8b864eb6L, 0xc18ec1872a4938eeL, 0xbd46918698ebf64bL, + 0x1d829f8bd1e502d2L, 0x2511e535216ae474L, 0x68a83824109be8ddL, 0x10d74550098027d0L, }, new long[] { - 0x360b1762f284ac1aL, 0xc7e08eb6c5264259L, 0x60eabd90a111f141L, 0xbd3d95bdc05e96fdL, - 0xc12366f63a5cb505L, 0x30141aab158cf2deL, 0xefb1f62f804c4c02L, 0x198e4d8fdceed3f7L, - 0x178f01697a119a29L, 0x5ab2081161a38a08L, 0x0e02978d9d84e577L, 0x17286dbb65ec4b83L, - 0x15e5ccb7a1f5085aL, 0x11fdb06b66597f8cL, 0x4b8057b570a377c3L, 0xb274608cf0c9ec10L, - 0x9f220c4df7966a96L, 0x15bc1babf827161dL, 0x7ed132f78f8be153L, 0x38522a2d55b16e76L, - 0x70f56b472b9a589cL, 0x0c16b3de606a20b3L, 0x1e691d63b1e01619L, 0xe43b1de605c2efd8L, - 0x6fd7144c0a6b2f7eL, 0x9d2c424422c1e228L, 0xc3fdd9daf170c845L, 0xb5416500b7597222L, - 0x9d5beb65e35c57a4L, 0x3610afc9f107b341L, 0x26487e11ebcf8709L, 0x7e3f0ea4bbbe0d7bL, - 0xfeaa2d257997c2edL, 0xcf8974fcac8abcfaL, 0x1ae3d7733f7d9cffL, 0xdeb446665fe7c07eL, - 0x58a66ab0134febd5L, 0xcda459bb0c024431L, 0x109e6cfa2953268cL, 0xa74609ee30817c67L, + 0x22730b6721455cb2L, 0x5e1e9fe035857ac3L, 0xe96d04b39876f333L, 0xb72871f1b6aba971L, + 0x75cf8331a6bb9e60L, 0x9acced05bcf2854dL, 0x2a0033ca609c9048L, 0x338936e9e4e483b9L, + 0xf2fc06537f3eaebdL, 0x68f8db1b77873c0dL, 0xc7ec6c67f6b4fc6eL, 0x1fc2e76a0f68b788L, + 0x6dc97c9f3a2fbfc6L, 0xa026cebbc9432391L, 0x2a4183ec9d4678f3L, 0x243a6a5c0067aa72L, + 0x46a59c0eb7959104L, 0x659b1a3f61c0ed7cL, 0x215caa9463a58b1aL, 0x254642a0520c8651L, + 0xfb8634626a39d3a1L, 0xce83d95c7775133aL, 0x5dc27d715f6409d3L, 0x2e0b2ae3ecce0077L, + 0xb956dd21789a3963L, 0x6b916866fdae1e35L, 0x01cc314d11493e62L, 0x0391b5b718f24a82L, + 0xdb43acbe82f439a4L, 0x40444da3ee29194aL, 0x4dee6494dcb90928L, 0xd2dbeadf078860baL, + 0xb3ff03cefda75edcL, 0x7ea4a0af88d3e41fL, 0x71211cc08790829bL, 0xbc5532a27297928aL, + 0x37fda61f54ed7256L, 0x276acf3bc0b732faL, 0x6939ac6cdfec6adaL, 0x4587a691d391980fL, }), Arguments.of( new long[] { - 0x75576ea649c68bdfL, 0x988200da91af3658L, 0x0000000000000000L, 0x0000000000000001L, - 0xb610c4732da06560L, 0x60dfa764b8ae927dL, 0x24867e0eecc8eb78L, 0x952f3d5dc17c0cf2L, + 0x3d7e770d98625f7bL, 0x73f5ac0ecc6b3713L, 0x1c473ef51bb47466L, 0x265be88aae7ec15eL, + 0x482c4848dc89175eL, 0x075324b45865bedbL, 0x7241d87ef0316e43L, 0x9ee973225e2917b4L, }, new long[] { - 0x7c2bf5f25669c985L, 0x65f5ce67c1250090L, 0x131fb13c3f2b0af0L, 0xab6f976bc3783faeL, - 0xbac9b9bac68c1bb2L, 0x969a2438afc9eb6cL, 0x7e652efa93fc93b9L, 0xf1c6ccbd1333ea5bL, - 0x2a25a2c25ad454e8L, 0x002ed102a1146657L, 0x8f482f8aed7b4b41L, 0x1cc0b65ed2ce02c1L, - 0xad2c3f04da92abb0L, 0x3783c7d4f5bff2d8L, 0x8f1ddf96128c3d3eL, 0x8e10ceca6da015eeL, - 0x6bc2a9963a300b32L, 0xe7283e10d87a55eeL, 0x7737c78b6497ed8dL, 0x509181e37cbf2e52L, - 0x135e66e65ec985baL, 0xb191dd61abb669c7L, 0x82551e94692b0058L, 0x6acab0125b911923L, - 0x7ad6ebb617bfd61eL, 0xa2854d9a0b1fb89cL, 0xb5088284b426fe15L, 0x74621d1fc29f0ad7L, - 0xea5cf8ac302b12deL, 0xa8222d387b40a5a7L, 0x2dd23fd77aab83e0L, 0xd88147e1c98e69beL, - 0x7aaba7d84838fd21L, 0x933440a3dd8ecf5aL, 0xc6fe6e8cdb7d09e7L, 0xa00cab23b7a20207L, - 0xb769003d4abbef6bL, 0x119e829d8cdb859eL, 0x4cd41960d97c80a6L, 0xfb65ffaaf81144d3L, + 0xc06d5019b8415ec6L, 0x3216f586ad0219c4L, 0xdc6256174ae52d3aL, 0x6f73525557a40362L, + 0xc67a16801f3c7849L, 0x35fac0e26f949436L, 0xc05132d08e0ca160L, 0x86a1eea71bced849L, + 0x5ceef8251b695656L, 0x270b44cccb03ea55L, 0xe12d74a068c6c004L, 0x6530827a464cf047L, + 0xcac534cb43447a0eL, 0xd87210aaf51d8274L, 0x62ff0d309884417fL, 0x941a3bee4409ec4fL, + 0x67ad1b4bb5ddd1c9L, 0x4da0f22244aaeb90L, 0x642bfdaade36f0ccL, 0x0cdbb174cdb5e231L, + 0x02a5f954605f202fL, 0x934d28a02207ae81L, 0xa9b80d5be091e2cdL, 0x0fe7f1aae2165deeL, + 0xf8565707f4f9f799L, 0xb272ac31b5dde485L, 0x8e862ec5e1023e23L, 0x8476fdc87da839f6L, + 0xa87ec083c6985febL, 0x5eb0fc4fd32da92fL, 0xbbdc64a8ef4d92aeL, 0x5c4a1d7f814116dbL, + 0x527cb12521766a5cL, 0x2ca8099919917dd4L, 0x679529f3069a615bL, 0xeea6131fa046d78aL, + 0x65a704f76940a905L, 0xd1e4deb695b6bfd0L, 0x94b57b055a1f8263L, 0xedeb40c2ed28380eL, })); }