stochastic_round_r Function

public elemental function stochastic_round_r(num, r) result(i)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: num
real(kind=dp), intent(in) :: r

Return Value integer


Contents

Source Code


Source Code

    elemental function stochastic_round_r(num, r) result(i)

        ! Perform the stochastic rounding of the above function where the
        ! random number is already specified.

        real(dp), intent(in) :: num, r
        integer :: i
        real(dp) :: res

        i = int(num)
        res = num - real(i, dp)

        if(abs(res) >= 1.0e-12_dp) then
            if(abs(res) > r) &
                i = i + nint(sign(1.0_dp, num))
        end if

    end function stochastic_round_r