@@ -3858,10 +3858,37 @@ for (gees, gges, elty, relty) in
3858
3858
end
3859
3859
end
3860
3860
# Reorder Schur forms
3861
- for (trsen, tgsen, elty) in
3862
- ((:dtrsen_ , :dtgsen_ , :Float64 ),
3863
- (:strsen_ , :stgsen_ , :Float32 ))
3861
+ for (trexc, trsen, tgsen, elty) in
3862
+ ((:dtrexc_ , : dtrsen_ , :dtgsen_ , :Float64 ),
3863
+ (:strexc_ , : strsen_ , :stgsen_ , :Float32 ))
3864
3864
@eval begin
3865
+ trexc! (ifst:: BlasInt , ilst:: BlasInt , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} ) = trexc! (' V' , ifst, ilst, T, Q)
3866
+ function trexc! (compq:: Char , ifst:: BlasInt , ilst:: BlasInt , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} )
3867
+ # * .. Scalar Arguments ..
3868
+ # CHARACTER COMPQ
3869
+ # INTEGER IFST, ILST, INFO, LDQ, LDT, N
3870
+ # * ..
3871
+ # * .. Array Arguments ..
3872
+ # DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
3873
+ chkstride1 (T, Q)
3874
+ n = chksquare (T)
3875
+ ldt = max (1 , stride (T, 2 ))
3876
+ ldq = max (1 , stride (Q, 2 ))
3877
+ work = Array ($ elty, n)
3878
+ info = Array (BlasInt, 1 )
3879
+
3880
+ ccall (($ (blasfunc (trexc)), liblapack), Void,
3881
+ (Ptr{UInt8}, Ptr{BlasInt},
3882
+ Ptr{$ elty}, Ptr{BlasInt}, Ptr{$ elty}, Ptr{BlasInt},
3883
+ Ptr{BlasInt}, Ptr{BlasInt},
3884
+ Ptr{$ elty}, Ptr{BlasInt}),
3885
+ & compq, & n,
3886
+ T, & ldt, Q, & ldq,
3887
+ & ifst, & ilst,
3888
+ work, info)
3889
+ @lapackerror
3890
+ T, Q
3891
+ end
3865
3892
function trsen! (select:: StridedVector{BlasInt} , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} )
3866
3893
# * .. Scalar Arguments ..
3867
3894
# CHARACTER COMPQ, JOB
@@ -3978,10 +4005,36 @@ for (trsen, tgsen, elty) in
3978
4005
end
3979
4006
end
3980
4007
3981
- for (trsen, tgsen, elty) in
3982
- ((:ztrsen_ , :ztgsen_ , :Complex128 ),
3983
- (:ctrsen_ , :ctgsen_ , :Complex64 ))
4008
+ for (trexc, trsen, tgsen, elty) in
4009
+ ((:ztrexc_ , : ztrsen_ , :ztgsen_ , :Complex128 ),
4010
+ (:ctrexc_ , : ctrsen_ , :ctgsen_ , :Complex64 ))
3984
4011
@eval begin
4012
+ trexc! (ifst:: BlasInt , ilst:: BlasInt , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} ) = trexc! (' V' , ifst, ilst, T, Q)
4013
+ function trexc! (compq:: Char , ifst:: BlasInt , ilst:: BlasInt , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} )
4014
+ # * .. Scalar Arguments ..
4015
+ # CHARACTER COMPQ
4016
+ # INTEGER IFST, ILST, INFO, LDQ, LDT, N
4017
+ # * ..
4018
+ # * .. Array Arguments ..
4019
+ # DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
4020
+ chkstride1 (T, Q)
4021
+ n = chksquare (T)
4022
+ ldt = max (1 , stride (T, 2 ))
4023
+ ldq = max (1 , stride (Q, 2 ))
4024
+ info = Array (BlasInt, 1 )
4025
+
4026
+ ccall (($ (blasfunc (trexc)), liblapack), Void,
4027
+ (Ptr{UInt8}, Ptr{BlasInt},
4028
+ Ptr{$ elty}, Ptr{BlasInt}, Ptr{$ elty}, Ptr{BlasInt},
4029
+ Ptr{BlasInt}, Ptr{BlasInt},
4030
+ Ptr{BlasInt}),
4031
+ & compq, & n,
4032
+ T, & ldt, Q, & ldq,
4033
+ & ifst, & ilst,
4034
+ info)
4035
+ @lapackerror
4036
+ T, Q
4037
+ end
3985
4038
function trsen! (select:: StridedVector{BlasInt} , T:: StridedMatrix{$elty} , Q:: StridedMatrix{$elty} )
3986
4039
# * .. Scalar Arguments ..
3987
4040
# CHARACTER COMPQ, JOB
0 commit comments