Ejemplo n.º 1
0
        public void Setup()
        {
            _randGen = new GMacRandomGenerator(10);

            _frame = GaNumFrame.CreateConformal(5);
            _frame.SetProductsImplementation(ProductsImplementation);

            _mv1 = _randGen.GetNumKVector(_frame.GaSpaceDimension, Grade);
            _mv2 = _randGen.GetNumKVector(_frame.GaSpaceDimension, Grade);
        }
Ejemplo n.º 2
0
        public string Execute()
        {
            LogComposer.Clear();

            var randGen = new GMacRandomGenerator(10);
            var mvList  = new List <GaSymMultivector>(10);


            for (var i = 0; i < 10; i++)
            {
                mvList.Add(randGen.GetSymMultivector(Frame.GaSpaceDimension));
            }

            //var mvA = GaMultivector.CreateSymbolic(Frame.GaSpaceDimension, "A");
            //var mvB = GaMultivector.CreateSymbolic(Frame.GaSpaceDimension, "B");

            var cacheMisses1 = SymbolicUtils.Cas.Connection.CacheMisses;
            var elapsedTime1 = SymbolicUtils.Cas.Connection.Stopwatch.Elapsed;

            var resultList = new List <GaSymMultivector>(mvList.Count * mvList.Count);

            foreach (var mv1 in mvList)
            {
                foreach (var mv2 in mvList)
                {
                    resultList.Add(Frame.Gp[mv1, mv2]);
                }
            }

            var cacheMisses2 = SymbolicUtils.Cas.Connection.CacheMisses;
            var elapsedTime2 = SymbolicUtils.Cas.Connection.Stopwatch.Elapsed;

            //LogComposer
            //    .AppendAtNewLine("A = ")
            //    .AppendLine(mvA.ToString());

            //LogComposer
            //    .AppendAtNewLine("B = ")
            //    .AppendLine(mvB.ToString())
            //    .AppendLine();

            //LogComposer
            //    .AppendAtNewLine("A gp B = ")
            //    .AppendLine(gp.ToString())
            //    .AppendLine();

            LogComposer
            .AppendAtNewLine("Symbolic Computations Count: ")
            .AppendLine(cacheMisses2 - cacheMisses1)
            .AppendAtNewLine("Symbolic Computations Time: ")
            .AppendLine(elapsedTime2 - elapsedTime1);

            return(LogComposer.ToString());
        }
Ejemplo n.º 3
0
        public void Setup()
        {
            _randGen = new GMacRandomGenerator(10);

            _frame = GaNumFrame.CreateConformal(5);
            //_frame.SelectBilinearProductsImplementation(ProductsImplementation);

            _mv1 = _randGen.GetNumMultivectorFull(_frame.GaSpaceDimension);
            _mv2 = _mv1.Terms.ToDictionary(t => t.Key, t => t.Value);

            _mv3 = GaNumMultivector.CreateZero(_frame.GaSpaceDimension);
            //_mv4 = new Dictionary<int, double>();
            //_mv5 = new double[_frame.GaSpaceDimension];
        }
Ejemplo n.º 4
0
        public string Execute()
        {
            var randGen = new GMacRandomGenerator(10);
            var frame   = GaNumFrame.CreateEuclidean(3);

            //var mv = randGen.GetNumMultivectorByGrades(frame.GaSpaceDimension, 2);
            //var dotGraph = mv.ToGraphViz(true, true);

            var bilinearMap = frame.ComputedLcp.ToTreeMap();
            var dotGraph    = bilinearMap.ToGraphViz(false, true);

            //var unilinearMap = frame.NonOrthogonalMetric.BaseToDerivedCba.ToTreeMap();
            //var dotGraph = unilinearMap.ToGraphViz(true, true);

            return(dotGraph.GenerateDotCode());
        }
Ejemplo n.º 5
0
        public string Execute()
        {
            var randGen      = new GMacRandomGenerator(10);
            var textComposer = new LinearComposer();

            var numFrame = GaNumFrame.CreateConformal(5);
            var symFrame = GaSymFrame.CreateConformal(5);

            var numMv1 = randGen.GetNumMultivectorFull(numFrame.GaSpaceDimension);
            var numMv2 = randGen.GetNumMultivectorFull(numFrame.GaSpaceDimension);
            var symMv1 = numMv1.ToSymbolic();
            var symMv2 = numMv2.ToSymbolic();

            var symMvGp = symFrame.Gp[symMv1, symMv2];

            //textComposer.AppendLineAtNewLine("Symbolic Multivector 1: ").AppendLine(symMv1);
            //textComposer.AppendLineAtNewLine("Numeric Multivector 1: ").AppendLine(numMv1);

            //textComposer.AppendLineAtNewLine("Symbolic Multivector 2: ").AppendLine(symMv2);
            //textComposer.AppendLineAtNewLine("Numeric Multivector 2: ").AppendLine(numMv2);

            //textComposer.AppendLineAtNewLine("Symbolic Gp: ").AppendLine(symMvGp);
            //textComposer.AppendLineAtNewLine("Numeric GP: ").AppendLine(numMvGp);


            numFrame.SetProductsImplementation(GaBilinearProductImplementation.Computed);
            GaNumMultivector.ResetAddFactorsCallCount();
            var numMvGp    = numFrame.Gp[numMv1, numMv2];
            var callsCount = GaNumMultivector.AddFactorsCallCount;
            var diff       = symMvGp.ToNumeric() - numMvGp;

            diff.Simplify();
            GaNumMultivector.ResetAddFactorsCallCount();
            textComposer
            .AppendLineAtNewLine("Difference, Computed Tree: ")
            .AppendLine(callsCount)
            .AppendLine(diff);


            numFrame.SetProductsImplementation(GaBilinearProductImplementation.LookupArray);
            GaNumMultivector.ResetAddFactorsCallCount();
            numMvGp    = numFrame.Gp[numMv1, numMv2];
            callsCount = GaNumMultivector.AddFactorsCallCount;
            //var factorsCount = ((GaNumMapBilinearArray) numFrame.Gp).FactorsCount;
            diff = symMvGp.ToNumeric() - numMvGp;
            diff.Simplify();
            GaNumMultivector.ResetAddFactorsCallCount();
            textComposer
            .AppendLineAtNewLine("Difference, Lookup Array: ")
            .AppendLine(callsCount)
            //.AppendLine(factorsCount)
            .AppendLine(diff);


            numFrame.SetProductsImplementation(GaBilinearProductImplementation.LookupHash);
            GaNumMultivector.ResetAddFactorsCallCount();
            numMvGp    = numFrame.Gp[numMv1, numMv2];
            callsCount = GaNumMultivector.AddFactorsCallCount;
            //factorsCount = ((GaNumMapBilinearHash)numFrame.Gp).FactorsCount;
            diff = symMvGp.ToNumeric() - numMvGp;
            diff.Simplify();
            GaNumMultivector.ResetAddFactorsCallCount();
            textComposer
            .AppendLineAtNewLine("Difference, Lookup Hash: ")
            .AppendLine(callsCount)
            //.AppendLine(factorsCount)
            .AppendLine(diff);


            numFrame.SetProductsImplementation(GaBilinearProductImplementation.LookupTree);
            GaNumMultivector.ResetAddFactorsCallCount();
            numMvGp    = numFrame.Gp[numMv1, numMv2];
            callsCount = GaNumMultivector.AddFactorsCallCount;
            //factorsCount = ((GaNumMapBilinearTree)numFrame.Gp).FactorsCount;
            diff = symMvGp.ToNumeric() - numMvGp;
            diff.Simplify();
            GaNumMultivector.ResetAddFactorsCallCount();
            textComposer
            .AppendLineAtNewLine("Difference, Lookup Tree: ")
            .AppendLine(callsCount)
            //.AppendLine(factorsCount)
            .AppendLine(diff);


            numFrame.SetProductsImplementation(GaBilinearProductImplementation.LookupCoefSums);
            GaNumMultivector.ResetAddFactorsCallCount();
            numMvGp    = numFrame.Gp[numMv1, numMv2];
            callsCount = GaNumMultivector.AddFactorsCallCount;
            //factorsCount = ((GaNumMapBilinearCoefSums)numFrame.Gp).FactorsCount;
            diff = symMvGp.ToNumeric() - numMvGp;
            diff.Simplify();
            GaNumMultivector.ResetAddFactorsCallCount();
            textComposer
            .AppendLineAtNewLine("Difference, Lookup CoefSums: ")
            .AppendLine(callsCount)
            //.AppendLine(factorsCount)
            .AppendLine(diff);


            return(textComposer.ToString());
        }