<?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>F08JJF (DSTEBZ) : 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/f08jjf.pdf">F08JJF (DSTEBZ) (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/>F08JJF (DSTEBZ)</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">F08JJF (DSTEBZ) computes some (or all) of the eigenvalues of a real symmetric tridiagonal matrix, by bisection.</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;F08JJF&#160;(</td>
<td class="tdfspec2" valign="top" align="left"><a class="arg" href="#RANGE">RANGE</a>, <a class="arg" href="#ORDER">ORDER</a>, <a class="arg" href="#N">N</a>, <a class="arg" href="#VL">VL</a>, <a class="arg" href="#VU">VU</a>, <a class="arg" href="#IL">IL</a>, <a class="arg" href="#IU">IU</a>, <a class="arg" href="#ABSTOL">ABSTOL</a>, <a class="arg" href="#D">D</a>, <a class="arg" href="#E">E</a>, <a class="arg" href="#M">M</a>, <a class="arg" href="#NSPLIT">NSPLIT</a>, <a class="arg" href="#W">W</a>, <a class="arg" href="#IBLOCK">IBLOCK</a>, <a class="arg" href="#ISPLIT">ISPLIT</a>, <a class="arg" href="#WORK">WORK</a>, <a class="arg" href="#IWORK">IWORK</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, IL, IU, M, NSPLIT, IBLOCK(N), ISPLIT(N), IWORK(3*N), 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">VL, VU, ABSTOL, D(*), E(*), W(N), WORK(4*N)</td>
</tr><tr>
<td class="tdfspec1" valign="top" align="left">CHARACTER(1)&#160;</td>
<td class="tdfspec2" valign="top" align="left">RANGE, ORDER</td></tr></tbody>
</table></div>
</td></tr></table>
<div class="paramtext">The routine may be called by its 
    LAPACK
    name <span class="bitalic">dstebz</span>.</div><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">F08JJF (DSTEBZ) uses bisection to compute some or all of the eigenvalues of a real symmetric tridiagonal matrix <m:math><m:mi>T</m:mi></m:math>.</div><div class="paramtext">It searches for zero or negligible off-diagonal elements of <m:math><m:mi>T</m:mi></m:math>&#160;to see if the matrix splits into block diagonal form:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>T</m:mi>
 <m:mo>=</m:mo>
 <m:mfenced><m:mtable columnalign="right">
  <m:mtr>
   <m:mtd><m:msub><m:mi>T</m:mi><m:mn>1</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/></m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>T</m:mi><m:mn>2</m:mn></m:msub></m:mtd>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/></m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:mo>.</m:mo></m:mtd>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/></m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:mo>.</m:mo></m:mtd>
   <m:mtd/>
   <m:mtd/></m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:mo>.</m:mo></m:mtd>
   <m:mtd/></m:mtr><m:mtr>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd/>
   <m:mtd><m:msub><m:mi>T</m:mi><m:mi>p</m:mi></m:msub></m:mtd>
  </m:mtr>
 </m:mtable></m:mfenced>
<m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

It performs bisection on each of the blocks <m:math><m:msub><m:mi>T</m:mi><m:mi>i</m:mi></m:msub></m:math>&#160;and returns the block index of each computed eigenvalue, so that a subsequent call to <a class="rout" href="../F08/f08jkf.xml">F08JKF (DSTEIN)</a> to compute eigenvectors can also take advantage of the block structure.</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#160;&#160;References</h2><div class="paramtext"><a name="ref452" id="ref452"/>Kahan W (1966)  Accurate eigenvalues of a symmetric tridiagonal matrix <i>Report CS41</i> Stanford University </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="RANGE" id="RANGE"/>1: &#160;&#160;&#8194; RANGE &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: indicates which eigenvalues are required.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math></dt>
<dd>All the eigenvalues are required.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'V'</m:mtext></m:math></dt>
<dd>All the eigenvalues in the half-open interval (<a class="arg" href="#VL">VL</a>,<a class="arg" href="#VU">VU</a>] are required.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'I'</m:mtext></m:math></dt>
<dd>Eigenvalues with indices <a class="arg" href="#IL">IL</a> to <a class="arg" href="#IU">IU</a> are required.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>, <m:math><m:mtext>'V'</m:mtext></m:math>&#160;or <m:math><m:mtext>'I'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="ORDER" id="ORDER"/>2: &#160;&#160;&#8194; ORDER &#8211; CHARACTER(1)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: indicates the order in which the eigenvalues and their block numbers are to be stored.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ORDER"><m:mi mathcolor="#EE0000" mathvariant="bold">ORDER</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math></dt>
<dd>The eigenvalues are to be grouped by split-off block and ordered from smallest to largest within each block.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ORDER"><m:mi mathcolor="#EE0000" mathvariant="bold">ORDER</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'E'</m:mtext></m:math></dt>
<dd>The eigenvalues for the entire matrix are to be ordered from smallest to largest.</dd></dl>
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ORDER"><m:mi mathcolor="#EE0000" mathvariant="bold">ORDER</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'B'</m:mtext></m:math>&#160;or <m:math><m:mtext>'E'</m:mtext></m:math>.
</div>
</dd><dt class="paramhead"><a name="N" id="N"/>3: &#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>T</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="VL" id="VL"/>4: &#160;&#160;&#8194; VL &#8211; REAL&#160;(KIND=nag_wp)<span class="pclass">Input</span></dt><dt class="multi-paramhead"><a name="VU" id="VU"/>5: &#160;&#160;&#8194; VU &#8211; REAL&#160;(KIND=nag_wp)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'V'</m:mtext></m:math>, the lower and upper bounds, respectively, of the half-open interval<br/> (<a class="arg" href="#VL">VL</a>,<a class="arg" href="#VU">VU</a>] within which the required eigenvalues lie.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'I'</m:mtext></m:math>, <a class="arg" href="#VL">VL</a> is not referenced.</div>
</div><div class="paramtext"><i>Constraint</i>:
  
if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'V'</m:mtext></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#VL"><m:mi mathcolor="#EE0000" mathvariant="bold">VL</m:mi></m:maction><m:mo>&lt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#VU"><m:mi mathcolor="#EE0000" mathvariant="bold">VU</m:mi></m:maction></m:math>.
</div>
</dd><dt class="paramhead"><a name="IL" id="IL"/>6: &#160;&#160;&#8194; IL &#8211; INTEGER<span class="pclass">Input</span></dt><dt class="multi-paramhead"><a name="IU" id="IU"/>7: &#160;&#160;&#8194; IU &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'I'</m:mtext></m:math>, the indices of the first and last eigenvalues, respectively, to be computed (assuming that the eigenvalues are in ascending order).
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'V'</m:mtext></m:math>, <a class="arg" href="#IL">IL</a> is not referenced.</div>
</div><div class="paramtext"><i>Constraint</i>:
  
if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'I'</m:mtext></m:math>, <m:math><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IL"><m:mi mathcolor="#EE0000" mathvariant="bold">IL</m:mi></m:maction><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IU"><m:mi mathcolor="#EE0000" mathvariant="bold">IU</m:mi></m:maction><m:mo>&#8804;</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>.
</div>
</dd><dt class="paramhead"><a name="ABSTOL" id="ABSTOL"/>8: &#160;&#160;&#8194; ABSTOL &#8211; REAL&#160;(KIND=nag_wp)<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the absolute tolerance to which each eigenvalue is required. An eigenvalue (or cluster) is considered to have converged if it lies in an interval of width <m:math><m:mtext/><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#ABSTOL"><m:mi mathcolor="#EE0000" mathvariant="bold">ABSTOL</m:mi></m:maction></m:math>. If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ABSTOL"><m:mi mathcolor="#EE0000" mathvariant="bold">ABSTOL</m:mi></m:maction><m:mo>&#8804;</m:mo><m:mn>0.0</m:mn></m:math>, then the tolerance is taken as <m:math><m:mi mathvariant="bold-italic">machine&#160;precision</m:mi><m:mo>&#215;</m:mo><m:msub><m:mfenced open="&#8214;" close="&#8214;" separators=""><m:mi>T</m:mi></m:mfenced><m:mn>1</m:mn></m:msub></m:math>.</div>
</dd><dt class="paramhead"><a name="D" id="D"/>9: &#160;&#160;&#8194; D(<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 array <a class="arg" href="#D">D</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 diagonal elements of the tridiagonal matrix <m:math><m:mi>T</m:mi></m:math>.</div>
</dd><dt class="paramhead"><a name="E" id="E"/>10: &#8194; E(<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 array <a class="arg" href="#E">E</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:mrow><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>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>.</div>
<div class="paramtext"><i>On entry</i>: the off-diagonal elements of the tridiagonal matrix <m:math><m:mi>T</m:mi></m:math>.</div>
</dd><dt class="paramhead"><a name="M" id="M"/>11: &#8194; M &#8211; INTEGER<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: <m:math><m:mi>m</m:mi></m:math>, the actual number of eigenvalues found.</div>
</dd><dt class="paramhead"><a name="NSPLIT" id="NSPLIT"/>12: &#8194; NSPLIT &#8211; INTEGER<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the number of diagonal blocks which constitute the tridiagonal matrix <m:math><m:mi>T</m:mi></m:math>.</div>
</dd><dt class="paramhead"><a name="W" id="W"/>13: &#8194; W(<a class="arg" href="#N">N</a>) &#8211; REAL&#160;(KIND=nag_wp)&#160;array<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the required eigenvalues of the tridiagonal matrix <m:math><m:mi>T</m:mi></m:math>&#160;stored in <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#W"><m:mi mathcolor="#EE0000" mathvariant="bold">W</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#W"><m:mi mathcolor="#EE0000" mathvariant="bold">W</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>m</m:mi></m:mfenced></m:mrow></m:math>.</div>
</dd><dt class="paramhead"><a name="IBLOCK" id="IBLOCK"/>14: &#8194; IBLOCK(<a class="arg" href="#N">N</a>) &#8211; INTEGER&#160;array<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: at each row/column <m:math><m:mi>j</m:mi></m:math>&#160;where <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#E"><m:mi mathcolor="#EE0000" mathvariant="bold">E</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;is zero or negligible, <m:math><m:mi>T</m:mi></m:math>&#160;is considered to split into a block diagonal matrix and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IBLOCK"><m:mi mathcolor="#EE0000" mathvariant="bold">IBLOCK</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow></m:math>&#160;contains the block number of the eigenvalue stored in <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#W"><m:mi mathcolor="#EE0000" mathvariant="bold">W</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow></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>m</m:mi></m:math>. Note that <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IBLOCK"><m:mi mathcolor="#EE0000" mathvariant="bold">IBLOCK</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>&#160;for some <m:math><m:mi>i</m:mi></m:math>&#160;whenever <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:maction actiontype="link" dsi:type="simple" dsi:href="#INeq1"><m:mn mathcolor="#003399" mathvariant="bold">1</m:mn></m:maction></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#INeq3"><m:mn mathcolor="#003399" mathvariant="bold">3</m:mn></m:maction></m:math>&#160;(see <a class="sec" href="#errors">Section 6</a>) and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'V'</m:mtext></m:math>.</div>
</dd><dt class="paramhead"><a name="ISPLIT" id="ISPLIT"/>15: &#8194; ISPLIT(<a class="arg" href="#N">N</a>) &#8211; INTEGER&#160;array<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the leading <a class="arg" href="#NSPLIT">NSPLIT</a> elements contain the points at which <m:math><m:mi>T</m:mi></m:math>&#160;splits up into sub-matrices as follows. The first sub-matrix consists of rows/columns <m:math><m:mn>1</m:mn></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#ISPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">ISPLIT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>, the second sub-matrix consists of rows/columns <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#ISPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">ISPLIT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#ISPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">ISPLIT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn></m:mfenced></m:mrow></m:math>, <m:math><m:mo>&#8230;</m:mo></m:math>, and the <a class="arg" href="#NSPLIT">NSPLIT</a>(th) sub-matrix consists of rows/columns <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#ISPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">ISPLIT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NSPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">NSPLIT</m:mi></m:maction><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow><m:mo>+</m:mo><m:mn>1</m:mn></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#ISPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">ISPLIT</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:maction actiontype="link" dsi:type="simple" dsi:href="#NSPLIT"><m:mi mathcolor="#EE0000" mathvariant="bold">NSPLIT</m:mi></m:maction></m:mfenced></m:mrow></m:math>&#160;(<m:math><m:mtext/><m:mo>=</m:mo><m:mi>n</m:mi></m:math>).</div>
</dd><dt class="paramhead"><a name="WORK" id="WORK"/>16: &#8194; WORK(<m:math><m:mn>4</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="IWORK" id="IWORK"/>17: &#8194; IWORK(<m:math><m:mn>3</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; INTEGER&#160;array<span class="pclass">Workspace</span></dt><dt class="paramhead"><a name="INFO" id="INFO"/>18: &#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="INeq1" id="INeq1"/><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>1</m:mn></m:math></dt>
<dd><div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'V'</m:mtext></m:math>, the algorithm failed to compute some (or all) of the required eigenvalues to the required accuracy.  More precisely, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#IBLOCK"><m:mi mathcolor="#EE0000" mathvariant="bold">IBLOCK</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>&#160;indicates that eigenvalue <m:math><m:mi>i</m:mi></m:math>&#160;(stored in <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#W"><m:mi mathcolor="#EE0000" mathvariant="bold">W</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>) failed to converge.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="INeq2" id="INeq2"/><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>2</m:mn></m:math></dt>
<dd>
  
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'I'</m:mtext></m:math>, the algorithm failed to compute some (or all) of the required eigenvalues.  Try calling the routine again with <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="INeq3" id="INeq3"/><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>3</m:mn></m:math></dt>
<dd><div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'I'</m:mtext></m:math>, see the description above for <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>2</m:mn></m:math>.</div>
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#RANGE"><m:mi mathcolor="#EE0000" mathvariant="bold">RANGE</m:mi></m:maction><m:mo>=</m:mo><m:mtext>'A'</m:mtext></m:math>&#160;or <m:math><m:mtext>'V'</m:mtext></m:math>, see the description above for <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>1</m:mn></m:math>.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="INeq4" id="INeq4"/><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>4</m:mn></m:math></dt>
<dd><div class="paramtext">No eigenvalues have been computed.  The floating point arithmetic on the computer is not behaving as expected.</div></dd>
</dl>
<div class="paramtext">If failures with <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>&#8805;</m:mo><m:mn>1</m:mn></m:math>&#160;are causing persistent trouble and you have checked that the routine is being called correctly, please contact <a class="url" href="http://www.nag.co.uk">NAG</a>.</div><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">The eigenvalues of <m:math><m:mi>T</m:mi></m:math>&#160;are computed to high relative accuracy which means that if they vary widely in magnitude, then any small eigenvalues will be computed more accurately than, for example, with the standard <m:math><m:mi>Q</m:mi><m:mi>R</m:mi></m:math>&#160;method.  However, the reduction to tridiagonal form (prior to calling the routine) may exclude the possibility of obtaining high relative accuracy in the small eigenvalues of the original matrix if its eigenvalues vary widely in magnitude.</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">There is no complex analogue of this routine.</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/f08fgf.xml#example">Section 9</a> in F08FGF (DORMTR).</div>
<hr/><div><a class="rout" href="../../pdf/F08/f08jjf.pdf">F08JJF (DSTEBZ) (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>