I have a pile of functions I wrote for Tango, most of which are part of C99. I'd like to move them into Phobos. In the process, I'd like to clean up a few things in std.math.
The main idea is that a new module, std.mathspecial, will contain mathematical Special Functions. In the long term, there could be quite a large number of these, but I think it will still be OK to have all of them declared in a single module. The implementations of these functions will mostly reside in std.internal.math.XXX. In many cases, the implementations are quite large. std.math will be restricted to low-level operations and "high school" mathematics. (1) Add two necessary functions to std.math: // Rounds x to the nearest int or long using the currently selected rounding mode // (MUCH faster than cast(int)). int rndint(real x) long rndlong(real x) (2) Delete etc.gamma (3) Create a new module std.mathspecial. Move the following functions from std.math into std.mathspecial: erf() erfc() lgamma() -----> name changes to logGamma(real x) tgamma() ---> name changes to gamma(real x). BTW The 't' in the C name exists for extremely silly historical reasons. std.math will retain alias for these functions, before they are eventually deprecated. (4) Add implementations of those functions into std.internal.math.gammafunction Also add: real sgnGamma(real x); // the sign of gamma(x), always used with logGamma. real digamma(x); // The digamma function real beta(real x, real y); // the beta function I'm not sure about the naming for the other functions. I will leave that for a later discussion. They include: * Distribution functions for the normal, F, chi-square, students-T, gamma, beta, poisson, binomial, and negative binomial distributions. * Cylindrical Bessel functions real cylBessel_j0(real x) real cylBessel_y0(real x) real cylBessel_j1(real x) real cylBessel_y1(real x) real cylBessel_jn(int n, real x ) real cylBessel_yn(int n, real x) _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
