From: mdw Date: Sat, 13 Nov 1999 01:52:59 +0000 (+0000) Subject: Lots of test vectors for low-level MP stuff. X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/commitdiff_plain/1d724f3f4f9abe639889d35b8e8415b1f1bad6c5 Lots of test vectors for low-level MP stuff. --- diff --git a/tests/mpx b/tests/mpx new file mode 100644 index 0000000..0c6cad0 --- /dev/null +++ b/tests/mpx @@ -0,0 +1,609 @@ +# Test vectors for low-level MP functions +# +# $Id: mpx,v 1.1 1999/11/13 01:52:59 mdw Exp $ + +# --- Load-store tests --- +# +# The test loads each number, as both big- and little-endian, and compares it +# against the original octet version using a different method. It then +# stores the value to another octet array and compares. This is done for +# various sizes of MP, to ensure that truncation works correctly. + +load-store { + ""; + 00; + 0123; + 0123456789abcdef0123456789abcdef0123456789ab; + 00000123456789abcdef01234789abcdef0123456789ab; + 0123456789abcdef23456789abcdef0123456789ab0000; + 80f8c5606bff51bac932859a4fb6331c4023b32b65cd95f4edc1d1c919fcc078; + 522f8b1de257972a25ec49c9ff56340e2684e847ef2fa4d5714d7c8d454e90f6; +} + +# --- Shift tests --- + +lsl { + + # --- Simple sanity checks --- + + 01 2 04; + 01 4 10; + + # --- Copy shifts --- + + 01 0 01; + 0123456789abcdef0123456789abcdef 0 0123456789abcdef0123456789abcdef; + + # --- Single bit shifts --- + + 01 1 02; + ff000000 1 01fe000000; + + # --- Word-size shifts (assumes 32-bit words) --- + + 0123456789abcdef0123456789abcdef 32 + 0123456789abcdef0123456789abcdef00000000; + + # --- Random tests --- + + bcc239a4d4abb0e831dd8a0ea6115a04 72 + bcc239a4d4abb0e831dd8a0ea6115a04000000000000000000; + + 2b355f77dd25d38d36f4491e99953632 16 + 2b355f77dd25d38d36f4491e999536320000; + + ee07dc8438368ea7ec21bf193be9aa61 5 + 1dc0fb908706d1d4fd8437e3277d354c20; + + 509780c8ff8277649e8f2a62b11972f7 72 + 509780c8ff8277649e8f2a62b11972f7000000000000000000; + + 0afa722d181a44a2472ec3a8831d9232 64 + 0afa722d181a44a2472ec3a8831d92320000000000000000; + + ddaddd8f1f959603695c0afb1a438182 25 + 01bb5bbb1e3f2b2c06d2b815f634870304000000; + + cec1f22febfb47811a321daac9446798 63 + 6760f917f5fda3c08d190ed564a233cc0000000000000000; + + 797589c9cf931930f6005eb774e7023d 29 + 0f2eb13939f263261ec00bd6ee9ce047a0000000; + + 9aa77a79a9f189b96b2dd657efe3b64f 24 + 9aa77a79a9f189b96b2dd657efe3b64f000000; + + b6c14bf06adf6c54ae0cd644b7cd5665 67 + 05b60a5f8356fb62a57066b225be6ab3280000000000000000; + + f08c1a2da72f8d1cd459a95d1abb37c1 99 + 078460d16d397c68e6a2cd4ae8d5d9be08000000000000000000000000; + + 62eb1217d11d32e36388c2a0a793396a 78 + 18bac485f4474cb8d8e230a829e4ce5a80000000000000000000; + + c6f42d4e8961489e9f7da8c23322be61 101 + 18de85a9d12c2913d3efb518466457cc20000000000000000000000000; + + 21e4331e965b142bda426a86267c8b33 31 + 10f2198f4b2d8a15ed213543133e459980000000; + + 0b0a787510b01537010ef5f9d23fe3c2 54 + 02c29e1d442c054dc043bd7e748ff8f080000000000000; + + 4e78f26838f7173f8f56f688cc45eb22 90 + 0139e3c9a0e3dc5cfe3d5bda233117ac880000000000000000000000; + + 0788ff83ce364e53c95203b68898563c 82 + 1e23fe0f38d9394f25480eda226158f000000000000000000000; + + 5824b46fef8fa064f9b0c4a54ca76314 68 + 05824b46fef8fa064f9b0c4a54ca7631400000000000000000; + + d00663fdb9fb48f0d5a828c590a5e545 115 + 0680331fedcfda4786ad41462c852f2a280000000000000000000000000000; + + 5a075e7730281f73721aff78bae971e1 62 + 1681d79dcc0a07dcdc86bfde2eba5c784000000000000000; +} + +lsr { + + # --- Simple sanity checks --- + + 04 2 01; + 10 4 01; + + # --- Copy shifts --- + + 01 0 01; + 0123456789abcdef0123456789abcdef 0 0123456789abcdef0123456789abcdef; + + # --- Single bit shifts --- + + 02 1 01; + 01fe000000 1 ff000000; + + # --- Word-size shifts (assumes 32-bit words) --- + + 0123456789abcdef0123456789abcdef 32 + 0123456789abcdef01234567; + + # --- Random tests --- + + 5e16f1a9af75c78c1b59fd8fc04ddd9c 33 + 2f0b78d4d7bae3c60dacfec7; + + a0bce1b785e7c8e67c4402bdff0ce280 61 + 0505e70dbc2f3e4733; + + a5973431b4be31362e95ab483ed9b3ba 21 + 052cb9a18da5f189b174ad5a41f6; + + 823ab9448d831601c35e46eac564b0bf 86 + 0208eae51236; + + da5f73cfba0031e51fb4b379af1cf245 89 + 6d2fb9e7dd; + + 17e0aec0bad38775e81fce8ae128b17b 48 + 17e0aec0bad38775e81f; + + 39b8f703b08c453f726b41119198d44f 110 + e6e3; + + e3f998f9fc256ffaac02e56d7b8ea93c 78 + 038fe663e7f095; + + 617cb59206909241eaccca7c94740412 89 + 30be5ac903; + + 76ecfa69b18b41373011f2ef45dc3466 31 + edd9f4d36316826e6023e5de; + + 7ccb864e1f0f8ed89718664670f40275 44 + 07ccb864e1f0f8ed897186; + + 50f626568657734cdf0f967dcf49fbe4 55 + a1ec4cad0caee699be; + + 688c4006c4e3de849b39f507668e1972 35 + 0d118800d89c7bd093673ea0; + + 634b9be8fe592427f0908d876276ad9e 36 + 0634b9be8fe592427f0908d8; + + e8a61ffa8f3a38f58e456ba733d9c04c 71 + 01d14c3ff51e7471; + + ec193ba3b8f943b51a0d9c07cbbc8ef5 74 + 3b064ee8ee3e50; + + 9bcddc16266b3eddd8cdc6d6308782a3 23 + 01379bb82c4cd67dbbb19b8dac61; + + a2a882380b875b1d7f5be67277ed9f89 61 + 05154411c05c3ad8eb; + + e47aad1d2f5562c9c24c665f12284b0f 38 + 0391eab474bd558b27093199; + + a7783518dd7185c0462bb185e4094644 58 + 29de0d46375c617011; +} + +# --- Arithmetic tests --- +# +# For each of the fundamental operations, there's a sequence of simple tests +# which ensure that the functions are working even slightly correctly. Then +# there are some tests aimed at limit conditions in the algorithm. Finally, +# some random tests dreamed up by the Perl script `mpx-gen.pl' are given. + +uadd { + + # --- Simple sanity checks --- + + 00 00 00; + 00 01 01; + 01 00 01; + + # --- Carry propagation tests --- + + ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + 01 + 0100000000000000000000000000000000000000000000000000000000; + + 01 + ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + 0100000000000000000000000000000000000000000000000000000000; + + 7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80 + 80808080808080808080808080808080 + 0100000000000000000000000000000000; + + # --- Random data tests --- + + 44cd8885b07bd0da90c0936c150b12120f63cfa1cb4aadc38a272acd37213d7b + efc5009f41d17ad2920d3fa71852b928b589c980d377445e9f6e2cd69069527f + 0134928924f24d4bad22cdd3132d5dcb3ac4ed99229ec1f222299557a3c78a8ffa; + + c73052fa5512dfb9eb28346277591dac7c48b71259f2a7c99baebb676562572c + 92aa26e8bc06a1a82fd50ba72e2853ab710abecafd6694981450007ab357a646 + 0159da79e3111981621afd4009a5817157ed5375dd57593c61affebbe218b9fd72; + + 29974053a6a851f0f91c21854515fc5345f370f7dce64afc2fbce307f217181c + af596f5502c146fbdd6881237d7e76c272e7b94ece044afec02e05b3451ecff5 + d8f0afa8a96998ecd684a2a8c2947315b8db2a46aaea95faefeae8bb3735e811; + + df49df444cdb33c514f048414aa0ce79727a33ca9edfb3ec70a83c37d12db9b1 + 7798f5c37328888819d0c9647098dee31211adb1f1619d6209da99db08528d7f + 0156e2d507c003bc4d2ec111a5bb39ad5c848be17c9041514e7a82d612d9804730; + + 9f79382bec6690faf222e274b103b0c3d41c3b322f5434ecbdad4883361f0ed6 + 98470184ae917fa0b361156564c62839e2646b11b8a0fe754d47f98466085afe + 0137c039b09af8109ba583f7da15c9d8fdb680a643e7f533620af542079c2769d4; + + f0351c4eba4c71674ff8cf26dd0dd5ff40d26dcb03f582812f3dbd237ecaf66f + 0012bdba5f2f22ae28f1d405ffaa043f7d710a80668d0296cabfba4989b0b889 + f047da09197b941578eaa32cdcb7da3ebe43784b6a828517f9fd776d087baef8; + + 06f706cef447e3fdb36f5604707b3e40db808c6641f07ac1fd539fda89e7a48f + dfab5dd3f241d0a5b127aa21a2e8617e69eee5aadf5f6bddb30bb73cf35bcbd2 + e6a264a2e689b4a36497002613639fbf456f7211214fe69fb05f57177d437061; + + c3e6631ee694b69218154d10f19626362f71b29458b96e8a5348a35a1d981fe0 + 7e83fe6517b4f730ca4541bcdc67f30cd9a5a0315f0ebcb2565f0d73f72d5476 + 01426a6183fe49adc2e25a8ecdcdfe1943091752c5b7c82b3ca9a7b0ce14c57456; + + 92b69d7e5cad1ff6271375b532c5c37802ef579375490104b0ac13d1af93bd41 + 4a5abfa608df9d2ff212e425d7a79dda97f56d0c3f6f10ef1b24c1cab77e0c01 + dd115d24658cbd26192659db0a6d61529ae4c49fb4b811f3cbd0d59c6711c942; + + caee73c8e35cf5dc4c11e0b70078e798168d9a70d0a4f18f7d511c73c99a8e93 + 89025c6d5f514aab622a6262a34afbb9d89629a93a1b39b86c562c36f0bbc97a + 0153f0d03642ae4087ae3c4319a3c3e351ef23c41a0ac02b47e9a748aaba56580d; + + 89fdfe850befa6d52d66d310703853298ba0db3ed2316569d1d5784e070ca391 + 0aa2171591bdeabf23bed094f724be82c499c197ca27009cfc78ea04858d958f + 94a0159a9dad91945125a3a5675d11ac503a9cd69c586606ce4e62528c9a3920; + + 5587392e6ac948f8526165f810ece85e36de8e100c0dfbcd0aecc4ca03242958 + ab6287162bd00f7e31757641615fa0973d2ea84a3ca4184690dc1093013aecad + 0100e9c0449699587683d6dc39724c88f5740d365a48b214139bc8d55d045f1605; + + d5c8a06c311bb9970caee9bd4b7f58189dc3e221078d0d6a45968d0cb608898c + d02af80145b2995160820fab0267c49f2ba6c13334ce9d79652a851c320fa803 + 01a5f3986d76ce52e86d30f9684de71cb7c96aa3543c5baae3aac11228e818318f; + + ca33cb876803ee0bbdfce0323fe5e16696be8c6aec737e291cdc109a04adb1cf + e17c574a8045553e413570811b51e8b110741cfde89b26057836a07de3514cc5 + 01abb022d1e8494349ff3250b35b37ca17a732a968d50ea42e9512b117e7fefe94; + + dacd4ef6e248346fafb0d415af59679ce7bfcbca350b54891754736e691df743 + eb453ace8d6f3d3c201152cf6aba6c5279381daf4471395bc5adca2fcac172b5 + 01c61289c56fb771abcfc226e51a13d3ef60f7e979797c8de4dd023d9e33df69f8; +} + +usub { + + # --- Simple sanity tests --- + + 01 00 01; + 02 01 01; + 05 03 02; + + # --- Carry propagation tests --- + + 0100000000 01 ffffffff; + 010000000000000000 01 ffffffffffffffff; + + # --- Random data tests --- + + c41ffa68b595f9a1928b6d88b1f090e1f530a68fabd0d984a428e37e757ef039 + 9deba253809cf51228639ada532bbb495b62d90632b28bd7db6f5551ed468b8b + 2634581534f9048f6a27d2ae5ec4d59899cdcd89791e4dacc8b98e2c883864ae; + + a0b3854388ab68fdee71148082d258cb2ef472317304e06ab86216fdc7317067 + 2d3a9812a3d42524754309169110bed7485b9ba7027e91aff7b481ab44651b72 + 7378ed30e4d743d9792e0b69f1c199f3e698d68a70864ebac0ad955282cc54f5; + + 3dc1ee5c9378abc228f30a498e56286289eaafd22e886c375a0f68a1cc4f2d0a + 111c66a4951266bd05710693c82ff5511aa423482d9080879fe8296c38577649 + 2ca587b7fe664505238203b5c62633116f468c8a00f7ebafba273f3593f7b6c1; + + fe9b804e286cec9c9d692bfda5d37fbb49c352e02bdfb864153e40024e041e4c + 2deed6644f8deb9e73317c8e5f3ca8821675449696678dd8393585dbed0fc41b + d0aca9e9d8df00fe2a37af6f4696d739334e0e4995782a8bdc08ba2660f45a31; + + ac29a21eface012500e45ddcadec251000b2862a08e19025e5179c2993fc183f + aa30c9b372d02ce22b32e237dbc98e4862148d7529555b651c038776437b60ee + 01f8d86b87fdd442d5b17ba4d22296c79e9df8b4df8c34c0c91414b35080b751; + + c7ee50b4057c5d6cba06edbd688d1e6eb39325f9ac8161e8c7aac219f6ae56bd + 9ca672a123d00dddd6fb9a3f88b8ad3c4bd236f85397e11a41a43438528af6ee + 2b47de12e1ac4f8ee30b537ddfd4713267c0ef0158e980ce86068de1a4235fcf; + + 8d659c5d85060904a8fd896e66893d169345e7854a5402a94ed7f2855472c1e1 + 0510e560d0206aac7ea1f484c668ffceb00a07d1f1046d7d5ff9d448377c803c + 8854b6fcb4e59e582a5b94e9a0203d47e33bdfb3594f952beede1e3d1cf641a5; + + aa61e8465ac278e26d74a939726545fa734b0df8a1f9fb55b58f223e61a4970c + 0680536142cc43af40ece8b3522eadc57ababe1bb4b971694894a8aa393fb63f + a3e194e517f635332c87c08620369834f8904fdced4089ec6cfa79942864e0cd; + + 8155e4dacaa29374d584cde1139b0c0f02bd3bfbb8408747017d59f97ace3cfc + 2320d7eec36a6298ef2f7a02cb8712cd444dc9fd8e51458fce9f89496dc54590 + 5e350cec073830dbe65553de4813f941be6f71fe29ef41b732ddd0b00d08f76c; + + eaadcec668ec474fab18c6e1aca9d048eee832d90129af092394f11131eb4e1c + 991ce202092952b5421896efc26637b04f6a8a5194395ab7ce4cc9ff37171cd1 + 5190ecc45fc2f49a69002ff1ea4398989f7da8876cf0545155482711fad4314b; + + 610a9c737e8b0854d4362bd5dfcba7b73bfb05ca0082efcbcf3b08b41f051281 + 0faff48e3afde20f330ee412da8cc91588cfdf8951ce5421095dd62962e8aa72 + 515aa7e5438d2645a12747c3053edea1b32b2640aeb49baac5dd328abc1c680f; + + 344c313534bf5212d0f7bddb2e7d674c9b83fbbf372248f5b6aa2e481aa1f94e + 1fc4da8000e78d1dde10a4ab0b37bf8b1d1e1caf23b32688be946139916f72b1 + 148756b533d7c4f4f2e719302345a7c17e65df10136f226cf815cd0e8932869d; + + d4ee443b04b30d354b9573a6a1cf466d1c8d7921c65cd6af6a8992d8bb11578f + 11a170c467156fd13097883d5a0b5ca0cb4d460c0439e3b5e80eb2e36d327e7f + c34cd3769d9d9d641afdeb6947c3e9cc51403315c222f2f9827adff54dded910; + + 11e03f0bfd28ee2435aebd8873d43f09b98f4acc8db9b83ac4f8db8bef215500 + 011a9975f91de9e3260dc09952c517b795e54f4012fe6febac0a40a1c7f746c9 + 10c5a596040b04410fa0fcef210f275223a9fb8c7abb484f18ee9aea272a0e37; + + 54e22394a26744c5d192f1c002531b120a4966b18cc77db523dce28971ca34c5 + 43bffa793fc043b0226a4e2cef6f615a0fb72d54a64261cc285b5e2d6695e8aa + 1122291b62a70115af28a39312e3b9b7fa92395ce6851be8fb81845c0b344c1b; + + befad4be8c75125466021b8682d4a2bbd79cf28ea0d1225fa59cd6263ca76dfa + a241b82eb7cb831ece9ea45073460b4be3fed984cffce37498ba9bd46109cf04 + 1cb91c8fd4a98f35976377360f8e976ff39e1909d0d43eeb0ce23a51db9d9ef6; +} + +umul { + + # --- Simple sanity tests --- + + 01 00 00; + 00 01 00; + 01 45 45; + 45 01 45; + + # --- Random tests --- + + 1d84890139ea943aaff05e8050875ad3 + 4d4fa99f86fef735264ed3d4fc9c0019 + 08ea0caa89201aafce27f5cf8c2d0babe4add1023cdc5545522caa26e9cbde9b; + + a29dc17954d2401b8c523e6846b8801d + 95d8c5814661dbbd70e984eafa1a389c + 5f2f842c60d41962701062926eda9bc7c94b462db3f9f2f1bc85415ec96669ac; + + 7d8d16b1fdc261a8dab34a97a67b8b7d + 978d1c4cdffec143d9447d05763c7bf3 + 4a536cf99eef77cd30a115a77cdb8d9b47a84bc929a8ecc8b50864a1b29676a7; + + 74343b6d685b9973642a4c31e7211957 + 7799afe6dc99ef626ab3304bb6b3082b + 364a0aafdf95e4a8b3b337d1ffceff866eec36193aac68278ffa3c406d2ef99d; + + 0a09e7fc90bec4eb64cb10e4e75c6ad7 + 5dd5a810d092d68cc0371b2a9d5423a7 + 03adfa1beec3c996e9268e0cf27288ab3c88d6ff24b056d959661d1379711741; + + 10abe37b5f9c4ae712a1bb25521b18ce + 73663a4db4fdb6521651f41a78487289 + 0783df7910220f62eccf06aef2f0b36ee91947a8884851e7d6726db48b7c023e; + + 75142f87a6a86fc67402d57e96da6d20 + a24f01ef1d073eeb4284eeab096b6c7e + 4a3ae830f1a185b77964d7ac1827ceb576496c459d6fa43f5487db7421eb35c0; + + a53985bf9e73e36b24ebc5af72f9a33b + e706a52c88d692ed64ec71a09acb6040 + 951b31a3dbe0d2f49059f52f44672853ba121c666438696f85d49f004967eec0; + + 086ffb56c05db6a7f060d949b2fe21ff + 131f72a18f76808812702b7a7c79e684 + a158fe10dc686014a9711c0bd7458b2457c389664342d02612fbec331ba17c; + + 773ca7cff8e378f0d3bfbe137fe4afa4 + b97782907edfc90839902cb40a267981 + 56627f4766f72b93c37746612b8de68c1a0b36c2a9a6cde2d9959965039905a4; + + 6186ed3d76c5e6c016d0fc1ccbb96abb + c9fec3054270bed526231f3df361ca54 + 4cf3fe706ce56b18d083f35c101ee86ec6d32de26841d4d79877b75318e9935c; + + 030a3d74ce79826cff754fc113dc6e53 + 96ea50f14e74041715ca6b2b9a46889d + 01cac854ae86c8634d704250d001ae3b8225197da1715fc946afbd8b617dc0e7; + + df9c25f4901820bab91929b121f73b41 + c251d71d0403b22f7688efb8f9c7a7d9 + a9bbd110d3a63d38bd48d3e34d1a89c48f5959d11e1b52bfadce09d75abfa119; + + 58e0b78e3996fbe7369f42459abfa30e + 61349cb4f0ac16ae4caa4070a6d863fe + 21bf6999ee200e26c3007fa0d2a1eaf0a6d0046fb5cdc932e19e57744e0231e4; + + adb6347cc0f3ef1d6674ae34c9104a55 + d6a34db1ef09742382ac6acfb4408b62 + 91a51f9c3fb21ab593d5afe9bf5207ca76572ac09c8be9caabe25e7229d89b8a; + + 40b8c873e24afb21d82214f61ed54be0 + 63bff45ebfa43ca544a0889e4b0a038c + 1937fd2a7254468ffb3ad85e7936c055fdcc5877ee892ea2c97bdec4f3491e80; + + 0c48c20a8df571d8355bab32c2e04fea + 446bc105015217f874b25d5e2ce27238 + 03487f36ffe480457b9dc246ba542fed0eac52466650edb4feb1ff91493baf30; +} + +usqr { + + # --- Sanity check tests --- + + 00 00; + 01 01; + 02 04; + ff fe01; + + # --- Random tests --- + + 7b94927f1dc0fbb34cb3c0c604511e83 + 3ba81affdd67160ffb0cf4f97322efccd521a69f46696064ce84554c6a88f709; + + f15f0fc21e5e6a514ca7834b8d3e77c9 + e3941ef83038a10115d33778cf1b460b302b02ef9c1c08ab9f5dc4f7a7687bd1; + + d3998c40e8ea19ef4fa5c483b964b327 + aee6794bf25f5dc8d2ac51f0575c9ad1766e0f183d633adc77ebc474d1d78ff1; + + fd4c6079bd59baa679e1ac3c952dc5fc + faa00d7a0ce7501bb69d56439b259a426ec1fb7b37abe93a0365bec68bb5d010; + + c23e9dbaf7cf571cf0e9c1445ee7049f + 9362f660275524f7692cd1b9df042aa56f4ae0d7a51d27536c4eaa561b075ac1; + + ecd70f464c7093e2ee74fc2aa0dfbcf6 + db1d38d445ed4605e48cbacabf5225795ac9b0d92771e8465176c076400e3c64; + + 62f727e3f5eca344795ed878c15a1a68 + 264229288864fb8fa2b6066acfe65f3caad90b410bbfa19f97713d0763d94a40; + + fe9fe42b9b88a2be128ab395a96635b9 + fd41aca3c22c0b24552e3f88d666ef03ec7f1ec1116d86bf7fa75b171cb21fb1; + + 2a3e9ab5ec12067bd1e49276233d482d + 06f89a12ff13a4291fd40b9cb6c766b9c7796fb9f65d42f671d3ade3c7cb57e9; + + 5822befe400521765d0658d61ba2fb79 + 1e57e806160aebe8fb41bc8e51d80772cd93e76baac0a1f7f807671ac22a7f31; + + 279469187b9301a94ff00d401725d114 + 061e8e0f251ac43180b35cee5c4e95748594902a97ac84bfc9bc6327b289a990; + + 50eba27574d0144c1d0873d8dc70bba1 + 19941e6d13bf60702b12b3c36dde5958a0af3c1fe1cc6ee838b139d16e649b41; + + d5ef817ea1be4b65ecebd00bfbf5cd31 + b2c86d8fc519886dca10a1e77cf5874148315b14c48be0421c812e967a418361; + + d6787d5da30d4a031c7dd2f7bba1a11a + b3adaa4e51c7a7ad7055cfb219624209fd5140bb3464c541cb1d0f940415b6a4; + + 650b6ef5bd3ef19916d969a252088e74 + 27e20610a08a08916d2f82e7b17f2c2ea752b1ca997fc7dc62a0ee5b8684e490; + + c265ede35f7e35225fe5350a3afd161b + 939ea5222f336ae03249d96bac34e5e1e7af5725ca07a9330ad29054ef46a6d9; + + 6ee04a9584bcef1480526180d336fffb + 3005849b197570290520e5ff80f19517838a4975f217d952900be6c8bfda0019; +} + +udiv { + + # --- Simple tests --- + + 09 04 02 01; + ffe3 01 ffe3 00; + cdef fedc 00 cdef; + + # --- Random tests --- + + ccf89f84f1d372a1a22c3110057ea5029ed41f80b228b4d60f715a2c762aea43 + 8ac7135d39 + 017a1b1251a33756c0394200aaac9b92c34e3941f7376aca98fcef4f + 1a570ceeac; + + 70b42f42a8009b7487ef72d92d953e7875f504931a51fc8a12827526351074a6 + a4e86da483e12b735305a1e943195f391ef2546fefde827154 + aef59897fb0e23 + 54013b962521a1f3a188122c466499d2361b694091fdac5e2a; + + f34ad29dc7c79d103de95f949f7cea0bb281fb9c449d5d04f91bc1720bb19ffe + 729bc43939d47622340ac2b1f5ce6377ca00bb675dbf607881d3843372822fe4 + 02 + 0e134a2b541eb0cbd5d3da30b3e0231c1e8084cd891e9c13f574b90b26ad4036; + + 91ec8a90dce0998a829f7e1d14a19d67fbdc385e900499a4454e8b2cd75a8868 + 13f823f492ae76312c + 074eb2dee8aa8a051072fc85cda9b0eff449112b6814d00c + 0d9de812f2ea6c7a58; + + 2eead8eb14366761116edadf05e5158e1bfa3b083045cfed87f667de43502671 + ff5d4e35c5b04733 + 2f08bd1cf2e4f98dd3499c68d6d3964b24c9e439bde5719a + fa8e5da73038cec3; + + a9708c69513c742bceaca8aabf5346e8404cd0a2bf349d75d8a961780b6b06b4 + 921d2ccf92589e3f0048fe538ee794dbb7379aecd410c57d713e89dd + 0128de2fd4 + 18a1dc9645456613f27da18841d006b1a1238b82d8cb4a28b2ab48b0; + + 38c227704fedabc6510a9acbe75b7e4bfe28f8fd8f042056664580576254fd9b + 250c66 + 018831895ae3e9ad0e8648cebc387b8379e4bf897b25d18d77858ea91905 + 0fc99d; + + 827a593d2b359870f364c6aa20a5725df0e3cc3c84f072188b856dfdbb920e3e + 687b + 013fb30f46f66f3d85e29fbae0d5389df15d587cd9ece18e16d50c789d0055 + 5d67; + + 681f8273f0116c8a7210c79ad77eaa87f3f96b8178edf46c0a3be80b82632feb + b15e72c3cafc36dbc3d1b2427b3a3574a5 + 964868d951607b1ed391705aa3d9ef + 1cda643b01015c91184b150a6d938c6ce0; + + f93e69eeb878e055aceb9df3f0d3920d3a1d9dbd3cc894b0251ca8acbb3f40b5 + a9a33622848ccf6f29c260fd556d3772 + 0178224081d3eb75b2422bced0f03ee8be + 930cd441adbbb8db02013a2e0c54ca19; + + 8e458afb2147921fef71189dccc20dc6b6cb2766460599cd3b84bf69094ee098 + 6b93b5b225d4a297ed3f64af4d2b661852cd5f + 01529004c1b96fef630ad9ea8d6e + 668c578a24484fe7b96f434c2bafa9bac74ec6; + + 92b4756ef93bfae27e96c9c1e68b46aeaad82f65ba779ae36c34e008233891b6 + 0724e6431fc8c1b592839c1dc94ac8a17a2e5cf1c83f5efc20662059f8d6 + 1488f6 + 679029a6e071fde2065524719e8b24e29452cc17d5acbcf5adcfd9c412; + + d9f36f886f9e1971fd3c070a0156282803a733f747f2ec9df7c3a2172fe27808 + e8914686aab784e6bf8ee815b610195e4411a637fd442fc1e646f1 + efe925f08b + ed1ee96dac1ff9131c231eb19fbc2d033f9fc8f4fe886b83032d; + + dc283159b054eaee94a941d3c075f1231c992101ee17d7abea233125fed5efdb + 2034ae741f9c09c9dedc8953cdac7067ce7256e54902d06c34f66a09e5460705 + 06 + 1aec1aa0f2acb0335b7e09dcee6b4eb445eb17a23806f522ac5cb4ea9f31c5bd; + + 8bd46fce7eb788108fd223cf2be26ac36e48ab048fb622ec056e87efda1bab65 + 1a336ed2bc7e628ea231ba849b7ef2e429f773e01a60e688e8d5620380c8 + 05563a + 0ecee92e7189260c0b4b541fcbf2eea8c4a6822f1ad940072e98f4254e15; + + 049a44b4b7e4fca97415cb5bf2da86d15fe572cd5e5be03639f7b0730800960c + dac151bfbefa33d3c68fc6a0159700fa0ace5866 + 0562e0cfbfd280e5c6d15e2e + a27eb3df5b333ae2a1368bb64187357a43313fb8; + + e0ef0f2eee0cbfc761e1eae2c4056c9dc067194f56584c47396c24d791fcb171 + c0a0dbcc60a22e418d1106927da452e4bda23a16ee814f5ba626eca3d75e + 012aee + b9c6ad8e1f2812baf3682193555a6afff4dea36409aec2ce5d30d8f70c0d; + + 9097d696bbe69c0cb38186dc7fbc400c7325adf453026dac0392960e24dae8b5 + be4c2ca5e8395869bf35e97c75f6ef + c283fc9af122375dc1c7abac24f0267b3d + 4be3e17c0d0c7b8fa0300017a03cc2; +}