<?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>D01FDF : NAG Library, Mark 22</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/D01/d01fdf.pdf">D01FDF (PDF version)</a></div><div><a class="chap" href="d01conts.xml">D01 Chapter Contents</a></div><div><a class="chapint" href="d01intro.xml">D01 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/>D01FDF</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">D01FDF calculates an approximation to a definite integral in up to <m:math><m:mn>30</m:mn></m:math>&#160;dimensions, using the method of Sag and Szekeres (see <a class="ref" href="#ref273">Sag and Szekeres (1964)</a>).  The region of integration is an <m:math><m:mi>n</m:mi></m:math>-sphere, or by built-in transformation via the unit <m:math><m:mi>n</m:mi></m:math>-cube, any product region.</div><h2 class="standard"><a class="sec" name="specification" id="specification"/>2&#160;&#160;Specification</h2>
<table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;D01FDF&#160;(</td><td class="tdfspec2"><a class="arg" href="#NDIM">NDIM</a>, <a class="arg" href="#F">F</a>, <a class="arg" href="#SIGMA">SIGMA</a>, <a class="arg" href="#REGION">REGION</a>, <a class="arg" href="#LIMIT">LIMIT</a>, <a class="arg" href="#R0">R0</a>, <a class="arg" href="#U">U</a>, <a class="arg" href="#RESULT">RESULT</a>, <a class="arg" href="#NCALLS">NCALLS</a>, <a class="arg" href="#IFAIL">IFAIL</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">NDIM, LIMIT, NCALLS, IFAIL</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">F, SIGMA, R0, U, RESULT</td></tr><tr><td class="tdfspec1">EXTERNAL</td><td class="tdfspec2">F, REGION</td></tr></table><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">D01FDF calculates an approximation to

<div class="formula-eqn"><a name="eqn1" id="eqn1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:munder>
  <m:mo>&#8747;</m:mo>
  <m:mrow><m:mi>n</m:mi><m:mtext>-sphere of radius &#160;</m:mtext><m:mi>&#963;</m:mi></m:mrow>
 </m:munder><m:mspace width="0.25em"/>
 <m:mi>f</m:mi>
  <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:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:mrow>
 <m:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:mrow>
 <m:mo>&#8943;</m:mo>
 <m:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:mrow>
</m:math></td><td class="formula-eqn2">
      (1)
     </td></tr></table></div>

or, more generally,

<div class="formula-eqn"><a name="eqn2" id="eqn2"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block">
 <m:munderover>
  <m:mo>&#8747;</m:mo>
  <m:msub><m:mi>c</m:mi><m:mn>1</m:mn></m:msub>
  <m:msub><m:mi>d</m:mi><m:mn>1</m:mn></m:msub>
 </m:munderover>
 <m:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:mrow>
 <m:mo>&#8943;</m:mo>
 <m:munderover>
  <m:mo>&#8747;</m:mo>
  <m:msub><m:mi>c</m:mi><m:mi>n</m:mi></m:msub>
  <m:msub><m:mi>d</m:mi><m:mi>n</m:mi></m:msub>
 </m:munderover>
 <m:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:mrow>
 <m:mi>f</m:mi>
  <m:mfenced separators=""><m:msub><m:mi>x</m:mi><m:mn>1</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:math></td><td class="formula-eqn2">
      (2)
     </td></tr></table></div>

where each <m:math><m:msub><m:mi>c</m:mi><m:mi>i</m:mi></m:msub></m:math>&#160;and <m:math><m:msub><m:mi>d</m:mi><m:mi>i</m:mi></m:msub></m:math>&#160;may be functions of <m:math><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:math>&#160;<m:math><m:mfenced separators=""><m:mi>j</m:mi><m:mo>&lt;</m:mo><m:mi>i</m:mi></m:mfenced></m:math>.</div><div class="paramtext">The routine uses the method of <a class="ref" href="#ref273">Sag and Szekeres (1964)</a>, which exploits a property of the shifted <m:math><m:mi>p</m:mi></m:math>-point trapezoidal rule, namely, that it integrates exactly all polynomials of degree  <m:math><m:mtext/><m:mo>&lt;</m:mo><m:mi>p</m:mi></m:math>&#160;(see <a class="ref" href="#ref274">Krylov (1962)</a>).  An attempt is made to induce periodicity in the integrand by making a parameterized transformation to the unit <m:math><m:mi>n</m:mi></m:math>-sphere.  The Jacobian of the transformation and all its direct derivatives vanish rapidly towards the surface of the unit  <m:math><m:mi>n</m:mi></m:math>-sphere, so that, except for functions which have strong singularities on the boundary, the resulting integrand will be pseudo-periodic.  In addition, the variation in the integrand can be considerably reduced, causing the trapezoidal rule to perform well.</div><div class="paramtext">Integrals of the form <a class="eqn" href="#eqn1">(1)</a> are transformed to the unit  <m:math><m:mi>n</m:mi></m:math>-sphere by the change of variables:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub>
 <m:mo>=</m:mo>
 <m:msub><m:mi>y</m:mi><m:mi>i</m:mi></m:msub>
 <m:mfrac><m:mi>&#963;</m:mi><m:mi>r</m:mi></m:mfrac>
 <m:mrow><m:mi>tanh</m:mi><m:mfenced separators="">
   <m:mfrac>
    <m:mrow><m:mi>u</m:mi><m:mi>r</m:mi></m:mrow>
    <m:mrow><m:mn>1</m:mn><m:mo>-</m:mo><m:msup><m:mi>r</m:mi><m:mn>2</m:mn></m:msup></m:mrow>
   </m:mfrac>
  </m:mfenced></m:mrow>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:msup><m:mi>r</m:mi><m:mn>2</m:mn></m:msup><m:mo>=</m:mo><m:mstyle displaystyle="true"><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>n</m:mi></m:munderover></m:mstyle><m:msubsup><m:mi>y</m:mi><m:mi>i</m:mi><m:mn>2</m:mn></m:msubsup></m:math>&#160;and <m:math><m:mi>u</m:mi></m:math>&#160;is an adjustable parameter.</div><div class="paramtext">Integrals of the form <a class="eqn" href="#eqn2">(2)</a> are first of all transformed to the <m:math><m:mi>n</m:mi></m:math>-cube <m:math><m:msup><m:mfenced separators="" open="[" close="]"><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mo>,</m:mo><m:mn>1</m:mn></m:mfenced><m:mi>n</m:mi></m:msup></m:math>&#160;by a linear change of variables

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub><m:mo>=</m:mo><m:mfenced separators=""><m:mfenced separators=""><m:msub><m:mi>d</m:mi><m:mi>i</m:mi></m:msub><m:mo>+</m:mo><m:msub><m:mi>c</m:mi><m:mi>i</m:mi></m:msub></m:mfenced><m:mo>+</m:mo><m:mfenced separators=""><m:msub><m:mi>d</m:mi><m:mi>i</m:mi></m:msub><m:mo>-</m:mo><m:msub><m:mi>c</m:mi><m:mi>i</m:mi></m:msub></m:mfenced><m:msub><m:mi>y</m:mi><m:mi>i</m:mi></m:msub></m:mfenced><m:mo>/</m:mo><m:mn>2</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

and then to the unit sphere by a further change of variables

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>y</m:mi><m:mi>i</m:mi></m:msub><m:mo>=</m:mo><m:mrow><m:mi>tanh</m:mi><m:mfenced separators=""><m:mfrac><m:mrow><m:mi>u</m:mi><m:msub><m:mi>z</m:mi><m:mi>i</m:mi></m:msub></m:mrow>
  <m:mrow><m:mn>1</m:mn><m:mo>-</m:mo><m:mi>r</m:mi></m:mrow>
 </m:mfrac></m:mfenced></m:mrow>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:msup><m:mi>r</m:mi><m:mn>2</m:mn></m:msup><m:mo>=</m:mo><m:mstyle displaystyle="true"><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>n</m:mi></m:munderover></m:mstyle><m:msubsup><m:mi>z</m:mi><m:mi>i</m:mi><m:mn>2</m:mn></m:msubsup></m:math>&#160;and <m:math><m:mi>u</m:mi></m:math>&#160;is again an adjustable parameter.</div><div class="paramtext">The parameter <m:math><m:mi>u</m:mi></m:math>&#160;in these transformations determines how the transformed integrand is distributed between the origin and the surface of the unit <m:math><m:mi>n</m:mi></m:math>-sphere.  A typical value of <m:math><m:mi>u</m:mi></m:math>&#160;is <m:math><m:mn>1.5</m:mn></m:math>.  For larger <m:math><m:mi>u</m:mi></m:math>, the integrand is concentrated toward the centre of the unit <m:math><m:mi>n</m:mi></m:math>-sphere, while for smaller  <m:math><m:mi>u</m:mi></m:math>&#160;it is concentrated toward the perimeter.</div><div class="paramtext">In performing the integration over the unit <m:math><m:mi>n</m:mi></m:math>-sphere by the trapezoidal rule, a displaced equidistant grid of size <m:math><m:mi>h</m:mi></m:math>&#160;is constructed.  The points of the mesh lie on concentric layers of radius

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>r</m:mi><m:mi>i</m:mi></m:msub><m:mo>=</m:mo><m:mfrac><m:mi>h</m:mi><m:mn>4</m:mn></m:mfrac><m:msqrt><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>8</m:mn><m:mfenced separators=""><m:mi>i</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced></m:msqrt><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:mn>3</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mtext>.</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

The routine requires you to specify an approximate maximum number of points to be used, and then computes the largest number of whole layers to be used, subject to an upper limit of <m:math><m:mn>400</m:mn></m:math>&#160;layers.</div><div class="paramtext">In practice, the rapidly-decreasing Jacobian makes it unnecessary to include the whole unit <m:math><m:mi>n</m:mi></m:math>-sphere and the integration region is limited by a user-specified cut-off radius <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>.  The grid-spacing <m:math><m:mi>h</m:mi></m:math>&#160;is determined by <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:math>&#160;and the number of layers to be used.  A typical value of <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:math>&#160;is <m:math><m:mn>0.8</m:mn></m:math>.</div><div class="paramtext">Some experimentation may be required with the choice of <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:math>&#160;(which determines how much of the unit <m:math><m:mi>n</m:mi></m:math>-sphere is included)  and <m:math><m:mi>u</m:mi></m:math>&#160;(which determines how the transformed integrand is distributed between the origin and surface of the unit  <m:math><m:mi>n</m:mi></m:math>-sphere), to obtain best results for particular families of integrals.  This matter is discussed further in <a class="sec" href="#fcomments">Section 8</a>.</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#160;&#160;References</h2><div class="paramtext"><a name="ref274" id="ref274"/>Krylov V I (1962)  <i>Approximate Calculation of Integrals</i> (trans A H Stroud) Macmillan </div>
<div class="paramtext"><a name="ref273" id="ref273"/>Sag T W and Szekeres G (1964)  Numerical evaluation of high-dimensional integrals <i>Math. Comput.</i> <b>18</b> 245&#8211;253 </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="NDIM" id="NDIM"/>1: &#160;&#160;&#8194; NDIM &#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 number of dimensions of the integral.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NDIM"><m:mi mathcolor="#EE0000" mathvariant="bold">NDIM</m:mi></m:maction><m:mo>&#8804;</m:mo><m:mn>30</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="F" id="F"/>2: &#160;&#160;&#8194; F &#8211; <span class="bitalic">double precision</span> FUNCTION, supplied by the user.<span class="pclass">External Procedure</span></dt><dd><div class="paramtext"><a class="arg" href="#F">F</a> must return the value of the integrand <m:math><m:mi>f</m:mi></m:math>&#160;at a given point.</div><div class="subprog">
<div class="paramtext">The specification of <a class="arg" href="#F">F</a> is:</div><table class="fspec"><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b>&#160;FUNCTION&#160;F&#160;(</td><td class="tdfspec2"><a class="arg" href="../D01/d01fdf.xml#F_NDIM">NDIM</a>, <a class="arg" href="../D01/d01fdf.xml#F_X">X</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">NDIM</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">X(NDIM)</td></tr></table>
<dl><dt class="paramhead"><a name="F_NDIM" id="F_NDIM"/>1: &#160;&#160;&#8194; NDIM &#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 number of dimensions of the integral.</div></dd><dt class="paramhead"><a name="F_X" id="F_X"/>2: &#160;&#160;&#8194; X(<a class="arg" href="../D01/d01fdf.xml#F_NDIM">NDIM</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the co-ordinates of the point at which the integrand <m:math><m:mi>f</m:mi></m:math>&#160;must be evaluated.</div></dd></dl>
</div>
<div class="paramtext"><a class="arg" href="#F">F</a> must be declared as EXTERNAL in the (sub)program from which D01FDF is called. Parameters denoted as <span class="italic">Input</span>  must <b>not</b>  be changed by this procedure.</div>
</dd><dt class="paramhead"><a name="SIGMA" id="SIGMA"/>3: &#160;&#160;&#8194; SIGMA &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: indicates the region of integration.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0.0</m:mn></m:math></dt>
<dd>The integration is carried out over the <m:math><m:mi>n</m:mi></m:math>-sphere of radius <a class="arg" href="#SIGMA">SIGMA</a>, centred at the origin.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0.0</m:mn></m:math></dt>
<dd>The integration is carried out over the product region described by <a class="arg" href="#REGION">REGION</a>.</dd></dl>
</div></dd><dt class="paramhead"><a name="REGION" id="REGION"/>4: &#160;&#160;&#8194; REGION &#8211; SUBROUTINE, supplied by the NAG Library or the user.<span class="pclass">External Procedure</span></dt><dd><div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0.0</m:mn></m:math>, <a class="arg" href="#REGION">REGION</a> must evaluate the limits of integration in any dimension.</div><div class="subprog">
<div class="paramtext">The specification of <a class="arg" href="#REGION">REGION</a> is:</div><table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;REGION&#160;(</td><td class="tdfspec2"><a class="arg" href="../D01/d01fdf.xml#REGION_NDIM">NDIM</a>, <a class="arg" href="../D01/d01fdf.xml#REGION_X">X</a>, <a class="arg" href="../D01/d01fdf.xml#REGION_J">J</a>, <a class="arg" href="../D01/d01fdf.xml#REGION_C">C</a>, <a class="arg" href="../D01/d01fdf.xml#REGION_D">D</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">NDIM, J</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">X(NDIM), C, D</td></tr></table>
<dl><dt class="paramhead"><a name="REGION_NDIM" id="REGION_NDIM"/>1: &#160;&#160;&#8194; NDIM &#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 number of dimensions of the integral.</div></dd><dt class="paramhead"><a name="REGION_X" id="REGION_X"/>2: &#160;&#160;&#8194; X(<a class="arg" href="../D01/d01fdf.xml#REGION_NDIM">NDIM</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#REGION_X"><m:mi mathcolor="#EE0000" mathvariant="bold">X</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#REGION_X"><m:mi mathcolor="#EE0000" mathvariant="bold">X</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mi>j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow></m:math>&#160;contain the current values of the first <m:math><m:mfenced separators=""><m:mi>j</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced></m:math>&#160;variables, which may be used if necessary in calculating <m:math><m:msub><m:mi>c</m:mi><m:mi>j</m:mi></m:msub></m:math>&#160;and <m:math><m:msub><m:mi>d</m:mi><m:mi>j</m:mi></m:msub></m:math>.</div></dd><dt class="paramhead"><a name="REGION_J" id="REGION_J"/>3: &#160;&#160;&#8194; J &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the index <m:math><m:mi>j</m:mi></m:math>&#160;for which the limits of the range of integration are required.</div></dd><dt class="paramhead"><a name="REGION_C" id="REGION_C"/>4: &#160;&#160;&#8194; C &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the lower limit <m:math><m:msub><m:mi>c</m:mi><m:mi>j</m:mi></m:msub></m:math>&#160;of the range of <m:math><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:math>.</div></dd><dt class="paramhead"><a name="REGION_D" id="REGION_D"/>5: &#160;&#160;&#8194; D &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the upper limit <m:math><m:msub><m:mi>d</m:mi><m:mi>j</m:mi></m:msub></m:math>&#160;of the range of <m:math><m:msub><m:mi>x</m:mi><m:mi>j</m:mi></m:msub></m:math>.</div></dd></dl>
</div>
<div class="paramtext"><a class="arg" href="#REGION">REGION</a> must be declared as EXTERNAL in the (sub)program from which D01FDF is called. Parameters denoted as <span class="italic">Input</span>  must <b>not</b>  be changed by this procedure.</div>
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0.0</m:mn></m:math>, <a class="arg" href="#REGION">REGION</a> is not called by  D01FDF, but a dummy routine must be supplied (D01FDV may be used).</div>
</dd><dt class="paramhead"><a name="LIMIT" id="LIMIT"/>5: &#160;&#160;&#8194; LIMIT &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the approximate maximum number of integrand evaluations to be used.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LIMIT"><m:mi mathcolor="#EE0000" mathvariant="bold">LIMIT</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>100</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="R0" id="R0"/>6: &#160;&#160;&#8194; R0 &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the cut-off radius on the unit <m:math><m:mi>n</m:mi></m:math>-sphere, which may be regarded as an adjustable parameter of the method.</div>
<div class="paramtext"><i>Suggested value</i>:
  a typical value is <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#R0"><m:mi mathcolor="#EE0000" mathvariant="bold">R0</m:mi></m:maction><m:mo>=</m:mo><m:mn>0.8</m:mn></m:math>. (See also <a class="sec" href="#fcomments">Section 8</a>.)

</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:mn>0.0</m:mn><m:mo>&lt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#R0"><m:mi mathcolor="#EE0000" mathvariant="bold">R0</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>1.0</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="U" id="U"/>7: &#160;&#160;&#8194; U &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: must specify an adjustable parameter of the transformation to the unit <m:math><m:mi>n</m:mi></m:math>-sphere.</div>
<div class="paramtext"><i>Suggested value</i>:
  a typical value is <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#U"><m:mi mathcolor="#EE0000" mathvariant="bold">U</m:mi></m:maction><m:mo>=</m:mo><m:mn>1.5</m:mn></m:math>. (See also <a class="sec" href="#fcomments">Section 8</a>.)

</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#U"><m:mi mathcolor="#EE0000" mathvariant="bold">U</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>0.0</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="RESULT" id="RESULT"/>8: &#160;&#160;&#8194; RESULT &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the approximation to the integral <m:math><m:mi>I</m:mi></m:math>.</div></dd><dt class="paramhead"><a name="NCALLS" id="NCALLS"/>9: &#160;&#160;&#8194; NCALLS &#8211; INTEGER<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the actual number of integrand evaluations used. (See also <a class="sec" href="#fcomments">Section 8</a>.)</div></dd><dt class="paramhead"><a name="IFAIL" id="IFAIL"/>10: &#8194; IFAIL &#8211; INTEGER<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <a class="arg" href="#IFAIL">IFAIL</a> must be set to <m:math><m:mn>0</m:mn></m:math>, <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>. If you are unfamiliar with this parameter you should refer to <a class="sec" href="../GENINT/essint.xml#library3">Section 3.3</a> in  the Essential Introduction for details.</div>
<div class="paramtext"><i>On exit</i>: <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;unless the routine detects an error (see <a class="sec" href="#errors">Section 6</a>). <div class="paramtext">For environments where it might be inappropriate to halt program execution when an error is detected, the value <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>&#160;is recommended.  If the output of error messages is undesirable, then the value <m:math><m:mn>1</m:mn></m:math>&#160;is recommended.  Otherwise, if you are not familiar with this parameter, the recommended value is <m:math><m:mn>0</m:mn></m:math>.  <b>When the value <m:math><m:mrow><m:mo>-</m:mo><m:mn mathvariant="bold">1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn mathvariant="bold">1</m:mn></m:math>&#160;is used it is essential to test the value of <a class="arg" href="#IFAIL">IFAIL</a> on exit.</b></div></div></dd></dl><h2 class="standard"><a class="sec" name="errors" id="errors"/>6&#160;&#160;Error Indicators and Warnings</h2>
<div class="paramtext">If on entry <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">-1</m:mn></m:maction></m:math>, explanatory error messages are output on the current error message unit (as defined by <a class="rout" href="../X04/x04aaf.xml">X04AAF</a>).</div><div class="paramtext">Errors or warnings detected by the routine:</div>
<dl class="ifail">
<dt class="errorhead"><a name="IFeq1" id="IFeq1"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NDIM"><m:mi mathcolor="#EE0000" mathvariant="bold">NDIM</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>,</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NDIM"><m:mi mathcolor="#EE0000" mathvariant="bold">NDIM</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>30</m:mn></m:math>.</td></tr></table>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq2" id="IFeq2"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>2</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LIMIT"><m:mi mathcolor="#EE0000" mathvariant="bold">LIMIT</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>100</m:mn></m:math>.</td></tr></table>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq3" id="IFeq3"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>3</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#R0"><m:mi mathcolor="#EE0000" mathvariant="bold">R0</m:mi></m:maction><m:mo>&#8804;</m:mo><m:mn>0.0</m:mn></m:math>,</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#R0"><m:mi mathcolor="#EE0000" mathvariant="bold">R0</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1.0</m:mn></m:math>.</td></tr></table>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq4" id="IFeq4"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>4</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#U"><m:mi mathcolor="#EE0000" mathvariant="bold">U</m:mi></m:maction><m:mo>&#8804;</m:mo><m:mn>0.0</m:mn></m:math>.</td></tr></table>
</dd>
</dl><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">No error estimate is returned, but results may be verified by repeating with an increased value of <a class="arg" href="#LIMIT">LIMIT</a> (provided that this causes an increase in the returned value of <a class="arg" href="#NCALLS">NCALLS</a>).</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">The time taken by D01FDF will be approximately proportional to the returned value of <a class="arg" href="#NCALLS">NCALLS</a>, which, except in the circumstances outlined in <a class="item" href="#itemb">(b)</a> below, will be close to the given value of <a class="arg" href="#LIMIT">LIMIT</a>.</div><table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline"><a name="itema" id="itema"/>(a)</td>
<td valign="top">Choice of <a class="arg" href="#R0">R0</a> and <a class="arg" href="#U">U</a>
 <div class="paramtext">If the chosen combination of <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:math>&#160;and <m:math><m:mi>u</m:mi></m:math>&#160;is too large in relation to the machine accuracy it is possible that some of the points generated in the original region of integration may transform into points in the unit <m:math><m:mi>n</m:mi></m:math>-sphere which lie too close to the boundary surface to be distinguished from it to machine accuracy (despite the fact that <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>).  To be specific, the combination of  <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:math>&#160;and <m:math><m:mi>u</m:mi></m:math>&#160;is too large if

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mfrac><m:mrow><m:mi>u</m:mi><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:mrow>
  <m:mrow><m:mn>1</m:mn><m:mo>-</m:mo><m:msubsup><m:mi>r</m:mi><m:mn>0</m:mn><m:mn>2</m:mn></m:msubsup></m:mrow>
 </m:mfrac><m:mo>&gt;</m:mo><m:mn>0.3465</m:mn><m:mfenced separators=""><m:mi>t</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:mfenced><m:mtext>, &#8195; if &#8203;</m:mtext><m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0.0</m:mn><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

or

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mfrac><m:mrow><m:mi>u</m:mi><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:mrow>
  <m:mrow><m:mn>1</m:mn><m:mo>-</m:mo><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub></m:mrow>
 </m:mfrac><m:mo>&gt;</m:mo> <m:mn>0.3465</m:mn><m:mfenced separators=""><m:mi>t</m:mi><m:mo>-</m:mo> <m:mn>1</m:mn></m:mfenced><m:mtext>, &#8195; if &#8203;</m:mtext> <m:maction actiontype="link" dsi:type="simple" dsi:href="#SIGMA"><m:mi mathcolor="#EE0000" mathvariant="bold">SIGMA</m:mi></m:maction><m:mo>&lt;</m:mo> <m:mn>0.0</m:mn><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>t</m:mi></m:math>&#160;is the number of bits in the mantissa of a <span class="bitalic">double precision</span>  number.</div>
 <div class="paramtext">The contribution of such points to the integral is neglected.  This may be justified by appeal to the fact that the Jacobian of the transformation rapidly approaches zero towards the surface.  Neglect of these points avoids the occurrence of overflow with integrands which are infinite on the boundary.</div></td>
</tr><tr>
<td style="width:2.1em;" valign="baseline"><a name="itemb" id="itemb"/>(b)</td>
<td valign="top">Values of <a class="arg" href="#LIMIT">LIMIT</a> and <a class="arg" href="#NCALLS">NCALLS</a>
 <div class="paramtext"><a class="arg" href="#LIMIT">LIMIT</a> is an approximate upper limit to the number of integrand evaluations, and may not be chosen less than <m:math><m:mn>100</m:mn></m:math>.  There are two circumstances when the returned value of <a class="arg" href="#NCALLS">NCALLS</a> (the actual number of evaluations used) may be significantly less than <a class="arg" href="#LIMIT">LIMIT</a>.</div>
 <div class="paramtext">Firstly, as explained in <a class="item" href="#itema">(a)</a>, an unsuitably large combination of <a class="arg" href="#R0">R0</a> and <a class="arg" href="#U">U</a> may result in some of the points being unusable.  Such points are not included in the returned value of <a class="arg" href="#NCALLS">NCALLS</a>.</div>
 <div class="paramtext">Secondly, no more than <m:math><m:mn>400</m:mn></m:math>&#160;layers will ever be used, no matter how high <a class="arg" href="#LIMIT">LIMIT</a> is set.  This places an effective upper limit on <a class="arg" href="#NCALLS">NCALLS</a> as follows:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:mtable columnalign="left right">
 <m:mtr>
  <m:mtd><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>:</m:mo></m:mtd>
  <m:mtd><m:mn>56</m:mn></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>2</m:mn><m:mo>:</m:mo></m:mtd>
  <m:mtd><m:mn>1252</m:mn></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>3</m:mn><m:mo>:</m:mo></m:mtd>
  <m:mtd><m:mn>23690</m:mn></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>4</m:mn><m:mo>:</m:mo></m:mtd>
  <m:mtd><m:mn>394528</m:mn></m:mtd>
 </m:mtr><m:mtr>
  <m:mtd><m:mi>n</m:mi><m:mo>=</m:mo><m:mn>5</m:mn><m:mo>:</m:mo></m:mtd>
  <m:mtd><m:mn>5956906</m:mn></m:mtd>
 </m:mtr>
</m:mtable>
</m:math></td><td class="formula2"/></tr></table></div></div></td>
</tr></table><h2 class="standard"><a class="sec" name="example" id="example"/>9&#160;&#160;Example</h2>
<div class="paramtext">This example calculates the integral

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:munder><m:mrow><m:mo>&#8747;</m:mo><m:mo>&#8747;</m:mo><m:mo>&#8747;</m:mo></m:mrow><m:mi>s</m:mi></m:munder><m:mspace width="0.25em"/> <m:mfrac><m:mrow><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub><m:mi>d</m:mi><m:msub><m:mi>x</m:mi><m:mn>3</m:mn></m:msub></m:mrow>
  <m:msqrt><m:msup><m:mi>&#963;</m:mi><m:mn>2</m:mn></m:msup><m:mo>-</m:mo><m:msup><m:mi>r</m:mi><m:mn>2</m:mn></m:msup></m:msqrt>
 </m:mfrac><m:mo>=</m:mo><m:mn>22.2066</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mi>s</m:mi></m:math>&#160;is the <m:math><m:mn>3</m:mn></m:math>-sphere of radius <m:math><m:mi>&#963;</m:mi></m:math>,  <m:math><m:msup><m:mi>r</m:mi><m:mn>2</m:mn></m:msup><m:mo>=</m:mo><m:msubsup><m:mi>x</m:mi><m:mn>1</m:mn><m:mn>2</m:mn></m:msubsup><m:mo>+</m:mo><m:msubsup><m:mi>x</m:mi><m:mn>2</m:mn><m:mn>2</m:mn></m:msubsup><m:mo>+</m:mo><m:msubsup><m:mi>x</m:mi><m:mn>3</m:mn><m:mn>2</m:mn></m:msubsup></m:math>&#160;and  <m:math><m:mi>&#963;</m:mi><m:mo>=</m:mo><m:mn>1.5</m:mn></m:math>.  Both sphere-to-sphere and general product region transformations are used.  For the former, we use  <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub><m:mo>=</m:mo><m:mn>0.9</m:mn></m:math>&#160;and <m:math><m:mi>u</m:mi><m:mo>=</m:mo><m:mn>1.5</m:mn></m:math>; for the latter, <m:math><m:msub><m:mi>r</m:mi><m:mn>0</m:mn></m:msub><m:mo>=</m:mo><m:mn>0.8</m:mn></m:math>&#160;and <m:math><m:mi>u</m:mi><m:mo>=</m:mo><m:mn>1.5</m:mn></m:math>.</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/d01fdfe.f">Program Text (d01fdfe.f)</a></p><h3 class="standard"><a class="sec" name="examdata" id="examdata"/>9.2&#160;&#160;Program Data</h3>
<div class="paramtext">None.</div><h3 class="standard"><a class="sec" name="examresults" id="examresults"/>9.3&#160;&#160;Program Results</h3>
<p><a class="verbatimref" href="../../examples/baseresults/d01fdfe.r">Program Results (d01fdfe.r)</a></p>
<hr/><div><a class="rout" href="../../pdf/D01/d01fdf.pdf">D01FDF (PDF version)</a></div><div><a class="chap" href="d01conts.xml">D01 Chapter Contents</a></div><div><a class="chapint" href="d01intro.xml">D01 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. 2009</a></div></body></html>
