splitmix64_next Function

private function splitmix64_next(self) result(r)

Advance the state by the golden-ratio increment and return the mixed 64-bit output.

Type Bound

splitmix64_t

Arguments

Type IntentOptional Attributes Name
class(splitmix64_t), intent(inout) :: self

Return Value integer(kind=int64)


Calls

proc~~splitmix64_next~~CallsGraph proc~splitmix64_next splitmix64_t%splitmix64_next proc~mix64 mix64 proc~splitmix64_next->proc~mix64 proc~u64_add u64_add proc~splitmix64_next->proc~u64_add proc~u64_mul u64_mul proc~mix64->proc~u64_mul proc~u64_shr u64_shr proc~mix64->proc~u64_shr

Called by

proc~~splitmix64_next~~CalledByGraph proc~splitmix64_next splitmix64_t%splitmix64_next proc~splitmix64_next_u64 splitmix64_t%splitmix64_next_u64 proc~splitmix64_next_u64->proc~splitmix64_next proc~stream_for_pcg32 stream_for_pcg32 proc~stream_for_pcg32->proc~splitmix64_next interface~stream_for stream_for interface~stream_for->proc~stream_for_pcg32 proc~splitmix64_next_below splitmix64_next_below proc~splitmix64_next_below->proc~splitmix64_next_u64 proc~splitmix64_next_exponential_int splitmix64_next_exponential_int proc~splitmix64_next_exponential_int->proc~splitmix64_next_u64 proc~splitmix64_next_real_dp splitmix64_next_real_dp proc~splitmix64_next_real_dp->proc~splitmix64_next_u64 proc~splitmix64_uniform_below splitmix64_uniform_below proc~splitmix64_uniform_below->proc~splitmix64_next_u64 interface~next_below next_below interface~next_below->proc~splitmix64_next_below interface~next_exponential_int next_exponential_int interface~next_exponential_int->proc~splitmix64_next_exponential_int interface~next_real_dp next_real_dp interface~next_real_dp->proc~splitmix64_next_real_dp proc~splitmix64_next_bernoulli_ppm splitmix64_next_bernoulli_ppm proc~splitmix64_next_bernoulli_ppm->proc~splitmix64_uniform_below proc~splitmix64_next_poisson_int splitmix64_next_poisson_int proc~splitmix64_next_poisson_int->proc~splitmix64_next_exponential_int proc~splitmix64_next_range splitmix64_next_range proc~splitmix64_next_range->proc~splitmix64_uniform_below interface~next_bernoulli_ppm next_bernoulli_ppm interface~next_bernoulli_ppm->proc~splitmix64_next_bernoulli_ppm interface~next_poisson_int next_poisson_int interface~next_poisson_int->proc~splitmix64_next_poisson_int interface~next_range next_range interface~next_range->proc~splitmix64_next_range 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

   function splitmix64_next(self) result(r)
      !! Advance the state by the golden-ratio increment and return the mixed
      !! 64-bit output.
      class(splitmix64_t), intent(inout) :: self
      integer(int64) :: r

      self%state = u64_add(self%state, GOLDEN_GAMMA)
      r = mix64(self%state)
   end function splitmix64_next