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