<?xml-stylesheet type="text/xsl" href="../styles/pmathml.xsl"?>
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dsi="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xml:space="preserve"><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><title>F01 Chapter Introduction : NAG Library, Mark 23</title><link rel="stylesheet" href="../styles/libdoc.css" type="text/css"/><script type="text/javascript">
   function showLevel(_levelId){
    var thisLevel = document.getElementById(_levelId);
    var thisplus = document.getElementById( _levelId.concat('plus'));
    var thisminus = document.getElementById( _levelId.concat('minus'));
    if(thisLevel.style.display != "block"){
     thisLevel.style.display = "block";
     thisplus.style.display = "none";
     thisminus.style.display = "inline";
     }
    else{
     thisLevel.style.display = "none";
     thisminus.style.display = "none";
     thisplus.style.display = "inline";
     }
    }
  </script></head><body><hr/><div><a class="chap" href="f01conts.xml">F01 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/F01/f01intro.pdf">F01 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Chapter Introduction<br/><br/>F01 &#8211; Matrix Operations, Including Inversion</h1><div class="htmltoc">
<h2 class="htmltoc"><span class="htmltochead" onclick="showLevel('htmltoc');"><span class="htmltocplus" id="htmltocplus">+</span><span class="htmltocminus" id="htmltocminus">&#8722;</span></span>&#160;Contents</h2>
<div class="htmltocitem" id="htmltoc">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#scope">1&#160;&#160;<b>Scope of the Chapter</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocbackground');"><span class="htmltocplus" id="tocbackgroundplus">+</span><span class="htmltocminus" id="tocbackgroundminus">&#8722;</span></span>
<a class="htmltoc" href="#background">2&#160;&#160;<b>Background to the Problems</b></a>
<div class="htmltocitem" id="tocbackground">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background1">2.1&#160;&#160;<b>Matrix Inversion</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background2">2.2&#160;&#160;<b>Matrix Factorizations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background3">2.3&#160;&#160;<b>Matrix Arithmetic and Manipulation</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background4">2.4&#160;&#160;<b>Matrix Functions</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocavailable');"><span class="htmltocplus" id="tocavailableplus">+</span><span class="htmltocminus" id="tocavailableminus">&#8722;</span></span>
<a class="htmltoc" href="#available">3&#160;&#160;<b>Recommendations on Choice and Use of Available Routines</b></a>
<div class="htmltocitem" id="tocavailable">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_1">3.1&#160;&#160;<b>Matrix Inversion</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_2">3.2&#160;&#160;<b>Matrix Factorizations</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocrecomm_3');"><span class="htmltocplus" id="tocrecomm_3plus">+</span><span class="htmltocminus" id="tocrecomm_3minus">&#8722;</span></span>
<a class="htmltoc" href="#recomm_3">3.3&#160;&#160;<b>Matrix Arithmetic and Manipulation</b></a>
<div class="htmltocitem" id="tocrecomm_3">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_31">3.3.1&#160;&#160;<b>NAG Names and LAPACK Names</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_4">3.4&#160;&#160;<b>Matrix Functions</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#dtree">4&#160;&#160;<b>Decision Trees</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#index">5&#160;&#160;<b>Functionality Index</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#auxindex">6&#160;&#160;<b>Auxiliary Routines Associated with Library Routine Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#withdrawn">7&#160;&#160;<b>Routines Withdrawn or Scheduled for Withdrawal</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">8&#160;&#160;<b>References</b></a>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="scope" id="scope"/>1&#160;&#160;Scope of the Chapter</h2>
<div class="paramtext">This chapter

provides facilities for
four

types of problem:
<table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(i)</td>
<td valign="top">Matrix Inversion</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(ii)</td>
<td valign="top">Matrix Factorizations</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(iii)</td>
<td valign="top">Matrix Arithmetic and Manipulation</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(iv)</td>
<td valign="top">Matrix Functions</td>
</tr></table>
</div><div class="paramtext">These problems are discussed separately in <a class="sec" href="#background1">Section 2.1</a>,

<a class="sec" href="#background2">Section 2.2</a>, <a class="sec" href="#background3">Section 2.3</a> and <a class="sec" href="#background4">Section 2.4</a>.
</div><h2 class="standard"><a class="sec" name="background" id="background"/>2&#160;&#160;Background to the Problems</h2><h3 class="standard"><a class="sec" name="background1" id="background1"/>2.1&#160;&#160;Matrix Inversion</h3>
<table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(i)</td>
<td valign="top">Non-singular square matrices of order <m:math><m:mi>n</m:mi></m:math>.
 <div class="paramtext">If <m:math><m:mi>A</m:mi></m:math>, a square matrix of order <m:math><m:mi>n</m:mi></m:math>, is nonsingular (has rank <m:math><m:mi>n</m:mi></m:math>), then its inverse <m:math><m:mi>X</m:mi></m:math>&#160;exists and satisfies the equations <m:math><m:mi>A</m:mi><m:mi>X</m:mi><m:mo>=</m:mo><m:mi>X</m:mi><m:mi>A</m:mi><m:mo>=</m:mo><m:mi>I</m:mi></m:math>&#160;(the identity or unit matrix).</div>
 <div class="paramtext">It is worth noting that if <m:math><m:mi>A</m:mi><m:mi>X</m:mi><m:mo>-</m:mo><m:mi>I</m:mi><m:mo>=</m:mo><m:mi>R</m:mi></m:math>, so that <m:math><m:mi>R</m:mi></m:math>&#160;is the &#8216;residual&#8217; matrix, then a bound on the relative error is given by  <m:math><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>R</m:mi></m:mfenced></m:math>, i.e.,

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mfrac><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>X</m:mi><m:mo>-</m:mo><m:msup><m:mi>A</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:msup><m:mi>A</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup></m:mfenced>
 </m:mfrac><m:mo>&#8804;</m:mo><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>R</m:mi></m:mfenced><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div></div></td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(ii)</td>
<td valign="top">General real rectangular matrices.
 <div class="paramtext">A real matrix <m:math><m:mi>A</m:mi></m:math>&#160;has no inverse if it is square  (<m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>) and singular  (has rank <m:math><m:mtext/><m:mo>&lt;</m:mo><m:mi>n</m:mi></m:math>), or if it is of shape  (<m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>) with <m:math><m:mi>m</m:mi><m:mo>&#8800;</m:mo><m:mi>n</m:mi></m:math>, but there is a <b>Generalized</b> or <b>Pseudo Inverse</b>
<m:math><m:mi>Z</m:mi></m:math>&#160;which satisfies the equations

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mi>Z</m:mi><m:mi>A</m:mi><m:mo>=</m:mo><m:mi>A</m:mi><m:mtext>, &#8195;</m:mtext><m:mi>Z</m:mi><m:mi>A</m:mi><m:mi>Z</m:mi><m:mo>=</m:mo><m:mi>Z</m:mi><m:mtext>, &#8195;</m:mtext><m:msup><m:mfenced separators=""><m:mi>A</m:mi><m:mi>Z</m:mi></m:mfenced><m:mi mathvariant="normal">T</m:mi></m:msup><m:mo>=</m:mo><m:mi>A</m:mi><m:mi>Z</m:mi><m:mtext>, &#8195;</m:mtext><m:msup><m:mfenced separators=""><m:mi>Z</m:mi><m:mi>A</m:mi></m:mfenced><m:mi mathvariant="normal">T</m:mi></m:msup><m:mo>=</m:mo><m:mi>Z</m:mi><m:mi>A</m:mi>
</m:math></td><td class="formula2"/></tr></table></div>

(which of course are also satisfied by the inverse <m:math><m:mi>X</m:mi></m:math>&#160;of  <m:math><m:mi>A</m:mi></m:math>&#160;if <m:math><m:mi>A</m:mi></m:math>&#160;is square and nonsingular).
 <table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(a)</td>
<td valign="top">if <m:math><m:mi>m</m:mi><m:mo>&#8805;</m:mo><m:mi>n</m:mi></m:math>&#160;and <m:math><m:mrow><m:mi>rank</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>n</m:mi></m:math>&#160;then  <m:math><m:mi>A</m:mi></m:math>&#160;can be factorized using a <m:math><m:mi mathvariant="bold-italic">Q</m:mi><m:mi mathvariant="bold-italic">R</m:mi></m:math>&#160;<b>factorization</b>, given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mi>Q</m:mi>
 <m:mfenced><m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:mi>R</m:mi></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd><m:mn>0</m:mn></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
<m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>Q</m:mi></m:math>&#160;is an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>m</m:mi></m:math>&#160;orthogonal matrix and <m:math><m:mi>R</m:mi></m:math>&#160;is an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>, nonsingular, upper triangular matrix.  The pseudo-inverse of <m:math><m:mi>A</m:mi></m:math>&#160;is then given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>Z</m:mi><m:mo>=</m:mo><m:msup><m:mi>R</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:msup><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover><m:mi mathvariant="normal">T</m:mi></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;consists of the first <m:math><m:mi>n</m:mi></m:math>&#160;columns of <m:math><m:mi>Q</m:mi></m:math>.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(b)</td>
<td valign="top">if <m:math><m:mi>m</m:mi><m:mo>&#8804;</m:mo><m:mi>n</m:mi></m:math>&#160;and <m:math><m:mrow><m:mi>rank</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>m</m:mi></m:math>&#160;then  <m:math><m:mi>A</m:mi></m:math>&#160;can be factorized using an <span class="bitalic">RQ</span>  <b>factorization</b>, given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mfenced separators=""><m:mi>R</m:mi><m:mtext>&#8195;</m:mtext><m:mn>0</m:mn></m:mfenced><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>P</m:mi></m:math>&#160;is an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;orthogonal matrix and <m:math><m:mi>R</m:mi></m:math>&#160;is an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>m</m:mi></m:math>, nonsingular, upper triangular matrix.  The pseudo-inverse of <m:math><m:mi>A</m:mi></m:math>&#160;is then given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>Z</m:mi><m:mo>=</m:mo><m:mover><m:mi>P</m:mi><m:mo>~</m:mo></m:mover><m:msup><m:mi>R</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mover><m:mi>P</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;consists of the first <m:math><m:mi>m</m:mi></m:math>&#160;columns of <m:math><m:mi>P</m:mi></m:math>.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(c)</td>
<td valign="top">if <m:math><m:mi>m</m:mi><m:mo>&#8805;</m:mo><m:mi>n</m:mi></m:math>&#160;and <m:math><m:mrow><m:mi>rank</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>r</m:mi><m:mo>&#8804;</m:mo><m:mi>n</m:mi></m:math>&#160;then  <m:math><m:mi>A</m:mi></m:math>&#160;can be factorized using a <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;factorization,  with column interchanges, as

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mi>Q</m:mi>
 <m:mfenced><m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:mi>R</m:mi></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd><m:mn>0</m:mn></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
<m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>Q</m:mi></m:math>&#160;is an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>m</m:mi></m:math>&#160;orthogonal matrix, <m:math><m:mi>R</m:mi></m:math>&#160;is an <m:math><m:mi>r</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;upper trapezoidal matrix and <m:math><m:mi>P</m:mi></m:math>&#160;is an  <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;permutation matrix.  The pseudo-inverse of  <m:math><m:mi>A</m:mi></m:math>&#160;is then given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>Z</m:mi><m:mo>=</m:mo><m:mi>P</m:mi><m:msup><m:mi>R</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:msup><m:mfenced separators=""><m:mi>R</m:mi><m:msup><m:mi>R</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:mfenced><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:msup><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover><m:mi mathvariant="normal">T</m:mi></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;consists of the first <m:math><m:mi>r</m:mi></m:math>&#160;columns of <m:math><m:mi>Q</m:mi></m:math>.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(d)</td>
<td valign="top">if <m:math><m:mrow><m:mi>rank</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>r</m:mi><m:mo>&#8804;</m:mo><m:mi>k</m:mi><m:mo>=</m:mo><m:mrow><m:mi>min</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mi>m</m:mi><m:mo>,</m:mo><m:mi>n</m:mi></m:mfenced></m:mrow></m:math>, then  <m:math><m:mi>A</m:mi></m:math>&#160;can be factorized as the <b>singular value decomposition</b><div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mi>Q</m:mi><m:mi>D</m:mi><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>Q</m:mi></m:math>&#160;is an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>m</m:mi></m:math>&#160;orthogonal matrix, <m:math><m:mi>P</m:mi></m:math>&#160;is an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;orthogonal matrix and <m:math><m:mi>D</m:mi></m:math>&#160;is an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;diagonal matrix with non-negative diagonal elements.  The first <m:math><m:mi>k</m:mi></m:math>&#160;columns of <m:math><m:mi>Q</m:mi></m:math>&#160;and <m:math><m:mi>P</m:mi></m:math>&#160;are the <b>left-</b>  and <b>right-hand singular vectors</b> of <m:math><m:mi>A</m:mi></m:math>&#160;respectively and the <m:math><m:mi>k</m:mi></m:math>&#160;diagonal elements of <m:math><m:mi>D</m:mi></m:math>&#160;are the  <b>singular values</b> of <m:math><m:mi>A</m:mi></m:math>.  <m:math><m:mi>D</m:mi></m:math>&#160;may be chosen so that

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>d</m:mi><m:mn>1</m:mn></m:msub><m:mo>&#8805;</m:mo><m:msub><m:mi>d</m:mi><m:mn>2</m:mn></m:msub><m:mo>&#8805;</m:mo><m:mo>&#8943;</m:mo><m:mo>&#8805;</m:mo><m:msub><m:mi>d</m:mi><m:mi>k</m:mi></m:msub><m:mo>&#8805;</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

and in this case if <m:math><m:mrow><m:mi>rank</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>r</m:mi></m:math>&#160;then

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>d</m:mi><m:mn>1</m:mn></m:msub><m:mo>&#8805;</m:mo><m:msub><m:mi>d</m:mi><m:mn>2</m:mn></m:msub><m:mo>&#8805;</m:mo><m:mo>&#8943;</m:mo><m:mo>&#8805;</m:mo><m:msub><m:mi>d</m:mi><m:mi>r</m:mi></m:msub><m:mo>&gt;</m:mo><m:mn>0</m:mn><m:mtext>, &#8195;</m:mtext><m:msub><m:mi>d</m:mi><m:mrow><m:mi>r</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo>=</m:mo><m:mo>&#8943;</m:mo><m:mo>=</m:mo><m:msub><m:mi>d</m:mi><m:mi>k</m:mi></m:msub><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

If <m:math><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;and <m:math><m:mover><m:mi>P</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;consist of the first  <m:math><m:mi>r</m:mi></m:math>&#160;columns of <m:math><m:mi>Q</m:mi></m:math>&#160;and <m:math><m:mi>P</m:mi></m:math>&#160;respectively and <m:math><m:mi>&#931;</m:mi></m:math>&#160;is an <m:math><m:mi>r</m:mi></m:math>&#160;by <m:math><m:mi>r</m:mi></m:math>&#160;diagonal matrix with diagonal elements <m:math><m:msub><m:mi>d</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo><m:msub><m:mi>d</m:mi><m:mn>2</m:mn></m:msub><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:msub><m:mi>d</m:mi><m:mi>r</m:mi></m:msub></m:math>&#160;then  <m:math><m:mi>A</m:mi></m:math>&#160;is given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover><m:mi>&#931;</m:mi><m:msup><m:mover><m:mi>P</m:mi><m:mo>~</m:mo></m:mover><m:mi mathvariant="normal">T</m:mi></m:msup>
</m:math></td><td class="formula2"/></tr></table></div>

and the pseudo-inverse of <m:math><m:mi>A</m:mi></m:math>&#160;is given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>Z</m:mi><m:mo>=</m:mo><m:mover><m:mi>P</m:mi><m:mo>~</m:mo></m:mover><m:msup><m:mi>&#931;</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:msup><m:mover><m:mi>Q</m:mi><m:mo>~</m:mo></m:mover><m:mi mathvariant="normal">T</m:mi></m:msup><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

Notice that

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msup><m:mi>A</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>A</m:mi><m:mo>=</m:mo><m:mi>P</m:mi><m:mfenced separators=""><m:msup><m:mi>D</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>D</m:mi></m:mfenced><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
</m:math></td><td class="formula2"/></tr></table></div>

which is the classical eigenvalue (spectral) factorization of  <m:math><m:msup><m:mi>A</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>A</m:mi></m:math>.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(e)</td>
<td valign="top">if <m:math><m:mi>A</m:mi></m:math>&#160;is complex then the above relationships are still true if we use &#8216;unitary&#8217; in place of &#8216;orthogonal&#8217; and conjugate transpose in place of transpose.  For example, the singular value decomposition of <m:math><m:mi>A</m:mi></m:math>&#160;is

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>A</m:mi><m:mo>=</m:mo><m:mi>Q</m:mi><m:mi>D</m:mi><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">H</m:mi></m:msup><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>Q</m:mi></m:math>&#160;and <m:math><m:mi>P</m:mi></m:math>&#160;are unitary, <m:math><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">H</m:mi></m:msup></m:math>&#160;the conjugate transpose of <m:math><m:mi>P</m:mi></m:math>&#160;and <m:math><m:mi>D</m:mi></m:math>&#160;is as in (d)  above.</td>
</tr></table>
 </div></td>
</tr></table><h3 class="standard"><a class="sec" name="background2" id="background2"/>2.2&#160;&#160;Matrix Factorizations</h3>
<div class="paramtext">The routines in this section perform matrix factorizations which are required for the solution of systems of linear equations with various special structures.  A few routines which perform associated computations are also included.</div><div class="paramtext">Other routines for matrix factorizations are to be found in  <a class="chap" href="../F07/f07conts.xml">Chapters F07</a>, <a class="chap" href="../F08/f08conts.xml">F08</a> and <a class="chap" href="../F11/f11conts.xml">F11</a>.</div><div class="paramtext">This section also contains a few routines associated with eigenvalue problems (see <a class="chap" href="../F02/f02conts.xml">Chapter F02</a>).  (Historical note: this section used to contain many more such routines, but they have now been superseded by  routines in <a class="chap" href="../F08/f08conts.xml">Chapter F08</a>.)</div><h3 class="standard"><a class="sec" name="background3" id="background3"/>2.3&#160;&#160;Matrix Arithmetic and Manipulation</h3>
<div class="paramtext">The intention of routines in this section (sub-chapters F01C, F01V and F01Z) is to cater for some of the commonly occurring operations in matrix manipulation, e.g., transposing a matrix or adding part of one matrix to another, and for conversion between different storage formats, e.g., conversion between rectangular band matrix storage and packed band matrix storage.  For vector or matrix-vector or matrix-matrix operations refer to <a class="chap" href="../F06/f06conts.xml">Chapters F06</a> and <a class="chap" href="../F16/f16conts.xml">F16</a>.</div><h3 class="standard"><a class="sec" name="background4" id="background4"/>2.4&#160;&#160;Matrix Functions</h3>
<div class="paramtext">The routines in this section compute functions of matrices.  Currently there are routines to compute the matrix exponential, as well as routines to compute a general function of real symmetric and complex Hermitian matrices.</div><h2 class="standard"><a class="sec" name="available" id="available"/>3&#160;&#160;Recommendations on Choice and Use of Available Routines</h2><h3 class="standard"><a class="sec" name="recomm_1" id="recomm_1"/>3.1&#160;&#160;Matrix Inversion</h3>
<div class="paramtext"><b>Note:</b>&#160; before using any routine for matrix inversion, consider carefully whether it is really needed.</div><div class="paramtext">Although the solution of a set of linear equations  <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>&#160;can be written as <m:math><m:mi>x</m:mi><m:mo>=</m:mo><m:msup><m:mi>A</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>b</m:mi></m:math>, the solution should <b>never</b> be computed by first inverting <m:math><m:mi>A</m:mi></m:math>&#160;and then computing <m:math><m:msup><m:mi>A</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>b</m:mi></m:math>; the routines in <a class="chap" href="../F04/f04conts.xml">Chapters F04</a> or <a class="chap" href="../F07/f07conts.xml">F07</a> should  <b>always</b> be used to solve such sets of equations directly; they are faster in execution, and numerically more stable and accurate.  Similar remarks apply to the solution of least squares problems which again should be solved by using the routines in
<a class="chap" href="../F04/f04conts.xml">Chapters F04</a> and <a class="chap" href="../F08/f08conts.xml">F08</a>

rather than by computing a pseudo-inverse.
<table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(a)</td>
<td valign="top">Non-singular square matrices of order <m:math><m:mi>n</m:mi></m:math>&#160;<div class="paramtext">This chapter describes techniques for inverting a general real matrix  <m:math><m:mi>A</m:mi></m:math>&#160;and matrices which are positive definite (have all eigenvalues positive) and are either real and symmetric or complex and Hermitian.  It is wasteful and uneconomical not to use the appropriate routine when a matrix is known to have one of these special forms.  A general routine must be used when the matrix is not known to be positive definite.  In most routines the inverse is computed by solving the linear equations <m:math><m:mi>A</m:mi><m:msub><m:mi>x</m:mi><m:mi mathvariant="italic">i</m:mi></m:msub><m:mo>=</m:mo><m:msub><m:mi>e</m:mi><m:mi mathvariant="italic">i</m:mi></m:msub></m:math>, for <m:math><m:mi mathvariant="italic">i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>, where <m:math><m:msub><m:mi>e</m:mi><m:mi>i</m:mi></m:msub></m:math>&#160;is the  <m:math><m:mi>i</m:mi></m:math>th column of the identity matrix.</div>
 <div class="paramtext">Routines are given for calculating the approximate inverse, that is solving the linear equations just once, and also for obtaining the accurate inverse by successive iterative corrections of this first approximation.  The latter, of course, are more costly in terms of time and storage, since each correction involves the solution of <m:math><m:mi>n</m:mi></m:math>&#160;sets of linear equations and since the original  <m:math><m:mi>A</m:mi></m:math>&#160;and its <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>&#160;decomposition must be stored together with the first and successively corrected approximations to the inverse.  In practice the storage requirements for the &#8216;corrected&#8217;  inverse routines are about double those of the &#8216;approximate&#8217; inverse  routines, though the extra computer time is not prohibitive since the same matrix and the same <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>&#160;decomposition is used in every linear equation solution.</div>
 <div class="paramtext">Despite the extra work of the &#8216;corrected&#8217; inverse routines they are superior to the &#8216;approximate&#8217; inverse routines.  A correction provides a means of estimating the number of accurate figures in the inverse or the number of &#8216;meaningful&#8217; figures relating to the degree of uncertainty in the coefficients of the matrix.</div>
 <div class="paramtext">The residual matrix <m:math><m:mi>R</m:mi><m:mo>=</m:mo><m:mi>A</m:mi><m:mi>X</m:mi><m:mo>-</m:mo><m:mi>I</m:mi></m:math>, where <m:math><m:mi>X</m:mi></m:math>&#160;is a computed inverse of <m:math><m:mi>A</m:mi></m:math>, conveys useful information.  Firstly

<m:math><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>R</m:mi></m:mfenced></m:math>&#160;is a bound on the relative error in <m:math><m:mi>X</m:mi></m:math>&#160;and secondly <m:math><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>R</m:mi></m:mfenced><m:mo>&lt;</m:mo><m:mfrac other="small"><m:mn>1</m:mn><m:mn>2</m:mn></m:mfrac>
</m:math>&#160;guarantees the convergence of the iterative process in the &#8216;corrected&#8217; inverse routines.</div>
 <div class="paramtext">The decision trees for inversion show which routines in
<a class="chap" href="../F04/f04conts.xml">Chapter F04</a>  and
<a class="chap" href="../F07/f07conts.xml">Chapter F07</a>  should be used for the inversion of other special types of matrices not treated in the chapter.</div></td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(b)</td>
<td valign="top">General real rectangular matrices
 <div class="paramtext">For real matrices <a class="rout" href="../F08/f08aef.xml">F08AEF (DGEQRF)</a>
and <a class="rout" href="../F01/f01qjf.xml">F01QJF</a> return

<m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;and <m:math><m:mi>R</m:mi><m:mi>Q</m:mi></m:math>&#160;factorizations

of <m:math><m:mi>A</m:mi></m:math>&#160;respectively
and <a class="rout" href="../F08/f08bff.xml">F08BFF (DGEQP3)</a> returns the <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;factorization with column interchanges.  The corresponding complex routines are <a class="rout" href="../F08/f08asf.xml">F08ASF (ZGEQRF)</a>, <a class="rout" href="../F01/f01rjf.xml">F01RJF</a>
and <a class="rout" href="../F08/f08btf.xml">F08BTF (ZGEQP3)</a>  respectively.  Routines are also provided to form the orthogonal matrices and transform by the orthogonal matrices following the use of the above routines.
<a class="rout" href="../F01/f01qgf.xml">F01QGF</a> and <a class="rout" href="../F01/f01rgf.xml">F01RGF</a> form the <m:math><m:mi>R</m:mi><m:mi>Q</m:mi></m:math>&#160;factorization of an upper trapezoidal matrix for the real and complex cases respectively.
 </div>
 <div class="paramtext"><a class="rout" href="../F01/f01blf.xml">F01BLF</a> uses the <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;factorization as described in <a class="sec" href="#background1">Section 2.1</a>(ii)(a) and is the only routine that explicitly returns a pseudo-inverse.  If <m:math><m:mi>m</m:mi><m:mo>&#8805;</m:mo><m:mi>n</m:mi></m:math>, then the routine will calculate the pseudo-inverse <m:math><m:mi>Z</m:mi></m:math>&#160;of the matrix <m:math><m:mi>A</m:mi></m:math>.  If <m:math><m:mi>m</m:mi><m:mo>&lt;</m:mo><m:mi>n</m:mi></m:math>, then the <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>m</m:mi></m:math>&#160;matrix <m:math><m:msup><m:mi>A</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>&#160;should be used.  The routine will calculate the pseudo-inverse <m:math><m:mi>Z</m:mi></m:math>&#160;of <m:math><m:msup><m:mi>A</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>&#160;and the required pseudo-inverse will be <m:math><m:msup><m:mi>Z</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>.  The routine also attempts to calculate the rank, <m:math><m:mi>r</m:mi></m:math>, of the matrix given a tolerance to decide when elements can be regarded as zero.  However, should this routine fail due to an incorrect determination of the rank, the singular value decomposition method (described below) should be used.</div>
 <div class="paramtext">
<a class="rout" href="../F08/f08kbf.xml">F08KBF (DGESVD)</a> and <a class="rout" href="../F08/f08kpf.xml">F08KPF (ZGESVD)</a>

compute the singular value decomposition as described in  <a class="sec" href="#background">Section 2</a> for real and complex matrices respectively.  If <m:math><m:mi>A</m:mi></m:math>&#160;has rank <m:math><m:mi>r</m:mi><m:mo>&#8804;</m:mo><m:mi>k</m:mi><m:mo>=</m:mo><m:mrow><m:mi>min</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mi>m</m:mi><m:mo>,</m:mo><m:mi>n</m:mi></m:mfenced></m:mrow></m:math>&#160;then the  <m:math><m:mi>k</m:mi><m:mo>-</m:mo><m:mi>r</m:mi></m:math>&#160;smallest singular values will be negligible and the pseudo-inverse of  <m:math><m:mi>A</m:mi></m:math>&#160;can be obtained as <m:math><m:mi>Z</m:mi><m:mo>=</m:mo><m:mi>P</m:mi><m:msup><m:mi>&#931;</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:msup><m:mi>Q</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>&#160;as described in <a class="sec" href="#background">Section 2</a>.  If the rank of  <m:math><m:mi>A</m:mi></m:math>&#160;is not known in advance it can be estimated from the singular values (see <a class="sec" href="../F04/f04intro.xml#background4">Section 2.4</a> in  the F04 Chapter Introduction).
In the real case with  <m:math><m:mi>m</m:mi><m:mo>&#8805;</m:mo><m:mi>n</m:mi></m:math>,  <a class="rout" href="../F02/f02wdf.xml">F02WDF</a> provides details of the <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;factorization or the singular value decomposition depending on whether or not <m:math><m:mi>A</m:mi></m:math>&#160;is of full rank and for some problems provides an attractive alternative to <a class="rout" href="../F08/f08kbf.xml">F08KBF (DGESVD)</a>.
For large sparse matrices, leading terms in the singular value decomposition can be computed using routines from <a class="chap" href="../F12/f12conts.xml">Chapter F12</a>.</div></td>
</tr></table>
</div><h3 class="standard"><a class="sec" name="recomm_2" id="recomm_2"/>3.2&#160;&#160;Matrix Factorizations</h3>
<div class="paramtext">Each of these routines serves a special purpose required for the solution of sets of simultaneous linear equations or the eigenvalue problem.  For further details you should consult  <a class="sec" href="../F02/f02intro.xml#available">Sections 3</a> or <a class="sec" href="../F02/f02intro.xml#dtree">4</a> in  the F02 Chapter Introduction or <a class="sec" href="../F04/f04intro.xml#available">Sections 3</a> or <a class="sec" href="../F04/f04intro.xml#dtree">4</a> in  the F04 Chapter Introduction.</div><div class="paramtext">
<a class="rout" href="../F01/f01brf.xml">F01BRF</a> and <a class="rout" href="../F01/f01bsf.xml">F01BSF</a> are provided for factorizing general real sparse matrices. A more recent algorithm for the same problem is available through <a class="rout" href="../F11/f11mef.xml">F11MEF</a>.
For factorizing real symmetric positive definite

sparse matrices, see
<a class="rout" href="../F11/f11jaf.xml">F11JAF</a>.
  
These routines should be used only when  <m:math><m:mi>A</m:mi></m:math>&#160;is <b>not</b> banded and when the total number of nonzero elements is less than 10% of the total number of elements.  In all other cases either the band routines or the general routines should be used.</div><h3 class="standard"><a class="sec" name="recomm_3" id="recomm_3"/>3.3&#160;&#160;Matrix Arithmetic and Manipulation</h3>
<div class="paramtext">The routines in the F01C section are designed for the general handling of <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrices.  Emphasis has been placed on flexibility in the parameter specifications and on avoiding, where possible,  the use of internally declared arrays.  They are therefore suited for use with large matrices of variable row and column dimensions.  Routines are included for the addition and subtraction of sub-matrices of larger matrices, as well as the standard manipulations of full matrices.  Those routines involving matrix multiplication may use additional-precision arithmetic for the accumulation of inner products.  See also <a class="chap" href="../F06/f06conts.xml">Chapter F06</a>.</div><div class="paramtext">The routines in the F01V (LAPACK) and F01Z section are designed to allow conversion between full storage format and one of the packed storage schemes required by some of the  routines in <a class="chap" href="../F02/f02conts.xml">Chapters F02</a>, <a class="chap" href="../F04/f04conts.xml">F04</a>, <a class="chap" href="../F06/f06conts.xml">F06</a>, <a class="chap" href="../F07/f07conts.xml">F07</a> and <a class="chap" href="../F08/f08conts.xml">F08</a>.</div><h4 class="standard"><a class="sec" name="recomm_31" id="recomm_31"/>3.3.1&#160;&#160;NAG Names and LAPACK Names</h4>
<div class="paramtext">Routines with NAG name beginning F01V may be called either by their NAG names or by their LAPACK names. When using the NAG Library, the double precision form of the LAPACK name must be used (beginning with D- or Z-).</div><div class="paramtext">References to <a class="chap" href="../F01/f01conts.xml">Chapter F01</a> routines in the manual normally include the LAPACK double precision names, for example, <a class="rout" href="../F01/f01vef.xml">F01VEF (DTRTTF)</a>.</div><div class="paramtext">The LAPACK routine names follow a simple scheme (which is similar to that used for the BLAS in <a class="chap" href="../F06/f06conts.xml">Chapter F06</a>).  Most names have the structure XYYTZZ, where the components have the following meanings:</div><div class="paramtext">&#8211;&#8194;the initial letter, X, indicates the data type (real or complex) and precision:
<ul class="listind"><li class="listind">S &#8211; real, single precision (in Fortran, 4 byte length REAL)</li><li class="listind">D &#8211; real, double precision (in Fortran, 8 byte length REAL)</li><li class="listind">C &#8211; complex, single precision (in Fortran, 8 byte length COMPLEX)</li><li class="listind">Z &#8211; complex, double precision (in Fortran, 16 byte length COMPLEX)</li></ul></div><div class="paramtext">&#8211;&#8194;the fourth letter, T, indicates that the routine is performing a storage scheme transformation (conversion)</div><div class="paramtext">&#8211;&#8194;the letters YY indicate the original storage scheme used to store a triangular part of the matrix <m:math><m:mi>A</m:mi></m:math>, while the letters ZZ indicate the target storage scheme of the conversion (YY cannot equal ZZ since this would do nothing):
<ul class="listind"><li class="listind">TF &#8211; Rectangular Full Packed Format (RFP)</li><li class="listind">TP &#8211; Packed Format</li><li class="listind">TR &#8211; Full Format</li></ul></div><h3 class="standard"><a class="sec" name="recomm_4" id="recomm_4"/>3.4&#160;&#160;Matrix Functions</h3>
<div class="paramtext"><a class="rout" href="../F01/f01ecf.xml">F01ECF</a> and <a class="rout" href="../F01/f01fcf.xml">F01FCF</a> compute the matrix exponential, <m:math><m:msup><m:mi>e</m:mi><m:mi>A</m:mi></m:msup></m:math>, for a real and complex square matrix <m:math><m:mi>A</m:mi></m:math>&#160;respectively.  <a class="rout" href="../F01/f01edf.xml">F01EDF</a> and <a class="rout" href="../F01/f01fdf.xml">F01FDF</a> compute the matrix exponential for a real symmetric and complex Hermitian matrix respectively.  If the matrix is real symmetric, or complex Hermitian then it is recommended that <a class="rout" href="../F01/f01edf.xml">F01EDF</a>, or <a class="rout" href="../F01/f01fdf.xml">F01FDF</a> be used as they are more efficient and, in general, more accurate than <a class="rout" href="../F01/f01ecf.xml">F01ECF</a> and <a class="rout" href="../F01/f01fcf.xml">F01FCF</a>.</div><div class="paramtext">Routines <a class="rout" href="../F01/f01eff.xml">F01EFF</a> and <a class="rout" href="../F01/f01fff.xml">F01FFF</a> compute the matrix function, <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>, of a real symmetric and complex Hermitian matrix <m:math><m:mi>A</m:mi></m:math>&#160;respectively.</div><h2 class="standard"><a class="sec" name="dtree" id="dtree"/>4&#160;&#160;Decision Trees</h2>
<div class="paramtext">The decision trees show the routines in this chapter and in <a class="chap" href="../F04/f04conts.xml">Chapter F04</a> that should be used for inverting matrices of various types.</div><div class="paramtext">(i) <b>Matrix Inversion:</b></div><h3 class="sec"><a name="matrixinversion" id="matrixinversion"/>Tree 1</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix of rank <m:math><m:mi>n</m:mi></m:math>?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;a real matrix?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">see <a class="dtree" href="#tree1">Tree 2</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">see <a class="dtree" href="#tree2">Tree 3</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">see <a class="dtree" href="#tree3">Tree 4</a></td></tr></table><h3 class="sec"><a name="tree1" id="tree1"/>Tree 2: Inverse of a real <span class="bitalic">n</span> by <span class="bitalic">n</span> matrix of full rank
</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;a band matrix?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">See <a class="note" href="#note1">Note 1</a>.</td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;symmetric?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;positive definite?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Do you want guaranteed accuracy?  (See <a class="note" href="#note2">Note 2</a>)</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F01/f01abf.xml">F01ABF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is one triangle of <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07gdf.xml">F07GDF</a> and <a class="rout" href="../F07/f07gjf.xml">F07GJF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F01/f01adf.xml">F01ADF</a> or <a class="rout" href="../F07/f07fdf.xml">F07FDF</a> and <a class="rout" href="../F07/f07fjf.xml">F07FJF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is one triangle of <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07pdf.xml">F07PDF</a> and <a class="rout" href="../F07/f07pjf.xml">F07PJF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07mdf.xml">F07MDF</a> and <a class="rout" href="../F07/f07mjf.xml">F07MJF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;triangular?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07ujf.xml">F07UJF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07tjf.xml">F07TJF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Do you want guaranteed accuracy?  (See <a class="note" href="#note2">Note 2</a>)</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F04/f04aef.xml">F04AEF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry"><a class="rout" href="../F07/f07adf.xml">F07ADF</a> and <a class="rout" href="../F07/f07ajf.xml">F07AJF</a></td></tr></table><h3 class="sec"><a name="tree2" id="tree2"/>Tree 3: Inverse of a complex <span class="bitalic">n</span> by <span class="bitalic">n</span> matrix of full rank</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;a band matrix?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">See <a class="note" href="#note1">Note 1</a>.</td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;Hermitian?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;positive definite?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is one triangle of <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07grf.xml">F07GRF</a> and <a class="rout" href="../F07/f07gwf.xml">F07GWF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07frf.xml">F07FRF</a> and <a class="rout" href="../F07/f07fwf.xml">F07FWF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is one triangle <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07prf.xml">F07PRF</a> and <a class="rout" href="../F07/f07pwf.xml">F07PWF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07mrf.xml">F07MRF</a> and <a class="rout" href="../F07/f07mwf.xml">F07MWF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;symmetric?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is one triangle of <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07qrf.xml">F07QRF</a> and <a class="rout" href="../F07/f07qwf.xml">F07QWF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07nrf.xml">F07NRF</a> and <a class="rout" href="../F07/f07nwf.xml">F07NWF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;triangular?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;stored as a linear array?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F07/f07uwf.xml">F07UWF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F07/f07twf.xml">F07TWF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry"><a class="rout" href="../F07/f07anf.xml">F07ANF</a> or <a class="rout" href="../F07/f07arf.xml">F07ARF</a> and <a class="rout" href="../F07/f07awf.xml">F07AWF</a></td></tr></table><h3 class="sec"><a name="tree3" id="tree3"/>Tree 4: Pseudo-inverses
</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;a complex matrix?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;of full rank?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix with <m:math><m:mi>m</m:mi><m:mo>&lt;</m:mo><m:mi>n</m:mi></m:math>?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F01/f01rjf.xml">F01RJF</a> and <a class="rout" href="../F01/f01rkf.xml">F01RKF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F08/f08asf.xml">F08ASF</a> and <a class="rout" href="../F08/f08auf.xml">F08AUF</a> or <a class="rout" href="../F08/f08atf.xml">F08ATF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F08/f08kpf.xml">F08KPF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;of full rank?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix with <m:math><m:mi>m</m:mi><m:mo>&lt;</m:mo><m:mi>n</m:mi></m:math>?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F01/f01qjf.xml">F01QJF</a> and <a class="rout" href="../F01/f01qkf.xml">F01QKF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../F08/f08aef.xml">F08AEF</a> and <a class="rout" href="../F08/f08agf.xml">F08AGF</a> or <a class="rout" href="../F08/f08aff.xml">F08AFF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is <m:math><m:mi>A</m:mi></m:math>&#160;an <m:math><m:mi>m</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix with <m:math><m:mi>m</m:mi><m:mo>&lt;</m:mo><m:mi>n</m:mi></m:math>?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F08/f08kbf.xml">F08KBF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is reliability more important than efficiency?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../F08/f08kbf.xml">F08KBF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry"><a class="rout" href="../F01/f01blf.xml">F01BLF</a></td></tr></table><div class="paramtext">(ii) <b>Matrix Factorizations:</b> see the decision trees in Section 4 in the <a class="chapint" href="../F02/f02intro.xml">F02</a> and <a class="chapint" href="../F04/f04intro.xml">F04 Chapter Introductions</a>.</div><div class="paramtext">(iii) <b>Matrix Arithmetic and Manipulation:</b> not appropriate.</div><div class="paramtext">(iv) <b>Matrix Functions:</b> not required.</div><div class="paramtext"><a name="note1" id="note1"/><b>Note 1:</b> the inverse of a band matrix <m:math><m:mi>A</m:mi></m:math>&#160;does not in general have the same shape as <m:math><m:mi>A</m:mi></m:math>, and no routines are provided specifically for finding such an inverse.  The matrix must either be treated as a full matrix, or the equations <m:math><m:mi>A</m:mi><m:mi>X</m:mi><m:mo>=</m:mo><m:mi>B</m:mi></m:math>&#160;must be solved, where <m:math><m:mi>B</m:mi></m:math>&#160;has been initialized to the identity matrix <m:math><m:mi>I</m:mi></m:math>.  In the latter case, see the decision trees in <a class="sec" href="../F04/f04intro.xml#dtree">Section 4</a> in  the F04 Chapter Introduction.</div><div class="paramtext"><a name="note2" id="note2"/><b>Note 2:</b> by &#8216;guaranteed accuracy&#8217; we mean that the accuracy of the inverse is improved by use of the iterative refinement technique using additional precision.</div><h2 class="standard"><a class="sec" name="index" id="index"/>5&#160;&#160;Functionality Index</h2>
<div>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Inversion&#160;(also&#160;see&#160;<a class="chap" href="../F07/f07conts.xml">Chapter&#160;F07</a>),</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;<span><i>m</i></span>&#160;by <span><i>n</i></span>&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pseudo&#160;inverse</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01blf.xml">F01BLF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;symmetric&#160;positive&#160;definite&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;accurate&#160;inverse</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01abf.xml">F01ABF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;approximate&#160;inverse</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01adf.xml">F01ADF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Matrix&#160;Arithmetic&#160;and&#160;Manipulation,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;matrix&#160;addition,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01cwf.xml">F01CWF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01ctf.xml">F01CTF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;matrix&#160;multiplication</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01ckf.xml">F01CKF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;matrix&#160;storage&#160;conversion,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;packed&#160;band&#160;<span><span>&#160;&#8596;&#160;</span></span>&#160;rectangular storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01zdf.xml">F01ZDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01zcf.xml">F01ZCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;packed&#160;triangular&#160;<span><span>&#160;&#8596;&#160;</span></span>&#160;square storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01zbf.xml">F01ZBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01zaf.xml">F01ZAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;matrix&#160;subtraction,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01cwf.xml">F01CWF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01ctf.xml">F01CTF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;matrix&#160;transpose</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01crf.xml">F01CRF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;packed&#160;triangular&#160;to&#160;Rectangular&#160;Full&#160;Packed&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vkf.xml">F01VKF&#160;(ZTPTTF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vjf.xml">F01VJF&#160;(DTPTTF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;packed&#160;triangular&#160;to&#160;square&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vdf.xml">F01VDF&#160;(ZTPTTR)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vcf.xml">F01VCF&#160;(DTPTTR)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Rectangular&#160;Full&#160;Packed&#160;to&#160;packed&#160;triangular&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vmf.xml">F01VMF&#160;(ZTFTTP)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vlf.xml">F01VLF&#160;(DTFTTP)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;rectangular&#160;packed&#160;to&#160;square&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vhf.xml">F01VHF&#160;(ZTFTTR)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vgf.xml">F01VGF&#160;(DTFTTR)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;square&#160;to&#160;packed&#160;triangular&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vbf.xml">F01VBF&#160;(ZTRTTP)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrices</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vaf.xml">F01VAF&#160;(DTRTTP)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;square&#160;to&#160;Rectangular&#160;Full&#160;Packed&#160;storage,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;complex&#160;matrix</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vff.xml">F01VFF&#160;(ZTRTTF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;real&#160;matrix</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01vef.xml">F01VEF&#160;(DTRTTF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Matrix&#160;Function</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;complex&#160;Hermitian&#160;<span><i>n</i></span>&#160;by <span><i>n</i></span>&#160;matrix</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;exponential</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01fdf.xml">F01FDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;function</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01fff.xml">F01FFF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;complex&#160;<span><i>n</i></span>&#160;by <span><i>n</i></span>&#160;matrix</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;exponential</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01fcf.xml">F01FCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;<span><i>n</i></span>&#160;by <span><i>n</i></span>&#160;matrix</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;exponential</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01ecf.xml">F01ECF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;symmetric&#160;<span><i>n</i></span>&#160;by <span><i>n</i></span>&#160;matrix</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;exponential</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01edf.xml">F01EDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;matrix&#160;function</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01eff.xml">F01EFF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Matrix&#160;Transformations,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;complex&#160;matrix,&#160;form&#160;unitary&#160;matrix</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01rkf.xml">F01RKF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;complex&#160;<span><i>m</i></span>&#160;by <span><i>n</i><span>(<i>m</i><span>&#160;&#8804;&#160;</span><i>n</i>)</span></span>&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">RQ</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01rjf.xml">F01RJF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;complex&#160;upper&#160;trapezoidal&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">RQ</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01rgf.xml">F01RGF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;eigenproblem&#160;<span><i>A</i><i>x</i><span>&#160;=&#160;</span><i>&#955;</i><i>B</i><i>x</i></span>, <span><i>A</i></span>, <span><i>B</i></span>&#160;banded,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;reduction&#160;to&#160;standard&#160;symmetric&#160;problem</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01bvf.xml">F01BVF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;almost&#160;block-diagonal&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">LU</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01lhf.xml">F01LHF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;band&#160;symmetric&#160;positive&#160;definite&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span><i>U</i><i>L</i><i>D</i><span><span><i>L</i></span><sup><span>T</span></sup></span><span><span><i>U</i></span><sup><span>T</span></sup></span></span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01buf.xml">F01BUF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;variable&#160;bandwidth,&#160;<span><i>L</i><i>D</i><span><span><i>L</i></span><sup><span>T</span></sup></span></span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01mcf.xml">F01MCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;form&#160;orthogonal&#160;matrix</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01qkf.xml">F01QKF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;<span><i>m</i></span>&#160;by <span><i>n</i><span>(<i>m</i> <span>&#160;&#8804;&#160;</span> <i>n</i>)</span></span>&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">RQ</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01qjf.xml">F01QJF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;sparse&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01brf.xml">F01BRF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;factorization,&#160;known&#160;sparsity&#160;pattern</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01bsf.xml">F01BSF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;real&#160;upper&#160;trapezoidal&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">RQ</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01qgf.xml">F01QGF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;tridiagonal&#160;matrix,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="italic">LU</span>&#160;factorization</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F01/f01lef.xml">F01LEF</a></nobr></td></tr></table></div><h2 class="standard"><a class="sec" name="auxindex" id="auxindex"/>6&#160;&#160;Auxiliary Routines Associated with Library Routine Parameters</h2>
<div class="paramtext">None.</div><h2 class="standard"><a class="sec" name="withdrawn" id="withdrawn"/>7&#160;&#160;Routines Withdrawn or Scheduled for Withdrawal</h2>
<div class="left-tablediv"><table class="wdrn"><tbody>
<tr><td class="libdoc" valign="top"><b>Withdrawn<br/>Routine</b></td><td class="libdoc" valign="top" align="center"><b>Mark of<br/>Withdrawal</b></td><td class="libdoc" valign="top"><br/><b>Replacement Routine(s)</b></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AAF">F01AAF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07adf.xml">F07ADF (DGETRF)</a> and <a class="rout" href="../F07/f07ajf.xml">F07AJF (DGETRI)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01ACF">F01ACF</a></td><td class="libdoc" valign="top" align="center">16</td><td class="libdoc" valign="top"><a class="rout" href="../F01/f01abf.xml">F01ABF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AEF">F01AEF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07fdf.xml">F07FDF (DPOTRF)</a>, <a class="rout" href="../F08/f08sef.xml">F08SEF (DSYGST)</a> and <a class="rout" href="../F06/f06egf.xml">F06EGF (DSWAP)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AFF">F01AFF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F06/f06egf.xml">F06EGF (DSWAP)</a> and <a class="rout" href="../F06/f06yjf.xml">F06YJF (DTRSM)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AGF">F01AGF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08fef.xml">F08FEF (DSYTRD)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AHF">F01AHF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08fgf.xml">F08FGF (DORMTR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AJF">F01AJF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08fef.xml">F08FEF (DSYTRD)</a> and <a class="rout" href="../F08/f08fff.xml">F08FFF (DORGTR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AKF">F01AKF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nef.xml">F08NEF (DGEHRD)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01ALF">F01ALF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08ngf.xml">F08NGF (DORMHR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AMF">F01AMF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nsf.xml">F08NSF (ZGEHRD)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01ANF">F01ANF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nuf.xml">F08NUF (ZUNMHR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01APF">F01APF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F06/f06qff.xml">F06QFF</a> and <a class="rout" href="../F08/f08nff.xml">F08NFF (DORGHR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01ATF">F01ATF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nhf.xml">F08NHF (DGEBAL)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AUF">F01AUF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08njf.xml">F08NJF (DGEBAK)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AVF">F01AVF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nvf.xml">F08NVF (ZGEBAL)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AWF">F01AWF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08nwf.xml">F08NWF (ZGEBAK)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AXF">F01AXF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F06/f06eff.xml">F06EFF (DCOPY)</a> and <a class="rout" href="../F08/f08bef.xml">F08BEF (DGEQPF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AYF">F01AYF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08gef.xml">F08GEF (DSPTRD)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01AZF">F01AZF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08ggf.xml">F08GGF (DOPMTR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BCF">F01BCF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08fsf.xml">F08FSF (ZHETRD)</a> and <a class="rout" href="../F08/f08ftf.xml">F08FTF (ZUNGTR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BDF">F01BDF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07fdf.xml">F07FDF (DPOTRF)</a>, <a class="rout" href="../F08/f08sef.xml">F08SEF (DSYGST)</a> and <a class="rout" href="../F06/f06egf.xml">F06EGF (DSWAP)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BEF">F01BEF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F06/f06yff.xml">F06YFF (DTRMM)</a> and <a class="rout" href="../F06/f06egf.xml">F06EGF (DSWAP)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BNF">F01BNF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07frf.xml">F07FRF (ZPOTRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BPF">F01BPF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07frf.xml">F07FRF (ZPOTRF)</a> and <a class="rout" href="../F07/f07fwf.xml">F07FWF (ZPOTRI)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BQF">F01BQF</a></td><td class="libdoc" valign="top" align="center">16</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07gdf.xml">F07GDF (DPPTRF)</a> or <a class="rout" href="../F07/f07pdf.xml">F07PDF (DSPTRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BTF">F01BTF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07adf.xml">F07ADF (DGETRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BWF">F01BWF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08hef.xml">F08HEF (DSBTRD)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01BXF">F01BXF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07fdf.xml">F07FDF (DPOTRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01CLF">F01CLF</a></td><td class="libdoc" valign="top" align="center">16</td><td class="libdoc" valign="top"><a class="rout" href="../F06/f06yaf.xml">F06YAF (DGEMM)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01LBF">F01LBF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07bdf.xml">F07BDF (DGBTRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01MAF">F01MAF</a></td><td class="libdoc" valign="top" align="center">19</td><td class="libdoc" valign="top"><a class="rout" href="../F11/f11jaf.xml">F11JAF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01NAF">F01NAF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../F07/f07brf.xml">F07BRF (ZGBTRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01QCF">F01QCF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08aef.xml">F08AEF (DGEQRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01QDF">F01QDF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08agf.xml">F08AGF (DORMQR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01QEF">F01QEF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08aff.xml">F08AFF (DORGQR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01QFF">F01QFF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08bef.xml">F08BEF (DGEQPF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01RCF">F01RCF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08asf.xml">F08ASF (ZGEQRF)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01RDF">F01RDF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08auf.xml">F08AUF (ZUNMQR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01REF">F01REF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08atf.xml">F08ATF (ZUNGQR)</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#F01RFF">F01RFF</a></td><td class="libdoc" valign="top" align="center">18</td><td class="libdoc" valign="top"><a class="rout" href="../F08/f08bsf.xml">F08BSF (ZGEQPF)</a></td></tr></tbody></table></div><h2 class="standard"><a class="sec" name="references" id="references"/>8&#160;&#160;References</h2><div class="paramtext"><a name="ref105" id="ref105"/>Golub G H and Van Loan C F (1996)  <i>Matrix Computations</i> (3rd Edition) Johns Hopkins University Press, Baltimore </div>
<div class="paramtext"><a name="ref003" id="ref003"/>Wilkinson J H (1965)  <i>The Algebraic Eigenvalue Problem</i> Oxford University Press, Oxford </div>
<div class="paramtext"><a name="ref253" id="ref253"/>Wilkinson J H (1977)  Some recent advances in numerical linear algebra <i>The State of the Art in Numerical Analysis</i> (ed D A H Jacobs) Academic Press </div>
<div class="paramtext"><a name="ref103" id="ref103"/>Wilkinson J H and Reinsch C (1971)  <i>Handbook for Automatic Computation II, Linear Algebra</i> Springer&#8211;Verlag </div><hr/><div><a class="chap" href="f01conts.xml">F01 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/F01/f01intro.pdf">F01 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div>
<div><hr/><a class="genint" href="../FRONTMATTER/copyright.xml">&#169; The Numerical Algorithms Group Ltd, Oxford, UK. 2011</a></div></body></html>