From 6d8e7d68e483a06f23a32d6891529430eef856c8 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 19 Oct 2010 15:25:00 +0200 Subject: factorize CSS code, make use of the "manual" class when appropriate, clean the style of the big linear algebra table --- doc/C00_QuickStartGuide.dox | 2 +- doc/I02_HiPerformance.dox | 8 +-- doc/I11_Aliasing.dox | 8 +-- doc/TopicLinearAlgebraDecompositions.dox | 36 ++++++------- doc/eigendoxy.css | 86 +++++++++++++++++++------------- 5 files changed, 79 insertions(+), 61 deletions(-) (limited to 'doc') diff --git a/doc/C00_QuickStartGuide.dox b/doc/C00_QuickStartGuide.dox index 7d34f4806..62b7f6061 100644 --- a/doc/C00_QuickStartGuide.dox +++ b/doc/C00_QuickStartGuide.dox @@ -45,7 +45,7 @@ The following three statements sets the other three entries. The final line outp Here is another example, which combines matrices with vectors. Concentrate on the left-hand program for now; we will talk about the right-hand program later. - +
Size set at run time:Size set at compile time:
\include QuickStart_example2_dynamic.cpp diff --git a/doc/I02_HiPerformance.dox b/doc/I02_HiPerformance.dox index 49452a0bc..ac1c2ca2b 100644 --- a/doc/I02_HiPerformance.dox +++ b/doc/I02_HiPerformance.dox @@ -42,7 +42,7 @@ which exactly matches our GEMM routine. \subsection GEMM_Limitations Limitations Unfortunately, this simplification mechanism is not perfect yet and not all expressions which could be handled by a single GEMM-like call are correctly detected. - +
@@ -60,7 +60,7 @@ m1.noalias() += m2 * m3; \endcode - + - + so that no temporary is required. (tip: for very small fixed size matrix it is slighlty better to rewrite it like this: m1.noalias() = m2 * m3; m1 += m4; - +
Not optimal expression Evaluated as Use .noalias() to tell Eigen the result and right-hand-sides do not alias. Otherwise the product m2 * m3 is evaluated into a temporary.
\code @@ -83,7 +83,7 @@ m1.noalias() += m3.adjoint() This is because the product expression has the EvalBeforeNesting bit which enforces the evaluation of the product by the Tranpose expression.
\code m1 = m1 + m2 * m3; \endcode \code @@ -107,7 +107,7 @@ m1.noalias() += m2 * m3; \endcode
\code m1.noalias() += (s1*m2).block(..) * m3; \endcode \code diff --git a/doc/I11_Aliasing.dox b/doc/I11_Aliasing.dox index 8b08c390c..302575368 100644 --- a/doc/I11_Aliasing.dox +++ b/doc/I11_Aliasing.dox @@ -115,14 +115,14 @@ If an xxxInPlace() function is available, then it is best to use it, because it are doing. This may also allow Eigen to optimize more aggressively. These are some of the xxxInPlace() functions provided: - +
- + - + - +
Original functionIn-place function
MatrixBase::adjoint() MatrixBase::adjointInPlace()
DenseBase::reverse() DenseBase::reverseInPlace()
DenseBase::reverse() DenseBase::reverseInPlace()
LDLT::solve() LDLT::solveInPlace()
LLT::solve() LLT::solveInPlace()
LLT::solve() LLT::solveInPlace()
TriangularView::solve() TriangularView::solveInPlace()
DenseBase::transpose() DenseBase::transposeInPlace()
DenseBase::transpose() DenseBase::transposeInPlace()
diff --git a/doc/TopicLinearAlgebraDecompositions.dox b/doc/TopicLinearAlgebraDecompositions.dox index 203a05dd8..0e410efcb 100644 --- a/doc/TopicLinearAlgebraDecompositions.dox +++ b/doc/TopicLinearAlgebraDecompositions.dox @@ -5,24 +5,24 @@ namespace Eigen { \section TopicLinAlgBigTable Catalogue of decompositions offered by Eigen - +
- - - + + + - - - - - - - - - + + + + + + + + + @@ -37,7 +37,7 @@ namespace Eigen { - + @@ -61,7 +61,7 @@ namespace Eigen { - + @@ -85,7 +85,7 @@ namespace Eigen { - + @@ -109,7 +109,7 @@ namespace Eigen { - + @@ -171,7 +171,7 @@ namespace Eigen { - + diff --git a/doc/eigendoxy.css b/doc/eigendoxy.css index 43a86148b..7a5deaec6 100644 --- a/doc/eigendoxy.css +++ b/doc/eigendoxy.css @@ -700,13 +700,11 @@ img { border: 0; } -/* class for exemple / output tables */ -table { - max-width:100%; -} +/* Common style for all Eigen's tables */ -table.example { +table.example, table.manual, table.manual-vl { + max-width:100%; border-collapse: collapse; border-style: solid; border-width: 1px; @@ -714,18 +712,51 @@ table.example { font-size: 1em; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } -table.example th { +table.example th, table.manual th, table.manual-vl th { padding: 0.5em 0.5em 0.5em 0.5em; text-align: left; padding-right: 1em; - background-color: #F2F1DC; + color: #555555; + background-color: #F4F4E5; background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.3,#FFFFFF), color-stop(0.30,#FFFFFF), color-stop(0.98,#F4F4E5), to(#ECECDE)); background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 30%, #F4F4E5 98%, #ECECDE); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#F4F4E5'); +} + +table.example td, table.manual td, table.manual-vl td { + vertical-align:top; + border-width: 1px; + border-color: #cccccc; +} + +/* header of headers */ +table th.meta { + text-align:center; + font-size: 1.2em; + background-color:#FFFFFF; +} + +/* intermediate header */ +table th.inter { + text-align:left; + background-color:#FFFFFF; + background-image:none; + border-style:solid solid solid solid; + border-width: 1px; + border-color: #cccccc; +} + +/** class for exemple / output tables **/ + +table.example { +} + +table.example th { } table.example td { @@ -733,48 +764,35 @@ table.example td { vertical-align:top; } - /* standard class for the manual */ -table.manual { - border-collapse: collapse; - border-style: solid; - border-width: 1px; - border-color: #cccccc; - font-size: 1em; - +table.manual, table.manual-vl { padding: 0.2em 0em 0.5em 0em; - - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } -table.manual th { - padding: 0.5em 0.5em 0.5em 0.5em; +table.manual th, table.manual-vl th { margin: 0em 0em 0.3em 0em; - text-align: left; - color: #555555; - padding-right: 1em; - background-color: #F4F4E5; - - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.3,#FFFFFF), color-stop(0.30,#FFFFFF), color-stop(0.98,#F4F4E5), to(#ECECDE)); - background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 30%, #F4F4E5 98%, #ECECDE); } -table.manual td { +table.manual td, table.manual-vl td { padding: 0.3em 0.5em 0.3em 0.5em; vertical-align:top; border-width: 1px; - border-color: #cccccc; } -table.manual td.alt, table.manual tr.alt { - /*padding: 0.3em 0.5em 0.3em 0.5em; - vertical-align:top;*/ +table.manual td.alt, table.manual tr.alt, table.manual-vl td.alt, table.manual-vl tr.alt { background-color: #F4F4E5; } +table.manual-vl th, table.manual-vl td, table.manual-vl td.alt { + border-color: #cccccc; + border-width: 1px; + border-style: none solid none solid; +} + +table.manual-vl th.inter { + border-style: solid solid solid solid; +} h2 { margin-top:2em; -- cgit v1.2.3
Generic information, not Eigen-specificEigen-specificGeneric information, not Eigen-specificEigen-specific
DecompositionRequirements on the matrixSpeedAlgorithm reliability and accuracyRank-revealingAllows to compute (besides linear solving)Linear solver provided by EigenMaturity of Eigen's implementationOptimizationsDecompositionRequirements on the matrixSpeedAlgorithm reliability and accuracyRank-revealingAllows to compute (besides linear solving)Linear solver provided by EigenMaturity of Eigen's implementationOptimizations
Blocking
FullPivLU - SlowBlocking
ColPivHouseholderQR - Fast-
LLT Positive definite Very fastSoon: blocking
\n Singular values and eigenvalues decompositions
\n Singular values and eigenvalues decompositions
JacobiSVD (two-sided)-
\n Helper decompositions
\n Helper decompositions
RealSchur