Module Interface

module Interface

        ! Interfaces
    public interface leg
    public interface leg_pfirst
    public interface cg_leg_pfirst
    public interface leg_diag_inv
    public interface cheb_pfirst
    public interface cg_cheb_pre_pfirst
    public interface cg_cheb_pfirst
    public interface cg_leg
    public interface cheb
    public interface cg_cheb
    public interface mvprod
    public interface leg_hele
    public interface cg_leg_hele
    public interface cheb_hele
    public interface cg_cheb_hele
    public interface leg_mult1
    public interface leg_capmatr
    public interface cheb_capmatr
    public interface leg_mult2
    public interface basistrans
    public interface f_rhs
    public interface leg_disk
    public interface cheb_disk
    public interface leg_eig
    public interface cheb_eig
    public interface leg_sepfakt
    public interface cheb_sepfakt
    public interface XERBLA
    public interface ddot
    public interface LSAME
    public interface daxpy
    public interface legendrel
    public interface legendref
    public interface phtosp2
    public interface sptoph2
    public interface DPOTRF
    public interface DPOTRS
    public interface DPBTRF
    public interface DPBTRS
    public interface DGEMV
    public interface vinifft
    public interface KjappLu
    public interface amult
    public interface transmult
    public interface tridiag
    public interface aloes
    public interface Amvprod
    public interface eval
    public interface inviter
    public interface Newt
    public interface Uloes
    public interface Cmult
    public interface triKjapp
    public interface shemult
    public interface qtri
    public interface quloes
    public interface qtrans
    public interface qUtrans
    public interface bistab
    public interface leg_matr
    public interface cheb_matr
    public interface ny_leg_diagloser
    public interface ny_cheb_diagloser
    public interface cheb_diag_inv
    public interface leg_mult
    public interface cheb_mult
    public interface pcg
    public interface vr2cos
    public interface nycheb_leg_disk
    public interface nycheb_mult2
    public interface cheb_leg
    public interface cheb_to_leg
    public interface cg_cheb_leg
    public interface u
    public interface w_rhs
    public interface setup
    public interface compDiag
    public interface leg_compSum
    public interface cheb_compSum
    public interface leg_cap_to_vekt
    public interface leg_to_shen
    public interface matr_to_sub
    public interface matr_to_vekt
    public interface vekt_to_matr
    public interface adjust
    public interface g_x
    public interface g_y
    public interface h_x
    public interface g
    public interface h
    public interface w
    public interface g_yy
    public interface g_xx
    public interface g_xxxx
    public interface g_yyyy
    public interface h_yy
    public interface h_xx
    public interface h_xxxx
    public interface h_yyyy
    public interface u_x
    public interface u_y
    public interface u_xy
    public interface u_yy
    public interface u_xx
    public interface u_xxxx
    public interface u_yyyy
    public interface u_yxx
    public interface u_xyy
    public interface u_yxxxx
    public interface u_xyyyy
    public interface legcoef
    public interface jacobf

end module Interface

Description of Interfaces

leg

public interface leg
    subroutine leg (hoyre, xjac, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in), dimension (0:N-1) :: xjac
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine leg
end interface leg

leg_pfirst

public interface leg_pfirst
    subroutine leg_pfirst (Ja, Diag, alf, bet, Sum, N)
        double precision, intent(in), dimension (1:N,1:2) :: Ja
        double precision, intent(in), dimension (1:N) :: Diag
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(out), dimension (1:N,1:N) :: Sum
        integer, intent(in) :: N
    end subroutine leg_pfirst
end interface leg_pfirst

cg_leg_pfirst

public interface cg_leg_pfirst
    subroutine cg_leg_pfirst (Ja, Diag, alf, bet, Sum1, Sum2, Sum3, Dinv, DJ, P2by2, DJP, m)
        double precision, intent(in), dimension (1:m,1:2) :: Ja
        double precision, intent(in), dimension (1:m) :: Diag
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(in), dimension (1:m) :: Sum1
        double precision, intent(in), dimension (1:m) :: Sum2
        double precision, intent(in), dimension (1:m) :: Sum3
        double precision, intent(out), dimension (1:m) :: Dinv
        double precision, intent(out), dimension (1:m,1:2) :: DJ
        double precision, intent(out), dimension (1:2,1:2) :: P2by2
        double precision, intent(out), dimension (1:2*m,1:4) :: DJP
        integer, intent(in) :: m
    end subroutine cg_leg_pfirst
end interface cg_leg_pfirst

leg_diag_inv

public interface leg_diag_inv
    function leg_diag_inv (Zum1, Zum2, Zum3, f, m)
        double precision, intent(in), dimension (1:m) :: Zum1
        double precision, intent(in), dimension (1:m) :: Zum2
        double precision, intent(in), dimension (1:m) :: Zum3
        double precision, intent(in), dimension (1:2*m) :: f
        integer, intent(in) :: m
        double precision, dimension (1:2*m) :: leg_diag_inv
    end function leg_diag_inv
end interface leg_diag_inv

cheb_pfirst

public interface cheb_pfirst
    subroutine cheb_pfirst (Ja, Fa, Diag, alf, bet, Sum, N)
        double precision, intent(in), dimension (1:N,1:2) :: Ja
        double precision, intent(in), dimension (1:2,1:N) :: Fa
        double precision, intent(in), dimension (1:N) :: Diag
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(out), dimension (1:N,1:N) :: Sum
        integer, intent(in) :: N
    end subroutine cheb_pfirst
end interface cheb_pfirst

cg_cheb_pre_pfirst

public interface cg_cheb_pre_pfirst
    subroutine cg_cheb_pre_pfirst (alf, bet, Ja, Fa, Diag, Dinv, DJ, FD, PP, m)
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(in), dimension (1:m,1:2) :: Ja
        double precision, intent(in), dimension (1:2,1:m) :: Fa
        double precision, intent(in), dimension (1:m) :: Diag
        double precision, intent(out), dimension (1:m) :: Dinv
        double precision, intent(out), dimension (1:m,1:2) :: DJ
        double precision, intent(out), dimension (1:2,1:m) :: FD
        double precision, intent(out), dimension (1:2,1:2) :: PP
        integer, intent(in) :: m
    end subroutine cg_cheb_pre_pfirst
end interface cg_cheb_pre_pfirst

cg_cheb_pfirst

public interface cg_cheb_pfirst
    subroutine cg_cheb_pfirst (Sum1, Sum2, Sum3, Sum4, Dinv, DJ, FD, P2by2, DJP, N)
        double precision, intent(in), dimension (1:N) :: Sum1
        double precision, intent(in), dimension (1:N) :: Sum2
        double precision, intent(in), dimension (1:N) :: Sum3
        double precision, intent(in), dimension (1:N) :: Sum4
        double precision, intent(in), dimension (1:N) :: Dinv
        double precision, intent(in), dimension (1:N,1:2) :: DJ
        double precision, intent(in), dimension (1:2,1:N) :: FD
        double precision, intent(in), dimension (1:2,1:2) :: P2by2
        double precision, intent(out), dimension (1:2*N,1:4) :: DJP
        integer, intent(in) :: N
    end subroutine cg_cheb_pfirst
end interface cg_cheb_pfirst

cg_leg

public interface cg_leg
    subroutine cg_leg (hoyre, xjac, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in), dimension (0:N-1) :: xjac
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine cg_leg
end interface cg_leg

cheb

public interface cheb
    subroutine cheb (hoyre, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine cheb
end interface cheb

cg_cheb

public interface cg_cheb
    subroutine cg_cheb (hoyre, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine cg_cheb
end interface cg_cheb

mvprod

public interface mvprod
    subroutine mvprod (m1, m2, Evekt, f)
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in), dimension (1:m2,1:m2) :: Evekt
        double precision, intent(inout), dimension (1:m1*m2) :: f
    end subroutine mvprod
end interface mvprod

leg_hele

public interface leg_hele
    subroutine leg_hele (StorSep, E, transE, W, transW, Cap, cap_vekt, nyJa, nyFa, f, info1, ipvt, cap_info, cap_ipvt, m1, m2)
        double precision, intent(in), dimension (1:7,1:m1,1:m2) :: StorSep
        double precision, intent(in), dimension (1:m2,1:m2) :: E
        double precision, intent(in), dimension (1:m2,1:m2) :: transE
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(in), dimension (1:m1,1:m1) :: transW
        double precision, intent(in), dimension (1:2*m1,1:2*m1) :: Cap
        double precision, intent(in), dimension (1:(m1*(2*m1+1))) :: cap_vekt
        double precision, intent(in), dimension (1:m2,1:2) :: nyJa
        double precision, intent(in), dimension (1:2,1:m2) :: nyFa
        double precision, intent(inout), dimension (1:m1*m2) :: f
        integer, intent(in), dimension (1:m2) :: info1
        integer, intent(in), dimension (1:m1,1:m2) :: ipvt
        integer, intent(in), dimension (1:1) :: cap_info
        integer, intent(in), dimension (1:2*m1) :: cap_ipvt
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_hele
end interface leg_hele

cg_leg_hele

public interface cg_leg_hele
    subroutine cg_leg_hele (StorSep, Diag, E, transE, W, Ja, nyJa, nyFa, e1, f, Sum1, Sum2, Sum3, info1, ipvt, Dinv, PP, DJ, DJP, alf, bet, m1, m2, problem_no)
        double precision, intent(in), dimension (1:7,1:m1,1:m2) :: StorSep
        double precision, intent(in), dimension (1:m2) :: Diag
        double precision, intent(in), dimension (1:m2,1:m2) :: E
        double precision, intent(in), dimension (1:m2,1:m2) :: transE
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(in), dimension (1:m1,1:2) :: Ja
        double precision, intent(in), dimension (1:m2,1:2) :: nyJa
        double precision, intent(in), dimension (1:2,1:m2) :: nyFa
        double precision, intent(in), dimension (1:m1*m2) :: e1
        double precision, intent(inout), dimension (1:m1*m2) :: f
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        integer, intent(in), dimension (1:m1) :: info1
        integer, intent(in), dimension (1:m1,1:m1) :: ipvt
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2*m1,1:4) :: DJP
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        integer, intent(in) :: problem_no
    end subroutine cg_leg_hele
end interface cg_leg_hele

cheb_hele

public interface cheb_hele
    subroutine cheb_hele (m1, m2, Cap, E, invE, W, invW, f, D, p, q, r, s, nyJa, nyFa, ipvt, StorUp, StorLo, Storz, Storm)
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in), dimension (1:2*m1,1:2*m1) :: Cap
        double precision, intent(in), dimension (1:m2,1:m2) :: E
        double precision, intent(in), dimension (1:m2,1:m2) :: invE
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(in), dimension (1:m1,1:m1) :: invW
        double precision, intent(inout), dimension (1:m1*m2) :: f
        double precision, intent(in), dimension (1:m1) :: D
        double precision, intent(in), dimension (1:m1) :: p
        double precision, intent(in), dimension (1:m1) :: q
        double precision, intent(in), dimension (1:m1) :: r
        double precision, intent(in), dimension (1:m1) :: s
        double precision, intent(in), dimension (1:m2,1:2) :: nyJa
        double precision, intent(in), dimension (1:2,1:m2) :: nyFa
        integer, intent(in), dimension (1:2*m1) :: ipvt
        double precision, intent(in), dimension (1:m2,1:3*m1) :: StorUp
        double precision, intent(in), dimension (1:m2,1:3*m1) :: StorLo
        double precision, intent(in), dimension (1:m1,1:m2) :: Storz
        double precision, intent(in), dimension (1:m1,1:m2) :: Storm
    end subroutine cheb_hele
end interface cheb_hele

cg_cheb_hele

public interface cg_cheb_hele
    subroutine cg_cheb_hele (m1, m2, Diag, E, invE, W, invW, D, p, q, r, s, f, Ja, nyJa, Fa, nyFa, e1, Sum1, Sum2, Sum3, Sum4, StorUp, StorLo, Storz, Storm, Dinv, PP, DJ, FD, DJP, alf, bet)
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in), dimension (1:m1) :: Diag
        double precision, intent(in), dimension (1:m2,1:m2) :: E
        double precision, intent(in), dimension (1:m2,1:m2) :: invE
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(in), dimension (1:m1,1:m1) :: invW
        double precision, intent(in), dimension (1:m1) :: D
        double precision, intent(in), dimension (1:m1) :: p
        double precision, intent(in), dimension (1:m1) :: q
        double precision, intent(in), dimension (1:m1) :: r
        double precision, intent(in), dimension (1:m1) :: s
        double precision, intent(inout), dimension (1:m1*m2) :: f
        double precision, intent(in), dimension (1:m1,1:2) :: Ja
        double precision, intent(in), dimension (1:m2,1:2) :: nyJa
        double precision, intent(in), dimension (1:2,1:m1) :: Fa
        double precision, intent(in), dimension (1:2,1:m2) :: nyFa
        double precision, intent(in), dimension (1:m1*m2) :: e1
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        double precision, intent(in), dimension (1:m1) :: Sum4
        double precision, intent(in), dimension (1:m2,1:3*m1) :: StorUp
        double precision, intent(in), dimension (1:m2,1:3*m1) :: StorLo
        double precision, intent(in), dimension (1:m1,1:m2) :: Storz
        double precision, intent(in), dimension (1:m1,1:m2) :: Storm
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2,1:m1) :: FD
        double precision, intent(in), dimension (1:2*m1,1:4) :: DJP
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
    end subroutine cg_cheb_hele
end interface cg_cheb_hele

leg_mult1

public interface leg_mult1
    subroutine leg_mult1 (vekt, F, transW, y, m1, m2)
        double precision, intent(in), dimension (1:m1*m2) :: vekt
        double precision, intent(in), dimension (1:2,1:m2) :: F
        double precision, intent(in), dimension (1:m1,1:m1) :: transW
        double precision, intent(out), dimension (1:2*m1) :: y
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_mult1
end interface leg_mult1

leg_capmatr

public interface leg_capmatr
    function leg_capmatr (J, nyJ, eigen, D, Sum, alf, bet, m1, m2)
        double precision, intent(in), dimension (1:m1,1:2) :: J
        double precision, intent(in), dimension (1:m2,1:2) :: nyJ
        double precision, intent(in), dimension (1:m2) :: eigen
        double precision, intent(in), dimension (1:m1*m2) :: D
        double precision, intent(in), dimension (1:m1,1:m1) :: Sum
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, dimension (1:2*m1,1:2*m1) :: leg_capmatr
    end function leg_capmatr
end interface leg_capmatr

cheb_capmatr

public interface cheb_capmatr
    function cheb_capmatr (m1, m2, alf, bet, J, F, nyJ, nyF, eigval, D, Sum)
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(in), dimension (1:m1,1:2) :: J
        double precision, intent(in), dimension (1:2,1:m1) :: F
        double precision, intent(in), dimension (1:m2,1:2) :: nyJ
        double precision, intent(in), dimension (1:2,1:m2) :: nyF
        double precision, intent(in), dimension (1:m2) :: eigval
        double precision, intent(in), dimension (1:m1*m2) :: D
        double precision, intent(in), dimension (1:m1,1:m1) :: Sum
        double precision, dimension (1:2*m1,1:2*m1) :: cheb_capmatr
    end function cheb_capmatr
end interface cheb_capmatr

leg_mult2

public interface leg_mult2
    subroutine leg_mult2 (J, f, W, y, m1, m2)
        double precision, intent(in), dimension (1:m2,1:2) :: J
        double precision, intent(in), dimension (1:2*m1) :: f
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(out), dimension (1:m1*m2) :: y
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_mult2
end interface leg_mult2

basistrans

public interface basistrans
    subroutine basistrans (la, sh, d, s2, s3, N)
        double precision, intent(out), dimension (0:N-1,0:N-1) :: la
        double precision, intent(in), dimension (0:N-5,0:N-5) :: sh
        double precision, intent(in), dimension (0:N-5) :: d
        double precision, intent(in), dimension (0:N-5) :: s2
        double precision, intent(in), dimension (0:N-5) :: s3
        integer, intent(in) :: N
    end subroutine basistrans
end interface basistrans

f_rhs

public interface f_rhs
    function f_rhs (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: f_rhs
    end function f_rhs
end interface f_rhs

leg_disk

public interface leg_disk
    subroutine leg_disk (B, C, V, flag, N)
        double precision, intent(out), dimension (1:N,1:5) :: B
        double precision, intent(out), dimension (1:N,1:3) :: C
        double precision, intent(out), dimension (1:2) :: V
        integer, intent(in) :: flag
        integer, intent(in) :: N
    end subroutine leg_disk
end interface leg_disk

cheb_disk

public interface cheb_disk
    subroutine cheb_disk (N, A, B, C, D, p, q, r, s, Q1, W1, flag)
        integer, intent(in) :: N
        double precision, intent(out), dimension (1:N,1:3) :: A
        double precision, intent(out), dimension (1:N,1:5) :: B
        double precision, intent(out), dimension (1:N,1:3) :: C
        double precision, intent(out), dimension (1:N) :: D
        double precision, intent(out), dimension (1:N) :: p
        double precision, intent(out), dimension (1:N) :: q
        double precision, intent(out), dimension (1:N) :: r
        double precision, intent(out), dimension (1:N) :: s
        double precision, intent(out), dimension (1:N,1:2) :: Q1
        double precision, intent(out), dimension (1:2,1:N) :: W1
        integer, intent(in) :: flag
    end subroutine cheb_disk
end interface cheb_disk

leg_eig

public interface leg_eig
    subroutine leg_eig (C, V, Diag, Id, Ja, N)
        double precision, intent(in), dimension (1:N,1:3) :: C
        double precision, intent(in), dimension (1:2) :: V
        double precision, intent(out), dimension (1:N) :: Diag
        double precision, intent(out), dimension (1:N,1:N) :: Id
        double precision, intent(out), dimension (1:N,1:2) :: Ja
        integer, intent(in) :: N
    end subroutine leg_eig
end interface leg_eig

cheb_eig

public interface cheb_eig
    subroutine cheb_eig (N, A, D, p, q, r, s, C, flag, Id, Idinv, Diag)
        integer, intent(in) :: N
        double precision, intent(in), dimension (1:N,1:3) :: A
        double precision, intent(in), dimension (1:N) :: D
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(in), dimension (1:N,1:3) :: C
        integer, intent(in) :: flag
        double precision, intent(out), dimension (1:N,1:N) :: Id
        double precision, intent(out), dimension (1:N,1:N) :: Idinv
        double precision, intent(out), dimension (1:N) :: Diag
    end subroutine cheb_eig
end interface cheb_eig

leg_sepfakt

public interface leg_sepfakt
    subroutine leg_sepfakt (sepfakt, B, C, DB, Diag, alf, bet, info, ipvt, m1, m2)
        double precision, intent(out), dimension (1:7,1:m1,1:m2) :: sepfakt
        double precision, intent(in), dimension (1:m1,1:5) :: B
        double precision, intent(in), dimension (1:m1,1:3) :: C
        double precision, intent(in), dimension (1:m2) :: DB
        double precision, intent(in), dimension (1:m2) :: Diag
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(out), dimension (1:m2) :: info
        integer, intent(out), dimension (1:m1,1:m2) :: ipvt
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_sepfakt
end interface leg_sepfakt

cheb_sepfakt

public interface cheb_sepfakt
    subroutine cheb_sepfakt (A, B, C, DB, Diag, p, q, r, s, StorLo, StorUp, Storz, Storm, alf, bet, m1, m2)
        double precision, intent(in), dimension (1:m1,1:3) :: A
        double precision, intent(in), dimension (1:m1,1:5) :: B
        double precision, intent(in), dimension (1:m1,1:3) :: C
        double precision, intent(in), dimension (1:m2) :: DB
        double precision, intent(in), dimension (1:m2) :: Diag
        double precision, intent(in), dimension (1:m1) :: p
        double precision, intent(in), dimension (1:m1) :: q
        double precision, intent(in), dimension (1:m1) :: r
        double precision, intent(in), dimension (1:m1) :: s
        double precision, intent(out), dimension (1:m2,1:3*m1) :: StorLo
        double precision, intent(out), dimension (1:m2,1:3*m1) :: StorUp
        double precision, intent(out), dimension (1:m1,1:m2) :: Storz
        double precision, intent(out), dimension (1:m1,1:m2) :: Storm
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine cheb_sepfakt
end interface cheb_sepfakt

XERBLA

public interface XERBLA
    subroutine XERBLA (SRNAME, INFO)
        character (len=6) :: SRNAME
        integer :: INFO
    end subroutine XERBLA
end interface XERBLA

ddot

public interface ddot
    double precision function ddot (n, dx, incx, dy, incy)
        integer, intent(in) :: n
        double precision, intent(in), dimension (:) :: dx
        integer, intent(in) :: incx
        double precision, intent(in), dimension (:) :: dy
        integer, intent(in) :: incy
    end function ddot
end interface ddot

LSAME

public interface LSAME
    logical function LSAME (CA, CB)
        character :: CA
        character :: CB
    end function LSAME
end interface LSAME

daxpy

public interface daxpy
    subroutine daxpy (n, da, dx, incx, dy, incy)
        integer, intent(in) :: n
        double precision, intent(in) :: da
        double precision, intent(in), dimension (:) :: dx
        integer, intent(in) :: incx
        double precision, intent(inout), dimension (:) :: dy
        integer, intent(in) :: incy
    end subroutine daxpy
end interface daxpy

legendrel

public interface legendrel
    subroutine legendrel (n, xjac)
        integer, intent(in) :: n
        double precision, intent(out), dimension (1:n+1) :: xjac
    end subroutine legendrel
end interface legendrel

legendref

public interface legendref
    subroutine legendref (n, poly, pder, polym1, pderm1, polym2, pderm2, x)
        integer :: n
        double precision, intent(out) :: poly
        double precision, intent(out) :: pder
        double precision, intent(out) :: polym1
        double precision, intent(out) :: pderm1
        double precision, intent(out) :: polym2
        double precision, intent(out) :: pderm2
        double precision, intent(in) :: x
    end subroutine legendref
end interface legendref

phtosp2

public interface phtosp2
    subroutine phtosp2 (f, s, b, n)
        double precision, intent(in), dimension (0:n,0:n) :: f
        double precision, intent(out), dimension (0:n,0:n) :: s
        double precision, intent(in), dimension (0:n,0:n) :: b
        integer :: n
    end subroutine phtosp2
end interface phtosp2

sptoph2

public interface sptoph2
    subroutine sptoph2 (f, s, a, n)
        double precision, intent(out), dimension (0:n,0:n) :: f
        double precision, intent(in), dimension (0:n,0:n) :: s
        double precision, intent(in), dimension (0:n,0:n) :: a
        integer :: n
    end subroutine sptoph2
end interface sptoph2

DPOTRF

public interface DPOTRF
    subroutine DPOTRF (UPLO, N, A, LDA, INFO)
        character, intent(in) :: UPLO
        integer, intent(in) :: N
        double precision, intent(inout), dimension ( LDA, * ) :: A
        integer, intent(in) :: LDA
        integer, intent(out) :: INFO
    end subroutine DPOTRF
end interface DPOTRF

DPOTRS

public interface DPOTRS
    subroutine DPOTRS (UPLO, N, NRHS, A, LDA, B, LDB, INFO)
        character, intent(in) :: UPLO
        integer, intent(in) :: N
        integer, intent(in) :: NRHS
        double precision, intent(in), dimension ( LDA, * ) :: A
        integer, intent(in) :: LDA
        double precision, intent(inout), dimension ( LDB, * ) :: B
        integer, intent(in) :: LDB
        integer, intent(out) :: INFO
    end subroutine DPOTRS
end interface DPOTRS

DPBTRF

public interface DPBTRF
    subroutine DPBTRF (UPLO, N, KD, AB, LDAB, INFO)
        character, intent(in) :: UPLO
        integer, intent(in) :: N
        integer, intent(in) :: KD
        double precision, intent(inout), dimension ( LDAB, * ) :: AB
        integer, intent(in) :: LDAB
        integer, intent(out) :: INFO
    end subroutine DPBTRF
end interface DPBTRF

DPBTRS

public interface DPBTRS
    subroutine DPBTRS (UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO)
        character, intent(in) :: UPLO
        integer, intent(in) :: N
        integer, intent(in) :: KD
        integer, intent(in) :: NRHS
        double precision, intent(in), dimension ( LDAB, * ) :: AB
        integer, intent(in) :: LDAB
        double precision, intent(inout), dimension ( LDB, * ) :: B
        integer, intent(in) :: LDB
        integer, intent(out) :: INFO
    end subroutine DPBTRS
end interface DPBTRS

DGEMV

public interface DGEMV
    subroutine DGEMV (TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
        character, intent(in) :: TRANS
        integer, intent(in) :: M
        integer, intent(in) :: N
        double precision, intent(in) :: ALPHA
        double precision, intent(in), dimension ( LDA, * ) :: A
        integer, intent(in) :: LDA
        double precision, intent(in), dimension ( * ) :: X
        integer, intent(in) :: INCX
        double precision, intent(in) :: BETA
        double precision, intent(inout), dimension (*) :: Y
        integer, intent(in) :: INCY
    end subroutine DGEMV
end interface DGEMV

vinifft

public interface vinifft
    subroutine vinifft (n, wsave)
        integer, intent(in) :: N
        double precision, intent(out), dimension (3*N+15) :: wsave
    end subroutine vinifft
end interface vinifft

KjappLu

public interface KjappLu
    subroutine KjappLu (L1, U1, z, m, G, p, q, r, s, N)
        double precision, intent(out), dimension (1:N,1:3) :: L1
        double precision, intent(out), dimension (1:N,1:3) :: U1
        double precision, intent(out), dimension (1:N) :: z
        double precision, intent(out), dimension (1:N) :: m
        double precision, intent(in), dimension (1:N,1:5) :: G
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        integer, intent(in) :: N
    end subroutine KjappLu
end interface KjappLu

amult

public interface amult
    subroutine amult (diagA, p, q, r, s, x, y, N)
        double precision, intent(in), dimension (1:N) :: diagA
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:n) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(in), dimension (1:N) :: x
        double precision, intent(out), dimension (1:N) :: y
        integer, intent(in) :: N
    end subroutine amult
end interface amult

transmult

public interface transmult
    function transmult (diagA, p, q, r, s, x, N)
        double precision, intent(in), dimension (1:N) :: diagA
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(in), dimension (1:N) :: x
        integer, intent(in) :: N
        double precision, dimension (1:N) :: transmult
    end function transmult
end interface transmult

tridiag

public interface tridiag
    subroutine tridiag (L, f, N)
        double precision, intent(in), dimension (1:N,1:3) :: L
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine tridiag
end interface tridiag

aloes

public interface aloes
    subroutine aloes (D, p, q, r, s, f, N)
        double precision, intent(in), dimension (1:N) :: D
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine aloes
end interface aloes

Amvprod

public interface Amvprod
    subroutine Amvprod (D, p, q, r, s, f, m1, m2)
        double precision, intent(in), dimension (1:m1) :: D
        double precision, intent(in), dimension (1:m1) :: p
        double precision, intent(in), dimension (1:m1) :: q
        double precision, intent(in), dimension (1:m1) :: r
        double precision, intent(in), dimension (1:m1) :: s
        double precision, intent(inout), dimension (1:m1*m2) :: f
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine Amvprod
end interface Amvprod

eval

public interface eval
    subroutine eval (N, eigv, p, q, r, s, W, A, C, diagA, flag)
        integer, intent(in) :: N
        double precision, intent(inout), dimension (1:N) :: eigv
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(inout), dimension (1:N,1:N) :: W
        double precision, intent(in), dimension (1:N,1:3) :: A
        double precision, intent(in), dimension (1:N,1:3) :: C
        double precision, intent(in), dimension (1:N) :: diagA
        integer, intent(in) :: flag
    end subroutine eval
end interface eval

inviter

public interface inviter
    subroutine inviter (N, A, C, E, neig, p, q, r, s, diagA)
        integer, intent(in) :: N
        double precision, intent(in), dimension (1:N,1:3) :: A
        double precision, intent(in), dimension (1:N,1:3) :: C
        double precision, intent(inout), dimension (1:N,1:N) :: E
        double precision, intent(in), dimension (1:N) :: neig
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(in), dimension (1:N) :: diagA
    end subroutine inviter
end interface inviter

Newt

public interface Newt
    subroutine Newt (N, A, x, nyeval, C, evekt, eig, diagA, p, q, r, s, i, flag)
        integer, intent(in) :: N
        double precision, intent(in), dimension (1:N,1:3) :: A
        double precision, intent(out), dimension (1:N) :: x
        double precision, intent(out) :: nyeval
        double precision, intent(in), dimension (1:N,1:3) :: C
        double precision, intent(in), dimension (1:N) :: evekt
        double precision, intent(in) :: eig
        double precision, intent(in), dimension (1:N) :: diagA
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        integer, intent(in) :: i
        integer, intent(in) :: flag
    end subroutine Newt
end interface Newt

Uloes

public interface Uloes
    subroutine Uloes (U, p, q, r, s, f, N)
        double precision, intent(in), dimension (1:N,1:3) :: U
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine Uloes
end interface Uloes

Cmult

public interface Cmult
    function Cmult (C, x, N)
        double precision, intent(in), dimension (1:N,1:3) :: C
        double precision, intent(in), dimension (1:N) :: x
        integer, intent(in) :: N
        double precision, dimension (1:N) :: Cmult
    end function Cmult
end interface Cmult

triKjapp

public interface triKjapp
    subroutine triKjapp (L, U, z, m, G, p, q, r, s, N)
        double precision, intent(out), dimension (1:N,1:2) :: L
        double precision, intent(out), dimension (1:N,1:3) :: U
        double precision, intent(out), dimension (1:N) :: z
        double precision, intent(out), dimension (1:N) :: m
        double precision, intent(in), dimension (1:N,1:3) :: G
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        integer, intent(in) :: N
    end subroutine triKjapp
end interface triKjapp

shemult

public interface shemult
    subroutine shemult (Lo, Up, U, V, z, q, m, s, f, N)
        double precision, intent(in), dimension (1:N,1:2) :: Lo
        double precision, intent(in), dimension (1:N,1:3) :: Up
        double precision, intent(in), dimension (1:N,1:2) :: U
        double precision, intent(in), dimension (1:2,1:N) :: V
        double precision, intent(in), dimension (1:N) :: z
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: m
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine shemult
end interface shemult

qtri

public interface qtri
    subroutine qtri (L, f, N)
        double precision, intent(in), dimension (1:N,1:2) :: L
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine qtri
end interface qtri

quloes

public interface quloes
    subroutine quloes (U, p, q, r, s, f, N)
        double precision, intent(in), dimension (1:N,1:3) :: U
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(inout), dimension (1:N) :: f
        integer, intent(in) :: N
    end subroutine quloes
end interface quloes

qtrans

public interface qtrans
    function qtrans (Lo, f, N)
        double precision, intent(in), dimension (1:N,1:2) :: Lo
        double precision, intent(in), dimension (1:N) :: f
        integer, intent(in) :: N
        double precision, dimension (1:N) :: qtrans
    end function qtrans
end interface qtrans

qUtrans

public interface qUtrans
    function qUtrans (U, p, q, r, s, f, N)
        double precision, intent(in), dimension (1:N,1:3) :: U
        double precision, intent(in), dimension (1:N) :: p
        double precision, intent(in), dimension (1:N) :: q
        double precision, intent(in), dimension (1:N) :: r
        double precision, intent(in), dimension (1:N) :: s
        double precision, intent(in), dimension (1:N) :: f
        integer, intent(in) :: N
        double precision, dimension (1:N) :: qUtrans
    end function qUtrans
end interface qUtrans

bistab

public interface bistab
    subroutine bistab (Sum1, Sum2, Sum3, Sum4, story, storx, Ja, Fa, Dinv, PP, DJ, FD, DJP, f, bet, m1, m2)
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        double precision, intent(in), dimension (1:m1) :: Sum4
        double precision, intent(in), dimension (1:m1,1:2*m2) :: story
        double precision, intent(in), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(in), dimension (1:m2,1:2) :: Ja
        double precision, intent(in), dimension (1:2,1:m2) :: Fa
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2,1:m1) :: FD
        double precision, intent(in), dimension (1:2*m1,1:4) :: DJP
        double precision, intent(inout), dimension (1:2*m1) :: f
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine bistab
end interface bistab

leg_matr

public interface leg_matr
    subroutine leg_matr (J, eig, D, story, storx, alf, bet, m1, m2)
        double precision, intent(in), dimension (1:m1,1:2) :: J
        double precision, intent(in), dimension (1:m2) :: eig
        double precision, intent(in), dimension (1:m1*m2) :: D
        double precision, intent(out), dimension (1:m1,2*m2) :: story
        double precision, intent(out), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_matr
end interface leg_matr

cheb_matr

public interface cheb_matr
    subroutine cheb_matr (m1, m2, alf, bet, J, F, eigval, D, storx, story)
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        double precision, intent(in), dimension (1:m1,1:2) :: J
        double precision, intent(in), dimension (1:2,1:m1) :: F
        double precision, intent(in), dimension (1:m2) :: eigval
        double precision, intent(in), dimension (1:m1*m2) :: D
        double precision, intent(out), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(out), dimension (1:m1,1:2*m2) :: story
    end subroutine cheb_matr
end interface cheb_matr

ny_leg_diagloser

public interface ny_leg_diagloser
    function ny_leg_diagloser (Zum1, Zum2, Zum3, f, DJP, m)
        double precision, intent(in), dimension (1:m) :: Zum1
        double precision, intent(in), dimension (1:m) :: Zum2
        double precision, intent(in), dimension (1:m) :: Zum3
        double precision, intent(in), dimension (1:2*m) :: f
        double precision, intent(in), dimension (1:2*m,1:4) :: DJP
        integer, intent(in) :: m
        double precision, dimension (1:2*m) :: ny_leg_diagloser
    end function ny_leg_diagloser
end interface ny_leg_diagloser

ny_cheb_diagloser

public interface ny_cheb_diagloser
    function ny_cheb_diagloser (Zum1, Zum2, Zum3, Zum4, f, FD, DJP, N)
        double precision, intent(in), dimension (1:N) :: Zum1
        double precision, intent(in), dimension (1:N) :: Zum2
        double precision, intent(in), dimension (1:N) :: Zum3
        double precision, intent(in), dimension (1:N) :: Zum4
        double precision, intent(in), dimension (1:2*N) :: f
        double precision, intent(in), dimension (1:2,1:N) :: FD
        double precision, intent(in), dimension (1:2*N,1:4) :: DJP
        integer, intent(in) :: N
        double precision, dimension (1:2*N) :: ny_cheb_diagloser
    end function ny_cheb_diagloser
end interface ny_cheb_diagloser

cheb_diag_inv

public interface cheb_diag_inv
    function cheb_diag_inv (Zum1, Zum2, Zum3, Zum4, f, N)
        double precision, intent(in), dimension (1:N) :: Zum1
        double precision, intent(in), dimension (1:N) :: Zum2
        double precision, intent(in), dimension (1:N) :: Zum3
        double precision, intent(in), dimension (1:N) :: Zum4
        double precision, intent(in), dimension (1:2*N) :: f
        integer, intent(in) :: N
        double precision, dimension (1:2*N) :: cheb_diag_inv
    end function cheb_diag_inv
end interface cheb_diag_inv

leg_mult

public interface leg_mult
    function leg_mult (J, story, storx, Sum1, Sum2, Sum3, Dinv, PP, DJ, f, bet, m1, m2)
        double precision, intent(in), dimension (1:m2,1:2) :: J
        double precision, intent(in), dimension (1:m1,1:2*m2) :: story
        double precision, intent(in), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2*m1) :: f
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, dimension (1:2*m1) :: leg_mult
    end function leg_mult
end interface leg_mult

cheb_mult

public interface cheb_mult
    function cheb_mult (Ja, Fa, story, storx, Sum1, Sum2, Sum3, Sum4, Dinv, PP, DJ, FD, f, bet, m1, m2)
        double precision, intent(in), dimension (1:m2,1:2) :: Ja
        double precision, intent(in), dimension (1:2,1:m2) :: Fa
        double precision, intent(in), dimension (1:m1,1:2*m2) :: story
        double precision, intent(in), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        double precision, intent(in), dimension (1:m1) :: Sum4
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2,1:m1) :: FD
        double precision, intent(in), dimension (1:2*m1) :: f
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, dimension (1:2*m1) :: cheb_mult
    end function cheb_mult
end interface cheb_mult

pcg

public interface pcg
    subroutine pcg (Sum1, Sum2, Sum3, story, storx, J, Dinv, PP, DJ, DJP, f, bet, m1, m2, problem_no)
        double precision, intent(in), dimension (1:m1) :: Sum1
        double precision, intent(in), dimension (1:m1) :: Sum2
        double precision, intent(in), dimension (1:m1) :: Sum3
        double precision, intent(in), dimension (1:m1,1:2*m2) :: story
        double precision, intent(in), dimension (1:m1,1:2*m2) :: storx
        double precision, intent(in), dimension (1:m2,1:2) :: J
        double precision, intent(in), dimension (1:m1) :: Dinv
        double precision, intent(in), dimension (1:2,1:2) :: PP
        double precision, intent(in), dimension (1:m1,1:2) :: DJ
        double precision, intent(in), dimension (1:2*m1,1:4) :: DJP
        double precision, intent(inout), dimension (1:2*m1) :: f
        double precision, intent(in) :: bet
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        integer, intent(in) :: problem_no
    end subroutine pcg
end interface pcg

vr2cos

public interface vr2cos
    subroutine vr2cos (x, n, iflag, wsave)
        double precision, intent(inout), dimension (0:n,0:n) :: x
        integer, intent(in) :: n
        integer, intent(in) :: iflag
        double precision, intent(in), dimension (6*N+15) :: wsave
    end subroutine vr2cos
end interface vr2cos

nycheb_leg_disk

public interface nycheb_leg_disk
    subroutine nycheb_leg_disk (A1, A2, B1, B2, N, m1, m2, pi)
        double precision, intent(out), dimension (0:m1,0:m1) :: A1
        double precision, intent(out), dimension (0:m2,0:m2) :: A2
        double precision, intent(out), dimension (0:m1,0:m1) :: B1
        double precision, intent(out), dimension (0:m2,0:m2) :: B2
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(in) :: pi
    end subroutine nycheb_leg_disk
end interface nycheb_leg_disk

nycheb_mult2

public interface nycheb_mult2
    subroutine nycheb_mult2 (J, f, W, y, D, p, q, r, s, m1, m2)
        double precision, intent(in), dimension (1:m2,1:2) :: J
        double precision, intent(in), dimension (1:2*m1) :: f
        double precision, intent(in), dimension (1:m1,1:m1) :: W
        double precision, intent(out), dimension (1:m1*m2) :: y
        double precision, intent(in), dimension (1:m1) :: D
        double precision, intent(in), dimension (1:m1) :: p
        double precision, intent(in), dimension (1:m1) :: q
        double precision, intent(in), dimension (1:m1) :: r
        double precision, intent(in), dimension (1:m1) :: s
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine nycheb_mult2
end interface nycheb_mult2

cheb_leg

public interface cheb_leg
    subroutine cheb_leg (hoyre, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine cheb_leg
end interface cheb_leg

cheb_to_leg

public interface cheb_to_leg
    subroutine cheb_to_leg (cheb, leg, A1, A2, N, m1, m2)
        double precision, intent(in), dimension (0:N-1,0:N-1) :: cheb
        double precision, intent(out), dimension (0:N-1,0:N-1) :: leg
        double precision, intent(in), dimension (0:m1+1,0:m1+1) :: A1
        double precision, intent(in), dimension (0:m2+1,0:m2+1) :: A2
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine cheb_to_leg
end interface cheb_to_leg

cg_cheb_leg

public interface cg_cheb_leg
    subroutine cg_cheb_leg (hoyre, alf, bet, flag, N, m1, m2, tid1, tid2, tid3, tid4)
        double precision, intent(in), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in) :: alf
        double precision, intent(in) :: bet
        integer, intent(in) :: flag
        integer, intent(in) :: N
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        double precision, intent(out) :: tid1
        double precision, intent(out) :: tid2
        double precision, intent(out) :: tid3
        double precision, intent(out) :: tid4
    end subroutine cg_cheb_leg
end interface cg_cheb_leg

u

public interface u
    function u (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u
    end function u
end interface u

w_rhs

public interface w_rhs
    function w_rhs (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: w_rhs
    end function w_rhs
end interface w_rhs

setup

public interface setup
    subroutine setup (N, xjac, hoyre, svar, problem, legtrans)
        integer, intent(in) :: N
        double precision, intent(out), dimension (0:N-1) :: xjac
        double precision, intent(out), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(out), dimension (0:N-1,0:N-1) :: svar
        integer, intent(in) :: problem
        logical, intent(in) :: legtrans
    end subroutine setup
end interface setup

compDiag

public interface compDiag
    subroutine compDiag (konst, Diag1, Diag2, DB1, DB2, Tut, De, m1, m2)
        double precision, intent(in), dimension (1:m2) :: konst
        double precision, intent(in), dimension (1:m1) :: Diag1
        double precision, intent(in), dimension (1:m2) :: Diag2
        double precision, intent(in), dimension (1:m1) :: DB1
        double precision, intent(in), dimension (1:m2) :: DB2
        double precision, intent(in), dimension (1:m1) :: Tut
        double precision, intent(out), dimension (1:m1*m2) :: De
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine compDiag
end interface compDiag

leg_compSum

public interface leg_compSum
    subroutine leg_compSum (ka1, ka2, ka3, De, Sum1, Sum2, Sum3, m1, m2)
        double precision, intent(in), dimension (1:m2) :: ka1
        double precision, intent(in), dimension (1:m2) :: ka2
        double precision, intent(in), dimension (1:m2) :: ka3
        double precision, intent(in), dimension (1:m1*m2) :: De
        double precision, intent(out), dimension (1:m1) :: Sum1
        double precision, intent(out), dimension (1:m1) :: Sum2
        double precision, intent(out), dimension (1:m1) :: Sum3
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine leg_compSum
end interface leg_compSum

cheb_compSum

public interface cheb_compSum
    subroutine cheb_compSum (ka1, ka2, ka3, ka4, De, Sum1, Sum2, Sum3, Sum4, m1, m2)
        double precision, intent(in), dimension (1:m2) :: ka1
        double precision, intent(in), dimension (1:m2) :: ka2
        double precision, intent(in), dimension (1:m2) :: ka3
        double precision, intent(in), dimension (1:m2) :: ka4
        double precision, intent(in), dimension (1:m1*m2) :: De
        double precision, intent(out), dimension (1:m1) :: Sum1
        double precision, intent(out), dimension (1:m1) :: Sum2
        double precision, intent(out), dimension (1:m1) :: Sum3
        double precision, intent(out), dimension (1:m1) :: Sum4
        integer, intent(in) :: m1
        integer, intent(in) :: m2
    end subroutine cheb_compSum
end interface cheb_compSum

leg_cap_to_vekt

public interface leg_cap_to_vekt
    function leg_cap_to_vekt (Cap, m1)
        double precision, intent(in), dimension (2*m1,2*m1) :: Cap
        integer, intent(in) :: m1
        double precision, dimension (1:(m1*(2*m1+1))) :: leg_cap_to_vekt
    end function leg_cap_to_vekt
end interface leg_cap_to_vekt

leg_to_shen

public interface leg_to_shen
    function leg_to_shen (hoyre, d, r1, r2, r3, N)
        double precision, intent(in), dimension (0:N-1,0:N-1) :: hoyre
        double precision, intent(in), dimension (0:N-5) :: d
        double precision, intent(in), dimension (0:N-5) :: r1
        double precision, intent(in), dimension (0:N-5) :: r2
        double precision, intent(in), dimension (0:N-5) :: r3
        integer, intent(in) :: N
        double precision, dimension (0:N-5,0:N-5) :: leg_to_shen
    end function leg_to_shen
end interface leg_to_shen

matr_to_sub

public interface matr_to_sub
    function matr_to_sub (hoyre, m1, m2, flag1, flag2, inc)
        double precision, intent(in), dimension (0:2*m1+inc,0:2*m2) :: hoyre
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        integer, intent(in) :: flag1
        integer, intent(in) :: flag2
        integer, intent(in) :: inc
        double precision, dimension (1:m1,1:m2) :: matr_to_sub
    end function matr_to_sub
end interface matr_to_sub

matr_to_vekt

public interface matr_to_vekt
    function matr_to_vekt (hoyre, m1, m2, flag1, flag2, inc)
        double precision, intent(in), dimension (0:2*m1+inc,0:2*m2) :: hoyre
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        integer, intent(in) :: flag1
        integer, intent(in) :: flag2
        integer, intent(in) :: inc
        double precision, dimension (1:m1*m2) :: matr_to_vekt
    end function matr_to_vekt
end interface matr_to_vekt

vekt_to_matr

public interface vekt_to_matr
    subroutine vekt_to_matr (vekt, sh, m1, m2, flag1, flag2, N)
        double precision, intent(in), dimension (1:m1*m2) :: vekt
        double precision, intent(inout), dimension (0:N-5,0:N-5) :: sh
        integer, intent(in) :: m1
        integer, intent(in) :: m2
        integer, intent(in) :: flag1
        integer, intent(in) :: flag2
        integer, intent(in) :: N
    end subroutine vekt_to_matr
end interface vekt_to_matr

adjust

public interface adjust
    subroutine adjust (N, xjac, loes, problem)
        integer, intent(in) :: N
        double precision, intent(in), dimension (0:N-1) :: xjac
        double precision, intent(inout), dimension (0:N-1,0:N-1) :: loes
        integer, intent(in) :: problem
    end subroutine adjust
end interface adjust

g_x

public interface g_x
    function g_x (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_x
    end function g_x
end interface g_x

g_y

public interface g_y
    function g_y (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_y
    end function g_y
end interface g_y

h_x

public interface h_x
    function h_x (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h_x
    end function h_x
end interface h_x

g

public interface g
    function g (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g
    end function g
end interface g

h

public interface h
    function h (dir, x, y, problem)
        character, intent(in) :: dir
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h
    end function h
end interface h

w

public interface w
    function w (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: w
    end function w
end interface w

g_yy

public interface g_yy
    function g_yy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_yy
    end function g_yy
end interface g_yy

g_xx

public interface g_xx
    function g_xx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_xx
    end function g_xx
end interface g_xx

g_xxxx

public interface g_xxxx
    function g_xxxx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_xxxx
    end function g_xxxx
end interface g_xxxx

g_yyyy

public interface g_yyyy
    function g_yyyy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: g_yyyy
    end function g_yyyy
end interface g_yyyy

h_yy

public interface h_yy
    function h_yy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h_yy
    end function h_yy
end interface h_yy

h_xx

public interface h_xx
    function h_xx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h_xx
    end function h_xx
end interface h_xx

h_xxxx

public interface h_xxxx
    function h_xxxx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h_xxxx
    end function h_xxxx
end interface h_xxxx

h_yyyy

public interface h_yyyy
    function h_yyyy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: h_yyyy
    end function h_yyyy
end interface h_yyyy

u_x

public interface u_x
    function u_x (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_x
    end function u_x
end interface u_x

u_y

public interface u_y
    function u_y (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_y
    end function u_y
end interface u_y

u_xy

public interface u_xy
    function u_xy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_xy
    end function u_xy
end interface u_xy

u_yy

public interface u_yy
    function u_yy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_yy
    end function u_yy
end interface u_yy

u_xx

public interface u_xx
    function u_xx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_xx
    end function u_xx
end interface u_xx

u_xxxx

public interface u_xxxx
    function u_xxxx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_xxxx
    end function u_xxxx
end interface u_xxxx

u_yyyy

public interface u_yyyy
    function u_yyyy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_yyyy
    end function u_yyyy
end interface u_yyyy

u_yxx

public interface u_yxx
    function u_yxx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_yxx
    end function u_yxx
end interface u_yxx

u_xyy

public interface u_xyy
    function u_xyy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_xyy
    end function u_xyy
end interface u_xyy

u_yxxxx

public interface u_yxxxx
    function u_yxxxx (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_yxxxx
    end function u_yxxxx
end interface u_yxxxx

u_xyyyy

public interface u_xyyyy
    function u_xyyyy (x, y, problem)
        double precision, intent(in) :: x
        double precision, intent(in) :: y
        integer, intent(in) :: problem
        double precision :: u_xyyyy
    end function u_xyyyy
end interface u_xyyyy

legcoef

public interface legcoef
    subroutine legcoef (a, b, xjac, n)
        double precision, intent(out), dimension (0:n,0:n) :: a
        double precision, intent(out), dimension (0:n,0:n) :: b
        double precision, intent(in), dimension (0:n) :: xjac
        integer, intent(in) :: n
    end subroutine legcoef
end interface legcoef

jacobf

public interface jacobf
    subroutine jacobf (n, poly, pder, polym1, pderm1, polym2, pderm2, x, alp, bet, rv)
        integer :: n
        double precision, intent(out) :: poly
        double precision, intent(out) :: pder
        double precision, intent(out) :: polym1
        double precision, intent(out) :: pderm1
        double precision, intent(out) :: polym2
        double precision, intent(out) :: pderm2
        double precision, intent(in) :: x
        double precision, intent(in) :: alp
        double precision, intent(in) :: bet
        double precision, intent(in) :: rv
    end subroutine jacobf
end interface jacobf