@muzaffar done - there were some missing implementations that also needed sorting
Lynn Garren (60be4366) at 12 Oct 20:36
2.4.7.1 bug fix release
@garren , can you please tag clhep 2.4.7.1 with this fix?
Lynn Garren (b41bba9f) at 30 Sep 20:58
mixmax_skip_N8.icc and mixmax_skip_N240.icc have been removed as no...
Lynn Garren (c31112bf) at 29 Sep 21:23
CLHEP 2.4.7.0
Lynn Garren (c3a0bbd6) at 29 Sep 21:23
CLHEP 2.4.7.0
Lynn Garren (eb89aefc) at 29 Sep 17:53
fix for c++11, c++14
Will merge and make the following change after merging:
-class alignas(128) MixMaxRng : public HepRandomEngine
+class
+#if (__cplusplus >= 201703L && __cpp_aligned_new >= 201606L)
+ alignas(128)
+#endif
+MixMaxRng : public HepRandomEngine
The engine state is not changed from the previous version, so it is fully compatible, as guaranteed by the unit tests in CLHEP. This MR is however fixing a divergence problem affecting the version currently in the Master, for relatively long sequences being generated.
If the engine state is restored from that saved by a version of CLHEP prior to these changes, will the next random number(s) generated be the same between pre-and-post application versions?
@kosavvid, I must withdraw approval for this merge request. Results from tests in Geant4 reveal serious reproducibility problems in multi-threaded runs. Currently under investigation! Marking this as Draft, at least temporarily...
Dear, I updated MixMax to the new version. All Tests also pass.
Replaced by !25 (merged).
It is true that the main method for getting numbers from an RNG in CLHEP is flat() while in std::random it is operator(), which gives an integer between min() and max(). After getting an integer, in std::random it is passed through the stats distribution object. That code knows to call max() to find out the range of the integer and makes use of that to produce desired stats distributions. It seems that some people might be interested to use those distributions from std::random with generators from CLHEP. I support such a goal but it is not clear if just adding min() and max() is enough - so this needs further exploration.
There are of course two limitations:
- It assumes all CLHEP generators to have at least 53 bits of "entropy"
This is not true for any CLHEP generators except MIXMAX and it is the only one in practice that is known to be used with std::random distributions.