Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / math / doc / overview / structure.qbk
1 [section:navigation Navigation]
2
3 [indexterm1 navigation]
4
5 Boost.Math documentation is provided in both HTML and PDF formats.
6
7 * [*Tutorials] are listed in the ['Table of Contents] and
8 include many examples that should help you get started quickly.
9 * [*Source code] of the many ['Examples] will often be your quickest starting point.
10 * [*Index] (general) includes all entries. 
11 * [*Specific Indexes] list only functions, class signatures, macros and typedefs. 
12
13 [h5 Using the Indexes]
14
15 The main index will usually help,
16 especially if you know a word describing what it does,
17 without needing to know the exact name chosen for the function.
18
19 [tip When using the index, keep in mind that clicking on an index term
20 only takes you to the [*section] containing the index entry.
21 This section may be several pages long,
22 so you may need to use the [*find] facility of your browser or PDF reader
23 to get to the index term itself.]
24
25 [tip A PDF reader usually allows a [*global] find; this can be really useful
26 if the term you expect to be indexed is not the one chosen by the authors.
27 You might find searching the PDF version and viewing the HTML version
28 will locate an elusive item.]
29
30 [endsect] [/section:navigation Navigation]
31
32 [section:conventions Document Conventions]
33
34 [indexterm1 conventions]
35
36 This documentation aims to use of the following naming and formatting conventions.
37
38 * C++ Code is in `fixed width font` and is syntax-highlighted in color, for example `double`.
39 * Other code is in block [^teletype fixed-width font].
40 * Replaceable text that [*you] will need to supply is in [~italics].
41 * If a name refers to a free function, it is specified like this:
42   `free_function()`; that is, it is in [~code font] and its name is followed by `()`
43   to indicate that it is a free function.
44 * If a name refers to a class template, it is specified like this:
45   `class_template<>`; that is, it is in code font and its name is followed by `<>`
46   to indicate that it is a class template.
47 * If a name refers to a function-like macro, it is specified like this: `MACRO()`;
48   that is, it is uppercase in code font and its name is followed by `()` to
49   indicate that it is a function-like macro. Object-like macros appear without the
50   trailing `()`.
51 * Names that refer to ['concepts] in the generic programming sense 
52 (like template parameter names) are specified in CamelCase.
53
54 [endsect] [/section:conventions Document Conventions]
55
56 [section:hints Other Hints and tips]
57
58 * Historial records of issues are at [@https://svn.boost.org/trac/boost/ Boost Trac], now read-only.
59 * Always ensure that you are using the  [@https://www.boost.org/users/download/#live current release version].
60 * The current documentation for the release version is [@https://www.boost.org/doc/libs/release/libs/math/doc/html/index.html here].
61 * The current documentation for the version being developed is [@https://www.boost.org/doc/libs/develop/libs/math/doc/html/index.html here].
62 * See [@https://github.com/boostorg/math develop branch(es)] where changes are being assembled and tested ready for the next release.[br]
63 You may, at your own risk, download new versions from there.
64 * If you have a new feature request, raise a new [@https://github.com/boostorg/math/issues Boost.Math issue],
65 * If it appears that the implementation is in error,
66 please search first at [@https://github.com/boostorg/math/issues Boost.Math issues].
67 Entries may indicate that updates or corrections that solve your problem are in 
68 [@https://github.com/boostorg/math Boost.Math on Github].
69 * If you have a suggested enhancements or fix, 
70 you are most welcome to submit [@https://github.com/boostorg/math/pulls pull requests].
71 * If you do not understand why things work the way they do, see first the ['rationale] section.
72 * If you do not find satisfaction for your idea/feature/complaint,
73 please reach the author(s) preferably through the Boost user or 
74 development lists [@https://www.boost.org/community/groups.html],
75 or raise a new [@https://github.com/boostorg/math/issues Boost.Math issue],
76 or email the author(s) direct.
77
78 [h5:admonishments Admonishments]
79
80 [note In addition, notes such as this one specify non-essential information that
81 provides additional background or rationale.]
82
83 [tip These blocks contain information that you may find helpful while coding.]
84
85 [important These contain information that is imperative to understanding a concept.
86 Failure to follow suggestions in these blocks will probably result in undesired behavior.
87 Read all of these you find.]
88
89 [warning Failure to heed this will lead to incorrect, and very likely undesired, results!]
90
91 [endsect] [/section:hints Other Hints and tips]
92
93
94 [section:directories Directory and File Structure]
95
96 [h4 boost\/math]
97
98 [variablelist
99 [[\/concepts\/]
100    [Prototype defining the *essential* features of a RealType 
101    class (see real_concept.hpp). Most applications will use `double` 
102    as the RealType (and short `typedef` names of distributions are 
103    reserved for this type where possible), a few will use `float` or 
104    `long double`, but it is also possible to use higher precision types 
105    like __NTL_RR, __GMP, __MPFR, __multiprecision like cpp_bin_float_50
106 that conform to the requirements specified by `real_concept`.]]
107
108 [[\/constants\/]
109    [Templated definition of some highly accurate math constants ([@https://github.com/boostorg/math/blob/develop/include/boost/math/constants/constants.hpp constants.hpp]).]]
110   
111 [[\/distributions\/]
112    [Distributions used in mathematics and, especially, statistics: 
113    Gaussian, Students-t, Fisher, Binomial etc]]
114
115 [[\/policies\/]
116    [Policy framework, for handling user requested behaviour modifications.]]
117                      
118 [[\/special_functions\/]
119    [Math functions generally regarded as 'special', like beta, 
120    cbrt, erf, gamma, lgamma, tgamma ... (Some of these are specified in 
121    C++, and C99\/TR1, and perhaps TR2).]]
122                      
123 [[\/tools\/]
124    [Tools used by functions, like evaluating polynomials, continued fractions, 
125    root finding, precision and limits, and by tests. Some will 
126    find application outside this package.]]
127 ]
128   
129 [h4 boost\/libs]
130
131 [variablelist
132 [[\/doc\/]
133    [Documentation source files in Quickbook format processed into 
134    html and pdf formats.]]
135    
136 [[\/examples\/]
137    [Examples and demos of using math functions and distributions.]]
138    
139 [[\/performance\/]
140    [Performance testing and tuning program.]]
141    
142 [[\/test\/]
143    [Test files, in many .cpp files, most using Boost.Test 
144    (some with test data as .ipp files, usually generated using NTL RR 
145    type with ample precision for the type, often for precisions 
146    suitable for up to 256-bit significand real types).]]
147    
148 [[\/tools\/]
149    [Programs used to generate test data.  Also changes to the
150    [@http://shoup.net/ntl/ NTL] released package to provide a few additional 
151    (and vital) extra features.]]
152 ]
153
154 [endsect] [/section:directories Directory and File Structure]
155    
156 [section:namespaces Namespaces]
157    
158 All math functions and distributions are in `namespace boost::math`.
159    
160 So, for example, the Students-t distribution template in `namespace boost::math` is
161    
162    template <class RealType> class students_t_distribution
163    
164 and can be instantiated with the help of the reserved name `students_t`(for `RealType  double`)
165    
166    typedef students_t_distribution<double> students_t;
167    
168    student_t mydist(10);
169    
170 [warning Some distribution names are also used in std random library,
171 so to avoid the risk of ambiguity it is better to make explicit using declarations,
172 for example: `using boost::math::students_t_distribution`]
173    
174 Functions not intended for use by applications are in `boost::math::detail`.
175
176 Functions that may have more general use, like `digits` 
177 (significand), `max_value`, `min_value` and `epsilon` are in 
178 `boost::math::tools`.
179
180 __Policy and configuration information is in `namespace` `boost::math::policies`.
181
182 [tip Many code snippets assume implicit namespace(s),
183 for example, `std::` or `boost::math`.]
184
185 [tip Start your work from a copy of the example source code; links usually provided.]
186
187 [endsect] [/section:namespaces Namespaces]
188
189
190 [/ structure.qbk
191   Copyright 2006, 2010, 2012 John Maddock and Paul A. Bristow.
192   Distributed under the Boost Software License, Version 1.0.
193   (See accompanying file LICENSE_1_0.txt or copy at
194   http://www.boost.org/LICENSE_1_0.txt).
195 ]