dsimcha wrote:
== Quote from Lars T. Kyllingstad (pub...@kyllingen.nospamnet)'s article
In my numerics library (which I've, in all modesty, named SciD) I'm
converging on a package structure I'm fairly pleased with:
scid.core:
     Internal modules, such as scid.core.traits, scid.core.tests,
     scid.core.exception, etc.
scid.ports:
     Here I put ports of various packages from NETLIB and other
     sources. Examples of subpackages are scid.minpack,
     scid.quadpack, etc. These have, for the most part, rather
     nasty APIs, and should normally not be used directly.
scid:
     In the root package I've placed the most ubiquitous modules,
     i.e. scid.vector, scid.transformation, etc.
scid.calculus
     scid.calculus.differentiation
     scid.calculus.integration
     ...
scid.linalg
     ...
scid.nonlinear
     ...
     Specific problem areas get their own subpackages. At the moment
     these mostly just contain nicer interfaces to the routines in
     scid.ports -- "drivers", if you will.

Wait a minute, you have a numerics library for D that does all this stuff?  I'd
like to hear more about this.  If/when it's in a usable state, please put it up 
on
dsource and post it to http://prowiki.org/wiki4d/wiki.cgi?ScientificLibraries.


It's in a usable, but very incomplete state. I fully intend to publish it on dsource at some point, but there are a couple of reasons why I haven't done it yet:

1. I don't want to burden dsource with yet another dead project with some half-baked modules in it. I haven't got a lot of time to work on it, and mostly I just add things as I need them in my work.

2. I have to figure out some licensing issues. Some algorithms are clearly public domain, while some things -- like code I've ripped off Numerical Recipes, for instance -- is more questionable. (Although the NR guys do quite a lot of off-ripping themselves. ;)

3. The API is still very much in a state of flux, and I need to decide how I want it. Here, I feel I'm making some progress now. After a long period of doing analytical calculations by hand, I'm now back on the numerics bandwagon and have started actually using my library again. The best way to judge whether an API is usable is to actually use it. ;)


If you're interested, this is what I have:

Integration:
   - Five of the QUADPACK routines (qk, qng, qag, qags, qagi)
   - Mori's Double Exponential algorithm

Differentiation:
   - Forward/backward/symmetric difference
   - Ridder's extrapolation method
   - A home-brewed templated function for doing higher-order
     derivatives by symmetric difference
   - Jacobian matrix by forward difference (from MINPACK)

Nonlinear equation solvers:
   - bisection, secant, false position, and Ridders' method

Nonlinear system solvers:
   - MINPACK's variant of the Powell Hybrid algorithm
   - The Newton-Raphson algorithm


I'm hoping someone will create a linear algebra library for D2 soon. I know very little about that stuff. At the very least, I think Phobos should have some basic vector/matrix functionality. I've looked at Don's BLADE library; it looks pretty awesome. Here's to hoping he finds the time and inspiration to continue work on it again. :)

-Lars

Reply via email to