www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Numpy Random Number Generators

reply dsimcha <dsimcha yahoo.com> writes:
I've ported a large portion of the Numpy random number generation library to
D.  (I excluded the uniform random number generators because Phobos and Tango
already have good implementations of these, and a few distributions because
they were obscure and hard to test properly.  I may add the obscure
probability distributions later.)

The results appear pretty good  (I added unit tests that make sure the results
are sane while I was at it).

The module is licensed under the BSD license.  The code is available at:
http://dsource.org/projects/dstats/browser/trunk/random.d

Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
although there's not much there.  If you understand the probability
distribution you're trying to sample from, it's pretty self-explanatory.  If
not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
better choice.
Apr 30 2009
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
dsimcha wrote:
 I've ported a large portion of the Numpy random number generation library to
 D.  (I excluded the uniform random number generators because Phobos and Tango
 already have good implementations of these, and a few distributions because
 they were obscure and hard to test properly.  I may add the obscure
 probability distributions later.)
 
 The results appear pretty good  (I added unit tests that make sure the results
 are sane while I was at it).
 
 The module is licensed under the BSD license.  The code is available at:
 http://dsource.org/projects/dstats/browser/trunk/random.d
 
 Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
 although there's not much there.  If you understand the probability
 distribution you're trying to sample from, it's pretty self-explanatory.  If
 not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
 better choice.
 
These look great. Could I convince you to contribute them to Phobos? Andrei
Apr 30 2009
parent dsimcha <dsimcha yahoo.com> writes:
== Quote from Andrei Alexandrescu (SeeWebsiteForEmail erdani.org)'s article
 dsimcha wrote:
 I've ported a large portion of the Numpy random number generation library to
 D.  (I excluded the uniform random number generators because Phobos and Tango
 already have good implementations of these, and a few distributions because
 they were obscure and hard to test properly.  I may add the obscure
 probability distributions later.)

 The results appear pretty good  (I added unit tests that make sure the results
 are sane while I was at it).

 The module is licensed under the BSD license.  The code is available at:
 http://dsource.org/projects/dstats/browser/trunk/random.d

 Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
 although there's not much there.  If you understand the probability
 distribution you're trying to sample from, it's pretty self-explanatory.  If
 not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
 better choice.
These look great. Could I convince you to contribute them to Phobos? Andrei
I would certainly be willing to grant permission for these to be included in Phobos. The only problem is the original code that I ported is BSD licensed, meaning you have to include all the relevant disclaimers. I place no additional restrictions on it, but for Phobos, the BSD license's requirements might be too restrictive.
May 01 2009
prev sibling parent reply Pablo Ripolles <in-call gmx.net> writes:
dsimcha Wrote:

 == Quote from Andrei Alexandrescu (SeeWebsiteForEmail erdani.org)'s article
 dsimcha wrote:
 I've ported a large portion of the Numpy random number generation library to
 D.  (I excluded the uniform random number generators because Phobos and Tango
 already have good implementations of these, and a few distributions because
 they were obscure and hard to test properly.  I may add the obscure
 probability distributions later.)

 The results appear pretty good  (I added unit tests that make sure the results
 are sane while I was at it).

 The module is licensed under the BSD license.  The code is available at:
 http://dsource.org/projects/dstats/browser/trunk/random.d

 Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
 although there's not much there.  If you understand the probability
 distribution you're trying to sample from, it's pretty self-explanatory.  If
 not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
 better choice.
These look great. Could I convince you to contribute them to Phobos? Andrei
I would certainly be willing to grant permission for these to be included in Phobos. The only problem is the original code that I ported is BSD licensed, meaning you have to include all the relevant disclaimers.
Hello, I might be wrong but, as far as I know, the licenses apply to code and not to algorithms. That is, once you jump out of the original implementation (the original codes are not in d) and you re-implement the algorithms in another language (in this case d) the work is not, properly speaking, a derived work. I insist, I'm not a lawyer and I'm not 100% sure but that could be checked. Cheers!
May 01 2009
parent reply dsimcha <dsimcha yahoo.com> writes:
== Quote from Pablo Ripolles (in-call gmx.net)'s article
 dsimcha Wrote:
 == Quote from Andrei Alexandrescu (SeeWebsiteForEmail erdani.org)'s article
 dsimcha wrote:
 I've ported a large portion of the Numpy random number generation library to
 D.  (I excluded the uniform random number generators because Phobos and Tango
 already have good implementations of these, and a few distributions because
 they were obscure and hard to test properly.  I may add the obscure
 probability distributions later.)

 The results appear pretty good  (I added unit tests that make sure the results
 are sane while I was at it).

 The module is licensed under the BSD license.  The code is available at:
 http://dsource.org/projects/dstats/browser/trunk/random.d

 Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
 although there's not much there.  If you understand the probability
 distribution you're trying to sample from, it's pretty self-explanatory.  If
 not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
 better choice.
These look great. Could I convince you to contribute them to Phobos? Andrei
I would certainly be willing to grant permission for these to be included in Phobos. The only problem is the original code that I ported is BSD licensed, meaning you have to include all the relevant disclaimers.
Hello, I might be wrong but, as far as I know, the licenses apply to code and
not to algorithms. That is, once you jump out of the original implementation (the original codes are not in d) and you re-implement the algorithms in another language (in this case d) the work is not, properly speaking, a derived work. I insist, I'm not a lawyer and I'm not 100% sure but that could be checked.
 Cheers!
IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to get it to compile and then did some statistical tests to make sure the distributions were still reproduced faithfully. I didn't even change any of the variable names or code structure or anything in most cases. It's a straight translation, not a real reimplementation. I don't see how something like this could possibly *not* be considered a derivative work, and I think the people who wrote the original lib definitely deserve to be given credit. It's just that some of the BSD legalese is a little bit of a PITA for code that's in a standard lib.
May 01 2009
next sibling parent Pablo Ripolles <in-call gmx.net> writes:
dsimcha Wrote:

 == Quote from Pablo Ripolles (in-call gmx.net)'s article
 dsimcha Wrote:
 == Quote from Andrei Alexandrescu (SeeWebsiteForEmail erdani.org)'s article
 dsimcha wrote:
 I've ported a large portion of the Numpy random number generation library to
 D.  (I excluded the uniform random number generators because Phobos and Tango
 already have good implementations of these, and a few distributions because
 they were obscure and hard to test properly.  I may add the obscure
 probability distributions later.)

 The results appear pretty good  (I added unit tests that make sure the results
 are sane while I was at it).

 The module is licensed under the BSD license.  The code is available at:
 http://dsource.org/projects/dstats/browser/trunk/random.d

 Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
 although there's not much there.  If you understand the probability
 distribution you're trying to sample from, it's pretty self-explanatory.  If
 not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
 better choice.
These look great. Could I convince you to contribute them to Phobos? Andrei
I would certainly be willing to grant permission for these to be included in Phobos. The only problem is the original code that I ported is BSD licensed, meaning you have to include all the relevant disclaimers.
Hello, I might be wrong but, as far as I know, the licenses apply to code and
not to algorithms. That is, once you jump out of the original implementation (the original codes are not in d) and you re-implement the algorithms in another language (in this case d) the work is not, properly speaking, a derived work. I insist, I'm not a lawyer and I'm not 100% sure but that could be checked.
 Cheers!
IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to get it to compile and then did some statistical tests to make sure the distributions were still reproduced faithfully. I didn't even change any of the variable names or code structure or anything in most cases. It's a straight translation, not a real reimplementation. I don't see how something like this could possibly *not* be considered a derivative work, and I think the people who wrote the original lib definitely deserve to be given credit. It's just that some of the BSD legalese is a little bit of a PITA for code that's in a standard lib.
yeah, that makes sense. cheers!
May 01 2009
prev sibling parent reply Michel Fortin <michel.fortin michelf.com> writes:
On 2009-05-01 15:10:50 -0400, dsimcha <dsimcha yahoo.com> said:

 IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to 
 get it to
 compile and then did some statistical tests to make sure the distributions were
 still reproduced faithfully.  I didn't even change any of the variable names or
 code structure or anything in most cases.  It's a straight translation, 
 not a real
 reimplementation.  I don't see how something like this could possibly *not* be
 considered a derivative work, and I think the people who wrote the original lib
 definitely deserve to be given credit.  It's just that some of the BSD 
 legalese is
 a little bit of a PITA for code that's in a standard lib.
You can always ask for permission at the source. You never know, they may agree to allow you to put your D port under a license that'd work for Phobos. As long as there isn't too many copyright holders, it might work. -- Michel Fortin michel.fortin michelf.com http://michelf.com/
May 02 2009
parent Fawzi Mohamed <fmohamed mac.com> writes:
On 2009-05-02 12:36:16 +0200, Michel Fortin <michel.fortin michelf.com> said:

 On 2009-05-01 15:10:50 -0400, dsimcha <dsimcha yahoo.com> said:
 
 IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to 
 get it to
 compile and then did some statistical tests to make sure the distributions were
 still reproduced faithfully.  I didn't even change any of the variable names or
 code structure or anything in most cases.  It's a straight translation, 
 not a real
 reimplementation.  I don't see how something like this could possibly *not* be
 considered a derivative work, and I think the people who wrote the original lib
 definitely deserve to be given credit.  It's just that some of the BSD 
 legalese is
 a little bit of a PITA for code that's in a standard lib.
You can always ask for permission at the source. You never know, they may agree to allow you to put your D port under a license that'd work for Phobos. As long as there isn't too many copyright holders, it might work.
otherwise adding the missing distributions (gaussian, exponential & gamma are already there, and done efficiently) to tango.math.random.Random would also be welcomed. Fawzi
May 12 2009