private static MarkdownTable CreateTable(int n)
        {
            var gaSpaceDim = n.ToGaSpaceDimension();
            var idsList    = GMacMathUtils.BasisBladeIDs(n).ToArray();

            var mdOverheadTable = new MarkdownTable();
            var firstColumn     = mdOverheadTable.AddColumn("op", MarkdownTableColumnAlignment.Left);

            firstColumn.AddRange(
                idsList
                .Skip(1)
                .Select(termsCount => termsCount + " Terms")
                );

            var newTreeOverheadColumn = mdOverheadTable.AddColumn(
                "New Tree",
                MarkdownTableColumnAlignment.Right,
                "New Binary Tree"
                );

            var hashOverheadColumn = mdOverheadTable.AddColumn(
                "Hash",
                MarkdownTableColumnAlignment.Right,
                "Hash Table"
                );

            var treeOverheadColumn = mdOverheadTable.AddColumn(
                "Tree",
                MarkdownTableColumnAlignment.Right,
                "Binary Tree"
                );

            var arrayOverheadColumn = mdOverheadTable.AddColumn(
                "Array",
                MarkdownTableColumnAlignment.Right,
                "Array"
                );

            for (var termsCount = 1; termsCount < gaSpaceDim; termsCount++)
            {
                var sizeInfo = new MultivectorSizeInfo(
                    gaSpaceDim,
                    idsList.Take(termsCount)
                    );

                newTreeOverheadColumn.Add(sizeInfo.NewTreeOverheadPerTerm.ToString(LongFmt));
                hashOverheadColumn.Add(sizeInfo.HashOverheadPerTerm.ToString(LongFmt));
                treeOverheadColumn.Add(sizeInfo.TreeOverheadPerTerm.ToString(LongFmt));
                arrayOverheadColumn.Add(sizeInfo.ArrayOverheadPerTerm.ToString(LongFmt));
            }

            return(mdOverheadTable);
        }
Exemple #2
0
        public static MarkdownTable ToMarkdownTable <T>(this IEnumerable <T> items, bool useAsColumnTitles)
        {
            var table     = new MarkdownTable();
            var itemsText = items.Select(r => r.ToString()).ToArray();

            if (useAsColumnTitles)
            {
                var c = 0;
                foreach (var item in itemsText)
                {
                    table.AddColumn((c++).ToString(), item);
                }
            }

            var column = table.AddColumn("0");

            column.AddRange(itemsText);

            return(table);
        }
Exemple #3
0
        public static MarkdownTable ToMarkdownTable <T>(params T[] items)
        {
            var rowCount = items.Length;
            var table    = new MarkdownTable();

            var column = table.AddColumn("0");

            for (var r = 0; r < rowCount; r++)
            {
                column.Add(items[r].ToString());
            }

            return(table);
        }
Exemple #4
0
        public MarkdownTable ToMarkdownTable()
        {
            var mdComposer = new MarkdownTable();

            foreach (var term in _coefSumsTable)
            {
                var mdColumn = mdComposer.AddColumn(
                    term.Key.BasisBladeIndexedName(),
                    MarkdownTableColumnAlignment.Left,
                    term.Key.BasisBladeIndexedName()
                    );

                mdColumn.AddRange(term.Value.TermsText);
            }

            return(mdComposer);
        }
Exemple #5
0
        public static MarkdownTable ToMarkdownTable <T>(this T[,] items)
        {
            var rowCount = items.GetUpperBound(0);
            var colCount = items.GetUpperBound(1);
            var table    = new MarkdownTable();

            for (var c = 0; c < colCount; c++)
            {
                var column = table.AddColumn(c.ToString());

                for (var r = 0; r < rowCount; r++)
                {
                    column.Add(items[r, c].ToString());
                }
            }

            return(table);
        }
        public override string ToString()
        {
            var composer = new MarkdownComposer();

            composer
            .AppendHeader("Source Text:", 2)
            .AppendLine(SourceText)
            .AppendLine();

            composer
            .AppendHeader($"Contains messages: {ContainsMessages}", 2);

            if (ContainsMessages)
            {
                composer
                .IncreaseIndentation()
                .AppendLine(MessagesText)
                .DecreaseIndentation()
                .AppendLine();
            }

            composer
            .AppendHeader($"Contains tree root: {ContainsParseTreeRoot}", 2)
            .AppendLine();

            if (ContainsParseTreeRoot)
            {
                var nodesStack = new Stack <ParseTreeNode>();
                nodesStack.Push(ParseTreeRoot);

                var levelsStack = new Stack <int>();
                levelsStack.Push(0);

                var indexStack = new Stack <List <int> >();
                indexStack.Push(new List <int>());

                var mdTableComposer = new MarkdownTable();
                mdTableComposer.AddColumn("Path Index", MarkdownTableColumnAlignment.Left, "Path Index");
                mdTableComposer.AddColumn("Node", MarkdownTableColumnAlignment.Left, "Node");
                mdTableComposer.AddColumn("Token", MarkdownTableColumnAlignment.Left, "Token");

                while (nodesStack.Count > 0)
                {
                    var node      = nodesStack.Pop();
                    var level     = levelsStack.Pop();
                    var indexList = indexStack.Pop();

                    var indexText =
                        indexList.Concatenate(",", "[", "]");

                    var sourceTextStart  = node.Span.Location.Position;
                    var sourceTextLength = node.Span.Length;
                    var sourceText       = SourceText.Substring(sourceTextStart, sourceTextLength);

                    mdTableComposer[0].Add(indexText);
                    mdTableComposer[1].Add("".PadLeft(level * 2) + node);
                    mdTableComposer[2].Add(node.FindTokenAndGetText());
                    //mdTableComposer[2].Add(sourceText);

                    if (node.ChildNodes.Count == 0)
                    {
                        continue;
                    }

                    var childLevel = level + 1;
                    var childNodes =
                        ((IEnumerable <ParseTreeNode>)node.ChildNodes).Reverse();

                    var childIndex = node.ChildNodes.Count - 1;
                    foreach (var childNode in childNodes)
                    {
                        nodesStack.Push(childNode);
                        levelsStack.Push(childLevel);

                        var childIndexList = new List <int>(indexList)
                        {
                            childIndex
                        };
                        indexStack.Push(childIndexList);

                        childIndex--;
                    }
                }

                composer.AppendAtNewLine(mdTableComposer.ToString());
            }

            return(composer.ToString());
        }
        private void ProjectiveTables()
        {
            MdSparsityTable = new MarkdownTable();
            var firstColumn = MdSparsityTable.AddColumn("op", MarkdownTableColumnAlignment.Left);

            firstColumn.Add("Geometric Product - Multivectors");
            firstColumn.Add("Geometric Product - Terms");

            firstColumn.Add("Scalar Product - Multivectors");
            firstColumn.Add("Scalar Product - Terms");

            firstColumn.Add("Left Contraction Product - Multivectors");
            firstColumn.Add("Left Contraction Product - Terms");


            MdSizeTable = new MarkdownTable();
            firstColumn = MdSizeTable.AddColumn("op", MarkdownTableColumnAlignment.Left);
            firstColumn.Add("Geometric Product - Hash");
            firstColumn.Add("Geometric Product - Tree");
            firstColumn.Add("Geometric Product - Array");
            firstColumn.Add("Geometric Product - Combinations");

            firstColumn.Add("Scalar Product - Hash");
            firstColumn.Add("Scalar Product - Tree");
            firstColumn.Add("Scalar Product - Array");
            firstColumn.Add("Scalar Product - Combinations");

            firstColumn.Add("Left Contraction Product - Hash");
            firstColumn.Add("Left Contraction Product - Tree");
            firstColumn.Add("Left Contraction Product - Array");
            firstColumn.Add("Left Contraction Product - Combinations");

            for (var n = MinVSpaceDimension; n <= MaxVSpaceDimension; n++)
            {
                Console.Out.WriteLine("Projective Frame " + n);
                Frame = GaSymFrame.CreateProjective(n);

                var sparsityColumn = MdSparsityTable.AddColumn(
                    "n" + n,
                    MarkdownTableColumnAlignment.Right,
                    n.ToString()
                    );

                var sizeColumn = MdSizeTable.AddColumn(
                    "n" + n,
                    MarkdownTableColumnAlignment.Right,
                    n.ToString()
                    );

                var t = GpHashTableSize();
                sparsityColumn.Add(t.Item2.ToString(LongFmt));
                sparsityColumn.Add(t.Item3.ToString(LongFmt));
                sizeColumn.Add(t.Item1.ToString(LongFmt));
                sizeColumn.Add(GpTreeTableSize().ToString(LongFmt));
                sizeColumn.Add(GpArrayTableSize().ToString(LongFmt));
                sizeColumn.Add(GpCoefSumsTableSize().ToString(LongFmt));

                t = SpSparseTableSize();
                sparsityColumn.Add(t.Item2.ToString(LongFmt));
                sparsityColumn.Add(t.Item3.ToString(LongFmt));
                sizeColumn.Add(t.Item1.ToString(LongFmt));
                sizeColumn.Add(SpTreeTableSize().ToString(LongFmt));
                sizeColumn.Add(SpArrayTableSize().ToString(LongFmt));
                sizeColumn.Add(SpCoefSumsTableSize().ToString(LongFmt));

                t = LcpHashTableSize();
                sparsityColumn.Add(t.Item2.ToString(LongFmt));
                sparsityColumn.Add(t.Item3.ToString(LongFmt));
                sizeColumn.Add(t.Item1.ToString(LongFmt));
                sizeColumn.Add(LcpTreeTableSize().ToString(LongFmt));
                sizeColumn.Add(LcpArrayTableSize().ToString(LongFmt));
                sizeColumn.Add(LcpCoefSumsTableSize().ToString(LongFmt));
            }
        }