#[rustfmt::skip]
pub(crate) const LIOUVILLE_LUT : [u64;1024] = [
0xa835be21f89e39ae , 0xb1377aee1209dbdc , 0xd479fdbc26b80e0d , 0x987ed2e8c01981ab , 0x73c910357fabf5a6 , 0x8c67c8b62a863825 , 0xddff6bc1776b13a , 0x3c9d4889ac5ba397 , 0xca8a3938284c1b41 , 0xe0d80fb6fedf5846 , 0x71191d6b52bf79ee , 0x17a5c9e825b598e3 , 0x7ce04a63385c52b3 , 0x5dae2608aa61b087 , 0x330f669ab1d8bcc2 , 0xfaa73624cdb71f9c , 0xf91d67a57e30c7d6 , 0x85911fb97236d2bd , 0x2203060aecbd4d43 , 0xa1570c1f75aab0e3 , 0x64d9ba80e8b68b0b , 0xc0d454367486c310 , 0xd9ccb8ec9e3da972 , 0x7c6899c68dbeab9d , 0xf81decadc4f3bad8 , 0xca25217d6d39ebf2 , 0x1b91635eb0553d68 , 0xec86b981db69f737 , 0x90d40697902d2751 , 0x525a7d02e1ebbcb9 , 0xda43048fc003c05 , 0x8b939c2facbf34d , 0xe80b7aff8d6aa6e1 , 0x21e5684ebca1346 , 0xea537069ac731a0c , 0xbfe696567e28989c , 0xa12dbaae650447f0 , 0xd3f35f70f769ff39 , 0x60643b1b1a5da3f0 , 0x3bfccc4aff05d680 , 0x2337906b9718d530 , 0xe9ed8e9e10b1bf57 , 0xe06f1f61afd8de77 , 0x55face5c647f84b , 0xb603722e9936627b , 0xe14a5ad3297898d , 0x17a432091b983e06 , 0x482dc3173614ad4b , 0x76f88f210138e95 , 0x9d7e8ea9251326 , 0x4b2c7834a13a2a5b , 0xf93d9ee535c488c , 0xb0556ccef80ec1bf , 0x5eb21e56c378e489 , 0x2cb8699c28e8fae2 , 0xa32db5e3183cbfd4 , 0x3c77d1aef3e066d6 , 0x34f70e677fc11ec0 , 0x8bf6a192382fb894 , 0x4e53ecb1ca2675d9 , 0x287d7f5d0a7fdc4 , 0xf50c9bcd5a7def9f , 0x283bad9a8878450c , 0xff379a9e523e8759 , 0xbf2c4b33b943895c , 0xb9f7f90c21ba082 , 0x93a8539fc7a47e1 , 0x7f5b54a944c13767 , 0x138d68d0d4b95f2d , 0x2913c658e257c1bc , 0xc801fbb71e95bc0f , 0x38208be114eb44e9 , 0x63c65f4de540a0dd , 0x3b5e590c92bb1983 , 0x8a68c9b4808ad214 , 0x24580050c68262f7 , 0x7eb364acb350a8f7 , 0xc9d5e3e772baf63a , 0x8a88fd44aceb1ddf , 0xf238a8058f274d39 , 0x3cc8d4978e4cf057 , 0x59fad842967d6332 , 0x7cd79a7e9a806460 , 0x334098cb7a11c01 , 0x3188ae37a4abca68 , 0xa1ddcba0dc826b7e , 0xdebcd428a9fe59a , 0x55e444201b8521ee , 0xbebeda634b7bca90 , 0x30e3f7f0e0f1f321 , 0xfa79b6689fbc970c , 0xffa1fcef1b6c992e , 0x76981c9d5209f743 , 0xdcc0194f70f1d53e , 0xda49f6e5992c6710 , 0xe7bd7b06057afe48 , 0x7cf55452350916ec , 0xf7c269801db5aaf9 , 0x931c79eefc70f169 , 0xf5f53ca6e2ab9783 , 0x315ed2195b396610 , 0x67925125c817f2e7 , 0x4672eead47bd950f , 0x7da834580c148ba1 , 0x8a35f5aba7d6322a , 0x38dd4ecc4b07a5ab , 0x2772ea95a94d17b6 , 0xcc0990597ea1ceeb , 0xdbbfa9bf00932bf9 , 0xd10f38b563369ea7 , 0xd41778ad300a864d , 0x19d8d10c12e60178 , 0x20782bfd436b0661 , 0x50af40480e74b9a1 , 0xc0aa077e76012f7f , 0x526d80c277a14360 , 0xf237792a1a1d3665 , 0xbf3a82cb31de9e5b , 0xdb9d1e3ca64a6b6 , 0x6f294652298d10f4 , 0xa47d99e20aac2fef , 0x7d73354284c2a264 , 0x6c1360ae03229682 , 0x2aecd50d3430afa6 , 0x171dc0356dceff87 , 0x59355a90310e9e91 , 0xec7bd8a937e24634 , 0x80aa5aea1c191401 , 0x903eeff03d96648d , 0xb282d32dcd3af0d0 , 0x2f537e1a11d71779 , 0xfdbabea8c0201e7d , 0x2256013656821d6 , 0xf73c58119fe4da3e , 0x4d6f8576d2e0e362 , 0xeaa2c6b8ecc5919e , 0xe4f183e6e2ad30c , 0xfef895acc33f8c5f , 0xa1d96468a576b2a7 , 0xf1b4f47a2dc1c617 , 0x74ab96ce1a0dff2a , 0xa71d5d7c0a3a9860 , 0xd66fa390656781bc , 0xf2bdd9ff35b803f6 , 0xa36647dd33d58e2c , 0xeb582fc1e4826d2e , 0x3ef390327c9695f0 , 0x5abae48be6b47fa5 , 0x35579d918e597cef , 0x3d9be995859cba6d , 0x25633d59e3f9a062 , 0x7bed661fd777ec75 , 0xbaf846f511bdaa60 , 0xc829baf0ebcdb90d , 0xc8db3013a8e3d03b , 0x25bc844ca3700be8 , 0x99a503927e840400 , 0x9f99bd95802c6d6d , 0x172adbe0ef2cf014 , 0x85bd01f3997d56e , 0xb5a3cf0788dfe4e8 , 0x70ad059f2e4736e0 , 0x3c494004c1da5273 , 0x4c94a839ae354dd3 , 0xb4311d5f614f6b7d , 0x68ad8668b611ca89 , 0x98401bd67c85ddfe , 0x575af26d55bc952f , 0x134db93a259bc397 , 0xd85e3db5912bd240 , 0x2e259d7963904aab , 0xbb5e2c8ca510bb7f , 0xb5bb16a0a34c1411 , 0xfd0eab1007a4edf9 , 0x7490176c5bdca30b , 0x6e4cabc567657975 , 0x4fb8c01a07b19657 , 0x1281b2030e91c95a , 0x89dd22de82d8d1fe , 0xf0d5a37a8a428855 , 0x1e801025bcc0d7ad , 0x201b4a3e92e36b1f , 0xf4ba4387be145383 , 0xa81354820d81a2 , 0xe6d9f5beaac865fa , 0xc24b9c3dfc8d16a4 , 0x40dfa0fe2ceed029 , 0xc0d8df5d49c6faa , 0xb6145ba741425e7d , 0x2433c59602e3a96e , 0x75ccc8312083e5bf , 0x36832ae6a32d5c9 , 0xdae65f9c5c63a90f , 0xe2270ac4ce654c79 , 0xde0c92ec313b28b4 , 0xa8c28573cb96bff5 , 0x20fe2df82f643be , 0xb6d87687e0142b29 , 0x21f3b3929642375a , 0x88e4204c582539e9 , 0x6eb07a3c61e1d6ff , 0xdafcee2b26f15616 , 0xd9d7cc8a2dba9c0 , 0xe348b673c4d6fbce , 0x4d68b8ac14ec5588 , 0xef49cad98b839986 , 0x7fa7744f9538317c , 0xe2061997f84f4c9f , 0x11e8a4cb5a5bd333 , 0x37117a6ea2e411b2 , 0xcf1ad76839e69992 , 0xd0970e0665a90707 , 0x199ced26f6c89261 , 0x79c2eaf3091b144e , 0xe08133deafaba91a , 0x2505fdbc36fd469c , 0xdfff9e5ad91280bc , 0x2432b82a131eb8a2 , 0x6b5af041b601b9c0 , 0xcd677a8781fba44 , 0xd8f5d5191dc3458e , 0xa46d5462e015bbac , 0xd4510bcb55f6e21d , 0xde9e0e1d86f6df0d , 0x45f841b255694bf4 , 0xf357e837d3982aa6 , 0x5da1c2cf9296915e , 0xe457392aedfdefb7 , 0xe269d77c79806202 , 0x2f5f19195d4a62a3 , 0xe86891de4f72eb5f , 0x4cd3cb2e35f72d51 , 0xd6135ea4f86b614c , 0x82f178c8ca9ed91b , 0x58f626a11c03c490 , 0x3828fa3b1f792d1a , 0x799634f996b1249 , 0x5f06b894ae7c21fa , 0x5bbeb7aeded502ef , 0xc922733e6deb4c79 , 0xd5399307dba2a3a2 , 0x394fcaa69c9c837b , 0xb565addb99db43e7 , 0x408e607af06667d1 , 0xddfaf3d39ecb357b , 0xebaddc5841559989 , 0xfaedf857b9a21b6b , 0x5339098704c4d706 , 0x612c8f09a20297e0 , 0x5eca7cac2df7d24e , 0xfa54d52b9e0314d6 , 0xe49ed0e64e993efd , 0x78c083f1c56178ed , 0x23a54ab08e1f391e , 0xfc07fc16d44f5d74 , 0xb7573b11663b2131 , 0xd00e1e6b49e59f06 , 0x94577883a98a00fd , 0xa586523b2857acd7 , 0x1af39f518cd05386 , 0xfcfcac4254624a9c , 0xfb886e724a015413 , 0xaffd7bdd74894004 , 0xaaae9891120b3997 , 0x41c4c3bdf35c8ee9 , 0x75f97b466bfd54f8 , 0x162821452cb352a9 , 0x2cad00fe43f7efc , 0x86d90bff815ac9d9 , 0x6d064b0017c4c843 , 0x212f87e6147ebc09 , 0xa33339fb05e1929d , 0xcb0953392cd8df07 , 0x5529cda87e3f78a1 , 0xadd078223d85e42a , 0xa0102173ecc9325 , 0xb1ce4843107b9360 , 0xb9d4841ee9ef433f , 0x7926a55c85c9f4e0 , 0x22fc90cf0a6d4091 , 0xfebbdda4222adb9b , 0xcac5b910be692da9 , 0x751b721b363debdf , 0x9342562eccaceaa5 , 0xcbe4e368b5de9027 , 0x2443c120b37abc7f , 0xd26692b5f7f20aeb , 0x873b00e2c3c2a08 , 0xf8da2ce63709598f , 0x3b70ebc16f620ca4 , 0x23453f534b8cf9a3 , 0x2b98c4355100255c , 0x6a85be49bec4285d , 0xd00b22d896f5f071 , 0x36b184748a0116c , 0x6c9130b38b4d1db0 , 0x17ab443ce00da908 , 0x7066cce234869676 , 0xbf4616051213e386 , 0x5806bc100b3c366c , 0x295a2036b37debfb , 0xf1e6e178f284463c , 0xac6ae8688107c0e6 , 0xe292032ee3c95e22 , 0x5e7e3a8e19b1ebff , 0xb23b0097c7e128c6 , 0x11805861a3cf584 , 0x279f59be38b3a057 , 0x31bf83f20e55da30 , 0x871d0eb0725f765a , 0x19fae07f7fb0293f , 0x7b4c380715edef07 , 0xe2a13f4777ef7d75 , 0x1e1c11e4d55ab653 , 0x1dfdd1276bae4926 , 0x9ea0961e1a8634e6 , 0x810af12d2ad556e7 , 0x7e6879998c1a23f5 , 0xd89cb6ea864643a3 , 0xf515e6188e5ddc20 , 0xbd3f26a82be5013d , 0x32ce1bd0850855e2 , 0x59a3c54af069015d , 0x48fdbb2ed56c1eaa , 0x8774243944db68d8 , 0x5a87659467d7dfc7 , 0x138972ce45868658 , 0x47a594ed919f5ab6 , 0x4b544f88eb3a42a4 , 0x98ef7a7ed4046e28 , 0x98c35cf625b99d3e , 0xe91d392e3d4bebbf , 0x48af1d6ca6242001 , 0x3e15e5df7cb22ceb , 0x6e66980db6eed18a , 0xeee8ce1988d9c186 , 0x79e4369a87fa3ec8 , 0x54526daebabe52bb , 0x365edb322cdbe775 , 0x2ebd4e01da0e1a6c , 0x6b709cdfed9131b0 , 0x7383d9cc3c26e89e , 0x93cefe7530b260a2 , 0x303a6c81f3273725 , 0x9bdacf8d5ce5fef6 , 0x1aeeb892f4e13b7d , 0x5d4ab345a906a21e , 0xa28e55a911b854df , 0xc41a240f91f85fba , 0x6ae53c57fcc8e3a5 , 0x416ae36e42146244 , 0xc121c7a5913a8564 , 0xf540b8d63c63ec48 , 0xcf28b0b52d75d493 , 0x772b1e5ea59e6631 , 0xfed33f5498f957f2 , 0xb7d18c170cdc088b , 0x9d3ca4ae79d32ea9 , 0xb5bbc753bf354ec4 , 0xa87d266e397a6093 , 0x188da755a6ca3926 , 0xfe8b17d5fcf571c4 , 0x1e5b0b7a613854a8 , 0xfbd5de3245395209 , 0xba21dee5c6d2bf52 , 0x224538b14f50bf42 , 0x1753d58e15dc9bd3 , 0x7f5f193574f246ed , 0x33198f37eb44aa3b , 0x2be9843480ce3aa3 , 0xa8a5958c7643bbe7 , 0xa751671a348f52ae , 0xf187892126dffbb4 , 0x6f7526aab975aa83 , 0x26ef362dc1a81993 , 0xfd875da4358ea2ce , 0x4756effbee0beaa4 , 0x3ae9de6546ba33e0 , 0x5ff1a9f291bc6b29 , 0x79c558d8274e1641 , 0x597dbdf001469280 , 0xc8cc27afafb5d2fc , 0x611b5073a6e40dbc , 0xddd2499d70f1b3a1 , 0xce85e15a1916d588 , 0x6990be9e4281c85 , 0x8d83696c65054034 , 0x973d342df11a7cf , 0xf2747018db9d9a65 , 0x60bf505bef10b87 , 0x873034c332aa28cc , 0xb137a5533dc66ad2 , 0x3f5180ebe7f03201 , 0x57fb77a0a17b2c0a , 0x21577c6dd9b27b3c , 0x9841ae1d68e11560 , 0x1c49e553f8c0ee33 , 0xfbf6a2f2b0529c7b , 0x6ebff164523ca11e , 0x373d8bcd537f45a7 , 0x4bf4abde8ee9820a , 0x432b12f56039f2ad , 0x73e9885ec66b7661 , 0xeb3020709837392 , 0xbbd18e3239160fd7 , 0xf78e148ee88dad15 , 0x874d246b0838af81 , 0x8b58c51d12c348f2 , 0x5c4783876466b59f , 0x6d2e41173a3531a7 , 0x37b0357a9cb4bfe9 , 0x1224fbc8d33ac34 , 0xbcc6589dd2de602d , 0xc200b14a484f45aa , 0x2a15cf2265073622 , 0x97b756bd616bc62 , 0xce336c9284fa7a5a , 0xd65e0bbfb3e5afb0 , 0xbb7b0967f654b8d1 , 0xda42fcd6429b4123 , 0xd81c8b4914b43cf3 , 0x2702dcb124c0c3bf , 0xe96e999c55c057ea , 0x4f514e8dd295f6b , 0x28e12d9d34d143f4 , 0x5c3e16ad810c79c1 , 0x77165e9afc4f6da9 , 0x401c87fb211b0a72 , 0x13a231ba1116d633 , 0x1fd35d6f2d00e03 , 0xfac12084ef6b1e87 , 0xd946d746080c908d , 0xa63eded917f7102d , 0x248a80aabe23e41b , 0xdc5ad62b3a97b1db , 0xf3e57a5138b57991 , 0x9243dffe9836addd , 0xc918c433a85fed54 , 0xc2b75caa9a99676f , 0x5da706c16840b91f , 0xfe0c075247e49dab , 0xebf204c064476be , 0xa955d444983ab307 , 0x3bcd438e4c45415b , 0xe44ca2418bd37c04 , 0xaec5c6fe5598a538 , 0xbd63a86bae20d5ac , 0xa4ab962957a97cae , 0xce4ee39cc7928ac5 , 0x6f64089dedd69851 , 0xcf89c3f5bbb33e1 , 0x8af0e46a0137d0ca , 0x3c5b1c6316f66421 , 0x4e24135caff30f08 , 0x124a00481aa10ea , 0xa965e64a583e7b1b , 0x483e957543fb77fb , 0xa1d3439eacea480d , 0xc42cc5996979b9d2 , 0xf128cc085eb4fc9c , 0x65884a5b0310e608 , 0x8b9d4b371cfc0401 , 0x7a4408e2d92e64f6 , 0x4d2d8ef28d107b03 , 0x8a95e992c974e707 , 0xec97cd8e48111cf , 0x2fb3bc898c367632 , 0x3f5308d6681d0597 , 0xfe2d7df28d6dbedf , 0x46978a41f1613354 , 0x5ea04a9e738efeb3 , 0x78bdf9352a3b5838 , 0xbc1cebba56f3cf3c , 0x5de8b61cc1f84520 , 0x11ab400fd97caa39 , 0x460257499a15146f , 0x24ab24e67d5301a8 , 0xe6929283ba621983 , 0x6b2ca9906505481e , 0xa7bcdbf3c070d8ab , 0xa4b01973995011f9 , 0x26ecf21616f87f42 , 0x960fbe073ff048b8 , 0xda346d22a7993bc9 , 0x9e1c8c306d5021e2 , 0x326e4bc6318c2cb2 , 0xa0d7e9ebc16a2654 , 0xefffbf294bf7ea19 , 0xbc092db8d86ee0b2 , 0x262c22b98ad08e52 , 0xcdf6646e9c1c1734 , 0xa3b8390486ad4615 , 0x98b6395176b8613a , 0x8b38904a237ece0 , 0x554f8fe70e487fc1 , 0xe6dadab4579c9dc8 , 0x11f35d591e4281f7 , 0xe15cdb853508d796 , 0xd32c0ac82c5b6d03 , 0x6681a7b16825190d , 0x9ea95df8fe6daee9 , 0x8b944cf0e6c7930 , 0xe7a1343cfa8ba80e , 0x2bc7362b8cf5894b , 0x8d64cbde609da3a6 , 0xeabf0df7b572a8de , 0x3f8bf6a2f81e5421 , 0x79d299e6c53bb27d , 0xae4f4f2a46ae686f , 0xa8dffea8805fe49 , 0xc3e9f098735670d4 , 0x98e06c487032f65e , 0xe514236e3eaaddc9 , 0xa6dd552156214992 , 0x3916bdbb5d7fa824 , 0x9c6544e2c8b7bf78 , 0xf93fe6c2bb27a6ea , 0xb3c41769ce5b503a , 0x1d2f8cdd6cf037cb , 0x5e398050bc0064dc , 0xe6efc3f9e5bb3685 , 0x8258aa79905cf79 , 0xed3b5756c46dd4f2 , 0xa232359de3a1e0d3 , 0xe06fbf16cf5f7dc7 , 0x1388a224e8ba2e0e , 0x565bd798f016b460 , 0xbb3133a1bcbf1c74 , 0xaf8ccaf152b8b34 , 0x4df4a567a5d2928e , 0x6198820444ef8a9f , 0xe2ce829c6832ed43 , 0xd32d927064f93314 , 0xfcc3f19df37ecd46 , 0xa9cd52aa480900a7 , 0xf7518d930cff7508 , 0x97f4ec13a5bca616 , 0xb76104bc7d30a20a , 0x56ea05e7879567f8 , 0x4126df43ef9ad77f , 0xd66dc883b085753e , 0xf9f65b289f4089c1 , 0xfdec03569e5bb6a6 , 0x13d0f050703ca8b0 , 0x71af04378e825548 , 0x2d125db6c4d2f89c , 0xca0970aac01f9376 , 0x644cfb340d0c93b5 , 0x5a0ebfcc09477b93 , 0x912e04dfe89f7371 , 0x52a9870d9ef251ee , 0xfdbbff545ddbf4ca , 0xd47d683a1ed049d5 , 0xbade2d01cd15e7d2 , 0x13e0388ed585222 , 0x90be2cef15c77eab , 0x1d64259e804d2bd7 , 0xc2965161b9c64c8d , 0x5d31c38e4dff347c , 0xf9d300073e750f02 , 0xfbf35999acb09c32 , 0x8889b010260c39c7 , 0x18836bbedbae9b96 , 0x2db90f6cb01edcf5 , 0xfac1728ca1382c0a , 0xc24e7610e8d3dc3a , 0x72fb1a58b3bb1e4 , 0x16f24571ce6b5921 , 0x18c48e23b4f7714a , 0xaf3a2bef23524197 , 0xb272c83b180f6880 , 0xd9ef4fd8af7ed9dd , 0xa0422859fd3901b0 , 0x6534beb9ed9986c , 0xd38f7885f331f5bd , 0x7f97c2fa107df72b , 0x5ae25d3cccbcbda2 , 0x21da419798da9eb , 0x4ba0c1537fa739e5 , 0x7a9a62f58938057e , 0xe79a978d089c9178 , 0xd95a47ee7222ecf0 , 0x6cd677557bc64e2d , 0xf39a3c1d2f477a6e , 0x128187efd13d448e , 0xeb331d4c9281679e , 0xbee32a6602d562de , 0x865d5f90fbf10cbf , 0x6f9731d7d6d64987 , 0x5558e1105cbf454a , 0x35bac5a4f4a49057 , 0xc3afb47cf0fd10f8 , 0x8155d784111e5f37 , 0x5c6ab39ac5edf827 , 0xfa673563b4e1c041 , 0x40d7e3c305878179 , 0x7e737ed203f01f63 , 0x1228e541fec95d6c , 0x7fb2f88ff8c9cb2f , 0xce955f4b1a2df457 , 0x3a7ac08681900010 , 0x513444397177d8c9 , 0xa05197cf6f4bf025 , 0x2a7ca1eb037eea17 , 0x17fc7de0257fa1c3 , 0x99a5c11b299fcb3d , 0xa9d28734cc0bd3d9 , 0x2bd1bc59575a7189 , 0xfe949a5c81b8aa28 , 0xce01c801701b9503 , 0x87ea03d453b7adcb , 0x1a7b5038f55f966a , 0x7c3b72878ac6bdcf , 0xfd547c1dfdce3fc3 , 0xfab5b87039ff4660 , 0xdb421ea06c96ba81 , 0x7589c4ee8cb9d0d5 , 0xd27410a29df888d9 , 0x48f9662268e36c99 , 0x9de8dc04578398fd , 0x682092d573b6f202 , 0xf494a2990b57c020 , 0x7cc683a689287d60 , 0x423ac527f2b5fde8 , 0xe8e2898a402e6246 , 0xa95991f4f280e762 , 0xaceece9930c94452 , 0x768bfeaf5ed40bc7 , 0xe13239a3c5365143 , 0x7e060026ae7ef160 , 0x569317e9d8cf83e1 , 0x14a339ddbc417c8b , 0x599924eccce109c2 , 0x155cf5b3807efb86 , 0xb52df613717a88c6 , 0xcaa3e91dc294bcb4 , 0xbdc9c7cb47701b7a , 0xacbf36871a4b0319 , 0x3589cc0e8c2fdb55 , 0x80667eeea9e1d497 , 0xf398234677d4782e , 0x32245a02dbc19915 , 0x35e4dd3d6eec8171 , 0x705b8521de300655 , 0x77cb9efffeec26 , 0x64bc39d2074ce5bb , 0x2cce692f740b3191 , 0x6d1728ac921a5929 , 0xcf4786bac99d04bd , 0x37e8c8c553c57abc , 0x4bc8864a2c220fe8 , 0xe4931760c9c61e67 , 0xefe61d43bdc366b7 , 0xfe5abd344a730729 , 0x9edc9e20ce9992c9 , 0xed6a93ee9c6701ae , 0x291870bbe5f19b4f , 0xcd324e6d47aab79d , 0x647754de92959b5 , 0xb4bdab0ae233682b , 0xdbe4ba961e06f801 , 0x3cbdadda6cad0a49 , 0x528cef982bb818a2 , 0x8bbc5e0cf29e79ab , 0xb9635be5d17f7d7e , 0x4d1f1b28740e6b87 , 0x4a251853f32f811a , 0xf283dce6a3e6ae02 , 0x12e32b2b867cbd99 , 0x4301c9e116bff5ac , 0x97b78c1c85fe9749 , 0x9a1211da5a37694 , 0x1de8aa9170030fbd , 0x6a962347f8e33c39 , 0x38b39a0364d9b092 , 0xe4ed647143841383 , 0x7ba72e3089ea40ce , 0xd063442186905259 , 0x8e13d78b5cb9c9a5 , 0x71019824cf8355d6 , 0x2bac1c5c72fe12f7 , 0x419ac855368526a2 , 0xd8a559c10b353c0b , 0x42529f7aa614272d , 0xda5f3073437fbbf3 , 0x347a25292a016844 , 0x8a5ad1e070c853ce , 0xf8f77033638f3ff6 , 0x4ea581ce28a12a61 , 0xb410063b8d80b5ac , 0x22e58b54f0b8c806 , 0x7e9ba983ba959671 , 0x91345d63315954a3 , 0x46a46d39b8f8ef6c , 0x567410b7ec472e02 , 0xb3f91d89ce66999c , 0x3c74aa1fec2890bb , 0x854f5e9bdb45ff20 , 0x82a705bdabf2bbcc , 0xe13103ec78a7c460 , 0x4d5bdccd41f947c5 , 0xc5fe631323f8e109 , 0x9ed4589bbf46cb4d , 0x255453de27e89964 , 0xf885e9d02b276d3f , 0x284ce75d383face3 , 0xd32e404424c5b4f2 , 0x2d007bb7187f9864 , 0x31663c83e36bf0fc , 0xc268d1b25c896e23 , 0xb6bf2294c4682873 , 0x282ba47af80a4447 , 0xdf0da62ddd3d17b2 , 0x3ac0267cbf855640 , 0xe29e26fa51091916 , 0xb684508719cdb189 , 0xb28070cc65a30f4f , 0x30c430902f604cf8 , 0x703440b3695d3ed2 , 0x93956aae53416923 , 0x3b610d1b709c7b63 , 0x54b59fa499e846ce , 0x82a70864687c0dc7 , 0x80899dba74e804e6 , 0xe154729546cdb997 , 0x7629eeb8d5124899 , 0xed44fa9ec6d97f94 , 0xaa10a4e484a1d8d9 , 0x76b8ef11a08c651 , 0x3211fb5e8689a3ce , 0x6daa64f5980acdf9 , 0x71d3ef4ef895305e , 0xd4e4a607bc382470 , 0xd440e67286e43589 , 0x48cd0a5145630106 , 0xe228c6807c1ed86e , 0xb30edefb3bbf8b8 , 0x52705496152852e0 , 0x3fd5a5a152b93970 , 0x7bb28b36156578cf , 0x4a49e5d038ba0348 , 0x931d13ce146ebf85 , 0x5ac5bfa2e6fb3b0b , 0xb3c2c6f6694a7c91 , 0xdbc18ea2a29a32cd , 0xa27495ea953e5176 , 0xb036ca6e393917d8 , 0x6322c0ee716bb993 , 0x2f54319df4143ed2 , 0x79c12302f841fb0c , 0xdac635ab39d38701 , 0x8aa435404ca49365 , 0x8b0957b8a31911cf , 0xcdc8ec41a102283a , 0x4fc91a9172d8a1df , 0xd03b291e8423c1ee , 0x167c3005eb9071bc , 0x46020ade939688f3 , 0x7968cd01fee9cffe , 0xc814ad4c4e37ac35 , 0x575c47eb94f997f5 , 0xe636e00e3a2ca0d5 , 0xb1a2bae48c7b2aad , 0xfbd8fa75be29920 , 0x13490965df841805 , 0x69567c1aeef76278 , 0x4275a2de327ab3f4 , 0x40e847be734b404 , 0x5ebed6c1266e97b7 , 0xa5233d6421dccc93 , 0x9ef7b3ddc0735cc , 0xf543bcbedf98211e , 0x6bcedf46477d5a4f , 0x1f8e3df0cb96e32d , 0xa6025454b9c0af82 , 0xd73c40f22c786f79 , 0x841a9c06be33e9ee , 0xaadb60e760ddfe95 , 0x302ba2dedd98bf4a , 0xffc955982264d5e4 , 0x5ad131b9d39fadaf , 0x9d62f2f5f0e7affa , 0xd22cadc969b90479 , 0x92fcfaea19eeced0 , 0x1ea2257f0f155fe , 0xd208e65e9dfd2130 , 0xb9dc68b27b27df99 , 0xc6c288b8624a9bd7 , 0x434905168187205 , 0xd1f6ec40c887c386 , 0xcb9fa3defee6c177 , 0x9c3dc55439a1548c , 0x80bd85fd03895858 , 0x5685453e0b66c472 , 0x3adf4ed3968f48b2 , 0x28ba28cbb953285b , 0x6673f205bb5c7683 , 0xe32b188828dce145 , 0x6ed2e0a245c43148 , 0xfae2f20e35388f06 , 0xb78323b6357b753b , 0x65922a6513980489 , 0x6bf5f016007bbb26 , 0xe7d2f19afc7182ce , 0xa5c1c9b8eac3c97c , 0x62d2093495bfcca3 , 0xd5be9750e8d8bed1 , 0xf7291ad8df71df62 , 0x52b4de6b778aa6c2 , 0xb8382ef4bfa178d9 , 0x29b59d0cb9acf44c , 0x22403f2176c71fab , 0x7f37da3531a217fe , 0x17ea4fae53cfe118 , 0x5ed90552e7bf8ad1 , 0x9712e63727e6fc0c , 0xc14d49c9b266be02 , 0x442545ea37703f4a , 0xd0b952ecf85e3bca , 0x49067b296d56766a , 0xbc07106db8200336 , 0x70ca9afd58ceca99 , 0x9f0c52529bad50c7 , 0xfdf67bf36728b80f , 0x6518c83e37df904 , 0xb80d05e3463f36ae , 0x47bdc7a2e76c9113 , 0x25f175fdb2dc6793 , 0x49e655c252e35bf9 , 0xfb31f666a5a27971 , 0xc6b7ec1b8056bd1 , 0x7596ea92c0e66132 , 0x3f6d8813ca39ec19 , 0x8d29da52cb2d9cf3 , 0xb0fa0b4ebb0832ff , 0x8ce1e489559a3a82 , 0xa061ec6732b7045e , 0x38ba6aba7f96c3ea , 0x6d53941067f453fa , 0xae1347d900af06cb , 0x5ce512c5f287a050 , 0xae955e2f371247b6 , 0xd16d05dd2d701a88 , 0x796a77590e0538dc , 0x4c668fdfc4680331 , 0x9b4438996bc9c2d , 0x242e51346488c192 , 0x75678864746783b5 , 0x7a4f8cf4c570a267 , 0x711f8b5cf30e3e2c , 0x17765d25c0bc2f5e , 0x46a7f2abf6e33bae , 0x80a745aac92c3b94 , 0xe2e054ebc603be1b , 0x5bf4541857bb4853 , 0x4d77d40d9d682092 , 0x7cfe764b8463d0f8 , 0x7e5a1973f274189b , 0x22d3acf5f50175f0 , 0x555c222e524e06c9 , 0x838263ba56a39fe2 , 0x8192f5451f5bd6f , 0x7dbffda7b45d1dac , 0x2c94cd630ec24d63 , 0xd4c8aae87ed7f106 , 0x19497281a423243e , 0x9001f95289e7f410 , 0x5b67b7b11dd73b99 , 0x52199668b8740438 , 0x260de43926ebdb38 , 0xd0bd926cea1e3e56 , 0x80f28be662b9c454 , 0xbc177269bb2eae24 , 0xbefb6d52aea28889 , 0x3bbd6e88a1866e6f , 0x2534769d85efd2fa , 0x9e1b343ce9e2c928 , 0x2779b8ea4c2d119b , 0x6335e5d5b21ed420 , 0x4e8c99425d692fdc , 0xc7c281ef1e86b390 , 0xaa3dd2fd562e673 , 0x7feb67c7ea6b18a9 , 0x7f299282f9fded8d , 0xbeb7503918f0f5e0 , 0xb91ce6ec8ecd474d , 0xcd074f46cff446b2 , 0x7a30af84ef5abd2b , 0xbd3806784aa5dd4f , 0xabef65af9b73eff6 , 0x66e6369739c4709f , 0x932387ce05eb2283 , 0x3b897b55a66e3b87 , 0x382e4bf81bb54990 , 0xe6e2191ee20593a1 , 0x916fbb9836e3f1bc , 0x856836f9b79125ee , 0xd0b670b01fa342f , 0x8bac86c9b4bdc47c , 0x63a84bedf7b59604 , 0x64ba123050500176 , 0xfda72a179627d02a , 0xfd74f862a4f5af1b , 0xbfb9a8ff03e7699b , 0x7c63286b4347735c , 0x5227cc9a5e87415a , 0x9b0088d2fd805f95 , 0xed2b714d56da6ea7 , 0x1f5c3bbb54570919 , 0xfdfcf3cdb1ff7745 , 0x44b75001c21ad498 , 0x993ee3468be36fb3 , 0x6f7a881842c80832 , 0x4597f803b6ec4ac4 , 0x31a583b96517f50c , 0x3bfe2e704d58b681 , 0xcb9cc23610be04d3 , 0x767f3a505c63cb6 , 0x44a91a6f088d9e2d , 0x285ed3972d85d535 , 0xf7d2fef7a9eb7f9f , 0x4366973f4db9ee30 , 0x7c8528077765fd5e , 0x353a960cc5b0fae0 , 0xa63cdb89c1e52a69 , 0xc0914fc775bda3f1 , 0x3506de574032dfda , 0xcd26732eb7a1a071 , 0x279e624fab6af5ea , 0x17b336e6819ebed1 , 0x23cdbf7cfc7c05a2 , 0x7f232d3668050417 , 0xbd8d784148e1da5b , 0x5908125892a7bfb4 , 0x4bb7d6a675e69e4a , 0x7808c4f0f59f2449 , 0x3524e3041aa32e08 , 0x2023f324e00620db , 0xa7e61d65a7ae665 , 0xcde31c62b539eff4 , 0xea521f0900831af2 , 0xe4a9937fcd193ea3 , 0x5993fa90ec3752b7 , 0xe8353a06a834d046 , 0x66c90ad20d08daa7 , 0x9a05f60f29123211 , 0x87f6a015edc47155 , 0xceac839d3acbd6af , 0xa69ce08791937296 , 0x5ef439b86f7d5582 , 0x9cb37c64d4654902 , 0xede3777bc6c0473c , 0x480ee47a5fd49bbf , 0x796d91ba596da349 , 0x9a1169dbf4141752 , 0x81cb345396f31772 , 0x49ecddc6cd1f5403 , 0xc11a598d1934367d , 0x77de85d8cbd1332 , 0x994a1aaf8e1a087a , 0x163cecdffef6081e , 0xb3cf18fff414c0d8 , 0xde412abd4822ed53 , 0xf9cb2b8f8a595e63 , 0x7082825f4fb798bd , 0x3c637508982175e0 , 0x11c8b4b6d83aad1e , 0x2e31f0e5c1267b71 , 0xe98cecdf7b548bf3 , 0x148976a5958f50d7 , 0xf27e3d85d1af9873 , 0xf2f9e9014d980f41 , 0x85d461317b41cced , 0x19ff04caabb60912 , 0x4592a0600b19fe1e , 0x8b208080108ad336 , 0xc15cb2ba35f3259 , 0xb0a5f59cd326b837 , 0xbf9186ff17a9ec79 , 0x5141f107f9d39a1c , 0x36a75607d4c8784f , 0x8d8428c9c1474b83 , 0x1fc3110e47eb7ccc , 0x3bd292155abedfc7 , 0x68e3ba9f415c7ab9 , 0x961790cb581c4476 , 0xb3d97260abafabd5 , 0xd71fb850b5347dcd , 0x552b6d954a828f74 , 0x46ec4f8a1522ab48 , 0x6cca1cadbe260d97 , 0x8bcb0e93a41bb845 , 0x5ea9efd397d6aae0 , 0xdcd68078e6844496 , 0xd8ec7d97a440bce3 , 0x8374eca5ac9a3f64 , 0x7b8fe43ae926df78 , 0xef271afdf338537 , 0xe3b57b4c7c94758c , 0x6343375c39403054 , 0xa889c92631092996 , 0x3c013134ce2e001f , 0x7d814baf6a94f0d5 , 0xfd35b89cc7478708 , 0xa811b5301bb5d581 , 0xa9e811dedac5f285 , 0x95a7804c95bccd1a , 0x51180748784951b8 , 0x41f73604915091cb , 0x178ee9678f92848b , 0x386468d11bbfa423 , 0x9133a8257842060 , 0xa977c23464df1dc , 0x7aa2bdb082633351 , 0x8dc65212b2f1422e , 0xe03e0ef136140b43 , 0xe54393a9e11543a8 , 0xb921ef88c7aa79bb , 0x353dd7ec88a9c53c , 0x753997840088a3b9 , 0xe2d8ec436ad726ed , 0xad52813608753e97 , 0xe07572f12a6bcea1 , 0x363781554b05e595 ,
];
pub(crate) const EULER_TOTIENT_LUT : [u8;256] = [
0, 1, 1, 2, 2, 4, 2, 6, 4, 6, 4, 10, 4, 12, 6, 8, 8, 16, 6, 18, 8,
12, 10, 22, 8, 20, 12, 18, 12, 28, 8, 30, 16, 20, 16, 24, 12,
36, 18, 24, 16, 40, 12, 42, 20, 24, 22, 46, 16, 42, 20, 32,
24, 52, 18, 40, 24, 36, 28, 58, 16, 60, 30, 36, 32, 48, 20,
66, 32, 44, 24, 70, 24, 72, 36, 40, 36, 60, 24, 78, 32, 54,
40, 82, 24, 64, 42, 56, 40, 88, 24, 72, 44, 60, 46, 72, 32,
96, 42, 60, 40, 100, 32, 102, 48, 48, 52, 106, 36, 108, 40,
72, 48, 112, 36, 88, 56, 72, 58, 96, 32, 110, 60, 80, 60, 100,
36, 126, 64, 84, 48, 130, 40, 108, 66, 72, 64, 136, 44, 138,
48, 92, 70, 120, 48, 112, 72, 84, 72, 148, 40, 150, 72, 96,
60, 120, 48, 156, 78, 104, 64, 132, 54, 162, 80, 80, 82, 166,
48, 156, 64, 108, 84, 172, 56, 120, 80, 116, 88, 178, 48, 180,
72, 120, 88, 144, 60, 160, 92, 108, 72, 190, 64, 192, 96, 96,
84, 196, 60, 198, 80, 132, 100, 168, 64, 160, 102, 132, 96, 180,
48, 210, 104, 140, 106, 168, 72, 180, 108, 144, 80, 192, 72, 222,
96, 120, 112, 226, 72, 228, 88, 120, 112, 232, 72, 184, 116, 156,
96, 238, 64, 240, 110, 162, 120, 168, 80, 216, 120, 164, 100, 250,
72, 220, 126, 128
];
pub(crate) const CARMICHAEL_LUT : [u8;254] = [
1, 1, 2, 2, 4, 2, 6, 2, 6, 4, 10, 2, 12, 6, 4, 4, 16, 6,
18, 4, 6, 10, 22, 2, 20, 12, 18, 6, 28, 4, 30, 8, 10, 16,
12, 6, 36, 18, 12, 4, 40, 6, 42, 10, 12, 22, 46, 4, 42, 20,
16, 12, 52, 18, 20, 6, 18, 28, 58, 4, 60, 30, 6, 16, 12, 10,
66, 16, 22, 12, 70, 6, 72, 36, 20, 18, 30, 12, 78, 4, 54, 40,
82, 6, 16, 42, 28, 10, 88, 12, 12, 22, 30, 46, 36, 8, 96, 42,
30, 20, 100, 16, 102, 12, 12, 52, 106, 18, 108, 20, 36, 12, 112,
18, 44, 28, 12, 58, 48, 4, 110, 60, 40, 30, 100, 6, 126, 32, 42,
12, 130, 10, 18, 66, 36, 16, 136, 22, 138, 12, 46, 70, 60, 12,
28, 72, 42, 36, 148, 20, 150, 18, 48, 30, 60, 12, 156, 78, 52,
8, 66, 54, 162, 40, 20, 82, 166, 6, 156, 16, 18, 42, 172, 28,
60, 20, 58, 88, 178, 12, 180, 12, 60, 22, 36, 30, 80, 46, 18,
36, 190, 16, 192, 96, 12, 42, 196, 30, 198, 20, 66, 100, 84, 16,
40, 102, 66, 12, 90, 12, 210, 52, 70, 106, 84, 18, 30, 108, 72,
20, 48, 36, 222, 24, 60, 112, 226, 18, 228, 44, 30, 28, 232, 12,
92, 58, 78, 48, 238, 4, 240, 110, 162, 60, 84, 40, 36, 30, 82,
100, 250, 6, 110, 126];
pub(crate) const DERIVATIVE_LUT : [u8;94] = [
1, 1, 4, 1, 5, 1, 12, 6, 7, 1, 16, 1, 9, 8, 32, 1, 21, 1, 24,
10, 13, 1, 44, 10, 15, 27, 32, 1, 31, 1, 80, 14, 19, 12, 60,
1, 21, 16, 68, 1, 41, 1, 48, 39, 25, 1, 112, 14, 45, 20, 56,
1, 81, 16, 92, 22, 31, 1, 92, 1, 33, 51, 192, 18, 61, 1, 72,
26, 59, 1, 156, 1, 39, 55, 80, 18, 71, 1, 176, 108, 43, 1, 124,
22, 45, 32, 140, 1, 123, 20, 96, 34, 49, 24
];
#[test]
fn check_sum(){
fn hashdata64(data: &[u64]) -> (u64,u64,u64) {
let mut sum = 1u64;
let product = 6084759759023560598u64;
let mut min = u64::MAX;
let mut max = 0u64;
for i in data{
sum = sum.wrapping_mul(product).wrapping_add(*i);
if i < &min {
min = *i
}
if i > &max {
max = *i
}
}
return (min,max,sum)
}
assert_eq!(hashdata64(&LIOUVILLE_LUT[..]), (33719405988736038, 18431357061890889188, 8608577211795710703))
}