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