- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There seems to be a discrepancy between the method of initialization of the Philox-4x32-10 random number generator in the following two web-pages when more than a single 32-bit integer is used for initialization:
(1) https://software.intel.com/en-us/mkl-vsnotes-philox4x32-10
Stream Initialization by Function vslNewStreamEx
and the following article:
The case in (1) seems a bit odd to me, since k is meant to be a 64-bit (2x32-bit) key, while the counter c is a128-bit (4x32-bit). Yet, the method described for n>2 is trying to initialize k with more than 64-bits. Perhaps the text is wrong for (1) and that for n>2 the params[3,4,5,6] should instead be setting c?
Has anyone used this BRNG with multiple-word initialization?
Thanks. P.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Peter,
Thanks for bringing us this observation!
Yes, the description of the vslNewStreamEx function for Philox 4x32-10 in VS Notes contains a bug.
The right description is expected to be like this:
Philox4x32-10 generates the stream and initializes it specifying the array params[] of n 32-bit integers:
- If n = 0, assume c = k0 = k1 = 0.
- If n = 1, assume k = params[0], c = 0.
- If n = 2, assume k = params[0] + params[1]*232, c = 0.
- If n = 3, assume k = params[0] + params[1]*232, c = params[2].
- If n = 4, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232.
- If n = 5, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232+ params[4]*264.
- If n >= 6, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232+ params[4]*264 + params[5]*296.
We will update the documentation in one of the future releases of the library.
Regards,
Pavel
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Peter,
Thanks for bringing us this observation!
Yes, the description of the vslNewStreamEx function for Philox 4x32-10 in VS Notes contains a bug.
The right description is expected to be like this:
Philox4x32-10 generates the stream and initializes it specifying the array params[] of n 32-bit integers:
- If n = 0, assume c = k0 = k1 = 0.
- If n = 1, assume k = params[0], c = 0.
- If n = 2, assume k = params[0] + params[1]*232, c = 0.
- If n = 3, assume k = params[0] + params[1]*232, c = params[2].
- If n = 4, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232.
- If n = 5, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232+ params[4]*264.
- If n >= 6, assume k = params[0] + params[1]*232, c = params[2] + params[3]*232+ params[4]*264 + params[5]*296.
We will update the documentation in one of the future releases of the library.
Regards,
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK, Thanks Pavel!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The problem is escalated and this thread will be updated when the fix will be released.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page