<?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>C05 Chapter Introduction : NAG Library, Mark 23</title><link rel="stylesheet" href="../styles/libdoc.css" type="text/css"/><script type="text/javascript">
   function showLevel(_levelId){
    var thisLevel = document.getElementById(_levelId);
    var thisplus = document.getElementById( _levelId.concat('plus'));
    var thisminus = document.getElementById( _levelId.concat('minus'));
    if(thisLevel.style.display != "block"){
     thisLevel.style.display = "block";
     thisplus.style.display = "none";
     thisminus.style.display = "inline";
     }
    else{
     thisLevel.style.display = "none";
     thisminus.style.display = "none";
     thisplus.style.display = "inline";
     }
    }
  </script></head><body><hr/><div><a class="chap" href="c05conts.xml">C05 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/C05/c05intro.pdf">C05 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Chapter Introduction<br/><br/>C05 &#8211; Roots of One or More Transcendental Equations</h1><div class="htmltoc">
<h2 class="htmltoc"><span class="htmltochead" onclick="showLevel('htmltoc');"><span class="htmltocplus" id="htmltocplus">+</span><span class="htmltocminus" id="htmltocminus">&#8722;</span></span>&#160;Contents</h2>
<div class="htmltocitem" id="htmltoc">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#scope">1&#160;&#160;<b>Scope of the Chapter</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocbackground');"><span class="htmltocplus" id="tocbackgroundplus">+</span><span class="htmltocminus" id="tocbackgroundminus">&#8722;</span></span>
<a class="htmltoc" href="#background">2&#160;&#160;<b>Background to the Problems</b></a>
<div class="htmltocitem" id="tocbackground">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intbackground1">2.1&#160;&#160;<b>A Single Equation</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intbackground2">2.2&#160;&#160;<b>Systems of Equations</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocavailable');"><span class="htmltocplus" id="tocavailableplus">+</span><span class="htmltocminus" id="tocavailableminus">&#8722;</span></span>
<a class="htmltoc" href="#available">3&#160;&#160;<b>Recommendations on Choice and Use of Available Routines</b></a>
<div class="htmltocitem" id="tocavailable">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_1">3.1&#160;&#160;<b>Zeros of Functions of One Variable</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_2">3.2&#160;&#160;<b>Solution of Sets of Nonlinear Equations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_3">3.3&#160;&#160;<b>Values of Lambert's W function</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#dtree">4&#160;&#160;<b>Decision Trees</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#index">5&#160;&#160;<b>Functionality Index</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#auxindex">6&#160;&#160;<b>Auxiliary Routines Associated with Library Routine Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#withdrawn">7&#160;&#160;<b>Routines Withdrawn or Scheduled for Withdrawal</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">8&#160;&#160;<b>References</b></a>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="scope" id="scope"/>1&#160;&#160;Scope of the Chapter</h2>
<div class="paramtext">This chapter is concerned with the calculation of zeros of continuous functions of one or more variables.  The majority of problems considered are for real-valued functions of real variables, in which case complex equations must be expressed in terms of the equivalent larger system of real equations.</div><h2 class="standard"><a class="sec" name="background" id="background"/>2&#160;&#160;Background to the Problems</h2>
<div class="paramtext">The chapter divides naturally into two parts.</div><h3 class="standard"><a class="sec" name="intbackground1" id="intbackground1"/>2.1&#160;&#160;A Single Equation</h3>
<div class="paramtext">The first deals with the real zeros of a real function of a single variable <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
</m:math>.</div><div class="paramtext">There are three routines with simple calling sequences. The first assumes that you can determine an initial interval <m:math>
 <m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced>
</m:math>&#160;within which the desired zero lies, (that is, where <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced><m:mo>&#215;</m:mo><m:mi>f</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced><m:mo>&lt;</m:mo><m:mn>0</m:mn>
</m:math>), and outside which all other zeros lie.  The routine then systematically subdivides the interval to produce a final interval containing the zero.  This final interval has a length bounded by your specified error requirements; the end of the interval where the function has smallest magnitude is returned as the zero.  This routine is guaranteed to converge to a <b>simple</b> zero of the function.  (Here we define a simple zero as a zero corresponding to a sign-change of the function; none of the available routines are capable of making any finer distinction.)  However, as with the other routines described below, a non-simple zero might be determined and it is left to you to check for this.  The algorithm used is due to <a class="ref" href="#ref764">Brent (1973)</a>.</div><div class="paramtext">The two other routines are both designed for the case where you are unable to specify an interval containing the simple zero.  One starts from an initial point and performs a search for an interval containing a simple zero.  If such an interval is computed then the method described above is used next to determine the zero accurately.  The other method uses a &#8216;continuation&#8217; method based on a secant iteration.  A sequence of subproblems is solved; the first of these is trivial and the last is the actual problem of finding a zero of <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
</m:math>.  The intermediate problems employ the solutions of earlier problems to provide initial guesses for the secant iterations used to calculate their solutions.</div><div class="paramtext">Three other routines are also supplied.  They employ reverse communication and use the same core algorithms as the routines described above.</div><div class="paramtext">Finally, two routines are provided to return values of Lambert's <m:math><m:mi>W</m:mi></m:math>&#160;function (sometimes known as the &#8216;product log&#8217; or &#8216;Omega&#8217; function), which is the inverse function of

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>f</m:mi><m:mfenced separators=""><m:mi>w</m:mi></m:mfenced><m:mo>=</m:mo><m:mi>w</m:mi><m:msup><m:mi>e</m:mi><m:mi>w</m:mi></m:msup><m:mtext>&#8195; for &#8195;</m:mtext><m:mi>w</m:mi><m:mo>&#8712;</m:mo><m:mi>C</m:mi><m:mtext>;</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

that is, if Lambert's <m:math><m:mi>W</m:mi></m:math>&#160;function <m:math><m:mi>W</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced><m:mo>=</m:mo><m:mi>a</m:mi></m:math>&#160;for <m:math><m:mfenced separators="" open="" close=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>a</m:mi></m:mfenced><m:mo>&#8712;</m:mo><m:mi>C</m:mi></m:math>, then <m:math><m:mi>a</m:mi></m:math>&#160;is a zero of the function <m:math><m:mi>F</m:mi><m:mfenced separators=""><m:mi>w</m:mi></m:mfenced><m:mo>=</m:mo><m:mi>w</m:mi><m:msup><m:mi>e</m:mi><m:mi>w</m:mi></m:msup><m:mo>-</m:mo><m:mi>x</m:mi></m:math>. One routine uses the iterative method described in <a class="ref" href="#ref804">Barry <span class="italic">et al.</span> (1995)</a> to return values from the real branches of <m:math><m:mi>W</m:mi></m:math>&#160;(restricting <m:math><m:mfenced separators="" open="" close=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>a</m:mi></m:mfenced><m:mo>&#8712;</m:mo><m:mi>R</m:mi></m:math>). The second routine enforces no such restriction, and uses the approach described in <a class="ref" href="#ref863">Corless <span class="italic">et al.</span> (1996)</a>.
</div><h3 class="standard"><a class="sec" name="intbackground2" id="intbackground2"/>2.2&#160;&#160;Systems of Equations</h3>
<div class="paramtext">The routines in the second part of this chapter are designed to solve a set of nonlinear equations in <m:math><m:mi>n</m:mi></m:math>&#160;unknowns

<div class="formula-eqn"><a name="eqn1" id="eqn1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
 <m:mtext>, &#8195;</m:mtext>
 <m:mi>i</m:mi><m:mo>=</m:mo>
 <m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi>
 <m:mtext>, &#8195;</m:mtext>
 <m:mi>x</m:mi><m:mo>=</m:mo>
 <m:msup><m:mfenced separators=""><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:mfenced><m:mi mathvariant="normal">T</m:mi></m:msup>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (1)
     </td></tr></table></div>

where <m:math><m:mi mathvariant="normal">T</m:mi></m:math>&#160;stands for transpose.</div><div class="paramtext">It is assumed that the functions are continuous and differentiable so that the matrix of first partial derivatives of the functions, the <b>Jacobian</b> matrix <m:math>
 <m:msub><m:mi>J</m:mi>
<m:mrow><m:mi>i</m:mi><m:mi>j</m:mi></m:mrow>
</m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced><m:mo>=</m:mo><m:mfenced separators=""><m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo><m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub></m:mrow>
<m:mrow><m:mo>&#8706;</m:mo><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:mrow>
</m:mfrac></m:mfenced>
</m:math>&#160;evaluated at the point <m:math><m:mi>x</m:mi></m:math>, exists, though it may not be possible to calculate it directly.</div><div class="paramtext">The functions <m:math>
 <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub>
</m:math>&#160;must be independent, otherwise there will be an infinity of solutions and the methods will fail.  However, even when the functions are independent the solutions may not be unique.  Since the methods are iterative, an initial guess at the solution has to be supplied, and the solution located will usually be the one closest to this initial guess.</div><h2 class="standard"><a class="sec" name="available" id="available"/>3&#160;&#160;Recommendations on Choice and Use of Available Routines</h2><h3 class="standard"><a class="sec" name="intrecomm_1" id="intrecomm_1"/>3.1&#160;&#160;Zeros of Functions of One Variable</h3>
<div class="paramtext">The routines can be divided into two classes.  There are three routines (<a class="rout" href="../C05/c05avf.xml">C05AVF</a>, <a class="rout" href="../C05/c05axf.xml">C05AXF</a> and <a class="rout" href="../C05/c05azf.xml">C05AZF</a>) all written in reverse communication form and three (<a class="rout" href="../C05/c05auf.xml">C05AUF</a>, <a class="rout" href="../C05/c05awf.xml">C05AWF</a> and <a class="rout" href="../C05/c05ayf.xml">C05AYF</a>) written in direct communication form.  The direct communication routines are designed for inexperienced users and, in particular, for solving problems where the function <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
</m:math>&#160;whose zero is to be calculated, can be coded as a user-supplied (sub)program.  These routines find the zero by using the same core algorithms as the reverse communication routines.  Experienced users are recommended to use the reverse communication routines directly as they permit you more control of the calculation.  Indeed, if the zero-finding process is embedded in a much larger program then the reverse communication routines should always be used.</div><div class="paramtext">The recommendation as to which routine should be used depends mainly on whether you can supply an interval <m:math>
 <m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced>
</m:math>&#160;containing the zero; that is, where <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced><m:mo>&#215;</m:mo><m:mi>f</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced><m:mo>&lt;</m:mo><m:mn>0</m:mn>
</m:math>.  If the interval can be supplied, then <a class="rout" href="../C05/c05ayf.xml">C05AYF</a> (or, in reverse communication, <a class="rout" href="../C05/c05azf.xml">C05AZF</a>) should be used, in general.  This recommendation should be qualified in the case when the only interval which can be supplied is very long relative to your error requirements <b>and</b> you can also supply a good approximation to the zero.  In this case <a class="rout" href="../C05/c05awf.xml">C05AWF</a> (or, in reverse communication, <a class="rout" href="../C05/c05axf.xml">C05AXF</a>) <b>may</b> prove more efficient (though these latter routines will not provide the error bound available from <a class="rout" href="../C05/c05azf.xml">C05AZF</a>).</div><div class="paramtext">If an interval containing the zero cannot be supplied then you must choose between <a class="rout" href="../C05/c05auf.xml">C05AUF</a> (or, in reverse communication, <a class="rout" href="../C05/c05avf.xml">C05AVF</a> followed by <a class="rout" href="../C05/c05azf.xml">C05AZF</a>) and <a class="rout" href="../C05/c05awf.xml">C05AWF</a> (or, in reverse communication, <a class="rout" href="../C05/c05axf.xml">C05AXF</a>).  <a class="rout" href="../C05/c05auf.xml">C05AUF</a> first determines an interval containing the zero, and then proceeds as in <a class="rout" href="../C05/c05ayf.xml">C05AYF</a>; it is particularly recommended when you do not have a good initial approximation to the zero.  If a good initial approximation to the zero is available then <a class="rout" href="../C05/c05awf.xml">C05AWF</a> is to be preferred.  Since neither of these latter routines has guaranteed convergence to the zero, you are recommended to experiment with both in case of difficulty.</div><h3 class="standard"><a class="sec" name="intrecomm_2" id="intrecomm_2"/>3.2&#160;&#160;Solution of Sets of Nonlinear Equations</h3>
<div class="paramtext">The solution of a set of nonlinear equations

<div class="formula-eqn"><a name="eqn2" id="eqn2"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
<m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub><m:mfenced separators=""><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>, &#8195;</m:mtext><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi>
</m:math></td><td class="formula-eqn2">
      (2)
     </td></tr></table></div>

can be regarded as a special case of the problem of finding a minimum of a sum of squares

<div class="formula-eqn"><a name="eqn3" id="eqn3"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:mi>s</m:mi>
 <m:mfenced separators="">
  <m:mi>x</m:mi>
 </m:mfenced>
 <m:mo>=</m:mo>
 <m:munderover>
  <m:mo>&#8721;</m:mo>
  <m:mrow>
   <m:mi>i</m:mi>
   <m:mo>=</m:mo>
   <m:mn>1</m:mn>
  </m:mrow>
  <m:mi>m</m:mi>
 </m:munderover>
 <m:msup>
  <m:mfenced open="[" close="]" separators="">
   <m:msub>
    <m:mi>f</m:mi>
    <m:mi>i</m:mi>
   </m:msub>
   <m:mfenced separators=""><m:msub>
     <m:mi>x</m:mi>
     <m:mn>1</m:mn>
    </m:msub><m:mo>,</m:mo><m:msub>
     <m:mi>x</m:mi>
     <m:mn>2</m:mn>
    </m:msub><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:msub>
     <m:mi>x</m:mi>
     <m:mi>n</m:mi>
    </m:msub></m:mfenced>
  </m:mfenced>
<m:mn>2</m:mn>
 </m:msup>
 <m:mtext>, &#8195;</m:mtext>
 <m:mfenced separators="">
  <m:mi>m</m:mi>
  <m:mo>&#8805;</m:mo>
  <m:mi>n</m:mi>
 </m:mfenced>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula-eqn2">
      (3)
     </td></tr></table></div>

So the routines in <a class="chap" href="../E04/e04conts.xml">Chapter E04</a> are relevant as well as the special nonlinear equations routines.</div><div class="paramtext">The routines for solving a set of nonlinear equations can also be divided into classes.  There are five routines (<a class="rout" href="../C05/c05qbf.xml">C05QBF</a>, <a class="rout" href="../C05/c05qcf.xml">C05QCF</a>, <a class="rout" href="../C05/c05qsf.xml">C05QSF</a>, <a class="rout" href="../C05/c05rbf.xml">C05RBF</a> and <a class="rout" href="../C05/c05rcf.xml">C05RCF</a>) all written in direct communication form and two (<a class="rout" href="../C05/c05qdf.xml">C05QDF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a>) written in reverse communication form.  The direct communication routines are designed for inexperienced users and, in particular, these routines require the <m:math>
 <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub>
</m:math>&#160;(and possibly their derivatives) to be calculated in user-supplied subroutines.  These should be set up carefully so the Library routines can work as efficiently as possible.  Experienced users are recommended to use the reverse communication routines as they permit you more control of the calculation.  Indeed, if the zero-finding process is embedded in a much larger program then the reverse communication routines should always be used.</div><div class="paramtext">The main decision you have to make is whether to supply the derivatives <m:math>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo><m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub></m:mrow>
<m:mrow><m:mo>&#8706;</m:mo><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:mrow>
</m:mfrac>
</m:math>.  It is advisable to do so if possible, since the results obtained by algorithms which use derivatives are generally more reliable than those obtained by algorithms which do not use derivatives.</div><div class="paramtext"><a class="rout" href="../C05/c05rbf.xml">C05RBF</a>, <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a> require you to provide the derivatives, whilst <a class="rout" href="../C05/c05qbf.xml">C05QBF</a>, <a class="rout" href="../C05/c05qcf.xml">C05QCF</a>, <a class="rout" href="../C05/c05qdf.xml">C05QDF</a> and <a class="rout" href="../C05/c05qsf.xml">C05QSF</a> do not.  <a class="rout" href="../C05/c05qbf.xml">C05QBF</a>, <a class="rout" href="../C05/c05qsf.xml">C05QSF</a> and <a class="rout" href="../C05/c05rbf.xml">C05RBF</a> are easy-to-use routines; greater flexibility may be obtained using <a class="rout" href="../C05/c05qcf.xml">C05QCF</a> and <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> (or, in reverse communication, <a class="rout" href="../C05/c05qdf.xml">C05QDF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a>), but these have longer parameter lists. </div><div class="paramtext"><a class="rout" href="../C05/c05qsf.xml">C05QSF</a> is an easy-to-use routine specially adapted for sparse problems, that is, problems where each function depends on a small subset of the <m:math><m:mi>n</m:mi></m:math>&#160;variables so that the Jacobian matrix has many zeros. It employs sparse linear algebra methods and consequently is expected to take significantly less time to complete than the other routines, especially if  <m:math><m:mi>n</m:mi></m:math>&#160;is large. </div><div class="paramtext"><a class="rout" href="../C05/c05zdf.xml">C05ZDF</a> is provided for use in conjunction with <a class="rout" href="../C05/c05rbf.xml">C05RBF</a>, <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a> to check the user-supplied derivatives for consistency with the functions themselves.  You are strongly advised to make use of this routine whenever <a class="rout" href="../C05/c05rbf.xml">C05RBF</a>, <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> or <a class="rout" href="../C05/c05rdf.xml">C05RDF</a> is used.</div><div class="paramtext">Firstly, the calculation of the functions and their derivatives should be ordered so that <b>cancellation errors</b> are avoided.  This is particularly important in a routine that uses these quantities to build up estimates of higher derivatives.</div><div class="paramtext">Secondly, <b>scaling</b> of the variables has a considerable effect on the efficiency of a routine.  The problem should be designed so that the elements of <m:math><m:mi>x</m:mi></m:math>&#160;are of similar magnitude.  The same comment applies to the functions, i.e., all the <m:math>
 <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub>
</m:math>&#160;should be of comparable size.</div><div class="paramtext">The accuracy is usually determined by the accuracy parameters of the routines, but the following points may be useful.
<table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(i)</td>
<td valign="top">Greater accuracy in the solution may be requested by choosing smaller input values for the accuracy parameters. However, if unreasonable accuracy is demanded, rounding errors may become important and cause a failure.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(ii)</td>
<td valign="top">Some idea of the accuracies of the <m:math>
 <m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub>
</m:math>&#160;may be obtained by monitoring the progress of the routine to see how many figures remain unchanged during the last few iterations.</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(iii)</td>
<td valign="top">An approximation to the error in the solution <m:math><m:mi>x</m:mi></m:math>&#160;is given by <m:math><m:mi>e</m:mi></m:math>&#160;where <m:math><m:mi>e</m:mi></m:math>&#160;is the solution to the set of linear equations

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>J</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced><m:mi>e</m:mi><m:mo>=</m:mo><m:mo>-</m:mo><m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math>
 <m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
 <m:mo>=</m:mo>
 <m:msup><m:mfenced separators=""><m:mrow><m:msub><m:mi>f</m:mi><m:mn>1</m:mn></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:msub><m:mi>f</m:mi><m:mn>2</m:mn></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mrow><m:msub><m:mi>f</m:mi><m:mi>n</m:mi></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:mrow></m:mfenced><m:mi mathvariant="normal">T</m:mi></m:msup>
</m:math>.
 <div class="paramtext">Note that the <m:math>
 <m:mi>Q</m:mi><m:mi>R</m:mi>
</m:math>&#160;decomposition of <m:math><m:mi>J</m:mi></m:math>&#160;is available from <a class="rout" href="../C05/c05qcf.xml">C05QCF</a> and <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> (or, in reverse communication, <a class="rout" href="../C05/c05qdf.xml">C05QDF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a>) so that

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mi>R</m:mi><m:mi>e</m:mi><m:mo>=</m:mo><m:mo>-</m:mo><m:msup><m:mi>Q</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>f</m:mi>
</m:math></td><td class="formula2"/></tr></table></div>

and <m:math>
 <m:msup><m:mi>Q</m:mi><m:mi mathvariant="normal">T</m:mi></m:msup><m:mi>f</m:mi>
</m:math>&#160;is also provided by these routines.</div></td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(iv)</td>
<td valign="top">If the functions 
  <m:math>	
     <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
     </m:math>&#160;are changed by small amounts <m:math>
     <m:msub>
      <m:mi>&#949;</m:mi>
     <m:mi>i</m:mi></m:msub>
    </m:math>, for <m:math><m:mi mathvariant="italic">i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>, then the corresponding change in the solution <m:math><m:mi>x</m:mi></m:math>&#160;is given approximately by <m:math><m:mi>&#963;</m:mi></m:math>, where <m:math><m:mi>&#963;</m:mi></m:math>&#160;is the solution of the set of linear equations

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mi>J</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced><m:mi>&#963;</m:mi>
 <m:mo>=</m:mo>
 <m:mo>-</m:mo><m:mi>&#949;</m:mi>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div><div class="paramtext">Thus one can estimate the sensitivity of <m:math><m:mi>x</m:mi></m:math>&#160;to any uncertainties in the specification of 
<m:math>
  <m:msub><m:mi>f</m:mi><m:mi>i</m:mi></m:msub><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
 </m:math>, for <m:math><m:mi mathvariant="italic">i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>.  As noted above, the sophisticated routines <a class="rout" href="../C05/c05qcf.xml">C05QCF</a> and <a class="rout" href="../C05/c05rcf.xml">C05RCF</a> (or, in reverse communication, <a class="rout" href="../C05/c05qdf.xml">C05QDF</a> and <a class="rout" href="../C05/c05rdf.xml">C05RDF</a>) provide the <m:math>
 <m:mi>Q</m:mi><m:mi>R</m:mi>
</m:math>&#160;decomposition of <m:math><m:mi>J</m:mi></m:math>.</div></td>
</tr></table>
</div><h3 class="standard"><a class="sec" name="intrecomm_3" id="intrecomm_3"/>3.3&#160;&#160;Values of Lambert's <m:math><m:mi>W</m:mi></m:math>&#160;function</h3>
<div class="paramtext">If you requirely purely-real values of <m:math><m:mi>W</m:mi></m:math>, these will be evaluated marginally more efficiently by <a class="rout" href="../C05/c05baf.xml">C05BAF</a> than <a class="rout" href="../C05/c05bbf.xml">C05BBF</a> owing to the differing iterative procedures used by each routine.</div><h2 class="standard"><a class="sec" name="dtree" id="dtree"/>4&#160;&#160;Decision Trees</h2>
<h3 class="sec"><a name="tree1" id="tree1"/>Tree 1: Functions of One Variable
</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is reverse communication required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is there available an interval <m:math>
 <m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced>
</m:math>&#160;containing a simple zero, and no others?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05azf.xml">C05AZF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is a good approximation to the zero available?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05axf.xml">C05AXF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../C05/c05avf.xml">C05AVF</a> followed by <a class="rout" href="../C05/c05azf.xml">C05AZF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Do you wish to compute the values of Lambert's <m:math><m:mi>W</m:mi></m:math>&#160;function?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">do you require values from only the real branches?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05baf.xml">C05BAF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../C05/c05bbf.xml">C05BBF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is there available an interval <m:math>
    <m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced>
    </m:math>&#160;containing a simple zero, and no others?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05ayf.xml">C05AYF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is a good approximation to the zero available?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05awf.xml">C05AWF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry"><a class="rout" href="../C05/c05auf.xml">C05AUF</a></td></tr></table><h3 class="sec"><a name="tree2" id="tree2"/>Tree 2: Functions of several variables
</h3>
<table class="dtree">
<tr>
<td class="dtentry">Is the Jacobian matrix sparse?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05qsf.xml">C05QSF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is reverse communication required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is the Jacobian matrix available?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05rdf.xml">C05RDF</a> and <a class="rout" href="../C05/c05zdf.xml">C05ZDF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../C05/c05qdf.xml">C05QDF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is the Jacobian matrix available?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is flexibility required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05rcf.xml">C05RCF</a> and <a class="rout" href="../C05/c05zdf.xml">C05ZDF</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rout" href="../C05/c05rbf.xml">C05RBF</a> and <a class="rout" href="../C05/c05zdf.xml">C05ZDF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Is flexibility required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../C05/c05qcf.xml">C05QCF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry"><a class="rout" href="../C05/c05qbf.xml">C05QBF</a></td></tr></table><h2 class="standard"><a class="sec" name="index" id="index"/>5&#160;&#160;Functionality Index</h2>
<div>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Lambert's&#160;<span><i>W</i></span>&#160;function</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Complex&#160;values</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05bbf.xml">C05BBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Real&#160;values</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05baf.xml">C05BAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Zeros&#160;of&#160;functions&#160;of&#160;one&#160;variable:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Direct&#160;communication:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;binary&#160;search&#160;followed&#160;by&#160;Brent&#160;algorithm</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05auf.xml">C05AUF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Brent&#160;algorithm</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05ayf.xml">C05AYF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;continuation&#160;method</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05awf.xml">C05AWF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Reverse&#160;communication:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;binary&#160;search</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05avf.xml">C05AVF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Brent&#160;algorithm</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05azf.xml">C05AZF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;continuation&#160;method</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05axf.xml">C05AXF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Zeros&#160;of&#160;functions&#160;of&#160;several&#160;variables:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Checking&#160;Routine:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Checks&#160;user-supplied&#160;Jacobian</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05zdf.xml">C05ZDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Direct&#160;communication:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;easy-to-use,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05rbf.xml">C05RBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;no&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05qbf.xml">C05QBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;no&#160;derivatives&#160;required,&#160;sparse</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05qsf.xml">C05QSF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sophisticated,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05rcf.xml">C05RCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;no&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05qcf.xml">C05QCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Reverse&#160;Communication:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sophisticated,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05rdf.xml">C05RDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;no&#160;derivatives&#160;required</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../C05/c05qdf.xml">C05QDF</a></nobr></td></tr></table></div><h2 class="standard"><a class="sec" name="auxindex" id="auxindex"/>6&#160;&#160;Auxiliary Routines Associated with Library Routine Parameters</h2>
<div class="paramtext">None.</div><h2 class="standard"><a class="sec" name="withdrawn" id="withdrawn"/>7&#160;&#160;Routines Withdrawn or Scheduled for Withdrawal</h2>
<div class="left-tablediv"><table class="wdrn"><tbody>
<tr><td class="libdoc" valign="top"><b>Withdrawn<br/>Routine</b></td><td class="libdoc" valign="top" align="center"><b>Mark of<br/>Withdrawal</b></td><td class="libdoc" valign="top"><br/><b>Replacement Routine(s)</b></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05ADF">C05ADF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05ayf.xml">C05AYF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05AGF">C05AGF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05auf.xml">C05AUF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05AJF">C05AJF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05awf.xml">C05AWF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05NBF">C05NBF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05qbf.xml">C05QBF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05NCF">C05NCF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05qcf.xml">C05QCF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05NDF">C05NDF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05qdf.xml">C05QDF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05PBF">C05PBF/C05PBA</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05rbf.xml">C05RBF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05PCF">C05PCF/C05PCA</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05rcf.xml">C05RCF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05PDF">C05PDF/C05PDA</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05rdf.xml">C05RDF</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#C05ZAF">C05ZAF</a></td><td class="libdoc" valign="top" align="center">25</td><td class="libdoc" valign="top"><a class="rout" href="../C05/c05zdf.xml">C05ZDF</a></td></tr></tbody></table></div><h2 class="standard"><a class="sec" name="references" id="references"/>8&#160;&#160;References</h2><div class="paramtext"><a name="ref804" id="ref804"/>Barry D J, Culligan&#8211;Hensley P J, and Barry S J (1995)  Real values of the <m:math><m:mi>W</m:mi></m:math>-function <i>ACM Trans. Math. Software</i> <b>21 (2)</b> 161&#8211;171 </div>
<div class="paramtext"><a name="ref764" id="ref764"/>Brent R P (1973)  <i>Algorithms for Minimization Without Derivatives</i> Prentice&#8211;Hall </div>
<div class="paramtext"><a name="ref863" id="ref863"/>Corless R M, Gonnet G H, Hare D E G, Jeffrey D J and Knuth D
E (1996)  On the Lambert <m:math><m:mi>W</m:mi></m:math>&#160;function <i>Advances in Comp. Math.</i> <b>3</b> 329&#8211;359 </div>
<div class="paramtext"><a name="ref195" id="ref195"/>Gill P E and Murray W (1976)  Algorithms for the solution of the nonlinear least-squares problem <i>Report NAC 71</i> National Physical Laboratory </div>
<div class="paramtext"><a name="ref004" id="ref004"/>Mor&#233; J J, Garbow B S and Hillstrom K E (1980)  User guide for MINPACK-1 <i>Technical Report ANL-80-74</i> Argonne National Laboratory </div>
<div class="paramtext"><a name="ref197" id="ref197"/>Ortega J M and Rheinboldt W C (1970)  <i>Iterative Solution of Nonlinear Equations in Several Variables</i> Academic Press </div>
<div class="paramtext"><a name="ref198" id="ref198"/>Rabinowitz P (1970)  <i>Numerical Methods for Nonlinear Algebraic Equations</i> Gordon and Breach </div><hr/><div><a class="chap" href="c05conts.xml">C05 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/C05/c05intro.pdf">C05 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div>
<div><hr/><a class="genint" href="../FRONTMATTER/copyright.xml">&#169; The Numerical Algorithms Group Ltd, Oxford, UK. 2011</a></div></body></html>