SciD (Was: Real Close to the Machine: Floating Point in D )

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Thu May 14 10:31:20 PDT 2009


dsimcha wrote:
> == Quote from Lars T. Kyllingstad (public at 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



More information about the Digitalmars-d mailing list