<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Frequently Asked Questions FAQ</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../../index.html" title="Math Toolkit">
<link rel="up" href="../main_overview.html" title="Overview">
<link rel="prev" href="tr1.html" title="C99 and C++ TR1 C-style Functions">
<link rel="next" href="contact.html" title="Contact Info and Support">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="tr1.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="contact.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="math_toolkit.main_overview.faq"></a><a class="link" href="faq.html" title="Frequently Asked Questions FAQ"> Frequently Asked Questions
      FAQ</a>
</h3></div></div></div>
<div class="orderedlist"><ol type="1">
<li>
            <span class="emphasis"><em>I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and I don't
            see where the functions like dnorm(mean, sd) are in Boost.Math?</em></span>
            <br> Nearly all are provided, and many more like mean, skewness, quantiles,
            complements ... but Boost.Math makes full use of C++, and it looks a
            bit different. But do not panic! See section on construction and the
            many examples. Briefly, the distribution is constructed with the parameters
            (like location and scale) (things after the | in representation like
            P(X=k|n, p) or ; in a common represention of pdf f(x; &#956;&#963;<sup>2</sup>). Functions like
            pdf, cdf are called with the name of that distribution and the random
            variate often called x or k. For example, <code class="computeroutput"><span class="identifier">normal</span>
            <span class="identifier">my_norm</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">my_norm</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span></code>
            <br>
          </li>
<li>
            <span class="emphasis"><em>I'm allegic to reading manuals and prefer to learn from examples.</em></span><br>
            Fear not - you are not alone! Many examples are available for functions
            and distributions. Some are referenced directly from the text. Others
            can be found at \boost_latest_release\libs\math\example. If you are a
            Visual Studio user, you should be able to create projects from each of
            these, making sure that the Boost library is in the include directories
            list.
          </li>
<li>
            <span class="emphasis"><em>How do I make sure that the Boost library is in the Visual
            Studio include directories list?</em></span><br> You can add an include
            path, for example, your Boost place /boost-latest_release, for example
            <code class="computeroutput"><span class="identifier">X</span><span class="special">:/</span><span class="identifier">boost_1_45_0</span><span class="special">/</span></code>
            if you have a separate partition X for Boost releases. Or you can use
            an environment variable BOOST_ROOT set to your Boost place, and include
            that. Visual Studio before 2010 provided Tools, Options, VC++ Directories
            to control directories: Visual Studio 2010 instead provides property
            sheets to assist. You may find it convenient to create a new one adding
            \boost-latest_release; to the existing include items in $(IncludePath).
          </li>
<li>
            <span class="emphasis"><em>I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and I don't
            see where the properties like mean, median, mode, variance, skewness
            of distributions are in Boost.Math?</em></span><br> They are all available
            (if defined for the parameters with which you constructed the distribution)
            via <a class="link" href="../dist/dist_ref/nmp.html#math.dist.cdf">Cumulative Distribution Function</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.pdf">Probability Density Function</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.quantile">Quantile</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.hazard">Hazard
            Function</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.chf">Cumulative Hazard Function</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.mean">mean</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.median">median</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.mode">mode</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.variance">variance</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.sd">standard deviation</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.skewness">skewness</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.kurtosis">kurtosis</a>, <a class="link" href="../dist/dist_ref/nmp.html#math.dist.kurtosis_excess">kurtosis_excess</a>,
            <a class="link" href="../dist/dist_ref/nmp.html#math.dist.range">range</a> and <a class="link" href="../dist/dist_ref/nmp.html#math.dist.support">support</a>.
          </li>
<li>
            <span class="emphasis"><em>I am a C programmer. Can I user Boost.Math with C?</em></span><br>
            Yes you can, including all the special functions, and TR1 functions like
            isnan. They appear as C functions, by being declared as "extern
            C".
          </li>
<li>
            <span class="emphasis"><em>I am a C# (Basic? F# FORTRAN? Other CLI?) programmer. Can I
            use Boost.Math with C#?</em></span> <br> Yes you can, including all
            the special functions, and TR1 functions like isnan. But you <span class="bold"><strong>must build the Boost.Math as a dynamic library (.dll) and
            compile with the /CLI option</strong></span>. See the boost/math/dot_net_example
            folder which contains an example that builds a simple statistical distribution
            app with a GUI. See <a href="http://sourceforge.net/projects/distexplorer/" target="_top">Statistical
            Distribution Explorer</a> <br>
          </li>
<li>
            <span class="emphasis"><em>What these "policies" things for?</em></span> <br>
            Policies are a powerful (if necessarily complex) fine-grain mechanism
            that allow you to customise the behaviour of the Boost.Math library according
            to your precise needs. See <a class="link" href="../policy.html" title="Policies">Policies</a>.
            But if, very probably, the default behaviour suits you, you don't need
            to know more.
          </li>
<li>
            <span class="emphasis"><em>I am a C user and expect to see global C-style<code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
            set for overflow/errors etc?</em></span> <br> You can achieve what you
            want - see <a class="link" href="../policy/pol_ref/error_handling_policies.html" title="Error Handling Policies">error
            handling policies</a> and <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
            error handling</a> and many examples.
          </li>
<li>
            <span class="emphasis"><em>I am a C user and expect to silently return a max value for
            overflow?</em></span> <br> You (and C++ users too) can return whatever
            you want on overflow - see <a class="link" href="error_handling.html#overflow_error">overflow_error</a>
            and <a class="link" href="../policy/pol_ref/error_handling_policies.html" title="Error Handling Policies">error
            handling policies</a> and several examples.
          </li>
<li>
            <span class="emphasis"><em>I don't want any error message for overflow etc?</em></span>
            <br> You can control exactly what happens for all the abnormal conditions,
            including the values returned. See <a class="link" href="error_handling.html#domain_error">domain_error</a>,
            <a class="link" href="error_handling.html#overflow_error">overflow_error</a> <a class="link" href="../policy/pol_ref/error_handling_policies.html" title="Error Handling Policies">error
            handling policies</a> <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
            error handling</a> etc and examples.
          </li>
<li>
            <span class="emphasis"><em>My environment doesn't allow and/or I don't want exceptions.
            Can I still user Boost.Math?</em></span> <br> Yes but you must customise
            the error handling: see <a class="link" href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">user
            error handling</a> and <a class="link" href="../policy/pol_ref/policy_defaults.html" title="Using macros to Change the Policy Defaults">changing
            policies defaults</a> .
          </li>
<li>
            <span class="emphasis"><em>The docs are several hundreds of pages long! Can I read the
            docs off-line or on paper?</em></span> <br> Yes - you can download the
            Boost current release of most documentation as a zip of pdfs (including
            Boost.Math) from Sourceforge, for example <a href="https://sourceforge.net/projects/boost/files/boost-docs/1.45.0/boost_pdf_1_45_0.tar.gz/download" target="_top">https://sourceforge.net/projects/boost/files/boost-docs/1.45.0/boost_pdf_1_45_0.tar.gz/download</a>.
            And you can print any pages you need (or even print all pages - but be
            warned that there are several hundred!). Both html and pdf versions are
            highly hyperlinked. The entire Boost.Math pdf can be searched with Adobe
            Reader, Edit, Find ... This can often find what you seek, a partial substitute
            for a full index.
          </li>
<li>
            <span class="emphasis"><em>I want a compact version for an embedded application. Can I
            use float precision?</em></span> <br> Yes - by selecting RealType template
            parameter as float: for example normal_distribution&lt;float&gt; your_normal(mean,
            sd); (But double may still be used internally, so space saving may be
            less that you hope for). You can also change the promotion policy, but
            accuracy might be much reduced.
          </li>
<li>
            <span class="emphasis"><em>I seem to get somewhat different results compared to other
            programs. Why?</em></span> We hope Boost.Math to be more accurate: our
            priority is accuracy (over speed). See the section on accuracy. But for
            evaluations that require iterations there are parameters which can change
            the required accuracy. You might be able to squeeze a little more accuracy
            at the cost of runtime.
          </li>
<li>
            <span class="emphasis"><em>Will my program run more slowly compared to other math functions
            and statistical libraries?</em></span> Probably, thought not always, and
            not by too much: our priority is accuracy. For most functions, making
            sure you have the latest compiler version with all optimisations switched
            on is the key to speed. For evaluations that require iteration, you may
            be able to gain a little more speed at the expense of accuracy. See detailed
            suggestions and results on <a class="link" href="../perf.html" title="Performance">performance</a>.
          </li>
<li>
            <span class="emphasis"><em>Where are the pre-built libraries?</em></span> <br> Good news
            - you probably don't need any! - just #include &lt;boost/math/distribution_you_want&gt;.
            But in the unlikely event that you do, see <a class="link" href="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">building
            libraries</a>.
          </li>
<li>
            <span class="emphasis"><em>I don't see the function or distribution that I want.</em></span>
            <br> You could try an email to ask the authors - but no promises!
          </li>
</ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2006 , 2007, 2008, 2009, 2010 John Maddock, Paul A. Bristow,
      Hubert Holin, Xiaogang Zhang, Bruno Lalande, Johan R&#229;de, Gautam Sewani and
      Thijs van den Berg<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="tr1.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../main_overview.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="contact.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
