@@ -2835,7 +2835,7 @@ for (orglq, orgqr, orgql, orgrq, ormlq, ormqr, ormql, ormrq, gemqrt, elty) in
2835
2835
end
2836
2836
end
2837
2837
if n < size (A,2 )
2838
- A[:, 1 : n]
2838
+ reshape ( resize! ( vec (A), m * n), m, n)
2839
2839
else
2840
2840
A
2841
2841
end
@@ -2871,7 +2871,7 @@ for (orglq, orgqr, orgql, orgrq, ormlq, ormqr, ormql, ormrq, gemqrt, elty) in
2871
2871
end
2872
2872
end
2873
2873
if n < size (A,2 )
2874
- A[:, 1 : n]
2874
+ reshape ( resize! ( vec (A), m * n), m, n)
2875
2875
else
2876
2876
A
2877
2877
end
@@ -3736,22 +3736,24 @@ for (trcon, trevc, trrfs, elty) in
3736
3736
work, info, 1 , 1 )
3737
3737
chklapackerror (info[])
3738
3738
3739
+ VLn = size (VL, 1 )
3740
+ VRn = size (VR, 1 )
3739
3741
# Decide what exactly to return
3740
3742
if howmny == ' S' # compute selected eigenvectors
3741
3743
if side == ' L' # left eigenvectors only
3742
- return select, VL[:, 1 : m[]]
3744
+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
3743
3745
elseif side == ' R' # right eigenvectors only
3744
- return select, VR[:, 1 : m[]]
3746
+ return select, reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3745
3747
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[])
3747
3749
end
3748
3750
else # compute all eigenvectors
3749
3751
if side == ' L' # left eigenvectors only
3750
- return VL[:, 1 : m[]]
3752
+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
3751
3753
elseif side == ' R' # right eigenvectors only
3752
- return VR[:, 1 : m[]]
3754
+ return reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3753
3755
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[])
3755
3757
end
3756
3758
end
3757
3759
end
@@ -3873,22 +3875,24 @@ for (trcon, trevc, trrfs, elty, relty) in
3873
3875
work, rwork, info, 1 , 1 )
3874
3876
chklapackerror (info[])
3875
3877
3878
+ VLn = size (VL, 1 )
3879
+ VRn = size (VR, 1 )
3876
3880
# Decide what exactly to return
3877
3881
if howmny == ' S' # compute selected eigenvectors
3878
3882
if side == ' L' # left eigenvectors only
3879
- return select, VL[:, 1 : m[]]
3883
+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
3880
3884
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[]]
3885
+ return select, reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3886
+ else # side == 'B' #both eigenvectors
3887
+ return select, reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3884
3888
end
3885
3889
else # compute all eigenvectors
3886
3890
if side == ' L' # left eigenvectors only
3887
- return VL[:, 1 : m[]]
3891
+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[])
3888
3892
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[]]
3893
+ return reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3894
+ else # side == 'B' #both eigenvectors
3895
+ return reshape ( resize! ( vec (VL), VLn * m[]), VLn, m[]), reshape ( resize! ( vec (VR), VRn * m[]), VRn, m[])
3892
3896
end
3893
3897
end
3894
3898
end
@@ -4033,7 +4037,7 @@ for (stev, stebz, stegr, stein, elty) in
4033
4037
w, iblock, isplit, work,
4034
4038
iwork, info, 1 , 1 )
4035
4039
chklapackerror (info[])
4036
- w[ 1 : m[]], iblock[ 1 : m[]], isplit[ 1 : nsplit[1 ]]
4040
+ resize! (w, m[]), resize! ( iblock, m[]), resize! ( isplit, nsplit[1 ])
4037
4041
end
4038
4042
4039
4043
function stegr! (jobz:: AbstractChar , range:: AbstractChar , dv:: AbstractVector{$elty} , ev:: AbstractVector{$elty} , vl:: Real , vu:: Real , il:: Integer , iu:: Integer )
@@ -4056,8 +4060,9 @@ for (stev, stebz, stegr, stein, elty) in
4056
4060
m = Ref {BlasInt} ()
4057
4061
w = similar (dv, $ elty, n)
4058
4062
ldz = jobz == ' N' ? 1 : n
4059
- Z = similar (dv, $ elty, ldz, range == ' I' ? iu- il+ 1 : n)
4060
- isuppz = similar (dv, BlasInt, 2 * size (Z, 2 ))
4063
+ Zn = range == ' I' ? iu- il+ 1 : n
4064
+ Z = similar (dv, $ elty, ldz * Zn)
4065
+ isuppz = similar (dv, BlasInt, 2 * Zn)
4061
4066
work = Vector {$elty} (undef, 1 )
4062
4067
lwork = BlasInt (- 1 )
4063
4068
iwork = Vector {BlasInt} (undef, 1 )
@@ -4085,7 +4090,7 @@ for (stev, stebz, stegr, stein, elty) in
4085
4090
resize! (iwork, liwork)
4086
4091
end
4087
4092
end
4088
- m[] == length (w) ? w : w[ 1 : m[]], m[] == size ( Z, 2 ) ? Z : Z[:, 1 : m[]]
4093
+ return resize! (w, m[]), reshape ( resize! ( Z, ldz * m[]), ldz, m[])
4089
4094
end
4090
4095
4091
4096
function stein! (dv:: AbstractVector{$elty} , ev_in:: AbstractVector{$elty} , w_in:: AbstractVector{$elty} , iblock_in:: AbstractVector{BlasInt} , isplit_in:: AbstractVector{BlasInt} )
0 commit comments