Skip to content

Commit 4b05928

Browse files
committed
Added interfaces for xGEQP3.
1 parent 98f1708 commit 4b05928

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

src/stdlib_linalg_lapack.fypp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3230,6 +3230,77 @@ module stdlib_linalg_lapack
32303230
#:endfor
32313231
end interface geqrt3
32323232

3233+
interface geqp3
3234+
!! GEQP3 computes a QR factorization with column pivoting of a complex
3235+
!! M-by-N matrix A:
3236+
!!
3237+
!! A * P = Q * R,
3238+
!!
3239+
!! where:
3240+
!! Q is an M-by-min(M, N) orthogonal matrix
3241+
!! R is an min(M, N)-by-N upper triangular matrix;
3242+
#:for ik, it, ii in LINALG_INT_KINDS_TYPES
3243+
#ifdef STDLIB_EXTERNAL_LAPACK${ii}$
3244+
pure subroutine sgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
3245+
import sp, dp, qp, ${ik}$, lk
3246+
implicit none
3247+
integer(${ik}$), intent(in) :: m, n, lda, lwork
3248+
integer(${ik}$), intent(out) :: info
3249+
integer(${ik}$), intent(inout) :: jpvt(*)
3250+
real(sp), intent(inout) :: a(lda, *)
3251+
real(sp), intent(out) :: tau(*), work(*)
3252+
end subroutine sgeqp3
3253+
3254+
pure subroutine dgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
3255+
import sp, dp, qp, ${ik}$, lk
3256+
implicit none
3257+
integer(${ik}$), intent(in) :: m, n, lda, lwork
3258+
integer(${ik}$), intent(out) :: info
3259+
integer(${ik}$), intent(inout) :: jpvt(*)
3260+
real(dp), intent(inout) :: a(lda, *)
3261+
real(dp), intent(out) :: tau(*), work(*)
3262+
end subroutine dgeqp3
3263+
3264+
pure subroutine cgeqp3(m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
3265+
import sp, dp, qp, ${ik}$, lk
3266+
implicit none
3267+
integer(${ik}$), intent(in) :: m, n, lda, lwork
3268+
integer(${ik}$), intent(out) :: info
3269+
integer(${ik}$), intent(inout) :: jpvt(*)
3270+
complex(sp), intent(inout) :: a(lda, *)
3271+
complex(sp), intent(out) :: tau(*), work(*)
3272+
real(sp), intent(out) :: rwork(*)
3273+
end subroutine cgeqp3
3274+
3275+
pure subroutine zgeqp3(m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
3276+
import sp, dp, qp, ${ik}$, lk
3277+
implicit none
3278+
integer(${ik}$), intent(in) :: m, n, lda, lwork
3279+
integer(${ik}$), intent(out) :: info
3280+
integer(${ik}$), intent(inout) :: jpvt(*)
3281+
complex(dp), intent(inout) :: a(lda, *)
3282+
complex(dp), intent(out) :: tau(*), work(*)
3283+
real(dp), intent(out) :: rwork(*)
3284+
end subroutine zgeqp3
3285+
#else
3286+
module procedure stdlib${ii}$_sgeqp3
3287+
module procedure stdlib${ii}$_dgeqp3
3288+
module procedure stdlib${ii}$_cgeqp3
3289+
module procedure stdlib${ii}$_zgeqp3
3290+
#endif
3291+
#:for rk, rt, ri in REAL_KINDS_TYPES
3292+
#:if not rk in ["sp", "dp"]
3293+
module procedure stdlib${ii}$_${ri}$geqrf
3294+
#:endif
3295+
#:endfor
3296+
#:for rk, rt, ri in CMPLX_KINDS_TYPES
3297+
#:if not rk in ["sp", "dp"]
3298+
module procedure stdlib${ii}$_${ri}$geqrf
3299+
#:endif
3300+
#:endfor
3301+
#:endfor
3302+
end interface geqp3
3303+
32333304
interface gerfs
32343305
!! GERFS improves the computed solution to a system of linear
32353306
!! equations and provides error bounds and backward error estimates for

0 commit comments

Comments
 (0)