diff --git a/linear-algebra/blas1.lisp b/linear-algebra/blas1.lisp index 97d31583e39735116ec2a98fd7fdf00ceb75a928..6a29b1c4a1500714bcbeacde07b667605448b911 100644 --- a/linear-algebra/blas1.lisp +++ b/linear-algebra/blas1.lisp @@ -1,6 +1,6 @@ ;; BLAS level 1, Vector operations ;; Liam Healy, Wed Apr 26 2006 - 15:23 -;; Time-stamp: <2008-07-17 23:00:36EDT blas1.lisp> +;; Time-stamp: <2008-07-20 22:33:51EDT blas1.lisp> ;; $Id$ (in-package :gsl) @@ -8,7 +8,8 @@ ;;; new ffa (defmfun dot ((vec1 vector) (vec2 vector)) ("gsl_blas" :type "dot" :suffix) - (((mpointer vec1) :pointer) ((mpointer vec2) :pointer) (result :float)) + (((mpointer vec1) :pointer) ((mpointer vec2) :pointer) + (result :element-c-type)) :definition :generic :element-types :float-complex :documentation "Dot, or inner, product between vectors.") @@ -23,6 +24,24 @@ ;;; Not porting gsl_blas_dsdot, stupid. +(defmfun cdot ((x vector) (y vector)) + ("gsl_blas" :type "dotc") + (((mpointer x) :pointer) ((mpointer y) :pointer) + (result :element-c-type)) + :definition :generic + :element-types :complex + :inputs (x y) + :documentation + "The complex conjugate scalar product x^H y for the vectors.") + +(defmfun 2norm (vec1 vec2) + ("gsl_blas" :component-float-type :type "nrm2") + (((mpointer vec1) :pointer) ((mpointer vec2) :pointer) + (result :component-float-type)) + :definition :generic + :element-types :float-complex + :documentation + "The Euclidean norm ||x||_2 = \sqrt {\sum x_i^2} of the vector x.") ;;;;;;;;;;;;;;;;; OLD ;;;;;;;;;;;;;;;;;;;; @@ -35,16 +54,6 @@ (export '(dot norm asum imax swap copy axpy scal rot)) -(defgeneric dot (vector1 vector2) - (:documentation "Dot, or inner, product between vectors.")) - - - - - -(defgeneric norm (x) - (:documentation ; FDL - "The Euclidean norm ||x||_2 = \sqrt {\sum x_i^2} of the vector x.")) (defgeneric asum (x) (:documentation ; FDL