<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>History and What's New</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="building.html" title="If and How to Build a Boost.Math Library, and its Examples and Tests">
<link rel="next" href="tr1.html" title="C99 and C++ TR1 C-style Functions">
</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="building.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="tr1.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.history1"></a><a class="link" href="history1.html" title="History and What's New"> History and What's
      New</a>
</h3></div></div></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_45_0"></a>
        </p>
<h5>
<a name="id911497"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_45_0">Boost-1.45.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Added warnings about potential ambiguity with std random library in
              distribution and function names.
            </li>
<li>
              Added inverse gamma distribution and inverse chi_square and scaled
              inverse chi_square.
            </li>
<li>
              Editorial revision of documentation, and added FAQ.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_44_0"></a>
        </p>
<h5>
<a name="id911536"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_44_0">Boost-1.44.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Fixed incorrect range and support for Rayleigh distribution.
            </li>
<li>
              Fixed numerical error in the quantile of the Student's T distribution:
              the function was returning garbage values for non-integer degrees of
              freedom between 2 and 3.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_41_0"></a>
        </p>
<h5>
<a name="id911567"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_41_0">Boost-1.41.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc"><li>
              Significantly improved performance for the incomplete gamma function
              and its inverse.
            </li></ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_40_0"></a>
        </p>
<h5>
<a name="id911591"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_40_0">Boost-1.40.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Added support for MPFR as a bignum type.
            </li>
<li>
              Added some full specializations of the policy classes to reduce compile
              times.
            </li>
<li>
              Added logistic and hypergeometric distributions, from Gautam Sewani's
              Google Summer of Code project.
            </li>
<li>
              Added Laplace distribution submitted by Thijs van den Berg.
            </li>
<li>
              Updated performance test code to include new distributions, and improved
              the performance of the non-central distributions.
            </li>
<li>
              Added SSE2 optimised <a class="link" href="../backgrounders/lanczos.html" title="The Lanczos Approximation">Lanczos
              approximation</a> code, from Gautam Sewani's Google Summer of Code
              project.
            </li>
<li>
              Fixed bug in cyl_bessel_i that used an incorrect approximation for
              &#957; = 0.5, also effects the non-central Chi Square Distribution when &#957; =
              3, see bug report <a href="https://svn.boost.org/trac/boost/ticket/2877" target="_top">#2877</a>.
            </li>
<li>
              Fixed minor bugs <a href="https://svn.boost.org/trac/boost/ticket/2873" target="_top">#2873</a>.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_38_0"></a>
        </p>
<h5>
<a name="id911680"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_38_0">Boost-1.38.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Added Johan R&#229;de's optimised floating point classification routines.
            </li>
<li>
              Fixed code so that it compiles in GCC's -pedantic mode (bug report
              <a href="https://svn.boost.org/trac/boost/ticket/1451" target="_top">#1451</a>).
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_37_0"></a>
        </p>
<h5>
<a name="id911716"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_37_0">Boost-1.37.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc"><li>
              Improved accuracy and testing of the inverse hypergeometric functions.
            </li></ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_36_0"></a>
        </p>
<h5>
<a name="id911740"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_36_0">Boost-1.36.0</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Added Noncentral Chi Squared Distribution.
            </li>
<li>
              Added Noncentral Beta Distribution.
            </li>
<li>
              Added Noncentral F Distribution.
            </li>
<li>
              Added Noncentral T Distribution.
            </li>
<li>
              Added Exponential Integral Functions.
            </li>
<li>
              Added Zeta Function.
            </li>
<li>
              Added Rounding and Truncation functions.
            </li>
<li>
              Added Compile time powers of runtime bases.
            </li>
<li>
              Added SSE2 optimizations for Lanczos evaluation.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.boost_1_35_0__post_review_first_official_release"></a>
        </p>
<h5>
<a name="id911825"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.boost_1_35_0__post_review_first_official_release">Boost-1.35.0:
          Post Review First Official Release</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Added Policy based framework that allows fine grained control over
              function behaviour.
            </li>
<li>
              <span class="bold"><strong>Breaking change:</strong></span> Changed default behaviour
              for domain, pole and overflow errors to throw an exception (based on
              review feedback), this behaviour can be customised using <a class="link" href="../policy.html" title="Policies">Policy</a>'s.
            </li>
<li>
              <span class="bold"><strong>Breaking change:</strong></span> Changed exception
              thrown when an internal evaluation error occurs to boost::math::evaluation_error.
            </li>
<li>
              <span class="bold"><strong>Breaking change:</strong></span> Changed discrete
              quantiles to return an integer result: this is anything up to 20 times
              faster than finding the true root, this behaviour can be customised
              using <a class="link" href="../policy.html" title="Policies">Policy</a>'s.
            </li>
<li>
              Polynomial/rational function evaluation is now customisable and hopefully
              faster than before.
            </li>
<li>
              Added performance test program.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.milestone_4__second_review_candidate__1st_march_2007_"></a>
        </p>
<h5>
<a name="id911911"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.milestone_4__second_review_candidate__1st_march_2007_">Milestone
          4: Second Review Candidate (1st March 2007)</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Moved Xiaogang Zhang's Bessel Functions code into the library, and
              brought them into line with the rest of the code.
            </li>
<li>
              Added C# "Distribution Explorer" demo application.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.milestone_3__first_review_candidate__31st_dec_2006_"></a>
        </p>
<h5>
<a name="id911944"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.milestone_3__first_review_candidate__31st_dec_2006_">Milestone
          3: First Review Candidate (31st Dec 2006)</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Implemented the main probability distribution and density functions.
            </li>
<li>
              Implemented digamma.
            </li>
<li>
              Added more factorial functions.
            </li>
<li>
              Implemented the Hermite, Legendre and Laguerre polynomials plus the
              spherical harmonic functions from TR1.
            </li>
<li>
              Moved Xiaogang Zhang's elliptic integral code into the library, and
              brought them into line with the rest of the code.
            </li>
<li>
              Moved Hubert Holin's existing Boost.Math special functions into this
              library and brought them into line with the rest of the code.
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.milestone_2__released_september_10th_2006"></a>
        </p>
<h5>
<a name="id912006"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.milestone_2__released_september_10th_2006">Milestone
          2: Released September 10th 2006</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Implement preview release of the statistical distributions.
            </li>
<li>
              Added statistical distributions tutorial.
            </li>
<li>
              Implemented root finding algorithms.
            </li>
<li>
              Implemented the inverses of the incomplete gamma and beta functions.
            </li>
<li>
              Rewrite erf/erfc as rational approximations (valid to 128-bit precision).
            </li>
<li>
              Integrated the statistical results generated from the test data with
              Boost.Test: uses a database of expected results, indexed by test, floating
              point type, platform, and compiler.
            </li>
<li>
              Improved lgamma near 1 and 2 (rational approximations).
            </li>
<li>
              Improved erf/erfc inverses (rational approximations).
            </li>
<li>
              Implemented Rational function generation (the Remez method).
            </li>
</ul></div>
<p>
        <a name="math_toolkit.main_overview.history1.milestone_1__released_march_31st_2006"></a>
        </p>
<h5>
<a name="id912088"></a>
          <a class="link" href="history1.html#math_toolkit.main_overview.history1.milestone_1__released_march_31st_2006">Milestone
          1: Released March 31st 2006</a>
        </h5>
<p>
        </p>
<div class="itemizedlist"><ul type="disc">
<li>
              Implement gamma/beta/erf functions along with their incomplete counterparts.
            </li>
<li>
              Generate high quality test data, against which future improvements
              can be judged.
            </li>
<li>
              Provide tools for the evaluation of infinite series, continued fractions,
              and rational functions.
            </li>
<li>
              Provide tools for testing against tabulated test data, and collecting
              statistics on error rates.
            </li>
<li>
              Provide sufficient docs for people to be able to find their way around
              the library.
            </li>
</ul></div>
<p>
        </p>
<p>
          SVN Revisions:
        </p>
<p>
        </p>
<p>
          Sandbox and trunk last synchonised at revision: .
        </p>
<p>
      </p>
</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="building.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="tr1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
