diff options
Diffstat (limited to 'zmodn.h')
| -rw-r--r-- | zmodn.h | 7 |
1 files changed, 7 insertions, 0 deletions
| @@ -25,10 +25,17 @@ public: | |||
| 25 | Zmod operator+(const Zmod& z) const { return value + z.value; } | 25 | Zmod operator+(const Zmod& z) const { return value + z.value; } |
| 26 | Zmod operator-(const Zmod& z) const { return value - z.value; } | 26 | Zmod operator-(const Zmod& z) const { return value - z.value; } |
| 27 | Zmod operator*(const Zmod& z) const { return value * z.value; } | 27 | Zmod operator*(const Zmod& z) const { return value * z.value; } |
| 28 | |||
| 28 | Zmod operator+=(const Zmod& z) { return (*this) = value + z.value; } | 29 | Zmod operator+=(const Zmod& z) { return (*this) = value + z.value; } |
| 29 | Zmod operator-=(const Zmod& z) { return (*this) = value - z.value; } | 30 | Zmod operator-=(const Zmod& z) { return (*this) = value - z.value; } |
| 30 | Zmod operator*=(const Zmod& z) { return (*this) = value * z.value; } | 31 | Zmod operator*=(const Zmod& z) { return (*this) = value * z.value; } |
| 31 | 32 | ||
| 33 | Zmod operator^(decltype(N) z) const { | ||
| 34 | if (z == 0) return 1; | ||
| 35 | if (z % 2 == 0) return (((*this) * (*this)) ^ (z/2)); | ||
| 36 | return (*this) * ((*this) ^ (z-1)); | ||
| 37 | } | ||
| 38 | |||
| 32 | bool operator==(const Zmod& z) const { return value == z.value; } | 39 | bool operator==(const Zmod& z) const { return value == z.value; } |
| 33 | bool operator!=(const Zmod& z) const { return value != z.value; } | 40 | bool operator!=(const Zmod& z) const { return value != z.value; } |
| 34 | 41 | ||
