! -*- f90 -*- ! Note: the context of this file is case sensitive. subroutine tb01id(job,n,m,p,maxred,a,lda,b,ldb,c,ldc,scale,info) ! in TB01ID.f character intent(in) :: job = 'A' integer required,check(n>0) :: n integer required,check(m>0) :: m integer required,check(p>0) :: p double precision intent(in,out),check(maxred<=0 || maxred>1) :: maxred double precision intent(in,out,copy),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(n,m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(p,n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(out),dimension(n),depend(n) :: scale integer intent(out) :: info end subroutine tb01id subroutine tb03ad_l(leri,equil,n,m,p,a,lda,b,ldb,c,ldc,d,ldd,nr,index_bn,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,vcoeff,ldvco1,ldvco2,tol,iwork,dwork,ldwork,info) ! in :new:TB03AD.f fortranname tb03ad character intent(hide) :: leri = 'L' character :: equil = 'N' integer check(n>0) :: n integer check(m>0) :: m integer check(p>0) :: p double precision intent(in,out),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out),dimension(n,max(m,p)),depend(n,m,p) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out),dimension(max(m,p),n),depend(n,m,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision dimension(max(m,p),max(m,p)),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(out) :: nr integer intent(out),dimension(p) :: index_bn double precision intent(out),dimension(p,p,n+1) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision intent(out),dimension(p,m,n+1) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) double precision intent(out),dimension(p,n,n+1) :: vcoeff integer intent(hide),depend(vcoeff) :: ldvco1=shape(vcoeff,0) integer intent(hide),depend(vcoeff) :: ldvco2=shape(vcoeff,1) double precision :: tol = 0 integer intent(hide,cache),dimension(n+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer :: ldwork = max( 2*n + 3*max(m,p), p*(p+2)) integer intent(out) :: info end subroutine tb03ad_l subroutine tb03ad_r(leri,equil,n,m,p,a,lda,b,ldb,c,ldc,d,ldd,nr,index_bn,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,vcoeff,ldvco1,ldvco2,tol,iwork,dwork,ldwork,info) ! in :new:TB03AD.f fortranname tb03ad character intent(hide) :: leri = 'R' character :: equil = 'N' integer check(n>0) :: n integer check(m>0) :: m integer check(p>0) :: p double precision intent(in,out),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out),dimension(n,max(m,p)),depend(n,m,p) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out),dimension(max(m,p),n),depend(n,m,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision dimension(max(m,p),max(m,p)),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(out) :: nr integer intent(out),dimension(m) :: index_bn double precision intent(out),dimension(m,m,n+1) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision intent(out),dimension(max(m,p),max(m,p),n+1) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) double precision intent(out),dimension(m,n,n+1) :: vcoeff integer intent(hide),depend(vcoeff) :: ldvco1=shape(vcoeff,0) integer intent(hide),depend(vcoeff) :: ldvco2=shape(vcoeff,1) double precision :: tol = 0 integer intent(hide,cache),dimension(n+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer :: ldwork = max( 2*n + 3*max(m,p), m*(m+2)) integer intent(out) :: info end subroutine tb03ad_r subroutine tb04ad_r(rowcol,n,m,p,a,lda,b,ldb,c,ldc,d,ldd,nr,index_bn,dcoeff,lddcoe,ucoeff,lduco1,lduco2,tol1,tol2,iwork,dwork,ldwork,info) ! in TB04AD.f fortranname tb04ad character intent(hide) :: rowcol = 'R' integer check(n>=0) :: n integer check(m>=0) :: m integer check(p>=0) :: p double precision intent(in,out,copy), dimension(max(1,n),n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(max(1,n),m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(max(1,p),n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(in),dimension(max(1,p),m),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(out) :: nr integer intent(out),dimension(p),depend(p) :: index_bn double precision intent(out),dimension(max(1,p),n+1),depend(p,n) :: dcoeff integer intent(hide),depend(dcoeff) :: lddcoe=shape(dcoeff,0) double precision intent(out),dimension(max(1,p),max(1,m),n+1),depend(p,m,n) :: ucoeff integer intent(hide),depend(ucoeff) :: lduco1=shape(ucoeff,0) integer intent(hide),depend(ucoeff) :: lduco2=shape(ucoeff,1) double precision :: tol1 = 0 double precision :: tol2 = 0 integer intent(hide,cache),dimension(n+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional :: ldwork = max(1,n*(n+1)+max(n*m+2*n+max(n,m),max(3*m,p))) integer intent(out) :: info end subroutine tb04ad_r subroutine tb04ad_c(rowcol,n,m,p,a,lda,b,ldb,c,ldc,d,ldd,nr,index_bn,dcoeff,lddcoe,ucoeff,lduco1,lduco2,tol1,tol2,iwork,dwork,ldwork,info) ! in TB04AD.f fortranname tb04ad character intent(hide) :: rowcol = 'C' integer check(n>=0) :: n integer check(m>=0) :: m integer check(p>=0) :: p double precision intent(in,out,copy), dimension(max(1,n),n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(max(1,n),max(m,p)),depend(n,m,p) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(max(1,max(m,p)),n),depend(n,m,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(in),dimension(max(1,max(m,p)),max(m,p)),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(out) :: nr integer intent(out),dimension(m),depend(m) :: index_bn double precision intent(out),dimension(max(1,m),n+1),depend(m,n) :: dcoeff integer intent(hide),depend(dcoeff) :: lddcoe=shape(dcoeff,0) double precision intent(out),dimension(max(1,m),max(1,p),n+1),depend(m,p,n) :: ucoeff integer intent(hide),depend(dcoeff) :: lduco1=shape(ucoeff,0) integer intent(hide),depend(ucoeff) :: lduco2=shape(ucoeff,1) double precision :: tol1 = 0 double precision :: tol2 = 0 integer intent(hide,cache),dimension(n+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional :: ldwork = max(1,n*(n+1)+max(n*p+2*n+max(n,p),max(3*p,m))) integer intent(out) :: info end subroutine tb04ad_c 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) ! The case where A is is a general matrix that should be balanced ! and converted to upper Hessenberg form. fortranname tb05ad character intent(hide) :: baleig = 'A' character intent(hide) :: inita = 'G' integer check(n>0) :: n integer check(m>0) :: m integer check(p>0) :: p complex*16 intent(in) :: freq double precision intent(in,out,copy),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(n,m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(p,n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(out) :: rcond complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g integer intent(hide),depend(p) :: ldg = p double precision intent(out),dimension(n),depend(n):: evre double precision intent(out),dimension(n),depend(n):: evim complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb integer intent(hide),depend(n) :: ldhinv = n ! cache variables integer intent(hide,cache),dimension(n) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer optional,depend(n) :: ldwork = 2*n complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork integer optional,depend(n) :: lzwork = n*n+2*n integer intent(out) :: info end subroutine tb05ad_ag 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) ! The case where A is is a general matrix that should not be ! balanced but is only converted to upper Hessenberg form. fortranname tb05ad character intent(hide) :: baleig = 'N' character intent(hide) :: inita = 'G' integer check(n>0) :: n integer check(m>0) :: m integer check(p>0) :: p complex*16 intent(in) :: freq double precision intent(in,out,copy),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(n,m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(p,n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(hide) :: rcond complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g integer intent(hide),depend(p) :: ldg = p double precision intent(hide),dimension(n),depend(n):: evre double precision intent(hide),dimension(n),depend(n):: evim complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb integer intent(hide),depend(n) :: ldhinv = n ! cache variables integer intent(hide,cache),dimension(n) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer optional,depend(n) :: ldwork = 2*n complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork integer optional,depend(n) :: lzwork = n*n+2*n integer intent(out) :: info end subroutine tb05ad_ng 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) ! The case where A is already balanced and hessenberg fortranname tb05ad character intent(hide) :: baleig = 'N' character intent(hide) :: inita = 'H' integer check(n>0) :: n integer check(m>0) :: m integer check(p>0) :: p complex*16 intent(in) :: freq double precision intent(in),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(in),dimension(n,m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(in),dimension(p,n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(hide) :: rcond complex*16 intent(out),dimension(ldg,m),depend(ldg,m) :: g integer intent(hide),depend(p) :: ldg = p double precision intent(hide),dimension(n),depend(n):: evre double precision intent(hide),dimension(n),depend(n):: evim complex*16 intent(out),dimension(ldhinv,m),depend(ldhinv,m) :: hinvb integer intent(hide),depend(n) :: ldhinv = n ! cache variables integer intent(hide,cache),dimension(n) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer optional,depend(n) :: ldwork = 2*n complex*16 intent(hide,cache),dimension(lzwork),depend(lzwork) :: zwork integer optional,depend(n) :: lzwork = n*n+2*n integer intent(out) :: info end subroutine tb05ad_h subroutine tc01od_l(leri,m,p,indlim,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,info) ! in TC01OD.f fortranname tc01od character intent(hide) :: leri = 'L' integer check(m>0) :: m integer check(p>0) :: p integer check(indlim>0) :: indlim double precision intent(in,out),dimension(p,p,indlim),depend(p,indlim) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision intent(in,out),dimension(max(m,p),max(m,p),indlim),depend(m,p,indlim) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) integer intent(out) :: info end subroutine tc01od_l subroutine tc01od_r(leri,m,p,indlim,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,info) ! in TC01OD.f fortranname tc01od character intent(hide) :: leri = 'R' integer check(m>0) :: m integer check(p>0) :: p integer check(indlim>0) :: indlim double precision dimension(m,m,indlim),depend(p,indlim) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision dimension(max(m,p),max(m,p),indlim),depend(m,p,indlim) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) integer intent(out) :: info end subroutine tc01od_r subroutine tc04ad_l(leri,m,p,index_bn,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,n,rcond,a,lda,b,ldb,c,ldc,d,ldd,iwork,dwork,ldwork,info) ! in TC04AD.f fortranname tc04ad character intent(hide) :: leri = 'L' integer required,intent(in),check(m>0) :: m integer required,intent(in),check(p>0) :: p integer dimension(p) :: index_bn double precision required,dimension(p,p,*),depend(p) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision required,dimension(p,m,*),depend(m,p) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) integer intent(in,out) :: n != sum(index_bn) double precision intent(out) :: rcond double precision intent(out),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(out),dimension(n,max(m,p)),depend(n,m,p) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(out),dimension(max(m,p),n),depend(n,m,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(out),dimension(max(m,p),max(m,p)),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(hide,cache),dimension(2*max(m,p)),depend(m,p) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer depend(m,p) :: ldwork = max(m,p)*(max(m,p)+4) integer intent(out) :: info end subroutine tc04ad_l subroutine tc04ad_r(leri,m,p,index_bn,pcoeff,ldpco1,ldpco2,qcoeff,ldqco1,ldqco2,n,rcond,a,lda,b,ldb,c,ldc,d,ldd,iwork,dwork,ldwork,info) ! in TC04AD.f fortranname tc04ad character intent(hide) :: leri = 'R' integer required,intent(in),check(m>0) :: m integer required,intent(in),check(p>0) :: p integer dimension(m) :: index_bn double precision required,dimension(m,m,*),depend(m) :: pcoeff integer intent(hide),depend(pcoeff) :: ldpco1=shape(pcoeff,0) integer intent(hide),depend(pcoeff) :: ldpco2=shape(pcoeff,1) double precision required,dimension(max(m,p),max(m,p),*),depend(m,p) :: qcoeff integer intent(hide),depend(qcoeff) :: ldqco1=shape(qcoeff,0) integer intent(hide),depend(qcoeff) :: ldqco2=shape(qcoeff,1) integer intent(in,out) :: n != sum(index_bn) double precision intent(out) :: rcond double precision intent(out),dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision intent(out),dimension(n,max(m,p)),depend(n,m,p) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision intent(out),dimension(max(m,p),n),depend(n,m,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(out),dimension(max(m,p),max(m,p)),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) integer intent(hide,cache),dimension(2*max(m,p)),depend(m,p) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer depend(m,p) :: ldwork = max(m,p)*(max(m,p)+4) integer intent(out) :: info end subroutine tc04ad_r subroutine td04ad_r(rowcol,m,p,index_bn,dcoeff,lddcoe,ucoeff,lduco1,lduco2,nr,a,lda,b,ldb,c,ldc,d,ldd,tol,iwork,dwork,ldwork,info) ! in TD04AD.f fortranname td04ad character intent(hide) :: rowcol = 'R' integer check(m>=0) :: m integer check(p>=0) :: p integer dimension(p),depend(p) :: index_bn double precision intent(in,copy),dimension(max(1,p),*),depend(p) :: dcoeff integer intent(hide),depend(dcoeff) :: lddcoe=shape(dcoeff,0) double precision intent(in,copy),dimension(max(1,p),max(1,m),*),depend(p,m) :: ucoeff integer intent(hide),depend(ucoeff) :: lduco1=shape(ucoeff,0) integer intent(hide),depend(ucoeff) :: lduco2=shape(ucoeff,1) integer intent(in,out) :: nr !=sum(index_bn) double precision intent(out),dimension(max(1,nr),max(1,nr)),depend(nr) :: a integer intent(hide),depend(a) :: lda = shape(a,0) double precision intent(out),dimension(max(1,nr),max(m,p)),depend(nr,m,p) :: b integer intent(hide),depend(b) :: ldb = shape(b,0) double precision intent(out),dimension(max(1,max(m,p)),max(1,nr)),depend(nr,m,p) :: c integer intent(hide),depend(c) :: ldc = shape(c,0) double precision intent(out),dimension(max(1,p),m),depend(p,m) :: d integer intent(hide),depend(d) :: ldd = shape(d,0) double precision :: tol = 0 integer intent(hide,cache),dimension(nr+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional :: ldwork = max(1,nr+max(nr,max(3*m,3*p))) integer intent(out) :: info end subroutine td04ad_r subroutine td04ad_c(rowcol,m,p,index_bn,dcoeff,lddcoe,ucoeff,lduco1,lduco2,nr,a,lda,b,ldb,c,ldc,d,ldd,tol,iwork,dwork,ldwork,info) ! in TD04AD.f fortranname td04ad character intent(hide) :: rowcol = 'C' integer check(m>=0) :: m integer check(p>=0) :: p integer dimension(m),depend(m) :: index_bn double precision intent(in,copy),dimension(max(1,m),*),depend(m) :: dcoeff integer intent(hide),depend(dcoeff) :: lddcoe=shape(dcoeff,0) double precision intent(in,copy),dimension(max(1,max(m,p)),max(1,max(m,p)),*),depend(p,m) :: ucoeff integer intent(hide),depend(ucoeff) :: lduco1=shape(ucoeff,0) integer intent(hide),depend(ucoeff) :: lduco2=shape(ucoeff,1) integer intent(in,out) :: nr != sum(index_bn) double precision intent(out),dimension(max(1,nr),max(1,nr)),depend(nr) :: a integer intent(hide),depend(a) :: lda = shape(a,0) double precision intent(out),dimension(max(1,nr),max(m,p)),depend(nr,m,p) :: b integer intent(hide),depend(b) :: ldb = shape(b,0) double precision intent(out),dimension(max(1,max(m,p)),max(1,nr)),depend(nr,m,p) :: c integer intent(hide),depend(c) :: ldc = shape(c,0) double precision intent(out),dimension(max(1,max(m,p)),max(m,p)),depend(p,m) :: d integer intent(hide),depend(d) :: ldd = shape(d,0) double precision :: tol = 0 integer intent(hide,cache),dimension(nr+max(m,p)) :: iwork double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional :: ldwork = max(1,nr+max(nr,max(3*m,3*p))) integer intent(out) :: info end subroutine td04ad_c subroutine tf01md(n,m,p,ny,a,lda,b,ldb,c,ldc,d,ldd,u,ldu,x,y,ldy,dwork,info) ! in TF01MD.f integer required,intent(in),check(n>0) :: n integer required,intent(in),check(m>0) :: m integer required,intent(in),check(p>0) :: p integer required,intent(in),check(ny>0) :: ny double precision required,dimension(n,n),depend(n) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision required,dimension(n,m),depend(n,m) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision required,dimension(p,n),depend(n,p) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision required,dimension(p,m),depend(m,p) :: d integer intent(hide),depend(d) :: ldd=shape(d,0) double precision required,dimension(m,ny),depend(m,ny) :: u integer intent(hide),depend(u) :: ldu=shape(u,0) double precision intent(in,out,copy),dimension(n),depend(n) :: x double precision intent(out),dimension(ldy,ny),depend(ldy,ny) :: y integer intent(hide),depend(p) :: ldy=p double precision intent(hide,cache),dimension(n),depend(n) :: dwork integer intent(out) :: info end subroutine tf01md subroutine tf01rd(na,nb,nc,n,a,lda,b,ldb,c,ldc,h,ldh,dwork,ldwork,info) ! in TF01RD.f integer required,check(na>0) :: na integer required,check(nb>0) :: nb integer required,check(nc>0) :: nc integer required,check(n>0) :: n double precision dimension(na,na),depend(na) :: a integer intent(hide),depend(a) :: lda=shape(a,0) double precision dimension(na,nb),depend(na,nb) :: b integer intent(hide),depend(b) :: ldb=shape(b,0) double precision dimension(nc,na),depend(nc,na) :: c integer intent(hide),depend(c) :: ldc=shape(c,0) double precision intent(out),dimension(nc,n*nb),depend(n,nb,nc) :: h integer intent(hide),depend(h) :: ldh=shape(h,0) double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional,depend(na,nc) :: ldwork = 2*na*nc integer intent(out) :: info end subroutine tf01rd subroutine tb01pd(job,equil,n,m,p,a,lda,b,ldb,c,ldc,nr,tol,iwork,dwork,ldwork,info) ! in TB01PD.f character intent(in) :: job = 'M' character intent(in) :: equil = 'S' integer required,check(n>=0) :: n integer required,check(m>=0) :: m integer required,check(p>=0) :: p double precision intent(in,out,copy),dimension(n,n),depend(n) :: a integer, intent(hide), depend(a) :: lda=shape(a,0) double precision intent(in,out,copy),dimension(n,max(m,p)),depend(n,m,p) :: b integer, intent(hide), depend(b) :: ldb=shape(b,0) double precision intent(in,out,copy),dimension(max(p,m),n),depend(p,n,m) :: c integer, intent(hide), depend(c) :: ldc=shape(c,0) integer, intent(out) :: nr double precision, intent(in) :: tol = 0.0 integer intent(hide,cache),dimension(n+max(m,p)),depend(n,m,p) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer optional,depend(n,m,p) :: ldwork=max(1,n+max(n,max(3*m,3*p))) integer intent(out) :: info end subroutine tb01pd subroutine tg01ad(job,l,n,m,p,thresh,a,lda,e,lde,b,ldb,c,ldc,lscale,rscale,dwork,info) ! in TG01AD.f character :: job integer intent(in),required,check(l>=0) :: l integer intent(in),required,check(n>=0) :: n integer intent(in),required,check(m>=0) :: m integer intent(in),required,check(p>=0) :: p double precision intent(in),required,check(thresh>=0) :: thresh double precision intent(in,out,copy),dimension(l,n),depend(l,n) :: a integer intent(hide),depend(a) :: lda=MAX(shape(a,0),1) double precision intent(in,out,copy),dimension(l,n),depend(l,m) :: e integer intent(hide),depend(e) :: lde=MAX(shape(e,0),1) double precision intent(in,out,copy),dimension(l,m),depend(l,m) :: b integer intent(hide),depend(b) :: ldb=MAX(shape(b,0),1) double precision intent(in,out,copy),dimension(p,n),depend(p,n) :: c integer intent(hide),depend(c) :: ldc=MAX(shape(c,0),1) double precision intent(out),dimension(l) :: lscale double precision intent(out),dimension(n) :: rscale double precision intent(cache,hide),dimension(3*(l+n)) :: dwork integer intent(out) :: info end subroutine tg01ad subroutine tg01fd_nn(compq,compz,joba,l,n,m,p,a,lda,e,lde,b,ldb,c,ldc,q,ldq,z,ldz,ranke,rnka22,tol,iwork,dwork,ldwork,info) ! in TG01FD.f fortranname tg01fd character intent(hide) :: compq = 'N' character intent(hide) :: compz = 'N' character intent(in),required :: joba integer intent(in),required,check(l>=0) :: l integer intent(in),required,check(n>=0) :: n integer intent(in),required,check(m>=0) :: m integer intent(in),required,check(p>=0) :: p double precision intent(in,out,copy),dimension(l,n),depend(l,n) :: a integer intent(hide),depend(a) :: lda=MAX(shape(a,0),1) double precision intent(in,out,copy),dimension(l,n),depend(l,m) :: e integer intent(hide),depend(e) :: lde=MAX(shape(e,0),1) double precision intent(in,out,copy),dimension(l,m),depend(l,m) :: b integer intent(hide),depend(b) :: ldb=MAX(shape(b,0),1) double precision intent(in,out,copy),dimension(p,n),depend(p,n) :: c integer intent(hide),depend(c) :: ldc=MAX(shape(c,0),1) double precision intent(hide),dimension(0,0) :: q integer intent(hide),depend(q) :: ldq=1 double precision intent(hide),dimension(0,0) :: z integer intent(hide),depend(z) :: ldz=1 integer intent(out) :: ranke integer intent(out) :: rnka22 double precision intent(in) :: tol integer intent(cache,hide),dimension(ldwork),depend(ldwork) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer required intent(in) :: ldwork integer intent(out) :: info end subroutine tg01fd_nn subroutine tg01fd_ii(compq,compz,joba,l,n,m,p,a,lda,e,lde,b,ldb,c,ldc,q,ldq,z,ldz,ranke,rnka22,tol,iwork,dwork,ldwork,info) ! in TG01FD.f fortranname tg01fd character intent(hide) :: compq = 'I' character intent(hide) :: compz = 'I' character intent(in),required :: joba integer intent(in),required,check(l>=0) :: l integer intent(in),required,check(n>=0) :: n integer intent(in),required,check(m>=0) :: m integer intent(in),required,check(p>=0) :: p double precision intent(in,out,copy),dimension(l,n),depend(l,n) :: a integer intent(hide),depend(a) :: lda=MAX(shape(a,0),1) double precision intent(in,out,copy),dimension(l,n),depend(l,m) :: e integer intent(hide),depend(e) :: lde=MAX(shape(e,0),1) double precision intent(in,out,copy),dimension(l,m),depend(l,m) :: b integer intent(hide),depend(b) :: ldb=MAX(shape(b,0),1) double precision intent(in,out,copy),dimension(p,n),depend(p,n) :: c integer intent(hide),depend(c) :: ldc=MAX(shape(c,0),1) double precision intent(out),dimension(l,l) :: q integer intent(hide),depend(q) :: ldq=MAX(shape(q,0),1) double precision intent(out),dimension(n,n) :: z integer intent(hide),depend(z) :: ldz=MAX(shape(z,0),1) integer intent(out) :: ranke integer intent(out) :: rnka22 double precision intent(in) :: tol integer intent(cache,hide),dimension(ldwork),depend(ldwork) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer required intent(in) :: ldwork integer intent(out) :: info end subroutine tg01fd_ii subroutine tg01fd_uu(compq,compz,joba,l,n,m,p,a,lda,e,lde,b,ldb,c,ldc,q,ldq,z,ldz,ranke,rnka22,tol,iwork,dwork,ldwork,info) ! in TG01FD.f fortranname tg01fd character intent(hide) :: compq = 'U' character intent(hide) :: compz = 'U' character intent(in),required :: joba integer intent(in),required,check(l>=0) :: l integer intent(in),required,check(n>=0) :: n integer intent(in),required,check(m>=0) :: m integer intent(in),required,check(p>=0) :: p double precision intent(in,out,copy),dimension(l,n),depend(l,n) :: a integer intent(hide),depend(a) :: lda=MAX(shape(a,0),1) double precision intent(in,out,copy),dimension(l,n),depend(l,m) :: e integer intent(hide),depend(e) :: lde=MAX(shape(e,0),1) double precision intent(in,out,copy),dimension(l,m),depend(l,m) :: b integer intent(hide),depend(b) :: ldb=MAX(shape(b,0),1) double precision intent(in,out,copy),dimension(p,n),depend(p,n) :: c integer intent(hide),depend(c) :: ldc=MAX(shape(c,0),1) double precision intent(in,out,copy),dimension(l,l) :: q integer intent(hide),depend(q) :: ldq=MAX(shape(q,0),1) double precision intent(in,out,copy),dimension(n,n) :: z integer intent(hide),depend(z) :: ldz=MAX(shape(z,0),1) integer intent(out) :: ranke integer intent(out) :: rnka22 double precision intent(in) :: tol integer intent(cache,hide),dimension(ldwork),depend(ldwork) :: iwork double precision intent(hide,cache),dimension(ldwork),depend(ldwork) :: dwork integer required intent(in) :: ldwork integer intent(out) :: info end subroutine tg01fd_uu