public static GaSymMapBilinearCoefSums ToCoefSumsMap(this IGaSymMapBilinear bilinearMap) { var resultMap = GaSymMapBilinearCoefSums.Create( bilinearMap.DomainVSpaceDimension, bilinearMap.TargetVSpaceDimension ); foreach (var basisBladeMapping in bilinearMap.BasisBladesMaps()) { var id1 = basisBladeMapping.Item1; var id2 = basisBladeMapping.Item2; var mv = basisBladeMapping.Item3; foreach (var term in mv.NonZeroExprTerms) { resultMap.SetFactor(term.Key, id1, id2, term.Value); } } return(resultMap); }
public string Execute() { LogComposer.Clear(); //var randGen = new GMacRandomGenerator(10); //var mvA = randGen.GetSymbolicMultivector(Frame.GaSpaceDimension, "A"); //var mvB = randGen.GetSymbolicMultivector(Frame.GaSpaceDimension, "B"); var mvA = GaSymMultivector.CreateSymbolic(Frame.GaSpaceDimension, "A"); var mvB = GaSymMultivector.CreateSymbolic(Frame.GaSpaceDimension, "B"); LogComposer .AppendAtNewLine("A = ") .AppendLine(mvA.ToString()); LogComposer .AppendAtNewLine("B = ") .AppendLine(mvB.ToString()) .AppendLine(); var coefSumsTable = GaSymMapBilinearCoefSums.CreateFromOuterProduct(Frame); LogComposer .AppendAtNewLine("A op B = ") .AppendLine(coefSumsTable[mvA, mvB].ToString()) .AppendLine() .AppendLineAtNewLine("A op B Coef Sums:") .AppendLine(coefSumsTable.ToMarkdownTable()); var mv1 = mvA.ToTreeMultivector(); var mv2 = mvB.ToTreeMultivector(); var opMv = mv1.Op(mv2); LogComposer .AppendAtNewLine("Tree: A = ") .AppendLine(mv1.ToTreeString()) .AppendAtNewLine("Tree: B = ") .AppendLine(mv2.ToTreeString()) .AppendAtNewLine("Tree: A op B = ") .AppendLine(opMv.ToTreeString()) .AppendLine(); coefSumsTable = Frame.Gp.ToCoefSumsMap(); LogComposer .AppendAtNewLine("A gp B = ") .AppendLine(coefSumsTable[mvA, mvB].ToString()) .AppendLine() .AppendLineAtNewLine("A gp B Coef Sums:") .AppendLine(coefSumsTable.ToMarkdownTable()); var gpMv = mv1.EGp(mv2); LogComposer .AppendAtNewLine("Tree: A = ") .AppendLine(mv1.ToTreeString()) .AppendAtNewLine("Tree: B = ") .AppendLine(mv2.ToTreeString()) .AppendAtNewLine("Tree: A gp B = ") .AppendLine(gpMv.ToTreeString()) .AppendLine(); coefSumsTable = Frame.Sp.ToCoefSumsMap(); LogComposer .AppendAtNewLine("A sp B = ") .AppendLine(coefSumsTable[mvA, mvB].ToString()) .AppendLine() .AppendLineAtNewLine("A sp B Coef Sums:") .AppendLine(coefSumsTable.ToMarkdownTable()); coefSumsTable = Frame.Lcp.ToCoefSumsMap(); LogComposer .AppendAtNewLine("A lcp B = ") .AppendLine(coefSumsTable[mvA, mvB].ToString()) .AppendLine() .AppendLineAtNewLine("A lcp B Coef Sums:") .AppendLine(coefSumsTable.ToMarkdownTable()); return(LogComposer.ToString()); }
private long OpCombinationsTableSize() { return(GaSymMapBilinearCoefSums.CreateFromOuterProduct(Frame).SizeInBytes()); }