forlab_linalg_tri.f90 Source File


Contents

Source Code


Source Code

submodule(forlab_linalg) forlab_linalg_tri

    implicit none

contains

    module procedure tril_int8
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_int8 = A
    do i = 1, min(m, n)
        tril_int8(:i - opt_k - 1, i) = 0_int8
    end do
    end procedure tril_int8
    module procedure tril_int16
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_int16 = A
    do i = 1, min(m, n)
        tril_int16(:i - opt_k - 1, i) = 0_int16
    end do
    end procedure tril_int16
    module procedure tril_int32
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_int32 = A
    do i = 1, min(m, n)
        tril_int32(:i - opt_k - 1, i) = 0_int32
    end do
    end procedure tril_int32
    module procedure tril_int64
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_int64 = A
    do i = 1, min(m, n)
        tril_int64(:i - opt_k - 1, i) = 0_int64
    end do
    end procedure tril_int64

    module procedure tril_sp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_sp = A
    do i = 1, min(m, n)
        tril_sp(:i - opt_k - 1, i) = 0.0_sp
    end do
    end procedure tril_sp
    module procedure tril_dp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_dp = A
    do i = 1, min(m, n)
        tril_dp(:i - opt_k - 1, i) = 0.0_dp
    end do
    end procedure tril_dp

    module procedure tril_csp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_csp = A
    do i = 1, min(m, n)
        tril_csp(:i - opt_k - 1, i) = cmplx(0.0_sp, 0.0_sp, kind=sp)
    end do
    end procedure tril_csp
    module procedure tril_cdp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    tril_cdp = A
    do i = 1, min(m, n)
        tril_cdp(:i - opt_k - 1, i) = cmplx(0.0_dp, 0.0_dp, kind=dp)
    end do
    end procedure tril_cdp

    module procedure triu_int8
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_int8 = A
    do i = 1, min(m, n)
        triu_int8(i - opt_k + 1:, i) = 0_int8
    end do
    end procedure triu_int8
    module procedure triu_int16
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_int16 = A
    do i = 1, min(m, n)
        triu_int16(i - opt_k + 1:, i) = 0_int16
    end do
    end procedure triu_int16
    module procedure triu_int32
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_int32 = A
    do i = 1, min(m, n)
        triu_int32(i - opt_k + 1:, i) = 0_int32
    end do
    end procedure triu_int32
    module procedure triu_int64
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_int64 = A
    do i = 1, min(m, n)
        triu_int64(i - opt_k + 1:, i) = 0_int64
    end do
    end procedure triu_int64

    module procedure triu_sp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_sp = A
    do i = 1, min(m, n)
        triu_sp(i - opt_k + 1:, i) = 0.0_sp
    end do
    end procedure triu_sp
    module procedure triu_dp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_dp = A
    do i = 1, min(m, n)
        triu_dp(i - opt_k + 1:, i) = 0.0_dp
    end do
    end procedure triu_dp

    module procedure triu_csp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_csp = A
    do i = 1, min(m, n)
        triu_csp(i - opt_k + 1:, i) = cmplx(0.0_sp, 0.0_sp, kind=sp)
    end do
    end procedure triu_csp
    module procedure triu_cdp
    integer::opt_k, i, m, n
    opt_k = 0
    if (present(k)) opt_k = k
    m = size(A, 1)
    n = size(A, 2)
    triu_cdp = A
    do i = 1, min(m, n)
        triu_cdp(i - opt_k + 1:, i) = cmplx(0.0_dp, 0.0_dp, kind=dp)
    end do
    end procedure triu_cdp

end submodule forlab_linalg_tri