cl-gsl-cvs
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2005
- 1 participants
- 51 discussions
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv22734
Modified Files:
matrix.lisp
Log Message:
Initial checkin.
Date: Mon Apr 18 02:52:16 2005
Author: edenny
Index: cl-gsl/matrix.lisp
diff -u cl-gsl/matrix.lisp:1.1.1.1 cl-gsl/matrix.lisp:1.2
--- cl-gsl/matrix.lisp:1.1.1.1 Wed Mar 2 02:04:53 2005
+++ cl-gsl/matrix.lisp Mon Apr 18 02:52:16 2005
@@ -17,363 +17,59 @@
;;;; along with this program; if not, write to the Free Software
;;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+(in-package #:cl-gsl-matrix)
-;; Function: gsl_block * gsl_block_alloc (size_t n)
+(defmacro def-matrix-type-funcs% (typ)
+ (let ((type-ptr)
+ (type-val)
+ (type-val-ptr)
+ (type-string))
+ (cond
+ ((eq typ 'double-float)
+ (setq type-ptr 'gsl-matrix-ptr)
+ (setq type-val :double)
+ (setq type-val-ptr '(* :double))
+ (setq type-string "matrix"))
+ ((eq typ 'single-float)
+ (setq type-ptr 'gsl-matrix-float-ptr)
+ (setq type-val :float)
+ (setq type-val-ptr '(* :float))
+ (setq type-string "matrix_float"))
+ ((eq typ 'integer)
+ (setq type-ptr 'gsl-matrix-int-ptr)
+ (setq type-val :int)
+ (setq type-val-ptr '(* :int))
+ (setq type-string "matrix_int"))
+ ((equal typ '(complex (double-float)))
+ (setq type-ptr 'gsl-matrix-complex-ptr)
+ (setq type-val 'gsl-complex)
+ (setq type-val-ptr '(* gsl-complex))
+ (setq type-string "matrix_complex"))
+ ((equal typ '(complex (single-float)))
+ (setq type-ptr 'gsl-matrix-complex-float-ptr)
+ (setq type-val 'gsl-complex-float)
+ (setq type-val-ptr '(* gsl-complex-float))
+ (setq type-string "matrix_complex_float"))
+ (t
+ (error "no matching type.")))
+
+ `(progn
+ (defun-foreign ,(concatenate 'string "gsl_" type-string "_alloc")
+ ((size-1 size-t)
+ (size-2 size-t))
+ ,type-ptr)
+
+ (defun-foreign ,(concatenate 'string "gsl_" type-string "_free")
+ ((m ,type-ptr))
+ :void)
+ )))
+
+(def-matrix-type-funcs% double-float)
+(def-matrix-type-funcs% single-float)
+(def-matrix-type-funcs% integer)
+(def-matrix-type-funcs% (complex (double-float)))
+(def-matrix-type-funcs% (complex (single-float)))
-;; Function: gsl_block * gsl_block_calloc (size_t n)
-
-;; Function: void gsl_block_free (gsl_block * b)
-
-;; Function: int gsl_block_fwrite (FILE * stream, const gsl_block * b)
-
-;; Function: int gsl_block_fread (FILE * stream, gsl_block * b)
-
-;; Function: int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char * format)
-
-;; Function: int gsl_block_fscanf (FILE * stream, gsl_block * b)
-
-;; ----------------------------------------------------------------------
-
-;; Function: gsl_vector * gsl_vector_calloc (size_t n)
-
-;; Function: double * gsl_vector_ptr (gsl_vector * v, size_t i)
-;; Function: const double * gsl_vector_const_ptr (const gsl_vector * v, size_t i)
-
-;; ----------------------------------------------------------------------
-
-(in-package #:cl-gsl-vector)
-
-(defun-foreign "gsl_vector_alloc"
- ((size :unsigned-long))
- gsl-vector-ptr)
-
-(defun-foreign ("gsl_vector_free" free-vector)
- ((v gsl-vector-ptr))
- :void)
-
-(defun-foreign ("gsl_vector_get" get-element)
- ((v gsl-vector-ptr)
- (i :unsigned-long))
- :double)
-
-(defun-foreign ("gsl_vector_set" set-element)
- ((v gsl-vector-ptr)
- (i :unsigned-long)
- (x :double))
- :void)
-
-(defun-foreign ("gsl_vector_set_all" set-all)
- ((v gsl-vector-ptr)
- (x :double))
- :void)
-
-(defun-foreign ("gsl_vector_set_zero" set-zero)
- ((v gsl-vector-ptr))
- :void)
-
-(defun-foreign ("gsl_vector_set_basis" set-basis)
- ((v gsl-vector-ptr)
- (i :unsigned-long))
- :void)
-
-
-(defun make-vector (size &key element-type initial-element initial-contents)
- ;; TODO: make dependent on element-type
- (assert (and (typep size 'integer) (> size 0)))
- (cond
- ((and initial-element initial-contents)
- (error "cannot define both initial-element and initial-contents keys"))
- (initial-element
- (let ((vec (gsl-vector-alloc size)))
- (gsl-vector:set-all vec initial-element)
- vec))
- (initial-contents
- (let ((vec (gsl-vector-alloc size)))
- (cond
- ((listp initial-contents)
- (do ((x initial-contents (cdr x))
- (i 0 (1+ i)))
- ((= i size))
- (gsl-vector:set-element vec i (car x))))
- ((vectorp initial-contents)
- (do ((i 0 (1+ i)))
- ((= i size))
- (gsl-vector:set-element vec i (aref initial-contents i))))
- (t
- (error "initial-contents must be either a list or a vector.")))
- vec))
- (t
- (gsl-vector-alloc size))))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "wrap_gsl_vector_fwrite"
- ((fn :cstring)
- (v gsl-vector-ptr))
- :int)
-
-(defun write-to-binary-file (file-name vec)
- (let ((status))
- (with-cstring (c-file-name file-name)
- (setq status (wrap-gsl-vector-fwrite c-file-name vec)))
- status))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "wrap_gsl_vector_fread"
- ((fn :cstring)
- (v gsl-vector-ptr))
- :int)
-
-(defun read-from-binary-file (file-name size)
- (let ((vec (gsl-vector-alloc size))
- (status))
- (with-cstring (c-file-name file-name)
- (setq status (wrap-gsl-vector-fread c-file-name vec)))
- (values vec status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "wrap_gsl_vector_fprintf"
- ((fn :cstring)
- (v gsl-vector-ptr))
- :int)
-
-(defun write-to-file (file-name vec)
- (let ((status))
- (with-cstring (c-file-name file-name)
- (setq status (wrap-gsl-vector-fprintf c-file-name vec)))
- status))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "wrap_gsl_vector_fscanf"
- ((fn :cstring)
- (v gsl-vector-ptr))
- :int)
-
-(defun read-from-file (file-name size)
- (let ((vec (gsl-vector-alloc size))
- (status))
- (with-cstring (c-file-name file-name)
- (setq status (wrap-gsl-vector-fscanf c-file-name vec)))
- (values vec status)))
-
-;; ----------------------------------------------------------------------
-
-;; Function: gsl_vector_const_view gsl_vector_const_subvector (const gsl_vector * v, size_t offset, size_t n)
-
-(defun-foreign "gsl_vector_subvector"
- ((v gsl-vector-ptr)
- (offset :unsigned-long)
- (n :unsigned-long))
- gsl-vector-view)
-
-(defun subvector (v offset n)
- (let ((view (gsl-vector-subvector v offset n)))
- (uffi:get-slot-pointer view 'gsl-vector-view 'vec)))
-
-;; ----------------------------------------------------------------------
-
-;; Function: gsl_vector_const_view gsl_vector_const_subvector_with_stride (const gsl_vector * v, size_t offset, size_t stride, size_t n)
-
-(defun-foreign "gsl_vector_subvector_with_stride"
- ((v gsl-vector-ptr)
- (offset :unsigned-long)
- (stride :unsigned-long)
- (n :unsigned-long))
- gsl-vector-view)
-
-(defun subvector (v offset stride n)
- (let ((view (gsl-vector-subvector-with-stride v offset stride n)))
- (uffi:get-slot-pointer view 'gsl-vector-view 'vec)))
-
-;; ----------------------------------------------------------------------
-
-;; Function: gsl_vector_view gsl_vector_complex_real (gsl_vector_complex *v)
-;; Function: gsl_vector_const_view gsl_vector_complex_const_real (const gsl_vector_complex *v)
-
-;; Function: gsl_vector_view gsl_vector_complex_imag (gsl_vector_complex *v)
-;; Function: gsl_vector_const_view gsl_vector_complex_const_imag (const gsl_vector_complex *v)
-
-;; Function: gsl_vector_view gsl_vector_view_array_with_stride (double * base, size_t stride, size_t n)
-;; Function: gsl_vector_const_view gsl_vector_const_view_array_with_stride (const double * base, size_t stride, size_t n)
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_memcpy"
- ((v1 gsl-vector-ptr)
- (v2 gsl-vector-ptr))
- :int)
-
-(defun copy (v-src)
- (let* ((n (uffi:get-slot-value v-src 'gsl-vector 'size))
- (v-dest (gsl-vector-alloc n))
- (status))
- (setq status (gsl-vector-memcpy v-dest v-src))
- (values v-dest status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign ("gsl_vector_swap" swap)
- ((v1 gsl-vector-ptr)
- (v2 gsl-vector-ptr))
- :int)
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_swap_elements"
- ((v1 gsl-vector-ptr)
- (i size-t)
- (j size-t))
- :int)
-
-(defun swap-elements (v i j)
- (let ((status (gsl-vector-swap-elements v i j)))
- (values v status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_reverse"
- ((v1 gsl-vector-ptr))
- :int)
-
-(defun reverse-vector (v)
- (let ((status (gsl-vector-reverse v)))
- (values v status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_add"
- ((va gsl-vector-ptr)
- (vb gsl-vector-ptr))
- :int)
-
-(defun add (va vb)
- (let ((status (gsl-vector-add va vb)))
- (values va status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_sub"
- ((va gsl-vector-ptr)
- (vb gsl-vector-ptr))
- :int)
-
-(defun sub (va vb)
- (let ((status (gsl-vector-sub va vb)))
- (values va status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_mul"
- ((va gsl-vector-ptr)
- (vb gsl-vector-ptr))
- :int)
-
-(defun mul (va vb)
- (let ((status (gsl-vector-mul va vb)))
- (values va status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_div"
- ((va gsl-vector-ptr)
- (vb gsl-vector-ptr))
- :int)
-
-(defun div (va vb)
- (let ((status (gsl-vector-div va vb)))
- (values va status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_scale"
- ((vec gsl-vector-ptr)
- (x :double))
- :int)
-
-(defun scale (vec x)
- (let ((status (gsl-vector-scale vec x)))
- (values vec status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_add_constant"
- ((vec gsl-vector-ptr)
- (x :double))
- :int)
-
-(defun add-constant (vec x)
- (let ((status (gsl-vector-add-constant vec x)))
- (values vec status)))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign ("gsl_vector_max" max-value)
- ((vec gsl-vector-ptr))
- :double)
-
-(defun-foreign ("gsl_vector_min" min-value)
- ((vec gsl-vector-ptr))
- :double)
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_minmax"
- ((vec gsl-vector-ptr)
- (min double-ptr)
- (max double-ptr))
- :void)
-
-(defun min-max-values (vec)
- (let ((min-ptr (uffi:allocate-foreign-object :double))
- (max-ptr (uffi:allocate-foreign-object :double)))
- (gsl-vector-minmax vec min-ptr max-ptr)
- (prog1
- (list (uffi:deref-pointer :double min-ptr)
- (uffi:deref-pointer :double max-ptr))
- (uffi:free-foreign-object min-ptr)
- (uffi:free-foreign-object max-ptr))))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign ("gsl_vector_max_index" max-index)
- ((vec gsl-vector-ptr))
- size-t)
-
-(defun-foreign ("gsl_vector_min_index" min-index)
- ((vec gsl-vector-ptr))
- size-t)
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_minmax_index"
- ((vec gsl-vector-ptr)
- (min size-t-ptr)
- (max size-t-ptr))
- :void)
-
-(defun min-max-indicies (vec)
- (let ((min-ptr (uffi:allocate-foreign-object 'size-t))
- (max-ptr (uffi:allocate-foreign-object 'size-t)))
- (gsl-vector-minmax-index vec min-ptr max-ptr)
- (prog1
- (list (uffi:deref-pointer 'size-t min-ptr)
- (uffi:deref-pointer 'size-t max-ptr))
- (uffi:free-foreign-object min-ptr)
- (uffi:free-foreign-object max-ptr))))
-
-;; ----------------------------------------------------------------------
-
-(defun-foreign "gsl_vector_isnull"
- ((vec gsl-vector-ptr))
- :int)
-
-(defun isnull (vec)
- (1/0->t/nil (gsl-vector-isnull vec)))
-
-;; ----------------------------------------------------------------------
;; Function: gsl_matrix * gsl_matrix_alloc (size_t n1, size_t n2)
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv22699
Modified Files:
ffi.lisp
Log Message:
Add matrix types.
Date: Mon Apr 18 02:50:33 2005
Author: edenny
Index: cl-gsl/ffi.lisp
diff -u cl-gsl/ffi.lisp:1.4 cl-gsl/ffi.lisp:1.5
--- cl-gsl/ffi.lisp:1.4 Mon Apr 4 02:44:15 2005
+++ cl-gsl/ffi.lisp Mon Apr 18 02:50:33 2005
@@ -72,94 +72,40 @@
;; ----------------------------------------------------------------------
-(def-foreign-struct gsl-block
- (size :unsigned-long)
- (data (* :double)))
-
-(def-foreign-struct gsl-vector
- (size :unsigned-long)
- (stride :unsigned-long)
- (data (* :double))
- (g-block (* gsl-block))
- (owner :int))
-
-(def-foreign-struct gsl-vector-view
- (vec (* gsl-vector)))
-
-;; ----------------------------------------------------------------------
-
-(def-foreign-struct gsl-block-float
- (size :unsigned-long)
- (data (* :float)))
-
-(def-foreign-struct gsl-vector-float
- (size :unsigned-long)
- (stride :unsigned-long)
- (data (* :float))
- (g-block (* gsl-block-float))
- (owner :int))
-
-(def-foreign-struct gsl-vector-float-view
- (vec (* gsl-vector-float)))
-
-;; ----------------------------------------------------------------------
-
-(def-foreign-struct gsl-block-int
- (size :unsigned-long)
- (data (* :int)))
-
-(def-foreign-struct gsl-vector-int
- (size :unsigned-long)
- (stride :unsigned-long)
- (data (* :int))
- (g-block (* gsl-block-int))
- (owner :int))
-
-(def-foreign-struct gsl-vector-int-view
- (vec (* gsl-vector-int)))
-
-;; ----------------------------------------------------------------------
-
-(def-foreign-struct gsl-block-complex
- (size :unsigned-long)
- (data (* :double)))
-
-(def-foreign-struct gsl-vector-complex
- (size :unsigned-long)
- (stride :unsigned-long)
- (data (* :double))
- (g-block (* gsl-block-complex))
- (owner :int))
-
-(def-foreign-struct gsl-vector-complex-view
- (vec (* gsl-vector-complex)))
-
-;; ----------------------------------------------------------------------
-
-(def-foreign-struct gsl-block-complex-float
- (size :unsigned-long)
- (data (* :float)))
-
-(def-foreign-struct gsl-vector-complex-float
- (size :unsigned-long)
- (stride :unsigned-long)
- (data (* :float))
- (g-block (* gsl-block-complex-float))
- (owner :int))
-
-(def-foreign-struct gsl-vector-complex-float-view
- (vec (* gsl-vector-complex-float)))
+(defmacro def-block-vector-matrix-struct% (struct-postfix data-type)
+ `(progn
+ (def-foreign-struct ,(kmrcl:concat-symbol 'gsl-block struct-postfix)
+ (size :unsigned-long)
+ (data (* ,data-type)))
+
+ (def-foreign-struct ,(kmrcl:concat-symbol 'gsl-vector struct-postfix)
+ (size :unsigned-long)
+ (stride :unsigned-long)
+ (data (* ,data-type))
+ (g-block (* ,(kmrcl:concat-symbol 'gsl-block struct-postfix)))
+ (owner :int))
+
+ (def-foreign-struct ,(kmrcl:concat-symbol 'gsl-matrix struct-postfix)
+ (size1 :unsigned-long)
+ (size2 :unsigned-long)
+ (tda :unsigned-long)
+ (data (* ,data-type))
+ (g-block (* ,(kmrcl:concat-symbol 'gsl-block struct-postfix)))
+ (owner :int))
+
+ ;; FIXME: is this correct?
+ (def-foreign-struct ,(kmrcl:concat-symbol 'gsl-vector struct-postfix '-view)
+ (vec (* ,(kmrcl:concat-symbol 'gsl-vector struct-postfix))))))
+
+
+(def-block-vector-matrix-struct% "" :double)
+(def-block-vector-matrix-struct% "-float" :float)
+(def-block-vector-matrix-struct% "-int" :int)
+(def-block-vector-matrix-struct% "-complex" :double)
+(def-block-vector-matrix-struct% "-complex-float" :float)
;; ----------------------------------------------------------------------
-(def-foreign-struct gsl-matrix
- (size1 :unsigned-long)
- (size2 :unsigned-long)
- (tda :unsigned-long)
- (data (* :double))
- (g-block (* gsl-block))
- (owner :int))
-
(defmacro register-foreign-types ()
`(progn
,@(mapcar #'(lambda (elm) `(define-foreign-type ,(car elm) ,(cadr elm)))
@@ -184,6 +130,11 @@
(gsl-vector-complex-float-ptr '(* gsl-vector-complex-float))
(gsl-matrix-ptr '(* gsl-matrix))
+ (gsl-matrix-float-ptr '(* gsl-matrix-float))
+ (gsl-matrix-int-ptr '(* gsl-matrix-int))
+ (gsl-matrix-complex-ptr '(* gsl-matrix-complex))
+ (gsl-matrix-complex-float-ptr '(* gsl-matrix-complex-float))
+
(size-t-ptr '(* size-t))
))))
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv22644
Modified Files:
cl-gsl.asd
Log Message:
add matrix to defsytem.
Date: Mon Apr 18 02:47:42 2005
Author: edenny
Index: cl-gsl/cl-gsl.asd
diff -u cl-gsl/cl-gsl.asd:1.1.1.1 cl-gsl/cl-gsl.asd:1.2
--- cl-gsl/cl-gsl.asd:1.1.1.1 Wed Mar 2 02:04:53 2005
+++ cl-gsl/cl-gsl.asd Mon Apr 18 02:47:42 2005
@@ -41,4 +41,5 @@
(:file "poly" :depends-on ("util" "ffi"))
(:file "sf" :depends-on ("util" "ffi"))
(:file "vector" :depends-on ("util" "ffi"))
+ (:file "matrix" :depends-on ("util" "ffi"))
))
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv27671
Modified Files:
ChangeLog
Log Message:
*** empty log message ***
Date: Sun Apr 10 04:34:50 2005
Author: edenny
Index: cl-gsl/ChangeLog
diff -u cl-gsl/ChangeLog:1.14 cl-gsl/ChangeLog:1.15
--- cl-gsl/ChangeLog:1.14 Sun Apr 10 04:34:19 2005
+++ cl-gsl/ChangeLog Sun Apr 10 04:34:50 2005
@@ -1,7 +1,7 @@
2005-04-10 Edgar Denny <edgardenny(a)comcast.net>
* test/test-vector.lisp:
- Add several more test. Almost complete except for subvector and
+ Add several more tests. Almost complete except for subvector and
subvector-with-stride tests - which don't work yet.
* vector.lisp: Fix scale and add-constant functions. Only subvector and
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv27652
Modified Files:
ChangeLog
Log Message:
*** empty log message ***
Date: Sun Apr 10 04:34:19 2005
Author: edenny
Index: cl-gsl/ChangeLog
diff -u cl-gsl/ChangeLog:1.13 cl-gsl/ChangeLog:1.14
--- cl-gsl/ChangeLog:1.13 Thu Apr 7 04:40:39 2005
+++ cl-gsl/ChangeLog Sun Apr 10 04:34:19 2005
@@ -1,3 +1,15 @@
+2005-04-10 Edgar Denny <edgardenny(a)comcast.net>
+
+ * test/test-vector.lisp:
+ Add several more test. Almost complete except for subvector and
+ subvector-with-stride tests - which don't work yet.
+
+ * vector.lisp: Fix scale and add-constant functions. Only subvector and
+ subvector-with-stride functions now have problems.
+
+ * package.lisp:
+ Minor modifications to exported symbol in gsl-vector package.
+
2005-04-07 Edgar Denny <edgardenny(a)comcast.net>
* test/test-vector.lisp: Added several new unit tests.
1
0

10 Apr '05
Update of /project/cl-gsl/cvsroot/cl-gsl/test
In directory common-lisp.net:/tmp/cvs-serv27622
Modified Files:
test-vector.lisp
Log Message:
Add several more test. Almost complete except for subvector and
subvector-with-stride tests - which don't work yet.
Date: Sun Apr 10 04:32:24 2005
Author: edenny
Index: cl-gsl/test/test-vector.lisp
diff -u cl-gsl/test/test-vector.lisp:1.2 cl-gsl/test/test-vector.lisp:1.3
--- cl-gsl/test/test-vector.lisp:1.2 Thu Apr 7 04:37:55 2005
+++ cl-gsl/test/test-vector.lisp Sun Apr 10 04:32:24 2005
@@ -49,7 +49,7 @@
(eq (gsl-vector:gsl-vec-element-type v) 'integer))
(gsl-vector:free v)))))
-(deftest "make-vector-complex-double-float" :category +vector+
+v(deftest "make-vector-complex-double-float" :category +vector+
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type
@@ -550,7 +550,7 @@
(gsl-vector:with-vector
(v 5 :element-type 'double-float :initial-contents vec)
(equalp (reverse vec)
- (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:gsl->lisp-vector
(gsl-vector:reverse-vector v)))))))
(deftest "reverse-single-float" :category +vector+
@@ -560,7 +560,7 @@
(gsl-vector:with-vector
(v 5 :element-type 'single-float :initial-contents vec)
(equalp (reverse vec)
- (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:gsl->lisp-vector
(gsl-vector:reverse-vector v)))))))
(deftest "reverse-integer" :category +vector+
@@ -570,7 +570,7 @@
(gsl-vector:with-vector
(v 5 :element-type 'integer :initial-contents vec)
(equalp (reverse vec)
- (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:gsl->lisp-vector
(gsl-vector:reverse-vector v)))))))
@@ -584,7 +584,7 @@
(v 5 :element-type '(complex (double-float))
:initial-contents vec)
(equalp (reverse vec)
- (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:gsl->lisp-vector
(gsl-vector:reverse-vector v)))))))
@@ -598,7 +598,7 @@
(v 5 :element-type '(complex (single-float))
:initial-contents vec)
(equalp (reverse vec)
- (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:gsl->lisp-vector
(gsl-vector:reverse-vector v)))))))
;; ----------------------------------------------------------------------
@@ -613,10 +613,8 @@
(gsl-vector:with-vector
(v2 5 :element-type 'double-float
:from-file "/tmp/test.txt")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-single-float" :category +vector+
:test-fn
@@ -628,10 +626,8 @@
(gsl-vector:with-vector
(v2 5 :element-type 'single-float
:from-file "/tmp/test.txt")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-integer" :category +vector+
:test-fn
@@ -642,10 +638,8 @@
(gsl-vector:write-to-file "/tmp/test.txt" v1)
(gsl-vector:with-vector
(v2 5 :element-type 'integer :from-file "/tmp/test.txt")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-complex-double-float" :category +vector+
:test-fn
@@ -660,10 +654,8 @@
(gsl-vector:with-vector
(v2 5 :element-type '(complex (double-float))
:from-file "/tmp/test.txt")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-complex-single-float" :category +vector+
:test-fn
@@ -678,10 +670,8 @@
(gsl-vector:with-vector
(v2 5 :element-type '(complex (single-float))
:from-file "/tmp/test.txt")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
;; ----------------------------------------------------------------------
@@ -695,10 +685,8 @@
(gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
(gsl-vector:with-vector (v2 5 :element-type 'double-float
:from-binary-file "/tmp/test.bin")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-binary-single-float" :category +vector+
:test-fn
@@ -709,10 +697,8 @@
(gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
(gsl-vector:with-vector (v2 5 :element-type 'single-float
:from-binary-file "/tmp/test.bin")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-binary-integer" :category +vector+
@@ -724,10 +710,8 @@
(gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
(gsl-vector:with-vector (v2 5 :element-type 'integer
:from-binary-file "/tmp/test.bin")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-binary-complex-double-float" :category +vector+
:test-fn
@@ -742,10 +726,8 @@
(gsl-vector:with-vector
(v2 5 :element-type '(complex (double-float))
:from-binary-file "/tmp/test.bin")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
(deftest "read-write-binary-complex-single-float" :category +vector+
:test-fn
@@ -760,7 +742,599 @@
(gsl-vector:with-vector
(v2 5 :element-type '(complex (single-float))
:from-binary-file "/tmp/test.bin")
- (and (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v1))
- (equalp vec
- (gsl-vector:gsl-vector->lisp-vector v2))))))))
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "copy-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (v2)
+ (res))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec)
+ (setq v2 (gsl-vector:copy v1))
+ (setq res (equalp (gsl-vector:gsl->lisp-vector v1)
+ (gsl-vector:gsl->lisp-vector v2)))
+ (gsl-vector:free v2))
+ res)))
+
+(deftest "copy-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0 2.0 3.0 4.0 5.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec)
+ (gsl-vector:with-vector-copy (v2 v1)
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "copy-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1 2 3 4 5)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec)
+ (gsl-vector:with-vector-copy (v2 v1)
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "copy-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (double-float))
+ :initial-contents vec)
+ (gsl-vector:with-vector-copy (v2 v1)
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "copy-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 3.0 3.0) (complex 4.0 4.0)
+ (complex 5.0 5.0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (single-float))
+ :initial-contents vec)
+ (gsl-vector:with-vector-copy (v2 v1)
+ (and (equalp vec (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec (gsl-vector:gsl->lisp-vector v2))))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "swap-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let* ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (reverse vec-1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float :initial-contents vec-2)
+ (gsl-vector:swap v1 v2)
+ (and (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec-1 (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "swap-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let* ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (reverse vec-1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float :initial-contents vec-2)
+ (gsl-vector:swap v1 v2)
+ (and (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec-1 (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "swap-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let* ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (reverse vec-1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :initial-contents vec-2)
+ (gsl-vector:swap v1 v2)
+ (and (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec-1 (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "swap-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let* ((vec-1 (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0)))
+ (vec-2 (reverse vec-1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (double-float))
+ :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (double-float))
+ :initial-contents vec-2)
+ (gsl-vector:swap v1 v2)
+ (and (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec-1 (gsl-vector:gsl->lisp-vector v2))))))))
+
+(deftest "swap-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let* ((vec-1 (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 3.0 3.0) (complex 4.0 4.0)
+ (complex 5.0 5.0)))
+ (vec-2 (reverse vec-1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (single-float))
+ :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (single-float))
+ :initial-contents vec-2)
+ (gsl-vector:swap v1 v2)
+ (and (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))
+ (equalp vec-1 (gsl-vector:gsl->lisp-vector v2))))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "swap-elements-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 1.0d0 2.0d0 4.0d0 3.0d0 5.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:swap-elements v1 2 3)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "swap-elements-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 1.0 2.0 4.0 3.0 5.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:swap-elements v1 2 3)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "swap-elements-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 1 2 4 3 5)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:swap-elements v1 2 3)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "swap-elements-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0)))
+ (vec-2 (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 4.0d0 4.0d0) (complex 3.0d0 3.0d0)
+ (complex 5.0d0 5.0d0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (double-float))
+ :initial-contents vec-1)
+ (gsl-vector:swap-elements v1 2 3)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "swap-elements-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 3.0 3.0) (complex 4.0 4.0)
+ (complex 5.0 5.0)))
+ (vec-2 (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 4.0 4.0) (complex 3.0 3.0)
+ (complex 5.0 5.0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (single-float))
+ :initial-contents vec-1)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector
+ (gsl-vector:swap-elements v1 2 3)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "add-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 2.0d0 4.0d0 6.0d0 8.0d0 10.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:add v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "add-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 2.0 4.0 6.0 8.0 10.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:add v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "add-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 2 4 6 8 10)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:add v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "sub-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:sub v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "sub-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 0.0 0.0 0.0 0.0 0.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:sub v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "sub-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 0 0 0 0 0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:sub v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "mul-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 1.0d0 4.0d0 9.0d0 16.0d0 25.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:mul v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "mul-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 1.0 4.0 9.0 16.0 25.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:mul v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "mul-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 1 4 9 16 25)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:mul v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "div-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 1.0d0 1.0d0 1.0d0 1.0d0 1.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:div v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "div-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 1.0 1.0 1.0 1.0 1.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:div v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+(deftest "div-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 1 1 1 1 1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:div v1 v2)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1)))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "scale-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 10.0d0 20.0d0 30.0d0 40.0d0 50.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:scale v1 10.0d0)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "scale-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 10.0 20.0 30.0 40.0 50.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:scale v1 10.0)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "scale-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 10 20 30 40 50)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:scale v1 10)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "add-constant-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+ (vec-2 (vector 11.0d0 12.0d0 13.0d0 14.0d0 15.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (gsl-vector:add-constant v1 10.0d0)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "add-constant-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1.0 2.0 3.0 4.0 5.0))
+ (vec-2 (vector 11.0 12.0 13.0 14.0 15.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (gsl-vector:add-constant v1 10.0)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+(deftest "add-constant-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 1 2 3 4 5))
+ (vec-2 (vector 11 12 13 14 15)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (gsl-vector:add-constant v1 10)
+ (equalp vec-2 (gsl-vector:gsl->lisp-vector v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "max-value-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (max-val 5.0d0))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (= max-val (gsl-vector:max-value v1))))))
+
+(deftest "max-value-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (max-val 5.0))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (= max-val (gsl-vector:max-value v1))))))
+
+(deftest "max-value-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (max-val 5))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (= max-val (gsl-vector:max-value v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "min-value-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (min-val 1.0d0))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (= min-val (gsl-vector:min-value v1))))))
+
+(deftest "min-value-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (min-val 1.0))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (= min-val (gsl-vector:min-value v1))))))
+
+(deftest "min-value-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (min-val 1))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (= min-val (gsl-vector:min-value v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "max-index-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (max-idx 1))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (= max-idx (gsl-vector:max-index v1))))))
+
+(deftest "max-index-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (max-idx 1))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (= max-idx (gsl-vector:max-index v1))))))
+
+(deftest "max-index-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (max-idx 1))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (= max-idx (gsl-vector:max-index v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "min-index-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (min-idx 2))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (= min-idx (gsl-vector:min-index v1))))))
+
+(deftest "min-index-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (min-idx 2))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (= min-idx (gsl-vector:min-index v1))))))
+
+(deftest "min-index-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (min-idx 2))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (= min-idx (gsl-vector:min-index v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "min-max-indicies-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (min-max-idx '(2 1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (equal min-max-idx (gsl-vector:min-max-indicies v1))))))
+
+(deftest "min-max-indicies-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (min-max-idx '(2 1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (equal min-max-idx (gsl-vector:min-max-indicies v1))))))
+
+(deftest "min-max-indicies-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (min-max-idx '(2 1)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (equal min-max-idx (gsl-vector:min-max-indicies v1))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "min-max-values-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0d0 5.0d0 1.0d0 2.0d0 3.0d0))
+ (min-max-val '(1.0d0 5.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec-1)
+ (equal min-max-val (gsl-vector:min-max-values v1))))))
+
+(deftest "min-max-values-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4.0 5.0 1.0 2.0 3.0))
+ (min-max-val '(1.0 5.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec-1)
+ (equal min-max-val (gsl-vector:min-max-values v1))))))
+
+(deftest "min-max-values-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec-1 (vector 4 5 1 2 3))
+ (min-max-val '(1 5)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec-1)
+ (equal min-max-val (gsl-vector:min-max-values v1))))))
+
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv27234
Modified Files:
vector.lisp
Log Message:
Fix scale and add-constant functions. Only subvector and
subvector-with-stride functions now have problems.
Date: Sun Apr 10 04:31:06 2005
Author: edenny
Index: cl-gsl/vector.lisp
diff -u cl-gsl/vector.lisp:1.6 cl-gsl/vector.lisp:1.7
--- cl-gsl/vector.lisp:1.6 Thu Apr 7 04:37:13 2005
+++ cl-gsl/vector.lisp Sun Apr 10 04:31:06 2005
@@ -139,7 +139,8 @@
(equal typ '(complex (single-float))))
`(defun-foreign ,(concatenate 'string "gsl_" type-string "_scale")
((vec ,type-ptr)
- (x ,type-val))
+ ;; seems odd that this is :double for all types
+ (x :double))
:int))
,(unless (or (equal typ '(complex (double-float)))
@@ -147,7 +148,8 @@
`(defun-foreign ,(concatenate 'string
"gsl_" type-string "_add_constant")
((vec ,type-ptr)
- (x ,type-val))
+ ;; and again, :double for all types
+ (x :double))
:int))
,(unless (or (equal typ '(complex (double-float)))
@@ -217,14 +219,14 @@
(defun-foreign ,(concatenate 'string "wrap_gsl_" type-string
"_subvector")
- ((v gsl-vector-ptr)
+ ((v ,type-ptr)
(offset size-t)
(n size-t))
,type-ptr)
(defun-foreign ,(concatenate 'string "wrap_gsl_" type-string
"_subvector_with_stride")
- ((v gsl-vector-ptr)
+ ((v ,type-ptr)
(offset size-t)
(stride size-t)
(n size-t))
@@ -784,9 +786,10 @@
(let ((status
(cond
((eq (gsl-vec-element-type v) 'integer)
- (gsl-vector-int-scale (gsl-vec-ptr v) x))
+ ;; coerce to double-float looks wrong, but isn't.
+ (gsl-vector-int-scale (gsl-vec-ptr v) (coerce x 'double-float)))
((eq (gsl-vec-element-type v) 'single-float)
- (gsl-vector-float-scale (gsl-vec-ptr v) x))
+ (gsl-vector-float-scale (gsl-vec-ptr v) (coerce x 'double-float)))
((eq (gsl-vec-element-type v) 'double-float)
(gsl-vector-scale (gsl-vec-ptr v) x))
(t
@@ -800,9 +803,11 @@
(let ((status
(cond
((eq (gsl-vec-element-type v) 'integer)
- (gsl-vector-int-add-constant (gsl-vec-ptr v) x))
+ (gsl-vector-int-add-constant (gsl-vec-ptr v)
+ (coerce x 'double-float)))
((eq (gsl-vec-element-type v) 'single-float)
- (gsl-vector-float-add-constant (gsl-vec-ptr v) x))
+ (gsl-vector-float-add-constant (gsl-vec-ptr v)
+ (coerce x 'double-float)))
((eq (gsl-vec-element-type v) 'double-float)
(gsl-vector-add-constant (gsl-vec-ptr v) x))
(t
@@ -907,7 +912,7 @@
(error "No matching type")))))
-(defun gsl-vector->lisp-vector (v)
+(defun gsl->lisp-vector (v)
(assert (eq 'gsl-vec (type-of v)))
(let ((a (make-array (gsl-vec-size v) :element-type (gsl-vec-element-type v))))
(dotimes (i (gsl-vec-size v) a)
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv26800
Modified Files:
package.lisp
Log Message:
Minor modifications to exported symbol in gsl-vector package.
Date: Sun Apr 10 04:29:21 2005
Author: edenny
Index: cl-gsl/package.lisp
diff -u cl-gsl/package.lisp:1.5 cl-gsl/package.lisp:1.6
--- cl-gsl/package.lisp:1.5 Thu Apr 7 04:36:20 2005
+++ cl-gsl/package.lisp Sun Apr 10 04:29:21 2005
@@ -133,5 +133,5 @@
#:min-max-indicies
#:min-max-values
#:isnull
- #:gsl-vector->lisp-vector
+ #:gsl->lisp-vector
))
1
0
Update of /project/cl-gsl/cvsroot/cl-gsl
In directory common-lisp.net:/tmp/cvs-serv2217
Modified Files:
ChangeLog
Log Message:
*** empty log message ***
Date: Thu Apr 7 04:40:39 2005
Author: edenny
Index: cl-gsl/ChangeLog
diff -u cl-gsl/ChangeLog:1.12 cl-gsl/ChangeLog:1.13
--- cl-gsl/ChangeLog:1.12 Mon Apr 4 04:02:35 2005
+++ cl-gsl/ChangeLog Thu Apr 7 04:40:39 2005
@@ -1,3 +1,11 @@
+2005-04-07 Edgar Denny <edgardenny(a)comcast.net>
+
+ * test/test-vector.lisp: Added several new unit tests.
+
+ * vector.lisp: Fixes due to unit tests.
+
+ * package.lisp: Add new symbols to vector package.
+
2005-04-04 Edgar Denny <edgardenny(a)comcast.net>
* doc/math.tex: Use \mathalt macro for equations.
@@ -18,7 +26,7 @@
* ffi.lisp:
Added macros which allocate, bind, and free foreign structures.
-2005-03-29 Edgar Denny <edenny(a)comcast.net>
+2005-03-29 Edgar Denny <edgardenny(a)comcast.net>
* doc/index.html, doc/introduction.html, doc/poly.html, doc/sf.html:
Remove html files.
1
0

07 Apr '05
Update of /project/cl-gsl/cvsroot/cl-gsl/test
In directory common-lisp.net:/tmp/cvs-serv2190
Modified Files:
test-vector.lisp
Log Message:
Added several new unit tests.
Date: Thu Apr 7 04:37:55 2005
Author: edenny
Index: cl-gsl/test/test-vector.lisp
diff -u cl-gsl/test/test-vector.lisp:1.1 cl-gsl/test/test-vector.lisp:1.2
--- cl-gsl/test/test-vector.lisp:1.1 Tue Mar 15 04:21:49 2005
+++ cl-gsl/test/test-vector.lisp Thu Apr 7 04:37:55 2005
@@ -25,41 +25,51 @@
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type 'double-float)))
- (and (= (gsl-vector:gsl-vec-size v) 5)
- (eq (gsl-vector:gsl-vec-element-type v) 'double-float)))))
+ (prog1
+ (and (= (gsl-vector:gsl-vec-size v) 5)
+ (eq (gsl-vector:gsl-vec-element-type v) 'double-float))
+ (gsl-vector:free v)))))
(deftest "make-vector-single-float" :category +vector+
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type 'single-float)))
- (and (= (gsl-vector:gsl-vec-size v) 5)
- (eq (gsl-vector:gsl-vec-element-type v) 'single-float)))))
+ (prog1
+ (and (= (gsl-vector:gsl-vec-size v) 5)
+ (eq (gsl-vector:gsl-vec-element-type v) 'single-float))
+ (gsl-vector:free v)))))
(deftest "make-vector-integer" :category +vector+
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type 'integer)))
- (and (= (gsl-vector:gsl-vec-size v) 5)
- (eq (gsl-vector:gsl-vec-element-type v) 'integer)))))
+ (prog1
+ (and (= (gsl-vector:gsl-vec-size v) 5)
+ (eq (gsl-vector:gsl-vec-element-type v) 'integer))
+ (gsl-vector:free v)))))
(deftest "make-vector-complex-double-float" :category +vector+
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type
'(complex (double-float)))))
- (and (= (gsl-vector:gsl-vec-size v) 5)
- (equal (gsl-vector:gsl-vec-element-type v)
- '(complex (double-float)))))))
+ (prog1
+ (and (= (gsl-vector:gsl-vec-size v) 5)
+ (equal (gsl-vector:gsl-vec-element-type v)
+ '(complex (double-float))))
+ (gsl-vector:free v)))))
(deftest "make-vector-complex-single-float" :category +vector+
:test-fn
#'(lambda ()
(let ((v (gsl-vector:make-vector 5 :element-type
'(complex (single-float)))))
- (and (= (gsl-vector:gsl-vec-size v) 5)
- (equal (gsl-vector:gsl-vec-element-type v)
- '(complex (single-float)))))))
+ (prog1
+ (and (= (gsl-vector:gsl-vec-size v) 5)
+ (equal (gsl-vector:gsl-vec-element-type v)
+ '(complex (single-float))))
+ (gsl-vector:free v)))))
;; ----------------------------------------------------------------------
@@ -72,7 +82,9 @@
(ret t))
(dotimes (i 5 ret)
(unless (= (gsl-vector:get-element v i) 1.0d0)
- (setq ret nil))))))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
(deftest "make-vector-single-float-initial-element" :category +vector+
@@ -84,7 +96,9 @@
(ret t))
(dotimes (i 5 ret)
(unless (= (gsl-vector:get-element v i) 1.0)
- (setq ret nil))))))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
(deftest "make-vector-integer-initial-element" :category +vector+
@@ -96,7 +110,9 @@
(ret t))
(dotimes (i 5 ret)
(unless (= (gsl-vector:get-element v i) 1)
- (setq ret nil))))))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
(deftest "make-vector-complex-double-float-initial-element" :category +vector+
:test-fn
@@ -109,7 +125,9 @@
(ret t))
(dotimes (i 5 ret)
(unless (= (gsl-vector:get-element v i) (complex 1.0d0 1.0d0))
- (setq ret nil))))))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
(deftest "make-vector-complex-single-float-initial-element" :category +vector+
:test-fn
@@ -121,4 +139,628 @@
(ret t))
(dotimes (i 5 ret)
(unless (= (gsl-vector:get-element v i) (complex 1.0 1.0))
- (setq ret nil))))))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+;; ----------------------------------------------------------------------
+
+(deftest "make-vector-double-float-initial-contents" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((v (gsl-vector:make-vector
+ 5
+ :element-type 'double-float
+ :initial-contents (list 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0)))
+ (ret t)
+ (val 0.0d0))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) (incf val 1.0d0))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+
+(deftest "make-vector-single-float-initial-contents" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((v (gsl-vector:make-vector
+ 5
+ :element-type 'single-float
+ :initial-contents (vector -1.0 -2.0 -3.0 -4.0 -5.0)))
+ (ret t)
+ (val 0.0))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) (decf val 1.0))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+
+(deftest "make-vector-integer-initial-contents" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((v (gsl-vector:make-vector
+ 5
+ :element-type 'integer
+ :initial-contents (list 1 2 3 4 5)))
+ (ret t)
+ (val 0))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) (incf val))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+(deftest "make-vector-complex-double-float-initial-contents" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((v (gsl-vector:make-vector
+ 5
+ :element-type '(complex (double-float))
+ :initial-contents
+ (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0))))
+ (ret t)
+ (val (complex 0.0d0 0.0d0)))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i)
+ (incf val (complex 1.0d0 1.0d0)))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+(deftest "make-vector-complex-single-float-initial-contents" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((v (gsl-vector:make-vector
+ 5
+ :element-type '(complex (single-float))
+ :initial-contents
+ (list (complex -1.0 -1.0) (complex -2.0 -2.0)
+ (complex -3.0 -3.0) (complex -4.0 -4.0)
+ (complex -5.0 -5.0))))
+ (ret t)
+ (val (complex 0.0 0.0)))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i)
+ (decf val (complex 1.0 1.0)))
+ (setq ret nil)))
+ (gsl-vector:free v)
+ ret)))
+
+;; ----------------------------------------------------------------------
+
+(deftest "set-all-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'double-float)
+ (gsl-vector:set-all v 5.0d0)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 5.0d0)
+ (setq ret nil)))))))
+
+
+(deftest "set-all-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'single-float)
+ (gsl-vector:set-all v 5.0)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 5.0)
+ (setq ret nil)))))))
+
+(deftest "set-all-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'integer)
+ (gsl-vector:set-all v 5)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 5)
+ (setq ret nil)))))))
+
+(deftest "set-all-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float)))
+ (gsl-vector:set-all v (complex 5.0d0 4.0d0))
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 5.0d0 4.0d0))
+ (setq ret nil)))))))
+
+(deftest "set-all-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float)))
+ (gsl-vector:set-all v (complex 5.0 4.0))
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) (complex 5.0 4.0))
+ (setq ret nil)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "set-zero-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'double-float)
+ (gsl-vector:set-all v 5.0d0)
+ (gsl-vector:set-zero v)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 0.0d0)
+ (setq ret nil)))))))
+
+
+(deftest "set-zero-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'single-float)
+ (gsl-vector:set-all v 5.0)
+ (gsl-vector:set-zero v)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 0.0)
+ (setq ret nil)))))))
+
+(deftest "set-zero-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'integer)
+ (gsl-vector:set-all v 5)
+ (gsl-vector:set-zero v)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) 0)
+ (setq ret nil)))))))
+
+(deftest "set-zero-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float)))
+ (gsl-vector:set-all v (complex 5.0d0 4.0d0))
+ (gsl-vector:set-zero v)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 0.0d0 0.0d0))
+ (setq ret nil)))))))
+
+(deftest "set-zero-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float)))
+ (gsl-vector:set-all v (complex 5.0 4.0))
+ (gsl-vector:set-zero v)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (unless (= (gsl-vector:get-element v i) (complex 0.0 0.0))
+ (setq ret nil)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "set-basis-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'double-float)
+ (gsl-vector:set-basis v 3)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 3)
+ (unless (= (gsl-vector:get-element v i) 1.0d0)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0.0d0)
+ (setq ret nil))))))))
+
+(deftest "set-basis-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'single-float)
+ (gsl-vector:set-basis v 2)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 2)
+ (unless (= (gsl-vector:get-element v i) 1.0)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0.0)
+ (setq ret nil))))))))
+
+(deftest "set-basis-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'integer)
+ (gsl-vector:set-basis v 1)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 1)
+ (unless (= (gsl-vector:get-element v i) 1)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0)
+ (setq ret nil))))))))
+
+(deftest "set-basis-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float)))
+ (gsl-vector:set-basis v 4)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 4)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 1.0d0 0.0d0))
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i)
+ (complex 0.0d0 0.0d0))
+ (setq ret nil))))))))
+
+(deftest "set-basis-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float)))
+ (gsl-vector:set-basis v 0)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 0)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 1.0 0.0))
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i)
+ (complex 0.0 0.0))
+ (setq ret nil))))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "set-element-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'double-float)
+ (gsl-vector:set-zero v)
+ (gsl-vector:set-element v 3 6.0d0)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 3)
+ (unless (= (gsl-vector:get-element v i) 6.0d0)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0.0d0)
+ (setq ret nil))))))))
+
+
+(deftest "set-element-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'single-float)
+ (gsl-vector:set-zero v)
+ (gsl-vector:set-element v 2 6.0)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 2)
+ (unless (= (gsl-vector:get-element v i) 6.0)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0.0)
+ (setq ret nil))))))))
+
+(deftest "set-element-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'integer)
+ (gsl-vector:set-zero v)
+ (gsl-vector:set-element v 1 6)
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 1)
+ (unless (= (gsl-vector:get-element v i) 6)
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i) 0)
+ (setq ret nil))))))))
+
+(deftest "set-element-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float)))
+ (gsl-vector:set-zero v)
+ (gsl-vector:set-element v 4 (complex 6.0d0 7.0d0))
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 4)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 6.0d0 7.0d0))
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i)
+ (complex 0.0d0 0.0d0))
+ (setq ret nil))))))))
+
+(deftest "set-element-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float)))
+ (gsl-vector:set-zero v)
+ (gsl-vector:set-element v 0 (complex 6.0 7.0))
+ (let ((ret t))
+ (dotimes (i 5 ret)
+ (if (= i 0)
+ (unless (= (gsl-vector:get-element v i)
+ (complex 6.0 7.0))
+ (setq ret nil))
+ (unless (= (gsl-vector:get-element v i)
+ (complex 0.0 0.0))
+ (setq ret nil))))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "isnull-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'double-float)
+ (gsl-vector:set-zero v)
+ (gsl-vector:isnull v))))
+
+
+(deftest "isnull-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'single-float)
+ (gsl-vector:set-basis v 0)
+ (not (gsl-vector:isnull v)))))
+
+
+(deftest "isnull-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector (v 5 :element-type 'integer)
+ (gsl-vector:set-zero v)
+ (gsl-vector:isnull v))))
+
+(deftest "isnull-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float)))
+ (gsl-vector:set-basis v 1)
+ (not (gsl-vector:isnull v)))))
+
+(deftest "isnull-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float)))
+ (gsl-vector:set-zero v)
+ (gsl-vector:isnull v))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "reverse-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0)))
+ (gsl-vector:with-vector
+ (v 5 :element-type 'double-float :initial-contents vec)
+ (equalp (reverse vec)
+ (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:reverse-vector v)))))))
+
+(deftest "reverse-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0 2.0 3.0 4.0 5.0)))
+ (gsl-vector:with-vector
+ (v 5 :element-type 'single-float :initial-contents vec)
+ (equalp (reverse vec)
+ (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:reverse-vector v)))))))
+
+(deftest "reverse-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1 2 3 4 5)))
+ (gsl-vector:with-vector
+ (v 5 :element-type 'integer :initial-contents vec)
+ (equalp (reverse vec)
+ (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:reverse-vector v)))))))
+
+
+(deftest "reverse-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0))))
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (double-float))
+ :initial-contents vec)
+ (equalp (reverse vec)
+ (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:reverse-vector v)))))))
+
+
+(deftest "reverse-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex -1.0 -1.0) (complex -2.0 -2.0)
+ (complex -3.0 -3.0) (complex -4.0 -4.0)
+ (complex -5.0 -5.0))))
+ (gsl-vector:with-vector
+ (v 5 :element-type '(complex (single-float))
+ :initial-contents vec)
+ (equalp (reverse vec)
+ (gsl-vector:gsl-vector->lisp-vector
+ (gsl-vector:reverse-vector v)))))))
+
+;; ----------------------------------------------------------------------
+
+(deftest "read-write-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec)
+ (gsl-vector:write-to-file "/tmp/test.txt" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'double-float
+ :from-file "/tmp/test.txt")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0 2.0 3.0 4.0 5.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec)
+ (gsl-vector:write-to-file "/tmp/test.txt" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'single-float
+ :from-file "/tmp/test.txt")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1 2 3 4 5)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec)
+ (gsl-vector:write-to-file "/tmp/test.txt" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type 'integer :from-file "/tmp/test.txt")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (double-float))
+ :initial-contents vec)
+ (gsl-vector:write-to-file "/tmp/test.txt" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (double-float))
+ :from-file "/tmp/test.txt")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 3.0 3.0) (complex 4.0 4.0)
+ (complex 5.0 5.0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (single-float))
+ :initial-contents vec)
+ (gsl-vector:write-to-file "/tmp/test.txt" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (single-float))
+ :from-file "/tmp/test.txt")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+
+;; ----------------------------------------------------------------------
+
+(deftest "read-write-binary-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0000000000001d0 2.0d0 3.0d0 4.0d0 5.0d0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'double-float :initial-contents vec)
+ (gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
+ (gsl-vector:with-vector (v2 5 :element-type 'double-float
+ :from-binary-file "/tmp/test.bin")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-binary-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1.0 2.0 3.0 4.0 5.0)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'single-float :initial-contents vec)
+ (gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
+ (gsl-vector:with-vector (v2 5 :element-type 'single-float
+ :from-binary-file "/tmp/test.bin")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+
+(deftest "read-write-binary-integer" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector 1 2 3 4 5)))
+ (gsl-vector:with-vector
+ (v1 5 :element-type 'integer :initial-contents vec)
+ (gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
+ (gsl-vector:with-vector (v2 5 :element-type 'integer
+ :from-binary-file "/tmp/test.bin")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-binary-complex-double-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0d0 1.0d0) (complex 2.0d0 2.0d0)
+ (complex 3.0d0 3.0d0) (complex 4.0d0 4.0d0)
+ (complex 5.0d0 5.0d0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (double-float))
+ :initial-contents vec)
+ (gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (double-float))
+ :from-binary-file "/tmp/test.bin")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
+
+(deftest "read-write-binary-complex-single-float" :category +vector+
+ :test-fn
+ #'(lambda ()
+ (let ((vec (vector (complex 1.0 1.0) (complex 2.0 2.0)
+ (complex 3.0 3.0) (complex 4.0 4.0)
+ (complex 5.0 5.0))))
+ (gsl-vector:with-vector
+ (v1 5 :element-type '(complex (single-float))
+ :initial-contents vec)
+ (gsl-vector:write-to-binary-file "/tmp/test.bin" v1)
+ (gsl-vector:with-vector
+ (v2 5 :element-type '(complex (single-float))
+ :from-binary-file "/tmp/test.bin")
+ (and (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v1))
+ (equalp vec
+ (gsl-vector:gsl-vector->lisp-vector v2))))))))
1
0