diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-21 17:38:19 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-21 17:38:19 +0100 |
| commit | 32cce8fe6a4b35d24d6a63b3226daee2a2753684 (patch) | |
| tree | 6409e8f25209c5719ab17d158f242085b8d1fe9a /zmodn.h | |
| parent | 7e705a3342bc36f9f02b4e8e0050bc5842a62f9b (diff) | |
| download | zmodn-32cce8fe6a4b35d24d6a63b3226daee2a2753684.tar.gz zmodn-32cce8fe6a4b35d24d6a63b3226daee2a2753684.zip | |
Added power operator
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 | ||
