@@ -136,6 +136,100 @@ subroutine tb04ad_c(rowcol,n,m,p,a,lda,b,ldb,c,ldc,d,ldd,nr,index_bn,dcoeff,lddc
136136 integer optional :: ldwork = max(1,n*(n+1)+max(n*p+2*n+max(n,p),max(3*p,m)))
137137 integer intent(out) :: info
138138end subroutine tb04ad_c
139+ subroutine tb05ad_ag(baleig,inita,n,m,p,freq,a,lda,b,ldb,c,ldc,rcond,g,ldg,evre,evim,hinvb,ldhinv,iwork,dwork,ldwork,zwork,lzwork,info)
140+ ! The case where A is is a general matrix that should be balanced
141+ ! and converted to upper Hessenberg form.
142+ fortranname tb05ad
143+ character intent(hide) :: baleig = 'A'
144+ character intent(hide) :: inita = 'G'
145+ integer check(n>0) :: n
146+ integer check(m>0) :: m
147+ integer check(p>0) :: p
148+ complex*16 intent(in) :: freq
149+ double precision intent(in,out,copy),dimension(n,n),depend(n) :: a
150+ integer intent(hide),depend(a) :: lda=shape(a,0)
151+ double precision intent(in,out,copy),dimension(n,m),depend(n,m) :: b
152+ integer intent(hide),depend(b) :: ldb=shape(b,0)
153+ double precision intent(in,out,copy),dimension(p,n),depend(n,p) :: c
154+ integer intent(hide),depend(c) :: ldc=shape(c,0)
155+ double precision intent(out) :: rcond
156+ complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g
157+ integer intent(hide),depend(p) :: ldg = p
158+ double precision intent(out),dimension(n),depend(n):: evre
159+ double precision intent(out),dimension(n),depend(n):: evim
160+ complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb
161+ integer intent(hide),depend(n) :: ldhinv = n
162+ ! cache variables
163+ integer intent(hide,cache),dimension(n) :: iwork
164+ double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork
165+ integer optional,depend(n) :: ldwork = 2*n
166+ complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork
167+ integer optional,depend(n) :: lzwork = n*n+2*n
168+ integer intent(out) :: info
169+ end subroutine tb05ad_ag
170+ subroutine tb05ad_ng(baleig,inita,n,m,p,freq,a,lda,b,ldb,c,ldc,rcond,g,ldg,evre,evim,hinvb,ldhinv,iwork,dwork,ldwork,zwork,lzwork,info)
171+ ! The case where A is is a general matrix that should not be
172+ ! balanced but is only converted to upper Hessenberg form.
173+ fortranname tb05ad
174+ character intent(hide) :: baleig = 'N'
175+ character intent(hide) :: inita = 'G'
176+ integer check(n>0) :: n
177+ integer check(m>0) :: m
178+ integer check(p>0) :: p
179+ complex*16 intent(in) :: freq
180+ double precision intent(in,out,copy),dimension(n,n),depend(n) :: a
181+ integer intent(hide),depend(a) :: lda=shape(a,0)
182+ double precision intent(in,out,copy),dimension(n,m),depend(n,m) :: b
183+ integer intent(hide),depend(b) :: ldb=shape(b,0)
184+ double precision intent(in,out,copy),dimension(p,n),depend(n,p) :: c
185+ integer intent(hide),depend(c) :: ldc=shape(c,0)
186+ double precision intent(hide) :: rcond
187+ complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g
188+ integer intent(hide),depend(p) :: ldg = p
189+ double precision intent(hide),dimension(n),depend(n):: evre
190+ double precision intent(hide),dimension(n),depend(n):: evim
191+ complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb
192+ integer intent(hide),depend(n) :: ldhinv = n
193+ ! cache variables
194+ integer intent(hide,cache),dimension(n) :: iwork
195+ double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork
196+ integer optional,depend(n) :: ldwork = 2*n
197+ complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork
198+ integer optional,depend(n) :: lzwork = n*n+2*n
199+ integer intent(out) :: info
200+ end subroutine tb05ad_ng
201+
202+ subroutine tb05ad_nh(baleig,inita,n,m,p,freq,a,lda,b,ldb,c,ldc,rcond,g,ldg,evre,evim,hinvb,ldhinv,iwork,dwork,ldwork,zwork,lzwork,info)
203+ ! The case where A is already balanced and hessenberg
204+ fortranname tb05ad
205+ character intent(hide) :: baleig = 'N'
206+ character intent(hide) :: inita = 'H'
207+ integer check(n>0) :: n
208+ integer check(m>0) :: m
209+ integer check(p>0) :: p
210+ complex*16 intent(in) :: freq
211+ double precision intent(in),dimension(n,n),depend(n) :: a
212+ integer intent(hide),depend(a) :: lda=shape(a,0)
213+ double precision intent(in),dimension(n,m),depend(n,m) :: b
214+ integer intent(hide),depend(b) :: ldb=shape(b,0)
215+ double precision intent(in),dimension(p,n),depend(n,p) :: c
216+ integer intent(hide),depend(c) :: ldc=shape(c,0)
217+ double precision intent(hide) :: rcond
218+ complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g
219+ integer intent(hide),depend(p) :: ldg = p
220+ double precision intent(hide),dimension(n),depend(n):: evre
221+ double precision intent(hide),dimension(n),depend(n):: evim
222+ complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb
223+ integer intent(hide),depend(n) :: ldhinv = n
224+ ! cache variables
225+ integer intent(hide,cache),dimension(n) :: iwork
226+ double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork
227+ integer optional,depend(n) :: ldwork = 2*n
228+ complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork
229+ integer optional,depend(n) :: lzwork = n*n+2*n
230+ integer intent(out) :: info
231+ end subroutine tb05ad_h
232+
139233subroutine tc01od_l(leri,m,p,indlim,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,info) ! in TC01OD.f
140234 fortranname tc01od
141235 character intent(hide) :: leri = 'L'
0 commit comments