| 3665 | } |
| 3666 | |
| 3667 | Integer ModularArithmetic::CascadeExponentiate(const Integer &x, |
| 3668 | const Integer &e1, const Integer &y, const Integer &e2) const |
| 3669 | { |
| 3670 | if (modulus.IsOdd()) |
| 3671 | { |
| 3672 | MontgomeryRepresentation dr(modulus); |
| 3673 | return dr.ConvertOut(dr.CascadeExponentiate(dr.ConvertIn(x), e1, |
| 3674 | dr.ConvertIn(y), e2)); |
| 3675 | } |
| 3676 | else |
| 3677 | return AbstractRing::CascadeExponentiate(x, e1, y, e2); |
| 3678 | } |
| 3679 | |
| 3680 | void ModularArithmetic::SimultaneousExponentiate(Integer *results, |
| 3681 | const Integer &base, const Integer *exponents, |
no test coverage detected