private FSnCollection IfVerticalStabilizer() { if (this.IsVertical() == true) { FSnCollection result = new FSnCollection(); int a = DiagElemCol[0]; List <Permutation> cs = Common.GeneratePermutations(this.Number); for (int j = 0; j < cs.Count; j++) { FSnElement aa = new FSnElement(); aa.SnElement = cs[j]; if (cs[j].IsEven() == true) { aa.FElement = 1; } else { aa.FElement = -1; } result.Add(aa); } return(result); } else { return(null); } }
private FSnCollection IfHorizontalStabilizer() { if (this.IsHorizontal() == true) { FSnCollection result = new FSnCollection(); int a = (int)diagElemRow[0]; List <Permutation> rs = Common.GeneratePermutations(this.Number); for (int j = 0; j < rs.Count; j++) { FSnElement aa = new FSnElement(); aa.SnElement = (Permutation)rs[j]; aa.FElement = 1; result.Add(aa); } return(result); } else { return(null); } }
internal FSnCollection YoungSymmetrizer() { Array source = this.ToMatrix(); FSnCollection result = new FSnCollection(); if (this.IsVertical() == true) { result = IfVerticalStabilizer(); return(result); } if (this.IsHorizontal() == true) { result = IfHorizontalStabilizer(); return(result); } List <Permutation> rs = this.RowStabilizer(source); List <Permutation> cs = this.ColStabilizer(source); for (int i = 0; i < cs.Count; i++) { int sign = 0; if (cs[i].IsEven() == true) { sign = 1; } else { sign = -1; } for (int j = 0; j < rs.Count; j++) { FSnElement a = new FSnElement(); a.SnElement = (Permutation)(rs[j] * cs[i]); a.FElement = sign; result.Add(a); } } return(result); }