From f5d1a13a18d9a2c179d88b921cebec0f2a9e8cfe Mon Sep 17 00:00:00 2001 From: Jiri Pittner Date: Tue, 9 Nov 2021 13:19:24 +0100 Subject: [PATCH] NRPerm::reverse --- permutation.cc | 12 ++++++++++++ permutation.h | 1 + 2 files changed, 13 insertions(+) diff --git a/permutation.cc b/permutation.cc index ee5cf7f..4b0c4a7 100644 --- a/permutation.cc +++ b/permutation.cc @@ -79,6 +79,18 @@ for(T i=1; i<=this->size(); ++i) q[(*this)[i]]=i; return q; } +template +NRPerm NRPerm::reverse() const +{ +#ifdef DEBUG + if(!this->is_valid()) laerror("reverse of invalid permutation"); +#endif + +NRPerm q(this->size()); +for(T i=1; i<=this->size(); ++i) q[i]=(*this)[this->size()-i+1]; +return q; +} + template NRPerm NRPerm::operator*(const NRPerm q) const diff --git a/permutation.h b/permutation.h index 1ab744a..fb69c5a 100644 --- a/permutation.h +++ b/permutation.h @@ -52,6 +52,7 @@ public: bool is_valid() const; //is it really a permutation bool is_identity() const; NRPerm inverse() const; + NRPerm reverse() const; //backward order NRPerm operator*(const NRPerm q) const; //q is rhs and applied first, this applied second NRPerm conjugate_by(const NRPerm q) const; //q^-1 p q int parity() const;