This is very experimental (start of) interface to Lapack. Before trying you need to have Lapack installed -- if you use binary package make sure you have "developement" version. 1) Check that you can use Lapack from C code. Try to compile the 'tsdgees.c' using command line like: gcc -Wall tsdgees.c -L... -llapack -l.... .... where after '-L' you may need to put directory where your Lapack library lives and after '-l' you have auxilary libraries needed by Lapack. On my machine I needed '-lf77blas -lcblas -latlas' but what gets here depends on how your Lapack was compiled. If compilation goes fine you should get 'a.out' binary in current directory. Running it should produce result like: w[0] = (0.101021, i*0.000000), w[1] = (9.898979, i*0.000000) Note: if Lapack is in some nonstandard location you may need to run 'a.out' like: (export LD_LIBRARY_PATH=/path/to/lapack/dir; ./a.out) If this step does not work, there is no hope that the interface will work. 2) Compile interface library (ATM this is single file which contains a few functions): gcc -Wall -fPIC -shared -o eig.so eig.c -L... -llapack -l... The '-L...' and '-l...' options are the ones you found in step 1. 3) Edit the provide 'neig0.lisp' file replacing '/path/to/lapack/dir/' by real path to Lapack directory. 4) Start up FriCAS. Only sbcl based FriCAS will work. Type )lisp (load "neig0.lisp") )lisp (load (compile-file "neig.lisp")) )compile numeig.spad 5) Now you should be able to compute eigenvalues of DoubleFloat matrix like below: (12) -> am := matrix([[3.0, 4.0], [5.0, 7.0]])$DoubleFloatMatrix +3.0 4.0+ (12) | | +5.0 7.0+ Type: DoubleFloatMatrix Time: 0.001 (IN) + 0.01 (OT) = 0.01 sec (13) -> eigenvalues(am) (13) [0.10102051443364424,9.898979485566356] Type: Vector(Complex(DoubleFloat)) Time: 0.002 (OT) = 0.002 sec