     [ [ length>> ] [ inc>> ] bi * ] bi
     <DIRECT-ARRAY> ;
 
+M: VECTOR n*V+V!
+    (prepare-axpy) [ XAXPY ] dip ;
+M: VECTOR n*V!
+    (prepare-scal) [ XSCAL ] dip ;
+
 : XVECTOR{ \ } [ >VECTOR ] parse-literal ; parsing
 
 M: VECTOR pprint-delims

    [ drop (define-blas-vector) ]
    [ (define-complex-blas-vector) ] 3bi ;

"float"  "s" define-real-blas-vector
"double" "d" define-real-blas-vector
"complex-float"  "c" "s" define-complex-blas-vector
"complex-double" "z" "d" define-complex-blas-vector

>>


    (prepare-nrm2) XNRM2 ;
M: VECTOR Vasum
    (prepare-nrm2) XASUM ;

;FUNCTOR


FUNCTOR: (define-complex-blas-vector) ( TYPE C S -- )

VECTOR         IS ${TYPE}-blas-vector
XDOTU          IS ${C}DOTU
XDOTC          IS ${C}DOTC
XXNRM2         IS ${S}${C}NRM2
XXASUM         IS ${S}${C}ASUM

WHERE

M: VECTOR V.
    (prepare-dot) XDOTU ;
M: VECTOR V.conj
    (prepare-dot) XDOTC ;
M: VECTOR Vnorm
    (prepare-nrm2) XXNRM2 ;
M: VECTOR Vasum
    (prepare-nrm2) XXASUM ;

;FUNCTOR

