real_from_word Function

private pure function real_from_word(word) result(r)

Turn a 64-bit random word into a real(dp) in [0, 1) using its top 53 bits. See the next_real_dp interface documentation for the exactness argument.

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: word

Return Value real(kind=dp)


Called by

proc~~real_from_word~~CalledByGraph proc~real_from_word real_from_word proc~pcg32_next_real_dp pcg32_next_real_dp proc~pcg32_next_real_dp->proc~real_from_word proc~splitmix64_next_real_dp splitmix64_next_real_dp proc~splitmix64_next_real_dp->proc~real_from_word interface~next_real_dp next_real_dp interface~next_real_dp->proc~pcg32_next_real_dp interface~next_real_dp->proc~splitmix64_next_real_dp proc~pcg32_next_exponential_dp pcg32_next_exponential_dp proc~pcg32_next_exponential_dp->interface~next_real_dp proc~pcg32_next_normal_dp pcg32_next_normal_dp proc~pcg32_next_normal_dp->interface~next_real_dp proc~splitmix64_next_exponential_dp splitmix64_next_exponential_dp proc~splitmix64_next_exponential_dp->interface~next_real_dp proc~splitmix64_next_normal_dp splitmix64_next_normal_dp proc~splitmix64_next_normal_dp->interface~next_real_dp interface~next_exponential_dp next_exponential_dp interface~next_exponential_dp->proc~pcg32_next_exponential_dp interface~next_exponential_dp->proc~splitmix64_next_exponential_dp interface~next_normal_dp next_normal_dp interface~next_normal_dp->proc~pcg32_next_normal_dp interface~next_normal_dp->proc~splitmix64_next_normal_dp

Source Code

   pure function real_from_word(word) result(r)
      !! Turn a 64-bit random word into a `real(dp)` in [0, 1) using its top 53
      !! bits. See the `next_real_dp` interface documentation for the exactness
      !! argument.
      integer(int64), intent(in) :: word
      real(dp) :: r

      r = real(ibits(word, 11, 53), dp)*TWO_TO_MINUS_53
   end function real_from_word