matlisp-users

 [Matlisp-users] geev left eigenvectors From: Paul Ledbetter III - 2005-08-16 21:23:18 ```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))))))) ```