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.