next up previous
Next: Shared Libraries Up: Recent Developments Previous: Recent Developments

BLAS

Direct access to the basic linear algebra subroutines has been added to allow efficient numerical algorithms to be programmed in Lisp. This also required the addition of typed vectors.

As an example, if we construct two typed vectors of type C double

(def x (coerce #(1 2 3) '(vector c-double)))
(def y (copy-vector x))
then we can call the BLAS ddot and daxpy routines as
> (blas-ddot 3 x 0 1 x 0 1)
14.0
> (blas-daxpy 3 4 x 0 1 y 0 1)
NIL
> y
#(5.0 10.0 15.0)
All the BLAS routines represent vector arguments by a pointer and a step size. The Lisp interface uses the data, an offset from the start of the data, and a step size. Most of level 1 and some of levels 2 and 3 are supported.

This interface was developed before the package system was complete. It will most likely be modified to use a BLAS package, so that the ddot routine can be accessed as blas:ddot.



Luke Tierney
5/27/1998