| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> |
| <title>Error Handling</title> |
| <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css"> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> |
| <link rel="home" href="../../index.html" title="Math Toolkit"> |
| <link rel="up" href="../main_overview.html" title="Overview"> |
| <link rel="prev" href="result_type.html" title="Calculation of the Type of the Result"> |
| <link rel="next" href="compilers_overview.html" title="Compilers"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table cellpadding="2" width="100%"><tr> |
| <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td> |
| <td align="center"><a href="../../../../../../../index.html">Home</a></td> |
| <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td> |
| <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> |
| <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> |
| <td align="center"><a href="../../../../../../../more/index.htm">More</a></td> |
| </tr></table> |
| <hr> |
| <div class="spirit-nav"> |
| <a accesskey="p" href="result_type.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilers_overview.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a> |
| </div> |
| <div class="section" lang="en"> |
| <div class="titlepage"><div><div><h3 class="title"> |
| <a name="math_toolkit.main_overview.error_handling"></a><a class="link" href="error_handling.html" title="Error Handling"> Error Handling</a> |
| </h3></div></div></div> |
| <a name="math_toolkit.main_overview.error_handling.quick_reference"></a><h5> |
| <a name="id904070"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.quick_reference">Quick |
| Reference</a> |
| </h5> |
| <p> |
| Handling of errors by this library is split into two orthogonal parts: |
| </p> |
| <div class="itemizedlist"><ul type="disc"> |
| <li> |
| What kind of error has been raised? |
| </li> |
| <li> |
| What should be done when the error is raised? |
| </li> |
| </ul></div> |
| <p> |
| The kinds of errors that can be raised are: |
| </p> |
| <div class="variablelist"> |
| <p class="title"><b></b></p> |
| <dl> |
| <dt><span class="term">Domain Error</span></dt> |
| <dd><p> |
| Occurs when one or more arguments to a function are out of range. |
| </p></dd> |
| <dt><span class="term">Pole Error</span></dt> |
| <dd><p> |
| Occurs when the particular arguments cause the function to be evaluated |
| at a pole with no well defined residual value. For example if <a class="link" href="../special/sf_gamma/tgamma.html" title="Gamma">tgamma</a> is evaluated |
| at exactly -2, the function approaches different limiting values depending |
| upon whether you approach from just above or just below -2. Hence the |
| function has no well defined value at this point and a Pole Error will |
| be raised. |
| </p></dd> |
| <dt><span class="term">Overflow Error</span></dt> |
| <dd><p> |
| Occurs when the result is either infinite, or too large to represent |
| in the numeric type being returned by the function. |
| </p></dd> |
| <dt><span class="term">Underflow Error</span></dt> |
| <dd><p> |
| Occurs when the result is not zero, but is too small to be represented |
| by any other value in the type being returned by the function. |
| </p></dd> |
| <dt><span class="term">Denormalisation Error</span></dt> |
| <dd><p> |
| Occurs when the returned result would be a denormalised value. |
| </p></dd> |
| <dt><span class="term">Rounding Error</span></dt> |
| <dd><p> |
| Occurs when the argument to one of the rounding functions <a class="link" href="../utils/rounding/trunc.html" title="Truncation Functions">trunc</a>, |
| <a class="link" href="../utils/rounding/round.html" title="Rounding Functions">round</a> and |
| <a class="link" href="../utils/rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">modf</a> can not |
| be represented as an integer type, is outside the range of the result |
| type. |
| </p></dd> |
| <dt><span class="term">Evaluation Error</span></dt> |
| <dd><p> |
| Occurs when an internal error occured that prevented the result from |
| being evaluated: this should never occur, but if it does, then it's |
| likely to be due to an iterative method not converging fast enough. |
| </p></dd> |
| <dt><span class="term">Indeterminate Result Error</span></dt> |
| <dd><p> |
| Occurs when the result of a function is not defined for the values |
| that were passed to it. |
| </p></dd> |
| </dl> |
| </div> |
| <p> |
| The action undertaken by each error condition is determined by the current |
| <a class="link" href="../policy.html" title="Policies">Policy</a> in effect. This can be |
| changed program-wide by setting some configuration macros, or at namespace |
| scope, or at the call site (by specifying a specific policy in the function |
| call). |
| </p> |
| <p> |
| The available actions are: |
| </p> |
| <div class="variablelist"> |
| <p class="title"><b></b></p> |
| <dl> |
| <dt><span class="term">throw_on_error</span></dt> |
| <dd><p> |
| Throws the exception most appropriate to the error condition. |
| </p></dd> |
| <dt><span class="term">errno_on_error</span></dt> |
| <dd><p> |
| Sets ::errno to an appropriate value, and then returns the most appropriate |
| result |
| </p></dd> |
| <dt><span class="term">ignore_error</span></dt> |
| <dd><p> |
| Ignores the error and simply the returns the most appropriate result. |
| </p></dd> |
| <dt><span class="term">user_error</span></dt> |
| <dd><p> |
| Calls a <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user-supplied |
| error handler</a>. |
| </p></dd> |
| </dl> |
| </div> |
| <p> |
| The following tables show all the permutations of errors and actions, with |
| the <span class="bold"><strong>default action for each error shown in bold</strong></span>: |
| </p> |
| <div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_domain_errors"></a><p class="title"><b>Table 1. Possible Actions for Domain Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Domain Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code></strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns |
| <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_domain_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_pole_errors"></a><p class="title"><b>Table 2. Possible Actions for Pole Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Pole Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code></strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns |
| <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_pole_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_overflow_errors"></a><p class="title"><b>Table 3. Possible Actions for Overflow Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Overflow Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code></strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns |
| <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_overflow_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_underflow_errors"></a><p class="title"><b>Table 4. Possible Actions for Underflow Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Underflow Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns |
| 0. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Returns 0</strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_underflow_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_denorm_errors"></a><p class="title"><b>Table 5. Possible Actions for Denorm Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Denorm Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns |
| the denormalised value. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Returns the denormalised value.</strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_denorm_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_rounding_errors"></a><p class="title"><b>Table 6. Possible Actions for Rounding Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Rounding Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">ERANGE</span></code> and returns |
| an unspecified value. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Returns the an unspecified value.</strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_rounding_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_internal_evaluation_errors"></a><p class="title"><b>Table 7. Possible Actions for Internal Evaluation Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Internal Evaluation Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code></strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns |
| the closest approximation found. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the closest approximation found. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_evaluation_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><div class="table"> |
| <a name="math_toolkit.main_overview.error_handling.possible_actions_for_indeterminate_result_errors"></a><p class="title"><b>Table 8. Possible Actions for Indeterminate Result Errors</b></p> |
| <div class="table-contents"><table class="table" summary="Possible Actions for Indeterminate Result Errors"> |
| <colgroup> |
| <col> |
| <col> |
| </colgroup> |
| <thead><tr> |
| <th> |
| <p> |
| Action |
| </p> |
| </th> |
| <th> |
| <p> |
| Behaviour |
| </p> |
| </th> |
| </tr></thead> |
| <tbody> |
| <tr> |
| <td> |
| <p> |
| throw_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| errno_on_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code> |
| to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns |
| the same value as <code class="computeroutput"><span class="identifier">ignore_error</span></code>. |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| ignore_error |
| </p> |
| </td> |
| <td> |
| <p> |
| <span class="bold"><strong>Returns a default result that depends on |
| the function where the error occurred.</strong></span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <p> |
| user_error |
| </p> |
| </td> |
| <td> |
| <p> |
| Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_indeterminate_result_error</span></code>: |
| <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this |
| function must be defined by the user</a>. |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <br class="table-break"><p> |
| All these error conditions are in namespace boost::math::policies, made available, |
| for example, a by namespace declaration using <code class="computeroutput"><span class="keyword">namespace</span> |
| <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">;</span></code> |
| or individual using declarations <code class="computeroutput"><span class="keyword">using</span> |
| <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">overflow_error</span><span class="special">;</span></code>. |
| </p> |
| <a name="math_toolkit.main_overview.error_handling.rationale"></a><h5> |
| <a name="id906640"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.rationale">Rationale</a> |
| </h5> |
| <p> |
| The flexibility of the current implementation should be reasonably obvious: |
| the default behaviours were chosen based on feedback during the formal review |
| of this library. It was felt that: |
| </p> |
| <div class="itemizedlist"><ul type="disc"> |
| <li> |
| Genuine errors should be flagged with exceptions rather than following |
| C-compatible behaviour and setting <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>. |
| </li> |
| <li> |
| Numeric underflow and denormalised results were not considered to be |
| fatal errors in most cases, so it was felt that these should be ignored. |
| </li> |
| </ul></div> |
| <a name="math_toolkit.main_overview.error_handling.finding_more_information"></a><h5> |
| <a name="id906685"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.finding_more_information">Finding |
| More Information</a> |
| </h5> |
| <p> |
| There are some pre-processor macro defines that can be used to <a class="link" href="../policy/pol_ref/policy_defaults.html" title="Using macros to Change the Policy Defaults">change |
| the policy defaults</a>. See also the <a class="link" href="../policy.html" title="Policies">policy |
| section</a>. |
| </p> |
| <p> |
| An example is at the Policy tutorial in <a class="link" href="../policy/pol_tutorial/changing_policy_defaults.html" title="Changing the Policy Defaults">Changing |
| the Policy Defaults</a>. |
| </p> |
| <p> |
| Full source code of this typical example of passing a 'bad' argument (negative |
| degrees of freedom) to Student's t distribution is <a class="link" href="../dist/stat_tut/weg/error_eg.html" title="Error Handling Example">in |
| the error handling example</a>. |
| </p> |
| <p> |
| The various kind of errors are described in more detail below. |
| </p> |
| <a name="domain_error"></a><a name="math_toolkit.main_overview.error_handling.domain_errors"></a><h5> |
| <a name="id906738"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.domain_errors">Domain |
| Errors</a> |
| </h5> |
| <p> |
| When a special function is passed an argument that is outside the range of |
| values for which that function is defined, then the function returns the |
| result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_domain_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, Val is the value that was out |
| of range, and <a class="link" href="../policy.html" title="Policies">Policy</a> is the current |
| policy in use for the function that was called. |
| </p> |
| <p> |
| The default policy behaviour of this function is to throw a std::domain_error |
| C++ exception. But if the <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is to ignore the error, or set global <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>, then a NaN will be returned. |
| </p> |
| <p> |
| This behaviour is chosen to assist compatibility with the behaviour of <span class="emphasis"><em>ISO/IEC |
| 9899:1999 Programming languages - C</em></span> and with the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Draft |
| Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph |
| 6</a>: |
| </p> |
| <div class="blockquote"><blockquote class="blockquote"><p> |
| <span class="emphasis"><em>"Each of the functions declared above shall return a NaN |
| (Not a Number) if any argument value is a NaN, but it shall not report |
| a domain error. Otherwise, each of the functions declared above shall report |
| a domain error for just those argument values for which:</em></span> |
| </p></blockquote></div> |
| <div class="blockquote"><blockquote class="blockquote"> |
| <p> |
| <span class="emphasis"><em>"the function description's Returns clause explicitly specifies |
| a domain, and those arguments fall outside the specified domain; or</em></span> |
| </p> |
| <p> |
| <span class="emphasis"><em>"the corresponding mathematical function value has a non-zero |
| imaginary component; or</em></span> |
| </p> |
| <p> |
| <span class="emphasis"><em>"the corresponding mathematical function is not mathematically |
| defined.</em></span> |
| </p> |
| </blockquote></div> |
| <div class="blockquote"><blockquote class="blockquote"><p> |
| <span class="emphasis"><em>"Note 2: A mathematical function is mathematically defined |
| for a given set of argument values if it is explicitly defined for that |
| set of argument values or if its limiting value exists and does not depend |
| on the direction of approach."</em></span> |
| </p></blockquote></div> |
| <p> |
| Note that in order to support information-rich error messages when throwing |
| exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must |
| contain a <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> |
| recognised format specifier: the argument <code class="computeroutput"><span class="identifier">Val</span></code> |
| is inserted into the error message according to the specifier used. |
| </p> |
| <p> |
| For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains |
| a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">Val</span></code> |
| to the full precision of T, where as "%.3g" would contain the value |
| of <code class="computeroutput"><span class="identifier">Val</span></code> to 3 digits. See the |
| <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> documentation |
| for more details. |
| </p> |
| <a name="pole_error"></a><a name="math_toolkit.main_overview.error_handling.evaluation_at_a_pole"></a><h5> |
| <a name="id906997"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.evaluation_at_a_pole">Evaluation |
| at a pole</a> |
| </h5> |
| <p> |
| When a special function is passed an argument that is at a pole without a |
| well defined residual value, then the function returns the result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_pole_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code> |
| is the value of the argument that is at a pole, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the function that was called. |
| </p> |
| <p> |
| The default behaviour of this function is to throw a std::domain_error exception. |
| But <a class="link" href="../policy/pol_ref/error_handling_policies.html" title="Error Handling Policies">error |
| handling policies</a> can be used to change this, for example to <code class="computeroutput"><span class="identifier">ignore_error</span></code> and return NaN. |
| </p> |
| <p> |
| Note that in order to support information-rich error messages when throwing |
| exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must |
| contain a <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> |
| recognised format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code> |
| is inserted into the error message according to the specifier used. |
| </p> |
| <p> |
| For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains |
| a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code> |
| to the full precision of T, where as "%.3g" would contain the value |
| of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the |
| <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> documentation |
| for more details. |
| </p> |
| <a name="overflow_error"></a><a name="math_toolkit.main_overview.error_handling.numeric_overflow"></a><h5> |
| <a name="id907205"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.numeric_overflow">Numeric |
| Overflow</a> |
| </h5> |
| <p> |
| When the result of a special function is too large to fit in the argument |
| floating-point type, then the function returns the result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_overflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the function that was called. |
| </p> |
| <p> |
| The default policy for this function is that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code> |
| C++ exception is thrown. But if, for example, an <code class="computeroutput"><span class="identifier">ignore_error</span></code> |
| policy is used, then returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>. |
| In this situation if the type <code class="computeroutput"><span class="identifier">T</span></code> |
| doesn't support infinities, the maximum value for the type is returned. |
| </p> |
| <a name="underflow_error"></a><a name="math_toolkit.main_overview.error_handling.numeric_underflow"></a><h5> |
| <a name="id907393"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.numeric_underflow">Numeric |
| Underflow</a> |
| </h5> |
| <p> |
| If the result of a special function is known to be non-zero, but the calculated |
| result underflows to zero, then the function returns the result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_underflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the called function. |
| </p> |
| <p> |
| The default version of this function returns zero. But with another policy, |
| like <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, throws |
| an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception. |
| </p> |
| <a name="denorm_error"></a><a name="math_toolkit.main_overview.error_handling.denormalisation_errors"></a><h5> |
| <a name="id907538"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.denormalisation_errors">Denormalisation |
| Errors</a> |
| </h5> |
| <p> |
| If the result of a special function is a denormalised value <span class="emphasis"><em>z</em></span> |
| then the function returns the result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_denorm_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the called function. |
| </p> |
| <p> |
| The default version of this function returns <span class="emphasis"><em>z</em></span>. But |
| with another policy, like <code class="computeroutput"><span class="identifier">throw_on_error</span></code> |
| throws an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception. |
| </p> |
| <a name="evaluation_error"></a><a name="math_toolkit.main_overview.error_handling.evaluation_errors"></a><h5> |
| <a name="id907700"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.evaluation_errors">Evaluation |
| Errors</a> |
| </h5> |
| <p> |
| When a special function calculates a result that is known to be erroneous, |
| or where the result is incalculable then it calls: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_evaluation_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code> |
| is the erroneous value, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the called function. |
| </p> |
| <p> |
| The default behaviour of this function is to throw a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code>. |
| </p> |
| <p> |
| Note that in order to support information rich error messages when throwing |
| exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must |
| contain a <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> |
| recognised format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code> |
| is inserted into the error message according to the specifier used. |
| </p> |
| <p> |
| For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains |
| a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code> |
| to the full precision of T, where as "%.3g" would contain the value |
| of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the |
| <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> documentation |
| for more details. |
| </p> |
| <a name="indeterminate_result_error"></a><a name="math_toolkit.main_overview.error_handling.indeterminate_result_errors"></a><h5> |
| <a name="id907915"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.indeterminate_result_errors">Indeterminate |
| Result Errors</a> |
| </h5> |
| <p> |
| When the result of a special function is indeterminate for the value that |
| was passed to it, then the function returns the result of: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_overflow_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <span class="identifier">Default</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, Val is the value for which the |
| result is indeterminate, Default is an alternative default result that must |
| be returned for <code class="computeroutput"><span class="identifier">ignore_error</span></code> |
| and <code class="computeroutput"><span class="identifier">errno_on_erro</span></code> policies, |
| and <a class="link" href="../policy.html" title="Policies">Policy</a> is the current policy |
| in use for the function that was called. |
| </p> |
| <p> |
| The default policy for this function is <code class="computeroutput"><span class="identifier">ignore_error</span></code>: |
| note that this error type is reserved for situations where the result is |
| mathematically undefined or indeterminate, but there is none the less a convention |
| for what the result should be: for example the C99 standard specifies that |
| the result of 0<sup>0</sup> is 1, even though the result is actually mathematically indeterminate. |
| </p> |
| <a name="rounding_error"></a><a name="math_toolkit.main_overview.error_handling.rounding_errors"></a><h5> |
| <a name="id909172"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.rounding_errors">Rounding |
| Errors</a> |
| </h5> |
| <p> |
| When one of the rounding functions <a class="link" href="../utils/rounding/round.html" title="Rounding Functions">round</a>, |
| <a class="link" href="../utils/rounding/trunc.html" title="Truncation Functions">trunc</a> or <a class="link" href="../utils/rounding/modf.html" title="Integer and Fractional Part Splitting (modf)">modf</a> |
| is called with an argument that has no integer representation, or is too |
| large to be represented in the result type then the value returned is the |
| result of a call to: |
| </p> |
| <pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_rounding_error</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">);</span> |
| </pre> |
| <p> |
| Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating point |
| type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code> |
| is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code> |
| is an error message describing the problem, <code class="computeroutput"><span class="identifier">Val</span></code> |
| is the erroneous argument, and <a class="link" href="../policy.html" title="Policies">Policy</a> |
| is the current policy in use for the called function. |
| </p> |
| <p> |
| The default behaviour of this function is to throw a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">rounding_error</span></code>. |
| </p> |
| <p> |
| Note that in order to support information rich error messages when throwing |
| exceptions, <code class="computeroutput"><span class="identifier">Message</span></code> must |
| contain a <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> |
| recognised format specifier: the argument <code class="computeroutput"><span class="identifier">val</span></code> |
| is inserted into the error message according to the specifier used. |
| </p> |
| <p> |
| For example if <code class="computeroutput"><span class="identifier">Message</span></code> contains |
| a "%1%" then it is replaced by the value of <code class="computeroutput"><span class="identifier">val</span></code> |
| to the full precision of T, where as "%.3g" would contain the value |
| of <code class="computeroutput"><span class="identifier">val</span></code> to 3 digits. See the |
| <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> documentation |
| for more details. |
| </p> |
| <a name="checked_narrowing_cast"></a><a name="math_toolkit.main_overview.error_handling.errors_from_typecasts"></a><h5> |
| <a name="id909404"></a> |
| <a class="link" href="error_handling.html#math_toolkit.main_overview.error_handling.errors_from_typecasts">Errors |
| from typecasts</a> |
| </h5> |
| <p> |
| Many special functions evaluate their results at a higher precision than |
| their arguments in order to ensure full machine precision in the result: |
| for example, a function passed a float argument may evaluate its result using |
| double precision internally. Many of the errors listed above may therefore |
| occur not during evaluation, but when converting the result to the narrower |
| result type. The function: |
| </p> |
| <pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../policy.html" title="Policies">Policy</a><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span> |
| <span class="identifier">T</span> <span class="identifier">checked_narrowing_cast</span><span class="special">(</span><span class="identifier">U</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">);</span> |
| </pre> |
| <p> |
| Is used to perform these conversions, and will call the error handlers listed |
| above on <a class="link" href="error_handling.html#overflow_error">overflow</a>, <a class="link" href="error_handling.html#underflow_error">underflow</a> |
| or <a class="link" href="error_handling.html#denorm_error">denormalisation</a>. |
| </p> |
| </div> |
| <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> |
| <td align="left"></td> |
| <td align="right"><div class="copyright-footer">Copyright © 2006 , 2007, 2008, 2009, 2010 John Maddock, Paul A. Bristow, |
| Hubert Holin, Xiaogang Zhang, Bruno Lalande, Johan Råde, Gautam Sewani and |
| Thijs van den Berg<p> |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) |
| </p> |
| </div></td> |
| </tr></table> |
| <hr> |
| <div class="spirit-nav"> |
| <a accesskey="p" href="result_type.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilers_overview.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a> |
| </div> |
| </body> |
| </html> |