<?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>F08YXF (ZTGEVC) : 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/f08yxf.pdf">F08YXF (ZTGEVC) (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/>F08YXF (ZTGEVC)</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="htmltoc" onclick="showLevel('tocexample');"><span class="htmltocplus" id="tocexampleplus">+</span><span class="htmltocminus" id="tocexampleminus">&#8722;</span></span>
<a class="htmltoc" href="#example">9&#160;&#160;<b>Example</b></a>
<div class="htmltocitem" id="tocexample">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examtext">9.1&#160;&#160;<b>Program Text</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examdata">9.2&#160;&#160;<b>Program Data</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examresults">9.3&#160;&#160;<b>Program Results</b></a>
</div>
</div>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="purpose" id="purpose"/>1&#160;&#160;Purpose</h2>
<div class="paramtext">F08YXF (ZTGEVC) computes some or all of the right and/or left generalized eigenvectors of a pair of complex upper triangular matrices <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>.</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;F08YXF&#160;(</td>
<td class="tdfspec2" valign="top" align="left"><a class="arg" href="#SIDE">SIDE</a>, <a class="arg" href="#HOWMNY">HOWMNY</a>, <a class="arg" href="#SELECT">SELECT</a>, <a class="arg" href="#N">N</a>, <a class="arg" href="#A">A</a>, <a class="arg" href="#LDA">LDA</a>, <a class="arg" href="#B">B</a>, <a class="arg" href="#LDB">LDB</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="#RWORK">RWORK</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, LDA, LDB, LDVL, LDVR, MM, M, 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">RWORK(2*N)</td>
</tr>
<tr>
<td class="tdfspec1" valign="top" align="left">COMPLEX&#160;(KIND=nag_wp)&#160;</td>
<td class="tdfspec2" valign="top" align="left">A(LDA,*), B(LDB,*), VL(LDVL,*), VR(LDVR,*), WORK(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">SIDE, HOWMNY</td></tr></tbody>
</table></div>
</td></tr></table>
<div class="paramtext">The routine may be called by its 
    LAPACK
    name <span class="bitalic">ztgevc</span>.</div><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">F08YXF (ZTGEVC) computes some or all of the right and/or left generalized eigenvectors of the matrix pair <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;which is assumed to be in upper triangular form.  If the matrix pair <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;is not upper triangular then the routine <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a> should be called before invoking F08YXF (ZTGEVC).</div><div class="paramtext">The right generalized eigenvector <m:math><m:mi>x</m:mi></m:math>&#160;and the left generalized eigenvector <m:math><m:mi>y</m:mi></m:math>&#160;of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;corresponding to a generalized eigenvalue <m:math><m:mi>&#955;</m:mi></m:math>&#160;are defined by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mfenced separators=""><m:mi>A</m:mi><m:mo>-</m:mo><m:mi>&#955;</m:mi><m:mi>B</m:mi></m:mfenced><m:mi>x</m:mi><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

and

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:msup><m:mi>y</m:mi><m:mi mathvariant="normal">H</m:mi></m:msup> <m:mfenced separators=""><m:mi>A</m:mi><m:mo>-</m:mo><m:mi>&#955;</m:mi> <m:mi>B</m:mi></m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

If a generalized eigenvalue is determined as <m:math><m:mn>0</m:mn><m:mo>/</m:mo><m:mn>0</m:mn></m:math>, which is due to zero diagonal elements at the same locations in both <m:math><m:mi>A</m:mi></m:math>&#160;and <m:math><m:mi>B</m:mi></m:math>, a unit vector is returned as the corresponding eigenvector.</div><div class="paramtext">Note that the generalized eigenvalues are computed using <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a> but F08YXF (ZTGEVC) does not explicitly require the generalized eigenvalues to compute eigenvectors.  The ordering of the eigenvectors is based on the ordering of the eigenvalues as computed by F08YXF (ZTGEVC).</div><div class="paramtext">If all eigenvectors are requested, the routine may either return the matrices <m:math><m:mi>X</m:mi></m:math>&#160;and/or <m:math><m:mi>Y</m:mi></m:math>&#160;of right or left eigenvectors of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>, or the products <m:math><m:mi>Z</m:mi><m:mi>X</m:mi></m:math>&#160;and/or <m:math><m:mi>Q</m:mi><m:mi>Y</m:mi></m:math>, where <m:math><m:mi>Z</m:mi></m:math>&#160;and <m:math><m:mi>Q</m:mi></m:math>&#160;are two matrices supplied by you.  Usually, <m:math><m:mi>Q</m:mi></m:math>&#160;and <m:math><m:mi>Z</m:mi></m:math>&#160;are chosen as the unitary matrices returned by <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.  Equivalently, <m:math><m:mi>Q</m:mi></m:math>&#160;and <m:math><m:mi>Z</m:mi></m:math>&#160;are the left and right Schur vectors of the matrix pair supplied to <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.  In that case, <m:math><m:mi>Q</m:mi><m:mi>Y</m:mi></m:math>&#160;and <m:math><m:mi>Z</m:mi><m:mi>X</m:mi></m:math>&#160;are the left and right generalized eigenvectors, respectively, of the matrix pair supplied to <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#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="ref107" id="ref107"/>Moler C B and Stewart G W (1973)  An algorithm for generalized matrix eigenproblems <i>SIAM J. Numer. Anal.</i> <b>10</b> 241&#8211;256 </div>
<div class="paramtext"><a name="ref612" id="ref612"/>Stewart G W and Sun J-G (1990)  <i>Matrix Perturbation Theory</i> Academic Press, London </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="SIDE" id="SIDE"/>1: &#160;&#160;&#8194; SIDE &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: specifies the required sets of generalized eigenvectors.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>, <m:math><m:mtext>'L'</m:mtext></m:math>&#160;or <m:math><m:mtext>'R'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="HOWMNY" id="HOWMNY"/>2: &#160;&#160;&#8194; HOWMNY &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: specifies further details of the required generalized eigenvectors.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math></dt>
<dd>All right and/or left eigenvectors are computed.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math></dt>
<dd>All right and/or left eigenvectors are computed; they are backtransformed using the input matrices supplied in arrays <a class="arg" href="#VR">VR</a> and/or <a class="arg" href="#VL">VL</a>.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math></dt>
<dd>Selected right and/or left eigenvectors, defined by the array <a class="arg" href="#SELECT">SELECT</a>, are computed.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>, <m:math><m:mtext>'B'</m:mtext></m:math>&#160;or <m:math><m:mtext>'S'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="SELECT" id="SELECT"/>3: &#160;&#160;&#8194; SELECT(<m:math><m:mo>*</m:mo></m:math>) &#8211; LOGICAL&#160;array<span class="pclass">Input</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>&#160;if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math>, and at least <m:math><m:mn>1</m:mn></m:math>&#160;otherwise.</div>
<div class="paramtext"><i>On entry</i>: specifies the eigenvectors to be computed if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math>. To select the generalized eigenvector corresponding to the <m:math><m:mi>j</m:mi></m:math>th generalized eigenvalue, the <m:math><m:mi>j</m:mi></m:math>th element of <a class="arg" href="#SELECT">SELECT</a> should be set to .TRUE..</div><div class="paramtext"><i>Constraint</i>:
  <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 mathvariant="italic">j</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi mathvariant="normal">.TRUE.</m:mi></m:math>&#160;or <m:math><m:mi mathvariant="normal">.FALSE.</m:mi></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>n</m:mi></m:math>.
</div>
</dd><dt class="paramhead"><a name="N" id="N"/>4: &#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 matrices <m:math><m:mi>A</m:mi></m:math>&#160;and <m:math><m:mi>B</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="A" id="A"/>5: &#160;&#160;&#8194; A(<a class="arg" href="#LDA">LDA</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; COMPLEX&#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="#A">A</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 matrix <m:math><m:mi>A</m:mi></m:math>&#160;must be in upper triangular form.  Usually, this is the matrix <m:math><m:mi>A</m:mi></m:math>&#160;returned by <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.</div></dd><dt class="paramhead"><a name="LDA" id="LDA"/>6: &#160;&#160;&#8194; LDA &#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="#A">A</a> as declared in the (sub)program from which F08YXF (ZTGEVC) is called.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDA"><m:mi mathcolor="#EE0000" mathvariant="bold">LDA</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="B" id="B"/>7: &#160;&#160;&#8194; B(<a class="arg" href="#LDB">LDB</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; COMPLEX&#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="#B">B</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 matrix <m:math><m:mi>B</m:mi></m:math>&#160;must be in upper triangular form with non-negative real diagonal elements.  Usually, this is the matrix <m:math><m:mi>B</m:mi></m:math>&#160;returned by <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a></div></dd><dt class="paramhead"><a name="LDB" id="LDB"/>8: &#160;&#160;&#8194; LDB &#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="#B">B</a> as declared in the (sub)program from which F08YXF (ZTGEVC) is called.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LDB"><m:mi mathcolor="#EE0000" mathvariant="bold">LDB</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="VL" id="VL"/>9: &#160;&#160;&#8194; VL(<a class="arg" href="#LDVL">LDVL</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; COMPLEX&#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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>&#160;and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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 be initialized to an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix <m:math><m:mi>Q</m:mi></m:math>. Usually, this is the unitary matrix <m:math><m:mi>Q</m:mi></m:math>&#160;of left Schur vectors returned by <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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: 
<ul class="listind"><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>, the matrix <m:math><m:mi>Y</m:mi></m:math>&#160;of left eigenvectors of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>;</li><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>, the matrix <m:math><m:mi>Q</m:mi><m:mi>Y</m:mi></m:math>;</li><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math>, the left eigenvectors of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;specified by <a class="arg" href="#SELECT">SELECT</a>, stored consecutively in the  columns  of the array <a class="arg" href="#VL">VL</a>, in the same order as their corresponding eigenvalues.</li></ul>
</div>
</dd><dt class="paramhead"><a name="LDVL" id="LDVL"/>10: &#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 F08YXF (ZTGEVC) 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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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"/>11: &#8194; VR(<a class="arg" href="#LDVR">LDVR</a>,<m:math><m:mo>*</m:mo></m:math>) &#8211; COMPLEX&#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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>&#160;and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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 be initialized to an <m:math><m:mi>n</m:mi></m:math>&#160;by <m:math><m:mi>n</m:mi></m:math>&#160;matrix <m:math><m:mi>Z</m:mi></m:math>. Usually, this is the unitary matrix <m:math><m:mi>Z</m:mi></m:math>&#160;of right Schur vectors returned by <a class="rout" href="../F08/f08xef.xml">F08XEF (DHGEQZ)</a>.</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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: 
<ul class="listind"><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>, the matrix <m:math><m:mi>X</m:mi></m:math>&#160;of right eigenvectors of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>;</li><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>, the matrix <m:math><m:mi>Z</m:mi><m:mi>X</m:mi></m:math>;</li><li class="listind">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math>, the right eigenvectors of <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;specified by <a class="arg" href="#SELECT">SELECT</a>, stored consecutively in the  columns  of the array <a class="arg" href="#VR">VR</a>, in the same order as their corresponding eigenvalues.</li></ul>
</div>
</dd><dt class="paramhead"><a name="LDVR" id="LDVR"/>12: &#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 F08YXF (ZTGEVC) 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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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="#SIDE"><m:mi mathcolor="#EE0000" mathvariant="bold">SIDE</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"/>13: &#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>.</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="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</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="#MM"><m:mi mathcolor="#EE0000" mathvariant="bold">MM</m:mi></m:maction><m:mo>&#8805;</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>;</li>
<li class="listcons">if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'S'</m:mtext></m:math>, <a class="arg" href="#MM">MM</a> must not be less than the number of requested eigenvectors.</li>
</ul></div>
</dd><dt class="paramhead"><a name="M" id="M"/>14: &#8194; M &#8211; INTEGER<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the number of columns in the arrays <a class="arg" href="#VL">VL</a> and/or <a class="arg" href="#VR">VR</a> actually used to store the eigenvectors. If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#HOWMNY"><m:mi mathcolor="#EE0000" mathvariant="bold">HOWMNY</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'B'</m:mtext></m:math>, <a class="arg" href="#M">M</a> is set to <a class="arg" href="#N">N</a>. Each selected eigenvector occupies one column.</div>
</dd><dt class="paramhead"><a name="WORK" id="WORK"/>15: &#8194; WORK(<m:math><m:mn>2</m:mn><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; COMPLEX&#160;(KIND=nag_wp)&#160;array<span class="pclass">Workspace</span></dt><dt class="paramhead"><a name="RWORK" id="RWORK"/>16: &#8194; RWORK(<m:math><m:mn>2</m:mn><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="INFO" id="INFO"/>17: &#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>
<div class="paramtext">Errors or warnings detected by the routine:</div>
<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><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">It is beyond the scope of this manual to summarize the accuracy of the solution of the generalized eigenvalue problem.  Interested readers should consult Section 4.11 of the LAPACK Users' Guide (see <a class="ref" href="#ref562">Anderson <span class="italic">et al.</span> (1999)</a>) and Chapter 6 of <a class="ref" href="#ref612">Stewart and Sun (1990)</a>.</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">F08YXF (ZTGEVC) is the sixth step in the solution of the complex generalized eigenvalue problem and is usually called after <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a>.</div><div class="paramtext">The real analogue of this routine is <a class="rout" href="../F08/f08ykf.xml">F08YKF (DTGEVC)</a>.</div><h2 class="standard"><a class="sec" name="example" id="example"/>9&#160;&#160;Example</h2>
<div class="paramtext">This example computes the <m:math><m:mi>&#945;</m:mi></m:math>&#160;and <m:math><m:mi>&#946;</m:mi></m:math>&#160;parameters, which defines the generalized eigenvalues and the corresponding left and right eigenvectors, of the matrix pair <m:math><m:mfenced separators=""><m:mi>A</m:mi><m:mo>,</m:mo><m:mi>B</m:mi></m:mfenced></m:math>&#160;given by

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>A</m:mi>
 <m:mo>=</m:mo>
 <m:mfenced><m:mtable columnalign="right">
<m:mtr>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>5.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>6.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>2.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>4.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>8.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>16.0</m:mn><m:mo>+</m:mo><m:mn>5.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>3.0</m:mn><m:mo>+</m:mo><m:mn>1.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>9.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>27.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>81.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>4.0</m:mn><m:mo>+</m:mo><m:mn>0.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>16.0</m:mn><m:mo>+</m:mo><m:mn>1.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>64.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>256.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr>
</m:mtable></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

and

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>B</m:mi>
 <m:mo>=</m:mo>
 <m:mfenced><m:mtable columnalign="right">
<m:mtr>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>0.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>2.0</m:mn><m:mo>+</m:mo><m:mn>1.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>3.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>4.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>1.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>4.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>9.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>16.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>2.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>8.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>27.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>64.0</m:mn><m:mo>+</m:mo><m:mn>5.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr><m:mtr>
   <m:mtd><m:mn>1.0</m:mn><m:mo>+</m:mo><m:mn>3.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>16.0</m:mn><m:mo>+</m:mo><m:mn>4.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>81.0</m:mn><m:mo>+</m:mo><m:mn>5.0</m:mn><m:mi>i</m:mi></m:mtd>
   <m:mtd><m:mn>256.0</m:mn><m:mo>+</m:mo><m:mn>6.0</m:mn><m:mi>i</m:mi></m:mtd>
</m:mtr>
</m:mtable></m:mfenced>
<m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

To compute generalized eigenvalues, it is required to call five routines: <a class="rout" href="../F08/f08wvf.xml">F08WVF (ZGGBAL)</a> to balance the matrix, <a class="rout" href="../F08/f08asf.xml">F08ASF (ZGEQRF)</a> to perform the <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;factorization of <m:math><m:mi>B</m:mi></m:math>, <a class="rout" href="../F08/f08auf.xml">F08AUF (ZUNMQR)</a> to apply <m:math><m:mi>Q</m:mi></m:math>&#160;to <m:math><m:mi>A</m:mi></m:math>, <a class="rout" href="../F08/f08wsf.xml">F08WSF (ZGGHRD)</a> to reduce the matrix pair to the generalized Hessenberg form and <a class="rout" href="../F08/f08xsf.xml">F08XSF (ZHGEQZ)</a> to compute the eigenvalues via the <m:math><m:mi>Q</m:mi><m:mi>Z</m:mi></m:math>&#160;algorithm.</div><div class="paramtext">The computation of generalized eigenvectors is done by calling F08YXF (ZTGEVC) to compute the eigenvectors of the balanced matrix pair.  The routine <a class="rout" href="../F08/f08wwf.xml">F08WWF (ZGGBAK)</a> is called to backward transform the eigenvectors to the user-supplied matrix pair.  If both left and right eigenvectors are required then <a class="rout" href="../F08/f08wwf.xml">F08WWF (ZGGBAK)</a> must be called twice.</div><h3 class="standard"><a class="sec" name="examtext" id="examtext"/>9.1&#160;&#160;Program Text</h3>
<p><a class="verbatimref" href="../../examples/source/f08yxfe.f90">Program Text (f08yxfe.f90)</a></p><h3 class="standard"><a class="sec" name="examdata" id="examdata"/>9.2&#160;&#160;Program Data</h3>
<p><a class="verbatimref" href="../../examples/data/f08yxfe.d">Program&#160;Data (f08yxfe.d)</a></p><h3 class="standard"><a class="sec" name="examresults" id="examresults"/>9.3&#160;&#160;Program Results</h3>
<p><a class="verbatimref" href="../../examples/baseresults/f08yxfe.r">Program Results (f08yxfe.r)</a></p>
<hr/><div><a class="rout" href="../../pdf/F08/f08yxf.pdf">F08YXF (ZTGEVC) (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>