hprod Subroutine

private subroutine hprod(n, hz, x, y)

hprod applies a Householder transformation stored in hz to get y = ( I - 2hzhz(transpose) ) * x.

Arguments

Type IntentOptional Attributes Name
integer :: n
real(kind=wp) :: hz(n)
real(kind=wp) :: x(n)
real(kind=wp) :: y(n)

Called by

proc~~hprod~~CalledByGraph proc~hprod lsqrtest_module::hprod proc~aprod1 lsqrtest_module::test_solver%aprod1 proc~aprod1->proc~hprod proc~aprod2 lsqrtest_module::test_solver%aprod2 proc~aprod2->proc~hprod proc~lstp lsqrtest_module::test_solver%lstp proc~lstp->proc~hprod proc~lstp->proc~aprod1 proc~aprod_test_solver lsqrtest_module::test_solver%aprod_test_solver proc~aprod_test_solver->proc~aprod1 proc~aprod_test_solver->proc~aprod2 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 hprod ( n, hz, x, y )

    integer :: n
    real(wp) :: hz(n), x(n), y(n)

    integer :: i
    real(wp) :: s

    s = zero
    do i = 1, n
        s = hz(i) * x(i)  +  s
    end do

    s = s + s
    do i = 1, n
        y(i)  = x(i)  -  s * hz(i)
    end do

    end subroutine hprod