[section:issues Known Issues, and Todo List]

This section lists those issues that are known about.

Predominantly this is a TODO list, or a list of possible
future enhancements.  Items labled "High Priority" effect
the proper functioning of the component, and should be fixed
as soon as possible.  Items labled "Medium Priority" are
desirable enhancements, often pertaining to the performance
of the component, but do not effect it's accuracy or functionality.
Items labled "Low Priority" should probably be investigated at
some point.  Such classifications are obviously highly subjective.

If you don't see a component listed here, then we don't have any known 
issues with it.

[h4 tgamma]

* Can the __lanczos be optimized any further?  (low priority)

[h4 Incomplete Beta]

* Investigate Didonato and Morris' asymptotic expansion for large a and b 
(medium priority).

[h4 Inverse Gamma]

* Investigate whether we can skip iteration altogether if the first approximation
is good enough (Medium Priority).

[h4 Polynomials]

* The Legendre and Laguerre Polynomials have surprisingly different error
rates on different platforms, considering they are evaluated with only
basic arithmetic operations.  Maybe this is telling us something, or maybe not
(Low Priority).

[h4 Elliptic Integrals]

* Carlson's algorithms are essentially unchanged from Xiaogang Zhang's
Google Summer of Code student project, and are based on Carlson's
original papers.  However, Carlson has revised his algorithms since then
(refer to the references in the elliptic integral docs for a list), to
improve performance and accuracy, we may be able to take advantage
of these improvements too (Low Priority).
* [para Carlson's algorithms (mainly R[sub J]) are somewhat prone to
internal overflow/underflow when the arguments are very large or small.
The homogeneity relations:]
[para R[sub F](ka, kb, kc) = k[super -1/2] R[sub F](a, b, c)]
[para and]
[para R[sub J](ka, kb, kc, kr) = k[super -3/2] R[sub J](a, b, c, r)]
[para could be used to sidestep trouble here: provided the problem domains
can be accurately identified. (Medium Priority).]
* Carlson's R[sub C] can be reduced to elementary funtions (asin and log),
would it be more efficient evaluated this way, rather than by Carlson's
algorithms? (Low Priority).
* Should we add an implementation of Carlson's R[sub G]?  It's not
required for the Legendre form integrals, but some people may find it 
useful (Low Priority).
* There are a several other integrals: D([phi], k), Z([beta], k), 
[Lambda][sub 0]([beta], k) and Bulirsch's ['el] functions that could
be implemented using Carlson's integrals (Low Priority).
* The integrals K(k) and E(k) could be implemented using rational
approximations (both for efficiency and accuracy), 
assuming we can find them. (Medium Priority).
* There is a sub-domain of __ellint_3 that is unimplemented (see the docs
for details), currently
it's not clear how to solve this issue, or if it's ever likely
to be an real problem in practice - especially as most other implementations
don't support this domain either (Medium Priority).

[h4 Inverse Hyperbolic Functions]

* These functions are inherited from previous Boost versions,
before __log1p became widely available.  Would they be better expressed
in terms of this function?  This is probably only an issue
for very high precision types (Low Priority).

[h4 Statistical distributions]

* Student's t Perhaps switch to normal distribution as a better approximation for very large degrees of freedom?

[h4 Feature Requests]

The following table lists distributions that are found in other packages
but which are not yet present here, the more frequently the distribution
is found, the higher the priority for implementing it:

[table
[[Distribution][R][Mathematica 6][NIST][Regress+][Matlab]]

[/3 votes:]
[[Inverse Gausian / Inverse Normal][-][X][-][X][X]]
[[Geometric][X][X][-][-][X]]

[/2 votes:]
[[Multinomial][X][-][-][-][X]]
[[Tukey Lambda][X][-][X][-][-]]
[[Half Normal / Folded Normal][-][X][-][X][-]]
[[Chi][-][X][-][X][-]]
[[Gumbel][-][X][-][X][-]]
[[Discrete Uniform][-][X][-][-][X]]
[[Log Series][-][X][-][X][-]]
[[Nakagami (generalised Chi)][-][-][-][X][X]]

[/1 vote:]
[[Log Logistic][-][-][-][-][X]]
[[Tukey (Studentized range)][X][-][-][-][-]]
[[Wilcoxon rank sum][X][-][-][-][-]]
[[Wincoxon signed rank][X][-][-][-][-]]
[[Non-central Beta][X][-][-][-][-]]
[[Laplace][-][X][-][-][-]]
[[Maxwell][-][X][-][-][-]]
[[Beta-Binomial][-][X][-][-][-]]
[[Beta-negative Binomial][-][X][-][-][-]]
[[Zipf][-][X][-][-][-]]
[[Birnbaum-Saunders / Fatigue Life][-][-][X][-][-]]
[[Double Exponential][-][-][X][-][-]]
[[Power Normal][-][-][X][-][-]]
[[Power Lognormal][-][-][X][-][-]]
[[Cosine][-][-][-][X][-]]
[[Double Gamma][-][-][-][X][-]]
[[Double Weibul][-][-][-][X][-]]
[[Hyperbolic Secant][-][-][-][X][-]]
[[Semicircular][-][-][-][X][-]]
[[Bradford][-][-][-][X][-]]
[[Birr / Fisk][-][-][-][X][-]]
[[Reciprocal][-][-][-][X][-]]
]

Also asked for more than once:

* Add support for interpolated distributions, possibly combine with numeric 
integration and differentiation.
* Add support for bivariate and multivariate distributions: most especially the normal.
* Add support for the log of the cdf and pdf: this is mainly a performance optimisation since we can avoid
some special function calls for some distributions by returning the log of the result.

[endsect][/section:issues Known Issues, and Todo List]

[/ 
  Copyright 2006 John Maddock and Paul A. Bristow.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]
