# Test vectors for low-level MP functions
#
-# $Id: mpx,v 1.4 1999/12/13 15:35:59 mdw Exp $
+# $Id: mpx,v 1.11 2003/05/16 09:09:24 mdw Exp $
# --- Load-store tests ---
#
522f8b1de257972a25ec49c9ff56340e2684e847ef2fa4d5714d7c8d454e90f6;
}
+# --- Two's complement tests ---
+
+2cb {
+ "" "";
+ 00 00;
+ 000000 00000000000000000000;
+ 01 ff;
+ 0123456789abcdef fedcba9876543211;
+ 0123456789abcdef fffffffedcba9876543211;
+ 0100000000 ffffff00000000;
+ 00000000c1a4bc4b ffffffff3e5b43b5;
+ ffffffff3e5b43b5 00000000c1a4bc4b;
+}
+
+2cl {
+ "" "";
+ 00 00;
+ 000000 00000000000000000000;
+ 01 ff;
+ efcdab8967452301 1132547698badcfe;
+ efcdab8967452301 1132547698badcfeffffffff;
+ 0000000001 00000000ffffffff;
+ 4bbca4c100000000 b5435b3effffffff;
+ b5435b3effffffff 4bbca4c100000000;
+}
+
# --- Shift tests ---
lsl {
-
# --- Simple sanity checks ---
01 2 04;
01 4 10;
+ 7 -1 0;
+
# --- Copy shifts ---
01 0 01;
0e0dd2bb4d1e654846356309a2d97fee00000000;
}
-lsr {
+lslc {
+ # --- Simple sanity checks ---
+
+ 01 2 07;
+ 01 4 1f;
+
+ 7 -1 0;
+
+ # --- Copy shifts ---
+
+ 01 0 01;
+ 0123456789abcdef0123456789abcdef 0 0123456789abcdef0123456789abcdef;
+
+ # --- Single bit shifts ---
+
+ 01 1 03;
+ ff000000 1 01fe000001;
+
+ # --- Word-size shifts (assumes 32-bit words) ---
+
+ 0123456789abcdef0123456789abcdef 32
+ 0123456789abcdef0123456789abcdefffffffff;
+
+ # --- Random tests ---
+
+ 13bbec3a734e0b8b5155600b0826b913 90
+ 4eefb0e9cd382e2d4555802c209ae44fffffffffffffffffffffff;
+
+ d6ca6a99fe49b256f80e9643e2bd4f3e 80
+ d6ca6a99fe49b256f80e9643e2bd4f3effffffffffffffffffff;
+
+ c94784b40d54de614084915915531ddc 59
+ 064a3c25a06aa6f30a04248ac8aa98eee7ffffffffffffff;
+
+ a63c314a39cc37f950b3d530c95ead00 84
+ 0a63c314a39cc37f950b3d530c95ead00fffffffffffffffffffff;
+
+ 842d03a339f5004cfd311e2bb23216ac 62
+ 210b40e8ce7d40133f4c478aec8c85ab3fffffffffffffff;
+ 9a8e659739bf9ee7aa908b7c058c5e7e 123
+ 04d4732cb9cdfcf73d54845be02c62f3f7ffffffffffffffffffffffffffffff;
+
+ 287f5774f212db87bcd83a1bbb7b1ad5 6
+ 0a1fd5dd3c84b6e1ef360e86eedec6b57f;
+
+ ec1739174d9d4438d3093cf378605a5c 63
+ 760b9c8ba6cea21c69849e79bc302d2e7fffffffffffffff;
+
+ 3dfa8ad6a60a783639d05aa5fbfd993d 46
+ 0f7ea2b5a9829e0d8e7416a97eff664f7fffffffffff;
+
+ e4e93a80b6d25b34c23aca3a0d06d76c 63
+ 72749d405b692d9a611d651d06836bb67fffffffffffffff;
+
+ 5a4cf5becb4b64a1a31637c91b6415fd 102
+ 16933d6fb2d2d92868c58df246d9057f7fffffffffffffffffffffffff;
+
+ d92f60928b67416c1e20bd9e09026115 69
+ 1b25ec12516ce82d83c417b3c1204c22bfffffffffffffffff;
+
+ eae78f56200d7734f7eb68479fe09d51 18
+ 03ab9e3d588035dcd3dfada11e7f827547ffff;
+
+ 4c9c215ead951513d969d66614016f6e 28
+ 04c9c215ead951513d969d66614016f6efffffff;
+
+ 5cb1e4d625eac0393644fe6a7e3ff788 33
+ b963c9ac4bd580726c89fcd4fc7fef11ffffffff;
+
+ 68b23795968766c77b1897c88a5d6ba8 78
+ 1a2c8de565a1d9b1dec625f222975aea3fffffffffffffffffff;
+
+ 3d96cd168c74f9015afb691d629f3f6d 72
+ 3d96cd168c74f9015afb691d629f3f6dffffffffffffffffff;
+
+ 38fa8f63dc426399e0f9b5c01231e02c 95
+ 1c7d47b1ee2131ccf07cdae00918f0167fffffffffffffffffffffff;
+
+ 90176b493061899ec95677ccc58b8cdf 78
+ 2405dad24c186267b2559df33162e337ffffffffffffffffffff;
+
+ 0706e95da68f32a4231ab184d16cbff7 33
+ 0e0dd2bb4d1e654846356309a2d97fefffffffff;
+}
+
+lsr {
# --- Simple sanity checks ---
04 2 01;
10 4 01;
+ 7 -1 0;
+ 7 32 0;
# --- Copy shifts ---
54f04f121d22db842523e9bf75727d5b0e9ef17e6d727918894927fade87ceeb2106684c4af7c49653425e29f7a91abf8adec4de2ca499df2534644397e454ac
13ca59703f4c087c16a9a7bc7022904a37a469c1d0fd9fa7ffabe8f7d887fe1572c0bf5c75fde6913b565f8106bba9c26c9bbce190a9b8967112d74c0ac3d4ff9d2a385b96833e3c456d5601c74d8d2c9fff35abc60e7cc15d7c680f20757c13a415f1b8fbe3c6c32434aa36c528473dd20ea39f0e5ee22d1cd23040900d3164;
+ # --- More Karatsuba bugs ---
+
+ 3fef06998b0ddd140e01527426ea409b2b9e640f223dfd652229fd17eb99d44f6be6d4935505df676f48c8fcbfe2d5096345d6509267aa40c54d427f0cce45cd0f8fa7e4a22492d7ed4ffa45e3c0e5e3c25c841943fb2cecd6ee9275ae93c4e15e2d9f8f317c44c541ed52a6338b0fb9f7f7f4dea78cf7ef5201837c00a6d4d2
+ 0260acc6378341b2b894dacab3a44b914f19292bb32898b155584a406161bb04ad9c14db20888dfcdab613b368b5c699305c4e9b226d90f9523fbcb6293407bd2bb18bf7bdba8539fb577f19b72124c2d83a2bc31f44366e917ddc705085b79fe9e0df0e98e4f6ae3df63d9b321382c18b95de1dc4d1db93b3092c9c6f8c9764
+ 9802d5c5d5a73f9d4e694a8920f951ce4bfe80c13a35cd5332a556136b83495a2e9b4d2ed53aae1218d2e1c41349311f86b1ee1f2ad5cd3c5b264e8e68906ca45bd7d0fc8e8a5a9648f458cecba41fd0848a04f506bb11ddb378f3214085cf865ba5533cfd73b28b1e12784f447b156f59a3b68e6ec68303ddfce59ce33ca386ff3316e6a5e6f9b4201682aa9e59a6d7cb9315a492457640acca19fc7dc3a25a316fea9a0f1d32838b7f911650647f996551263c2d001fa1c720753afca316c7137300ff93f2ddd2846ce14c55d0ead626f681bd11707f9674905396a9bc9a889eae721ab6407586880a95575a968b43bdf50323627aa0fcddfa4e198b0008;
}
usqr {
620d87bb63872a40fc2092b0ed7d3ec4b648be41
0155177e99a8a5113226ff8270
2ea2205327e66d75990cc999fc2380883ee4591a;
+
+ # --- Bugs ---
+
+ 1a923b3406cbe81b093ce418f6a73107f504502b2e3d1b200762fcf6062723de405cab0aea00000000000000000000000000000000
+ 184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
+ 0117d3db34ad005954459be9abedd0e5deb4ea0000000000000000
+ 00;
}