includes.htm 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Language" content="en-us">
  6. <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
  7. <link rel="stylesheet" type="text/css" href="../../../../boost.css">
  8. <title>Headers Inclusion</title>
  9. </head>
  10. <body lang="en">
  11. <h1>Headers Inclusion</h1>
  12. <p>The easiest way to access to the library is by including the main
  13. header:</p>
  14. <pre>
  15. #include &lt;boost/numeric/interval.hpp&gt;
  16. </pre>
  17. <p>This header will include almost all the other headers (except the ones
  18. listed as extensions). However, you may not want to access all the
  19. functionalities of the library. So this page stands as a reminder for the
  20. whole structure of the library.
  21. <code>&lt;boost/numeric/interval.hpp&gt;</code> is the only header to be
  22. located directly under <code>boost/numeric</code>; all the other headers
  23. are located in the subdirectory <code>boost/numeric/interval</code>. And
  24. each time this documentation will refer to
  25. <code>interval/something.hpp</code>, it is
  26. <code>&lt;boost/numeric/interval/something.hpp&gt;</code>.</p>
  27. <p>Please also note that all the following headers are independent and can
  28. easily be pre-compiled if necessary (for compilers which support
  29. pre-compiled headers of course).</p>
  30. <h2>Function definitions</h2>
  31. <p>The following headers contain the definition of the
  32. <code>interval</code> class and all the friendly functions and
  33. operators.</p>
  34. <h3><code>interval/interval.hpp</code></h3>
  35. <p>This header contains the definition and the declaration of the
  36. <code>interval</code> class. However, this class is templated and the
  37. default template parameters are not available by this header. In
  38. particular, this header does not provide the default specialization of the
  39. <code>interval</code> class for the floating-point types
  40. (<code>interval&lt;float&gt;</code>, <code>interval&lt;double&gt;</code>
  41. and <code>interval&lt;long double&gt;</code>). So, unless you use your own
  42. policies, this header is not really useful on its own.</p>
  43. <h3><code>interval/utility.hpp</code></h3>
  44. <p>In this header are all the functions that do not expect any arithmetic
  45. property from the base number type. It only expects the bounds to be
  46. ordered; but it should not surprise you since it is a requirement of the
  47. whole library. You will find in this header the definitions of access and
  48. related functions: <code>lower</code>, <code>upper</code>,
  49. <code>checked_lower</code>, <code>checked_upper</code>,
  50. <code>median</code>, <code>width</code>, <code>widen</code>. There are also
  51. the set-like functions: <code>in,</code> <code>zero_in</code>,
  52. <code>empty</code>, <code>subset</code>, <code>proper_subset</code>,
  53. <code>overlap</code>, <code>singleton</code>, <code>equal</code>,
  54. <code>intersect</code>, <code>hull</code>, <code>bisect</code>. Finally,
  55. <code>abs</code>, <code>min</code>, and <code>max</code> are defined.</p>
  56. <h3><code>interval/arith.hpp</code></h3>
  57. <p>Here are the binary operators <code>+</code>, <code>-</code>,
  58. <code>*</code>, <code>/</code> and the unary operator <code>-</code>.</p>
  59. <h3><code>interval/arith2.hpp</code></h3>
  60. <p>This header defines <code>fmod</code>, <code>square</code>,
  61. <code>sqrt</code>, <code>pow</code>, and <code>root</code>.</p>
  62. <h3><code>interval/arith3.hpp</code></h3>
  63. <p>The third arithmetic header: it provides the functions <code>add</code>,
  64. <code>sub</code>, <code>mul</code>, and <code>div</code>. The type of their
  65. arguments is the base number type.</p>
  66. <h3><code>interval/transc.hpp</code></h3>
  67. <p>It is the last of the headers with mathematical functions; it provides
  68. the following functions: <code>cos</code>, <code>sin</code>,
  69. <code>tan</code>, <code>acos</code>, <code>asin</code>, <code>atan</code>,
  70. <code>cosh</code>, <code>sinh</code>, <code>tanh</code>,
  71. <code>acosh</code>, <code>asinh</code>, <code>atanh</code>,
  72. <code>exp</code>, and <code>log</code>.</p>
  73. <h2>Policies</h2>
  74. <p>The following headers define some policies. They may be needed if you
  75. use the default policies.</p>
  76. <h3><code>interval/rounded_arith.hpp</code></h3>
  77. <p>This header defines the three provided rounding policies for the
  78. arithmetic functions: <code>rounded_arith_std</code>,
  79. <code>rounded_arith_opp</code>, <code>rounded_arith_exact</code>.</p>
  80. <h3><code>interval/rounded_transc.hpp</code></h3>
  81. <p>This header defines the three provided rounding policies for the
  82. transcendental functions: <code>rounded_transc_std</code>,
  83. <code>rounded_transc_opp</code>, <code>rounded_transc_exact</code>. It is
  84. separated from <code>rounded_arith.hpp</code> since the transcendental part
  85. of the rounding policy is probably less useful than the arithmetic
  86. part.</p>
  87. <h3><code>interval/hw_rounding.hpp</code></h3>
  88. <p>Here are full rounding policies for the basic floating-point types. The
  89. policies are processor-dependent; and to allow the user code to be
  90. portable, they only define the common subset of the hardware available
  91. functions, which are the arithmetic functions of the rounding policy.</p>
  92. <h3><code>interval/checking.hpp</code></h3>
  93. <p>This header provides the predefined checking policies:
  94. <code>checking_base</code>, <code>checking_no_empty</code>,
  95. <code>checking_no_nan</code>, <code>checking_catch_nan</code>,
  96. <code>checking_strict</code>.</p>
  97. <h3><code>interval/policies.hpp</code></h3>
  98. <p>Here are defined the helpers for manipulating policies. It contains
  99. <code>policies</code> (and so is needed for using default policies),
  100. <code>change_rounding</code>, <code>change_checking</code>,
  101. <code>unprotect</code>, etc.</p>
  102. <h2>Comparisons</h2>
  103. <h3><code>interval/compare.hpp</code></h3>
  104. <p>This header includes all the following headers. They provide some
  105. predefined comparison namespaces.</p>
  106. <h3><code>interval/compare/certain.hpp</code></h3>
  107. <p>Here is <code>compare::certain</code>.</p>
  108. <h3><code>interval/compare/possible.hpp</code></h3>
  109. <p>And here is its friend <code>compare::possible</code>.</p>
  110. <h3><code>interval/compare/explicit.hpp</code></h3>
  111. <p>The explicit comparison functions <code>cerlt</code>,
  112. <code>posge</code>, etc are defined in this header.</p>
  113. <h3><code>interval/compare/lexicographic.hpp</code></h3>
  114. <p>This header provides <code>compare::lexicographic</code>.</p>
  115. <h3><code>interval/compare/set.hpp</code></h3>
  116. <p>This header provides <code>compare::set</code>.</p>
  117. <h2>Extensions</h2>
  118. <p>The following headers are not included by <code>interval.hpp</code> and
  119. will usually provide not always desirable capabilities.</p>
  120. <h3><code>interval/io.hpp</code></h3>
  121. <p>Here are defined basic stream operators <code>&lt;&lt;</code> and
  122. <code>&gt;&gt;</code>. They should only be used as a first approach and
  123. later be replaced by a customized version.</p>
  124. <h3><code>interval/limits.hpp</code></h3>
  125. <p>A specialization of <code>std::numeric_limits</code> adapted to the
  126. interval type.</p>
  127. <h3><code>interval/compare/tribool.hpp</code></h3>
  128. <p>This header provides a comparison namespace
  129. <code>compare::tribool</code> especially adapted to a tristate boolean.</p>
  130. <h3><code>interval/ext/integer.hpp</code></h3>
  131. <p>This header provides mixed operations between intervals and integers. It
  132. is done by converting the integer to the base number type. Because this
  133. comparison is not always correct (for a big <code>int</code> may not be
  134. exactly convertible to <code>float</code>), this header is not
  135. automatically included and the user should ensure that this behavior is
  136. compatible with what she wants to do (if it is only to multiply some
  137. intervals by 2, it probably is a good thing to include this header).</p>
  138. <h3><code>interval/ext/x86_fast_rounding_control.hpp</code></h3>
  139. <p>This header defines a new rounding policy allowing to workaround the
  140. precision problem of the x86 processors (and so speeding up the
  141. computations). However, it only is a partial solution and it shouldn't be
  142. used when there is a possibility of underflow or overflow.</p>
  143. <hr>
  144. <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
  145. "../../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
  146. height="31" width="88"></a></p>
  147. <p>Revised
  148. <!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d" startspan -->2006-12-24<!--webbot bot="Timestamp" endspan i-checksum="12172" --></p>
  149. <p><i>Copyright &copy; 2002 Guillaume Melquiond, Sylvain Pion, Herv&eacute;
  150. Br&ouml;nnimann, Polytechnic University<br>
  151. Copyright &copy; 2003-2006 Guillaume Melquiond, ENS Lyon</i></p>
  152. <p><i>Distributed under the Boost Software License, Version 1.0. (See
  153. accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
  154. or copy at <a href=
  155. "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
  156. </body>
  157. </html>