From 1fbcb4dd4e52daeb53becba33827f8e48c5606b2 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Wed, 28 Feb 2018 20:33:41 -0500 Subject: fixed major mistake in process, also got n-component version fully working --- lib/dihedral.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 lib/dihedral.c (limited to 'lib/dihedral.c') diff --git a/lib/dihedral.c b/lib/dihedral.c new file mode 100644 index 0000000..623041a --- /dev/null +++ b/lib/dihedral.c @@ -0,0 +1,28 @@ + +#include "dihedral.h" + +dihedral_t *dihedral_compose(q_t q, q_t g1i, const dihedral_t *g2) { + // we only need to consider the action of reflections + dihedral_t *g3 = (dihedral_t *)malloc(1 * sizeof(dihedral_t)); + + g3->r = !g2->r; + g3->i = (g1i + q - g2->i) % q; + + return g3; +} + +q_t dihedral_act(q_t q, q_t gi, q_t s) { + // we only need to consider the action of reflections + + return (gi + q - s) % q; +} + +q_t dihedral_inverse_act(q_t q, const dihedral_t *g, q_t s) { + if (g->r) { + return (q - ((q + s - g->i) % q)) % q; + } else { + return (q + s - g->i) % q; + } +} + + -- cgit v1.2.3-70-g09d2