dotprd Function

private pure function dotprd(Lgth, Vec1, Vec2, Nparm) result(dd)

This subprogram computes the dot product of vectors vec1 and vec2 of length lgth. vec1 and vec2 do not appear in function iloc since they are used only as input names for this subprogram, and so they don't need to have space reserved for them in the array work.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: Lgth
real(kind=wp), intent(in), dimension(Nparm + 1) :: Vec1
real(kind=wp), intent(in), dimension(Nparm + 1) :: Vec2
integer, intent(in) :: Nparm

Return Value real(kind=wp)


Called by

proc~~dotprd~~CalledByGraph proc~dotprd dotprd proc~conenr conenr proc~conenr->proc~dotprd proc~wolfe wolfe proc~wolfe->proc~dotprd proc~wolfe->proc~conenr proc~conmax conmax_solver%conmax proc~conmax->proc~wolfe proc~rkcon conmax_solver%rkcon proc~conmax->proc~rkcon proc~slpcon conmax_solver%slpcon proc~conmax->proc~slpcon proc~corrct conmax_solver%corrct proc~corrct->proc~wolfe proc~rkcon->proc~wolfe proc~rkcon->proc~corrct proc~rkpar conmax_solver%rkpar proc~rkcon->proc~rkpar proc~searsl conmax_solver%searsl proc~rkcon->proc~searsl proc~rkpar->proc~wolfe proc~rkpar->proc~corrct proc~searsl->proc~corrct proc~slpcon->proc~searsl

Source Code

    pure function dotprd(Lgth, Vec1, Vec2, Nparm) result(dd)

        implicit none

        integer, intent(in) :: Lgth
        integer, intent(in) :: Nparm
        real(wp), dimension(Nparm + 1), intent(in) :: Vec1
        real(wp), dimension(Nparm + 1), intent(in) :: Vec2
        real(wp) :: dd

        integer :: j

        dd = Vec1(1)*Vec2(1)
        if (Lgth > 1) then
            do j = 2, Lgth
                dd = dd + Vec1(j)*Vec2(j)
            end do
        end if

    end function dotprd