counter_uniforms Subroutine

public subroutine counter_uniforms(seed, counter, first_draw, uniforms)

(seed, counter) の draw first_draw .. first_draw + size(uniforms) - 1 をまとめて返す。 値は同じ draw の counter_uniform と一致する。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(in) :: seed
integer(kind=i64), intent(in) :: counter(:)
integer(kind=i64), intent(in) :: first_draw
real(kind=dp), intent(out) :: uniforms(:)

Calls

proc~~counter_uniforms~~CallsGraph proc~counter_uniforms counter_uniforms none~next_uniform counter_stream_type%next_uniform proc~counter_uniforms->none~next_uniform pcg64_random_double53 pcg64_random_double53 none~next_uniform->pcg64_random_double53 proc~open_uniform_from_double53 open_uniform_from_double53 none~next_uniform->proc~open_uniform_from_double53

Called by

proc~~counter_uniforms~~CalledByGraph proc~counter_uniforms counter_uniforms proc~advance_particle_step advance_particle_step proc~advance_particle_step->proc~counter_uniforms proc~advance_particle_step_upper_panel_fourier advance_particle_step_upper_panel_fourier proc~advance_particle_step_upper_panel_fourier->proc~counter_uniforms proc~resolve_particle_boundary_candidate resolve_particle_boundary_candidate proc~resolve_particle_boundary_candidate->proc~counter_uniforms proc~sample_photo_ray_slot sample_photo_ray_slot proc~sample_photo_ray_slot->proc~counter_uniforms proc~sample_reservoir_face_particle_counter sample_reservoir_face_particle_counter proc~sample_reservoir_face_particle_counter->proc~counter_uniforms

Source Code

  subroutine counter_uniforms(seed, counter, first_draw, uniforms)
    integer(i32), intent(in) :: seed
    integer(i64), intent(in) :: counter(:), first_draw
    real(dp), intent(out) :: uniforms(:)
    type(counter_stream_type) :: stream
    integer :: i

    call stream%open(seed, counter, first_draw)
    do i = 1, size(uniforms)
      uniforms(i) = stream%next_uniform()
    end do
    call stream%close()
  end subroutine counter_uniforms