| Home | Libraries | People | FAQ | More

## History and What's New

Currently open bug reports can be viewed here on GitHub.

All old bug reports including closed ones can be viewed on Trac here.

Recent issues on GitHub here.

##### Math-4.2.1 (Boost-1.86)

- Correct Bessel function results at infinity, see 1143.
- Improve Non Central T numerical stability, see scipy20693.
- Correct `float_next`/`float_prior` behaviour at infinity.
- Prevent spurious underflow in non-central beta, see scipy20693.
- Add improvement to Heuman Lambda precision.
- Improve Skew Normal root finding, see 1120.
- Lots of minor fixes and improved code coverage.

##### Math-4.2.0 (Boost-1.85)

- Add support for Single objective real-parameter optimization: Algorithm jSO.
- Add support for Differential Evolution.
- Lot's of code coverage and testing improvements through the special functions.
- Make configuration macros have a BOOST_MATH_ prefix so in the event that Boost.Math is used standalone but with Boost.Config (and maybe other libraries) present, then there aren't macro name confilicts, see 1098.
- Minor cstdfloat.hpp fixes for the latest compilers.
- Improve the accuracy of quartic_roots, see 1055.
- Allow non-literal types in Gauss-Kronrod, see 1077.

##### Math-4.1.1 (Boost-1.84)

- Improve ccmath error detection.
- Remove use of deprecated std::numeric_limits<>::has_denorm, see 1028.
- Correct non-convergence bug in non-central-t distribution, see 1035.
- Adjust Bessel function approximation to 1F1 to avoid taking tgamma at a negative integer, see 1034.
- Avoid spurious overflow and divide by zero in ibeta, see 1006.
- Improve accuracy when using Sterling's approximation to tgamma, completes work started in 1007.
- Fix inverse_discrete_quantile for large initial guesses, see 1007.
- Improve Newton root finding, see 1000.
- Fix median_absolute_deviation for non-zero centre, see 997.
- Fix up cstdfloat.hpp for gcc-14.
- Update to work for the new types declared in <stdfloat>.
- Change hypergeometric_distribution to use 64 rather than 32 bit integers to avoid unnecessary overflow and restrictions on use.

##### Math-4.1.0 (Boost-1.82)

- Added Estrin's method for polynomial evaluation.
- Fix various issues in non-central distributions to allow for larger non-centralities see 939.
- Added CMake install target.
- Fix special_functions.hpp to disable anything which can't be used in an exception-free environment.
- Get condition number calculation working in C++14.
- Fix `constexpr` table driven functions to avoid massive slowdown when the code is not actually `constexpr`, see 923.
- Improve tanh_sinh boundary handling, see 894.
- Add Linux arm64, s390x and Apple M1 testing, fix up test cases to handle 128-bit long doubles.
- Improve `constexpr` math functions to better handle infinities and NaN's.
- Make the integrators const-correct.
- Fix tanh_sinh integrator in case the function underflows, see 898.
- Don't use `std::cbrt` as some platforms still don't support it.
- Stop non-central T from raising spurious FE_INVALID exceptions, see 892.
- Fix binomial distribution edge case.
- Improve ibeta handling of very small arguments, see 884.
- Improve ibeta handling of infinities and NaN's, see 874.
- Improve error handling in powm1, see 781.
- Improve root-finder bracketing to bracket faster when the exponent is super-large or small.
- Fix root finding edge cases, see 873.
- Lot's of miscellaneous warning fixes.
- Add assertions when using features which require C++17 for better error messages when invoking the compiler in a lower std version.

##### Math-4.0.0 (Boost-1.81)

- BREAKING CHANGE: Fix forward declaration of `user_rounding_error`, see 834.
- Fix cancellation error in binomial_distribution for extreme parameter ranges, see scipy#17146
- Fix spurious divide-by-zero in non-central-f PDF so that the FP error flags don't get set spuriously, see scipy#17101.
- Lots of gcc and clang warning fixes, lots of small cast fixes, unreachable code, unused parameters, deprecated constructors etc.
- Add workaround for apparent clang Mac M1 bug, see 826.
- Fix quartic root finder when depressed cubic only has single real root, see 825.
- Fix recursion routines to correctly handle 1F1(-n, -n, n), see 829.
- Modernize exception handling specifications, see 822.
- Improve ccmath signbit and copysign to correctly handle the sign of infinities and NaNs when `std::bitcast` is available.
- Improve performance of the Complete Elliptic Integrals.
- Add some missing #include's for the hypergeometric functions, see 811.
- Avoid setting spurious overflow flag in Bessel IK calculation.
- Avoid spurious overflow in `ibeta_power_term` by avoiding taking the log of `0`.
- Make sure `ibeta_power_terms` triggers an underflow error when required, see 799.
- Use `nullptr` rather than zeros.
- Fix right-end-point derivative error in cubic B spline.

##### Math-3.4.0 (Boost-1.80)

- Deprecated C++11 support: from 2023 we will require C++14 as a minimum standard. This will mean GCC-5 or MSVC-14.1 as a minimal requirement.
- Add `constexpr` fma support, see 734.
- Add support for the Chatterjee Correlation Coefficient, see 770.
- Added support for the logarithm of the PDF for all the distributions.
- Improve support for building with no exception or RTTI support.
- Some minor bug fixes for 1F1 corner cases, see 778.

##### Math-3.3.0 (Boost-1.79)

- Added `logaddexp` and `logsumexp` to compute log(ex1 + ex2 + ... + exN).
- Added color map visualization as one of our internal tools.
- Added root finding of quartic polynomials.
- Extended the list of std lib math functions available for use in `constexpr` contexts.
- Fixed pathological case in cubic root finding, see #759.
- Added deduction guides for the distribution classes to prevent erroneous deduction from constructors in C++17, see #754.
- Fixed building of bernoulli.hpp on platforms with no std::thread etc, see #748.
- Begin comprehensively removing C-style casts in favour of static_cast's (warning suppression).
- Improved the performance of the Double-Exponential integrators, see #706.

##### Math-3.2.0 (Boost-1.78)

- Add support for cubic roots.
- Add support for `constexpr` versions of various standard library math routines.
- Add support for Bezier polynomials.
- Improve worst-case tanh-sinh integration performance.
- Disable inadvertant use of integral types in integration routines.
- Minor update for erf approximations when the result is with 2ulp of 1.
- Allow Bernoulli code to be used on platforms with no atomic integers.
- Improve the mode of the non-central Chi Squared distribution.
- Improve certain edge cases for <cstdfloat> complex-valued elementary functions, see #507.

##### Math-3.1.0 (Boost-1.77)

- This library can now be used entirely standalone, without the rest of Boost: either use a compiler which supports `__has_include` or define `BOOST_MATH_STANDALONE` to enable standalone mode.
- Add Bilinear Uniform Interpolation.
- Add Fibonacci Numbers.
- Fix Hypergeometric Distribution kertosis, see #639.
- Fix closed Catmull-Rom curves to have the same start/end point. See #636.
- Correct Bernoulli number caching in multi-threading multiprecision case.
- Re-enabled the ability to build in environments with no std lib threading support. See #621.
- Correct Gini-coefficient parrellel calculation.

##### Math-3.0.0 (Boost-1.76)

- Breaking Change: C++03 support is now removed, a C++11 or later conformant compiler is now required to use this library.
- Added Z-test.
- Added execution policy support to univariate and bivariate statistics: enables parallel execution (requires C++17 and `<execution>`).
- Big update/improvement on CI testing.
- Bivariate statistics now have integer support.
- T-Test now has integer support.
- Linear regression now has integer support.
- Correct PDF of the beta distribution at the endpoints.
- Correct use of Stirling's approximation in certain multiprecision cases, fixes #396.
- Eliminate -Wimplicit-int-float-conversion on clang.
- Fix some constexpr issues in quaternion/octonion.
- Minor performance fix to tanh_sinh integration.
- Update hypergeometric functions internal scaling to allow for 64-bit (long long) exponents with multiprecision types.

##### Math-2.13.0 (Boost-1.75)

- Added Kolmogorov-Smirnov distribution.
- Added Jacobi Theta functions.
- Added methods to accelerate convergence of an alternating series by a method designed by Cohen, Villegas, and Zagier.
- Added simple tool for ULP plots of univariate functions.
- Added Reinch's modification to Clenshaw recurrence for Chebyshev evaluation.
- Improve mixed argument handling in `float_next`.
- Correct behaviour of `ellint_2` when `k = 1`. See #321.
- Correct `cyl_bessel_i` in the multiprecision case, especially for decimal types.
- Correct converting constructors for `std::complex<__float128>` in `<cstdfloat>`. See #350.
- Update multiprecision `erf` to improve performance and precision.
- Minor improvements to `tanh_sinh` implementation.

##### Math-2.12.0 (Boost-1.73)

- IMPORTANT: C++03 support is now deprecated and will be removed from March 2021.
- Added Cubic Hermite Interpolation.
- Added Modified Akima Interpolation.
- Added PCHIP Interpolation.
- Added Quintic Hermite Interpolation.
- Added entropy to numerous distributions.
- Allow trivial quadrature case where the two end points are equal, and in addition allow bounds to be interchanged.
- Fix exp_sinh quadrature to work with complex types over a non-native range.
- Fix miscellaneous compiler warnings in factorial.hpp.
- Use std::chrono rather than boost::chrono in timed pFq calculations.
- Remove much of the old boost::mpl dependencies to improve constexpr support.

##### Math-2.11.0 (Boost-1.72)

- Added Hypergeometric functions 1F0, 0F1, 2F0, 1F1 and pFq.
- Added Jacobi polynomial (and derivatives) evaluation.
- Added Gegenbauer polynomial (and derivatives) evaluation.
- Added Cardinal B-Splines (and derivatives) as polynomial functions in their own right.
- Added Cardinal Trigonometric Interpolation.
- Added new statistics sub-section.
- Added One Sample Student's T Test.
- Added Anderson Darling test for normality.
- Added Ljung Box test for auto-correlation.
- Added Runs test for random sequences.
- The headers `boost/math/tools/univariate_statistics.hpp` and `boost/math/tools/bivariate_statistics.hpp`, have been deprecated in favor of `boost/math/statistics/univariate_statistics.hpp` and `boost/math/statistics/bivariate_statistics.hpp`.
- Added The Empirical CDF distribution.
- Reworked the Sterling approximation used by multiprecision gamma functions to be applicable to all the function that use the Lanczos approximation at regular precision. Also extended Lanczos approximations up to 100 decimal digit precision.

##### Math-2.10.0 (Boost-1.71)

- Catmull-Rom interpolator now works in C++11.
- Cardinal quadratic B-spline interpolation.
- Domain of elliptic integrals extended.
- sin_pi and cos_pi performance improvements.
- Forward-mode automatic differentiation.
- Vector valued barycentric rational interpolation.
- Ooura's method for evaluation of Fourier integrals.
- Multiple compatibility issues with Multiprecision fixed.
- Lambert-W fixed on a rare architecture.

##### Math-2.9.0 (Boost-1.70)

- Add Lanczos smoothing derivatives
- Move `numerical_differentiation.hpp` from `boost/math/tools/` to `boost/math/differentiation/finite_difference.hpp`.
- Add mean, variance, skewness, kurtosis, median, Gini coefficient, and median absolute deviation to `tools/univariate_statistics.hpp`.
- Add correlation coefficients and covariance to `tools/bivariate_statistics.hpp`
- Add absolute Gini coefficient, Hoyer sparsity, oracle SNR, and the M2M4 SNR estimator to `tools/signal_statistics.hpp`.
- Add total variation, l0, l1, l2, and sup norms, as well as corresponding distance functions to `tools/norms.hpp`.
- Add move constructors for polynomials, support complex coefficients, add `.prime()` and `.integrate()` methods.
- Add `quadratic_roots` to `tools/roots.hpp`.
- Add support for complex-valued functions to Newton's method in `roots.hpp`.
- Add Catmull-Rom interpolator.
- Fix bug in `newton_raphson_iterate` where we could terminate incorrectly under certain exceptional cases.
- Suppressed warnings from use of `Q` suffix on constants when compiling with `g++ -Wall -pedantic`.

##### Math-2.8.0 (Boost-1.69)

- Add LambertW functions.
- Update integration routines to support complex valued integrands and contour integrals.
- Added the derivative of the Barycentric rational approximation.
- Updated continued fraction and series evaluation code to support complex types.
- Minor fixes to better support variable precision floating point types.
- Removed use of deprecated Boost.Endian in favour of Predef.
- Prevent logic error leading to infinite loop in toms748_solve. See #138.
- Fix mean and standard_deviation for extreme_value_distribution. See #139.
- Improve heuristics used in newton_raphson_iterate. See #145.
- Fix result of `erf(NaN)`. See #141.
- Big push to reduce GCC warnings. See #136.
- Refactor polynomial addition. See PR132.
- Fix for vxWorks having a `real` function in the global namespace. See PR131.
- Improve `sinc` approximations and add better tests.
- Fix typo in Student's T hypothesis testing documentation, see #143.

##### Math-2.7.1 (Boost-1.68)

- Continue to improve numerical integration routines, and in particular add support for contour integrals.
- Improve accuracy of erfc function's rational approximations.

##### Math-2.7.0 (Boost-1.66)

- Add Gauss and Gauss-Kronrod quadrature routines.
- Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh) quadrature routines.
- Add Chebyshev polynomial evaluation, roots, integration, differentiation, and interpolation routines.

##### Math-2.6.0 (Boost-1.65)

New Features:

- Add Cardinal cubic B-Spline interpolation functions, with thanks to Nick Thompson.
- Add barycentric rational interpolation functions, with thanks to Nick Thompson.
- Add adaptive trapezoidal quadrature, with thanks to Nick Thompson.
- Add support for the zeros and derivatives of Legendre polynomials, with thanks to Nick Thompson.

Patches:

- Improve polynomial GCD algorithms, with thanks to Jeremy Murphy.
- Removed gcd/lcm routines from Boost.Math - these are now in Boost.Integer.

##### Math-2.5.2 (Boost-1.64)

Patches:

- Big push to ensure all functions in also in C99 are compatible with Annex F.
- Improved accuracy of the Bessel functions I0, I1, K0 and K1, see 12066.

##### Math-2.5.1 (Boost-1.63)

Patches:

- Fixed evaluation of zero polynomial in polynomial.hpp, see 12532.
- Fixed missing header include in boost/math/tools/tuple.hpp, see 12537.

##### Math-2.5.0 (Boost-1.62)

New Features:

- Enabled all the special function code to work correctly with types whose precision can change at runtime: for example type `mpfr_float` from Boost.Multiprecision.

Patches:

- Fix tgamma_delta_ratio for cases where the delta is small compared to the base.
- Fix misc GCC-4.4 test failures.

##### Math-2.4.0 (Boost-1.61)

New Features:

- Polynomial arithmetic added to tools.

##### Math-2.3.0 (Boost-1.60)

New Features:

- Promote the root finding and function minimization code to first class citizens - these are now officially supported as part of the library.
- Allow the library to be used and tested with compiler exception handling support turned off. To better facilitate this the default error handling policies have been changed to errno_on_error but only when the compiler has no exception handling support.

Patches:

- Fix behaviour of the non-central chi-squared distribution when the non-centrality parameter is zero to match the chi-squared, see 11557.
- Fix comments in code for the hypergeometric to match what it actually does, also fixes the parameter access functions to return the correct values. See 11556.
- Stopped using hidden visibility library build with the Oracle compiler as it leads to unresolved externals from the C++ standard library. See 11547.
- Fix unintended use of __declspec when building with Oracle C++. See 11546.
- Fix corner case bug in root bracketing code, see 11532.
- Add some missing typecasts in arguments to std::max in Bernoulli code. See 11453.
- Fix mistaken assumptions about the possible values for FLT_EVAL_METHOD. See 11429.
- Completely revamped performance testing and error-rate measuring code so we can more easily document how well (or not!) we're doing. This information will hopefully get more frequently updated in future as it's more or less automatically generated - see the reporting sub-directory for more information.
- Fix some corner cases in the beta, incomplete beta, and incomplete beta derivative. With thanks to Rocco Romeo.
- Reorganized the Bessel functions internally to improve the performance of Jn and Yn.
- Fixed skewness formula for triangular distribution, see #11768.
- Fixed some examples so they compile on Unix platforms which have an ::exception struct declared, see #11827.
- Correct mistake in triangular distribution skewness formula 11768, reported by Juan Leni.

##### Math-2.2.1

Patch release for Boost-1.58:

- Minor patch for Haiku support.
- Fix the decimal digit count for 128-bit floating point types.
- Fix a few documentation typos.

##### Math-2.2.0 (boost-1.58.0)

- Added two new special functions - trigamma and polygamma.
- Fixed namespace scope constants so they are constexpr on conforming compilers, see https://svn.boost.org/trac/boost/ticket/10901.
- Fixed various cases of spurious under/overflow in the incomplete beta and gamma functions, plus the elliptic integrals, with thanks to Rocco Romeo.
- Fix 3-arg legendre_p and legendre_q functions to not call the policy based overload if the final argument is not actually a policy.
- Cleaned up some dead code in the incomplete beta function, see #10985.
- Fixed extreme-value pdf for large valued inputs, see #10938.
- Large update to the Elliptic integral code to use Carlson's latest algorithms - these should be more stable, more accurate and slightly faster than before. Also added support for Carlson's RG integral.
- Added ellint_d, jacobi_zeta and heuman_lambda elliptic integrals.
- Switched documentation to use SVG rather than PNG graphs and equations - browsers seem to have finally caught up!

##### Math-2.1.0 (boost-1.57.0)

- Added Hyperexponential Distribution.
- Fix some spurious overflows in the incomplete gamma functions (with thanks to Rocco Romeo).
- Fix bug in derivative of incomplete beta when a = b = 0.5 - this also effects several non-central distributions, see 10480.
- Fixed some corner cases in round.
- Don't support 80-bit floats in cstdfloat.hpp if standard library support is broken.

##### Math-2.0.0 (Boost-1.56.0)

- Breaking change: moved a number of non-core headers that are predominantly used for internal maintenance into `libs/math/include_private`. The headers effected are `boost/math/tools/test_data.hpp`, `boost/math/tools/remez.hpp`, `boost/math/constants/generate.hpp`, `boost/math/tools/solve.hpp`, `boost/math/tools/test.hpp`. You can continue to use these headers by adding `libs/math/include_private` to your compiler's include path.
- Breaking change: A number of distributions and special functions were returning the maximum finite value rather than raising an overflow_error, this has now been fixed, which means these functions now behave as documented. However, since the default behavior on raising an overflow_error is to throw a `std::overflow_error` exception, applications which have come to reply rely on these functions not throwing may experience exceptions where they did not before. The special functions involved are gamma_p_inva, gamma_q_inva, ibeta_inva, ibetac_inva, ibeta_invb, ibetac_invb, gamma_p_inv, gamma_q_inv. The distributions involved are Pareto Distribution, Beta Distribution, Geometric Distribution, Negative Binomial Distribution, Binomial Distribution, Chi Squared Distribution, Gamma Distribution, Inverse chi squared Distribution, Inverse Gamma Distribution. See #10111.
- Fix round and trunc functions so they can be used with integer arguments, see #10066.
- Fix Halley iteration to handle zero derivative (with non-zero second derivative), see #10046.

##### Math-1.9.1

- Fix Geometric distribution use of Policies, see #9833.
- Fix corner cases in the negative binomial distribution, see #9834.
- Fix compilation failures on Mac OS.

##### Math-1.9.0

- Changed version number to new Boost.Math specific version now that we're in the modular Boost world.
- Added Bernoulli numbers, changed arbitrary precision tgamma/lgamma to use Sterling's approximation (from Nikhar Agrawal).
- Added first derivatives of the Bessel functions: cyl_bessel_j_prime, cyl_neumann_prime, cyl_bessel_i_prime, cyl_bessel_k_prime, sph_bessel_prime and sph_neumann_prime (from Anton Bikineev).
- Fixed buggy Student's t example code, along with docs for testing sample means for equivalence.
- Documented `max_iter` parameter in root finding code better, see #9225.
- Add option to explicitly enable/disable use of __float128 in constants code, see #9240.
- Cleaned up handling of negative values in Bessel I0 and I1 code (removed dead code), see #9512.
- Fixed handling of very small values passed to tgamma and lgamma so they don't generate spurious overflows (thanks to Rocco Romeo).
- #9672 PDF and CDF of a Laplace distribution throwing domain_error Random variate can now be infinite.
- Fixed several corner cases in rising_factorial, falling_factorial and tgamma_delta_ratio with thanks to Rocco Romeo.
- Fixed several corner cases in rising_factorial, falling_factorial and tgamma_delta_ratio (thanks to Rocco Romeo).
- Removed constant `pow23_four_minus_pi` whose value did not match the name (and was unused by Boost.Math), see #9712.

##### Boost-1.55

- Suppress numerous warnings (mostly from GCC-4.8 and MSVC) #8384, #8855, #9107, #9109..
- Fixed PGI compilation issue #8333.
- Fixed PGI constant value initialization issue that caused erf to generate incorrect results #8621.
- Prevent macro expansion of some C99 macros that are also C++ functions #8732 and #8733..
- Fixed Student's T distribution to behave correctly with huge degrees of freedom (larger than the largest representable integer) #8837.
- Make some core functions usable with `long double` even when the platform has no standard library `long double` support #8940.
- Fix error handling of distributions to catch invalid scale and location parameters when the random variable is infinite #9042 and #9126.
- Add workaround for broken <tuple> in Intel C++ 14 #9087.
- Improve consistency of argument reduction in the elliptic integrals #9104.
- Fix bug in inverse incomplete beta that results in cancellation errors when the beta function is really an arcsine or Student's T distribution.
- Fix issue in Bessel I and K function continued fractions that causes spurious over/underflow.

- Add improvement to non-central chi squared distribution quantile due to Thomas Luu, Fast and accurate parallel computation of quantile functions for random number generation, Doctoral Thesis 2016. Efficient and Accurate Parallel Inversion of the Gamma Distribution, Thomas Luu

  ##### Boost-1.54

- Major reorganization to incorporate other Boost.Math like Integer Utilities Integer Utilities (Greatest Common Divisor and Least Common Multiple), quaternions and octonions. Making new chapter headings.
- Added many references to Boost.Multiprecision and `cpp_dec_float_50` as an example of a User-defined Type (UDT).
- Added Clang to list of supported compilers.
- Fixed constants to use a thread-safe cache of computed values when used at arbitrary precision.
- Added finding zeros of Bessel functions `cyl_bessel_j_zero`, `cyl_neumann_zero`, `airy_ai_zero` and `airy_bi_zero`(by Christopher Kormanyos).
- More accuracy improvements to the Bessel J and Y functions from Rocco Romeo.
- Fixed nasty cyclic dependency bug that caused some headers to not compile #7999.
- Fixed bug in tgamma that caused spurious overflow for arguments between 142.5 and 143.
- Fixed bug in raise_rounding_error that caused it to return an incorrect result when throwing an exception is turned off #7905.
- Added minimal __float128 support.
- Fixed bug in edge-cases of poisson quantile #8308.
- Adjusted heuristics used in Halley iteration to cope with inverting the incomplete beta in tricky regions where the derivative is flatlining. Example is computing the quantile of the Fisher F distribution for probabilities smaller than machine epsilon. See ticket #8314.

##### Boost-1.53

- Fixed issues #7325, #7415 and #7416, #7183, #7649, #7694, #4445, #7492, #7891, #7429.
- Fixed mistake in calculating pooled standard deviation in two-sample students t example #7402.
- Improve complex acos/asin/atan, see #7290, #7291.
- Improve accuracy in some corner cases of cyl_bessel_j and gamma_p/gamma_q thanks to suggestions from Rocco Romeo.
- Improve accuracy of Bessel J and Y for integer orders thanks to suggestions from Rocco Romeo.

##### Boost-1.52

- Corrected moments for small degrees of freedom #7177 (reported by Thomas Mang).
- Added Airy functions and Jacobi Elliptic functions.
- Corrected failure to detect bad parameters in many distributions #6934 (reported by Florian Schoppmann) by adding a function check_out_of_range to test many possible bad parameters. This test revealed several distributions where the checks for bad parameters were ineffective, and these have been rectified.
- Fixed issue in Hankel functions that causes incorrect values to be returned for x < 0 and ν odd, see #7135.
- Fixed issues #6517, #6362, #7053, #2693, #6937, #7099.
- Permitted infinite degrees of freedom #7259 implemented using the normal distribution (requested by Thomas Mang).
- Much enhanced accuracy for large degrees of freedom ν and/or large non-centrality δ by switching to use the Students t distribution (or Normal distribution for infinite degrees of freedom) centered at delta, when δ / (4 * ν) < epsilon for the floating-point type in use. #7259. It was found that the incomplete beta was suffering from serious cancellation errors when degrees of freedom was very large. (That has now been fixed in our code, but any code based on Didonato and Morris's original papers (probably every implementation out there actually) will have the same issue).

##### Boost-1.51

See Boost-1.52 - some items were added but not listed in time for the release.

##### Boost-1.50

- Promoted math constants to be 1st class citizens, including convenient access to the most widely used built-in float, double, long double via three namespaces.
- Added the Owen's T function and Skew Normal distribution written by Benjamin Sobotta: see Owens T and skew_normal_distrib.
- Added Hankel functions cyl_hankel_1, cyl_hankel_2, sph_hankel_1 and sph_hankel_2.
- Corrected issue #6627 nonfinite_num_put formatting of 0.0 is incorrect based on a patch submitted by K R Walker.
- Changed constant initialization mechanism so that it is thread safe even for user-defined types, also so that user defined types get the full precision of the constant, even when `long double` does not. So for example 128-bit rational approximations will work with UDT's and do the right thing, even though `long double` may be only 64 or 80 bits.
- Fixed issue in `bessel_jy` which causes Y8.5(4π) to yield a NaN.

##### Boost-1.49

- Deprecated wrongly named `twothirds` math constant in favour of `two_thirds` (with underscore separator). (issue #6199).
- Refactored test data and some special function code to improve support for arbitrary precision and/or expression-template-enabled types.
- Added new faster zeta function evaluation method.

Fixed issues:

- Corrected CDF complement for Laplace distribution (issue #6151).
- Corrected branch cuts on the complex inverse trig functions, to handle signed zeros (issue #6171).
- Fixed bug in `bessel_yn` which caused incorrect overflow errors to be raised for negative n (issue #6367).
- Also fixed minor/cosmetic/configuration issues #6120, #6191, #5982, #6130, #6234, #6307, #6192.

##### Boost-1.48

- Added new series evaluation methods to the cyclic Bessel I, J, K and Y functions. Also taken great care to avoid spurious over and underflow of these functions. Fixes issue #5560
- Added an example of using Inverse Chi-Squared distribution for Bayesian statistics, provided by Thomas Mang.
- Added tests to use improved version of lexical_cast which handles C99 nonfinites without using globale facets.
- Corrected wrong out-of-bound uniform distribution CDF complement values #5733.
- Enabled long double support on OpenBSD (issue #6014).
- Changed nextafter and related functions to behave in the same way as other implementations - so that nextafter(+INF, 0) is a finite value (issue #5832).
- Changed tuple include configuration to fix issue when using in conjunction with Boost.Tr1 (issue #5934).
- Changed class eps_tolerance to behave correctly when both ends of the range are zero (issue #6001).
- Fixed missing include guards on prime.hpp (issue #5927).
- Removed unused/undocumented constants from constants.hpp (issue #5982).
- Fixed missing std:: prefix in nonfinite_num_facets.hpp (issue #5914).
- Minor patches for Cray compiler compatibility.

##### Boost-1.47

- Added changesign function to sign.hpp to facilitate addition of nonfinite facets.
- Addition of nonfinite facets from Johan Rade, with tests, examples of use for C99 format infinity and NaN, and documentation.
- Added tests and documentation of changesign from Johan Rade.

##### Boost-1.46.1

- Fixed issues #5095, #5113.

##### Boost-1.46.0

- Added Wald, Inverse Gaussian and geometric distributions.
- Added information about configuration macros.
- Added support for mpreal as a real-numbered type.

##### Boost-1.45.0

- Added warnings about potential ambiguity with std random library in distribution and function names.
- Added inverse gamma distribution and inverse chi_square and scaled inverse chi_square.
- Editorial revision of documentation, and added FAQ.

##### Boost-1.44.0

- Fixed incorrect range and support for Rayleigh distribution.
- 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.

##### Boost-1.41.0

- Significantly improved performance for the incomplete gamma function and its inverse.

##### Boost-1.40.0

- Added support for MPFR as a bignum type.
- Added some full specializations of the policy classes to reduce compile times.
- Added logistic and hypergeometric distributions, from Gautam Sewani's Google Summer of Code project.
- Added Laplace distribution submitted by Thijs van den Berg.
- Updated performance test code to include new distributions, and improved the performance of the non-central distributions.
- Added SSE2 optimised Lanczos approximation code, from Gautam Sewani's Google Summer of Code project.
- Fixed bug in cyl_bessel_i that used an incorrect approximation for ν = 0.5, also effects the non-central Chi Square Distribution when ν = 3, see bug report #2877.
- Fixed minor bugs #2873.

##### Boost-1.38.0

- Added Johan Råde's optimised floating point classification routines.
- Fixed code so that it compiles in GCC's -pedantic mode (bug report #1451).

##### Boost-1.37.0

- Improved accuracy and testing of the inverse hypergeometric functions.

##### Boost-1.36.0

- Added Noncentral Chi Squared Distribution.
- Added Noncentral Beta Distribution.
- Added Noncentral F Distribution.
- Added Noncentral T Distribution.
- Added Exponential Integral Functions.
- Added Zeta Function.
- Added Rounding and Truncation functions.
- Added Compile time powers of runtime bases.
- Added SSE2 optimizations for Lanczos evaluation.

##### Boost-1.35.0: Post Review First Official Release

- Added Policy based framework that allows fine grained control over function behaviour.
- Breaking change: Changed default behaviour for domain, pole and overflow errors to throw an exception (based on review feedback), this behaviour can be customised using Policy's.
- Breaking change: Changed exception thrown when an internal evaluation error occurs to boost::math::evaluation_error.
- Breaking change: 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 Policy's.
- Polynomial/rational function evaluation is now customisable and hopefully faster than before.
- Added performance test program.

##### Milestone 4: Second Review Candidate (1st March 2007)

- Moved Xiaogang Zhang's Bessel Functions code into the library, and brought them into line with the rest of the code.
- Added C# "Distribution Explorer" demo application.

##### Milestone 3: First Review Candidate (31st Dec 2006)

- Implemented the main probability distribution and density functions.
- Implemented digamma.
- Added more factorial functions.
- Implemented the Hermite, Legendre and Laguerre polynomials plus the spherical harmonic functions from TR1.
- Moved Xiaogang Zhang's elliptic integral code into the library, and brought them into line with the rest of the code.
- Moved Hubert Holin's existing Boost.Math special functions into this library and brought them into line with the rest of the code.

##### Milestone 2: Released September 10th 2006

- Implement preview release of the statistical distributions.
- Added statistical distributions tutorial.
- Implemented root finding algorithms.
- Implemented the inverses of the incomplete gamma and beta functions.
- Rewrite erf/erfc as rational approximations (valid to 128-bit precision).
- 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.
- Improved lgamma near 1 and 2 (rational approximations).
- Improved erf/erfc inverses (rational approximations).
- Implemented Rational function generation (the Remez method).

##### Milestone 1: Released March 31st 2006

- Implement gamma/beta/erf functions along with their incomplete counterparts.
- Generate high quality test data, against which future improvements can be judged.
- Provide tools for the evaluation of infinite series, continued fractions, and rational functions.
- Provide tools for testing against tabulated test data, and collecting statistics on error rates.
- Provide sufficient docs for people to be able to find their way around the library.

SVN Revisions:

Sandbox and trunk last synchonised at revision: .