- ID de l'analyse :
- 1c803923-67cf-4fb2-a58b-b2a397bac985Terminée
- URL soumise :
- https://eigen.tuxfamily.org/dox/classEigen_1_1FullPivLU.html
- Fin du rapport :
Liens : 1 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
http://www.doxygen.org/index.html |
Variables JavaScript : 77 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
$ | function |
jQuery | function |
toggleVisibility | function |
updateStripes | function |
toggleLevel | function |
toggleFolder | function |
Messages de journal de console : 4 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
error | network |
|
warning | other |
|
warning | other |
|
error | network |
|
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="generator" content="Doxygen 1.9.1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Eigen: Eigen::FullPivLU< MatrixType_ > Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config;executed=true">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js" id=""></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="eigendoxy.css" rel="stylesheet" type="text/css">
<!-- -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
<script id="navtreeindex2" type="text/javascript" src="navtreeindex2.js"></script><script id="modules" type="text/javascript" src="modules.js"></script><script id="group__DenseLinearSolvers__chapter" type="text/javascript" src="group__DenseLinearSolvers__chapter.js"></script><style type="text/css">.MathJax_Preview {color: #888}
#MathJax_Message {position: fixed; left: 1em; bottom: 1.5em; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
.MathJax_Error {color: #CC0000; font-style: italic}
</style><script id="group__DenseLinearSolvers__Reference" type="text/javascript" src="group__DenseLinearSolvers__Reference.js"></script><script id="group__LU__Module" type="text/javascript" src="group__LU__Module.js"></script><style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
.MathJax_Menu_Button .MathJax_Hover_Arrow {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: 'Courier New',Courier; font-size: 9px; color: #F0F0F0}
.MathJax_Menu_Button .MathJax_Hover_Arrow span {display: block; background-color: #AAA; border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px}
.MathJax_Hover_Arrow:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_Hover_Arrow:hover span {background-color: #CCC!important}
</style><style type="text/css">.MathJax_Display {text-align: center; margin: 1em 0em; position: relative; display: block!important; text-indent: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; width: 100%}
.MathJax .merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MathJax .MJX-monospace {font-family: monospace}
.MathJax .MJX-sans-serif {font-family: sans-serif}
#MathJax_Tooltip {background-color: InfoBackground; color: InfoText; border: 1px solid black; box-shadow: 2px 2px 5px #AAAAAA; -webkit-box-shadow: 2px 2px 5px #AAAAAA; -moz-box-shadow: 2px 2px 5px #AAAAAA; -khtml-box-shadow: 2px 2px 5px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true'); padding: 3px 4px; z-index: 401; position: absolute; left: 0; top: 0; width: auto; height: auto; display: none}
.MathJax {display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; padding: 0; margin: 0}
.MathJax:focus, body :focus .MathJax {display: inline-table}
.MathJax.MathJax_FullWidth {text-align: center; display: table-cell!important; width: 10000em!important}
.MathJax img, .MathJax nobr, .MathJax a {border: 0; padding: 0; margin: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; vertical-align: 0; line-height: normal; text-decoration: none}
img.MathJax_strut {border: 0!important; padding: 0!important; margin: 0!important; vertical-align: 0!important}
.MathJax span {display: inline; position: static; border: 0; padding: 0; margin: 0; vertical-align: 0; line-height: normal; text-decoration: none}
.MathJax nobr {white-space: nowrap!important}
.MathJax img {display: inline!important; float: none!important}
.MathJax * {transition: none; -webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none}
.MathJax_Processing {visibility: hidden; position: fixed; width: 0; height: 0; overflow: hidden}
.MathJax_Processed {display: none!important}
.MathJax_ExBox {display: block!important; overflow: hidden; width: 1px; height: 60ex; min-height: 0; max-height: none}
.MathJax .MathJax_EmBox {display: block!important; overflow: hidden; width: 1px; height: 60em; min-height: 0; max-height: none}
.MathJax_LineBox {display: table!important}
.MathJax_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}
.MathJax .MathJax_HitBox {cursor: text; background: white; opacity: 0; filter: alpha(opacity=0)}
.MathJax .MathJax_HitBox * {filter: none; opacity: 1; background: transparent}
#MathJax_Tooltip * {filter: none; opacity: 1; background: transparent}
@font-face {font-family: MathJax_Main; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Main-Regular.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Main-bold; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Main-Bold.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Main-italic; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Main-Italic.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Math-italic; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Math-Italic.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Caligraphic; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Regular.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Size1; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Size1-Regular.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Size2; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Size2-Regular.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Size3; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Size3-Regular.otf?V=2.7.1') format('opentype')}
@font-face {font-family: MathJax_Size4; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_Size4-Regular.otf?V=2.7.1') format('opentype')}
</style><style type="text/css">@font-face {font-family: MathJax_AMS; src: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff?V=2.7.1') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf?V=2.7.1') format('opentype')}
</style></head>
<body><div style="visibility: hidden; overflow: hidden; position: absolute; top: 0px; height: 1px; width: auto; padding: 0px; border: 0px; margin: 0px; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal;"><div id="MathJax_Hidden"></div></div><div id="MathJax_Message" style="display: none;"></div>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="Eigen_Silly_Professor_64x64.png"></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname"><a href="http://eigen.tuxfamily.org">Eigen</a>
<span id="projectnumber">3.4.90 (git rev 67eeba6e720c5745abc77ae6c92ce0a44aa7b7ae)</span>
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt="">
<input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)">
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable" style="height: 491px;">
<div id="nav-tree" style="height: 245.5px;">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync" style="top: 5px;"><img src="sync_on.png" title="click to disable panel synchronisation"></div>
<ul style="display: block;"><li><div class="item"><a href="javascript:void(0)"><span class="arrow">▼</span></a><span class="label"><a class="index.html" href="index.html">Eigen</a></span></div><ul class="children_ul" style="display: block;"><li><div class="item"><span class="arrow" style="width: 16px;"> </span><span class="label"><a class="index.html" href="index.html">Overview</a></span></div></li><li><div class="item"><span class="arrow" style="width: 16px;"> </span><span class="label"><a class="GettingStarted.html" href="GettingStarted.html">Getting started</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 0px;">▼</span></a><span class="label"><a class="modules.html" href="modules.html">Chapters</a></span></div><ul class="children_ul" style="display: block;"><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 16px;">►</span></a><span class="label"><a class="group__DenseMatrixManipulation__chapter.html" href="group__DenseMatrixManipulation__chapter.html">Dense matrix and array manipulation</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 16px;">▼</span></a><span class="label"><a class="group__DenseLinearSolvers__chapter.html" href="group__DenseLinearSolvers__chapter.html">Dense linear problems and decompositions</a></span></div><ul class="children_ul" style="display: block;"><li><div class="item"><span class="arrow" style="width: 48px;"> </span><span class="label"><a class="group__TutorialLinearAlgebra.html" href="group__TutorialLinearAlgebra.html">Linear algebra and decompositions</a></span></div></li><li><div class="item"><span class="arrow" style="width: 48px;"> </span><span class="label"><a class="group__TopicLinearAlgebraDecompositions.html" href="group__TopicLinearAlgebraDecompositions.html">Catalogue of dense decompositions</a></span></div></li><li><div class="item"><span class="arrow" style="width: 48px;"> </span><span class="label"><a class="group__LeastSquares.html" href="group__LeastSquares.html">Solving linear least squares systems</a></span></div></li><li><div class="item"><span class="arrow" style="width: 48px;"> </span><span class="label"><a class="group__InplaceDecomposition.html" href="group__InplaceDecomposition.html">Inplace matrix decompositions</a></span></div></li><li><div class="item"><span class="arrow" style="width: 48px;"> </span><span class="label"><a class="group__DenseDecompositionBenchmark.html" href="group__DenseDecompositionBenchmark.html">Benchmark of dense decompositions</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 32px;">▼</span></a><span class="label"><a class="group__DenseLinearSolvers__Reference.html" href="group__DenseLinearSolvers__Reference.html">Reference</a></span></div><ul class="children_ul" style="display: block;"><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 48px;">►</span></a><span class="label"><a class="group__Cholesky__Module.html" href="group__Cholesky__Module.html">Cholesky module</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 48px;">▼</span></a><span class="label"><a class="group__LU__Module.html" href="group__LU__Module.html">LU module</a></span></div><ul class="children_ul" style="display: block;"><li><div class="item selected" id="selected"><span class="arrow" style="width: 80px;"> </span><span class="label"><a class="classEigen_1_1FullPivLU.html" href="classEigen_1_1FullPivLU.html">FullPivLU</a></span></div><ul class="children_ul" style=""></ul></li><li><div class="item"><span class="arrow" style="width: 80px;"> </span><span class="label"><a class="classEigen_1_1PartialPivLU.html" href="classEigen_1_1PartialPivLU.html">PartialPivLU</a></span></div></li></ul></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 48px;">►</span></a><span class="label"><a class="group__QR__Module.html" href="group__QR__Module.html">QR module</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 48px;">►</span></a><span class="label"><a class="group__SVD__Module.html" href="group__SVD__Module.html">SVD module</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 48px;">►</span></a><span class="label"><a class="group__Eigenvalues__Module.html" href="group__Eigenvalues__Module.html">Eigenvalues module</a></span></div></li></ul></li></ul></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 16px;">►</span></a><span class="label"><a class="group__Sparse__chapter.html" href="group__Sparse__chapter.html">Sparse linear algebra</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 16px;">►</span></a><span class="label"><a class="group__Geometry__chapter.html" href="group__Geometry__chapter.html">Geometry</a></span></div></li></ul></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 0px;">►</span></a><span class="label"><a class="UserManual_CustomizingEigen.html" href="UserManual_CustomizingEigen.html">Extending/Customizing Eigen</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 0px;">►</span></a><span class="label"><a class="UserManual_Generalities.html" href="UserManual_Generalities.html">General topics</a></span></div></li><li><div class="item"><a href="javascript:void(0)"><span class="arrow" style="padding-left: 0px;">►</span></a><span class="label"><a class="annotated.html" href="annotated.html">Class List</a></span></div></li></ul></li></ul></div>
</div>
<div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle">
</div>
<div id="nav-toc" class="toc"><h3>Table of contents</h3><ul><li class="level1"><a id="link0" href="#title0" title="H2">Detailed Description</a></li><li class="level1"><a id="link1" href="#title1" title="H2">
Public Member Functions</a></li><li class="level1"><a id="link2" href="#title2" title="H2">
Additional Inherited Members</a></li><li class="level1"><a id="link3" href="#title3" title="H2">Constructor & Destructor Documentation</a></li><li class="level1"><a id="link4" href="#title4" title="H2">◆ FullPivLU() [1/4]</a></li><li class="level1"><a id="link5" href="#title5" title="H2">◆ FullPivLU() [2/4]</a></li><li class="level1"><a id="link6" href="#title6" title="H2">◆ FullPivLU() [3/4]</a></li><li class="level1"><a id="link7" href="#title7" title="H2">◆ FullPivLU() [4/4]</a></li><li class="level1"><a id="link8" href="#title8" title="H2">Member Function Documentation</a></li><li class="level1"><a id="link9" href="#title9" title="H2">◆ compute()</a></li><li class="level1"><a id="link10" href="#title10" title="H2">◆ determinant()</a></li><li class="level1"><a id="link11" href="#title11" title="H2">◆ dimensionOfKernel()</a></li><li class="level1"><a id="link12" href="#title12" title="H2">◆ image()</a></li><li class="level1"><a id="link13" href="#title13" title="H2">◆ inverse()</a></li><li class="level1"><a id="link14" href="#title14" title="H2">◆ isInjective()</a></li><li class="level1"><a id="link15" href="#title15" title="H2">◆ isInvertible()</a></li><li class="level1"><a id="link16" href="#title16" title="H2">◆ isSurjective()</a></li><li class="level1"><a id="link17" href="#title17" title="H2">◆ kernel()</a></li><li class="level1"><a id="link18" href="#title18" title="H2">◆ matrixLU()</a></li><li class="level1"><a id="link19" href="#title19" title="H2">◆ maxPivot()</a></li><li class="level1"><a id="link20" href="#title20" title="H2">◆ nonzeroPivots()</a></li><li class="level1"><a id="link21" href="#title21" title="H2">◆ permutationP()</a></li><li class="level1"><a id="link22" href="#title22" title="H2">◆ permutationQ()</a></li><li class="level1"><a id="link23" href="#title23" title="H2">◆ rank()</a></li><li class="level1"><a id="link24" href="#title24" title="H2">◆ rcond()</a></li><li class="level1"><a id="link25" href="#title25" title="H2">◆ reconstructedMatrix()</a></li><li class="level1"><a id="link26" href="#title26" title="H2">◆ setThreshold() [1/2]</a></li><li class="level1"><a id="link27" href="#title27" title="H2">◆ setThreshold() [2/2]</a></li><li class="level1"><a id="link28" href="#title28" title="H2">◆ solve()</a></li><li class="level1"><a id="link29" href="#title29" title="H2">◆ threshold()</a></li></ul></div><div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;"></div><div class="ui-resizable-handle ui-resizable-s" style="z-index: 90;"></div><div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index: 90;"></div></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classEigen_1_1FullPivLU.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content" style="margin-left: 256px; height: 491px;">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" onclick="searchBox.OnSelectItem(0)" href="javascript:void(0)"><span class="SelectionMark">•</span>All</a><a class="SelectItem" onclick="searchBox.OnSelectItem(1)" href="javascript:void(0)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" onclick="searchBox.OnSelectItem(2)" href="javascript:void(0)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" onclick="searchBox.OnSelectItem(3)" href="javascript:void(0)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" onclick="searchBox.OnSelectItem(4)" href="javascript:void(0)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" onclick="searchBox.OnSelectItem(5)" href="javascript:void(0)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" onclick="searchBox.OnSelectItem(6)" href="javascript:void(0)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" onclick="searchBox.OnSelectItem(7)" href="javascript:void(0)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" onclick="searchBox.OnSelectItem(8)" href="javascript:void(0)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" onclick="searchBox.OnSelectItem(9)" href="javascript:void(0)"><span class="SelectionMark"> </span>Modules</a><a class="SelectItem" onclick="searchBox.OnSelectItem(10)" href="javascript:void(0)"><span class="SelectionMark"> </span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="classEigen_1_1FullPivLU-members.html">List of all members</a> |
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle">
<div class="title">Eigen::FullPivLU< MatrixType_ > Class Template Reference<div class="ingroups"><a class="el" href="group__DenseLinearSolvers__chapter.html">Dense linear problems and decompositions</a> » <a class="el" href="group__DenseLinearSolvers__Reference.html">Reference</a> » <a class="el" href="group__LU__Module.html">LU module</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader anchor" id="title0">Detailed Description</h2>
<div class="textblock"><h3>template<typename MatrixType_><br>
class Eigen::FullPivLU< MatrixType_ ></h3>
<p>LU decomposition of a matrix with complete pivoting, and related features. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tbody><tr><td class="paramname">MatrixType_</td><td>the type of the matrix of which we are computing the LU decomposition</td></tr>
</tbody></table>
</dd>
</dl>
<p>This class represents a LU decomposition of any matrix, with complete pivoting: the matrix A is decomposed as <span class="MathJax_Preview" style="display: none;"></span><span class="MathJax" id="MathJax-Element-1-Frame" tabindex="0" style=""><nobr><span class="math" id="MathJax-Span-1" style="width: 8.727em; display: inline-block;"><span style="display: inline-block; position: relative; width: 7.146em; height: 0px; font-size: 122%;"><span style="position: absolute; clip: rect(1.174em, 1007.15em, 2.52em, -999.997em); top: -2.163em; left: 0em;"><span class="mrow" id="MathJax-Span-2"><span class="mi" id="MathJax-Span-3" style="font-family: MathJax_Math-italic;">A</span><span class="mo" id="MathJax-Span-4" style="font-family: MathJax_Main; padding-left: 0.296em;">=</span><span class="msubsup" id="MathJax-Span-5" style="padding-left: 0.296em;"><span style="display: inline-block; position: relative; width: 1.818em; height: 0px;"><span style="position: absolute; clip: rect(3.106em, 1000.76em, 4.16em, -999.997em); top: -3.978em; left: 0em;"><span class="mi" id="MathJax-Span-6" style="font-family: MathJax_Math-italic;">P<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.12em;"></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span><span style="position: absolute; top: -4.33em; left: 0.823em;"><span class="texatom" id="MathJax-Span-7"><span class="mrow" id="MathJax-Span-8"><span class="mo" id="MathJax-Span-9" style="font-size: 70.7%; font-family: MathJax_Main;">−</span><span class="mn" id="MathJax-Span-10" style="font-size: 70.7%; font-family: MathJax_Main;">1</span></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span></span></span><span class="mi" id="MathJax-Span-11" style="font-family: MathJax_Math-italic;">L</span><span class="mi" id="MathJax-Span-12" style="font-family: MathJax_Math-italic;">U<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.061em;"></span></span><span class="msubsup" id="MathJax-Span-13"><span style="display: inline-block; position: relative; width: 1.759em; height: 0px;"><span style="position: absolute; clip: rect(3.106em, 1000.76em, 4.335em, -999.997em); top: -3.978em; left: 0em;"><span class="mi" id="MathJax-Span-14" style="font-family: MathJax_Math-italic;">Q</span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span><span style="position: absolute; top: -4.33em; left: 0.823em;"><span class="texatom" id="MathJax-Span-15"><span class="mrow" id="MathJax-Span-16"><span class="mo" id="MathJax-Span-17" style="font-size: 70.7%; font-family: MathJax_Main;">−</span><span class="mn" id="MathJax-Span-18" style="font-size: 70.7%; font-family: MathJax_Main;">1</span></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.169em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.282em; border-left: 0px solid; width: 0px; height: 1.432em;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-1"> A = P^{-1} L U Q^{-1} </script> where L is unit-lower-triangular, U is upper-triangular, and P and Q are permutation matrices. This is a rank-revealing LU decomposition. The eigenvalues (diagonal coefficients) of U are sorted in such a way that any zeros are at the end.</p>
<p>This decomposition provides the generic approach to solving systems of linear equations, computing the rank, invertibility, inverse, kernel, and determinant.</p>
<p>This LU decomposition is very stable and well tested with large matrices. However there are use cases where the SVD decomposition is inherently more stable and/or flexible. For example, when computing the kernel of a matrix, working with the SVD allows to select the smallest singular values of the matrix, something that the LU decomposition doesn't see.</p>
<p>The data of the LU decomposition can be directly accessed through the methods <a class="el" href="classEigen_1_1FullPivLU.html#a3e7d7a53f5b7c4ba99013fe171ac5654">matrixLU()</a>, <a class="el" href="classEigen_1_1FullPivLU.html#a3eb3aa0c37e06ffaf0c07b1eeb0995cc">permutationP()</a>, <a class="el" href="classEigen_1_1FullPivLU.html#a25b70ffbc88d804981c8874da55e7419">permutationQ()</a>.</p>
<p>As an example, here is how the original matrix can be retrieved: </p><div class="fragment"><div class="line"><span class="keyword">typedef</span> Matrix<double, 5, 3> Matrix5x3;</div>
<div class="line"><span class="keyword">typedef</span> Matrix<double, 5, 5> Matrix5x5;</div>
<div class="line">Matrix5x3 m = Matrix5x3::Random();</div>
<div class="line">cout << <span class="stringliteral">"Here is the matrix m:"</span> << endl << m << endl;</div>
<div class="line"><a class="code" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU<Matrix5x3></a> lu(m);</div>
<div class="line">cout << <span class="stringliteral">"Here is, up to permutations, its LU decomposition matrix:"</span></div>
<div class="line"> << endl << lu.matrixLU() << endl;</div>
<div class="line">cout << <span class="stringliteral">"Here is the L part:"</span> << endl;</div>
<div class="line">Matrix5x5 l = Matrix5x5::Identity();</div>
<div class="line">l.block<5,3>(0,0).triangularView<StrictlyLower>() = lu.matrixLU();</div>
<div class="line">cout << l << endl;</div>
<div class="line">cout << <span class="stringliteral">"Here is the U part:"</span> << endl;</div>
<div class="line">Matrix5x3 u = lu.matrixLU().triangularView<<a class="code" href="group__enums.html#gga39e3366ff5554d731e7dc8bb642f83cdafca2ccebb604f171656deb53e8c083c1">Upper</a>>();</div>
<div class="line">cout << u << endl;</div>
<div class="line">cout << <span class="stringliteral">"Let us now reconstruct the original matrix m:"</span> << endl;</div>
<div class="line">cout << lu.permutationP().inverse() * l * u * lu.permutationQ().inverse() << endl;</div>
<div class="ttc" id="aclassEigen_1_1FullPivLU_html"><div class="ttname"><a href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a></div><div class="ttdoc">LU decomposition of a matrix with complete pivoting, and related features.</div><div class="ttdef"><b>Definition:</b> FullPivLU.h:64</div></div>
<div class="ttc" id="agroup__enums_html_gga39e3366ff5554d731e7dc8bb642f83cdafca2ccebb604f171656deb53e8c083c1"><div class="ttname"><a href="group__enums.html#gga39e3366ff5554d731e7dc8bb642f83cdafca2ccebb604f171656deb53e8c083c1">Eigen::Upper</a></div><div class="ttdeci">@ Upper</div><div class="ttdef"><b>Definition:</b> Constants.h:213</div></div>
</div><!-- fragment --><p> Output: </p><pre class="fragment">Here is the matrix m:
0.68 -0.605 -0.0452
-0.211 -0.33 0.258
0.566 0.536 -0.27
0.597 -0.444 0.0268
0.823 0.108 0.904
Here is, up to permutations, its LU decomposition matrix:
0.904 0.823 0.108
-0.299 0.812 0.569
-0.05 0.888 -1.1
0.0296 0.705 0.768
0.285 -0.549 0.0436
Here is the L part:
1 0 0 0 0
-0.299 1 0 0 0
-0.05 0.888 1 0 0
0.0296 0.705 0.768 1 0
0.285 -0.549 0.0436 0 1
Here is the U part:
0.904 0.823 0.108
0 0.812 0.569
0 0 -1.1
0 0 0
0 0 0
Let us now reconstruct the original matrix m:
0.68 -0.605 -0.0452
-0.211 -0.33 0.258
0.566 0.536 -0.27
0.597 -0.444 0.0268
0.823 0.108 0.904
</pre><p>This class supports the <a class="el" href="group__InplaceDecomposition.html">inplace decomposition </a> mechanism.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1MatrixBase.html#a25da97d31acab0ee5d9d13bdbb0569da">MatrixBase::fullPivLu()</a>, <a class="el" href="classEigen_1_1MatrixBase.html#a7ad8f77004bb956b603bb43fd2e3c061">MatrixBase::determinant()</a>, <a class="el" href="classEigen_1_1MatrixBase.html#a7712eb69e8ea3c8f7b8da1c44dbdeebf">MatrixBase::inverse()</a> </dd></dl>
</div><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"> Inheritance diagram for Eigen::FullPivLU< MatrixType_ >:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classEigen_1_1FullPivLU__inherit__graph.png" border="0" usemap="#aEigen_1_1FullPivLU_3_01MatrixType___01_4_inherit__map" alt="Inheritance graph"></div>
<map name="aEigen_1_1FullPivLU_3_01MatrixType___01_4_inherit__map" id="aEigen_1_1FullPivLU_3_01MatrixType___01_4_inherit__map">
<area shape="rect" title="LU decomposition of a matrix with complete pivoting, and related features." alt="" coords="7,535,198,949">
<area shape="rect" href="classEigen_1_1SolverBase.html" title=" " alt="" coords="7,292,198,487">
<area shape="rect" href="structEigen_1_1EigenBase.html" title=" " alt="" coords="5,5,200,244">
</map>
</div>
<table class="memberdecls">
<tbody><tr class="heading"><td colspan="2"><h2 class="groupheader anchor" id="title1"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a396f63d737e0613f41004e30be8fe3cf"><td class="memTemplParams" colspan="2">template<typename InputType > </td></tr>
<tr class="memitem:a396f63d737e0613f41004e30be8fe3cf"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a396f63d737e0613f41004e30be8fe3cf">compute</a> (const <a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > &matrix)</td></tr>
<tr class="separator:a396f63d737e0613f41004e30be8fe3cf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a71654e5c60a26407ecccfaa5b34bb0aa"><td class="memItemLeft" align="right" valign="top">internal::traits< MatrixType >::Scalar </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a71654e5c60a26407ecccfaa5b34bb0aa">determinant</a> () const</td></tr>
<tr class="separator:a71654e5c60a26407ecccfaa5b34bb0aa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a358cec49914ec3cd3707e6b79ae32d0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a358cec49914ec3cd3707e6b79ae32d0b">dimensionOfKernel</a> () const</td></tr>
<tr class="separator:a358cec49914ec3cd3707e6b79ae32d0b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af225528d1c6e623a2b1dce091907d13e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#af225528d1c6e623a2b1dce091907d13e">FullPivLU</a> ()</td></tr>
<tr class="memdesc:af225528d1c6e623a2b1dce091907d13e"><td class="mdescLeft"> </td><td class="mdescRight">Default Constructor. <a href="classEigen_1_1FullPivLU.html#af225528d1c6e623a2b1dce091907d13e">More...</a><br></td></tr>
<tr class="separator:af225528d1c6e623a2b1dce091907d13e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a31a6a984478a9f721f367667fe4c5ab1"><td class="memTemplParams" colspan="2">template<typename InputType > </td></tr>
<tr class="memitem:a31a6a984478a9f721f367667fe4c5ab1"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a31a6a984478a9f721f367667fe4c5ab1">FullPivLU</a> (const <a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > &matrix)</td></tr>
<tr class="separator:a31a6a984478a9f721f367667fe4c5ab1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a3e903b9f401e3fc5d1ca7c6951c76185"><td class="memTemplParams" colspan="2">template<typename InputType > </td></tr>
<tr class="memitem:a3e903b9f401e3fc5d1ca7c6951c76185"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a3e903b9f401e3fc5d1ca7c6951c76185">FullPivLU</a> (<a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > &matrix)</td></tr>
<tr class="memdesc:a3e903b9f401e3fc5d1ca7c6951c76185"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a LU factorization from a given matrix. <a href="classEigen_1_1FullPivLU.html#a3e903b9f401e3fc5d1ca7c6951c76185">More...</a><br></td></tr>
<tr class="separator:a3e903b9f401e3fc5d1ca7c6951c76185"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae83ebd2a24088f04e3ac835b0dc001e1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#ae83ebd2a24088f04e3ac835b0dc001e1">FullPivLU</a> (<a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> rows, <a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> cols)</td></tr>
<tr class="memdesc:ae83ebd2a24088f04e3ac835b0dc001e1"><td class="mdescLeft"> </td><td class="mdescRight">Default Constructor with memory preallocation. <a href="classEigen_1_1FullPivLU.html#ae83ebd2a24088f04e3ac835b0dc001e1">More...</a><br></td></tr>
<tr class="separator:ae83ebd2a24088f04e3ac835b0dc001e1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa8cbf984141608e89b503125690d24d4"><td class="memItemLeft" align="right" valign="top">const internal::image_retval< <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#aa8cbf984141608e89b503125690d24d4">image</a> (const MatrixType &originalMatrix) const</td></tr>
<tr class="separator:aa8cbf984141608e89b503125690d24d4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a34afc848d7fb22c7a56a053d3807d2cd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1Inverse.html">Inverse</a>< <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a34afc848d7fb22c7a56a053d3807d2cd">inverse</a> () const</td></tr>
<tr class="separator:a34afc848d7fb22c7a56a053d3807d2cd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a90dd33c632ba890175f61eac054bde98"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a90dd33c632ba890175f61eac054bde98">isInjective</a> () const</td></tr>
<tr class="separator:a90dd33c632ba890175f61eac054bde98"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0ee7753645eb31bcbd5faa459168b294"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a0ee7753645eb31bcbd5faa459168b294">isInvertible</a> () const</td></tr>
<tr class="separator:a0ee7753645eb31bcbd5faa459168b294"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af42b9cb6356658b92b2d1006aee73fc4"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#af42b9cb6356658b92b2d1006aee73fc4">isSurjective</a> () const</td></tr>
<tr class="separator:af42b9cb6356658b92b2d1006aee73fc4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:adfc1e27ff60287be5313b5efc3559308"><td class="memItemLeft" align="right" valign="top">const internal::kernel_retval< <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#adfc1e27ff60287be5313b5efc3559308">kernel</a> () const</td></tr>
<tr class="separator:adfc1e27ff60287be5313b5efc3559308"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a3e7d7a53f5b7c4ba99013fe171ac5654"><td class="memItemLeft" align="right" valign="top">const MatrixType & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a3e7d7a53f5b7c4ba99013fe171ac5654">matrixLU</a> () const</td></tr>
<tr class="separator:a3e7d7a53f5b7c4ba99013fe171ac5654"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a05cedf8dca6394355ef64c1ea1374b4a"><td class="memItemLeft" align="right" valign="top">RealScalar </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a05cedf8dca6394355ef64c1ea1374b4a">maxPivot</a> () const</td></tr>
<tr class="separator:a05cedf8dca6394355ef64c1ea1374b4a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aad90c46ea08618ae485fce4e5f4677d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#aad90c46ea08618ae485fce4e5f4677d0">nonzeroPivots</a> () const</td></tr>
<tr class="separator:aad90c46ea08618ae485fce4e5f4677d0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a3eb3aa0c37e06ffaf0c07b1eeb0995cc"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1PermutationMatrix.html">PermutationPType</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a3eb3aa0c37e06ffaf0c07b1eeb0995cc">permutationP</a> () const</td></tr>
<tr class="separator:a3eb3aa0c37e06ffaf0c07b1eeb0995cc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a25b70ffbc88d804981c8874da55e7419"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1PermutationMatrix.html">PermutationQType</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a25b70ffbc88d804981c8874da55e7419">permutationQ</a> () const</td></tr>
<tr class="separator:a25b70ffbc88d804981c8874da55e7419"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8d31c78a17a70d56ef2d105d6b5efec3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a8d31c78a17a70d56ef2d105d6b5efec3">rank</a> () const</td></tr>
<tr class="separator:a8d31c78a17a70d56ef2d105d6b5efec3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae39fcfa8d1319472a5b2adfa7a28d9cf"><td class="memItemLeft" align="right" valign="top">RealScalar </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#ae39fcfa8d1319472a5b2adfa7a28d9cf">rcond</a> () const</td></tr>
<tr class="separator:ae39fcfa8d1319472a5b2adfa7a28d9cf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a191a4f598b0c192a83ab48984e87ee51"><td class="memItemLeft" align="right" valign="top">MatrixType </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a191a4f598b0c192a83ab48984e87ee51">reconstructedMatrix</a> () const</td></tr>
<tr class="separator:a191a4f598b0c192a83ab48984e87ee51"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abad257b6db0856d8ec52c6072f58f75d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold</a> (const RealScalar &<a class="el" href="classEigen_1_1FullPivLU.html#ae2298a7a89749dee7d86f02ccacce0cb">threshold</a>)</td></tr>
<tr class="separator:abad257b6db0856d8ec52c6072f58f75d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aeafbb0b885cc4c28b53e77988ac5cfe3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#aeafbb0b885cc4c28b53e77988ac5cfe3">setThreshold</a> (Default_t)</td></tr>
<tr class="separator:aeafbb0b885cc4c28b53e77988ac5cfe3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a614d3aa28e6af7b2af8630d3e2d022d8"><td class="memTemplParams" colspan="2">template<typename Rhs > </td></tr>
<tr class="memitem:a614d3aa28e6af7b2af8630d3e2d022d8"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1Solve.html">Solve</a>< <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>, Rhs > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#a614d3aa28e6af7b2af8630d3e2d022d8">solve</a> (const <a class="el" href="classEigen_1_1MatrixBase.html">MatrixBase</a>< Rhs > &b) const</td></tr>
<tr class="separator:a614d3aa28e6af7b2af8630d3e2d022d8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae2298a7a89749dee7d86f02ccacce0cb"><td class="memItemLeft" align="right" valign="top">RealScalar </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1FullPivLU.html#ae2298a7a89749dee7d86f02ccacce0cb">threshold</a> () const</td></tr>
<tr class="separator:ae2298a7a89749dee7d86f02ccacce0cb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="inherit_header pub_methods_classEigen_1_1SolverBase"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classEigen_1_1SolverBase')"><img src="closed.png" alt="-"> Public Member Functions inherited from <a class="el" href="classEigen_1_1SolverBase.html">Eigen::SolverBase< FullPivLU< MatrixType_ > ></a></td></tr>
<tr class="memitem:ae1025416bdb5a768f7213c67feb4dc33 inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top">const AdjointReturnType </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#ae1025416bdb5a768f7213c67feb4dc33">adjoint</a> () const</td></tr>
<tr class="separator:ae1025416bdb5a768f7213c67feb4dc33 inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1fbabe7f12bcbfba3b9a448b1f5e46fa inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>< MatrixType_ > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#a1fbabe7f12bcbfba3b9a448b1f5e46fa">derived</a> ()</td></tr>
<tr class="separator:a1fbabe7f12bcbfba3b9a448b1f5e46fa inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afd4f3f1c57b7594b96a7e30f2974ea2e inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>< MatrixType_ > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#afd4f3f1c57b7594b96a7e30f2974ea2e">derived</a> () const</td></tr>
<tr class="separator:afd4f3f1c57b7594b96a7e30f2974ea2e inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7fd647d110487799205df6f99547879d inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1Solve.html">Solve</a>< <a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>< MatrixType_ >, Rhs > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#a7fd647d110487799205df6f99547879d">solve</a> (const <a class="el" href="classEigen_1_1MatrixBase.html">MatrixBase</a>< Rhs > &b) const</td></tr>
<tr class="separator:a7fd647d110487799205df6f99547879d inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4d5e5baddfba3790ab1a5f247dcc4dc1 inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#a4d5e5baddfba3790ab1a5f247dcc4dc1">SolverBase</a> ()</td></tr>
<tr class="separator:a4d5e5baddfba3790ab1a5f247dcc4dc1 inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a70cf5cd1b31dbb4f4d61c436c83df6d3 inherit pub_methods_classEigen_1_1SolverBase"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classEigen_1_1Transpose.html">ConstTransposeReturnType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1SolverBase.html#a70cf5cd1b31dbb4f4d61c436c83df6d3">transpose</a> () const</td></tr>
<tr class="separator:a70cf5cd1b31dbb4f4d61c436c83df6d3 inherit pub_methods_classEigen_1_1SolverBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="inherit_header pub_methods_structEigen_1_1EigenBase"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structEigen_1_1EigenBase')"><img src="closed.png" alt="-"> Public Member Functions inherited from <a class="el" href="structEigen_1_1EigenBase.html">Eigen::EigenBase< Derived ></a></td></tr>
<tr class="memitem:a2d768a9877f5f69f49432d447b552bfe inherit pub_methods_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">EIGEN_CONSTEXPR <a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#a2d768a9877f5f69f49432d447b552bfe">cols</a> () const EIGEN_NOEXCEPT</td></tr>
<tr class="separator:a2d768a9877f5f69f49432d447b552bfe inherit pub_methods_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1fbabe7f12bcbfba3b9a448b1f5e46fa inherit pub_methods_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">Derived & </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#a1fbabe7f12bcbfba3b9a448b1f5e46fa">derived</a> ()</td></tr>
<tr class="separator:a1fbabe7f12bcbfba3b9a448b1f5e46fa inherit pub_methods_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afd4f3f1c57b7594b96a7e30f2974ea2e inherit pub_methods_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">const Derived & </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#afd4f3f1c57b7594b96a7e30f2974ea2e">derived</a> () const</td></tr>
<tr class="separator:afd4f3f1c57b7594b96a7e30f2974ea2e inherit pub_methods_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac22eb0695d00edd7d4a3b2d0a98b81c2 inherit pub_methods_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">EIGEN_CONSTEXPR <a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#ac22eb0695d00edd7d4a3b2d0a98b81c2">rows</a> () const EIGEN_NOEXCEPT</td></tr>
<tr class="separator:ac22eb0695d00edd7d4a3b2d0a98b81c2 inherit pub_methods_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae106171b6fefd3f7af108a8283de36c9 inherit pub_methods_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">EIGEN_CONSTEXPR <a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#ae106171b6fefd3f7af108a8283de36c9">size</a> () const EIGEN_NOEXCEPT</td></tr>
<tr class="separator:ae106171b6fefd3f7af108a8283de36c9 inherit pub_methods_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
</tbody></table><table class="memberdecls">
<tbody><tr class="heading"><td colspan="2"><h2 class="groupheader anchor" id="title2"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_structEigen_1_1EigenBase"><td colspan="2" onclick="javascript:toggleInherit('pub_types_structEigen_1_1EigenBase')"><img src="closed.png" alt="-"> Public Types inherited from <a class="el" href="structEigen_1_1EigenBase.html">Eigen::EigenBase< Derived ></a></td></tr>
<tr class="memitem:a554f30542cc2316add4b1ea0a492ff02 inherit pub_types_structEigen_1_1EigenBase"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceEigen.html#a62e77e0933482dafde8fe197d9a2cfde">Eigen::Index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a></td></tr>
<tr class="memdesc:a554f30542cc2316add4b1ea0a492ff02 inherit pub_types_structEigen_1_1EigenBase"><td class="mdescLeft"> </td><td class="mdescRight">The interface type of indices. <a href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">More...</a><br></td></tr>
<tr class="separator:a554f30542cc2316add4b1ea0a492ff02 inherit pub_types_structEigen_1_1EigenBase"><td class="memSeparator" colspan="2"> </td></tr>
</tbody></table>
<h2 class="groupheader anchor" id="title3">Constructor & Destructor Documentation</h2>
<a id="af225528d1c6e623a2b1dce091907d13e"></a>
<h2 class="memtitle anchor" id="title4"><span class="permalink"><a href="#af225528d1c6e623a2b1dce091907d13e">◆ </a></span>FullPivLU() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a></td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Default Constructor. </p>
<p>The default constructor is useful in cases in which the user intends to perform decompositions via LU::compute(const MatrixType&). </p>
</div>
</div>
<a id="ae83ebd2a24088f04e3ac835b0dc001e1"></a>
<h2 class="memtitle anchor" id="title5"><span class="permalink"><a href="#ae83ebd2a24088f04e3ac835b0dc001e1">◆ </a></span>FullPivLU() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td>
<td class="paramname"><em>rows</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> </td>
<td class="paramname"><em>cols</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Default Constructor with memory preallocation. </p>
<p>Like the default constructor but with preallocation of the internal data according to the specified problem <em>size</em>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#af225528d1c6e623a2b1dce091907d13e" title="Default Constructor.">FullPivLU()</a> </dd></dl>
</div>
</div>
<a id="a31a6a984478a9f721f367667fe4c5ab1"></a>
<h2 class="memtitle anchor" id="title6"><span class="permalink"><a href="#a31a6a984478a9f721f367667fe4c5ab1">◆ </a></span>FullPivLU() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<div class="memtemplate">
template<typename InputType > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > & </td>
<td class="paramname"><em>matrix</em></td><td>)</td>
<td></td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Constructor.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tbody><tr><td class="paramname">matrix</td><td>the matrix of which to compute the LU decomposition. It is required to be nonzero. </td></tr>
</tbody></table>
</dd>
</dl>
</div>
</div>
<a id="a3e903b9f401e3fc5d1ca7c6951c76185"></a>
<h2 class="memtitle anchor" id="title7"><span class="permalink"><a href="#a3e903b9f401e3fc5d1ca7c6951c76185">◆ </a></span>FullPivLU() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<div class="memtemplate">
template<typename InputType > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > & </td>
<td class="paramname"><em>matrix</em></td><td>)</td>
<td></td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Constructs a LU factorization from a given matrix. </p>
<p>This overloaded constructor is provided for <a class="el" href="group__InplaceDecomposition.html">inplace decomposition </a> when <code>MatrixType</code> is a <a class="el" href="classEigen_1_1Ref.html" title="A matrix or vector expression mapping an existing expression.">Eigen::Ref</a>.</p>
<dl class="section see"><dt>See also</dt><dd>FullPivLU(const EigenBase&) </dd></dl>
</div>
</div>
<h2 class="groupheader anchor" id="title8">Member Function Documentation</h2>
<a id="a396f63d737e0613f41004e30be8fe3cf"></a>
<h2 class="memtitle anchor" id="title9"><span class="permalink"><a href="#a396f63d737e0613f41004e30be8fe3cf">◆ </a></span>compute()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<div class="memtemplate">
template<typename InputType > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::compute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structEigen_1_1EigenBase.html">EigenBase</a>< InputType > & </td>
<td class="paramname"><em>matrix</em></td><td>)</td>
<td></td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Computes the LU decomposition of the given matrix.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tbody><tr><td class="paramname">matrix</td><td>the matrix of which to compute the LU decomposition. It is required to be nonzero.</td></tr>
</tbody></table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a reference to *this </dd></dl>
</div>
</div>
<a id="a71654e5c60a26407ecccfaa5b34bb0aa"></a>
<h2 class="memtitle anchor" id="title10"><span class="permalink"><a href="#a71654e5c60a26407ecccfaa5b34bb0aa">◆ </a></span>determinant()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<table class="memname">
<tbody><tr>
<td class="memname">internal::traits< MatrixType >::Scalar <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::determinant</td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the determinant of the matrix of which *this is the LU decomposition. It has only linear complexity (that is, O(n) where n is the dimension of the square matrix) as the LU decomposition has already been computed.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This is only for square matrices.</dd>
<dd>
For fixed-size matrices of size up to 4, <a class="el" href="classEigen_1_1MatrixBase.html#a7ad8f77004bb956b603bb43fd2e3c061">MatrixBase::determinant()</a> offers optimized paths.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>a determinant can be very big or small, so for matrices of large enough dimension, there is a risk of overflow/underflow.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1MatrixBase.html#a7ad8f77004bb956b603bb43fd2e3c061">MatrixBase::determinant()</a> </dd></dl>
</div>
</div>
<a id="a358cec49914ec3cd3707e6b79ae32d0b"></a>
<h2 class="memtitle anchor" id="title11"><span class="permalink"><a href="#a358cec49914ec3cd3707e6b79ae32d0b">◆ </a></span>dimensionOfKernel()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::dimensionOfKernel </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the dimension of the kernel of the matrix of which *this is the LU decomposition.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </dd></dl>
</div>
</div>
<a id="aa8cbf984141608e89b503125690d24d4"></a>
<h2 class="memtitle anchor" id="title12"><span class="permalink"><a href="#aa8cbf984141608e89b503125690d24d4">◆ </a></span>image()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const internal::image_retval<<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::image </td>
<td>(</td>
<td class="paramtype">const MatrixType & </td>
<td class="paramname"><em>originalMatrix</em></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the image of the matrix, also called its column-space. The columns of the returned matrix will form a basis of the image (column-space).</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tbody><tr><td class="paramname">originalMatrix</td><td>the original matrix, of which *this is the LU decomposition. The reason why it is needed to pass it here, is that this allows a large optimization, as otherwise this method would need to reconstruct it from the LU decomposition.</td></tr>
</tbody></table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the image has dimension zero, then the returned matrix is a column-vector filled with zeros.</dd>
<dd>
This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>.</dd></dl>
<p>Example: </p><div class="fragment"><div class="line"><a class="code" href="group__matrixtypedefs.html#ga84e9fd068879d808012bb6d5dbfecb17">Matrix3d</a> m;</div>
<div class="line">m << 1,1,0,</div>
<div class="line"> 1,3,2,</div>
<div class="line"> 0,1,1;</div>
<div class="line">cout << <span class="stringliteral">"Here is the matrix m:"</span> << endl << m << endl;</div>
<div class="line">cout << <span class="stringliteral">"Notice that the middle column is the sum of the two others, so the "</span></div>
<div class="line"> << <span class="stringliteral">"columns are linearly dependent."</span> << endl;</div>
<div class="line">cout << <span class="stringliteral">"Here is a matrix whose columns have the same span but are linearly independent:"</span></div>
<div class="line"> << endl << m.fullPivLu().image(m) << endl;</div>
<div class="ttc" id="agroup__matrixtypedefs_html_ga84e9fd068879d808012bb6d5dbfecb17"><div class="ttname"><a href="group__matrixtypedefs.html#ga84e9fd068879d808012bb6d5dbfecb17">Eigen::Matrix3d</a></div><div class="ttdeci">Matrix< double, 3, 3 > Matrix3d</div><div class="ttdoc">3×3 matrix of type double.</div><div class="ttdef"><b>Definition:</b> Matrix.h:501</div></div>
</div><!-- fragment --><p> Output: </p><pre class="fragment">Here is the matrix m:
1 1 0
1 3 2
0 1 1
Notice that the middle column is the sum of the two others, so the columns are linearly dependent.
Here is a matrix whose columns have the same span but are linearly independent:
1 1
3 1
1 0
</pre><dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#adfc1e27ff60287be5313b5efc3559308">kernel()</a> </dd></dl>
</div>
</div>
<a id="a34afc848d7fb22c7a56a053d3807d2cd"></a>
<h2 class="memtitle anchor" id="title13"><span class="permalink"><a href="#a34afc848d7fb22c7a56a053d3807d2cd">◆ </a></span>inverse()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const <a class="el" href="classEigen_1_1Inverse.html">Inverse</a><<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::inverse </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the inverse of the matrix of which *this is the LU decomposition.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If this matrix is not invertible, the returned matrix has undefined coefficients. Use <a class="el" href="classEigen_1_1FullPivLU.html#a0ee7753645eb31bcbd5faa459168b294">isInvertible()</a> to first determine whether this matrix is invertible.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1MatrixBase.html#a7712eb69e8ea3c8f7b8da1c44dbdeebf">MatrixBase::inverse()</a> </dd></dl>
</div>
</div>
<a id="a90dd33c632ba890175f61eac054bde98"></a>
<h2 class="memtitle anchor" id="title14"><span class="permalink"><a href="#a90dd33c632ba890175f61eac054bde98">◆ </a></span>isInjective()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">bool <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::isInjective </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>true if the matrix of which *this is the LU decomposition represents an injective linear map, i.e. has trivial kernel; false otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </dd></dl>
</div>
</div>
<a id="a0ee7753645eb31bcbd5faa459168b294"></a>
<h2 class="memtitle anchor" id="title15"><span class="permalink"><a href="#a0ee7753645eb31bcbd5faa459168b294">◆ </a></span>isInvertible()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">bool <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::isInvertible </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>true if the matrix of which *this is the LU decomposition is invertible.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </dd></dl>
</div>
</div>
<a id="af42b9cb6356658b92b2d1006aee73fc4"></a>
<h2 class="memtitle anchor" id="title16"><span class="permalink"><a href="#af42b9cb6356658b92b2d1006aee73fc4">◆ </a></span>isSurjective()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">bool <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::isSurjective </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>true if the matrix of which *this is the LU decomposition represents a surjective linear map; false otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </dd></dl>
</div>
</div>
<a id="adfc1e27ff60287be5313b5efc3559308"></a>
<h2 class="memtitle anchor" id="title17"><span class="permalink"><a href="#adfc1e27ff60287be5313b5efc3559308">◆ </a></span>kernel()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const internal::kernel_retval<<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::kernel </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the kernel of the matrix, also called its null-space. The columns of the returned matrix will form a basis of the kernel.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If the kernel has dimension zero, then the returned matrix is a column-vector filled with zeros.</dd>
<dd>
This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>.</dd></dl>
<p>Example: </p><div class="fragment"><div class="line"><a class="code" href="group__matrixtypedefs.html#ga731599f782380312960376c43450eb48">MatrixXf</a> m = <a class="code" href="classEigen_1_1DenseBase.html#ae814abb451b48ed872819192dc188c19">MatrixXf::Random</a>(3,5);</div>
<div class="line">cout << <span class="stringliteral">"Here is the matrix m:"</span> << endl << m << endl;</div>
<div class="line"><a class="code" href="group__matrixtypedefs.html#ga731599f782380312960376c43450eb48">MatrixXf</a> ker = m.fullPivLu().kernel();</div>
<div class="line">cout << <span class="stringliteral">"Here is a matrix whose columns form a basis of the kernel of m:"</span></div>
<div class="line"> << endl << ker << endl;</div>
<div class="line">cout << <span class="stringliteral">"By definition of the kernel, m*ker is zero:"</span></div>
<div class="line"> << endl << m*ker << endl;</div>
<div class="ttc" id="aclassEigen_1_1DenseBase_html_ae814abb451b48ed872819192dc188c19"><div class="ttname"><a href="classEigen_1_1DenseBase.html#ae814abb451b48ed872819192dc188c19">Eigen::DenseBase::Random</a></div><div class="ttdeci">static const RandomReturnType Random()</div><div class="ttdef"><b>Definition:</b> Random.h:114</div></div>
<div class="ttc" id="agroup__matrixtypedefs_html_ga731599f782380312960376c43450eb48"><div class="ttname"><a href="group__matrixtypedefs.html#ga731599f782380312960376c43450eb48">Eigen::MatrixXf</a></div><div class="ttdeci">Matrix< float, Dynamic, Dynamic > MatrixXf</div><div class="ttdoc">Dynamic×Dynamic matrix of type float.</div><div class="ttdef"><b>Definition:</b> Matrix.h:500</div></div>
</div><!-- fragment --><p> Output: </p><pre class="fragment">Here is the matrix m:
0.68 0.597 -0.33 0.108 -0.27
-0.211 0.823 0.536 -0.0452 0.0268
0.566 -0.605 -0.444 0.258 0.904
Here is a matrix whose columns form a basis of the kernel of m:
-0.219 0.763
0.00335 -0.447
0 1
1 0
-0.145 -0.285
By definition of the kernel, m*ker is zero:
7.45e-09 1.49e-08
-1.86e-09 -4.05e-08
0 -2.98e-08
</pre><dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#aa8cbf984141608e89b503125690d24d4">image()</a> </dd></dl>
</div>
</div>
<a id="a3e7d7a53f5b7c4ba99013fe171ac5654"></a>
<h2 class="memtitle anchor" id="title18"><span class="permalink"><a href="#a3e7d7a53f5b7c4ba99013fe171ac5654">◆ </a></span>matrixLU()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const MatrixType& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::matrixLU </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the LU decomposition matrix: the upper-triangular part is U, the unit-lower-triangular part is L (at least for square matrices; in the non-square case, special care is needed, see the documentation of class <a class="el" href="classEigen_1_1FullPivLU.html" title="LU decomposition of a matrix with complete pivoting, and related features.">FullPivLU</a>).</dd></dl>
<dl class="section see"><dt>See also</dt><dd>matrixL(), matrixU() </dd></dl>
</div>
</div>
<a id="a05cedf8dca6394355ef64c1ea1374b4a"></a>
<h2 class="memtitle anchor" id="title19"><span class="permalink"><a href="#a05cedf8dca6394355ef64c1ea1374b4a">◆ </a></span>maxPivot()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">RealScalar <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::maxPivot </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the absolute value of the biggest pivot, i.e. the biggest diagonal coefficient of U. </dd></dl>
</div>
</div>
<a id="aad90c46ea08618ae485fce4e5f4677d0"></a>
<h2 class="memtitle anchor" id="title20"><span class="permalink"><a href="#aad90c46ea08618ae485fce4e5f4677d0">◆ </a></span>nonzeroPivots()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::nonzeroPivots </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of nonzero pivots in the LU decomposition. Here nonzero is meant in the exact sense, not in a fuzzy sense. So that notion isn't really intrinsically interesting, but it is still useful when implementing algorithms.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#a8d31c78a17a70d56ef2d105d6b5efec3">rank()</a> </dd></dl>
</div>
</div>
<a id="a3eb3aa0c37e06ffaf0c07b1eeb0995cc"></a>
<h2 class="memtitle anchor" id="title21"><span class="permalink"><a href="#a3eb3aa0c37e06ffaf0c07b1eeb0995cc">◆ </a></span>permutationP()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const <a class="el" href="classEigen_1_1PermutationMatrix.html">PermutationPType</a>& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::permutationP </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the permutation matrix P</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#a25b70ffbc88d804981c8874da55e7419">permutationQ()</a> </dd></dl>
</div>
</div>
<a id="a25b70ffbc88d804981c8874da55e7419"></a>
<h2 class="memtitle anchor" id="title22"><span class="permalink"><a href="#a25b70ffbc88d804981c8874da55e7419">◆ </a></span>permutationQ()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const <a class="el" href="classEigen_1_1PermutationMatrix.html">PermutationQType</a>& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::permutationQ </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the permutation matrix Q</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1FullPivLU.html#a3eb3aa0c37e06ffaf0c07b1eeb0995cc">permutationP()</a> </dd></dl>
</div>
</div>
<a id="a8d31c78a17a70d56ef2d105d6b5efec3"></a>
<h2 class="memtitle anchor" id="title23"><span class="permalink"><a href="#a8d31c78a17a70d56ef2d105d6b5efec3">◆ </a></span>rank()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::rank </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the rank of the matrix of which *this is the LU decomposition.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method has to determine which pivots should be considered nonzero. For that, it uses the threshold value that you can control by calling <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </dd></dl>
</div>
</div>
<a id="ae39fcfa8d1319472a5b2adfa7a28d9cf"></a>
<h2 class="memtitle anchor" id="title24"><span class="permalink"><a href="#ae39fcfa8d1319472a5b2adfa7a28d9cf">◆ </a></span>rcond()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">RealScalar <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::rcond </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>an estimate of the reciprocal condition number of the matrix of which <code>*this</code> is the LU decomposition. </dd></dl>
</div>
</div>
<a id="a191a4f598b0c192a83ab48984e87ee51"></a>
<h2 class="memtitle anchor" id="title25"><span class="permalink"><a href="#a191a4f598b0c192a83ab48984e87ee51">◆ </a></span>reconstructedMatrix()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType > </div>
<table class="memname">
<tbody><tr>
<td class="memname">MatrixType <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType >::reconstructedMatrix</td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the matrix represented by the decomposition, i.e., it returns the product: <span class="MathJax_Preview" style="display: none;"></span><span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style=""><nobr><span class="math" id="MathJax-Span-19" style="width: 6.15em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.038em; height: 0px; font-size: 122%;"><span style="position: absolute; clip: rect(0.94em, 1005.04em, 2.286em, -999.997em); top: -1.929em; left: 0em;"><span class="mrow" id="MathJax-Span-20"><span class="msubsup" id="MathJax-Span-21"><span style="display: inline-block; position: relative; width: 1.818em; height: 0px;"><span style="position: absolute; clip: rect(3.106em, 1000.76em, 4.16em, -999.997em); top: -3.978em; left: 0em;"><span class="mi" id="MathJax-Span-22" style="font-family: MathJax_Math-italic;">P<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.12em;"></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span><span style="position: absolute; top: -4.33em; left: 0.823em;"><span class="texatom" id="MathJax-Span-23"><span class="mrow" id="MathJax-Span-24"><span class="mo" id="MathJax-Span-25" style="font-size: 70.7%; font-family: MathJax_Main;">−</span><span class="mn" id="MathJax-Span-26" style="font-size: 70.7%; font-family: MathJax_Main;">1</span></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span></span></span><span class="mi" id="MathJax-Span-27" style="font-family: MathJax_Math-italic;">L</span><span class="mi" id="MathJax-Span-28" style="font-family: MathJax_Math-italic;">U<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.061em;"></span></span><span class="msubsup" id="MathJax-Span-29"><span style="display: inline-block; position: relative; width: 1.759em; height: 0px;"><span style="position: absolute; clip: rect(3.106em, 1000.76em, 4.335em, -999.997em); top: -3.978em; left: 0em;"><span class="mi" id="MathJax-Span-30" style="font-family: MathJax_Math-italic;">Q</span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span><span style="position: absolute; top: -4.33em; left: 0.823em;"><span class="texatom" id="MathJax-Span-31"><span class="mrow" id="MathJax-Span-32"><span class="mo" id="MathJax-Span-33" style="font-size: 70.7%; font-family: MathJax_Main;">−</span><span class="mn" id="MathJax-Span-34" style="font-size: 70.7%; font-family: MathJax_Main;">1</span></span></span><span style="display: inline-block; width: 0px; height: 3.984em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 1.935em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.282em; border-left: 0px solid; width: 0px; height: 1.432em;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-2"> P^{-1} L U Q^{-1} </script>. This function is provided for debug purposes. </dd></dl>
</div>
</div>
<a id="abad257b6db0856d8ec52c6072f58f75d"></a>
<h2 class="memtitle anchor" id="title26"><span class="permalink"><a href="#abad257b6db0856d8ec52c6072f58f75d">◆ </a></span>setThreshold() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::setThreshold </td>
<td>(</td>
<td class="paramtype">const RealScalar & </td>
<td class="paramname"><em>threshold</em></td><td>)</td>
<td></td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Allows to prescribe a threshold to be used by certain methods, such as <a class="el" href="classEigen_1_1FullPivLU.html#a8d31c78a17a70d56ef2d105d6b5efec3">rank()</a>, who need to determine when pivots are to be considered nonzero. This is not used for the LU decomposition itself.</p>
<p>When it needs to get the threshold value, <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> calls <a class="el" href="classEigen_1_1FullPivLU.html#ae2298a7a89749dee7d86f02ccacce0cb">threshold()</a>. By default, this uses a formula to automatically determine a reasonable threshold. Once you have called the present method <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>, your value is used instead.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tbody><tr><td class="paramname">threshold</td><td>The new value to use as the threshold.</td></tr>
</tbody></table>
</dd>
</dl>
<p>A pivot will be considered nonzero if its absolute value is strictly greater than <span class="MathJax_Preview" style="display: none;"></span><span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" style=""><nobr><span class="math" id="MathJax-Span-35" style="width: 17.45em; display: inline-block;"><span style="display: inline-block; position: relative; width: 14.289em; height: 0px; font-size: 122%;"><span style="position: absolute; clip: rect(1.525em, 1014.17em, 2.872em, -999.997em); top: -2.456em; left: 0em;"><span class="mrow" id="MathJax-Span-36"><span class="mo" id="MathJax-Span-37" style="font-family: MathJax_Main;">|</span><span class="mi" id="MathJax-Span-38" style="font-family: MathJax_Math-italic;">p</span><span class="mi" id="MathJax-Span-39" style="font-family: MathJax_Math-italic;">i</span><span class="mi" id="MathJax-Span-40" style="font-family: MathJax_Math-italic;">v</span><span class="mi" id="MathJax-Span-41" style="font-family: MathJax_Math-italic;">o</span><span class="mi" id="MathJax-Span-42" style="font-family: MathJax_Math-italic;">t</span><span class="mo" id="MathJax-Span-43" style="font-family: MathJax_Main;">|</span><span class="mo" id="MathJax-Span-44" style="font-family: MathJax_AMS; padding-left: 0.296em;">⩽</span><span class="mi" id="MathJax-Span-45" style="font-family: MathJax_Math-italic; padding-left: 0.296em;">t</span><span class="mi" id="MathJax-Span-46" style="font-family: MathJax_Math-italic;">h</span><span class="mi" id="MathJax-Span-47" style="font-family: MathJax_Math-italic;">r</span><span class="mi" id="MathJax-Span-48" style="font-family: MathJax_Math-italic;">e</span><span class="mi" id="MathJax-Span-49" style="font-family: MathJax_Math-italic;">s</span><span class="mi" id="MathJax-Span-50" style="font-family: MathJax_Math-italic;">h</span><span class="mi" id="MathJax-Span-51" style="font-family: MathJax_Math-italic;">o</span><span class="mi" id="MathJax-Span-52" style="font-family: MathJax_Math-italic;">l</span><span class="mi" id="MathJax-Span-53" style="font-family: MathJax_Math-italic;">d<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-54" style="font-family: MathJax_Main; padding-left: 0.237em;">×</span><span class="mo" id="MathJax-Span-55" style="font-family: MathJax_Main; padding-left: 0.237em;">|</span><span class="mi" id="MathJax-Span-56" style="font-family: MathJax_Math-italic;">m</span><span class="mi" id="MathJax-Span-57" style="font-family: MathJax_Math-italic;">a</span><span class="mi" id="MathJax-Span-58" style="font-family: MathJax_Math-italic;">x</span><span class="mi" id="MathJax-Span-59" style="font-family: MathJax_Math-italic;">p</span><span class="mi" id="MathJax-Span-60" style="font-family: MathJax_Math-italic;">i</span><span class="mi" id="MathJax-Span-61" style="font-family: MathJax_Math-italic;">v</span><span class="mi" id="MathJax-Span-62" style="font-family: MathJax_Math-italic;">o</span><span class="mi" id="MathJax-Span-63" style="font-family: MathJax_Math-italic;">t</span><span class="mo" id="MathJax-Span-64" style="font-family: MathJax_Main;">|</span></span><span style="display: inline-block; width: 0px; height: 2.462em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.354em; border-left: 0px solid; width: 0px; height: 1.361em;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-3"> \vert pivot \vert \leqslant threshold \times \vert maxpivot \vert </script> where maxpivot is the biggest pivot.</p>
<p>If you want to come back to the default behavior, call <a class="el" href="classEigen_1_1FullPivLU.html#aeafbb0b885cc4c28b53e77988ac5cfe3">setThreshold(Default_t)</a> </p>
</div>
</div>
<a id="aeafbb0b885cc4c28b53e77988ac5cfe3"></a>
<h2 class="memtitle anchor" id="title27"><span class="permalink"><a href="#aeafbb0b885cc4c28b53e77988ac5cfe3">◆ </a></span>setThreshold() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>& <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::setThreshold </td>
<td>(</td>
<td class="paramtype">Default_t </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Allows to come back to the default behavior, letting <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> use its default formula for determining the threshold.</p>
<p>You should pass the special object Eigen::Default as parameter here. </p><div class="fragment"><div class="line">lu.setThreshold(Eigen::Default); </div>
</div><!-- fragment --><p>See the documentation of <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </p>
</div>
</div>
<a id="a614d3aa28e6af7b2af8630d3e2d022d8"></a>
<h2 class="memtitle anchor" id="title28"><span class="permalink"><a href="#a614d3aa28e6af7b2af8630d3e2d022d8">◆ </a></span>solve()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<div class="memtemplate">
template<typename Rhs > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">const <a class="el" href="classEigen_1_1Solve.html">Solve</a><<a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a>, Rhs> <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::solve </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classEigen_1_1MatrixBase.html">MatrixBase</a>< Rhs > & </td>
<td class="paramname"><em>b</em></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>a solution x to the equation Ax=b, where A is the matrix of which *this is the LU decomposition.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tbody><tr><td class="paramname">b</td><td>the right-hand-side of the equation to solve. Can be a vector or a matrix, the only requirement in order for the equation to make sense is that b.rows()==A.rows(), where A is the matrix of which *this is the LU decomposition.</td></tr>
</tbody></table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a solution.</dd></dl>
<p>This method just tries to find as good a solution as possible. If you want to check whether a solution exists or if it is accurate, just call this function to get a result and then compute the error of this result, or use <a class="el" href="classEigen_1_1DenseBase.html#ae8443357b808cd393be1b51974213f9c">MatrixBase::isApprox()</a> directly, for instance like this:</p><div class="fragment"><div class="line"><span class="keywordtype">bool</span> a_solution_exists = (A*result).isApprox(b, precision); </div>
</div><!-- fragment --><p> This method avoids dividing by zero, so that the non-existence of a solution doesn't by itself mean that you'll get <code>inf</code> or <code>nan</code> values.</p>
<p>If there exists more than one solution, this method will arbitrarily choose one. If you need a complete analysis of the space of solutions, take the one solution obtained by this method and add to it elements of the kernel, as determined by <a class="el" href="classEigen_1_1FullPivLU.html#adfc1e27ff60287be5313b5efc3559308">kernel()</a>.</p>
<p>Example: </p><div class="fragment"><div class="line">Matrix<float,2,3> m = <a class="code" href="classEigen_1_1DenseBase.html#ae814abb451b48ed872819192dc188c19">Matrix<float,2,3>::Random</a>();</div>
<div class="line"><a class="code" href="group__matrixtypedefs.html#ga36b8989b6aa63020139fc36bae6979e0">Matrix2f</a> y = <a class="code" href="classEigen_1_1DenseBase.html#ae814abb451b48ed872819192dc188c19">Matrix2f::Random</a>();</div>
<div class="line">cout << <span class="stringliteral">"Here is the matrix m:"</span> << endl << m << endl;</div>
<div class="line">cout << <span class="stringliteral">"Here is the matrix y:"</span> << endl << y << endl;</div>
<div class="line">Matrix<float,3,2> x = m.fullPivLu().solve(y);</div>
<div class="line"><span class="keywordflow">if</span>((m*x).isApprox(y))</div>
<div class="line">{</div>
<div class="line"> cout << <span class="stringliteral">"Here is a solution x to the equation mx=y:"</span> << endl << x << endl;</div>
<div class="line">}</div>
<div class="line"><span class="keywordflow">else</span></div>
<div class="line"> cout << <span class="stringliteral">"The equation mx=y does not have any solution."</span> << endl;</div>
<div class="ttc" id="agroup__matrixtypedefs_html_ga36b8989b6aa63020139fc36bae6979e0"><div class="ttname"><a href="group__matrixtypedefs.html#ga36b8989b6aa63020139fc36bae6979e0">Eigen::Matrix2f</a></div><div class="ttdeci">Matrix< float, 2, 2 > Matrix2f</div><div class="ttdoc">2×2 matrix of type float.</div><div class="ttdef"><b>Definition:</b> Matrix.h:500</div></div>
</div><!-- fragment --><p> Output: </p><pre class="fragment">Here is the matrix m:
0.68 0.566 0.823
-0.211 0.597 -0.605
Here is the matrix y:
-0.33 -0.444
0.536 0.108
Here is a solution x to the equation mx=y:
0 0
0.291 -0.216
-0.6 -0.391
</pre><dl class="section see"><dt>See also</dt><dd>TriangularView::solve(), <a class="el" href="classEigen_1_1FullPivLU.html#adfc1e27ff60287be5313b5efc3559308">kernel()</a>, <a class="el" href="classEigen_1_1FullPivLU.html#a34afc848d7fb22c7a56a053d3807d2cd">inverse()</a> </dd></dl>
</div>
</div>
<a id="ae2298a7a89749dee7d86f02ccacce0cb"></a>
<h2 class="memtitle anchor" id="title29"><span class="permalink"><a href="#ae2298a7a89749dee7d86f02ccacce0cb">◆ </a></span>threshold()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename MatrixType_ > </div>
<table class="mlabels">
<tbody><tr>
<td class="mlabels-left">
<table class="memname">
<tbody><tr>
<td class="memname">RealScalar <a class="el" href="classEigen_1_1FullPivLU.html">Eigen::FullPivLU</a>< MatrixType_ >::threshold </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</tbody></table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</tbody></table>
</div><div class="memdoc">
<p>Returns the threshold that will be used by certain methods such as <a class="el" href="classEigen_1_1FullPivLU.html#a8d31c78a17a70d56ef2d105d6b5efec3">rank()</a>.</p>
<p>See the documentation of <a class="el" href="classEigen_1_1FullPivLU.html#abad257b6db0856d8ec52c6072f58f75d">setThreshold(const RealScalar&)</a>. </p>
</div>
</div>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="FullPivLU_8h_source.html">FullPivLU.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceEigen.html">Eigen</a></li><li class="navelem"><a class="el" href="classEigen_1_1FullPivLU.html">FullPivLU</a></li>
<li class="footer">Generated on Thu Apr 21 2022 13:07:55 for Eigen by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"></a> 1.9.1 </li>
</ul>
</div>
<div style="position: absolute; width: 0px; height: 0px; overflow: hidden; padding: 0px; border: 0px; margin: 0px;"><div id="MathJax_Font_Test" style="position: absolute; visibility: hidden; top: 0px; left: 0px; width: auto; padding: 0px; border: 0px; margin: 0px; white-space: nowrap; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; font-size: 40px; font-weight: normal; font-style: normal; font-family: MathJax_AMS, sans-serif;"></div></div></body></html>