|
From: Michael A. K. <mic...@ea...> - 2001-10-27 10:52:55
|
The COPY! and the SETF (DIAG X) methods are broke under RH Linux/CMUCL. This appears to be due to removal of the FORTRAN-DSCAL command from BLAS.LISP and no corresponding changes to COPY! and SETF
(DIAG X).
I have edited my local files, recompiled and tested and all seems well. I request that these changes be added to CVS.
tnx
mike
--
Dr Michael A. Koerber
MIT/LL
==========================================================
DIAG.LISP Diff's
=================
To me it seems that the #+:ALLEGRO method is sufficient. I removed the #+:CMU method and all seems well. The diff's are
[mak@koerber src]$ diff -u diag.lisp.orig diag.lisp
--- diag.lisp.orig Tue Jul 11 14:02:03 2000
+++ diag.lisp Sat Oct 27 06:25:29 2001
@@ -64,8 +64,6 @@
#+nil (export 'diag)
-;; note: here and in copy change fortran-dscal to dcopy.
-
(defgeneric diag (matrix)
(:documentation
"
@@ -168,7 +166,6 @@
(zcopy p (store mat) (1+ n) (store result) 1)
result)))
-
(defmethod (setf diag) ((new-diag complex-matrix) (mat complex-matrix))
(let* ((n (nrows mat))
(m (ncols mat))
@@ -181,31 +178,6 @@
(zcopy (min n m n-new m-new) (store new-diag) (1+ n-new) (store mat) (1+ n)))
mat))
-
-#+:cmu
-(defmethod (setf diag) ((new-diag real-matrix) (mat complex-matrix))
- (let* ((n (nrows mat))
- (m (ncols mat))
- (n-new (nrows new-diag))
- (m-new (ncols new-diag))
- (nxm-new (number-of-elements new-diag)))
- (declare (type fixnum n m n-new m-new nxm-new))
-
- (if (row-or-col-vector-p new-diag)
- (progn
- (with-vector-data-addresses ((addr-mat (store mat)))
- (incf-sap :double-float addr-mat)
- (blas::fortran-dscal (min n m nxm-new) 0.0d0 addr-mat (+ 2 (* 2 n))))
- (dcopy (min n m nxm-new) (store new-diag) 1 (store mat) (+ 2 (* 2 n))))
- (progn
- (with-vector-data-addresses ((addr-mat (store mat)))
- (incf-sap :double-float addr-mat)
- (blas::fortran-dscal (min n m n-new m-new) 0.0d0 addr-mat (+ 2 (* 2 n))))
- (dcopy (min n m n-new m-new) (store new-diag) (1+ n-new) (store mat) (+ 2 (* 2 n)))))
-
- mat))
-
-#+:allegro
(defmethod (setf diag) ((new-diag real-matrix) (mat complex-matrix))
(let* ((n (nrows mat))
(m (ncols mat))
COPY! DIFF's
=============
Again, the #+:ALLEGRO code seems sufficient. The diff's are
[mak@koerber src]$ diff -u copy.lisp.orig copy.lisp
--- copy.lisp.orig Tue Jul 11 14:02:03 2000
+++ copy.lisp Sat Oct 27 06:14:05 2001
@@ -151,11 +151,6 @@
(nxm (min nxm-x nxm-y)))
(declare (type fixnum nxm-x nxm-y nxm))
- #+:cmu
- (with-vector-data-addresses ((addr-y (store y)))
- (incf-sap :double-float addr-y)
- (blas::fortran-dscal nxm 0.0d0 addr-y 2))
- #+:allegro
(zdscal nxm 0.0d0 (store y) 1)
(dcopy nxm (store x) 1 (store y) 2)
|