Support modular division of signed numbers.
This commit is contained in:
@@ -57,12 +57,14 @@ conversion_impls!(U320, U640);
|
||||
addition_impls!(U384, U448);
|
||||
base_impls!(U384, 6);
|
||||
random_impls!(U384, UniformU384);
|
||||
barrett_impl!(BarrettU384, U384, U448, U768, U832);
|
||||
div_impls!(U384, U768);
|
||||
multiply_impls!(U384, U768);
|
||||
shift_impls!(U384, 6);
|
||||
subtraction_impls!(U384, 6);
|
||||
conversion_impls!(U384, U448);
|
||||
conversion_impls!(U384, U768);
|
||||
conversion_impls!(U384, U832);
|
||||
conversion_impls!(U384, U896);
|
||||
conversion_impls!(U384, U1024);
|
||||
addition_impls!(U448, U512);
|
||||
@@ -70,8 +72,11 @@ base_impls!(U448, 7);
|
||||
random_impls!(U448, UniformU448);
|
||||
div_impls!(U448, U896);
|
||||
multiply_impls!(U448, U896);
|
||||
shift_impls!(U448, 7);
|
||||
subtraction_impls!(U448, 7);
|
||||
conversion_impls!(U448, U512);
|
||||
conversion_impls!(U448, U768);
|
||||
conversion_impls!(U448, U832);
|
||||
conversion_impls!(U448, U896);
|
||||
addition_impls!(U512, U576);
|
||||
base_impls!(U512, 8);
|
||||
@@ -95,6 +100,7 @@ prime_gen_impls!(U512);
|
||||
addition_impls!(U576, U640);
|
||||
base_impls!(U576, 9);
|
||||
random_impls!(U576, UniformU576);
|
||||
barrett_impl!(BarrettU576, U576, U640, U1152, U1216);
|
||||
div_impls!(U576, U1152);
|
||||
multiply_impls!(U576, U1152);
|
||||
shift_impls!(U576, 9);
|
||||
@@ -103,6 +109,7 @@ conversion_impls!(U576, U640);
|
||||
conversion_impls!(U576, U1024);
|
||||
conversion_impls!(U576, U1088);
|
||||
conversion_impls!(U576, U1152);
|
||||
conversion_impls!(U576, U1216);
|
||||
conversion_impls!(U576, U1280);
|
||||
addition_impls!(U640, U704);
|
||||
base_impls!(U640, 10);
|
||||
@@ -112,18 +119,35 @@ multiply_impls!(U640, U1280);
|
||||
shift_impls!(U640, 10);
|
||||
subtraction_impls!(U640, 10);
|
||||
conversion_impls!(U640, U704);
|
||||
conversion_impls!(U640, U1152);
|
||||
conversion_impls!(U640, U1216);
|
||||
conversion_impls!(U640, U1280);
|
||||
base_impls!(U704, 11);
|
||||
random_impls!(U704, UniformU704);
|
||||
subtraction_impls!(U704, 11);
|
||||
addition_impls!(U768, U832);
|
||||
base_impls!(U768, 12);
|
||||
random_impls!(U768, UniformU768);
|
||||
div_impls!(U768, U1536);
|
||||
multiply_impls!(U768, U1536);
|
||||
shift_impls!(U768, 12);
|
||||
subtraction_impls!(U768, 12);
|
||||
conversion_impls!(U768, U832);
|
||||
conversion_impls!(U768, U1536);
|
||||
addition_impls!(U832, U896);
|
||||
base_impls!(U832, 13);
|
||||
random_impls!(U832, UniformU832);
|
||||
div_impls!(U832, U1664);
|
||||
multiply_impls!(U832, U1664);
|
||||
subtraction_impls!(U832, 13);
|
||||
conversion_impls!(U832, U896);
|
||||
conversion_impls!(U832, U1664);
|
||||
addition_impls!(U896, U960);
|
||||
base_impls!(U896, 14);
|
||||
random_impls!(U896, UniformU896);
|
||||
div_impls!(U896, U1792);
|
||||
multiply_impls!(U896, U1792);
|
||||
shift_impls!(U896, 14);
|
||||
subtraction_impls!(U896, 14);
|
||||
conversion_impls!(U896, U960);
|
||||
conversion_impls!(U896, U1792);
|
||||
@@ -161,18 +185,29 @@ conversion_impls!(U1088, U1152);
|
||||
conversion_impls!(U1088, U2048);
|
||||
conversion_impls!(U1088, U2112);
|
||||
conversion_impls!(U1088, U2176);
|
||||
addition_impls!(U1152, U1216);
|
||||
base_impls!(U1152, 18);
|
||||
random_impls!(U1152, UniformU1152);
|
||||
div_impls!(U1152, U2304);
|
||||
multiply_impls!(U1152, U2304);
|
||||
shift_impls!(U1152, 18);
|
||||
subtraction_impls!(U1152, 18);
|
||||
conversion_impls!(U1152, U1216);
|
||||
conversion_impls!(U1152, U2304);
|
||||
addition_impls!(U1216, U1280);
|
||||
base_impls!(U1216, 19);
|
||||
random_impls!(U1216, UniformU1216);
|
||||
div_impls!(U1216, U2432);
|
||||
multiply_impls!(U1216, U2432);
|
||||
subtraction_impls!(U1216, 19);
|
||||
conversion_impls!(U1216, U1280);
|
||||
conversion_impls!(U1216, U2432);
|
||||
addition_impls!(U1280, U1344);
|
||||
base_impls!(U1280, 20);
|
||||
random_impls!(U1280, UniformU1280);
|
||||
div_impls!(U1280, U2560);
|
||||
multiply_impls!(U1280, U2560);
|
||||
shift_impls!(U1280, 20);
|
||||
subtraction_impls!(U1280, 20);
|
||||
conversion_impls!(U1280, U1344);
|
||||
conversion_impls!(U1280, U2560);
|
||||
@@ -249,6 +284,9 @@ subtraction_impls!(U2176, 34);
|
||||
base_impls!(U2304, 36);
|
||||
random_impls!(U2304, UniformU2304);
|
||||
subtraction_impls!(U2304, 36);
|
||||
base_impls!(U2432, 38);
|
||||
random_impls!(U2432, UniformU2432);
|
||||
subtraction_impls!(U2432, 38);
|
||||
base_impls!(U2560, 40);
|
||||
random_impls!(U2560, UniformU2560);
|
||||
subtraction_impls!(U2560, 40);
|
||||
@@ -523,11 +561,13 @@ mod tests {
|
||||
generate_base_tests!(U640, u640);
|
||||
generate_base_tests!(U704, u704);
|
||||
generate_base_tests!(U768, u768);
|
||||
generate_base_tests!(U832, u832);
|
||||
generate_base_tests!(U896, u896);
|
||||
generate_base_tests!(U960, u960);
|
||||
generate_base_tests!(U1024, u1024);
|
||||
generate_base_tests!(U1088, u1088);
|
||||
generate_base_tests!(U1152, u1152);
|
||||
generate_base_tests!(U1216, u1216);
|
||||
generate_base_tests!(U1280, u1280);
|
||||
generate_base_tests!(U1344, u1344);
|
||||
generate_base_tests!(U1536, u1536);
|
||||
@@ -538,6 +578,7 @@ mod tests {
|
||||
generate_base_tests!(U2112, u2112);
|
||||
generate_base_tests!(U2176, u2176);
|
||||
generate_base_tests!(U2304, u2304);
|
||||
generate_base_tests!(U2432, u2432);
|
||||
generate_base_tests!(U2560, u2560);
|
||||
generate_base_tests!(U3072, u3072);
|
||||
generate_base_tests!(U3136, u3136);
|
||||
@@ -584,11 +625,13 @@ mod tests {
|
||||
generate_conversion_tests!(U640, u640);
|
||||
generate_conversion_tests!(U704, u704);
|
||||
generate_conversion_tests!(U768, u768);
|
||||
generate_conversion_tests!(U832, u832);
|
||||
generate_conversion_tests!(U896, u896);
|
||||
generate_conversion_tests!(U960, u960);
|
||||
generate_conversion_tests!(U1024, u1024);
|
||||
generate_conversion_tests!(U1088, u1088);
|
||||
generate_conversion_tests!(U1152, u1152);
|
||||
generate_conversion_tests!(U1216, u1216);
|
||||
generate_conversion_tests!(U1280, u1280);
|
||||
generate_conversion_tests!(U1344, u1344);
|
||||
generate_conversion_tests!(U1536, u1536);
|
||||
@@ -599,6 +642,7 @@ mod tests {
|
||||
generate_conversion_tests!(U2112, u2112);
|
||||
generate_conversion_tests!(U2176, u2176);
|
||||
generate_conversion_tests!(U2304, u2304);
|
||||
generate_conversion_tests!(U2432, u2432);
|
||||
generate_conversion_tests!(U2560, u2560);
|
||||
generate_conversion_tests!(U3072, u3072);
|
||||
generate_conversion_tests!(U3136, u3136);
|
||||
@@ -645,11 +689,13 @@ mod tests {
|
||||
generate_codec_tests!(U640, u640);
|
||||
generate_codec_tests!(U704, u704);
|
||||
generate_codec_tests!(U768, u768);
|
||||
generate_codec_tests!(U832, u832);
|
||||
generate_codec_tests!(U896, u896);
|
||||
generate_codec_tests!(U960, u960);
|
||||
generate_codec_tests!(U1024, u1024);
|
||||
generate_codec_tests!(U1088, u1088);
|
||||
generate_codec_tests!(U1152, u1152);
|
||||
generate_codec_tests!(U1216, u1216);
|
||||
generate_codec_tests!(U1280, u1280);
|
||||
generate_codec_tests!(U1344, u1344);
|
||||
generate_codec_tests!(U1536, u1536);
|
||||
@@ -660,6 +706,7 @@ mod tests {
|
||||
generate_codec_tests!(U2112, u2112);
|
||||
generate_codec_tests!(U2176, u2176);
|
||||
generate_codec_tests!(U2304, u2304);
|
||||
generate_codec_tests!(U2432, u2432);
|
||||
generate_codec_tests!(U2560, u2560);
|
||||
generate_codec_tests!(U3072, u3072);
|
||||
generate_codec_tests!(U3136, u3136);
|
||||
@@ -709,11 +756,13 @@ mod tests {
|
||||
generate_cmp_tests!(U640, u640);
|
||||
generate_cmp_tests!(U704, u704);
|
||||
generate_cmp_tests!(U768, u768);
|
||||
generate_cmp_tests!(U832, u832);
|
||||
generate_cmp_tests!(U896, u896);
|
||||
generate_cmp_tests!(U960, u960);
|
||||
generate_cmp_tests!(U1024, u1024);
|
||||
generate_cmp_tests!(U1088, u1088);
|
||||
generate_cmp_tests!(U1152, u1152);
|
||||
generate_cmp_tests!(U1216, u1216);
|
||||
generate_cmp_tests!(U1280, u1280);
|
||||
generate_cmp_tests!(U1344, u1344);
|
||||
generate_cmp_tests!(U1536, u1536);
|
||||
@@ -724,6 +773,7 @@ mod tests {
|
||||
generate_cmp_tests!(U2112, u2112);
|
||||
generate_cmp_tests!(U2176, u2176);
|
||||
generate_cmp_tests!(U2304, u2304);
|
||||
generate_cmp_tests!(U2432, u2432);
|
||||
generate_cmp_tests!(U2560, u2560);
|
||||
generate_cmp_tests!(U3072, u3072);
|
||||
generate_cmp_tests!(U3136, u3136);
|
||||
@@ -773,11 +823,13 @@ mod tests {
|
||||
generate_sub_tests!(U640, u640);
|
||||
generate_sub_tests!(U704, u704);
|
||||
generate_sub_tests!(U768, u768);
|
||||
generate_sub_tests!(U832, u832);
|
||||
generate_sub_tests!(U896, u896);
|
||||
generate_sub_tests!(U960, u960);
|
||||
generate_sub_tests!(U1024, u1024);
|
||||
generate_sub_tests!(U1088, u1088);
|
||||
generate_sub_tests!(U1152, u1152);
|
||||
generate_sub_tests!(U1216, u1216);
|
||||
generate_sub_tests!(U1280, u1280);
|
||||
generate_sub_tests!(U1344, u1344);
|
||||
generate_sub_tests!(U1536, u1536);
|
||||
@@ -788,6 +840,7 @@ mod tests {
|
||||
generate_sub_tests!(U2112, u2112);
|
||||
generate_sub_tests!(U2176, u2176);
|
||||
generate_sub_tests!(U2304, u2304);
|
||||
generate_sub_tests!(U2432, u2432);
|
||||
generate_sub_tests!(U2560, u2560);
|
||||
generate_sub_tests!(U3072, u3072);
|
||||
generate_sub_tests!(U3136, u3136);
|
||||
@@ -831,12 +884,16 @@ mod tests {
|
||||
generate_shiftl_tests!(U256, u256);
|
||||
generate_shiftl_tests!(U320, u320);
|
||||
generate_shiftl_tests!(U384, u384);
|
||||
generate_shiftl_tests!(U448, u448);
|
||||
generate_shiftl_tests!(U512, u512);
|
||||
generate_shiftl_tests!(U576, u576);
|
||||
generate_shiftl_tests!(U640, u640);
|
||||
generate_shiftl_tests!(U768, u768);
|
||||
generate_shiftl_tests!(U896, u896);
|
||||
generate_shiftl_tests!(U1024, u1024);
|
||||
generate_shiftl_tests!(U1088, u1088);
|
||||
generate_shiftl_tests!(U1152, u1152);
|
||||
generate_shiftl_tests!(U1280, u1280);
|
||||
generate_shiftl_tests!(U1536, u1536);
|
||||
generate_shiftl_tests!(U1600, u1600);
|
||||
generate_shiftl_tests!(U2048, u2048);
|
||||
@@ -871,12 +928,16 @@ mod tests {
|
||||
generate_shiftr_tests!(U256, u256);
|
||||
generate_shiftr_tests!(U320, u320);
|
||||
generate_shiftr_tests!(U384, u384);
|
||||
generate_shiftr_tests!(U448, u448);
|
||||
generate_shiftr_tests!(U512, u512);
|
||||
generate_shiftr_tests!(U576, u576);
|
||||
generate_shiftr_tests!(U640, u640);
|
||||
generate_shiftr_tests!(U768, u768);
|
||||
generate_shiftr_tests!(U896, u896);
|
||||
generate_shiftr_tests!(U1024, u1024);
|
||||
generate_shiftr_tests!(U1088, u1088);
|
||||
generate_shiftr_tests!(U1152, u1152);
|
||||
generate_shiftr_tests!(U1280, u1280);
|
||||
generate_shiftr_tests!(U1536, u1536);
|
||||
generate_shiftr_tests!(U1600, u1600);
|
||||
generate_shiftr_tests!(U2048, u2048);
|
||||
@@ -915,9 +976,13 @@ mod tests {
|
||||
generate_add_tests!(U512, u512, U576);
|
||||
generate_add_tests!(U576, u576, U640);
|
||||
generate_add_tests!(U640, u640, U704);
|
||||
generate_add_tests!(U768, u768, U832);
|
||||
generate_add_tests!(U832, u832, U896);
|
||||
generate_add_tests!(U896, u896, U960);
|
||||
generate_add_tests!(U1024, u1024, U1088);
|
||||
generate_add_tests!(U1088, u1088, U1152);
|
||||
generate_add_tests!(U1152, u1152, U1216);
|
||||
generate_add_tests!(U1216, u1216, U1280);
|
||||
generate_add_tests!(U1280, u1280, U1344);
|
||||
generate_add_tests!(U1600, u1600, U1664);
|
||||
generate_add_tests!(U2048, u2048, U2112);
|
||||
@@ -946,10 +1011,13 @@ mod tests {
|
||||
generate_mul_tests!(U512, u512, U1024);
|
||||
generate_mul_tests!(U576, u576, U1152);
|
||||
generate_mul_tests!(U640, u640, U1280);
|
||||
generate_mul_tests!(U768, u768, U1536);
|
||||
generate_mul_tests!(U832, u832, U1664);
|
||||
generate_mul_tests!(U896, u896, U1792);
|
||||
generate_mul_tests!(U1024, u1024, U2048);
|
||||
generate_mul_tests!(U1088, u1088, U2176);
|
||||
generate_mul_tests!(U1152, u1152, U2304);
|
||||
generate_mul_tests!(U1216, u1216, U2432);
|
||||
generate_mul_tests!(U1280, u1280, U2560);
|
||||
generate_mul_tests!(U1536, u1536, U3072);
|
||||
generate_mul_tests!(U1600, u1600, U3200);
|
||||
@@ -986,10 +1054,13 @@ mod tests {
|
||||
generate_div_tests!(U512, u512);
|
||||
generate_div_tests!(U576, u576);
|
||||
generate_div_tests!(U640, u640);
|
||||
generate_div_tests!(U768, u768);
|
||||
generate_div_tests!(U832, u832);
|
||||
generate_div_tests!(U896, u896);
|
||||
generate_div_tests!(U1024, u1024);
|
||||
generate_div_tests!(U1088, u1088);
|
||||
generate_div_tests!(U1152, u1152);
|
||||
generate_div_tests!(U1216, u1216);
|
||||
generate_div_tests!(U1280, u1280);
|
||||
generate_div_tests!(U1536, u1536);
|
||||
generate_div_tests!(U2048, u2048);
|
||||
@@ -1019,7 +1090,9 @@ mod tests {
|
||||
|
||||
generate_barrett_gen_tests!(U192, u192, U256);
|
||||
generate_barrett_gen_tests!(U256, u256, U320);
|
||||
generate_barrett_gen_tests!(U384, u384, U448);
|
||||
generate_barrett_gen_tests!(U512, u512, U576);
|
||||
generate_barrett_gen_tests!(U576, u576, U640);
|
||||
generate_barrett_gen_tests!(U1024, u1024, U1088);
|
||||
generate_barrett_gen_tests!(U1536, u1536, U1600);
|
||||
generate_barrett_gen_tests!(ignore U2048, u2048, U2112);
|
||||
@@ -1035,7 +1108,9 @@ mod tests {
|
||||
|
||||
generate_barrett_red_tests!(U192, u192, U256, U384);
|
||||
generate_barrett_red_tests!(U256, u256, U320, U512);
|
||||
generate_barrett_red_tests!(U384, u384, U448, U768);
|
||||
generate_barrett_red_tests!(U512, u512, U576, U1024);
|
||||
generate_barrett_red_tests!(U576, u576, U640, U1152);
|
||||
generate_barrett_red_tests!(U1024, u1024, U1088, U2048);
|
||||
generate_barrett_red_tests!(U1536, u1536, U1600, U3072);
|
||||
generate_barrett_red_tests!(U2048, u2048, U2112, U4096);
|
||||
|
||||
Reference in New Issue
Block a user