]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/doc/overview/faq.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / math / doc / overview / faq.qbk
CommitLineData
7c673cae
FG
1[section:main_faq Frequently Asked Questions FAQ]
2
3# ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user
4and I don't see where the functions like dnorm(mean, sd) are in Boost.Math?] [br]
5Nearly all are provided, and many more like mean, skewness, quantiles, complements ...
6but Boost.Math makes full use of C++, and it looks a bit different.
7But do not panic! See section on construction and the many examples.
8Briefly, the distribution is constructed with the parameters (like location and scale)
9(things after the | in representation like P(X=k|n, p) or ; in a common represention of pdf f(x; [mu][sigma][super 2]).
10Functions like pdf, cdf are called with the name of that distribution and the random variate often called x or k.
11For example, `normal my_norm(0, 1); pdf(my_norm, 2.0);` [br]
12#I'm a user of [@http://support.sas.com/rnd/app/da/new/probabilityfunctions.html New SAS Functions for Computing Probabilities]. [br]
13You will find the interface more familar, but to be able to select a distribution (perhaps using a string)
14see the Extras/Future Directions section,
15and /boost/libs/math/dot_net_example/boost_math.cpp for an example that is used to create a C# (C sharp) utility
16(that you might also find useful):
17see [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer].[br]
18# ['I'm allegic to reading manuals and prefer to learn from examples.][br]
19Fear not - you are not alone! Many examples are available for functions and distributions.
20Some are referenced directly from the text. Others can be found at \boost_latest_release\libs\math\example.
21If you are a Visual Studio user, you should be able to create projects from each of these,
22making sure that the Boost library is in the include directories list.
23# ['How do I make sure that the Boost library is in the Visual Studio include directories list?][br]
24You can add an include path, for example, your Boost place /boost-latest_release,
25for example `X:/boost_1_45_0/` if you have a separate partition X for Boost releases.
26Or you can use an environment variable BOOST_ROOT set to your Boost place, and include that.
27Visual Studio before 2010 provided Tools, Options, VC++ Directories to control directories:
28Visual Studio 2010 instead provides property sheets to assist.
29You may find it convenient to create a new one adding \boost-latest_release;
30to the existing include items in $(IncludePath).
31# ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and
32I don't see where the properties like mean, median, mode, variance, skewness of distributions are in Boost.Math?][br]
33They are all available (if defined for the parameters with which you constructed the distribution) via __usual_accessors.
34# ['I am a C programmer. Can I user Boost.Math with C?][br]
35Yes you can, including all the special functions, and TR1 functions like isnan.
36They appear as C functions, by being declared as "extern C".
37# ['I am a C# (Basic? F# FORTRAN? Other CLI?) programmer. Can I use Boost.Math with C#? (or ...)?] [br]
38Yes you can, including all the special functions, and TR1 functions like isnan.
39But you [*must build the Boost.Math as a dynamic library (.dll) and compile with the /CLI option].
40See the boost/math/dot_net_example folder which contains an example that
41builds a simple statistical distribution app with a GUI.
42See [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer] [br]
43# ['What these "policies" things for?] [br]
44Policies are a powerful (if necessarily complex) fine-grain mechanism that
45allow you to customise the behaviour of the Boost.Math library according to your precise needs.
46See __policy_section. But if, very probably, the default behaviour suits you, you don't need to know more.
47# ['I am a C user and expect to see global C-style`::errno` set for overflow/errors etc?] [br]
48You can achieve what you want - see __error_policy and __user_error_handling and many examples.
49# ['I am a C user and expect to silently return a max value for overflow?] [br]
50You (and C++ users too) can return whatever you want on overflow
51- see __overflow_error and __error_policy and several examples.
52# ['I don't want any error message for overflow etc?] [br]
53You can control exactly what happens for all the abnormal conditions, including the values returned.
54See __domain_error, __overflow_error __error_policy __user_error_handling etc and examples.
55# ['My environment doesn't allow and/or I don't want exceptions. Can I still user Boost.Math?] [br]
56Yes but you must customise the error handling: see __user_error_handling and __changing_policy_defaults .
57# ['The docs are several hundreds of pages long! Can I read the docs off-line or on paper?] [br]
58Yes - you can download the Boost current release of most documentation
59as a zip of pdfs (including Boost.Math) from Sourceforge, for example
60[@https://sourceforge.net/projects/boost/files/boost-docs/1.45.0/boost_pdf_1_45_0.tar.gz/download].
61And you can print any pages you need (or even print all pages - but be warned that there are several hundred!).
62Both html and pdf versions are highly hyperlinked.
63The entire Boost.Math pdf can be searched with Adobe Reader, Edit, Find ...
64This can often find what you seek, a partial substitute for a full index.
65# ['I want a compact version for an embedded application. Can I use float precision?] [br]
66Yes - by selecting RealType template parameter as float:
67for example normal_distribution<float> your_normal(mean, sd);
68(But double may still be used internally, so space saving may be less that you hope for).
69You can also change the promotion policy, but accuracy might be much reduced.
70# ['I seem to get somewhat different results compared to other programs. Why?]
71We hope Boost.Math to be more accurate: our priority is accuracy (over speed).
72See the section on accuracy. But for evaluations that require iterations
73there are parameters which can change the required accuracy (see __policy_section).
74You might be able to squeeze a little more (or less) accuracy at the cost of runtime.
75# ['Will my program run more slowly compared to other math functions and statistical libraries?]
76Probably, thought not always, and not by too much: our priority is accuracy.
77For most functions, making sure you have the latest compiler version with all optimisations switched on is the key to speed.
78For evaluations that require iteration, you may be able to gain a little more speed at the expense of accuracy.
79See detailed suggestions and results on __performance.
80# ['How do I handle infinity and NaNs portably?] [br]
81See __fp_facets for Facets for Floating-Point Infinities and NaNs.
82# ['Where are the pre-built libraries?] [br]
83Good news - you probably don't need any! - just `#include <boost/`['math/distribution_you_want>].
84But in the unlikely event that you do, see __building.
85# ['I don't see the function or distribution that I want.] [br]
86You could try an email to ask the authors - but no promises!
87# ['I need more decimal digits for values/computations.] [br]
88You can use Boost.Math with __multiprecision: typically
89__cpp_dec_float is a useful user-defined type to provide a fixed number of decimal digits, usually 50 or 100.
90# Why can't I write something really simple like `cpp_int one(1); cpp_dec_float_50 two(2); one * two;`
91Because `cpp_int` might be bigger than `cpp_dec_float can hold`, so you must make an [*explicit] conversion.
92See [@http://svn.boost.org/svn/boost/trunk/libs/multiprecision/doc/html/boost_multiprecision/intro.html mixed multiprecision arithmetic]
93and [@http://svn.boost.org/svn/boost/trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html conversion].
94
95
96[endsect] [/section:faq Frequently Asked Questions]
97
98[/
99 Copyright 2010, 2012 John Maddock and Paul A. Bristow.
100 Distributed under the Boost Software License, Version 1.0.
101 (See accompanying file LICENSE_1_0.txt or copy at
102 http://www.boost.org/LICENSE_1_0.txt).
103]
104