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); }
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()); }
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]; }
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()); }
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()); }