]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [section:main_faq Frequently Asked Questions FAQ] |
2 | ||
3 | # ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user | |
4 | and I don't see where the functions like dnorm(mean, sd) are in Boost.Math?] [br] | |
5 | Nearly all are provided, and many more like mean, skewness, quantiles, complements ... | |
6 | but Boost.Math makes full use of C++, and it looks a bit different. | |
7 | But do not panic! See section on construction and the many examples. | |
8 | Briefly, 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]). | |
10 | Functions like pdf, cdf are called with the name of that distribution and the random variate often called x or k. | |
11 | For 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] | |
13 | You will find the interface more familar, but to be able to select a distribution (perhaps using a string) | |
14 | see the Extras/Future Directions section, | |
15 | and /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): | |
17 | see [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer].[br] | |
18 | # ['I'm allegic to reading manuals and prefer to learn from examples.][br] | |
19 | Fear not - you are not alone! Many examples are available for functions and distributions. | |
20 | Some are referenced directly from the text. Others can be found at \boost_latest_release\libs\math\example. | |
21 | If you are a Visual Studio user, you should be able to create projects from each of these, | |
22 | making 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] | |
24 | You can add an include path, for example, your Boost place /boost-latest_release, | |
25 | for example `X:/boost_1_45_0/` if you have a separate partition X for Boost releases. | |
26 | Or you can use an environment variable BOOST_ROOT set to your Boost place, and include that. | |
27 | Visual Studio before 2010 provided Tools, Options, VC++ Directories to control directories: | |
28 | Visual Studio 2010 instead provides property sheets to assist. | |
29 | You may find it convenient to create a new one adding \boost-latest_release; | |
30 | to the existing include items in $(IncludePath). | |
31 | # ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and | |
32 | I don't see where the properties like mean, median, mode, variance, skewness of distributions are in Boost.Math?][br] | |
33 | They 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] | |
35 | Yes you can, including all the special functions, and TR1 functions like isnan. | |
36 | They 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] | |
38 | Yes you can, including all the special functions, and TR1 functions like isnan. | |
39 | But you [*must build the Boost.Math as a dynamic library (.dll) and compile with the /CLI option]. | |
40 | See the boost/math/dot_net_example folder which contains an example that | |
41 | builds a simple statistical distribution app with a GUI. | |
42 | See [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer] [br] | |
43 | # ['What these "policies" things for?] [br] | |
44 | Policies are a powerful (if necessarily complex) fine-grain mechanism that | |
45 | allow you to customise the behaviour of the Boost.Math library according to your precise needs. | |
46 | See __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] | |
48 | You 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] | |
50 | You (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] | |
53 | You can control exactly what happens for all the abnormal conditions, including the values returned. | |
54 | See __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] | |
56 | Yes 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] | |
58 | Yes - you can download the Boost current release of most documentation | |
59 | as 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]. | |
61 | And you can print any pages you need (or even print all pages - but be warned that there are several hundred!). | |
62 | Both html and pdf versions are highly hyperlinked. | |
63 | The entire Boost.Math pdf can be searched with Adobe Reader, Edit, Find ... | |
64 | This 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] | |
66 | Yes - by selecting RealType template parameter as float: | |
67 | for 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). | |
69 | You 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?] | |
71 | We hope Boost.Math to be more accurate: our priority is accuracy (over speed). | |
72 | See the section on accuracy. But for evaluations that require iterations | |
73 | there are parameters which can change the required accuracy (see __policy_section). | |
74 | You 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?] | |
76 | Probably, thought not always, and not by too much: our priority is accuracy. | |
77 | For most functions, making sure you have the latest compiler version with all optimisations switched on is the key to speed. | |
78 | For evaluations that require iteration, you may be able to gain a little more speed at the expense of accuracy. | |
79 | See detailed suggestions and results on __performance. | |
80 | # ['How do I handle infinity and NaNs portably?] [br] | |
81 | See __fp_facets for Facets for Floating-Point Infinities and NaNs. | |
82 | # ['Where are the pre-built libraries?] [br] | |
83 | Good news - you probably don't need any! - just `#include <boost/`['math/distribution_you_want>]. | |
84 | But in the unlikely event that you do, see __building. | |
85 | # ['I don't see the function or distribution that I want.] [br] | |
86 | You could try an email to ask the authors - but no promises! | |
87 | # ['I need more decimal digits for values/computations.] [br] | |
88 | You 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;` | |
91 | Because `cpp_int` might be bigger than `cpp_dec_float can hold`, so you must make an [*explicit] conversion. | |
92 | See [@http://svn.boost.org/svn/boost/trunk/libs/multiprecision/doc/html/boost_multiprecision/intro.html mixed multiprecision arithmetic] | |
93 | and [@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 |