1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Introduction</title>
<link rel="stylesheet" href="../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Math Toolkit 4.2.1">
<link rel="up" href="../constants.html" title="Chapter 4. Mathematical Constants">
<link rel="prev" href="../constants.html" title="Chapter 4. Mathematical Constants">
<link rel="next" href="tutorial.html" title="Tutorial">
<meta name="viewport" content="width=device-width, initial-scale=1">
</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="../constants.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="tutorial.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="math_toolkit.constants_intro"></a><a class="link" href="constants_intro.html" title="Introduction">Introduction</a>
</h2></div></div></div>
<p>
Boost.Math provides a collection of mathematical constants.
</p>
<h5>
<a name="math_toolkit.constants_intro.h0"></a>
<span class="phrase"><a name="math_toolkit.constants_intro.why_use_boost_math_mathematical_"></a></span><a class="link" href="constants_intro.html#math_toolkit.constants_intro.why_use_boost_math_mathematical_">Why
use Boost.Math mathematical constants?</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p class="simpara">
Readable. For the very many jobs just using built-in like <code class="computeroutput"><span class="keyword">double</span></code>, you can just write expressions like
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">area</span> <span class="special">=</span> <span class="identifier">pi</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span></pre>
<p class="simpara">
(If that's all you want, jump direct to <a class="link" href="tutorial/non_templ.html" title="Use in non-template code">use
in non-template code</a>!)
</p>
</li>
<li class="listitem">
Effortless - avoiding a search of reference sources.
</li>
<li class="listitem">
Usable with both builtin floating point types, and user-defined, possibly
extended precision, types such as NTL, MPFR/GMP, mp_float: in the latter
case the constants are computed to the necessary precision and then cached.
</li>
<li class="listitem">
Accurate - ensuring that the values are as accurate as possible for the
chosen floating-point type
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
No loss of accuracy from repeated rounding of intermediate computations.
</li>
<li class="listitem">
Result is computed with higher precision and only rounded once.
</li>
<li class="listitem">
Less risk of inaccurate result from functions pow, trig and log at
<a href="http://en.wikipedia.org/wiki/Corner_case" target="_top">corner cases</a>.
</li>
<li class="listitem">
Less risk of <a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" target="_top">cancellation
error</a>.
</li>
</ul></div>
</li>
<li class="listitem">
Portable - as possible between different systems using different floating-point
precisions: see <a class="link" href="tutorial/templ.html" title="Use in template code">use in template
code</a>.
</li>
<li class="listitem">
Tested - by comparison with other published sources, or separately computed
at long double precision.
</li>
<li class="listitem">
<p class="simpara">
Faster - can avoid (re-)calculation at runtime.
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
If the value returned is a builtin type then it's returned by value
as a <code class="computeroutput"><span class="keyword">constexpr</span></code> (C++11
feature, if available).
</li>
<li class="listitem">
If the value is computed and cached (or constructed from a string
representation and cached), then it's returned by constant reference.
</li>
</ul></div>
</p>
<p class="simpara">
This can be significant if:
</p>
<p class="simpara">
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
Functions pow, trig or log are used.
</li>
<li class="listitem">
Inside an inner loop.
</li>
<li class="listitem">
Using a high-precision UDT like <a href="../../../../../libs/multiprecision/doc/html/index.html" target="_top">Boost.Multiprecision</a>.
</li>
<li class="listitem">
Compiler optimizations possible with built-in types, especially
<code class="computeroutput"><span class="keyword">double</span></code>, are not available.
</li>
</ul></div>
</p>
</li>
</ul></div>
</div>
<div class="copyright-footer">Copyright © 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland,
Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
Walker and Xiaogang Zhang<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>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../constants.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="tutorial.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
|