@@ -2835,7 +2835,7 @@ for (orglq, orgqr, orgql, orgrq, ormlq, ormqr, ormql, ormrq, gemqrt, elty) in
28352835 end
28362836 end
28372837 if n < size (A,2 )
2838- A[:, 1 : n]
2838+ reshape ( resize! ( vec (A), m * n), m, n)
28392839 else
28402840 A
28412841 end
@@ -2871,7 +2871,7 @@ for (orglq, orgqr, orgql, orgrq, ormlq, ormqr, ormql, ormrq, gemqrt, elty) in
28712871 end
28722872 end
28732873 if n < size (A,2 )
2874- A[:, 1 : n]
2874+ reshape ( resize! ( vec (A), m * n), m, n)
28752875 else
28762876 A
28772877 end
@@ -3736,22 +3736,24 @@ for (trcon, trevc, trrfs, elty) in
37363736 work, info, 1 , 1 )
37373737 chklapackerror (info[])
37383738
3739+ VLn = size (VL, 1 )
3740+ VRn = size (VR, 1 )
37393741 # Decide what exactly to return
37403742 if howmny == ' S' # compute selected eigenvectors
37413743 if side == ' L' # left eigenvectors only
3742- return select, VL[:, 1 : m[]]
3744+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
37433745 elseif side == ' R' # right eigenvectors only
3744- return select, VR[:, 1 : m[]]
3746+ return select, reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
37453747 else # side == 'B' #both eigenvectors
3746- return select, VL[:, 1 : m[]], VR[:, 1 : m[]]
3748+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
37473749 end
37483750 else # compute all eigenvectors
37493751 if side == ' L' # left eigenvectors only
3750- return VL[:, 1 : m[]]
3752+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
37513753 elseif side == ' R' # right eigenvectors only
3752- return VR[:, 1 : m[]]
3754+ return reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
37533755 else # side == 'B' #both eigenvectors
3754- return VL[:, 1 : m[]], VR[:, 1 : m[]]
3756+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
37553757 end
37563758 end
37573759 end
@@ -3873,22 +3875,21 @@ for (trcon, trevc, trrfs, elty, relty) in
38733875 work, rwork, info, 1 , 1 )
38743876 chklapackerror (info[])
38753877
3876- # Decide what exactly to return
38773878 if howmny == ' S' # compute selected eigenvectors
38783879 if side == ' L' # left eigenvectors only
3879- return select, VL[:, 1 : m[]]
3880+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
38803881 elseif side == ' R' # right eigenvectors only
3881- return select, VR[:, 1 : m[]]
3882- else # side== 'B' #both eigenvectors
3883- return select, VL[:, 1 : m[]], VR[:, 1 : m[]]
3882+ return select, reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3883+ else # side == 'B' #both eigenvectors
3884+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
38843885 end
38853886 else # compute all eigenvectors
38863887 if side == ' L' # left eigenvectors only
3887- return VL[:, 1 : m[]]
3888+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
38883889 elseif side == ' R' # right eigenvectors only
3889- return VR[:, 1 : m[]]
3890- else # side== 'B' #both eigenvectors
3891- return VL[:, 1 : m[]], VR[:, 1 : m[]]
3890+ return reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3891+ else # side == 'B' #both eigenvectors
3892+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
38923893 end
38933894 end
38943895 end
@@ -4033,7 +4034,7 @@ for (stev, stebz, stegr, stein, elty) in
40334034 w, iblock, isplit, work,
40344035 iwork, info, 1 , 1 )
40354036 chklapackerror (info[])
4036- w[ 1 : m[]], iblock[ 1 : m[]], isplit[ 1 : nsplit[1 ]]
4037+ resize! (w, m[]), resize! ( iblock, m[]), resize! ( isplit, nsplit[1 ])
40374038 end
40384039
40394040 function stegr! (jobz:: AbstractChar , range:: AbstractChar , dv:: AbstractVector{$elty} , ev:: AbstractVector{$elty} , vl:: Real , vu:: Real , il:: Integer , iu:: Integer )
@@ -4056,7 +4057,8 @@ for (stev, stebz, stegr, stein, elty) in
40564057 m = Ref {BlasInt} ()
40574058 w = similar (dv, $ elty, n)
40584059 ldz = jobz == ' N' ? 1 : n
4059- Z = similar (dv, $ elty, ldz, range == ' I' ? iu- il+ 1 : n)
4060+ Zn = range == ' I' ? iu- il+ 1 : n
4061+ Z = similar (dv, $ elty, ldz * Zn)
40604062 isuppz = similar (dv, BlasInt, 2 * size (Z, 2 ))
40614063 work = Vector {$elty} (undef, 1 )
40624064 lwork = BlasInt (- 1 )
@@ -4085,7 +4087,7 @@ for (stev, stebz, stegr, stein, elty) in
40854087 resize! (iwork, liwork)
40864088 end
40874089 end
4088- m[] == length (w) ? w : w[ 1 : m[]] , m[] == size (Z, 2 ) ? Z : Z[:, 1 : m[]]
4090+ m[] == length (w) ? w : resize! (w, m[]) , m[] == size (Z, 2 ) ? Z : reshape ( resize! (Z, ldz * m[]), ldz, m[])
40894091 end
40904092
40914093 function stein! (dv:: AbstractVector{$elty} , ev_in:: AbstractVector{$elty} , w_in:: AbstractVector{$elty} , iblock_in:: AbstractVector{BlasInt} , isplit_in:: AbstractVector{BlasInt} )
0 commit comments