mkl-devel-dpcpp 2025.1.0__py2.py3-none-win_amd64.whl → 2025.3.0__py2.py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl.lib +0 -0
  2. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
  3. mkl_devel_dpcpp-2025.3.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
  4. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_dll.lib +0 -0
  5. mkl_devel_dpcpp-2025.3.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
  6. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_rng_dll.lib +0 -0
  7. mkl_devel_dpcpp-2025.3.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
  8. {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.3.0.dist-info}/METADATA +5 -4
  9. mkl_devel_dpcpp-2025.3.0.dist-info/RECORD +15 -0
  10. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/bfloat16.hpp +0 -26
  11. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/buffer.hpp +0 -42
  12. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/buffer_decls.hpp +0 -880
  13. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/spec.hpp +0 -42
  14. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/types.hpp +0 -60
  15. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/usm.hpp +0 -42
  16. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/usm_decls.hpp +0 -1240
  17. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas.hpp +0 -34
  18. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dft/spec.hpp +0 -42
  19. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dft.hpp +0 -254
  20. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dfti.hpp +0 -22
  21. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/exceptions.hpp +0 -110
  22. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +0 -67
  23. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +0 -68
  24. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/splines.hpp +0 -177
  25. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting.hpp +0 -22
  26. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/export.hpp +0 -25
  27. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/concepts.hpp +0 -55
  28. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/exceptions.hpp +0 -75
  29. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/lapack.hpp +0 -1096
  30. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/scratchpad.hpp +0 -107
  31. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/spec.hpp +0 -42
  32. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack.hpp +0 -24
  33. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/detail/engine_base.hpp +0 -48
  34. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +0 -89
  35. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +0 -463
  36. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +0 -71
  37. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +0 -85
  38. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/engine_base.hpp +0 -43
  39. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +0 -54
  40. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +0 -116
  41. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +0 -285
  42. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +0 -270
  43. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/geometric_impl.hpp +0 -99
  44. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +0 -105
  45. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +0 -117
  46. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +0 -223
  47. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +0 -118
  48. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +0 -266
  49. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +0 -125
  50. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +0 -385
  51. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +0 -3668
  52. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +0 -141
  53. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +0 -552
  54. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +0 -328
  55. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/types.hpp +0 -58
  56. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +0 -51
  57. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +0 -287
  58. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +0 -183
  59. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/distributions.hpp +0 -700
  60. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/engine_helpers.hpp +0 -116
  61. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/engines.hpp +0 -187
  62. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/functions.hpp +0 -59
  63. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/types.hpp +0 -79
  64. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device.hpp +0 -29
  65. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/distributions.hpp +0 -1913
  66. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/engines.hpp +0 -788
  67. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/functions.hpp +0 -163
  68. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/spec.hpp +0 -42
  69. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng.hpp +0 -23
  70. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +0 -111
  71. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_operations.hpp +0 -446
  72. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_structures.hpp +0 -193
  73. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/spec.hpp +0 -42
  74. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas.hpp +0 -33
  75. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spec.hpp +0 -42
  76. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/stats/spec.hpp +0 -42
  77. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/stats.hpp +0 -357
  78. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/types.hpp +0 -321
  79. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/buffer.hpp +0 -3529
  80. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/decls.hpp +0 -280
  81. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/decls.hpp +0 -81
  82. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/dispatch.hpp +0 -1059
  83. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/ep.hpp +0 -861
  84. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/ha.hpp +0 -860
  85. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/la.hpp +0 -860
  86. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/rts.hpp +0 -4608
  87. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/scalar.hpp +0 -8963
  88. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/vm.hpp +0 -460
  89. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/span.hpp +0 -3813
  90. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/spec.hpp +0 -42
  91. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/usm.hpp +0 -3581
  92. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm.hpp +0 -31
  93. mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl.hpp +0 -35
  94. mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
  95. mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
  96. mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
  97. mkl_devel_dpcpp-2025.1.0.dist-info/RECORD +0 -99
  98. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_data_fitting_dll.lib +0 -0
  99. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_stats_dll.lib +0 -0
  100. {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.3.0.data}/data/Library/lib/mkl_sycl_vm_dll.lib +0 -0
  101. {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.3.0.dist-info}/LICENSE.txt +0 -0
  102. {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.3.0.dist-info}/WHEEL +0 -0
  103. {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.3.0.dist-info}/top_level.txt +0 -0
@@ -1,700 +0,0 @@
1
- /*******************************************************************************
2
- * Copyright (C) 2020 Intel Corporation
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing,
11
- * software distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions
14
- * and limitations under the License.
15
- *
16
- *
17
- * SPDX-License-Identifier: Apache-2.0
18
- *******************************************************************************/
19
-
20
- #ifndef _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_
21
- #define _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_
22
-
23
- #include <limits>
24
-
25
- #include "oneapi/mkl/rng/device/detail/distribution_base.hpp"
26
- #include "oneapi/mkl/rng/device/functions.hpp"
27
-
28
- namespace oneapi::mkl::rng::device {
29
-
30
- // CONTINUOUS AND DISCRETE RANDOM NUMBER DISTRIBUTIONS
31
-
32
- // Class template oneapi::mkl::rng::device::uniform
33
- //
34
- // Represents continuous and discrete uniform random number distribution
35
- //
36
- // Supported types:
37
- // float
38
- // double
39
- // std::int32_t
40
- // std::uint32_t
41
- //
42
- // Supported methods:
43
- // oneapi::mkl::rng::device::uniform_method::standard
44
- // oneapi::mkl::rng::device::uniform_method::accurate
45
- //
46
- // Input arguments:
47
- // a - left bound. 0.0 by default
48
- // b - right bound. 1.0 by default (for std::(u)int32_t std::numeric_limits<std::int32_t>::max()
49
- // is used for accurate method and 2^23 is used for standard method)
50
- //
51
- // Note: using (un)signed integer uniform distribution with uniform_method::standard method may
52
- // cause incorrect statistics of the produced random numbers (due to rounding error) if
53
- // (abs(b - a) > 2^23) || (abs(b) > 2^23) || (abs(a) > 2^23)
54
- // Please use uniform_method::accurate method instead
55
- //
56
- template <typename Type, typename Method>
57
- class uniform : detail::distribution_base<uniform<Type, Method>> {
58
- public:
59
- static_assert(std::is_same<Method, uniform_method::standard>::value ||
60
- std::is_same<Method, uniform_method::accurate>::value,
61
- "oneMKL: rng/uniform: method is incorrect");
62
-
63
- static_assert(std::is_same<Type, float>::value || std::is_same<Type, double>::value ||
64
- std::is_same<Type, std::int32_t>::value ||
65
- std::is_same<Type, std::uint32_t>::value ||
66
- std::is_same<Type, std::int64_t>::value ||
67
- std::is_same<Type, std::uint64_t>::value,
68
- "oneMKL: rng/uniform: type is not supported");
69
-
70
- using method_type = Method;
71
- using result_type = Type;
72
- using param_type = typename detail::distribution_base<uniform<Type, Method>>::param_type;
73
-
74
- uniform()
75
- : detail::distribution_base<uniform<Type, Method>>(
76
- Type(0.0),
77
- std::is_integral<Type>::value
78
- ? ((std::is_same_v<Type, std::uint64_t> || std::is_same_v<Type, std::int64_t>)
79
- ? (std::numeric_limits<Type>::max)()
80
- : (std::is_same<Method, uniform_method::standard>::value
81
- ? (1 << 23)
82
- : (std::numeric_limits<Type>::max)()))
83
- : Type(1.0)) {}
84
-
85
- explicit uniform(Type a, Type b) : detail::distribution_base<uniform<Type, Method>>(a, b) {}
86
- explicit uniform(const param_type& pt)
87
- : detail::distribution_base<uniform<Type, Method>>(pt.a_, pt.b_) {}
88
-
89
- Type a() const {
90
- return detail::distribution_base<uniform<Type, Method>>::a();
91
- }
92
-
93
- Type b() const {
94
- return detail::distribution_base<uniform<Type, Method>>::b();
95
- }
96
-
97
- param_type param() const {
98
- return detail::distribution_base<uniform<Type, Method>>::param();
99
- }
100
-
101
- void param(const param_type& pt) {
102
- detail::distribution_base<uniform<Type, Method>>::param(pt);
103
- }
104
-
105
- private:
106
- template <typename Distr, typename Engine>
107
- friend auto generate(Distr& distr, Engine& engine) ->
108
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
109
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
110
-
111
- template <typename Distr, typename Engine>
112
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
113
- };
114
-
115
- // Class template oneapi::mkl::rng::device::gaussian
116
- //
117
- // Represents continuous normal random number distribution
118
- //
119
- // Supported types:
120
- // float
121
- // double
122
- //
123
- // Supported methods:
124
- // oneapi::mkl::rng::device::gaussian_method::box_muller2
125
- // oneapi::mkl::rng::device::gaussian_method::icdf
126
- //
127
- // Input arguments:
128
- // mean - mean. 0 by default
129
- // stddev - standard deviation. 1.0 by default
130
- //
131
- template <typename RealType, typename Method>
132
- class gaussian : detail::distribution_base<gaussian<RealType, Method>> {
133
- public:
134
- static_assert(std::is_same<Method, gaussian_method::box_muller2>::value
135
- #if MKL_RNG_USE_BINARY_CODE
136
- || std::is_same<Method, gaussian_method::icdf>::value
137
- #endif
138
- ,
139
- "oneMKL: rng/gaussian: method is incorrect");
140
- #if !MKL_RNG_USE_BINARY_CODE
141
- static_assert(!std::is_same<Method, gaussian_method::icdf>::value, "icdf method not supported");
142
- #endif
143
- static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
144
- "oneMKL: rng/gaussian: type is not supported");
145
-
146
- using method_type = Method;
147
- using result_type = RealType;
148
- using param_type = typename detail::distribution_base<gaussian<RealType, Method>>::param_type;
149
-
150
- gaussian()
151
- : detail::distribution_base<gaussian<RealType, Method>>(RealType(0.0), RealType(1.0)) {}
152
-
153
- explicit gaussian(RealType mean, RealType stddev)
154
- : detail::distribution_base<gaussian<RealType, Method>>(mean, stddev) {}
155
- explicit gaussian(const param_type& pt)
156
- : detail::distribution_base<gaussian<RealType, Method>>(pt.mean_, pt.stddev_) {}
157
-
158
- RealType mean() const {
159
- return detail::distribution_base<gaussian<RealType, Method>>::mean();
160
- }
161
-
162
- RealType stddev() const {
163
- return detail::distribution_base<gaussian<RealType, Method>>::stddev();
164
- }
165
-
166
- param_type param() const {
167
- return detail::distribution_base<gaussian<RealType, Method>>::param();
168
- }
169
-
170
- void param(const param_type& pt) {
171
- detail::distribution_base<gaussian<RealType, Method>>::param(pt);
172
- }
173
-
174
- template <typename Distr, typename Engine>
175
- friend auto generate(Distr& distr, Engine& engine) ->
176
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
177
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
178
- template <typename Distr, typename Engine>
179
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
180
- };
181
-
182
- // Class template oneapi::mkl::rng::device::lognormal
183
- //
184
- // Represents continuous lognormal random number distribution
185
- //
186
- // Supported types:
187
- // float
188
- // double
189
- //
190
- // Supported methods:
191
- // oneapi::mkl::rng::device::lognormal_method::box_muller2
192
- //
193
- // Input arguments:
194
- // m - mean of the subject normal distribution. 0.0 by default
195
- // s - standard deviation of the subject normal distribution. 1.0 by default
196
- // displ - displacement. 0.0 by default
197
- // scale - scalefactor. 1.0 by default
198
- //
199
- template <typename RealType, typename Method>
200
- class lognormal : detail::distribution_base<lognormal<RealType, Method>> {
201
- public:
202
- static_assert(std::is_same<Method, lognormal_method::box_muller2>::value,
203
- "oneMKL: rng/lognormal: method is incorrect");
204
-
205
- static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
206
- "oneMKL: rng/lognormal: type is not supported");
207
-
208
- using method_type = Method;
209
- using result_type = RealType;
210
- using param_type = typename detail::distribution_base<lognormal<RealType, Method>>::param_type;
211
-
212
- lognormal()
213
- : detail::distribution_base<lognormal<RealType, Method>>(
214
- RealType(0.0), RealType(1.0), RealType(0.0), RealType(1.0)) {}
215
-
216
- explicit lognormal(RealType m, RealType s, RealType displ = RealType(0.0),
217
- RealType scale = RealType(1.0))
218
- : detail::distribution_base<lognormal<RealType, Method>>(m, s, displ, scale) {}
219
- explicit lognormal(const param_type& pt)
220
- : detail::distribution_base<lognormal<RealType, Method>>(pt.m_, pt.s_, pt.displ_,
221
- pt.scale_) {}
222
-
223
- RealType m() const {
224
- return detail::distribution_base<lognormal<RealType, Method>>::m();
225
- }
226
-
227
- RealType s() const {
228
- return detail::distribution_base<lognormal<RealType, Method>>::s();
229
- }
230
-
231
- RealType displ() const {
232
- return detail::distribution_base<lognormal<RealType, Method>>::displ();
233
- }
234
-
235
- RealType scale() const {
236
- return detail::distribution_base<lognormal<RealType, Method>>::scale();
237
- }
238
-
239
- param_type param() const {
240
- return detail::distribution_base<lognormal<RealType, Method>>::param();
241
- }
242
-
243
- void param(const param_type& pt) {
244
- detail::distribution_base<lognormal<RealType, Method>>::param(pt);
245
- }
246
-
247
- template <typename Distr, typename Engine>
248
- friend auto generate(Distr& distr, Engine& engine) ->
249
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
250
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
251
- template <typename Distr, typename Engine>
252
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
253
- };
254
-
255
- // Class template oneapi::mkl::rng::device::beta
256
- //
257
- // Represents continuous beta random number distribution
258
- //
259
- // Supported types:
260
- // float
261
- // double
262
- //
263
- // Supported methods:
264
- // oneapi::mkl::rng::device::beta_method::cja
265
- // oneapi::mkl::rng::device::beta_method::cja_accurate
266
- //
267
- // Input arguments:
268
- // p - shape. 1.0 by default
269
- // q - shape. 0.0 by default
270
- // a - displacement. 1.0 by default
271
- // b - scalefactor. 1.0 by default
272
- //
273
- template <typename RealType, typename Method>
274
- class beta : detail::distribution_base<beta<RealType, Method>> {
275
- public:
276
- static_assert(std::is_same<Method, beta_method::cja>::value ||
277
- std::is_same<Method, beta_method::cja_accurate>::value,
278
- "oneMKL: rng/beta: method is incorrect");
279
-
280
- static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
281
- "oneMKL: rng/beta: type is not supported");
282
-
283
- using method_type = Method;
284
- using result_type = RealType;
285
- using param_type = typename detail::distribution_base<beta<RealType, Method>>::param_type;
286
-
287
- beta()
288
- : detail::distribution_base<beta<RealType, Method>>(RealType(1.0), RealType(1.0),
289
- RealType(0.0), RealType(1.0)) {}
290
-
291
- explicit beta(RealType p, RealType q, RealType a, RealType b)
292
- : detail::distribution_base<beta<RealType, Method>>(p, q, a, b) {}
293
-
294
- explicit beta(const param_type& pt)
295
- : detail::distribution_base<beta<RealType, Method>>(pt.p_, pt.q_, pt.a_, pt.b_) {}
296
-
297
- RealType p() const {
298
- return detail::distribution_base<beta<RealType, Method>>::p();
299
- }
300
-
301
- RealType q() const {
302
- return detail::distribution_base<beta<RealType, Method>>::q();
303
- }
304
-
305
- RealType a() const {
306
- return detail::distribution_base<beta<RealType, Method>>::a();
307
- }
308
-
309
- RealType b() const {
310
- return detail::distribution_base<beta<RealType, Method>>::b();
311
- }
312
-
313
- param_type param() const {
314
- return detail::distribution_base<beta<RealType, Method>>::param();
315
- }
316
-
317
- std::size_t count_rejected_numbers() const {
318
- return detail::distribution_base<beta<RealType, Method>>::count_rejected_numbers();
319
- }
320
-
321
- void param(const param_type& pt) {
322
- detail::distribution_base<beta<RealType, Method>>::param(pt);
323
- }
324
-
325
- template <typename Distr, typename Engine>
326
- friend auto generate(Distr& distr, Engine& engine) ->
327
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
328
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
329
- template <typename Distr, typename Engine>
330
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
331
- };
332
-
333
- // Class template oneapi::mkl::rng::device::gamma
334
- //
335
- // Represents continuous gamma random number distribution
336
- //
337
- // Supported types:
338
- // float
339
- // double
340
- //
341
- // Supported methods:
342
- // oneapi::mkl::rng::device::gamma_method::marsaglia
343
- // oneapi::mkl::rng::device::gamma_method::marsaglia_accurate
344
- //
345
- // Input arguments:
346
- // alpha - shape. 1.0 by default
347
- // a - displacement. 0.0 by default
348
- // beta - scalefactor. 1.0 by default
349
- //
350
- template <typename RealType, typename Method>
351
- class gamma : detail::distribution_base<gamma<RealType, Method>> {
352
- public:
353
- static_assert(std::is_same<Method, gamma_method::marsaglia>::value ||
354
- std::is_same<Method, gamma_method::marsaglia_accurate>::value,
355
- "oneMKL: rng/gamma: method is incorrect");
356
-
357
- static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
358
- "oneMKL: rng/gamma: type is not supported");
359
-
360
- using method_type = Method;
361
- using result_type = RealType;
362
- using param_type = typename detail::distribution_base<gamma<RealType, Method>>::param_type;
363
-
364
- gamma()
365
- : detail::distribution_base<gamma<RealType, Method>>(RealType(1.0), RealType(0.0),
366
- RealType(1.0)) {}
367
-
368
- explicit gamma(RealType alpha, RealType a, RealType beta)
369
- : detail::distribution_base<gamma<RealType, Method>>(alpha, a, beta) {}
370
-
371
- explicit gamma(const param_type& pt)
372
- : detail::distribution_base<gamma<RealType, Method>>(pt.alpha_, pt.a_, pt.beta_) {}
373
-
374
- RealType alpha() const {
375
- return detail::distribution_base<gamma<RealType, Method>>::alpha();
376
- }
377
-
378
- RealType a() const {
379
- return detail::distribution_base<gamma<RealType, Method>>::a();
380
- }
381
-
382
- RealType beta() const {
383
- return detail::distribution_base<gamma<RealType, Method>>::beta();
384
- }
385
-
386
- std::size_t count_rejected_numbers() const {
387
- return detail::distribution_base<gamma<RealType, Method>>::count_rejected_numbers();
388
- }
389
-
390
- param_type param() const {
391
- return detail::distribution_base<gamma<RealType, Method>>::param();
392
- }
393
-
394
- void param(const param_type& pt) {
395
- detail::distribution_base<gamma<RealType, Method>>::param(pt);
396
- }
397
-
398
- template <typename Distr, typename Engine>
399
- friend auto generate(Distr& distr, Engine& engine) ->
400
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
401
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
402
- template <typename Distr, typename Engine>
403
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
404
- };
405
-
406
- // Class template oneapi::mkl::rng::device::uniform_bits
407
- //
408
- // Represents discrete uniform bits random number distribution
409
- //
410
- // Supported types:
411
- // std::uint32_t
412
- // std::uint64_t
413
- //
414
- template <typename UIntType>
415
- class uniform_bits : detail::distribution_base<uniform_bits<UIntType>> {
416
- public:
417
- static_assert(std::is_same<UIntType, std::uint32_t>::value ||
418
- std::is_same<UIntType, std::uint64_t>::value,
419
- "oneMKL: rng/uniform_bits: type is not supported");
420
- using result_type = UIntType;
421
-
422
- private:
423
- template <typename Distr, typename Engine>
424
- friend auto generate(Distr& distr, Engine& engine) ->
425
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
426
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
427
-
428
- template <typename Distr, typename Engine>
429
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
430
- };
431
-
432
- // Class template oneapi::mkl::rng::device::bits
433
- //
434
- // Represents bits of underlying random number engine
435
- //
436
- // Supported types:
437
- // std::uint32_t for philox4x32x10, mrg32k3a and mcg31m1
438
- // std::uint64_t for mcg59 only
439
- //
440
- template <typename UIntType>
441
- class bits : detail::distribution_base<bits<UIntType>> {
442
- public:
443
- static_assert(std::is_same<UIntType, std::uint32_t>::value ||
444
- std::is_same<UIntType, std::uint64_t>::value,
445
- "oneMKL: rng/bits: type is not supported");
446
- using result_type = UIntType;
447
-
448
- private:
449
- template <typename Distr, typename Engine>
450
- friend auto generate(Distr& distr, Engine& engine) ->
451
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
452
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
453
-
454
- template <typename Distr, typename Engine>
455
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
456
- };
457
-
458
- // Class template oneapi::mkl::rng::device::exponential
459
- //
460
- // Represents continuous exponential random number distribution
461
- //
462
- // Supported types:
463
- // float
464
- // double
465
- //
466
- // Supported methods:
467
- // oneapi::mkl::rng::device::exponential_method::icdf
468
- // oneapi::mkl::rng::device::exponential_method::icdf_accurate
469
- //
470
- // Input arguments:
471
- // displ - displacement. 0.0 by default
472
- // scale - scalefactor. 1.0 by default
473
- //
474
- template <typename RealType, typename Method>
475
- class exponential : detail::distribution_base<exponential<RealType, Method>> {
476
- public:
477
- static_assert(std::is_same<Method, exponential_method::icdf>::value ||
478
- std::is_same<Method, exponential_method::icdf_accurate>::value,
479
- "oneMKL: rng/exponential: method is incorrect");
480
-
481
- static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
482
- "oneMKL: rng/exponential: type is not supported");
483
-
484
- using method_type = Method;
485
- using result_type = RealType;
486
- using param_type =
487
- typename detail::distribution_base<exponential<RealType, Method>>::param_type;
488
-
489
- exponential()
490
- : detail::distribution_base<exponential<RealType, Method>>(RealType(0.0),
491
- RealType(1.0)) {}
492
-
493
- explicit exponential(RealType a, RealType beta)
494
- : detail::distribution_base<exponential<RealType, Method>>(a, beta) {}
495
-
496
- explicit exponential(const param_type& pt)
497
- : detail::distribution_base<exponential<RealType, Method>>(pt.a_, pt.beta_) {}
498
-
499
- RealType a() const {
500
- return detail::distribution_base<exponential<RealType, Method>>::a();
501
- }
502
-
503
- RealType beta() const {
504
- return detail::distribution_base<exponential<RealType, Method>>::beta();
505
- }
506
-
507
- param_type param() const {
508
- return detail::distribution_base<exponential<RealType, Method>>::param();
509
- }
510
-
511
- void param(const param_type& pt) {
512
- detail::distribution_base<exponential<RealType, Method>>::param(pt);
513
- }
514
-
515
- template <typename Distr, typename Engine>
516
- friend auto generate(Distr& distr, Engine& engine) ->
517
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
518
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
519
- template <typename Distr, typename Engine>
520
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
521
- };
522
-
523
- // Class template oneapi::mkl::rng::device::poisson
524
- //
525
- // Represents discrete poisson random number distribution
526
- //
527
- // Supported types:
528
- // std::int32_t
529
- // std::uint32_t
530
- //
531
- // Supported methods:
532
- // oneapi::mkl::rng::device::poisson_method::devroye
533
- //
534
- // Input arguments:
535
- // lambda - mean value. 1.0 by default
536
- //
537
- template <typename IntType, typename Method>
538
- class poisson : detail::distribution_base<poisson<IntType, Method>> {
539
- public:
540
- static_assert(std::is_same<Method, poisson_method::devroye>::value,
541
- "oneMKL: rng/poisson: method is incorrect");
542
-
543
- static_assert(std::is_same<IntType, std::int32_t>::value ||
544
- std::is_same<IntType, std::uint32_t>::value,
545
- "oneMKL: rng/poisson: type is not supported");
546
-
547
- using method_type = Method;
548
- using result_type = IntType;
549
- using param_type = typename detail::distribution_base<poisson<IntType, Method>>::param_type;
550
-
551
- poisson() : detail::distribution_base<poisson<IntType, Method>>(0.5) {}
552
-
553
- explicit poisson(double lambda) : detail::distribution_base<poisson<IntType, Method>>(lambda) {}
554
- explicit poisson(const param_type& pt)
555
- : detail::distribution_base<poisson<IntType, Method>>(pt.lambda_) {}
556
-
557
- double lambda() const {
558
- return detail::distribution_base<poisson<IntType, Method>>::lambda();
559
- }
560
-
561
- param_type param() const {
562
- return detail::distribution_base<poisson<IntType, Method>>::param();
563
- }
564
-
565
- void param(const param_type& pt) {
566
- detail::distribution_base<poisson<IntType, Method>>::param(pt);
567
- }
568
-
569
- template <typename Distr, typename Engine>
570
- friend auto generate(Distr& distr, Engine& engine) ->
571
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
572
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
573
- template <typename Distr, typename Engine>
574
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
575
- };
576
-
577
- // Class template oneapi::mkl::rng::device::bernoulli
578
- //
579
- // Represents discrete Bernoulli random number distribution
580
- //
581
- // Supported types:
582
- // std::uint32_t
583
- // std::int32_t
584
- // std::uint16_t
585
- // std::int16_t
586
- // std::uint8_t
587
- // std::int8_t
588
- //
589
- // Supported methods:
590
- // oneapi::mkl::rng::bernoulli_method::icdf;
591
- //
592
- // Input arguments:
593
- // p - success probablity of a trial. 0.5 by default
594
- //
595
- template <typename IntType, typename Method>
596
- class bernoulli : detail::distribution_base<bernoulli<IntType, Method>> {
597
- public:
598
- static_assert(std::is_same<Method, bernoulli_method::icdf>::value,
599
- "oneMKL: rng/bernoulli: method is incorrect");
600
-
601
- static_assert(std::is_same<IntType, std::int32_t>::value ||
602
- std::is_same<IntType, std::uint32_t>::value ||
603
- std::is_same<IntType, std::int16_t>::value ||
604
- std::is_same<IntType, std::uint16_t>::value ||
605
- std::is_same<IntType, std::int8_t>::value ||
606
- std::is_same<IntType, std::uint8_t>::value,
607
- "oneMKL: rng/bernoulli: type is not supported");
608
-
609
- using method_type = Method;
610
- using result_type = IntType;
611
- using param_type = typename detail::distribution_base<bernoulli<IntType, Method>>::param_type;
612
-
613
- bernoulli() : detail::distribution_base<bernoulli<IntType, Method>>(0.5f) {}
614
-
615
- explicit bernoulli(float p) : detail::distribution_base<bernoulli<IntType, Method>>(p) {}
616
- explicit bernoulli(const param_type& pt)
617
- : detail::distribution_base<bernoulli<IntType, Method>>(pt.p_) {}
618
-
619
- float p() const {
620
- return detail::distribution_base<bernoulli<IntType, Method>>::p();
621
- }
622
-
623
- param_type param() const {
624
- return detail::distribution_base<bernoulli<IntType, Method>>::param();
625
- }
626
-
627
- void param(const param_type& pt) {
628
- detail::distribution_base<bernoulli<IntType, Method>>::param(pt);
629
- }
630
-
631
- template <typename Distr, typename Engine>
632
- friend auto generate(Distr& distr, Engine& engine) ->
633
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
634
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
635
- template <typename Distr, typename Engine>
636
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
637
- };
638
-
639
- // Class template oneapi::mkl::rng::device::geometric
640
- //
641
- // Represents discrete geometric random number distribution
642
- //
643
- // Supported types:
644
- // std::uint32_t
645
- // std::int32_t
646
- // std::uint64_t
647
- // std::int64_t
648
- //
649
- // Supported methods:
650
- // oneapi::mkl::rng::geometric_method::icdf;
651
- //
652
- // Input arguments:
653
- // p - success probablity of a trial. 0.5 by default
654
- //
655
- template <typename IntType, typename Method>
656
- class geometric : detail::distribution_base<geometric<IntType, Method>> {
657
- public:
658
- static_assert(std::is_same<Method, geometric_method::icdf>::value,
659
- "oneMKL: rng/geometric: method is incorrect");
660
-
661
- static_assert(std::is_same<IntType, std::int32_t>::value ||
662
- std::is_same<IntType, std::uint32_t>::value ||
663
- std::is_same<IntType, std::int64_t>::value ||
664
- std::is_same<IntType, std::uint64_t>::value,
665
- "oneMKL: rng/geometric: type is not supported");
666
-
667
- using method_type = Method;
668
- using result_type = IntType;
669
- using param_type = typename detail::distribution_base<geometric<IntType, Method>>::param_type;
670
-
671
- geometric() : detail::distribution_base<geometric<IntType, Method>>(0.5f) {}
672
-
673
- explicit geometric(float p) : detail::distribution_base<geometric<IntType, Method>>(p) {}
674
- explicit geometric(const param_type& pt)
675
- : detail::distribution_base<geometric<IntType, Method>>(pt.p_) {}
676
-
677
- float p() const {
678
- return detail::distribution_base<geometric<IntType, Method>>::p();
679
- }
680
-
681
- param_type param() const {
682
- return detail::distribution_base<geometric<IntType, Method>>::param();
683
- }
684
-
685
- void param(const param_type& pt) {
686
- detail::distribution_base<geometric<IntType, Method>>::param(pt);
687
- }
688
-
689
- template <typename Distr, typename Engine>
690
- friend auto generate(Distr& distr, Engine& engine) ->
691
- typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
692
- sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
693
-
694
- template <typename Distr, typename Engine>
695
- friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
696
- };
697
-
698
- } // namespace oneapi::mkl::rng::device
699
-
700
- #endif // _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_