@@ -27,6 +27,7 @@ Supported Functionality
27
27
- Engine class templates:
28
28
- ``linear_congruential_engine ``
29
29
- ``subtract_with_carry_engine ``
30
+ - ``philox_engine ``
30
31
- Engine adaptor class templates:
31
32
- ``discard_block_engine ``
32
33
- Engines and engine adaptors with predefined parameters:
@@ -36,6 +37,8 @@ Supported Functionality
36
37
- ``ranlux48_base ``
37
38
- ``ranlux24 ``
38
39
- ``ranlux48 ``
40
+ - ``philox4x32 ``
41
+ - ``philox4x64 ``
39
42
- Distribution class templates:
40
43
- ``uniform_int_distribution ``
41
44
- ``uniform_real_distribution ``
@@ -48,7 +51,7 @@ Supported Functionality
48
51
- ``cauchy_distribution ``
49
52
- ``extreme_value_distribution ``
50
53
51
- ``linear_congruential_engine `` and ``subtract_with_carry_engine `` satisfy the uniform random bit generator requirements.
54
+ ``linear_congruential_engine ``, `` subtract_with_carry_engine ``, and ``philox_engine `` satisfy the uniform random bit generator requirements.
52
55
53
56
Limitations
54
57
-----------
@@ -82,7 +85,7 @@ The ``scalar_type`` is used instead of ``result_type`` in all contexts where a s
82
85
Since ``scalar_type `` is the same as ``result_type `` except for template instantiations with ``sycl::vec ``,
83
86
class templates still meet the applicable requirements of the `C++ Standard `_.
84
87
85
- When instantiated with ``sycl::vec<Type,N> ``, ``linear_congruential_engine `` and ``subtract_with_carry_engine `` may not
88
+ When instantiated with ``sycl::vec<Type,N> ``, ``linear_congruential_engine ``, `` subtract_with_carry_engine ``, and ``philox_engine `` may not
86
89
formally satisfy the uniform random bit generator requirements defined by the `C++ Standard `_. Instead, the following
87
90
alternative requirements apply: for an engine object ``g `` of type ``G ``,
88
91
@@ -105,7 +108,7 @@ The following engines and engine adaptors with predefined parameters are defined
105
108
.. code :: cpp
106
109
107
110
template <int N>
108
- using minstd_rand0_vec = linear_congruential_engine<sycl::vec<::std:: uint_fast32_t, N>, 16807, 0, 2147483647>;
111
+ using minstd_rand0_vec = linear_congruential_engine<sycl::vec<uint_fast32_t, N>, 16807, 0, 2147483647>;
109
112
110
113
template <int N>
111
114
using minstd_rand_vec = linear_congruential_engine<sycl::vec<uint_fast32_t, N>, 48271, 0, 2147483647>;
@@ -122,6 +125,14 @@ The following engines and engine adaptors with predefined parameters are defined
122
125
template <int N>
123
126
using ranlux48_vec = discard_block_engine<ranlux48_base_vec<N>, 389, 11>;
124
127
128
+ template <int N>
129
+ using philox4x32_vec =
130
+ philox_engine<sycl::vec<uint_fast32_t, N>, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85>;
131
+
132
+ template <int N>
133
+ using philox4x64_vec = philox_engine<sycl::vec<uint_fast64_t, N>, 64, 4, 10, 0xCA5A826395121157, 0x9E3779B97F4A7C15,
134
+ 0xD2E7470EE14C6C93, 0xBB67AE8584CAA73B>;
135
+
125
136
Except for producing a ``sycl::vec `` of random values per invocation, the behavior of these engines is equivalent to
126
137
the corresponding scalar engines, as described in the following table:
127
138
@@ -151,7 +162,12 @@ the corresponding scalar engines, as described in the following table:
151
162
* - ``ranlux48_vec ``
152
163
- ``ranlux48 ``
153
164
- 1112339016
154
-
165
+ * - ``philox4x32_vec ``
166
+ - ``philox4x32 ``
167
+ - 1955073260
168
+ * - ``philox4x64_vec ``
169
+ - ``philox4x64 ``
170
+ - 3409172418970261260
155
171
156
172
Function Objects
157
173
++++++++++++++++
0 commit comments