From 8a08f552da0657a131449bc5573fd9552fdc5e96 Mon Sep 17 00:00:00 2001 From: Liam Healy <liam@thinkpad.local> Date: Sun, 3 May 2009 12:18:03 -0400 Subject: [PATCH] Conditionalize FSBV All source code is now conditionalized so that FSBV is optional. If present, functions using complex scalars will work. If absent, GSLL will compile and load correctly, and all functions except those using complex scalars will work. The examples and tests are defined appropriately. Documentation on FSBV dependence has been added to index.html. --- data/array-tests.lisp | 6 +++--- data/both.lisp | 4 +++- documentation/index.html | 12 ++++++++--- gsll-tests.asd | 4 ++-- gsll.asd | 8 ++++++-- init/body-expand.lisp | 16 +++++++++++++-- init/complex-types.lisp | 10 +++++++++- init/types.lisp | 6 +++--- linear-algebra/blas1.lisp | 12 +++++------ linear-algebra/blas2.lisp | 30 +++++++++++++++++----------- linear-algebra/blas3.lisp | 25 ++++++++++++++--------- polynomial.lisp | 4 +++- tests/axpy.lisp | 2 ++ tests/inverse-matrix-product.lisp | 2 ++ tests/matrix-product-nonsquare.lisp | 2 ++ tests/matrix-product-triangular.lisp | 4 ++++ tests/matrix-product.lisp | 4 ++++ tests/matrix-set-all.lisp | 2 ++ tests/scale.lisp | 2 ++ tests/vector-set-all.lisp | 2 ++ 20 files changed, 112 insertions(+), 45 deletions(-) diff --git a/data/array-tests.lisp b/data/array-tests.lisp index 7e958f0a..75d2343e 100644 --- a/data/array-tests.lisp +++ b/data/array-tests.lisp @@ -1,6 +1,6 @@ ;; Tests of array functions ;; Liam Healy 2008-10-20 22:41:48EDT array-tests.lisp -;; Time-stamp: <2009-04-29 22:23:37EDT array-tests.lisp> +;; Time-stamp: <2009-05-03 11:18:04EDT array-tests.lisp> ;; $Id: $ ;;; Generate each file with #'write-test-to-file, e.g. @@ -15,11 +15,11 @@ ;;;; Bulk operations ;;;;**************************************************************************** -(generate-all-array-tests vector-set-all t +(generate-all-array-tests vector-set-all #+fsbv t #-fsbv :no-complex (let ((v1 (array-default 3 t))) (cl-array (set-all v1 (scalar-default))))) -(generate-all-array-tests matrix-set-all t +(generate-all-array-tests matrix-set-all #+fsbv t #-fsbv :no-complex (let ((m1 (array-default '(3 3) t))) (cl-array (set-all m1 (scalar-default))))) diff --git a/data/both.lisp b/data/both.lisp index f95bfbbc..9bfbfac0 100644 --- a/data/both.lisp +++ b/data/both.lisp @@ -1,6 +1,6 @@ ;; Functions for both vectors and matrices. ;; Liam Healy 2008-04-26 20:48:44EDT both.lisp -;; Time-stamp: <2009-04-26 22:29:34EDT both.lisp> +;; Time-stamp: <2009-05-03 11:24:50EDT both.lisp> ;; $Id$ (in-package :gsl) @@ -39,6 +39,7 @@ ("gsl_" :category :type "_set_all") (((mpointer object) :pointer) (value :element-c-type)) :definition :generic + :element-types #+fsbv t #-fsbv :no-complex :inputs (object) :outputs (object) :c-return :void @@ -90,6 +91,7 @@ ("gsl_" :category :type "_set") (((mpointer object) :pointer) (index sizet) (value :element-c-type)) :definition :generic + :element-types #+fsbv t #-fsbv :no-complex :inputs (object) :outputs (object) :c-return :void diff --git a/documentation/index.html b/documentation/index.html index cacee144..55816321 100644 --- a/documentation/index.html +++ b/documentation/index.html @@ -115,6 +115,8 @@ version 0.10.0 or newer; callbacks and <code>foreign-funcall</code> must be supp <li><a href="http://www.cliki.net/asdf">ASDF</a></li> <li><a href="http://repo.or.cz/w/lisp-unit.git">lisp-unit</a>, <i>(Optional)</i> necessary to run <code>gsll-tests</code> +<li><a href="http://repo.or.cz/w/fsbv.git">FSBV</a>, <i>(Optional)</i> necessary + for functions using complex scalars </li> </ul> @@ -135,7 +137,9 @@ version 0.10.0 or newer; callbacks and <code>foreign-funcall</code> must be supp <p>Download/update: <ul> <li><code>git clone git://repo.or.cz/gsll.git</code></li> - <li><code>git pull</code> in the <code>gsll</code> directory + <li><code>git clone git://repo.or.cz/fsbv.git</code></li> + <li><code>git pull</code> in the <code>gsll</code> and + <code>fsbv</code> directories afterwards to update</li> </ul> <p>The <a href="http://repo.or.cz/w/gsll.git"> repository web page</a> @@ -152,6 +156,7 @@ Then in Lisp, load the system: Add the following to <code>wnpp-projects</code>: <ul> <li><code>gsll get_git git://repo.or.cz/gsll.git</code></li> + <li><code>fsbv get_git git://repo.or.cz/fsbv.git</code></li> <li><code>trivial-garbage get_darcs http://common-lisp.net/~loliveira/darcs/trivial-garbage</code></li> </ul> <p>and add @@ -166,11 +171,12 @@ from within the clbuild directory: </ul> <h3>With Debian or Ubuntu</h3> <ul> - <li><code>sudo aptitude install libgsl0-dev cl-cffi</code></li> + <li><code>sudo aptitude install libgsl0-dev cl-cffi libffi-dev</code></li> <li><code>git clone git://repo.or.cz/gsll.git</code></li> <li><code>darcs get http://common-lisp.net/~loliveira/darcs/trivial-garbage</code></li> <li><code>clc-register-user-package trivial-garbage/trivial-garbage.asd</code></li> <li><code>clc-register-user-package gsll/gsll.asd</code></li> + <li><code>clc-register-user-package gsll/fsbv.asd</code></li> <li><code>clc-register-user-package gsll/gsll-tests.asd</code></li> </ul> <p> @@ -386,7 +392,7 @@ and arrays used internally or for function return. <!-- Created: Feb 25 2005 --> <!-- hhmts start --> <small> -Time-stamp: <2009-04-04 18:01:52EDT index.html> +Time-stamp: <2009-05-03 12:08:21EDT index.html> </small> <!-- hhmts end --> </div> diff --git a/gsll-tests.asd b/gsll-tests.asd index 74b001bf..d6c7312c 100644 --- a/gsll-tests.asd +++ b/gsll-tests.asd @@ -1,6 +1,6 @@ ;; Definition of GSLL system ;; Liam Healy -;; Time-stamp: <2009-04-29 22:25:14EDT gsll-tests.asd> +;; Time-stamp: <2009-05-03 11:16:04EDT gsll-tests.asd> (asdf:defsystem "gsll-tests" :name "gsll-tests" @@ -99,7 +99,7 @@ (:file "matrix-sub") (:file "matrix-add") (:file "matrix-mult") - (:file "matrix-product-hermitian") + #+fsbv (:file "matrix-product-hermitian") (:file "matrix-product") (:file "matrix-product-nonsquare") (:file "matrix-product-symmetric") diff --git a/gsll.asd b/gsll.asd index f165964b..7c1b9618 100644 --- a/gsll.asd +++ b/gsll.asd @@ -1,15 +1,18 @@ ;; Definition of GSLL system ;; Liam Healy -;; Time-stamp: <2009-04-16 21:33:09EDT gsll.asd> +;; Time-stamp: <2009-05-03 09:37:17EDT gsll.asd> ;; $Id$ +(when (asdf:find-system :fsbv nil) + (pushnew :fsbv *features*)) + (asdf:defsystem "gsll" :name "gsll" :description "GNU Scientific Library for Lisp." :version "0" :author "Liam M. Healy" :licence "LLGPL v3, FDL" - :depends-on (cffi trivial-garbage fsbv) + :depends-on (cffi trivial-garbage #+fsbv fsbv) :components ((:module init :components @@ -44,6 +47,7 @@ :depends-on (init) :components ((:file "mathematical") + #+fsbv (:file "complex"))) (:module data :depends-on (init) diff --git a/init/body-expand.lisp b/init/body-expand.lisp index d1b69cf7..ad4cbe95 100644 --- a/init/body-expand.lisp +++ b/init/body-expand.lisp @@ -1,6 +1,6 @@ ;; Expand the body of a defmfun ;; Liam Healy 2009-04-13 22:07:13EDT body-expand.lisp -;; Time-stamp: <2009-05-02 21:43:36EDT body-expand.lisp> +;; Time-stamp: <2009-05-03 10:03:03EDT body-expand.lisp> ;; $Id: $ (in-package :gsl) @@ -42,6 +42,17 @@ :test 'st-symbol)) finally (return answer))) +;;; This function should never be called even when FSBV is absent, +;;; because the potential callers should all have #-fsbv +;;; conditionalization. It is here just so that body-expand can +;;; compile when FSBV is absent. +#-fsbv +(defmacro no-fsbv-error (function-name &rest args) + (declare (ignore args)) + `(error + "System FSBV is not present, so function ~a cannot be used." + ,function-name)) + (defun body-expand (name arglist gsl-name c-arguments key-args) "Expand the body (computational part) of the defmfun." (with-defmfun-key-args key-args @@ -86,7 +97,8 @@ cbinfo callback-dynamic-variables callback-dynamic) (let ((,(st-symbol creturn-st) (,(if (some 'identity pbv) - 'fsbv:foreign-funcall + #+fsbv 'fsbv:foreign-funcall + #-fsbv 'no-fsbv-error 'cffi:foreign-funcall) ,gsl-name ,@(mappend diff --git a/init/complex-types.lisp b/init/complex-types.lisp index e6211cb0..e48637e7 100644 --- a/init/complex-types.lisp +++ b/init/complex-types.lisp @@ -1,6 +1,6 @@ ;; Complex number types ;; Liam Healy 2009-01-13 21:24:05EST complex-types.lisp -;; Time-stamp: <2009-04-26 00:02:09EDT complex-types.lisp> +;; Time-stamp: <2009-05-03 10:00:23EDT complex-types.lisp> ;; $Id: $ (in-package :gsl) @@ -27,14 +27,22 @@ ;;; cannot use functions that call or return complex scalars. ;;; See /usr/include/gsl/gsl_complex.h +#+fsbv (fsbv:defcstruct (complex-float-c :constructor complex :deconstructor (realpart imagpart)) (dat :float :count 2)) +#-fsbv +(cffi:defcstruct complex-float-c (dat :float :count 2)) + +#+fsbv (fsbv:defcstruct (complex-double-c :constructor complex :deconstructor (realpart imagpart)) (dat :double :count 2)) +#-fsbv +(cffi:defcstruct complex-double-c (dat :double :count 2)) + #+long-double (cffi:defcstruct complex-long-double-c (dat :long-double :count 2)) diff --git a/init/types.lisp b/init/types.lisp index ace07569..969aba87 100644 --- a/init/types.lisp +++ b/init/types.lisp @@ -1,6 +1,6 @@ ;; Number types used by GSL functions, and specification conversion ;; Liam Healy 2008-12-31 21:06:34EST types.lisp -;; Time-stamp: <2009-04-29 22:48:31EDT types.lisp> +;; Time-stamp: <2009-05-03 09:42:01EDT types.lisp> ;; $Id: $ (in-package :gsl) @@ -14,11 +14,11 @@ (8 (push :int64 *features*) (cffi:defctype sizet :uint64) - (fsbv:defsynonym sizet :uint64)) + #+fsbv (fsbv:defsynonym sizet :uint64)) (4 (push :int32 *features*) (cffi:defctype sizet :uint32) - (fsbv:defsynonym sizet :uint64)) + #+fsbv (fsbv:defsynonym sizet :uint32)) (t (error "Size of :long unrecognized"))) ;;;;**************************************************************************** diff --git a/linear-algebra/blas1.lisp b/linear-algebra/blas1.lisp index e1f12db7..3d37e4a8 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: <2009-04-27 21:30:47EDT blas1.lisp> +;; Time-stamp: <2009-05-03 11:28:12EDT blas1.lisp> ;; $Id$ (in-package :gsl) @@ -103,7 +103,7 @@ ("gsl_blas_" :type "axpy") ((alpha :element-c-type) ((mpointer x) :pointer) ((mpointer y) :pointer)) :definition :generic - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (x y) :outputs (y) :documentation ; FDL @@ -115,7 +115,7 @@ ("gsl_blas_" :type "scal") ((alpha :element-c-type) ((mpointer x) :pointer)) :definition :generic - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :c-return :void :inputs (x) :outputs (x) @@ -194,12 +194,12 @@ (generate-all-array-tests dot :float-complex (let ((v1 (array-default 8)) - (v2 (array-default 8))) + (v2 (array-default 8))) (dot v1 v2))) (generate-all-array-tests cdot :complex (let ((v1 (array-default 8)) - (v2 (array-default 8))) + (v2 (array-default 8))) (cdot v1 v2))) (generate-all-array-tests euclidean-norm :float-complex @@ -232,7 +232,7 @@ (scalar (scalar-default))) (cl-array (axpy scalar v1 v2)))) -(generate-all-array-tests scale :float-complex +(generate-all-array-tests scale #+fsbv :float-complex #-fsbv :float (let ((v1 (array-default 8)) (scalar (scalar-default))) (cl-array (scale scalar v1)))) diff --git a/linear-algebra/blas2.lisp b/linear-algebra/blas2.lisp index e5d7b83c..67124af3 100644 --- a/linear-algebra/blas2.lisp +++ b/linear-algebra/blas2.lisp @@ -1,6 +1,6 @@ ;; BLAS level 2, Matrix-vector operations ;; Liam Healy, Wed Apr 26 2006 - 21:08 -;; Time-stamp: <2009-04-29 20:38:03EDT blas2.lisp> +;; Time-stamp: <2009-05-03 11:31:55EDT blas2.lisp> ;; $Id$ (in-package :gsl) @@ -15,18 +15,21 @@ "CBLAS_TRANSPOSE from /usr/include/gsl/gsl_cblas.h." (:notrans 111) :trans :conjtrans) +#+fsbv (fsbv:defcenum-aux cblas-transpose) (cffi:defcenum cblas-uplo "/usr/include/gsl/gsl_cblas.h." (:upper 121) :lower) +#+fsbv (fsbv:defcenum-aux cblas-uplo) (cffi:defcenum cblas-diag "/usr/include/gsl/gsl_cblas.h." (:nonunit 131) :unit) +#+fsbv (fsbv:defcenum-aux cblas-diag) ;;;;**************************************************************************** @@ -39,7 +42,6 @@ (second (dimensions b))) (first (dimensions a)))) -;;; To do: the y should be an optional argument, default to a zero vector. (defmfun matrix-product ((A matrix) (x vector) &optional @@ -51,7 +53,7 @@ ((transa cblas-transpose) (alpha :element-c-type) ((mpointer A) :pointer) ((mpointer x) :pointer) (beta :element-c-type) ((mpointer y) :pointer)) :definition :generic - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A x y) :outputs (y) :documentation ; FDL @@ -78,7 +80,7 @@ :outputs (x) :documentation ; FDL "If the second argument is a vector, compute - the matrix-vector product x =alpha op(A) x + the matrix-vector product x = op(A) x for the triangular matrix A, where op(A) = A, A^T, A^H for TransA = :NoTrans, :Trans, :ConjTrans. When Uplo is :Upper then the upper triangle of A is used, and when @@ -88,7 +90,7 @@ matrix A are taken as unity and are not referenced. If the second argument is a matrix, compute the matrix-matrix product B = alpha op(A) B - if Side is :Left and B = \alpha B op(A) if Side is + if Side is :Left and B = alpha B op(A) if Side is :Right. The matrix A is triangular and op(A) = A, A^T, A^H for TransA = :NoTrans, :Trans, :ConjTrans When Uplo is :Upper then the upper triangle of A is used, and when @@ -157,14 +159,13 @@ are used, and when Uplo is :Lower then the lower triangle and diagonal of A are used.") +#+fsbv (defmfun matrix-product-hermitian ((A matrix) (x vector) &optional (y (make-marray element-type :dimensions (matrix-product-dimensions A x) :initial-element 0)) (alpha 1) (beta 1) (uplo :upper) (side :left)) - ;; This always signals an error because you can't pass a - ;; struct in CFFI yet. ("gsl_blas_" :type "hemv") ((uplo cblas-uplo) (alpha :element-c-type) ((mpointer A) :pointer) ((mpointer x) :pointer) (beta :element-c-type) ((mpointer y) :pointer)) @@ -194,7 +195,7 @@ ((alpha :element-c-type) ((mpointer A) :pointer) ((mpointer x) :pointer) ((mpointer y) :pointer)) :definition :generic - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (x y A) :outputs (A) :documentation ; FDL @@ -205,7 +206,7 @@ ((alpha :element-c-type) ((mpointer A) :pointer) ((mpointer x) :pointer) ((mpointer y) :pointer)) :definition :generic - :element-types :complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (x y A) :outputs (A) :documentation ; FDL @@ -236,6 +237,7 @@ used, and when Uplo is CblasLower then the lower triangle and diagonal of C are used.") +#+fsbv (defmfun hermitian-rank-1-update ((x vector) (A matrix) &optional (alpha 1) (beta 1) (uplo :upper) (trans :notrans)) @@ -289,6 +291,7 @@ then the upper triangle and diagonal of C are used, and when Uplo is :lower then the lower triangle and diagonal of C are used.") +#+fsbv (defmfun hermitian-rank-2-update ((x vector) (y vector) (A matrix) &optional (alpha 1) (beta 1) (uplo :upper) (trans :notrans)) @@ -321,7 +324,7 @@ ;;;; Examples and unit test ;;;;**************************************************************************** -(generate-all-array-tests matrix-product :float-complex +(generate-all-array-tests matrix-product #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (v1 (array-default 3)) (v2 (array-default 3)) @@ -329,13 +332,15 @@ (s2 (scalar-default))) (cl-array (matrix-product m1 v1 v2 s1 s2)))) -(generate-all-array-tests matrix-product-triangular :float-complex +(generate-all-array-tests matrix-product-triangular + #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (v1 (array-default 3)) (s1 (scalar-default))) (cl-array (matrix-product-triangular m1 v1 s1)))) -(generate-all-array-tests inverse-matrix-product :float-complex +(generate-all-array-tests inverse-matrix-product + #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (v1 (array-default 3)) (s1 (scalar-default))) @@ -349,6 +354,7 @@ (s2 (scalar-default))) (cl-array (matrix-product-symmetric m1 v1 v3 s1 s2)))) +#+fsbv (generate-all-array-tests matrix-product-hermitian :complex (let ((m1 (array-default '(3 3))) (v1 (array-default 3)) diff --git a/linear-algebra/blas3.lisp b/linear-algebra/blas3.lisp index 5bba4439..95dcfd36 100644 --- a/linear-algebra/blas3.lisp +++ b/linear-algebra/blas3.lisp @@ -1,6 +1,6 @@ ;; BLAS level 3, Matrix-matrix operations ;; Liam Healy, Wed Apr 26 2006 - 21:08 -;; Time-stamp: <2009-04-29 20:36:48EDT blas3.lisp> +;; Time-stamp: <2009-05-03 11:18:02EDT blas3.lisp> ;; $Id$ (in-package :gsl) @@ -15,6 +15,7 @@ "/usr/include/gsl/gsl_cblas.h." (:left 141) :right) +#+fsbv (fsbv:defcenum-aux cblas-side) ;;;;**************************************************************************** @@ -33,7 +34,7 @@ (alpha :element-c-type) ((mpointer A) :pointer) ((mpointer B) :pointer) (beta :element-c-type) ((mpointer C) :pointer)) :definition :methods - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A B C) :outputs (C)) @@ -48,10 +49,11 @@ ((mpointer A) :pointer) ((mpointer B) :pointer) (beta :element-c-type) ((mpointer C) :pointer)) :definition :methods - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A B C) :outputs (C)) +#+fsbv (defmfun matrix-product-hermitian ((A matrix) (B matrix) &optional @@ -78,7 +80,7 @@ (diag cblas-diag) (alpha :element-c-type) ((mpointer A) :pointer) ((mpointer B) :pointer)) :definition :methods - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A B) :outputs (B)) @@ -93,7 +95,7 @@ (TransA cblas-transpose) (diag cblas-diag) (alpha :element-c-type) ((mpointer A) :pointer) ((mpointer B) :pointer)) :definition :methods - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A B) :outputs (B)) @@ -105,10 +107,11 @@ (alpha :element-c-type) ((mpointer A) :pointer) (beta :element-c-type) ((mpointer C) :pointer)) :definition :methods - :element-types :float-complex + :element-types #+fsbv :float-complex #-fsbv :float :inputs (A C) :outputs (C)) +#+fsbv (defmfun hermitian-rank-1-update ((A matrix) (C matrix) &optional (alpha 1) (beta 1) (uplo :upper) (trans :notrans)) @@ -134,6 +137,7 @@ :inputs (A B C) :outputs (C)) +#+fsbv (defmfun hermitian-rank-2-update ((A matrix) (B matrix) (C matrix) &optional (alpha 1) (beta 1) (uplo :upper) (trans :notrans)) @@ -151,7 +155,7 @@ ;;;; Examples and unit test ;;;;**************************************************************************** -(generate-all-array-tests matrix-product :float-complex +(generate-all-array-tests matrix-product #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (m2 (array-default '(3 3))) (m3 (array-default '(3 3))) @@ -164,13 +168,15 @@ (m2 (array-default '(3 2)))) (cl-array (matrix-product m1 m2)))) -(generate-all-array-tests matrix-product-triangular :float-complex +(generate-all-array-tests matrix-product-triangular + #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (m2 (array-default '(3 3))) (s1 (scalar-default))) (cl-array (matrix-product-triangular m1 m2 s1)))) -(generate-all-array-tests inverse-matrix-product :float-complex +(generate-all-array-tests inverse-matrix-product + #+fsbv :float-complex #-fsbv :float (let ((m1 (array-default '(3 3))) (m2 (array-default '(3 3))) (s1 (scalar-default))) @@ -184,6 +190,7 @@ (s2 (scalar-default))) (cl-array (matrix-product-symmetric m1 m2 m3 s1 s2)))) +#+fsbv (generate-all-array-tests matrix-product-hermitian :complex (let ((m1 (array-default '(3 3))) (m2 (array-default '(3 3))) diff --git a/polynomial.lisp b/polynomial.lisp index 8adc4df5..c4e4d5af 100644 --- a/polynomial.lisp +++ b/polynomial.lisp @@ -1,6 +1,6 @@ ;; Polynomials ;; Liam Healy, Tue Mar 21 2006 - 18:33 -;; Time-stamp: <2009-04-30 22:57:18EDT polynomial.lisp> +;; Time-stamp: <2009-05-03 09:37:35EDT polynomial.lisp> ;; $Id$ (in-package :gsl) @@ -26,6 +26,7 @@ :documentation ; FDL "Evaluate the polyonomial with coefficients at the point x.") +#+fsbv (defmfun evaluate ((coefficients vector-double-float) (x complex) &key) @@ -39,6 +40,7 @@ :documentation ; FDL "Evaluate the polyonomial with coefficients at the complex value x.") +#+fsbv (defmfun evaluate ((coefficients vector-complex-double-float) (x complex) &key) diff --git a/tests/axpy.lisp b/tests/axpy.lisp index be096928..86db499b 100644 --- a/tests/axpy.lisp +++ b/tests/axpy.lisp @@ -36,6 +36,7 @@ -49.08d0))) (SCALAR -39.66d0)) (CL-ARRAY (AXPY SCALAR V1 V2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(1808.3204 1422.3015) #C(-589.3992 234.75043) @@ -59,6 +60,7 @@ 31.67))) (SCALAR #C(-39.66 -49.46))) (CL-ARRAY (AXPY SCALAR V1 V2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(1808.3204d0 1422.3016000000002d0) diff --git a/tests/inverse-matrix-product.lisp b/tests/inverse-matrix-product.lisp index bfac7c9d..d84e0ba5 100644 --- a/tests/inverse-matrix-product.lisp +++ b/tests/inverse-matrix-product.lisp @@ -42,6 +42,7 @@ (-49.08d0 -39.66d0 -49.46d0)))) (S1 19.68d0)) (CL-ARRAY (INVERSE-MATRIX-PRODUCT M1 M2 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-28.191956 35.052914) #C(-13.378113 28.736774) @@ -71,6 +72,7 @@ -5.55 -8.82)))) (S1 #C(19.68 -5.55))) (CL-ARRAY (INVERSE-MATRIX-PRODUCT M1 M2 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-28.191956546692666d0 35.052909000810466d0) diff --git a/tests/matrix-product-nonsquare.lisp b/tests/matrix-product-nonsquare.lisp index 14ee6e71..1b580601 100644 --- a/tests/matrix-product-nonsquare.lisp +++ b/tests/matrix-product-nonsquare.lisp @@ -30,6 +30,7 @@ (32.5d0 42.73d0) (-17.24d0 43.31d0))))) (CL-ARRAY (MATRIX-PRODUCT M1 M2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-1422.0259 2305.5098) @@ -51,6 +52,7 @@ (32.5 42.73 -17.24 43.31) (-17.24 43.31 -16.12 -8.25))))) (CL-ARRAY (MATRIX-PRODUCT M1 M2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-1422.0258d0 2305.5097000000005d0) diff --git a/tests/matrix-product-triangular.lisp b/tests/matrix-product-triangular.lisp index 5f98794b..4f5dc56e 100644 --- a/tests/matrix-product-triangular.lisp +++ b/tests/matrix-product-triangular.lisp @@ -42,6 +42,7 @@ (-49.08d0 -39.66d0 -49.46d0)))) (S1 19.68d0)) (CL-ARRAY (MATRIX-PRODUCT-TRIANGULAR M1 M2 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-66397.9 18986.908) #C(-56335.145 48514.305) @@ -72,6 +73,7 @@ -5.55 -8.82)))) (S1 #C(19.68 -5.55))) (CL-ARRAY (MATRIX-PRODUCT-TRIANGULAR M1 M2 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-66397.89753899998d0 18986.908142999997d0) @@ -130,6 +132,7 @@ '(42.73d0 -17.24d0 43.31d0))) (S1 -16.12d0)) (CL-ARRAY (MATRIX-PRODUCT-TRIANGULAR M1 V1 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(-1483.223 1289.3523) #C(-57.63159 1675.6711) @@ -151,6 +154,7 @@ 21.44))) (S1 #C(-16.12 -8.25))) (CL-ARRAY (MATRIX-PRODUCT-TRIANGULAR M1 V1 S1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(-1483.2230999999997d0 1289.3523999999998d0) diff --git a/tests/matrix-product.lisp b/tests/matrix-product.lisp index 7389dc1c..de5af1a0 100644 --- a/tests/matrix-product.lisp +++ b/tests/matrix-product.lisp @@ -54,6 +54,7 @@ (S1 -41.67d0) (S2 42.0d0)) (CL-ARRAY (MATRIX-PRODUCT M1 M2 M3 S1 S2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(140927.64 -143005.16) #C(72986.305 -201162.86) @@ -93,6 +94,7 @@ (S1 #C(-41.67 42.0)) (S2 #C(42.0 -20.81))) (CL-ARRAY (MATRIX-PRODUCT M1 M2 M3 S1 S2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(140927.638311d0 -143005.14965699997d0) @@ -171,6 +173,7 @@ (S1 -49.08d0) (S2 -39.66d0)) (CL-ARRAY (MATRIX-PRODUCT M1 V1 V2 S1 S2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(124163.57 -3332.2988) #C(119793.48 -166378.0) @@ -198,6 +201,7 @@ (S1 #C(-49.08 -39.66)) (S2 #C(-39.66 -49.46))) (CL-ARRAY (MATRIX-PRODUCT M1 V1 V2 S1 S2))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(124163.58013199999d0 -3332.2974459999896d0) diff --git a/tests/matrix-set-all.lisp b/tests/matrix-set-all.lisp index 44cb017b..ce578211 100644 --- a/tests/matrix-set-all.lisp +++ b/tests/matrix-set-all.lisp @@ -21,6 +21,7 @@ (LET ((M1 (MAKE-MARRAY 'DOUBLE-FLOAT :DIMENSIONS '(3 3)))) (CL-ARRAY (SET-ALL M1 -34.5d0))))) + #+fsbv (LISP-UNIT:ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-34.5 8.24) #C(-34.5 8.24) #C(-34.5 8.24)) @@ -31,6 +32,7 @@ (MAKE-MARRAY '(COMPLEX SINGLE-FLOAT) :DIMENSIONS '(3 3)))) (CL-ARRAY (SET-ALL M1 #C(-34.5 8.24)))))) + #+fsbv (LISP-UNIT:ASSERT-NUMERICAL-EQUAL (LIST #2A((#C(-34.5d0 8.24d0) #C(-34.5d0 8.24d0) diff --git a/tests/scale.lisp b/tests/scale.lisp index e40fe7c5..50e49f0f 100644 --- a/tests/scale.lisp +++ b/tests/scale.lisp @@ -62,6 +62,7 @@ -13.49d0))) (SCALAR 32.5d0)) (CL-ARRAY (SCALE SCALAR V1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(-1473.3452 -1206.385) #C(488.5039 -149.64331) @@ -78,6 +79,7 @@ -49.08))) (SCALAR #C(32.5 42.73))) (CL-ARRAY (SCALE SCALAR V1))))) + #+fsbv (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST #(#C(-1473.3452d0 -1206.385d0) diff --git a/tests/vector-set-all.lisp b/tests/vector-set-all.lisp index 82639074..331e3dfe 100644 --- a/tests/vector-set-all.lisp +++ b/tests/vector-set-all.lisp @@ -13,6 +13,7 @@ (MULTIPLE-VALUE-LIST (LET ((V1 (MAKE-MARRAY 'DOUBLE-FLOAT :DIMENSIONS '3))) (CL-ARRAY (SET-ALL V1 -34.5d0))))) + #+fsbv (LISP-UNIT:ASSERT-NUMERICAL-EQUAL (LIST #(#C(-34.5 8.24) #C(-34.5 8.24) #C(-34.5 8.24))) (MULTIPLE-VALUE-LIST @@ -20,6 +21,7 @@ (MAKE-MARRAY '(COMPLEX SINGLE-FLOAT) :DIMENSIONS '3))) (CL-ARRAY (SET-ALL V1 #C(-34.5 8.24)))))) + #+fsbv (LISP-UNIT:ASSERT-NUMERICAL-EQUAL (LIST #(#C(-34.5d0 8.24d0) #C(-34.5d0 8.24d0) -- GitLab