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) |