aprod1 Subroutine

private subroutine aprod1(me, m, n, maxmn, minmn, x, y, d, hy, hz, w)

aprod1 computes y = y + Ax for subroutine aprod, where A is a test matrix of the form A = HYD*HZ, and the latter matrices HY, D, HZ are represented by input vectors with the same name.

Type Bound

test_solver

Arguments

Type IntentOptional Attributes Name
class(test_solver), intent(inout) :: me
integer :: m
integer :: n
integer :: maxmn
integer :: minmn
real(kind=wp) :: x(n)
real(kind=wp) :: y(m)
real(kind=wp) :: d(minmn)
real(kind=wp) :: hy(m)
real(kind=wp) :: hz(n)
real(kind=wp) :: w(maxmn)

Calls

proc~~aprod1~~CallsGraph proc~aprod1 lsqrtest_module::test_solver%aprod1 proc~hprod lsqrtest_module::hprod proc~aprod1->proc~hprod

Called by

proc~~aprod1~~CalledByGraph proc~aprod1 lsqrtest_module::test_solver%aprod1 proc~aprod_test_solver lsqrtest_module::test_solver%aprod_test_solver proc~aprod_test_solver->proc~aprod1 proc~lstp lsqrtest_module::test_solver%lstp proc~lstp->proc~aprod1 proc~test lsqrtest_module::test_solver%test proc~test->proc~lstp proc~lsqr_test lsqrtest_module::lsqr_test proc~lsqr_test->proc~test program~main main program~main->proc~lsqr_test

Source Code

    subroutine aprod1( me, m, n, maxmn, minmn, x, y, d, hy, hz, w )

    class(test_solver),intent(inout) :: me
    integer :: m, n, maxmn, minmn
    real(wp) :: x(n), y(m), d(minmn), hy(m), hz(n), w(maxmn)

    integer :: i

    call hprod ( n, hz, x, w )

    do i = 1, minmn
        w(i)  = d(i) * w(i)
    end do

    do i = n + 1, m
        w(i)  = zero
    end do

    call hprod ( m, hy, w, w )

    do i = 1, m
        y(i)  = y(i) + w(i)
    end do

    end subroutine aprod1