From ccde640f996ac08eab97397dd1a6c0b945795aa8 Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Tue, 6 Nov 2018 21:52:51 -0800 Subject: [PATCH] Clean up the operation dependency, to get a better approximation of the types/operations needed. --- generate.hs | 211 ++++++++++++++----- src/signed/invoc.rs | 100 --------- src/unsigned/invoc.rs | 465 +----------------------------------------- 3 files changed, 167 insertions(+), 609 deletions(-) diff --git a/generate.hs b/generate.hs index c5c65ba..a973125 100644 --- a/generate.hs +++ b/generate.hs @@ -35,6 +35,7 @@ data Operation = Add | SigConvert Int | EGCD | ModInv + | RSA deriving (Eq, Ord, Show) data Requirement = Req Int Operation @@ -43,47 +44,91 @@ data Requirement = Req Int Operation data Need = Need Operation (Int -> [Requirement]) needs :: [Need] -needs = [ Need ModExp (\ size -> [Req size ModMul - ,Req size ModSq - ,Req size Barretts]) - , Need ModSq (\ size -> [Req (size * 2) Div - ,Req size Barretts - ,Req size Square]) - , Need ModMul (\ size -> [Req size Mul - ,Req size Barretts - ,Req size (Convert (size * 2)) - ,Req (size * 2) Div]) - , Need Barretts (\ size -> [Req (size + 64) BaseOps - ,Req size (Convert (size + 64)) - ,Req (size + 64) (Convert ((size * 2) + 64)) - ,Req size (Convert ((size * 2) + 64)) - ,Req ((size * 2) + 64) Add - ,Req ((size * 2) + 64) Sub - ,Req (size + 64) Mul - ,Req (size * 2) (Convert ((size * 2) + 64)) - ,Req ((size * 2) + 64) Shifts - ,Req ((size * 2) + 128) Shifts - ,Req ((size * 2) + 64) Div - ,Req (size + 64) (Convert (size * 2)) - ,Req (size + 64) (Convert ((size * 2) + 128)) - ,Req ((size * 2) + 64) - (Convert ((size * 2) + 128)) +needs = [ Need RSA (\ size -> [Req (size `div` 2) Sub, + Req (size `div` 2) Mul, + Req size BaseOps, + Req size ModInv, + Req size ModExp ]) - , Need Div (\ size -> [Req size (Convert (size * 2)) - ,Req 192 BaseOps - ,Req 384 BaseOps - ,Req 192 Mul - ,Req size Mul - ,Req size Shifts - ,Req (size * 2) Sub + , Need Add (\ size -> [Req size BaseOps, + Req (size + 64) BaseOps, + Req size (Convert (size + 64)) ]) - , Need Mul (\ size -> [Req (size * 2) BaseOps]) - , Need Sub (\ size -> [Req size Add]) - , Need Add (\ size -> [Req (size + 64) BaseOps - ,Req size (Convert (size + 64))]) - , Need ModInv (\ size -> [Req size SignedBase, - Req size EGCD]) - , Need EGCD (\ size -> [Req size BaseOps, + , Need Barretts (\ size -> [Req size BaseOps, + Req (size + 64) BaseOps, + Req (size * 2) BaseOps, + Req ((size * 2) + 64) BaseOps, + Req size (Convert ((size * 2) + 64)), + Req (size + 64) Mul, + Req ((size * 2) + 64) Add, + Req ((size * 2) + 64) Sub, + Req (size + 64) (Convert ((size * 2) + 64)), + Req ((size * 2) + 64) (Convert ((size + 64) * 2)), + Req (size * 2) (Convert ((size * 2) + 64)), + Req (size + 64) (Convert ((size + 64) * 2)), + Req (size + 64) (Convert (size * 2)), + Req (size * 2) Shifts, + Req ((size + 64) * 2) Shifts, + Req ((size * 2) + 64) Div + ]) + , Need Div (\ size -> [Req size BaseOps, + Req (size * 2) BaseOps, + Req size (Convert (size * 2)), + Req (size * 2) Sub, + Req size Mul, + Req 192 BaseOps, + Req 192 Mul, + Req 384 BaseOps + ]) + , Need ModExp (\ size -> [Req size BaseOps, + Req size Barretts, + Req size ModSq, + Req size ModMul + ]) + , Need ModMul (\ size -> [Req size BaseOps, + Req (size * 2) BaseOps, + Req size Barretts, + Req size Mul + ]) + , Need ModSq (\ size -> [Req size BaseOps, + Req (size * 2) BaseOps, + Req size Barretts, + Req size Square, + Req (size * 2) Div, + Req size (Convert (size * 2)) + ]) + , Need Mul (\ size -> [Req size BaseOps, + Req (size * 2) BaseOps, + Req size (Convert (size * 2)) + ]) + , Need Shifts (\ size -> [Req size BaseOps + ]) + , Need Square (\ size -> [Req size BaseOps, + Req (size * 2) BaseOps + ]) + , Need Sub (\ size -> [Req size BaseOps + ]) + , Need SignedAdd (\ size -> [Req size SignedBase, + Req (size + 64) SignedBase, + Req (size + 64) BaseOps + ]) + , Need SignedBase (\ size -> [Req size BaseOps]) + , Need SignedCmp (\ size -> [Req size BaseOps]) + , Need SignedShift (\ size -> [Req size SignedBase, + Req size BaseOps, + Req size Shifts, + Req size Add + ]) + , Need SignedSub (\ size -> [Req size SignedBase, + Req (size + 64) SignedBase, + Req (size + 64) BaseOps, + Req size Add, + Req size Sub, + Req size (Convert (size + 64)), + Req size (SigConvert (size + 64)) + ]) + , Need EGCD (\ size -> [Req size SignedBase, + Req size BaseOps, Req (size + 64) SignedBase, Req size (SigConvert (size + 64)), Req (size + 64) SignedShift, @@ -91,17 +136,77 @@ needs = [ Need ModExp (\ size -> [Req size ModMul Req (size + 64) SignedSub, Req (size + 64) SignedCmp ]) - , Need SignedShift (\ size -> [Req size Shifts, Req size Add]) - , Need SignedAdd (\ size -> [Req size Sub, - Req (size + 64) Add, + , Need ModInv (\ size -> [Req size BaseOps, Req (size + 64) SignedBase, - Req size (SigConvert (size + 64)) - ]) - , Need SignedSub (\ size -> [Req (size + 64) SignedBase, - Req size (SigConvert (size + 64)), - Req size Sub + Req (size + 64) BaseOps, + Req size (Convert (size + 64)), + Req size EGCD, + Req (size + 64) SignedAdd, + Req size Barretts ]) ] +-- needs = [ Need ModExp (\ size -> [Req size ModMul +-- ,Req size ModSq +-- ,Req size Barretts]) +-- , Need ModSq (\ size -> [Req (size * 2) Div +-- ,Req size Barretts +-- ,Req size Square]) +-- , Need ModMul (\ size -> [Req size Mul +-- ,Req size Barretts +-- ,Req size (Convert (size * 2)) +-- ,Req (size * 2) Div]) +-- , Need Barretts (\ size -> [Req (size + 64) BaseOps +-- ,Req size (Convert (size + 64)) +-- ,Req (size + 64) (Convert ((size * 2) + 64)) +-- ,Req size (Convert ((size * 2) + 64)) +-- ,Req ((size * 2) + 64) Add +-- ,Req ((size * 2) + 64) Sub +-- ,Req (size + 64) Mul +-- ,Req (size * 2) (Convert ((size * 2) + 64)) +-- ,Req ((size * 2) + 64) Shifts +-- ,Req ((size * 2) + 128) Shifts +-- ,Req ((size * 2) + 64) Div +-- ,Req (size + 64) (Convert (size * 2)) +-- ,Req (size + 64) (Convert ((size * 2) + 128)) +-- ,Req ((size * 2) + 64) +-- (Convert ((size * 2) + 128)) +-- ]) +-- , Need Div (\ size -> [Req size (Convert (size * 2)) +-- ,Req 192 BaseOps +-- ,Req 384 BaseOps +-- ,Req 192 Mul +-- ,Req size Mul +-- ,Req size Shifts +-- ,Req (size * 2) Sub +-- ]) +-- , Need Mul (\ size -> [Req (size * 2) BaseOps]) +-- , Need Sub (\ size -> [Req size Add]) +-- , Need Add (\ size -> [Req (size + 64) BaseOps +-- ,Req size (Convert (size + 64))]) +-- , Need ModInv (\ size -> [Req size SignedBase, +-- Req size EGCD]) +-- , Need EGCD (\ size -> [Req size BaseOps, +-- Req (size + 64) SignedBase, +-- Req size (SigConvert (size + 64)), +-- Req (size + 64) SignedShift, +-- Req (size + 64) SignedAdd, +-- Req (size + 64) SignedSub, +-- Req (size + 64) SignedCmp +-- ]) +-- , Need SignedShift (\ size -> [Req size Shifts, Req size Add]) +-- , Need SignedAdd (\ size -> [Req size Sub, +-- Req (size + 64) Add, +-- Req (size + 64) SignedBase, +-- Req size (SigConvert (size + 64)) +-- ]) +-- , Need SignedSub (\ size -> [Req (size + 64) SignedBase, +-- Req size (SigConvert (size + 64)), +-- Req size Sub +-- ]) +-- , Need RSA (\ size -> [Req size ModExp, Req size ModInv, +-- Req (size `div` 2) Sub, +-- Req (size `div` 2) Mul]) +-- ] newRequirements :: Requirement -> [Requirement] newRequirements (Req size op) = concatMap go needs ++ [Req size BaseOps] @@ -109,11 +214,11 @@ newRequirements (Req size op) = concatMap go needs ++ [Req size BaseOps] go (Need op2 generator) | op == op2 = generator size | otherwise = [] -bitSizes :: [Int] -bitSizes = [192,256,384,512,576,1024,2048,3072,4096,7680,8192,15360] +rsaSizes :: [Int] +rsaSizes = [512,1024,2048,3072,4096,8192,15360] baseRequirements :: [Requirement] -baseRequirements = concatMap (\ x -> [Req x ModExp, Req x ModInv]) bitSizes +baseRequirements = concatMap (\ x -> [Req x RSA]) rsaSizes requirements :: [Requirement] requirements = go baseRequirements @@ -216,9 +321,9 @@ generateInvocs = do generateTestBlock hndl "modmul" ModMul True 4000 [] generateTestBlock hndl "modexp" ModExp True 512 [] generateTestBlock hndl "square" Square True 4000 [(* 2)] - generateTestBlock hndl "barrett_modsq" Barretts True 4000 [(+ 64)] - generateTestBlock hndl "barrett_modmul" Barretts True 4000 [(+ 64)] - generateTestBlock hndl "barrett_modexp" Barretts True 1024 [(+ 64)] + generateTestBlock hndl "barrett_modsq" ModSq True 4000 [(+ 64)] + generateTestBlock hndl "barrett_modmul" ModMul True 4000 [(+ 64)] + generateTestBlock hndl "barrett_modexp" ModExp True 1024 [(+ 64)] hPutStrLn hndl "}" withFile "src/signed/invoc.rs" WriteMode $ \ hndl -> do forM_ requirements $ \ (Req size oper) -> diff --git a/src/signed/invoc.rs b/src/signed/invoc.rs index 8a79608..e78bb52 100644 --- a/src/signed/invoc.rs +++ b/src/signed/invoc.rs @@ -1,31 +1,3 @@ -signed_impls!(I192, U192); -conversion_impls!(I192, U192, I256, U256); -egcd_impls!(I256, U192, I192); -modinv_impls!(U192, I256, U256); -add_impls!(I256, I320, U320); -signed_impls!(I256, U256); -cmp_impls!(I256); -shift_impls!(I256, U256); -subtraction_impls!(I256, I320, U320); -conversion_impls!(I256, U256, I320, U320); -egcd_impls!(I320, U256, I256); -modinv_impls!(U256, I320, U320); -add_impls!(I320, I384, U384); -signed_impls!(I320, U320); -cmp_impls!(I320); -shift_impls!(I320, U320); -subtraction_impls!(I320, I384, U384); -conversion_impls!(I320, U320, I384, U384); -signed_impls!(I384, U384); -conversion_impls!(I384, U384, I448, U448); -egcd_impls!(I448, U384, I384); -modinv_impls!(U384, I448, U448); -add_impls!(I448, I512, U512); -signed_impls!(I448, U448); -cmp_impls!(I448); -shift_impls!(I448, U448); -subtraction_impls!(I448, I512, U512); -conversion_impls!(I448, U448, I512, U512); signed_impls!(I512, U512); conversion_impls!(I512, U512, I576, U576); egcd_impls!(I576, U512, I512); @@ -36,15 +8,7 @@ cmp_impls!(I576); shift_impls!(I576, U576); subtraction_impls!(I576, I640, U640); conversion_impls!(I576, U576, I640, U640); -egcd_impls!(I640, U576, I576); -modinv_impls!(U576, I640, U640); -add_impls!(I640, I704, U704); signed_impls!(I640, U640); -cmp_impls!(I640); -shift_impls!(I640, U640); -subtraction_impls!(I640, I704, U704); -conversion_impls!(I640, U640, I704, U704); -signed_impls!(I704, U704); signed_impls!(I1024, U1024); conversion_impls!(I1024, U1024, I1088, U1088); egcd_impls!(I1088, U1024, I1024); @@ -89,17 +53,6 @@ shift_impls!(I4160, U4160); subtraction_impls!(I4160, I4224, U4224); conversion_impls!(I4160, U4160, I4224, U4224); signed_impls!(I4224, U4224); -signed_impls!(I7680, U7680); -conversion_impls!(I7680, U7680, I7744, U7744); -egcd_impls!(I7744, U7680, I7680); -modinv_impls!(U7680, I7744, U7744); -add_impls!(I7744, I7808, U7808); -signed_impls!(I7744, U7744); -cmp_impls!(I7744); -shift_impls!(I7744, U7744); -subtraction_impls!(I7744, I7808, U7808); -conversion_impls!(I7744, U7744, I7808, U7808); -signed_impls!(I7808, U7808); signed_impls!(I8192, U8192); conversion_impls!(I8192, U8192, I8256, U8256); egcd_impls!(I8256, U8192, I8192); @@ -130,16 +83,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_sigadd_tests!(I256, U256, i256, I320, U320); - generate_sigadd_tests!(I320, U320, i320, I384, U384); - generate_sigadd_tests!(I448, U448, i448, I512, U512); generate_sigadd_tests!(I576, U576, i576, I640, U640); - generate_sigadd_tests!(I640, U640, i640, I704, U704); generate_sigadd_tests!(I1088, U1088, i1088, I1152, U1152); generate_sigadd_tests!(I2112, U2112, i2112, I2176, U2176); generate_sigadd_tests!(I3136, U3136, i3136, I3200, U3200); generate_sigadd_tests!(I4160, U4160, i4160, I4224, U4224); - generate_sigadd_tests!(I7744, U7744, i7744, I7808, U7808); generate_sigadd_tests!(I8256, U8256, i8256, I8320, U8320); generate_sigadd_tests!(I15424, U15424, i15424, I15488, U15488); } @@ -147,16 +95,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_sigsub_tests!(I256, U256, i256, I320, U320); - generate_sigsub_tests!(I320, U320, i320, I384, U384); - generate_sigsub_tests!(I448, U448, i448, I512, U512); generate_sigsub_tests!(I576, U576, i576, I640, U640); - generate_sigsub_tests!(I640, U640, i640, I704, U704); generate_sigsub_tests!(I1088, U1088, i1088, I1152, U1152); generate_sigsub_tests!(I2112, U2112, i2112, I2176, U2176); generate_sigsub_tests!(I3136, U3136, i3136, I3200, U3200); generate_sigsub_tests!(I4160, U4160, i4160, I4224, U4224); - generate_sigsub_tests!(I7744, U7744, i7744, I7808, U7808); generate_sigsub_tests!(I8256, U8256, i8256, I8320, U8320); generate_sigsub_tests!(I15424, U15424, i15424, I15488, U15488); } @@ -164,15 +107,9 @@ mod tests { use super::super::*; use testing::run_test; - generate_signed_tests!(I192, U192, i192); - generate_signed_tests!(I256, U256, i256); - generate_signed_tests!(I320, U320, i320); - generate_signed_tests!(I384, U384, i384); - generate_signed_tests!(I448, U448, i448); generate_signed_tests!(I512, U512, i512); generate_signed_tests!(I576, U576, i576); generate_signed_tests!(I640, U640, i640); - generate_signed_tests!(I704, U704, i704); generate_signed_tests!(I1024, U1024, i1024); generate_signed_tests!(I1088, U1088, i1088); generate_signed_tests!(I1152, U1152, i1152); @@ -185,9 +122,6 @@ mod tests { generate_signed_tests!(I4096, U4096, i4096); generate_signed_tests!(I4160, U4160, i4160); generate_signed_tests!(I4224, U4224, i4224); - generate_signed_tests!(I7680, U7680, i7680); - generate_signed_tests!(I7744, U7744, i7744); - generate_signed_tests!(I7808, U7808, i7808); generate_signed_tests!(I8192, U8192, i8192); generate_signed_tests!(I8256, U8256, i8256); generate_signed_tests!(I8320, U8320, i8320); @@ -196,15 +130,9 @@ mod tests { generate_signed_tests!(I15488, U15488, i15488); } mod sigconversion { - generate_sigconversion_tests!(I192, U192, i192); - generate_sigconversion_tests!(I256, U256, i256); - generate_sigconversion_tests!(I320, U320, i320); - generate_sigconversion_tests!(I384, U384, i384); - generate_sigconversion_tests!(I448, U448, i448); generate_sigconversion_tests!(I512, U512, i512); generate_sigconversion_tests!(I576, U576, i576); generate_sigconversion_tests!(I640, U640, i640); - generate_sigconversion_tests!(I704, U704, i704); generate_sigconversion_tests!(I1024, U1024, i1024); generate_sigconversion_tests!(I1088, U1088, i1088); generate_sigconversion_tests!(I1152, U1152, i1152); @@ -217,9 +145,6 @@ mod tests { generate_sigconversion_tests!(I4096, U4096, i4096); generate_sigconversion_tests!(I4160, U4160, i4160); generate_sigconversion_tests!(I4224, U4224, i4224); - generate_sigconversion_tests!(I7680, U7680, i7680); - generate_sigconversion_tests!(I7744, U7744, i7744); - generate_sigconversion_tests!(I7808, U7808, i7808); generate_sigconversion_tests!(I8192, U8192, i8192); generate_sigconversion_tests!(I8256, U8256, i8256); generate_sigconversion_tests!(I8320, U8320, i8320); @@ -231,16 +156,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_sigcmp_tests!(I256, U256, i256); - generate_sigcmp_tests!(I320, U320, i320); - generate_sigcmp_tests!(I448, U448, i448); generate_sigcmp_tests!(I576, U576, i576); - generate_sigcmp_tests!(I640, U640, i640); generate_sigcmp_tests!(I1088, U1088, i1088); generate_sigcmp_tests!(I2112, U2112, i2112); generate_sigcmp_tests!(I3136, U3136, i3136); generate_sigcmp_tests!(I4160, U4160, i4160); - generate_sigcmp_tests!(I7744, U7744, i7744); generate_sigcmp_tests!(I8256, U8256, i8256); generate_sigcmp_tests!(I15424, U15424, i15424); } @@ -248,16 +168,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_sigshiftl_tests!(I256, U256, i256); - generate_sigshiftl_tests!(I320, U320, i320); - generate_sigshiftl_tests!(I448, U448, i448); generate_sigshiftl_tests!(I576, U576, i576); - generate_sigshiftl_tests!(I640, U640, i640); generate_sigshiftl_tests!(I1088, U1088, i1088); generate_sigshiftl_tests!(I2112, U2112, i2112); generate_sigshiftl_tests!(I3136, U3136, i3136); generate_sigshiftl_tests!(I4160, U4160, i4160); - generate_sigshiftl_tests!(I7744, U7744, i7744); generate_sigshiftl_tests!(I8256, U8256, i8256); generate_sigshiftl_tests!(I15424, U15424, i15424); } @@ -265,16 +180,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_sigshiftr_tests!(I256, U256, i256); - generate_sigshiftr_tests!(I320, U320, i320); - generate_sigshiftr_tests!(I448, U448, i448); generate_sigshiftr_tests!(I576, U576, i576); - generate_sigshiftr_tests!(I640, U640, i640); generate_sigshiftr_tests!(I1088, U1088, i1088); generate_sigshiftr_tests!(I2112, U2112, i2112); generate_sigshiftr_tests!(I3136, U3136, i3136); generate_sigshiftr_tests!(I4160, U4160, i4160); - generate_sigshiftr_tests!(I7744, U7744, i7744); generate_sigshiftr_tests!(I8256, U8256, i8256); generate_sigshiftr_tests!(I15424, U15424, i15424); } @@ -282,16 +192,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_egcd_tests!(I192, U192, i192, I256, U256); - generate_egcd_tests!(I256, U256, i256, I320, U320); - generate_egcd_tests!(I384, U384, i384, I448, U448); generate_egcd_tests!(I512, U512, i512, I576, U576); - generate_egcd_tests!(I576, U576, i576, I640, U640); generate_egcd_tests!(ignore I1024, U1024, i1024, I1088, U1088); generate_egcd_tests!(ignore I2048, U2048, i2048, I2112, U2112); generate_egcd_tests!(ignore I3072, U3072, i3072, I3136, U3136); generate_egcd_tests!(ignore I4096, U4096, i4096, I4160, U4160); - generate_egcd_tests!(ignore I7680, U7680, i7680, I7744, U7744); generate_egcd_tests!(ignore I8192, U8192, i8192, I8256, U8256); generate_egcd_tests!(ignore I15360, U15360, i15360, I15424, U15424); } @@ -299,16 +204,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_modinv_tests!(I192, U192, i192); - generate_modinv_tests!(I256, U256, i256); - generate_modinv_tests!(I384, U384, i384); generate_modinv_tests!(I512, U512, i512); - generate_modinv_tests!(I576, U576, i576); generate_modinv_tests!(I1024, U1024, i1024); generate_modinv_tests!(ignore I2048, U2048, i2048); generate_modinv_tests!(ignore I3072, U3072, i3072); generate_modinv_tests!(ignore I4096, U4096, i4096); - generate_modinv_tests!(ignore I7680, U7680, i7680); generate_modinv_tests!(ignore I8192, U8192, i8192); generate_modinv_tests!(ignore I15360, U15360, i15360); } diff --git a/src/unsigned/invoc.rs b/src/unsigned/invoc.rs index 336534f..1852f92 100644 --- a/src/unsigned/invoc.rs +++ b/src/unsigned/invoc.rs @@ -1,129 +1,45 @@ +addition_impls!(U192, U256); base_impls!(U192, 3); -barrett_impl!(BarrettU192, U192, U256, U384, U448); -modexp_impls!(U192, U192); -modexp_impls!(U192, BarrettU192); -modmul_impls!(U192, U384, BarrettU192); -modsq_impls!(U192, U384, BarrettU192); multiply_impls!(U192, U384); -square_impls!(U192, U384, 192); conversion_impls!(U192, U256); conversion_impls!(U192, U384); -conversion_impls!(U192, U448); addition_impls!(U256, U320); base_impls!(U256, 4); -barrett_impl!(BarrettU256, U256, U320, U512, U576); -modexp_impls!(U256, U256); -modexp_impls!(U256, BarrettU256); -modmul_impls!(U256, U512, BarrettU256); -modsq_impls!(U256, U512, BarrettU256); multiply_impls!(U256, U512); -shift_impls!(U256, 4); -square_impls!(U256, U512, 256); subtraction_impls!(U256, 4); conversion_impls!(U256, U320); -conversion_impls!(U256, U384); -conversion_impls!(U256, U448); conversion_impls!(U256, U512); -conversion_impls!(U256, U576); -addition_impls!(U320, U384); base_impls!(U320, 5); -multiply_impls!(U320, U640); -shift_impls!(U320, 5); -subtraction_impls!(U320, 5); -conversion_impls!(U320, U384); -conversion_impls!(U320, U512); -conversion_impls!(U320, U576); -conversion_impls!(U320, U640); addition_impls!(U384, U448); base_impls!(U384, 6); -barrett_impl!(BarrettU384, U384, U448, U768, U832); -div_impls!(U384, U768); -modexp_impls!(U384, U384); -modexp_impls!(U384, BarrettU384); -modmul_impls!(U384, U768, BarrettU384); -modsq_impls!(U384, U768, BarrettU384); 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); -addition_impls!(U448, U512); base_impls!(U448, 7); -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); barrett_impl!(BarrettU512, U512, U576, U1024, U1088); -div_impls!(U512, U1024); modexp_impls!(U512, U512); modexp_impls!(U512, BarrettU512); modmul_impls!(U512, U1024, BarrettU512); modsq_impls!(U512, U1024, BarrettU512); multiply_impls!(U512, U1024); -shift_impls!(U512, 8); square_impls!(U512, U1024, 512); +subtraction_impls!(U512, 8); conversion_impls!(U512, U576); conversion_impls!(U512, U1024); conversion_impls!(U512, U1088); addition_impls!(U576, U640); base_impls!(U576, 9); -barrett_impl!(BarrettU576, U576, U640, U1152, U1216); -div_impls!(U576, U1152); -modexp_impls!(U576, U576); -modexp_impls!(U576, BarrettU576); -modmul_impls!(U576, U1152, BarrettU576); -modsq_impls!(U576, U1152, BarrettU576); 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); conversion_impls!(U576, U1088); conversion_impls!(U576, U1152); -conversion_impls!(U576, U1216); -addition_impls!(U640, U704); base_impls!(U640, 10); -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); -addition_impls!(U704, U768); -base_impls!(U704, 11); -conversion_impls!(U704, U768); -addition_impls!(U768, U832); base_impls!(U768, 12); -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); -div_impls!(U832, U1664); -multiply_impls!(U832, U1664); -shift_impls!(U832, 13); -subtraction_impls!(U832, 13); -conversion_impls!(U832, U896); -conversion_impls!(U832, U1664); -addition_impls!(U896, U960); -base_impls!(U896, 14); -shift_impls!(U896, 14); -subtraction_impls!(U896, 14); -conversion_impls!(U896, U960); -base_impls!(U960, 15); -addition_impls!(U1024, U1088); base_impls!(U1024, 16); barrett_impl!(BarrettU1024, U1024, U1088, U2048, U2112); div_impls!(U1024, U2048); @@ -148,35 +64,12 @@ conversion_impls!(U1088, U1152); conversion_impls!(U1088, U2048); conversion_impls!(U1088, U2112); conversion_impls!(U1088, U2176); -addition_impls!(U1152, U1216); base_impls!(U1152, 18); -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); -div_impls!(U1216, U2432); -multiply_impls!(U1216, U2432); -shift_impls!(U1216, 19); -subtraction_impls!(U1216, 19); -conversion_impls!(U1216, U1280); -conversion_impls!(U1216, U2432); -base_impls!(U1280, 20); -shift_impls!(U1280, 20); -addition_impls!(U1536, U1600); base_impls!(U1536, 24); +multiply_impls!(U1536, U3072); subtraction_impls!(U1536, 24); -conversion_impls!(U1536, U1600); -base_impls!(U1600, 25); -addition_impls!(U1664, U1728); -base_impls!(U1664, 26); -subtraction_impls!(U1664, 26); -conversion_impls!(U1664, U1728); -base_impls!(U1728, 27); -addition_impls!(U2048, U2112); +conversion_impls!(U1536, U3072); base_impls!(U2048, 32); barrett_impl!(BarrettU2048, U2048, U2112, U4096, U4160); div_impls!(U2048, U4096); @@ -201,22 +94,9 @@ conversion_impls!(U2112, U2176); conversion_impls!(U2112, U4096); conversion_impls!(U2112, U4160); conversion_impls!(U2112, U4224); -addition_impls!(U2176, U2240); base_impls!(U2176, 34); shift_impls!(U2176, 34); subtraction_impls!(U2176, 34); -conversion_impls!(U2176, U2240); -base_impls!(U2240, 35); -addition_impls!(U2304, U2368); -base_impls!(U2304, 36); -subtraction_impls!(U2304, 36); -conversion_impls!(U2304, U2368); -base_impls!(U2368, 37); -addition_impls!(U2432, U2496); -base_impls!(U2432, 38); -subtraction_impls!(U2432, 38); -conversion_impls!(U2432, U2496); -base_impls!(U2496, 39); base_impls!(U3072, 48); barrett_impl!(BarrettU3072, U3072, U3136, U6144, U6208); modexp_impls!(U3072, U3072); @@ -237,11 +117,7 @@ conversion_impls!(U3136, U3200); conversion_impls!(U3136, U6144); conversion_impls!(U3136, U6208); conversion_impls!(U3136, U6272); -addition_impls!(U3200, U3264); base_impls!(U3200, 50); -conversion_impls!(U3200, U3264); -base_impls!(U3264, 51); -addition_impls!(U4096, U4160); base_impls!(U4096, 64); barrett_impl!(BarrettU4096, U4096, U4160, U8192, U8256); div_impls!(U4096, U8192); @@ -266,12 +142,9 @@ conversion_impls!(U4160, U4224); conversion_impls!(U4160, U8192); conversion_impls!(U4160, U8256); conversion_impls!(U4160, U8320); -addition_impls!(U4224, U4288); base_impls!(U4224, 66); shift_impls!(U4224, 66); subtraction_impls!(U4224, 66); -conversion_impls!(U4224, U4288); -base_impls!(U4288, 67); base_impls!(U6144, 96); div_impls!(U6144, U12288); multiply_impls!(U6144, U12288); @@ -282,37 +155,15 @@ addition_impls!(U6208, U6272); base_impls!(U6208, 97); div_impls!(U6208, U12416); multiply_impls!(U6208, U12416); -shift_impls!(U6208, 97); subtraction_impls!(U6208, 97); conversion_impls!(U6208, U6272); conversion_impls!(U6208, U12416); base_impls!(U6272, 98); shift_impls!(U6272, 98); base_impls!(U7680, 120); -barrett_impl!(BarrettU7680, U7680, U7744, U15360, U15424); -modexp_impls!(U7680, U7680); -modexp_impls!(U7680, BarrettU7680); -modmul_impls!(U7680, U15360, BarrettU7680); -modsq_impls!(U7680, U15360, BarrettU7680); multiply_impls!(U7680, U15360); -square_impls!(U7680, U15360, 7680); -conversion_impls!(U7680, U7744); +subtraction_impls!(U7680, 120); conversion_impls!(U7680, U15360); -conversion_impls!(U7680, U15424); -addition_impls!(U7744, U7808); -base_impls!(U7744, 121); -multiply_impls!(U7744, U15488); -shift_impls!(U7744, 121); -subtraction_impls!(U7744, 121); -conversion_impls!(U7744, U7808); -conversion_impls!(U7744, U15360); -conversion_impls!(U7744, U15424); -conversion_impls!(U7744, U15488); -addition_impls!(U7808, U7872); -base_impls!(U7808, 122); -conversion_impls!(U7808, U7872); -base_impls!(U7872, 123); -addition_impls!(U8192, U8256); base_impls!(U8192, 128); barrett_impl!(BarrettU8192, U8192, U8256, U16384, U16448); div_impls!(U8192, U16384); @@ -337,38 +188,26 @@ conversion_impls!(U8256, U8320); conversion_impls!(U8256, U16384); conversion_impls!(U8256, U16448); conversion_impls!(U8256, U16512); -addition_impls!(U8320, U8384); base_impls!(U8320, 130); shift_impls!(U8320, 130); subtraction_impls!(U8320, 130); -conversion_impls!(U8320, U8384); -base_impls!(U8384, 131); -addition_impls!(U12288, U12352); base_impls!(U12288, 192); subtraction_impls!(U12288, 192); -conversion_impls!(U12288, U12352); -base_impls!(U12352, 193); -addition_impls!(U12416, U12480); base_impls!(U12416, 194); subtraction_impls!(U12416, 194); -conversion_impls!(U12416, U12480); -base_impls!(U12480, 195); base_impls!(U15360, 240); barrett_impl!(BarrettU15360, U15360, U15424, U30720, U30784); -div_impls!(U15360, U30720); modexp_impls!(U15360, U15360); modexp_impls!(U15360, BarrettU15360); modmul_impls!(U15360, U30720, BarrettU15360); modsq_impls!(U15360, U30720, BarrettU15360); 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); addition_impls!(U15424, U15488); base_impls!(U15424, 241); -div_impls!(U15424, U30848); multiply_impls!(U15424, U30848); shift_impls!(U15424, 241); subtraction_impls!(U15424, 241); @@ -376,12 +215,7 @@ conversion_impls!(U15424, U15488); conversion_impls!(U15424, U30720); conversion_impls!(U15424, U30784); conversion_impls!(U15424, U30848); -addition_impls!(U15488, U15552); base_impls!(U15488, 242); -shift_impls!(U15488, 242); -conversion_impls!(U15488, U15552); -base_impls!(U15552, 243); -addition_impls!(U16384, U16448); base_impls!(U16384, 256); div_impls!(U16384, U32768); multiply_impls!(U16384, U32768); @@ -393,58 +227,35 @@ addition_impls!(U16448, U16512); base_impls!(U16448, 257); div_impls!(U16448, U32896); multiply_impls!(U16448, U32896); -shift_impls!(U16448, 257); subtraction_impls!(U16448, 257); conversion_impls!(U16448, U16512); conversion_impls!(U16448, U32896); -addition_impls!(U16512, U16576); base_impls!(U16512, 258); shift_impls!(U16512, 258); subtraction_impls!(U16512, 258); -conversion_impls!(U16512, U16576); -base_impls!(U16576, 259); -addition_impls!(U30720, U30784); base_impls!(U30720, 480); div_impls!(U30720, U61440); multiply_impls!(U30720, U61440); shift_impls!(U30720, 480); -subtraction_impls!(U30720, 480); conversion_impls!(U30720, U30784); conversion_impls!(U30720, U61440); addition_impls!(U30784, U30848); base_impls!(U30784, 481); div_impls!(U30784, U61568); multiply_impls!(U30784, U61568); -shift_impls!(U30784, 481); subtraction_impls!(U30784, 481); conversion_impls!(U30784, U30848); conversion_impls!(U30784, U61568); -addition_impls!(U30848, U30912); base_impls!(U30848, 482); shift_impls!(U30848, 482); -subtraction_impls!(U30848, 482); -conversion_impls!(U30848, U30912); -base_impls!(U30912, 483); -addition_impls!(U32768, U32832); base_impls!(U32768, 512); subtraction_impls!(U32768, 512); -conversion_impls!(U32768, U32832); -base_impls!(U32832, 513); -addition_impls!(U32896, U32960); base_impls!(U32896, 514); subtraction_impls!(U32896, 514); -conversion_impls!(U32896, U32960); -base_impls!(U32960, 515); -addition_impls!(U61440, U61504); base_impls!(U61440, 960); subtraction_impls!(U61440, 960); -conversion_impls!(U61440, U61504); -base_impls!(U61504, 961); -addition_impls!(U61568, U61632); base_impls!(U61568, 962); subtraction_impls!(U61568, 962); -conversion_impls!(U61568, U61632); -base_impls!(U61632, 963); #[cfg(test)] @@ -461,71 +272,42 @@ mod tests { generate_base_tests!(U512, u512); generate_base_tests!(U576, u576); 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!(U1536, u1536); - generate_base_tests!(U1600, u1600); - generate_base_tests!(U1664, u1664); - generate_base_tests!(U1728, u1728); generate_base_tests!(U2048, u2048); generate_base_tests!(U2112, u2112); generate_base_tests!(U2176, u2176); - generate_base_tests!(U2240, u2240); - generate_base_tests!(U2304, u2304); - generate_base_tests!(U2368, u2368); - generate_base_tests!(U2432, u2432); - generate_base_tests!(U2496, u2496); generate_base_tests!(U3072, u3072); generate_base_tests!(U3136, u3136); generate_base_tests!(U3200, u3200); - generate_base_tests!(U3264, u3264); generate_base_tests!(U4096, u4096); generate_base_tests!(U4160, u4160); generate_base_tests!(U4224, u4224); - generate_base_tests!(U4288, u4288); generate_base_tests!(U6144, u6144); generate_base_tests!(U6208, u6208); generate_base_tests!(U6272, u6272); generate_base_tests!(U7680, u7680); - generate_base_tests!(U7744, u7744); - generate_base_tests!(U7808, u7808); - generate_base_tests!(U7872, u7872); generate_base_tests!(U8192, u8192); generate_base_tests!(U8256, u8256); generate_base_tests!(U8320, u8320); - generate_base_tests!(U8384, u8384); generate_base_tests!(U12288, u12288); - generate_base_tests!(U12352, u12352); generate_base_tests!(U12416, u12416); - generate_base_tests!(U12480, u12480); generate_base_tests!(U15360, u15360); generate_base_tests!(U15424, u15424); generate_base_tests!(U15488, u15488); - generate_base_tests!(U15552, u15552); generate_base_tests!(ignore U16384, u16384); generate_base_tests!(ignore U16448, u16448); generate_base_tests!(ignore U16512, u16512); - generate_base_tests!(ignore U16576, u16576); generate_base_tests!(ignore U30720, u30720); generate_base_tests!(ignore U30784, u30784); generate_base_tests!(ignore U30848, u30848); - generate_base_tests!(ignore U30912, u30912); generate_base_tests!(ignore U32768, u32768); - generate_base_tests!(ignore U32832, u32832); generate_base_tests!(ignore U32896, u32896); - generate_base_tests!(ignore U32960, u32960); generate_base_tests!(ignore U61440, u61440); - generate_base_tests!(ignore U61504, u61504); generate_base_tests!(ignore U61568, u61568); - generate_base_tests!(ignore U61632, u61632); } mod conversion { generate_conversion_tests!(U192, u192); @@ -536,71 +318,42 @@ mod tests { generate_conversion_tests!(U512, u512); generate_conversion_tests!(U576, u576); 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!(U1536, u1536); - generate_conversion_tests!(U1600, u1600); - generate_conversion_tests!(U1664, u1664); - generate_conversion_tests!(U1728, u1728); generate_conversion_tests!(U2048, u2048); generate_conversion_tests!(U2112, u2112); generate_conversion_tests!(U2176, u2176); - generate_conversion_tests!(U2240, u2240); - generate_conversion_tests!(U2304, u2304); - generate_conversion_tests!(U2368, u2368); - generate_conversion_tests!(U2432, u2432); - generate_conversion_tests!(U2496, u2496); generate_conversion_tests!(U3072, u3072); generate_conversion_tests!(U3136, u3136); generate_conversion_tests!(U3200, u3200); - generate_conversion_tests!(U3264, u3264); generate_conversion_tests!(U4096, u4096); generate_conversion_tests!(U4160, u4160); generate_conversion_tests!(U4224, u4224); - generate_conversion_tests!(U4288, u4288); generate_conversion_tests!(U6144, u6144); generate_conversion_tests!(U6208, u6208); generate_conversion_tests!(U6272, u6272); generate_conversion_tests!(U7680, u7680); - generate_conversion_tests!(U7744, u7744); - generate_conversion_tests!(U7808, u7808); - generate_conversion_tests!(U7872, u7872); generate_conversion_tests!(U8192, u8192); generate_conversion_tests!(U8256, u8256); generate_conversion_tests!(U8320, u8320); - generate_conversion_tests!(U8384, u8384); generate_conversion_tests!(U12288, u12288); - generate_conversion_tests!(U12352, u12352); generate_conversion_tests!(U12416, u12416); - generate_conversion_tests!(U12480, u12480); generate_conversion_tests!(U15360, u15360); generate_conversion_tests!(U15424, u15424); generate_conversion_tests!(U15488, u15488); - generate_conversion_tests!(U15552, u15552); generate_conversion_tests!(U16384, u16384); generate_conversion_tests!(U16448, u16448); generate_conversion_tests!(U16512, u16512); - generate_conversion_tests!(U16576, u16576); generate_conversion_tests!(U30720, u30720); generate_conversion_tests!(U30784, u30784); generate_conversion_tests!(U30848, u30848); - generate_conversion_tests!(U30912, u30912); generate_conversion_tests!(U32768, u32768); - generate_conversion_tests!(U32832, u32832); generate_conversion_tests!(U32896, u32896); - generate_conversion_tests!(U32960, u32960); generate_conversion_tests!(U61440, u61440); - generate_conversion_tests!(U61504, u61504); generate_conversion_tests!(U61568, u61568); - generate_conversion_tests!(U61632, u61632); } mod codec { generate_codec_tests!(U192, u192); @@ -611,71 +364,42 @@ mod tests { generate_codec_tests!(U512, u512); generate_codec_tests!(U576, u576); 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!(U1536, u1536); - generate_codec_tests!(U1600, u1600); - generate_codec_tests!(U1664, u1664); - generate_codec_tests!(U1728, u1728); generate_codec_tests!(U2048, u2048); generate_codec_tests!(U2112, u2112); generate_codec_tests!(U2176, u2176); - generate_codec_tests!(U2240, u2240); - generate_codec_tests!(U2304, u2304); - generate_codec_tests!(U2368, u2368); - generate_codec_tests!(U2432, u2432); - generate_codec_tests!(U2496, u2496); generate_codec_tests!(U3072, u3072); generate_codec_tests!(U3136, u3136); generate_codec_tests!(U3200, u3200); - generate_codec_tests!(U3264, u3264); generate_codec_tests!(U4096, u4096); generate_codec_tests!(U4160, u4160); generate_codec_tests!(U4224, u4224); - generate_codec_tests!(U4288, u4288); generate_codec_tests!(U6144, u6144); generate_codec_tests!(U6208, u6208); generate_codec_tests!(U6272, u6272); generate_codec_tests!(U7680, u7680); - generate_codec_tests!(U7744, u7744); - generate_codec_tests!(U7808, u7808); - generate_codec_tests!(U7872, u7872); generate_codec_tests!(U8192, u8192); generate_codec_tests!(U8256, u8256); generate_codec_tests!(U8320, u8320); - generate_codec_tests!(U8384, u8384); generate_codec_tests!(U12288, u12288); - generate_codec_tests!(U12352, u12352); generate_codec_tests!(U12416, u12416); - generate_codec_tests!(U12480, u12480); generate_codec_tests!(U15360, u15360); generate_codec_tests!(U15424, u15424); generate_codec_tests!(U15488, u15488); - generate_codec_tests!(U15552, u15552); generate_codec_tests!(U16384, u16384); generate_codec_tests!(U16448, u16448); generate_codec_tests!(U16512, u16512); - generate_codec_tests!(U16576, u16576); generate_codec_tests!(U30720, u30720); generate_codec_tests!(U30784, u30784); generate_codec_tests!(U30848, u30848); - generate_codec_tests!(U30912, u30912); generate_codec_tests!(U32768, u32768); - generate_codec_tests!(U32832, u32832); generate_codec_tests!(U32896, u32896); - generate_codec_tests!(U32960, u32960); generate_codec_tests!(U61440, u61440); - generate_codec_tests!(U61504, u61504); generate_codec_tests!(U61568, u61568); - generate_codec_tests!(U61632, u61632); } mod cmp { use super::super::*; @@ -689,101 +413,62 @@ mod tests { generate_cmp_tests!(U512, u512); generate_cmp_tests!(U576, u576); 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!(U1536, u1536); - generate_cmp_tests!(U1600, u1600); - generate_cmp_tests!(U1664, u1664); - generate_cmp_tests!(U1728, u1728); generate_cmp_tests!(U2048, u2048); generate_cmp_tests!(U2112, u2112); generate_cmp_tests!(U2176, u2176); - generate_cmp_tests!(U2240, u2240); - generate_cmp_tests!(U2304, u2304); - generate_cmp_tests!(U2368, u2368); - generate_cmp_tests!(U2432, u2432); - generate_cmp_tests!(U2496, u2496); generate_cmp_tests!(U3072, u3072); generate_cmp_tests!(U3136, u3136); generate_cmp_tests!(U3200, u3200); - generate_cmp_tests!(U3264, u3264); generate_cmp_tests!(U4096, u4096); generate_cmp_tests!(U4160, u4160); generate_cmp_tests!(U4224, u4224); - generate_cmp_tests!(U4288, u4288); generate_cmp_tests!(U6144, u6144); generate_cmp_tests!(U6208, u6208); generate_cmp_tests!(U6272, u6272); generate_cmp_tests!(U7680, u7680); - generate_cmp_tests!(U7744, u7744); - generate_cmp_tests!(U7808, u7808); - generate_cmp_tests!(U7872, u7872); generate_cmp_tests!(U8192, u8192); generate_cmp_tests!(U8256, u8256); generate_cmp_tests!(U8320, u8320); - generate_cmp_tests!(U8384, u8384); generate_cmp_tests!(U12288, u12288); - generate_cmp_tests!(U12352, u12352); generate_cmp_tests!(U12416, u12416); - generate_cmp_tests!(U12480, u12480); generate_cmp_tests!(U15360, u15360); generate_cmp_tests!(U15424, u15424); generate_cmp_tests!(U15488, u15488); - generate_cmp_tests!(U15552, u15552); generate_cmp_tests!(ignore U16384, u16384); generate_cmp_tests!(ignore U16448, u16448); generate_cmp_tests!(ignore U16512, u16512); - generate_cmp_tests!(ignore U16576, u16576); generate_cmp_tests!(ignore U30720, u30720); generate_cmp_tests!(ignore U30784, u30784); generate_cmp_tests!(ignore U30848, u30848); - generate_cmp_tests!(ignore U30912, u30912); generate_cmp_tests!(ignore U32768, u32768); - generate_cmp_tests!(ignore U32832, u32832); generate_cmp_tests!(ignore U32896, u32896); - generate_cmp_tests!(ignore U32960, u32960); generate_cmp_tests!(ignore U61440, u61440); - generate_cmp_tests!(ignore U61504, u61504); generate_cmp_tests!(ignore U61568, u61568); - generate_cmp_tests!(ignore U61632, u61632); } mod sub { use super::super::*; use testing::run_test; generate_sub_tests!(U256, u256); - generate_sub_tests!(U320, u320); - generate_sub_tests!(U448, u448); + generate_sub_tests!(U512, u512); generate_sub_tests!(U576, u576); - generate_sub_tests!(U640, u640); - generate_sub_tests!(U768, u768); - generate_sub_tests!(U832, u832); - generate_sub_tests!(U896, u896); generate_sub_tests!(U1024, u1024); generate_sub_tests!(U1088, u1088); - generate_sub_tests!(U1152, u1152); - generate_sub_tests!(U1216, u1216); generate_sub_tests!(U1536, u1536); - generate_sub_tests!(U1664, u1664); generate_sub_tests!(U2048, u2048); generate_sub_tests!(U2112, u2112); generate_sub_tests!(U2176, u2176); - generate_sub_tests!(U2304, u2304); - generate_sub_tests!(U2432, u2432); generate_sub_tests!(U3136, u3136); generate_sub_tests!(U4096, u4096); generate_sub_tests!(U4160, u4160); generate_sub_tests!(U4224, u4224); generate_sub_tests!(U6208, u6208); - generate_sub_tests!(U7744, u7744); + generate_sub_tests!(U7680, u7680); generate_sub_tests!(U8192, u8192); generate_sub_tests!(U8256, u8256); generate_sub_tests!(U8320, u8320); @@ -793,9 +478,7 @@ mod tests { generate_sub_tests!(ignore U16384, u16384); generate_sub_tests!(ignore U16448, u16448); generate_sub_tests!(ignore U16512, u16512); - generate_sub_tests!(ignore U30720, u30720); generate_sub_tests!(ignore U30784, u30784); - generate_sub_tests!(ignore U30848, u30848); generate_sub_tests!(ignore U32768, u32768); generate_sub_tests!(ignore U32896, u32896); generate_sub_tests!(ignore U61440, u61440); @@ -805,21 +488,10 @@ mod tests { use super::super::*; use testing::run_test; - 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!(U832, u832); - generate_shiftl_tests!(U896, u896); generate_shiftl_tests!(U1024, u1024); generate_shiftl_tests!(U1088, u1088); generate_shiftl_tests!(U1152, u1152); - generate_shiftl_tests!(U1216, u1216); - generate_shiftl_tests!(U1280, u1280); generate_shiftl_tests!(U2048, u2048); generate_shiftl_tests!(U2112, u2112); generate_shiftl_tests!(U2176, u2176); @@ -828,41 +500,24 @@ mod tests { generate_shiftl_tests!(U4160, u4160); generate_shiftl_tests!(U4224, u4224); generate_shiftl_tests!(U6144, u6144); - generate_shiftl_tests!(U6208, u6208); generate_shiftl_tests!(U6272, u6272); - generate_shiftl_tests!(U7744, u7744); generate_shiftl_tests!(U8192, u8192); generate_shiftl_tests!(U8256, u8256); generate_shiftl_tests!(U8320, u8320); - generate_shiftl_tests!(ignore U15360, u15360); generate_shiftl_tests!(ignore U15424, u15424); - generate_shiftl_tests!(ignore U15488, u15488); generate_shiftl_tests!(ignore U16384, u16384); - generate_shiftl_tests!(ignore U16448, u16448); generate_shiftl_tests!(ignore U16512, u16512); generate_shiftl_tests!(ignore U30720, u30720); - generate_shiftl_tests!(ignore U30784, u30784); generate_shiftl_tests!(ignore U30848, u30848); } mod shiftr { use super::super::*; use testing::run_test; - 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!(U832, u832); - generate_shiftr_tests!(U896, u896); generate_shiftr_tests!(U1024, u1024); generate_shiftr_tests!(U1088, u1088); generate_shiftr_tests!(U1152, u1152); - generate_shiftr_tests!(U1216, u1216); - generate_shiftr_tests!(U1280, u1280); generate_shiftr_tests!(U2048, u2048); generate_shiftr_tests!(U2112, u2112); generate_shiftr_tests!(U2176, u2176); @@ -871,73 +526,33 @@ mod tests { generate_shiftr_tests!(U4160, u4160); generate_shiftr_tests!(U4224, u4224); generate_shiftr_tests!(U6144, u6144); - generate_shiftr_tests!(U6208, u6208); generate_shiftr_tests!(U6272, u6272); - generate_shiftr_tests!(U7744, u7744); generate_shiftr_tests!(U8192, u8192); generate_shiftr_tests!(U8256, u8256); generate_shiftr_tests!(U8320, u8320); - generate_shiftr_tests!(ignore U15360, u15360); generate_shiftr_tests!(ignore U15424, u15424); - generate_shiftr_tests!(ignore U15488, u15488); generate_shiftr_tests!(ignore U16384, u16384); - generate_shiftr_tests!(ignore U16448, u16448); generate_shiftr_tests!(ignore U16512, u16512); generate_shiftr_tests!(ignore U30720, u30720); - generate_shiftr_tests!(ignore U30784, u30784); generate_shiftr_tests!(ignore U30848, u30848); } mod add { use super::super::*; use testing::run_test; + generate_add_tests!(U192, u192, U256); generate_add_tests!(U256, u256, U320); - generate_add_tests!(U320, u320, U384); generate_add_tests!(U384, u384, U448); - generate_add_tests!(U448, u448, U512); - generate_add_tests!(U512, u512, U576); generate_add_tests!(U576, u576, U640); - generate_add_tests!(U640, u640, U704); - generate_add_tests!(U704, u704, U768); - 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!(U1536, u1536, U1600); - generate_add_tests!(U1664, u1664, U1728); - generate_add_tests!(U2048, u2048, U2112); generate_add_tests!(U2112, u2112, U2176); - generate_add_tests!(U2176, u2176, U2240); - generate_add_tests!(U2304, u2304, U2368); - generate_add_tests!(U2432, u2432, U2496); generate_add_tests!(U3136, u3136, U3200); - generate_add_tests!(U3200, u3200, U3264); - generate_add_tests!(U4096, u4096, U4160); generate_add_tests!(U4160, u4160, U4224); - generate_add_tests!(U4224, u4224, U4288); generate_add_tests!(U6208, u6208, U6272); - generate_add_tests!(U7744, u7744, U7808); - generate_add_tests!(U7808, u7808, U7872); - generate_add_tests!(U8192, u8192, U8256); generate_add_tests!(U8256, u8256, U8320); - generate_add_tests!(U8320, u8320, U8384); - generate_add_tests!(ignore U12288, u12288, U12352); - generate_add_tests!(ignore U12416, u12416, U12480); generate_add_tests!(ignore U15424, u15424, U15488); - generate_add_tests!(ignore U15488, u15488, U15552); - generate_add_tests!(ignore U16384, u16384, U16448); generate_add_tests!(ignore U16448, u16448, U16512); - generate_add_tests!(ignore U16512, u16512, U16576); - generate_add_tests!(ignore U30720, u30720, U30784); generate_add_tests!(ignore U30784, u30784, U30848); - generate_add_tests!(ignore U30848, u30848, U30912); - generate_add_tests!(ignore U32768, u32768, U32832); - generate_add_tests!(ignore U32896, u32896, U32960); - generate_add_tests!(ignore U61440, u61440, U61504); - generate_add_tests!(ignore U61568, u61568, U61632); } mod mul { use super::super::*; @@ -945,18 +560,12 @@ mod tests { generate_mul_tests!(U192, u192, U384); generate_mul_tests!(U256, u256, U512); - generate_mul_tests!(U320, u320, U640); generate_mul_tests!(U384, u384, U768); - generate_mul_tests!(U448, u448, U896); 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!(U1024, u1024, U2048); generate_mul_tests!(U1088, u1088, U2176); - generate_mul_tests!(U1152, u1152, U2304); - generate_mul_tests!(U1216, u1216, U2432); + generate_mul_tests!(U1536, u1536, U3072); generate_mul_tests!(U2048, u2048, U4096); generate_mul_tests!(U2112, u2112, U4224); generate_mul_tests!(U3072, u3072, U6144); @@ -966,7 +575,6 @@ mod tests { generate_mul_tests!(U6144, u6144, U12288); generate_mul_tests!(U6208, u6208, U12416); generate_mul_tests!(U7680, u7680, U15360); - generate_mul_tests!(U7744, u7744, U15488); generate_mul_tests!(U8192, u8192, U16384); generate_mul_tests!(U8256, u8256, U16512); generate_mul_tests!(ignore U15360, u15360, U30720); @@ -980,16 +588,8 @@ mod tests { use super::super::*; use testing::run_test; - generate_div_tests!(U384, u384); - generate_div_tests!(U448, u448); - generate_div_tests!(U512, u512); - generate_div_tests!(U576, u576); - generate_div_tests!(U768, u768); - generate_div_tests!(U832, u832); generate_div_tests!(U1024, u1024); generate_div_tests!(U1088, u1088); - generate_div_tests!(U1152, u1152); - generate_div_tests!(U1216, u1216); generate_div_tests!(U2048, u2048); generate_div_tests!(ignore U2112, u2112); generate_div_tests!(ignore U4096, u4096); @@ -998,8 +598,6 @@ mod tests { generate_div_tests!(ignore U6208, u6208); generate_div_tests!(ignore U8192, u8192); generate_div_tests!(ignore U8256, u8256); - generate_div_tests!(ignore U15360, u15360); - generate_div_tests!(ignore U15424, u15424); generate_div_tests!(ignore U16384, u16384); generate_div_tests!(ignore U16448, u16448); generate_div_tests!(ignore U30720, u30720); @@ -1009,16 +607,11 @@ mod tests { use super::super::*; use testing::run_test; - 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!(ignore U2048, u2048, U2112); generate_barrett_gen_tests!(ignore U3072, u3072, U3136); generate_barrett_gen_tests!(ignore U4096, u4096, U4160); - generate_barrett_gen_tests!(ignore U7680, u7680, U7744); generate_barrett_gen_tests!(ignore U8192, u8192, U8256); generate_barrett_gen_tests!(ignore U15360, u15360, U15424); } @@ -1026,16 +619,11 @@ mod tests { use super::super::*; use testing::run_test; - 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!(U2048, u2048, U2112, U4096); generate_barrett_red_tests!(U3072, u3072, U3136, U6144); generate_barrett_red_tests!(ignore U4096, u4096, U4160, U8192); - generate_barrett_red_tests!(ignore U7680, u7680, U7744, U15360); generate_barrett_red_tests!(ignore U8192, u8192, U8256, U16384); generate_barrett_red_tests!(ignore U15360, u15360, U15424, U30720); } @@ -1043,16 +631,11 @@ mod tests { 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!(ignore U4096, u4096); - generate_modsq_tests!(ignore U7680, u7680); generate_modsq_tests!(ignore U8192, u8192); generate_modsq_tests!(ignore U15360, u15360); } @@ -1060,16 +643,11 @@ mod tests { 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!(ignore U4096, u4096); - generate_modmul_tests!(ignore U7680, u7680); generate_modmul_tests!(ignore U8192, u8192); generate_modmul_tests!(ignore U15360, u15360); } @@ -1077,16 +655,11 @@ mod tests { 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!(ignore U512, u512); - generate_modexp_tests!(ignore U576, u576); generate_modexp_tests!(ignore U1024, u1024); generate_modexp_tests!(ignore U2048, u2048); generate_modexp_tests!(ignore U3072, u3072); generate_modexp_tests!(ignore U4096, u4096); - generate_modexp_tests!(ignore U7680, u7680); generate_modexp_tests!(ignore U8192, u8192); generate_modexp_tests!(ignore U15360, u15360); } @@ -1094,16 +667,11 @@ mod tests { 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!(ignore U4096, u4096, U8192); - generate_square_tests!(ignore U7680, u7680, U15360); generate_square_tests!(ignore U8192, u8192, U16384); generate_square_tests!(ignore U15360, u15360, U30720); } @@ -1111,16 +679,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_barrett_modsq_tests!(U192, u192, U256); - generate_barrett_modsq_tests!(U256, u256, U320); - generate_barrett_modsq_tests!(U384, u384, U448); generate_barrett_modsq_tests!(U512, u512, U576); - generate_barrett_modsq_tests!(U576, u576, U640); generate_barrett_modsq_tests!(U1024, u1024, U1088); generate_barrett_modsq_tests!(U2048, u2048, U2112); generate_barrett_modsq_tests!(U3072, u3072, U3136); generate_barrett_modsq_tests!(ignore U4096, u4096, U4160); - generate_barrett_modsq_tests!(ignore U7680, u7680, U7744); generate_barrett_modsq_tests!(ignore U8192, u8192, U8256); generate_barrett_modsq_tests!(ignore U15360, u15360, U15424); } @@ -1128,16 +691,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_barrett_modmul_tests!(U192, u192, U256); - generate_barrett_modmul_tests!(U256, u256, U320); - generate_barrett_modmul_tests!(U384, u384, U448); generate_barrett_modmul_tests!(U512, u512, U576); - generate_barrett_modmul_tests!(U576, u576, U640); generate_barrett_modmul_tests!(U1024, u1024, U1088); generate_barrett_modmul_tests!(U2048, u2048, U2112); generate_barrett_modmul_tests!(U3072, u3072, U3136); generate_barrett_modmul_tests!(ignore U4096, u4096, U4160); - generate_barrett_modmul_tests!(ignore U7680, u7680, U7744); generate_barrett_modmul_tests!(ignore U8192, u8192, U8256); generate_barrett_modmul_tests!(ignore U15360, u15360, U15424); } @@ -1145,16 +703,11 @@ mod tests { use super::super::*; use testing::run_test; - generate_barrett_modexp_tests!(U192, u192, U256); - generate_barrett_modexp_tests!(U256, u256, U320); - generate_barrett_modexp_tests!(U384, u384, U448); generate_barrett_modexp_tests!(U512, u512, U576); - generate_barrett_modexp_tests!(U576, u576, U640); generate_barrett_modexp_tests!(ignore U1024, u1024, U1088); generate_barrett_modexp_tests!(ignore U2048, u2048, U2112); generate_barrett_modexp_tests!(ignore U3072, u3072, U3136); generate_barrett_modexp_tests!(ignore U4096, u4096, U4160); - generate_barrett_modexp_tests!(ignore U7680, u7680, U7744); generate_barrett_modexp_tests!(ignore U8192, u8192, U8256); generate_barrett_modexp_tests!(ignore U15360, u15360, U15424); }