commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From er...@apache.org
Subject [58/67] commons-rng git commit: Package "internal" renamed "core".
Date Wed, 02 Nov 2016 04:14:48 GMT
http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well44497bTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well44497bTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well44497bTest.java
new file mode 100644
index 0000000..2cc29c5
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well44497bTest.java
@@ -0,0 +1,299 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source32;
+
+import org.apache.commons.rng.RandomAssert;
+import org.junit.Test;
+
+public class Well44497bTest {
+    @Test
+    public void testReferenceCode() {
+        final int[] base = {
+            0x2c2878c6, 0x47af36c4, 0xf422e677, 0xf08fd8d3, 0xee9a47c7, 0xba983942, 0xa2a9f9a5, 0x1d443748,
+            0x8fc260b2, 0x5275c681, 0x4a2f5a28, 0x2911683d, 0xa204c27e, 0xb20a6a26, 0x54ba33be, 0x67d63eb0,
+            0xdc8174cf, 0x3e73a4bc, 0x6fce0775, 0x9e6141fc, 0x5232218a, 0x0fa9e601, 0x0b6fdb4a, 0xf10a0a8c,
+            0x97829dba, 0xc60b0778, 0x0566db41, 0x620807aa, 0x599b89c9, 0x1a34942b, 0x6baae3da, 0x4ba0b73d
+        };
+        final int[] seed = new int[1391];
+        for (int i = 0; i < seed.length; ++i) {
+            seed[i] = base[i % base.length] + i;
+        }
+
+        final Well44497b rng = new Well44497b(seed);
+
+        final int[] expectedSequence = {
+            0xf9eb8c4a, 0xb5388f7f, 0x31db15ce, 0x7436250c, 0x26ebff2e, 0x5e23be0e, 0x29b3d9da, 0xf79c8147,
+            0x4565a1d2, 0x1907aeb2, 0x15d9658f, 0x2e86830d, 0x6f4e5a56, 0xeb1ae997, 0xc6852d4e, 0xb11d1a69,
+            0x0b6a1884, 0x17c35178, 0x5d84b05f, 0x3be7e73f, 0x0bdd5123, 0x01da4da8, 0x0473cc3c, 0xafe51580,
+            0xb8238478, 0x9e5eb067, 0x1590d61b, 0x9a4f09cd, 0xe7f58193, 0x63509a7e, 0x86b4ef58, 0x49bcb046,
+            0x92bad8e9, 0x5e6dd096, 0x4d3a3ab1, 0x9776638f, 0x4802d849, 0x3772ee29, 0xd444615a, 0x0b7d2c7f,
+            0x64e0efd4, 0x66f41964, 0x7e89b0e3, 0xcfc74119, 0xc4de0b6c, 0xca9f2618, 0xe700e201, 0x9298d076,
+            0x7c8d36eb, 0x6224fb16, 0xb4d563bb, 0xc411da30, 0x60898d17, 0xaa4e15d2, 0x608a7efa, 0x4ea45741,
+            0x93b35791, 0xf70be8d4, 0xe164e214, 0x711e5ef4, 0x9104bb18, 0x96b6324c, 0x79465ac2, 0x22e86d22,
+            0x6f48696f, 0x298a7eb4, 0xa46ee147, 0xe095c5a9, 0xa3538ee4, 0xc094c30a, 0x3d1532b7, 0x6a38643c,
+            0x8fb03976, 0x07b0d0b0, 0x551c6bd0, 0xbb33f741, 0xad8edb14, 0xa1cafba2, 0x8e54bb70, 0xf9c8855f,
+            0x95d96c98, 0x8360b095, 0x9551aca2, 0xa5509bf7, 0x491cd2e9, 0x431ec7b4, 0x81cfb46e, 0xe534073b,
+            0xf2f2964f, 0xd68aae52, 0x0224244e, 0x529e9de9, 0xfa55eff7, 0xf5f27f81, 0x1a071e01, 0xbc2cc04c,
+            0x8619bb1b, 0xc2de2157, 0x07efa053, 0x03d40321, 0x8ac2d84e, 0x29c590ab, 0x1481ec1e, 0xc9b8a4ef,
+            0xf3511719, 0x2c21029b, 0xb45c2897, 0x5a773c5f, 0xd86970ae, 0xd73f48b8, 0xfbb61984, 0x052929af,
+            0xb6592e9c, 0xaaf1e6ff, 0xf611e92f, 0x0cc447d8, 0xaa599d24, 0x0defe09b, 0x2a5fe45c, 0x8c64d61f,
+            0xe627ad10, 0xbfde76f6, 0xa3a16956, 0xb1de5a73, 0xd9d125a6, 0xd676b448, 0xb393c232, 0xdf6d844f,
+            0xa5987910, 0xe15fe210, 0xe4ab6f8d, 0x2a415d07, 0xe39700e8, 0x8254c003, 0xffd43332, 0xa8f8643b,
+            0x1a05cc23, 0xc77054a6, 0x70bc1814, 0x73e263e1, 0x3929b37c, 0xb47a85ba, 0x9af6d890, 0x6e7df50f,
+            0x5f08fce8, 0x4bb42d77, 0x43ecb1ca, 0x6d85070b, 0xd5afa3e1, 0xe4babbfa, 0xcb1fa6df, 0xf197e418,
+            0x8f73f5e5, 0xd333dd04, 0x42e4a2d2, 0x472ee369, 0x3895ef2c, 0x35377394, 0xd0d70ff6, 0xf6fcd325,
+            0xccc8283d, 0x8a0a3f3e, 0x1349caaf, 0xc3148637, 0x9474a696, 0xe9011d75, 0x8130918e, 0xd50fdea1,
+            0xb1919549, 0x3b9570cf, 0x13f85595, 0x98b73d48, 0x92b862dd, 0x1fee5d99, 0xb363077b, 0x47ed233a,
+            0xbbf445ba, 0x2d49923d, 0xa0a97f5e, 0x8979923d, 0x3efb7cdf, 0xcd2ee58e, 0x3ef90ea9, 0x92d2a8d7,
+            0x2cf3b42b, 0xb2721c9a, 0x370209be, 0xa66f20f9, 0xc7635366, 0xc1c7ce0a, 0xbc3ba48e, 0x9dac078d,
+            0x500908c4, 0x64e31a83, 0xf81d9494, 0xbdf4ad5a, 0xff24f3a7, 0x9ff42f32, 0x6274df89, 0x344f1d7f,
+            0x50d55f1f, 0xd2c0ab2b, 0xb27c189f, 0xe7448a8a, 0xf3fdab8b, 0x74bf8873, 0x5a335504, 0xacbdf5d4,
+            0x50a09a94, 0x4419430d, 0x03283fde, 0xea3c5eab, 0x9f7f319d, 0xae6e21ca, 0x57a9ded1, 0xab4fd711,
+            0xcdb2f6aa, 0x9be3cb21, 0x5646407f, 0x0dfaf9c8, 0xa6261b2d, 0xaa92936d, 0xd76a7170, 0xe25bb9c7,
+            0x3348cc42, 0x0fb2cf79, 0x5b9dd48a, 0xdcb1655c, 0x5ea4b6bd, 0x68b468b5, 0x83f19147, 0xa3ca57e9,
+            0x2b23e0db, 0xcb51fc89, 0x713ddc59, 0xf00045d0, 0x3f190d73, 0x634c3ff5, 0x9ed2f9fc, 0xdb5bd9bb,
+            0x35205c55, 0x51988784, 0xba7d65af, 0x11a98540, 0x8e3a785a, 0x819d97d8, 0x4a3c82fd, 0x700a1b17,
+            0x9a51500c, 0x3cb31e05, 0x99c703f1, 0xbeab2cf2, 0x97b2c682, 0x7f02c7db, 0x12fe2dc6, 0x210e67e7,
+            0xe2d898e0, 0x94239d8f, 0x9acc05f8, 0xc7243c78, 0x87f56697, 0xf7203249, 0x6ca4cdfc, 0xa89a02c0,
+            0x0876bf6a, 0x7405a170, 0x4edbf02e, 0x33858c05, 0x8058c835, 0x5a09f5f1, 0x5786229a, 0x4c1e1469,
+            0xae748079, 0x0ac95262, 0x7f9acf59, 0xd6fcdb25, 0x30dbd3f8, 0xf6cc41ec, 0xb97d453d, 0x4aefb871,
+            0x530181b8, 0x5150bdab, 0x9697d51f, 0x13488e54, 0xdee71ef4, 0x1c438318, 0xb9bb635f, 0x809ab956,
+            0x6189ce01, 0x5362d94c, 0x4c183a61, 0x3c65f9a6, 0xc705d9d7, 0xa460f64d, 0xf5527572, 0x146fa8e2,
+            0x45e668c7, 0x2be30c16, 0xbd8faf41, 0x92d055bb, 0x8fcd9081, 0xe599a689, 0xb81672a0, 0x939b5df5,
+            0x01823c37, 0x7d2ffd8a, 0xa2da0e99, 0x690e6eaf, 0x918a8009, 0xbb4c867d, 0x87986510, 0xcfbee8ca,
+            0x32945f83, 0xe0107f7d, 0x6c567265, 0x50185a20, 0xdc1aa2a4, 0x67b53d54, 0xce4d5c8e, 0x1ddff0d9,
+            0xd47b7f07, 0x4895e595, 0xd75cf72d, 0xdb865d06, 0x3a5102ad, 0xa5974c1b, 0x3a12b2ec, 0xad2b6260,
+            0x7ca3a3c3, 0xd4a2ca86, 0x7e1fff27, 0x1035696e, 0x248d560b, 0x82cdfbe0, 0x0b533ee3, 0x9ede15e6,
+            0xaec3f979, 0x0a6fb9cf, 0xc94a5dbd, 0x884ba5eb, 0xe80ac741, 0x1e0dc4a8, 0x8ac934ef, 0x003ea808,
+            0x09d41ade, 0x0d802909, 0x2717b5a9, 0xdb9c1232, 0x0b4a740e, 0x3ef0f592, 0x010c99d4, 0x233a50f1,
+            0x433abb45, 0xa3d02843, 0x76dcb0ad, 0xd4d68be4, 0xd7d4ce74, 0x9cc21578, 0xdb8365d7, 0xd0ba35de,
+            0x8e779d5a, 0x2d278682, 0x835a35ab, 0x8170a266, 0xa57a6f52, 0xd024df91, 0xf2b496df, 0xa60b2ebd,
+            0x4742bda5, 0x7beefd43, 0xca1e835f, 0x95cbe131, 0x6d5f1f3f, 0xc6fc7b2e, 0xbb4d7869, 0xbd7a634a,
+            0xeb35b0bc, 0xacd4f3bb, 0xfa87e05b, 0xfedc52eb, 0x72daa0ed, 0xc3743841, 0x2089d702, 0x606e8e8f,
+            0x2abbfe91, 0x724477b7, 0xc5886d85, 0xf35343f1, 0x9e908621, 0x91425228, 0xa8d7b8bb, 0x4bebe2a2,
+            0x3f335406, 0xea725ab8, 0x33bb9a4d, 0x1ae4f982, 0x182fb6b8, 0x45740c3f, 0x6fe4453d, 0x7d5afa9b,
+            0x62027f3f, 0x4aaf3d89, 0x74ebb382, 0xa49eba50, 0x6ab830d8, 0xfdb8b73a, 0xb21ca957, 0x2a89d682,
+            0xa47474a2, 0x522449ef, 0xebd7b2b4, 0x62357202, 0xe38a72c7, 0x0c20e4a5, 0x8bc912de, 0xe1ffda73,
+            0xd9ee22f3, 0x1315a7c5, 0xaa6ec3ed, 0x36168979, 0xfb63343b, 0x20079960, 0xec0301a1, 0x8e08401c,
+            0x20a70ea6, 0xf28e61fd, 0x40efc57e, 0x1ba0b289, 0xf1aff0ec, 0xfae15799, 0x7a610931, 0xeedeb38d,
+            0x36f2c12b, 0xc85e0450, 0xb9beeb3d, 0xb86b10e6, 0xd7e9607f, 0x223cfd6e, 0x55ef1d97, 0x93d906f2,
+            0x09e12b58, 0xf5749c13, 0xba3413c0, 0x8171be86, 0xaa68d02b, 0x5ee1c306, 0xcb38ad98, 0xd0be1b39,
+            0x510e0cd6, 0x3de49e48, 0x872a8aac, 0x28f73c21, 0xf62276ee, 0x52eb3650, 0xad52d305, 0x2f5d9ae4,
+            0xcfe34233, 0x27ce23a2, 0xdf7e17cd, 0xae42926a, 0xd6ee353a, 0x59b182a5, 0xd320ca21, 0x8d8e657f,
+            0x8fa71adf, 0xeb1ac850, 0xf43faf71, 0xf52ad236, 0xd06923b3, 0xc968229c, 0x6abbc365, 0xea4dd803,
+            0x72a06c99, 0xb0f053c2, 0x9f604a7d, 0x88f1781b, 0x6b2d1aef, 0x85a00592, 0xf6786d58, 0xb34d2f70,
+            0x3e5f5a3b, 0x6d329107, 0xe8ceed25, 0x0445d819, 0xfb77f254, 0x7219738f, 0x6e846109, 0x33fc1282,
+            0x963df7b0, 0xddb7aaeb, 0x8d902ab4, 0x7a47607d, 0xb9e4feaa, 0xcb55a7eb, 0xb550041a, 0xb1e23ab4,
+            0x0ea1863a, 0x959dbdf8, 0xb153ba8b, 0x52188b39, 0x5151c6a1, 0xe7a3ecf3, 0x087bd5c2, 0x8ba1b86d,
+            0x9a7c5b58, 0x12da9436, 0x7907d11f, 0x1d201142, 0x95b51a86, 0x7e2db64d, 0xe67816cc, 0xfd706251,
+            0xe39d5dbe, 0xec9e4159, 0x9b3939c5, 0x32d49111, 0x019435be, 0x0514d509, 0xae0b88e6, 0xe9925cbf,
+            0x3a91e3f0, 0x2378ceb0, 0x166f75de, 0x5dd91d58, 0xa6045910, 0x8ead5a6b, 0xfc7b70a0, 0x155f4b0b,
+            0x145d6d8e, 0x0affe016, 0xdf29283a, 0x8eebe24c, 0x5f1d4441, 0xb6522f48, 0x780fbede, 0x86d0257a,
+            0xd81391d7, 0x8d1b344c, 0x3c3e9a54, 0xdd5282a4, 0x72957a76, 0xa92bdb8e, 0x9e9dfad5, 0x13434ceb,
+            0x77559a7d, 0x82e2c4f6, 0x1088b141, 0xd7f3713a, 0xe9158f33, 0x78e4e984, 0x15e5f429, 0x4bb3771d,
+            0xf5b2af8a, 0xd93a5c5b, 0xce6bba17, 0xb5301cbf, 0xf7cdb8a1, 0x718195f6, 0xff826c4d, 0x2a297c6a,
+            0xef7f745c, 0x03014f22, 0x58a31100, 0x5e0af435, 0x76e0e967, 0x49bfbefb, 0xdc1df615, 0x8e70ad1c,
+            0x8f018598, 0x45ea3ca1, 0x2fc045e1, 0x938cdc71, 0xdcf40c48, 0x882beecb, 0x9defd645, 0xcd48cd6b,
+            0x30b26934, 0x15518c13, 0x7494017a, 0x606f3a6d, 0xc3933ae6, 0x08bfb9bc, 0x35e4c708, 0xe2305d87,
+            0x7c5384f6, 0x724dfe37, 0x934b386d, 0x76dcd82c, 0x2f0a2e22, 0x69501a2a, 0x698a8366, 0x037842a5,
+            0x9ab1b83e, 0x14ac2a73, 0xb409d845, 0xffb27d8a, 0xf47d8921, 0x3cd07eeb, 0x94f4adca, 0x8bb54ada,
+            0xfd63eeee, 0xe99fcc7f, 0x3d332142, 0xf3a55116, 0x51559641, 0x5e1a79ee, 0x1b499e0f, 0xe029b1f4,
+            0xc13d6ddc, 0x8eec872a, 0x566ce2c4, 0x7a5b3e3a, 0xbbbe18c9, 0x57fe99a5, 0x16174c72, 0xec9d16fe,
+            0x00210ce0, 0x613db062, 0x3d8833e3, 0xb2eeb7f1, 0x941af60f, 0x2b41b27c, 0xbab2ee06, 0x29e132ea,
+            0x52b637b7, 0x3a857997, 0xded5e26c, 0xbdedd156, 0x95c6bf99, 0x5e503b89, 0x9788314c, 0x125008bb,
+            0x52a41a1b, 0xafe9bd96, 0x73726042, 0xb4955c6d, 0xeb62cae3, 0x3753d613, 0x0e3f9e6e, 0x6ed38f3e,
+            0xd86051e7, 0xceededcc, 0x14a97c3e, 0xcc489da0, 0x8e476def, 0x513545e9, 0x20413975, 0xf48336ca,
+            0x624f564e, 0x0e95be63, 0xe2e6f6ce, 0x0cc181c0, 0x791fc5fd, 0x9bf2b807, 0xf03a9e64, 0x4e0604c6,
+            0xd91c5f62, 0x6dfe0f81, 0xd609f698, 0xdf34d25a, 0xda6e9c24, 0x6a3cda5b, 0x62619c72, 0xbcc58c16,
+            0xac13df0c, 0xbd46f663, 0xa2a918d7, 0x8df19d57, 0x20c5ea0c, 0xabf02aec, 0x8ae89c36, 0x0d9b8767,
+            0xe6e7a58a, 0x72fba4fe, 0xf01754c8, 0x0fc8af4b, 0x884e7ad7, 0xbf22317c, 0x086b2f50, 0x6f89ab62,
+            0x0dfc3b53, 0x66c4975e, 0x61a6084b, 0xce1181ec, 0xd8c89b63, 0x0a04e924, 0x2a3c75b3, 0x8fd8df23,
+            0x941605fa, 0xf4777ee6, 0x70a6d765, 0x85c4c544, 0xd6a71110, 0xb581dd9e, 0x2ad7005b, 0xfb72fede,
+            0xf4c80925, 0x36e400da, 0x93df5cbf, 0x78016978, 0x8bd6fa2f, 0xf42c8a69, 0xb58f3a48, 0x467fad55,
+            0x49b7f13c, 0xb2a9e2ed, 0x8b442416, 0x55a70c3f, 0x1745f60d, 0x06bd4afc, 0x4a62b591, 0x7d578ccf,
+            0xa2ce8114, 0xf85c377c, 0xd30d6c22, 0xa8e03cde, 0x383e6e98, 0xc39ab72f, 0x0d301120, 0x5a3ff16d,
+            0x5f2f7939, 0x282fd388, 0x24bcdb5e, 0x6bf51773, 0x96d69519, 0x9d6e6cc3, 0x9a875e95, 0x1749467e,
+            0xf3832e33, 0xaca7f67d, 0xf905c873, 0x60e8acdf, 0x27484685, 0xa7260b61, 0x32751fdc, 0x0c8f43f5,
+            0x6e980de2, 0x66fb4d00, 0x40c62cf0, 0x421bb383, 0xc5458b4e, 0x93e3f361, 0xc719f6ea, 0xa54095b1,
+            0x458153db, 0xf4904fdb, 0xc17ceb84, 0xd895cdee, 0x453a6f0d, 0x59f2e469, 0xc92dacaa, 0xf6bc4ee7,
+            0x963e48ee, 0xea295409, 0x7c94fd24, 0xd6ab133d, 0x9b095054, 0x6e138ab6, 0x372f6fcd, 0x1c46846e,
+            0x0c7364f7, 0x16c7d5dc, 0xef21ad3e, 0x831ec948, 0x2290ffb1, 0x52e5650e, 0x96bb2647, 0x35abe2a9,
+            0xa65f4f3c, 0x3a1c98f2, 0xf99469c1, 0x16bac354, 0x46c41925, 0xccb4e29a, 0x1f3d2fc4, 0x5960a5d2,
+            0x0bc9818c, 0xd0dd4e12, 0xe7bee0f9, 0x8a725071, 0xd851e6bd, 0xf93ea075, 0x3dd1b884, 0xb95797f7,
+            0xd38fefb6, 0xdf708359, 0x768ca3c9, 0x8a41bafa, 0xba6e5b13, 0x2e5bf73c, 0xa2f6056b, 0xf7a3d268,
+            0xb5e03268, 0xace6f72d, 0xd135cee2, 0x129658af, 0xc2e094a3, 0xdbeb15c1, 0xb5670b77, 0x200514fe,
+            0x23a15e29, 0x91fbd460, 0xa33bfef7, 0xa720e8ab, 0x8c9bf361, 0x7cc84077, 0x71bde49c, 0xed336fa5,
+            0x50d8723c, 0x8742e76a, 0x258edcfe, 0x1076555f, 0x1e67dd86, 0xb48827ad, 0xf5dbaf44, 0xf6f7ae93,
+            0xe383d265, 0x71010d1f, 0x6f7b048c, 0xba44df93, 0x150ff25c, 0x7dd5fd05, 0x64ce5cda, 0x4e9ac4ea,
+            0xfa938c36, 0x36ea114d, 0x070c38e1, 0x15e00e64, 0x60d96990, 0x77da2866, 0x3392c20f, 0x66638b0b,
+            0xfb2fbc60, 0xd98eec37, 0x082a739c, 0xeba245a5, 0x8e4511c6, 0x8aa472c8, 0xeb5a638d, 0xf5051ff0,
+            0xe17e60fb, 0x81bf3ce6, 0xbf3d78e1, 0x6b0273e7, 0xda1f2048, 0x18c753b4, 0x32b9e850, 0xca145661,
+            0x8a72273b, 0xfc2a483e, 0x220b7838, 0x4a6f669b, 0xaf78e806, 0x1b4a9528, 0x6de25702, 0x66753fa6,
+            0x30954419, 0x6c0f9729, 0x157fa568, 0xaf24216a, 0x62d00eb0, 0x69de8db1, 0xd11b8d5e, 0xeb999cb9,
+            0xf1e4f30d, 0x2df4c02d, 0x36065d61, 0xeda369dd, 0x71b91ed6, 0x0c475138, 0xfd7cf108, 0x35ab11c6,
+            0xc94f4d1d, 0xed7dd424, 0x99dc1d8a, 0x7ada7170, 0xe9788411, 0x351fe602, 0xcf0e0bea, 0x138f12e0,
+            0x59a20fb8, 0x20e114d2, 0x83a5fd6d, 0x84964679, 0x056f879d, 0x9d6406d2, 0xc243f306, 0xebef97b3,
+            0xb744e79d, 0xa878f194, 0x7d8150f9, 0xcdd9ac63, 0xf8afa3b6, 0x8802eeed, 0x1d78e048, 0x85861f4a,
+            0xfbf338ed, 0x7217d0cf, 0x73be0e8d, 0xc2c57d37, 0xd2375e73, 0x18fb69f4, 0xef90628c, 0xf5c69d2f,
+            0x05d3a40e, 0xfef2a92f, 0xa1f01211, 0x3b52f126, 0xa1613cbf, 0x294ce2e3, 0x38b8c303, 0x702e962d,
+            0xa3d55a7c, 0x784e9d94, 0x9542e6c3, 0x5bedb6ea, 0xaa4f97c1, 0x1bfd5441, 0x9dc7c05e, 0xb16ca88c,
+            0x1da31c16, 0x2b51129d, 0x64eb2a8c, 0x835b097a, 0xf38aa47c, 0x07888143, 0x3effe9d4, 0x8280b58b,
+            0x2cf2277c, 0x05bfec4f, 0x04fd2d9f, 0x41a9f8b1, 0x5890501d, 0x210211fe, 0x712cedd9, 0xc01a192e,
+            0x55b7163d, 0x76c3c069, 0x44adf8e8, 0x3cc2aee7, 0xf5833267, 0xff99e670, 0x3afefdf9, 0x39b7fdc7,
+            0xb0b3d12e, 0x659fad47, 0xc47d1f6e, 0xc77dbfb8, 0x8d755ae9, 0xc5d5d968, 0x5114206b, 0xcbf9f825,
+            0x00c16f2b, 0x8e4574bc, 0x34aad010, 0x03e99c4d, 0xf40eaaaa, 0x52a6a678, 0xb8418751, 0x6ffa84ef,
+            0x19683f38, 0x12cc3e29, 0x7144a93d, 0x29f0f9fe, 0xd260d921, 0x3fc945a4, 0x536e7924, 0xd00fe6d6,
+            0x9f79a06e, 0x504d078e, 0x0dbf371c, 0x4130cf4b, 0x00d5efe7, 0x82691f7f, 0xc6488723, 0x9bea125d,
+            0x74cfeea1, 0x3f8526ad, 0x41017779, 0x4e2b1174, 0x339b99a2, 0x33db6686, 0x22386b7f, 0x6dd556c2,
+            0xb32835c1, 0x8deaa768, 0x63afd4ad, 0xca558005, 0xa52895c8, 0x0822e208, 0x8e211f6c, 0xaaa60cc7,
+            0xce819a50, 0xb18bdd0e, 0xd032d5b4, 0x5d05ecc6, 0xfb201016, 0x17f35371, 0xc76dd59e, 0x3842ba3f,
+            0xd4ecfb1a, 0xfa3a8e0f, 0xbedbafe2, 0x0dbe2c5c, 0xfbce7480, 0xacab2838, 0xed58b6ca, 0x57f11fe5,
+            0xdae58a71, 0x6303fb8c, 0xfedcfea6, 0x005bed8f, 0x57ccd4b9, 0x7a6bfefa, 0xafb9eff9, 0x587fb631,
+            0xa3774fbe, 0x4cb84cd7, 0x60257bfb, 0x35cb0648, 0xa65374c1, 0x165e83f3, 0xce2643ac, 0x7a0beeeb,
+            0x77d67d82, 0xe068e67c, 0x1f675f3d, 0x3a686024, 0x0585a72d, 0x4134dba8, 0x1f4c3309, 0xda8c596a,
+            0xc10ce519, 0xe0c4e0a3, 0xbed995a2, 0x22066d03, 0x2931625e, 0x4bb234f0, 0x3d19ceac, 0x0015da4a,
+            0x1dc87923, 0x0ce57832, 0x3c082de3, 0xedfe9112, 0xb64beb5c, 0xd50ba80c, 0x45ca2d3e, 0xee733644,
+            0xb3abd4b0, 0x7d13f1da, 0xe5d14ce4, 0x039eefd8, 0xac2bd487, 0x812b73c3, 0xba59f28b, 0xf58b13c9,
+            0x0390a480, 0x101958ca, 0x62d26619, 0x165d872e, 0x7bbae4f1, 0x88a601ca, 0xf39c7fcd, 0x825a5a01,
+            0x0d226238, 0xb549bb78, 0x7ccd6f2e, 0x6d095996, 0xb0567749, 0x8530f16e, 0xffca3848, 0x3656b104,
+            0x00339f0a, 0xaa8a55ef, 0x8b10e692, 0x04487622, 0x0e06c360, 0x9247d69c, 0xf8f8b2e6, 0x2a94b3de,
+            0x7ea1a275, 0xdc42660e, 0x7088c61f, 0xe1bb5030, 0xb3916fe9, 0xca390927, 0xad2d2cf2, 0xaf641b4e,
+            0xadf900e8, 0xb81d3550, 0xa47e02d5, 0xa65f55a6, 0xc2246bc8, 0x7984dcbb, 0x0868c0d5, 0x3b0ed447,
+            0xd4b08144, 0x712227f1, 0xe72de165, 0x77de4665, 0x0af66b5d, 0x9dc3bea7, 0xc9b1f568, 0x06851474,
+            0x6ba69abd, 0xfec47d33, 0xf9d69b1d, 0x8f369888, 0xd82b120b, 0x5680c0da, 0x073e0b4a, 0x3537e161,
+            0xadcbb641, 0xb5c25b08, 0xe6cf800d, 0x89ff9a79, 0xc5eb328b, 0x7d1e4a36, 0x008969a4, 0x357b1e10,
+            0x091a1eda, 0xea1b4ac8, 0xa13176e3, 0x98819356, 0x98f21f13, 0x9b554fb6, 0x2f094944, 0xde140250,
+            0x7d53c489, 0xe141a8c3, 0x97492441, 0xca77cd47, 0xc4fe200a, 0x05a4fa66, 0xc1d27eea, 0xb48f22c2,
+            0x716602bf, 0xeeeb1263, 0xb89b1694, 0xd2d6c684, 0x8e6114ab, 0xc6d231d9, 0x3b4a5203, 0x98915636,
+            0xd44e1c45, 0x38a49a3c, 0x50ac1894, 0x1476ca37, 0x4ca7c83b, 0x4fac4b1e, 0x9696e488, 0x33d23dbe,
+            0x8b6690fe, 0x477bd2e2, 0x9c5eeb6c, 0x61ff2b24, 0x70f0cc14, 0x6d1d4b90, 0xaaf09e21, 0x7aff0b07,
+            0xb38073b6, 0x714f90ff, 0x4f7ee1ea, 0xa8155211, 0xf715104d, 0x86af21f0, 0x749095a4, 0x2a193902,
+            0x5efe3247, 0xad12f051, 0xcc9e5acf, 0xe1da3419, 0xea960075, 0xa7266501, 0x497bf896, 0x88eb1358,
+            0xbf98853c, 0x38ead5c5, 0x457cad5e, 0xc7a0e918, 0xf9d7df8c, 0x3c077988, 0x5ea2299b, 0xe361ade4,
+            0x444c7598, 0xb9eb51cb, 0xc3ffc354, 0x4765840a, 0x8bf62084, 0xe86637f5, 0x12108084, 0x43c60680,
+            0x79c00291, 0x8a3c1407, 0x12d92b08, 0xc460875a, 0x642df87c, 0x658eb66e, 0xa948dce5, 0x84f2de13,
+            0xfafbf168, 0xf38a9a4b, 0xaa9dbfe1, 0xad52b4b5, 0x9098a4af, 0x8c3a41de, 0xb4e1790a, 0xf28f8fd8,
+            0x79b6e6b7, 0xda7eee27, 0x1a9a9e0c, 0x6f6cfe42, 0x8c0fbbca, 0x70235c93, 0xe31bdd59, 0x5101b653,
+            0xebd95907, 0x650adf02, 0x8a90d909, 0x8db9bade, 0x6021b521, 0xaef1ad35, 0xf1f4b33f, 0xce481c2e,
+            0xe03a17ea, 0x494539e0, 0x2d194f27, 0x2d51e110, 0x4a0de34d, 0x283432a5, 0xaee91b11, 0x4fc5953d,
+            0x7b0b50a7, 0xb3a844dc, 0x8eb874e8, 0xde6e3bb9, 0x6d245784, 0x9146b224, 0x8a15ef39, 0xedfda77b,
+            0x191d73ab, 0x01aa3e59, 0xb0202c46, 0x72b4349f, 0x34f92274, 0x9d937103, 0xed9d2e95, 0xa4fee698,
+            0xb225b25e, 0xcda478ac, 0x343858c2, 0x6e0614e1, 0xe7281c0b, 0xb22c9edb, 0xa8d2b08a, 0xe574adfd,
+            0x73e6e316, 0xa7961ce5, 0x2f96a88a, 0x07a4922f, 0xd3a27aab, 0xc7bdbc9c, 0x93593d41, 0x31f2972c,
+            0x6b050ef8, 0x25c371a8, 0xb251ddc3, 0xece0234e, 0x57316e1c, 0x5580ff4a, 0xe754fb22, 0xfa752ea1,
+            0xf29a7d8f, 0x837aa2e1, 0xf79a3db4, 0xe9a0b278, 0x0b7e9a4c, 0x039b7d53, 0x19700cdd, 0xe468e2d5,
+            0x4ef67429, 0x5f9a82b9, 0x14b1818e, 0x8ac4456f, 0xf4fcbd5f, 0xc25e5cbd, 0xca44fa25, 0x0cdbbc49,
+            0x1e292d92, 0xecac0c7c, 0x0d6abbea, 0xa75d3b7e, 0x6a0ebfac, 0xa4b4d4e7, 0x5d05e427, 0x4d25b42f,
+            0x2ee101b8, 0x7e6bbe0b, 0x2692810f, 0xa3bb41a5, 0x3c170aec, 0x64c29776, 0x9ec1de52, 0x073464d4,
+            0xd2334a19, 0xb11ecbfb, 0xc2fb081e, 0xe5d3f11a, 0xf575161c, 0x2d5c8d94, 0x16ee97c0, 0xd860049b,
+            0xd31b1d3e, 0x88e8d88c, 0xf8d2e782, 0xc5ce6d05, 0x52b3803d, 0xf668f35f, 0x4e5c5a25, 0x0f6ad5ec,
+            0xcef38344, 0x33ac3c28, 0xec7b00a7, 0x2255a18e, 0x77731e06, 0x9ed38a19, 0x5f408d79, 0x0005df1c,
+            0x3bf190f5, 0xe5cdbd6e, 0x33d7f6fd, 0xb539269e, 0xf8979097, 0xf773f555, 0xe3340f3b, 0x9eb34ff6,
+            0x9992249e, 0x5a49e867, 0x3ab333df, 0x14c08f75, 0x69db660a, 0x6a6b7da7, 0x0802cb82, 0x9df83473,
+            0xaa63b2af, 0x467cbfe6, 0x3a3da69e, 0x115ebe67, 0xba794938, 0x61ae6ceb, 0x12ddf6a5, 0x031dcbf5,
+            0xf5794054, 0x33ec59b7, 0x22761015, 0x2fca22c0, 0x3d7aede0, 0x31817cf7, 0x81625a1c, 0xfd459b67,
+            0xef53f4c2, 0xcf32c3ae, 0xf71212df, 0x017c285f, 0x45915348, 0xdcd3e3a3, 0x7b748de3, 0x85a214c3,
+            0x4a8c3466, 0xdfba975d, 0x186cdf92, 0x458838e4, 0x517ce04e, 0x009ffdb6, 0xea38a017, 0xd638dba6,
+            0x97a5afab, 0x3307c380, 0xcff6a21f, 0xe7f04e3b, 0x8458cdbb, 0x96817ff1, 0x70620b84, 0x9d9dd03c,
+            0xc1b7a406, 0xbfcede98, 0x0718bcd6, 0xbf9c53f5, 0x3972f290, 0x2b4046c2, 0x1836dc39, 0xda22e544,
+            0x3473c9a2, 0x565dc98a, 0x8070c75e, 0x3acd2646, 0xd7e67d98, 0xb8ab5499, 0xde9a6a6e, 0x06fd97d9,
+            0xcbc6a963, 0x766721d4, 0xd9c14299, 0x276debdf, 0xeb878ecc, 0x25959871, 0x323b5703, 0x6fbc0a93,
+            0x461cc59c, 0x440e4060, 0xc50f826b, 0xe7581f2b, 0x7fddb23f, 0xa8183462, 0x5a7d14a3, 0x63dae8eb,
+            0x71759f0c, 0x174fe030, 0x191b931a, 0xd77d14b2, 0x2d5d1afe, 0x8926c797, 0x7a71d07e, 0x123a1174,
+            0x825a0c0c, 0x4eb0f759, 0xbc5212ed, 0x84fbfbbc, 0x45bbf49f, 0x6a88813e, 0x02e1ccdd, 0x24ac0f33,
+            0x4b66f93d, 0x2fda0d07, 0x2304c24f, 0xff91ee3e, 0x672d7bc9, 0xcf30569a, 0x896c75d0, 0x70033596,
+            0x8d2f77ef, 0x84caf55c, 0x9a4912e1, 0x3abece82, 0x60d8ad30, 0xaefdd54b, 0xf8fd6fe8, 0x82a453c5,
+            0x0780b4d5, 0x2fdb9b42, 0xb2f1f375, 0xeb423633, 0x906fc154, 0x83fa194b, 0x37f38f6f, 0x5935340b,
+            0xac6c3195, 0xaaa2f683, 0xaec0ed11, 0x53dcbe65, 0xfc62691e, 0xfd63f19a, 0xbbff97e3, 0x676480a7,
+            0x1acbf25b, 0x40d2634b, 0x776e9335, 0x1678f0f1, 0x46bc6731, 0x7f52d21d, 0xc16982d5, 0x1bb96de3,
+            0x68cb511f, 0x829e142c, 0xf9fe3228, 0xfd62776e, 0x94857fc8, 0x70a9ca65, 0x42097c7b, 0x751a6c89,
+            0x513c69f1, 0x2efdbaec, 0x6623bf47, 0xc36d8035, 0xd0837409, 0xbe55a333, 0xab4f3bdf, 0xa5b046c5,
+            0xf7a37757, 0xe787f59e, 0x87913a54, 0x480a180d, 0x81a5ebd5, 0x511eb7ee, 0x12f5a8ab, 0x73447c1c,
+            0xa164c28c, 0x57900661, 0xba9414fa, 0x3bf9ed82, 0xd86a6acd, 0x5b09f797, 0xa5663ec3, 0xc86cbf84,
+            0xdcefc67c, 0x48a84c90, 0x5c745f28, 0xa8b236e0, 0xfbccb56a, 0x40383b3c, 0x6b238a05, 0x90eefdec,
+            0x7e951a6c, 0x940e63a3, 0xf98ef893, 0x8c977a6e, 0x71c42456, 0x5d61332f, 0xea297f4b, 0xa9b252c0,
+            0x3e97cb15, 0x48050881, 0xf5b264d2, 0x2be5347b, 0xef030ce9, 0x41f2c0bd, 0x04d24fe2, 0x06e7e1cf,
+            0x01548902, 0x32c32925, 0xfb27d2b1, 0x6a360112, 0xfc79125c, 0x3a6bacbc, 0x987eebf4, 0xfc565822,
+            0xf9ede83f, 0x4568ad7f, 0xf583840b, 0xa7eb1583, 0x90f031a4, 0x3b252d95, 0xb612a076, 0xb78783cf,
+            0xe1f616ae, 0xbec3df2f, 0xd0c58988, 0x00ab849e, 0xdec160fb, 0xb77b7645, 0x2e0c857e, 0x61c65b1e,
+            0xc4889032, 0x7112c73b, 0x114dbae6, 0xa0145c70, 0xb9958cd7, 0x7a318fb8, 0xebe7ae55, 0xdb9d9621,
+            0xe4f27eee, 0xe4435669, 0xc80091a9, 0xbaa569d3, 0xbe0e3758, 0x4097462e, 0xe1fec615, 0xd9e85d86,
+            0x84291b04, 0x1ccf2614, 0xadef18d2, 0x719639bc, 0x82794162, 0x0282420f, 0xabdc9b1e, 0xdbd734c9,
+            0xa89d747d, 0x91266431, 0x64a1d430, 0x5c3a1c2d, 0x0502cc98, 0xb2070762, 0x442dd308, 0xbf28564d,
+            0xc68815ed, 0x3e4eda5c, 0x128b113f, 0x49b41127, 0x9a84ec0a, 0xa9bdfb30, 0x8a99056d, 0xa95de301,
+            0x8d8b0982, 0x24f48723, 0xab3f376c, 0xcd89d8fe, 0x276b6c49, 0x15f00e90, 0x9f14da21, 0xe97407dd,
+            0xeb33ae49, 0xd0811453, 0x0a10eea7, 0x2588a497, 0x575c1f87, 0x5141ae48, 0x6eaaccbc, 0x159ce14e,
+            0x0a9d6ddb, 0xed91259a, 0x4b23e675, 0xd1671bcc, 0x28beae5a, 0xc6ed5424, 0x9e88e390, 0x214494c8,
+            0x23da4138, 0x87053bd5, 0xb9d03560, 0xf6a99473, 0x72a153c4, 0xf94c20b7, 0x70a7b274, 0xba274c89,
+            0x767f6e53, 0x638da5da, 0xa23bf5d3, 0xc0c3b92e, 0x0fb97f72, 0xd9a25e94, 0xba7e4365, 0x909cffc5,
+            0xc7bba836, 0xc2684d34, 0x2dee53e7, 0xdd75d5bb, 0xbd7458a7, 0x8e810115, 0xc5a84a82, 0x12c3edf4,
+            0x941d772c, 0x4a153ba6, 0xbdd1d73e, 0x3b7755b7, 0xa208da2a, 0xb2f24ecf, 0x22bc87b0, 0xd3baa4b4,
+            0xe033a60f, 0xfef480aa, 0xc4a3eb4b, 0x77a87092, 0x42f40429, 0xb09c304c, 0x640044a6, 0xff901800,
+            0x3b81b734, 0xf9926fdb, 0xb825317c, 0x6a2a1c29, 0x4f33ecc0, 0xe0a3e7cb, 0x8f2c3191, 0xe4c25344,
+            0x62d6d81a, 0x8deb3647, 0x8c8a8674, 0xcac73002, 0x4372b23d, 0xbe4a30e3, 0x25fd3466, 0x3202e33a,
+            0x0fbb0725, 0x1019bb09, 0x0e5c92af, 0x6e82ff5d, 0x39db8dc3, 0x901eeaeb, 0xa05712a9, 0x1630a239,
+            0xef88227f, 0x93fe8ec2, 0xe0e21c3b, 0x7200598e, 0x52d14e13, 0x84b35afe, 0xa32dd8a6, 0x47ea13bc,
+            0x280b5ce2, 0x99410c2e, 0x961e54fe, 0xda53ac4b, 0x7ce9a3d4, 0x50f03b76, 0x14325768, 0x8c0cc024,
+            0x2390ddb9, 0x026c576a, 0xc5881d73, 0xe4a9ffea, 0x6db0629a, 0xdd6c0421, 0xdccaaa6e, 0x1368c821,
+            0xbf593da9, 0x2cbf7423, 0x02167699, 0x74f9fae5, 0xb5374a5f, 0x8d794559, 0xaac940b3, 0xac8d2452,
+            0xf70f6d6d, 0xffc598a9, 0x2ffae518, 0x64a19d54, 0xd5d35698, 0xb0802198, 0x4aab10ea, 0x79aa57fd,
+            0xce39bcc1, 0x38866f22, 0x94982f77, 0x95ebf8c1, 0xa761fcff, 0xa7bf1657, 0xfdcad5cc, 0x7691f346,
+            0x12e6e3f5, 0x762b4344, 0xa2f14a2a, 0xa710ee06, 0x1675f6ed, 0xaec92100, 0x1a1a81cd, 0x7836dc15,
+            0x31128a6f, 0x94272ed4, 0x693553f2, 0xf72ee615, 0xf311074b, 0x2fd354a2, 0x2cf6d090, 0x9c87ae3a,
+            0xc8ead3c4, 0xce07766b, 0x425fa6d5, 0x3f9e735b, 0x0a865da1, 0x729e0347, 0xe450b189, 0xd5560f8c,
+            0x387de83d, 0x364794dd, 0x79c4fe6d, 0xee112e73, 0x09e99443, 0x5039d959, 0x7ba8d125, 0xc8588993,
+            0xd0810ccf, 0x13eb6b47, 0x89e8bae1, 0xbd061f53, 0xa409cfb2, 0xa4f7fbeb, 0x568e8046, 0x75693036,
+            0x9be660d4, 0xda3f8e86, 0x9e1b90dc, 0xc023e24d, 0x7e82e39a, 0x62f2ea10, 0x523f0663, 0xa7a72d64,
+            0x2636e7cf, 0x4dbe27a7, 0x64d1ed4a, 0xcb55f7a0, 0x06dae206, 0xb56e68ca, 0x3539b098, 0x0e395df1,
+            0x83b6bfe4, 0xb6cd4f6a, 0xab50a3bd, 0x72edfe15, 0x1f8515bd, 0xe495a19a, 0x9d46df4f, 0xf488013f,
+            0x4d1f9fdc, 0x971d292e, 0xc572615a, 0xe401572b, 0xd59a0b3c, 0x0658da8f, 0x60768ddb, 0xa9943e19,
+            0xc3a18a20, 0x285ec952, 0xc4776f99, 0x9f1eb4e3, 0xe42e9536, 0x887e4b47, 0xf9136d85, 0xbf533be2,
+            0x86d74a20, 0xe0d6c774, 0x552caece, 0xe7bc30e6, 0xfc80517a, 0x5e6bdd58, 0xb1c46c72, 0x0e8dc32a,
+            0xb5444136, 0xe9b46133, 0xb2f60032, 0x7dce7daf, 0xba4a0116, 0x03480b79, 0x3495a197, 0x2ecf3b56,
+            0x4fe86542, 0x2e83dbaa, 0x06906bf2, 0xd2d77b7a, 0x898117c1, 0x362b57c8, 0xe2257d0b, 0xeee583d2,
+            0x6fbf1761, 0xfb3a1d2a, 0x18ad48a1, 0x1ae0ab8b, 0x4fd0242e, 0x909eb19b, 0x759f039f, 0x43a2e2b2,
+            0x3c08c8ce, 0x8a6699a6, 0xa1c4bd34, 0xb21aafab, 0x472b70ee, 0x1e29db1c, 0x2762d2c7, 0xcd312ec0,
+            0xf653e8eb, 0x5ef39eb7, 0x0a3c253c, 0xc5fc1f49, 0x95894cc3, 0x7fb8bc3f, 0x716c7bdf, 0x794a2a9a,
+            0x8dcb3652, 0x35faf233, 0xcb605201, 0xf3ce4060, 0xf8bae3bd, 0x8feaa345, 0x3d52e33f, 0x2367b6b9,
+            0x6dae73c7, 0xc7247d46, 0xe44280cf, 0xbff900fb, 0x6a590053, 0xed4f734b, 0x45cfad5d, 0x8817d88d,
+            0x2ddc30ed, 0x324a17f9, 0xcdcbb3cb, 0x5ae05e7f, 0x89844b49, 0x31ea7a9e, 0x8982a99c, 0xe2a10114,
+            0xadb655a1, 0xd820908a, 0x828ca7c7, 0x44cad636, 0x70fadfe7, 0x5ebf1018, 0x72b586e6, 0x315e60b3,
+            0x9540cd5a, 0x2756b8c0, 0xc0d24fbc, 0xb4941c20, 0xfb2575c6, 0xacc7fc8b, 0x75b1f87c, 0x9dd7303f,
+            0xf1bcd180, 0x30930381, 0x957288c6, 0x829cd6b6, 0x65451d04, 0x17bc4afc, 0x221421ae, 0x5b33489a,
+            0x9d999adb, 0x04c89542, 0xe2a97f88, 0xd8dc0202, 0xbbb1fe02, 0xfa8cd2ff, 0x8b9f628d, 0x0f2ec94c,
+            0xe5dc328d, 0xe538b905, 0xa9512e86, 0x211bec69, 0xf54ef592, 0xd3b87def, 0x739d3e47, 0x2cf040fb,
+            0xa89f7e32, 0x2175f03d, 0x35aa1a3e, 0x7b7d1595, 0x8b118b51, 0x3f0e7231, 0x31bc24e6, 0x01057bc5,
+            0x3c074f2e, 0xf799896a, 0x189ee136, 0xdd07f1f8, 0x71f4afa9, 0x55f1ef6b, 0xe20e1209, 0x6142479a,
+            0xb9271402, 0xcc610aed, 0x7e3cab0e, 0xca27138b, 0x8b1cc8a3, 0xce0192c9, 0xac153ded, 0x55ca1523,
+            0xcaf7a020, 0xbfa450bd, 0xfd4c968a, 0xf18b7cd8, 0x36b2d54a, 0xdd569890, 0x559a8a83, 0xe69abaff,
+            0x1248baa7, 0xc4a10e27, 0xfbabffb3, 0x1a67d584, 0xaf197632, 0x515c7c01, 0x623e0185, 0x92407512,
+            0x5cf012ab, 0xa9329d01, 0xd5c5ad74, 0xe7e92fba, 0x287c0aaa, 0xa6466ada, 0x61072e3d, 0x63096658,
+            0x9c9f33a4, 0x208aaacc, 0x40afb9d2, 0x95182939, 0xd691b81b, 0x49810ea8, 0xdecbc1f3, 0x821283c6,
+            0x5dd139c9, 0x04f1c5ed, 0xd4cb9520, 0x3711aaff, 0x1b4a1cad, 0xf5982481, 0xf92bdd32, 0x062c3092,
+            0x908d1eb0, 0x597f5f99, 0xdb8b3203, 0x0fafd4f4, 0xd07212b1, 0x00a44adc, 0xbf2e210a, 0xfa9d9413,
+            0xa6fad16d, 0x1a8abe34, 0x51c1c640, 0xa4e2434d, 0xba04acfe, 0xf5b7b040, 0x3f237988, 0x26621ed6,
+            0xb964f65e, 0xf0d2079b, 0xb0499b7b, 0x85f487c2, 0x1e42fa26, 0xb0debd68, 0x483b9ebf, 0x8c7046a0,
+            0xb03e8050, 0xf18e3072, 0xdfd63c33, 0xd2f2b783, 0x833697a8, 0xf33b8fb6, 0xe73d9440, 0xff64a238,
+            0x353fc592, 0x5590801a, 0x2b79cde8, 0x54aacfa7, 0xccf98129, 0x23aad0c4, 0x6482d132, 0x206c6673,
+            0x2775a133, 0x8f8859ca, 0xcbb95277, 0x4ae57aaf, 0xa47cbf5f, 0xbcb0bc6c, 0x90f565fa, 0x1cd23ba5,
+            0x2ad6ef24, 0x8764cc36, 0xb684ef70, 0x7e8d6183, 0x87087822, 0x9f8c3f85, 0xcba572e9, 0xf8f84147,
+            0xe99ec2d8, 0xda1606fd, 0xaf04573f, 0xa551905b, 0xf41694b8, 0x986bbf8d, 0x07bfda33, 0x6e9951dc,
+        };
+
+        RandomAssert.assertEquals(expectedSequence, rng);
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well512aTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well512aTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well512aTest.java
new file mode 100644
index 0000000..7300832
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/Well512aTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source32;
+
+import org.apache.commons.rng.RandomAssert;
+import org.junit.Test;
+
+public class Well512aTest {
+    @Test
+    public void testReferenceCode() {
+        final Well512a rng = new Well512a(new int[] {
+            0x2c2878c6, 0x47af36c4, 0xf422e677, 0xf08fd8d3, 0xee9a47c7, 0xba983942, 0xa2a9f9a5, 0x1d443748,
+            0x8fc260b2, 0x5275c681, 0x4a2f5a28, 0x2911683d, 0xa204c27e, 0xb20a6a26, 0x54ba33be, 0x67d63eb0
+        });
+
+        final int[] expectedSequence = {
+            0x61714569, 0x6fdd4898, 0xc5f47050, 0x810a6b1c, 0xc1af8b8c, 0x92a98227, 0x64cb1d8d, 0x24578071,
+            0x793b296a, 0x212298db, 0x0065f1a0, 0x74b6a737, 0x6f40110d, 0xa84d2dfb, 0x7a23fc8a, 0xf4895b35,
+            0x85732a6e, 0x30550ad9, 0x53bf4e25, 0xd16e0c02, 0x3c5dd4e7, 0xc1b55438, 0x2b6a28a4, 0x57d400ec,
+            0x115082ee, 0x13788a09, 0x784cd04b, 0x90240346, 0x49e86af5, 0x574c6790, 0x78b55a42, 0xf9f4cc61,
+            0x52b9b459, 0x0c92fddf, 0x5170fd1e, 0xe39997a7, 0x09215785, 0xa02d7d5d, 0xe1cbb539, 0x0110f5e2,
+            0x12b53330, 0xebb4504e, 0x22f816af, 0x4a2158af, 0x2ce457f5, 0xd9733322, 0xd3f0dc69, 0xf379d207,
+            0x915a36ba, 0xda8d94ca, 0x93f2e50b, 0x546ad758, 0x40407b6a, 0xcd862700, 0x523ed8a9, 0xdd6b1ad0,
+            0xffe3a271, 0x0c917702, 0x11a22e90, 0x58f9efd1, 0xaba08480, 0xeb71b156, 0x8c338ac3, 0x5c5ba7f6,
+            0xe8c8046f, 0x12bb238a, 0x00b3d31c, 0xb1d02bc8, 0x667db6d9, 0xd26cf82b, 0x4d4b6dea, 0xc4b5f996,
+            0x2eb8abe3, 0x193130c0, 0x171ae727, 0x48b2f7e9, 0x7fd0393c, 0xce46ebf6, 0xc2377f2a, 0x37c8d867,
+            0xde1bafe6, 0x4f200655, 0xdce597c6, 0x71d94a5a, 0xfd90a771, 0xf525efbe, 0x4da61ac2, 0x2043c247,
+            0x9dcf808e, 0x2ffebfb3, 0x99689f79, 0x5a829736, 0xc7371b28, 0xe62cba9c, 0x1e6106f6, 0xd1abf44e,
+            0x4c29d5ba, 0x10ee5570, 0x37cadeda, 0x7967a7ff, 0x749c7c0a, 0xb948ed30, 0x112768c8, 0x7f46436b,
+            0x2af1be27, 0x5972c9f0, 0xef3642f9, 0xb3d43956, 0x9ee7e9de, 0x4a13d96f, 0x86f5f652, 0x57d97072,
+            0x1a4647ed, 0xaf1d4e0d, 0x01b11b4c, 0x5f87bcd0, 0xd9c4026e, 0xdbb29175, 0x25e7a68c, 0x57caa480,
+            0x58079f5b, 0xd36ad1d6, 0xa13561e1, 0xcb4b8944, 0xe8c518fb, 0x84cc51c7, 0x40cbe128, 0xb64d53ae,
+            0x01e30df7, 0x6d6acb68, 0xe4142fda, 0x80e2998c, 0xe61863ad, 0x0f657837, 0x6e6228e9, 0x9ed60ce9,
+            0xafdac4e7, 0x755fabf7, 0x24ec4206, 0xf59afad0, 0x0c5dd31f, 0x9f736292, 0x4f275f0a, 0xfafebf4e,
+            0x1a94af26, 0x958848f3, 0x005fd078, 0xdd5eea29, 0x5c6cf930, 0x77994735, 0x106f8cd7, 0x1b2912e7,
+            0x78613865, 0x427de838, 0xb1bb6096, 0xe13b3537, 0x04655f8d, 0xad998410, 0x17c1feb4, 0x4eabe4b0,
+            0xa0e57f92, 0x5d658608, 0x988b897c, 0xa6062a85, 0x56e9f7d8, 0xdf40e295, 0xdb1d72e0, 0x5a65da93,
+            0x714b40c3, 0xa952a890, 0x398cbcef, 0x1d1bb4f9, 0x9094d514, 0xcfae96f0, 0x853f9e65, 0x56b44baf,
+            0x4f38c51d, 0xf2291fd4, 0xc4b18d31, 0x6ea0056e, 0xe50dd70c, 0x5d51a093, 0x2d4a45da, 0x49fecc33,
+            0xad1f5301, 0x7403b755, 0x86dd42e5, 0x28bff1a9, 0x35ff1b42, 0x7636ebc2, 0x07273732, 0x1f5a65e1,
+            0x8bf4f088, 0x0c3820bb, 0xb214f04c, 0x7f042fd2, 0x7a5c38a1, 0x0b50b9ab, 0x6aa9449f, 0x1835a535,
+            0xbbbdd7d5, 0x0081d11b, 0x4c205acf, 0x58f78f22, 0x77cb6a1b, 0x9effab72, 0xcd4683d9, 0x93075934,
+            0x74fb3e2a, 0x7f93e2af, 0x0e1f57fd, 0xebe628f4, 0x4b4e3ee7, 0x1ecd5d44, 0xebfcff9f, 0x52edfbe1,
+            0x1b2db0f1, 0xa91fc938, 0xd8cdb99f, 0x1cf26705, 0x6907c2f7, 0x47389180, 0x30bf2bb9, 0x13245cd2,
+            0x07d1548e, 0x114d497e, 0x902066bc, 0x9679d297, 0x4cfc4c1d, 0xc42d9fa2, 0xa1cfe127, 0x5a9fcc85,
+            0xe8352005, 0xfe8cfa54, 0x1b0c8554, 0xd8b570cd, 0xf3bdecf1, 0x1bcea156, 0x5617c091, 0x46383f89,
+            0xbb057aa6, 0xdc183254, 0xae4d4105, 0x60415d33, 0x6545c6ab, 0x6f25e281, 0x709080d6, 0x9967e49e,
+            0x6c0cc73f, 0x27dd6ad3, 0xee47d20f, 0x7ef804a5, 0xba4908fc, 0x36692450, 0x871b5058, 0x4a308706
+        };
+
+        RandomAssert.assertEquals(expectedSequence, rng);
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/MersenneTwister64Test.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/MersenneTwister64Test.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/MersenneTwister64Test.java
new file mode 100644
index 0000000..5421550
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/MersenneTwister64Test.java
@@ -0,0 +1,287 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source64;
+
+import org.apache.commons.rng.RandomAssert;
+import org.junit.Test;
+
+public class MersenneTwister64Test {
+    @Test
+    public void testMakotoNishimura() {
+        final MersenneTwister64 rng = new MersenneTwister64(new long[] { 0x12345L, 0x23456L, 0x34567L, 0x45678L });
+
+        /*
+         * Data from
+         *   http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt19937-64.out.txt
+         * converted to hexadecimal.
+         */
+        final long[] expectedSequence = {
+                0x64d79b552a559d7fL, 0x44a572665a6ee240L, 0xeb2bf6dc3d72135cL, 0xe3836981f9f82ea0L,
+                0x43a38212350ee392L, 0xce77502bffcacf8bL, 0x5d8a82d90126f0e7L, 0xc0510c6f402c1e3cL,
+                0x48d895bf8b69f77bL, 0x8d9fbb371f1de07fL, 0x1126b97be8c91ce2L, 0xf05e1c9dc2674be2L,
+                0xe4d5327a12874c1eL, 0x7c1951ea43a7500dL, 0xbba2bbfbecbc239aL, 0xc5704350b17f0215L,
+                0x823a67c5f88337e7L, 0xd9bf140bfeb4c1a9L, 0x9fbe3cfcd1f08059L, 0xdc29309412e352b9L, 
+                0x5a0ff7908b1b3c57L, 0x46f39cb43b126c55L, 0x9648168491f3b126L, 0xdd3e72538fd39a1cL,
+                0xd65a3663fc9b0898L, 0x421ee7823c2af2ebL, 0xcba3a4b69b6ed152L, 0x0348399b7d2b8428L,
+                0xbdb750bf00c34a38L, 0xcf36d95eae514f52L, 0x7b9231d5308d7534L, 0xb225e28cfc5aa663L,
+                0xa833f6d5c72448a4L, 0xdaa565f5815de899L, 0x4b051d1e4cc78eb8L, 0x97fcd1b4d342e575L,
+                0xef6a48be001729c7L, 0x3982f1fa31afeab8L, 0xfdc570ba2fe979fbL, 0xb57697121dfdfe93L,
+                0x96524e209b767c29L, 0x55aad0ebca994043L, 0xb22687b88856b63eL, 0xb313b667a4d999d6L,
+                0x07c7fa1bd6fd7deaL, 0x0ee9f4c15c57e92aL, 0xc5fb71b8f4bf5f56L, 0xa251f93a4b335492L,
+                0xb9bad7f9e5b07befL, 0x62fc9ac35ccde7aaL, 0x933792382b0218a3L, 0x7d497d2f7a15eaf8L,
+                0xb2f0624214f522a2L, 0xd9895bbb810ec3d6L, 0x22d91b683f251121L, 0xc8fe9a347247affdL,
+                0x3462898a2ae7b001L, 0x468bc3a10a34890cL, 0x84ff6ce56552b185L, 0xed95ff232c511188L,
+                0x4869be47a8137c83L, 0x934606951e6fcd81L, 0x1ab5e8e453bde710L, 0x6386b61b30fa1157L,
+                0x97f3a778e242d0cfL, 0xd870d281b293af3dL, 0xc3a5f903a836fafdL, 0x088bd6a24d49cd77L,
+                0x4e38ddc2719162a5L, 0xf48286b4f22cad94L, 0x080f6f650c337557L, 0x05e6daf6aae1ad59L,
+                0x7450f7229f336762L, 0xb75b43fb4c81784aL, 0xebd37a514f153148L, 0x0d4b3a39e0bc52c7L,
+                0x562f36fae610a2e1L, 0x0e0e413e555bd736L, 0xd452549efe08402dL, 0xf2e2ff7be2c75e21L,
+                0xf2385606c18aaf0dL, 0xdb609b507d8c6b8bL, 0x74ac5663c6c4f45bL, 0x0d84c9a356858060L,
+                0x19d5b3643bc029b6L, 0x0dd8131e97ffc842L, 0xfa7303606bfffc05L, 0xf98c6d63ff48a16eL,
+                0x34df46aa2d610767L, 0x83490ef054537f7eL, 0xe071f833e55ebfe6L, 0x0d4b94537ed4a6aaL,
+                0x3cf85e4e333966fdL, 0xba15364649384016L, 0xc0e6bd623ca72405L, 0xdae6e879b8eab74aL,
+                0xe4a41f17e70d3e0aL, 0x56e10c00dd580f70L, 0xa9a66bb41781d872L, 0x58e42dbdffe21573L,
+                0x69450e1ce9674e6aL, 0x47fe345a350aa605L, 0xac958aa80455a5a4L, 0xbc1abca3fbeeb2f3L,
+                0x08f760d9228900a4L, 0x9e1eb8a2dfec4387L, 0xe91bd1321f5fdc89L, 0xda11a24c514b9dc7L,
+                0xb1f63d976e0e639bL, 0x41c11098f6123861L, 0x3d7736979f978f68L, 0x0820685b38c926beL,
+                0x0e8c3dcab075b112L, 0x5e37299d89089ba4L, 0xa1f735eb8235b32fL, 0x2289d719e7b146eeL,
+                0x1c9c9d0284d96719L, 0x5f8b358546775be8L, 0x317e34c009a07a39L, 0xb16b073eb0ee0a19L,
+                0x423b36fd459f2a66L, 0x5f45053666f3f84fL, 0x63e7074f03c73d92L, 0x22080cf23288e895L,
+                0xba4e71bf61dac16fL, 0x9643b3707db2cfb5L, 0x98e2db6c665e7178L, 0xcbc57de0ef3eabb6L,
+                0x6239a2197582a8a8L, 0xf2ae968e55fda13dL, 0x36e7ac11d1f3a617L, 0x508f0acb609bd756L,
+                0x6f42d435193a1ac2L, 0x2df2cab9d65e0b00L, 0x4584c1fde5f1ad55L, 0x602c500bdc8317c2L,
+                0xc80d5b04f6337337L, 0x98abcf971892a773L, 0x5d33cf557e6c4475L, 0x05b5a78be74ccd40L,
+                0x3ec2cce5290785f4L, 0x2eef1e9c4b36828bL, 0xdd274241a0ce8c55L, 0x3c4cb919b35c221cL,
+                0xc1fd68d779db9923L, 0x7ff345b4eb7f3639L, 0x804d5881b2eefef3L, 0xa15f9c2826cb34dbL,
+                0x64822b68adefa772L, 0x761e92f8d279850dL, 0xa5d049ab1061dba3L, 0x5f46fb02d10d2219L,
+                0xc1cdaa5f9ca79b19L, 0xdd713a74701ebe60L, 0x6b626ec963951798L, 0x1d3ec8d78b96d16dL,
+                0xdb885d52960e7f34L, 0xe39849cf3ea178f8L, 0xc1e37acdf807130bL, 0x3645880ebf333913L,
+                0x3af81a7bec346c22L, 0x871c563e94324804L, 0xac55fb5e2817db4cL, 0x035b04c42565ebe2L,
+                0x5094cafab11cbc3aL, 0x94d40a57481346b5L, 0x0f91a8492df723e3L, 0x126a70b84f779accL,
+                0x4409e9a5d5c3f133L, 0xb1655339864151efL, 0x6564e506d11e9de1L, 0xd9a06f7b8860b488L,
+                0x0d493e410b68b6c6L, 0x4e6fbf4b3b985a07L, 0x71c1b0ba9e52a2deL, 0x5775784ad3cb99d9L,
+                0xbab84cec312107a6L, 0xd9066f5ccd59cf9eL, 0x8c656651dbb3ed84L, 0xa7448d0059484568L,
+                0x2819237e5e8cb03aL, 0xd57eaf5239931b4bL, 0x6cd436fd5f7c1e73L, 0xf03b845f2a584931L,
+                0x8847b9f1f2d55b7aL, 0xd49a38f8e59db8faL, 0xd5052cc47685dbfaL, 0x91e060fb399ecf2cL,
+                0x5748fbea12dd2869L, 0xd0cee85adb889226L, 0xa35e9dfa5a64f56aL, 0x3118398bd0e3cbf0L,
+                0x5e650b9a3cb34308L, 0xf575ccbebf49b91cL, 0xb3f8dd73257c80e2L, 0x13d7954e8294819bL,
+                0x90b57ccd00f1591dL, 0xa8b13ef52ca7e284L, 0xe482d24e5b239833L, 0xb0648475f2b4d63fL,
+                0x847e8fc889e2389bL, 0xa8b501ee1fc59ba6L, 0x29702f6acba4379eL, 0xfaba9600f3d2cd0fL,
+                0x52ed7d9f45c6b578L, 0xa02b167546d6e2d0L, 0x9a41cb166618a390L, 0x83d464d7349d9f3aL,
+                0x805485c9d2c70c6cL, 0x332f7ce3e077ecceL, 0x1ead372c068ebb04L, 0xd6866c5b3b5eb82cL,
+                0x5b057c64bda94a33L, 0x11e1388f59653c66L, 0xffd2aca771c0abb8L, 0x2fabdd0e8e8ba606L,
+                0xe974ffd57219e5e6L, 0x2b4e5c1e5f98e506L, 0xe7819b2cb44db4c0L, 0x6cbd78c408376520L,
+                0x244285f39307f083L, 0xd152927f3a3af853L, 0x5b799885a8ba66e3L, 0x9300da64ea1a0644L,
+                0x67399bf8688a0cabL, 0x047c301af4a94bb2L, 0x6750ecdf35c8471bL, 0x7598ae5c876d4080L,
+                0x269e0cf307467534L, 0x2ef4d8dcaedbc549L, 0x2c6983c911c958afL, 0xb2fd7c07ae0bfa60L,
+                0x3220a56d67450e80L, 0x7385883420eb9f69L, 0xdb1fd2951f15b047L, 0x0f08b35df55977bcL,
+                0x42939b9f2e58127eL, 0x4d1d77e72414aa9aL, 0xfd8137f8b59bd084L, 0x167cc7f46a511504L,
+                0x0263de0c6b50290dL, 0x2a1c2feb488ffab8L, 0x1194815038360d85L, 0x36374630d0ecb4e8L,
+                0x609d38e22c59a974L, 0xee23867f7c9b5f54L, 0x40e53a7804b0ef15L, 0x8f287f1a3be6e458L,
+                0xba7334b0f0af9e75L, 0x09f003e8e0e9c6c0L, 0xc02dd0d35c42bc56L, 0x63dca83acd6be04aL,
+                0x9617b58a79fdd826L, 0x563d25e6f891bb33L, 0xe3c3d3f3f6d58588L, 0x359977baa315b1b4L,
+                0x0df431301d9e6bc5L, 0x4074bb10d0003ca5L, 0xf440159140f2b453L, 0x3a6cc6e14820f5e2L,
+                0x4b352bdacf3a37c4L, 0x9ef3b8df89ea4c29L, 0x8a1b2495a1414892L, 0x670b7f423f78b7c9L,
+                0x7513c7ccf6ee3c3aL, 0x9ba96cb53c24408bL, 0x3316c3dc4ec859f0L, 0x501337e1a7f1e218L,
+                0x9a1544a6029c1eb5L, 0x9b43b15859c3e96fL, 0x058011e22698bd4bL, 0x589b8eaea60d54a4L,
+                0x68ccb8c6cd7ec24dL, 0xe55beb5896455705L, 0xba6069cf90a8f1e2L, 0x896a18c3eb90a6d6L,
+                0x870d3d80ae0b9323L, 0x48688d8b457f501bL, 0x8f1a8c1b84b3ba62L, 0xd1b7b64dc136f6b3L,
+                0x3c6a7025428547e9L, 0x199bcc50a190fb6fL, 0xa5de0eed4bda0979L, 0x31041667821cddb5L,
+                0xe9df34e2678fb4e3L, 0xdd7222eaee54e524L, 0xaae6488b26c7af56L, 0xe8a560dbbd2eb6b3L,
+                0xe37c99a7f5defceaL, 0x1572be8d78f3afacL, 0xf69ffb64131633aeL, 0xa837ae34963616fbL,
+                0xaf0a9f03d137c170L, 0x0d3e02b464018a48L, 0x11753aea03bb0ecdL, 0x32d9cca610dceb34L,
+                0x2622bb6a6e7a11e3L, 0xdc99a44c515ec8b3L, 0xd7d720ad0a770b28L, 0xe322f742d6d051c2L,
+                0x745f2b6e3ea9cd2bL, 0x951f21478e6b9662L, 0x227f21d8c0713385L, 0x0cb729235e6876eeL,
+                0xd323b857d9721a53L, 0xb2f5f599eb743346L, 0x0efb30babe65a283L, 0x94c1190da321d470L,
+                0x117c63209fba9efeL, 0x738cf92baa4bc2cdL, 0xc3bdd29b33277165L, 0xd78a2fab38f6dc46L,
+                0x35c44aafdefb91e2L, 0x321e26bf321fb60bL, 0x12db436288b37172L, 0x158a2d49e51c261aL,
+                0xc9202ac8ba71c873L, 0xd02fa93dc97cc7b7L, 0x1f8bd11b747e901eL, 0xf7a17b2f74aa321cL,
+                0x284d02d7552a3e90L, 0xeb86a8251533c574L, 0xb3fd774eaf4e77f8L, 0x31df2951c3ff37b1L,
+                0x86e38546195a69e7L, 0x6737aaf165a1389aL, 0x2e2e925079feee0fL, 0xf7bd5a988596c1bbL,
+                0xccf835db6a10d2dfL, 0x6f42700f37c94701L, 0xa6e86f7ba2779a5cL, 0x0a43a4f7036d1ec2L,
+                0xd798bd6d52ad26daL, 0x218f6912af38b818L, 0xd48684f266f2e186L, 0x8f675048b7b012e5L,
+                0xe5e469aac68eaf1dL, 0xe2740035697de79eL, 0xc22d6bd6d08baf1dL, 0x341774636bdc8f41L,
+                0x7dfc6b73f7ba322bL, 0x7566343607bb525bL, 0xae94d116ccf1e74bL, 0x6ca1b59934cc2697L,
+                0x4c2fb1c45b749cedL, 0x989999bbdd2ec893L, 0xcc4e27afa81bc8a8L, 0x6ddadf15ebf85830L,
+                0x38fa9cb2ce72bc16L, 0xacdaffe39db4bbdaL, 0xbcc4682ebd095d93L, 0x483f539d354559adL,
+                0x45de92e997e2915cL, 0x7ec5c881c5344a55L, 0x9d1844fffa091545L, 0xcd9b08d4dcda27baL,
+                0x1f7495a5f36c34ceL, 0x4f0fc9647d99afd7L, 0x5ac375ec59321cf2L, 0x5c07ce6df7e1d9a2L,
+                0x49f211880d688b4cL, 0xf85fdd8ccad0867aL, 0x7d510164d8f197a8L, 0xc64108c5732cfa0eL,
+                0xb262d660d3a2c648L, 0xd5d5614571dd2efaL, 0x0ec1a6d0dd5d5391L, 0xbf07d939d2535f02L,
+                0x035bce3021e51045L, 0x423ae115ec99d154L, 0x22ea1d3abd893838L, 0x517fc1107eaa6a83L,
+                0xc5967cdf353aeac6L, 0x096ae2c3dff65ce6L, 0xab1b908b97dc911bL, 0xf3d84c286f22611cL,
+                0x256823815030d8a2L, 0x3bd9b119887342e4L, 0x59926f3401f437d4L, 0x74edf41038d3986fL,
+                0xe2b35bf615038253L, 0x4d09740a6b44db89L, 0xa37edaf089c0eeabL, 0x8263ba2c23e2d62dL,
+                0x8784aff57d390c3cL, 0xfb49ab0635d66c3aL, 0xdeba73c2562bff1cL, 0xe2e6bf8cb6e29717L,
+                0x0e70431c63d86e46L, 0x20d717e16aae6010L, 0x031af57cdcf2cd36L, 0xd55fbeef1c5357feL,
+                0xd361d871f4e393feL, 0xb3416e718d32d214L, 0x7b351f93f909fc00L, 0x16916de7b96a26bdL,
+                0x4fec1248b5dedb65L, 0xfae1aa9a62bfa096L, 0x92e7910a6b0084a9L, 0xd12bba8672e8aaa9L,
+                0x316558d69efc8f6bL, 0xb0dde29eb96fee87L, 0x2125a2be5bf67eb3L, 0x5905903f46531fe4L,
+                0x2a9927e8175ff60fL, 0x794376f2bb5d6d96L, 0xfa9f65d2b4848b12L, 0x2b92665a263a5091L,
+                0xabcaccfab8464c65L, 0x05b2fb2a46d1a0bdL, 0xa879920d28c0d54cL, 0x50394088a8ea4953L,
+                0x61b0c87f0084129dL, 0x29ebcd1078d6e2b0L, 0x2440c652f6bacf89L, 0xbd74d596cf4c8eb1L,
+                0xe4b009e5c334766bL, 0x07db26843cf72cb8L, 0x4171d5edd5468876L, 0x608d5c2c348c143cL,
+                0xa19e0a2b81da6eb5L, 0xb65a7be9354c1390L, 0xf4f4c437cb9bb324L, 0xfc24806650c823bdL,
+                0x4c2331521e7f2966L, 0x54f66e42eb73bafeL, 0xf06c11f3d2fe29aeL, 0x8ba8d0f28cbb0fcbL,
+                0xf3617850d1ae7976L, 0x96463b47cd9a7286L, 0x8edc2133b35c3779L, 0xae43f70f181d9371L,
+                0xe7628d75c9a3c2e7L, 0x978499ba4193b333L, 0x99bb4bf79b0a46c1L, 0x4c52676d7e4d0a58L,
+                0x2064ee3910693deeL, 0xfc43514d16633997L, 0x1bc1741ce05c4cceL, 0x6e9588d40f3396f6L,
+                0x146fe816bb3a3708L, 0x2b3db8ee05eefa87L, 0x6ec21a91189ec0c0L, 0xa8a907b34108faf1L,
+                0x708b80912235684fL, 0x2bc8ba70edfe680cL, 0x4d118826481266efL, 0x8f93a3a5de887175L,
+                0x3308e9133a950fe3L, 0x939ed8b0d7e91f87L, 0x666beee64002b6b0L, 0xc8f129ec69ce7811L,
+                0xd57593c68ce93ea0L, 0x02d6a3e66edcc862L, 0xbe1d00d16a2271a6L, 0x34fbeaf95e0c673fL,
+                0x9845ab59483a0e86L, 0x257d47d5abf88962L, 0x28af39f39319545bL, 0xe3fce03abd8171eeL,
+                0xa4c5f606dccc96f1L, 0x4d414846267c4962L, 0x6ccf77f81d9dbf70L, 0x947bf43c729a71ecL,
+                0xfd656c39c4fa824cL, 0x8f652cf2d1e04fd6L, 0x8cb11929a65b6aeeL, 0x094948f16a8064daL,
+                0x7434e703a4d03d5fL, 0x9361d3f63af4aa35L, 0xa998c1eeec3fb422L, 0x51eb94754b5992a2L,
+                0x6e109c0347ef6979L, 0xe3c9738d67c582e2L, 0x9c735e3857ec57bfL, 0xbe6415659e12c64bL,
+                0x73924584e31b9099L, 0x8f676821e60b0945L, 0x5614e3a695d5289dL, 0x7ecd448787517ebaL,
+                0xc96db02038dbaf5bL, 0x069299ed774fa6c8L, 0x0b4ace5a8ea16ac8L, 0xbf2f4f23a6c92295L,
+                0x90bdc4f1e931656cL, 0x7cd5b0b95ac34d3aL, 0x2032bc59d3dc1710L, 0x702c1a0cd5609379L,
+                0x609d33abc01ff3feL, 0x8ae5d8f283b2748bL, 0x2cf3778fa7eaae1dL, 0xe8a0d7b1919df9e3L,
+                0xe487894f6d602a0bL, 0x929858549609626aL, 0x46e540cd86bf46e7L, 0xd1daf4382128d9eaL,
+                0xc47239c06b22ef75L, 0x8b7aad8ffea1b991L, 0xd6c1d2e315273fa0L, 0x2fda11cd74177e6bL,
+                0x333cb0a145919fd7L, 0x5970b31a49f37b16L, 0x7890bc68793bb959L, 0x2a060f45a1719347L,
+                0xeb298f0264bf379dL, 0xd7c4fd7921707400L, 0x374635e7713ed165L, 0xc60c008df0296d05L,
+                0xbf13739a8d3c7dbbL, 0xbfb945ef1cf94d1dL, 0x75fe953c3a3a8315L, 0x09f83064f4150c02L,
+                0x6784a3b452055343L, 0x73ed26d185738f51L, 0x6c59094e8c998390L, 0xeade93e19d60d4b5L,
+                0x8cf7cc8e62bc869dL, 0x22f85626f7f69298L, 0x6679c449ac22edc0L, 0x7017d0003e897435L,
+                0x308fc450a6c62bf8L, 0x2578b45bc6f34cabL, 0xcbb936c9d253db39L, 0xc4e70e5bbc5e002cL,
+                0x29db6985be6c9459L, 0x96afe876f5f6250cL, 0x829f766f138f95e6L, 0x4369632017c8fa0dL,
+                0x0da90c817ca890a2L, 0x38d160dd675e2376L, 0x20df15ad986408eaL, 0xd192623c3d9b3f41L,
+                0xd846f79123baf4aaL, 0x6cb058a0edfbf056L, 0x1b192f0be8dc77a7L, 0x3a11b3dfcc81a441L,
+                0xe914410093ad7767L, 0x3126257e578bdf60L, 0xd5d5e470410cb6eaL, 0x4e1bf5d4209248aeL,
+                0xe1e4c2924f35192eL, 0xac9944825cb7ef5eL, 0x8d2cbe6996eb3475L, 0x1bc05d2a079592d7L,
+                0x564a9f06755e71f3L, 0x9bb767d68e9f2537L, 0xe4b045acf13978a2L, 0x4b7519cb9028ac83L,
+                0x9df655284198b85cL, 0xdc32ab4d421a2b61L, 0x4c5d7f5323c1960cL, 0xe4273ff318f5c7b3L,
+                0xd73ef5ea88a3e99eL, 0xda2ffb6a863c850bL, 0x9555a4144e05ad82L, 0x950104dc15092ebfL,
+                0x39d121a61f19dbfeL, 0xc6804e29d60d7814L, 0x7e98bec5ba17d58bL, 0x8b2c6b0e6c3b749aL,
+                0x0301a07c84aaccdbL, 0x93dee719932225a3L, 0x381611a50bac0ae1L, 0x572a8816f6e407b4L,
+                0x0420efe85aa75232L, 0xc1f53f78b9ffcf4dL, 0xbeda53bc95b96ec3L, 0x9f357114059c8eabL,
+                0xe38239260b584150L, 0xccbca17f4eed2ad0L, 0x1528080b61f54198L, 0x5b8cdc4c40d49f30L,
+                0x1617db48eb6640d0L, 0x6fed27f88a516c99L, 0x37056e05b4724179L, 0xec7bc122da9538d8L,
+                0x9fbfe01ca2c0fd57L, 0x2fc96b31dccafd9fL, 0xe26a72009daa1249L, 0xe9fb2e3998d16a25L,
+                0x4a87dc39d24133aeL, 0xd5340e98fde806deL, 0x272b62b5dd0d7fe3L, 0xca4625581bf9dbe1L,
+                0x8677af77de374a90L, 0x27dbec9e28f857edL, 0xb4aefc44d036612aL, 0xcf2e8ebdb0f6bb11L,
+                0x76023506c94e0532L, 0x864e72d4488c7a7aL, 0x0b81058fdac18fd3L, 0xdf93ee5b6674a0f4L,
+                0xdb30565511789d77L, 0xcf5fe22dc0375f30L, 0xa6e62e6e4edb4043L, 0xbce383957a728669L,
+                0xfe4dd4e9633db2c6L, 0x24e68818b2a6d6cdL, 0x048a89c5424b4cdbL, 0x7fc7bc75bbbe5768L,
+                0x79596343191e0ff2L, 0x5510b9cd8306839fL, 0xff2668b4eae7bb53L, 0xb4c03e6363c9e244L,
+                0xc9e3c0c1c015eb6fL, 0x52531f5f898a744fL, 0x0484005b2a805083L, 0x31673b70c6f23c53L,
+                0x5bffe158f323a7c2L, 0xc742bc0d0c55f125L, 0xd95c32fe7e18379dL, 0xc1f2f613ee3c2e21L,
+                0x3217a43ff0daaa0eL, 0x3a9fa27258257e53L, 0x80b42af5a393bcf2L, 0xb6967fd6a302f65eL,
+                0xfdc07bc592dbb125L, 0xcb83b8b9f64c3c3bL, 0x9cb572b041015355L, 0xc12dc512aedc530cL,
+                0xc8db824276c083ceL, 0x86923b0e2903627fL, 0x1385cf2be22827cdL, 0x21b7616ced869ef1L,
+                0xc74d497d079901e6L, 0x9e03c843bb13f658L, 0x915b89077a81ec7fL, 0x288a10b00768d244L,
+                0xd88eb6745a557569L, 0xb3c98071a3d13b20L, 0x8f23aff44d352f03L, 0x2bf39ca10e45bdbbL,
+                0x0f1bea47e2c68a4cL, 0xf8d5ab01c1ad6b55L, 0x679e0601953d1e31L, 0xd793f3aacb3c520fL,
+                0x96fc350ccdb76eabL, 0x9fa0178362df447bL, 0xc11c63febf83598aL, 0x3aa88df3a1a71323L,
+                0xab2f8338a09ca82aL, 0x32a2133050a71357L, 0xffecf97ca3ff65e1L, 0xfb6fd13318f5cb79L,
+                0x3acf76875acad366L, 0xc577ffff529f74cfL, 0x368a90182031dd12L, 0xafbf2311ad656d52L,
+                0x80cd4f9f23fcafddL, 0x451717a061972d1fL, 0x0bbcbdae779cfbf3L, 0x133ca541293fd40dL,
+                0x6f241a21fc40b108L, 0x9adecbcf0c28110bL, 0xfab528d93bac6d3aL, 0xf4ea3d459b0654aaL,
+                0x7e2e9ef35a5aafbaL, 0x28730469eded0fc7L, 0x3cbae97a12632fbeL, 0xded6960c0be007a8L,
+                0x2a11758a7c52c43eL, 0x289de4875bda262dL, 0x6e13eea58caf3fa7L, 0x020c8ed0d5d673c1L,
+                0xdb4b3e7719d523b6L, 0x49143c819d111fc3L, 0xe07479f9ddf45d8eL, 0x68f4654bcc07435bL,
+                0x513bd537af510064L, 0xcf956c3a3933ba38L, 0x97e1eaa33f88eeccL, 0x18be860a2504a1c5L,
+                0x84408412fc0bf397L, 0x0b6bdba7e154bdf7L, 0x1d8f8b446b544be6L, 0x6f06b3dcdef17a03L,
+                0x30c6e14df59f8cefL, 0x01c97ba9910219cfL, 0x33ddcc087d1aeb5cL, 0xe31b94300cfbcbcfL,
+                0x0adeb8a98786bb28L, 0x3f69d5b0e3ec8f17L, 0x99f5a15f635296a6L, 0xce9fac7526862e86L,
+                0x3a88964201bd7524L, 0xec94d643ea71be51L, 0xc4257084d97ab1c5L, 0xf369b10a73b4d382L,
+                0xac02bb473dbc5fd1L, 0x4fe73a86d95d7222L, 0x858806616fe3d553L, 0x10680debcb0693e4L,
+                0xcaa9aac77c954093L, 0xf29c7530415d71e5L, 0xc32b319e09de9e48L, 0x1c67107ed497ebc4L,
+                0x731da71593324021L, 0x49774770588c055aL, 0xf978dfdc28084220L, 0x058b3f2780b5a7ecL,
+                0xe4ebf2ca21410715L, 0xd3841ed97708421fL, 0x0dbc9401dc51eb4eL, 0xf47a96de499aa2e1L,
+                0x224da94d8542ba0cL, 0xa3426a80b4dd0a4aL, 0x857caef48ef7e5b6L, 0x11356ad6ede44bf5L,
+                0x1a32471bd26acd7aL, 0x199396e31de7b358L, 0xb7ca7950dbbb4a92L, 0x6ab23720409790a7L,
+                0x2abfdb93a3159d10L, 0x23913b403946c4a7L, 0xac7c9f339a822344L, 0x12cffe9625cbe744L,
+                0x89558b98548b1946L, 0x77be65945c191139L, 0x3ba8d1fc701f4347L, 0xb143664560327f20L,
+                0x48baccc3ef2081ffL, 0x450c379d24beb8e9L, 0x1990b609485db827L, 0x6c6a565d7129ccb4L,
+                0xf9724a82872bd619L, 0xcfe629aa56717e20L, 0xfde48d87e844ec93L, 0xb32f79e5dc9ce4c1L,
+                0x7c9d88364238519fL, 0xe943aceba65150f9L, 0x5301e8550cbdd076L, 0xabb8392364453b3cL,
+                0xdfb4b4a3cf84aa2dL, 0x269e45f7a6b48a42L, 0xd6783043ab383fcfL, 0xe4ec475d296a69e5L,
+                0xe2e273ef65555361L, 0x6bd3084210a75af7L, 0xf2ebc493b909d8c7L, 0x4d20f3d435e9bc94L,
+                0xa465e41c3c36d433L, 0xc1b259456f4341c0L, 0x260093703d6cf2ebL, 0xda68d9dea0aa9bdaL,
+                0x5662a12a210b2a47L, 0x54675bd1a1b4b467L, 0x9dbd416302ec2468L, 0x3c7130a5032d823aL,
+                0xabfdef2d9a4fd92fL, 0xd4034e276021451fL, 0x13834d3d0e43ab73L, 0xdc181442b438b2d6L,
+                0x1736ffb392c25e23L, 0x289b94003a946252L, 0x99705629b221ca37L, 0xa7b22a5bb26775d6L,
+                0x2dc12f9f04435661L, 0xaadd48b556bc9e7cL, 0xf6992e8e94b68a49L, 0xd50420466c9456e3L,
+                0x0ea8305ecdfb1266L, 0xfe0b1d7e4f0ef297L, 0x563de834c4e56a46L, 0xc62b8099b5b264c6L,
+                0xf6e76aeaf533c784L, 0x0d4680470b790968L, 0x288a50754707431eL, 0x8ad167ed38df547eL,
+                0x9052fed81a8ca4faL, 0x5975ac56f0548ef1L, 0x588bf7d0130111aeL, 0x9ec02036a6688a24L,
+                0x8c9a454af9e09984L, 0x333ee6727bd12dcbL, 0x9847468f925dc38cL, 0x446ed5203696abacL,
+                0x71fddf9ef5b5def6L, 0xd4d61614cc333541L, 0xd08a0694cd7f72a7L, 0x686cfe3ea1889281L,
+                0xf039404e0dd3333fL, 0x052c620eb18b4246L, 0x4e4de47f86d84713L, 0xfe0450396b209851L,
+                0x99d6e893b01ed92bL, 0xd94cf8705f8eba86L, 0x763451110c00291bL, 0xdf4f60b9aa45d064L,
+                0xf473d4bfd86ad526L, 0x41b9e3fa1a6dba94L, 0xbaa7cdeb00796a4aL, 0xf668194c40626450L,
+                0xb894e0ae40a9c87fL, 0x5bc1eea8587d3ddbL, 0xc4c0ecb91bb50d75L, 0x819fdfd17ff2917bL,
+                0x681484e54b6b12f7L, 0x2f510aa2f8977995L, 0x7d1582a293b8fa3dL, 0x3dad5a0f0da45470L,
+                0x33c113aefb480520L, 0xbd524b2da7ce6c1fL, 0xe4cc051d00d8ddc0L, 0x2995950e206efa90L,
+                0x8b0e5dca588e3f50L, 0xaabb3583f7f87082L, 0x75dbbecfa34cb4d6L, 0xf195977068849ae8L,
+                0x9223ca6fbb72767cL, 0xda7211029d59f04eL, 0x18d9987c6566405cL, 0x57833aa39ef75a04L,
+                0xd1750e36481f654bL, 0x0ce2b66bc8796acbL, 0xc7e79aa76c96b057L, 0x68f95b6b3c5cdc1dL,
+                0x2f5725cf5fc583aeL, 0x6b973013fd4484a6L, 0xaaeb2687f2d8bb96L, 0xad29cce061ba3934L,
+                0xcb60dd1c437eb1d9L, 0x5cd6f46b78181bb4L, 0x1561cdc95ace24d9L, 0xbb774e6705806245L,
+                0xdc29c8df29b2e975L, 0x6ee5ba502839dccdL, 0x670869bb64c60f69L, 0x008ca2931e927ae7L,
+                0x35cf6c0a27d8de77L, 0x94a3d86209af3920L, 0x4095a276475df5b7L, 0x1119e4c257ccf7fbL,
+                0x33376166d9064fe8L, 0xd68c2399f968b905L, 0xb7bf2902f40fc101L, 0x4ec18604cfd551e0L,
+                0xeb8e7fe1b6678e99L, 0xdcfe68fc0e042fa6L, 0xd2e58dfb1a8e3866L, 0xf4322bc57fb9a35aL,
+                0xe0c665c8cf1fb49bL, 0x60de1f1050684297L, 0xf400c04cb00784cdL, 0xfc2a216f12016984L,
+                0xa808b477fd65fb4aL, 0xd9b614adfcb5d0f1L, 0x50afdbc66e3efad2L, 0x82337b3f1764851cL,
+                0xdc98850eb93ef45eL, 0xe1c314bbc2c6af27L, 0xd35614ba27e74a71L, 0xa5d592e04a31bb6fL,
+                0x3f143cd0bc243fbeL, 0x081641ac25408b21L, 0xd4166b32a26fc1c6L, 0xccd088ee4d4a1f67L,
+                0x698c913d46c1ec99L, 0x0f6b9086a5b986abL, 0x4a73c05ef72e3595L, 0x0307aeeb350ab081L,
+                0x43e20045bcb06b0eL, 0x3f58d1d6cd3aa0dcL, 0xd71cd7c996faba80L, 0x4431d8268eebfb71L,
+                0x254246df109e3dd5L, 0xa7ca1449a238b06aL, 0x49b40e7b082493e7L, 0x45d80e6bd330d613L,
+                0xaf3d8a578b6d6232L, 0xa4b98341785262d1L, 0xf4f1f424af963102L, 0xa84a986395146774L,
+                0x90da037fb61d5c88L, 0xb645534b2cf5b89fL, 0x3fdb3073310934b4L, 0x1a0307d01f57f514L,
+                0x509c9b87a4a1e66cL, 0xbf320cf0888d8aa8L, 0x45a51f76c5f76892L, 0x23eb7a2b99a64402L,
+                0x4c600e5675dd7757L, 0x4896757aa01a5c34L, 0xb808dbbda7a8a1daL, 0x762c21058ba50349L,
+                0x99b0a9d5deeebb37L, 0xd6d98ef70a1e465dL, 0xb052f2c1163894f6L, 0xc55e73526f8bc8faL,
+                0xb31a0537f5b3b269L, 0xf09c1819c0c7f78aL, 0xc36d4e2187e430f8L, 0xf141831a47299c7bL,
+                0x62f938047903ef34L, 0xf2a0dd678f92e0a5L, 0x0c7fe6a53efaaa65L, 0xcc539fcdcc466310L,
+                0x55199357cdc55491L, 0x6917fb45babb399eL, 0xb098da3c7b012b1aL, 0x054916438f426c41L,
+                0x1a5ff3356d77d43bL, 0x74e71995e0aacf1aL, 0x6562a8da6b5e69eeL, 0xacbc2b8d1fb16ea8L,
+                0x400ea8e1f3f5535eL, 0x2ea792dad3a4538fL, 0xf580fe481db60b5cL, 0xcb101198dd0aba9fL,
+                0x259acbe0461cb837L, 0x30033c3964b56a40L, 0x6c15d4283eeb6fa6L, 0xdea7b626998ea3eeL,
+                0xdbb2e1b8c0c2abdbL, 0x3a856a6742b6edc2L, 0x0777ed6b1683f48bL, 0xde72fd7d6db3bb63L,
+                0xc8766969b599dc68L, 0xb39a5b76dce26160L, 0x97464948ce81d8a2L, 0xae20fda5af404ae6L,
+                0xde1100c4f1ae3265L, 0x05a94d43bf60f574L, 0xc087a2116f52d0fcL, 0xfacb3be87e615d89L,
+                0x0e184cb9fba7b0feL, 0x824779bede6d84ffL, 0xa0852e96875da152L, 0x620046e8ba89baefL,
+                0x247c32c5f34b08ddL, 0x49294468356e7298L, 0xaf6d6e0f8b5009ebL, 0x8c25bfcdb8abd77fL,
+                0x4f5464a1bc417e38L, 0x2df8fbe8993f8c9fL, 0x6540566281dd6d91L, 0x0b90690dcfb03a83L,
+                0xe270b7c7f8fab463L, 0x898ead41792a7f87L, 0xa1b1248822b7c292L, 0xfa2c0d61dd383eabL,
+                0x5574c091830bd677L, 0x43640e20702986e5L, 0x622d0a1c860d0302L, 0x9528ea0051990eb9L,
+                0x28f057ef30af388fL, 0x88320e974a2721a0L, 0x8a12cb33cdd88b60L, 0xd91a9763f991780dL,
+                0xdf22e332867c0e97L, 0xad95801b6c801f10L, 0xb34e21d4afe2c4a0L, 0xd5465bf172494dd3L,
+                0x16594af34f1b5767L, 0xa675dceaee1591e6L, 0x53db891db5e1d768L, 0x39a80f5d365c71afL,
+                0xdce01c73eac54372L, 0x1087fb03e5ce69e9L, 0x067cac3905594378L, 0x275d24c9aa1607f0L,
+                0x9163a77a53e361b8L, 0x17d10f8254fa7f0bL, 0x49efeab6642e9e45L, 0x376e24839b1df1beL,
+                0x0c46221cc408546fL, 0x98eb5bb7001ebf5cL, 0xc6c4d56e3c9a78efL, 0x023c0723e123a899L,
+                0x145912ec44b57548L, 0x488a34fe824ff4c3L, 0xac3bc6de9929c707L, 0x1dbac6e98813a70fL,
+                0xf566054941858266L, 0x18e0a3a2a8b8f2f1L, 0xcc6245a26564a399L, 0x14416ca0e1a84a9aL,
+                0x4eaf095631a6e7bfL, 0xf2f89f104c9d0b8dL, 0x8fb278a5953e52d8L, 0x8fcee83a30a8be30L,
+                0xb66850da1a0ceb33L, 0x5f37d31bad76f4dcL, 0xff4d956ffea8dea4L, 0x078c583b396635b3L,
+                0xad268fb5b1105028L, 0xa480149a0dcbc5f4L, 0xb0e8d69c8b15c864L, 0x6ed49c46f19bb8eaL,
+                0x7f1871fdf321818dL, 0x1ec5816f5a9843eaL, 0x77c8da91b5313675L, 0x4cdb66ad515e0717L,
+                0x2ec4712b0bfdfcd6L, 0x6c6f5767fff27330L, 0x071083b972d80c0cL, 0x8d8325e82c4fdcdcL,
+                0xb47a658dad8e13a4L, 0x88710bf005fda027L, 0x69bd3edaf7111200L, 0x0dccdd0c65c810ffL, 
+        };
+
+        RandomAssert.assertEquals(expectedSequence, rng);
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/SplitMix64Test.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/SplitMix64Test.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/SplitMix64Test.java
new file mode 100644
index 0000000..87aa1b8
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/SplitMix64Test.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source64;
+
+import org.apache.commons.rng.RandomAssert;
+import org.junit.Test;
+
+public class SplitMix64Test {
+    @Test
+    public void testReferenceCode() {
+        final long[] expectedSequence = {
+            0x4141302768c9e9d0L, 0x64df48c4eab51b1aL, 0x4e723b53dbd901b3L, 0xead8394409dd6454L,
+            0x3ef60e485b412a0aL, 0xb2a23aee63aecf38L, 0x6cc3b8933c4fa332L, 0x9c9e75e031e6fccbL,
+            0x0fddffb161c9f30fL, 0x2d1d75d4e75c12a3L, 0xcdcf9d2dde66da2eL, 0x278ba7d1d142cfecL,
+            0x4ca423e66072e606L, 0x8f2c3c46ebc70bb7L, 0xc9def3b1eeae3e21L, 0x8e06670cd3e98bceL,
+            0x2326dee7dd34747fL, 0x3c8fff64392bb3c1L, 0xfc6aa1ebe7916578L, 0x3191fb6113694e70L,
+            0x3453605f6544dac6L, 0x86cf93e5cdf81801L, 0x0d764d7e59f724dfL, 0xae1dfb943ebf8659L,
+            0x012de1babb3c4104L, 0xa5a818b8fc5aa503L, 0xb124ea2b701f4993L, 0x18e0374933d8c782L,
+            0x2af8df668d68ad55L, 0x76e56f59daa06243L, 0xf58c016f0f01e30fL, 0x8eeafa41683dbbf4L,
+            0x7bf121347c06677fL, 0x4fd0c88d25db5ccbL, 0x99af3be9ebe0a272L, 0x94f2b33b74d0bdcbL,
+            0x24b5d9d7a00a3140L, 0x79d983d781a34a3cL, 0x582e4a84d595f5ecL, 0x7316fe8b0f606d20L,
+        };
+
+        RandomAssert.assertEquals(expectedSequence, new SplitMix64(0x1a2b3c4d5e6f7531L));
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/TwoCmresTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/TwoCmresTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/TwoCmresTest.java
new file mode 100644
index 0000000..2b921ce
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/TwoCmresTest.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source64;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public class TwoCmresTest {
+    @Test
+    public void testAsymmetric() {
+        final int index1 = 2;
+        final int index2 = 5;
+        final int seed = -123456789;
+
+        final TwoCmres rng1 = new TwoCmres(seed, index1, index2);
+        final TwoCmres rng2 = new TwoCmres(seed, index2, index1);
+
+        // Try a few values.
+        final int n = 1000;
+        for (int i = 0; i < n; i++) {
+            Assert.assertNotEquals("i=" + i, rng1.nextLong(), rng2.nextLong());
+        }
+    }
+
+    @Test
+    public void testSubcycleGeneratorsMustBeDifferent() {
+        final int max = TwoCmres.numberOfSubcycleGenerators();
+        for (int i = 0; i < max; i++) {
+            try {
+                new TwoCmres(-97845, i, i);
+                Assert.fail("Exception expected");
+            } catch (IllegalArgumentException e) {
+                // Expected.
+            }
+        }
+    }
+
+    @Test
+    public void testSubcycleGeneratorsIndex() {
+        final int seed = 246810;
+
+        // Valid indices are between 0 (included) and max (excluded).
+        final int max = TwoCmres.numberOfSubcycleGenerators();
+
+        for (int i = 0; i < max; i++) {
+            for (int j = 0; j < max; j++) {
+                if (i != j) { // Subcycle generators must be different.
+                    // Can be instantiated.
+                    new TwoCmres(seed, i, j);
+                }
+            }
+        }
+
+        for (int wrongIndex : new int[] { -1, max }) {
+            try {
+                new TwoCmres(seed, wrongIndex, 1);
+                Assert.fail("Exception expected for index=" + wrongIndex);
+            } catch (IndexOutOfBoundsException e) {
+                // Expected.
+            }
+
+            try {
+                new TwoCmres(seed, 1, wrongIndex);
+                Assert.fail("Exception expected for index=" + wrongIndex);
+            } catch (IndexOutOfBoundsException e) {
+                // Expected.
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/XorShift1024StarTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/XorShift1024StarTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/XorShift1024StarTest.java
new file mode 100644
index 0000000..67717d2
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/XorShift1024StarTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.source64;
+
+import org.apache.commons.rng.RandomAssert;
+import org.junit.Test;
+
+public class XorShift1024StarTest {
+    @Test
+    public void testReferenceCode() {
+        /*
+         * Data from running the executable compiled from the author's C code:
+         *   http://xorshift.di.unimi.it/xorshift1024star.c
+         */
+        final long[] seed = {
+            0x012de1babb3c4104L, 0xa5a818b8fc5aa503L, 0xb124ea2b701f4993L, 0x18e0374933d8c782L,
+            0x2af8df668d68ad55L, 0x76e56f59daa06243L, 0xf58c016f0f01e30fL, 0x8eeafa41683dbbf4L,
+            0x7bf121347c06677fL, 0x4fd0c88d25db5ccbL, 0x99af3be9ebe0a272L, 0x94f2b33b74d0bdcbL,
+            0x24b5d9d7a00a3140L, 0x79d983d781a34a3cL, 0x582e4a84d595f5ecL, 0x7316fe8b0f606d20L,
+        };
+
+        final long[] expectedSequence = {
+            0xd85e9fc0855614cdL, 0xaf4965c9c1ac6a3dL, 0x067da398791111d8L, 0x2771c41db58d7644L,
+            0xf71a471e1ac2b03eL, 0x953449ae275f7409L, 0x8aa570c72de0af5eL, 0xae59db2acdae32beL,
+            0x3d46f316b8f97301L, 0x72dc8399b7a70957L, 0xf5624d788b3b6f4eL, 0xb7a79275f6c0e7b1L,
+            0xf79354208377d498L, 0x0e5d2f2ac2b4f28fL, 0x0f8f57edc8aa802fL, 0x5e918ea72ece0c36L,
+            0xeeb8dbdb00ac7a5aL, 0xf16f88dfef0d6047L, 0x1244c29e0e0d8d2dL, 0xaa94f1cc42691eb7L,
+            0xd06425dd329e5de5L, 0x968b1c2e016f159cL, 0x6aadff7055065295L, 0x3bce2efcb0d00876L,
+            0xb28d5b69ad8fb719L, 0x1e4040c451376920L, 0x6b0801a8a00de7d7L, 0x891ba2cbe2a4675bL,
+            0x6355008481852527L, 0x7a47bcd9960126f3L, 0x07f72fcd4ebe3580L, 0x4658b29c126840ccL,
+            0xdc7b36d3037c7539L, 0x9e30aab0410122e8L, 0x7215126e0fce932aL, 0xda63f12a489fc8deL,
+            0x769997671b2a0158L, 0xfa9cd84e0ffc174dL, 0x34df1cd959dca211L, 0xccea41a33ec1f763L,
+        };
+
+        RandomAssert.assertEquals(expectedSequence, new XorShift1024Star(seed));
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/core/util/NumberFactoryTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/util/NumberFactoryTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/util/NumberFactoryTest.java
new file mode 100644
index 0000000..3088ca4
--- /dev/null
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/util/NumberFactoryTest.java
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.rng.core.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Tests for the {@link NumberFactory}.
+ */
+public class NumberFactoryTest {
+    /** sizeof(int). */
+    final int INT_SIZE = 4;
+    /** sizeof(long). */
+    final int LONG_SIZE = 8;
+
+    /** Test values. */
+    private static final long[] LONG_TEST_VALUES = new long[] {
+        0L,
+        1L,
+        -1L,
+        19337L,
+        1234567891011213L,
+        -11109876543211L,
+        Long.valueOf(Integer.MAX_VALUE),
+        Long.valueOf(Integer.MIN_VALUE),
+        Long.MAX_VALUE,
+        Long.MIN_VALUE,
+    };
+    /** Test values. */
+    private static final int[] INT_TEST_VALUES = new int[] {
+        0,
+        1,
+        -1,
+        19337,
+        1234567891,
+        -1110987656,
+        Integer.MAX_VALUE,
+        Integer.MIN_VALUE,
+    };
+
+    @Test
+    public void testMakeIntFromLong() {
+        for (long v : LONG_TEST_VALUES) {
+            final int vL = NumberFactory.extractLo(v);
+            final int vH = NumberFactory.extractHi(v);
+
+            final long actual = (((long) vH) << 32) | (vL & 0xffffffffL);
+            Assert.assertEquals(v, actual);
+        }
+    }
+
+    @Test
+    public void testLong2Long() {
+        for (long v : LONG_TEST_VALUES) {
+            final int vL = NumberFactory.extractLo(v);
+            final int vH = NumberFactory.extractHi(v);
+
+            Assert.assertEquals(v, NumberFactory.makeLong(vH, vL));
+        }
+    }
+
+    @Test
+    public void testLongFromByteArray2Long() {
+        for (long expected : LONG_TEST_VALUES) {
+            final byte[] b = NumberFactory.makeByteArray(expected);
+            Assert.assertEquals(expected, NumberFactory.makeLong(b));
+        }
+    }
+
+    @Test
+    public void testLongArrayFromByteArray2LongArray() {
+        final byte[] b = NumberFactory.makeByteArray(LONG_TEST_VALUES);
+        Assert.assertArrayEquals(LONG_TEST_VALUES,
+                                 NumberFactory.makeLongArray(b));
+    }
+
+    @Test
+    public void testIntFromByteArray2Int() {
+        for (int expected : INT_TEST_VALUES) {
+            final byte[] b = NumberFactory.makeByteArray(expected);
+            Assert.assertEquals(expected, NumberFactory.makeInt(b));
+        }
+    }
+
+    @Test
+    public void testIntArrayFromByteArray2IntArray() {
+        final byte[] b = NumberFactory.makeByteArray(INT_TEST_VALUES);
+        Assert.assertArrayEquals(INT_TEST_VALUES,
+                                 NumberFactory.makeIntArray(b));
+    }
+
+    @Test
+    public void testMakeIntPrecondition1() {
+        for (int i = 0; i <= 10; i++) {
+            try {
+                NumberFactory.makeInt(new byte[i]);
+                if (i != INT_SIZE) {
+                    Assert.fail("Exception expected");
+                }
+            } catch (IllegalArgumentException e) {
+                // Expected.
+            }
+        }
+    }
+
+    @Test
+    public void testMakeIntArrayPrecondition1() {
+        for (int i = 0; i <= 20; i++) {
+            try {
+                NumberFactory.makeIntArray(new byte[i]);
+                if (i != 0 && (i % INT_SIZE != 0)) {
+                    Assert.fail("Exception expected");
+                }
+            } catch (IllegalArgumentException e) {
+                // Expected.
+            }
+        }
+    }
+
+    @Test
+    public void testMakeLongPrecondition1() {
+        for (int i = 0; i <= 10; i++) {
+            try {
+                NumberFactory.makeLong(new byte[i]);
+                if (i != LONG_SIZE) {
+                    Assert.fail("Exception expected");
+                }
+            } catch (IllegalArgumentException e) {
+                // Expected.
+            }
+        }
+    }
+
+    @Test
+    public void testMakeLongArrayPrecondition1() {
+        for (int i = 0; i <= 20; i++) {
+            try {
+                NumberFactory.makeLongArray(new byte[i]);
+                if (i != 0 && (i % LONG_SIZE != 0)) {
+                    Assert.fail("Exception expected");
+                }
+            } catch (IllegalArgumentException e) {
+                // Expected.
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/internal/BaseProviderTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/internal/BaseProviderTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/internal/BaseProviderTest.java
deleted file mode 100644
index 46956f5..0000000
--- a/commons-rng-core/src/test/java/org/apache/commons/rng/internal/BaseProviderTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.rng.internal;
-
-import org.junit.Test;
-import org.junit.Assert;
-
-/**
- * Tests for {@link BaseProvider}.
- *
- * This class should only contain unit tests that cover code paths not
- * exercised elsewhere.  Those code paths are most probably only taken
- * in case of a wrong implementation (and would therefore fail other
- * tests too).
- */
-public class BaseProviderTest {
-    @Test(expected=UnsupportedOperationException.class)
-    public void testMissingGetStateInternal() {
-        new DummyGenerator().saveState();
-    }
-
-    @Test(expected=UnsupportedOperationException.class)
-    public void testMissingSetStateInternal() {
-        new DummyGenerator().restoreState(new RandomProviderDefaultState(new byte[1]));
-    }
-
-    @Test
-    public void testFillStateInt() {
-        final int[] state = new int[10];
-        final int[] seed = {1, 2, 3};
-
-        for (int i = 0; i < state.length; i++) {
-            Assert.assertEquals(0, state[i]);
-        }
-
-        new DummyGenerator().fillState(state, seed);
-        for (int i = 0; i < seed.length; i++) {
-            Assert.assertEquals(seed[i], state[i]);
-        }
-        for (int i = seed.length; i < state.length; i++) {
-            Assert.assertNotEquals(0, state[i]);
-        }
-    }
-
-    @Test
-    public void testFillStateLong() {
-        final long[] state = new long[10];
-        final long[] seed = {1, 2, 3};
-
-        for (int i = 0; i < state.length; i++) {
-            Assert.assertEquals(0, state[i]);
-        }
-
-        new DummyGenerator().fillState(state, seed);
-        for (int i = 0; i < seed.length; i++) {
-            Assert.assertEquals(seed[i], state[i]);
-        }
-        for (int i = seed.length; i < state.length; i++) {
-            Assert.assertNotEquals(0, state[i]);
-        }
-    }
-}
-
-/**
- * Dummy class for checking the behaviour of
- * <ul>
- *  <li>an incomplete implementation</li>
- *  <li>{@code fillState} methods with "protected" access</li>
- * </ul>
- */
-class DummyGenerator extends org.apache.commons.rng.internal.source32.IntProvider {
-    /** {@inheritDoc} */
-    @Override
-    public int next() {
-        return 4; // https://www.xkcd.com/221/
-    }
-
-    // Missing overrides of "setStateInternal" and "getStateInternal".
-
-    /** {@inheritDoc} */
-    @Override
-    public void fillState(int[] state, int[] seed) {
-        super.fillState(state, seed);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void fillState(long[] state, long[] seed) {
-        super.fillState(state, seed);
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-rng/blob/ec3720f2/commons-rng-core/src/test/java/org/apache/commons/rng/internal/RandomProviderDefaultStateTest.java
----------------------------------------------------------------------
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/internal/RandomProviderDefaultStateTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/internal/RandomProviderDefaultStateTest.java
deleted file mode 100644
index a4f8b69..0000000
--- a/commons-rng-core/src/test/java/org/apache/commons/rng/internal/RandomProviderDefaultStateTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.rng.internal;
-
-import java.util.Arrays;
-
-import org.junit.Test;
-import org.junit.Assert;
-
-/**
- * Tests for {@link RandomProviderDefaultState}.
- */
-public class RandomProviderDefaultStateTest {
-    @Test
-    public void testConsistency() {
-        final byte[] internalState = { 1, 0, -23, 67, -128, 54, 100, 127 };
-        final RandomProviderDefaultState state = new RandomProviderDefaultState(internalState);
-
-        Assert.assertTrue(Arrays.equals(internalState, state.getState()));
-    }
-}


Mime
View raw message