Hello, =20
=20
I noticed a problem with the geev-workspace-inquiry functions. It
causes a problem if you do for instance (geev (eye 3) :vv). This
patch should correct the issue.
Paul
Index: geev.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvsroot/matlisp/matlisp/src/geev.lisp,v
retrieving revision 1.10
diff -u -w -r1.10 geev.lisp
--- geev.lisp=0926 Oct 2001 15:24:16 -0000=091.10
+++ geev.lisp=0916 Aug 2005 20:32:41 -0000
@@ -249,7 +249,8 @@
=09 (:vv (values "V" "V")))
=20
(let* ((ldvr (if (equal jobvr "V") n 1))
-=09 (xxx (allocate-complex-store ldvr)))
+=09 (ldvl (if (equal jobvl "V") n 1))
+=09 (xxx (allocate-complex-store 1))) ; this is a dummy variable
=20
=09(multiple-value-bind (store-a store-wr store-wi store-vl store-vr
=09=09=09=09 work info)
@@ -261,7 +262,7 @@
=09=09 xxx=09=09=09; WR
=09=09 xxx=09=09=09; WI
=09=09 xxx=09=09=09; VL
-=09=09 1=09=09=09; LDVL
+=09=09 ldvl=09=09=09; LDVL
=09=09 xxx=09=09=09; VR
=09=09 ldvr=09=09=09; LDVR
=09=09 work=09=09=09; WORK
@@ -390,7 +391,8 @@
=09 (:vv (values "V" "V")))
=20
(let* ((ldvr (if (equal jobvr "V") n 1))
-=09 (xxx (allocate-complex-store ldvr)))
+=09 (ldvl (if (equal jobvl "V") n 1))
+=09 (xxx (allocate-complex-store 1)))
=20
=09(multiple-value-bind (store-a store-w store-vl store-vr work info)
=09 (zgeev jobvl
@@ -400,14 +402,15 @@
=09=09 n=09=09=09; LDA
=09=09 xxx=09=09=09; W
=09=09 xxx=09=09=09; VL
-=09=09 1=09=09=09; LDVL
+=09=09 ldvl=09=09=09; LDVL
=09=09 xxx=09=09=09; VR
=09=09 ldvr=09=09=09; LDVR
=09=09 work=09=09=09; WORK
=09=09 -1=09=09=09; LWORK
=09=09 xxx=09=09=09; RWORK
=09=09 0 )=09=09=09; INFO
-=09 (declare (ignore store-a store-w store-vl store-vr info))
+=09 (declare (ignore store-a store-w store-vl store-vr))
+=09 (assert (zerop info))
=09 ;; The desired size in in work[0], which we convert to an
=09 ;; integer.
=09 (ceiling (aref work 0)))))))
|