FFI problem: too many arguments

nicolas cellier ncellier at ifrance.com
Wed Feb 15 23:44:19 UTC 2006


I am trying to interface LAPACK with squeak (Smallapack).
Unfortunately, some methods will have too many arguments...

I do not feel like hand writing wrapper functions to group several arguments 
in an array, it's boring...

Moreover, i would have to write this in FORTRAN, compile and link: that's 
against my starting principle that a user come along with its pre-compiled 
LAPACK library, and then all Smallapack code is Smalltalk.

Number of arguments is probably far enough for true Smalltalk code.
But very short for the external world.
I do not experience the same limit in VW (it must be 255 i think).
Could the limit be augmented ? Anyone has a better idea ?

--------------------------------
Here is an example (a usefull one) that fails:

xgeevWithjobvl: jobvl jobvr: jobvr n: n a: a lda: lda wr: wr wi: wi vl: vl 
ldvl: ldvl vr: vr ldvr: ldvr work: work lwork: lwork info: info length: 
lengthOfjobvl length: lengthOfjobvr 
 "
*  Purpose
*  =======
*  SGEEV computes for an N-by-N real nonsymmetric matrix A, the
*  eigenvalues and, optionally, the left and/or right eigenvectors.
*  The right eigenvector v(j) of A satisfies
*                   A * v(j) = lambda(j) * v(j)
*  where lambda(j) is its eigenvalue.
*  The left eigenvector u(j) of A satisfies
*                u(j)**H * A = lambda(j) * u(j)**H
*  where u(j)**H denotes the conjugate transpose of u(j).
*  The computed eigenvectors are normalized to have Euclidean norm
*  equal to 1 and largest component real.
"

 <cdecl: long 'sgeev_'( char *   char *   long * float *  * float *  * float *  
* float *  * float *  *   long *   long   long )>
 ^self externalCallFailed




More information about the Squeak-dev mailing list