From b0e99bbcaac7b01d4e77d74be8bb71e8e4a38a06 Mon Sep 17 00:00:00 2001 From: Felix Riehn <felix@matilda> Date: Thu, 13 May 2021 18:42:46 +0100 Subject: [PATCH] double random --- corsika/modules/epos/Random.hpp | 7 +++++++ modules/epos/epos.cpp | 3 ++- modules/epos/epos.hpp | 11 +++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/corsika/modules/epos/Random.hpp b/corsika/modules/epos/Random.hpp index c3fec35ab..4f0099ac3 100644 --- a/corsika/modules/epos/Random.hpp +++ b/corsika/modules/epos/Random.hpp @@ -28,4 +28,11 @@ namespace epos { return dist(rng); } + double double_rndm_interface() { + static corsika::default_prng_type& rng = + corsika::RNGManager::getInstance().getRandomStream("epos"); + std::uniform_real_distribution<double> dist; + return dist(rng); + } + } // namespace epos diff --git a/modules/epos/epos.cpp b/modules/epos/epos.cpp index 1836776c7..bbfe7e20f 100644 --- a/modules/epos/epos.cpp +++ b/modules/epos/epos.cpp @@ -9,7 +9,8 @@ namespace epos { // this is needed as linker object, but it is not needed to do anything void ranfcv_(double&) {} - float rangen_() { return ::epos::rndm_interface(); } + float rangen_() { return ::epos::rndm_interface(); } + double drangen_() { return ::epos::double_rndm_interface(); } datadir::datadir(const std::string& dir) { if (dir.length() > 500) { diff --git a/modules/epos/epos.hpp b/modules/epos/epos.hpp index be5aa8269..a454c4a6e 100644 --- a/modules/epos/epos.hpp +++ b/modules/epos/epos.hpp @@ -27,6 +27,16 @@ namespace epos { **/ extern float rndm_interface(); + /** + * \function epos::double_rndm_interface + * + * this is the random number hook to external packages. + * + * CORSIKA8, for example, has to provide an implementation of this. + **/ + + extern double double_rndm_interface(); + extern "C" { void aaset_(int&); @@ -76,6 +86,7 @@ namespace epos { void ranfcv_(double&); // void ranfgt(int&); float rangen_(); + double drangen_(); // common blocks as // defined in epos.inc -- GitLab