Skip to content

Instantly share code, notes, and snippets.

@LiarPrincess
Created October 31, 2023 13:22
Show Gist options
  • Save LiarPrincess/54bbaaf3589e55ee25783fe9f6648c55 to your computer and use it in GitHub Desktop.
Save LiarPrincess/54bbaaf3589e55ee25783fe9f6648c55 to your computer and use it in GitHub Desktop.
GeneratedUInt128Tests.swift
// =============================================================================
// Automatically generated. DO NOT EDIT!
// To regenerate: make gen
// =============================================================================
import XCTest
import _TestSupport
class GeneratedUInt128Tests: XCTestCase {
typealias UInt128 = DoubleWidth<UInt64>
typealias Word = UInt64
// MARK: - Add
func test_add_1_by_1() {
self.add([0xf456188c2cb647da], [ 0xd0f1ece13b980dd], false, [ 0x1, 0x165375a406fc8b7])
self.add([0xa39301133aa1651b], [0xc8f0dbe1a5921cf1], false, [ 0x1, 0x6c83dcf4e033820c])
self.add([0xda9f862f0aef1c20], [ 0xf9286d0c44c18d7], false, [0xea320cffcf3b34f7])
self.add([0x71ff48e580de6788], [0xfcc9142fcd0c12a0], false, [ 0x1, 0x6ec85d154dea7a28])
self.add([0xc94e7e911b613f0e], [0x16a56cb2ab65b79f], false, [0xdff3eb43c6c6f6ad])
self.add([0x93e5a2aa56b158f1], [0x4001ad585e8b97c4], false, [0xd3e75002b53cf0b5])
self.add([0xed35de9dddb11a67], [0x44399883e75d6d1f], false, [ 0x1, 0x316f7721c50e8786])
self.add([0xfee5012e7b8f902e], [0x6c13d9e3dc12a58b], false, [ 0x1, 0x6af8db1257a235b9])
self.add([0x67ed4d702a713039], [0xcc79c141f437d754], false, [ 0x1, 0x34670eb21ea9078d])
self.add([0xe34225d9856ba566], [0x6cc9eea85a7cfb41], false, [ 0x1, 0x500c1481dfe8a0a7])
self.add([0xbeb17e55b63c4524], [0xa9eca85dbab01c0e], false, [ 0x1, 0x689e26b370ec6132])
self.add([0x5dc9015bac6375f7], [0x86f59c03afc5a3c2], false, [0xe4be9d5f5c2919b9])
self.add([0xb7767bcb66407b6c], [0xa0c2db9da5a39646], false, [ 0x1, 0x583957690be411b2])
self.add([0xb14f0c3e22a9e26d], [0x4af385ac1e2087f4], false, [0xfc4291ea40ca6a61])
self.add([0x3f308f0a5552f977], [0x28aa84e220e4c98e], false, [0x67db13ec7637c305])
self.add([0xdc9f97c4a84fa213], [0x80777ab15136c667], false, [ 0x1, 0x5d171275f986687a])
self.add([ 0x84182b00dd17bd4], [0x11e4c0adb5462907], false, [0x1a26435dc317a4db])
self.add([0xf715551f0c5b24c9], [0x21e69a2c603823c0], false, [ 0x1, 0x18fbef4b6c934889])
self.add([0x2b1ef9f3e94a512e], [0xa0b3385e7e4681c5], false, [0xcbd232526790d2f3])
self.add([0xb97f9779280d014a], [0xe1ddc9e3cf790d1f], false, [ 0x1, 0x9b5d615cf7860e69])
self.add([0x5149db34ef71870d], [ 0x9f9745a497639e3], false, [0x5b434f8f38e7c0f0])
self.add([0xe2fa02672ef59114], [0xc03157367ce7794c], false, [ 0x1, 0xa32b599dabdd0a60])
self.add([0x9deb384a9b3aaf3e], [0xa5be65a6b6bdfced], false, [ 0x1, 0x43a99df151f8ac2b])
self.add([ 0x8fd3218725cb136], [0x802cbaa4b696b51d], false, [0x8929ecbd28f36653])
self.add([0xce48fc639301ff80], [0x2387dafbfff804c7], false, [0xf1d0d75f92fa0447])
self.add([0x393e8aaaef907f7c], [0x60fc3a062dcda978], false, [0x9a3ac4b11d5e28f4])
self.add([0x175cd9ddc05be0ca], [0x5c8935a449864684], false, [0x73e60f8209e2274e])
self.add([0x75e3a4f971c5480b], [0x7aaaa4b3d5176cf1], false, [0xf08e49ad46dcb4fc])
self.add([0x5c41c5bad28437a3], [0x8e981c552177fd60], false, [0xead9e20ff3fc3503])
self.add([0xea7cae2333eef071], [0x96e0ab5373baf929], false, [ 0x1, 0x815d5976a7a9e99a])
self.add([0xd9e5d4a39b13484d], [ 0xaa6ef1f34488421], false, [0xe48cc3c2cf5bcc6e])
self.add([ 0x338df221edb22da], [0xc8c256f1a0154388], false, [0xcbfb3613bef06662])
self.add([0xdc034959ca5f5d15], [0xa4fb425b69a0079f], false, [ 0x1, 0x80fe8bb533ff64b4])
self.add([0xc2516481b5adfa15], [0x592d03638e487bae], false, [ 0x1, 0x1b7e67e543f675c3])
self.add([0x613d4eba97300860], [0x206d04b162c80359], false, [0x81aa536bf9f80bb9])
self.add([0xa2fe67a643666c53], [0x701b62090754560a], false, [ 0x1, 0x1319c9af4abac25d])
self.add([0x5ae1238cd1bcc45d], [0xc278bd2950d11044], false, [ 0x1, 0x1d59e0b6228dd4a1])
self.add([0x920c38daec1ab06c], [0x9b606ae15b0a6862], false, [ 0x1, 0x2d6ca3bc472518ce])
self.add([0xd41aa52c62f46280], [0x4fdc08d148336185], false, [ 0x1, 0x23f6adfdab27c405])
self.add([0x7324661914c03589], [0xec9b3c4d06a5c429], false, [ 0x1, 0x5fbfa2661b65f9b2])
self.add([0xa9f25946a9de6750], [0x1d5d96bf87fce6d1], false, [0xc74ff00631db4e21])
self.add([0x205f556dd03bc552], [0x6dc349d0dcfe6234], false, [0x8e229f3ead3a2786])
self.add([0xe16ec2f195e4cfaa], [0xc5d5da88660c581b], false, [ 0x1, 0xa7449d79fbf127c5])
self.add([0xb58d85636e8315a8], [0xcff6a79b69fe63d7], false, [ 0x1, 0x85842cfed881797f])
self.add([0x64c0ffeb2c3ca8b8], [0x182a0e808370076c], false, [0x7ceb0e6bafacb024])
self.add([0xf5742adc6b1cb462], [0xe82471c2c02ce558], false, [ 0x1, 0xdd989c9f2b4999ba])
self.add([0xd2f9f6c3373a3719], [0x7eb311f7e29ae0c6], false, [ 0x1, 0x51ad08bb19d517df])
self.add([0xc0ad86b658ac5e39], [0x6cbcf1028f7b5d9e], false, [ 0x1, 0x2d6a77b8e827bbd7])
self.add([0xb261197cfc5b6435], [0xceb0459d547031af], false, [ 0x1, 0x81115f1a50cb95e4])
self.add([0xf821aaca7b9986da], [0x4552ba1330519fdf], false, [ 0x1, 0x3d7464ddabeb26b9])
}
func test_add_1_by_2() {
self.add([0x17fe72a757d56a3d], [0x873b4471d4ced0bf, 0x8def9047d2a15c2c], false, [0x873b4471d4ced0bf, 0xa5ee02ef2a76c669])
self.add([0xa2f30b5a00d9a9ae], [ 0x4d742ae543660b6, 0xbc9ddd86926d1cbe], false, [ 0x4d742ae543660b7, 0x5f90e8e09346c66c])
self.add([0xd0a872cebbc324af], [0x522e01f34c1b3775, 0xcec89929a0bfe72d], false, [0x522e01f34c1b3776, 0x9f710bf85c830bdc])
self.add([0xc03cfdd4c2dae7b2], [0x479c14ca809b0522, 0xbb27e5601f5d433f], false, [0x479c14ca809b0523, 0x7b64e334e2382af1])
self.add([0x1d0455c83b8ec122], [0xbd6b7eadd872b8c8, 0x56eb83be70eb10cc], false, [0xbd6b7eadd872b8c8, 0x73efd986ac79d1ee])
self.add([0xebbfc5a5f80c6304], [0x551f6bd3bf45c482, 0x23c74e829a32beb9], false, [0x551f6bd3bf45c483, 0xf871428923f21bd])
self.add([0x2238500e05ca528e], [0x148c2897d0a4264e, 0xbdcf12bb0777d4c0], false, [0x148c2897d0a4264e, 0xe00762c90d42274e])
self.add([ 0xfafe9adac393807], [0x4bf965dc51d0fceb, 0xf36031ea6199eb3b], false, [0x4bf965dc51d0fcec, 0x3101b980dd32342])
self.add([ 0x77c0d97459294d0], [0x1d522628da3f50c3, 0x43a9893f1f4fb6a], false, [0x1d522628da3f50c3, 0xbb6a62b3787903a])
self.add([0x19a8081003aefe5f], [0x7252fbb18da19434, 0xa705ba2e4c9ef231], false, [0x7252fbb18da19434, 0xc0adc23e504df090])
self.add([0x9fb79935a4123853], [0xe12336786615f901, 0xe922e443ff61c928], false, [0xe12336786615f902, 0x88da7d79a374017b])
self.add([0xc5f0c68e34b48462], [0xf1d636c6af108fe9, 0x1ef0c29efdcefa4a], false, [0xf1d636c6af108fe9, 0xe4e1892d32837eac])
self.add([0x27ece83b40b2e57b], [0x60510bbbfee7c074, 0x9e2e62a229e42cbf], false, [0x60510bbbfee7c074, 0xc61b4add6a97123a])
self.add([0xdf2b0457964d26f0], [0xdbf3a8a94f2b2d57, 0x2bb6a7e4c6bf971e], false, [0xdbf3a8a94f2b2d58, 0xae1ac3c5d0cbe0e])
self.add([0x4cac64c04fa655a7], [0x8617e6286042eee2, 0xa2bd4a1c97df8844], false, [0x8617e6286042eee2, 0xef69aedce785ddeb])
self.add([0x21eb3d0018504639], [0x802c600ca9a497d1, 0x60c70b2ad0cc08e1], false, [0x802c600ca9a497d1, 0x82b2482ae91c4f1a])
self.add([0x9bed642a23077c79], [0x3089675af309b37c, 0x16d4f61ea6d134f5], false, [0x3089675af309b37c, 0xb2c25a48c9d8b16e])
self.add([0x3678a422cb5bed63], [0x8a2ca81a58df593d, 0x6793a9052c95692d], false, [0x8a2ca81a58df593d, 0x9e0c4d27f7f15690])
self.add([0x53fa3bcf2cec3d3e], [0xa5e724f75e265fb7, 0x6ce387481764502f], false, [0xa5e724f75e265fb7, 0xc0ddc31744508d6d])
self.add([ 0xc4d6413d0614298], [0x2c23c50627e4ed68, 0x3ef6e66fff482d61], false, [0x2c23c50627e4ed68, 0x4b444a83cfa96ff9])
self.add([0x222c634f5a59af11], [0xe4f7bd214d0b862e, 0x1ee68896d37f5cb0], false, [0xe4f7bd214d0b862e, 0x4112ebe62dd90bc1])
self.add([0x78baf9dad8808e2a], [0xfa0e9df982f1852b, 0x80e241454e39bfd7], false, [0xfa0e9df982f1852b, 0xf99d3b2026ba4e01])
self.add([0x75ccacc9e59fd3bc], [0xe7e115be10cc33fb, 0x74541715c5697043], false, [0xe7e115be10cc33fb, 0xea20c3dfab0943ff])
self.add([0xd4ff467546ef9a0e], [0x29679052dd40838f, 0xc627542f5531268d], false, [0x29679052dd408390, 0x9b269aa49c20c09b])
self.add([ 0x961a16962b970e], [0x979d2fc3cc6c05b8, 0x262020071e55ad03], false, [0x979d2fc3cc6c05b8, 0x26b63a1db4814411])
self.add([0x58b42b701bb5dacf], [0x8459f06d5a8a7e99, 0x493eac36429a51f1], false, [0x8459f06d5a8a7e99, 0xa1f2d7a65e502cc0])
self.add([0x7bb40c754392fecf], [ 0x2faa51449cf0ddd, 0x6126e7ec0b2027b6], false, [ 0x2faa51449cf0ddd, 0xdcdaf4614eb32685])
self.add([0x2748bdaf05342ba1], [0x31f7fbf8daac7163, 0x12391a07d6962689], false, [0x31f7fbf8daac7163, 0x3981d7b6dbca522a])
self.add([0x758d737d5ad26cb2], [0x7b40a0d76c401fe1, 0xd76c8d96dff400d3], false, [0x7b40a0d76c401fe2, 0x4cfa01143ac66d85])
self.add([0xf0ad0fb5cf797990], [0x120251673b4c919a, 0xd7a11060edb73bdd], false, [0x120251673b4c919b, 0xc84e2016bd30b56d])
self.add([0x5163f50e1cbb3563], [0x52900499ce8f440b, 0x4abe1943669960e8], false, [0x52900499ce8f440b, 0x9c220e518354964b])
self.add([ 0x251b8b253bec5f6], [0xa02b24e4c1e60f5d, 0xc6a7ec16792051eb], false, [0xa02b24e4c1e60f5d, 0xc8f9a4c8ccdf17e1])
self.add([0x1e66d64629025977], [0x4775a3a95dced8cf, 0xe18f8e6950eeab50], false, [0x4775a3a95dced8cf, 0xfff664af79f104c7])
self.add([0x14697cfc03005d90], [0x7068a06e841dbf9f, 0x69e9d54ac5f47a48], false, [0x7068a06e841dbf9f, 0x7e535246c8f4d7d8])
self.add([0x9b37349c4ef67d61], [0x97f3186903ce416c, 0xed0bdb230c25bf71], false, [0x97f3186903ce416d, 0x88430fbf5b1c3cd2])
self.add([0x4a2b819e9e4d82c8], [0xdfb791d6df3496af, 0xb7f42760d2e2e3c4], false, [0xdfb791d6df3496b0, 0x21fa8ff7130668c])
self.add([0x829399490a48fe32], [0x6cf067ca6ccb4c97, 0x8ddcb2419a5bca6e], false, [0x6cf067ca6ccb4c98, 0x10704b8aa4a4c8a0])
self.add([0xa61c2630e1d0cfcc], [0x6b4543c9a9275a01, 0x3f72c3f5d5c0571c], false, [0x6b4543c9a9275a01, 0xe58eea26b79126e8])
self.add([0x2e9a64940ab9600b], [0xdd26e24601c2ac0e, 0xdb89d7e79227355a], false, [0xdd26e24601c2ac0f, 0xa243c7b9ce09565])
self.add([0x76428bb05f101f5e], [0xd8b5f50c4fb3c700, 0xa1bbd9fab1f3969a], false, [0xd8b5f50c4fb3c701, 0x17fe65ab1103b5f8])
self.add([0x54df5ba9da43b07b], [0xffaee83a0a9dcce8, 0x8c9bab67b2165b02], false, [0xffaee83a0a9dcce8, 0xe17b07118c5a0b7d])
self.add([0xe2985ab1e0ec4f92], [0x6ddb5f12208113fb, 0x46e16095ceed7bf2], false, [0x6ddb5f12208113fc, 0x2979bb47afd9cb84])
self.add([0xa374d2eb209abf25], [0xe4788553696a2612, 0x436015e6e078092], false, [0xe4788553696a2612, 0xa7aad4498ea23fb7])
self.add([0x4334255de8872399], [0x938d3485330231c1, 0xd18509c8683c40a5], false, [0x938d3485330231c2, 0x14b92f2650c3643e])
self.add([0x2c765d5e9e0a2b17], [0xb09858d6e3871683, 0x7ef4d4ff6251c5cb], false, [0xb09858d6e3871683, 0xab6b325e005bf0e2])
self.add([0x95a499942dac602f], [0x7a658ca180ee7711, 0xb64376472ab45980], false, [0x7a658ca180ee7712, 0x4be80fdb5860b9af])
self.add([0x706a48349c75e7d5], [0xaa1a2c97d2504ee4, 0x9efec1841b6f4da5], false, [0xaa1a2c97d2504ee5, 0xf6909b8b7e5357a])
self.add([0xb4590ba047390033], [0xe2b1c0ea138c87cc, 0x8ee113baff63660e], false, [0xe2b1c0ea138c87cd, 0x433a1f5b469c6641])
self.add([0x2aa4164aaeb57387], [0xf2e3c3a01f7912ce, 0xed4e6eb5498a174c], false, [0xf2e3c3a01f7912cf, 0x17f284fff83f8ad3])
self.add([0x6b527bc2e3012bbb], [0x949516cdb6daecd9, 0xdff60a6d11f43ec], false, [0x949516cdb6daecd9, 0x7951dc69b4206fa7])
}
func test_add_2_by_1() {
self.add([0xd59367674108f088, 0x46a3d0aa9d1af322], [0x89223a4e39f59c6f], false, [0xd59367674108f088, 0xcfc60af8d7108f91])
self.add([0x5b885ee9ed9ea0a5, 0xa115df2f512fb803], [0x46dd4ed57df00e7d], false, [0x5b885ee9ed9ea0a5, 0xe7f32e04cf1fc680])
self.add([0xdd8e89d243149336, 0xa7801546dcdeb307], [0x8dfc7378674a4e57], false, [0xdd8e89d243149337, 0x357c88bf4429015e])
self.add([0xcf5dedb75c414f41, 0x6089051d35757e86], [0xa7ad95ceb5396990], false, [0xcf5dedb75c414f42, 0x8369aebeaaee816])
self.add([0xd5c3c40e21208219, 0xd74a9c7677abb91d], [0xb4551afd9737d494], false, [0xd5c3c40e2120821a, 0x8b9fb7740ee38db1])
self.add([0x1726a0587837217e, 0xdeaaddf58a87540], [0x584f1d7ad98234aa], false, [0x1726a0587837217e, 0x6639cb5a322aa9ea])
self.add([0x52558858aa937eed, 0xedbcfb9fa2076b39], [0x983d64bce5283982], false, [0x52558858aa937eee, 0x85fa605c872fa4bb])
self.add([0x1f4a9d369f234ad7, 0xe9407942d5640c57], [0xb8b7b8983317379b], false, [0x1f4a9d369f234ad8, 0xa1f831db087b43f2])
self.add([0x8ae70d6ad67f250d, 0x9f5aef217e45979c], [0x7d9d472c041acd2f], false, [0x8ae70d6ad67f250e, 0x1cf8364d826064cb])
self.add([0xfb91dd4b645fa936, 0xa7315c3408525b69], [0xa3aa9613688f3deb], false, [0xfb91dd4b645fa937, 0x4adbf24770e19954])
self.add([0xfba2bdc72bacb58b, 0x989a60b7c5e86917], [0x439121dda4b6ccc8], false, [0xfba2bdc72bacb58b, 0xdc2b82956a9f35df])
self.add([0x5aef3e5b098ad1cc, 0x9e025e2169699c44], [0x3bae8bdf4e7b11f4], false, [0x5aef3e5b098ad1cc, 0xd9b0ea00b7e4ae38])
self.add([0xd6231da95990839b, 0xd89bc4225652fabc], [0xd635cd6e4017b701], false, [0xd6231da95990839c, 0xaed19190966ab1bd])
self.add([0xdb20eb5d3936661b, 0xffaaea447a7d9235], [0x387a485e8321d8f6], false, [0xdb20eb5d3936661c, 0x382532a2fd9f6b2b])
self.add([0x8b8ce6b0982edf1f, 0xcec07d20310e3398], [0x90e091211cfbfe22], false, [0x8b8ce6b0982edf20, 0x5fa10e414e0a31ba])
self.add([0xb690d4d8fbc4a9dd, 0xbee3ce6e4a946094], [0xcbd451569fea3092], false, [0xb690d4d8fbc4a9de, 0x8ab81fc4ea7e9126])
self.add([0xf615a7de91e1e4ed, 0xdd6f6fd51b9f2890], [0xeda603839fb98fde], false, [0xf615a7de91e1e4ee, 0xcb157358bb58b86e])
self.add([0xbbf666ecfc6d5ed2, 0xd53b3d9fbee574d], [0xa8c7e48a5fa401ba], false, [0xbbf666ecfc6d5ed2, 0xb61b98645b925907])
self.add([0x6f2d92d1d02ccac0, 0xa212d6f7fd24e0c7], [ 0x91ce36b4f9f52d6], false, [0x6f2d92d1d02ccac0, 0xab2fba634cc4339d])
self.add([0x3afe3d9ca216d504, 0x40a5078b0d91a2c9], [0x17b45f42f5263cc0], false, [0x3afe3d9ca216d504, 0x585966ce02b7df89])
self.add([0x3b9ff3d2f010b219, 0xf6d7d3cc630d54d0], [0x5d1b0d2b3e87c4f4], false, [0x3b9ff3d2f010b21a, 0x53f2e0f7a19519c4])
self.add([0xd493aecfd8fa2050, 0xef59298e59aa403e], [0xe473ed02f0f855b8], false, [0xd493aecfd8fa2051, 0xd3cd16914aa295f6])
self.add([0x42c5614bf794573a, 0xe36de47adf5c2f3f], [0xc2029e503e7cae46], false, [0x42c5614bf794573b, 0xa57082cb1dd8dd85])
self.add([0x5ab0f705ba6f2b27, 0x3e936900a23d555d], [0x976680b64ff1ad45], false, [0x5ab0f705ba6f2b27, 0xd5f9e9b6f22f02a2])
self.add([0x333c01f31ecd3691, 0xf533141a003da9c9], [0x29cb000991d8e094], false, [0x333c01f31ecd3692, 0x1efe142392168a5d])
self.add([0xfb477f1d9e74eb16, 0xca7e33660d49baac], [0xe3dac627f7dfa05c], false, [0xfb477f1d9e74eb17, 0xae58f98e05295b08])
self.add([0xb4eabcac427b20ad, 0x5b0300315c72ea1c], [ 0xeba1626063c5432], false, [0xb4eabcac427b20ad, 0x69bd165762af3e4e])
self.add([0x7141d785f09a0c26, 0x5865fc79faef7751], [0x80f14676de3c34a0], false, [0x7141d785f09a0c26, 0xd95742f0d92babf1])
self.add([0x6f7477c6b7382f17, 0x4d5231d27f4d7b38], [0xd6c848843c2de29b], false, [0x6f7477c6b7382f18, 0x241a7a56bb7b5dd3])
self.add([0x142f40eaa2ec60ac, 0x89d91467e2056b71], [0xea2adbb7a2f46a8d], false, [0x142f40eaa2ec60ad, 0x7403f01f84f9d5fe])
self.add([0x4995939defc222f7, 0x8f3115861cbe0680], [0x93db9289b0f80dcd], false, [0x4995939defc222f8, 0x230ca80fcdb6144d])
self.add([0x8f4157d6a2f74ae4, 0x21d2394e6283b604], [0xbbf0cce9dc8d0646], false, [0x8f4157d6a2f74ae4, 0xddc306383f10bc4a])
self.add([ 0x3fb0cb183d4b923, 0xecc557122e70e802], [0x7571b5c1cf0366b1], false, [ 0x3fb0cb183d4b924, 0x62370cd3fd744eb3])
self.add([0x99693ba529da3b1a, 0xdfc7eb8bc6275927], [0x2c8d6b3c19b3ce66], false, [0x99693ba529da3b1b, 0xc5556c7dfdb278d])
self.add([0x9a127b9b7fcf69e9, 0x1f7e05e46a62dc73], [0xd58a9cffe13edd23], false, [0x9a127b9b7fcf69e9, 0xf508a2e44ba1b996])
self.add([0x6b6d326b3c234db8, 0xbfaee6057dc3a080], [0xd339b573f319b507], false, [0x6b6d326b3c234db9, 0x92e89b7970dd5587])
self.add([0x4960dcf93990de6e, 0x4ae50ae702e90e31], [0xa891a472e7fc8770], false, [0x4960dcf93990de6e, 0xf376af59eae595a1])
self.add([0xa3474d92c7c7add4, 0xa5eaaec06db2e71f], [0x662e926b22310548], false, [0xa3474d92c7c7add5, 0xc19412b8fe3ec67])
self.add([0x7596f141a119dd43, 0xc56b9b8cbe37ba4a], [0x66d64497fe440ad7], false, [0x7596f141a119dd44, 0x2c41e024bc7bc521])
self.add([0x47f2928d5bfdc30d, 0x67292fcafb2fa94d], [ 0x8f01feaf0ec4478], false, [0x47f2928d5bfdc30d, 0x70194fb5ec1bedc5])
self.add([0x75f1692d482725d0, 0x8ffb0bbf678455ac], [0x9f845984e6ef1012], false, [0x75f1692d482725d1, 0x2f7f65444e7365be])
self.add([0x23334ef9528d1ab2, 0x742162709ec25ab1], [0x42c7bdcc39dd6def], false, [0x23334ef9528d1ab2, 0xb6e9203cd89fc8a0])
self.add([0x8f829af4e6f55b50, 0x221f9ccda1154577], [ 0x46adc96658a41ce], false, [0x8f829af4e6f55b50, 0x268a7964069f8745])
self.add([ 0x450985b0395cfcb, 0x960d3971b9e10435], [0x2e2cff23bdf5fb58], false, [ 0x450985b0395cfcb, 0xc43a389577d6ff8d])
self.add([0xb61d01858e98cbbc, 0xfc0a627111b78655], [0x941602449ae208ce], false, [0xb61d01858e98cbbd, 0x902064b5ac998f23])
self.add([0x7d6c28a3223e824d, 0x66d8f8b47769fb32], [ 0x7b0fa011e8b00ca], false, [0x7d6c28a3223e824d, 0x6e89f2b595f4fbfc])
self.add([0x380501dd52e918bc, 0x431dfdb76284256c], [0x6667f9545a7a9839], false, [0x380501dd52e918bc, 0xa985f70bbcfebda5])
self.add([0xdfbb957efe591da5, 0x7dc1f6ce94514e8a], [0x91c475e2f7799203], false, [0xdfbb957efe591da6, 0xf866cb18bcae08d])
self.add([0xa4f887dee526ffb6, 0xc95ba23636db6e69], [0x914c7b389ab504f2], false, [0xa4f887dee526ffb7, 0x5aa81d6ed190735b])
self.add([0x1f6de070a35bc33e, 0x2309c6c655a49c3d], [0x7beb36b48c53a853], false, [0x1f6de070a35bc33e, 0x9ef4fd7ae1f84490])
}
func test_add_2_by_2() {
self.add([0x37b0b03ca7e741c4, 0xa140c8cb8dbb156e], [0xa5f0c3e794921712, 0x8be23751255fa8b5], false, [0xdda174243c7958d7, 0x2d23001cb31abe23])
self.add([0x20acbfe1096f7cfb, 0x5ce40cf29dfa7a57], [0x10bfe519575f63bf, 0x26e74743f4707dec], false, [0x316ca4fa60cee0ba, 0x83cb5436926af843])
self.add([0xea84ed2f4e03534c, 0x277db020d7e90ae7], [0x4be69eca8d68f80b, 0xb83a261c320eab09], true, [0x366b8bf9db6c4b57, 0xdfb7d63d09f7b5f0])
self.add([0xb2c261f1002ce244, 0x2491cb7e15a0696b], [0x414b83fc6a9a5fd8, 0x18f85601e300bd07], false, [0xf40de5ed6ac7421c, 0x3d8a217ff8a12672])
self.add([0xa6d8a78b8c5fbc97, 0x9a318a1bd2744b55], [0x80b24c9beb8d83e1, 0xa27c307b233bb8b7], true, [0x278af42777ed4079, 0x3cadba96f5b0040c])
self.add([0xeb98d3250f8a7e6f, 0x2285c5bc79286592], [0xf1c2b7229aa4755a, 0xeb5c266f3b958164], true, [0xdd5b8a47aa2ef3ca, 0xde1ec2bb4bde6f6])
self.add([0x20d49e3a20b0a1a3, 0x156f252264db159c], [0xcefc956bf885bd86, 0x6d604b16c68c9650], false, [0xefd133a619365f29, 0x82cf70392b67abec])
self.add([0x7fb2231cddc815f3, 0xbf714f1e2a63c418], [0xcc304fb8b71ccfe5, 0x40082744524d18d3], true, [0x4be272d594e4e5d8, 0xff7976627cb0dceb])
self.add([0x9b8caf17894607f5, 0x3120f09d6590fb4d], [0x10c799375b15cbdf, 0x1e1ac36a89421398], false, [0xac54484ee45bd3d4, 0x4f3bb407eed30ee5])
self.add([0xb4c9234328367609, 0xabae3ddbe8ccff5c], [0xe1f7626795887f8c, 0x8d5fe2037f5ddb70], true, [0x96c085aabdbef596, 0x390e1fdf682adacc])
self.add([0x6c56259f9a19fdad, 0x5ac9a0e252c7f829], [0x2c9b1da752731ae0, 0x7309111a666acd74], false, [0x98f14346ec8d188d, 0xcdd2b1fcb932c59d])
self.add([0x56e0389805ac9496, 0x2ed4b7aef8f416fb], [0x4ed567a05daeedb5, 0x545d9dc8439749e], false, [0xa5b5a038635b824b, 0x341a918b7d2d8b99])
self.add([0x5f0cfab9aa28a707, 0xa4a08eea853eacb], [0xbc08346fbe4c3972, 0x21ef4026f0500cd9], true, [0x1b152f296874e079, 0x2c39491598a3f7a4])
self.add([0x1affe338a7639893, 0x9efca0c2544726c6], [0x4503b225a22fea6b, 0x727332be9803d7fd], false, [0x6003955e499382ff, 0x116fd380ec4afec3])
self.add([0x36291ab62f181048, 0xd3dfbc59d387c915], [0xff2b928447b7e140, 0x235e4f810a24d998], true, [0x3554ad3a76cff188, 0xf73e0bdaddaca2ad])
self.add([0x97f721207e7b9e9c, 0x305e71600f20d6ed], [0x94a7fe02e626d4c9, 0x82900cfb25dfc873], true, [0x2c9f1f2364a27365, 0xb2ee7e5b35009f60])
self.add([0x3441748739c0fe95, 0x9efc78ea3b51d7bd], [0x703838f7c3b8c144, 0x49a87b7da8fe4812], false, [0xa479ad7efd79bfd9, 0xe8a4f467e4501fcf])
self.add([0xe2174b7c9f9babff, 0x5948b40a7d104ef3], [0x6df5077c9999dd58, 0x1937201cdfe481c3], true, [0x500c52f939358957, 0x727fd4275cf4d0b6])
self.add([0x753a0c46e1b2fb16, 0x55c76ce1b8279915], [0x6c5ddb2b69696cce, 0x2ba8f27ed5ac4f11], false, [0xe197e7724b1c67e4, 0x81705f608dd3e826])
self.add([0xc8713d203a7f5f0c, 0x5ceef632403e41ca], [0x9e60eccceef794b3, 0xb48c0e868084c846], true, [0x66d229ed2976f3c0, 0x117b04b8c0c30a10])
self.add([0x768b84adeee84d79, 0x416a0d28aa6c9f16], [0xd5077cb3081bfac3, 0xb6ab24d6a7f5949], true, [0x4b930160f704483c, 0x4cd4bf7614ebf85f])
self.add([0xe821b6aa7a9833cb, 0x7ace7994763ae020], [ 0xfbf0f1ac01f7fa7, 0xa4158a45c50fce90], false, [0xf7e0c5c53ab7b373, 0x1ee403da3b4aaeb0])
self.add([0x70d11b658b79cbfc, 0xe1e76f480264ad8c], [0x64fe502383ab3492, 0xf1d3ac267bf4d2f8], false, [0xd5cf6b890f25008f, 0xd3bb1b6e7e598084])
self.add([0xb6fc299d263e5804, 0x959b38e5205e14a4], [0x13e0bcd993c35407, 0xd3ccd179ac2fe04e], false, [0xcadce676ba01ac0c, 0x69680a5ecc8df4f2])
self.add([0xaa13f957d1193d82, 0xd69cae5d852a6136], [0x1fd2beb58b973115, 0x560898e2dae0f055], false, [0xc9e6b80d5cb06e98, 0x2ca54740600b518b])
self.add([ 0x8fc6db981214ac4, 0x750358ac37ba3e48], [0x3e073c55dc651544, 0xa3ae09ce8e6a6628], false, [0x4703aa0f5d866009, 0x18b1627ac624a470])
self.add([0xf54c0c6f7588473e, 0xcc7cefe54921e416], [0x1cfb9f2a338e8453, 0x40afefe64f8dbe36], true, [0x1247ab99a916cb92, 0xd2cdfcb98afa24c])
self.add([0xb75ccc3d07f1b070, 0xce1adbd54d177e4a], [0x964802590d631875, 0x137ab39044dedddb], true, [0x4da4ce961554c8e5, 0xe1958f6591f65c25])
self.add([0x6f4486e73fedad52, 0x7fbed8829acc7fb1], [0x26bca242d7c0c395, 0x2113c2cc69b17ce], false, [0x9601292a17ae70e7, 0x81d014af6167977f])
self.add([ 0x578ee79abb51359, 0xbf99321217ffbbcc], [0x62ee27e14a61359b, 0x21ffde8f306e0705], false, [0x6867165af61648f4, 0xe19910a1486dc2d1])
self.add([0x597f95b5050ad972, 0xe99c4e5e3f38bdce], [0x12728c306566fb15, 0x80d66fd3cfc4d4db], false, [0x6bf221e56a71d488, 0x6a72be320efd92a9])
self.add([0xe438b31535fb1875, 0x9668e7d435f43e0f], [0xd68f5bd681ead43d, 0x4f6c844df39386ea], true, [0xbac80eebb7e5ecb2, 0xe5d56c222987c4f9])
self.add([ 0xb6c230c6023f037, 0xf72ee50b829c8d8], [0x88852a1b59cb04ed, 0x5adc7c49498a5644], false, [0x93f14d27b9eef524, 0x6a4f6a9a01b41f1c])
self.add([0x768c751d72306323, 0x3919432b35cb256d], [ 0x387dc0820f712f0, 0x4bbebee4f65b8f45], false, [0x7a14512593277613, 0x84d802102c26b4b2])
self.add([0xa3387af1d9d83bf7, 0x7df865952102ac6a], [0xd4389f8d42da6ca0, 0x4ffa22c8d91fbbf0], true, [0x77711a7f1cb2a897, 0xcdf2885dfa22685a])
self.add([0xadccd4995d26b96f, 0x1c6d0e9f960dfd14], [0x3780422dcd6fe140, 0x8bc8aadb3ef0ed8], false, [0xe54d16c72a969aaf, 0x2529994d49fd0bec])
self.add([0xb1617cbecf479d43, 0xfc81c482b58a7b22], [0xea9e32a166d198bd, 0xa3809d0a3ab78d31], true, [0x9bffaf6036193601, 0xa002618cf0420853])
self.add([0xac37756b4ec593a0, 0x90e40844e89f0ea8], [0xa7b2fdb3c72c0678, 0x3284ca2077756e4e], true, [0x53ea731f15f19a18, 0xc368d26560147cf6])
self.add([0xe8a3ab839d2d94a1, 0xdc03949da29f83a7], [0x8dbb2a3d9c9da7e8, 0xc7494196b4dc1cad], true, [0x765ed5c139cb3c8a, 0xa34cd634577ba054])
self.add([0xabc53b5e8dd65b0f, 0xef7798f2a5fe7965], [0x9121cf069464cc34, 0x633ba7d4ab28d36d], true, [0x3ce70a65223b2744, 0x52b340c751274cd2])
self.add([0x2070f2bc97361fe5, 0x6f01436326aa9006], [0x808e4e1303c16cf9, 0xb19c682b0200ad46], false, [0xa0ff40cf9af78cdf, 0x209dab8e28ab3d4c])
self.add([0x8116cd3d433ff976, 0xb851edd65cdbd35d], [0x8fd1f6b2cc6d4ef2, 0x243f17cf31fb406], true, [0x10e8c3f00fad4868, 0xba95df534ffb8763])
self.add([0x391c8c6b45328510, 0x683236ae7a3883c3], [0x68681bc594de32de, 0xba5cfd134c9e8313], false, [0xa184a830da10b7ef, 0x228f33c1c6d706d6])
self.add([0x1feb0ee9f5b094ca, 0x5edf85aa4bae06c9], [0x5a32f962ac1229db, 0xe6d62906e30329e9], false, [0x7a1e084ca1c2bea6, 0x45b5aeb12eb130b2])
self.add([0x8ac0ae18d66708b1, 0xf7517050b7db268], [0xb53b9edd763e8024, 0xf383062299813aa9], true, [0x3ffc4cf64ca588d6, 0x2f81d27a4feed11])
self.add([0x45903ecd206b139c, 0x304c59f82d1b222e], [0x323c7382ac9f9ff0, 0x2fd0478d938422af], false, [0x77ccb24fcd0ab38c, 0x601ca185c09f44dd])
self.add([0x8d1c9465535ed313, 0x409b519a4c0b0119], [0xa8c149fbed14ea18, 0xeb82824c4983a7b9], true, [0x35ddde614073bd2c, 0x2c1dd3e6958ea8d2])
self.add([0x93b5fc91f791ce14, 0xe64e58dc18ccd10f], [0x9f0fb690ba39e9ff, 0xb30763e75ffd21d7], true, [0x32c5b322b1cbb814, 0x9955bcc378c9f2e6])
self.add([0xe7de6325a328bde5, 0xe00e1e1ad3b8a7b4], [0x198091e65b947f53, 0xd642f0f3081b3b3a], true, [ 0x15ef50bfebd3d39, 0xb6510f0ddbd3e2ee])
self.add([0xbfa065437e2c0f2b, 0xe3da23e93fbd192c], [0x79add4a30ffddd1f, 0x60bd733bd811d2a9], true, [0x394e39e68e29ec4b, 0x4497972517ceebd5])
}
private func add(
_ lhsWords: [Word],
_ rhsWords: [Word],
_ expectedOverflow: Bool,
_ expectedWords: [Word],
file: StaticString = #file,
line: UInt = #line
) {
let lhs = self.create(lhsWords)
let rhs = self.create(rhsWords)
let expected = self.create(expectedWords)
let (result, overflow) = lhs.addingReportingOverflow(rhs)
XCTAssertEqual(result, expected, "reportingOverflow.result", file: file, line: line)
XCTAssertEqual(overflow, expectedOverflow, "reportingOverflow.overflow", file: file, line: line)
if !overflow {
let result2 = lhs + rhs
XCTAssertEqual(result2, expected, "+", file: file, line: line)
}
}
// MARK: - Sub
func test_sub_1_by_1() {
self.sub([0xa8876f4838a22039], [0xeaa682d54f702108], true, [0xffffffffffffffff, 0xbde0ec72e931ff31])
self.sub([0x60c90043ba23a37e], [0x8a8e136aefcbc315], true, [0xffffffffffffffff, 0xd63aecd8ca57e069])
self.sub([0x469f332ffabba91d], [0x60c6c385fdac3a15], true, [0xffffffffffffffff, 0xe5d86fa9fd0f6f08])
self.sub([0xb2a0b79f7f91cf7b], [0x39ba127b861d6a65], false, [0x78e6a523f9746516])
self.sub([0x7e2eaa57ae51fb4a], [0xcb3981776d358155], true, [0xffffffffffffffff, 0xb2f528e0411c79f5])
self.sub([0xd52f53ff683b655c], [0xb174ed07dcba324e], false, [0x23ba66f78b81330e])
self.sub([0x1b63f39e3905e35f], [0xce761251cfa8b751], true, [0xffffffffffffffff, 0x4cede14c695d2c0e])
self.sub([0x91c88f24946938e8], [0xd7a54b6c814a4d3a], true, [0xffffffffffffffff, 0xba2343b8131eebae])
self.sub([0x431b0defd0918cac], [0x391ecb443f0065cb], false, [ 0x9fc42ab919126e1])
self.sub([0x172390a4680638d2], [0x8a580a48ee34ddfd], true, [0xffffffffffffffff, 0x8ccb865b79d15ad5])
self.sub([0xffb17e4b363e89dd], [0x75d3d8c416def1db], false, [0x89dda5871f5f9802])
self.sub([0x15d624d6521bd2a3], [0xf9a7712841c4a922], true, [0xffffffffffffffff, 0x1c2eb3ae10572981])
self.sub([0x9c4c86cf4abdf788], [0xd601d69ad25f8b7f], true, [0xffffffffffffffff, 0xc64ab034785e6c09])
self.sub([0x4f851974d66f4d0b], [0xa524885ed780a530], true, [0xffffffffffffffff, 0xaa609115feeea7db])
self.sub([0x256ec1770944de20], [0xdad0cbc133cada6f], true, [0xffffffffffffffff, 0x4a9df5b5d57a03b1])
self.sub([ 0x73b646f1651adf9], [0x5c0c03821a40f11f], true, [0xffffffffffffffff, 0xab2f60ecfc10bcda])
self.sub([0x698986f11d2969e6], [0x7f89b54b5a12b99c], true, [0xffffffffffffffff, 0xe9ffd1a5c316b04a])
self.sub([0xb1322dc2db265045], [0x91cb5cc8fec7c46f], false, [0x1f66d0f9dc5e8bd6])
self.sub([0x55abbad161361b93], [0x18e95086eac1f165], false, [0x3cc26a4a76742a2e])
self.sub([ 0x89352b5a3a2151c], [ 0x53ca2f9fe0eff36], false, [ 0x356afbba59315e6])
self.sub([0xdf423c140780f927], [0xa5800379389b7557], false, [0x39c2389acee583d0])
self.sub([0xc9d1184f87543085], [0x7374c2dd7782d369], false, [0x565c55720fd15d1c])
self.sub([0x5f0e2685a55f72f6], [0x8f729f6e04d7c14f], true, [0xffffffffffffffff, 0xcf9b8717a087b1a7])
self.sub([ 0xf8b799afb663070], [0xd3d3b37c12d8d27d], true, [0xffffffffffffffff, 0x3bb7c61ee88d5df3])
self.sub([0x89e7276a98ea8439], [ 0x5426c34b1940974], false, [0x84a4bb35e7567ac5])
self.sub([0x22af14789008d886], [ 0xeb75e218966bb88], false, [0x13f7b65706a21cfe])
self.sub([0x33df10e80a3ae5a1], [0xb07e23d49d0d847d], true, [0xffffffffffffffff, 0x8360ed136d2d6124])
self.sub([0xfd522f2af36547e4], [0x45ee6db3c88729d9], false, [0xb763c1772ade1e0b])
self.sub([0x8b31f1e009ac51e8], [0x8e6693c3f0056fe7], true, [0xffffffffffffffff, 0xfccb5e1c19a6e201])
self.sub([0xd76e2483892e6063], [0x890ee4dcdf3b5fce], false, [0x4e5f3fa6a9f30095])
self.sub([0x40404dbf25a6eca7], [0x1f37e19ff2005117], false, [0x21086c1f33a69b90])
self.sub([0xa62e5ec7f819f055], [0xaa8c84ec37ef27ab], true, [0xffffffffffffffff, 0xfba1d9dbc02ac8aa])
self.sub([0xefc7adec41d01b39], [0xff04fd1b552cb711], true, [0xffffffffffffffff, 0xf0c2b0d0eca36428])
self.sub([0x29a3dd8ebb6e8785], [0x43477bd7718628ef], true, [0xffffffffffffffff, 0xe65c61b749e85e96])
self.sub([0x4b38a180759ef618], [0x5fddce919fb35987], true, [0xffffffffffffffff, 0xeb5ad2eed5eb9c91])
self.sub([ 0x6748d88b432c0b4], [0x834876a9b576c6d1], true, [0xffffffffffffffff, 0x832c16defebbf9e3])
self.sub([0xe92ec21293a655fe], [0x66ce2ac4708da16a], false, [0x8260974e2318b494])
self.sub([0x1e43ac7b53ed0f01], [0x5b40c47ca7b4d52f], true, [0xffffffffffffffff, 0xc302e7feac3839d2])
self.sub([0x73f48a6b867aafb2], [0x184cbb8eb240de7a], false, [0x5ba7cedcd439d138])
self.sub([0x4aa579f6d20d9f14], [0x31616cd947c280b9], false, [0x19440d1d8a4b1e5b])
self.sub([0x5f60631e3e3a7861], [ 0x6b0491d1616f473], false, [0x58b01a01282383ee])
self.sub([0x9771885c45134d2f], [0x4be8becec28bcf99], false, [0x4b88c98d82877d96])
self.sub([0xb55d683c591195ac], [0xc8987e8f298bcfb4], true, [0xffffffffffffffff, 0xecc4e9ad2f85c5f8])
self.sub([0xa37a466af0ceb8d8], [0xbadb62f4abdfd4ac], true, [0xffffffffffffffff, 0xe89ee37644eee42c])
self.sub([ 0x455461407c73711], [0xc3f8c0c1b4c5bc62], true, [0xffffffffffffffff, 0x405c855253017aaf])
self.sub([0x92b2887b21e30af4], [0xfce2503d7a75d6e1], true, [0xffffffffffffffff, 0x95d0383da76d3413])
self.sub([0xb20428baed334e73], [0x85fe7768395ce123], false, [0x2c05b152b3d66d50])
self.sub([0xc9c60bddaebf96ab], [0x900f365cbcadef55], false, [0x39b6d580f211a756])
self.sub([0x7e629f9838e6db7d], [0x7cb753f020345304], false, [ 0x1ab4ba818b28879])
self.sub([0x9e6b6338619218c6], [0x364d872029dd7287], false, [0x681ddc1837b4a63f])
}
func test_sub_1_by_2() {
self.sub([0x4d2cedd591fa8656], [0x4b61ef8e5a64d9dd, 0xb8e0d616259f2bfc], true, [0xb49e1071a59b2622, 0x944c17bf6c5b5a5a])
self.sub([0x36f9c36f14eb99a5], [ 0xf129b2f88b81d79, 0xc73bb6aee3ac3a81], true, [0xf0ed64d07747e286, 0x6fbe0cc0313f5f24])
self.sub([0x116560188ee3a9c6], [0x2a391f5165cf6895, 0x36f337c83f05f187], true, [0xd5c6e0ae9a30976a, 0xda7228504fddb83f])
self.sub([0x14ef360689fc8b10], [0xf4cdfdae34e9fefd, 0xa9f2adcd7d244ac4], true, [ 0xb320251cb160102, 0x6afc88390cd8404c])
self.sub([0xdd8e44276706e9b3], [0x566b6bfbfc2d76e2, 0xd185f43620aa5c05], true, [0xa994940403d2891e, 0xc084ff1465c8dae])
self.sub([0x2f7f4c675ef73017], [0x1242db6514fd4665, 0xf092f571dced2a53], true, [0xedbd249aeb02b99a, 0x3eec56f5820a05c4])
self.sub([0xf0834f2c78924c97], [0xfec48528aadd97f2, 0xbe7523b7eef40ca8], true, [ 0x13b7ad75522680e, 0x320e2b74899e3fef])
self.sub([0x7450832014b255f5], [0x41cc02af2deb4aca, 0x961f5c284488ea01], true, [0xbe33fd50d214b535, 0xde3126f7d0296bf4])
self.sub([0x2e8c676656f4c4f7], [0x25cc84af2c63687a, 0x55044ac18cedac35], true, [0xda337b50d39c9785, 0xd9881ca4ca0718c2])
self.sub([0xf73434241d08cf8f], [0x71ccd92f2dd834f4, 0x44dd7a54e99a26b], true, [0x8e3326d0d227cb0c, 0xf2e65c7ece6f2d24])
self.sub([0xb52db34704abdb9b], [0xa282b2d33bbdb08f, 0xe8b99948bedba811], true, [0x5d7d4d2cc4424f70, 0xcc7419fe45d0338a])
self.sub([0xc3272e2d5fc1dda9], [0x6e0282baf0178286, 0xab4a6e6049710a89], true, [0x91fd7d450fe87d7a, 0x17dcbfcd1650d320])
self.sub([0x21b188c3a5bf42f2], [ 0x786e54cfc3b36d6, 0x6497878dc76ac9a4], true, [0xf8791ab303c4c929, 0xbd1a0135de54794e])
self.sub([0x4b58da84d0d31258], [0xf3ea331c31ecf0d8, 0x1d5e2e4f53edfc69], true, [ 0xc15cce3ce130f28, 0x2dfaac357ce515ef])
self.sub([0xb197d5e420f42611], [0xb177ba380122d9f4, 0xc4b54cb1001882a1], true, [0x4e8845c7fedd260b, 0xece2893320dba370])
self.sub([0xf45d43979da725ee], [0x3da8a92b9e505cca, 0x663383ea1f3235f5], true, [0xc25756d461afa336, 0x8e29bfad7e74eff9])
self.sub([0x6b2ca2ccad23fb74], [0x86c77b17121c2afc, 0x8277229348350649], true, [0x793884e8ede3d503, 0xe8b5803964eef52b])
self.sub([0xab056074d87f1403], [0x38a78b03e82e2215, 0x748e1ce5ca268085], true, [0xc75874fc17d1ddeb, 0x3677438f0e58937e])
self.sub([ 0x5474078e47765e1], [0x93fc4c5f66178d28, 0x47df9ae57ea87ed2], true, [0x6c03b3a099e872d7, 0xbd67a59365cee70f])
self.sub([0xfcc6e14e81584310], [0x6f53a851fba734fd, 0x2ffc606551a0b28f], true, [0x90ac57ae0458cb03, 0xccca80e92fb79081])
self.sub([0x92b7185f3df5ddeb], [ 0x33ab434112c8a50, 0xdf84b548baae7f4c], true, [0xfcc54bcbeed375af, 0xb332631683475e9f])
self.sub([0x2f8348ee621ff999], [0x7bf7d696689da85e, 0x355ebd52c9873ffa], true, [0x84082969976257a1, 0xfa248b9b9898b99f])
self.sub([0x49e0614dc18c0ef9], [0x508d60394bca1165, 0x47afb88781c68530], true, [0xaf729fc6b435ee9b, 0x230a8c63fc589c9])
self.sub([0x8a34ae1b04f28bdc], [0xc3cc229d2c744165, 0x43aca6faa2b86b76], true, [0x3c33dd62d38bbe9b, 0x46880720623a2066])
self.sub([0x76de242d18d1bf60], [0x99262df36000960b, 0xf85721acf6a2c5e7], true, [0x66d9d20c9fff69f4, 0x7e870280222ef979])
self.sub([0x1d7d21f72e3359c7], [0x8df20ed87d2595ca, 0xc3de77bae43d5acb], true, [0x720df12782da6a35, 0x599eaa3c49f5fefc])
self.sub([0x44c0b1656ab11798], [0xb84261dfc48a6a56, 0xc23889a599c1726a], true, [0x47bd9e203b7595a9, 0x828827bfd0efa52e])
self.sub([0x48bbe4566a55b8a7], [0xd5d9230421464233, 0xd9613bf9a4e62508], true, [0x2a26dcfbdeb9bdcc, 0x6f5aa85cc56f939f])
self.sub([0xf4550904fe1dded6], [0xacd061897162a922, 0xdf8332767448f03b], true, [0x532f9e768e9d56de, 0x14d1d68e89d4ee9b])
self.sub([0x7016696f51c63edf], [0x3fd0de8e64fe89a3, 0x26adba1e42d9ab80], true, [0xc02f21719b01765d, 0x4968af510eec935f])
self.sub([0x5091edf440202460], [0xa5fd281262a72d91, 0x2ad67f3940242e02], true, [0x5a02d7ed9d58d26f, 0x25bb6ebafffbf65e])
self.sub([ 0xe6243d10fd65355], [0xf2659358bf6e1f17, 0xf3d26ddd04088b51], true, [ 0xd9a6ca74091e0e8, 0x1a8fd5f40bcdc804])
self.sub([0xc19c5ba1e2d84216], [0x4ee6fd90b4f29cc7, 0xf0ca1fc2b4cc2758], true, [0xb119026f4b0d6338, 0xd0d23bdf2e0c1abe])
self.sub([0x266748ce5270a35a], [0x1a010597d83605f2, 0xde4f9888f99d55ee], true, [0xe5fefa6827c9fa0d, 0x4817b04558d34d6c])
self.sub([0xd048251990d64267], [ 0xcebed2ac291203e, 0x7bc37accacc8368e], true, [0xf31412d53d6edfc2, 0x5484aa4ce40e0bd9])
self.sub([0xe9bf5edc0e403498], [0x5826046f4a1765b4, 0xacde33cf01ae70f6], true, [0xa7d9fb90b5e89a4c, 0x3ce12b0d0c91c3a2])
self.sub([0x1db0834ef92a294c], [0xfa323fe2dc6ed80b, 0xca61f5df0bc14e56], true, [ 0x5cdc01d239127f4, 0x534e8d6fed68daf6])
self.sub([0x9c128380abbedaec], [0x706e8d31b0f77d48, 0xada52b5759838825], true, [0x8f9172ce4f0882b7, 0xee6d5829523b52c7])
self.sub([0xcdd5e12df942e390], [0x6a23d83231856f7c, 0xfe7ad3ed33c96519], true, [0x95dc27cdce7a9083, 0xcf5b0d40c5797e77])
self.sub([0x4fa8a81898299f25], [0x6cd20f509ce0cbe1, 0xaf4796ec1068e486], true, [0x932df0af631f341e, 0xa061112c87c0ba9f])
self.sub([0xef50a4105f3c110f], [0x3f5bb3394318e7b3, 0x289ebc262da7ff71], true, [0xc0a44cc6bce7184d, 0xc6b1e7ea3194119e])
self.sub([0x73549f3ba1635406], [0x1ac158a8fd23995d, 0xdb16a7dc49f0b28b], true, [0xe53ea75702dc66a2, 0x983df75f5772a17b])
self.sub([0xbc2ecea21d518747], [0xe3f574f22b055e6c, 0x6ac65ffa0dcabd06], true, [0x1c0a8b0dd4faa194, 0x51686ea80f86ca41])
self.sub([0xc9f7bd810ec439f5], [0x32a9818bb6846a2d, 0x8f58d66dfd9a96ab], true, [0xcd567e74497b95d3, 0x3a9ee7131129a34a])
self.sub([0xac77965ff538e8db], [ 0x2e4abda416788c0, 0xb9c6e6c90d027f8c], true, [0xfd1b5425be98773f, 0xf2b0af96e836694f])
self.sub([0x84730910d831801c], [0xca02e9fbdfd2bf64, 0xf916e793c492a64f], true, [0x35fd1604202d409b, 0x8b5c217d139ed9cd])
self.sub([0xe8c66fec50d52585], [0xb32c18a266583e64, 0xc8ddbfe47ce46add], true, [0x4cd3e75d99a7c19c, 0x1fe8b007d3f0baa8])
self.sub([0x3a61fffe7307f6d4], [0xf1923b8c3cabd9f1, 0xece4a3c78da7c399], true, [ 0xe6dc473c354260e, 0x4d7d5c36e560333b])
self.sub([0x4b0bcdc2e82b0c2f], [0x894bfd55462cf20c, 0xf590a9e0349dbd31], true, [0x76b402aab9d30df3, 0x557b23e2b38d4efe])
self.sub([0xb50561f9e031a6b5], [0x995b6a8ecce20788, 0xee00347ae5793424], true, [0x66a49571331df877, 0xc7052d7efab87291])
}
func test_sub_2_by_1() {
self.sub([0x307b122ec25fae3c, 0x2f79abe43bc33cfb], [0xeba4478b207ede78], false, [0x307b122ec25fae3b, 0x43d564591b445e83])
self.sub([0xc78c54d0b3849665, 0x45dbd200ee974a6d], [0xb6665c5074d1c060], false, [0xc78c54d0b3849664, 0x8f7575b079c58a0d])
self.sub([0x771600620901a07e, 0x5d3ad1f5aa292e9b], [0x6f37a9df8ec5504f], false, [0x771600620901a07d, 0xee0328161b63de4c])
self.sub([0x651d8fb3af8358c6, 0x9a3b5fdf28aec426], [0xf3deee53bc5931db], false, [0x651d8fb3af8358c5, 0xa65c718b6c55924b])
self.sub([0x90ae78311bbf8b76, 0x834c95d1cda0877f], [0xfe66d962827d3965], false, [0x90ae78311bbf8b75, 0x84e5bc6f4b234e1a])
self.sub([ 0xaa6de3fe16ae68d, 0x398b3a8e98d103e7], [0x2385567c372ff45b], false, [ 0xaa6de3fe16ae68d, 0x1605e41261a10f8c])
self.sub([0xabf45c10587f288a, 0xa825e80f9e9a6eed], [0x4e961b4620fe1139], false, [0xabf45c10587f288a, 0x598fccc97d9c5db4])
self.sub([0x3fd3419f14b44dfd, 0x277c9d5c36feb9f5], [0xb0fbe7cae4376932], false, [0x3fd3419f14b44dfc, 0x7680b59152c750c3])
self.sub([0x37bfcd921ed4ece5, 0xb817a095cfcf5f65], [0x7001250ba5ecb493], false, [0x37bfcd921ed4ece5, 0x48167b8a29e2aad2])
self.sub([0xde8ffd8b517f52c4, 0xad79520e7205125e], [0xdd6d784874aadf3c], false, [0xde8ffd8b517f52c3, 0xd00bd9c5fd5a3322])
self.sub([0xa6418cff40123828, 0xcbb473fffafd62dd], [0xa863664ec95287b4], false, [0xa6418cff40123828, 0x23510db131aadb29])
self.sub([0xdf718992529c7caf, 0x31fd964eb52f48be], [0xa2d3317eea390615], false, [0xdf718992529c7cae, 0x8f2a64cfcaf642a9])
self.sub([0x1d490700c062a4a6, 0xe026f554700311b4], [ 0xc216e073d91caf], false, [0x1d490700c062a4a6, 0xdf64de73fc29f505])
self.sub([0x5803e3fffa510dad, 0xa02b1fb330c37058], [0xfa8f76823d21a645], false, [0x5803e3fffa510dac, 0xa59ba930f3a1ca13])
self.sub([0xf642a3b90c1b22e9, 0xa67345a92e03fdc], [0x1a2382ab87a5ecf4], false, [0xf642a3b90c1b22e8, 0xf043b1af0b3a52e8])
self.sub([ 0x814b8cb629d4e1f, 0x8add1a7f9468391c], [0x29fe8d2c05f5bc4a], false, [ 0x814b8cb629d4e1f, 0x60de8d538e727cd2])
self.sub([0x50c94d50466229ad, 0x93c3244aa0505388], [ 0xcd0c61e64bbaa62], false, [0x50c94d50466229ad, 0x86f25e2c3b94a926])
self.sub([0x1a17c4f3d2652b0f, 0xb3f08f16a12032b6], [0x87ae6e8fd9401954], false, [0x1a17c4f3d2652b0f, 0x2c422086c7e01962])
self.sub([0xa278e5053594b3b0, 0xbc412d4432f4a343], [0x38514f151e43ea73], false, [0xa278e5053594b3b0, 0x83efde2f14b0b8d0])
self.sub([0x1cae236fbbbb543b, 0x61ac36dd553a9330], [ 0x9e88c63b954847f], false, [0x1cae236fbbbb543b, 0x57c3aa799be60eb1])
self.sub([0xc9ac8f9c927ef848, 0x8e76d9a115d500f7], [0x79fd27b713dc8992], false, [0xc9ac8f9c927ef848, 0x1479b1ea01f87765])
self.sub([0x831a4a972400a2a3, 0xde84f33503b31af7], [0x8a8c63fbfb0bce7d], false, [0x831a4a972400a2a3, 0x53f88f3908a74c7a])
self.sub([0x16de88f9fbed1983, 0x28cd26aa0b3094e7], [0x5113d8618f0cc06f], false, [0x16de88f9fbed1982, 0xd7b94e487c23d478])
self.sub([ 0x503a5696247a3d9, 0x54b67853218a5428], [0xf0579d1773b365fc], false, [ 0x503a5696247a3d8, 0x645edb3badd6ee2c])
self.sub([0xaec277e7ab2a19eb, 0x31a707b1446a5d01], [0xa359fcdb39806bbc], false, [0xaec277e7ab2a19ea, 0x8e4d0ad60ae9f145])
self.sub([0xe46f67a6dbaa025a, 0x9e5476d33790c5c7], [0xe7c11eaf735bf85b], false, [0xe46f67a6dbaa0259, 0xb6935823c434cd6c])
self.sub([0xf0bd4f2e21885343, 0x86e4d63cd9d91d4c], [ 0x54fe8f0e9015b97], false, [0xf0bd4f2e21885343, 0x8194ed4bf0d7c1b5])
self.sub([0x7df511b4893171c2, 0xe629e3e0eecb092a], [0x35f32a8ab9f95526], false, [0x7df511b4893171c2, 0xb036b95634d1b404])
self.sub([0x271527b5bd2f8a96, 0x1b286e9d58e235a9], [0x48d4e28a0970cf1f], false, [0x271527b5bd2f8a95, 0xd2538c134f71668a])
self.sub([0x1a010d37a182823d, 0x518df26d923774d2], [0xcfc8f9da7026cb99], false, [0x1a010d37a182823c, 0x81c4f8932210a939])
self.sub([0x93cfd71da727eb94, 0x8c2e72519ec99f05], [0x8201af18e5ca505f], false, [0x93cfd71da727eb94, 0xa2cc338b8ff4ea6])
self.sub([0xbd6dd0824a5ac7d7, 0x3e4d30b9852d9a44], [0xf81ec9b010d171dd], false, [0xbd6dd0824a5ac7d6, 0x462e6709745c2867])
self.sub([0x1930e051a374e1e1, 0xd56fce046013f4dc], [0xacd3d7d79a3684e7], false, [0x1930e051a374e1e1, 0x289bf62cc5dd6ff5])
self.sub([0x4d5c5d0966c737bd, 0x724d961b4e2b42cc], [0x100d083966b0dd4f], false, [0x4d5c5d0966c737bd, 0x62408de1e77a657d])
self.sub([ 0xb92b32ed5efbb28, 0x5fadf87df3152ade], [0xf449b84846ec2b61], false, [ 0xb92b32ed5efbb27, 0x6b644035ac28ff7d])
self.sub([0x14269f815fb151ee, 0x2d0513d16a25bf1f], [0xe7f52610045ae627], false, [0x14269f815fb151ed, 0x450fedc165cad8f8])
self.sub([0xa5ac0eddb2a6ca66, 0x3328dea4abe15e12], [0x35339dbc3a71aaa4], false, [0xa5ac0eddb2a6ca65, 0xfdf540e8716fb36e])
self.sub([0x7d519c53ffb2d94f, 0x3c2198518a921b5c], [0x242286690dedf9c9], false, [0x7d519c53ffb2d94f, 0x17ff11e87ca42193])
self.sub([0x4bb7980cd1841ce3, 0xa52fd61b8541623e], [ 0xee499cdf2eea0a4], false, [0x4bb7980cd1841ce3, 0x964b3c4d9252c19a])
self.sub([0x5af6f55fbec3e881, 0xc49966c571acb267], [0x6831b130807fb966], false, [0x5af6f55fbec3e881, 0x5c67b594f12cf901])
self.sub([0xf273df21df09d7b1, 0xfca2251465e41af9], [0x89a3a06bc181cfde], false, [0xf273df21df09d7b1, 0x72fe84a8a4624b1b])
self.sub([0xe22f2758c0e74125, 0xe99b003a65cfec4], [0x20de4d6c270f2ac3], false, [0xe22f2758c0e74124, 0xedbb62977f4dd401])
self.sub([0x73c2388a5a066619, 0x6698c2158d87ade4], [0xd07c1f828c497937], false, [0x73c2388a5a066618, 0x961ca293013e34ad])
self.sub([0x786b7e49e3ea869f, 0xc0b8083401c53961], [0x4d76d8a391c0c4da], false, [0x786b7e49e3ea869f, 0x73412f9070047487])
self.sub([0xabd88813ee2f43f8, 0xe03b349a2730c682], [0x3b01062c70c9d93b], false, [0xabd88813ee2f43f8, 0xa53a2e6db666ed47])
self.sub([0xf9ac968fbd9fb653, 0x4f79e30d4e9f5aa8], [0x3326ff8e3b48c43c], false, [0xf9ac968fbd9fb653, 0x1c52e37f1356966c])
self.sub([0x3407333f804e36e6, 0xa28bef4a019c4bc9], [0x6e43d68ab40d887f], false, [0x3407333f804e36e6, 0x344818bf4d8ec34a])
self.sub([0x6580c7cb03b447b3, 0x6b93b4c7e1ef0877], [0x12f22c23c17436c0], false, [0x6580c7cb03b447b3, 0x58a188a4207ad1b7])
self.sub([ 0x88bccad230fdeff, 0x2482c42583c42b71], [0x40a633115549532a], false, [ 0x88bccad230fdefe, 0xe3dc91142e7ad847])
self.sub([0xc0a3714a7cfc6075, 0x5731d1b9dedab369], [0x30109c1518b2b46e], false, [0xc0a3714a7cfc6075, 0x272135a4c627fefb])
}
func test_sub_2_by_2() {
self.sub([0x5d0c9516d6766de0, 0x8f13a7196e3f3df2], [0xd9064b9f143870b3, 0x2a258f7ecb3f0340], true, [0x84064977c23dfd2d, 0x64ee179aa3003ab2])
self.sub([0xf1815677bec126e3, 0x2561147d8a534dc9], [0xa54c026544ed89c9, 0xc80435b1aff9dbc4], false, [0x4c35541279d39d19, 0x5d5cdecbda597205])
self.sub([0x700e826e61221e87, 0xf8ed8993ee3856b6], [0x74323c9323c76c76, 0x82eb4a1d6a453774], true, [0xfbdc45db3d5ab211, 0x76023f7683f31f42])
self.sub([0xb61378d375f1bc84, 0x4ddc9be0fc1aedf2], [0x6fcea48b2d94f3ed, 0x6e3273b39fa1e33c], false, [0x4644d448485cc896, 0xdfaa282d5c790ab6])
self.sub([0xe1257de9a39f82b4, 0x2ee12607e93704bd], [0xc1af9c43838d5c15, 0x990c1413126f37c3], false, [0x1f75e1a62012269e, 0x95d511f4d6c7ccfa])
self.sub([0x6710ea414daa86fd, 0x5b58ca73ef8d07c], [0xc6fe88a5c8c5b607, 0xeda0312087e071b8], true, [0xa012619b84e4d0f5, 0x18155b86b7185ec4])
self.sub([0xa0640808f8ca626a, 0x3c647b46a083e3f8], [0x92b12942e23466f7, 0x57f0bb4487afa458], false, [ 0xdb2dec61695fb72, 0xe473c00218d43fa0])
self.sub([0x724d7066dce87b18, 0x728fbe04944b27b9], [0xd529b75a361a1ab2, 0xa043e083b50d38ae], true, [0x9d23b90ca6ce6065, 0xd24bdd80df3def0b])
self.sub([0x30ce7a84102d5fe6, 0xdd7f2a7ef5773f14], [0xfeb3ab76d647fb61, 0x3fdb522e2d5a7eaa], true, [0x321acf0d39e56485, 0x9da3d850c81cc06a])
self.sub([0x480cd032af7d37ed, 0x5ab134aee0e96b6b], [0x39d78dda27e9b917, 0x254b9d25d9dae789], false, [ 0xe35425887937ed6, 0x35659789070e83e2])
self.sub([0x9186a53c371e053f, 0xc4012d6ef6b45ce7], [0x9a4295d406e505af, 0xb175053593c8a1c4], true, [0xf7440f683038ff90, 0x128c283962ebbb23])
self.sub([0xff63f7b57145625e, 0x29bb8cba2f05dcd5], [0xb5c88ffaa1328811, 0x5497e02d50b30c2], false, [0x499b67bad012da4d, 0x24720eb759faac13])
self.sub([0xa3d44085fe365d20, 0x4004efe47278e91e], [0x6ad113414f1c6743, 0x52574b3061a4b475], false, [0x39032d44af19f5dc, 0xedada4b410d434a9])
self.sub([0xeac6efb86319e8d2, 0xd5439a9833030e10], [0x806e18509b265b05, 0xb2f4da8438d68bf5], false, [0x6a58d767c7f38dcd, 0x224ec013fa2c821b])
self.sub([0x135285624e6f7dbd, 0x8f202739443f9cd8], [0x30cd13822e995394, 0x8f8fe013e79fae59], true, [0xe28571e01fd62a28, 0xff9047255c9fee7f])
self.sub([0xdaee9b285c7057cd, 0x8be677a5fce00f9b], [0x77d7ce37a6457225, 0xab9c61241986be23], false, [0x6316ccf0b62ae5a7, 0xe04a1681e3595178])
self.sub([0x944b70f86ab18576, 0xad0e0262e54b99ce], [0x4704b445ad3cc369, 0x71319c1370a06730], false, [0x4d46bcb2bd74c20d, 0x3bdc664f74ab329e])
self.sub([0x7c7b7b9def58e49b, 0x1ee399b5c007fc4f], [0xf954029b92bd059a, 0xbb29205705c335e9], true, [0x832779025c9bdf00, 0x63ba795eba44c666])
self.sub([0x7fe792259ea7b489, 0xbb177cf76147f47d], [0x1e57d34e03c16330, 0x7998136362861543], false, [0x618fbed79ae65159, 0x417f6993fec1df3a])
self.sub([0x8b7486e8bc8c608c, 0x38ceccadffae3154], [0xc230c74340023b73, 0x1c3b4ecad34f1381], true, [0xc943bfa57c8a2519, 0x1c937de32c5f1dd3])
self.sub([0xd8821f184eedca7f, 0x6cbd47d71954cefa], [0xf4ed53b04a6c17cf, 0x3e150a6a167e45ea], true, [0xe394cb680481b2b0, 0x2ea83d6d02d68910])
self.sub([0x812868b785913c87, 0xc575827399c3a3ca], [0x178ec0875388fbe1, 0x8d88005723fc6b9f], false, [0x6999a830320840a6, 0x37ed821c75c7382b])
self.sub([0x6f9478097352fc8c, 0x4f857c4980ae8cc3], [0x53ece6c69d577378, 0xb7a113c552605cc0], false, [0x1ba79142d5fb8913, 0x97e468842e4e3003])
self.sub([0xb77962a273d2c507, 0xb643fab044e59568], [0x9ff3ec59251c44af, 0xae327c625f356dcd], false, [0x178576494eb68058, 0x8117e4de5b0279b])
self.sub([0xc5eee9e4579dab94, 0x44b8ff0fcc3c0c91], [0x10899e26d2bec37d, 0x45aaabcf79637f33], false, [0xb5654bbd84dee816, 0xff0e534052d88d5e])
self.sub([0x5650c4cb97297632, 0xeba99fcd3223cc69], [0xdaccf79a0b684a58, 0x3f4a42bedc63e0f], true, [0x7b83cd318bc12bda, 0xe7b4fba1445d8e5a])
self.sub([0x663330780594f682, 0x4dd9b345a103b3bd], [0x7ddae56a352f7462, 0x715ec4e9370e180e], true, [0xe8584b0dd065821f, 0xdc7aee5c69f59baf])
self.sub([ 0xdda0d54c492852f, 0x5613fb99f307ec82], [0xc50a481980624624, 0x49f85d5399da3369], true, [0x48cfc53b44303f0b, 0xc1b9e46592db919])
self.sub([0xe6ffaccafe2e5e24, 0x1fa750b4406ef3a5], [0x38940dc0e32de178, 0xd59df2c0281198c6], false, [0xae6b9f0a1b007cab, 0x4a095df4185d5adf])
self.sub([0xbb1c1bef7b7e5215, 0x523dea8536afd397], [0xaaaed30f6c751857, 0x17b92f70d02fae8e], false, [0x106d48e00f0939be, 0x3a84bb1466802509])
self.sub([0xa95fffa83e967037, 0xdd23ab029645656c], [0xd856ec07167a95f5, 0x5c66acbcd2de513d], true, [0xd10913a1281bda42, 0x80bcfe45c367142f])
self.sub([0x43c8e676f7585f4a, 0x4a4200164457665b], [0xaaedc22db5a81451, 0xdb7ee9bfb664038], true, [0x98db244941b04af9, 0x3c8a117a48f12623])
self.sub([0xfbea80ca0cd5c24d, 0x3fed82ba61f2fcb], [ 0x2b76477a34aba33, 0x654ac60d1f156c4], false, [0xf9331c52698b0819, 0xfdaa2bcad42dd907])
self.sub([0x7c931ba36d56e0f3, 0x686284aface46ee], [0xf04fde78fce81bbc, 0x463a17fff88da88c], true, [0x8c433d2a706ec536, 0xc04c104b02409e62])
self.sub([0x8dfcb0cdf5edd01d, 0x700c4d481adc2d17], [0x90e1079cd70ebfe0, 0xf343546ea5f2f48a], true, [0xfd1ba9311edf103c, 0x7cc8f8d974e9388d])
self.sub([0x9ed81be6ac5054b4, 0x20f92a218a266233], [0x825b3781b17581cc, 0x50ca6ae962d1e15], false, [0x1c7ce464fadad2e8, 0x1bec8372f3f9441e])
self.sub([0xa74bd6bbd8588aa8, 0xb3768b2b5ac29ec4], [0x2fd9ccfa0048986a, 0x51a8329e8d453122], false, [0x777209c1d80ff23e, 0x61ce588ccd7d6da2])
self.sub([0xf88f5b010027c0ec, 0xc59c009f4ace54ea], [0xa78d6518eaed846b, 0x9e8d554d82caabff], false, [0x5101f5e8153a3c81, 0x270eab51c803a8eb])
self.sub([0x3bd62874db398219, 0x496868850b58ddf3], [0x3389250b84dc0e7b, 0xa4cdbb1cf274c674], false, [ 0x84d0369565d739d, 0xa49aad6818e4177f])
self.sub([ 0x350540a6c201c5a, 0x4c2f8e3fff66b92e], [0x5f4b4af212ed5425, 0x834a5e37583d3840], true, [0xa40509185932c834, 0xc8e53008a72980ee])
self.sub([ 0xf62c6d01779a863, 0x622e2fde898381ba], [0x7ef5b2ef48945fbb, 0x9d4da3a26766916b], true, [0x906d13e0cee548a7, 0xc4e08c3c221cf04f])
self.sub([0xc253ff42db1a9ec4, 0x59afd5c6c5f33bc8], [0x7f82a8d0482c2bde, 0x789c362dc77fc0f2], false, [0x42d1567292ee72e5, 0xe1139f98fe737ad6])
self.sub([0xc866aec2a7e5fc07, 0x704b80440cba6a32], [0xaabe32d003e372a8, 0xa4454d52bf426790], false, [0x1da87bf2a402895e, 0xcc0632f14d7802a2])
self.sub([ 0xdf1287207837af3, 0x54fe6340edfc5068], [0x84308bdfd7536635, 0xf9534d5d6eae9c2d], true, [0x89c09c92303014bd, 0x5bab15e37f4db43b])
self.sub([0x2f7a552cf9372251, 0x689b0d4a7c0f1809], [0x603ac9abf6db674e, 0xb58cb1975edbd799], true, [0xcf3f8b81025bbb02, 0xb30e5bb31d334070])
self.sub([0xb54278a52706463b, 0x9bb09c2261327c45], [0x548a438aa89240e3, 0x6ea13ad644403a70], false, [0x60b8351a7e740558, 0x2d0f614c1cf241d5])
self.sub([0xc59f88bdaec1e701, 0x39908f4d1e3ad919], [0xae48a8d560c4b6f2, 0xfb92b5184d687fdb], false, [0x1756dfe84dfd300e, 0x3dfdda34d0d2593e])
self.sub([0xd7d19f121eab05b5, 0x2d21fddfa4fdce4b], [0x7aa6672d6832fbeb, 0xe017f6833d1f9a48], false, [0x5d2b37e4b67809c9, 0x4d0a075c67de3403])
self.sub([0xa67bb634bbea11cf, 0xc80a4e0aa80233f3], [0x1fb86912fccd65a8, 0xa53423360619e02b], false, [0x86c34d21bf1cac27, 0x22d62ad4a1e853c8])
self.sub([0xef80aa6d495bf13d, 0x30392dd515f3a7cc], [0x379293d0390c1cb0, 0x875b7f46bfe82d37], false, [0xb7ee169d104fd48c, 0xa8ddae8e560b7a95])
}
private func sub(
_ lhsWords: [Word],
_ rhsWords: [Word],
_ expectedOverflow: Bool,
_ expectedWords: [Word],
file: StaticString = #file,
line: UInt = #line
) {
let lhs = self.create(lhsWords)
let rhs = self.create(rhsWords)
let expected = self.create(expectedWords)
let (result, overflow) = lhs.subtractingReportingOverflow(rhs)
XCTAssertEqual(result, expected, "reportingOverflow.result", file: file, line: line)
XCTAssertEqual(overflow, expectedOverflow, "reportingOverflow.overflow", file: file, line: line)
if !overflow {
let result2 = lhs - rhs
XCTAssertEqual(result2, expected, "-", file: file, line: line)
}
}
// MARK: - Mul
func test_mul_1_by_1() {
self.mul([0x374389ae78712d26], [0x811963247bdf116c], [ 0x0], [0x1bde83605b363aa8, 0xd2920239e9d89208])
self.mul([0xd5ffd875b0fd88c1], [0x1b824732ee7f1857], [ 0x0], [0x16fee344ddcda2c1, 0x32a0583330ba9197])
self.mul([0x6457be5d1160d69f], [0xca591280405baabf], [ 0x0], [0x4f5025f70e8d0b7a, 0xa417b58e504ab6a1])
self.mul([0x50b7cbcf0eb213cb], [0x8da772e3822e2166], [ 0x0], [0x2caa076093f27944, 0xac50ea7273fb0de2])
self.mul([0x9d0922d3c1f51ce2], [0x4d75690937c0190a], [ 0x0], [0x2f83c51502ec3f67, 0x2bffe132bae532d4])
self.mul([0xa27887e8441261b2], [0xbca207e37a89350e], [ 0x0], [0x77b759163d54f522, 0xaa143406a37d31bc])
self.mul([0x126d942a6d847485], [0x178b2dcfb39d022a], [ 0x0], [ 0x1b1dd1b79748ce7, 0x77880410753527d2])
self.mul([0x6a65256a07a904a3], [0x3448b58dcfa73329], [ 0x0], [0x15bac38082d755ca, 0x773a944ab953371b])
self.mul([ 0x6b1136453a03ed3], [ 0xa428bda07f42676], [ 0x0], [ 0x44a810c3a907eb, 0x4160fbc9fb4c4742])
self.mul([0xbd684dd05b1d533f], [0x1668274ac4c570d0], [ 0x0], [0x10940621ba10b57b, 0xf7a39baa27ba3330])
self.mul([0x12736222210bd4af], [0x60ffaa17852523ab], [ 0x0], [ 0x6fdb1fddd8474c8, 0x5134753e5945fde5])
self.mul([0xfda9fb33cae5bf52], [0x57ee4b7918697bfd], [ 0x0], [0x5720e32eee3b12a9, 0x31d35a99109c7a0a])
self.mul([0x86bb9e72d1c2a38f], [0x3fd73c99e5017287], [ 0x0], [0x219973754bd8443f, 0x7757e27dd908ee69])
self.mul([0x1dcc8bf9e949f407], [0xc69d606a0203457d], [ 0x0], [0x171e85ee2e1eeca2, 0xacc7af93c1f70a6b])
self.mul([0x4a20ce4c593c4631], [0x2f36d2af24415cc3], [ 0x0], [ 0xdabe5cd28a41531, 0x9e2de3e558941353])
self.mul([0x3d4e9fcf6c2ec1e3], [0x5575c7ba6ce392fd], [ 0x0], [0x14774fd3ac25fce2, 0x92d836e045121357])
self.mul([0x6564e23fc370774b], [0x8d83f642ccf6db13], [ 0x0], [0x380cd4c64bdfb880, 0xdd0e97651d780391])
self.mul([0xe04a0803d44581b0], [0x2dca73d80f41f73d], [ 0x0], [0x281e63518cc4541b, 0xba900f77e260b6f0])
self.mul([0xb71a403b436a6350], [0x4ff08b12cd95d447], [ 0x0], [0x392d25e73520e9b3, 0xa95abe56aa4fcb30])
self.mul([0xcb89296ba97e39d8], [0xe4360a73d82b4ba9], [ 0x0], [0xb571202215c42344, 0xfe4d47c4d68e7798])
self.mul([0x6cde29a7b9a79891], [0xab09c8c3a832f2b5], [ 0x0], [0x48bc8f034534b38b, 0xc2ffbe64a609f085])
self.mul([0xdad9b2edfcc6c48d], [ 0x472375fe9996ce6], [ 0x0], [ 0x3cd0b1429db8044, 0x3f275f77c2c512ae])
self.mul([0xfe7c07af0c212938], [0x7df36d78ee3c6ab0], [ 0x0], [0x7d348c4eca513517, 0x210199b5cafd8680])
self.mul([0x90d6242d072ee912], [0x31fc9c89a2e7feed], [ 0x0], [0x1c47e84897829d9c, 0xff2b0843e4eba1aa])
self.mul([0xf80e9fc3b70e1d61], [0xb622b623ac877900], [ 0x0], [0xb07c080352e46cf5, 0x95697ff75609d900])
self.mul([ 0x6ae71aafc6c87da], [0x33b23c1cf6b8c481], [ 0x0], [ 0x1596781bd561820, 0xddaddcd16b635cda])
self.mul([0x35e6a79742a75949], [0xfcdb5cf4b551cfbe], [ 0x0], [0x353d3cdcae422763, 0x64ba6fd0a67f4b2e])
self.mul([ 0x4bd42c2972adae7], [0xa61c0d6a32e3394d], [ 0x0], [ 0x3133e3d0f0104cd, 0x44fd30973b76467b])
self.mul([0x6e60f5bb4bf69f91], [ 0x8c3022378ea636], [ 0x0], [ 0x3c71c75155a23b, 0x4af9c91a9aebae96])
self.mul([0xa15504f6801fa7b6], [0x4a72ce0e8b2b63a7], [ 0x0], [0x2eeaed270b2756ee, 0x9215e5aed013c9ba])
self.mul([ 0x33a4e11e132eab5], [0x79303d1258852123], [ 0x0], [ 0x1872a9a369cc2f2, 0x302e1c5582406bbf])
self.mul([0xd757633867888d84], [0x42a25a96139d7e80], [ 0x0], [0x380d19144af8a7b5, 0xf91953c08fe1ba00])
self.mul([0xdad6974e6533cb50], [0xc833eb1bcb89e106], [ 0x0], [0xab2407f023339381, 0x18408f2922b813e0])
self.mul([0xe18d74df393a3b13], [0x141f7aca7100244a], [ 0x0], [0x11bac9725e60a4a3, 0x2afc8ba41e23bf7e])
self.mul([0xb9823082ca4f796c], [0x1a55cc14136012e1], [ 0x0], [0x13156509aed78a41, 0x84b9256df2e34fec])
self.mul([0xefc37f5e152a097d], [0xe161971cb14a6507], [ 0x0], [0xd316398c22ce3c3c, 0x1efb8d4e5506936b])
self.mul([0x525e29dae54aa743], [0x6b042744bd234ebe], [ 0x0], [0x226eb1999b802143, 0xc34dbd041878dba])
self.mul([0xe5c11d6a5ca8d567], [ 0xa520a03a416e6b5], [ 0x0], [ 0x9432bfe635e0ac6, 0xabc600e085f36bd3])
self.mul([ 0x6d69047df993a3e], [0xd2fcb62a1cd69444], [ 0x0], [ 0x5a2c26ea6b7c478, 0x24852efd72335078])
self.mul([0xb625f66477016fe9], [0x44ab85edd3edfe17], [ 0x0], [0x30dc201935a9cc89, 0x8114d460c3df3bef])
self.mul([0x17e7267c614cb9ca], [0x3be863f938f1fa13], [ 0x0], [ 0x597f8af342c8d55, 0x2ea787993d4b0dfe])
self.mul([0x9c8e201a81686088], [0xe0f2d527f809e9e3], [ 0x0], [0x8990dccc3c5659f8, 0xcb521e2fe4316098])
self.mul([0xc79a07b3a3dea458], [0xb545da4c3ba7d5b5], [ 0x0], [0x8d565e2ab11433f6, 0x7707d998988f6a38])
self.mul([0xd90bc5335c6c06f1], [0x5092fc236be6a5c2], [ 0x0], [0x44504c1c2262754f, 0xf3d7ea65a1dc97a2])
self.mul([0x6a57606841c7b804], [0x85fbe2d0b61b0920], [ 0x0], [0x37a806f98624f9be, 0xe9b7af7b7edb2480])
self.mul([0x9867232621a7751e], [0x1494d83ffd1043d6], [ 0x0], [ 0xc40ab1c6a5df94e, 0xe66e1846ed82c114])
self.mul([0x222ebdeec7f07903], [0xaa2e4d2f63ae5544], [ 0x0], [0x16b938d514b2a926, 0xcf2ebe9b5d1823cc])
self.mul([0x2ef7a705f29b43d8], [0xa3cfea219bf86ba0], [ 0x0], [0x1e0dd48d607d850d, 0xdaee177407a5af00])
self.mul([0x5442e15c11274426], [0x9900b9da31e47556], [ 0x0], [0x325c35dc2c7be7d8, 0xe66e1224ad2e42c4])
self.mul([0xd94c3abc5fa0eb5a], [0xd81c701ac231ce57], [ 0x0], [0xb770750d6d90a864, 0xf9d912433d4c6796])
self.mul([0xfb742de383a044dc], [0xa17f9fe81448e261], [ 0x0], [0x9ea16c8ff75ca75e, 0xdef4d33cea644f5c])
self.mul([0xfa73064c980d997c], [0x4bab5ae5dfdb2008], [ 0x0], [0x4a07569af9d1af3e, 0xf64f95a7c4b04be0])
self.mul([0xf8ba06c0c4f33478], [0x2078a2f6383fc393], [ 0x0], [0x1f8c766034a9d7b5, 0x1ba4bd5a822688e8])
self.mul([0x784fd83e71617a55], [0x9a5b15772d52cdd3], [ 0x0], [0x488ad68dfd8e88e2, 0xa977867fa287e50f])
self.mul([0x4912b833ba2856c4], [0x154a16a4400f09a7], [ 0x0], [ 0x613aefbfb548ad0, 0xef3666e7f0d97ddc])
self.mul([0xd4afc92153e57475], [0x448479643214aee8], [ 0x0], [0x38ecc0eae3cf0b3f, 0xcd011699f03d1008])
self.mul([0x6c9c49ea1088133a], [0xf194fb7d9daa44e8], [ 0x0], [0x667e56a29c8e549d, 0xc7aad7fc76f0d490])
self.mul([0xdcb61eed2b28db72], [0xbe21719f5fc6fb62], [ 0x0], [0xa3ec0063cdf1eb8e, 0xb96d88f29cf8c7a4])
self.mul([0x885d43fbcaca768b], [0x74b0ad2896c59822], [ 0x0], [0x3e285f297ad2d6ef, 0x53a4abd3d03d4676])
self.mul([0xee234fcf23cc18a2], [0x97e18462a8547be9], [ 0x0], [0x8d489c424e6cf7e3, 0xfa28cee109c04172])
self.mul([0x2ac8641d9fb50eba], [0x175c2e3728b2ca7a], [ 0x0], [ 0x3e768bbddd6af44, 0x9970024a473bc8a4])
self.mul([0x3c12295cb4265ecd], [0x314965c17b9f6925], [ 0x0], [ 0xb90b2f91aef9ae0, 0x9682ad3826c0c8a1])
self.mul([0xa17c37dc342a83fe], [0xdf1b472261f57103], [ 0x0], [0x8cbc69a1d972eb82, 0x84a9dd0af0d8a9fa])
self.mul([0xa9a609a2c4005c42], [0x932e532a53915b7a], [ 0x0], [0x61890a7b1389f014, 0xd91f1e2f30596d74])
self.mul([0xabf80bb2e1b39258], [0x4a792d2846cf9387], [ 0x0], [0x320719f4e52c1fab, 0xee41d2e687e2b468])
self.mul([0x1048bdb8d78af3ed], [0x4d200e301ebfc2ed], [ 0x0], [ 0x4e7eb0f59e82416, 0x334d83289c506c69])
self.mul([0x6a1b1b0c77dbbd6c], [0xc252b10502747b7f], [ 0x0], [0x508ad08cee128db9, 0xcde1ceeeb6f5dc94])
self.mul([0xcb78f094e685eb5a], [0xc8efbc8f827f5213], [ 0x0], [0x9fb507bbd0102fc2, 0xf4a27a1d76f94bae])
self.mul([0xe02a6f4014e01273], [0x9e6b09a8d7bcd231], [ 0x0], [0x8ab7eadb6356427a, 0x7fbc86e7ef79de03])
self.mul([0x7b4638547767dd36], [0x17e1acad3247d342], [ 0x0], [ 0xb7ffaedad7a65ac, 0x878e50b24a1489ec])
self.mul([0x6a601cb24ae005c2], [0x33ebf2d945545567], [ 0x0], [0x159330dafffd2d76, 0x5b4df719afb3bb0e])
self.mul([0x5fd5c1c86e5863c5], [0x4ab1c11a9f291a90], [ 0x0], [0x1bf6551909dcc808, 0xe8f49514616720d0])
self.mul([0xae75f32d669c92e1], [0x5dfd006f5a6321e2], [ 0x0], [0x400d4434b4e2c0fa, 0x9c5bf20dac2baba2])
self.mul([0xffe2dbb8df7a0884], [0x19684505d447b147], [ 0x0], [0x1965609c49c45a53, 0x767a8b430757a09c])
self.mul([0x81cf8d25459446ac], [0x9abfd5d0709cb61c], [ 0x0], [0x4e78212e1cd711e3, 0x2bcdbc91574602d0])
self.mul([ 0xcbe2a065458e710], [0x195bbf1f0ca1f5e7], [ 0x0], [ 0x1432336fb7f73ab, 0x75981c1d426acf70])
self.mul([0x47b334474d4375e6], [0x445dc0584ef2fba2], [ 0x0], [0x1325dbdc11591717, 0x4cc59ca190b51d8c])
self.mul([0xf1b8e296858c1096], [0x3f373561ab63c820], [ 0x0], [0x3bb0a0e338ffe4ab, 0xe747763aba7942c0])
self.mul([0xb9f3a1a2fa9db605], [0x55ed0dace380d757], [ 0x0], [0x3e6a1526b53ee03a, 0xb418827b10f70eb3])
self.mul([0x9a00019de51249a6], [0xca16bbbca2fe8eb4], [ 0x0], [0x7991ae36358ec6d7, 0xb403eabd5469dcb8])
self.mul([0x21e04bdba513ecbb], [0xe1b6fbed33a96079], [ 0x0], [0x1dde5978481a8d5f, 0xf9d8ad2807a40463])
self.mul([0x9e33cf478b2d4a6c], [0xbb2639d6258ab2ce], [ 0x0], [0x73a777d7e6f22543, 0xc4f55ecb3668fae8])
self.mul([0x1bea13c2f2665e3c], [0x32f3faed2c9a9518], [ 0x0], [ 0x58e52694941d83c, 0xcc2190af4e89c1a0])
self.mul([0x896bec952f6ba289], [ 0x5e3c1d95c31db49], [ 0x0], [ 0x3295e60bd8bb637, 0x8d03e73ff1f58c11])
self.mul([0x72e49a9890b1850b], [0x3eb921119a432208], [ 0x0], [0x1c26737c09a32364, 0x7d89013589189e58])
self.mul([0xbefce8190c5fbe14], [0xf473d3f7e7b567a1], [ 0x0], [0xb65f76f78939f119, 0xdf57113cbdd49694])
self.mul([0x4a1f9430eba4c4a7], [0x1c8a60be884a9953], [ 0x0], [ 0x843853e3e9dc140, 0xaf3082bd70399125])
self.mul([0x5649315de768527a], [0xe87735dcca86f949], [ 0x0], [0x4e5a82ea9ebf3922, 0x1912fe62e4d42eca])
self.mul([0xd9f2d36da179101b], [0xecc1c2a77bd74935], [ 0x0], [0xc990d0b311924cd8, 0xb7c0c7c473550897])
self.mul([0xbd00c8c3aed1bcad], [0x318e415d1735436c], [ 0x0], [0x24962d1ebe6620e7, 0x9e276a873faddffc])
self.mul([0x1e06fbb5476bae57], [ 0xdce154a2319c5d3], [ 0x0], [ 0x19e86e605488c0f, 0xac5b30dfa668a4b5])
self.mul([0xeea259126c9cc554], [0x76ae33bbf81035c2], [ 0x0], [0x6ea137a098283427, 0x46c2d9c478e7eda8])
self.mul([0xcacf526c52da8a12], [0xb03b91efbc11720a], [ 0x0], [0x8b9dba0fd228b7fd, 0x99388bd6f13768b4])
self.mul([0xd9ef17640f2256dc], [0xe1d542d0298465a6], [ 0x0], [0xc040b05e413093ac, 0x829f3d3861f91ea8])
self.mul([0xb8a40db27fd250ec], [0xea242f762ff1ae4f], [ 0x0], [0xa8e00dd272a6bbf6, 0xc76e1f97e71360d4])
self.mul([0x686979bc6418f335], [0x1e5cc437877ce8d3], [ 0x0], [ 0xc6232333a8edad3, 0x2de889b6dda47caf])
self.mul([0x331dd1cf809fbd82], [0x15545d319f5fd2fb], [ 0x0], [ 0x4424a9a9b6380e8, 0xd0505fd337517276])
self.mul([0xc8a229d038bc1e1a], [0x3986c80a2c6abb64], [ 0x0], [0x2d15bcf7e96f68d2, 0xa854bedc823cc028])
self.mul([0x2d652ffbcb8ce0ff], [0x25e262953b5b7823], [ 0x0], [ 0x6b7c4bef37eeab1, 0x9cfcfc309d5f4add])
self.mul([0xd8be91f586454762], [0xe53091eb66d91418], [ 0x0], [0xc20b97d73dd4ebfc, 0x4d4a51a28e245930])
}
func test_mul_1_by_2() {
self.mul([0x37ff3b467e8b2a35], [0x9e3f1c936fe684d0, 0xf893b6051d816d7d], [0x229d54a542f7deae], [0x1e1624166019997a, 0xdbe0fe3e50a12ce1])
self.mul([0xe9bb0355efaa4934], [0xece59ac1f9f9220c, 0xec05a276bcb3566d], [0xd84a08a8cf09f101], [ 0x25453f3ab7ffea4, 0x61ab91e59f74a324])
self.mul([0xdb137c38b1e661f0], [0x493d7d116d872e5a, 0x7c7f98735532d247], [0x3ead2d1831eaff49], [0xa9aa165320ded433, 0x5f26b1fc241c0990])
self.mul([0x9763e0cba2782b07], [0x8cba79c776e5145d, 0x9a0c2a411d8e8e65], [0x5338e584db0142ee], [0x49d354560e472f7e, 0x155a72c46a28dbc3])
self.mul([0xab3027120bf71f35], [0x16db474d685b81f4, 0xeb52a0407ea83e9b], [ 0xf48c53b1791fbb9], [0xa68b8524dc056300, 0xec9c6f9ba8f6bb17])
self.mul([0xaf621ce9d9aed53e], [0xfcd340704466e7d6, 0x78b5b7dc97401e6f], [0xad354e79780a3157], [0xd5b3a2387b40e067, 0x964f0facc14bb9e2])
self.mul([0x814c1c6f14d727a0], [0xae1918c911a463f4, 0x2815a9060b461937], [0x57ee6846f759183e], [0x7e99a4141082a478, 0x88b9742f32d82360])
self.mul([0xf89705a45f2d8bdc], [0xc2819c711167b0d4, 0x851d6f6ac5cb9697], [0xbce04e4a3af4d957], [0x57d9d682368108aa, 0x6164768f074466c4])
self.mul([0x532e1931cb58b7c8], [0xe69865ff9b3fd3cc, 0x3a91654be6800fc2], [0x4aecef25ef8fd609], [0x10888856e3019fe2, 0xdc823b7dffffd90])
self.mul([0x1500e3821d30e3a9], [0x2b538b6028d650bb, 0x8709d4d7ed116ea], [ 0x38e00effd4d5ca5], [0xd3814a62d22a3a92, 0xb338273ced399e7a])
self.mul([0x79335c40e9a31a3f], [0xd38a2dd6f50933ee, 0x676aee98765ce526], [0x6426c06d07b86a91], [0x84e34fc12a4217e2, 0x947f0ec00d54405a])
self.mul([0xf5db43983be9f88a], [0x62bb7e5fac75dc20, 0x5e85fa364a4c9754], [0x5ed200687466da10], [0x761030ae259c8fa6, 0xff1795b45756f348])
self.mul([0xb83fe20957191355], [0x769377e476f3b4ec, 0x8a9e4edc11ed8700], [0x555795293a171328], [0x88bb484cd9c82722, 0xcf87bc79c3e2d300])
self.mul([0xe8cd783461c903ee], [0x53925af004ce3370, 0xddddda0b7cdb5dcc], [0x4bffb5da0ad5c665], [0xddd955c61d9cdddd, 0x9805ad5b973697a8])
self.mul([0xfd2b20824ccca0b8], [0xf7ff39957bff4652, 0x7c65236a4455dd53], [0xf541034588db09f5], [0x3c9447a9fa42dacd, 0x701955dca2ef3a8])
self.mul([0x257898f624ee9008], [0x198ece9578f09bf1, 0x7d416d3806ed7b9d], [ 0x3bdae11ce1ea0f6], [0x48bd363390582653, 0x6ebcc4aeccea2ce8])
self.mul([0x1183a4c2e3ba9a17], [0xc817b518f6160dfc, 0x8540b221e0e91e44], [ 0xdb077efd8177e06], [0x7e287e5e48709cdd, 0x23dd0115ba8ea01c])
self.mul([0x8dea3c036219f76d], [0xcdccc29c22b5411f, 0x3df816841b432f04], [0x7216149897b5b0e9], [0x958fa7a831bc0b2e, 0xc427eb288d5be0b4])
self.mul([0x9d59c9a86c243889], [0x95b101a42c903d77, 0x10ae232bc628e931], [0x5c020e75b716c936], [0x3483532a050e2e3d, 0xb79d070f75cb8339])
self.mul([0x718390016072177c], [ 0x75a4a505f1e2e19, 0xd998c5443ba90fe7], [ 0x342a2245509a15c], [0x413264f3daae256e, 0xfd4aa58fcb2f74e4])
self.mul([0xca7c8b61cef86192], [0x6c98673b364eb59c, 0xd494520c9bebc86c], [0x55e51666f720ad73], [0x5d3b3a2bb494cb7d, 0x77d5eee254093998])
self.mul([0x2444ccf3edcc05d7], [0x90dbcd7bbd9a781a, 0x3ab5eb08966129b2], [0x1485d7412a79ad28], [0xe94e2af693bb2163, 0x612bc42335427e7e])
self.mul([0x170db4e93f0bf201], [0x2827e7d489a8633d, 0x1ee126109705abaf], [ 0x39dbc3b8360416d], [0x5d3b44cfdbca6378, 0x8e81059964d619af])
self.mul([0x78151d7247ec6434], [ 0xa038f6e641b1c07, 0x8eb640ac8aaaf771], [ 0x4b27ead62a087d7], [0xc20b89173da49dca, 0xa3cc6c5668e66f4])
self.mul([0x87f12fbde04ff4d8], [0x83affd4194af6d29, 0x7ff41e64c8a7b9bf], [0x45eddfc9fbf59e49], [ 0x44ff9acb35409fe, 0xb85b95959c7fc528])
self.mul([0x4108b147b75b2a95], [ 0xd2880ee5158ef7, 0x6ad7f24b8a439b7b], [ 0x357bb1d3ae74ba], [0xc2995ce03f3610a2, 0xec390ef0c294ac97])
self.mul([0x938b2185b184afb4], [0x41cf2b0741c24154, 0x512ac81acd5f6345], [0x25edb9cf9a82e2f9], [0x3004e0c9bc57b460, 0x8a8155e78081f784])
self.mul([0x71adaa3522eb8715], [0xaac8a71e4b73c42d, 0x73003b4c70884d38], [0x4bd66cea009794b5], [0x6322efb522b2e835, 0xdabec0956e4edd98])
self.mul([0x4a10b400af4de9fb], [0xbba8d303a327236e, 0x231e18411ff06f94], [0x364b0b7f724396f3], [0x2d275da3091c6751, 0x72b51583e1cf1a1c])
self.mul([ 0x249bbb9af34c6dd], [0x2a9d4f355bb8d8ae, 0x54c457956cf00e4c], [ 0x6180b9d2a3232a], [0x7ad6463f27d8b5ef, 0xb8a741b591bb1f9c])
self.mul([0xac2c844dadab57ae], [0xc7cd71ba969decf8, 0x96c6b9f2b2984b0f], [0x8660c6fb783ef9a9], [0x2a6cee3e2a2ca54c, 0x7528639d6b0a1d32])
self.mul([0x94f6f81d9a7aac57], [0x7b968fdaaf0a8eca, 0x3f9713d3d0f0fd6b], [0x47ea45a0cf543f87], [0x75f823015cd224df, 0x7deaf5c80f28035d])
self.mul([0x7b0534299717c560], [0x9a14857f5db22cda, 0x80c7cd8fc33a4f71], [0x4a0afdf000d919d7], [0xbfecab267549573a, 0x44dd5356df26bf60])
self.mul([0x2ed8b49f168b1440], [0xa3d28bdaecfa4e9a, 0xe5fe3a0848296167], [0x1dfa825d2fd4d137], [0x7e8db8c2d83eab04, 0x2fe1cf8502e165c0])
self.mul([0xbcfb0e0dd50c518f], [0xaf0d71085baa609a, 0xf3f2f944531b69af], [0x81398acc280ecce0], [0xc5f1d687d0f79908, 0x88b27f90a7f467c1])
self.mul([0x94da56bba7ad5e54], [0x65f5676115cfb4e7, 0xfd0419be032744ac], [0x3b48d549570deb8d], [0xa3a4b712fbae3996, 0x497be87b1055b070])
self.mul([0x542ebee584f678f2], [0x4d1d54e269d669e3, 0xb480301588ca7857], [0x195bb4a073b3b6be], [0x8330d9bf0750647d, 0xd5019ce9b7688a3e])
self.mul([ 0x612d05c19970308], [0x58c04d69577ccc0f, 0xc3ee9849d15cdd36], [ 0x21b079216559e89], [0x87f1f50fcf4d08be, 0x77218e8b62588bb0])
self.mul([0xb5a0bc9d6756651c], [0x9685613bd4e36048, 0xb7a61da92cc4e861], [0x6acad00292e0d998], [0xf426ebea5d386124, 0x88c1004caccdaf9c])
self.mul([0x22c96de4e9f62607], [0xa3eb992b79f83551, 0x28794c7d5ad59348], [0x164644b0ed30b3c5], [0x29d3af3ead9cfaf9, 0xbe4233513ee3b6f8])
self.mul([0xa515c9d27c258b02], [0x922301bbf381c411, 0x62e24d6b2435fac7], [0x5e3d0032ec4ffea3], [0x5de192c6536f456a, 0xa7551f033a59028e])
self.mul([0xa4eeef998a66bf1a], [0x99ca6c73e9d83d53, 0xf06c4c6ccea46d97], [0x6315379b4df1ced5], [0xc54426ba5260bc45, 0xf3bb620fbaa0ca56])
self.mul([0x9765b9f4a345081c], [0xa766f282c9d82fe2, 0x545a87e180df4101], [0x63003e4230cb7f85], [0x2b508aea4a51b0cb, 0xaa2479353ab8241c])
self.mul([0x9c12600e553d9885], [0x6ce0a1075f835ebb, 0x361274703a334bf1], [0x4260b2c625a51f0a], [0xfc9ad910cf173045, 0xad048e7acf2a8c35])
self.mul([0x6b928deedd7e136f], [0x6642d867cef78a5b, 0x359ac22cb9e11b04], [0x2af87b450a85eefd], [0x3692386374cafef4, 0xc86ea6060d9402bc])
self.mul([ 0xda6c81c1ee7f50e], [0xba6f0a6c25f4f018, 0xd7617f73f927403], [ 0x9f119437ad99e61], [0xf5b9cd55c8a59422, 0x1a8b7e6fabbe372a])
self.mul([0x1733cb35182fcc4a], [ 0x5ed353f2813156d, 0x4e888f74612bfe8c], [ 0x8982be9c1325d9], [0xf41fe4b38df6d07b, 0x101ce30001432478])
self.mul([0x338a003c51894f97], [0xa236a7915e505425, 0xea7118dcee4b0ec0], [0x20a854fe82a06ad6], [0x3c8e3844cfe4d148, 0x721a92af5c92f340])
self.mul([0xff1ca2b135f34d18], [0xa6b71c446733c579, 0x95f69aba1a771ec3], [0xa6230b2281e80ad6], [0x86666c89e7d7c8b5, 0xe9f1eeabe1848948])
self.mul([ 0xf3aef1389773668], [0x21211942e0dc038d, 0xbf7176829b946bbd], [ 0x1f890eb122849e4], [0x2d2d41ace83dbb03, 0x497be38dbce0a2c8])
self.mul([0xf2502850c2db162d], [0xb2175f7ebc7a5aa4, 0x115e66fb14dcc769], [0xa891db9f7b8e54c3], [0x7ca743ab3a97115a, 0x20028eb9ccc51375])
self.mul([0xb737770bb3b62cd0], [0xa581d0e30ee0f0ca, 0x31ca9786000a8ee], [0x7673a82d19481072], [0x656d03c11a70f33d, 0xf6cefd1ea0c62960])
self.mul([0x8f9960a0dd2fb470], [0x39f62ec95c9a0930, 0x95167d28fefc70af], [0x20833e252e8f7736], [0x258ba80bc366f851, 0x8a1d6038d0cd5890])
self.mul([0x93a8e84a088df743], [0x51516fead9a8b5d1, 0xe1ca3b9fcc2db583], [0x2ee76a7e9ec98a27], [0x7c611a51dfd70f7b, 0xd586db899b3ee649])
self.mul([0xf721441d71cfecee], [0xb1c4043fa0cd4186, 0x750fc0f33f33bd94], [0xab9b39aa73b70e7f], [0x6783a8cf0fff04c0, 0xe1675bb1138aaf98])
self.mul([0xc499f65f66d2893a], [0xc41d1b379ff295ba, 0xe1b5e139897aba56], [0x969c3af8e86dc1ce], [0x87ec173c89e38d8a, 0x4fb64870f2123d7c])
self.mul([0xbf67b122f0beeb7e], [0x5af00ae5611e625b, 0x13b89110d0ba9e44], [0x43fdeda1e6aea53e], [0xabd62a0837a2caa0, 0xb9bdbdcb419a5178])
self.mul([0xcef7d1d5d976cb2b], [0x3361ff565ba82307, 0xb5843ef0ff3590f5], [0x298a9922c7b8987b], [0xc46e213b0dbe39bd, 0xbbd65843d5dfa027])
self.mul([0x49d74e0e2c43a234], [0x60779254b6d57359, 0x852bbc77526846b6], [0x1bd33a8fd3164510], [0x8e75c48ab4320eab, 0x1fa399c8838f88f8])
self.mul([0xd6d1575178dadee9], [0xd060bf428e537ea1, 0xc88f253eb19ed370], [0xaedb45f0fa4ba1ee], [0xa77e93ce89334f24, 0x32c6eee3f24990f0])
self.mul([0xe0e1e8061e19d17d], [0xc38445a40ac6bcbb, 0x8631837889f68453], [0xabc0456549cee17e], [0xcca7e7fbf5206faa, 0x7a18490445815f87])
self.mul([0x13742f313b50172b], [0x6db3ef5388194e5d, 0x425744261701c818], [ 0x8562484c6bf7b92], [0xc29bb9db8ae7fac6, 0x3cf02cbb15c6c408])
self.mul([0xb1cd0061e73bfee6], [0x29f5c2eeb22bda72, 0xcf36b9f585468df4], [0x1d2485a42e5a73e9], [0xabd1245ab61247d4, 0xbea4d79fa177a138])
self.mul([0x7b5d09bd1c9bad83], [0x47ddd5009f93eb4a, 0x966bf72557f46136], [0x22a1b3a99131492d], [ 0xc2311c6d088d65e, 0x71f35b02eb713ca2])
self.mul([0xd815f023c9e1b069], [0x2d83a0845e218428, 0xadf7411d11fae081], [0x266af5ed9da783af], [0xa030fc1b335a838f, 0x4f331ab0749fc4e9])
self.mul([0x284b040e095ae95d], [0xdbcca319bfc463d9, 0x95dc4ecad3b07498], [0x229861eb0e477095], [0x270b328a93c3cefa, 0x77f9accd6a8b338])
self.mul([0xc9b3741befa979d1], [0xa0ba4333383f4ea7, 0x5cc32a1ff443db2], [0x7ea2e9e6248aa117], [0x30ceaa666eb56f14, 0xa7834b5490618052])
self.mul([0xed73bd8bc8bbf61d], [0x8d233746193fb3af, 0xd87ff32986bf077f], [0x82e9697dca763843], [0x38b4ee0666de822d, 0xae11f38a869ce363])
self.mul([0xba152a38a44a7339], [0x6226046828c1ad51, 0xb8dd884f3a27aaf5], [0x4757bc81fe2f0346], [0x377c11ef0f9c10f0, 0x1889c15823731f8d])
self.mul([0x3b5b88abdec2b456], [ 0x69811212e1e667b, 0x46e330377c20bd17], [ 0x1876785f2d65ad3], [0xb02ce65b67dd3175, 0x8693110f561b1ba])
self.mul([0x1b9f788266114292], [0x2eeb86201ad08d8d, 0x2f7f2061f739dd0c], [ 0x5101183fdf2d09d], [0x5cac9dcdde63f3ff, 0x4550129e5fc928d8])
self.mul([0x65816fcd6ea59ced], [0xfd9088e9f8a658e6, 0xa2a5b3aa5e92fe21], [0x648a3a9672b3277d], [0xa2069822ce784566, 0x19dc13b81a36608d])
self.mul([0x77d3a29b6e5605a4], [0x5e16ff63ff1cc295, 0xac3a85f63ccfb16d], [0x2c0a796fa9190bad], [0x1ae74f6edcf02eb3, 0x70d3b3f07422cad4])
self.mul([0x6ecb86b63232eaf9], [0x7996a0914a989650, 0x26bbcb895c93b686], [0x349f636b223d864e], [0x3895944b4cc83178, 0x5c6d5cfde2af0456])
self.mul([0x972680a793df453f], [0xceaa35d5fa98be3d, 0x3218b9bff5d849b1], [0x7a057ae197e761da], [0xaf15a4b289725e7a, 0xe2bf5fb0a045d78f])
self.mul([0xbd6d064c30f315a7], [0x89213c27f6717392, 0x22d9ff55385ddfa9], [0x6577efefb574edb1], [0xb2193d2c435770b4, 0xe5af056e7600c43f])
self.mul([0x99bb34bda9858d28], [0x51d7c0dcb80577ae, 0x54931b2f7c33c9d4], [0x3125cbba40de0964], [0x1c536247963829ef, 0xeb62f7cbd654d20])
self.mul([0x73d185b7ee4c0c46], [0xaf45ba1f06d0d26d, 0x3c69544969fec96e], [0x4f4bc6160b156dde], [0x854151c16030e65f, 0xbbacf794fdc43c14])
self.mul([0xb45fbfd3da0207fc], [0xb45c5b6c32fa84c7, 0x5641ac23e8ff7c90], [0x7f1465b42aec38bd], [0x47d707fd09f58782, 0xc2feeb79f1068dc0])
self.mul([0x39233eee48ed2cc4], [0xb6c31aeec24d3bde, 0x820920982c5a9fa3], [0x28ca9a9935e0d213], [0x9e5e9e657c0c6e79, 0x67248c772ab93ccc])
self.mul([0xb875b101788e4f4a], [0x2f6456c6b5ca74d0, 0x76ad132d1a545f38], [0x2225e7ff212fb4f7], [0xda595e58d94dfd40, 0xb310b4d0b6d5ce30])
self.mul([0xb5297b35175c9393], [0x7e85e44a15ddc25a, 0xcfba2fdb540e5ef0], [0x59892abe8346ef56], [0xa4443084195609db, 0x4bcae397330453d0])
self.mul([0xa2c53b82fc40c36c], [0xf6d3c80221ba080e, 0x88585c8303743500], [0x9cf02eeb5cd6a65b], [0xf237d65ef3a9e76f, 0x3e1ffe2039655c00])
self.mul([0xee304bc45852120f], [0xcde26d3d1c90fbae, 0xba4f9bdc048fc6be], [0xbf8f58f28a6885ed], [0xf60d83bb494f62ed, 0x9698500d59420122])
self.mul([0x495532b45b6676c4], [0xe100d8043d03152d, 0x76f16571d29e46d4], [0x40741f719dec3577], [0xbae8d866a6e9fecb, 0x304f8587ca4bf250])
self.mul([0x1abdb73cbaf074d8], [0x365de70382f96180, 0x247f09cbc0033893], [ 0x5add3b3eebdf828], [0x82d1c9da4ff2e102, 0x94e0487f502a5808])
self.mul([0x93a95a21c852d948], [0xdf87be29e0c96473, 0xf9f7f17f3a5eef3c], [0x80eed181cdfda9d3], [0x3fc66f7d96993d8f, 0x82bf904e64b524e0])
self.mul([0x2d80d0ddc7ae9d61], [0xdb0640de26125853, 0xc30b3cef032defdd], [0x26ee4f3a4fb602bb], [0x4281c2c3cff19b68, 0xda992bfa33b86bbd])
self.mul([0x9868eeb45b46f214], [0xc79cf99781309649, 0x5f8375db1c9cd9ba], [0x76d70617ebd7cc01], [0xb6f50e708ce24685, 0xad07ed3b28eed688])
self.mul([0x96979ccb93e578cd], [0x564aa101d3dfec0f, 0x2b6578b6ca6621f1], [0x32c2d536235e2ae2], [0xbf5161b10de390fd, 0x3965d234b34725fd])
self.mul([0x5b3d79178af5ef38], [0x4a7b87ba54ad2973, 0x170379d47acec0f4], [0x1a8bcbe9d02e23bf], [0x3375df3b2a4e8ba6, 0xe1f7aaf014e20160])
self.mul([0x486318dc2b9ad02e], [0x4e32b52e92de387d, 0x310c8319b82bc1f5], [0x161c88292c332c25], [0x2b7bd7c3362a14bc, 0x73b53eb579d5ea06])
self.mul([0x869ab3d2fe75e870], [0xbfc68fa9251b8074, 0x160f90ba3e98b7fb], [0x64d5d35adb212be4], [ 0x8f1586b93277835, 0xe21ba972e942f5d0])
self.mul([0x7dd939c9ad332cbc], [0x5ad05fc0f216fcec, 0xa445f2778e2d7081], [0x2ca4cde251208b78], [0x1bafebdd802e1bc8, 0xdc03b299cf67cabc])
self.mul([0xf96673ad565af7da], [ 0xf77d8e40b654676, 0x720721cafea1fd9a], [ 0xf11c2b38995d116], [0x2484f27126b9cf84, 0xbc5621c205c58b24])
self.mul([0xdb41ef4f7bed8946], [0x8230e51f7f5b4e90, 0x6a6531555a455730], [0x6f815c2030f7da2d], [ 0xd8beed6a802089e, 0xb871c58b920e8720])
self.mul([0xc060b3843921a009], [0x888a5e8031dbef33, 0xf1ef385565d40f62], [0x669b5a82db5cc113], [0x2824a42fccee50b5, 0x582626efebb3ca72])
self.mul([0xf8c992320778e68f], [0x1eb472cc8a1836f2, 0xbad7604d03542e22], [0x1dd6fc6d31fc6453], [0xbf3dcb89d47622c4, 0xef773f5f0b6850fe])
self.mul([0x384bfb64d1856058], [0x97027c2e496cc51a, 0xce8c4d8f0ca7c040], [0x21355d2f69f0e68f], [0x153178ed93629d5e, 0x6fbcae0663021600])
self.mul([0x31adc9e948d2657b], [0xa2d7892b3444bab2, 0xb36a0e063645bd7f], [0x1f99cd589664b27a], [0xdb0fef22dedae040, 0xd0ee827dc1732705])
}
func test_mul_2_by_1() {
self.mul([0x17be6098e340917a, 0x2a2025b335c48e15], [0xb0e3d296d73429e6], [0x106803c0ec8da3f3], [0xf3e1919c5a23bac7, 0x53d20c2d489d03de])
self.mul([ 0x3fe61f2d0748e91, 0x4cf7fba6e936bde2], [0xbc19c249c0926e19], [ 0x2ef36cdce90f68c], [0x10bd9877bf38768c, 0x4606c49616d3a712])
self.mul([0xe0599ea5a5792a8a, 0x6cf789fb44f24c48], [0xec0a48273af4fe5a], [0xcedba0fc7cf4edfe], [0x17922a258d52fe6f, 0x5c384befa97e4150])
self.mul([0xefdbb438a1de953a, 0xce39e3f97918fd56], [0xf43ba8460c6740ec], [0xe4d54d12534cf0ea], [0xfbdff6455e2ebda6, 0xdf5122b3d7f90b48])
self.mul([0xf74f675c23be03c7, 0xc24896930223ff55], [0x50bd3e4208e5898d], [0x4dffa211204af504], [0x7eae9f2ac5d34c6b, 0x7b010f3580811ed1])
self.mul([0x786c711b1b1caec7, 0x190679f3e088b184], [0x75ba4e6c34cd98ef], [0x3761335f8222862b], [ 0xd0ec3ef56c51b70, 0x15045534bfb81a3c])
self.mul([0xeb69519b06b5909a, 0x2665599aa822667c], [0x5cfdad1981e676c2], [0x55831f96fd819d07], [ 0x9ae7aedbdcdfe46, 0xc2f1635bd4b6d1f8])
self.mul([0xc0151ab6f09bd811, 0x5c72189e0b45b881], [0xa77f8fa9b48c062d], [0x7dad7ab0b709c164], [0xe80dc5b563c8c680, 0x95131410382074ad])
self.mul([0x8aec39ae3b25e4b3, 0xfae7c63635fd70bf], [0x42db31200970466a], [0x2447d99cdcfd2911], [0x2c0e2ad580fe827c, 0xd77013edb254e916])
self.mul([0x7f39c1f640dce2f9, 0x16db6c62e135a8a3], [0xa0912caaf08f29a9], [0x4fcc3f23a6433773], [0xb99f6b7d95d74670, 0xa4857ea8477b6e9b])
self.mul([0x6a72f2ce039e0bd9, 0x7cafaa13274fc5d5], [0xf88cfef0d5ade742], [0x6759fc168db11280], [ 0x89cb2794224f309, 0xff6df9c080533ea])
self.mul([0xfc2779b41d2d0efe, 0x94c93f71fcc395f], [0x204e87d3da442b4e], [0x1fd24907153a9338], [0x4bc42ea0ca0f6927, 0xb36e550a21186ff2])
self.mul([0x25688b011308505d, 0x6e81a7c1fbec219b], [0xa91ed72bced57fd6], [0x18b6857533374ab5], [0xee59c45e41304ecf, 0x43c6e8ae6c06fc92])
self.mul([0x966c5520b2102956, 0xad5e601e8c095d0a], [0x91b3dafc59a178a0], [0x559d0aa39283d722], [0xbdfe50d388b128c6, 0x345fd1cfe6c0d640])
self.mul([0x46e5c85783625877, 0x1c7b8190a5fd1897], [0xc6a428a477ecb537], [0x37032f697b669e29], [0x65ecce911b229592, 0x8c5d1fec77f70b71])
self.mul([0x3ac09c1b080a5903, 0x63b783a9b8366ae8], [0x9f22f5ee920ccac6], [0x2485a6fa9b914714], [0x7631913bb8d6f3b4, 0x868ed7d4bd51bf70])
self.mul([ 0x2c38e58ca95317c, 0x3f2219b517f63e50], [0x5b5f2bc5ef0330e7], [ 0xfc8aa45ef04506], [0x34fd410f92942643, 0x17bab68635d13a30])
self.mul([0xc9df73cf35f7274a, 0xd1ba70227e7589fc], [0x2fcd06a8421b58ce], [0x25b1b372b3529ed4], [0x4ceb8b62f32ac3ee, 0x13fa3092af97a8c8])
self.mul([0xdb128c8b6931f83e, 0x503a97c84bbca203], [ 0xa05bc2fdbd363f4], [ 0x893a1e4c490f493], [0x5ec1838a0cb6c2f6, 0x4a16ddd13bea93dc])
self.mul([0x165422a010b17300, 0x6b172df93390ba80], [0x9780ff21c20319c7], [ 0xd36e0be7a22f24a], [0xef1cacb7d7208fc0, 0x74eee54767377980])
self.mul([0xfd359d8ecd22a15f, 0x14ed91a1d4afbc76], [0x22b1be9d291d4f64], [0x2250ed8824769f08], [0xe21ef44baa5e9c78, 0xbe5f394e8f2c0818])
self.mul([0x9ec3c4b0f035c1a1, 0xa008849944c2fbf7], [0xce893849e9027aa0], [0x8016a1f34d57512e], [ 0xa0f2012289515e1, 0x7932ccd8acdf3060])
self.mul([0x68320261b2de2454, 0x2a680d7ff53e3b4b], [0xda8ef19a523a0eea], [0x58f4c41a684d707a], [0x5be66ad0c0cf5b02, 0x5e401b95071e4c8e])
self.mul([0x8112d1f429d84bc1, 0x24f25a6d4524516a], [0x5b482beb13e01f37], [0x2e061411871bcbb6], [0x8bf2dd37b35bb2d0, 0xaa9664f95b6953c6])
self.mul([0xf68891e3dc45ea3b, 0x3e9293cfe523ed06], [0xe1d963344d9a0cec], [0xd97f61861da35914], [0x5f1011497971aacc, 0xa1151f844fd6c988])
self.mul([0xbad6f4a27c4af8c7, 0xc939b28e2d38d619], [0xb2d1e087b528ebdb], [0x8282a375d4b4a151], [0x6df64464822d75b3, 0x482c4a93fd101a63])
self.mul([0xb42c3bb1f3fc1402, 0xd24beaf4a589a63], [0xd06950c6b1954a06], [0x92ae0f7ebc1351a5], [0x254c7ef1ee48dcaa, 0xfca047ba9533c52])
self.mul([0x23dd70b419c3c69a, 0xe21265bd80db761c], [0x9a3b437645c3455a], [0x159b8348d758d61e], [0xbe44ceeb5190f085, 0xe87deb42f75111d8])
self.mul([0xbf9f7b8ff5fffb5d, 0xf875ba2ab49740f8], [0x60ab174b1f654b96], [0x485bdf4d14bc94fd], [0x65c0d3286c41d2f9, 0x960b7920ca80b950])
self.mul([0xfd626e89baa49cc0, 0x7327ef4ddd265ae4], [0x54c6024ca348fc35], [0x53e848ad4f782ccb], [0x377df9c97057fe22, 0x18fb932946894134])
self.mul([0x89871f48aa336c56, 0xd26f06ecd27c798], [0xae5f5f06de14569f], [0x5dad1374d4bae9cd], [ 0x7fc8d0a5d27e98f, 0x11ed297e30a20768])
self.mul([0x7e1ea476a9f55123, 0xf84e1ca1b3c916cf], [0x6b82d92c4fa2c4d4], [0x34f7454aeb34570f], [0xfdd37af7079e4dff, 0xe86db96d27fb5f6c])
self.mul([0x7b9b6bb9d1667af5, 0xf6ff191e9c05fb4f], [0xc436e82eac73fd2a], [0x5ebd815e6056d059], [0xdef6a5296d4a597e, 0x6ebe3af27ad54df6])
self.mul([0x8a7bdb95beb1bdf3, 0xcce77675469ab1a3], [0x49f72e08f7e39a3d], [0x28030805ac4811bb], [0x63b96fd1c14ef327, 0x218c7a12aa4161d7])
self.mul([0xc7c0e8ef7bd2d43f, 0xbb5c4a0b7a2a4ab7], [0x94d15b1d82ee7a2f], [0x741ee24138eb88f1], [0xdfa116bd03060bd6, 0xb6b0a150f980ed99])
self.mul([0x7deb50b7a6e6a535, 0xd9f6aa8d312caea1], [0xba0161b663076658], [0x5b7da6a09f91d7bb], [0x17c39b944924011f, 0x52fa957be572d58])
self.mul([ 0xfbf59b93c8362c0, 0xf7355a4c783983b], [0x70826846a8996b91], [ 0x6ebbcd6afaf0204], [0x2da2f65ee8e960e9, 0x69529367b56ce26b])
self.mul([0xf289632919b23328, 0x4785678419158421], [0xa1da484a7b04ba7e], [0x995734d87e4faa80], [0xeed59bb9b1cfa044, 0xc9782199e61b023e])
self.mul([0x914aa66692ffee01, 0x43feae96c3c9c00b], [0x6adb6bbf4b931314], [0x3ca570e997c116e7], [0x44cfba237a56a5f6, 0xe0fd3da0c454d1dc])
self.mul([ 0xf054a34b32fa5a5, 0xf4f29fbcb87021f2], [0xcbef708f1d1631a3], [ 0xbf73e62c76a7a71], [0x1ba857c1ffe8ac36, 0x2e9638203ab0ef16])
self.mul([0xc31d7c44606aae02, 0xb90182a25e97535a], [0x55b3b44f5bce8d19], [0x4151c14dcf452bb3], [0xef38c6d59278c3ea, 0x7d9d1920a61bb5ca])
self.mul([0x9854449467e44ab1, 0xf48b6b5d4afb71a], [0xb8019cbeded051e0], [0x6d7d86e3dc2adbb0], [0x24bc00516d636322, 0xd8b4543f03cf70c0])
self.mul([0xb9636d67d048c246, 0x8ff86c7c5b9b4947], [ 0x6fde62d44bce7d0], [ 0x5103283ab0742c9], [0xe6838122edaa34d7, 0x8ab18caf396e9ab0])
self.mul([0x20c693ae5937bfa2, 0x148136b1030267f], [0xc775016cd10d1f0d], [0x198957bcbb26e4f8], [0xebf6bf53324eb20e, 0x852bd1d94a8e5573])
self.mul([0x1bf52ae32f031e91, 0x550b76b12c1e5ca], [0xad6598cc7cbb8c64], [0x12efc66558daf507], [0xbe62f40d8696659b, 0x4dc7dffe0ff63ae8])
self.mul([0x3b90d2772c5a292d, 0x3b82789b14f9dfb1], [ 0x5cae4aafe1e2f43], [ 0x15909972aa55f60], [0x35e9c018c75625ea, 0xf8189a3432350a53])
self.mul([0xfa5568461ec1646d, 0x28e2c09c428913a4], [0x5dddc59be2ca5e5b], [0x5bc9e3d8a66e3045], [0x529749c0d86d530f, 0x70d73c64358334c])
self.mul([0x6fe75f7fe56f0abc, 0xae96accfbfb9b818], [0x5b7587bdc485f3f0], [0x27fa9f071317faee], [0xfd9aed41b7760300, 0xb12d93e80c535e80])
self.mul([0x42e2f1ebba5bdbe9, 0x4fcd6731e3aac3], [0x1ecbf81ccb55f734], [ 0x80be322d612c8b4], [0xdc71abb593d68a2a, 0x5c2bf86d1fbfd49c])
self.mul([0x6c718c9be1dd9ca8, 0x96a62d8c7950c29a], [0xb2767df6ba400c60], [0x4b99257728910ff2], [0x15275c1951147bad, 0x8552ddedd1e831c0])
self.mul([0x4a8e7a006a500929, 0x514484fb5f32dc61], [0xfae7630c14ef72fb], [0x4912868d1c26d655], [ 0x7a7f63e70e79ec3, 0xb2a7041a4f90451b])
self.mul([0x5dbbf0c8d58e6ad7, 0x22947bca0552cadf], [0x6a0e066c7cf873d4], [0x26d4f4547418f0dd], [0xf178f8ea05e41260, 0xbabc563d25ba2dac])
self.mul([0x39b79a64dbaae5b3, 0x4b6f50f0f63121b0], [0x8c000a396b9abd21], [0x1f906abd464d6746], [0xa96af61f8695304a, 0x4c3757a4d61447b0])
self.mul([0xf57115824ea81f71, 0xf8ae748663e137f0], [0x893cff613fbedb32], [0x8393ffdca8062b55], [0x57608365cda51849, 0x1962898cc0f73ce0])
self.mul([0x9fd3e05b53923eaf, 0x68f86ea0cd188975], [0xe7cd0cd4a6f50c22], [0x90b8341fc3c1570c], [0xa27b4099f30da12b, 0x5f84bd79ceacbd8a])
self.mul([0x2e08f7b64eb56410, 0xb5aeb849502385c0], [0x179ba0fcf5b5da86], [ 0x43ecaa27449052c], [0x4865cccf9d9b3723, 0xa9ba35bc833d8280])
self.mul([0x533575d65b11902e, 0x58b0f8ed0a1973d5], [0x3099a0fa4a8fd999], [ 0xfcbf55e6246fa6e], [0x9a7e07edb034346a, 0x85a6f0efe260c74d])
self.mul([0x3a4e202a3a1b011e, 0x1eff0b1adfb71a6], [0x743108ba38bce8cc], [0x1a769184251a2999], [0xfe67523ca5b0a9ae, 0xdae35b6249450048])
self.mul([0x23ba85f81a3352f4, 0x9dd2c308625e4d7a], [0xce2a871fa8927aa0], [0x1cc60743678c8171], [0x21341fa0ac97cdfe, 0x564c9884ab709040])
self.mul([0x707712300d4d5804, 0xa8b3064fbbda056a], [0xa0acff7c3d40dffe], [0x46966b9b704cd301], [0xd6df2b18ccc12d70, 0xf408d6e2e988b52c])
self.mul([0xfa3c787c69d00f6d, 0x77ad93a84253120b], [0x2df8077bd9a870c2], [0x2cef13134e3b46f9], [0x5559652afecca7b0, 0xb5d76b9ec5107c56])
self.mul([0x7b3cdb8a478eec51, 0x1b3554740d92922e], [0x29e17169af624139], [0x1429463ed74ac489], [0x96b844e3a4cc59f0, 0x5f17ec30a45c3a3e])
self.mul([0x53171db31197b39f, 0x23df163c1c63cd12], [0x375d4d0698adc893], [0x11f83fc75adcab8b], [0xa608f3136d2286a0, 0xa68264528aaed156])
self.mul([0x84d4cd74366579db, 0xec67e86a3dd2ea51], [0x603dab26691abd27], [0x31efcc8e9c734b7d], [0x3dbb879f80e4d91c, 0x2db0846127597f57])
self.mul([0x48b245bfdbdbdc1f, 0x5e0cbb4e4aeaf239], [0xd9d74282ca4566fc], [0x3ddc3dbb4f7245ad], [0x90ef7e0cd1cef34a, 0x4701da519f26261c])
self.mul([ 0x7331cd83df029b2, 0xb8ca2532870010ab], [0x26ab6a767df9e7e7], [ 0x116686adcaed740], [0xa27f5369a5c4967f, 0xc52ffc6e956c574d])
self.mul([0xc3f64eb1e47b0beb, 0xc5f1870427d3b729], [0x91031eea9558645c], [0x6f00e6201d2e2bde], [0x2d23936dac554959, 0xe59d48e8d6b9d6bc])
self.mul([0x5d1fda25099c7d93, 0x15ac00347072503c], [0xc7cdae71ea886da7], [0x48ae948990c68d04], [0x8e2daeb874f6ea39, 0xa2f8e2a37e9be324])
self.mul([0x6bf12c65c7aacf89, 0xf3565fb31d120322], [0x106867f3720e7d63], [ 0x6eb189514b56423], [0x71509b89345f3abb, 0x830abb1d595ad026])
self.mul([0x71695c7340fc6c02, 0x9c9e717c18bfdd7c], [0x15f897001cd8f0b1], [ 0x9bbc58c364b465d], [0x89f5ac96924e845f, 0xf1ed01d6cec62bc])
self.mul([0xbc46176a284b79f5, 0x49fccdde01f2dd26], [0xde4ba626147a6c60], [0xa37c6b085fb114b1], [0xfd35ba47fb2debe7, 0x5d303abb8c7af640])
self.mul([ 0x20d615a7a45ac3f, 0xef9d9b4ba0667168], [0x3f9dba6147152119], [ 0x828ea878f3a39a], [0x53eafb47f01ccd0f, 0xc818045304277b28])
self.mul([0xec039245246cad04, 0x23f9ba110559175b], [0x7ccdf9adb226f58e], [0x730f9fe53af04e99], [0xfe05fe893973a487, 0x74a18884f8470b7a])
self.mul([0xaf343dd9c749f7a8, 0x3f29a03ad6ba9d28], [0x85e55592b116e24e], [0x5ba3186e35e01056], [0x8dc19a485f6f25d1, 0x3b0c270055093230])
self.mul([0x839d75271f86260a, 0x618fb4f4f5063c22], [0xc1df5a131c23a0fc], [0x63ac89caba2f95a0], [0xbaf08e64474eadb8, 0xc711d339085e7178])
self.mul([0x9184aa7ceade9d46, 0x39a240fb5c4729f1], [0x8b6477bc0d4b168e], [0x4f3c2473fc8e4e9c], [0xf0142bb4aa26a5cc, 0xcccf1f51d3aef9ae])
self.mul([0xea912ab8d5d67749, 0xb57f30ada3613137], [0x25499b6fc47fef78], [0x222a6cfe3378c728], [0x6dd05c28c12c0666, 0x94eb07aad8ca6ac8])
self.mul([0x5de9c8e44b7a6460, 0x1bbfa3857ef1233e], [0x4b12ba39a389f42f], [0x1b8a5c9c032c3a48], [0xe1b21234724be000, 0x5df69fca7a0a9062])
self.mul([0xb237598c8525f57a, 0xb851896d870c79f8], [0xf2b2804ce569c66f], [0xa8f496744e7c74af], [0xb6938d4422462628, 0xe6800fca1376b288])
self.mul([ 0xba966c3e0bb6758, 0x19cd19a67f746077], [0xed027903642e8324], [ 0xacbf0f95db45435], [0xe302342a11f819df, 0xa68f8b9f4b1c75bc])
self.mul([0x6ae6c2d5cbaa6c07, 0x9a98fe554879619e], [0x82815dbc86e5f7f8], [0x367f345d4dbbbdaf], [0x2e201b9bed944835, 0x460c1f40591c0310])
self.mul([0xa08a1af4b57acfd2, 0x55414b78e72269e0], [0x4e87cade5f6bf3f7], [0x313f3c4333368936], [ 0x6d7c1ebaeab40cb, 0x527485f90d53c720])
self.mul([0xae0d70031c672db7, 0xba5eb0efd7fd78dc], [0x87983cdbe3bb4a83], [0x5c30976ccc68147d], [ 0xb103817d54317fc, 0x9e1c5bb128587094])
self.mul([0x48c95a72183851f4, 0x8aece86eb7f99371], [0x6104d023bd34738a], [0x1b95a99867c55abc], [0x4dfa57699c185556, 0x521ea153a9b93dea])
self.mul([ 0x51057a5b947d16b, 0x897ec6b9ee63634e], [0xf9eeea6113965dd6], [ 0x4f19f1488fafc8c], [0xf7b4260c3dbda637, 0x98c0a6305bdc5934])
self.mul([0xb510498a2e893a07, 0x3f5ebbb95346677], [0x73405ad393db0482], [0x5183d558d44dbaf9], [0xb763de295d5b428e, 0xb3aca8559302e46e])
self.mul([ 0xd2649936106a735, 0xd34593e0d187464f], [0xead3a435eab6bf59], [ 0xc0fde3ea747154b], [0x86a56e3477691383, 0x3108ec47f7a66277])
self.mul([0xadc2c8ffc7578d12, 0x55bec130739f209c], [ 0xea3ea83f78a4df3], [ 0x9efe931962e2d66], [0x85ada1d62f862900, 0x916a17d6b4f2e014])
self.mul([0x71c9c85681224e80, 0xa9dac6f6089f8492], [0x45d908b921ec1095], [0x1f0bdaeaba4a2000], [0x4a722c86ce934ad9, 0x9bdf0e6405b948fa])
self.mul([ 0x87aaa0b90c5cdd, 0xc9ffe7916f16e6d7], [0xa737c3bd5323e58b], [ 0x589ddc3c8c4731], [0xc08d903fd2a1f4ae, 0xb6eda30b1252a9bd])
self.mul([0xa9a8b0567ee10df1, 0x402d04fbb1159185], [0xfcec6907e920803d], [0xa79ebab32312e02b], [0xa61ac532a6c8cb61, 0x43bd544b38862cb1])
self.mul([0x7e723321f39bcc80, 0x624ba0ad81d39bd5], [0xd200d2c7cdf3f0ba], [0x67ba160e3847573b], [0x24b64cefc296a017, 0x290f4003205e8c2])
self.mul([0x3738227295b1ea75, 0xbd09e9a2280afdb], [0xc865389fa6485744], [0x2b39b045d36c8539], [0x921c6de0078d070f, 0xa4d5c9e95d8a232c])
self.mul([0x11a4b9e1ad3b15be, 0xfa6a49f84410cd98], [0xad0aae9eda03cc94], [ 0xbed0e15adea5859], [0xce737aef938a9d46, 0xee4fe8da9653fbe0])
self.mul([0x758e1eb807789f9a, 0xbda960b64dc6deed], [0xee92f5d33685ed75], [0x6d8d9c7e9c79525c], [0x8f5202ebb5b9e411, 0x177ce30177664b51])
self.mul([0xf67282a5ef5b5952, 0x9053d0ab46c2e169], [0x796d4d6c8dfb1e35], [0x74e5590b0112ef6c], [0x715212b93651a12c, 0xb46eaa4653b5f8bd])
self.mul([0x60e3a45bbe988d33, 0xbda89ea96c1cd97a], [0x3154a47b4b0164b3], [0x12ab9b67fca3b36a], [0xba9ab19f3488d928, 0xdf6da4237499b84e])
self.mul([0x1b66f282dba19a89, 0xf3609a4d22d4a88c], [0x4046f7f649e42ffe], [ 0x6e15551b7828875], [0x1bcda2871c7b599b, 0x5f0ff5eba2a0eee8])
self.mul([0x1da15d05399d8872, 0xa77053be215184c1], [ 0x88086232ce14c6e], [ 0xfbeb1d355bfe8f], [0x6ef7225ba80b506f, 0x3517e5705e1156ee])
self.mul([0x6364a2216780f82f, 0xa85a4f0cc685f9ee], [0xf5338e84dba68879], [0x5f33538babcfebca], [0x1bae325203aea9bb, 0xfaec60e7ac6d917e])
}
func test_mul_2_by_2() {
self.mul([0xbcb59cadefcbe391, 0x6f2f3b204663f754], [0x46b31972dbfb6948, 0xa5813de5d58e6e8f], [0x341dae968485de5f, 0xa2176cca76e0de9], [0xd020581541be1375, 0x9bf15fa65ab53fec])
self.mul([0x2c4ba09fe895878d, 0xb0e4108faa8641e9], [0xf4d1c90e9b60e4ef, 0x407d4649d7262c28], [0x2a5c61a0745e4bdc, 0xa57e2a70fdcca669], [0xf7b6ab4488043675, 0xb918da7b2fe45868])
self.mul([0x600b028a8d9bf54d, 0xfea6b9ade8808ddc], [0x71da9f0eb979f02f, 0x66f9245b53c68ec0], [0x2ab6e12baf4253c4, 0x5c9127e85d8c3b89], [0xef627482d4ab5f5d, 0xd38e9805bb426d00])
self.mul([0xbd2d683db44f304a, 0x160434e78f6c2a39], [0x87757a51fc28c533, 0xd56e8744358fd072], [0x6419c21d67ab618b, 0x33a7b2e91357296a], [0x4cacaa52ed3bee49, 0x6b637bf323501d62])
self.mul([0x52da164f481cd3c0, 0x9c77cd83f1e2d73e], [0x55eb78aea25dcede, 0xe290f767cfce049e], [0x1bce9ea98cf576c1, 0xc373a72a135cacee], [0xbcb25594734d56c1, 0x80bb63bd2b41d044])
self.mul([0xb771fc8ad4c99139, 0xef97787842153e11], [0x863c84a017b47e8a, 0xdaa43035e50aeae2], [0x603107f15a5d6242, 0xef00fe47432dd94b], [0x540aeee06d7dc1be, 0x2692e57063265502])
self.mul([0x4eb79ef376606835, 0x302a501c8980f408], [0x67a90fa70ad51b40, 0xb8cde53f8615171f], [0x1fdfdcfc02c797b2, 0x182ce118df5590fa], [0x6672a4e4150062db, 0x80124117713244f8])
self.mul([0xba005b75e17c3b14, 0xfc9b4e51563be2f8], [0x9ffc2ca8b2551fae, 0xde7f2d8da8d385a1], [0x743d719ae09c7fd4, 0xf321e60e2d299fd3], [0xd7994a8c4cdda0e4, 0x29e77ddb2afc95f8])
self.mul([0x8c6df9f5792cdac5, 0xdc97ff37f65513f4], [0x2a876154f76d9794, 0x66080b2bdb9fcba1], [0x17544e655dda8427, 0x21906c42b6338027], [0x2f91b7d24987d9c0, 0x863b7f6c82e00874])
self.mul([0x9726be1dd9524234, 0x2198ac9a5988f658], [0xc062f41c7e8015a6, 0x7ca8ce503fe16bca], [0x71977b8cea8cd344, 0xd7759ad83c7ba8fd], [0xec13f4e20af25363, 0x7d15e6b710612970])
self.mul([0xba975fc59d39d077, 0x5088e8c0c5071434], [0xffdaefa1e0f2efa6, 0xda298820ec9424d8], [0xba7c5bf6b576b885, 0x9bc46fa91cf491a1], [0xe256504b80582d8a, 0x61461392dae05be0])
self.mul([0x57534393fb2e6b0d, 0xdaddbf270025f985], [0xe771286ef28125c1, 0x742b4465c480fcdd], [0x4ef2bb863707aea3, 0xe77623e99d591f3f], [0x84900339c28a9bc4, 0xfbcf545018e753d1])
self.mul([0x4e18693f78a6c606, 0xaee3b056b731241], [0x69cb2968f85a91e2, 0x723ebc8cbca7a4de], [0x2045fd286c5a469e, 0x9ff3a575adffd6ff], [0x8983d40d2404213f, 0x35ebf88d89e2785e])
self.mul([0x94208f825fdc3da1, 0xd483c1f27a352244], [ 0x9126f671c95a4db, 0xf14ba16283f34689], [ 0x53fcfcb7466e6b5, 0xfef6203ab948e7de], [0x577e461e1b8ed1b4, 0x300e2b2e4059ee64])
self.mul([0xfea4194a24a6317b, 0x7f6eb79b857fb57f], [0xa18d9c6970c0ad62, 0xaac643c6ca128ae1], [0xa0b20fde6fc1b500, 0xabe68955a191f05a], [0x6f0fcd1ba464760a, 0xb30ffb122602fa9f])
self.mul([0x6ba39dd6ce35a759, 0x8b293d4819b5933d], [0x29be34032716716b, 0x8f181a55c74409c1], [0x118d2d951bdd7bd2, 0x9877403a67378f2d], [0x47e732baa9754f4e, 0x8b57cb334b4525fd])
self.mul([0x9b0cc3675c39aa82, 0x7a1af70067426a51], [0xf61f8cff1aeaaff0, 0xf6e3cf354dc24ca7], [0x95115fb679042f4c, 0x34be23ebdb83b86e], [ 0x2568bf4d8b67faa, 0x26d2fbff024566d7])
self.mul([0xa438dc93ec534fc0, 0xd91a4c6208e3b8cd], [0x3cc405e30e53ed8d, 0xf74153f26e83133d], [0x26fb1302508fe425, 0xc1fc4005dbce7d73], [0x6e2ab7b1c0cf3eee, 0xd82808beabe13fd9])
self.mul([0x3c8b42958175a156, 0xa0bec55aaaef5e00], [0x2420a80ea04322ac, 0xbbbe71b6b7c89a5], [ 0x88b4e84321b64c9, 0xacf8025594e0bc61], [0x7fd1b8162363e071, 0xdf007b25cd959600])
self.mul([0x54d8e944d134620d, 0x85ffc054086c85e5], [0xf73babd8e1646ff2, 0xa5fd4fb1932fc459], [0x51f11003ee3f7a57, 0x3b0f47f6a56f2882], [0x4c255dd10076f26a, 0x32194ece1848e09d])
self.mul([0xf6c8d24b3f5e4907, 0xf18161571b3c0d71], [0x7490179cc7fb7fdd, 0x7e4911d1fc3850a6], [0x705de7039117d44e, 0x976243fb09c626bd], [0x29a738550f1143f4, 0xbe51e39d99dc0746])
self.mul([0x7211513de988b2ae, 0x624fd87dcaa7a590], [0x6cd74cc5e5ac5ffd, 0xbc30a68692bc83c8], [0x307f3d06ab4cff3d, 0x60c95e68b49a5d31], [0xae363438d1d1a03b, 0xf839f9e3d2720880])
self.mul([0x499685fbabcd4eab, 0x813742804b348bff], [0xc75b8059174aac97, 0xeff0912ac04513df], [0x394e4f8d220711b0, 0xd014e5ca75dacfec], [0xfb70822862cd92c6, 0x3808885564e4e021])
self.mul([0x803e5900bc61316b, 0x9a9e7543636f724], [0x999b42f3f8be6184, 0x66d2b703483eb194], [0x4cf30a7b9ec496fe, 0x7c00704637278a21], [0x4bd42f2a24bd0ea2, 0xc5a72e69535ec4d0])
self.mul([0x13d30fc0d1dbdefa, 0x4168376ec2cafeeb], [ 0x99cbe74e0375ae1, 0x698e0c592034fa5a], [ 0xbe8eeb1391d31d, 0xb62ff87ae6faf2c7], [0x753947dad5be8849, 0xe57e3bf6e00b1c9e])
self.mul([0x4aea51e875167c0c, 0x2dcd590b4deed36e], [0x3fcdceee230588c9, 0x7a177d01306666c1], [0x12abe45a09f727ab, 0x1a840b50c69adb95], [0xcc1bd188023d40a0, 0x487600cdc71f39ee])
self.mul([0xa59cb2400d5ab656, 0xb166b858c0992670], [0x4981adc06cfebd7a, 0x5570ad8dc071e66e], [0x2f8d933176937904, 0xa042b38f56aed748], [0xdb6b65c13a89366a, 0x7b6af4a51c72420])
self.mul([0xe8259d09511e362c, 0xe82a9923a25476d8], [0x6f4ada6aa63c52e2, 0x41e6a9f1e6664e33], [0x64ec30072ce998f6, 0x84573234dfcda66f], [0xc95134bae4b155b3, 0x753867547d197d08])
self.mul([0xb301039198d25bf9, 0x5f51ce1205ca3c26], [0x1aea4446c20195a1, 0x6989892f588e23a3], [0x12d1e907cb7c945c, 0xdd76682d24d1b0be], [0x70ac117522441e3a, 0x70e6c818c3117e32])
self.mul([0x5952ecb88b329569, 0xa03050c3c4479bb0], [0x479a6b5e23348cd6, 0xf4a4e7e4ba599143], [0x18fbe100174b7e29, 0x18a558f4e26d7637], [0xb4b1a4474a20b1b5, 0x8511c22bee1c6f10])
self.mul([0x16a56460cf19fcc0, 0x4908dcf6d1b245e8], [0x77b87bc7025b31e0, 0xb7848532bfcd3d56], [ 0xa97337c37dad5ea, 0x7efd9c067e5ac0b1], [0x2e9a9ba522f55900, 0x347e281bff53c3f0])
self.mul([0x9215b8986a7bf10f, 0x41f1301696a71e7a], [0x2329c18eaf9a1499, 0xe73f1b4ea9788d5e], [0x1410cc2b336412a3, 0xf4c960a21acdfaad], [0x1986a38201acb409, 0x9f3f31e6305662cc])
self.mul([0xd7c9d5a01ddbebc6, 0x47a959e3d234ce43], [0xb5aff71090e1d09d, 0xfad5f96eebe4316c], [0x99260744f16b9e42, 0x65c04b08136c2bcf], [0x9c50a449452d5183, 0x91930381fe6dd744])
self.mul([ 0x72aba6b22cfc56, 0xb127f7cf464f07a1], [0x1d4aba98b383dce5, 0xab80747fea5bf37b], [ 0xd1eeb157c0b1b, 0x9473cdb47b6da3f2], [0x786f71dce43e05d9, 0xa789c843ac717d5b])
self.mul([0x58ae6dac251e0163, 0xc2f44625fd0050cd], [0xcb6e5868a1c21903, 0x6052fdd49dcd3691], [0x46788a8ad5ff6882, 0xad0b9550508ccb43], [ 0x66f19895fa4838f, 0x1840c74cb62021d])
self.mul([0x4fe33ae416eee362, 0x21fa568eb630c387], [0x6c09b8c072a852f7, 0xd7bdbe93d661802a], [0x21b6e57cac39691c, 0xa3b53c790c711b3b], [0x4e2500f04d1b7def, 0x6182d2f435ea9426])
self.mul([0x3b20eea3d66fef70, 0x16d0f3826cbeb768], [0x67295ecd08ff1c86, 0x238f02e44a902a97], [0x17d3ce2f9697970c, 0xad231575a6c69bd1], [0x900f1e297627f1d6, 0x6c617cb0a9153e58])
self.mul([0x6ef5c0698bc16f61, 0x7ebcca8dbf6a1920], [0xc09d4f54aa501b44, 0x3c4bf78f4e8fdc0], [0x537c7f68b2616850, 0x98ae7a62c90e7080], [0x4656fb17fd863bce, 0xcba73f94af677800])
self.mul([0x87802d341874b3ef, 0xd7123596886e4ade], [0x5e0e27a405e52733, 0x9afd5044c55c8df2], [0x31c88e96f1f2e0d7, 0xa5cc8a738565a2a9], [0x678edb633f82b0d8, 0xade7bba975470bdc])
self.mul([0x6e7f3c29434e679b, 0x8386ea5d7d49d646], [0xfe1b95d12165acbb, 0x7bcae0d83517c26e], [0x6dae25c69b704f70, 0x45f6dd4818b9eb34], [0x440c21f667cb8dfe, 0x31f0232c88651e14])
self.mul([0xd36dc824ba873bae, 0xc3ac31cfe07f38a8], [0x5225cc9eb2d47812, 0xf869dbffdad4d61a], [0x43d861f83dfee136, 0xe6c51ac01c410a95], [0xbc5cd71c6a7c5654, 0x878c3bb921683110])
self.mul([0x56def68835f13abe, 0x3f9f04abda89ccf9], [0x9a415abe4858e784, 0x38c4a8032189c318], [0x34584db57dbc8c30, 0x50f237c0ce4fa7fd], [0xb5cbe3e88e49a329, 0x235fdda93e4de258])
self.mul([ 0x5e6962af6a3158b, 0x1ade20053080180b], [0x5e1b52e11401559f, 0xcca81bcf6f8d26e4], [ 0x22b4c5ea951af7a, 0x8c00bf933784fc13], [0xa3f1de02f555df78, 0xecd24b138b60bcc])
self.mul([0x51f9c0c7e66809d1, 0x8a16c10065ac46fb], [0xd7b9d7a047350ac1, 0xffcd6578ce84592c], [0x4514437046c4817d, 0xafb044f4da545483], [0x330f2eacca7b033f, 0xf7c8aa04f1b57624])
self.mul([0x8f9e0ec6a1b4f14f, 0xe6b4550d3583fb02], [0x6b0de5c26e2fb990, 0xf5347aa824cd6e14], [0x3c0edc193c7c68b2, 0xa8906e2f17435154], [0x503c40f189063711, 0x646069532cc47828])
self.mul([0xb0f12a01727a6c70, 0xa60ddf523a8d2a2b], [0x46251c07cefa3dd4, 0x2d31560b871b23e5], [0x307b97b73dc259f4, 0x4c63029e9dceca1a], [ 0x43d4a96e260a3f1, 0xebf3e288cc939977])
self.mul([0xbf6cf8e2b161436d, 0x6c4541c738e42e4f], [0x517ea495ba057b9a, 0x1566a2f9c9081117], [0x3cf02d73feaa702a, 0x805d01228ce675f9], [0xa446b95343bc55d8, 0x77351c01bd0b6819])
self.mul([0x5f422356154c0e9c, 0xfadf01d7f3737c46], [0xf88d44aafd3ef7d6, 0x3192fc0bea0faa3f], [0x5c7ca3360c958907, 0x9d9ae32314e29f89], [0xa1cda80efe7b6911, 0xbe80ee2dde0c113a])
self.mul([0x1ac345caf4b75553, 0x3673e0d2d28d7282], [0x6388dd1ed8d55d82, 0x5e0ee9ef067d6352], [ 0xa67d2d85d425b92, 0x561a4e8583d3cdfa], [ 0xccf7c632cde6ad1, 0x4751e4121a10f3a4])
self.mul([0xf6e65505e9e65940, 0x527211493f9803d3], [0x8311bb908b220dd7, 0xda214ddcb3216a5f], [0x7e68f7b353f07542, 0xd2623e95fb6c84f], [0xcd898757a01599ee, 0xd161fc1c9231c94d])
self.mul([0xd2b778cb2b97c2bf, 0xaf5532d4266aada9], [0xa6e0d01b72e603b3, 0x480bd8613e24f42f], [0x895c04291a1c6598, 0x529be2c9861901e8], [0x986b67ac067410fd, 0x7b6f2ba914def607])
self.mul([0x37f1c0caa0ffb6ff, 0xb14332707921b7b2], [0xf9c6471288810619, 0x73c9519bd2251d9f], [0x369579084c9da03f, 0x80fa64103784a835], [0x483998669f94dbc7, 0x765dc6e99e7a418e])
self.mul([0xc0f46eadb4802d4d, 0xfef95663da256b8c], [0x65a77f276b063749, 0xa6c3b0fd8d51b802], [0x4c9eaef5b4573428, 0xa32afab90f434403], [0xb3f7656b120e9f2a, 0x8d589d01bce37718])
self.mul([0x4251b3dba295e0ac, 0x7f626d8fbb24fdf0], [0xaa65bada7c55826c, 0x3dc6311886acd104], [0x2c249c13c6152386, 0x2c00139cf34a6127], [0xdfd4c096378bcad6, 0x6935e64e5d24e7c0])
self.mul([ 0x460436f857cdbd4, 0x7f8f6e18b34d9067], [0xf3c26ed7ce8a0a23, 0xc3afc44100b2cf86], [ 0x42ab2db03930da2, 0x851c14aa1f890962], [ 0x6a5df8d3acddec0, 0x60efcbfef9fadeea])
self.mul([0xd192947701427fa7, 0x77cb4400e5623e72], [0x3a7049ae250294da, 0x27131dd88d59c496], [0x2fd72215469cc2b8, 0x4cc2cf4a17321f08], [ 0x5e51317a6c62b96, 0xa03efde21f01decc])
self.mul([0xd1ebed1ddaabb090, 0x5807200481a93b7c], [ 0xdff88350d03befa, 0xccade8d57775b85b], [ 0xb7a84bc8b5389be, 0xbd44e41c61ffda5d], [0x78a64ad6120160d5, 0x666369f68d954514])
self.mul([ 0x90426fe7177ead, 0x4fc5a538c9c7ccfb], [0x31ccaf6ade299012, 0x8a787b4f8d8d4969], [ 0x1c100f360ad84f, 0xbbd75b98ab46dbf7], [ 0x32a47356b7855f8, 0x364ff3be1a5a5f3])
self.mul([0xf3fd794e0cb21e37, 0xdda9bd0210e70561], [ 0x3aca675ae90d8c9, 0xa1ffcd30ab80df9c], [ 0x380855ff0780093, 0x956e7895e401c121], [0xc5ec369b863793d6, 0x58a56d4605f6c61c])
self.mul([0x4c69c6513c705509, 0x91cf6bd6978ccb97], [0xdc08cd7c303132b1, 0xe3bfed2c2a81c951], [0x41ad8711c7e80de6, 0xed75b8869e25bbc], [0x496803f5220a4be2, 0xb9a2dc30dc7cf9c7])
self.mul([0xbbd7cef3d6d7a80f, 0x5c04b1f6e41ea5fb], [0x7798ef998c0a5ec6, 0xbf1d81ceb0ad2de6], [0x57c189255e97c5a0, 0x2bd63183e8826b25], [0x490da6da4703f78f, 0x94e98fb711553e82])
self.mul([0x1eb9b11b2bda885b, 0x7786fe537f5ed640], [0xfe88e4b271df21f9, 0xd5da8e60c15e09ae], [0x1e8cabd1d8763658, 0x81b6df504f62069c], [0x37341488426941e9, 0x6348e893d37ddf80])
self.mul([0x30251ab7e68e78f2, 0x2d4a832148e3dfbf], [0xf23990933e1f0f9e, 0xe6ccd16924b9075c], [0x2d8de6b55ae9a13e, 0x398ebd991accde11], [0xfdd37320b5655a35, 0x9700756efa09a1a4])
self.mul([ 0xbb3aadcc485bee6, 0xe4d2a12c145725c6], [0xb7fa248531d52873, 0x839e4cfd267dfc12], [ 0x868de4406b97873, 0x291c3694f35d30d0], [0x458fb9cbbe7220ea, 0x468cb3f60cfd8fec])
self.mul([0xb0900ecdc0dc1e50, 0x61969da3bdf2cdff], [0xa24c094edbfac15d, 0x125f8af49d41e065], [0x6fef9a8e0d4279b5, 0xa2d582c426b47107], [0xfd06845345cf99b5, 0xa8567d615c9659b])
self.mul([0x1a6a77204a4b5136, 0x11e386a6a19cd620], [0x9bd3ba483ba4deda, 0x9f97e85767f855b0], [0x10144f198b3f59f6, 0xeed3d3ea1b65daa0], [0x5db1adcbe214418b, 0x8fce552e7debd600])
self.mul([0xefc8ea5b9ed1d54a, 0xa7322b975ab6985a], [0x657f3829e2bbca26, 0xdc34233e9ade9f8a], [0x5f116dbd97ed6aaa, 0x9c66105564e26062], [0x7363943b5fc6bd40, 0x5d4636b8911a0684])
self.mul([0xa5f491c7af3ebdd3, 0xb459a4f728122a5a], [0x8a07bb2d9026866f, 0x4d20b57ed0aeddec], [0x597ad99cd0daa59c, 0x144411cf6d748701], [0x1742bc43a7400fd5, 0x84bbea7e887abcf8])
self.mul([ 0x537a2fead6f5acc, 0x7f253a82ec1a936a], [0x782d3d7765b89165, 0xaf8c5b24d20af2a7], [ 0x273006fb8d6d91b, 0x3044c69ad4525caf], [0x5778d92649f64d82, 0x8b7f5d77dad45e26])
self.mul([0x95356214145e21de, 0xc4447134699523bd], [0x38bcf6337aebaa69, 0xa6bab0da803b8fcc], [0x2111d027b8ba2e2d, 0xbf2b76c7eb8e4155], [0x443b13f9a575e6cc, 0xe489c2ee2e5e0d9c])
self.mul([0x9aa98571aa0fce51, 0x340d45481e243bc6], [0x5886bb695e98a800, 0x3e08300b4c49e0f3], [0x357babd4691caf30, 0x91921e7a19048bad], [0xd399eb59860ad456, 0x18aee96a2427fcf2])
self.mul([0xfb50bdce7a0ec093, 0xf5d85e0fae489758], [0xf44d5be83c5f9fa0, 0x8c12d1873662ee54], [0xefd4e66b9359faa6, 0x64bd8ad974e7178d], [0x5ef6b116f9b51a34, 0x133c204b2c3578e0])
self.mul([0xf57e8b210cb3f568, 0xc7f14c685a5ed26f], [0x1ab155f7c7efe2f1, 0x4cecf6c36eeb8849], [0x1998e9102e29ae60, 0x55207c7ef845d38], [0x3e09d21da5b5e725, 0x15cae1c802b9f9a7])
self.mul([0x398e06f882a4f1b8, 0x1b77f8ed1267bf23], [0xd475018f60f2f666, 0xf4a3b7c4fe67bfd1], [0x2fc3ec08c5ed0d27, 0xf72bc2701d961af6], [0x1df4093cbab73be5, 0x9fa9cd760f632893])
self.mul([0xd93de31ee3c89e5f, 0x19fd6b071139255a], [0x725f4252e952dbd9, 0x9a92518632319d6d], [0x610e65635a4638b2, 0x4517a36b1634f5b2], [0xebad26f259f35656, 0xe35063ea1b771952])
self.mul([0xefe623798c0786ff, 0xfec98fc97e2c392a], [0x3557a8d0ef543755, 0xa9948d0a017f76ed], [0x31fccac10ad782a5, 0x6d05010d27bd4b97], [0xc28bb9208dc8e69a, 0xf6d31f7fb72047e2])
self.mul([0x866b5ad342ea69fd, 0x4c5ed26bdcf4df19], [0x454fe6a93a5b9cd1, 0x19d03d306ae076c5], [0x2464e3b947580592, 0x1f87469f95de7667], [0xf25bb47f28635f3f, 0xbe37292d7725343d])
self.mul([0x69d1a8be31f1a4d1, 0x423e7cc32c54ad73], [0x2ed028d8eb3f5c74, 0xc4c051c148e19c76], [0x1359b78db403bef2, 0x2530c13aa142a21e], [0xd78729687847196a, 0x81ce5ee1d2cd0702])
self.mul([0x1af3a4ebec9bbc5f, 0xe89bd3f33157f930], [0x154b53e1b697379b, 0xfe45c2f5aff27372], [ 0x23deabd6d5cabf6, 0x47397f0a0eb471c8], [0x155f9ec6f7044a8b, 0xde3244e7dd7d8760])
self.mul([ 0x1811e7a516e178f, 0x6a6856eddc7250f9], [0xda11204f617b69ef, 0x885453734e0eab47], [ 0x1480db7cab18081, 0xf086aafa90fe0173], [0x8f29a4c99252e65c, 0x607cfbffcb68c80f])
self.mul([0x3a74c3a2553454d3, 0xd562bfca3c4df958], [0x613a8fb490599d59, 0xe259287aa84cecfa], [0x16339d654967824d, 0x15a5cd54376cc5aa], [0x97ee3abff46bbb63, 0x5e9161ce8c229ff0])
self.mul([0x892f419ea0cd8aff, 0x37f0414948d171ff], [0x16ca21a3a77210ac, 0x20eccc02701e4ff6], [ 0xc3660f43343baa5, 0x6303aed2f57b38fe], [0x4b24cbf442c0bd7d, 0xb049c4d87533c0a])
self.mul([0x31366107c3f5457a, 0x639ea6b0653bb831], [0x140364ce33418239, 0x4d8fd084611ba4d0], [ 0x3d8e6989fe9ff44, 0xaf0672483e63e736], [0xee2ab1d0e0f12707, 0x5778878780b00bd0])
self.mul([0x9479eabe5f14f652, 0xfdf74a35b4af2133], [0xfaedc9aabdefcfe6, 0xd34418fdc79f55bd], [0x9188f912fb86f2bc, 0xd8f968a073d9633a], [0xbc92888666912897, 0x48c1919fcefe71a7])
self.mul([0xbdc21c7f1c4778e7, 0xb1b077adc85d147a], [0xc78e5b85128e9ae3, 0xb350cf331fbb24bf], [0x93eb69a941389634, 0x906dfb7d94377f3c], [0xfe0526681ef28f77, 0xbcec169c4f716f06])
self.mul([0xc4370aa9d58827c9, 0xc3bc41123fad7e60], [0xc43bd6eca0332e94, 0xf0036e3b2b0b77fd], [0x96680194dd11e33d, 0xa121228211bb46b2], [0x8986f27df4feaffb, 0x84300b71225484e0])
self.mul([0x36fb54a6a41f3d38, 0xafa67e31b16c20f4], [0x7a04c3fe04c8a45a, 0xd5606dae79c298e9], [0x1a34cc5cbcb164fd, 0xdc640f1b0ef1a474], [0x21bd53b142a982c4, 0xd90135eefbe2de14])
self.mul([0xae539f935297051b, 0xc50c446ee2b97d15], [0xfc99fc0689ed9135, 0xac94f4553a888d06], [0xac032cae29504ebc, 0x78f0ad14f3ce2c17], [ 0xa9a09f5572cc6bd, 0x5933b253af657f7e])
self.mul([0x7bdb0d091450546a, 0x9592c7328ac51150], [0x92ded9caed34ff47, 0xdc4fc7b7455595b9], [0x470ebec3571dd842, 0x20a65f6c3fa6b95a], [0x8243492d7aa89d62, 0xc3361f944b0d12d0])
self.mul([0x163a2c4c7fa674ee, 0x814ca9238a54be48], [0x5bc89672dd7a8a5b, 0x99f54c1daf47cebe], [ 0x7f81841dc3b4e72, 0xf983ab04f621a6df], [0x4baa865e5dc42b74, 0xd26a5b6cd9fb2970])
self.mul([ 0xfbca2ea01e895aa, 0x33478b37e1fb2d0], [0xc7b85e89020715cf, 0xf04ca77d3abc7298], [ 0xc46f808af923036, 0xb130f7a1ceb9649c], [0x6bda3f672232a667, 0xec2b66177132cb80])
self.mul([0x38ede0f9b8ba8b3a, 0x8df79ef29ecf7d2a], [0xc2b2e03a80d7d71d, 0xf62fe879febdcc08], [0x2b4c0bc0d3063989, 0x821e0262fdc7000a], [0xa352609f82ff8134, 0x454da45b623b6150])
self.mul([0xdf14a9807c985aa7, 0xb2629c7d6c9ff9f0], [0x90e421906ac9e28b, 0xa1fcb3a0574fffd9], [0x7e426afebf0c0dd6, 0xff91878f93170fb7], [0xcb532bf7879912c5, 0x12157ed31ea0ec70])
self.mul([0x63de1e92fa760828, 0x1cf9f9050aa335a0], [0x9c59ce1b2bea4df2, 0x92a79cb3081e4158], [0x3cfe634187e2359f, 0xbf697a3246601cfb], [0xcbf2f10738cd3987, 0xe540391c61780f00])
self.mul([0xba4593df7bfeb8d7, 0x99d1ce77c6b6d0e], [0x1a1845c8d3eefccf, 0x253ae5baba83965], [0x12fcba5170f77f2f, 0x7c7170c2d833a7b5], [ 0x5b840e53cf0d03f, 0x144aa259ecda2486])
self.mul([0x3945dbbab3155797, 0x44f22f53584e17e0], [0xc3fe6638c39f9ba3, 0x8341e70ac15b7030], [0x2bd9208dc23f50ab, 0x5f6d3d0c5d2fe254], [0x38e66207f2e3f5e7, 0x24c8a8c515b67a00])
self.mul([0xde37cac25f17ae56, 0x43d1558696bc8821], [0xd0e62e4709b7d44f, 0xbfb5213be6270fb8], [0xb5552309c83c5e39, 0x8d531008cab34f03], [ 0xce13b0669b36633, 0xdebb5532c682c6b8])
self.mul([0xacc1694c624a4da5, 0xb02a2e0dbc74e54a], [0xc2e4c2f8ba31023c, 0x619bd6a82f9b5b22], [0x8384f1a015535689, 0x26f22aa4c91b475e], [0xbcdb80a89763092c, 0xe13e53ffed5c1d4])
self.mul([0x67bc784fa7f04818, 0x74885ad3243e9c9d], [0xe28707184ed8b4da, 0x5dd66ab94471b078], [0x5bcb1979c52c6161, 0xb5c2faafcf66de5b], [0xd836b97666aa2069, 0x9d858c95de525998])
self.mul([0x3f3b357ac51adafd, 0xdd0dd7f2ef97a0d2], [0x46ee57cfbe880fc5, 0x172943d70e0246e2], [0x11850f5bb9251b25, 0x3186262edaee504d], [0xbbb36fd82ee83a8b, 0x6f564253b7796564])
}
private func mul(
_ lhsWords: [Word],
_ rhsWords: [Word],
_ expectedHighWords: [Word],
_ expectedLowWords: [Word],
file: StaticString = #file,
line: UInt = #line
) {
let lhs = self.create(lhsWords)
let rhs = self.create(rhsWords)
let expectedHigh = self.create(expectedHighWords)
let expectedLow = self.create(expectedLowWords)
let (high, low) = lhs.multipliedFullWidth(by: rhs)
XCTAssertEqual(high, expectedHigh, "fullWidth.high", file: file, line: line)
XCTAssertEqual(low, expectedLow, "fullWidth.low", file: file, line: line)
let expectedOverflow = expectedHigh != 0
let (low1, overflow) = lhs.multipliedReportingOverflow(by: rhs)
XCTAssertEqual(low1, expectedLow, "reportingOverflow.low", file: file, line: line)
XCTAssertEqual(overflow, expectedOverflow, "reportingOverflow.overflow", file: file, line: line)
if !expectedOverflow {
let low2 = lhs * rhs
XCTAssertEqual(low2, expectedLow, "*", file: file, line: line)
}
// if rhsWords.count == 1 {
// let rhsSmall = rhs.low
// let (highSmall, lowSmall) = lhs.multipliedFullWidth(by: rhsSmall)
// XCTAssertEqual(highSmall, expectedHigh.low, "fullWidth(UInt64).high", file: file, line: line)
// XCTAssertEqual(lowSmall, expectedLow, "fullWidth(UInt64).low", file: file, line: line)
// let (lowOvSmall, overflowSmall) = lhs.multipliedReportingOverflow(by: rhsSmall)
// XCTAssertEqual(lowOvSmall, expectedLow, "reportingOverflow(UInt64).low", file: file, line: line)
// XCTAssertEqual(overflowSmall, expectedOverflow, "reportingOverflow(UInt64).overflow", file: file, line: line)
// if !expectedOverflow {
// let lowStarSmall = lhs * rhsSmall
// XCTAssertEqual(lowStarSmall, expectedLow, "UInt64.*", file: file, line: line)
// }
// }
}
// MARK: - Div
func test_div_1_by_1() {
self.div([0xec7644e3a376f59a], [0x99179d172c9b832e], [ 0x1], [0x535ea7cc76db726c])
self.div([0xf8f5c9f93ef4eee9], [0x9d28440c8a3d9786], [ 0x1], [0x5bcd85ecb4b75763])
self.div([0x8bca6849ca325cfc], [0xd4243221a51778ba], [ 0x0], [0x8bca6849ca325cfc])
self.div([0x95964960c58edd8c], [0x396b8b585c4e0438], [ 0x2], [0x22bf32b00cf2d51c])
self.div([0xce96da31e415fbb0], [0xdce0abcabc215fdd], [ 0x0], [0xce96da31e415fbb0])
self.div([0xbf86c188ba0ed15e], [0x2f9d23131a3b80eb], [ 0x4], [ 0x112353c5120cdb2])
self.div([0xb867b5f26d56605f], [0x258e3014fd77ef9d], [ 0x4], [0x222ef59e7776a1eb])
self.div([0xf3fc5432c2699161], [0xfd57f39f677878ab], [ 0x0], [0xf3fc5432c2699161])
self.div([0x2a624f42a69862a1], [0xb417ec0e3371cfcf], [ 0x0], [0x2a624f42a69862a1])
self.div([0xf34ecc592a4946b0], [0x609047ce5c51953c], [ 0x2], [0x322e3cbc71a61c38])
self.div([0xc892a829101b565a], [0xa0ced51004b12b48], [ 0x1], [0x27c3d3190b6a2b12])
self.div([0x603cc4770e9437f2], [0xe67934e08a25b8e6], [ 0x0], [0x603cc4770e9437f2])
self.div([0x5cdf82822f8235bf], [0x38509032f841c0e2], [ 0x1], [0x248ef24f374074dd])
self.div([0x883c4d0eab774e9b], [0x6131cd1a27c2c11f], [ 0x1], [0x270a7ff483b48d7c])
self.div([0x4acf4f6414de91a7], [0x23a21cf179eee833], [ 0x2], [ 0x38b15812100c141])
self.div([0x81713296539c04f7], [0x1ebea4535807d9ba], [ 0x4], [ 0x676a148f37c9e0f])
self.div([0xdb2d71e13fd42e3c], [0x18f6dea6cb574dac], [ 0x8], [0x13767caae519c0dc])
self.div([0x171c1e8f7269cb8b], [0x6589440d8f9bcd7b], [ 0x0], [0x171c1e8f7269cb8b])
self.div([0xc6a95aaa5aaaa94d], [0xb05b7a840a4d60a3], [ 0x1], [0x164de026505d48aa])
self.div([0xb6fdc9f467411ae4], [0x273bc9ea470aec1b], [ 0x4], [0x1a0ea24b4b156a78])
self.div([0xd19a472e02a36d66], [0x50ead1d59f7d6f30], [ 0x2], [0x2fc4a382c3a88f06])
self.div([0x28ab636a52bac7fe], [ 0xdd90eccd3e236b0], [ 0x2], [ 0xcf945d0aaf65a9e])
self.div([0x87413f35743aa3e4], [0xb3c7a163c9e52e1c], [ 0x0], [0x87413f35743aa3e4])
self.div([0xf75e8e92198c0281], [0x33e3f6f91eb9962e], [ 0x4], [0x27ceb2ad9ea5a9c9])
self.div([ 0xc03a27503b5b775], [0x9861754c68fa83db], [ 0x0], [ 0xc03a27503b5b775])
self.div([0x233f2453babe809c], [0x2f5ecb38e3f7e13a], [ 0x0], [0x233f2453babe809c])
self.div([0x97b840cd143d6a12], [0x4a3a5bf947d38b75], [ 0x2], [ 0x34388da84965328])
self.div([0xbd3e494755119495], [0x895c14a182e2788a], [ 0x1], [0x33e234a5d22f1c0b])
self.div([0x81208f5f67e21798], [0xd7544e2e5eca5ed9], [ 0x0], [0x81208f5f67e21798])
self.div([0xd78e3f2d512d3f94], [0xd0bcec46db85729d], [ 0x1], [ 0x6d152e675a7ccf7])
self.div([ 0x7570655a0a72cff], [0x27d4df4ab6527052], [ 0x0], [ 0x7570655a0a72cff])
self.div([0x9ccbabe6dd023176], [0xc8cdc260b60b3808], [ 0x0], [0x9ccbabe6dd023176])
self.div([0x92d31ae7da5ee556], [0x610987c98c829d33], [ 0x1], [0x31c9931e4ddc4823])
self.div([0x44c445b034c16485], [0xc15e3fcd7759b3b2], [ 0x0], [0x44c445b034c16485])
self.div([0x9a2f12303bf5708c], [0xb34084b4f33b029e], [ 0x0], [0x9a2f12303bf5708c])
self.div([0x2cad420f250743af], [0xabab4f8797615b0b], [ 0x0], [0x2cad420f250743af])
self.div([0xd88809fe6655822b], [0xf6ac45f8a69fbcff], [ 0x0], [0xd88809fe6655822b])
self.div([0x611be7c387430e8c], [0x6a4261569465bf5a], [ 0x0], [0x611be7c387430e8c])
self.div([ 0xb8b165bcc28686d], [0xa57d28bbf123281b], [ 0x0], [ 0xb8b165bcc28686d])
self.div([0xc5c2646348df2a52], [0xfaff00ea4fbf13e2], [ 0x0], [0xc5c2646348df2a52])
self.div([ 0x671a83a469eeaec], [0xf480f60b04327c5f], [ 0x0], [ 0x671a83a469eeaec])
self.div([0xce083860130b9860], [0x9e114eee022f0c3b], [ 0x1], [0x2ff6e97210dc8c25])
self.div([0x6b142aeeab61c9de], [0xc1ea6f234812588c], [ 0x0], [0x6b142aeeab61c9de])
self.div([0x820293023a6d139e], [0x76f2857c9625c16c], [ 0x1], [ 0xb100d85a4475232])
self.div([0xe8986d80bd49bafa], [0x8ea9ddeb4e5a7ed7], [ 0x1], [0x59ee8f956eef3c23])
self.div([0x746e94c64f00899f], [0xe8ae64c301265e55], [ 0x0], [0x746e94c64f00899f])
self.div([0xd244f646c0abce49], [0x1abb97feaf223213], [ 0x7], [0x1723ce4ff6bc6fc4])
self.div([0x411f4f8566679c2a], [0x1ad2b46cdb470b24], [ 0x2], [ 0xb79e6abafd985e2])
self.div([0xe7fd1d47a93d9120], [0xb63fd2760324048a], [ 0x1], [0x31bd4ad1a6198c96])
self.div([0x29462b01c0da6024], [0x99bb92daeab7015d], [ 0x0], [0x29462b01c0da6024])
self.div([0x66d720005ae12a36], [0x653594c01dcd247b], [ 0x1], [ 0x1a18b403d1405bb])
self.div([0x7396cb1557849f18], [0xa643e3ab8bcc7f52], [ 0x0], [0x7396cb1557849f18])
self.div([0x1e7411827ab23b23], [0x6292ef1be45bb8ef], [ 0x0], [0x1e7411827ab23b23])
self.div([0x87a0415031fb3e44], [0x11528e9629d48446], [ 0x7], [ 0xe5e5b350d2ba05a])
self.div([0x4b42fd4ce4b73b9d], [0x7d9879344946d59b], [ 0x0], [0x4b42fd4ce4b73b9d])
self.div([0x9187ef01f0535c32], [0xb08975f1899839f0], [ 0x0], [0x9187ef01f0535c32])
self.div([0x7f2bc288b09d98b9], [0x925c10be3f3c8980], [ 0x0], [0x7f2bc288b09d98b9])
self.div([0x6fd53d87f5d195b9], [0xbb63effbe9b668b7], [ 0x0], [0x6fd53d87f5d195b9])
self.div([0x53af1d06ffc24c75], [ 0x53d4e55ee9c3324], [ 0xf], [ 0x51785fe049b4d59])
self.div([0x185d91ef68168a35], [0xba02de9a76b72cc0], [ 0x0], [0x185d91ef68168a35])
self.div([0x1760c133bce42d93], [0xcba2ac62b6e1a756], [ 0x0], [0x1760c133bce42d93])
self.div([0xbcda72d0f4be93be], [0x1ea7a2b68ec0b2c8], [ 0x6], [ 0x4eca2899c3a630e])
self.div([ 0xeaae3d3c50dad99], [0xf2bd665e990319c8], [ 0x0], [ 0xeaae3d3c50dad99])
self.div([0xd2fa0bb78d5f1392], [0xd26171c9c9991422], [ 0x1], [ 0x9899edc3c5ff70])
self.div([0x345564a31de17400], [0x3c731d8a75a4e865], [ 0x0], [0x345564a31de17400])
self.div([0x9ac9adc7c704e4e1], [0xe1b9c41dcd6a8e35], [ 0x0], [0x9ac9adc7c704e4e1])
self.div([0x780f83f873b22b0f], [0x2b2145a0befc6813], [ 0x2], [0x21ccf8b6f5b95ae9])
self.div([0xca8656a426448fd4], [0x67e2a610a1e3cb96], [ 0x1], [0x62a3b0938460c43e])
self.div([0x31f8ed2f96b99a25], [0x26e4b74961f0653c], [ 0x1], [ 0xb1435e634c934e9])
self.div([0x6994a6f367e1be5e], [0x566cb39f58a341fc], [ 0x1], [0x1327f3540f3e7c62])
self.div([0x5f6b46ae3dcb2d0d], [0xa2f13fff06ee652b], [ 0x0], [0x5f6b46ae3dcb2d0d])
self.div([0x1ef2cc97c9ae786b], [0x2a56697b993d3baf], [ 0x0], [0x1ef2cc97c9ae786b])
self.div([0xb4d8e6a832b50a8f], [0x944365135afd1fa3], [ 0x1], [0x20958194d7b7eaec])
self.div([0x9d79df0e209de297], [ 0x7e72608a55e9917], [ 0x13], [ 0x7520c69da9885e2])
self.div([0x8959bc0e3a87a6e0], [0x6a3b4bf0343ff8c9], [ 0x1], [0x1f1e701e0647ae17])
self.div([0xc270c18430a7f441], [0x85ca7ce75ea178dd], [ 0x1], [0x3ca6449cd2067b64])
self.div([0xd28a41dd005024aa], [0x83c1141322928db4], [ 0x1], [0x4ec92dc9ddbd96f6])
self.div([0x2be446f48ed1f62a], [0x6f6032ab6723bc93], [ 0x0], [0x2be446f48ed1f62a])
self.div([0x89fadcf3859b51c3], [0x1930f658fe067048], [ 0x5], [ 0xc060d368f7b205b])
self.div([0xa8df4cf280df9396], [0x6381d8c84d02983b], [ 0x1], [0x455d742a33dcfb5b])
self.div([0xffe8f8b11d284457], [0x79e60752802350c6], [ 0x2], [ 0xc1cea0c1ce1a2cb])
self.div([0x98b718f8bdcf2407], [0xdd4b388bf08a117e], [ 0x0], [0x98b718f8bdcf2407])
self.div([0xeea6d1159fd8b6f9], [0x67a09a6d70fba60b], [ 0x2], [0x1f659c3abde16ae3])
self.div([0xdd044b56d6e13011], [0x8497a6a46a330721], [ 0x1], [0x586ca4b26cae28f0])
self.div([0x9f6dae6f07968ccb], [0xa0901fe85f5b4077], [ 0x0], [0x9f6dae6f07968ccb])
self.div([0x6c4860c246f452e9], [0x9952e3ef8eeb384d], [ 0x0], [0x6c4860c246f452e9])
self.div([0xb31953940cffccdc], [0x8ab5fef42da34191], [ 0x1], [0x2863549fdf5c8b4b])
self.div([0xdb6c576250456eab], [0x18c82bec6036c48e], [ 0x8], [0x152af7ff4e8f4a3b])
self.div([0x68d68821a86593e9], [0xc2df7e3136f974cb], [ 0x0], [0x68d68821a86593e9])
self.div([0x5417d385d8e0df80], [ 0x8bdd737056dd460], [ 0x9], [ 0x56b4296a8046820])
self.div([0x5eccea4aabd39089], [0x6705ccdcc60d119b], [ 0x0], [0x5eccea4aabd39089])
self.div([0x167d22b2bf7d85f9], [0x528c66a87826cc6e], [ 0x0], [0x167d22b2bf7d85f9])
self.div([0xd103468e5e664f4e], [0xc8b795a3b8a225dc], [ 0x1], [ 0x84bb0eaa5c42972])
self.div([0x7ee84b4aeae80577], [0x3e8fb367cdf2435b], [ 0x2], [ 0x1c8e47b4f037ec1])
self.div([0xc92424cf6e1832dd], [0x964e4d5f61a4b2f9], [ 0x1], [0x32d5d7700c737fe4])
self.div([0x2b8eb972c681f7c4], [ 0xcf9ae6fd40e0b7b], [ 0x3], [ 0x4a1ae234a57d553])
self.div([0x9c51006c627def07], [0x31c1bcd58532459d], [ 0x3], [ 0x70bc9ebd2e71e30])
self.div([0x772bad6f96f3057a], [0xfa7dda83270dffd1], [ 0x0], [0x772bad6f96f3057a])
self.div([0xe7c8fd8305b8104e], [0x59f83eaf51cd890b], [ 0x2], [0x33d88024621cfe38])
self.div([0x8492c525bbf69f43], [0x9742d72e8f4dd07d], [ 0x0], [0x8492c525bbf69f43])
}
func test_div_1_by_2() {
self.div([0xc8700d7c519750bb], [0xeadd79d9515338ef, 0xa192579d383cf5b8], [ 0x0], [0xc8700d7c519750bb])
self.div([0x955b4cefd5959eae], [0x480b3c72bd935e7e, 0x3ad590fa74f74c9e], [ 0x0], [0x955b4cefd5959eae])
self.div([0xe460bd568c47a927], [0x98a603943d28fa43, 0x8e21524fc8fdedc5], [ 0x0], [0xe460bd568c47a927])
self.div([0x6b63d1156b0c011d], [0x134992ffe422892d, 0x18aaf56ff25036e3], [ 0x0], [0x6b63d1156b0c011d])
self.div([0x138ca6aa6e3c9aca], [ 0xb3c3d70a4e413f1, 0xde0d184f6d2cb437], [ 0x0], [0x138ca6aa6e3c9aca])
self.div([0x94798a5dd0bb7d17], [0xf2274f580c5a4fde, 0x287eeca24c3e02fc], [ 0x0], [0x94798a5dd0bb7d17])
self.div([0xe0beb35e9c2c222a], [0x1209f7bc7a362fd2, 0x718b9fb8b1671011], [ 0x0], [0xe0beb35e9c2c222a])
self.div([0x60ec772a5069b745], [0x96e2b4815127b0dc, 0x6e8aceb32b524269], [ 0x0], [0x60ec772a5069b745])
self.div([0xdd2593ea66f9054d], [0xf7e56ab98dd653d9, 0x3f70d0625413682d], [ 0x0], [0xdd2593ea66f9054d])
self.div([0x40c4e2c1c8b85cd2], [0x6a1f0e7e98b50b97, 0x5eff3a9669d3f1a0], [ 0x0], [0x40c4e2c1c8b85cd2])
self.div([0xe3899f1caa0dd32c], [0x5641ca250389c661, 0x7c39883bb0eddece], [ 0x0], [0xe3899f1caa0dd32c])
self.div([0x1694248a2727afc0], [0x3f2335c1f52e359d, 0x4de4c48974874825], [ 0x0], [0x1694248a2727afc0])
self.div([0xd07be9bbb2c268b4], [0x30e9048fd0642f8d, 0xe45f2ecc7dfea708], [ 0x0], [0xd07be9bbb2c268b4])
self.div([0xaf6a81d2dfe66444], [0x3b1a756a110f2c9f, 0x33722d675640f043], [ 0x0], [0xaf6a81d2dfe66444])
self.div([0x2a0de65a31b402ee], [0x8fd296ab336c5089, 0xa8a4c25cc3b50974], [ 0x0], [0x2a0de65a31b402ee])
self.div([0xfc8843ca16deab6b], [ 0x9702a0f8ad16661, 0x1420118c630941bf], [ 0x0], [0xfc8843ca16deab6b])
self.div([0xcbac680373f3d6e0], [0x91369683388b03dc, 0xc42096a8a90e1997], [ 0x0], [0xcbac680373f3d6e0])
self.div([0x616883d73d53bb14], [ 0x239a6ddcd554403, 0x3bfd657e6123dc81], [ 0x0], [0x616883d73d53bb14])
self.div([0x9f697d2bd361859d], [0xc6614351ced06aca, 0xe9a241f23df78eae], [ 0x0], [0x9f697d2bd361859d])
self.div([0x799791bef501379f], [0x658c6f24c214b780, 0xc4b06f0cc276b2c1], [ 0x0], [0x799791bef501379f])
self.div([0x407c9fca4714ad88], [0x9c3d1d0250969f5d, 0x396a95e176b0029e], [ 0x0], [0x407c9fca4714ad88])
self.div([0xf57207fa174c0811], [0xb2db25237201f5bb, 0xb95c7c008dc172ca], [ 0x0], [0xf57207fa174c0811])
self.div([0x690ce6f9fa63fdab], [0xf663f0e63faa67af, 0xad59d05fafd4736b], [ 0x0], [0x690ce6f9fa63fdab])
self.div([0x28b34f28401bca0c], [0x3bef221fef10e768, 0xbc4e83de112215e], [ 0x0], [0x28b34f28401bca0c])
self.div([0x8f28a31be9d19e62], [0xac8388aa8c0724c8, 0xd061e3266c703f18], [ 0x0], [0x8f28a31be9d19e62])
self.div([0x29ec3e508c2b0857], [0xec947b1d6d4c5f02, 0x95282fe7c978e77e], [ 0x0], [0x29ec3e508c2b0857])
self.div([0xf2f2018e9655bf30], [0x8d2ce760a574d9c5, 0xd2a7ed9343d33334], [ 0x0], [0xf2f2018e9655bf30])
self.div([0x517ac65427a57e14], [0x186909a12d88fc65, 0xb6ec7f5cde3d6cf9], [ 0x0], [0x517ac65427a57e14])
self.div([0xae8517b99dc55d9c], [ 0x9f167971e3b3969, 0x7032894022a3c9f8], [ 0x0], [0xae8517b99dc55d9c])
self.div([0xd20a0b486a14340b], [ 0xf8679b5de7f37f8, 0x16c3f1d227acb49f], [ 0x0], [0xd20a0b486a14340b])
self.div([0x11dba6414becc309], [0xce5edae83a467fe5, 0x2c109494115c8ac6], [ 0x0], [0x11dba6414becc309])
self.div([0xae47fb0b272e83f2], [0x57866bc2a2367150, 0x5e802436482f569f], [ 0x0], [0xae47fb0b272e83f2])
self.div([0x2763e0938b9b9afb], [0xf0e0dc7ded63a732, 0x54012a417a3c74b3], [ 0x0], [0x2763e0938b9b9afb])
self.div([0x6f2d363c20c6d118], [0xbff1fe185b16a9e7, 0x742d4833d14efc36], [ 0x0], [0x6f2d363c20c6d118])
self.div([0x74038d91417afa0a], [ 0xff671911a5280cf, 0xc9e0f94ad7e67a4a], [ 0x0], [0x74038d91417afa0a])
self.div([0xf4b1ebce52570113], [0x4790b545fa990f80, 0xa167f8d00270357e], [ 0x0], [0xf4b1ebce52570113])
self.div([0x68807ef31a990403], [0x1c012929b76dd19f, 0xf495990085b98208], [ 0x0], [0x68807ef31a990403])
self.div([0xc6ccdad54afc27d7], [0x33e2cbf9ff0ce912, 0x9247c212188d8625], [ 0x0], [0xc6ccdad54afc27d7])
self.div([0x430f79295b26047b], [0xb4187b807e5719eb, 0xfeb629863af3f03e], [ 0x0], [0x430f79295b26047b])
self.div([0x11eb47ab16128fcb], [0x587c607947891858, 0x7857dac9426f7c58], [ 0x0], [0x11eb47ab16128fcb])
self.div([0xf658d225654f600e], [0x3a5f0d9ad6b4c442, 0x5a3761452020efde], [ 0x0], [0xf658d225654f600e])
self.div([0x2b492a4131335758], [0x91f2569c76410ad6, 0xbf87d31953dfea83], [ 0x0], [0x2b492a4131335758])
self.div([ 0xb6f5a11210b8396], [0x990fd0d50713f1be, 0x482f99b5e7f11567], [ 0x0], [ 0xb6f5a11210b8396])
self.div([0xa0fa2c15f5280fb4], [0x8b2cd3529dca6273, 0xb947044f821eb4f7], [ 0x0], [0xa0fa2c15f5280fb4])
self.div([0xa0759fc504e6a80c], [0x925ebcfaa568522d, 0xf7d4054eff6c304b], [ 0x0], [0xa0759fc504e6a80c])
self.div([0x16429e1cd49b138d], [0xdbe85d83a47b41bd, 0xac0f0c68a5780fe3], [ 0x0], [0x16429e1cd49b138d])
self.div([0x1a9f09077d990fd8], [0x4a1b1779a086c440, 0x5fc3edd1461b6b57], [ 0x0], [0x1a9f09077d990fd8])
self.div([0xaf1f95b1e1c84f36], [0x6bbab8d836cf2b6d, 0xee150a5ebda6ac8f], [ 0x0], [0xaf1f95b1e1c84f36])
self.div([ 0xb758a1bf13a7d60], [0x6175bd09add0af1d, 0x6394de8d88a95725], [ 0x0], [ 0xb758a1bf13a7d60])
self.div([0x82b1f528ac1e6972], [0x49d55ce8d874514e, 0x210ac5995621f8c0], [ 0x0], [0x82b1f528ac1e6972])
self.div([0x7eb3ce902163f928], [0x1cd38a78955feefd, 0x6543fb028071c749], [ 0x0], [0x7eb3ce902163f928])
self.div([0x4ffe27acbf5b07a9], [0xf9da0c35e7daedb2, 0xfa663b2d704f59e1], [ 0x0], [0x4ffe27acbf5b07a9])
self.div([0xa8e3ea4ddf9306b8], [0x186bd2a363478768, 0x9c5d9e5a7a6a567], [ 0x0], [0xa8e3ea4ddf9306b8])
self.div([0x33615d2b0c328852], [0xad891dfae2e7641b, 0x16f3c10a5642309b], [ 0x0], [0x33615d2b0c328852])
self.div([0x29713db8050f89db], [0xfeaedf7c6785fac6, 0xb30968a461d0e602], [ 0x0], [0x29713db8050f89db])
self.div([0x124d1548144db2df], [0x972cd0a46e0dd1a5, 0x8a4fb761b8b7f15], [ 0x0], [0x124d1548144db2df])
self.div([0xae680f28e009cc48], [0x796b6e1577496a8f, 0x954ef3a9a1bd7bfb], [ 0x0], [0xae680f28e009cc48])
self.div([0x7ad6869d0d9edf19], [0x15f63c42eb44f2be, 0xeb2070574d579f75], [ 0x0], [0x7ad6869d0d9edf19])
self.div([ 0x5f9af427f209733], [0xee328dc8850f7acb, 0x52ce198a28b41526], [ 0x0], [ 0x5f9af427f209733])
self.div([0x7b14b62dbfc15959], [0x7ac40626c8d69f31, 0x9e2ce1f66b554b4c], [ 0x0], [0x7b14b62dbfc15959])
self.div([ 0xe9d9fad268ba972], [0x2aba12698d6e144d, 0xceb2ab28fa44576e], [ 0x0], [ 0xe9d9fad268ba972])
self.div([0xdc3741df1a07f4d0], [0xa615e0525fdcceae, 0x2122d5f6371e1322], [ 0x0], [0xdc3741df1a07f4d0])
self.div([ 0xb0152d4b533efe7], [0x1720da6fbe8531cf, 0x5dd968324bb8d069], [ 0x0], [ 0xb0152d4b533efe7])
self.div([0x2283d14d1d8a8f41], [0xb6fdfa9f1691d90c, 0x7d6c20abfa45358b], [ 0x0], [0x2283d14d1d8a8f41])
self.div([0xffd589ba1ff1cd45], [0xb6e21e68dbed7234, 0x164bfdb1852c7f77], [ 0x0], [0xffd589ba1ff1cd45])
self.div([0xb532ded4bb7dd1ae], [0x625917de5f483e44, 0x24677a2015d0728e], [ 0x0], [0xb532ded4bb7dd1ae])
self.div([0x14dd06a80a0a8f3e], [0x3eaffd7c3c4fa368, 0x73b9b10e3bf8ee07], [ 0x0], [0x14dd06a80a0a8f3e])
self.div([0xf852fcd0ad9ed3b8], [0xb455c980142b29d5, 0x504645f5c71ad882], [ 0x0], [0xf852fcd0ad9ed3b8])
self.div([0x8ec688e3254b8aa3], [0xfc165815b4f007c8, 0x994d2a0e098d97ea], [ 0x0], [0x8ec688e3254b8aa3])
self.div([ 0xc8a230129fa5f87], [0xa29f853891aca9ad, 0x5ca4791e7aa96366], [ 0x0], [ 0xc8a230129fa5f87])
self.div([0x93a1ce2a13543805], [0xfca12b69ddc1e732, 0xe257a7663cc1d95e], [ 0x0], [0x93a1ce2a13543805])
self.div([0x2e196381390bbf67], [0x75b3416e95f6c7b8, 0x690079316fac5933], [ 0x0], [0x2e196381390bbf67])
self.div([0x1981a30e3f882ac9], [0x71f2dd08dfa572cd, 0x32fec35adc632e1b], [ 0x0], [0x1981a30e3f882ac9])
self.div([0x7e131fc083953bb2], [0xc22a60385aebcf9d, 0xd22c9ccae48f6221], [ 0x0], [0x7e131fc083953bb2])
self.div([0x61bc5d4d7b19ede5], [0x7d5e394ac81cfdae, 0x5e78b413d8457bda], [ 0x0], [0x61bc5d4d7b19ede5])
self.div([ 0x1d8309a49ab3b7b], [0xce2c7ffee14a55c1, 0xd790c8082f9a5f46], [ 0x0], [ 0x1d8309a49ab3b7b])
self.div([ 0xb17805ef508a547], [0xa57513ba2a6d5611, 0x4a1aa764e129c5c6], [ 0x0], [ 0xb17805ef508a547])
self.div([0xc1c823933a72f1ff], [0x2f561f19bbe0bcc3, 0xc3173c3358115ed9], [ 0x0], [0xc1c823933a72f1ff])
self.div([0x4b5197423b2539c7], [0x3a8e2c13028e95cd, 0x3d0f11e845eb99ba], [ 0x0], [0x4b5197423b2539c7])
self.div([0xcb1a4b312d855781], [0xd84162dd3e56f2a5, 0x6c8f10d5c423c703], [ 0x0], [0xcb1a4b312d855781])
self.div([0x3c3d2e2241898adc], [0x8057a01889a5c6ae, 0xfd7346c637df3b7b], [ 0x0], [0x3c3d2e2241898adc])
self.div([ 0x1be5f360e24ab69], [0x2ea46e2880fb6cf3, 0x50e214dcaccf4d64], [ 0x0], [ 0x1be5f360e24ab69])
self.div([0x46612fe22cdddbe7], [0x9951071f3c34f008, 0x2fe887d8e380d23], [ 0x0], [0x46612fe22cdddbe7])
self.div([0xca5ebcc251d5cbd9], [0xbdfd633602067650, 0x2b79ef3fde92e433], [ 0x0], [0xca5ebcc251d5cbd9])
self.div([ 0x9dfc5737d3235b4], [0x4cf3a927c45e20e1, 0xc69b2b45914d6e42], [ 0x0], [ 0x9dfc5737d3235b4])
self.div([0xecf78b221ee58253], [0xb07264945f206b54, 0x2675762851449b70], [ 0x0], [0xecf78b221ee58253])
self.div([0x433f4da96ce7f955], [0xca54b0c05e76e3d3, 0x7567c3953265760d], [ 0x0], [0x433f4da96ce7f955])
self.div([0xe2d4878b5017c7c4], [0x55b8e118e520625e, 0xecedc22bbe9621aa], [ 0x0], [0xe2d4878b5017c7c4])
self.div([0x3fd09d00b1bdee4a], [0x79e36ee8a12eb5ba, 0xe0103d25dce173c9], [ 0x0], [0x3fd09d00b1bdee4a])
self.div([0xd5ceb17f522a89a1], [0xa4cea56e086d1e8c, 0xab7a281a657b1ec7], [ 0x0], [0xd5ceb17f522a89a1])
self.div([0xc185d3d953d0501a], [0x65f89c179205db4b, 0x5e8206cbfbb9a845], [ 0x0], [0xc185d3d953d0501a])
self.div([0x445f64cd21800149], [0x1aaf01c874241b5b, 0x13f0e9114cb747a4], [ 0x0], [0x445f64cd21800149])
self.div([0x8c048343ba8d43b9], [0xd83e51c20bea5379, 0x9b85ff476aec4f94], [ 0x0], [0x8c048343ba8d43b9])
self.div([0x18f4e3bb78b04fdc], [0xb8921225e847c65b, 0x68285eb61e9b7c13], [ 0x0], [0x18f4e3bb78b04fdc])
self.div([0x73b6668c41c07226], [0xed613abd7225b3bd, 0x1ddcfc0b17c1e44], [ 0x0], [0x73b6668c41c07226])
self.div([0xcd32dd9df43f002a], [0x5bdda19f2dda1bb3, 0x53e111a03b9f6b4c], [ 0x0], [0xcd32dd9df43f002a])
self.div([0xdd45cddd106ea2b5], [ 0x633eb41e4e97ad2, 0x2773f02ec72d9f36], [ 0x0], [0xdd45cddd106ea2b5])
self.div([0x9a482d82b7666a8f], [0x735050b3b664d733, 0xe4907913144060d3], [ 0x0], [0x9a482d82b7666a8f])
self.div([0xf7bc49016d3bb69e], [0x9136f26a0b3cfedc, 0x96cb7a34668d66d3], [ 0x0], [0xf7bc49016d3bb69e])
self.div([0xa7f4ca43c2ee5244], [0x15dcf1bebc9f5002, 0xb3bb727fdfd6e452], [ 0x0], [0xa7f4ca43c2ee5244])
}
func test_div_2_by_1() {
self.div([0x83615f5644e2cedd, 0xe3361235c4da8429], [0x1a25c09c3e447e10], [ 0x5, 0x64ba39be9314bec], [ 0x7f9f6659bb79d69])
self.div([0xdc86484a58aa3879, 0x9e44204eb1d95932], [0xd7257bd70cca29a0], [ 0x1, 0x6663c39447162c4], [0x3251dfd8a3823ab2])
self.div([0x29d348057e8e06c6, 0x6072db69a96ba356], [0xbb2f36494bb23ed1], [0x3933a7931ac597c2], [0xaa97b8a99875c1f4])
self.div([0x8e08848bc6152738, 0xf78d1843385968cc], [0xf10080abe232d56b], [0x96df4e4d5ac7c862], [0xbd2d0e0465fb1dd6])
self.div([0x4f099ac007bc75ca, 0x3083d97e37731681], [0x4e8b92d1b2e6c686], [ 0x1, 0x19ac4d830498a4b], [0x2bd16986aa9cb13f])
self.div([0x38d0e71ecb661348, 0x60320a3181e6d10e], [ 0x964d25984877c94], [ 0x6, 0xc587ac27d19f127], [ 0x470af9356878282])
self.div([0xfce46f17b6383dfe, 0x3b5810c12c2380b1], [0xfd0c710678d4b882], [0xffd7869ca28e610e], [0x766650a55a7c2795])
self.div([0xd5a1547e7ff38a88, 0x9c4f6d29356b6601], [0x4b52496af3e6bb28], [ 0x2, 0xd6144a49a3e362ab], [0x4b16542f8a2f1249])
self.div([0xf5e0bde1f482a229, 0xb583da8c6f24dc5a], [0x70f8f202c891f270], [ 0x2, 0x2d2b42dbf5625676], [0x1447a32ef58d7cba])
self.div([0x7a13438c6a911732, 0xae00f4d5dd0ce7], [0x6edcadbfa63e869f], [ 0x1, 0x19e4b02aed40453b], [0x6cc075a1d06b2b42])
self.div([0xda04afc0f99b0707, 0x20e61a9358d1bf3d], [0x6c4ae45e08851bfb], [ 0x2, 0x363585df6c83b9d], [0x11a55de163a4bd4e])
self.div([0x55540e0154d4f530, 0xb36872d511d1348], [0xc5381c877f0392e6], [0x6ec2a28c2a9f29fe], [0x8ec42a4bc0307d14])
self.div([0x84afa5ae92118f93, 0xa04593051b05dc43], [0xe303d58acfe8475e], [0x95a0995c7ea353a6], [ 0x8f591cc466a1b4f])
self.div([0xdf59415dcf8d8f00, 0xbd0945bd8bf3f836], [0x1ec19424e976aeb4], [ 0x7, 0x430cd457853cb39a], [ 0xf9c888aa83703ee])
self.div([0xb9d7576864c06b57, 0x9dd3ba9efc5e8851], [0x2be11606ad8d9e4a], [ 0x4, 0x3c3bc2143a9d655d], [0x25e1203a3916d56f])
self.div([0x4a2ac516f24941ee, 0x8a49b5b278da6522], [0x5be5616a158db11b], [0xce9c88496fcf92b1], [0x591124fed90c8b77])
self.div([0x4903b5a601df8bd3, 0xe0c3ded4ebc835c5], [0xdd3fa8e303740a46], [0x547b997b071c0f06], [0x5ded49b400cdde21])
self.div([0xc84e02226eba698d, 0xc2ecc16a4a61b81f], [0xcf1c6acb77097245], [0xf7964ab61bea9ecb], [ 0x6c481dd574b8568])
self.div([0x50fea76016920427, 0xd81aacd21b6108a6], [0xb8139e08fb2f2178], [0x70a43462a5ee87f6], [0x3af3fd676be09756])
self.div([0x3bd193fd17b3afeb, 0x4b9e8331209d5ba6], [0x521070e796578a6c], [0xba9ad455260c43e1], [ 0xbc83aca8f626eba])
self.div([0x1cd7721fa52d0eae, 0x72e05f24d1187752], [0x3ab73247e29354ea], [0x7dbfd0cdb8ad375e], [0x20d15517659f0366])
self.div([0x55464a57c927ba6e, 0x40491bc31e35a318], [0xf3d59a9cb90b2a78], [0x598777a22e564a97], [0x2d9cc882ea08e650])
self.div([0x749e08f6a08c8047, 0x36963c8d7c0b4142], [0xcdbedfc15c8e1255], [0x911a08832a14deba], [0x30ab6832a8483980])
self.div([0xafefe174a840b658, 0x610794c072244dac], [0xb794620a29fbfa74], [0xf557ad32ac0ec162], [0x6ea97c7fc584f944])
self.div([0xa8da1ee03f21cdba, 0x6baa7c1e7e591a9f], [0x202d4704759a60c1], [ 0x5, 0x3f642cc18ff1bebe], [0x1a0e67a4bd450d61])
self.div([0x36982464578d98f8, 0x36a29bca0e48686f], [0x8471bef6b2a06af4], [0x69865044ea658041], [0x3bea01f943cf407b])
self.div([0xc9ba267290a210db, 0x5dc79d9a241ed09], [0xf17cc55d519d7190], [0xd5d9ad4b97455643], [0x48ae0666d616d459])
self.div([0xed633fd276402d57, 0xaed2520ee7b4188f], [0xe5b1fbeb67a34b27], [ 0x1, 0x892c93277e1079c], [0x794213b41add3bcb])
self.div([0x552c9aa5f3328708, 0xbd14bba866e79cc6], [0xc880525a410c7b33], [0x6cc01e36fe865479], [0x1c4dcc2078e2a5ab])
self.div([0xb42e94178f07b527, 0x9383c7829a0ede45], [0xfa79ef7f7bf340ed], [0xb827cbc6066f3329], [0x575c6e1995674150])
self.div([0x83e8abb527bdaec3, 0xd7b832e5c9daa3d8], [0xbb0aea668d877052], [0xb48a3ade05fc70db], [0xb203dd9f4b21adb2])
self.div([0x980c37ed8fa8c9be, 0x5559e96392ff0328], [0xeca7ac5113c69073], [0xa47a061755ba2c1f], [0xcbed239bea91c13b])
self.div([0x78fd3e993a69323b, 0xc6c9c055b9da4655], [0xb93e52bfd93818f2], [0xa733f21f56acc39a], [0xa6cf43174482eec1])
self.div([0x22221a345805d809, 0x712ffa0e82f02edc], [ 0x711177061b27945], [ 0x4, 0xd481c48ba20c2980], [ 0x44610a5bb0b7f5c])
self.div([0x8168f26a2c04c642, 0xbb36024ce5a8034c], [0xc8b912c6519203f9], [0xa50c5270795f2d29], [0x374b5c33002b9b6b])
self.div([0x9d33946cb68f0781, 0x9012c2556e008ef], [0x4b075466d7b9537d], [ 0x2, 0x18605529f97f4fc1], [0x324fa6e0836184b2])
self.div([0xf0c74ad292c8ab31, 0x743aff3dbb92eac9], [0xeaa6b4a33fac0791], [ 0x1, 0x6af4c5c37149a51], [0x3731f01c5b434be8])
self.div([0x8facca106940b0f4, 0x9bc3e61134f8ec9a], [0xff5c17cf6a297613], [0x900902707710d537], [0x9c207e62b0a2bf85])
self.div([0x5be6ee1f5c1c1595, 0x43a0715c32077cf7], [0xe045fa386079a6a4], [0x68e7260a9926677b], [0xb2d4a8662530702b])
self.div([0x690f04d577fa271f, 0xed3e6b72f059678f], [0x263066a0d91e8fed], [ 0x2, 0xc0427984bb7788e9], [ 0x6a142a10e780da])
self.div([0x21368ba798192f55, 0xd9dd778fb9bd7958], [0x857a2147e7295334], [0x3fb34ec46de062ac], [0x22612c5ca69faa68])
self.div([0xcb369f7a31f9fe51, 0xca01d858905f70b9], [0x156a39ca92559dcb], [ 0x9, 0x7d446aa503b81a6f], [ 0x53466ca05167b4])
self.div([0x4c109819c8ad686d, 0x739971f38adf43b1], [0xb7790cba359dd054], [0x6a22255468e89064], [0xa89287d6e7eaa2e1])
self.div([0x261ebf44b49260e6, 0xd459f7e9defcf03c], [0x839fcb801bfbc373], [0x4a24174952e372e7], [0x1774c5365ccd5d77])
self.div([0xb12d6f8c330015f4, 0xa472517b1b678672], [0x2e3c1c7e447e6562], [ 0x3, 0xd506054530cb430f], [0x162759813ec0efb4])
self.div([0xcfc8f450b895482b, 0x4bbfb33f23874301], [ 0x5df5b05afed2312], [ 0x23, 0x620049d141dcc081], [ 0x3c6680bed4316ef])
self.div([0xb3e57f3459436f26, 0xdda6864b665497d9], [0x8d2ecabc7f2cc3fc], [ 0x1, 0x46329bbf1576845d], [0x5d8496841bdb754d])
self.div([0xf3a616a741278f85, 0x5d20856e8350e168], [0xc458a1634b659fc1], [ 0x1, 0x3dac8bd9676bcfbf], [0x631c3608a9a6a169])
self.div([0xe386497c9862be25, 0x1b78a003b3f3b00d], [0x8575b7f5d79a0287], [ 0x1, 0xb46eddbc6a10c0b8], [0x4ef660cd2cec9f05])
self.div([0x5a78750a85694352, 0x10e15cf1c5f40cf4], [0xe3dc629ad5178a29], [0x65a499ddf2a24fcf], [0x55abfa180456aecd])
self.div([ 0x32c5244d03e9ba6, 0x4efe8fd29d7cb92a], [0x759abd07da8f7404], [ 0x6e8407293ac5c08], [0x15eff33ffc9fa90a])
self.div([0x6ad2a2c1cb65be67, 0xf45e7f7044f57771], [0xd285abec2184dc2d], [0x81e62a9881da47a8], [0x258e946041627ee9])
self.div([0xb1d296969c61d3a5, 0xe213c6317f3c65ab], [0x9a44c1bd112a80cf], [ 0x1, 0x27162a317827e573], [0x12fa766e1c625dae])
self.div([0xfaa01678081909a7, 0xe91e445396cc2138], [0x1702442169dcc6d5], [ 0xa, 0xe47eedc2c7bf812a], [ 0x1f9c7ce0c772d46])
self.div([0xaf38883ddf1a3804, 0xdc499470b1c68f86], [0xdc017d908e3314e1], [0xcbe34f88a8488698], [ 0x89c5193ff3c63ee])
self.div([0xf633e800bdf91da3, 0x98a564eef3e5c794], [0xaf7bd4ccf5208551], [ 0x1, 0x672aac87f9ec3810], [0x6ef9ed22d507ba84])
self.div([0xb8f3f42ac065df15, 0xc38196eacea42ff1], [0xb1ada3c933d3a470], [ 0x1, 0xa7b3bdf4abc7e05], [0x15b111f57e52d9c1])
self.div([0x66750b1e04606845, 0x55265a197dd836e1], [0x23896a7605e8faea], [ 0x2, 0xe214e2bc5f393087], [0x205d76ebfcd6057b])
self.div([0x637841f5f692e23d, 0x63056eed33830b70], [0x8550ddde339bd974], [0xbf01c5ff8defc8f1], [0x73a8149bf49cb53c])
self.div([0xdea104e129c0f68f, 0x91d3f007df381de5], [0x340165e62392de4f], [ 0x4, 0x47e78d93fb0edaa4], [ 0x4a191f166806d49])
self.div([0x1473a666acae01e9, 0xea0559e518f10a26], [0x44cb2cc44afbd2d5], [0x4c1b493e4d31e888], [0x30d0c875a05300fe])
self.div([0x388a3e7183b6a182, 0x441d3d182e1e8f39], [0xa9785b524533dbd8], [0x5568a804b4855195], [0x1cef746b67284281])
self.div([0xd721f5f33fe9b4b1, 0x62caa79187502aac], [0x37a64e92e2efe82f], [ 0x3, 0xdda7c56322ec2041], [0x1c1550baa20c56bd])
self.div([0x5afc19008fb9acc4, 0xaa9cf002a9cb993], [ 0x2928aaeff4ebb69], [ 0x23, 0x5e843b0bab83c88a], [ 0x184d838fe06aaf9])
self.div([0x68c48843e893630c, 0x3442f302eb36818a], [0x794e7cbe060ca27c], [0xdd18d9d462c54bde], [0x4749f1d7773b4602])
self.div([ 0xa7ef9aa336bd0dc, 0xd61b2ee6d6942c9], [0xbdf44abb2db0a6a8], [ 0xe25379e9857d2e3], [0x429b85cd9df7abd1])
self.div([0xeb8e408a04e73d16, 0x8508555af2d559aa], [0x29c4cd143e6064e0], [ 0x5, 0xa3b77fff74d5548f], [0x1e83f38b0b83808a])
self.div([ 0x5bceeb6c6938604, 0x978f31dc4107e1df], [0x1fad5b60886f9a16], [0x2e5f38457d74c100], [ 0x95bc2438de54bdf])
self.div([0xa71d9b734ae07ea2, 0x1f249e4cc98de490], [0xfc4b7797369e4210], [0xa991e616402bb765], [0xe2cf8d2003346440])
self.div([ 0x21fd84d0b7717ab, 0xf5b90b5ca647283d], [0xdb82b6b3fe7048b8], [ 0x27a3fa73d3033ea], [0x6ba300bc3aa8080d])
self.div([0x2f9395116786d90f, 0x59af3c42cc8b3f75], [0xdb11277e140336c2], [0x3798f709b83dd4e2], [0xb946c770fc224031])
self.div([0x6b1bb2af88d20f65, 0xfc1f68af8dc6e124], [0x44d60aba39807288], [ 0x1, 0x8e55466f49d2bc1b], [0x1d57dfd26d8eeccc])
self.div([0xb47c7e217d8b4ca6, 0x210cdfa0d1dc1da4], [0x522c032e1f330ea0], [ 0x2, 0x324a5ecafee9e8c9], [0x39c53be8fde4a204])
self.div([0xc02e981ee30d60bb, 0x90f6afb543588352], [0xd0e8be153d956e4c], [0xeb80997e85413f4d], [0x9f534e8379f5a276])
self.div([0x3cb1c4fc22678e15, 0xf12fbc12913c667b], [0xec47bbb9a0f74680], [0x41c28aa3ae6de787], [0xcd12be3b89b8b8fb])
self.div([0xc8ed88bb5a230518, 0x41f39d118b24b093], [0x3c6ca77dd50e6634], [ 0x3, 0x53453e246eb63b22], [0x311ebec9ecb521ab])
self.div([0x11134e750432fc66, 0xace34827e1cb8a88], [0x29544c14c7ec11ae], [0x69c48cae52eb7d1f], [0x20139c6370d97076])
self.div([0x4ab075326f7402f5, 0xb2be371c44d8c3f2], [0x17fdb7613e9c94be], [ 0x3, 0x1cfb6296e616ba0a], [ 0xc0273669254e886])
self.div([0xa9f3b6251fcde1b6, 0x5912a4cdfc84857a], [0xb375181c949ed605], [0xf270b99faef8eb46], [0x8db7571dcfc7691c])
self.div([0x4a7010ecdd47e182, 0xf85675ed5cac482b], [0x3357bb27f333a7c6], [ 0x1, 0x732783489c0c1c31], [0x1774e255a4278345])
self.div([0xd888cb98dce23776, 0xde2141c62c2d8479], [0xd610aa585b65514a], [ 0x1, 0x2f3f67a1bd4488d], [0x3c975ca9373aeeb7])
self.div([0x7293063d51b32586, 0x71e3eabb05ceecbb], [0x2f44bf3255929ab7], [ 0x2, 0x6c84d736aa2f2c30], [0x15da0653da21766b])
self.div([0xce849c1df8ed07c1, 0x9f3124d3883ded86], [0x4feba55a663e8c45], [ 0x2, 0x9583dbb150fff74a], [ 0xffcb9335817ce94])
self.div([0xac22fa9fab6b7767, 0x40512e5ac69bea19], [0xb25830f4f59b46df], [0xf716ce6d4e29361e], [0x7f48816df1bf91f7])
self.div([0x632b9f21852f0562, 0xc5c0350ae7574c09], [0xacef0b1d8347e6f8], [0x92ce32fa428b56de], [0x50f5d7928ebdb0f9])
self.div([0x2672fa7984478344, 0x4c810856f4fa51ce], [0xc8c9de0608017477], [0x31058877926bc94f], [ 0xded3fd8cc58f215])
self.div([0xa02eda5659947ed1, 0xfb0e139420cafdef], [0xa11052fc31486d5b], [0xfe99a0ebc214ae24], [0x7c15ff8d772bc323])
self.div([0xb8b56d673de45b7e, 0x98233aee72c0990d], [0x87c4484c5da2b593], [ 0x1, 0x5c48cb7d4d3a58e8], [0x182a14484e9383d5])
self.div([0x2198d60acb9be5db, 0x6de17b63ded26938], [0x321db2775d1a54f8], [0xab9e596930a66f61], [ 0x4fcba119430af40])
self.div([ 0xbe99f35539d3d6b, 0x2fd3f7446fa578e1], [0x1d0b9db73f0613c7], [0x68febe796f8129ad], [ 0x10e99a49f183c66])
self.div([0x9744f8b4e336f85c, 0x78b4a83fba6ef37a], [0x8f869cd2ee5ffa80], [ 0x1, 0xdcfd62aa5dff15e], [0x179ce55422de787a])
self.div([0x70e0e4af4742ea6d, 0xe0f6426d9752e27c], [0x358d8ed0458c3252], [ 0x2, 0x1b983de1d5cb3bf2], [ 0x950b168682c6af8])
self.div([0x11bcb9cf0df10147, 0xc9a078df638bf2cd], [0xf789fc1ef4608dc8], [0x1257ee0e63973cba], [0x8974dc633b320f7d])
self.div([0xd5f779dab3a4f25d, 0xc10bc176ec41f313], [0x39c251579b0c8bbc], [ 0x3, 0xb4582b99bca91fd5], [0x2339ce8a16c9eba7])
self.div([0x4419ff23151874d8, 0xd7f869089dd9910c], [0xac8a3632d746a7e6], [0x650b147f7282740a], [ 0xa4735c08236ca10])
self.div([0x717fe7d3e3499799, 0x60c573165f7218e5], [0x401e244107b89522], [ 0x1, 0xc52a32d387e07b0f], [0x13c56d63d03a05e7])
self.div([0xa46db88053db0851, 0x9b33c8ab8bb593d3], [0x2219e5941730104e], [ 0x4, 0xd260c44f50fa3dab], [0x20c4bb1f4e8c19b9])
self.div([0x47f16c7a269e1afc, 0x3967b323b26241c8], [0x9c2f528ed54911d8], [0x75ebb1855e031c36], [0x42d2b80e317cde38])
self.div([0xe8c412aca43c4c8c, 0x163db538a1f1eba7], [0x70aadbce620ef6af], [ 0x2, 0x10e27bce658dd6ce], [0x4c97cfca4e4e20d5])
self.div([0x5b5bda1d2dae651b, 0x1d01fd1cf5448492], [0x2924d486f0537466], [ 0x2, 0x3870d663a5023e22], [0x287e22de2d325b06])
}
func test_div_2_by_2() {
self.div([0xea8a9116b7af33b7, 0x3d9d6779ddd22ca3], [0xc3673efc7f1f37cc, 0x312f661057d0ba94], [ 0x1], [0x2723521a388ffbeb, 0xc6e01698601720f])
self.div([0xfcd6750d8cfba682, 0xdf3707b55685d5dd], [0x6ac9d1d0de8d4e57, 0xa2b85358486ef39d], [ 0x2], [0x2742d16bcfe109d3, 0x99c66104c5a7eea3])
self.div([0x2e6618d5951f5aa4, 0x61a257f18c8cfe6], [0xef9a7aff3a4b6c3c, 0xe468f1b6e00936c2], [ 0x0], [0x2e6618d5951f5aa4, 0x61a257f18c8cfe6])
self.div([0x437d49c4e8557fbe, 0x915e12f2c2dee160], [0xc99013e2a4ccda2f, 0xcc6b64464f4c1eba], [ 0x0], [0x437d49c4e8557fbe, 0x915e12f2c2dee160])
self.div([0xf45bca4ee852d426, 0x36cd83e58b55dfc1], [0x363f08847914d2af, 0x95a246dc5065682b], [ 0x4], [0x1b5fa83d03ff8967, 0xe044687449c03f15])
self.div([0x5dba490e8cbc49ed, 0xca5f5f9c71b8050e], [0xaadbe6a220cc8ca9, 0x9574953c1da5162c], [ 0x0], [0x5dba490e8cbc49ed, 0xca5f5f9c71b8050e])
self.div([0x63101a374d7822e0, 0xb4aace05906a1387], [ 0x5f72df945d569ff, 0xbe575655c65b2c4d], [ 0x10], [ 0x39d3aa2f02182e4, 0xcf3568a92ab74eb7])
self.div([0xff5a4a17015a2efb, 0x6dc4b8cd19923270], [0x80c83d4c0ecc47eb, 0x9285bb342ef7511d], [ 0x1], [0x7e920ccaf28de70f, 0xdb3efd98ea9ae153])
self.div([0xa0c7d7165cf01386, 0xbf3f66a93056143f], [0x9ac3a19b1e7d6b83, 0x513929792d588736], [ 0x1], [ 0x604357b3e72a803, 0x6e063d3002fd8d09])
self.div([0x15dc04ac4f36e4c1, 0x46b9aabc3606489f], [0x3ee46f82ce142ada, 0x6f7549fbbe7ddc1f], [ 0x0], [0x15dc04ac4f36e4c1, 0x46b9aabc3606489f])
self.div([0x54e2bd14cdf3009c, 0x122d5621bc7c449c], [0x91c3f726a6ebcfc2, 0xa42260b542ffa2f6], [ 0x0], [0x54e2bd14cdf3009c, 0x122d5621bc7c449c])
self.div([0xef668b0696ec4a06, 0xd7234081193fa25e], [0x44489da58192bf39, 0xc89ea7dd73015d8], [ 0x3], [0x228cb21612340c5b, 0xb185810793af60d6])
self.div([0x89fa63cd68bc984f, 0x64466a75380a9636], [0xd0783578c7ecf377, 0xd9887c0a2f08fb32], [ 0x0], [0x89fa63cd68bc984f, 0x64466a75380a9636])
self.div([0x9d4c2e18eedd254e, 0xc942b7ddd2e568cc], [0xbd272a163a7e5fc9, 0x77dca431a1fde0ec], [ 0x0], [0x9d4c2e18eedd254e, 0xc942b7ddd2e568cc])
self.div([0x43861ea6fd264953, 0x7602149b99e8ea5d], [0x6958224e61d1bd42, 0x47a055c0dc0d96b2], [ 0x0], [0x43861ea6fd264953, 0x7602149b99e8ea5d])
self.div([0x2a9d15b433c211ad, 0x3037ddccb49eb3f0], [0xe7e69229fd235b54, 0x3bb77db7022d742a], [ 0x0], [0x2a9d15b433c211ad, 0x3037ddccb49eb3f0])
self.div([0x6b6b97d8f197b39e, 0x92df51dc3ebddf7], [0xa0dacd628b97f093, 0x8bb774bce6e9ce95], [ 0x0], [0x6b6b97d8f197b39e, 0x92df51dc3ebddf7])
self.div([0xe511aa74d659fca9, 0xf4bc23b11b34a260], [0x83a744a6080e457e, 0x4854750c6d5d035a], [ 0x1], [0x616a65cece4bb72b, 0xac67aea4add79f06])
self.div([0x99feb6848b937fca, 0xf235ee16acc61a84], [0xa0ec77f8baf5eff9, 0xb3ec0aab02151d4a], [ 0x0], [0x99feb6848b937fca, 0xf235ee16acc61a84])
self.div([0xe31cef59d1297760, 0x5279ad7210a6721d], [0xdc07ad11e5e368ad, 0xaf32b81e4b1f794c], [ 0x1], [ 0x7154247eb460eb2, 0xa346f553c586f8d1])
self.div([0x6137373a084313f1, 0x3786dd4c343f25df], [0x495afb68babcce34, 0xf2d3152d01989496], [ 0x1], [0x17dc3bd14d8645bc, 0x44b3c81f32a69149])
self.div([0xd3e11d058d108727, 0x32b99a2b341794c2], [0x522110fdecdb18f3, 0x9f855704084c4816], [ 0x2], [0x2f9efb09b35a553f, 0xf3aeec23237f0496])
self.div([0x9f1b58dc4cfd2cf8, 0x2ec65a8383d5566b], [0xa8d8bfb8eda58f99, 0xd7781c8ee0d5a20c], [ 0x0], [0x9f1b58dc4cfd2cf8, 0x2ec65a8383d5566b])
self.div([0x4b56436b6884940f, 0xad8fcd629c616e47], [0xe921f1fc57160fb3, 0x7dbff15a060dbba6], [ 0x0], [0x4b56436b6884940f, 0xad8fcd629c616e47])
self.div([0x9dfcf4847a1bfd70, 0x88eb55272786c1e8], [0x9bf1f07150994953, 0x7a5ff07c1d56b3a6], [ 0x1], [ 0x20b04132982b41d, 0xe8b64ab0a300e42])
self.div([0xda06e8b2702b8f9a, 0xf34868a769837ed9], [0xa378893ac449f38e, 0xfb35422977445c52], [ 0x1], [0x368e5f77abe19c0b, 0xf813267df23f2287])
self.div([0x3f508ff63c524247, 0x10acf945bcd3d69], [0xe33dd0499aaf21c8, 0x359f6d4741813737], [ 0x0], [0x3f508ff63c524247, 0x10acf945bcd3d69])
self.div([0x4a9df4418047e1ab, 0xfc0f6a136ab5f464], [0x5638d08d4b5c7cb4, 0x636eee2113a3244a], [ 0x0], [0x4a9df4418047e1ab, 0xfc0f6a136ab5f464])
self.div([0x8b5d9300fa1d3b89, 0x8a156883986eeb8c], [0x9c46a544dc058f34, 0x90177ba8a63ed453], [ 0x0], [0x8b5d9300fa1d3b89, 0x8a156883986eeb8c])
self.div([0xb1c5f0ee043fec5e, 0x567825906c61fa2e], [0x9f7786616a38ba84, 0x224cae6742cb853b], [ 0x1], [0x124e6a8c9a0731da, 0x342b7729299674f3])
self.div([0xce7ff018f5f69e08, 0x5e8bd1afcd20bef1], [ 0xb1825f549c7ac5d, 0xb4db890a129c088b], [ 0x12], [ 0x6cd44d9c5ec7f71, 0xa71c2efa7e28252b])
self.div([ 0x49e68e401c4dd59, 0x9a694ba8a81eccfb], [0x3d26e0c5c3f328df, 0xc33b9a28a78deccc], [ 0x0], [ 0x49e68e401c4dd59, 0x9a694ba8a81eccfb])
self.div([0x33bf7db739e2a675, 0xe5df7cff92c125cc], [0xd8d4ed533df0befa, 0x1038129848272c53], [ 0x0], [0x33bf7db739e2a675, 0xe5df7cff92c125cc])
self.div([0x9db744fa509dfe4f, 0xe909b70b419cad6d], [0x5b1163648d1f4eae, 0xa6496b029de6b2ee], [ 0x1], [0x42a5e195c37eafa1, 0x42c04c08a3b5fa7f])
self.div([0xfde3633e1ce31040, 0x676e9b9787ddd7be], [0x93cdabadfaef3ccc, 0x5904dc4870360d28], [ 0x1], [0x6a15b79021f3d374, 0xe69bf4f17a7ca96])
self.div([0x8298e72755f4bb02, 0x94d13aa1fef6b002], [0x320b4311da699f61, 0x9dbd627acea5e3], [ 0x2], [0x1e826103a1217c40, 0x9395bfdd0959643c])
self.div([0xbfd1d621c43d39b2, 0xe951ad48355376da], [0x84b737f3c3d318f7, 0xae152b75f805ecab], [ 0x1], [0x3b1a9e2e006a20bb, 0x3b3c81d23d4d8a2f])
self.div([0xf118b5e551a28983, 0x1614e314047e35a3], [0x980020b17ad9cace, 0x6f36eb13060dbce2], [ 0x1], [0x59189533d6c8beb4, 0xa6ddf800fe7078c1])
self.div([0x50e130c23836c564, 0x37378d7315fe545b], [0x852cdf0aa35893f5, 0x8a50c1724d707405], [ 0x0], [0x50e130c23836c564, 0x37378d7315fe545b])
self.div([0xea3b9ee40af24bee, 0xcf460a4da0c85f41], [0x5bfa2d079381dab0, 0xc4204d4698bf5b6f], [ 0x2], [0x324744d4e3ee968d, 0x47056fc06f49a863])
self.div([0xcb9df1fafe19ae67, 0x1651fde60b5c92c0], [0xdc2d0d9d7e5083dc, 0xa299db4a53cc7c86], [ 0x0], [0xcb9df1fafe19ae67, 0x1651fde60b5c92c0])
self.div([0x67d3b80f1ba71b58, 0xc71d74fcf1eeba31], [0x6d7519b8c493a37f, 0x21036ce670c570b1], [ 0x0], [0x67d3b80f1ba71b58, 0xc71d74fcf1eeba31])
self.div([0x2e0155a6545fea78, 0x225acaaa471d09d7], [ 0xa0b724732123906, 0x6dce1ac87e9656db], [ 0x4], [ 0x5d38c898c17065e, 0x6b225f884cc3ae6b])
self.div([0x96bf97265800d6de, 0x7990c48272fd34e], [0x34f72af26fb37022, 0x43f5c02100045ada], [ 0x2], [0x2cd141417899f699, 0x7fad8c0627271d9a])
self.div([0xb7fb87e6e0ed77eb, 0x7c12739104f7f9a6], [0xc7ab5dd34a452f20, 0x41315550f868dc6], [ 0x0], [0xb7fb87e6e0ed77eb, 0x7c12739104f7f9a6])
self.div([0xce1e68596f2dd3a4, 0x8f4a6304578855fb], [0x24661d7e5bf88755, 0xb4a2dc125e99e4d1], [ 0x5], [0x181fd4e1a3532ef8, 0x81c16a87e86dde6])
self.div([ 0x8b8dc959a0f40e, 0xb5279d4c153d619f], [0x93788d9d0d90fa2f, 0xbe217dd954a7b42d], [ 0x0], [ 0x8b8dc959a0f40e, 0xb5279d4c153d619f])
self.div([0xbb0adf2c334418cb, 0x615e55da605dd872], [0xc21e35da354f6cb5, 0xfcef6d53bb4a9e6e], [ 0x0], [0xbb0adf2c334418cb, 0x615e55da605dd872])
self.div([0xb4a3bee9da3f7488, 0x9ab552a2d5dffa78], [0xb40406e1940f984e, 0xc00e71927dd0e37e], [ 0x1], [ 0x9fb808462fdc39, 0xdaa6e110580f16fa])
self.div([0xcbd8b4eb25cd589f, 0x2f241c6bdec1a21a], [0x55edfc24163f6d3a, 0x98a513a675fb1457], [ 0x2], [0x1ffcbca2f94e7e29, 0xfdd9f51ef2cb796c])
self.div([0x27c87a52cd5a2a7b, 0x11a6101d78242229], [0x5a7d1d0be2a39e4d, 0x89f4723635f78f17], [ 0x0], [0x27c87a52cd5a2a7b, 0x11a6101d78242229])
self.div([0x181203e641ffd70d, 0x2f6f575386803d56], [0x42bb33e902e9290c, 0xad4c5b9e8685fd8a], [ 0x0], [0x181203e641ffd70d, 0x2f6f575386803d56])
self.div([0x8406c23b81848c31, 0x24b2c739cdfeb86c], [0x7423292423bdcf9f, 0x6028235cf5e114b5], [ 0x1], [ 0xfe399175dc6bc91, 0xc48aa3dcd81da3b7])
self.div([0xbbe144a2f9931042, 0x642d2939ce669480], [0xc530903dfe531745, 0xcfb3cd91e6f5977a], [ 0x0], [0xbbe144a2f9931042, 0x642d2939ce669480])
self.div([0xff382a46bbe96863, 0x71dea2a2d0f1f443], [0x561fee38594898f9, 0x54054771b7642d02], [ 0x2], [0x52f84dd609583670, 0xc9d413bf62299a3f])
self.div([0x50ce4fef921973b4, 0x886391a26dfde190], [0x41241af887756571, 0xe2a54faf9011dfd], [ 0x1], [ 0xfaa34f70aa40e43, 0x7a393ca774fcc393])
self.div([0xf447b832c13acb39, 0xbaf546b15196f7ec], [0x4affd4a628ebac38, 0x9c4816d20af4cb2e], [ 0x3], [0x13483a404677c68f, 0xe61d023b30b89662])
self.div([0x6e7f4aebc340d5ee, 0x56a38f2ba1cf9a81], [0x83ebae3246091876, 0x3662eca69bd2ed0d], [ 0x0], [0x6e7f4aebc340d5ee, 0x56a38f2ba1cf9a81])
self.div([0xf916c6cdde7d6935, 0x20c5abc5427d4601], [0x4275019e51e39619, 0xb2a701ea9f69b3b9], [ 0x3], [0x31b7c1f2e8d2a6e8, 0x8d0a60564402ad6])
self.div([0xea6a8e9fc364354e, 0x9435e7da4851ee0a], [0xc0b0d11590d04152, 0x45786fbbaf266429], [ 0x1], [0x29b9bd8a3293f3fc, 0x4ebd781e992b89e1])
self.div([0xb5a95b2cbe02f7a3, 0x4c7fae653ae5f661], [0x955e4bfe5e3adede, 0xe0ec9ab90de56701], [ 0x1], [0x204b0f2e5fc818c4, 0x6b9313ac2d008f60])
self.div([0xdab4dede6f21e5c2, 0x881fc280ad90020f], [0xc7f33097dc0da2a0, 0xb671097eef68408d], [ 0x1], [0x12c1ae4693144321, 0xd1aeb901be27c182])
self.div([0xdb5559b39fbc04ac, 0xad5001fee4e016cb], [ 0xe165e86addb187f, 0x7416e32b930c0901], [ 0xf], [ 0x805cfcf6fe59534, 0xdff8b271472b8fbc])
self.div([0x6adc20395d886970, 0x4bd715e6dcb57ef7], [ 0xf6483ce492f37ec, 0x12e2dd9b6560cf96], [ 0x6], [ 0xe810963a66d19e7, 0xda85e4427c70a173])
self.div([0x38c313a79996749d, 0x90bf09a0762e8d92], [0xfe0d7b1439031ec1, 0x68afaf014bf22c65], [ 0x0], [0x38c313a79996749d, 0x90bf09a0762e8d92])
self.div([0xc59bb8c4544fa9b1, 0x374af3dbb832256], [0x9220283a9e939b2a, 0xa5cc38f784ca0745], [ 0x1], [0x337b9089b5bc0e86, 0x5da8764636b91b11])
self.div([0x87fd325f065823b3, 0xdd29a690c523efd3], [0xd8f146ccb2774676, 0x75f42854544569e], [ 0x0], [0x87fd325f065823b3, 0xdd29a690c523efd3])
self.div([0x92388a3c403baaf7, 0x9ea3bbed3264285], [0xce9c45e91ef4fa4e, 0xae590f8c093f7669], [ 0x0], [0x92388a3c403baaf7, 0x9ea3bbed3264285])
self.div([0x6a51ffff991696fc, 0xe5b4ad98ff9b5df3], [0x2f244b6e1e2240ca, 0x9714bfc8b891444b], [ 0x2], [ 0xc0969235cd21567, 0xb78b2e078e78d55d])
self.div([0xa12c963f88f9e5d3, 0x88747bfef0210cad], [0xec02cd647b8c68d3, 0x29219068e5ba4500], [ 0x0], [0xa12c963f88f9e5d3, 0x88747bfef0210cad])
self.div([0x2e444315704cf22f, 0x7a57ba3ab965a370], [0x91b00de1d806886b, 0x4a0d412f0084a896], [ 0x0], [0x2e444315704cf22f, 0x7a57ba3ab965a370])
self.div([0x8bd60e0dd55e7dbf, 0xbe4fc9b7b3a85dd7], [0xae8839e4a1362130, 0xcb79fed229f957f2], [ 0x0], [0x8bd60e0dd55e7dbf, 0xbe4fc9b7b3a85dd7])
self.div([0x10e2b9acb957db7d, 0x2adaeb7d235e17fb], [ 0x3a3ae5dbcb6b9e6, 0x6c420335594a6454], [ 0x4], [ 0x2540035c67cf3e3, 0x79d2dea7be3486ab])
self.div([0x8583cdc23810c7ad, 0x67cb8588389eca60], [0xe51eb85ae817fd29, 0xe12b7b9a5714dd63], [ 0x0], [0x8583cdc23810c7ad, 0x67cb8588389eca60])
self.div([0x7597951cbe184ec4, 0x3c3328ba252ed055], [0x1121d72f7ed30f03, 0xa5b1788baa933826], [ 0x6], [ 0xecc89ffc525f4ae, 0x5a0a557425bb7f71])
self.div([0xd28e10914944ac2d, 0xbc8c59fa811365d2], [0xd844eb40fa7432da, 0xdf00f872a1688dd], [ 0x0], [0xd28e10914944ac2d, 0xbc8c59fa811365d2])
self.div([0xfa782bbdf152f546, 0x95cc2848c4d2e15], [0xe8ecfce82dd230b9, 0x84014dc8a50bc743], [ 0x1], [0x118b2ed5c380c48c, 0x855b74bbe74166d2])
self.div([0x293f159b71a16c13, 0xdac735a0332e0ea7], [0x5ace6cab4ef426ea, 0xf65ae73a30772593], [ 0x0], [0x293f159b71a16c13, 0xdac735a0332e0ea7])
self.div([0x7da70c373f368c4a, 0xd0b3f92b2e20c38b], [0xeb619b33f4d3e06d, 0x5c22a188ba50078], [ 0x0], [0x7da70c373f368c4a, 0xd0b3f92b2e20c38b])
self.div([0x5197e7b9b254673f, 0x16f1b0be42334511], [0x86d39f5cf76be496, 0x4d8e5505ca8351bb], [ 0x0], [0x5197e7b9b254673f, 0x16f1b0be42334511])
self.div([0x156e5b9ec3cfd9e9, 0x8c5b28f32681a8ff], [0xcc7aed7a5e6a7db4, 0xbc3dea6b6f853df4], [ 0x0], [0x156e5b9ec3cfd9e9, 0x8c5b28f32681a8ff])
self.div([0xa8ee30dc1292d1ac, 0x24a09e80c94b1e59], [0xcd2e65c6d747f507, 0x2c72d13e86cc2221], [ 0x0], [0xa8ee30dc1292d1ac, 0x24a09e80c94b1e59])
self.div([0x426011199c5df4cf, 0x7947d0555e3dade2], [0xbd970e365962b320, 0x7b939071aa729326], [ 0x0], [0x426011199c5df4cf, 0x7947d0555e3dade2])
self.div([0x60c417d7be4ee1f8, 0xb23722357b57049b], [0x996ae48898baa9d5, 0x18fd178a786376c8], [ 0x0], [0x60c417d7be4ee1f8, 0xb23722357b57049b])
self.div([0x3aafc724ae4974dd, 0x9a015490ad45421a], [0x865162aeb3a5ad28, 0x44bbdac7ea51f563], [ 0x0], [0x3aafc724ae4974dd, 0x9a015490ad45421a])
self.div([0x4c8b75dba8a81f2c, 0x4c6cecf628eaf02d], [0x220ac23236bfaa88, 0x74a5d3637dd24c31], [ 0x2], [ 0x875f1773b28ca1b, 0x6321462f2d4657cb])
self.div([0x5fb4781ab4b0fed5, 0xf3161996cbd7afbe], [0x252d390d72bd9e53, 0x5ad50db587878801], [ 0x2], [0x155a05ffcf35c22f, 0x3d6bfe2bbcc89fbc])
self.div([ 0xdbb5a3a03939409, 0x91d786ca20c8b8b2], [0xd30afcec12312005, 0x92bdb52e932b9ba1], [ 0x0], [ 0xdbb5a3a03939409, 0x91d786ca20c8b8b2])
self.div([0x5781431f74445c9a, 0x509044d282248792], [0x98f906ce3626fc42, 0x6d0dcce275334da1], [ 0x0], [0x5781431f74445c9a, 0x509044d282248792])
self.div([0xb447a3bf53d75561, 0xe806aaf37ce2398f], [0xeb8844eaeb4cb416, 0xecfe88fc920e70dd], [ 0x0], [0xb447a3bf53d75561, 0xe806aaf37ce2398f])
self.div([0x4c97e3fda188863a, 0x928da9f6f4473e88], [0x628afa772102379d, 0x94f59a87b0801c1e], [ 0x0], [0x4c97e3fda188863a, 0x928da9f6f4473e88])
self.div([0x9ad20a6c9177f978, 0x9302e129be3dfe89], [ 0xc998e09418f87b2, 0x4c077379718c9bb3], [ 0xc], [ 0x39f61fd7ebd9d1d, 0x2a977786ba6b225])
self.div([0x6c70c4666d731a6f, 0xd85ba4dacbb4c4a4], [0x212ef6ed02b37ad5, 0x7303d92eabe211ea], [ 0x3], [ 0x8e3df9f6558a9ef, 0x7f50194ec80e8ee6])
self.div([0x23127ef9327ed451, 0x5ffe91a808951c8b], [0x97e46b77f9594e9d, 0x8530bd3fe72287e1], [ 0x0], [0x23127ef9327ed451, 0x5ffe91a808951c8b])
self.div([0x524a2e171e44352e, 0x7de5b3ea2ab3ac5a], [0x44ab6e9244c9e943, 0xd41fbb88cfb43266], [ 0x1], [ 0xd9ebf84d97a4bea, 0xa9c5f8615aff79f4])
self.div([0x6a392364f06b8e5a, 0x62dae2ef7ea1d12a], [0xa82f29eb5e0d07ed, 0xea326976482e5f6], [ 0x0], [0x6a392364f06b8e5a, 0x62dae2ef7ea1d12a])
self.div([0x8b3fa51d2430fd95, 0x15b59430d1426232], [0x9a4ed852d8b3d661, 0xa32e848497a03036], [ 0x0], [0x8b3fa51d2430fd95, 0x15b59430d1426232])
self.div([0xd25e59cd75cc39af, 0x374243fdbf9168ce], [0xfca910b2bfdba957, 0x55f5b531219613d2], [ 0x0], [0xd25e59cd75cc39af, 0x374243fdbf9168ce])
self.div([0xcb88454f7dde9293, 0xc06fafff57e076de], [0x5fe7b1ad55dff729, 0xb352b5a0f558758e], [ 0x2], [ 0xbb8e1f4d21ea440, 0x59ca44bd6d2f8bc2])
self.div([0x25032e7704b898bf, 0x7bf76b2ecf2c9677], [0x2aa05922703fe0e5, 0x4959bc7d2abd18a6], [ 0x0], [0x25032e7704b898bf, 0x7bf76b2ecf2c9677])
}
private func div(
_ lhsWords: [Word],
_ rhsWords: [Word],
_ quotientWords: [Word],
_ remainderWords: [Word],
file: StaticString = #file,
line: UInt = #line
) {
let lhs = self.create(lhsWords)
let rhs = self.create(rhsWords)
let quotient = self.create(quotientWords)
let remainder = self.create(remainderWords)
let qr = lhs.quotientAndRemainder(dividingBy: rhs)
XCTAssertEqual(qr.quotient, quotient, "quotientAndRemainder.quotient", file: file, line: line)
XCTAssertEqual(qr.remainder, remainder, "quotientAndRemainder.remainder", file: file, line: line)
let q = lhs / rhs
XCTAssertEqual(q, quotient, "/", file: file, line: line)
let r = lhs % rhs
XCTAssertEqual(r, remainder, "%", file: file, line: line)
}
// MARK: - Create
private func create(_ words: [Word]) -> UInt128 {
switch words.count {
case 1: return UInt128((0, words[0]))
case 2: return UInt128((words[0], words[1]))
default: fatalError("Unknown UInt128 input: \(words)")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment