/// <summary> /// Create the Full GA subspace named @ga@ /// </summary> /// <returns></returns> private GMacFrameSubspace DefineDefaultSubspaces_FullGA(GMacFrame frame) { var idsList = Enumerable.Range(0, frame.GaSpaceDimension).ToList(); const string subspaceName = "GA"; var subspaceSignature = BooleanPattern.CreateFromTrueIndexes(frame.GaSpaceDimension, idsList); var subspace = frame.DefineSubspace(subspaceName, subspaceSignature); subspace.AddCodeLocation(Context.GetCodeLocation(frame.ParseNode)); return(subspace); }
/// <summary> /// Create a default subspaces of k-vectors with a given grade and name /// </summary> private void DefineDefaultSubspaces_KVectors(GMacFrame frame, int grade, string subspaceName) { var basisCount = FrameUtils.KvSpaceDimension(frame.VSpaceDimension, grade); var idsList = new List <int>(basisCount); for (var index = 0; index < basisCount; index++) { idsList.Add(FrameUtils.BasisBladeId(grade, index)); } var subspaceSignature = BooleanPattern.CreateFromTrueIndexes(frame.GaSpaceDimension, idsList); var subspace = frame.DefineSubspace(subspaceName, subspaceSignature); subspace.AddCodeLocation(Context.GetCodeLocation(frame.ParseNode)); }
/// <summary> /// Create the default subspace of odd multivectors named @odd@ /// </summary> /// <returns></returns> private GMacFrameSubspace DefineDefaultSubspaces_Odd(GMacFrame frame) { var idsList = new List <int>(frame.GaSpaceDimension); for (var grade = 1; grade <= frame.VSpaceDimension; grade = grade + 2) { var basisCount = FrameUtils.KvSpaceDimension(frame.VSpaceDimension, grade); for (var index = 0; index < basisCount; index++) { idsList.Add(FrameUtils.BasisBladeId(grade, index)); } } const string subspaceName = "Odd"; var subspaceSignature = BooleanPattern.CreateFromTrueIndexes(frame.GaSpaceDimension, idsList); var subspace = frame.DefineSubspace(subspaceName, subspaceSignature); subspace.AddCodeLocation(Context.GetCodeLocation(frame.ParseNode)); return(subspace); }