Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
 private long OpCombinationsTableSize()
 {
     return(GaSymMapBilinearCoefSums.CreateFromOuterProduct(Frame).SizeInBytes());
 }