22
33use  super :: { ConstMontyForm ,  ConstMontyParams } ; 
44use  crate :: { 
5-     modular:: BernsteinYangInverter ,  ConstCtOption ,  Invert ,  Inverter ,  PrecomputeInverter ,  Uint , 
5+     modular:: BernsteinYangInverter ,  ConstCtOption ,  Invert ,  Inverter ,  Odd ,   PrecomputeInverter ,  Uint , 
66} ; 
77use  core:: { fmt,  marker:: PhantomData } ; 
88use  subtle:: CtOption ; 
99
1010impl < MOD :  ConstMontyParams < SAT_LIMBS > ,  const  SAT_LIMBS :  usize ,  const  UNSAT_LIMBS :  usize > 
1111    ConstMontyForm < MOD ,  SAT_LIMBS > 
1212where 
13-     Uint < SAT_LIMBS > :  PrecomputeInverter < 
13+     Odd < Uint < SAT_LIMBS > > :  PrecomputeInverter < 
1414        Inverter  = BernsteinYangInverter < SAT_LIMBS ,  UNSAT_LIMBS > , 
1515        Output  = Uint < SAT_LIMBS > , 
1616    > , 
2121/// otherwise it is the falsy value (in which case the first element's value is unspecified). 
2222pub  const  fn  inv ( & self )  -> ConstCtOption < Self >  { 
2323        let  inverter =
24-             <Uint < SAT_LIMBS >  as  PrecomputeInverter >:: Inverter :: new ( & MOD :: MODULUS ,  & MOD :: R2 ) ; 
24+             <Odd < Uint < SAT_LIMBS > >  as  PrecomputeInverter >:: Inverter :: new ( & MOD :: MODULUS ,  & MOD :: R2 ) ; 
2525
2626        let  maybe_inverse = inverter. inv ( & self . montgomery_form ) ; 
2727        let  ( inverse,  inverse_is_some)  = maybe_inverse. components_ref ( ) ; 
3838impl < MOD :  ConstMontyParams < SAT_LIMBS > ,  const  SAT_LIMBS :  usize ,  const  UNSAT_LIMBS :  usize >  Invert 
3939    for  ConstMontyForm < MOD ,  SAT_LIMBS > 
4040where 
41-     Uint < SAT_LIMBS > :  PrecomputeInverter < 
41+     Odd < Uint < SAT_LIMBS > > :  PrecomputeInverter < 
4242        Inverter  = BernsteinYangInverter < SAT_LIMBS ,  UNSAT_LIMBS > , 
4343        Output  = Uint < SAT_LIMBS > , 
4444    > , 
@@ -52,16 +52,16 @@ where
5252/// Bernstein-Yang inverter which inverts [`ConstMontyForm`] types. 
5353pub  struct  ConstMontyFormInverter < MOD :  ConstMontyParams < LIMBS > ,  const  LIMBS :  usize > 
5454where 
55-     Uint < LIMBS > :  PrecomputeInverter < Output  = Uint < LIMBS > > , 
55+     Odd < Uint < LIMBS > > :  PrecomputeInverter < Output  = Uint < LIMBS > > , 
5656{ 
57-     inverter :  <Uint < LIMBS >  as  PrecomputeInverter >:: Inverter , 
57+     inverter :  <Odd < Uint < LIMBS > >  as  PrecomputeInverter >:: Inverter , 
5858    phantom :  PhantomData < MOD > , 
5959} 
6060
6161impl < MOD :  ConstMontyParams < SAT_LIMBS > ,  const  SAT_LIMBS :  usize ,  const  UNSAT_LIMBS :  usize > 
6262    ConstMontyFormInverter < MOD ,  SAT_LIMBS > 
6363where 
64-     Uint < SAT_LIMBS > :  PrecomputeInverter < 
64+     Odd < Uint < SAT_LIMBS > > :  PrecomputeInverter < 
6565        Inverter  = BernsteinYangInverter < SAT_LIMBS ,  UNSAT_LIMBS > , 
6666        Output  = Uint < SAT_LIMBS > , 
6767    > , 
9595impl < MOD :  ConstMontyParams < SAT_LIMBS > ,  const  SAT_LIMBS :  usize ,  const  UNSAT_LIMBS :  usize >  Inverter 
9696    for  ConstMontyFormInverter < MOD ,  SAT_LIMBS > 
9797where 
98-     Uint < SAT_LIMBS > :  PrecomputeInverter < 
98+     Odd < Uint < SAT_LIMBS > > :  PrecomputeInverter < 
9999        Inverter  = BernsteinYangInverter < SAT_LIMBS ,  UNSAT_LIMBS > , 
100100        Output  = Uint < SAT_LIMBS > , 
101101    > , 
@@ -110,7 +110,7 @@ where
110110impl < MOD :  ConstMontyParams < SAT_LIMBS > ,  const  SAT_LIMBS :  usize ,  const  UNSAT_LIMBS :  usize >  fmt:: Debug 
111111    for  ConstMontyFormInverter < MOD ,  SAT_LIMBS > 
112112where 
113-     Uint < SAT_LIMBS > :  PrecomputeInverter < 
113+     Odd < Uint < SAT_LIMBS > > :  PrecomputeInverter < 
114114        Inverter  = BernsteinYangInverter < SAT_LIMBS ,  UNSAT_LIMBS > , 
115115        Output  = Uint < SAT_LIMBS > , 
116116    > , 
0 commit comments