Others have suggested this in the past.  There are/were a few major things holding it up:

1.  While I feel that dstats.summary has about the right level of complexity/engineering for a third-party statistics lib, I'm a little worried that it's overengineered for a standard library module.

2.  The brokenness of alias this.  I designed the hierarchy of different summary-calculating output ranges to rely heavily on alias this.  The relevant bugs may have been fixed recently, in 2.050.  I'll have to check.

3.  A bunch of stuff uses TempAlloc for its temporary scratch space.  I'd like to keep it that way for efficiency, but it's hard to put TempAlloc into Phobos given that the issue of GC scanning still isn't solved.

One solution to these problems is to just move the more basic stuff over to Phobos and publicly import it from dstats.summary.

On 11/18/2010 8:00 AM, SHOO wrote:
BTW, I want statistical functions in Phobos. For example, dstats.summary looks good. Is there the plan to introduce such functions?

--
SHOO

(2010/11/18 6:09), Don Clugston 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.

(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


_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to