<?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>F08PKF (DHSEIN) : 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="rout" href="../../pdf/F08/f08pkf.pdf">F08PKF (DHSEIN) (PDF version)</a></div><div><a class="chap" href="f08conts.xml">F08 Chapter Contents</a></div><div><a class="chapint" href="f08intro.xml">F08 Chapter Introduction</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Routine Document<br/><br/>F08PKF (DHSEIN)</h1><div class="paramtext"><div class="header"><b>Note:</b>&#160; before using this routine, please read the Users' Note for your implementation to check the interpretation of <span class="bitalic">bold italicised</span> terms and other implementation-dependent details.</div></div> 
<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="#purpose">1&#160;&#160;<b>Purpose</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#specification">2&#160;&#160;<b>Specification</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#description">3&#160;&#160;<b>Description</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">4&#160;&#160;<b>References</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#parameters">5&#160;&#160;<b>Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#errors">6&#160;&#160;<b>Error Indicators and Warnings</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#accuracy">7&#160;&#160;<b>Accuracy</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#fcomments">8&#160;&#160;<b>Further Comments</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#example">9&#160;&#160;<b>Example</b></a>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="purpose" id="purpose"/>1&#160;&#160;Purpose</h2>
<div class="paramtext">F08PKF (DHSEIN) computes selected left and/or right eigenvectors of a real upper Hessenberg matrix corresponding to specified eigenvalues, by inverse iteration.</div><h2 class="standard"><a class="sec" name="specification" id="specification"/>2&#160;&#160;Specification</h2><table class="fspec"><tr><td class="tdfspec1">
<div class="left-tablediv"><table class="fspec1"><tbody>
<tr>
<td class="tdfspec1" valign="top" align="left">SUBROUTINE&#160;F08PKF&#160;(</td>
<td class="tdfspec2" valign="top" align="left"><a class="arg" href="#JOB">JOB</a>, <a class="arg" href="#EIGSRC">EIGSRC</a>, <a class="arg" href="#INITV">INITV</a>, <a class="arg" href="#SELECT">SELECT</a>, <a class="arg" href="#N">N</a>, <a class="arg" href="#H">H</a>, <a class="arg" href="#LDH">LDH</a>, <a class="arg" href="#WR">WR</a>, <a class="arg" href="#WI">WI</a>, <a class="arg" href="#VL">VL</a>, <a class="arg" href="#LDVL">LDVL</a>, <a class="arg" href="#VR">VR</a>, <a class="arg" href="#LDVR">LDVR</a>, <a class="arg" href="#MM">MM</a>, <a class="arg" href="#M">M</a>, <a class="arg" href="#WORK">WORK</a>, <a class="arg" href="#IFAILL">IFAILL</a>, <a class="arg" href="#IFAILR">IFAILR</a>, <a class="arg" href="#INFO">INFO</a>)</td>
</tr>
</tbody>
</table></div>
<div class="left-tablediv"><table class="fspec3"><tbody>
<tr>
<td class="tdfspec1" valign="top" align="left">INTEGER&#160;</td>
<td class="tdfspec2" valign="top" align="left">N, LDH, LDVL, LDVR, MM, M, IFAILL(*), IFAILR(*), INFO</td>
</tr>
<tr>
<td class="tdfspec1" valign="top" align="left">REAL&#160;(KIND=nag_wp)&#160;</td>
<td class="tdfspec2" valign="top" align="left">H(LDH,*), WR(*), WI(*), VL(LDVL,*), VR(LDVR,*), WORK((N+2)*N)</td>
</tr>
<tr>
<td class="tdfspec1" valign="top" align="left">LOGICAL&#160;</td>
<td class="tdfspec2" valign="top" align="left">SELECT(*)</td>
</tr><tr>
<td class="tdfspec1" valign="top" align="left">CHARACTER(1)&#160;</td>
<td class="tdfspec2" valign="top" align="left">JOB, EIGSRC, INITV</td></tr></tbody>
</table></div>
</td></tr></table>
<div class="paramtext">The routine may be called by its 
    LAPACK
    name <span class="bitalic">dhsein</span>.</div><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">F08PKF (DHSEIN) computes left and/or right eigenvectors of a real upper Hessenberg matrix <m:math><m:mi>H</m:mi></m:math>, corresponding to selected eigenvalues.</div><div class="paramtext">The right eigenvector <m:math><m:mi>x</m:mi></m:math>, and the left eigenvector <m:math><m:mi>y</m:mi></m:math>, corresponding to an eigenvalue <m:math><m:mi>&#955;</m:mi></m:math>, are defined by:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>H</m:mi><m:mi>x</m:mi>
 <m:mo>=</m:mo>
 <m:mi>&#955;</m:mi><m:mi>x</m:mi>
 <m:mtext>&#8195; and &#8195;</m:mtext>
 <m:msup><m:mi>y</m:mi><m:mi mathvariant="normal">H</m:mi></m:msup><m:mi>H</m:mi>
 <m:mo>=</m:mo>
 <m:mi>&#955;</m:mi><m:msup><m:mi>y</m:mi><m:mi mathvariant="normal">H</m:mi></m:msup>
 <m:mfenced separators="">
  <m:mtext>&#8195; or&#160;</m:mtext>
  <m:msup><m:mi>H</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>y</m:mi>
  <m:mo>=</m:mo>
  <m:mover><m:mi>&#955;</m:mi><m:mo>-</m:mo></m:mover><m:mi>y</m:mi>
 </m:mfenced>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

Note that even though <m:math><m:mi>H</m:mi></m:math>&#160;is real, <m:math><m:mi>&#955;</m:mi></m:math>, <m:math><m:mi>x</m:mi></m:math>&#160;and <m:math><m:mi>y</m:mi></m:math>&#160;may be complex.  If <m:math><m:mi>x</m:mi></m:math>&#160;is an eigenvector corresponding to a complex eigenvalue <m:math><m:mi>&#955;</m:mi></m:math>, then the complex conjugate vector <m:math><m:mover><m:mi>x</m:mi><m:mo>-</m:mo></m:mover></m:math>&#160;is the eigenvector corresponding to the complex conjugate eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>-</m:mo></m:mover></m:math>.</div><div class="paramtext">The eigenvectors are computed by inverse iteration.  They are scaled so that, for a real eigenvector <m:math><m:mi>x</m:mi></m:math>, 
<m:math>
 <m:mrow><m:mi>max</m:mi><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:mfenced></m:mrow>
 <m:mo>=</m:mo>
 <m:mn>1</m:mn>
</m:math>, 
and for a complex eigenvector, 
<m:math>
 <m:mrow><m:mi>max</m:mi><m:mspace width="0.25em"/><m:mo>&#8289;</m:mo><m:mrow>
   <m:mfenced open="|" close="|" separators="">
    <m:mrow><m:mi>Re</m:mi><m:mfenced separators=""><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:mfenced></m:mrow>
   </m:mfenced>
   <m:mo>+</m:mo><m:mfenced open="|" close="|" separators="">
    <m:mrow><m:mi>Im</m:mi><m:mo>&#8289;</m:mo><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:mrow>
   </m:mfenced>
  </m:mrow></m:mrow>
 <m:mo>=</m:mo>
 <m:mn>1</m:mn>
</m:math>.</div><div class="paramtext">If <m:math><m:mi>H</m:mi></m:math>&#160;has been formed by reduction of a real general matrix <m:math><m:mi>A</m:mi></m:math>&#160;to upper Hessenberg form, then the eigenvectors of <m:math><m:mi>H</m:mi></m:math>&#160;may be transformed to eigenvectors of <m:math><m:mi>A</m:mi></m:math>&#160;by a call to <a class="rout" href="../F08/f08ngf.xml">F08NGF (DORMHR)</a>.</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#160;&#160;References</h2><div class="paramtext"><a name="ref105" id="ref105"/>Golub G H and Van Loan C F (1996)  <i>Matrix Computations</i> (3rd Edition) Johns Hopkins University Press, Baltimore </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="JOB" id="JOB"/>1: &#160;&#160;&#8194; JOB &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: indicates whether left and/or right eigenvectors are to be computed.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math></dt>
<dd>Only right eigenvectors are computed.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math></dt>
<dd>Only left eigenvectors are computed.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math></dt>
<dd>Both left and right eigenvectors are computed.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>, <m:math><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="EIGSRC" id="EIGSRC"/>2: &#160;&#160;&#8194; EIGSRC &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: indicates whether the eigenvalues of <m:math><m:mi>H</m:mi></m:math>&#160;(stored in <a class="arg" href="#WR">WR</a> and <a class="arg" href="#WI">WI</a>) were found using <a class="rout" href="../F08/f08pef.xml">F08PEF (DHSEQR)</a>.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#EIGSRC"><m:mi mathcolor="#EE0000" mathvariant="bold">EIGSRC</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'Q'</m:mtext></m:math></dt>
<dd>The eigenvalues of <m:math><m:mi>H</m:mi></m:math>&#160;were found using <a class="rout" href="../F08/f08pef.xml">F08PEF (DHSEQR)</a>; thus if <m:math><m:mi>H</m:mi></m:math>&#160;has any zero subdiagonal elements (and so is block triangular), then the <m:math><m:mi>j</m:mi></m:math>th eigenvalue can be assumed to be an eigenvalue of the block containing the <m:math><m:mi>j</m:mi></m:math>th row/column. This property allows the routine to perform inverse iteration on just one diagonal block.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#EIGSRC"><m:mi mathcolor="#EE0000" mathvariant="bold">EIGSRC</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math></dt>
<dd>No such assumption is made and the routine performs inverse iteration using the whole matrix.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#EIGSRC"><m:mi mathcolor="#EE0000" mathvariant="bold">EIGSRC</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'Q'</m:mtext></m:math>&#160;or <m:math><m:mtext>'N'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="INITV" id="INITV"/>3: &#160;&#160;&#8194; INITV &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: indicates whether you are supplying initial estimates for the selected eigenvectors.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math></dt>
<dd>No initial estimates are supplied.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math></dt>
<dd>Initial estimates are supplied in <a class="arg" href="#VL">VL</a> and/or <a class="arg" href="#VR">VR</a>.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>&#160;or <m:math><m:mtext>'U'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="SELECT" id="SELECT"/>4: &#160;&#160;&#8194; SELECT(<m:math><m:mo>*</m:mo></m:math>) &#8211; LOGICAL&#160;array<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><b>Note:</b> the dimension of the array <a class="arg" href="#SELECT">SELECT</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>.</div>
<div class="paramtext"><i>On entry</i>: specifies which eigenvectors are to be computed. To obtain the real eigenvector corresponding to the real eigenvalue <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WR"><m:mi mathcolor="#EE0000" mathvariant="bold">WR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#SELECT"><m:mi mathcolor="#EE0000" mathvariant="bold">SELECT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;must be set .TRUE.. To select the complex eigenvector corresponding to the complex eigenvalue <m:math><m:mfenced separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WR"><m:mi mathcolor="#EE0000" mathvariant="bold">WR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WI"><m:mi mathcolor="#EE0000" mathvariant="bold">WI</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>&#160;with complex conjugate (<m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WR"><m:mi mathcolor="#EE0000" mathvariant="bold">WR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>j</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WI"><m:mi mathcolor="#EE0000" mathvariant="bold">WI</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>j</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>), <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#SELECT"><m:mi mathcolor="#EE0000" mathvariant="bold">SELECT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;and/or <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#SELECT"><m:mi mathcolor="#EE0000" mathvariant="bold">SELECT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>j</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>&#160;must be set .TRUE.; the eigenvector corresponding to the <b>first</b> eigenvalue in the pair is computed.</div>
<div class="paramtext"><i>On exit</i>: if a complex eigenvector was selected as specified above, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#SELECT"><m:mi mathcolor="#EE0000" mathvariant="bold">SELECT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;is set to .TRUE. and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#SELECT"><m:mi mathcolor="#EE0000" mathvariant="bold">SELECT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>j</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>&#160;to .FALSE..</div>
</dd><dt class="paramhead"><a name="N" id="N"/>5: &#160;&#160;&#8194; N &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: 

<m:math><m:mi>n</m:mi></m:math>, the order of the matrix <m:math><m:mi>H</m:mi></m:math>.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>.
</div>
</dd><dt class="paramhead"><a name="H" id="H"/>6: &#160;&#160;&#8194; H(<a class="arg" href="#LDH">LDH</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><b>Note:</b> the second dimension of the array <a class="arg" href="#H">H</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>.</div>
<div class="paramtext"><i>On entry</i>: the <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;upper Hessenberg matrix <m:math><m:mi>H</m:mi></m:math>.</div>
</dd><dt class="paramhead"><a name="LDH" id="LDH"/>7: &#160;&#160;&#8194; LDH &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the first dimension of the array <a class="arg" href="#H">H</a> as declared in the (sub)program from which F08PKF (DHSEIN) is called.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDH"><m:mi mathcolor="#EE0000" mathvariant="bold">LDH</m:mi></m:maction><m:mo>&#8805;</m:mo><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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>.
</div>
</dd><dt class="paramhead"><a name="WR" id="WR"/>8: &#160;&#160;&#8194; WR(<m:math><m:mo>*</m:mo></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Input/Output</span></dt><dt class="multi-paramhead"><a name="WI" id="WI"/>9: &#160;&#160;&#8194; WI(<m:math><m:mo>*</m:mo></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><b>Note:</b> the dimension of the arrays <a class="arg" href="#WR">WR</a> and <a class="arg" href="#WI">WI</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>.</div>
<div class="paramtext"><i>On entry</i>: the real and imaginary parts, respectively, of the eigenvalues of the matrix <m:math><m:mi>H</m:mi></m:math>. Complex conjugate pairs of values must be stored in consecutive elements of the arrays. If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#EIGSRC"><m:mi mathcolor="#EE0000" mathvariant="bold">EIGSRC</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'Q'</m:mtext></m:math>, the arrays <b>must</b> be exactly as returned by <a class="rout" href="../F08/f08pef.xml">F08PEF (DHSEQR)</a>.</div>
<div class="paramtext"><i>On exit</i>: some elements of <a class="arg" href="#WR">WR</a> may be modified, as close eigenvalues are perturbed slightly in searching for independent eigenvectors.</div>
</dd><dt class="paramhead"><a name="VL" id="VL"/>10: &#8194; VL(<a class="arg" href="#LDVL">LDVL</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><b>Note:</b> the second dimension of the array <a class="arg" href="#VL">VL</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction></m:mfenced></m:mrow></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>&#160;and at least <m:math><m:mn>1</m:mn></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>.</div>
<div class="paramtext"><i>On entry</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <a class="arg" href="#VL">VL</a> must contain starting vectors for inverse iteration for the left eigenvectors. Each starting vector must be stored in the same column  or columns as will be used to store the corresponding eigenvector (see below).
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>, <a class="arg" href="#VL">VL</a> need not be set.</div>
</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <a class="arg" href="#VL">VL</a> contains the computed left eigenvectors (as specified by <a class="arg" href="#SELECT">SELECT</a>). The eigenvectors are stored consecutively in the  columns of the array,  in the same order as their eigenvalues. Corresponding to each selected real eigenvalue is a real eigenvector, occupying one  column. Corresponding to each selected complex eigenvalue is a complex eigenvector, occupying two  columns: the first  column holds the real part and the second  column holds the imaginary part.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>, <a class="arg" href="#VL">VL</a> is not referenced.</div>
</div>
</dd><dt class="paramhead"><a name="LDVL" id="LDVL"/>11: &#8194; LDVL &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the first dimension of the array <a class="arg" href="#VL">VL</a> as declared in the (sub)program from which F08PKF (DHSEIN) is called.</div><div class="paramtext"><i>Constraints</i>:
   <div class="paramtext"/><ul class="listcons">
<li class="listcons">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDVL"><m:mi mathcolor="#EE0000" mathvariant="bold">LDVL</m:mi></m:maction><m:mo>&#8805;</m:mo><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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>;</li>
<li class="listcons">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDVL"><m:mi mathcolor="#EE0000" mathvariant="bold">LDVL</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1</m:mn></m:math>.</li>
</ul></div>
</dd><dt class="paramhead"><a name="VR" id="VR"/>12: &#8194; VR(<a class="arg" href="#LDVR">LDVR</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><b>Note:</b> the second dimension of the array <a class="arg" href="#VR">VR</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction></m:mfenced></m:mrow></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>&#160;and at least <m:math><m:mn>1</m:mn></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>.</div>
<div class="paramtext"><i>On entry</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'U'</m:mtext></m:math>&#160;and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <a class="arg" href="#VR">VR</a> must contain starting vectors for inverse iteration for the right eigenvectors. Each starting vector must be stored in the same column  or columns as will be used to store the corresponding eigenvector (see below).
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INITV"><m:mi mathcolor="#EE0000" mathvariant="bold">INITV</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'N'</m:mtext></m:math>, <a class="arg" href="#VR">VR</a> need not be set.</div>
</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <a class="arg" href="#VR">VR</a> contains the computed right eigenvectors (as specified by <a class="arg" href="#SELECT">SELECT</a>). The eigenvectors are stored consecutively in the  columns of the array,  in the same order as their eigenvalues. Corresponding to each selected real eigenvalue is a real eigenvector, occupying one  column. Corresponding to each selected complex eigenvalue is a complex eigenvector, occupying two  columns: the first  column holds the real part and the second  column holds the imaginary part.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <a class="arg" href="#VR">VR</a> is not referenced.</div>
</div>
</dd><dt class="paramhead"><a name="LDVR" id="LDVR"/>13: &#8194; LDVR &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the first dimension of the array <a class="arg" href="#VR">VR</a> as declared in the (sub)program from which F08PKF (DHSEIN) is called.</div><div class="paramtext"><i>Constraints</i>:
   <div class="paramtext"/><ul class="listcons">
<li class="listcons">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDVR"><m:mi mathcolor="#EE0000" mathvariant="bold">LDVR</m:mi></m:maction><m:mo>&#8805;</m:mo><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:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:mfenced></m:mrow></m:math>;</li>
<li class="listcons">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDVR"><m:mi mathcolor="#EE0000" mathvariant="bold">LDVR</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1</m:mn></m:math>.</li>
</ul></div>
</dd><dt class="paramhead"><a name="MM" id="MM"/>14: &#8194; MM &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the number of columns in the arrays <a class="arg" href="#VL">VL</a> and/or <a class="arg" href="#VR">VR</a>
. The actual number of 

columns required, <m:math><m:mi mathvariant="italic">m</m:mi></m:math>, is obtained by counting <m:math><m:mn>1</m:mn></m:math>&#160;for each selected real eigenvector and <m:math><m:mn>2</m:mn></m:math>&#160;for each selected complex eigenvector (see <a class="arg" href="#SELECT">SELECT</a>); <m:math><m:mn>0</m:mn><m:mo>&#8804;</m:mo><m:mi mathvariant="italic">m</m:mi><m:mo>&#8804;</m:mo><m:mi>n</m:mi></m:math>.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mi mathvariant="italic">m</m:mi></m:math>.
</div></dd><dt class="paramhead"><a name="M" id="M"/>15: &#8194; M &#8211; INTEGER<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: <m:math><m:mi mathvariant="italic">m</m:mi></m:math>, the number of  columns of <a class="arg" href="#VL">VL</a> and/or <a class="arg" href="#VR">VR</a> required to store the selected eigenvectors.</div>
</dd><dt class="paramhead"><a name="WORK" id="WORK"/>16: &#8194; WORK(<m:math><m:mfenced separators=""><m:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction><m:mo>+</m:mo><m:mn>2</m:mn></m:mfenced><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#N"><m:mi mathcolor="#EE0000" mathvariant="bold">N</m:mi></m:maction></m:math>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Workspace</span></dt><dt class="paramhead"><a name="IFAILL" id="IFAILL"/>17: &#8194; IFAILL(<m:math><m:mo>*</m:mo></m:math>) &#8211; INTEGER&#160;array<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><b>Note:</b> the dimension of the array <a class="arg" href="#IFAILL">IFAILL</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction></m:mfenced></m:mrow></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>&#160;and at least <m:math><m:mn>1</m:mn></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>.</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILL</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;if the selected left eigenvector converged and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILL</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>j</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;if the eigenvector stored in the <m:math><m:mi>i</m:mi></m:math>th  column of <a class="arg" href="#VL">VL</a> (corresponding to the <m:math><m:mi>j</m:mi></m:math>th eigenvalue as held in <m:math><m:mfenced separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WR"><m:mi mathcolor="#EE0000" mathvariant="bold">WR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WI"><m:mi mathcolor="#EE0000" mathvariant="bold">WI</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>&#160;failed to converge. If the <m:math><m:mi>i</m:mi></m:math>th and <m:math><m:mfenced separators=""><m:mi>i</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced></m:math>th  columns of <a class="arg" href="#VL">VL</a> contain a selected complex eigenvector, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILL</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILL</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>i</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>&#160;are set to the same value.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>, <a class="arg" href="#IFAILL">IFAILL</a> is not referenced.</div>
</div>
</dd><dt class="paramhead"><a name="IFAILR" id="IFAILR"/>18: &#8194; IFAILR(<m:math><m:mo>*</m:mo></m:math>) &#8211; INTEGER&#160;array<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><b>Note:</b> the dimension of the array <a class="arg" href="#IFAILR">IFAILR</a>
must be at least
<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:maction actiontype="link" dsi:type="simple" dsi:href="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction></m:mfenced></m:mrow></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>&#160;and at least <m:math><m:mn>1</m:mn></m:math>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>.</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'R'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILR"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;if the selected right eigenvector converged and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILR"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>j</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;if the eigenvector stored in the <m:math><m:mi>i</m:mi></m:math>th row or column of <a class="arg" href="#VR">VR</a> (corresponding to the <m:math><m:mi>j</m:mi></m:math>th eigenvalue as held in <m:math><m:mfenced separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WR"><m:mi mathcolor="#EE0000" mathvariant="bold">WR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#WI"><m:mi mathcolor="#EE0000" mathvariant="bold">WI</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>) failed to converge. If the <m:math><m:mi>i</m:mi></m:math>th and <m:math><m:mfenced separators=""><m:mi>i</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mfenced></m:math>th rows or columns of <a class="arg" href="#VR">VR</a> contain a selected complex eigenvector, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILR"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAILR"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAILR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>i</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>&#160;are set to the same value.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#JOB"><m:mi mathcolor="#EE0000" mathvariant="bold">JOB</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'L'</m:mtext></m:math>, <a class="arg" href="#IFAILR">IFAILR</a> is not referenced.</div>
</div>
</dd><dt class="paramhead"><a name="INFO" id="INFO"/>19: &#8194; INFO &#8211; INTEGER<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INFO"><m:mi mathcolor="#EE0000" mathvariant="bold">INFO</m:mi></m:maction><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;unless the routine detects an error (see <a class="sec" href="#errors">Section 6</a>).</div></dd></dl><h2 class="standard"><a class="sec" name="errors" id="errors"/>6&#160;&#160;Error Indicators and Warnings</h2><dl class="ifail">
<dt class="errorhead"><a name="INlt0" id="INlt0"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INFO"><m:mi mathcolor="#EE0000" mathvariant="bold">INFO</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math></dt>
<dd><div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INFO"><m:mi mathcolor="#EE0000" mathvariant="bold">INFO</m:mi></m:maction><m:mo>=</m:mo><m:mo>-</m:mo><m:mi>i</m:mi></m:math>, argument <m:math><m:mi>i</m:mi></m:math>&#160;had an illegal value. An explanatory message is output, and execution of the program is terminated.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="INgt0" id="INgt0"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INFO"><m:mi mathcolor="#EE0000" mathvariant="bold">INFO</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math></dt>
<dd><div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INFO"><m:mi mathcolor="#EE0000" mathvariant="bold">INFO</m:mi></m:maction><m:mo>=</m:mo><m:mi>i</m:mi></m:math>, then <m:math><m:mi>i</m:mi></m:math>&#160;eigenvectors (as indicated by the parameters <a class="arg" href="#IFAILL">IFAILL</a> and/or <a class="arg" href="#IFAILR">IFAILR</a> above) failed to converge.  The corresponding columns of <a class="arg" href="#VL">VL</a> and/or <a class="arg" href="#VR">VR</a> contain no useful information.</div></dd>
</dl><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">Each computed right eigenvector <m:math><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:math>&#160;is the exact eigenvector of a nearby matrix <m:math><m:mi>A</m:mi><m:mo>+</m:mo><m:msub><m:mi>E</m:mi><m:mi>i</m:mi></m:msub></m:math>, such that <m:math><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:msub><m:mi>E</m:mi><m:mi>i</m:mi></m:msub></m:mfenced><m:mo>=</m:mo><m:mrow><m:mi mathvariant="italic">O</m:mi><m:mfenced separators=""><m:mi>&#949;</m:mi></m:mfenced></m:mrow><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced></m:math>.  Hence the residual is small:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mfenced open="&#8214;" close="&#8214;" separators="">
  <m:mi>A</m:mi><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub>
  <m:mo>-</m:mo>
  <m:msub><m:mi>&#955;</m:mi><m:mi>i</m:mi></m:msub><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub>
 </m:mfenced>
 <m:mo>=</m:mo>
 <m:mrow><m:mi mathvariant="italic">O</m:mi><m:mfenced separators=""><m:mi>&#949;</m:mi></m:mfenced></m:mrow>
 <m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>A</m:mi></m:mfenced>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

However, eigenvectors corresponding to close or coincident eigenvalues may not accurately span the relevant subspaces.</div><div class="paramtext">Similar remarks apply to computed left eigenvectors.</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">The complex analogue of this routine is <a class="rout" href="../F08/f08pxf.xml">F08PXF (ZHSEIN)</a>.</div><h2 class="standard"><a class="sec" name="example" id="example"/>9&#160;&#160;Example</h2>
<div class="paramtext">See <a class="sec" href="../F08/f08ngf.xml#example">Section 9</a> in F08NGF (DORMHR).</div>
<hr/><div><a class="rout" href="../../pdf/F08/f08pkf.pdf">F08PKF (DHSEIN) (PDF version)</a></div><div><a class="chap" href="f08conts.xml">F08 Chapter Contents</a></div><div><a class="chapint" href="f08intro.xml">F08 Chapter Introduction</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>