(clines " extern double ddot_(int *,double *,int *,double *,int *); static double ddot(object x,object y,int n) { int one=1; return ddot_(&n,x->lfa.lfa_self,&one,y->lfa.lfa_self,&one); } extern int dgemm_(char *transa, char *transb, int *m, int * n, int *k, double *alpha, double *a, int *lda, double *b, int *ldb, double *beta, double *c__, int *ldc); static void dgemm(object x,object y,object z, int n){ char ptrans = 'N'; double alpha = 1; double beta = 0; dgemm_( &ptrans, &ptrans, &n, &n, &n, &alpha, y->lfa.lfa_self, &n, x->lfa.lfa_self, &n, &beta, z->lfa.lfa_self, &n); } ") (defentry %ddot (object object int) (double "ddot")) (defun ddot (x y) (unless (and (typep x '(vector long-float)) (typep y '(vector long-float))) (error "Bad argument types ~a ~a~%" (type-of x) (type-of y))) (%ddot x y (min (length x) (length y)))) (defentry %dgemm (object object object int) (void "dgemm")) (defun dgemm (x y z) (unless (and (typep x '(array long-float)) (typep y '(array long-float)) (typep z '(array long-float)) (eql 2 (array-rank x)) (eql 2 (array-rank y)) (eql 2 (array-rank z))) (error "Bad argument types ~a ~a~%" (type-of x) (type-of y))) (%dgemm x y z (array-dimension x 0)))