!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!  This file is AUTOMATICALLY GENERATED by:
!!  tools/fortran_wrappers.pl include/magma_d.i
!!  Do not edit.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

module magma_dfortran

use magma_param

implicit none

!---- Fortran interfaces to MAGMA subroutines ----
interface

integer function magmaf_get_dlaex3_m_nb(  )
end

integer function magmaf_get_dpotrf_nb( n )
    integer          :: n
end

integer function magmaf_get_dgetrf_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgetri_nb( n )
    integer          :: n
end

integer function magmaf_get_dsytrf_nb( n )
    integer          :: n
end

integer function magmaf_get_dsytrf_nopiv_nb( n )
    integer          :: n
end

integer function magmaf_get_dsytrf_aasen_nb( n )
    integer          :: n
end

integer function magmaf_get_dgeqp3_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgeqrf_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgeqlf_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgelqf_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgehrd_nb( n )
    integer          :: n
end

integer function magmaf_get_dsytrd_nb( n )
    integer          :: n
end

integer function magmaf_get_dsygst_nb( n )
    integer          :: n
end

integer function magmaf_get_dsygst_m_nb( n )
    integer          :: n
end

integer function magmaf_get_dgebrd_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dgesvd_nb( m, n )
    integer          :: m
    integer          :: n
end

integer function magmaf_get_dbulge_nb( n, nbthreads )
    integer          :: n
    integer          :: nbthreads
end

integer function magmaf_get_dbulge_vblksiz( n, nb, nbthreads )
    integer          :: n
    integer          :: nb
    integer          :: nbthreads
end

integer function magmaf_get_dbulge_gcperf(  )
end

subroutine magmaf_dmove_eig( range, n, w, il, iu, vl, vu, mout )
    character        :: range
    integer          :: n
    double precision :: w(*)
    integer          :: il(*)
    integer          :: iu(*)
    double precision :: vl
    double precision :: vu
    integer          :: mout(*)
end

subroutine magmaf_dvrange( k, d, il, iu, vl, vu )
    integer          :: k
    double precision :: d(*)
    integer          :: il(*)
    integer          :: iu(*)
    double precision :: vl
    double precision :: vu
end

subroutine magmaf_dirange( k, indxq, iil, iiu, il, iu )
    integer          :: k
    integer          :: indxq(*)
    integer          :: iil(*)
    integer          :: iiu(*)
    integer          :: il
    integer          :: iu
end

subroutine magmaf_dgebrd( m, n, A, lda, d, e, tauq, taup, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: d(*)
    double precision :: e(*)
    double precision :: tauq(*)
    double precision :: taup(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeev( jobvl, jobvr, n, A, lda, wr, wi, VL, ldvl, VR, ldvr, work,  &
        lwork, info )
    character        :: jobvl
    character        :: jobvr
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: wr(*)
    double precision :: wi(*)
    double precision :: VL(*)
    integer          :: ldvl
    double precision :: VR(*)
    integer          :: ldvr
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeev_m( jobvl, jobvr, n, A, lda, wr, wi, VL, ldvl, VR, ldvr, work,  &
        lwork, info )
    character        :: jobvl
    character        :: jobvr
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: wr(*)
    double precision :: wi(*)
    double precision :: VL(*)
    integer          :: ldvl
    double precision :: VR(*)
    integer          :: ldvr
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgegqr_gpu( ikind, m, n, dA, ldda, dwork, work, info )
    integer          :: ikind
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dwork
    double precision :: work(*)
    integer          :: info
end

subroutine magmaf_dgehrd( n, ilo, ihi, A, lda, tau, work, lwork, dT, info )
    integer          :: n
    integer          :: ilo
    integer          :: ihi
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    magma_devptr_t   :: dT
    integer          :: info
end

subroutine magmaf_dgehrd_m( n, ilo, ihi, A, lda, tau, work, lwork, T, info )
    integer          :: n
    integer          :: ilo
    integer          :: ihi
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    double precision :: T(*)
    integer          :: info
end

subroutine magmaf_dgehrd2( n, ilo, ihi, A, lda, tau, work, lwork, info )
    integer          :: n
    integer          :: ilo
    integer          :: ihi
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgelqf( m, n, A, lda, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgelqf_gpu( m, n, dA, ldda, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgels( trans, m, n, nrhs, A, lda, B, ldb, hwork, lwork, info )
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: A
    integer          :: lda
    magma_devptr_t   :: B
    integer          :: ldb
    double precision :: hwork(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dggrqf( m, p, n, A, lda, taua, B, ldb, taub, work, lwork, info )
    integer          :: m
    integer          :: p
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: taua(*)
    double precision :: B(*)
    integer          :: ldb
    double precision :: taub(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgglse( m, n, p, A, lda, B, ldb, c, d, x, work, lwork, info )
    integer          :: m
    integer          :: n
    integer          :: p
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: c(*)
    double precision :: d(*)
    double precision :: x(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgels_gpu( trans, m, n, nrhs, dA, ldda, dB, lddb, hwork, lwork, info )
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    double precision :: hwork(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgels3_gpu( trans, m, n, nrhs, dA, ldda, dB, lddb, hwork, lwork, info )
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    double precision :: hwork(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqlf( m, n, A, lda, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqp3( m, n, A, lda, jpvt, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: jpvt(*)
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqp3_gpu( m, n, dA, ldda, jpvt, tau, dwork, lwork, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: jpvt(*)
    double precision :: tau(*)
    magma_devptr_t   :: dwork
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqr2x_gpu( m, n, dA, ldda, dtau, dT, ddA, dwork, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dtau
    magma_devptr_t   :: dT
    magma_devptr_t   :: ddA
    magma_devptr_t   :: dwork
    integer          :: info
end

subroutine magmaf_dgeqr2x2_gpu( m, n, dA, ldda, dtau, dT, ddA, dwork, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dtau
    magma_devptr_t   :: dT
    magma_devptr_t   :: ddA
    magma_devptr_t   :: dwork
    integer          :: info
end

subroutine magmaf_dgeqr2x3_gpu( m, n, dA, ldda, dtau, dT, ddA, dwork, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dtau
    magma_devptr_t   :: dT
    magma_devptr_t   :: ddA
    magma_devptr_t   :: dwork
    integer          :: info
end

subroutine magmaf_dgeqr2x4_gpu( m, n, dA, ldda, dtau, dT, ddA, dwork, queue, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dtau
    magma_devptr_t   :: dT
    magma_devptr_t   :: ddA
    magma_devptr_t   :: dwork
    magma_devptr_t   :: queue
    integer          :: info
end

subroutine magmaf_dgeqrf( m, n, A, lda, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqrf_gpu( m, n, dA, ldda, tau, dT, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: info
end

subroutine magmaf_dgeqrf_m( ngpu, m, n, A, lda, tau, work, lwork, info )
    integer          :: ngpu
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqrf_ooc( m, n, A, lda, tau, work, lwork, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqrf2_gpu( m, n, dA, ldda, tau, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    integer          :: info
end

subroutine magmaf_dgeqrf3_gpu( m, n, dA, ldda, tau, dT, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: info
end

subroutine magmaf_dgeqrs_gpu( m, n, nrhs, dA, ldda, tau, dT, dB, lddb, hwork, lwork, info  &
        )
    integer          :: m
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    magma_devptr_t   :: dB
    integer          :: lddb
    double precision :: hwork(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgeqrs3_gpu( m, n, nrhs, dA, ldda, tau, dT, dB, lddb, hwork, lwork,  &
        info )
    integer          :: m
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    magma_devptr_t   :: dB
    integer          :: lddb
    double precision :: hwork(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgerbt_gpu( gen, n, nrhs, dA, ldda, dB, lddb, U, V, info )
    character        :: gen
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    double precision :: U(*)
    double precision :: V(*)
    integer          :: info
end

subroutine magmaf_dgerfs_nopiv_gpu( trans, n, nrhs, dA, ldda, dB, lddb, dX, lddx, dworkd,  &
        dAF, iter, info )
    character        :: trans
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    magma_devptr_t   :: dX
    integer          :: lddx
    magma_devptr_t   :: dworkd
    magma_devptr_t   :: dAF
    integer          :: iter
    integer          :: info
end

subroutine magmaf_dgesdd( jobz, m, n, A, lda, s, U, ldu, VT, ldvt, work, lwork, iwork,  &
        info )
    character        :: jobz
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: s(*)
    double precision :: U(*)
    integer          :: ldu
    double precision :: VT(*)
    integer          :: ldvt
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: info
end

subroutine magmaf_dgesv( n, nrhs, A, lda, ipiv, B, ldb, info )
    integer          :: n
    integer          :: nrhs
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dgesv_gpu( n, nrhs, dA, ldda, ipiv, dB, lddb, info )
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: ipiv(*)
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dgesv_nopiv_gpu( n, nrhs, dA, ldda, dB, lddb, info )
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dgesv_rbt( ref, n, nrhs, A, lda, B, ldb, info )
    character        :: ref
    integer          :: n
    integer          :: nrhs
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dgesvd( jobu, jobvt, m, n, A, lda, s, U, ldu, VT, ldvt, work, lwork,  &
        info )
    character        :: jobu
    character        :: jobvt
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: s(*)
    double precision :: U(*)
    integer          :: ldu
    double precision :: VT(*)
    integer          :: ldvt
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgetf2_gpu( m, n, dA, ldda, ipiv, queue, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: ipiv(*)
    magma_devptr_t   :: queue
    integer          :: info
end

subroutine magmaf_dgetf2_nopiv( m, n, A, lda, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dgetrf( m, n, A, lda, ipiv, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    integer          :: info
end

subroutine magmaf_dgetrf_gpu( m, n, dA, ldda, ipiv, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: ipiv(*)
    integer          :: info
end

subroutine magmaf_dgetrf_m( ngpu, m, n, A, lda, ipiv, info )
    integer          :: ngpu
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    integer          :: info
end

subroutine magmaf_dgetrf_nopiv( m, n, A, lda, info )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dgetrf_nopiv_gpu( m, n, dA, ldda, info )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dgetri_gpu( n, dA, ldda, ipiv, dwork, lwork, info )
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: ipiv(*)
    magma_devptr_t   :: dwork
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dgetrs_gpu( trans, n, nrhs, dA, ldda, ipiv, dB, lddb, info )
    character        :: trans
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: ipiv(*)
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dgetrs_nopiv_gpu( trans, n, nrhs, dA, ldda, dB, lddb, info )
    character        :: trans
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dsyevd( jobz, uplo, n, A, lda, w, work, lwork, iwork, liwork, info )
    character        :: jobz
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevd_gpu( jobz, uplo, n, dA, ldda, w, wA, ldwa, work, lwork, iwork,  &
        liwork, info )
    character        :: jobz
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: w(*)
    double precision :: wA(*)
    integer          :: ldwa
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevd_m( ngpu, jobz, uplo, n, A, lda, w, work, lwork, iwork, liwork,  &
        info )
    integer          :: ngpu
    character        :: jobz
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevdx( jobz, range, uplo, n, A, lda, vl, vu, il, iu, mout, w, work,  &
        lwork, iwork, liwork, info )
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevdx_gpu( jobz, range, uplo, n, dA, ldda, vl, vu, il, iu, mout, w,  &
        wA, ldwa, work, lwork, iwork, liwork, info )
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: wA(*)
    integer          :: ldwa
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevdx_m( ngpu, jobz, range, uplo, n, A, lda, vl, vu, il, iu, mout, w,  &
        work, lwork, iwork, liwork, info )
    integer          :: ngpu
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevdx_2stage( jobz, range, uplo, n, A, lda, vl, vu, il, iu, mout, w,  &
        work, lwork, iwork, liwork, info )
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsyevdx_2stage_m( ngpu, jobz, range, uplo, n, A, lda, vl, vu, il, iu,  &
        mout, w, work, lwork, iwork, liwork, info )
    integer          :: ngpu
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygst( itype, uplo, n, A, lda, B, ldb, info )
    integer          :: itype
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dsygst_gpu( itype, uplo, n, dA, ldda, dB, lddb, info )
    integer          :: itype
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dsygst_m( ngpu, itype, uplo, n, A, lda, B, ldb, info )
    integer          :: ngpu
    integer          :: itype
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dsygvd( itype, jobz, uplo, n, A, lda, B, ldb, w, work, lwork, iwork,  &
        liwork, info )
    integer          :: itype
    character        :: jobz
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygvd_m( ngpu, itype, jobz, uplo, n, A, lda, B, ldb, w, work, lwork,  &
        iwork, liwork, info )
    integer          :: ngpu
    integer          :: itype
    character        :: jobz
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygvdx( itype, jobz, range, uplo, n, A, lda, B, ldb, vl, vu, il, iu,  &
        mout, w, work, lwork, iwork, liwork, info )
    integer          :: itype
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygvdx_m( ngpu, itype, jobz, range, uplo, n, A, lda, B, ldb, vl, vu,  &
        il, iu, mout, w, work, lwork, iwork, liwork, info )
    integer          :: ngpu
    integer          :: itype
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygvdx_2stage( itype, jobz, range, uplo, n, A, lda, B, ldb, vl, vu,  &
        il, iu, mout, w, work, lwork, iwork, liwork, info )
    integer          :: itype
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsygvdx_2stage_m( ngpu, itype, jobz, range, uplo, n, A, lda, B, ldb,  &
        vl, vu, il, iu, mout, w, work, lwork, iwork, liwork, info )
    integer          :: ngpu
    integer          :: itype
    character        :: jobz
    character        :: range
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    integer          :: mout(*)
    double precision :: w(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dsysv( uplo, n, nrhs, A, lda, ipiv, B, ldb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dsysv_nopiv_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dsytrd( uplo, n, A, lda, d, e, tau, work, lwork, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: d(*)
    double precision :: e(*)
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dsytrd_gpu( uplo, n, dA, ldda, d, e, tau, wA, ldwa, work, lwork, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: d(*)
    double precision :: e(*)
    double precision :: tau(*)
    double precision :: wA(*)
    integer          :: ldwa
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dsytrd2_gpu( uplo, n, dA, ldda, d, e, tau, wA, ldwa, work, lwork,  &
        dwork, ldwork, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: d(*)
    double precision :: e(*)
    double precision :: tau(*)
    double precision :: wA(*)
    integer          :: ldwa
    double precision :: work(*)
    integer          :: lwork
    magma_devptr_t   :: dwork
    integer          :: ldwork
    integer          :: info
end

integer function magmaf_dsytrd_sb2st( uplo, n, nb, Vblksiz, A, lda, d, e, V, ldv, TAU,  &
        compT, T, ldt )
    character        :: uplo
    integer          :: n
    integer          :: nb
    integer          :: Vblksiz
    double precision :: A(*)
    integer          :: lda
    double precision :: d(*)
    double precision :: e(*)
    double precision :: V(*)
    integer          :: ldv
    double precision :: TAU(*)
    integer          :: compT
    double precision :: T(*)
    integer          :: ldt
end

subroutine magmaf_dsytrd_sy2sb( uplo, n, nb, A, lda, tau, work, lwork, dT, info )
    character        :: uplo
    integer          :: n
    integer          :: nb
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    magma_devptr_t   :: dT
    integer          :: info
end

subroutine magmaf_dsytrf( uplo, n, A, lda, ipiv, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    integer          :: info
end

subroutine magmaf_dsytrf_aasen( uplo, cpu_panel, n, A, lda, ipiv, info )
    character        :: uplo
    integer          :: cpu_panel
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: ipiv(*)
    integer          :: info
end

subroutine magmaf_dsytrf_nopiv( uplo, n, A, lda, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dsytrf_nopiv_cpu( uplo, n, ib, A, lda, info )
    character        :: uplo
    integer          :: n
    integer          :: ib
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dsytrf_nopiv_gpu( uplo, n, dA, ldda, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dsytrs_nopiv_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dlaln2( trans, na, nw, smin, ca, A, lda, d1, d2, B, ldb, wr, wi, X,  &
        ldx, scale, xnorm, info )
    integer          :: trans
    integer          :: na
    integer          :: nw
    double precision :: smin
    double precision :: ca
    double precision :: A(*)
    integer          :: lda
    double precision :: d1
    double precision :: d2
    double precision :: B(*)
    integer          :: ldb
    double precision :: wr
    double precision :: wi
    double precision :: X(*)
    integer          :: ldx
    double precision :: scale(*)
    double precision :: xnorm(*)
    integer          :: info
end

subroutine magmaf_dlaqtrsd( trans, n, T, ldt, x, ldx, cnorm, info )
    character        :: trans
    integer          :: n
    double precision :: T(*)
    integer          :: ldt
    double precision :: x(*)
    integer          :: ldx
    double precision :: cnorm(*)
    integer          :: info
end

integer function magmaf_dlarf_gpu( m, n, dv, dtau, dC, lddc, queue )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dv
    magma_devptr_t   :: dtau
    magma_devptr_t   :: dC
    integer          :: lddc
    magma_devptr_t   :: queue
end

integer function magmaf_dlarfb2_gpu( m, n, k, dV, lddv, dT, lddt, dC, lddc, dwork,  &
        ldwork, queue )
    integer          :: m
    integer          :: n
    integer          :: k
    magma_devptr_t   :: dV
    integer          :: lddv
    magma_devptr_t   :: dT
    integer          :: lddt
    magma_devptr_t   :: dC
    integer          :: lddc
    magma_devptr_t   :: dwork
    integer          :: ldwork
    magma_devptr_t   :: queue
end

subroutine magmaf_dlauum( uplo, n, A, lda, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dlauum_gpu( uplo, n, dA, ldda, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dposv( uplo, n, nrhs, A, lda, B, ldb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
    integer          :: info
end

subroutine magmaf_dposv_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dpotf2_gpu( uplo, n, dA, ldda, queue, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: queue
    integer          :: info
end

subroutine magmaf_dpotrf( uplo, n, A, lda, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dpotrf_gpu( uplo, n, dA, ldda, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dpotrf_m( ngpu, uplo, n, A, lda, info )
    integer          :: ngpu
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dpotri( uplo, n, A, lda, info )
    character        :: uplo
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dpotri_gpu( uplo, n, dA, ldda, info )
    character        :: uplo
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dpotrs_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info )
    character        :: uplo
    integer          :: n
    integer          :: nrhs
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: dB
    integer          :: lddb
    integer          :: info
end

subroutine magmaf_dstedx( range, n, vl, vu, il, iu, d, e, Z, ldz, rwork, lrwork, iwork,  &
        liwork, dwork, info )
    character        :: range
    integer          :: n
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    double precision :: d(*)
    double precision :: e(*)
    double precision :: Z(*)
    integer          :: ldz
    double precision :: rwork(*)
    integer          :: lrwork
    integer          :: iwork(*)
    integer          :: liwork
    magma_devptr_t   :: dwork
    integer          :: info
end

subroutine magmaf_dstedx_m( ngpu, range, n, vl, vu, il, iu, d, e, Z, ldz, rwork, lrwork,  &
        iwork, liwork, info )
    integer          :: ngpu
    character        :: range
    integer          :: n
    double precision :: vl
    double precision :: vu
    integer          :: il
    integer          :: iu
    double precision :: d(*)
    double precision :: e(*)
    double precision :: Z(*)
    integer          :: ldz
    double precision :: rwork(*)
    integer          :: lrwork
    integer          :: iwork(*)
    integer          :: liwork
    integer          :: info
end

subroutine magmaf_dtrevc3( side, howmany, select, n, T, ldt, VL, ldvl, VR, ldvr, mm,  &
        mout, work, lwork, info )
    character        :: side
    character        :: howmany
    integer          :: select(*)
    integer          :: n
    double precision :: T(*)
    integer          :: ldt
    double precision :: VL(*)
    integer          :: ldvl
    double precision :: VR(*)
    integer          :: ldvr
    integer          :: mm
    integer          :: mout(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dtrevc3_mt( side, howmany, select, n, T, ldt, VL, ldvl, VR, ldvr, mm,  &
        mout, work, lwork, info )
    character        :: side
    character        :: howmany
    integer          :: select(*)
    integer          :: n
    double precision :: T(*)
    integer          :: ldt
    double precision :: VL(*)
    integer          :: ldvl
    double precision :: VR(*)
    integer          :: ldvr
    integer          :: mm
    integer          :: mout(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

integer function magmaf_dtrsm_m( ngpu, side, uplo, transa, diag, m, n, alpha, A, lda, B,  &
        ldb )
    integer          :: ngpu
    character        :: side
    character        :: uplo
    character        :: transa
    character        :: diag
    integer          :: m
    integer          :: n
    double precision :: alpha
    double precision :: A(*)
    integer          :: lda
    double precision :: B(*)
    integer          :: ldb
end

subroutine magmaf_dtrtri( uplo, diag, n, A, lda, info )
    character        :: uplo
    character        :: diag
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: info
end

subroutine magmaf_dtrtri_gpu( uplo, diag, n, dA, ldda, info )
    character        :: uplo
    character        :: diag
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: info
end

subroutine magmaf_dorgbr( vect, m, n, k, A, lda, tau, work, lwork, info )
    character        :: vect
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dorghr( n, ilo, ihi, A, lda, tau, dT, nb, info )
    integer          :: n
    integer          :: ilo
    integer          :: ihi
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorghr_m( n, ilo, ihi, A, lda, tau, T, nb, info )
    integer          :: n
    integer          :: ilo
    integer          :: ihi
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: T(*)
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorglq( m, n, k, A, lda, tau, dT, nb, info )
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorgqr( m, n, k, A, lda, tau, dT, nb, info )
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorgqr_gpu( m, n, k, dA, ldda, tau, dT, nb, info )
    integer          :: m
    integer          :: n
    integer          :: k
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dT
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorgqr_m( m, n, k, A, lda, tau, T, nb, info )
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: T(*)
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dorgqr2( m, n, k, A, lda, tau, info )
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    integer          :: info
end

subroutine magmaf_dormbr( vect, side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork,  &
        info )
    character        :: vect
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormlq( side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork, info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormrq( side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork, info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormql( side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork, info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormql2_gpu( side, trans, m, n, k, dA, ldda, tau, dC, lddc, wA, ldwa,  &
        info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dC
    integer          :: lddc
    double precision :: wA(*)
    integer          :: ldwa
    integer          :: info
end

subroutine magmaf_dormqr( side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork, info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormqr_gpu( side, trans, m, n, k, dA, ldda, tau, dC, lddc, hwork,  &
        lwork, dT, nb, info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dC
    integer          :: lddc
    double precision :: hwork(*)
    integer          :: lwork
    magma_devptr_t   :: dT
    integer          :: nb
    integer          :: info
end

subroutine magmaf_dormqr2_gpu( side, trans, m, n, k, dA, ldda, tau, dC, lddc, wA, ldwa,  &
        info )
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dC
    integer          :: lddc
    double precision :: wA(*)
    integer          :: ldwa
    integer          :: info
end

subroutine magmaf_dormqr_m( ngpu, side, trans, m, n, k, A, lda, tau, C, ldc, work, lwork,  &
        info )
    integer          :: ngpu
    character        :: side
    character        :: trans
    integer          :: m
    integer          :: n
    integer          :: k
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormtr( side, uplo, trans, m, n, A, lda, tau, C, ldc, work, lwork, info  &
        )
    character        :: side
    character        :: uplo
    character        :: trans
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

subroutine magmaf_dormtr_gpu( side, uplo, trans, m, n, dA, ldda, tau, dC, lddc, wA, ldwa,  &
        info )
    character        :: side
    character        :: uplo
    character        :: trans
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    double precision :: tau(*)
    magma_devptr_t   :: dC
    integer          :: lddc
    double precision :: wA(*)
    integer          :: ldwa
    integer          :: info
end

subroutine magmaf_dormtr_m( ngpu, side, uplo, trans, m, n, A, lda, tau, C, ldc, work,  &
        lwork, info )
    integer          :: ngpu
    character        :: side
    character        :: uplo
    character        :: trans
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    double precision :: tau(*)
    double precision :: C(*)
    integer          :: ldc
    double precision :: work(*)
    integer          :: lwork
    integer          :: info
end

integer function magmaf_d_isnan( x )
    double precision :: x
end

integer function magmaf_d_isinf( x )
    double precision :: x
end

integer function magmaf_d_isnan_inf( x )
    double precision :: x
end

double precision function magmaf_dmake_lwork( lwork )
    integer          :: lwork
end

integer function magmaf_dnan_inf( uplo, m, n, A, lda, cnt_nan, cnt_inf )
    character        :: uplo
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
    integer          :: cnt_nan(*)
    integer          :: cnt_inf(*)
end

integer function magmaf_dnan_inf_gpu( uplo, m, n, dA, ldda, cnt_nan, cnt_inf, queue )
    character        :: uplo
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    integer          :: cnt_nan(*)
    integer          :: cnt_inf(*)
    magma_devptr_t   :: queue
end

subroutine magmaf_dprint( m, n, A, lda )
    integer          :: m
    integer          :: n
    double precision :: A(*)
    integer          :: lda
end

subroutine magmaf_dprint_gpu( m, n, dA, ldda, queue )
    integer          :: m
    integer          :: n
    magma_devptr_t   :: dA
    integer          :: ldda
    magma_devptr_t   :: queue
end

subroutine magmaf_dpanel_to_q( uplo, ib, A, lda, work )
    character        :: uplo
    integer          :: ib
    double precision :: A(*)
    integer          :: lda
    double precision :: work(*)
end

subroutine magmaf_dq_to_panel( uplo, ib, A, lda, work )
    character        :: uplo
    integer          :: ib
    double precision :: A(*)
    integer          :: lda
    double precision :: work(*)
end

end interface

end module magma_dfortran
