| 2141 | // ******************************************************** |
| 2142 | |
| 2143 | Integer ModularArithmetic::Add(const Integer &a, const Integer &b) const |
| 2144 | { |
| 2145 | if (a.reg.size==modulus.reg.size && b.reg.size==modulus.reg.size) |
| 2146 | { |
| 2147 | if (::Add(result.reg.ptr, a.reg, b.reg, a.reg.size) |
| 2148 | || Compare(result.reg, modulus.reg, a.reg.size) >= 0) |
| 2149 | { |
| 2150 | ::Subtract(result.reg.ptr, result.reg, modulus.reg, a.reg.size); |
| 2151 | } |
| 2152 | return result; |
| 2153 | } |
| 2154 | else |
| 2155 | {Integer r=a+b; if (r>=modulus) r-=modulus; return r;} |
| 2156 | } |
| 2157 | |
| 2158 | Integer& ModularArithmetic::Accumulate(Integer &a, const Integer &b) const |
| 2159 | { |