// The exceptional symplectic reflection group R.
// See Table III in
// Cohen, A. M. (1980). Finite quaternionic reflection groups. J. Algebra, 64, 293--324.
//
// By Johannes Schmitt

E := func<n | RootOfUnity(n)>;

M1 := [ [ -1, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, -1, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ] ];

M2 := [ [ 0, E(4), 0, 0, 0, 0 ], [ -E(4), 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, -E(4), 0 ], [ 0, 0, 0, E(4), 0, 0 ], [ 0, 0, 0, 0, 0, 1 ] ];

M3 := [ [ 0, 0, 0, 0, -1, 0 ], [ 0, 0, 0, 1, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0 ], [ -1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1 ] ];

M4 := [ [ 0, 0, 0, 0, -E(4), 0 ], [ 0, 0, 0, E(4), 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, -E(4), 0, 0, 0, 0 ], [ E(4), 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1 ] ];

M5 := [ [ 1/2, -1/2*E(4), -1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0, 0, -1/4+1/4*E(4) ], [ 1/2*E(4), 1/2, 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0, 0, 1/4+1/4*E(4) ], [ 1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 0, 1/4-1/4*E(4), -1/4-1/4*E(4), 0 ], [ 0, 0, 1/4+1/4*E(4), 1/2, 1/2*E(4), 1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17 ], [ 0, 0, -1/4+1/4*E(4), -1/2*E(4), 1/2, -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17 ], [ -1/4-1/4*E(4), 1/4-1/4*E(4), 0, -1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0 ] ];

M6 := [ [ 1/2, 0, 1/4+1/4*E(4), 0, 1/2*E(4), -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 0, 1/2, -1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, -1/2*E(4), 0, 1/4+1/4*E(4) ], [ 1/4-1/4*E(4), 1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17, 0, 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, -1/4-1/4*E(4), 0 ], [ 0, 1/2*E(4), -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 1/2, 0, 1/4-1/4*E(4) ], [ -1/2*E(4), 0, -1/4+1/4*E(4), 0, 1/2, 1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 1/4-1/4*E(4), 0, 1/4+1/4*E(4), -1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0 ] ];

M7 := [ [ 1/2, 0, 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0, 1/2, 1/4-1/4*E(4) ], [ 0, 1/2, -1/4-1/4*E(4), -1/2, 0, -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17, -1/4+1/4*E(4), 0, -1/4+1/4*E(4), 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0 ], [ 0, -1/2, -1/4-1/4*E(4), 1/2, 0, -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 1/2, 0, -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 0, 1/2, -1/4+1/4*E(4) ], [ 1/4+1/4*E(4), 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0, 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, -1/4-1/4*E(4), 0 ] ];

M8 := [ [ 1/2, 0, -1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0, -1/2*E(4), 1/4+1/4*E(4) ], [ 0, 1/2, 1/4+1/4*E(4), 1/2*E(4), 0, -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17, 1/4-1/4*E(4), 0, -1/4-1/4*E(4), 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0 ], [ 0, -1/2*E(4), -1/4+1/4*E(4), 1/2, 0, 1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 1/2*E(4), 0, -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 0, 1/2, 1/4-1/4*E(4) ], [ 1/4-1/4*E(4), 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0, -1/4*E(20)+1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 1/4+1/4*E(4), 0 ] ];

M9 := [ [ 1/2, 0, -1/4-1/4*E(4), 0, -1/2, -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 0, 1/2, 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 1/2, 0, 1/4-1/4*E(4) ], [ -1/4+1/4*E(4), -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17, 0, 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, -1/4+1/4*E(4), 0 ], [ 0, 1/2, -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 1/2, 0, -1/4+1/4*E(4) ], [ -1/2, 0, -1/4-1/4*E(4), 0, 1/2, -1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13+1/4*E(20)^16-1/4*E(20)^17 ], [ 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 1/4+1/4*E(4), 0, -1/4-1/4*E(4), 1/4*E(20)+1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13+1/4*E(20)^16+1/4*E(20)^17, 0 ] ];

M10 := [ [ 1/2, 1/2*E(4), 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0, 0, 1/4+1/4*E(4) ], [ -1/2*E(4), 1/2, -1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0, 0, -1/4+1/4*E(4) ], [ -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17, 0, -1/4-1/4*E(4), 1/4-1/4*E(4), 0 ], [ 0, 0, -1/4+1/4*E(4), 1/2, -1/2*E(4), -1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8-1/4*E(20)^9+1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17 ], [ 0, 0, 1/4+1/4*E(4), 1/2*E(4), 1/2, 1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8+1/4*E(20)^9-1/4*E(20)^12-1/4*E(20)^13-1/4*E(20)^16-1/4*E(20)^17 ], [ 1/4-1/4*E(4), -1/4-1/4*E(4), 0, 1/4*E(20)-1/4*E(20)^4+1/4*E(20)^8+1/4*E(20)^9+1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, -1/4*E(20)-1/4*E(20)^4-1/4*E(20)^8-1/4*E(20)^9-1/4*E(20)^12+1/4*E(20)^13-1/4*E(20)^16+1/4*E(20)^17, 0 ] ];

M := [ M1, M2, M3, M4, M5, M6, M7, M8, M9, M10 ];
K := Universe(Flat(M));
n := #M1;
W := MatrixGroup<n, K | M>;
