<?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>F07 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="f07conts.xml">F07 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/F07/f07intro.pdf">F07 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/>F07 &#8211; Linear Equations (LAPACK)</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>Notation</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>Solution of Systems of Equations</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocbackground4');"><span class="htmltocplus" id="tocbackground4plus">+</span><span class="htmltocminus" id="tocbackground4minus">&#8722;</span></span>
<a class="htmltoc" href="#background4">2.4&#160;&#160;<b>Sensitivity and Error Analysis</b></a>
<div class="htmltocitem" id="tocbackground4">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background41">2.4.1&#160;&#160;<b>Normwise error bounds</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background42">2.4.2&#160;&#160;<b>Estimating condition numbers</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#backgroundscaling">2.4.3&#160;&#160;<b>Scaling and Equilibration</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background43">2.4.4&#160;&#160;<b>Componentwise error bounds</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background44">2.4.5&#160;&#160;<b>Iterative refinement of the solution</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background5">2.5&#160;&#160;<b>Matrix Inversion</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background6">2.6&#160;&#160;<b>Packed Storage Formats</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background7">2.7&#160;&#160;<b>Band and Tridiagonal Matrices</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background8">2.8&#160;&#160;<b>Block Partitioned Algorithms</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#mixedprecision">2.9&#160;&#160;<b>Mixed Precision LAPACK Routines</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>Available Routines</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_2">3.2&#160;&#160;<b>NAG Names and LAPACK Names</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 Storage Schemes</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>Conventional storage</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm32">3.3.2&#160;&#160;<b>Packed storage</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_32a">3.3.3&#160;&#160;<b>Rectangular Full Packed (RFP) Storage</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_33">3.3.4&#160;&#160;<b>Band storage</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_34">3.3.5&#160;&#160;<b>Unit triangular matrices</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_35">3.3.6&#160;&#160;<b>Real diagonal elements of complex matrices</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocrecomm_4');"><span class="htmltocplus" id="tocrecomm_4plus">+</span><span class="htmltocminus" id="tocrecomm_4minus">&#8722;</span></span>
<a class="htmltoc" href="#recomm_4">3.4&#160;&#160;<b>Parameter Conventions</b></a>
<div class="htmltocitem" id="tocrecomm_4">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_41">3.4.1&#160;&#160;<b>Option parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_42">3.4.2&#160;&#160;<b>Problem dimensions</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_43">3.4.3&#160;&#160;<b>Length of work arrays</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_44">3.4.4&#160;&#160;<b>Error-handling and the diagnostic parameter INFO</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocrecomm_5');"><span class="htmltocplus" id="tocrecomm_5plus">+</span><span class="htmltocminus" id="tocrecomm_5minus">&#8722;</span></span>
<a class="htmltoc" href="#recomm_5">3.5&#160;&#160;<b>Tables of Available Computational Routines</b></a>
<div class="htmltocitem" id="tocrecomm_5">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_5_real">3.5.1&#160;&#160;<b>Real matrices</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#recomm_5_complex">3.5.2&#160;&#160;<b>Complex matrices</b></a>
</div>
</div>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#index">4&#160;&#160;<b>Functionality Index</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#auxindex">5&#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">6&#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">7&#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 routines for the solution of systems of simultaneous linear equations, and associated computations.  It provides routines for
<ul class="listind"><li class="listind">&#8211; matrix factorizations;</li><li class="listind">&#8211; solution of linear equations;</li><li class="listind">&#8211; estimating matrix condition numbers;</li><li class="listind">&#8211; computing error bounds for the solution of linear equations;</li><li class="listind">&#8211; matrix inversion;</li><li class="listind">&#8211; computing scaling factors to equilibrate a matrix.</li></ul>
Routines are provided for both <span class="italic">real</span> and  <span class="italic">complex</span> data.</div><div class="paramtext">For a general introduction to the solution of systems of linear equations,  you should turn first to the <a class="chapint" href="../F04/f04intro.xml">F04 Chapter Introduction</a>.  The decision trees, in <a class="sec" href="../F04/f04intro.xml#dtree">Section 4</a> in  the F04 Chapter Introduction, direct you to the most appropriate routines in <a class="chap" href="../F04/f04conts.xml">Chapters F04</a> or <a class="chap" href="../F07/f07conts.xml">F07</a> for solving your particular problem.  In particular, <a class="chap" href="../F04/f04conts.xml">Chapters F04</a> and <a class="chap" href="../F07/f07conts.xml">F07</a> contain <span class="italic">Black Box</span> (or <span class="italic">driver</span>) routines which enable some standard types of problem to be solved by a call to a single routine.  Where possible, routines in <a class="chap" href="../F04/f04conts.xml">Chapter F04</a> call  <a class="chap" href="../F07/f07conts.xml">Chapter F07</a> routines to perform the necessary computational tasks.</div><div class="paramtext">
There are two types of driver routines in this chapter: <span class="italic">simple drivers</span> which just return the solution to the linear equations; and <span class="italic">expert drivers</span> which also return condition and error estimates and, in many cases, also allow equilibration.  The simple drivers for real matrices have names of the form
F07_AF (D__SV)

and for complex matrices have names of the form
F07_NF (Z__SV).
  
The expert drivers for real matrices have names of the form
F07_BF (D__SVX)

and for complex matrices have names of the form
F07_PF (Z__SVX).

</div><div class="paramtext">The routines in this chapter (<a class="chap" href="../F07/f07conts.xml">Chapter F07</a>)  handle only <span class="italic">dense</span> and  <span class="italic">band</span> matrices (not matrices with more specialized structures,  or general sparse matrices).</div><div class="paramtext">The routines in this chapter have all been derived from the LAPACK project  (see <a class="ref" href="#ref562">Anderson <span class="italic">et al.</span> (1999)</a>).  They have been designed to be efficient on a wide range of high-performance computers, without compromising efficiency on conventional serial machines.</div><h2 class="standard"><a class="sec" name="background" id="background"/>2&#160;&#160;Background to the Problems</h2>
<div class="paramtext">This section is only a brief introduction to the numerical solution of systems of linear equations.  Consult a standard textbook, for example <a class="ref" href="#ref105">Golub and Van Loan (1996)</a> for a more thorough discussion.</div><h3 class="standard"><a class="sec" name="background1" id="background1"/>2.1&#160;&#160;Notation</h3>
<div class="paramtext">We use the standard notation for a system of simultaneous linear equations:

<div class="formula-eqn"><a name="eqn2.1" id="eqn2.1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi>
</m:math></td><td class="formula-eqn2">
      (1)
     </td></tr></table></div>

where <m:math><m:mi>A</m:mi></m:math>&#160;is the <span class="italic">coefficient matrix</span>,  <m:math><m:mi>b</m:mi></m:math>&#160;is the <span class="italic">right-hand side</span>, and <m:math><m:mi>x</m:mi></m:math>&#160;is the <span class="italic">solution</span>.  <m:math><m:mi>A</m:mi></m:math>&#160;is assumed to be a square matrix of order <m:math><m:mi>n</m:mi></m:math>.</div><div class="paramtext">If there are several right-hand sides, we write

<div class="formula-eqn"><a name="eqn2.2" id="eqn2.2"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:mi>A</m:mi><m:mi>X</m:mi><m:mo>=</m:mo><m:mi>B</m:mi>
</m:math></td><td class="formula-eqn2">
      (2)
     </td></tr></table></div>

where the columns of <m:math><m:mi>B</m:mi></m:math>&#160;are the individual right-hand sides,  and the columns of <m:math><m:mi>X</m:mi></m:math>&#160;are the corresponding solutions.</div><div class="paramtext">We also use the following notation, both here and in the routine documents:
<div class="left-tablediv"><table class="frame-none">
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;"><m:math><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math></td>
    <td class="libdoc" valign="top" align="left">a <span class="italic">computed</span> solution to  <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>, (which usually differs from the exact solution <m:math><m:mi>x</m:mi></m:math>&#160;because of round-off error)</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;">
     <m:math>
      <m:mi>r</m:mi>
      <m:mo>=</m:mo>
      <m:mi>b</m:mi><m:mo>-</m:mo><m:mi>A</m:mi><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="left">the <span class="italic">residual</span> corresponding to the computed solution <m:math><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;">
     <m:math>
      <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>x</m:mi></m:mfenced><m:mi>&#8734;</m:mi></m:msub><m:mo>=</m:mo>
      <m:mstyle displaystyle="true"><m:munder><m:mi mathvariant="normal">max</m:mi><m:mi>i</m:mi></m:munder></m:mstyle><m:mspace width="0.25em"/>
      <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="left">the <m:math><m:mi>&#8734;</m:mi></m:math>-norm of the vector <m:math><m:mi>x</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;">
     <m:math>
      <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>x</m:mi></m:mfenced><m:mn>1</m:mn></m:msub>
      <m:mo>=</m:mo>
      <m:mstyle displaystyle="true"><m:munderover>
       <m:mi>&#8721;</m:mi>
       <m:mrow><m:mi>j</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow>
       <m:mi>n</m:mi>
      </m:munderover></m:mstyle>
      <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="left">the <m:math><m:mn>1</m:mn></m:math>-norm of the vector <m:math><m:mi>x</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;">
     <m:math>
      <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced><m:mi>&#8734;</m:mi></m:msub>
      <m:mo>=</m:mo>
      <m:mstyle displaystyle="true"><m:munder><m:mi mathvariant="normal">max</m:mi><m:mi>i</m:mi></m:munder></m:mstyle><m:mspace width="0.25em"/>
      <m:mstyle displaystyle="true"><m:munder><m:mo>&#8721;</m:mo><m:mi>j</m:mi></m:munder></m:mstyle><m:mspace width="0.25em"/>
      <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="left">the <m:math><m:mi>&#8734;</m:mi></m:math>-norm of the matrix <m:math><m:mi>A</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;">
     <m:math>
      <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced><m:mn>1</m:mn></m:msub>
      <m:mo>=</m:mo>
      <m:mstyle displaystyle="true"><m:munder><m:mi mathvariant="normal">max</m:mi><m:mi>j</m:mi></m:munder></m:mstyle><m:mspace width="0.25em"/>
      <m:mstyle displaystyle="true"><m:munderover>
       <m:mi>&#8721;</m:mi>
       <m:mrow><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow>
       <m:mi>n</m:mi>
      </m:munderover></m:mstyle>
      <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="left">the <m:math><m:mn>1</m:mn></m:math>-norm of the matrix <m:math><m:mi>A</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;"><m:math><m:mfenced open="|" close="|" separators=""><m:mi>x</m:mi></m:mfenced></m:math></td>
    <td class="libdoc" valign="top" align="left">the vector with elements <m:math><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:mfenced></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:12em;"><m:math><m:mfenced open="|" close="|" separators=""><m:mi>A</m:mi></m:mfenced></m:math></td>
    <td class="libdoc" valign="top" align="left">the matrix with elements  <m:math><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced></m:math></td>
   </tr>
  </tbody>
 </table></div>
</div><div class="paramtext">Inequalities of the form <m:math><m:mfenced open="|" close="|" separators=""><m:mi>A</m:mi></m:mfenced><m:mo>&#8804;</m:mo><m:mfenced open="|" close="|" separators=""><m:mi>B</m:mi></m:mfenced></m:math>&#160;are interpreted component-wise, that is <m:math><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced><m:mo>&#8804;</m:mo><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>b</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced></m:math>&#160;for all  <m:math><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:math>.</div><h3 class="standard"><a class="sec" name="background2" id="background2"/>2.2&#160;&#160;Matrix Factorizations</h3>
<div class="paramtext">If <m:math><m:mi>A</m:mi></m:math>&#160;is upper or lower triangular, <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 solved by a straightforward process of backward or forward substitution.</div><div class="paramtext">Otherwise, the solution is obtained after first factorizing <m:math><m:mi>A</m:mi></m:math>,  as follows.</div><div class="paramtext"><b>General matrices (<span class="bitalic">LU</span> factorization with partial pivoting)</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>P</m:mi><m:mi>L</m:mi><m:mi>U</m:mi>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>P</m:mi></m:math>&#160;is a permutation matrix, <m:math><m:mi>L</m:mi></m:math>&#160;is lower-triangular with diagonal elements equal to <m:math><m:mn>1</m:mn></m:math>, and <m:math><m:mi>U</m:mi></m:math>&#160;is upper-triangular; the permutation matrix <m:math><m:mi>P</m:mi></m:math>&#160;(which represents row interchanges) is needed to ensure numerical stability.</div><div class="paramtext"><b>Symmetric positive definite matrices (Cholesky factorization)</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:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>U</m:mi>
 <m:mtext>&#8195; or &#8195;</m:mtext>
 <m:mi>A</m:mi><m:mo>=</m:mo><m:mi>L</m:mi><m:msup><m:mi>L</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>U</m:mi></m:math>&#160;is upper triangular and <m:math><m:mi>L</m:mi></m:math>&#160;is lower triangular.</div><div class="paramtext"><b>Symmetric positive semidefinite matrices (pivoted Cholesky factorization)</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>P</m:mi><m:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>U</m:mi><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
<m:mtext>&#8195;or&#8195;</m:mtext>
<m:mi>A</m:mi><m:mo>=</m:mo><m:mi>P</m:mi><m:mi>L</m:mi><m:msup><m:mi>L</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><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 a permutation matrix, <m:math><m:mi>U</m:mi></m:math>&#160;is upper triangular and <m:math><m:mi>L</m:mi></m:math>&#160;is lower triangular. The permutation matrix <m:math><m:mi>P</m:mi></m:math>&#160;(which represents row-and-column interchanges) is needed to ensure numerical stability and to reveal the numerical rank of <m:math><m:mi>A</m:mi></m:math>.</div><div class="paramtext"><b>Symmetric indefinite matrices (Bunch&#8211;Kaufman factorization)</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>P</m:mi><m:mi>U</m:mi><m:mi>D</m:mi>
 <m:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
 <m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
 <m:mtext>&#8195; or &#8195;</m:mtext>
 <m:mi>A</m:mi>
 <m:mo>=</m:mo>
 <m:mi>P</m:mi><m:mi>L</m:mi><m:mi>D</m:mi>
 <m:msup><m:mi>L</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup>
 <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 a permutation matrix, <m:math><m:mi>U</m:mi></m:math>&#160;is upper triangular, <m:math><m:mi>L</m:mi></m:math>&#160;is lower triangular, and <m:math><m:mi>D</m:mi></m:math>&#160;is a block diagonal matrix with diagonal blocks of order <m:math><m:mn>1</m:mn></m:math>&#160;or <m:math><m:mn>2</m:mn></m:math>; <m:math><m:mi>U</m:mi></m:math>&#160;and <m:math><m:mi>L</m:mi></m:math>&#160;have diagonal elements equal to <m:math><m:mn>1</m:mn></m:math>, and have <m:math><m:mn>2</m:mn></m:math>&#160;by <m:math><m:mn>2</m:mn></m:math>&#160;unit matrices on the diagonal corresponding to the <m:math><m:mn>2</m:mn></m:math>&#160;by <m:math><m:mn>2</m:mn></m:math>&#160;blocks of <m:math><m:mi>D</m:mi></m:math>.  The permutation matrix <m:math><m:mi>P</m:mi></m:math>&#160;(which represents symmetric row-and-column interchanges) and the  <m:math><m:mn>2</m:mn></m:math>&#160;by <m:math><m:mn>2</m:mn></m:math>&#160;blocks in <m:math><m:mi>D</m:mi></m:math>&#160;are needed to ensure numerical stability.  If <m:math><m:mi>A</m:mi></m:math>&#160;is in fact positive definite, no interchanges are needed and the factorization reduces to <m:math><m:mi>A</m:mi><m:mo>=</m:mo><m:mi>U</m:mi><m:mi>D</m:mi><m:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>&#160;or <m:math><m:mi>A</m:mi><m:mo>=</m:mo><m:mi>L</m:mi><m:mi>D</m:mi><m:msup><m:mi>L</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup></m:math>&#160;with diagonal <m:math><m:mi>D</m:mi></m:math>, which is simply a variant form of the Cholesky factorization.</div><h3 class="standard"><a class="sec" name="background3" id="background3"/>2.3&#160;&#160;Solution of Systems of Equations</h3>
<div class="paramtext">Given one of the above matrix factorizations, it is straightforward to compute a solution to <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>&#160;by solving two subproblems,  as shown below, first for <m:math><m:mi>y</m:mi></m:math>&#160;and then for <m:math><m:mi>x</m:mi></m:math>.  Each subproblem consists essentially of solving a triangular system of equations by forward or backward substitution; the permutation matrix  <m:math><m:mi>P</m:mi></m:math>&#160;and the block diagonal matrix <m:math><m:mi>D</m:mi></m:math>&#160;introduce only a little extra complication:</div><div class="paramtext"><b>General matrices (</b> <span class="bitalic">LU</span>
<b>factorization)</b><div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mtable columnalign="left">
 <m:mtr>
  <m:mtd><m:mi>L</m:mi><m:mi>y</m:mi><m:mo>=</m:mo><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>b</m:mi></m:mtd>
  </m:mtr><m:mtr>
  <m:mtd><m:mi>U</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>y</m:mi></m:mtd>
 </m:mtr>
</m:mtable>
</m:math></td><td class="formula2"/></tr></table></div><b>Symmetric positive definite matrices (Cholesky factorization)</b><div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>y</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:mtd>
   </m:mtr><m:mtr>
   <m:mtd><m:mi>U</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>y</m:mi></m:mtd>
  </m:mtr>
 </m:mtable>
 <m:mtext>&#8195; or &#8195;</m:mtext>
 <m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:mi>L</m:mi><m:mi>y</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:mtd>
   </m:mtr><m:mtr>
   <m:mtd><m:msup><m:mi>L</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>y</m:mi></m:mtd>
  </m:mtr>
 </m:mtable>
</m:math></td><td class="formula2"/></tr></table></div><b>Symmetric indefinite matrices (Bunch&#8211;Kaufman factorization)</b><div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mtable columnalign="left">
 <m:mtr>
  <m:mtd><m:mi>P</m:mi><m:mi>U</m:mi><m:mi>D</m:mi><m:mi>y</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:mtd>
  </m:mtr><m:mtr>
  <m:mtd><m:msup><m:mi>U</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>y</m:mi></m:mtd>
 </m:mtr>
</m:mtable>
<m:mtext>&#8195; or &#8195;</m:mtext>
<m:mtable columnalign="left">
 <m:mtr>
  <m:mtd><m:mi>P</m:mi><m:mi>L</m:mi><m:mi>D</m:mi><m:mi>y</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:msup><m:mi>L</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:msup><m:mi>P</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>y</m:mi></m:mtd>
 </m:mtr>
</m:mtable>
</m:math></td><td class="formula2"/></tr></table></div></div><h3 class="standard"><a class="sec" name="background4" id="background4"/>2.4&#160;&#160;Sensitivity and Error Analysis</h3><h4 class="standard"><a class="sec" name="background41" id="background41"/>2.4.1&#160;&#160;Normwise error bounds</h4>
<div class="paramtext">Frequently, in practical problems the data <m:math><m:mi>A</m:mi></m:math>&#160;and  <m:math><m:mi>b</m:mi></m:math>&#160;are not known exactly, and it is then important to understand how uncertainties or perturbations in the data can affect the solution.</div><div class="paramtext">If <m:math><m:mi>x</m:mi></m:math>&#160;is the exact solution to <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>,  and <m:math><m:mi>x</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>x</m:mi></m:math>&#160;is the exact solution to a perturbed problem <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>A</m:mi></m:mfenced><m:mfenced separators=""><m:mi>x</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>x</m:mi></m:mfenced><m:mo>=</m:mo><m:mfenced separators=""><m:mi>b</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>b</m:mi></m:mfenced></m:math>, then

<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>&#948;</m:mi><m:mi>x</m:mi></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>x</m:mi></m:mfenced>
 </m:mfrac><m:mo>&#8804;</m:mo><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced>
<m:mfenced separators=""><m:mfrac><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>&#948;</m:mi><m:mi>A</m:mi></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced>
 </m:mfrac><m:mo>+</m:mo><m:mfrac><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>&#948;</m:mi><m:mi>b</m:mi></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>b</m:mi></m:mfenced>
 </m:mfrac></m:mfenced><m:mo>+</m:mo><m:mo>&#8943;</m:mo><m:mfenced separators=""><m:mtext>second-order terms</m:mtext></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>&#160;is the <span class="italic">condition number</span>  of <m:math><m:mi>A</m:mi></m:math>&#160;defined by

<div class="formula-eqn"><a name="eqn2.3" id="eqn2.3"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced>
 <m:mo>=</m:mo>
 <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced><m:mo>.</m:mo><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:mtext>.</m:mtext>
</m:math></td><td class="formula-eqn2">
      (3)
     </td></tr></table></div></div><div class="paramtext">In other words, relative errors in <m:math><m:mi>A</m:mi></m:math>&#160;or <m:math><m:mi>b</m:mi></m:math>&#160;may be amplified in <m:math><m:mi>x</m:mi></m:math>&#160;by a factor <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>.  <a class="sec" href="#background42">Section 2.4.2</a> discusses how to compute or estimate  <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>.</div><div class="paramtext">Similar considerations apply when we study the effects of <span class="italic">rounding errors</span> introduced by computation in finite precision.  The effects of rounding errors can be shown to be equivalent to perturbations in the original data, such that <m:math>
 <m:mfrac other="display">
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>&#948;</m:mi><m:mi>A</m:mi></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced>
 </m:mfrac>
</m:math>&#160;and  <m:math>
 <m:mfrac other="display">
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>&#948;</m:mi><m:mi>b</m:mi></m:mfenced>
  <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>b</m:mi></m:mfenced>
 </m:mfrac>
</m:math>&#160;are usually at most  <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>n</m:mi></m:mfenced><m:mi>&#949;</m:mi></m:math>, where <m:math><m:mi>&#949;</m:mi></m:math>&#160;is the <span class="bitalic">machine precision</span>  and <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>n</m:mi></m:mfenced></m:math>&#160;is an increasing function of <m:math><m:mi>n</m:mi></m:math>&#160;which is seldom larger than <m:math><m:mn>10</m:mn><m:mi>n</m:mi></m:math>&#160;(although in theory it can be as large as <m:math><m:msup><m:mn>2</m:mn><m:mrow><m:mi>n</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup></m:math>).</div><div class="paramtext">In other words, the computed solution <m:math><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math>&#160;is the exact solution of a linear system <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>A</m:mi></m:mfenced><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover><m:mo>=</m:mo><m:mi>b</m:mi><m:mo>+</m:mo><m:mi>&#948;</m:mi><m:mi>b</m:mi></m:math>&#160;which is close to the original system in a normwise sense.</div><h4 class="standard"><a class="sec" name="background42" id="background42"/>2.4.2&#160;&#160;Estimating condition numbers</h4>
<div class="paramtext">The previous section has emphasised the usefulness of the quantity <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>&#160;in understanding the sensitivity of the solution of <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>.  To compute the value of <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>&#160;from equation  <a class="eqn" href="#eqn2.3">(3)</a> is more expensive than solving  <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>&#160;in the first place.  Hence it is standard practice to <span class="italic">estimate</span> <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>, in either the <m:math><m:mn>1</m:mn></m:math>-norm or the <m:math><m:mi>&#8734;</m:mi></m:math>-norm, by a method which only requires <m:math><m:mrow><m:mi mathvariant="italic">O</m:mi><m:mfenced separators=""><m:msup><m:mi>n</m:mi><m:mn>2</m:mn></m:msup></m:mfenced></m:mrow></m:math>&#160;additional operations, assuming that a suitable factorization of <m:math><m:mi>A</m:mi></m:math>&#160;is available.</div><div class="paramtext">The method used in this chapter is Higham's modification of Hager's method  (see <a class="ref" href="#ref526">Higham (1988)</a>).  It yields an estimate which is never larger than the true value, but which seldom falls short by more than a factor of <m:math><m:mn>3</m:mn></m:math>&#160;(although artificial examples can be constructed where it is much smaller).  This is acceptable since it is the order of magnitude of <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>&#160;which is important rather than its precise value.</div><div class="paramtext">Because <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>&#160;is infinite if <m:math><m:mi>A</m:mi></m:math>&#160;is singular,  the routines in this chapter actually return the <span class="italic">reciprocal</span>  of <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>.</div><h4 class="standard"><a class="sec" name="backgroundscaling" id="backgroundscaling"/>2.4.3&#160;&#160;Scaling and Equilibration</h4>
<div class="paramtext">The condition of a matrix and hence the accuracy of the computed solution, may be improved by scaling; thus if <m:math><m:msub><m:mi>D</m:mi><m:mn>1</m:mn></m:msub></m:math>&#160;and <m:math><m:msub><m:mi>D</m:mi><m:mn>2</m:mn></m:msub></m:math>&#160;are diagonal matrices with positive diagonal elements, then

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>B</m:mi>
 <m:mo>=</m:mo>
 <m:msub><m:mi>D</m:mi><m:mn>1</m:mn></m:msub> 
 <m:mi>A</m:mi>
 <m:msub><m:mi>D</m:mi><m:mn>2</m:mn></m:msub>
</m:math></td><td class="formula2"/></tr></table></div>

is the scaled matrix.  A general matrix is said to be <span class="italic">equilibrated</span> if it is scaled so that the lengths of its rows and columns have approximately equal magnitude.  Similarly a general matrix is said to be <span class="italic">row-equilibrated (column-equilibrated)</span> if it is scaled so that the lengths of its rows (columns) have approximately equal magnitude.  Note that row scaling can affect the choice of pivot when partial pivoting is used in the factorization of <m:math><m:mi>A</m:mi></m:math>.</div><div class="paramtext">A symmetric or Hermitian positive definite matrix is said to be equilibrated if the diagonal elements are all approximately equal to unity.</div><div class="paramtext">For further information on scaling and equilibration see Section 3.5.2 of <a class="ref" href="#ref105">Golub and Van Loan (1996)</a>, Section 7.2, 7.3 and 9.8 of <a class="ref" href="#ref526">Higham (1988)</a> and Section 5 of Chapter 4 of <a class="ref" href="#ref003">Wilkinson (1965)</a>. </div><div class="paramtext">Routines are provided to return the scaling factors that equilibrate a matrix for general, general band, symmetric and Hermitian positive definite and symmetric and Hermitian positive definite band matrices.</div><h4 class="standard"><a class="sec" name="background43" id="background43"/>2.4.4&#160;&#160;Componentwise error bounds</h4>
<div class="paramtext">A disadvantage of normwise error bounds is that they do not reflect any special structure in the data <m:math><m:mi>A</m:mi></m:math>&#160;and <m:math><m:mi>b</m:mi></m:math>&#160;&#8211; that is, a pattern of elements which are known to be zero &#8211;  and the bounds are dominated by the largest elements in the data.</div><div class="paramtext">Componentwise error bounds overcome these limitations.  Instead of the normwise relative error, we can bound the relative error in <span class="italic">each component</span> of <m:math><m:mi>A</m:mi></m:math>&#160;and <m:math><m:mi>b</m:mi></m:math>:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:munder><m:mi mathvariant="normal">max</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi><m:mi>k</m:mi></m:mrow></m:munder><m:mspace width="0.25em"/>
<m:mfenced separators=""><m:mfrac><m:mfenced open="|" close="|" separators=""><m:mi>&#948;</m:mi><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced>
  <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:mfenced>
 </m:mfrac><m:mo>,</m:mo>   <m:mfrac><m:mfenced open="|" close="|" separators=""><m:mi>&#948;</m:mi><m:msub><m:mi>b</m:mi><m:mi>k</m:mi></m:msub></m:mfenced>
  <m:mfenced open="|" close="|" separators=""><m:msub><m:mi>b</m:mi><m:mi>k</m:mi></m:msub></m:mfenced>
 </m:mfrac></m:mfenced>
<m:mo>&#8804;</m:mo><m:mi>&#969;</m:mi>
</m:math></td><td class="formula2"/></tr></table></div>

where the <span class="italic">component-wise backward error bound</span>  <m:math><m:mi>&#969;</m:mi></m:math>&#160;is given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>&#969;</m:mi><m:mo>=</m:mo>
 <m:munder><m:mi mathvariant="normal">max</m:mi><m:mi>i</m:mi></m:munder><m:mspace width="0.25em"/>
 <m:mfrac><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>r</m:mi><m:mi>i</m:mi></m:msub></m:mfenced>
  <m:msub><m:mfenced separators=""><m:mfenced open="|" close="|" separators=""><m:mi>A</m:mi></m:mfenced><m:mo>.</m:mo><m:mfenced open="|" close="|" separators="">
<m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:mfenced><m:mo>+</m:mo><m:mfenced open="|" close="|" separators=""><m:mi>b</m:mi></m:mfenced></m:mfenced><m:mi>i</m:mi></m:msub>
 </m:mfrac><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div></div><div class="paramtext">Routines are provided in this chapter which compute <m:math><m:mi>&#969;</m:mi></m:math>,  and also compute a <span class="italic">forward error bound</span> which is sometimes much sharper than the normwise bound given earlier:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mfrac>
  <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators="">
    <m:mi>x</m:mi><m:mo>-</m:mo>
    <m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover>
   </m:mfenced><m:mi>&#8734;</m:mi></m:msub>
  <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>x</m:mi></m:mfenced><m:mi>&#8734;</m:mi></m:msub>
 </m:mfrac>
 <m:mo>&#8804;</m:mo>
 <m:mfrac>
  <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators="">
    <m:mfenced open="|" close="|" 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:mo>.</m:mo>
    <m:mfenced open="|" close="|" separators=""><m:mi>r</m:mi></m:mfenced>
   </m:mfenced><m:mi>&#8734;</m:mi></m:msub>
  <m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>x</m:mi></m:mfenced><m:mi>&#8734;</m:mi></m:msub>
 </m:mfrac>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div></div><div class="paramtext">Care is taken when computing this bound to allow for rounding errors in computing <m:math><m:mi>r</m:mi></m:math>.  The norm <m:math><m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mfenced open="|" close="|" 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:mo>.</m:mo><m:mfenced open="|" close="|" separators=""><m:mi>r</m:mi></m:mfenced></m:mfenced><m:mi>&#8734;</m:mi></m:msub></m:math>&#160;is estimated cheaply (without 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:math>) by a modification of the method used to estimate <m:math><m:mi>&#954;</m:mi><m:mfenced separators=""><m:mi>A</m:mi></m:mfenced></m:math>.</div><h4 class="standard"><a class="sec" name="background44" id="background44"/>2.4.5&#160;&#160;Iterative refinement of the solution</h4>
<div class="paramtext">If <m:math><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math>&#160;is an approximate computed solution to  <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>, and <m:math><m:mi>r</m:mi></m:math>&#160;is the corresponding residual, then a procedure for <span class="italic">iterative refinement</span>  of <m:math><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math>&#160;can be defined as follows, starting with  <m:math><m:msub><m:mi>x</m:mi><m:mn>0</m:mn></m:msub><m:mo>=</m:mo><m:mover><m:mi>x</m:mi><m:mo>^</m:mo></m:mover></m:math>:
<ul class="listind"><li class="listind">for <m:math><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>0</m:mn><m:mo>,</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mtext/></m:math>, until convergence
 <div class="left-tablediv"><table class="frame-none">
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left">compute</td>
    <td class="libdoc" valign="top" align="left"><m:math><m:msub><m:mi>r</m:mi><m:mi>i</m:mi></m:msub><m:mo>=</m:mo><m:mi>b</m:mi><m:mo>-</m:mo><m:mi>A</m:mi><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left">solve</td>
    <td class="libdoc" valign="top" align="left"><m:math><m:mi>A</m:mi><m:msub><m:mi>d</m:mi><m:mi>i</m:mi></m:msub><m:mo>=</m:mo><m:msub><m:mi>r</m:mi><m:mi>i</m:mi></m:msub></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left">compute</td>
    <td class="libdoc" valign="top" align="left"><m:math><m:msub><m:mi>x</m:mi><m:mrow><m:mi>i</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo>=</m:mo><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub><m:mo>+</m:mo><m:msub><m:mi>d</m:mi><m:mi>i</m:mi></m:msub></m:math></td>
   </tr>
  </tbody>
 </table></div></li></ul>
</div><div class="paramtext">In <a class="chap" href="../F04/f04conts.xml">Chapter F04</a>, routines are provided which perform this procedure using <span class="bitalic">additional precision</span> to compute <m:math><m:mi>r</m:mi></m:math>, and are thus able to reduce the <span class="italic">forward error</span> to the level of  <span class="bitalic">machine precision</span>.</div><div class="paramtext">The routines in this chapter do <span class="italic">not</span> use <span class="bitalic">additional precision</span> to compute <m:math><m:mi>r</m:mi></m:math>, and cannot guarantee a small forward error,  but can guarantee a <span class="italic">small backward error</span> (except in rare cases when <m:math><m:mi>A</m:mi></m:math>&#160;is very ill-conditioned, or when  <m:math><m:mi>A</m:mi></m:math>&#160;and <m:math><m:mi>x</m:mi></m:math>&#160;are sparse in such a way that  <m:math><m:mfenced open="|" close="|" separators=""><m:mi>A</m:mi></m:mfenced><m:mo>.</m:mo><m:mfenced open="|" close="|" separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;has a zero or very small component).  The iterations continue until the backward error has been reduced as much as possible;  usually only one iteration is needed.</div><h3 class="standard"><a class="sec" name="background5" id="background5"/>2.5&#160;&#160;Matrix Inversion</h3>
<div class="paramtext">It is seldom necessary to compute an explicit inverse of a matrix.  In particular, do <span class="italic">not</span> attempt to solve <m:math><m:mi>A</m:mi><m:mi>x</m:mi><m:mo>=</m:mo><m:mi>b</m:mi></m:math>&#160;by first 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:math>&#160;and then forming the matrix-vector product <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 procedure described in  <a class="sec" href="#background3">Section 2.3</a> is more efficient and more accurate.</div><div class="paramtext">However, routines are provided for the rare occasions when an inverse is needed, using one of the factorizations described in  <a class="sec" href="#background2">Section 2.2</a>.</div><h3 class="standard"><a class="sec" name="background6" id="background6"/>2.6&#160;&#160;Packed Storage Formats</h3>
<div class="paramtext">Routines which handle symmetric matrices are usually designed so that they use either the upper or lower triangle of the matrix; it is not necessary to store the whole matrix.  If the upper or lower triangle is stored conventionally in the upper or lower triangle of a two-dimensional array, the remaining elements of the array can be used to store other useful data.</div><div class="paramtext">However, that is not always convenient, and if it is important to economize on storage, the upper or lower triangle can be stored in a one-dimensional array of length <m:math><m:mi>n</m:mi><m:mfenced separators=""><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:math>&#160;or a two-dimensional array with <m:math><m:mi>n</m:mi><m:mfenced separators=""><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:math>&#160;elements; in other words, the storage is almost halved.</div><div class="paramtext">The one-dimensional array storage format is referred to as packed storage; it is described in <a class="sec" href="#recomm32">Section 3.3.2</a>.  The two-dimensional array storage format is referred to as Rectangular Full Packed (RFP) format; it is described in <a class="sec" href="#recomm_32a">Section 3.3.3</a>. They may also be used for triangular matrices.</div><div class="paramtext">Routines designed for these packed storage formats perform the same number of arithmetic operations as routines which use conventional storage. Those using a packed one-dimensional array are usually less efficient, especially on high-performance computers, so there is then a trade-off between storage and efficiency. The RFP routines are as efficient as for conventional storage, although only a small subset of routines use this format.</div><h3 class="standard"><a class="sec" name="background7" id="background7"/>2.7&#160;&#160;Band and Tridiagonal Matrices</h3>
<div class="paramtext">A <span class="italic">band</span> matrix is one whose nonzero elements are confined to a relatively small number of subdiagonals or superdiagonals on either side of the main diagonal.  A <span class="italic">tridiagonal</span> matrix is a special case of a band matrix with just one subdiagonal and one superdiagonal. Algorithms can take advantage of bandedness to reduce the amount of work and storage required.  The storage scheme used for band matrices is described in  <a class="sec" href="#recomm_33">Section 3.3.4</a>.</div><div class="paramtext">The <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>&#160;factorization for general matrices, and the Cholesky factorization for symmetric and Hermitian positive definite matrices both preserve bandedness.  Hence routines are provided which take advantage of the band structure when solving systems of linear equations.</div><div class="paramtext">The Cholesky factorization preserves bandedness in a very precise sense: the factor <m:math><m:mi>U</m:mi></m:math>&#160;or <m:math><m:mi>L</m:mi></m:math>&#160;has the same number of superdiagonals or subdiagonals as the original matrix.  In the  <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>&#160;factorization, the row-interchanges modify the band structure: if <m:math><m:mi>A</m:mi></m:math>&#160;has <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>&#160;subdiagonals and <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:math>&#160;superdiagonals, then <m:math><m:mi>L</m:mi></m:math>&#160;is not a band matrix but still has at most <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>&#160;nonzero elements below the diagonal in each column; and <m:math><m:mi>U</m:mi></m:math>&#160;has at most  <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub><m:mo>+</m:mo><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:math>&#160;superdiagonals.</div><div class="paramtext">The Bunch&#8211;Kaufman factorization does not preserve bandedness, because of the need for symmetric row-and-column permutations; hence no routines are provided for symmetric indefinite band matrices.</div><div class="paramtext">The inverse of a band matrix does not in general have a band structure, so no routines are provided for computing inverses of band matrices.</div><h3 class="standard"><a class="sec" name="background8" id="background8"/>2.8&#160;&#160;Block Partitioned Algorithms</h3>
<div class="paramtext">Many of the routines in this chapter use what is termed a <span class="italic">block partitioned algorithm</span>.  This means that at each major step of the algorithm a <span class="italic">block</span> of rows or columns is updated, and most of the computation is performed by matrix-matrix operations on these blocks.  The matrix-matrix operations are performed by calls to the Level 3 BLAS   
(see <a class="chap" href="../F06/f06conts.xml">Chapter F06</a>),
 
which are the key to achieving high performance on many modern computers.  See <a class="ref" href="#ref105">Golub and Van Loan (1996)</a> or <a class="ref" href="#ref562">Anderson <span class="italic">et al.</span> (1999)</a> for more about block partitioned algorithms.</div><div class="paramtext">The performance of a block partitioned algorithm varies to some extent with the <span class="bitalic">block size</span> &#8211; that is, the number of rows or columns per block.  This is a machine-dependent parameter, which is set to a suitable value when the library is implemented on each range of machines.  You do not normally need to be aware of what value is being used.  Different block sizes may be used for different routines.  Values in the range <m:math><m:mn>16</m:mn></m:math>&#160;to <m:math><m:mn>64</m:mn></m:math>&#160;are typical.</div><div class="paramtext">On some machines there may be no advantage from using a block partitioned algorithm, and then the routines use an <span class="italic">unblocked</span>  algorithm (effectively a block size of <m:math><m:mn>1</m:mn></m:math>), relying solely on calls to the  Level 2 BLAS 
(see <a class="chap" href="../F06/f06conts.xml">Chapter F06</a>
 
again).</div><div class="paramtext">The only situation in which you need some awareness of the block size is when it affects the amount of workspace to be supplied to a particular routine.  This is discussed in  <a class="sec" href="#recomm_43">Section 3.4.3</a>.</div><h3 class="standard"><a class="sec" name="mixedprecision" id="mixedprecision"/>2.9&#160;&#160;Mixed Precision LAPACK Routines</h3>
<div class="paramtext">Some LAPACK routines use mixed precision arithmetic in an effort to solve problems more efficiently on modern hardware.  They work by converting a double precision problem into an equivalent single precision problem, solving it and then using iterative refinement in double precision to find a full precision solution to the original problem.  The method may fail if the problem is too ill-conditioned to allow the initial single precision solution, in which case the routines fall back to solve the original problem entirely in double precision.  The vast majority of problems are not so ill-conditioned, and in those cases the technique can lead to significant gains in speed without loss of accuracy.  This is particularly true on machines where double precision arithmetic is significantly slower than single precision.</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;Available Routines</h3>
<div class="paramtext"><a class="table" href="#table1general">Tables 1</a> to <a class="table" href="#table2triangular">8</a> in  <a class="sec" href="#recomm_5">Section 3.5</a> show the  routines which are provided for performing different computations on different types of matrices.  <a class="table" href="#table1general">Tables 1</a> to <a class="table" href="#table1triangular">4</a> show routines for real matrices;  <a class="table" href="#table2general">Tables 5</a> to <a class="table" href="#table2triangular">8</a> show routines for complex matrices.  Each entry in the table gives the NAG routine name and the LAPACK double precision name (see <a class="sec" href="#recomm_2">Section 3.2</a>).</div><div class="paramtext">Routines are provided for the following types of matrix:
<ul class="listind"><li class="listind">general</li><li class="listind">general band</li><li class="listind">general tridiagonal</li><li class="listind">symmetric or Hermitian positive definite</li><li class="listind">symmetric or Hermitian positive definite (packed storage)</li><li class="listind">symmetric or Hermitian positive definite (RFP storage)</li><li class="listind">symmetric or Hermitian positive definite band</li><li class="listind">symmetric or Hermitian positive definite tridiagonal</li><li class="listind">symmetric or Hermitian indefinite</li><li class="listind">symmetric or Hermitian indefinite (packed storage)</li><li class="listind">triangular</li><li class="listind">triangular (packed storage)</li><li class="listind">triangular (RFP storage)</li><li class="listind">triangular band</li></ul>
</div><div class="paramtext">For each of the above types of matrix (except where indicated), routines are provided to perform the following computations:
<table class="standard-100"><tr>
<td style="width:3.0em;" valign="baseline"><a name="itema" id="itema"/>(a)</td>
<td valign="top">(except for RFP matrices) solve a system of linear equations (driver routines);</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemb" id="itemb"/>(b)</td>
<td valign="top">(except for RFP matrices) solve a system of linear equations with condition and error estimation (expert drivers);</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemc" id="itemc"/>(c)</td>
<td valign="top">(except for triangular matrices) factorize the matrix (see  <a class="sec" href="#background2">Section 2.2</a>);</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemd" id="itemd"/>(d)</td>
<td valign="top">solve a system of linear equations, using the factorization (see  <a class="sec" href="#background3">Section 2.3</a>);</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="iteme" id="iteme"/>(e)</td>
<td valign="top">(except for RFP matrices) estimate the condition number of the matrix, using the factorization  (see <a class="sec" href="#background42">Section 2.4.2</a>); these routines also require the norm of the original matrix (except when the matrix is triangular) which may be computed by a routine in 
<a class="chap" href="../F06/f06conts.xml">Chapter F06</a>;</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemf" id="itemf"/>(f)</td>
<td valign="top">(except for RFP matrices) refine the solution and compute forward and backward error bounds (see <a class="sec" href="#background43">Sections 2.4.4</a> and <a class="sec" href="#background44">2.4.5</a>); these routines require the original matrix and right-hand side, as well as the factorization returned from <a class="item" href="#itema">(a)</a> and the solution returned from <a class="item" href="#itemb">(b)</a>;</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemg" id="itemg"/>(g)</td>
<td valign="top">(except for band and tridiagonal matrices) invert the matrix, using the factorization  (see <a class="sec" href="#background5">Section 2.5</a>);</td>
</tr><tr>
<td style="width:3.0em;" valign="baseline"><a name="itemh" id="itemh"/>(h)</td>
<td valign="top">(except for tridiagonal, symmetric indefinite, triangular and RFP matrices) compute scale factors to equilibrate the matrix (see <a class="sec" href="#backgroundscaling">Section 2.4.3</a>).</td>
</tr></table>
</div><div class="paramtext">Thus, to solve a particular problem, it is usually only necessary to call a single driver routine, but alternatively two or more routines may be called in succession.  This is illustrated in the example programs in the routine documents.</div><h3 class="standard"><a class="sec" name="recomm_2" id="recomm_2"/>3.2&#160;&#160;NAG Names and LAPACK Names</h3>
<div class="paramtext">As well as the NAG routine name (beginning F07), <a class="table" href="#table1general">Tables 1</a> to <a class="table" href="#table2triangular">8</a> show the LAPACK routine names in double precision.</div><div class="paramtext">The routines 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="../F07/f07conts.xml">Chapter F07</a> routines in the manual normally include the LAPACK double precision names, for example, <a class="rout" href="../F07/f07adf.xml">F07ADF (DGETRF)</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 <b>XYYZZZ</b>, where the components have the following meanings:
<table class="standard-100"><tr>
<td style="width:1.5em;" valign="baseline">&#8211;</td>
<td valign="top">the initial letter <b>X</b> indicates the data type (real or complex) and precision:
 <table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">S</td>
<td valign="top">&#8211; real, single precision (in Fortran 77, <span class="mono">REAL</span>)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">D</td>
<td valign="top">&#8211; real, double precision (in Fortran 77, <span class="mono">DOUBLE</span> <span class="mono">PRECISION</span>)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">C</td>
<td valign="top">&#8211; complex, single precision (in Fortran 77, <span class="mono">COMPLEX</span>)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">Z</td>
<td valign="top">&#8211; complex, double precision (in Fortran 77, <span class="mono">COMPLEX*16</span> or <span class="mono">DOUBLE COMPLEX</span>)</td>
</tr></table></td>
</tr><tr>
<td style="width:1.5em;" valign="baseline">&#8211;</td>
<td valign="top">exceptionally, the mixed precision LAPACK routines described in <a class="sec" href="#mixedprecision">Section 2.9</a> replace the initial first letter by a pair of letters, as:
  <table class="standard-100"><tr>
<td style="width:NaNem;" valign="baseline">DS</td>
<td valign="top">&#8211; double precision routine using single precision internally</td>
</tr><tr>
<td style="width:NaNem;" valign="baseline">ZC</td>
<td valign="top">&#8211; double complex routine using single precision complex internally</td>
</tr></table></td>
</tr><tr>
<td style="width:1.5em;" valign="baseline">&#8211;</td>
<td valign="top">the letters <b>YY</b> indicate the type of the matrix <m:math><m:mi>A</m:mi></m:math>&#160;(and in some cases its storage scheme):
 <table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">GE</td>
<td valign="top">&#8211; general</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">GB</td>
<td valign="top">&#8211; general band</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">PO</td>
<td valign="top">&#8211; symmetric or Hermitian positive definite</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">PF</td>
<td valign="top">&#8211; symmetric or Hermitian positive definite (RFP storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">PP</td>
<td valign="top">&#8211; symmetric or Hermitian positive definite (packed storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">PB</td>
<td valign="top">&#8211; symmetric or Hermitian positive definite band</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">SY</td>
<td valign="top">&#8211; symmetric indefinite</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">SF</td>
<td valign="top">&#8211; symmetric indefinite (RFP storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">SP</td>
<td valign="top">&#8211; symmetric indefinite (packed storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">HE</td>
<td valign="top">&#8211; (complex) Hermitian indefinite</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">HF</td>
<td valign="top">&#8211; (complex) Hermitian indefinite (RFP storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">HP</td>
<td valign="top">&#8211; (complex) Hermitian indefinite (packed storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">GT</td>
<td valign="top">&#8211; general tridiagonal</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">PT</td>
<td valign="top">&#8211; symmetric or Hermitian positive definite tridiagonal</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">TR</td>
<td valign="top">&#8211; triangular</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">TF</td>
<td valign="top">&#8211; triangular (RFP storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">TP</td>
<td valign="top">&#8211; triangular (packed storage)</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">TB</td>
<td valign="top">&#8211; triangular band</td>
</tr></table></td>
</tr><tr>
<td style="width:1.5em;" valign="baseline">&#8211;</td>
<td valign="top">the last two or three letters <b>ZZ</b> or <b>ZZZ</b> indicate the computation performed.  Examples are:
 <table class="standard-100"><tr>
<td style="width:NaNem;" valign="baseline">TRF</td>
<td valign="top">&#8211; triangular factorization</td>
</tr><tr>
<td style="width:NaNem;" valign="baseline">TRS</td>
<td valign="top">&#8211; solution of linear equations, using the factorization</td>
</tr><tr>
<td style="width:NaNem;" valign="baseline">CON</td>
<td valign="top">&#8211; estimate condition number</td>
</tr><tr>
<td style="width:NaNem;" valign="baseline">RFS</td>
<td valign="top">&#8211; refine solution and compute error bounds</td>
</tr><tr>
<td style="width:NaNem;" valign="baseline">TRI</td>
<td valign="top">&#8211; compute inverse, using the factorization</td>
</tr></table></td>
</tr></table>
</div><div class="paramtext">Thus the routine <a class="rout" href="../F07/f07adf.xml">DGETRF</a> performs a triangular factorization of a real general matrix in double precision; the corresponding routine for a complex general matrix is <a class="rout" href="../F07/f07arf.xml">ZGETRF</a>.</div><h3 class="standard"><a class="sec" name="recomm_3" id="recomm_3"/>3.3&#160;&#160;Matrix Storage Schemes</h3>
<div class="paramtext">In this chapter the following different storage schemes are used for matrices: 
<ul class="listind"><li class="listind">&#8211; conventional storage in a two-dimensional array;</li><li class="listind">&#8211; rectangular full packed (RFP) storage for symmetric, Hermitian or triangular matrices;</li><li class="listind">&#8211; packed and RFP storage for symmetric, Hermitian or triangular matrices;</li><li class="listind">&#8211; band storage for band matrices.</li></ul>
</div><div class="paramtext">These storage schemes are compatible with those used in 
<a class="chap" href="../F06/f06conts.xml">Chapter F06</a> 
 
(especially in the BLAS) and <a class="chap" href="../F08/f08conts.xml">Chapter F08</a>, but different schemes for packed or band storage are used in a few older routines in&#160;<a class="chap" href="../F01/f01conts.xml">Chapters F01</a>, <a class="chap" href="../F02/f02conts.xml">F02</a>, <a class="chap" href="../F03/f03conts.xml">F03</a> and <a class="chap" href="../F04/f04conts.xml">F04</a>.</div><div class="paramtext">In the examples below, <m:math><m:mo>*</m:mo></m:math>&#160;indicates an array element which need not be set and is not referenced by the routines.
The examples illustrate only the relevant part of the arrays; array arguments may of course have additional rows or columns, according to the usual rules for passing array arguments in Fortran 77.</div><h4 class="standard"><a class="sec" name="recomm_31" id="recomm_31"/>3.3.1&#160;&#160;Conventional storage</h4>
<div class="paramtext">The default scheme for storing matrices is the obvious one: a matrix <m:math><m:mi>A</m:mi></m:math>&#160;is stored in a two-dimensional array A, with matrix element <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;stored in array element <m:math><m:mi mathvariant="normal">A</m:mi><m:mfenced separators=""><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mfenced> </m:math>.</div><div class="paramtext">If a matrix is <b>triangular</b> (upper or lower, as specified by the parameter UPLO), only the elements of the relevant triangle are stored; the remaining elements of the array need not be set.  Such elements are indicated by * in the examples below.</div><div class="paramtext">For example, when  <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>4</m:mn></m:math>: 
<div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2"> 
   
   
   
  <tbody> 
   <tr> 
    <td class="libdoc" valign="top" align="center"><b>UPLO</b></td>
    <td class="libdoc" valign="top" align="center"><b>Triangular matrix <m:math><m:mi mathvariant="bold-italic">A</m:mi></m:math></b></td> 
     <td class="libdoc" valign="top" align="center"><b>Storage in array A</b></td> 
   </tr><tr>
    <td class="libdoc" valign="top" align="center">'U'</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
    </tr><tr>
    <td class="libdoc" valign="top" align="center">'L'</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	</m:mtr><m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
	<m:mtd/>
	<m:mtd/>
	</m:mtr><m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
	<m:mtd/>
	</m:mtr><m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
	<m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
  </tbody>
 </table></div>
</div><div class="paramtext">Routines which handle <b>symmetric</b> or <b>Hermitian</b>  matrices allow for either the upper or lower triangle of the matrix (as specified by UPLO) to be stored in the corresponding elements of the array;  the remaining elements of the array need not be set.</div><div class="paramtext">For example, when  <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>4</m:mn></m:math>:
<div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="center"><b>UPLO</b></td>
    <td class="libdoc" valign="top" align="center"><b>Hermitian matrix</b> <m:math><m:mi mathvariant="bold-italic">A</m:mi></m:math></td>
    <td class="libdoc" valign="top" align="center"><b>Storage in array A</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="center">'U'</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>12</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>13</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>23</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>14</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>24</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>34</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mtable>
       <m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="center">'L'</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>21</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>31</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>41</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>32</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>42</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>43</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top" align="center">
     <m:math>
      <m:mtable>
       <m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
        <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
        <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
  </tbody>
 </table></div>
</div><h4 class="standard"><a class="sec" name="recomm32" id="recomm32"/>3.3.2&#160;&#160;Packed storage</h4>
<div class="paramtext">Symmetric, Hermitian or triangular matrices may be stored more compactly, if the relevant triangle (again as specified by
UPLO)
is packed by columns in a one-dimensional array.  In this chapter, as in
<a class="chap" href="../F06/f06conts.xml">Chapters F06</a> and <a class="chap" href="../F08/f08conts.xml">F08</a>,
arrays which hold matrices in packed storage, have names ending in P.  For a matrix of order <m:math><m:mi>n</m:mi></m:math>, the array must have at least <m:math><m:mi>n</m:mi><m:mfenced separators=""><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:math>&#160;elements.  So:
<ul class="listind"><li class="listind">if <m:math><m:mi mathvariant="bold">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;is stored in <m:math><m:mi mathvariant="bold">AP</m:mi><m:mfenced separators=""><m:mi>i</m:mi><m:mo>+</m:mo><m:mi>j</m:mi><m:mfenced separators=""><m:mi>j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:mfenced></m:math>&#160;for <m:math><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mi>j</m:mi></m:math>;</li><li class="listind">if <m:math><m:mi mathvariant="bold">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;is stored in <m:math><m:mi mathvariant="bold">AP</m:mi><m:mfenced separators=""><m:mi>i</m:mi><m:mo>+</m:mo><m:mfenced separators=""><m:mn>2</m:mn><m:mi>n</m:mi><m:mo>-</m:mo><m:mi>j</m:mi></m:mfenced><m:mfenced separators=""><m:mi>j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:mfenced></m:math>&#160;for <m:math><m:mi>j</m:mi><m:mo>&#8804;</m:mo><m:mi>i</m:mi></m:math>.</li></ul>
</div><div class="paramtext">For example:
<div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top">&#160;</td>
    <td class="libdoc" valign="top" align="center"><b>Triangle of matrix <m:math><m:mi>A</m:mi></m:math></b></td>
    <td class="libdoc" valign="top" align="center"><b>Packed storage in array AP</b></td>
   </tr><tr>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="bold">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
<m:mfenced><m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
</m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
 <m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub>
 <m:mfenced open="|" close="|" separators="">
  <m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub>
  <m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub>
  <m:mfenced open="|" close="" separators="">  
    <m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub>
    <m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub>
    <m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub>
  </m:mfenced>
 </m:mfenced>
  <m:msub><m:mi>a</m:mi><m:mn>14</m:mn></m:msub>
  <m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub>
  <m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub>
  <m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub>
</m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="bold">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
<m:mfenced><m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
  </m:mtr><m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
  </m:mtr><m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
   <m:mtd/>
  </m:mtr><m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
</m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
 <m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub>
 <m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub>
 <m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub>
 <m:msub><m:mi>a</m:mi><m:mn>41</m:mn></m:msub>
 <m:mfenced open="|" close="|" separators="">
   <m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub>
   <m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub>
   <m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub>
  <m:mfenced open="|" close="" separators="">
    <m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub>
    <m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub>
  </m:mfenced>
 </m:mfenced>
 <m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:math></td>
   </tr>
  </tbody>
 </table></div>
</div><div class="paramtext">Note that for real symmetric matrices, packing the upper triangle by columns is equivalent to packing the lower triangle by rows; packing the lower triangle by columns is equivalent to packing the upper triangle by rows.  (For complex Hermitian matrices, the only difference is that the off-diagonal elements are conjugated.)</div><h4 class="standard"><a class="sec" name="recomm_32a" id="recomm_32a"/>3.3.3&#160;&#160;Rectangular Full Packed (RFP) Storage</h4>
<div class="paramtext">The rectangular full packed (RFP) storage format offers the same savings in storage as the packed storage format (described in <a class="sec" href="#recomm32">Section 3.3.2</a>), but is likely to be much more efficient in general since the block structure of the matrix is maintained.  This structure can be exploited using block partition algorithms (see <a class="sec" href="#background8">Section 2.8</a> in a similar way to matrices that use conventional storage.</div><div class="figure"><a name="f07intro_rfp" id="f07intro_rfp"/><img src="../figures/f07intro_RFP_fig.png" style="height: 48em" alt="Figure f07intro_rfp"/></div><div class="figure"><b>Figure 1</b></div><div class="paramtext"><a class="fig" href="#f07intro_rfp">Figure 1</a> gives a graphical representation of the key idea of RFP for the particular case of a lower triangular matrix of even dimensions.  In all cases the original triangular matrix of stored elements is separated into a trapezoidal part and a triangular part.  The number of columns in these two parts is equal when the dimension of the matrix is even, <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>2</m:mn><m:mi>k</m:mi></m:math>, while the trapezoidal part has <m:math><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;columns when <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>.  The smaller part is then transposed and fitted onto the trapezoidal part forming a rectangle. The rectangle has dimensions <m:math><m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;and <m:math><m:mi>q</m:mi></m:math>, where <m:math><m:mi>q</m:mi><m:mo>=</m:mo><m:mi>k</m:mi></m:math>&#160;when <m:math><m:mi>n</m:mi></m:math>&#160;is even and <m:math><m:mi>q</m:mi><m:mo>=</m:mo><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;when <m:math><m:mi>n</m:mi></m:math>&#160;is odd.</div><div class="paramtext">For routines using RFP there is the option of storing the rectangle as described above (<m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>) or its transpose (<m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math>).</div><div class="paramtext">As an example, we first consider RFP for the case <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>2</m:mn><m:mi>k</m:mi></m:math>&#160;with <m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mn>3</m:mn></m:math>.</div><div class="paramtext">If <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>, then AF holds A as follows:
<ul class="listind"><li class="listind">For <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;the upper trapezoid <m:math>
 <m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>6</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the last three columns of A upper. The lower triangle <m:math>
 <m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>5</m:mn><m:mo>:</m:mo><m:mn>7</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the transpose of the first three columns of A upper.</li><li class="listind">For <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;the lower trapezoid <m:math>
 <m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>2</m:mn><m:mo>:</m:mo><m:mn>7</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the first three columns of A lower. The upper triangle <m:math>
 <m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the transpose of the last three columns of A lower.</li></ul></div><div class="paramtext">If <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math>, then AF in both UPLO cases is just the transpose of AF as defined when <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>.</div><div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" rowspan="2"><b>UPLO</b></td>
    <td class="libdoc" valign="top" rowspan="2"><b>Triangle of matrix</b> <m:math><m:mi mathvariant="bold">A</m:mi></m:math></td>
    <td class="libdoc" valign="top" colspan="2"><b>Rectangular Full Packed matrix</b> <m:math><m:mi mathvariant="bold">AF</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math></td>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top">'U'</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">02</m:mn></m:mtd>
	<m:mtd><m:mn>03</m:mn></m:mtd>
	<m:mtd><m:mn>04</m:mn></m:mtd>
	<m:mtd><m:mn>05</m:mn></m:mtd>
       </m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">12</m:mn></m:mtd>
	<m:mtd><m:mn>13</m:mn></m:mtd>
	<m:mtd><m:mn>14</m:mn></m:mtd>
	<m:mtd><m:mn>15</m:mn></m:mtd>
       </m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn mathvariant="bold">22</m:mn></m:mtd>
	<m:mtd><m:mn>23</m:mn></m:mtd>
	<m:mtd><m:mn>24</m:mn></m:mtd>
	<m:mtd><m:mn>25</m:mn></m:mtd>
       </m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>33</m:mn></m:mtd>
	<m:mtd><m:mn>34</m:mn></m:mtd>
	<m:mtd><m:mn>35</m:mn></m:mtd>
       </m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>44</m:mn></m:mtd>
	<m:mtd><m:mn>45</m:mn></m:mtd>
       </m:mtr><m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>55</m:mn></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn>03</m:mn></m:mtd>
	<m:mtd><m:mn>04</m:mn></m:mtd>
	<m:mtd><m:mn>05</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>13</m:mn></m:mtd>
	<m:mtd><m:mn>14</m:mn></m:mtd>
	<m:mtd><m:mn>15</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>23</m:mn></m:mtd>
	<m:mtd><m:mn>24</m:mn></m:mtd>
	<m:mtd><m:mn>25</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>33</m:mn></m:mtd>
	<m:mtd><m:mn>34</m:mn></m:mtd>
	<m:mtd><m:mn>35</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
	<m:mtd><m:mn>44</m:mn></m:mtd>
	<m:mtd><m:mn>45</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
	<m:mtd><m:mn>55</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">02</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">12</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">22</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn>03</m:mn></m:mtd>
	<m:mtd><m:mn>13</m:mn></m:mtd>
	<m:mtd><m:mn>23</m:mn></m:mtd>
	<m:mtd><m:mn>33</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">02</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>04</m:mn></m:mtd>
	<m:mtd><m:mn>14</m:mn></m:mtd><m:mtd><m:mn>24</m:mn></m:mtd>
	<m:mtd><m:mn>34</m:mn></m:mtd><m:mtd><m:mn>44</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">12</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>05</m:mn></m:mtd>
	<m:mtd><m:mn>15</m:mn></m:mtd><m:mtd><m:mn>25</m:mn></m:mtd>
	<m:mtd><m:mn>35</m:mn></m:mtd>
	<m:mtd><m:mn>45</m:mn></m:mtd><m:mtd><m:mn>55</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">22</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
   <tr>
    <td class="libdoc" valign="top">
     'L'
    </td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:mn>00</m:mn></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mn>10</m:mn></m:mtd>
	<m:mtd><m:mn>11</m:mn></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mn>20</m:mn></m:mtd>
	<m:mtd><m:mn>21</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mn>30</m:mn></m:mtd>
	<m:mtd><m:mn>31</m:mn></m:mtd>
	<m:mtd><m:mn>32</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mn>40</m:mn></m:mtd>
	<m:mtd><m:mn>41</m:mn></m:mtd>
	<m:mtd><m:mn>42</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
	</m:mtr><m:mtr>
	<m:mtd><m:mn>50</m:mn></m:mtd>
	<m:mtd><m:mn>51</m:mn></m:mtd>
	<m:mtd><m:mn>52</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">53</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">54</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">55</m:mn></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">53</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">54</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>10</m:mn></m:mtd>
	<m:mtd><m:mn>11</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">55</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>20</m:mn></m:mtd>
	<m:mtd><m:mn>21</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>30</m:mn></m:mtd>
	<m:mtd><m:mn>31</m:mn></m:mtd>
	<m:mtd><m:mn>32</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>40</m:mn></m:mtd>
	<m:mtd><m:mn>41</m:mn></m:mtd>
	<m:mtd><m:mn>42</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>50</m:mn></m:mtd>
	<m:mtd><m:mn>51</m:mn></m:mtd>
	<m:mtd><m:mn>52</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
<m:mtd><m:mn>00</m:mn></m:mtd>
<m:mtd><m:mn>10</m:mn></m:mtd>
<m:mtd><m:mn>20</m:mn></m:mtd>
<m:mtd><m:mn>30</m:mn></m:mtd>
<m:mtd><m:mn>40</m:mn></m:mtd>
<m:mtd><m:mn>50</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
<m:mtd><m:mn>11</m:mn></m:mtd>
<m:mtd><m:mn>21</m:mn></m:mtd>
<m:mtd><m:mn>31</m:mn></m:mtd>
<m:mtd><m:mn>41</m:mn></m:mtd>
<m:mtd><m:mn>51</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn mathvariant="bold">53</m:mn></m:mtd>
<m:mtd><m:mn mathvariant="bold">54</m:mn></m:mtd>
<m:mtd><m:mn mathvariant="bold">55</m:mn></m:mtd>
<m:mtd><m:mn>22</m:mn></m:mtd>
<m:mtd><m:mn>32</m:mn></m:mtd>
<m:mtd><m:mn>42</m:mn></m:mtd>
<m:mtd><m:mn>52</m:mn></m:mtd>
</m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
  </tbody>
 </table></div><div class="paramtext">Now we consider RFP for the case <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;and <m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mn>2</m:mn></m:math>.</div><div class="paramtext">If <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>. AF holds A as follows:
<ul class="listind"><li class="listind">if <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;the upper trapezoid <m:math>
<m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>5</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the last three columns of A upper. The lower triangle <m:math>
<m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>4</m:mn><m:mo>:</m:mo><m:mn>5</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>2</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the transpose of the first two columns of A upper;</li><li class="listind">if <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;the lower trapezoid <m:math>
<m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>5</m:mn></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the first three columns of A lower. The upper triangle <m:math>
<m:mrow><m:mi mathvariant="normal">AF</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>:</m:mo><m:mn>2</m:mn></m:mrow><m:mrow><m:mn>2</m:mn><m:mo>:</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
</m:math>&#160;consists of the transpose of the last two columns of A lower.</li></ul></div><div class="paramtext">If <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math>.  AF in both UPLO cases is just the transpose of AF as defined when <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>.</div><div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" rowspan="2"><b>UPLO</b></td>
    <td class="libdoc" valign="top" rowspan="2"><b>Triangle of matrix</b> <m:math><m:mi mathvariant="bold">A</m:mi></m:math></td>
    <td class="libdoc" valign="top" colspan="2"><b>Rectangular Full Packed matrix</b> <m:math><m:mi mathvariant="bold">AF</m:mi></m:math></td>
   </tr><tr>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math></td>
    <td class="libdoc" valign="top"><m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top">'U'</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
	<m:mtd><m:mn>02</m:mn></m:mtd>
	<m:mtd><m:mn>03</m:mn></m:mtd>
	<m:mtd><m:mn>04</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd/>
	<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
	<m:mtd><m:mn>12</m:mn></m:mtd>
	<m:mtd><m:mn>13</m:mn></m:mtd>
	<m:mtd><m:mn>14</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>22</m:mn></m:mtd>
	<m:mtd><m:mn>23</m:mn></m:mtd>
	<m:mtd><m:mn>24</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>33</m:mn></m:mtd>
	<m:mtd><m:mn>34</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd/>
	<m:mtd><m:mn>44</m:mn></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
<m:mtd><m:mn>02</m:mn></m:mtd>
<m:mtd><m:mn>03</m:mn></m:mtd>
<m:mtd><m:mn>04</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn>12</m:mn></m:mtd>
<m:mtd><m:mn>13</m:mn></m:mtd>
<m:mtd><m:mn>14</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn>22</m:mn></m:mtd>
<m:mtd><m:mn>23</m:mn></m:mtd>
<m:mtd><m:mn>24</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
<m:mtd><m:mn>33</m:mn></m:mtd>
<m:mtd><m:mn>34</m:mn></m:mtd>
</m:mtr>
       <m:mtr>
<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
<m:mtd><m:mn>44</m:mn></m:mtd>
</m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn>02</m:mn></m:mtd>
	<m:mtd><m:mn>12</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">01</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>03</m:mn></m:mtd>
	<m:mtd><m:mn>13</m:mn></m:mtd>
	<m:mtd><m:mn>23</m:mn></m:mtd>
	<m:mtd><m:mn>33</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">11</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>04</m:mn></m:mtd>
	<m:mtd><m:mn>14</m:mn></m:mtd>
	<m:mtd><m:mn>24</m:mn></m:mtd>
	<m:mtd><m:mn>34</m:mn></m:mtd>
	<m:mtd><m:mn>44</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
   <tr>
    <td class="libdoc" valign="top">'L'</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mfenced><m:mtable columnalign="left">
       <m:mtr>
	<m:mtd><m:mn>00</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>10</m:mn></m:mtd>
	<m:mtd><m:mn>11</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>20</m:mn></m:mtd>
	<m:mtd><m:mn>21</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>30</m:mn></m:mtd>
	<m:mtd><m:mn>31</m:mn></m:mtd>
	<m:mtd><m:mn>32</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>40</m:mn></m:mtd>
	<m:mtd><m:mn>41</m:mn></m:mtd>
	<m:mtd><m:mn>42</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
       </m:mtr>
      </m:mtable></m:mfenced>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn>00</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>10</m:mn></m:mtd>
	<m:mtd><m:mn>11</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>20</m:mn></m:mtd>
	<m:mtd><m:mn>21</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>30</m:mn></m:mtd>
	<m:mtd><m:mn>31</m:mn></m:mtd>
	<m:mtd><m:mn>32</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn>40</m:mn></m:mtd>
	<m:mtd><m:mn>41</m:mn></m:mtd>
	<m:mtd><m:mn>42</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
    <td class="libdoc" valign="top">
     <m:math>
      <m:mtable>
       <m:mtr>
	<m:mtd><m:mn>00</m:mn></m:mtd>
	<m:mtd><m:mn>10</m:mn></m:mtd>
	<m:mtd><m:mn>20</m:mn></m:mtd>
	<m:mtd><m:mn>30</m:mn></m:mtd>
	<m:mtd><m:mn>40</m:mn></m:mtd>
	<m:mtd><m:mn>50</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">33</m:mn></m:mtd>
	<m:mtd><m:mn>11</m:mn></m:mtd>
	<m:mtd><m:mn>21</m:mn></m:mtd>
	<m:mtd><m:mn>31</m:mn></m:mtd>
	<m:mtd><m:mn>41</m:mn></m:mtd>
	<m:mtd><m:mn>51</m:mn></m:mtd>
       </m:mtr>
       <m:mtr>
	<m:mtd><m:mn mathvariant="bold">43</m:mn></m:mtd>
	<m:mtd><m:mn mathvariant="bold">44</m:mn></m:mtd>
	<m:mtd><m:mn>22</m:mn></m:mtd>
	<m:mtd><m:mn>32</m:mn></m:mtd>
	<m:mtd><m:mn>42</m:mn></m:mtd>
	<m:mtd><m:mn>52</m:mn></m:mtd>
       </m:mtr>
      </m:mtable>
     </m:math>&#160;</td>
   </tr>
  </tbody>
 </table></div><div class="paramtext">Explicitly, AF is a one-dimensional array of length <m:math><m:mi>n</m:mi><m:mfenced separators=""><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn></m:math>&#160;and contains the elements of A as follows:
<ul class="listind"><li class="listind">for <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;(or <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>j</m:mi><m:mi>i</m:mi></m:mrow></m:msub></m:math>&#160;for <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math>) is stored in <m:math>
 <m:mi mathvariant="normal">AF</m:mi>
 <m:mfenced separators="">
  <m:mfenced separators="">
   <m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mfenced separators=""><m:mi mathvariant="italic">i</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced>
  <m:mo>+</m:mo>
  <m:mi>k</m:mi>
  <m:mo>+</m:mo>
  <m:mn>1</m:mn>
  <m:mo>+</m:mo>
  <m:mi mathvariant="italic">j</m:mi>
 </m:mfenced>
</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>k</m:mi></m:math>&#160;and <m:math><m:mi mathvariant="italic">j</m:mi><m:mo>=</m:mo><m:mi>i</m:mi><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>k</m:mi></m:math>, or otherwise in <m:math>
 <m:mi mathvariant="normal">AF</m:mi>
 <m:mfenced separators="">
  <m:mfenced separators="">
   <m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mfenced separators="">
   <m:mi>j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mo>+</m:mo>
  <m:mi>i</m:mi>
  <m:mo>-</m:mo>
  <m:mi>k</m:mi>
 </m:mfenced>
</m:math>, for <m:math><m:mi>i</m:mi><m:mo>=</m:mo><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mi>n</m:mi></m:math>&#160;and <m:math><m:mi>j</m:mi><m:mo>=</m:mo><m:mi>i</m:mi><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>q</m:mi></m:math>;</li><li class="listind">for <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;(or <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>j</m:mi><m:mi>i</m:mi></m:mrow></m:msub></m:math>&#160;for <m:math><m:mi mathvariant="normal">TRANSR</m:mi><m:mo>=</m:mo><m:mtext>'T'</m:mtext></m:math>) is stored in <m:math>
 <m:mi mathvariant="normal">AF</m:mi>
 <m:mfenced separators="">
  <m:mfenced separators="">
   <m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mfenced separators="">
   <m:mi mathvariant="italic">j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mo>+</m:mo>
  <m:mi mathvariant="italic">i</m:mi>
  <m:mo>+</m:mo>
  <m:mi>q</m:mi>
  <m:mo>-</m:mo>
  <m:mi>k</m:mi>
 </m:mfenced>
</m:math>, for <m:math><m:mi mathvariant="italic">j</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>q</m:mi></m:math>&#160;and <m:math><m:mi mathvariant="italic">i</m:mi><m:mo>=</m:mo><m:mi mathvariant="italic">j</m:mi><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>, or otherwise in <m:math>
 <m:mi mathvariant="normal">AF</m:mi>
 <m:mfenced separators="">
  <m:mfenced separators="">
   <m:mn>2</m:mn><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn>
  </m:mfenced>
  <m:mfenced separators="">
   <m:mi mathvariant="italic">i</m:mi><m:mo>-</m:mo><m:mi>q</m:mi>
  </m:mfenced>
  <m:mo>+</m:mo>
  <m:mi mathvariant="italic">j</m:mi>
  <m:mo>-</m:mo>
  <m:mi>q</m:mi>
  <m:mo>+</m:mo>
  <m:mn>1</m:mn>
 </m:mfenced>
</m:math>, for <m:math><m:mi mathvariant="italic">j</m:mi><m:mo>=</m:mo><m:mi>q</m:mi><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>&#160;and <m:math><m:mi mathvariant="italic">i</m:mi><m:mo>=</m:mo><m:mi mathvariant="italic">j</m:mi><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>.</li></ul>
</div><h4 class="standard"><a class="sec" name="recomm_33" id="recomm_33"/>3.3.4&#160;&#160;Band storage</h4>
<div class="paramtext">A band matrix with <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>&#160;subdiagonals and <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:math>&#160;superdiagonals may be stored compactly in a two-dimensional array with <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub><m:mo>+</m:mo><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;rows and <m:math><m:mi>n</m:mi></m:math>&#160;columns.  Columns of the matrix are stored in corresponding columns of the array, and diagonals of the matrix are stored in rows of the array.  This storage scheme should be used in practice only if <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>, <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub><m:mo>&#8810;</m:mo><m:mi>n</m:mi></m:math>, although the routines in <a class="chap" href="../F07/f07conts.xml">Chapters F07</a> and <a class="chap" href="../F08/f08conts.xml">F08</a> work correctly for all values of <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>&#160;and <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:math>.  In  <a class="chap" href="../F07/f07conts.xml">Chapters F07</a> and <a class="chap" href="../F08/f08conts.xml">F08</a> arrays which hold matrices in band storage have names ending in <m:math><m:mi mathvariant="normal">B</m:mi></m:math>.</div><div class="paramtext">To be precise, elements of matrix elements <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;are stored as follows:</div><div class="paramtext">
<ul class="listind"><li class="listind"><m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;is stored in  <m:math>
 <m:mrow><m:mi mathvariant="normal">AB</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>+</m:mo><m:mi>i</m:mi><m:mo>-</m:mo><m:mi>j</m:mi></m:mrow><m:mi>j</m:mi></m:mfenced></m:mrow>
</m:math>&#160;for  <m:math>
 <m:mrow><m:mi>max</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mn>1</m:mn><m:mo>,</m:mo><m:mrow><m:mi>j</m:mi><m:mo>-</m:mo><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:mrow></m:mfenced></m:mrow>
 <m:mo>&#8804;</m:mo>
 <m:mi>i</m:mi>
 <m:mo>&#8804;</m:mo>
 <m:mrow><m:mi>min</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mi>n</m:mi><m:mo>,</m:mo><m:mrow><m:mi>j</m:mi><m:mo>+</m:mo><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:mrow></m:mfenced></m:mrow>
</m:math>.</li></ul></div><div class="paramtext">For example, when <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>5</m:mn></m:math>, <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub><m:mo>=</m:mo><m:mn>2</m:mn></m:math>&#160;and <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub><m:mo>=</m:mo><m:mn>1</m:mn></m:math>:
<div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2"><tbody>
<tr>
<td class="libdoc" valign="top" align="center"><b>Band matrix <m:math><m:mi mathvariant="bold">A</m:mi></m:math></b></td>
<td class="libdoc" valign="top" align="center"><b>Band storage in array AB</b></td>
</tr><tr>
<td class="libdoc" valign="top" align="center"><m:math>
<m:mfenced><m:mtable columnalign="left">
  <m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
</m:mtr><m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
</m:mtr><m:mtr>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
   <m:mtd/>
</m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>45</m:mn></m:msub></m:mtd>
  </m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>53</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>54</m:mn></m:msub></m:mtd>
   <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
</m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
<m:mtable>
 <m:mtr>
  <m:mtd/>
  <m:mtd/>
  <m:mtd/>
  <m:mtd/>
  <m:mtd/>
</m:mtr><m:mtr>
  <m:mtd><m:mtext>*</m:mtext></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>45</m:mn></m:msub></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>54</m:mn></m:msub></m:mtd>
  <m:mtd><m:mtext>*</m:mtext></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
  <m:mtd><m:msub><m:mi>a</m:mi><m:mn>53</m:mn></m:msub></m:mtd>
  <m:mtd><m:mtext>*</m:mtext></m:mtd>
  <m:mtd><m:mtext>*</m:mtext></m:mtd>
 </m:mtr>
</m:mtable>
</m:math></td>
   </tr>
  </tbody>
 </table></div></div><div class="paramtext">The elements marked <m:math><m:mo>*</m:mo></m:math>&#160;in the upper left and lower right corners of the array AB need not be set, and are not referenced by the routines.

</div><div class="paramtext"><b>Note:</b>&#160; when a general band matrix is supplied for <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>&#160;factorization, space must be allowed to store an additional  <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub></m:math>&#160;superdiagonals, generated by fill-in as a result of row interchanges. This means that the matrix is stored according to the above scheme, but with <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub><m:mo>+</m:mo><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub></m:math>&#160;superdiagonals.

</div><div class="paramtext">Triangular band matrices are stored in the same format, with either <m:math><m:msub><m:mi>k</m:mi><m:mi>l</m:mi></m:msub><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;if upper triangular, or <m:math><m:msub><m:mi>k</m:mi><m:mi>u</m:mi></m:msub><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;if lower triangular.</div><div class="paramtext">For symmetric or Hermitian band matrices with <m:math><m:mi>k</m:mi></m:math>&#160;subdiagonals or superdiagonals, only the upper or lower triangle (as specified by UPLO) need be stored:</div><div class="paramtext">
<ul class="listind"><li class="listind">if <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;is stored in <m:math><m:mrow><m:mi mathvariant="normal">AB</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>k</m:mi><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>+</m:mo><m:mi>i</m:mi><m:mo>-</m:mo><m:mi>j</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:mfenced></m:mrow></m:math>&#160;for <m:math><m:mrow><m:mi>max</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mn>1</m:mn><m:mo>,</m:mo><m:mrow><m:mi>j</m:mi><m:mo>-</m:mo><m:mi>k</m:mi></m:mrow></m:mfenced></m:mrow><m:mo>&#8804;</m:mo><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mi>j</m:mi></m:math>;</li><li class="listind">if <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow></m:msub></m:math>&#160;is stored in <m:math><m:mrow><m:mi mathvariant="normal">AB</m:mi><m:mfenced separators="," open="(" close=")"><m:mrow><m:mn>1</m:mn><m:mo>+</m:mo><m:mi>i</m:mi><m:mo>-</m:mo><m:mi>j</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:mfenced></m:mrow></m:math>&#160;for <m:math><m:mi>j</m:mi><m:mo>&#8804;</m:mo><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mrow><m:mi>min</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mi>n</m:mi><m:mo>,</m:mo><m:mi>j</m:mi><m:mo>+</m:mo><m:mi>k</m:mi></m:mfenced></m:mrow></m:math>.</li></ul></div><div class="paramtext">For example, when <m:math><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>5</m:mn></m:math>&#160;and <m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mn>2</m:mn></m:math>:
<div class="tablediv"><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="center"><b>UPLO</b></td>
    <td class="libdoc" valign="top" align="center"><b>Hermitian band matrix</b> <m:math><m:mi mathvariant="bold-italic">A</m:mi></m:math></td>
    <td class="libdoc" valign="top" align="center"><b>Band storage in array AB</b></td>
    </tr><tr>
    <td class="libdoc" valign="top" align="center">'U'</td>
    <td class="libdoc" valign="top" align="center"><m:math>
     <m:mfenced><m:mtable columnalign="left">
      <m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
       <m:mtd/>
       <m:mtd/>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>12</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
       <m:mtd/>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>13</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>23</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>35</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd/>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>24</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>34</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>45</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd/>
       <m:mtd/>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>35</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>45</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
      </m:mtr>
     </m:mtable></m:mfenced>
    </m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
     <m:mtable columnalign="left">
      <m:mtr>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>13</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>24</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>35</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>12</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>23</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>34</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>45</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
      </m:mtr>
     </m:mtable>
    </m:math></td>
    </tr><tr>
    <td class="libdoc" valign="top" align="center">'L'</td>
    <td class="libdoc" valign="top" align="center"><m:math>
     <m:mfenced><m:mtable columnalign="left">
      <m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>21</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>31</m:mn></m:msub></m:mtd>
       <m:mtd/>
       <m:mtd/>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>32</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>42</m:mn></m:msub></m:mtd>
       <m:mtd/>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>43</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>53</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd/>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mover><m:mi>a</m:mi><m:mo>-</m:mo></m:mover><m:mn>54</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd/>
       <m:mtd/>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>53</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>54</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
      </m:mtr>
     </m:mtable></m:mfenced>
    </m:math></td>
    <td class="libdoc" valign="top" align="center"><m:math>
     <m:mtable columnalign="left">
      <m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>11</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>22</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>33</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>44</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>55</m:mn></m:msub></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>21</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>32</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>43</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>54</m:mn></m:msub></m:mtd>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
       </m:mtr><m:mtr>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>31</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>42</m:mn></m:msub></m:mtd>
       <m:mtd><m:msub><m:mi>a</m:mi><m:mn>53</m:mn></m:msub></m:mtd>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
       <m:mtd><m:mtext>*</m:mtext></m:mtd>
      </m:mtr>
     </m:mtable>
    </m:math></td>
   </tr>
  </tbody>
 </table></div></div><div class="paramtext">Note that different storage schemes for band matrices are used by some routines in <a class="chap" href="../F01/f01conts.xml">Chapters F01</a>, <a class="chap" href="../F02/f02conts.xml">F02</a>, <a class="chap" href="../F03/f03conts.xml">F03</a> and <a class="chap" href="../F04/f04conts.xml">F04</a>.

</div><h4 class="standard"><a class="sec" name="recomm_34" id="recomm_34"/>3.3.5&#160;&#160;Unit triangular matrices</h4>
<div class="paramtext">Some routines in this chapter have an option to handle unit triangular matrices (that is, triangular matrices with diagonal elements <m:math><m:mtext/><m:mo>=</m:mo><m:mn>1</m:mn></m:math>).  This option is specified by an argument DIAG.  If <m:math><m:mi mathvariant="normal">DIAG</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;(Unit triangular), the diagonal elements of the matrix need not be stored, and the corresponding array elements are not referenced by the routines.  The storage scheme for the rest of the matrix (whether conventional, packed or band) remains unchanged.</div><h4 class="standard"><a class="sec" name="recomm_35" id="recomm_35"/>3.3.6&#160;&#160;Real diagonal elements of complex matrices</h4>
<div class="paramtext">Complex Hermitian matrices have diagonal elements that are by definition purely real.  In addition, complex triangular matrices which arise in Cholesky factorization are defined by the algorithm to have real diagonal elements.</div><div class="paramtext">If such matrices are supplied as input to routines in <a class="chap" href="../F07/f07conts.xml">Chapters F07</a> and <a class="chap" href="../F08/f08conts.xml">F08</a>, the imaginary parts of the diagonal elements are not referenced, but are assumed to be zero.  If such matrices are returned as output by the routines, the computed imaginary parts are explicitly set to zero.</div><h3 class="standard"><a class="sec" name="recomm_4" id="recomm_4"/>3.4&#160;&#160;Parameter Conventions</h3><h4 class="standard"><a class="sec" name="recomm_41" id="recomm_41"/>3.4.1&#160;&#160;Option parameters</h4>
<div class="paramtext">Most routines in this chapter have one or more option parameters, of type CHARACTER.  The descriptions in Section 5 of the routine documents refer only to upper-case values (for example <m:math><m:mi mathvariant="normal">UPLO</m:mi><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;or <m:math><m:mtext>'L'</m:mtext></m:math>); however, in every case, the corresponding lower-case characters may be supplied (with the same meaning).  Any other value is illegal.</div><div class="paramtext">A longer character string can be passed as the actual parameter, making the calling program more readable, but only the first character is significant.
(This is a feature of Fortran 77.)  For example:
<pre class="verbatim">
CALL DGETRS('Transpose',...)
</pre></div><h4 class="standard"><a class="sec" name="recomm_42" id="recomm_42"/>3.4.2&#160;&#160;Problem dimensions</h4>
<div class="paramtext">It is permissible for the problem dimensions (for example, M in <a class="rout" href="../F07/f07adf.xml">F07ADF (DGETRF)</a>, N or NRHS in <a class="rout" href="../F07/f07aef.xml">F07AEF (DGETRS)</a>) to be passed as zero, in which case the computation (or part of it) is skipped.  Negative dimensions are regarded as an error.</div><h4 class="standard"><a class="sec" name="recomm_43" id="recomm_43"/>3.4.3&#160;&#160;Length of work arrays</h4>
<div class="paramtext">A few routines implementing block partitioned algorithms require workspace sufficient to hold one block of rows or columns of the matrix if they are to achieve optimum levels of performance &#8212; for example, workspace of size <m:math><m:mi>n</m:mi><m:mo>&#215;</m:mo><m:mi>n</m:mi><m:mi>b</m:mi></m:math>, where <m:math><m:mi>n</m:mi><m:mi>b</m:mi></m:math>&#160;is the optimum block size.  In such cases, the actual declared length of the work array must be passed as a separate parameter LWORK, which immediately follows  WORK in the parameter-list.</div><div class="paramtext">The routine will still perform correctly when less workspace is provided: it uses the largest block size allowed by the amount of workspace supplied, as long as this is likely to give better performance than the unblocked algorithm.  On exit, <m:math><m:mrow><m:mi mathvariant="normal">WORK</m:mi><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;contains the minimum value of LWORK which would allow the routine to use the optimum block size; this value of LWORK may be used for subsequent runs.</div><div class="paramtext">If LWORK indicates that there is insufficient workspace to perform the unblocked algorithm, this is regarded as an illegal value of LWORK,  and is treated like any other illegal parameter value (see  <a class="sec" href="#recomm_44">Section 3.4.4</a>), though <m:math><m:mrow><m:mi mathvariant="normal">WORK</m:mi><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;will still be set as described above.</div><div class="paramtext">If you are in doubt how much workspace to supply and are concerned to achieve optimum performance, supply a generous amount (assume a block size of <m:math><m:mn>64</m:mn></m:math>, say), and then examine the value of <m:math><m:mrow><m:mi mathvariant="normal">WORK</m:mi><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;on exit.</div><h4 class="standard"><a class="sec" name="recomm_44" id="recomm_44"/>3.4.4&#160;&#160;Error-handling and the diagnostic parameter <span class="mono">INFO</span></h4>
<div class="paramtext">Routines in this chapter do not use the usual NAG Library error-handling mechanism, involving the parameter IFAIL.  Instead they have a diagnostic parameter INFO.  (Thus they preserve complete compatibility with the LAPACK specification.)</div><div class="paramtext">Whereas IFAIL is an <span class="italic">Input/Output</span> parameter and must be set before calling a routine, INFO is purely an <span class="italic">Output</span> parameter and need not be set before entry.</div><div class="paramtext">INFO indicates the success or failure of the computation, as follows:
<ul class="listind"><li class="listind"><m:math><m:mi mathvariant="normal">INFO</m:mi><m:mo>=</m:mo><m:mn>0</m:mn></m:math>: successful termination</li><li class="listind"><m:math><m:mi mathvariant="normal">INFO</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>: failure in the course of computation, control returned to the calling program</li></ul>
</div><div class="paramtext">If the routine document specifies that the routine may terminate with <m:math><m:mi mathvariant="normal">INFO</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>, then it is <b>essential</b> to <b>test  INFO on exit</b> from the routine.  (This corresponds to a <span class="italic">soft failure</span> in terms of the usual NAG error-handling terminology.)  No error message is output.</div><div class="paramtext">All routines check that input parameters such as N or LDA or option parameters of type CHARACTER have permitted values.  If an illegal value of the <m:math><m:mi>i</m:mi></m:math>th parameter is detected, INFO is set to  <m:math><m:mrow><m:mo>-</m:mo><m:mi>i</m:mi></m:mrow></m:math>, a message is output, and execution of the program is terminated.  (This corresponds to a <span class="italic">hard failure</span>  in the usual NAG terminology.)</div><h3 class="standard"><a class="sec" name="recomm_5" id="recomm_5"/>3.5&#160;&#160;Tables of Available Computational Routines</h3><h4 class="standard"><a class="sec" name="recomm_5_real" id="recomm_5_real"/>3.5.1&#160;&#160;Real matrices</h4>
<div class="paramtext">
Each entry  in the following tables, listing real matrices,  gives: 
<ul class="listind"><li class="listind">the NAG routine name and</li><li class="listind">the double precision LAPACK routine name.</li></ul>
</div><div class="tablediv"><a name="table1general" id="table1general"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general band</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general tridiagonal</b></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07adf.xml">F07ADF (DGETRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bdf.xml">F07BDF (DGBTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07cdf.xml">F07CDF (DGTTRF)</a></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07aef.xml">F07AEF (DGETRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bef.xml">F07BEF (DGBTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07cef.xml">F07CEF (DGTTRS)</a></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>scaling factors</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07aff.xml">F07AFF (DGEEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bff.xml">F07BFF (DGBEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07agf.xml">F07AGF (DGECON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bgf.xml">F07BGF (DGBCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07cgf.xml">F07CGF (DGTCON)</a></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07ahf.xml">F07AHF (DGERFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bhf.xml">F07BHF (DGBRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07chf.xml">F07CHF (DGTRFS)</a></td>
   </tr>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07ajf.xml">F07AJF (DGETRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 1</b><br/>Routines for real general matrices</div></div><div class="tablediv"><a name="table1posdefinite" id="table1posdefinite"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive definite</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive definite (packed storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive definite (RFP storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive definite band</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive definite tridiagonal</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>symmetric positive semidefinite factorize</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fdf.xml">F07FDF (DPOTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gdf.xml">F07GDF (DPPTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wdf.xml">F07WDF (DPFTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hdf.xml">F07HDF (DPBTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jdf.xml">F07JDF (DPTTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fef.xml">F07FEF (DPOTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gef.xml">F07GEF (DPPTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wef.xml">F07WEF (DPFTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hef.xml">F07HEF (DPBTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jef.xml">F07JEF (DPTTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>scaling factors</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fff.xml">F07FFF (DPOEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gff.xml">F07GFF (DPPEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hff.xml">F07HFF (DPBEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fgf.xml">F07FGF (DPOCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07ggf.xml">F07GGF (DPPCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hgf.xml">F07HGF (DPBCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jgf.xml">F07JGF (DPTCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fhf.xml">F07FHF (DPORFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07ghf.xml">F07GHF (DPPRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hhf.xml">F07HHF (DPBRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jhf.xml">F07JHF (DPTRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fjf.xml">F07FJF (DPOTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gjf.xml">F07GJF (DPPTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wjf.xml">F07WJF (DPFTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>semidefinite</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07kdf.xml">F07KDF (DPSTRF)</a></td>
  </tr>
  </tbody>
 </table><div class="caption"><b>Table 2</b><br/>Routines for real symmetric positive definite matrices</div></div><div class="tablediv"><a name="table1indefinite" id="table1indefinite"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>symmetric indefinite</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>symmetric indefinite (packed storage)</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mdf.xml">F07MDF (DSYTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pdf.xml">F07PDF (DSPTRF)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mef.xml">F07MEF (DSYTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pef.xml">F07PEF (DSPTRS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mgf.xml">F07MGF (DSYCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pgf.xml">F07PGF (DSPCON)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mhf.xml">F07MHF (DSYRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07phf.xml">F07PHF (DSPRFS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mjf.xml">F07MJF (DSYTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pjf.xml">F07PJF (DSPTRI)</a></td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 3</b><br/>Routines for real symmetric indefinite matrices</div></div><div class="tablediv"><a name="table1triangular" id="table1triangular"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular (packed storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular (RFP storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular band</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tef.xml">F07TEF (DTRTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07uef.xml">F07UEF (DTPTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vef.xml">F07VEF (DTBTRS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tgf.xml">F07TGF (DTRCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07ugf.xml">F07UGF (DTPCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vgf.xml">F07VGF (DTBCON)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07thf.xml">F07THF (DTRRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07uhf.xml">F07UHF (DTPRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vhf.xml">F07VHF (DTBRFS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tjf.xml">F07TJF (DTRTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07ujf.xml">F07UJF (DTPTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07wkf.xml">F07WKF (DTFTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 4</b><br/>Routines for real triangular matrices</div></div><h4 class="standard"><a class="sec" name="recomm_5_complex" id="recomm_5_complex"/>3.5.2&#160;&#160;Complex matrices</h4>
<div class="paramtext">Each entry  in the following tables, listing complex matrices, gives:
<ul class="listind"><li class="listind">the NAG routine name and</li><li class="listind">the double precision LAPACK routine name.</li></ul></div><div class="tablediv"><a name="table2general" id="table2general"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general band</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>general tridiagonal</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07arf.xml">F07ARF (ZGETRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07brf.xml">F07BRF (ZGBTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07crf.xml">F07CRF (ZGTTRF)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07asf.xml">F07ASF (ZGETRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bsf.xml">F07BSF (ZGBTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07csf.xml">F07CSF (ZGTTRS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>scaling factors</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07atf.xml">F07ATF (ZGEEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07btf.xml">F07BTF (ZGBEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07auf.xml">F07AUF (ZGECON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07buf.xml">F07BUF (ZGBCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07cuf.xml">F07CUF (ZGTCON)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07avf.xml">F07AVF (ZGERFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07bvf.xml">F07BVF (ZGBRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07cvf.xml">F07CVF (ZGTRFS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07awf.xml">F07AWF (ZGETRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 5</b><br/>Routines for complex general matrices</div></div><div class="tablediv"><a name="table2posdefinite" id="table2posdefinite"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Hermitian positive definite</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Hermitian positive definite (packed storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Hermitian positive definite (RFP storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Hermitian positive definite band</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>Hermitian positive definite tridiagonal</b></td>
    <td class="libdoc" valign="top" align="left"><b>Hermitian positive semidefinite factorize</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07frf.xml">F07FRF (ZPOTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07grf.xml">F07GRF (ZPPTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wrf.xml">F07WRF (ZPFTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hrf.xml">F07HRF (ZPBTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jrf.xml">F07JRF (ZPTTRF)</a></td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fsf.xml">F07FSF (ZPOTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gsf.xml">F07GSF (ZPPTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wsf.xml">F07WSF (ZPFTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hsf.xml">F07HSF (ZPBTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jsf.xml">F07JSF (ZPTTRS)</a></td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>scaling factors</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07ftf.xml">F07FTF (ZPOEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gtf.xml">F07GTF (ZPPEQU)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fuf.xml">F07FUF (ZPOCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07guf.xml">F07GUF (ZPPCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07huf.xml">F07HUF (ZPBCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07juf.xml">F07JUF (ZPTCON)</a></td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fvf.xml">F07FVF (ZPORFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gvf.xml">F07GVF (ZPPRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07hvf.xml">F07HVF (ZPBRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07jvf.xml">F07JVF (ZPTRFS)</a></td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07fwf.xml">F07FWF (ZPOTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07gwf.xml">F07GWF (ZPPTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><a class="rout" href="../F07/f07wwf.xml">F07WWF (ZPFTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left">&#160;</td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:6em;"><b>semidefinite matrices</b></td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:6em;">&#160;</td>
    <td class="libdoc" valign="top" align="left"><a class="rout" href="../F07/f07krf.xml">F07KRF (ZPSTRF)</a></td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 6</b><br/>Routines for complex Hermitian positive definite matrices</div></div><div class="tablediv"><a name="table2indefinite" id="table2indefinite"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Hermitian indefinite</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>symmetric indefinite (packed storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Hermitian indefinite band</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>symmetric indefinite tridiagonal</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>factorize</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mrf.xml">F07MRF (ZHETRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07nrf.xml">F07NRF (ZSYTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07prf.xml">F07PRF (ZHPTRF)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07qrf.xml">F07QRF (ZSPTRF)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07msf.xml">F07MSF (ZHETRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07nsf.xml">F07NSF (ZSYTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07psf.xml">F07PSF (ZHPTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07qsf.xml">F07QSF (ZSPTRS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07muf.xml">F07MUF (ZHECON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07nuf.xml">F07NUF (ZSYCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07puf.xml">F07PUF (ZHPCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07quf.xml">F07QUF (ZSPCON)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mvf.xml">F07MVF (ZHERFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07nvf.xml">F07NVF (ZSYRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pvf.xml">F07PVF (ZHPRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07qvf.xml">F07QVF (ZSPRFS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07mwf.xml">F07MWF (ZHETRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07nwf.xml">F07NWF (ZSYTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07pwf.xml">F07PWF (ZHPTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07qwf.xml">F07QWF (ZSPTRI)</a></td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 7</b><br/>Routines for complex Hermitian and symmetric indefinite matrices</div></div><div class="tablediv"><a name="table2triangular" id="table2triangular"/><table class="standard" border="3" align="center" cellpadding="2">
  
  
  
  
  
  <tbody>
   <tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>Type of matrix and storage scheme</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular (packed storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular (RFP storage)</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>triangular band</b></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>solve</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tsf.xml">F07TSF (ZTRTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07usf.xml">F07USF (ZTPTRS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vsf.xml">F07VSF (ZTBTRS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>condition number</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tuf.xml">F07TUF (ZTRCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07uuf.xml">F07UUF (ZTPCON)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vuf.xml">F07VUF (ZTBCON)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>error estimate</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07tvf.xml">F07TVF (ZTRRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07uvf.xml">F07UVF (ZTPRFS)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07vvf.xml">F07VVF (ZTBRFS)</a></td>
   </tr><tr>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><b>invert</b></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07twf.xml">F07TWF (ZTRTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07uwf.xml">F07UWF (ZTPTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;"><a class="rout" href="../F07/f07wxf.xml">F07WXF (ZTFTRI)</a></td>
    <td class="libdoc" valign="top" align="left" style="width:9em;">&#160;</td>
   </tr>
  </tbody>
 </table><div class="caption"><b>Table 8</b><br/>Routines for complex triangular matrices</div></div><h2 class="standard"><a class="sec" name="index" id="index"/>4&#160;&#160;Functionality Index</h2>
<div>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Apply&#160;iterative&#160;refinement&#160;to&#160;the&#160;solution&#160;and&#160;compute&#160;error&#160;estimates:</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;after&#160;factorizing&#160;the&#160;matrix&#160;of&#160;coefficients:</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;Hermitian&#160;indefinite&#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="../F07/f07mvf.xml">F07MVF&#160;(ZHERFS)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pvf.xml">F07PVF&#160;(ZHPRFS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07hvf.xml">F07HVF&#160;(ZPBRFS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gvf.xml">F07GVF&#160;(ZPPRFS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jvf.xml">F07JVF&#160;(ZPTRFS)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07nvf.xml">F07NVF&#160;(ZSYRFS)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qvf.xml">F07QVF&#160;(ZSPRFS)</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;complex&#160;tridiagonal&#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="../F07/f07cvf.xml">F07CVF&#160;(ZGTRFS)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage&#160;</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="../F07/f07phf.xml">F07PHF&#160;(DSPRFS)</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07hhf.xml">F07HHF&#160;(DPBRFS)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07ghf.xml">F07GHF&#160;(DPPRFS)</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;symmetric&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jhf.xml">F07JHF&#160;(DPTRFS)</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;tridiagonal&#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="../F07/f07chf.xml">F07CHF&#160;(DGTRFS)</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;simple&#160;drivers:</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;band&#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="../F07/f07bvf.xml">F07BVF&#160;(ZGBRFS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fvf.xml">F07FVF&#160;(ZPORFS)</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;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="../F07/f07avf.xml">F07AVF&#160;(ZGERFS)</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;band&#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="../F07/f07bhf.xml">F07BHF&#160;(DGBRFS)</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;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="../F07/f07ahf.xml">F07AHF&#160;(DGERFS)</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;symmetric&#160;indefinite&#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="../F07/f07mhf.xml">F07MHF&#160;(DSYRFS)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07fhf.xml">F07FHF&#160;(DPORFS)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Compute&#160;error&#160;estimates:</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;triangular&#160;band&#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="../F07/f07vvf.xml">F07VVF&#160;(ZTBRFS)</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;triangular&#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="../F07/f07tvf.xml">F07TVF&#160;(ZTRRFS)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07uvf.xml">F07UVF&#160;(ZTPRFS)</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;triangular&#160;band&#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="../F07/f07vhf.xml">F07VHF&#160;(DTBRFS)</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;triangular&#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="../F07/f07thf.xml">F07THF&#160;(DTRRFS)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07uhf.xml">F07UHF&#160;(DTPRFS)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Compute&#160;row&#160;and&#160;column&#160;scalings,</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;band&#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="../F07/f07btf.xml">F07BTF&#160;(ZGBEQU)</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;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07htf.xml">F07HTF&#160;(ZPBEQU)</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;Hermitian&#160;positive&#160;definite&#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="../F07/f07ftf.xml">F07FTF&#160;(ZPOEQU)</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;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gtf.xml">F07GTF&#160;(ZPPEQU)</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;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="../F07/f07atf.xml">F07ATF&#160;(ZGEEQU)</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;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="../F07/f07bff.xml">F07BFF&#160;(DGBEQU)</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 style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F07/f07aff.xml">F07AFF&#160;(DGEEQU)</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;band&#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="../F07/f07hff.xml">F07HFF&#160;(DPBEQU)</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 style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F07/f07fff.xml">F07FFF&#160;(DPOEQU)</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,&#160;packed&#160;storage</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="../F07/f07gff.xml">F07GFF&#160;(DPPEQU)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Condition&#160;number&#160;estimation:</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;after&#160;factorizing&#160;the&#160;matrix&#160;of&#160;coefficients:</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;band&#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="../F07/f07buf.xml">F07BUF&#160;(ZGBCON)</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;complex&#160;Hermitian&#160;indefinite&#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="../F07/f07muf.xml">F07MUF&#160;(ZHECON)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07puf.xml">F07PUF&#160;(ZHPCON)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07huf.xml">F07HUF&#160;(ZPBCON)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fuf.xml">F07FUF&#160;(ZPOCON)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07guf.xml">F07GUF&#160;(ZPPCON)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07juf.xml">F07JUF&#160;(ZPTCON)</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;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="../F07/f07auf.xml">F07AUF&#160;(ZGECON)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07nuf.xml">F07NUF&#160;(ZSYCON)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07quf.xml">F07QUF&#160;(ZSPCON)</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;complex&#160;tridiagonal&#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="../F07/f07cuf.xml">F07CUF&#160;(ZGTCON)</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;band&#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="../F07/f07bgf.xml">F07BGF&#160;(DGBCON)</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="../F07/f07agf.xml">F07AGF&#160;(DGECON)</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;symmetric&#160;indefinite&#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="../F07/f07mgf.xml">F07MGF&#160;(DSYCON)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pgf.xml">F07PGF&#160;(DSPCON)</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07hgf.xml">F07HGF&#160;(DPBCON)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07fgf.xml">F07FGF&#160;(DPOCON)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07ggf.xml">F07GGF&#160;(DPPCON)</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;symmetric&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jgf.xml">F07JGF&#160;(DPTCON)</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;tridiagonal&#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="../F07/f07cgf.xml">F07CGF&#160;(DGTCON)</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;triangular&#160;band&#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="../F07/f07vuf.xml">F07VUF&#160;(ZTBCON)</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;triangular&#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="../F07/f07tuf.xml">F07TUF&#160;(ZTRCON)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07uuf.xml">F07UUF&#160;(ZTPCON)</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;triangular&#160;band&#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="../F07/f07vgf.xml">F07VGF&#160;(DTBCON)</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;triangular&#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="../F07/f07tgf.xml">F07TGF&#160;(DTRCON)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07ugf.xml">F07UGF&#160;(DTPCON)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><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>&#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;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jrf.xml">F07JRF&#160;(ZPTTRF)</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;tridiagonal&#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="../F07/f07jdf.xml">F07JDF&#160;(DPTTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><span><i>L</i><span><span><i>L</i></span><sup><span><span>H</span></span></sup></span></span>&#160;or <span><span/><span><span><i>U</i></span><sup><span><span>H</span></span></sup></span><i>U</i></span>&#160;factorization:</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;positive&#160;definite&#160;band&#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="../F07/f07hrf.xml">F07HRF&#160;(ZPBTRF)</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;Hermitian&#160;positive&#160;definite&#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="../F07/f07frf.xml">F07FRF&#160;(ZPOTRF)</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;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07grf.xml">F07GRF&#160;(ZPPTRF)</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;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;RFP&#160;storage</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="../F07/f07wrf.xml">F07WRF&#160;(ZPFTRF)</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;Hermitian&#160;positive&#160;semidefinite&#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="../F07/f07krf.xml">F07KRF&#160;(ZPSTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><span><i>L</i><span><span><i>L</i></span><sup><span>T</span></sup></span></span>&#160;or <span><span><span><i>U</i></span><sup><span>T</span></sup></span><i>U</i></span>&#160;factorization:</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07hdf.xml">F07HDF&#160;(DPBTRF)</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 style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F07/f07fdf.xml">F07FDF&#160;(DPOTRF)</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,&#160;packed&#160;storage</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="../F07/f07gdf.xml">F07GDF&#160;(DPPTRF)</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,&#160;RFP&#160;storage</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="../F07/f07wdf.xml">F07WDF&#160;(DPFTRF)</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;semidefinite&#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="../F07/f07kdf.xml">F07KDF&#160;(DPSTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><span><i>L</i><i>U</i></span>&#160;factorization:</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;band&#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="../F07/f07brf.xml">F07BRF&#160;(ZGBTRF)</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;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="../F07/f07arf.xml">F07ARF&#160;(ZGETRF)</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;tridiagonal&#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="../F07/f07crf.xml">F07CRF&#160;(ZGTTRF)</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;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="../F07/f07bdf.xml">F07BDF&#160;(DGBTRF)</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 style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../F07/f07adf.xml">F07ADF&#160;(DGETRF)</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;tridiagonal&#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="../F07/f07cdf.xml">F07CDF&#160;(DGTTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Matrix&#160;inversion:</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;after&#160;factorizing&#160;the&#160;matrix&#160;of&#160;coefficients:</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;Hermitian&#160;indefinite&#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="../F07/f07mwf.xml">F07MWF&#160;(ZHETRI)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pwf.xml">F07PWF&#160;(ZHPTRI)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fwf.xml">F07FWF&#160;(ZPOTRI)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gwf.xml">F07GWF&#160;(ZPPTRI)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;RFP&#160;storage</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="../F07/f07wwf.xml">F07WWF&#160;(ZPFTRI)</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;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="../F07/f07awf.xml">F07AWF&#160;(ZGETRI)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07nwf.xml">F07NWF&#160;(ZSYTRI)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qwf.xml">F07QWF&#160;(ZSPTRI)</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="../F07/f07ajf.xml">F07AJF&#160;(DGETRI)</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;symmetric&#160;indefinite&#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="../F07/f07mjf.xml">F07MJF&#160;(DSYTRI)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pjf.xml">F07PJF&#160;(DSPTRI)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07fjf.xml">F07FJF&#160;(DPOTRI)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gjf.xml">F07GJF&#160;(DPPTRI)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;RFP&#160;storage</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="../F07/f07wjf.xml">F07WJF&#160;(DPFTRI)</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;triangular&#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="../F07/f07twf.xml">F07TWF&#160;(ZTRTRI)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07uwf.xml">F07UWF&#160;(ZTPTRI)</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;triangular&#160;matrix,&#160;RFP&#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;expert&#160;driver</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="../F07/f07wxf.xml">F07WXF&#160;(ZTFTRI)</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;triangular&#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="../F07/f07tjf.xml">F07TJF&#160;(DTRTRI)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07ujf.xml">F07UJF&#160;(DTPTRI)</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;triangular&#160;matrix,&#160;RFP&#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;expert&#160;driver</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="../F07/f07wkf.xml">F07WKF&#160;(DTFTRI)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><span><i>P</i><i>L</i><i>D</i><span><span><i>L</i></span><sup><span><span>H</span></span></sup></span><span><span><i>P</i></span><sup><span><span>H</span></span></sup></span></span>&#160;or <span><i>P</i><i>U</i><i>D</i><span><span><i>U</i></span><sup><span><span>H</span></span></sup></span><span><span><i>P</i></span><sup><span><span>H</span></span></sup></span></span>&#160;factorization:</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;indefinite&#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="../F07/f07mrf.xml">F07MRF&#160;(ZHETRF)</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;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07prf.xml">F07PRF&#160;(ZHPTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr><span><i>P</i><i>L</i><i>D</i><span><span><i>L</i></span><sup><span>T</span></sup></span><span><span><i>P</i></span><sup><span>T</span></sup></span></span>&#160;or <span><i>P</i><i>U</i><i>D</i><span><span><i>U</i></span><sup><span>T</span></sup></span><span><span><i>P</i></span><sup><span>T</span></sup></span></span>&#160;factorization:</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;symmetric&#160;indefinite&#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="../F07/f07nrf.xml">F07NRF&#160;(ZSYTRF)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qrf.xml">F07QRF&#160;(ZSPTRF)</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;indefinite&#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="../F07/f07mdf.xml">F07MDF&#160;(DSYTRF)</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;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pdf.xml">F07PDF&#160;(DSPTRF)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Solution&#160;of&#160;simultaneous&#160;linear&#160;equations:</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;after&#160;factorizing&#160;the&#160;matrix&#160;of&#160;coefficients:</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;band&#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="../F07/f07bsf.xml">F07BSF&#160;(ZGBTRS)</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;complex&#160;Hermitian&#160;indefinite&#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="../F07/f07msf.xml">F07MSF&#160;(ZHETRS)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07psf.xml">F07PSF&#160;(ZHPTRS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07hsf.xml">F07HSF&#160;(ZPBTRS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fsf.xml">F07FSF&#160;(ZPOTRS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gsf.xml">F07GSF&#160;(ZPPTRS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;RFP&#160;storage</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="../F07/f07wsf.xml">F07WSF&#160;(ZPFTRS)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;tridiagonal&#160;&#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="../F07/f07jsf.xml">F07JSF&#160;(ZPTTRS)</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;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="../F07/f07asf.xml">F07ASF&#160;(ZGETRS)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07nsf.xml">F07NSF&#160;(ZSYTRS)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qsf.xml">F07QSF&#160;(ZSPTRS)</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;complex&#160;tridiagonal&#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="../F07/f07csf.xml">F07CSF&#160;(ZGTTRS)</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;band&#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="../F07/f07bef.xml">F07BEF&#160;(DGBTRS)</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="../F07/f07aef.xml">F07AEF&#160;(DGETRS)</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;symmetric&#160;indefinite&#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="../F07/f07mef.xml">F07MEF&#160;(DSYTRS)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pef.xml">F07PEF&#160;(DSPTRS)</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07hef.xml">F07HEF&#160;(DPBTRS)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07fef.xml">F07FEF&#160;(DPOTRS)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gef.xml">F07GEF&#160;(DPPTRS)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;RFP&#160;storage</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="../F07/f07wef.xml">F07WEF&#160;(DPFTRS)</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;symmetric&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jef.xml">F07JEF&#160;(DPTTRS)</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;tridiagonal&#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="../F07/f07cef.xml">F07CEF&#160;(DGTTRS)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;expert&#160;drivers&#160;(with&#160;condition&#160;and&#160;error&#160;estimation):</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;band&#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="../F07/f07bpf.xml">F07BPF&#160;(ZGBSVX)</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;complex&#160;Hermitian&#160;indefinite&#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="../F07/f07mpf.xml">F07MPF&#160;(ZHESVX)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07ppf.xml">F07PPF&#160;(ZHPSVX)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07hpf.xml">F07HPF&#160;(ZPBSVX)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fpf.xml">F07FPF&#160;(ZPOSVX)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gpf.xml">F07GPF&#160;(ZPPSVX)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jpf.xml">F07JPF&#160;(ZPTSVX)</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;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="../F07/f07apf.xml">F07APF&#160;(ZGESVX)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07npf.xml">F07NPF&#160;(ZSYSVX)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qpf.xml">F07QPF&#160;(ZSPSVX)</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;complex&#160;tridiagonal&#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="../F07/f07cpf.xml">F07CPF&#160;(ZGTSVX)</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;band&#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="../F07/f07bbf.xml">F07BBF&#160;(DGBSVX)</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="../F07/f07abf.xml">F07ABF&#160;(DGESVX)</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;symmetric&#160;indefinite&#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="../F07/f07mbf.xml">F07MBF&#160;(DSYSVX)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pbf.xml">F07PBF&#160;(DSPSVX)</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07hbf.xml">F07HBF&#160;(DPBSVX)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07fbf.xml">F07FBF&#160;(DPOSVX)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gbf.xml">F07GBF&#160;(DPPSVX)</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;symmetric&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jbf.xml">F07JBF&#160;(DPTSVX)</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;tridiagonal&#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="../F07/f07cbf.xml">F07CBF&#160;(DGTSVX)</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;simple&#160;drivers:</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;band&#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="../F07/f07bnf.xml">F07BNF&#160;(ZGBSV)</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;complex&#160;Hermitian&#160;indefinite&#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="../F07/f07mnf.xml">F07MNF&#160;(ZHESV)</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;complex&#160;Hermitian&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07pnf.xml">F07PNF&#160;(ZHPSV)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;band&#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="../F07/f07hnf.xml">F07HNF&#160;(ZPBSV)</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;complex&#160;Hermitian&#160;positive&#160;definite&#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="../F07/f07fnf.xml">F07FNF&#160;(ZPOSV)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gnf.xml">F07GNF&#160;(ZPPSV)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;matrix,&#160;using&#160;mixed&#160;precision</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="../F07/f07fqf.xml">F07FQF&#160;(ZCPOSV)</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;complex&#160;Hermitian&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jnf.xml">F07JNF&#160;(ZPTSV)</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;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="../F07/f07anf.xml">F07ANF&#160;(ZGESV)</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;complex&#160;matrix,&#160;using&#160;mixed&#160;precision</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="../F07/f07aqf.xml">F07AQF&#160;(ZCGESV)</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;complex&#160;symmetric&#160;indefinite&#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="../F07/f07nnf.xml">F07NNF&#160;(ZSYSV)</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;complex&#160;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07qnf.xml">F07QNF&#160;(ZSPSV)</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;complex&#160;triangular&#160;band&#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="../F07/f07vsf.xml">F07VSF&#160;(ZTBTRS)</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;complex&#160;triangular&#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="../F07/f07tsf.xml">F07TSF&#160;(ZTRTRS)</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;complex&#160;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07usf.xml">F07USF&#160;(ZTPTRS)</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;complex&#160;tridiagonal&#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="../F07/f07cnf.xml">F07CNF&#160;(ZGTSV)</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;band&#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="../F07/f07baf.xml">F07BAF&#160;(DGBSV)</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="../F07/f07aaf.xml">F07AAF&#160;(DGESV)</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,&#160;using&#160;mixed&#160;precision</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="../F07/f07acf.xml">F07ACF&#160;(DSGESV)</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;symmetric&#160;indefinite&#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="../F07/f07maf.xml">F07MAF&#160;(DSYSV)</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;symmetric&#160;indefinite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07paf.xml">F07PAF&#160;(DSPSV)</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;symmetric&#160;positive&#160;definite&#160;band&#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="../F07/f07haf.xml">F07HAF&#160;(DPBSV)</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;symmetric&#160;positive&#160;definite&#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="../F07/f07faf.xml">F07FAF&#160;(DPOSV)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;packed&#160;storage</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="../F07/f07gaf.xml">F07GAF&#160;(DPPSV)</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;symmetric&#160;positive&#160;definite&#160;matrix,&#160;using&#160;mixed&#160;precision</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="../F07/f07fcf.xml">F07FCF&#160;(DSPOSV)</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;symmetric&#160;positive&#160;definite&#160;tridiagonal&#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="../F07/f07jaf.xml">F07JAF&#160;(DPTSV)</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;triangular&#160;band&#160;matrix&#160;</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="../F07/f07vef.xml">F07VEF&#160;(DTBTRS)</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;triangular&#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="../F07/f07tef.xml">F07TEF&#160;(DTRTRS)</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;triangular&#160;matrix,&#160;packed&#160;storage</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="../F07/f07uef.xml">F07UEF&#160;(DTPTRS)</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;tridiagonal&#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="../F07/f07caf.xml">F07CAF&#160;(DGTSV)</a></nobr></td></tr></table></div><h2 class="standard"><a class="sec" name="auxindex" id="auxindex"/>5&#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"/>6&#160;&#160;Routines Withdrawn or Scheduled for Withdrawal</h2>
<div class="paramtext">None.</div><h2 class="standard"><a class="sec" name="references" id="references"/>7&#160;&#160;References</h2><div class="paramtext"><a name="ref562" id="ref562"/>Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)  <i>LAPACK Users' Guide</i> (3rd Edition) SIAM, Philadelphia </div>
<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="ref526" id="ref526"/>Higham N J (1988)  Algorithm 674: Fortran codes for estimating the one-norm of a real or complex matrix, with applications to condition estimation <i>ACM Trans. Math. Software</i> <b>14</b> 381&#8211;396 </div>
<div class="paramtext"><a name="ref003" id="ref003"/>Wilkinson J H (1965)  <i>The Algebraic Eigenvalue Problem</i> Oxford University Press, Oxford </div><hr/><div><a class="chap" href="f07conts.xml">F07 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/F07/f07intro.pdf">F07 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>