On Dec 5, 2014, at 5:29 AM, Steffen Märcker <[hidden email]
> are you aware of any public available libraries for
> a) efficient graph algorithms,
> b) matrix operations with sparse matrices?
Maybe someone will point out some useful tools here but, unless you’re working with small matrices, I doubt you’ll be happy with Smalltalk’s performance. There is Didier Besset’s library (Numerical Methods in the public StORE repo) but it doesn’t include sparse matrix support. It isn’t difficult to use many of the C numeric libraries. I have an ExternalInterface that uses a few functions from Numerical Recipes in C. Normally getting this to work is a no-brainer (albeit more work than simply using someone else’s classes). For example, I have a class NumericalRecipesExternalInterface (subclass of ExternalInterface) with:
four1: data nn: nn isign: isign
<C: void four1(double *data, unsigned long nn, int isign)>
^self externalAccessFailedWith: _errorCode
The only challenge is making sure that the array you pass in for the data parameter is the appropriate pointer type. I have a utility class that takes care of this by checking the type and copying the data if needed. I followed the FloatArray example in NumericCollections (also in the public store repo) to avoid copying in many cases. The DLLandCConnectGuide.pdf covers this pretty well. I only wish that the automatic generation of the ExternalInterface functions worked better. This part can get tedious if you’re calling a lot of C functions.
In your case you could consider ACML or BLASS/LAPACK. It wouldn’t be much work to get this going if you only need a few functions.
Sorry I couldn’t be more help…
vwnc mailing list