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.
-
Investigate Didonato and Morris' asymptotic expansion for large a and b
(medium priority).
-
Investigate whether we can skip iteration altogether if the first approximation
is good enough (Medium Priority).
-
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).
-
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).
-
Carlson's algorithms (mainly RJ) are somewhat prone to internal overflow/underflow
when the arguments are very large or small. The homogeneity relations:
RF(ka,
kb, kc) = k-1/2 RF(a, b, c)
and
RJ(ka, kb, kc, kr) = k-3/2 RJ(a, b, c, r)
could
be used to sidestep trouble here: provided the problem domains can be accurately
identified. (Medium Priority).
-
Carlson's RC 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 RG? 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(φ, k), Z(β, k), Λ0(β, 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).
-
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).
-
Student's t Perhaps switch to normal distribution as a better approximation
for very large degrees of freedom?