Basic mathematics for unsigned integers ported over, tests pass.
This commit is contained in:
@@ -2,8 +2,9 @@ base_impls!(U192, 3);
|
||||
barrett_impl!(BarrettU192, U192, U256, U384, U448);
|
||||
modexp_impls!(U192);
|
||||
modmul_impls!(U192, U384);
|
||||
modsq_impls!(U192);
|
||||
modsq_impls!(U192, U384);
|
||||
multiply_impls!(U192, U384);
|
||||
square_impls!(U192, U384, 192);
|
||||
conversion_impls!(U192, U256);
|
||||
conversion_impls!(U192, U384);
|
||||
conversion_impls!(U192, U448);
|
||||
@@ -11,8 +12,9 @@ base_impls!(U256, 4);
|
||||
barrett_impl!(BarrettU256, U256, U320, U512, U576);
|
||||
modexp_impls!(U256);
|
||||
modmul_impls!(U256, U512);
|
||||
modsq_impls!(U256);
|
||||
modsq_impls!(U256, U512);
|
||||
multiply_impls!(U256, U512);
|
||||
square_impls!(U256, U512, 256);
|
||||
conversion_impls!(U256, U320);
|
||||
conversion_impls!(U256, U384);
|
||||
conversion_impls!(U256, U448);
|
||||
@@ -27,9 +29,10 @@ barrett_impl!(BarrettU384, U384, U448, U768, U832);
|
||||
div_impls!(U384, U768);
|
||||
modexp_impls!(U384);
|
||||
modmul_impls!(U384, U768);
|
||||
modsq_impls!(U384);
|
||||
modsq_impls!(U384, U768);
|
||||
multiply_impls!(U384, U768);
|
||||
shift_impls!(U384, 6);
|
||||
square_impls!(U384, U768, 384);
|
||||
conversion_impls!(U384, U448);
|
||||
conversion_impls!(U384, U768);
|
||||
conversion_impls!(U384, U832);
|
||||
@@ -48,9 +51,10 @@ barrett_impl!(BarrettU512, U512, U576, U1024, U1088);
|
||||
div_impls!(U512, U1024);
|
||||
modexp_impls!(U512);
|
||||
modmul_impls!(U512, U1024);
|
||||
modsq_impls!(U512);
|
||||
modsq_impls!(U512, U1024);
|
||||
multiply_impls!(U512, U1024);
|
||||
shift_impls!(U512, 8);
|
||||
square_impls!(U512, U1024, 512);
|
||||
conversion_impls!(U512, U576);
|
||||
conversion_impls!(U512, U1024);
|
||||
conversion_impls!(U512, U1088);
|
||||
@@ -60,9 +64,10 @@ barrett_impl!(BarrettU576, U576, U640, U1152, U1216);
|
||||
div_impls!(U576, U1152);
|
||||
modexp_impls!(U576);
|
||||
modmul_impls!(U576, U1152);
|
||||
modsq_impls!(U576);
|
||||
modsq_impls!(U576, U1152);
|
||||
multiply_impls!(U576, U1152);
|
||||
shift_impls!(U576, 9);
|
||||
square_impls!(U576, U1152, 576);
|
||||
subtraction_impls!(U576, 9);
|
||||
conversion_impls!(U576, U640);
|
||||
conversion_impls!(U576, U1024);
|
||||
@@ -100,9 +105,10 @@ barrett_impl!(BarrettU1024, U1024, U1088, U2048, U2112);
|
||||
div_impls!(U1024, U2048);
|
||||
modexp_impls!(U1024);
|
||||
modmul_impls!(U1024, U2048);
|
||||
modsq_impls!(U1024);
|
||||
modsq_impls!(U1024, U2048);
|
||||
multiply_impls!(U1024, U2048);
|
||||
shift_impls!(U1024, 16);
|
||||
square_impls!(U1024, U2048, 1024);
|
||||
subtraction_impls!(U1024, 16);
|
||||
conversion_impls!(U1024, U1088);
|
||||
conversion_impls!(U1024, U2048);
|
||||
@@ -150,9 +156,10 @@ barrett_impl!(BarrettU2048, U2048, U2112, U4096, U4160);
|
||||
div_impls!(U2048, U4096);
|
||||
modexp_impls!(U2048);
|
||||
modmul_impls!(U2048, U4096);
|
||||
modsq_impls!(U2048);
|
||||
modsq_impls!(U2048, U4096);
|
||||
multiply_impls!(U2048, U4096);
|
||||
shift_impls!(U2048, 32);
|
||||
square_impls!(U2048, U4096, 2048);
|
||||
subtraction_impls!(U2048, 32);
|
||||
conversion_impls!(U2048, U2112);
|
||||
conversion_impls!(U2048, U4096);
|
||||
@@ -186,8 +193,9 @@ base_impls!(U3072, 48);
|
||||
barrett_impl!(BarrettU3072, U3072, U3136, U6144, U6208);
|
||||
modexp_impls!(U3072);
|
||||
modmul_impls!(U3072, U6144);
|
||||
modsq_impls!(U3072);
|
||||
modsq_impls!(U3072, U6144);
|
||||
multiply_impls!(U3072, U6144);
|
||||
square_impls!(U3072, U6144, 3072);
|
||||
conversion_impls!(U3072, U3136);
|
||||
conversion_impls!(U3072, U6144);
|
||||
conversion_impls!(U3072, U6208);
|
||||
@@ -201,9 +209,10 @@ barrett_impl!(BarrettU4096, U4096, U4160, U8192, U8256);
|
||||
div_impls!(U4096, U8192);
|
||||
modexp_impls!(U4096);
|
||||
modmul_impls!(U4096, U8192);
|
||||
modsq_impls!(U4096);
|
||||
modsq_impls!(U4096, U8192);
|
||||
multiply_impls!(U4096, U8192);
|
||||
shift_impls!(U4096, 64);
|
||||
square_impls!(U4096, U8192, 4096);
|
||||
subtraction_impls!(U4096, 64);
|
||||
conversion_impls!(U4096, U4160);
|
||||
conversion_impls!(U4096, U8192);
|
||||
@@ -242,8 +251,9 @@ base_impls!(U7680, 120);
|
||||
barrett_impl!(BarrettU7680, U7680, U7744, U15360, U15424);
|
||||
modexp_impls!(U7680);
|
||||
modmul_impls!(U7680, U15360);
|
||||
modsq_impls!(U7680);
|
||||
modsq_impls!(U7680, U15360);
|
||||
multiply_impls!(U7680, U15360);
|
||||
square_impls!(U7680, U15360, 7680);
|
||||
conversion_impls!(U7680, U7744);
|
||||
conversion_impls!(U7680, U15360);
|
||||
conversion_impls!(U7680, U15424);
|
||||
@@ -257,9 +267,10 @@ barrett_impl!(BarrettU8192, U8192, U8256, U16384, U16448);
|
||||
div_impls!(U8192, U16384);
|
||||
modexp_impls!(U8192);
|
||||
modmul_impls!(U8192, U16384);
|
||||
modsq_impls!(U8192);
|
||||
modsq_impls!(U8192, U16384);
|
||||
multiply_impls!(U8192, U16384);
|
||||
shift_impls!(U8192, 128);
|
||||
square_impls!(U8192, U16384, 8192);
|
||||
subtraction_impls!(U8192, 128);
|
||||
conversion_impls!(U8192, U8256);
|
||||
conversion_impls!(U8192, U16384);
|
||||
@@ -294,9 +305,10 @@ barrett_impl!(BarrettU15360, U15360, U15424, U30720, U30784);
|
||||
div_impls!(U15360, U30720);
|
||||
modexp_impls!(U15360);
|
||||
modmul_impls!(U15360, U30720);
|
||||
modsq_impls!(U15360);
|
||||
modsq_impls!(U15360, U30720);
|
||||
multiply_impls!(U15360, U30720);
|
||||
shift_impls!(U15360, 240);
|
||||
square_impls!(U15360, U30720, 15360);
|
||||
conversion_impls!(U15360, U15424);
|
||||
conversion_impls!(U15360, U30720);
|
||||
conversion_impls!(U15360, U30784);
|
||||
@@ -899,4 +911,72 @@ mod tests {
|
||||
generate_barrett_red_tests!(U8192, u8192, U8256, U16384);
|
||||
generate_barrett_red_tests!(U15360, u15360, U15424, U30720);
|
||||
}
|
||||
mod modsq {
|
||||
use super::super::*;
|
||||
use testing::run_test;
|
||||
|
||||
generate_modsq_tests!(U192, u192);
|
||||
generate_modsq_tests!(U256, u256);
|
||||
generate_modsq_tests!(U384, u384);
|
||||
generate_modsq_tests!(U512, u512);
|
||||
generate_modsq_tests!(U576, u576);
|
||||
generate_modsq_tests!(U1024, u1024);
|
||||
generate_modsq_tests!(U2048, u2048);
|
||||
generate_modsq_tests!(U3072, u3072);
|
||||
generate_modsq_tests!(U4096, u4096);
|
||||
generate_modsq_tests!(U7680, u7680);
|
||||
generate_modsq_tests!(U8192, u8192);
|
||||
generate_modsq_tests!(U15360, u15360);
|
||||
}
|
||||
mod modmul {
|
||||
use super::super::*;
|
||||
use testing::run_test;
|
||||
|
||||
generate_modmul_tests!(U192, u192);
|
||||
generate_modmul_tests!(U256, u256);
|
||||
generate_modmul_tests!(U384, u384);
|
||||
generate_modmul_tests!(U512, u512);
|
||||
generate_modmul_tests!(U576, u576);
|
||||
generate_modmul_tests!(U1024, u1024);
|
||||
generate_modmul_tests!(U2048, u2048);
|
||||
generate_modmul_tests!(U3072, u3072);
|
||||
generate_modmul_tests!(U4096, u4096);
|
||||
generate_modmul_tests!(U7680, u7680);
|
||||
generate_modmul_tests!(U8192, u8192);
|
||||
generate_modmul_tests!(U15360, u15360);
|
||||
}
|
||||
mod modexp {
|
||||
use super::super::*;
|
||||
use testing::run_test;
|
||||
|
||||
generate_modexp_tests!(U192, u192);
|
||||
generate_modexp_tests!(U256, u256);
|
||||
generate_modexp_tests!(U384, u384);
|
||||
generate_modexp_tests!(U512, u512);
|
||||
generate_modexp_tests!(U576, u576);
|
||||
generate_modexp_tests!(U1024, u1024);
|
||||
generate_modexp_tests!(U2048, u2048);
|
||||
generate_modexp_tests!(U3072, u3072);
|
||||
generate_modexp_tests!(U4096, u4096);
|
||||
generate_modexp_tests!(U7680, u7680);
|
||||
generate_modexp_tests!(U8192, u8192);
|
||||
generate_modexp_tests!(U15360, u15360);
|
||||
}
|
||||
mod square {
|
||||
use super::super::*;
|
||||
use testing::run_test;
|
||||
|
||||
generate_square_tests!(U192, u192, U384);
|
||||
generate_square_tests!(U256, u256, U512);
|
||||
generate_square_tests!(U384, u384, U768);
|
||||
generate_square_tests!(U512, u512, U1024);
|
||||
generate_square_tests!(U576, u576, U1152);
|
||||
generate_square_tests!(U1024, u1024, U2048);
|
||||
generate_square_tests!(U2048, u2048, U4096);
|
||||
generate_square_tests!(U3072, u3072, U6144);
|
||||
generate_square_tests!(U4096, u4096, U8192);
|
||||
generate_square_tests!(U7680, u7680, U15360);
|
||||
generate_square_tests!(U8192, u8192, U16384);
|
||||
generate_square_tests!(U15360, u15360, U30720);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user