On Wed, Nov 17, 2010 at 4:09 PM, Don Clugston <[email protected]>wrote:
> 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. > Vote++. I think Phobos could use more math stuff. > > (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)). > Why isn't this the default, i.e. why doesn't cast(int) do this? > int rndint(real x) > long rndlong(real x) > > (2) Delete etc.gamma > Good, didn't know it was there. > > (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. > Vote++. I'm sick of maintaining the D2 ports of this stuff myself for dstats. It also makes the licensing status of dstats slightly screwy since I initially got them from Tango. (I was smart enough, though, to clearly mark the tainted parts for future removal.) > * 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) > I've got no clue what these even are, but given that they're just math functions that are orthogonal to the rest of the standard library, I don't see any harm in adding them.
_______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
