Line data Source code
1 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!! !!!!
4 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5 : !!!! !!!!
6 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7 : !!!! !!!!
8 : !!!! This file is part of the ParaMonte library. !!!!
9 : !!!! !!!!
10 : !!!! LICENSE !!!!
11 : !!!! !!!!
12 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13 : !!!! !!!!
14 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 :
17 : !> \brief
18 : !> This module contains classes and procedures for computing various statistical quantities related to the univariate <b>Uniform distribution</b>.
19 : !>
20 : !> \details
21 : !> Specifically, this module contains routines for computing the following quantities of the univariate <b>Uniform distribution</b>:<br>
22 : !> <ol>
23 : !> <li> the Probability Density Function (**PDF**)
24 : !> <li> the Cumulative Distribution Function (**CDF**)
25 : !> <li> the Random Number Generation from the distribution (**RNG**)
26 : !> <li> the Inverse Cumulative Distribution Function **(ICDF)** or the **Quantile Function**
27 : !> </ol>
28 : !>
29 : !> The **continuous uniform distributions** or **rectangular distributions** are a family of symmetric probability distributions.<br>
30 : !> Such a distribution describes an experiment where there is an arbitrary outcome that lies between certain bounds.<br>
31 : !> The bounds are defined by the parameters, \f$a\f$ and \f$b\f$, which are the minimum and maximum values.<br>
32 : !> The interval can either be closed (i.e., \f$[a, b]\f$) or open (i.e., \f$(a, b)\f$).<br>
33 : !> Therefore, the distribution is often abbreviated as \f$U(a,b)\f$ where \f$U\f$ stands for uniform distribution.<br>
34 : !> The difference between the bounds defines the interval length.<br>
35 : !> All intervals of the same length on the distribution's support are equally probable.<br>
36 : !>
37 : !> \note
38 : !> The Uniform distribution is the maximum entropy probability distribution for a random variable \f$X\f$ under no constraint other than that it is contained in the distribution's support.<br>
39 : !>
40 : !> **Probability density function (PDF)**<br>
41 : !>
42 : !> The **PDF** of the continuous uniform distribution is,
43 : !> \f{equation}{
44 : !> f(x) =
45 : !> \begin{cases}
46 : !> \frac{1}{b - a} & \text{for} a\leq x \leq b ~, \\
47 : !> 0 & \text{for} x < a ~ \text{or} ~ x > b ~.
48 : !> \end{cases}
49 : !> \f}
50 : !>
51 : !> The values of \f$f(x)\f$ at the two boundaries \f$a\f$ and \f$b\f$ are usually unimportant, because they do not alter the value of \f$\int_c^d f(x) dx\f$
52 : !> over any interval \f$[c,d]\f$ nor of \f$\int_a^b x f(x) dx\f$ nor of any higher moment.<br>
53 : !> Sometimes they are chosen to be zero, and sometimes chosen to be \f$\frac{1}{b-a}\f$.<br>
54 : !> The latter is appropriate in the context of estimation by the method of maximum likelihood.<br>
55 : !> In the context of Fourier analysis, one may take the value of \f$f(a)\f$ or \f$f(b)\f$ to be \f$\frac{1}{2(b - a)}\f$
56 : !> because then the inverse transform of many integral transforms of this uniform function will yield back the function itself,
57 : !> rather than a function which is equal *almost everywhere*, i.e., except on a set of points with zero measure.<br>
58 : !> Also, it is consistent with the sign function, which has no such ambiguity.<br>
59 : !> Any probability density function integrates to \f$1\f$.<br>
60 : !> Thus, the PDF of the continuous uniform distribution is graphically portrayed as a rectangle where \f$b − a\f$ is the base length and \f$\frac{1}{b-a}\f$ is the height.<br>
61 : !> As the base length increases, the height (the density at any particular value within the distribution boundaries) decreases.<br>
62 : !> In terms of mean \f$\mu\f$ and variance \f$\sigma^{2}\f$ the probability density function of the continuous uniform distribution is,
63 : !> \f{equation}{
64 : !> f(x) =
65 : !> \begin{cases}
66 : !> \frac{1}{2\sigma\sqrt{3}} & \text{for} -\sigma\sqrt{3} \leq x - \mu \leq \sigma\sqrt{3} ~, \\
67 : !> 0 & \text{otherwise} ~.
68 : !> \end{cases}
69 : !> \f}
70 : !>
71 : !> **Cumulative distribution function (CDF)**<br>
72 : !>
73 : !> The **CDF** of the continuous uniform distribution is,<br>
74 : !> \f{equation}{
75 : !> F(x) =
76 : !> \begin{cases}
77 : !> 0 & \text{for} x < a ~,\\
78 : !> \frac{x - a}{b - a} & \text{for} a\leq x\leq b ~, \\
79 : !> 1 & \text{for} x > b ~.
80 : !> \end{cases}
81 : !> \f}
82 : !>
83 : !> In terms of mean \f$\mu\f$ and variance \f$\sigma^{2}\f$, the cumulative distribution function of the continuous uniform distribution is,
84 : !> \f{equation}{
85 : !> F(x) =
86 : !> \begin{cases}
87 : !> 0 & \text{for} x - \mu < -\sigma\sqrt{3} ~, \\
88 : !> \frac{1}{2}\left(\frac{x - \mu}{\sigma\sqrt{3}} + 1\right) & \text{for} -\sigma\sqrt{3} \leq x - \mu < \sigma\sqrt{3} ~, \\
89 : !> 1 & \text{for} x - \mu \geq \sigma\sqrt{3}
90 : !> \end{cases}
91 : !> \f}
92 : !>
93 : !> \note
94 : !> -# The procedures under the generic interface [getUnifCDF](@ref pm_distUnif::getUnifCDF) of this module
95 : !> are `elemental` functions that accept `optional` arguments of arbitrary ranks.<br>
96 : !> As such, the procedures offer great flexibility in coding.<br>
97 : !> However, the elemental nature of the procedures impacts their runtime performance negatively.<br>
98 : !> See the benchmarks below for more information.<br>
99 : !> -# The procedures under the generic interface [setUnifCDF](@ref pm_distUnif::setUnifCDF)
100 : !> are subroutines that accept a limited range of specific arguments ranks.<br>
101 : !> As such, they offer much better runtime performance compared to [getUnifCDF](@ref pm_distUnif::getUnifCDF)
102 : !> but have significantly less flexibility.<br>
103 : !> -# **Which procedures should I use?**<br>
104 : !> The `elemental` procedures appear to incur no performance penalty with scalar arguments.
105 : !> However, there appears to exist a runtime performance penalty of ~2-3 times more than the rank-specific
106 : !> routines for array arguments, comparable to 10-20 CPU cycles.<br>
107 : !> These penalties are due to the looping that occur in the `elemental` procedures for array arguments.<br>
108 : !> However, this `elemental` performance penalty is likely **insignificant** in most practical cases,
109 : !> unless the `elemental` procedures are to be called on the order of tens of billions of times in a program,
110 : !> in which, case, the over all performance penalty, as of 2022, appears to be on the order of a few minutes or less.<br>
111 : !> -# Note that the following benchmarks represent the worst case scenarios.<br>
112 : !> There may be situations where the compiler could inline the `elemental` procedures
113 : !> and remove the overhead of repeatedly calling the `elemental` function.
114 : !>
115 : !> **Inverse Cumulative distribution function (ICDF) or Quantile Function**<br>
116 : !>
117 : !> The Quantile function of continuous Uniform distribution is given by,
118 : !> \f{equation}{
119 : !> F^{-1}(p) = a + p(b - a) \quad \text{for} 0 < p < 1 ~.
120 : !> \f}
121 : !>
122 : !> In terms of mean \f$\mu\f$ and variance \f$\sigma^{2}\f$, the Quantile function of the continuous uniform distribution is,
123 : !> \f{equation}{
124 : !> F^{-1}(p) = \sigma\sqrt{3} (2p - 1) + \mu \quad \text{for} 0 \leq p \leq 1 ~.
125 : !> \f}
126 : !>
127 : !> **Random Number Generation (RNG)**<br>
128 : !>
129 : !> This module contains two generic functional and subroutine interfaces
130 : !> <ol>
131 : !> <li> [getUnifRand](@ref pm_distUnif::getUnifRand)
132 : !> <li> [setUnifRand](@ref pm_distUnif::setUnifRand)
133 : !> </ol>
134 : !> for generating uniformly distributed random values of all intrinsic types and kinds supported by
135 : !> the Fortran standard and the processor (`character`, `integer`, `logical`, `complex`, `real`).<br>
136 : !> The functional interface is merely a wrapper around the generic subroutine interface.<br>
137 : !>
138 : !> This module also contains four random number generator (RNG) algorithms that can be specified via the corresponding types,
139 : !> <ol>
140 : !> <li> [rngf_type](@ref pm_distUnif::rngf_type) (the default intrinsic Fortran uniform RNG via `random_number()`)
141 : !> <li> [splitmix64_type](@ref pm_distUnif::splitmix64_type)
142 : !> <li> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type)
143 : !> <li> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)
144 : !> </ol>
145 : !>
146 : !> <b>Usage</b><br>
147 : !> <ol>
148 : !> <li> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) is the recommended RNG for all serial and parallel tasks.<br>
149 : !> <li> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) is the recommended RNG for tasks
150 : !> that mostly require `logical` random values, although it can be used for random value generation of any type and kind.<br>
151 : !> <li> [splitmix64_type](@ref pm_distUnif::splitmix64_type) is the recommended RNG for initializing other RNGs
152 : !> or for simple serial tasks, although it can be used for random value generation of any type and kind.<br>
153 : !> <li> The default Fortran RNG [rngf_type](@ref pm_distUnif::rngf_type), although flexible to use and fast,
154 : !> will not generate deterministic results across different compilers.<br>
155 : !> </ol>
156 : !>
157 : !> \benchmarks
158 : !>
159 : !> \benchmark{getUnifCDF_vs_setUnifCDF_D0, The runtime performance of scalar [getUnifCDF](@ref pm_distUnif::getUnifCDF) vs. [setUnifCDF](@ref pm_distUnif::setUnifCDF) without bounds}
160 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0/main.F90
161 : !> \compilefb{getUnifCDF_vs_setUnifCDF_D0}
162 : !> \postprocb{getUnifCDF_vs_setUnifCDF_D0}
163 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0/main.py
164 : !> \visb{getUnifCDF_vs_setUnifCDF_D0}
165 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0/benchmark.getUnifCDF_vs_setUnifCDF_D0.runtime.png width=1000
166 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0/benchmark.getUnifCDF_vs_setUnifCDF_D0.runtime.ratio.png width=1000
167 : !> \moralb{getUnifCDF_vs_setUnifCDF_D0}
168 : !> -# The procedures under the generic interface [getUnifCDF](@ref pm_distUnif::getUnifCDF) are `elemental` functions with `optional` arguments.
169 : !> In the absence of the `optional` arguments, the default values are used, but the associated computations will be redundant.<br>
170 : !> As such, one expects the [getUnifCDF](@ref pm_distUnif::getUnifCDF) to perform less efficiently than
171 : !> the procedures under the generic interface [setUnifCDF](@ref pm_distUnif::setUnifCDF)
172 : !> which are rank-specific and carefully designed to avoid redundant computations.
173 : !>
174 : !> \benchmark{getUnifCDF_vs_setUnifCDF_D1, The runtime performance of array [getUnifCDF](@ref pm_distUnif::getUnifCDF) vs. [setUnifCDF](@ref pm_distUnif::setUnifCDF) without bounds}
175 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1/main.F90
176 : !> \compilefb{getUnifCDF_vs_setUnifCDF_D1}
177 : !> \postprocb{getUnifCDF_vs_setUnifCDF_D1}
178 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1/main.py
179 : !> \visb{getUnifCDF_vs_setUnifCDF_D1}
180 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1/benchmark.getUnifCDF_vs_setUnifCDF_D1.runtime.png width=1000
181 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1/benchmark.getUnifCDF_vs_setUnifCDF_D1.runtime.ratio.png width=1000
182 : !> \moralb{getUnifCDF_vs_setUnifCDF_D1}
183 : !> -# The procedures under the generic interface [getUnifCDF](@ref pm_distUnif::getUnifCDF) are `elemental` functions with `optional` arguments.<br>
184 : !> In the absence of the `optional` arguments, the default values are used, but the associated computations will be redundant.<br>
185 : !> Furthermore, `elemental` functions incur a performance penalty for input array arguments due to internal looping performed
186 : !> by the compiler to call the function repeatedly for different array elements.<br>
187 : !> As such, one expects the [getUnifCDF](@ref pm_distUnif::getUnifCDF) to perform less efficiently than
188 : !> the procedures under the generic interface [setUnifCDF](@ref pm_distUnif::setUnifCDF)
189 : !> which are rank-specific and carefully designed to avoid redundant computations.<br>
190 : !>
191 : !> \benchmark{getUnifCDF_vs_setUnifCDF_D0_D0, The runtime performance of scalar [getUnifCDF](@ref pm_distUnif::getUnifCDF) vs. [setUnifCDF](@ref pm_distUnif::setUnifCDF) with bounds}
192 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0_D0/main.F90
193 : !> \compilefb{getUnifCDF_vs_setUnifCDF_D0_D0}
194 : !> \postprocb{getUnifCDF_vs_setUnifCDF_D0_D0}
195 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0_D0/main.py
196 : !> \visb{getUnifCDF_vs_setUnifCDF_D0_D0}
197 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0_D0/benchmark.getUnifCDF_vs_setUnifCDF_D0_D0.runtime.png width=1000
198 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D0_D0/benchmark.getUnifCDF_vs_setUnifCDF_D0_D0.runtime.ratio.png width=1000
199 : !> \moralb{getUnifCDF_vs_setUnifCDF_D0_D0}
200 : !> -# The procedures under the generic interface [getUnifCDF](@ref pm_distUnif::getUnifCDF) are `elemental` functions with `optional` arguments.<br>
201 : !> In the presence of the `optional` arguments, the user-specified values are used.<br>
202 : !> Therefore, the costs of computations in [getUnifCDF](@ref pm_distUnif::getUnifCDF) are more comparable to
203 : !> the procedures under the generic interface [setUnifCDF](@ref pm_distUnif::setUnifCDF)
204 : !> which are rank-specific and carefully designed to avoid redundant computations.<br>
205 : !>
206 : !> \benchmark{getUnifCDF_vs_setUnifCDF_D1_D0, The runtime performance of array [getUnifCDF](@ref pm_distUnif::getUnifCDF) vs. [setUnifCDF](@ref pm_distUnif::setUnifCDF) with bounds}
207 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1_D0/main.F90
208 : !> \compilefb{getUnifCDF_vs_setUnifCDF_D1_D0}
209 : !> \postprocb{getUnifCDF_vs_setUnifCDF_D1_D0}
210 : !> \include{lineno} benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1_D0/main.py
211 : !> \visb{getUnifCDF_vs_setUnifCDF_D1_D0}
212 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1_D0/benchmark.getUnifCDF_vs_setUnifCDF_D1_D0.runtime.png width=1000
213 : !> \image html benchmark/pm_distUnif/getUnifCDF_vs_setUnifCDF_D1_D0/benchmark.getUnifCDF_vs_setUnifCDF_D1_D0.runtime.ratio.png width=1000
214 : !> \moralb{getUnifCDF_vs_setUnifCDF_D1_D0}
215 : !> -# The procedures under the generic interface [getUnifCDF](@ref pm_distUnif::getUnifCDF) are `elemental` functions with `optional` arguments.<br>
216 : !> In the presence of the `optional` arguments, the user-specified values are used.<br>
217 : !> Although the `elemental` functions incur a performance penalty for input array arguments due to internal looping performed
218 : !> by the compiler to call the function repeatedly for different array elements, the costs of computations in
219 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF) become more comparable to the procedures
220 : !> under the generic interface [setUnifCDF](@ref pm_distUnif::setUnifCDF) which
221 : !> are rank-specific and carefully designed to avoid redundant computations.<br>
222 : !>
223 : !> \benchmark{setUnifRand_vs_random_number, The runtime performance of [setUnifRand](@ref pm_distUnif::setUnifRand) vs. Fortran intrinsic `random_number()`.}
224 : !> \include{lineno} benchmark/pm_distUnif/setUnifRand_vs_random_number/main.F90
225 : !> \compilefb{setUnifRand_vs_random_number}
226 : !> \postprocb{setUnifRand_vs_random_number}
227 : !> \include{lineno} benchmark/pm_distUnif/setUnifRand_vs_random_number/main.py
228 : !> \visb{setUnifRand_vs_random_number}
229 : !> \image html benchmark/pm_distUnif/setUnifRand_vs_random_number/benchmark.setUnifRand_vs_random_number.runtime.png width=1000
230 : !> \image html benchmark/pm_distUnif/setUnifRand_vs_random_number/benchmark.setUnifRand_vs_random_number.runtime.ratio.png width=1000
231 : !> \moralb{setUnifRand_vs_random_number}
232 : !> -# The default RNG in the procedures under the generic interface [setUnifRand](@ref pm_distUnif::setUnifRand)
233 : !> are simply wrappers around the intrinsic random number generator of Fortran `random_number()`.<br>
234 : !> As such, [setUnifRand](@ref pm_distUnif::setUnifRand) for generating random real
235 : !> numbers has \f$\ms{5-10%}\f$ overhead with respect to the intrinsic `random_number()`.<br>
236 : !> Note Fortran does not have `integer`, `logical`, `complex`, or `character` uniform random RNG
237 : !> whereas [setUnifRand](@ref pm_distUnif::setUnifRand) provides a unified API for random numbers of all types.<br>
238 : !> -# The RNGX is an acronym for [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) in the procedures under the generic interface [setUnifRand](@ref pm_distUnif::setUnifRand).<br>
239 : !> This random number generator, although unsafe for cryptographic purposes, is quite competitive and performant, even compared to the intrinsic Fortran compiler RNGs.<br>
240 : !>
241 : !> \benchmark{splitmix64_type_vs_xoshiro256ss_type, The runtime performance of intrinsic `random_number()` vs. [splitmix64_type](@ref pm_distUnif::splitmix64_type) vs. [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).}
242 : !> \include{lineno} benchmark/pm_distUnif/splitmix64_type_vs_xoshiro256ss_type/main.F90
243 : !> \compilefb{splitmix64_type_vs_xoshiro256ss_type}
244 : !> \postprocb{splitmix64_type_vs_xoshiro256ss_type}
245 : !> \include{lineno} benchmark/pm_distUnif/splitmix64_type_vs_xoshiro256ss_type/main.py
246 : !> \visb{splitmix64_type_vs_xoshiro256ss_type}
247 : !> \image html benchmark/pm_distUnif/splitmix64_type_vs_xoshiro256ss_type/benchmark.splitmix64_type_vs_xoshiro256ss_type.runtime.png width=1000
248 : !> \image html benchmark/pm_distUnif/splitmix64_type_vs_xoshiro256ss_type/benchmark.splitmix64_type_vs_xoshiro256ss_type.runtime.ratio.png width=1000
249 : !> \moralb{splitmix64_type_vs_xoshiro256ss_type}
250 : !> -# The [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) RNG
251 : !> greedily attempts to use as many randomly generated bits as possible in the output random values.<br>
252 : !> -# The [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) RNG
253 : !> takes a wasteful approach of using at least one or more chunks of 64 randomly generated bits in the output random values.<br>
254 : !> -# This fundamental difference between the two RNG types generally leads to faster random logical value generations with
255 : !> the greedy approach, because 64bits chunks translate to 64 logical values without updating the RNG state.<br>
256 : !> -# However, the greedy approach leads to generally slower runtimes for real random value generation.<br>
257 : !> -# Both greedy and wasteful RNGs appear to be much faster than the ParaMonte
258 : !> library wrappers for the implementations offered by \gfortran and \ifort.<br>
259 : !> -# <b>Moral</b>: If your application requires many `logical` random number generation,
260 : !> use the greedy [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) RNG.<br>
261 : !> Conversely, if your application requires a mixture of random number generations of various types and kinds,
262 : !> use the wasteful [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) RNG.
263 : !>
264 : !> \test
265 : !> [test_pm_distUnif](@ref test_pm_distUnif)
266 : !>
267 : !> \finmain
268 : !>
269 : !> \author
270 : !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
271 :
272 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
273 :
274 : module pm_distUnif
275 :
276 : use pm_kind, only: SK, IK, LK, IK64
277 :
278 : implicit none
279 :
280 : !> \cond excluded
281 : !private :: setStateNext, setStateJump
282 : !> \endcond excluded
283 :
284 : character(*, SK), parameter :: MODULE_NAME = "@pm_distUnif"
285 :
286 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
287 :
288 : !> \brief
289 : !> Generate and return the Cumulative Distribution Function (CDF) of a univariate Standard Uniform distribution or a
290 : !> Uniform distribution with the specified support via `lower` and `upper` input arguments at the specified input values.
291 : !>
292 : !> \param[in] x : The input scalar or array of the same shape as other input array arguments, of either <br>
293 : !> <ol>
294 : !> <li> If `X` is `integer`, the discrete Uniform distribution CDF with support `[lower, upper]` will be returned.<br>
295 : !> <li> If `X` is `integer`, the output argument `CDF` must be of type `real` of kind \RK.<br>
296 : !> <li> If `X` is `real`, the continuous Uniform distribution CDF with support `[lower, upper]` will be returned.<br>
297 : !> <li> If `X` is `complex`, the two real and imaginary components of `CDF` will correspond to two independent distributions.<br>
298 : !> </ol>
299 : !> \param[in] lower : The input scalar or array of the same shape as other input array arguments, of the same type and kind as `X`,
300 : !> representing the lower bound of the Uniform distribution.<br>
301 : !> (**optional**, default = `0`. It must be present **if and only if** the input argument `upper` is also present.)
302 : !> \param[in] upper : The input scalar or array of the same shape as other input array arguments, of the same type and kind as `X`,
303 : !> representing the upper bound of the Uniform distribution.<br>
304 : !> (**optional**, default = `1`. It must be present **if and only if** the input argument `lower` is also present.)
305 : !>
306 : !> \return
307 : !> `cdf` : The output scalar or array of the same shape as the input array arguments, of either <br>
308 : !> <ol>
309 : !> <li> type `real` of default kind \RK (if the input value `x` is `integer` of kind \IKALL), or<br>
310 : !> <li> type `complex` of the same kind as `x` (if the input value `x` is of type `complex` of kind \CKALL), <br>
311 : !> <li> type `real` of the same kind as `x` (if the input value `x` is of type `real` of kind \RKALL), <br>
312 : !> </ol>
313 : !> containing the CDF of the specified discrete or continuous Uniform distribution.
314 : !>
315 : !> \interface{getUnifCDF}
316 : !> \code{.F90}
317 : !>
318 : !> use pm_distUnif, only: getUnifCDF
319 : !>
320 : !> cdf = getUnifCDF(x)
321 : !> cdf = getUnifCDF(x, lower, upper)
322 : !>
323 : !> \endcode
324 : !>
325 : !> \warnpure
326 : !>
327 : !> \elemental
328 : !>
329 : !> \see
330 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
331 : !>
332 : !> \example{getUnifCDF}
333 : !> \include{lineno} example/pm_distUnif/getUnifCDF/main.F90
334 : !> \compilef{getUnifCDF}
335 : !> \output{getUnifCDF}
336 : !> \include{lineno} example/pm_distUnif/getUnifCDF/main.out.F90
337 : !> \postproc{getUnifCDF}
338 : !> \include{lineno} example/pm_distUnif/getUnifCDF/main.py
339 : !> \vis{getUnifCDF}
340 : !> \image html pm_distUnif/getUnifCDF/getUnifCDF.IK.png width=700
341 : !> \image html pm_distUnif/getUnifCDF/getUnifCDF.RK.png width=700
342 : !> \image html pm_distUnif/getUnifCDF/getUnifCDF.CK.png width=700
343 : !>
344 : !> \test
345 : !> [test_pm_distUnif](@ref test_pm_distUnif)
346 : !>
347 : !> \todo
348 : !> \pmed This generic interface can be extended to input string arguments to make it compatible with [setUnifRand](@ref pm_distUnif::setUnifRand).
349 : !>
350 : !> \finmain{getUnifCDF}
351 : !>
352 : !> \author
353 : !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
354 :
355 : ! LU
356 :
357 : interface getUnifCDF
358 :
359 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
360 :
361 : #if IK5_ENABLED
362 : PURE elemental module function getUnifCDF_LU_IK5(x, lower, upper) result(cdf)
363 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
364 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_IK5
365 : #endif
366 : use pm_kind, only: IKC => IK5, RKC => RK
367 : integer(IKC), intent(in) :: x
368 : integer(IKC), intent(in) :: lower, upper
369 : real(RKC) :: cdf
370 : end function
371 : #endif
372 :
373 : #if IK4_ENABLED
374 : PURE elemental module function getUnifCDF_LU_IK4(x, lower, upper) result(cdf)
375 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
376 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_IK4
377 : #endif
378 : use pm_kind, only: IKC => IK4, RKC => RK
379 : integer(IKC), intent(in) :: x
380 : integer(IKC), intent(in) :: lower, upper
381 : real(RKC) :: cdf
382 : end function
383 : #endif
384 :
385 : #if IK3_ENABLED
386 : PURE elemental module function getUnifCDF_LU_IK3(x, lower, upper) result(cdf)
387 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
388 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_IK3
389 : #endif
390 : use pm_kind, only: IKC => IK3, RKC => RK
391 : integer(IKC), intent(in) :: x
392 : integer(IKC), intent(in) :: lower, upper
393 : real(RKC) :: cdf
394 : end function
395 : #endif
396 :
397 : #if IK2_ENABLED
398 : PURE elemental module function getUnifCDF_LU_IK2(x, lower, upper) result(cdf)
399 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
400 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_IK2
401 : #endif
402 : use pm_kind, only: IKC => IK2, RKC => RK
403 : integer(IKC), intent(in) :: x
404 : integer(IKC), intent(in) :: lower, upper
405 : real(RKC) :: cdf
406 : end function
407 : #endif
408 :
409 : #if IK1_ENABLED
410 : PURE elemental module function getUnifCDF_LU_IK1(x, lower, upper) result(cdf)
411 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
412 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_IK1
413 : #endif
414 : use pm_kind, only: IKC => IK1, RKC => RK
415 : integer(IKC), intent(in) :: x
416 : integer(IKC), intent(in) :: lower, upper
417 : real(RKC) :: cdf
418 : end function
419 : #endif
420 :
421 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
422 :
423 : #if CK5_ENABLED
424 : PURE elemental module function getUnifCDF_LU_CK5(x, lower, upper) result(cdf)
425 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
426 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_CK5
427 : #endif
428 : use pm_kind, only: CKC => CK5
429 : complex(CKC), intent(in) :: x
430 : complex(CKC), intent(in) :: lower, upper
431 : complex(CKC) :: cdf
432 : end function
433 : #endif
434 :
435 : #if CK4_ENABLED
436 : PURE elemental module function getUnifCDF_LU_CK4(x, lower, upper) result(cdf)
437 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
438 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_CK4
439 : #endif
440 : use pm_kind, only: CKC => CK4
441 : complex(CKC), intent(in) :: x
442 : complex(CKC), intent(in) :: lower, upper
443 : complex(CKC) :: cdf
444 : end function
445 : #endif
446 :
447 : #if CK3_ENABLED
448 : PURE elemental module function getUnifCDF_LU_CK3(x, lower, upper) result(cdf)
449 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
450 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_CK3
451 : #endif
452 : use pm_kind, only: CKC => CK3
453 : complex(CKC), intent(in) :: x
454 : complex(CKC), intent(in) :: lower, upper
455 : complex(CKC) :: cdf
456 : end function
457 : #endif
458 :
459 : #if CK2_ENABLED
460 : PURE elemental module function getUnifCDF_LU_CK2(x, lower, upper) result(cdf)
461 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
462 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_CK2
463 : #endif
464 : use pm_kind, only: CKC => CK2
465 : complex(CKC), intent(in) :: x
466 : complex(CKC), intent(in) :: lower, upper
467 : complex(CKC) :: cdf
468 : end function
469 : #endif
470 :
471 : #if CK1_ENABLED
472 : PURE elemental module function getUnifCDF_LU_CK1(x, lower, upper) result(cdf)
473 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
474 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_CK1
475 : #endif
476 : use pm_kind, only: CKC => CK1
477 : complex(CKC), intent(in) :: x
478 : complex(CKC), intent(in) :: lower, upper
479 : complex(CKC) :: cdf
480 : end function
481 : #endif
482 :
483 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
484 :
485 : #if RK5_ENABLED
486 : PURE elemental module function getUnifCDF_LU_RK5(x, lower, upper) result(cdf)
487 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
488 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_RK5
489 : #endif
490 : use pm_kind, only: RKC => RK5
491 : real(RKC) , intent(in) :: x
492 : real(RKC) , intent(in) :: lower, upper
493 : real(RKC) :: cdf
494 : end function
495 : #endif
496 :
497 : #if RK4_ENABLED
498 : PURE elemental module function getUnifCDF_LU_RK4(x, lower, upper) result(cdf)
499 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
500 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_RK4
501 : #endif
502 : use pm_kind, only: RKC => RK4
503 : real(RKC) , intent(in) :: x
504 : real(RKC) , intent(in) :: lower, upper
505 : real(RKC) :: cdf
506 : end function
507 : #endif
508 :
509 : #if RK3_ENABLED
510 : PURE elemental module function getUnifCDF_LU_RK3(x, lower, upper) result(cdf)
511 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
512 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_RK3
513 : #endif
514 : use pm_kind, only: RKC => RK3
515 : real(RKC) , intent(in) :: x
516 : real(RKC) , intent(in) :: lower, upper
517 : real(RKC) :: cdf
518 : end function
519 : #endif
520 :
521 : #if RK2_ENABLED
522 : PURE elemental module function getUnifCDF_LU_RK2(x, lower, upper) result(cdf)
523 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
524 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_RK2
525 : #endif
526 : use pm_kind, only: RKC => RK2
527 : real(RKC) , intent(in) :: x
528 : real(RKC) , intent(in) :: lower, upper
529 : real(RKC) :: cdf
530 : end function
531 : #endif
532 :
533 : #if RK1_ENABLED
534 : PURE elemental module function getUnifCDF_LU_RK1(x, lower, upper) result(cdf)
535 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
536 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_LU_RK1
537 : #endif
538 : use pm_kind, only: RKC => RK1
539 : real(RKC) , intent(in) :: x
540 : real(RKC) , intent(in) :: lower, upper
541 : real(RKC) :: cdf
542 : end function
543 : #endif
544 :
545 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
546 :
547 : end interface
548 :
549 : ! DD
550 :
551 : interface getUnifCDF
552 :
553 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554 :
555 : #if IK5_ENABLED
556 : PURE elemental module function getUnifCDF_DD_IK5(x) result(cdf)
557 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
558 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_IK5
559 : #endif
560 : use pm_kind, only: IKC => IK5, RKC => RK
561 : integer(IKC), intent(in) :: x
562 : real(RKC) :: cdf
563 : end function
564 : #endif
565 :
566 : #if IK4_ENABLED
567 : PURE elemental module function getUnifCDF_DD_IK4(x) result(cdf)
568 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
569 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_IK4
570 : #endif
571 : use pm_kind, only: IKC => IK4, RKC => RK
572 : integer(IKC), intent(in) :: x
573 : real(RKC) :: cdf
574 : end function
575 : #endif
576 :
577 : #if IK3_ENABLED
578 : PURE elemental module function getUnifCDF_DD_IK3(x) result(cdf)
579 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
580 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_IK3
581 : #endif
582 : use pm_kind, only: IKC => IK3, RKC => RK
583 : integer(IKC), intent(in) :: x
584 : real(RKC) :: cdf
585 : end function
586 : #endif
587 :
588 : #if IK2_ENABLED
589 : PURE elemental module function getUnifCDF_DD_IK2(x) result(cdf)
590 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
591 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_IK2
592 : #endif
593 : use pm_kind, only: IKC => IK2, RKC => RK
594 : integer(IKC), intent(in) :: x
595 : real(RKC) :: cdf
596 : end function
597 : #endif
598 :
599 : #if IK1_ENABLED
600 : PURE elemental module function getUnifCDF_DD_IK1(x) result(cdf)
601 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
602 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_IK1
603 : #endif
604 : use pm_kind, only: IKC => IK1, RKC => RK
605 : integer(IKC), intent(in) :: x
606 : real(RKC) :: cdf
607 : end function
608 : #endif
609 :
610 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
611 :
612 : #if CK5_ENABLED
613 : PURE elemental module function getUnifCDF_DD_CK5(x) result(cdf)
614 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
615 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_CK5
616 : #endif
617 : use pm_kind, only: CKC => CK5
618 : complex(CKC), intent(in) :: x
619 : complex(CKC) :: cdf
620 : end function
621 : #endif
622 :
623 : #if CK4_ENABLED
624 : PURE elemental module function getUnifCDF_DD_CK4(x) result(cdf)
625 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
626 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_CK4
627 : #endif
628 : use pm_kind, only: CKC => CK4
629 : complex(CKC), intent(in) :: x
630 : complex(CKC) :: cdf
631 : end function
632 : #endif
633 :
634 : #if CK3_ENABLED
635 : PURE elemental module function getUnifCDF_DD_CK3(x) result(cdf)
636 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
637 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_CK3
638 : #endif
639 : use pm_kind, only: CKC => CK3
640 : complex(CKC), intent(in) :: x
641 : complex(CKC) :: cdf
642 : end function
643 : #endif
644 :
645 : #if CK2_ENABLED
646 : PURE elemental module function getUnifCDF_DD_CK2(x) result(cdf)
647 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
648 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_CK2
649 : #endif
650 : use pm_kind, only: CKC => CK2
651 : complex(CKC), intent(in) :: x
652 : complex(CKC) :: cdf
653 : end function
654 : #endif
655 :
656 : #if CK1_ENABLED
657 : PURE elemental module function getUnifCDF_DD_CK1(x) result(cdf)
658 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
659 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_CK1
660 : #endif
661 : use pm_kind, only: CKC => CK1
662 : complex(CKC), intent(in) :: x
663 : complex(CKC) :: cdf
664 : end function
665 : #endif
666 :
667 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
668 :
669 : #if RK5_ENABLED
670 : PURE elemental module function getUnifCDF_DD_RK5(x) result(cdf)
671 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
672 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_RK5
673 : #endif
674 : use pm_kind, only: RKC => RK5
675 : real(RKC) , intent(in) :: x
676 : real(RKC) :: cdf
677 : end function
678 : #endif
679 :
680 : #if RK4_ENABLED
681 : PURE elemental module function getUnifCDF_DD_RK4(x) result(cdf)
682 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
683 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_RK4
684 : #endif
685 : use pm_kind, only: RKC => RK4
686 : real(RKC) , intent(in) :: x
687 : real(RKC) :: cdf
688 : end function
689 : #endif
690 :
691 : #if RK3_ENABLED
692 : PURE elemental module function getUnifCDF_DD_RK3(x) result(cdf)
693 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
694 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_RK3
695 : #endif
696 : use pm_kind, only: RKC => RK3
697 : real(RKC) , intent(in) :: x
698 : real(RKC) :: cdf
699 : end function
700 : #endif
701 :
702 : #if RK2_ENABLED
703 : PURE elemental module function getUnifCDF_DD_RK2(x) result(cdf)
704 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
705 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_RK2
706 : #endif
707 : use pm_kind, only: RKC => RK2
708 : real(RKC) , intent(in) :: x
709 : real(RKC) :: cdf
710 : end function
711 : #endif
712 :
713 : #if RK1_ENABLED
714 : PURE elemental module function getUnifCDF_DD_RK1(x) result(cdf)
715 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
716 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCDF_DD_RK1
717 : #endif
718 : use pm_kind, only: RKC => RK1
719 : real(RKC) , intent(in) :: x
720 : real(RKC) :: cdf
721 : end function
722 : #endif
723 :
724 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
725 :
726 : end interface
727 :
728 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
729 :
730 : !> \brief
731 : !> Return the Cumulative Distribution Function (CDF) of a univariate Standard Uniform distribution or a Uniform distribution
732 : !> with the specified support via `lower` and `upper` input arguments at the specified input values.
733 : !>
734 : !> \param[out] cdf : The output scalar or `contiguous` array of rank `1` of either <br>
735 : !> <ol>
736 : !> <li> type `complex` of kind \CKALL (if the input value `X` is of type `complex`) or, <br>
737 : !> <li> type `real` of kind \RKALL (if the input value `X` is of type `integer` or `real`), <br>
738 : !> </ol>
739 : !> containing the CDF of the specified discrete or continuous Uniform distribution.
740 : !> \param[in] X : The input scalar or `contiguous` array of the same shape as `cdf`, containing the values at which the CDF must be computed.<br>
741 : !> If `X` is of type `integer`, the CDF of the discrete Uniform distribution with support `[lower, upper]` will be returned.<br>
742 : !> If `X` is of type `integer`, the output argument `CDF` must be of type `real` of kind \RKALL.<br>
743 : !> If `X` is of type `real`, the output argument `CDF` must have the same type, kind, and rank as `X`,
744 : !> and will contain the CDF of the continuous Uniform distribution with support `[lower, upper)`.<br>
745 : !> If `X` is of type `complex`, the output argument `CDF` must have the same type, kind, and rank as `X`.<br>
746 : !> If `X` is of type `complex`, the two real and imaginary components of `CDF` will correspond to two independent distributions.<br>
747 : !> \param[in] lower : The input scalar of the same type and kind as `X`, representing the lower bound of the Uniform distribution.<br>
748 : !> (**optional**, default = `0`. If present, then `upper` must also be present.)
749 : !> \param[in] upper : The input scalar of the same type and kind as `X`, representing the upper bound of the Uniform distribution.<br>
750 : !> (**optional**, default = `1`. If present, then `lower` must also be present.)
751 : !>
752 : !> \interface{setUnifCDF}
753 : !> \code{.F90}
754 : !>
755 : !> use pm_distUnif, only: setUnifCDF
756 : !>
757 : !> call setUnifCDF(cdf, X)
758 : !> call setUnifCDF(cdf, X, lower, upper)
759 : !>
760 : !> \endcode
761 : !>
762 : !> \warnpure
763 : !>
764 : !> \elemental
765 : !>
766 : !> \see
767 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
768 : !>
769 : !> \example{setUnifCDF}
770 : !> \include{lineno} example/pm_distUnif/setUnifCDF/main.F90
771 : !> \compilef{setUnifCDF}
772 : !> \output{setUnifCDF}
773 : !> \include{lineno} example/pm_distUnif/setUnifCDF/main.out.F90
774 : !> \postproc{setUnifCDF}
775 : !> \include{lineno} example/pm_distUnif/setUnifCDF/main.py
776 : !> \vis{setUnifCDF}
777 : !> \image html pm_distUnif/setUnifCDF/setUnifCDF.IK.png width=700
778 : !> \image html pm_distUnif/setUnifCDF/setUnifCDF.RK.png width=700
779 : !> \image html pm_distUnif/setUnifCDF/setUnifCDF.CK.png width=700
780 : !>
781 : !> \test
782 : !> [test_pm_distUnif](@ref test_pm_distUnif)
783 : !>
784 : !> \todo
785 : !> \plow This generic interface can be extended to input arguments with ranks higher than `1`.
786 : !>
787 : !> \todo
788 : !> \pmed This generic interface can be extended to input string arguments to make it compatible with [setUnifRand](@ref pm_distUnif::setUnifRand).
789 : !>
790 : !> \finmain{setUnifCDF}
791 : !>
792 : !> \author
793 : !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
794 :
795 : ! default range.
796 :
797 : interface setUnifCDF
798 :
799 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
800 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
801 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
802 :
803 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
804 :
805 : #if RK5_ENABLED && IK5_ENABLED
806 : PURE module subroutine setUnifCDF_DD_D0_RK5_IK5(cdf, x)
807 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
808 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5_IK5
809 : #endif
810 : use pm_kind, only: IKC => IK5, RKC => RK5
811 : real(RKC) , intent(out) :: cdf
812 : integer(IKC), intent(in) :: x
813 : end subroutine
814 : #endif
815 :
816 : #if RK4_ENABLED && IK5_ENABLED
817 : PURE module subroutine setUnifCDF_DD_D0_RK4_IK5(cdf, x)
818 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
819 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4_IK5
820 : #endif
821 : use pm_kind, only: IKC => IK5, RKC => RK4
822 : real(RKC) , intent(out) :: cdf
823 : integer(IKC), intent(in) :: x
824 : end subroutine
825 : #endif
826 :
827 : #if RK3_ENABLED && IK5_ENABLED
828 : PURE module subroutine setUnifCDF_DD_D0_RK3_IK5(cdf, x)
829 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
830 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3_IK5
831 : #endif
832 : use pm_kind, only: IKC => IK5, RKC => RK3
833 : real(RKC) , intent(out) :: cdf
834 : integer(IKC), intent(in) :: x
835 : end subroutine
836 : #endif
837 :
838 : #if RK2_ENABLED && IK5_ENABLED
839 : PURE module subroutine setUnifCDF_DD_D0_RK2_IK5(cdf, x)
840 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
841 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2_IK5
842 : #endif
843 : use pm_kind, only: IKC => IK5, RKC => RK2
844 : real(RKC) , intent(out) :: cdf
845 : integer(IKC), intent(in) :: x
846 : end subroutine
847 : #endif
848 :
849 : #if RK1_ENABLED && IK5_ENABLED
850 : PURE module subroutine setUnifCDF_DD_D0_RK1_IK5(cdf, x)
851 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
852 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1_IK5
853 : #endif
854 : use pm_kind, only: IKC => IK5, RKC => RK1
855 : real(RKC) , intent(out) :: cdf
856 : integer(IKC), intent(in) :: x
857 : end subroutine
858 : #endif
859 :
860 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
861 :
862 : #if RK5_ENABLED && IK4_ENABLED
863 : PURE module subroutine setUnifCDF_DD_D0_RK5_IK4(cdf, x)
864 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
865 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5_IK4
866 : #endif
867 : use pm_kind, only: IKC => IK4, RKC => RK5
868 : real(RKC) , intent(out) :: cdf
869 : integer(IKC), intent(in) :: x
870 : end subroutine
871 : #endif
872 :
873 : #if RK4_ENABLED && IK4_ENABLED
874 : PURE module subroutine setUnifCDF_DD_D0_RK4_IK4(cdf, x)
875 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
876 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4_IK4
877 : #endif
878 : use pm_kind, only: IKC => IK4, RKC => RK4
879 : real(RKC) , intent(out) :: cdf
880 : integer(IKC), intent(in) :: x
881 : end subroutine
882 : #endif
883 :
884 : #if RK3_ENABLED && IK4_ENABLED
885 : PURE module subroutine setUnifCDF_DD_D0_RK3_IK4(cdf, x)
886 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
887 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3_IK4
888 : #endif
889 : use pm_kind, only: IKC => IK4, RKC => RK3
890 : real(RKC) , intent(out) :: cdf
891 : integer(IKC), intent(in) :: x
892 : end subroutine
893 : #endif
894 :
895 : #if RK2_ENABLED && IK4_ENABLED
896 : PURE module subroutine setUnifCDF_DD_D0_RK2_IK4(cdf, x)
897 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
898 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2_IK4
899 : #endif
900 : use pm_kind, only: IKC => IK4, RKC => RK2
901 : real(RKC) , intent(out) :: cdf
902 : integer(IKC), intent(in) :: x
903 : end subroutine
904 : #endif
905 :
906 : #if RK1_ENABLED && IK4_ENABLED
907 : PURE module subroutine setUnifCDF_DD_D0_RK1_IK4(cdf, x)
908 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
909 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1_IK4
910 : #endif
911 : use pm_kind, only: IKC => IK4, RKC => RK1
912 : real(RKC) , intent(out) :: cdf
913 : integer(IKC), intent(in) :: x
914 : end subroutine
915 : #endif
916 :
917 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
918 :
919 : #if RK5_ENABLED && IK3_ENABLED
920 : PURE module subroutine setUnifCDF_DD_D0_RK5_IK3(cdf, x)
921 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
922 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5_IK3
923 : #endif
924 : use pm_kind, only: IKC => IK3, RKC => RK5
925 : real(RKC) , intent(out) :: cdf
926 : integer(IKC), intent(in) :: x
927 : end subroutine
928 : #endif
929 :
930 : #if RK4_ENABLED && IK3_ENABLED
931 : PURE module subroutine setUnifCDF_DD_D0_RK4_IK3(cdf, x)
932 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
933 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4_IK3
934 : #endif
935 : use pm_kind, only: IKC => IK3, RKC => RK4
936 : real(RKC) , intent(out) :: cdf
937 : integer(IKC), intent(in) :: x
938 : end subroutine
939 : #endif
940 :
941 : #if RK3_ENABLED && IK3_ENABLED
942 : PURE module subroutine setUnifCDF_DD_D0_RK3_IK3(cdf, x)
943 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
944 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3_IK3
945 : #endif
946 : use pm_kind, only: IKC => IK3, RKC => RK3
947 : real(RKC) , intent(out) :: cdf
948 : integer(IKC), intent(in) :: x
949 : end subroutine
950 : #endif
951 :
952 : #if RK2_ENABLED && IK3_ENABLED
953 : PURE module subroutine setUnifCDF_DD_D0_RK2_IK3(cdf, x)
954 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
955 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2_IK3
956 : #endif
957 : use pm_kind, only: IKC => IK3, RKC => RK2
958 : real(RKC) , intent(out) :: cdf
959 : integer(IKC), intent(in) :: x
960 : end subroutine
961 : #endif
962 :
963 : #if RK1_ENABLED && IK3_ENABLED
964 : PURE module subroutine setUnifCDF_DD_D0_RK1_IK3(cdf, x)
965 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
966 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1_IK3
967 : #endif
968 : use pm_kind, only: IKC => IK3, RKC => RK1
969 : real(RKC) , intent(out) :: cdf
970 : integer(IKC), intent(in) :: x
971 : end subroutine
972 : #endif
973 :
974 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
975 :
976 : #if RK5_ENABLED && IK2_ENABLED
977 : PURE module subroutine setUnifCDF_DD_D0_RK5_IK2(cdf, x)
978 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
979 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5_IK2
980 : #endif
981 : use pm_kind, only: IKC => IK2, RKC => RK5
982 : real(RKC) , intent(out) :: cdf
983 : integer(IKC), intent(in) :: x
984 : end subroutine
985 : #endif
986 :
987 : #if RK4_ENABLED && IK2_ENABLED
988 : PURE module subroutine setUnifCDF_DD_D0_RK4_IK2(cdf, x)
989 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
990 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4_IK2
991 : #endif
992 : use pm_kind, only: IKC => IK2, RKC => RK4
993 : real(RKC) , intent(out) :: cdf
994 : integer(IKC), intent(in) :: x
995 : end subroutine
996 : #endif
997 :
998 : #if RK3_ENABLED && IK2_ENABLED
999 : PURE module subroutine setUnifCDF_DD_D0_RK3_IK2(cdf, x)
1000 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1001 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3_IK2
1002 : #endif
1003 : use pm_kind, only: IKC => IK2, RKC => RK3
1004 : real(RKC) , intent(out) :: cdf
1005 : integer(IKC), intent(in) :: x
1006 : end subroutine
1007 : #endif
1008 :
1009 : #if RK2_ENABLED && IK2_ENABLED
1010 : PURE module subroutine setUnifCDF_DD_D0_RK2_IK2(cdf, x)
1011 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1012 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2_IK2
1013 : #endif
1014 : use pm_kind, only: IKC => IK2, RKC => RK2
1015 : real(RKC) , intent(out) :: cdf
1016 : integer(IKC), intent(in) :: x
1017 : end subroutine
1018 : #endif
1019 :
1020 : #if RK1_ENABLED && IK2_ENABLED
1021 : PURE module subroutine setUnifCDF_DD_D0_RK1_IK2(cdf, x)
1022 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1023 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1_IK2
1024 : #endif
1025 : use pm_kind, only: IKC => IK2, RKC => RK1
1026 : real(RKC) , intent(out) :: cdf
1027 : integer(IKC), intent(in) :: x
1028 : end subroutine
1029 : #endif
1030 :
1031 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1032 :
1033 : #if RK5_ENABLED && IK1_ENABLED
1034 : PURE module subroutine setUnifCDF_DD_D0_RK5_IK1(cdf, x)
1035 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1036 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5_IK1
1037 : #endif
1038 : use pm_kind, only: IKC => IK1, RKC => RK5
1039 : real(RKC) , intent(out) :: cdf
1040 : integer(IKC), intent(in) :: x
1041 : end subroutine
1042 : #endif
1043 :
1044 : #if RK4_ENABLED && IK1_ENABLED
1045 : PURE module subroutine setUnifCDF_DD_D0_RK4_IK1(cdf, x)
1046 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1047 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4_IK1
1048 : #endif
1049 : use pm_kind, only: IKC => IK1, RKC => RK4
1050 : real(RKC) , intent(out) :: cdf
1051 : integer(IKC), intent(in) :: x
1052 : end subroutine
1053 : #endif
1054 :
1055 : #if RK3_ENABLED && IK1_ENABLED
1056 : PURE module subroutine setUnifCDF_DD_D0_RK3_IK1(cdf, x)
1057 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1058 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3_IK1
1059 : #endif
1060 : use pm_kind, only: IKC => IK1, RKC => RK3
1061 : real(RKC) , intent(out) :: cdf
1062 : integer(IKC), intent(in) :: x
1063 : end subroutine
1064 : #endif
1065 :
1066 : #if RK2_ENABLED && IK1_ENABLED
1067 : PURE module subroutine setUnifCDF_DD_D0_RK2_IK1(cdf, x)
1068 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1069 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2_IK1
1070 : #endif
1071 : use pm_kind, only: IKC => IK1, RKC => RK2
1072 : real(RKC) , intent(out) :: cdf
1073 : integer(IKC), intent(in) :: x
1074 : end subroutine
1075 : #endif
1076 :
1077 : #if RK1_ENABLED && IK1_ENABLED
1078 : PURE module subroutine setUnifCDF_DD_D0_RK1_IK1(cdf, x)
1079 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1080 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1_IK1
1081 : #endif
1082 : use pm_kind, only: IKC => IK1, RKC => RK1
1083 : real(RKC) , intent(out) :: cdf
1084 : integer(IKC), intent(in) :: x
1085 : end subroutine
1086 : #endif
1087 :
1088 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1089 :
1090 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1091 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1092 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1093 :
1094 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1095 :
1096 : #if CK5_ENABLED
1097 : PURE module subroutine setUnifCDF_DD_D0_CK5(cdf, x)
1098 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1099 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_CK5
1100 : #endif
1101 : use pm_kind, only: CKC => CK5
1102 : complex(CKC), intent(out) :: cdf
1103 : complex(CKC), intent(in) :: x
1104 : end subroutine
1105 : #endif
1106 :
1107 : #if CK4_ENABLED
1108 : PURE module subroutine setUnifCDF_DD_D0_CK4(cdf, x)
1109 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1110 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_CK4
1111 : #endif
1112 : use pm_kind, only: CKC => CK4
1113 : complex(CKC), intent(out) :: cdf
1114 : complex(CKC), intent(in) :: x
1115 : end subroutine
1116 : #endif
1117 :
1118 : #if CK3_ENABLED
1119 : PURE module subroutine setUnifCDF_DD_D0_CK3(cdf, x)
1120 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1121 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_CK3
1122 : #endif
1123 : use pm_kind, only: CKC => CK3
1124 : complex(CKC), intent(out) :: cdf
1125 : complex(CKC), intent(in) :: x
1126 : end subroutine
1127 : #endif
1128 :
1129 : #if CK2_ENABLED
1130 : PURE module subroutine setUnifCDF_DD_D0_CK2(cdf, x)
1131 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1132 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_CK2
1133 : #endif
1134 : use pm_kind, only: CKC => CK2
1135 : complex(CKC), intent(out) :: cdf
1136 : complex(CKC), intent(in) :: x
1137 : end subroutine
1138 : #endif
1139 :
1140 : #if CK1_ENABLED
1141 : PURE module subroutine setUnifCDF_DD_D0_CK1(cdf, x)
1142 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1143 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_CK1
1144 : #endif
1145 : use pm_kind, only: CKC => CK1
1146 : complex(CKC), intent(out) :: cdf
1147 : complex(CKC), intent(in) :: x
1148 : end subroutine
1149 : #endif
1150 :
1151 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1152 :
1153 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1154 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1155 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1156 :
1157 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1158 :
1159 : #if RK5_ENABLED
1160 : PURE module subroutine setUnifCDF_DD_D0_RK5(cdf, x)
1161 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1162 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK5
1163 : #endif
1164 : use pm_kind, only: RKC => RK5
1165 : real(RKC) , intent(out) :: cdf
1166 : real(RKC) , intent(in) :: x
1167 : end subroutine
1168 : #endif
1169 :
1170 : #if RK4_ENABLED
1171 : PURE module subroutine setUnifCDF_DD_D0_RK4(cdf, x)
1172 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1173 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK4
1174 : #endif
1175 : use pm_kind, only: RKC => RK4
1176 : real(RKC) , intent(out) :: cdf
1177 : real(RKC) , intent(in) :: x
1178 : end subroutine
1179 : #endif
1180 :
1181 : #if RK3_ENABLED
1182 : PURE module subroutine setUnifCDF_DD_D0_RK3(cdf, x)
1183 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1184 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK3
1185 : #endif
1186 : use pm_kind, only: RKC => RK3
1187 : real(RKC) , intent(out) :: cdf
1188 : real(RKC) , intent(in) :: x
1189 : end subroutine
1190 : #endif
1191 :
1192 : #if RK2_ENABLED
1193 : PURE module subroutine setUnifCDF_DD_D0_RK2(cdf, x)
1194 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1195 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK2
1196 : #endif
1197 : use pm_kind, only: RKC => RK2
1198 : real(RKC) , intent(out) :: cdf
1199 : real(RKC) , intent(in) :: x
1200 : end subroutine
1201 : #endif
1202 :
1203 : #if RK1_ENABLED
1204 : PURE module subroutine setUnifCDF_DD_D0_RK1(cdf, x)
1205 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1206 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D0_RK1
1207 : #endif
1208 : use pm_kind, only: RKC => RK1
1209 : real(RKC) , intent(out) :: cdf
1210 : real(RKC) , intent(in) :: x
1211 : end subroutine
1212 : #endif
1213 :
1214 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1215 :
1216 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1217 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1218 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1219 :
1220 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1221 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1222 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1223 :
1224 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1225 :
1226 : #if RK5_ENABLED && IK5_ENABLED
1227 : PURE module subroutine setUnifCDF_DD_D1_RK5_IK5(cdf, X)
1228 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1229 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5_IK5
1230 : #endif
1231 : use pm_kind, only: IKC => IK5, RKC => RK5
1232 : real(RKC) , intent(out) , contiguous :: cdf(:)
1233 : integer(IKC), intent(in) , contiguous :: X(:)
1234 : end subroutine
1235 : #endif
1236 :
1237 : #if RK4_ENABLED && IK5_ENABLED
1238 : PURE module subroutine setUnifCDF_DD_D1_RK4_IK5(cdf, X)
1239 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1240 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4_IK5
1241 : #endif
1242 : use pm_kind, only: IKC => IK5, RKC => RK4
1243 : real(RKC) , intent(out) , contiguous :: cdf(:)
1244 : integer(IKC), intent(in) , contiguous :: X(:)
1245 : end subroutine
1246 : #endif
1247 :
1248 : #if RK3_ENABLED && IK5_ENABLED
1249 : PURE module subroutine setUnifCDF_DD_D1_RK3_IK5(cdf, X)
1250 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1251 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3_IK5
1252 : #endif
1253 : use pm_kind, only: IKC => IK5, RKC => RK3
1254 : real(RKC) , intent(out) , contiguous :: cdf(:)
1255 : integer(IKC), intent(in) , contiguous :: X(:)
1256 : end subroutine
1257 : #endif
1258 :
1259 : #if RK2_ENABLED && IK5_ENABLED
1260 : PURE module subroutine setUnifCDF_DD_D1_RK2_IK5(cdf, X)
1261 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1262 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2_IK5
1263 : #endif
1264 : use pm_kind, only: IKC => IK5, RKC => RK2
1265 : real(RKC) , intent(out) , contiguous :: cdf(:)
1266 : integer(IKC), intent(in) , contiguous :: X(:)
1267 : end subroutine
1268 : #endif
1269 :
1270 : #if RK1_ENABLED && IK5_ENABLED
1271 : PURE module subroutine setUnifCDF_DD_D1_RK1_IK5(cdf, X)
1272 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1273 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1_IK5
1274 : #endif
1275 : use pm_kind, only: IKC => IK5, RKC => RK1
1276 : real(RKC) , intent(out) , contiguous :: cdf(:)
1277 : integer(IKC), intent(in) , contiguous :: X(:)
1278 : end subroutine
1279 : #endif
1280 :
1281 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1282 :
1283 : #if RK5_ENABLED && IK4_ENABLED
1284 : PURE module subroutine setUnifCDF_DD_D1_RK5_IK4(cdf, X)
1285 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1286 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5_IK4
1287 : #endif
1288 : use pm_kind, only: IKC => IK4, RKC => RK5
1289 : real(RKC) , intent(out) , contiguous :: cdf(:)
1290 : integer(IKC), intent(in) , contiguous :: X(:)
1291 : end subroutine
1292 : #endif
1293 :
1294 : #if RK4_ENABLED && IK4_ENABLED
1295 : PURE module subroutine setUnifCDF_DD_D1_RK4_IK4(cdf, X)
1296 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1297 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4_IK4
1298 : #endif
1299 : use pm_kind, only: IKC => IK4, RKC => RK4
1300 : real(RKC) , intent(out) , contiguous :: cdf(:)
1301 : integer(IKC), intent(in) , contiguous :: X(:)
1302 : end subroutine
1303 : #endif
1304 :
1305 : #if RK3_ENABLED && IK4_ENABLED
1306 : PURE module subroutine setUnifCDF_DD_D1_RK3_IK4(cdf, X)
1307 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1308 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3_IK4
1309 : #endif
1310 : use pm_kind, only: IKC => IK4, RKC => RK3
1311 : real(RKC) , intent(out) , contiguous :: cdf(:)
1312 : integer(IKC), intent(in) , contiguous :: X(:)
1313 : end subroutine
1314 : #endif
1315 :
1316 : #if RK2_ENABLED && IK4_ENABLED
1317 : PURE module subroutine setUnifCDF_DD_D1_RK2_IK4(cdf, X)
1318 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1319 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2_IK4
1320 : #endif
1321 : use pm_kind, only: IKC => IK4, RKC => RK2
1322 : real(RKC) , intent(out) , contiguous :: cdf(:)
1323 : integer(IKC), intent(in) , contiguous :: X(:)
1324 : end subroutine
1325 : #endif
1326 :
1327 : #if RK1_ENABLED && IK4_ENABLED
1328 : PURE module subroutine setUnifCDF_DD_D1_RK1_IK4(cdf, X)
1329 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1330 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1_IK4
1331 : #endif
1332 : use pm_kind, only: IKC => IK4, RKC => RK1
1333 : real(RKC) , intent(out) , contiguous :: cdf(:)
1334 : integer(IKC), intent(in) , contiguous :: X(:)
1335 : end subroutine
1336 : #endif
1337 :
1338 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1339 :
1340 : #if RK5_ENABLED && IK3_ENABLED
1341 : PURE module subroutine setUnifCDF_DD_D1_RK5_IK3(cdf, X)
1342 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1343 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5_IK3
1344 : #endif
1345 : use pm_kind, only: IKC => IK3, RKC => RK5
1346 : real(RKC) , intent(out) , contiguous :: cdf(:)
1347 : integer(IKC), intent(in) , contiguous :: X(:)
1348 : end subroutine
1349 : #endif
1350 :
1351 : #if RK4_ENABLED && IK3_ENABLED
1352 : PURE module subroutine setUnifCDF_DD_D1_RK4_IK3(cdf, X)
1353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1354 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4_IK3
1355 : #endif
1356 : use pm_kind, only: IKC => IK3, RKC => RK4
1357 : real(RKC) , intent(out) , contiguous :: cdf(:)
1358 : integer(IKC), intent(in) , contiguous :: X(:)
1359 : end subroutine
1360 : #endif
1361 :
1362 : #if RK3_ENABLED && IK3_ENABLED
1363 : PURE module subroutine setUnifCDF_DD_D1_RK3_IK3(cdf, X)
1364 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1365 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3_IK3
1366 : #endif
1367 : use pm_kind, only: IKC => IK3, RKC => RK3
1368 : real(RKC) , intent(out) , contiguous :: cdf(:)
1369 : integer(IKC), intent(in) , contiguous :: X(:)
1370 : end subroutine
1371 : #endif
1372 :
1373 : #if RK2_ENABLED && IK3_ENABLED
1374 : PURE module subroutine setUnifCDF_DD_D1_RK2_IK3(cdf, X)
1375 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1376 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2_IK3
1377 : #endif
1378 : use pm_kind, only: IKC => IK3, RKC => RK2
1379 : real(RKC) , intent(out) , contiguous :: cdf(:)
1380 : integer(IKC), intent(in) , contiguous :: X(:)
1381 : end subroutine
1382 : #endif
1383 :
1384 : #if RK1_ENABLED && IK3_ENABLED
1385 : PURE module subroutine setUnifCDF_DD_D1_RK1_IK3(cdf, X)
1386 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1387 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1_IK3
1388 : #endif
1389 : use pm_kind, only: IKC => IK3, RKC => RK1
1390 : real(RKC) , intent(out) , contiguous :: cdf(:)
1391 : integer(IKC), intent(in) , contiguous :: X(:)
1392 : end subroutine
1393 : #endif
1394 :
1395 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1396 :
1397 : #if RK5_ENABLED && IK2_ENABLED
1398 : PURE module subroutine setUnifCDF_DD_D1_RK5_IK2(cdf, X)
1399 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1400 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5_IK2
1401 : #endif
1402 : use pm_kind, only: IKC => IK2, RKC => RK5
1403 : real(RKC) , intent(out) , contiguous :: cdf(:)
1404 : integer(IKC), intent(in) , contiguous :: X(:)
1405 : end subroutine
1406 : #endif
1407 :
1408 : #if RK4_ENABLED && IK2_ENABLED
1409 : PURE module subroutine setUnifCDF_DD_D1_RK4_IK2(cdf, X)
1410 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1411 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4_IK2
1412 : #endif
1413 : use pm_kind, only: IKC => IK2, RKC => RK4
1414 : real(RKC) , intent(out) , contiguous :: cdf(:)
1415 : integer(IKC), intent(in) , contiguous :: X(:)
1416 : end subroutine
1417 : #endif
1418 :
1419 : #if RK3_ENABLED && IK2_ENABLED
1420 : PURE module subroutine setUnifCDF_DD_D1_RK3_IK2(cdf, X)
1421 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1422 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3_IK2
1423 : #endif
1424 : use pm_kind, only: IKC => IK2, RKC => RK3
1425 : real(RKC) , intent(out) , contiguous :: cdf(:)
1426 : integer(IKC), intent(in) , contiguous :: X(:)
1427 : end subroutine
1428 : #endif
1429 :
1430 : #if RK2_ENABLED && IK2_ENABLED
1431 : PURE module subroutine setUnifCDF_DD_D1_RK2_IK2(cdf, X)
1432 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1433 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2_IK2
1434 : #endif
1435 : use pm_kind, only: IKC => IK2, RKC => RK2
1436 : real(RKC) , intent(out) , contiguous :: cdf(:)
1437 : integer(IKC), intent(in) , contiguous :: X(:)
1438 : end subroutine
1439 : #endif
1440 :
1441 : #if RK1_ENABLED && IK2_ENABLED
1442 : PURE module subroutine setUnifCDF_DD_D1_RK1_IK2(cdf, X)
1443 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1444 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1_IK2
1445 : #endif
1446 : use pm_kind, only: IKC => IK2, RKC => RK1
1447 : real(RKC) , intent(out) , contiguous :: cdf(:)
1448 : integer(IKC), intent(in) , contiguous :: X(:)
1449 : end subroutine
1450 : #endif
1451 :
1452 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1453 :
1454 : #if RK5_ENABLED && IK1_ENABLED
1455 : PURE module subroutine setUnifCDF_DD_D1_RK5_IK1(cdf, X)
1456 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1457 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5_IK1
1458 : #endif
1459 : use pm_kind, only: IKC => IK1, RKC => RK5
1460 : real(RKC) , intent(out) , contiguous :: cdf(:)
1461 : integer(IKC), intent(in) , contiguous :: X(:)
1462 : end subroutine
1463 : #endif
1464 :
1465 : #if RK4_ENABLED && IK1_ENABLED
1466 : PURE module subroutine setUnifCDF_DD_D1_RK4_IK1(cdf, X)
1467 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1468 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4_IK1
1469 : #endif
1470 : use pm_kind, only: IKC => IK1, RKC => RK4
1471 : real(RKC) , intent(out) , contiguous :: cdf(:)
1472 : integer(IKC), intent(in) , contiguous :: X(:)
1473 : end subroutine
1474 : #endif
1475 :
1476 : #if RK3_ENABLED && IK1_ENABLED
1477 : PURE module subroutine setUnifCDF_DD_D1_RK3_IK1(cdf, X)
1478 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1479 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3_IK1
1480 : #endif
1481 : use pm_kind, only: IKC => IK1, RKC => RK3
1482 : real(RKC) , intent(out) , contiguous :: cdf(:)
1483 : integer(IKC), intent(in) , contiguous :: X(:)
1484 : end subroutine
1485 : #endif
1486 :
1487 : #if RK2_ENABLED && IK1_ENABLED
1488 : PURE module subroutine setUnifCDF_DD_D1_RK2_IK1(cdf, X)
1489 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1490 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2_IK1
1491 : #endif
1492 : use pm_kind, only: IKC => IK1, RKC => RK2
1493 : real(RKC) , intent(out) , contiguous :: cdf(:)
1494 : integer(IKC), intent(in) , contiguous :: X(:)
1495 : end subroutine
1496 : #endif
1497 :
1498 : #if RK1_ENABLED && IK1_ENABLED
1499 : PURE module subroutine setUnifCDF_DD_D1_RK1_IK1(cdf, X)
1500 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1501 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1_IK1
1502 : #endif
1503 : use pm_kind, only: IKC => IK1, RKC => RK1
1504 : real(RKC) , intent(out) , contiguous :: cdf(:)
1505 : integer(IKC), intent(in) , contiguous :: X(:)
1506 : end subroutine
1507 : #endif
1508 :
1509 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1510 :
1511 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1512 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1513 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1514 :
1515 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1516 :
1517 : #if CK5_ENABLED
1518 : PURE module subroutine setUnifCDF_DD_D1_CK5(cdf, X)
1519 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1520 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_CK5
1521 : #endif
1522 : use pm_kind, only: CKC => CK5
1523 : complex(CKC), intent(out) , contiguous :: cdf(:)
1524 : complex(CKC), intent(in) , contiguous :: X(:)
1525 : end subroutine
1526 : #endif
1527 :
1528 : #if CK4_ENABLED
1529 : PURE module subroutine setUnifCDF_DD_D1_CK4(cdf, X)
1530 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1531 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_CK4
1532 : #endif
1533 : use pm_kind, only: CKC => CK4
1534 : complex(CKC), intent(out) , contiguous :: cdf(:)
1535 : complex(CKC), intent(in) , contiguous :: X(:)
1536 : end subroutine
1537 : #endif
1538 :
1539 : #if CK3_ENABLED
1540 : PURE module subroutine setUnifCDF_DD_D1_CK3(cdf, X)
1541 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1542 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_CK3
1543 : #endif
1544 : use pm_kind, only: CKC => CK3
1545 : complex(CKC), intent(out) , contiguous :: cdf(:)
1546 : complex(CKC), intent(in) , contiguous :: X(:)
1547 : end subroutine
1548 : #endif
1549 :
1550 : #if CK2_ENABLED
1551 : PURE module subroutine setUnifCDF_DD_D1_CK2(cdf, X)
1552 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1553 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_CK2
1554 : #endif
1555 : use pm_kind, only: CKC => CK2
1556 : complex(CKC), intent(out) , contiguous :: cdf(:)
1557 : complex(CKC), intent(in) , contiguous :: X(:)
1558 : end subroutine
1559 : #endif
1560 :
1561 : #if CK1_ENABLED
1562 : PURE module subroutine setUnifCDF_DD_D1_CK1(cdf, X)
1563 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1564 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_CK1
1565 : #endif
1566 : use pm_kind, only: CKC => CK1
1567 : complex(CKC), intent(out) , contiguous :: cdf(:)
1568 : complex(CKC), intent(in) , contiguous :: X(:)
1569 : end subroutine
1570 : #endif
1571 :
1572 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1573 :
1574 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1575 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1576 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1577 :
1578 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1579 :
1580 : #if RK5_ENABLED
1581 : PURE module subroutine setUnifCDF_DD_D1_RK5(cdf, X)
1582 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1583 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK5
1584 : #endif
1585 : use pm_kind, only: RKC => RK5
1586 : real(RKC) , intent(out) , contiguous :: cdf(:)
1587 : real(RKC) , intent(in) , contiguous :: X(:)
1588 : end subroutine
1589 : #endif
1590 :
1591 : #if RK4_ENABLED
1592 : PURE module subroutine setUnifCDF_DD_D1_RK4(cdf, X)
1593 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1594 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK4
1595 : #endif
1596 : use pm_kind, only: RKC => RK4
1597 : real(RKC) , intent(out) , contiguous :: cdf(:)
1598 : real(RKC) , intent(in) , contiguous :: X(:)
1599 : end subroutine
1600 : #endif
1601 :
1602 : #if RK3_ENABLED
1603 : PURE module subroutine setUnifCDF_DD_D1_RK3(cdf, X)
1604 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1605 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK3
1606 : #endif
1607 : use pm_kind, only: RKC => RK3
1608 : real(RKC) , intent(out) , contiguous :: cdf(:)
1609 : real(RKC) , intent(in) , contiguous :: X(:)
1610 : end subroutine
1611 : #endif
1612 :
1613 : #if RK2_ENABLED
1614 : PURE module subroutine setUnifCDF_DD_D1_RK2(cdf, X)
1615 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1616 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK2
1617 : #endif
1618 : use pm_kind, only: RKC => RK2
1619 : real(RKC) , intent(out) , contiguous :: cdf(:)
1620 : real(RKC) , intent(in) , contiguous :: X(:)
1621 : end subroutine
1622 : #endif
1623 :
1624 : #if RK1_ENABLED
1625 : PURE module subroutine setUnifCDF_DD_D1_RK1(cdf, X)
1626 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1627 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_DD_D1_RK1
1628 : #endif
1629 : use pm_kind, only: RKC => RK1
1630 : real(RKC) , intent(out) , contiguous :: cdf(:)
1631 : real(RKC) , intent(in) , contiguous :: X(:)
1632 : end subroutine
1633 : #endif
1634 :
1635 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1636 :
1637 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1638 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1639 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1640 :
1641 : end interface
1642 :
1643 : ! custom range.
1644 :
1645 : interface setUnifCDF
1646 :
1647 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1648 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1649 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1650 :
1651 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1652 :
1653 : #if RK5_ENABLED && IK5_ENABLED
1654 : PURE module subroutine setUnifCDF_LU_D0_RK5_IK5(cdf, x, lower, upper)
1655 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1656 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5_IK5
1657 : #endif
1658 : use pm_kind, only: IKC => IK5, RKC => RK5
1659 : real(RKC) , intent(out) :: cdf
1660 : integer(IKC), intent(in) :: x
1661 : integer(IKC), intent(in) :: lower, upper
1662 : end subroutine
1663 : #endif
1664 :
1665 : #if RK4_ENABLED && IK5_ENABLED
1666 : PURE module subroutine setUnifCDF_LU_D0_RK4_IK5(cdf, x, lower, upper)
1667 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1668 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4_IK5
1669 : #endif
1670 : use pm_kind, only: IKC => IK5, RKC => RK4
1671 : real(RKC) , intent(out) :: cdf
1672 : integer(IKC), intent(in) :: x
1673 : integer(IKC), intent(in) :: lower, upper
1674 : end subroutine
1675 : #endif
1676 :
1677 : #if RK3_ENABLED && IK5_ENABLED
1678 : PURE module subroutine setUnifCDF_LU_D0_RK3_IK5(cdf, x, lower, upper)
1679 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1680 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3_IK5
1681 : #endif
1682 : use pm_kind, only: IKC => IK5, RKC => RK3
1683 : real(RKC) , intent(out) :: cdf
1684 : integer(IKC), intent(in) :: x
1685 : integer(IKC), intent(in) :: lower, upper
1686 : end subroutine
1687 : #endif
1688 :
1689 : #if RK2_ENABLED && IK5_ENABLED
1690 : PURE module subroutine setUnifCDF_LU_D0_RK2_IK5(cdf, x, lower, upper)
1691 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1692 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2_IK5
1693 : #endif
1694 : use pm_kind, only: IKC => IK5, RKC => RK2
1695 : real(RKC) , intent(out) :: cdf
1696 : integer(IKC), intent(in) :: x
1697 : integer(IKC), intent(in) :: lower, upper
1698 : end subroutine
1699 : #endif
1700 :
1701 : #if RK1_ENABLED && IK5_ENABLED
1702 : PURE module subroutine setUnifCDF_LU_D0_RK1_IK5(cdf, x, lower, upper)
1703 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1704 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1_IK5
1705 : #endif
1706 : use pm_kind, only: IKC => IK5, RKC => RK1
1707 : real(RKC) , intent(out) :: cdf
1708 : integer(IKC), intent(in) :: x
1709 : integer(IKC), intent(in) :: lower, upper
1710 : end subroutine
1711 : #endif
1712 :
1713 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1714 :
1715 : #if RK5_ENABLED && IK4_ENABLED
1716 : PURE module subroutine setUnifCDF_LU_D0_RK5_IK4(cdf, x, lower, upper)
1717 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1718 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5_IK4
1719 : #endif
1720 : use pm_kind, only: IKC => IK4, RKC => RK5
1721 : real(RKC) , intent(out) :: cdf
1722 : integer(IKC), intent(in) :: x
1723 : integer(IKC), intent(in) :: lower, upper
1724 : end subroutine
1725 : #endif
1726 :
1727 : #if RK4_ENABLED && IK4_ENABLED
1728 : PURE module subroutine setUnifCDF_LU_D0_RK4_IK4(cdf, x, lower, upper)
1729 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1730 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4_IK4
1731 : #endif
1732 : use pm_kind, only: IKC => IK4, RKC => RK4
1733 : real(RKC) , intent(out) :: cdf
1734 : integer(IKC), intent(in) :: x
1735 : integer(IKC), intent(in) :: lower, upper
1736 : end subroutine
1737 : #endif
1738 :
1739 : #if RK3_ENABLED && IK4_ENABLED
1740 : PURE module subroutine setUnifCDF_LU_D0_RK3_IK4(cdf, x, lower, upper)
1741 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1742 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3_IK4
1743 : #endif
1744 : use pm_kind, only: IKC => IK4, RKC => RK3
1745 : real(RKC) , intent(out) :: cdf
1746 : integer(IKC), intent(in) :: x
1747 : integer(IKC), intent(in) :: lower, upper
1748 : end subroutine
1749 : #endif
1750 :
1751 : #if RK2_ENABLED && IK4_ENABLED
1752 : PURE module subroutine setUnifCDF_LU_D0_RK2_IK4(cdf, x, lower, upper)
1753 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1754 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2_IK4
1755 : #endif
1756 : use pm_kind, only: IKC => IK4, RKC => RK2
1757 : real(RKC) , intent(out) :: cdf
1758 : integer(IKC), intent(in) :: x
1759 : integer(IKC), intent(in) :: lower, upper
1760 : end subroutine
1761 : #endif
1762 :
1763 : #if RK1_ENABLED && IK4_ENABLED
1764 : PURE module subroutine setUnifCDF_LU_D0_RK1_IK4(cdf, x, lower, upper)
1765 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1766 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1_IK4
1767 : #endif
1768 : use pm_kind, only: IKC => IK4, RKC => RK1
1769 : real(RKC) , intent(out) :: cdf
1770 : integer(IKC), intent(in) :: x
1771 : integer(IKC), intent(in) :: lower, upper
1772 : end subroutine
1773 : #endif
1774 :
1775 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1776 :
1777 : #if RK5_ENABLED && IK3_ENABLED
1778 : PURE module subroutine setUnifCDF_LU_D0_RK5_IK3(cdf, x, lower, upper)
1779 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1780 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5_IK3
1781 : #endif
1782 : use pm_kind, only: IKC => IK3, RKC => RK5
1783 : real(RKC) , intent(out) :: cdf
1784 : integer(IKC), intent(in) :: x
1785 : integer(IKC), intent(in) :: lower, upper
1786 : end subroutine
1787 : #endif
1788 :
1789 : #if RK4_ENABLED && IK3_ENABLED
1790 : PURE module subroutine setUnifCDF_LU_D0_RK4_IK3(cdf, x, lower, upper)
1791 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1792 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4_IK3
1793 : #endif
1794 : use pm_kind, only: IKC => IK3, RKC => RK4
1795 : real(RKC) , intent(out) :: cdf
1796 : integer(IKC), intent(in) :: x
1797 : integer(IKC), intent(in) :: lower, upper
1798 : end subroutine
1799 : #endif
1800 :
1801 : #if RK3_ENABLED && IK3_ENABLED
1802 : PURE module subroutine setUnifCDF_LU_D0_RK3_IK3(cdf, x, lower, upper)
1803 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1804 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3_IK3
1805 : #endif
1806 : use pm_kind, only: IKC => IK3, RKC => RK3
1807 : real(RKC) , intent(out) :: cdf
1808 : integer(IKC), intent(in) :: x
1809 : integer(IKC), intent(in) :: lower, upper
1810 : end subroutine
1811 : #endif
1812 :
1813 : #if RK2_ENABLED && IK3_ENABLED
1814 : PURE module subroutine setUnifCDF_LU_D0_RK2_IK3(cdf, x, lower, upper)
1815 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1816 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2_IK3
1817 : #endif
1818 : use pm_kind, only: IKC => IK3, RKC => RK2
1819 : real(RKC) , intent(out) :: cdf
1820 : integer(IKC), intent(in) :: x
1821 : integer(IKC), intent(in) :: lower, upper
1822 : end subroutine
1823 : #endif
1824 :
1825 : #if RK1_ENABLED && IK3_ENABLED
1826 : PURE module subroutine setUnifCDF_LU_D0_RK1_IK3(cdf, x, lower, upper)
1827 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1828 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1_IK3
1829 : #endif
1830 : use pm_kind, only: IKC => IK3, RKC => RK1
1831 : real(RKC) , intent(out) :: cdf
1832 : integer(IKC), intent(in) :: x
1833 : integer(IKC), intent(in) :: lower, upper
1834 : end subroutine
1835 : #endif
1836 :
1837 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1838 :
1839 : #if RK5_ENABLED && IK2_ENABLED
1840 : PURE module subroutine setUnifCDF_LU_D0_RK5_IK2(cdf, x, lower, upper)
1841 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1842 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5_IK2
1843 : #endif
1844 : use pm_kind, only: IKC => IK2, RKC => RK5
1845 : real(RKC) , intent(out) :: cdf
1846 : integer(IKC), intent(in) :: x
1847 : integer(IKC), intent(in) :: lower, upper
1848 : end subroutine
1849 : #endif
1850 :
1851 : #if RK4_ENABLED && IK2_ENABLED
1852 : PURE module subroutine setUnifCDF_LU_D0_RK4_IK2(cdf, x, lower, upper)
1853 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1854 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4_IK2
1855 : #endif
1856 : use pm_kind, only: IKC => IK2, RKC => RK4
1857 : real(RKC) , intent(out) :: cdf
1858 : integer(IKC), intent(in) :: x
1859 : integer(IKC), intent(in) :: lower, upper
1860 : end subroutine
1861 : #endif
1862 :
1863 : #if RK3_ENABLED && IK2_ENABLED
1864 : PURE module subroutine setUnifCDF_LU_D0_RK3_IK2(cdf, x, lower, upper)
1865 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1866 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3_IK2
1867 : #endif
1868 : use pm_kind, only: IKC => IK2, RKC => RK3
1869 : real(RKC) , intent(out) :: cdf
1870 : integer(IKC), intent(in) :: x
1871 : integer(IKC), intent(in) :: lower, upper
1872 : end subroutine
1873 : #endif
1874 :
1875 : #if RK2_ENABLED && IK2_ENABLED
1876 : PURE module subroutine setUnifCDF_LU_D0_RK2_IK2(cdf, x, lower, upper)
1877 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1878 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2_IK2
1879 : #endif
1880 : use pm_kind, only: IKC => IK2, RKC => RK2
1881 : real(RKC) , intent(out) :: cdf
1882 : integer(IKC), intent(in) :: x
1883 : integer(IKC), intent(in) :: lower, upper
1884 : end subroutine
1885 : #endif
1886 :
1887 : #if RK1_ENABLED && IK2_ENABLED
1888 : PURE module subroutine setUnifCDF_LU_D0_RK1_IK2(cdf, x, lower, upper)
1889 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1890 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1_IK2
1891 : #endif
1892 : use pm_kind, only: IKC => IK2, RKC => RK1
1893 : real(RKC) , intent(out) :: cdf
1894 : integer(IKC), intent(in) :: x
1895 : integer(IKC), intent(in) :: lower, upper
1896 : end subroutine
1897 : #endif
1898 :
1899 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1900 :
1901 : #if RK5_ENABLED && IK1_ENABLED
1902 : PURE module subroutine setUnifCDF_LU_D0_RK5_IK1(cdf, x, lower, upper)
1903 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1904 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5_IK1
1905 : #endif
1906 : use pm_kind, only: IKC => IK1, RKC => RK5
1907 : real(RKC) , intent(out) :: cdf
1908 : integer(IKC), intent(in) :: x
1909 : integer(IKC), intent(in) :: lower, upper
1910 : end subroutine
1911 : #endif
1912 :
1913 : #if RK4_ENABLED && IK1_ENABLED
1914 : PURE module subroutine setUnifCDF_LU_D0_RK4_IK1(cdf, x, lower, upper)
1915 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1916 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4_IK1
1917 : #endif
1918 : use pm_kind, only: IKC => IK1, RKC => RK4
1919 : real(RKC) , intent(out) :: cdf
1920 : integer(IKC), intent(in) :: x
1921 : integer(IKC), intent(in) :: lower, upper
1922 : end subroutine
1923 : #endif
1924 :
1925 : #if RK3_ENABLED && IK1_ENABLED
1926 : PURE module subroutine setUnifCDF_LU_D0_RK3_IK1(cdf, x, lower, upper)
1927 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3_IK1
1929 : #endif
1930 : use pm_kind, only: IKC => IK1, RKC => RK3
1931 : real(RKC) , intent(out) :: cdf
1932 : integer(IKC), intent(in) :: x
1933 : integer(IKC), intent(in) :: lower, upper
1934 : end subroutine
1935 : #endif
1936 :
1937 : #if RK2_ENABLED && IK1_ENABLED
1938 : PURE module subroutine setUnifCDF_LU_D0_RK2_IK1(cdf, x, lower, upper)
1939 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1940 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2_IK1
1941 : #endif
1942 : use pm_kind, only: IKC => IK1, RKC => RK2
1943 : real(RKC) , intent(out) :: cdf
1944 : integer(IKC), intent(in) :: x
1945 : integer(IKC), intent(in) :: lower, upper
1946 : end subroutine
1947 : #endif
1948 :
1949 : #if RK1_ENABLED && IK1_ENABLED
1950 : PURE module subroutine setUnifCDF_LU_D0_RK1_IK1(cdf, x, lower, upper)
1951 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1952 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1_IK1
1953 : #endif
1954 : use pm_kind, only: IKC => IK1, RKC => RK1
1955 : real(RKC) , intent(out) :: cdf
1956 : integer(IKC), intent(in) :: x
1957 : integer(IKC), intent(in) :: lower, upper
1958 : end subroutine
1959 : #endif
1960 :
1961 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1962 :
1963 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1964 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1965 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1966 :
1967 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1968 :
1969 : #if CK5_ENABLED
1970 : PURE module subroutine setUnifCDF_LU_D0_CK5(cdf, x, lower, upper)
1971 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1972 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_CK5
1973 : #endif
1974 : use pm_kind, only: CKC => CK5
1975 : complex(CKC), intent(out) :: cdf
1976 : complex(CKC), intent(in) :: x
1977 : complex(CKC), intent(in) :: lower, upper
1978 : end subroutine
1979 : #endif
1980 :
1981 : #if CK4_ENABLED
1982 : PURE module subroutine setUnifCDF_LU_D0_CK4(cdf, x, lower, upper)
1983 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1984 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_CK4
1985 : #endif
1986 : use pm_kind, only: CKC => CK4
1987 : complex(CKC), intent(out) :: cdf
1988 : complex(CKC), intent(in) :: x
1989 : complex(CKC), intent(in) :: lower, upper
1990 : end subroutine
1991 : #endif
1992 :
1993 : #if CK3_ENABLED
1994 : PURE module subroutine setUnifCDF_LU_D0_CK3(cdf, x, lower, upper)
1995 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1996 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_CK3
1997 : #endif
1998 : use pm_kind, only: CKC => CK3
1999 : complex(CKC), intent(out) :: cdf
2000 : complex(CKC), intent(in) :: x
2001 : complex(CKC), intent(in) :: lower, upper
2002 : end subroutine
2003 : #endif
2004 :
2005 : #if CK2_ENABLED
2006 : PURE module subroutine setUnifCDF_LU_D0_CK2(cdf, x, lower, upper)
2007 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2008 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_CK2
2009 : #endif
2010 : use pm_kind, only: CKC => CK2
2011 : complex(CKC), intent(out) :: cdf
2012 : complex(CKC), intent(in) :: x
2013 : complex(CKC), intent(in) :: lower, upper
2014 : end subroutine
2015 : #endif
2016 :
2017 : #if CK1_ENABLED
2018 : PURE module subroutine setUnifCDF_LU_D0_CK1(cdf, x, lower, upper)
2019 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2020 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_CK1
2021 : #endif
2022 : use pm_kind, only: CKC => CK1
2023 : complex(CKC), intent(out) :: cdf
2024 : complex(CKC), intent(in) :: x
2025 : complex(CKC), intent(in) :: lower, upper
2026 : end subroutine
2027 : #endif
2028 :
2029 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2030 :
2031 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2032 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2033 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2034 :
2035 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2036 :
2037 : #if RK5_ENABLED
2038 : PURE module subroutine setUnifCDF_LU_D0_RK5(cdf, x, lower, upper)
2039 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2040 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK5
2041 : #endif
2042 : use pm_kind, only: RKC => RK5
2043 : real(RKC) , intent(out) :: cdf
2044 : real(RKC) , intent(in) :: x
2045 : real(RKC) , intent(in) :: lower, upper
2046 : end subroutine
2047 : #endif
2048 :
2049 : #if RK4_ENABLED
2050 : PURE module subroutine setUnifCDF_LU_D0_RK4(cdf, x, lower, upper)
2051 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2052 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK4
2053 : #endif
2054 : use pm_kind, only: RKC => RK4
2055 : real(RKC) , intent(out) :: cdf
2056 : real(RKC) , intent(in) :: x
2057 : real(RKC) , intent(in) :: lower, upper
2058 : end subroutine
2059 : #endif
2060 :
2061 : #if RK3_ENABLED
2062 : PURE module subroutine setUnifCDF_LU_D0_RK3(cdf, x, lower, upper)
2063 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2064 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK3
2065 : #endif
2066 : use pm_kind, only: RKC => RK3
2067 : real(RKC) , intent(out) :: cdf
2068 : real(RKC) , intent(in) :: x
2069 : real(RKC) , intent(in) :: lower, upper
2070 : end subroutine
2071 : #endif
2072 :
2073 : #if RK2_ENABLED
2074 : PURE module subroutine setUnifCDF_LU_D0_RK2(cdf, x, lower, upper)
2075 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2076 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK2
2077 : #endif
2078 : use pm_kind, only: RKC => RK2
2079 : real(RKC) , intent(out) :: cdf
2080 : real(RKC) , intent(in) :: x
2081 : real(RKC) , intent(in) :: lower, upper
2082 : end subroutine
2083 : #endif
2084 :
2085 : #if RK1_ENABLED
2086 : PURE module subroutine setUnifCDF_LU_D0_RK1(cdf, x, lower, upper)
2087 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2088 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D0_RK1
2089 : #endif
2090 : use pm_kind, only: RKC => RK1
2091 : real(RKC) , intent(out) :: cdf
2092 : real(RKC) , intent(in) :: x
2093 : real(RKC) , intent(in) :: lower, upper
2094 : end subroutine
2095 : #endif
2096 :
2097 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2098 :
2099 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2100 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2101 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2102 :
2103 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2104 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2105 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2106 :
2107 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2108 :
2109 : #if RK5_ENABLED && IK5_ENABLED
2110 : PURE module subroutine setUnifCDF_LU_D1_RK5_IK5(cdf, X, lower, upper)
2111 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2112 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5_IK5
2113 : #endif
2114 : use pm_kind, only: IKC => IK5, RKC => RK5
2115 : real(RKC) , intent(out) , contiguous :: cdf(:)
2116 : integer(IKC), intent(in) , contiguous :: X(:)
2117 : integer(IKC), intent(in) :: lower, upper
2118 : end subroutine
2119 : #endif
2120 :
2121 : #if RK4_ENABLED && IK5_ENABLED
2122 : PURE module subroutine setUnifCDF_LU_D1_RK4_IK5(cdf, X, lower, upper)
2123 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2124 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4_IK5
2125 : #endif
2126 : use pm_kind, only: IKC => IK5, RKC => RK4
2127 : real(RKC) , intent(out) , contiguous :: cdf(:)
2128 : integer(IKC), intent(in) , contiguous :: X(:)
2129 : integer(IKC), intent(in) :: lower, upper
2130 : end subroutine
2131 : #endif
2132 :
2133 : #if RK3_ENABLED && IK5_ENABLED
2134 : PURE module subroutine setUnifCDF_LU_D1_RK3_IK5(cdf, X, lower, upper)
2135 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2136 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3_IK5
2137 : #endif
2138 : use pm_kind, only: IKC => IK5, RKC => RK3
2139 : real(RKC) , intent(out) , contiguous :: cdf(:)
2140 : integer(IKC), intent(in) , contiguous :: X(:)
2141 : integer(IKC), intent(in) :: lower, upper
2142 : end subroutine
2143 : #endif
2144 :
2145 : #if RK2_ENABLED && IK5_ENABLED
2146 : PURE module subroutine setUnifCDF_LU_D1_RK2_IK5(cdf, X, lower, upper)
2147 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2148 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2_IK5
2149 : #endif
2150 : use pm_kind, only: IKC => IK5, RKC => RK2
2151 : real(RKC) , intent(out) , contiguous :: cdf(:)
2152 : integer(IKC), intent(in) , contiguous :: X(:)
2153 : integer(IKC), intent(in) :: lower, upper
2154 : end subroutine
2155 : #endif
2156 :
2157 : #if RK1_ENABLED && IK5_ENABLED
2158 : PURE module subroutine setUnifCDF_LU_D1_RK1_IK5(cdf, X, lower, upper)
2159 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2160 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1_IK5
2161 : #endif
2162 : use pm_kind, only: IKC => IK5, RKC => RK1
2163 : real(RKC) , intent(out) , contiguous :: cdf(:)
2164 : integer(IKC), intent(in) , contiguous :: X(:)
2165 : integer(IKC), intent(in) :: lower, upper
2166 : end subroutine
2167 : #endif
2168 :
2169 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2170 :
2171 : #if RK5_ENABLED && IK4_ENABLED
2172 : PURE module subroutine setUnifCDF_LU_D1_RK5_IK4(cdf, X, lower, upper)
2173 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2174 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5_IK4
2175 : #endif
2176 : use pm_kind, only: IKC => IK4, RKC => RK5
2177 : real(RKC) , intent(out) , contiguous :: cdf(:)
2178 : integer(IKC), intent(in) , contiguous :: X(:)
2179 : integer(IKC), intent(in) :: lower, upper
2180 : end subroutine
2181 : #endif
2182 :
2183 : #if RK4_ENABLED && IK4_ENABLED
2184 : PURE module subroutine setUnifCDF_LU_D1_RK4_IK4(cdf, X, lower, upper)
2185 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2186 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4_IK4
2187 : #endif
2188 : use pm_kind, only: IKC => IK4, RKC => RK4
2189 : real(RKC) , intent(out) , contiguous :: cdf(:)
2190 : integer(IKC), intent(in) , contiguous :: X(:)
2191 : integer(IKC), intent(in) :: lower, upper
2192 : end subroutine
2193 : #endif
2194 :
2195 : #if RK3_ENABLED && IK4_ENABLED
2196 : PURE module subroutine setUnifCDF_LU_D1_RK3_IK4(cdf, X, lower, upper)
2197 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2198 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3_IK4
2199 : #endif
2200 : use pm_kind, only: IKC => IK4, RKC => RK3
2201 : real(RKC) , intent(out) , contiguous :: cdf(:)
2202 : integer(IKC), intent(in) , contiguous :: X(:)
2203 : integer(IKC), intent(in) :: lower, upper
2204 : end subroutine
2205 : #endif
2206 :
2207 : #if RK2_ENABLED && IK4_ENABLED
2208 : PURE module subroutine setUnifCDF_LU_D1_RK2_IK4(cdf, X, lower, upper)
2209 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2210 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2_IK4
2211 : #endif
2212 : use pm_kind, only: IKC => IK4, RKC => RK2
2213 : real(RKC) , intent(out) , contiguous :: cdf(:)
2214 : integer(IKC), intent(in) , contiguous :: X(:)
2215 : integer(IKC), intent(in) :: lower, upper
2216 : end subroutine
2217 : #endif
2218 :
2219 : #if RK1_ENABLED && IK4_ENABLED
2220 : PURE module subroutine setUnifCDF_LU_D1_RK1_IK4(cdf, X, lower, upper)
2221 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2222 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1_IK4
2223 : #endif
2224 : use pm_kind, only: IKC => IK4, RKC => RK1
2225 : real(RKC) , intent(out) , contiguous :: cdf(:)
2226 : integer(IKC), intent(in) , contiguous :: X(:)
2227 : integer(IKC), intent(in) :: lower, upper
2228 : end subroutine
2229 : #endif
2230 :
2231 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2232 :
2233 : #if RK5_ENABLED && IK3_ENABLED
2234 : PURE module subroutine setUnifCDF_LU_D1_RK5_IK3(cdf, X, lower, upper)
2235 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2236 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5_IK3
2237 : #endif
2238 : use pm_kind, only: IKC => IK3, RKC => RK5
2239 : real(RKC) , intent(out) , contiguous :: cdf(:)
2240 : integer(IKC), intent(in) , contiguous :: X(:)
2241 : integer(IKC), intent(in) :: lower, upper
2242 : end subroutine
2243 : #endif
2244 :
2245 : #if RK4_ENABLED && IK3_ENABLED
2246 : PURE module subroutine setUnifCDF_LU_D1_RK4_IK3(cdf, X, lower, upper)
2247 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2248 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4_IK3
2249 : #endif
2250 : use pm_kind, only: IKC => IK3, RKC => RK4
2251 : real(RKC) , intent(out) , contiguous :: cdf(:)
2252 : integer(IKC), intent(in) , contiguous :: X(:)
2253 : integer(IKC), intent(in) :: lower, upper
2254 : end subroutine
2255 : #endif
2256 :
2257 : #if RK3_ENABLED && IK3_ENABLED
2258 : PURE module subroutine setUnifCDF_LU_D1_RK3_IK3(cdf, X, lower, upper)
2259 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2260 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3_IK3
2261 : #endif
2262 : use pm_kind, only: IKC => IK3, RKC => RK3
2263 : real(RKC) , intent(out) , contiguous :: cdf(:)
2264 : integer(IKC), intent(in) , contiguous :: X(:)
2265 : integer(IKC), intent(in) :: lower, upper
2266 : end subroutine
2267 : #endif
2268 :
2269 : #if RK2_ENABLED && IK3_ENABLED
2270 : PURE module subroutine setUnifCDF_LU_D1_RK2_IK3(cdf, X, lower, upper)
2271 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2272 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2_IK3
2273 : #endif
2274 : use pm_kind, only: IKC => IK3, RKC => RK2
2275 : real(RKC) , intent(out) , contiguous :: cdf(:)
2276 : integer(IKC), intent(in) , contiguous :: X(:)
2277 : integer(IKC), intent(in) :: lower, upper
2278 : end subroutine
2279 : #endif
2280 :
2281 : #if RK1_ENABLED && IK3_ENABLED
2282 : PURE module subroutine setUnifCDF_LU_D1_RK1_IK3(cdf, X, lower, upper)
2283 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2284 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1_IK3
2285 : #endif
2286 : use pm_kind, only: IKC => IK3, RKC => RK1
2287 : real(RKC) , intent(out) , contiguous :: cdf(:)
2288 : integer(IKC), intent(in) , contiguous :: X(:)
2289 : integer(IKC), intent(in) :: lower, upper
2290 : end subroutine
2291 : #endif
2292 :
2293 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2294 :
2295 : #if RK5_ENABLED && IK2_ENABLED
2296 : PURE module subroutine setUnifCDF_LU_D1_RK5_IK2(cdf, X, lower, upper)
2297 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2298 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5_IK2
2299 : #endif
2300 : use pm_kind, only: IKC => IK2, RKC => RK5
2301 : real(RKC) , intent(out) , contiguous :: cdf(:)
2302 : integer(IKC), intent(in) , contiguous :: X(:)
2303 : integer(IKC), intent(in) :: lower, upper
2304 : end subroutine
2305 : #endif
2306 :
2307 : #if RK4_ENABLED && IK2_ENABLED
2308 : PURE module subroutine setUnifCDF_LU_D1_RK4_IK2(cdf, X, lower, upper)
2309 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2310 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4_IK2
2311 : #endif
2312 : use pm_kind, only: IKC => IK2, RKC => RK4
2313 : real(RKC) , intent(out) , contiguous :: cdf(:)
2314 : integer(IKC), intent(in) , contiguous :: X(:)
2315 : integer(IKC), intent(in) :: lower, upper
2316 : end subroutine
2317 : #endif
2318 :
2319 : #if RK3_ENABLED && IK2_ENABLED
2320 : PURE module subroutine setUnifCDF_LU_D1_RK3_IK2(cdf, X, lower, upper)
2321 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2322 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3_IK2
2323 : #endif
2324 : use pm_kind, only: IKC => IK2, RKC => RK3
2325 : real(RKC) , intent(out) , contiguous :: cdf(:)
2326 : integer(IKC), intent(in) , contiguous :: X(:)
2327 : integer(IKC), intent(in) :: lower, upper
2328 : end subroutine
2329 : #endif
2330 :
2331 : #if RK2_ENABLED && IK2_ENABLED
2332 : PURE module subroutine setUnifCDF_LU_D1_RK2_IK2(cdf, X, lower, upper)
2333 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2334 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2_IK2
2335 : #endif
2336 : use pm_kind, only: IKC => IK2, RKC => RK2
2337 : real(RKC) , intent(out) , contiguous :: cdf(:)
2338 : integer(IKC), intent(in) , contiguous :: X(:)
2339 : integer(IKC), intent(in) :: lower, upper
2340 : end subroutine
2341 : #endif
2342 :
2343 : #if RK1_ENABLED && IK2_ENABLED
2344 : PURE module subroutine setUnifCDF_LU_D1_RK1_IK2(cdf, X, lower, upper)
2345 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2346 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1_IK2
2347 : #endif
2348 : use pm_kind, only: IKC => IK2, RKC => RK1
2349 : real(RKC) , intent(out) , contiguous :: cdf(:)
2350 : integer(IKC), intent(in) , contiguous :: X(:)
2351 : integer(IKC), intent(in) :: lower, upper
2352 : end subroutine
2353 : #endif
2354 :
2355 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2356 :
2357 : #if RK5_ENABLED && IK1_ENABLED
2358 : PURE module subroutine setUnifCDF_LU_D1_RK5_IK1(cdf, X, lower, upper)
2359 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2360 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5_IK1
2361 : #endif
2362 : use pm_kind, only: IKC => IK1, RKC => RK5
2363 : real(RKC) , intent(out) , contiguous :: cdf(:)
2364 : integer(IKC), intent(in) , contiguous :: X(:)
2365 : integer(IKC), intent(in) :: lower, upper
2366 : end subroutine
2367 : #endif
2368 :
2369 : #if RK4_ENABLED && IK1_ENABLED
2370 : PURE module subroutine setUnifCDF_LU_D1_RK4_IK1(cdf, X, lower, upper)
2371 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2372 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4_IK1
2373 : #endif
2374 : use pm_kind, only: IKC => IK1, RKC => RK4
2375 : real(RKC) , intent(out) , contiguous :: cdf(:)
2376 : integer(IKC), intent(in) , contiguous :: X(:)
2377 : integer(IKC), intent(in) :: lower, upper
2378 : end subroutine
2379 : #endif
2380 :
2381 : #if RK3_ENABLED && IK1_ENABLED
2382 : PURE module subroutine setUnifCDF_LU_D1_RK3_IK1(cdf, X, lower, upper)
2383 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2384 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3_IK1
2385 : #endif
2386 : use pm_kind, only: IKC => IK1, RKC => RK3
2387 : real(RKC) , intent(out) , contiguous :: cdf(:)
2388 : integer(IKC), intent(in) , contiguous :: X(:)
2389 : integer(IKC), intent(in) :: lower, upper
2390 : end subroutine
2391 : #endif
2392 :
2393 : #if RK2_ENABLED && IK1_ENABLED
2394 : PURE module subroutine setUnifCDF_LU_D1_RK2_IK1(cdf, X, lower, upper)
2395 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2396 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2_IK1
2397 : #endif
2398 : use pm_kind, only: IKC => IK1, RKC => RK2
2399 : real(RKC) , intent(out) , contiguous :: cdf(:)
2400 : integer(IKC), intent(in) , contiguous :: X(:)
2401 : integer(IKC), intent(in) :: lower, upper
2402 : end subroutine
2403 : #endif
2404 :
2405 : #if RK1_ENABLED && IK1_ENABLED
2406 : PURE module subroutine setUnifCDF_LU_D1_RK1_IK1(cdf, X, lower, upper)
2407 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2408 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1_IK1
2409 : #endif
2410 : use pm_kind, only: IKC => IK1, RKC => RK1
2411 : real(RKC) , intent(out) , contiguous :: cdf(:)
2412 : integer(IKC), intent(in) , contiguous :: X(:)
2413 : integer(IKC), intent(in) :: lower, upper
2414 : end subroutine
2415 : #endif
2416 :
2417 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2418 :
2419 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2420 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2421 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2422 :
2423 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2424 :
2425 : #if CK5_ENABLED
2426 : PURE module subroutine setUnifCDF_LU_D1_CK5(cdf, X, lower, upper)
2427 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2428 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_CK5
2429 : #endif
2430 : use pm_kind, only: CKC => CK5
2431 : complex(CKC), intent(out) , contiguous :: cdf(:)
2432 : complex(CKC), intent(in) , contiguous :: X(:)
2433 : complex(CKC), intent(in) :: lower, upper
2434 : end subroutine
2435 : #endif
2436 :
2437 : #if CK4_ENABLED
2438 : PURE module subroutine setUnifCDF_LU_D1_CK4(cdf, X, lower, upper)
2439 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2440 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_CK4
2441 : #endif
2442 : use pm_kind, only: CKC => CK4
2443 : complex(CKC), intent(out) , contiguous :: cdf(:)
2444 : complex(CKC), intent(in) , contiguous :: X(:)
2445 : complex(CKC), intent(in) :: lower, upper
2446 : end subroutine
2447 : #endif
2448 :
2449 : #if CK3_ENABLED
2450 : PURE module subroutine setUnifCDF_LU_D1_CK3(cdf, X, lower, upper)
2451 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2452 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_CK3
2453 : #endif
2454 : use pm_kind, only: CKC => CK3
2455 : complex(CKC), intent(out) , contiguous :: cdf(:)
2456 : complex(CKC), intent(in) , contiguous :: X(:)
2457 : complex(CKC), intent(in) :: lower, upper
2458 : end subroutine
2459 : #endif
2460 :
2461 : #if CK2_ENABLED
2462 : PURE module subroutine setUnifCDF_LU_D1_CK2(cdf, X, lower, upper)
2463 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2464 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_CK2
2465 : #endif
2466 : use pm_kind, only: CKC => CK2
2467 : complex(CKC), intent(out) , contiguous :: cdf(:)
2468 : complex(CKC), intent(in) , contiguous :: X(:)
2469 : complex(CKC), intent(in) :: lower, upper
2470 : end subroutine
2471 : #endif
2472 :
2473 : #if CK1_ENABLED
2474 : PURE module subroutine setUnifCDF_LU_D1_CK1(cdf, X, lower, upper)
2475 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2476 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_CK1
2477 : #endif
2478 : use pm_kind, only: CKC => CK1
2479 : complex(CKC), intent(out) , contiguous :: cdf(:)
2480 : complex(CKC), intent(in) , contiguous :: X(:)
2481 : complex(CKC), intent(in) :: lower, upper
2482 : end subroutine
2483 : #endif
2484 :
2485 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2486 :
2487 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2488 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2489 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2490 :
2491 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2492 :
2493 : #if RK5_ENABLED
2494 : PURE module subroutine setUnifCDF_LU_D1_RK5(cdf, X, lower, upper)
2495 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2496 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK5
2497 : #endif
2498 : use pm_kind, only: RKC => RK5
2499 : real(RKC) , intent(out) , contiguous :: cdf(:)
2500 : real(RKC) , intent(in) , contiguous :: X(:)
2501 : real(RKC) , intent(in) :: lower, upper
2502 : end subroutine
2503 : #endif
2504 :
2505 : #if RK4_ENABLED
2506 : PURE module subroutine setUnifCDF_LU_D1_RK4(cdf, X, lower, upper)
2507 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2508 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK4
2509 : #endif
2510 : use pm_kind, only: RKC => RK4
2511 : real(RKC) , intent(out) , contiguous :: cdf(:)
2512 : real(RKC) , intent(in) , contiguous :: X(:)
2513 : real(RKC) , intent(in) :: lower, upper
2514 : end subroutine
2515 : #endif
2516 :
2517 : #if RK3_ENABLED
2518 : PURE module subroutine setUnifCDF_LU_D1_RK3(cdf, X, lower, upper)
2519 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2520 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK3
2521 : #endif
2522 : use pm_kind, only: RKC => RK3
2523 : real(RKC) , intent(out) , contiguous :: cdf(:)
2524 : real(RKC) , intent(in) , contiguous :: X(:)
2525 : real(RKC) , intent(in) :: lower, upper
2526 : end subroutine
2527 : #endif
2528 :
2529 : #if RK2_ENABLED
2530 : PURE module subroutine setUnifCDF_LU_D1_RK2(cdf, X, lower, upper)
2531 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2532 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK2
2533 : #endif
2534 : use pm_kind, only: RKC => RK2
2535 : real(RKC) , intent(out) , contiguous :: cdf(:)
2536 : real(RKC) , intent(in) , contiguous :: X(:)
2537 : real(RKC) , intent(in) :: lower, upper
2538 : end subroutine
2539 : #endif
2540 :
2541 : #if RK1_ENABLED
2542 : PURE module subroutine setUnifCDF_LU_D1_RK1(cdf, X, lower, upper)
2543 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2544 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCDF_LU_D1_RK1
2545 : #endif
2546 : use pm_kind, only: RKC => RK1
2547 : real(RKC) , intent(out) , contiguous :: cdf(:)
2548 : real(RKC) , intent(in) , contiguous :: X(:)
2549 : real(RKC) , intent(in) :: lower, upper
2550 : end subroutine
2551 : #endif
2552 :
2553 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2554 :
2555 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2556 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2557 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2558 :
2559 : end interface
2560 :
2561 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2562 :
2563 : !> \brief
2564 : !> The constant scalar of type `integer` of default kind containing
2565 : !> the number of binary digits of the `stream` component [Xoshiro256**](https://prng.di.unimi.it/) random number generator.<br>
2566 : !>
2567 : !> \details
2568 : !> By definition, this number is `64`, because the type kind parameter of `stream` is \IK64.<br>
2569 : !>
2570 : !> \see
2571 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2572 : !> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128)<br>
2573 : !> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192)<br>
2574 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
2575 : !> [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)<br>
2576 : !>
2577 : !> \finmain{xoshiro256ssStateSize}
2578 : !>
2579 : !> \author
2580 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2581 : integer(IK) , parameter :: xoshiro256ssStreamBitSize = int(bit_size(0_IK64), IK)
2582 :
2583 : !> \brief
2584 : !> The constant scalar of type `integer` of default kind \IK containing
2585 : !> the size of the state vector of [Xoshiro256**](https://prng.di.unimi.it/) random number generator.<br>
2586 : !>
2587 : !> \details
2588 : !> For more information see the documentation of
2589 : !> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) and
2590 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).<br>
2591 : !>
2592 : !> \see
2593 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2594 : !> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128)<br>
2595 : !> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192)<br>
2596 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
2597 : !> [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)<br>
2598 : !>
2599 : !> \finmain{xoshiro256ssStateSize}
2600 : !>
2601 : !> \author
2602 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2603 : integer(IK) , parameter :: xoshiro256ssStateSize = 4_IK
2604 :
2605 : !> \brief
2606 : !> The constant vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)
2607 : !> of type `integer` of kind \IK64 containing the state jump for the
2608 : !> [Xoshiro256**](https://prng.di.unimi.it/) random number generator.<br>
2609 : !>
2610 : !> \details
2611 : !> This state jump can be passed to the constructor of [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) to request an RNG
2612 : !> whose state starts at `imageID * 2**128` steps (i.e., random number generations) ahead of the RNG constructed with `imageID = 1`.<br>
2613 : !> Using this jump, one can generate `2**128` independent RNG sequences each of which has a period of `2**128` in parallel applications.<br>
2614 : !> For more information see the documentation of
2615 : !> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) and
2616 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).<br>
2617 : !>
2618 : !> The elements of this constant vector are obtained by transferring the following unsigned integers to signed values.<br>
2619 : !> \code{.F90}
2620 : !> integer(IK64) , parameter :: xoshiro256ssJump128(xoshiro256ssStateSize) = [ transfer(Z"180ec6d33cfd0aba", 0_IK64) &
2621 : !> , transfer(Z"d5a61266f0c9392c", 0_IK64) &
2622 : !> , transfer(Z"a9582618e03fc9aa", 0_IK64) &
2623 : !> , transfer(Z"39abdc4529b1661c", 0_IK64) ]
2624 : !> \endcode
2625 : !>
2626 : !> \see
2627 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2628 : !> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128)<br>
2629 : !> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192)<br>
2630 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
2631 : !> [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)<br>
2632 : !>
2633 : !> \finmain{xoshiro256ssJump128}
2634 : !>
2635 : !> \author
2636 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2637 : integer(IK64) , parameter :: xoshiro256ssJump128(xoshiro256ssStateSize) = [ +1733541517147835066_IK64 &
2638 : , -3051731464161248980_IK64 &
2639 : , -6244198995065845334_IK64 &
2640 : , +4155657270789760540_IK64 ]
2641 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2642 : !DIR$ ATTRIBUTES DLLEXPORT :: xoshiro256ssJump128
2643 : #endif
2644 :
2645 : !> \brief
2646 : !> The constant vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)
2647 : !> of type `integer` of kind \IK64 containing the state jump for the
2648 : !> [Xoshiro256**](https://prng.di.unimi.it/) random number generator.<br>
2649 : !>
2650 : !> \details
2651 : !> This state jump can be passed to the constructor of [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) to request an RNG
2652 : !> whose state starts at `imageID * 2**192` steps (i.e., random number generations) ahead of the RNG constructed with `imageID = 1`.<br>
2653 : !> Using this jump, one can generate `2**64` independent RNG sequences each of which has a period of `2**192` in parallel applications.<br>
2654 : !> For more information see the documentation of
2655 : !> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) and
2656 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).<br>
2657 : !>
2658 : !> The elements of this constant vector are obtained by transferring the following unsigned integers to signed values.<br>
2659 : !> \code{.F90}
2660 : !> integer(IK64) , parameter :: xoshiro256ssJump192(xoshiro256ssStateSize) = [ transfer(Z"76e15d3efefdcbbf", 0_IK64) &
2661 : !> , transfer(Z"c5004e441c522fb3", 0_IK64) &
2662 : !> , transfer(Z"77710069854ee241", 0_IK64) &
2663 : !> , transfer(Z"39109bb02acbe635", 0_IK64) ]
2664 : !> \endcode
2665 : !>
2666 : !> \see
2667 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2668 : !> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128)<br>
2669 : !> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192)<br>
2670 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
2671 : !> [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)<br>
2672 : !>
2673 : !> \finmain{xoshiro256ssJump192}
2674 : !>
2675 : !> \author
2676 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2677 : integer(IK64) , parameter :: xoshiro256ssJump192(xoshiro256ssStateSize) = [ +8566230491382795199_IK64 &
2678 : , -4251311993797857357_IK64 &
2679 : , +8606660816089834049_IK64 &
2680 : , +4111957640723818037_IK64 ]
2681 :
2682 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2683 :
2684 : !> \brief
2685 : !> This is the `abstract` base derived type for defining various Uniform Random Number Generator (URNG) derived types.<br>
2686 : !>
2687 : !> \see
2688 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
2689 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
2690 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
2691 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2692 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
2693 : !>
2694 : !> \test
2695 : !> [test_pm_distUnif](@ref test_pm_distUnif)
2696 : !>
2697 : !> \finmain{rngu_type}
2698 : !>
2699 : !> \author
2700 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2701 : type, abstract :: rngu_type
2702 : end type
2703 :
2704 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2705 :
2706 : !> \brief
2707 : !> This is a concrete derived type whose instances can be used to define/request
2708 : !> the default uniform random number generator (**RNG**) of the Fortran standard.<br>
2709 : !>
2710 : !> \details
2711 : !> This type does not currently hold any components.<br>
2712 : !> It is merely used to signal/request the use of the intrinsic Fortran RNG.<br>
2713 : !> The Fortran programming language offers a single mechanism through the intrinsic procedure `random_seed(size = size, put = put, get = get)`
2714 : !> to set the seed of the intrinsic uniform random number generator of Fortran `random_number(harvest)`.<br>
2715 : !> However, the internal implementation of the random number generator can vary from compiler to another.<br>
2716 : !> Furthermore, the size and requirements for the initial state (seed) can be also different across compilers.<br>
2717 : !> As such, Fortran programming language also offers a new intrinsic procedure `random_init(repeatable, image_distinct)`.
2718 : !> <ol>
2719 : !> <li> If `repeatable = .true.`, the seed is set to the same processor-dependent value
2720 : !> each time `random_init(repeatable = .true., ...)` is called from the same image.<br>
2721 : !> The program is, therefore, guaranteed to generate the same random number sequence after each call to `random_init()`.<br>
2722 : !> The term *same image* means a *single instance of program execution*.<br>
2723 : !> The sequence of random numbers is *different for repeated execution* of the program.<br>
2724 : !> If it is `.false.`, the seed is set to a processor-dependent value.<br>
2725 : !> <li> If `image_distinct = .true.`, the seed is set to a processor-dependent value that is
2726 : !> distinct from th seed set by a call to `random_init()` in another (Coarray) image.<br>
2727 : !> If it is `image_distinct = .false.`, the seed is set to a value that does **not** depend which image called `random_init()`.<br>
2728 : !> </ol>
2729 : !> The Fortran intrinsic `random_init()` apparently does guarantee the generation
2730 : !> of the same random sequence in multiple independent executions of the program.<br>
2731 : !> This requires setting the RNG seed explicitly at the beginning of each program execution.<br>
2732 : !>
2733 : !> The [rngf_type](@ref pm_distUnif::rngf_type) aims to facilitate the above
2734 : !> goal by offering a single interface that combines `random_init()` and `random_seed()` intrinsic routines.<br>
2735 : !>
2736 : !> \param[in] seed : The input scalar of type `integer` of default kind \IK,
2737 : !> containing a positive integer that serves as the starting point to generate the full RNG seed.<br>
2738 : !> Specify this input argument if you wish to make random simulations reproducible,
2739 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
2740 : !> (**optional**. If missing, it is set to a value determined by the current date and time.)
2741 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
2742 : !> This can be,
2743 : !> <ol>
2744 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
2745 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
2746 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
2747 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
2748 : !> </ol>
2749 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
2750 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
2751 : !> (**optional**. If missing, the RNG seed will be set identically on all images.)
2752 : !>
2753 : !> \return
2754 : !> `rng` : The output scalar object of type [rngf_type](@ref pm_distUnif::rngf_type).<br>
2755 : !>
2756 : !> \interface{rngf_type}
2757 : !> \code{.F90}
2758 : !>
2759 : !> use pm_kind, only: IK
2760 : !> use pm_distUnif, only: rngf_type
2761 : !> type(rngf_type) :: rng
2762 : !>
2763 : !> rng = rngf_type(seed = seed, imageID = imageID)
2764 : !> print *, getUnifRandState()
2765 : !>
2766 : !> \endcode
2767 : !>
2768 : !> \note
2769 : !> This generic interface does not aim to replicate the behavior of the Fortran intrinsic `random_init()` but rather to extend it.<br>
2770 : !> If you wish to reset the RNG seed to a reproducible seed without specifying a scalar reference value for it via this generic interface,
2771 : !> simply call `random_init(repeatable = .true., ...)`.<br>
2772 : !> However, unlike `random_init()`, this generic interface can guarantee reproducibility of RNG sequences within
2773 : !> and between multiple program runs in serial or parallel Coarray/MPI/OpenMP, all compiled by the same compiler.<br>
2774 : !>
2775 : !> \see
2776 : !> [rngf](@ref pm_distUnif::rngf)<br>
2777 : !> [isHead](@ref pm_distBern::isHead)<br>
2778 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
2779 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
2780 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
2781 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
2782 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
2783 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
2784 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
2785 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
2786 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2787 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
2788 : !>
2789 : !> \example{rngf_type}
2790 : !> \include{lineno} example/pm_distUnif/rngf_type/main.F90
2791 : !> \compilef{rngf_type}
2792 : !> \output{rngf_type}
2793 : !> \include{lineno} example/pm_distUnif/rngf_type/main.out.F90
2794 : !>
2795 : !> \finmain{rngf_type}
2796 : !>
2797 : !> \author
2798 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
2799 : type, extends(rngu_type) :: rngf_type
2800 : end type
2801 :
2802 : !> \brief
2803 : !> The scalar constant object of type [rngf_type](@ref pm_distUnif::rngf_type)
2804 : !> whose presence signified the use of the Fortran intrinsic random number generator (RNGF).<br>
2805 : !>
2806 : !> \details
2807 : !> This constant is merely a convenience for making easier calls to routines that require a default RNGF.<br>
2808 : !>
2809 : !> \interface{rngf}
2810 : !> \code{.F90}
2811 : !>
2812 : !> use pm_distUnif, only: rngf, rngf_type
2813 : !> type(rngf_type) :: rng = rngf
2814 : !>
2815 : !> \endcode
2816 : !>
2817 : !> \see
2818 : !> [rngf](@ref pm_distUnif::rngf)<br>
2819 : !> [isHead](@ref pm_distBern::isHead)<br>
2820 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
2821 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
2822 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
2823 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
2824 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
2825 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
2826 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
2827 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
2828 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2829 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
2830 : !>
2831 : !> \bug
2832 : !> \status \unresolved
2833 : !> \source \ifort{2021.8.0 20221119}
2834 : !> \desc
2835 : !> \ifort cannot handle the creation of a module constant of type [rngf_type](@ref pm_distUnif::rngf_type) as done for this object,
2836 : !> yielding the following error.<br>
2837 : !> \code{.sh}
2838 : !> error #9066: A generic function reference is not permitted in a constant expression. [CONSTRUCTFRNG]
2839 : !> \endcode
2840 : !> GNU compiler compiles and runs the code without complaining.<br>
2841 : !> \remedy{2.0.0}
2842 : !> For now, the `parameter` attribute is removed from the declaration of [rngf](@ref pm_distUnif::rngf).<br>
2843 : !>
2844 : !> \finmain{rngf}
2845 : !>
2846 : !> \author
2847 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
2848 : type(rngf_type) :: rngf! = rngf_type()
2849 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2850 : !DIR$ ATTRIBUTES DLLEXPORT :: rngf
2851 : #endif
2852 :
2853 : !> \cond excluded
2854 : interface rngf_type
2855 : module procedure :: constructFRNG
2856 : end interface
2857 : !> \endcond excluded
2858 :
2859 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2860 :
2861 : !> \brief
2862 : !> Generate and return a scalar object of type [rngf_type](@ref pm_distUnif::rngf_type).
2863 : !>
2864 : !> \details
2865 : !> This generic interface is the constructor of [rngf_type](@ref pm_distUnif::rngf_type).<br>
2866 : !> See the documentation of [rngf_type](@ref pm_distUnif::rngf_type) for example usage and interface.
2867 : !>
2868 : !> \impure
2869 : !>
2870 : !> \see
2871 : !> [rngf](@ref pm_distUnif::rngf)<br>
2872 : !> [isHead](@ref pm_distBern::isHead)<br>
2873 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
2874 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
2875 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
2876 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
2877 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
2878 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
2879 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
2880 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
2881 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2882 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
2883 : !>
2884 : !> \test
2885 : !> [test_pm_distUnif](@ref test_pm_distUnif)
2886 : !>
2887 : !> \finmain{constructFRNG}
2888 : !>
2889 : !> \author
2890 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
2891 : interface constructFRNG
2892 : module function constructFRNG(seed, imageID) result(self)
2893 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2894 : !DEC$ ATTRIBUTES DLLEXPORT :: constructFRNG
2895 : #endif
2896 : integer(IK) , intent(in), optional :: seed, imageID
2897 : type(rngf_type) :: self
2898 : end function
2899 : end interface
2900 :
2901 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2902 :
2903 : !> \brief
2904 : !> This is the `abstract` base derived type for defining variants of
2905 : !> [Xoshiro256**](https://prng.di.unimi.it/) Uniform Random Number Generator derived types.<br>
2906 : !>
2907 : !> \see
2908 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
2909 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
2910 : !> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type)<br>
2911 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
2912 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
2913 : !>
2914 : !> \benchmarks
2915 : !>
2916 : !> \benchmark{xoshiro256ss_type, The runtime performance of intrinsic `random_number()` vs. [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) vs. [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).}
2917 : !> \include{lineno} benchmark/pm_distUnif/xoshiro256ss_type/main.F90
2918 : !> \compilefb{xoshiro256ss_type}
2919 : !> \postprocb{xoshiro256ss_type}
2920 : !> \include{lineno} benchmark/pm_distUnif/xoshiro256ss_type/main.py
2921 : !> \visb{xoshiro256ss_type}
2922 : !> \image html benchmark/pm_distUnif/xoshiro256ss_type/benchmark.xoshiro256ss_type.runtime.png width=1000
2923 : !> \image html benchmark/pm_distUnif/xoshiro256ss_type/benchmark.xoshiro256ss_type.runtime.ratio.png width=1000
2924 : !> \moralb{xoshiro256ss_type}
2925 : !> -# The [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) RNG
2926 : !> greedily attempts to use as many randomly generated bits as possible in the output random values.<br>
2927 : !> -# The [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) RNG
2928 : !> takes a wasteful approach of using at least one or more chunks of 64 randomly generated bits in the output random values.<br>
2929 : !> -# This fundamental difference between the two RNG types generally leads to faster random logical value generations with
2930 : !> the greedy approach, because 64bits chunks translate to 64 logical values without updating the RNG state.<br>
2931 : !> -# However, the greedy approach leads to generally slower runtimes for real random value generation.<br>
2932 : !> -# Both greedy and wasteful RNGs appear to be much faster than the ParaMonte
2933 : !> library wrappers for the implementations offered by \gfortran and \ifort.<br>
2934 : !> -# <b>Moral</b>: If your application requires many `logical` random number generations,
2935 : !> use the greedy [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) RNG.
2936 : !> Conversely, if your application requires a mixture of random number generations of various types and kinds,
2937 : !> use the wasteful [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) RNG.
2938 : !>
2939 : !> \test
2940 : !> [test_pm_distUnif](@ref test_pm_distUnif)
2941 : !>
2942 : !> \finmain{xoshiro256ss_type}
2943 : !>
2944 : !> \author
2945 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
2946 : type, abstract, extends(rngu_type) :: xoshiro256ss_type
2947 : !> \brief
2948 : !> The vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize)
2949 : !> of type `integer` of kind \IK64, containing the most recent RNG state.<br>
2950 : integer(IK64) :: state(xoshiro256ssStateSize) = [ -5952639272145821898_IK64 &
2951 : , -2790978430781836137_IK64 &
2952 : , -4872796757339724681_IK64 &
2953 : , -6638731986642513151_IK64 ]
2954 : !> \brief
2955 : !> The scalar of type `integer` of kind \IK64, containing the most recently generated random 64-bit stream.
2956 : integer(IK64) :: stream
2957 : end type
2958 :
2959 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2960 :
2961 : !> \brief
2962 : !> This is the derived type for declaring and generating objects of type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)
2963 : !> containing a unique instance of a [Xoshiro256**](https://prng.di.unimi.it/) random number generator (RNG).
2964 : !>
2965 : !> \details
2966 : !> See also the documentation of [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw) for information on the constructor of this type.<br>
2967 : !>
2968 : !> Xorshift random number generators, also called **shift-register generators**, are a class of pseudorandom
2969 : !> number generators that were invented by [George Marsaglia](https://en.wikipedia.org/wiki/George_Marsaglia).<br>
2970 : !> They are a subset of linear-feedback shift registers (LFSRs) which allow a particularly
2971 : !> efficient implementation in software without the excessive use of sparse polynomials.<br>
2972 : !> They generate the next number in their sequence by repeatedly taking the Exclusive OR (XOR)
2973 : !> of a number with a bit-shifted version of itself.<br>
2974 : !> This makes execution extremely efficient on modern computer architectures,
2975 : !> although it does not benefit efficiency in a hardware implementation.<br>
2976 : !> Like all LFSRs, the parameters have to be chosen very carefully in order to achieve a long period.<br>
2977 : !>
2978 : !> The [xoshiro256**](https://prng.di.unimi.it/) RNG implemented in this derived type
2979 : !> is a subclass of Xorshift RNGs developed by David Blackman and Sebastiano Vigna.<br>
2980 : !> It is a 64-bit RNG that uses a carefully constructed linear transformation combined with shifts and rotations.<br>
2981 : !> This produces a computationally fast RNG with claimed excellent statistical qualities.<br>
2982 : !> Xoshiro256 has a period of \f$2^{256} - 1\f$ and and supports jumping the sequence in increments of \f$2^128\f$ and \f$2^192\f$.<br>
2983 : !> This allows the creation of many non-overlapping RNG subsequences for parallel applications.<br>
2984 : !>
2985 : !> <b>xoshiro256** random seed</b>
2986 : !> The [xoshiro256**](https://prng.di.unimi.it/) state is determined by a vector of size
2987 : !> [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize) of type `integer` of kind \IK64.<br>
2988 : !> The RNG seed of [xoshiro256**](https://prng.di.unimi.it/) in this module is initialized based on either a user-specified scalar
2989 : !> initial seed value or an internal processor-dependent value based on the system clock.<br>
2990 : !> In either case, the seed is used as an input for another simple random number generator [splitMix64](@ref pm_distUnif::splitmix64_type)
2991 : !> and the output of this RNG is used as the initial state of [xoshiro256**](https://prng.di.unimi.it/).<br>
2992 : !>
2993 : !> <b>Parallel applications</b>
2994 : !> [xoshiro256**](https://prng.di.unimi.it/) has a period of \f$2^{256} - 1\f$ and and supports jumping the sequence in increments of \f$2^128\f$ and \f$2^192\f$.<br>
2995 : !> This allows the creation of many non-overlapping RNG subsequences for parallel applications.<br>
2996 : !> [xoshiro256**](https://prng.di.unimi.it/) can be used in parallel applications by passing the `imageID` of the current processor to the RNG constructor.<br>
2997 : !> By default, the RNG constructor makes jumps of size `2**128` in the RRNG sequence to initialize subsequent RNGs on different processors.<br>
2998 : !> While such jump size is more than enough for any practical applications in modern days, the future galactic humans can request longer jumps
2999 : !> of size `2**192` by passing the non-default longer jump vector [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192) to the
3000 : !> constructor of the RNG.<br>
3001 : !> In either case, all RNGs on different processors must be initialized with the same original seed and jump vector (but with different processor
3002 : !> IDs set by the `imageID` argument to the RNG constructor) to ensure that the individual RNG sequences on different processors do not overlap.
3003 : !>
3004 : !> <b>Usage instructions</b>
3005 : !> This derived type contains only the most recently updated state and random bit stream of the RNG.<br>
3006 : !> To generate random values of arbitrary intrinsic kinds (`character`, `integer`, `logical`, `complex`, `real`)
3007 : !> the user must,<br>
3008 : !> <ol>
3009 : !> <li> declare an object of type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) and
3010 : !> initialize the object via the type constructor [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)
3011 : !> (see below for the possible calling interfaces),
3012 : !> <li> pass the generated RNG instance to the desired random number generating routines,
3013 : !> <ol>
3014 : !> <li> [getUnifRand](@ref pm_distUnif::getUnifRand),
3015 : !> <li> [setUnifRand](@ref pm_distUnif::setUnifRand),
3016 : !> </ol>
3017 : !> to generate the desired scalar or sequence of random values.<br>
3018 : !> </ol>
3019 : !>
3020 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3021 : !> containing an integer that serves as the starting point to generate the full deterministic RNG seed.<br>
3022 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3023 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3024 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3025 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3026 : !> This can be,
3027 : !> <ol>
3028 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3029 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3030 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3031 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3032 : !> </ol>
3033 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3034 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3035 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3036 : !> \param[in] jump : The input vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize) of type `integer` of kind \IK64,
3037 : !> whose value sets the jump size of the random number generator.<br>
3038 : !> It can be,
3039 : !> <ol>
3040 : !> <li> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128), corresponding to a jump size of `imageID * 2**128`.<br>
3041 : !> This jump can be used to generate up to `2**128` unique RNG sequences in parallel, each with length `2**128`.<br>
3042 : !> <li> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192), corresponding to a jump size of `imageID * 2**192`.<br>
3043 : !> This jump can be used to generate up to `2**64` unique RNG sequences in parallel, each with length `2**192`.<br>
3044 : !> </ol>
3045 : !> (**optional**. default = [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128))
3046 : !>
3047 : !> \return
3048 : !> `rng` : The output scalar object (or array of objects, of the same rank and shape as the input array-like arguments)
3049 : !> of type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) containing an instance of a splitmix64
3050 : !> random number generator.<br>
3051 : !>
3052 : !> \interface{xoshiro256ssw_type}
3053 : !> \code{.F90}
3054 : !>
3055 : !> use pm_kind, only: IK
3056 : !> use pm_distUnif, only: xoshiro256ssw_type
3057 : !> type(xoshiro256ssw_type) :: rng
3058 : !>
3059 : !> rng = xoshiro256ssw_type(seed = seed, imageID = imageID, jump = jump)
3060 : !> rand = getUnifRand(rng, rand, lb, ub)
3061 : !> call setUnifRand(rng, rand, lb, ub)
3062 : !> call setUnifRand(rng, rand)
3063 : !>
3064 : !> \endcode
3065 : !>
3066 : !> \warning
3067 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3068 : !> \vericon
3069 : !>
3070 : !> \warning
3071 : !> Although the components of this derived type are `public`, they are theoretically `protected`.<br>
3072 : !> The end users must not manipulate the component values at any stages of the random number generation.<br>
3073 : !>
3074 : !> \note
3075 : !> Without initializing objects of this derived type, the generated RNGs will always be deterministic,
3076 : !> always yielding identical sequences.<br>
3077 : !>
3078 : !> \see
3079 : !> [rngf](@ref pm_distUnif::rngf)<br>
3080 : !> [isHead](@ref pm_distBern::isHead)<br>
3081 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3082 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3083 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3084 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3085 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3086 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3087 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3088 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3089 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3090 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3091 : !>
3092 : !> \example{xoshiro256ssw_type}
3093 : !> \include{lineno} example/pm_distUnif/xoshiro256ssw_type/main.F90
3094 : !> \compilef{xoshiro256ssw_type}
3095 : !> \output{xoshiro256ssw_type}
3096 : !> \include{lineno} example/pm_distUnif/xoshiro256ssw_type/main.out.F90
3097 : !> \postproc{xoshiro256ssw_type}
3098 : !> \include{lineno} example/pm_distUnif/xoshiro256ssw_type/main.py
3099 : !> \vis{xoshiro256ssw_type}
3100 : !> \image html pm_distUnif/xoshiro256ssw_type/xoshiro256ssw_type.IK.png width=700
3101 : !> \image html pm_distUnif/xoshiro256ssw_type/xoshiro256ssw_type.CK.png width=700
3102 : !> \image html pm_distUnif/xoshiro256ssw_type/xoshiro256ssw_type.RK.png width=700
3103 : !>
3104 : !> \test
3105 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3106 : !>
3107 : !> \todo
3108 : !> \phigh
3109 : !> An illustration of the distribution of the probability of individual bits being `0` or `1` in the
3110 : !> mantissa of `real`-valued random numbers and `integer` random numbers must be added to the example.<br>
3111 : !>
3112 : !> \finmain{xoshiro256ssw_type}
3113 : !>
3114 : !> \author
3115 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
3116 : type, extends(xoshiro256ss_type) :: xoshiro256ssw_type
3117 : end type
3118 :
3119 : !> \cond excluded
3120 : interface xoshiro256ssw_type
3121 : module procedure :: constructXoshiro256ssw
3122 : end interface
3123 : !> \endcond excluded
3124 :
3125 : !> \brief
3126 : !> Generate, initialize, and return a scalar object of type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).
3127 : !>
3128 : !> \details
3129 : !> This generic interface is the constructor of [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type).<br>
3130 : !> Upon return, the output object can be passed to [getUnifRand](@ref pm_distUnif::getUnifRand) and
3131 : !> [setUnifRand](@ref pm_distUnif::setUnifRand) to generate uniformly-distributed
3132 : !> random values of various intrinsic types and kinds.<br>
3133 : !> See the documentation of [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) for example usage and calling interface.
3134 : !>
3135 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3136 : !> containing an integer that serves as the starting point to generate the full deterministic RNG seed.<br>
3137 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3138 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3139 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3140 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3141 : !> This can be,
3142 : !> <ol>
3143 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3144 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3145 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3146 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3147 : !> </ol>
3148 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3149 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3150 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3151 : !> \param[in] jump : The input vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize) of type `integer` of kind \IK64,
3152 : !> whose value sets the jump size of the random number generator.<br>
3153 : !> It can be,
3154 : !> <ol>
3155 : !> <li> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128), corresponding to a jump size of `imageID * 2**128`.<br>
3156 : !> This jump can be used to generate up to `2**128` unique RNG sequences in parallel, each with length `2**128`.<br>
3157 : !> <li> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192), corresponding to a jump size of `imageID * 2**192`.<br>
3158 : !> This jump can be used to generate up to `2**64` unique RNG sequences in parallel, each with length `2**192`.<br>
3159 : !> </ol>
3160 : !> (**optional**. default = [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128))
3161 : !>
3162 : !> \return
3163 : !> `rng` : The output scalar object of type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)
3164 : !> containing an instance of a [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type) random number generator.<br>
3165 : !>
3166 : !> \interface{constructXoshiro256ssw}
3167 : !> \code{.F90}
3168 : !>
3169 : !> use pm_kind, only: IK
3170 : !> use pm_distUnif, only: xoshiro256ssw_type
3171 : !> use pm_distUnif, only: getUnifRand, setUnifRand
3172 : !> type(xoshiro256ssw_type) :: rng
3173 : !>
3174 : !> rng = xoshiro256ssw_type(seed = seed, imageID = imageID, jump = jump)
3175 : !> rand = getUnifRand(rng, rand, lb, ub)
3176 : !> call setUnifRand(rng, rand, lb, ub)
3177 : !> call setUnifRand(rng, rand)
3178 : !>
3179 : !> \endcode
3180 : !>
3181 : !> \warning
3182 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3183 : !> \vericon
3184 : !>
3185 : !> \impure
3186 : !>
3187 : !> \see
3188 : !> [isHead](@ref pm_distBern::isHead)<br>
3189 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3190 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3191 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3192 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3193 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3194 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3195 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
3196 : !> [constructFRNG](@ref pm_distUnif::constructFRNG)<br>
3197 : !>
3198 : !> \test
3199 : !> [test_pm_distUnif](@ref test_pm_distUnif)<br>
3200 : !>
3201 : !> \finmain{constructXoshiro256ssw}
3202 : !>
3203 : !> \author
3204 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
3205 : interface constructXoshiro256ssw
3206 : impure module function constructXoshiro256ssw(seed, imageID, jump) result(rng)
3207 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3208 : !DEC$ ATTRIBUTES DLLEXPORT :: constructXoshiro256ssw
3209 : #endif
3210 : use pm_kind, only: IKC => IK64
3211 : integer(IKC) , intent(in), optional :: seed, jump(:)
3212 : integer(IK) , intent(in), optional :: imageID
3213 : type(xoshiro256ssw_type) :: rng
3214 : end function
3215 : end interface
3216 :
3217 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3218 :
3219 : !> \brief
3220 : !> This is the derived type for declaring and generating objects of type [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type)
3221 : !> containing a unique instance of a **greedy** [Xoshiro256**](https://prng.di.unimi.it/) random number generator (RNG).
3222 : !>
3223 : !> \details
3224 : !> Unlike the `Xoshiro256**` algorithm as implemented by the derived type [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type),
3225 : !> the greedy version of the algorithm here does not waste any of the randomly generated 64 bits in each update the RNG state.<br>
3226 : !> See also the documentation of [constructXoshiro256ssg](@ref pm_distUnif::constructXoshiro256ssg) for information on the constructor of this type.<br>
3227 : !>
3228 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3229 : !> containing an integer that serves as the starting point to generate the full deterministic RNG seed.<br>
3230 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3231 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3232 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3233 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3234 : !> This can be,
3235 : !> <ol>
3236 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3237 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3238 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3239 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3240 : !> </ol>
3241 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3242 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3243 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3244 : !> \param[in] jump : The input vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize) of type `integer` of kind \IK64,
3245 : !> whose value sets the jump size of the random number generator.<br>
3246 : !> It can be,
3247 : !> <ol>
3248 : !> <li> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128), corresponding to a jump size of `imageID * 2**128`.<br>
3249 : !> This jump can be used to generate up to `2**128` unique RNG sequences in parallel, each with length `2**128`.<br>
3250 : !> <li> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192), corresponding to a jump size of `imageID * 2**192`.<br>
3251 : !> This jump can be used to generate up to `2**64` unique RNG sequences in parallel, each with length `2**192`.<br>
3252 : !> </ol>
3253 : !> (**optional**. default = [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128))
3254 : !>
3255 : !> \return
3256 : !> `rng` : The output scalar object (or array of objects, of the same rank and shape as the input array-like arguments)
3257 : !> of type [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) containing an instance of a splitmix64
3258 : !> random number generator.<br>
3259 : !>
3260 : !> \interface{xoshiro256ssg_type}
3261 : !> \code{.F90}
3262 : !>
3263 : !> use pm_kind, only: IK
3264 : !> use pm_distUnif, only: xoshiro256ssg_type
3265 : !> type(xoshiro256ssg_type) :: rng
3266 : !>
3267 : !> rng = xoshiro256ssg_type(seed = seed, imageID = imageID, jump = jump)
3268 : !> rand = getUnifRand(rng, rand, lb, ub)
3269 : !> call setUnifRand(rng, rand, lb, ub)
3270 : !> call setUnifRand(rng, rand)
3271 : !>
3272 : !> \endcode
3273 : !>
3274 : !> \warning
3275 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3276 : !> \vericon
3277 : !>
3278 : !> \warning
3279 : !> Although the components of this derived type are `public`, they are theoretically `protected`.<br>
3280 : !> The end users must not manipulate the component values at any stages of the random number generation.<br>
3281 : !>
3282 : !> \note
3283 : !> Without initializing objects of this derived type, the generated RNGs will always be deterministic,
3284 : !> always yielding identical sequences.<br>
3285 : !>
3286 : !> \see
3287 : !> [rngf](@ref pm_distUnif::rngf)<br>
3288 : !> [isHead](@ref pm_distBern::isHead)<br>
3289 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3290 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3291 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3292 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3293 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3294 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3295 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3296 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3297 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3298 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3299 : !>
3300 : !> \example{xoshiro256ssg_type}
3301 : !> \include{lineno} example/pm_distUnif/xoshiro256ssg_type/main.F90
3302 : !> \compilef{xoshiro256ssg_type}
3303 : !> \output{xoshiro256ssg_type}
3304 : !> \include{lineno} example/pm_distUnif/xoshiro256ssg_type/main.out.F90
3305 : !> \postproc{xoshiro256ssg_type}
3306 : !> \include{lineno} example/pm_distUnif/xoshiro256ssg_type/main.py
3307 : !> \vis{xoshiro256ssg_type}
3308 : !> \image html pm_distUnif/xoshiro256ssg_type/xoshiro256ssg_type.IK.png width=700
3309 : !> \image html pm_distUnif/xoshiro256ssg_type/xoshiro256ssg_type.CK.png width=700
3310 : !> \image html pm_distUnif/xoshiro256ssg_type/xoshiro256ssg_type.RK.png width=700
3311 : !>
3312 : !> \test
3313 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3314 : !>
3315 : !> \todo
3316 : !> \phigh
3317 : !> An illustration of the distribution of the probability of individual bits being `0` or `1` in the
3318 : !> mantissa of `real`-valued random numbers and `integer` random numbers must be added to the example.<br>
3319 : !>
3320 : !> \finmain{xoshiro256ssg_type}
3321 : !>
3322 : !> \author
3323 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
3324 : type, extends(xoshiro256ss_type) :: xoshiro256ssg_type
3325 : !> \brief
3326 : !> The scalar of type `integer` of default kind \IK, containing the
3327 : !> position of the first unused bit of the `stream` component of the RNG object.
3328 : integer(IK) :: pos = 0_IK
3329 : end type
3330 :
3331 : !> \cond excluded
3332 : interface xoshiro256ssg_type
3333 : module procedure :: constructXoshiro256ssg
3334 : end interface
3335 : !> \endcond excluded
3336 :
3337 : !> \brief
3338 : !> Generate, initialize, and return a scalar object of type [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type).
3339 : !>
3340 : !> \details
3341 : !> This generic interface is the constructor of [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type).<br>
3342 : !> Upon return, the output object can be passed to [getUnifRand](@ref pm_distUnif::getUnifRand) and
3343 : !> [setUnifRand](@ref pm_distUnif::setUnifRand) to generate uniformly-distributed
3344 : !> random values of various intrinsic types and kinds.<br>
3345 : !> See the documentation of [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) for example usage and calling interface.
3346 : !>
3347 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3348 : !> containing an integer that serves as the starting point to generate the full deterministic RNG seed.<br>
3349 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3350 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3351 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3352 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3353 : !> This can be,
3354 : !> <ol>
3355 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3356 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3357 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3358 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3359 : !> </ol>
3360 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3361 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3362 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3363 : !> \param[in] jump : The input vector of size [xoshiro256ssStateSize](@ref pm_distUnif::xoshiro256ssStateSize) of type `integer` of kind \IK64,
3364 : !> whose value sets the jump size of the random number generator.<br>
3365 : !> It can be,
3366 : !> <ol>
3367 : !> <li> [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128), corresponding to a jump size of `imageID * 2**128`.<br>
3368 : !> This jump can be used to generate up to `2**128` unique RNG sequences in parallel, each with length `2**128`.<br>
3369 : !> <li> [xoshiro256ssJump192](@ref pm_distUnif::xoshiro256ssJump192), corresponding to a jump size of `imageID * 2**192`.<br>
3370 : !> This jump can be used to generate up to `2**64` unique RNG sequences in parallel, each with length `2**192`.<br>
3371 : !> </ol>
3372 : !> (**optional**. default = [xoshiro256ssJump128](@ref pm_distUnif::xoshiro256ssJump128))
3373 : !>
3374 : !> \return
3375 : !> `rng` : The output scalar object of type [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type)
3376 : !> containing an instance of a [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type) random number generator.<br>
3377 : !>
3378 : !> \interface{constructXoshiro256ssg}
3379 : !> \code{.F90}
3380 : !>
3381 : !> use pm_kind, only: IK
3382 : !> use pm_distUnif, only: xoshiro256ssg_type
3383 : !> type(xoshiro256ssg_type) :: rng
3384 : !>
3385 : !> rng = xoshiro256ssg_type(seed = seed, imageID = imageID, jump = jump)
3386 : !> rand = getUnifRand(rng, rand, lb, ub)
3387 : !> call setUnifRand(rng, rand, lb, ub)
3388 : !> call setUnifRand(rng, rand)
3389 : !>
3390 : !> \endcode
3391 : !>
3392 : !> \warning
3393 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3394 : !> \vericon
3395 : !>
3396 : !> \impure
3397 : !>
3398 : !> \see
3399 : !> [isHead](@ref pm_distBern::isHead)<br>
3400 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3401 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3402 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3403 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3404 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3405 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3406 : !> [constructXoshiro256ssw](@ref pm_distUnif::constructXoshiro256ssw)<br>
3407 : !> [constructFRNG](@ref pm_distUnif::constructFRNG)<br>
3408 : !>
3409 : !> \test
3410 : !> [test_pm_distUnif](@ref test_pm_distUnif)<br>
3411 : !>
3412 : !> \finmain{constructXoshiro256ssw}
3413 : !>
3414 : !> \author
3415 : !> \FatemehBagheri, Wednesday 12:20 AM, October 13, 2021, Dallas, TX
3416 : interface constructXoshiro256ssg
3417 : impure module function constructXoshiro256ssg(seed, imageID, jump) result(rng)
3418 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3419 : !DEC$ ATTRIBUTES DLLEXPORT :: constructXoshiro256ssg
3420 : #endif
3421 : use pm_kind, only: IKC => IK64
3422 : integer(IKC) , intent(in), optional :: seed, jump(:)
3423 : integer(IK) , intent(in), optional :: imageID
3424 : type(xoshiro256ssg_type) :: rng
3425 : end function
3426 : end interface
3427 :
3428 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3429 :
3430 : !> \brief
3431 : !> This is the derived type for declaring and generating objects of type [splitmix64_type](@ref pm_distUnif::splitmix64_type)
3432 : !> containing a unique instance of an [splitmix64](https://doi.org/10.1145/2660193.2660195) random number generator (RNG).
3433 : !>
3434 : !> \details
3435 : !> See also the documentation of [constructSplitmix64](@ref pm_distUnif::constructSplitmix64) for information on the constructor of this type.<br>
3436 : !>
3437 : !> Splitmix64 is a pseudo-random number generator algorithm that originated from
3438 : !> the Java programming language and is used in many other programming languages.<br>
3439 : !> It is a fairly simple algorithm that is fast but unsuitable for cryptographic purposes and comparable tasks.<br>
3440 : !> The Splitmix64 algorithm is frequently used to calculate random initial states (seed) of other more complex pseudo-random number generators.<br>
3441 : !> The conventional splitmix64 holds one 64bit state (seed) variable and returns 64bits of random binary data upon subsequent calls.<br>
3442 : !> Splitmix64 is comparatively fast; It requires only 9 64-bit arithmetic/logical operations per 64 bits of random binary stream generation.<br>
3443 : !> A conventional linear RNG provides a generate method that returns one pseudorandom value and updates the state of the RNG.<br>
3444 : !> But the splitable RNG also has a second operation, split, that replaces the original RNG with two (seemingly) independent RNG.<br>
3445 : !> This is done by creating and returning a new such RNG and updating the state of the original object.<br>
3446 : !>
3447 : !> <b>Applications</b>
3448 : !>
3449 : !> Splitable RNG make it easy to organize the use of pseudorandom numbers in multithreaded programs structured using forkjoin parallelism.<br>
3450 : !> No locking or synchronization is required (other than the usual memory fence immediately after RNG creation).<br>
3451 : !> Because the generate method has no loops or conditionals, it is also suitable for SIMD or GPU implementation.<br>
3452 : !>
3453 : !> <b>Usage instructions</b>
3454 : !> This derived type contains only the most recently updated state and random bit stream of the RNG.<br>
3455 : !> To generate random values of arbitrary intrinsic kinds (`character`, `integer`, `logical`, `complex`, `real`)
3456 : !> the user must,<br>
3457 : !> <ol>
3458 : !> <li> declare an object of type [splitmix64_type](@ref pm_distUnif::splitmix64_type) and
3459 : !> initialize the object via the type constructor [constructSplitmix64](@ref pm_distUnif::constructSplitmix64)
3460 : !> (see below for the possible calling interfaces),
3461 : !> <li> pass the generated RNG instance to the desired random number generating routines,
3462 : !> <ol>
3463 : !> <li> [getUnifRand](@ref pm_distUnif::getUnifRand),
3464 : !> <li> [setUnifRand](@ref pm_distUnif::setUnifRand),
3465 : !> </ol>
3466 : !> to generate the desired scalar or sequence of random values.<br>
3467 : !> </ol>
3468 : !>
3469 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3470 : !> containing an integer that serves as the starting point to generate the full RNG seed.<br>
3471 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3472 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3473 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3474 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3475 : !> This can be,
3476 : !> <ol>
3477 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3478 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3479 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3480 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3481 : !> </ol>
3482 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3483 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3484 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3485 : !>
3486 : !> \return
3487 : !> `rng` : The output scalar object (or array of objects, of the same rank and shape as the input array-like arguments)
3488 : !> of type [splitmix64_type](@ref pm_distUnif::splitmix64_type) containing an instance of a splitmix64
3489 : !> random number generator.<br>
3490 : !>
3491 : !> \interface{splitmix64_type}
3492 : !> \code{.F90}
3493 : !>
3494 : !> use pm_kind, only: IK
3495 : !> use pm_distUnif, only: splitmix64_type
3496 : !> type(splitmix64_type) :: rng
3497 : !>
3498 : !> rng = splitmix64_type(seed = seed, imageID = imageID)
3499 : !> print *, rng%state ! The current RNG state.
3500 : !> print *, rng%stream ! The current 64bit integer random number.
3501 : !> !
3502 : !> \endcode
3503 : !>
3504 : !> \warning
3505 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3506 : !> \vericon
3507 : !>
3508 : !> \warning
3509 : !> Although the components of this derived type are `public`, they are theoretically `protected`.<br>
3510 : !> The end user must not change the values of the components of an object of type [splitmix64_type](@ref pm_distUnif::splitmix64_type)
3511 : !> at anytime during the random value generation.<br>
3512 : !>
3513 : !> \warning
3514 : !> The Splitmix64 algorithm is not necessarily the best option for generating random values, particularly, for parallel applications.<br>
3515 : !> Use [xoshiro256**](@ref pm_distUnif::xoshiro256ssw_type) algorithm instead.<br>
3516 : !>
3517 : !> \see
3518 : !> [rngf](@ref pm_distUnif::rngf)<br>
3519 : !> [isHead](@ref pm_distBern::isHead)<br>
3520 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3521 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3522 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3523 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3524 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3525 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3526 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3527 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3528 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3529 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3530 : !>
3531 : !> \example{splitmix64_type}
3532 : !> \include{lineno} example/pm_distUnif/splitmix64_type/main.F90
3533 : !> \compilef{splitmix64_type}
3534 : !> \output{splitmix64_type}
3535 : !> \include{lineno} example/pm_distUnif/splitmix64_type/main.out.F90
3536 : !> \postproc{splitmix64_type}
3537 : !> \include{lineno} example/pm_distUnif/splitmix64_type/main.py
3538 : !> \vis{splitmix64_type}
3539 : !> \image html pm_distUnif/splitmix64_type/splitmix64_type.IK.png width=700
3540 : !> \image html pm_distUnif/splitmix64_type/splitmix64_type.CK.png width=700
3541 : !> \image html pm_distUnif/splitmix64_type/splitmix64_type.RK.png width=700
3542 : !>
3543 : !> \test
3544 : !> [test_pm_distUnif](@ref test_pm_distUnif)<br>
3545 : !>
3546 : !> \todo
3547 : !> \phigh
3548 : !> An illustration of the distribution of the probability of individual bits being `0` or `1` in the
3549 : !> mantissa of `real`-valued random numbers and `integer` random numbers must be added to the example.<br>
3550 : !>
3551 : !> \finmain{splitmix64_type}
3552 : !>
3553 : !> \author
3554 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
3555 : type, extends(rngu_type) :: splitmix64_type
3556 : !> \brief
3557 : !> The scalar of type `integer` of kind \IK64, containing the most recently generated random 64-bit stream.
3558 : integer(IK64) :: stream
3559 : !> \brief
3560 : !> The scalar of type `integer` of kind \IK64, containing the most recent RNG state.<br>
3561 : integer(IK64) :: state = 324108011427370141_IK64
3562 : end type
3563 :
3564 : !> \cond excluded
3565 : interface splitmix64_type
3566 : module procedure :: constructSplitmix64
3567 : end interface
3568 : !> \endcond excluded
3569 :
3570 : !> \brief
3571 : !> Generate, initialize, and return a scalar object of type [splitmix64_type](@ref pm_distUnif::splitmix64_type).
3572 : !>
3573 : !> \details
3574 : !> This generic interface is the constructor of [splitmix64_type](@ref pm_distUnif::splitmix64_type).<br>
3575 : !> Upon return, the output object can be passed to [getUnifRand](@ref pm_distUnif::getUnifRand) and
3576 : !> [setUnifRand](@ref pm_distUnif::setUnifRand) to generate uniformly-distributed
3577 : !> random values of various intrinsic types and kinds using the [splitmix64](https://doi.org/10.1145/2660193.2660195) algorithm.<br>
3578 : !> See the documentation of [splitmix64_type](@ref pm_distUnif::splitmix64_type) for example usage and calling interface.
3579 : !>
3580 : !> \param[in] seed : The input scalar of type `integer` of kind \IK64,
3581 : !> containing an integer that serves as the starting point to generate the full RNG seed.<br>
3582 : !> Specify this input argument if you wish to make random simulations reproducible and deterministic,
3583 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3584 : !> (**optional**. If missing, it is set to a processor-dependent value based on the current date and time.)
3585 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3586 : !> This can be,
3587 : !> <ol>
3588 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3589 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3590 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3591 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3592 : !> </ol>
3593 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3594 : !> This number will be used to set the RNG seed uniquely on each processor.<br>
3595 : !> (**optional**. If missing, the RNG seed will be set as if it is called in a serial application (or called on the first image).)
3596 : !>
3597 : !> \return
3598 : !> `rng` : The output scalar object (or array of objects, of the same rank and shape as the input array-like arguments)
3599 : !> of type [splitmix64_type](@ref pm_distUnif::splitmix64_type) containing an instance of the splitmix64
3600 : !> random number generator.<br>
3601 : !>
3602 : !> \interface{splitmix64_type}
3603 : !> \code{.F90}
3604 : !>
3605 : !> use pm_kind, only: IK
3606 : !> use pm_distUnif, only: splitmix64_type
3607 : !> type(splitmix64_type) :: rng
3608 : !>
3609 : !> rng = splitmix64_type(seed = seed, imageID = imageID)
3610 : !> print *, rng%state ! The current RNG state.
3611 : !> print *, rng%stream ! The current 64bit integer random number.
3612 : !> !
3613 : !> \endcode
3614 : !>
3615 : !> \warning
3616 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3617 : !> \vericon
3618 : !>
3619 : !> \impure
3620 : !>
3621 : !> \elemental
3622 : !>
3623 : !> \see
3624 : !> [rngf](@ref pm_distUnif::rngf)<br>
3625 : !> [isHead](@ref pm_distBern::isHead)<br>
3626 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3627 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3628 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3629 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3630 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3631 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3632 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3633 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3634 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3635 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3636 : !>
3637 : !> \test
3638 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3639 : !>
3640 : !> \finmain{constructSplitmix64}
3641 : !>
3642 : !> \author
3643 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
3644 : interface constructSplitmix64
3645 : impure elemental module function constructSplitmix64(seed, imageID) result(rng)
3646 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3647 : !DEC$ ATTRIBUTES DLLEXPORT :: constructSplitmix64
3648 : #endif
3649 : use pm_kind, only: IKC => IK64
3650 : integer(IKC) , intent(in), optional :: seed
3651 : integer(IK) , intent(in), optional :: imageID
3652 : type(splitmix64_type) :: rng
3653 : end function
3654 : end interface
3655 :
3656 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3657 :
3658 : !> \cond excluded
3659 : interface setStateNext
3660 :
3661 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3662 :
3663 : pure module subroutine setStateNextSM64(rng)
3664 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3665 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateNextSM64
3666 : #endif
3667 : use pm_kind, only: IK64
3668 : type(splitmix64_type) , intent(inout) :: rng
3669 : end subroutine
3670 :
3671 : pure module subroutine setStateNextX256SSG(rng)
3672 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3673 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateNextX256SSG
3674 : #endif
3675 : use pm_kind, only: IK64
3676 : type(xoshiro256ssg_type), intent(inout) :: rng
3677 : end subroutine
3678 :
3679 : pure module subroutine setStateNextX256SSW(rng)
3680 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3681 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateNextX256SSW
3682 : #endif
3683 : use pm_kind, only: IK64
3684 : type(xoshiro256ssw_type) , intent(inout) :: rng
3685 : end subroutine
3686 :
3687 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3688 :
3689 : end interface
3690 : !> \endcond excluded
3691 :
3692 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3693 :
3694 : !> \cond excluded
3695 : interface setStateJump
3696 :
3697 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3698 :
3699 : ! default jump
3700 : PURE module subroutine setStateJumpX256SSGDJ(rng)
3701 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3702 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateJumpX256SSGDJ
3703 : #endif
3704 : use pm_kind, only: IK64
3705 : type(xoshiro256ssg_type), intent(inout) :: rng
3706 : end subroutine
3707 :
3708 : ! arbitrary jump
3709 : PURE module subroutine setStateJumpX256SSGAJ(rng, jump)
3710 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3711 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateJumpX256SSGAJ
3712 : #endif
3713 : use pm_kind, only: IK64
3714 : type(xoshiro256ssg_type), intent(inout) :: rng
3715 : integer(IK64) , intent(in) :: jump(:)
3716 : end subroutine
3717 :
3718 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3719 :
3720 : ! default jump
3721 : PURE module subroutine setStateJumpX256SSWDJ(rng)
3722 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3723 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateJumpX256SSWDJ
3724 : #endif
3725 : use pm_kind, only: IK64
3726 : type(xoshiro256ssw_type), intent(inout) :: rng
3727 : end subroutine
3728 :
3729 : ! arbitrary jump
3730 : PURE module subroutine setStateJumpX256SSWAJ(rng, jump)
3731 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3732 : !DEC$ ATTRIBUTES DLLEXPORT :: setStateJumpX256SSWAJ
3733 : #endif
3734 : use pm_kind, only: IK64
3735 : type(xoshiro256ssw_type), intent(inout) :: rng
3736 : integer(IK64) , intent(in) :: jump(:)
3737 : end subroutine
3738 :
3739 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3740 :
3741 : end interface
3742 : !> \endcond excluded
3743 :
3744 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3745 :
3746 : !> \brief
3747 : !> Generate and return the size of the seed vector of the Fortran default random number generator (RNG).
3748 : !>
3749 : !> \details
3750 : !> The functionality of this generic interface is equivalent to `random_seed(size = size)`.
3751 : !>
3752 : !> \return
3753 : !> `seedSize` : The output scalar of type `integer` of default kind \IK containing the size of the default Fortran RNG seed vector.
3754 : !>
3755 : !> \interface{getUnifRandStateSize}
3756 : !> \code{.F90}
3757 : !>
3758 : !> use pm_kind, only: IK
3759 : !> use pm_distUnif, only: getUnifRandStateSize
3760 : !> integer(IK) :: seedSize
3761 : !>
3762 : !> seedSize = getUnifRandStateSize()
3763 : !>
3764 : !> \endcode
3765 : !>
3766 : !> \impure
3767 : !>
3768 : !> \see
3769 : !> [rngf](@ref pm_distUnif::rngf)<br>
3770 : !> [isHead](@ref pm_distBern::isHead)<br>
3771 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3772 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3773 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3774 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3775 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3776 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3777 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3778 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3779 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3780 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3781 : !>
3782 : !> \example{getUnifRandStateSize}
3783 : !> \include{lineno} example/pm_distUnif/getUnifRandStateSize/main.F90
3784 : !> \compilef{getUnifRandStateSize}
3785 : !> \output{getUnifRandStateSize}
3786 : !> \include{lineno} example/pm_distUnif/getUnifRandStateSize/main.out.F90
3787 : !>
3788 : !> \test
3789 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3790 : !>
3791 : !> \finmain{getUnifRandStateSize}
3792 : !>
3793 : !> \author
3794 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
3795 : interface getUnifRandStateSize
3796 : impure module function getUnifRandStateSizeDef() result(unifRandStateSize)
3797 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3798 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandStateSizeDef
3799 : #endif
3800 : use pm_kind, only: IK
3801 : integer(IK) :: unifRandStateSize
3802 : end function
3803 : end interface
3804 :
3805 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3806 :
3807 : !> \brief
3808 : !> Generate and return an `allocatable` array of rank `1` containing the state vector of the Fortran default random number generator (RNG) or,
3809 : !> optionally set the RNG state based on a reference input scalar seed, optionally distinctly on each processor.
3810 : !>
3811 : !> \details
3812 : !> The procedures of this generic interface are merely wrappers around the procedures of the generic interface
3813 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState) that additionally return the current RNG state.<br>
3814 : !> If both `seed` and `imageID` input arguments are missing, the procedures simply return the current RNG state.<br>
3815 : !> Otherwise, the behavior is identical to that of [setUnifRandState](@ref pm_distUnif::setUnifRandState).<br>
3816 : !>
3817 : !> \param[in] seed : See the documentation of the corresponding input argument to [setUnifRandState](@ref pm_distUnif::setUnifRandState).<br>
3818 : !> \param[in] imageID : See the documentation of the corresponding input argument to [setUnifRandState](@ref pm_distUnif::setUnifRandState).<br>
3819 : !>
3820 : !> \return
3821 : !> `unifRandState` : The output `allocatable` vector of rank `1` whose length equals the `size` of the random state
3822 : !> vector of the default Fortran RNG as returned by the Fortran intrinsic `random_seed(size = size)`.<br>
3823 : !>
3824 : !> \interface{getUnifRandState}
3825 : !> \code{.F90}
3826 : !>
3827 : !> use pm_lkind, only: IK
3828 : !> use pm_distUnif, only: getUnifRandState
3829 : !> integer(IK), allocatable :: unifRandState(:)
3830 : !>
3831 : !> unifRandState = getUnifRandState(seed = seed, imageID = imageID)
3832 : !>
3833 : !> \endcode
3834 : !>
3835 : !> \impure
3836 : !>
3837 : !> \see
3838 : !> [rngf](@ref pm_distUnif::rngf)<br>
3839 : !> [isHead](@ref pm_distBern::isHead)<br>
3840 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3841 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3842 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3843 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3844 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3845 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3846 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3847 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3848 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3849 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3850 : !>
3851 : !> \example{getUnifRandState}
3852 : !> \include{lineno} example/pm_distUnif/getUnifRandState/main.F90
3853 : !> \compilef{getUnifRandState}
3854 : !> \output{getUnifRandState}
3855 : !> \include{lineno} example/pm_distUnif/getUnifRandState/main.out.F90
3856 : !>
3857 : !> \test
3858 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3859 : !>
3860 : !> \finmain{getUnifRandState}
3861 : !>
3862 : !> \author
3863 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
3864 : interface getUnifRandState
3865 : impure module function getUnifRandStateDef(seed, imageID) result(unifRandState)
3866 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3867 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandStateDef
3868 : #endif
3869 : use pm_kind, only: IK, LK
3870 : integer(IK) , intent(in) , optional :: seed, imageID
3871 : integer(IK) , allocatable :: unifRandState(:)
3872 : end function
3873 : end interface
3874 :
3875 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3876 :
3877 : !> \brief
3878 : !> Set the state of the Fortran default random number generator (RNG) to a random value or to an optionally deterministic,
3879 : !> optionally processor-dependent value based on the user-specified input scalar seed and processor ID.
3880 : !>
3881 : !> \details
3882 : !> The procedures of this generic interface offer a convenient interface for the following tasks:
3883 : !> <ol>
3884 : !> <li> When all optional arguments are missing, this generic interface
3885 : !> (re)sets the state of the default Fortran RNG to random values.<br>
3886 : !> <li> When the optional argument `seed` is present and `imageID` is missing,
3887 : !> this generic interface sets the RNG state vector to a deterministic value
3888 : !> exclusively based on the input scalar `seed`.<br>
3889 : !> The generated state vector is set identically on all
3890 : !> images/processes/threads that individually call this generic interface.<br>
3891 : !> <li> When both optional arguments `seed` and `imageID` are present,
3892 : !> this generic interface sets the RNG state vector to a deterministic value
3893 : !> unique to each process/thread/image (based on the specified input process-unique `imageID`).<br>
3894 : !> </ol>
3895 : !>
3896 : !> \param[in] seed : The input scalar of type `integer` of default kind \IK,
3897 : !> containing a positive integer that serves as the starting point to generate the full RNG state.<br>
3898 : !> Specify this input argument if you wish to make random simulations reproducible,
3899 : !> even between multiple independent runs of the program compiled by the same compiler.<br>
3900 : !> (**optional**. If missing, it is set to a value determined by the current date and time.)
3901 : !> \param[in] imageID : The input positive scalar `integer` of default kind \IK containing the ID of the current image/thread/process.<br>
3902 : !> This can be,
3903 : !> <ol>
3904 : !> <li> The Coarray image ID as returned by Fortran intrinsic `this_image()` within a global team of Coarray images.<br>
3905 : !> <li> The MPI rank of the processor (plus one) as returned by the MPI library intrinsic `mpi_comm_rank()`.<br>
3906 : !> <li> The OpenMP thread number as returned by the OpenMP library intrinsic `omp_get_thread_num()`.<br>
3907 : !> <li> Any (positive) integer that uniquely identifies the current processor from other processes.<br>
3908 : !> </ol>
3909 : !> The image/process/thread ID can be readily obtained by calling [getImageID](@ref pm_parallelism::getImageID).<br>
3910 : !> This number will be used to set the RNG state uniquely on each processor.<br>
3911 : !> (**optional**. If missing, the RNG state will be set identically on all images.)
3912 : !>
3913 : !> \interface{setUnifRandState}
3914 : !> \code{.F90}
3915 : !>
3916 : !> use pm_lkind, only: IK
3917 : !> use pm_distUnif, only: setUnifRandState
3918 : !>
3919 : !> call setUnifRandState(seed = seed, imageID = imageID)
3920 : !>
3921 : !> \endcode
3922 : !>
3923 : !> \warning
3924 : !> The condition `0 < imageID` must hold for the corresponding input arguments.<br>
3925 : !>
3926 : !> \impure
3927 : !>
3928 : !> \see
3929 : !> [rngf](@ref pm_distUnif::rngf)<br>
3930 : !> [isHead](@ref pm_distBern::isHead)<br>
3931 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
3932 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
3933 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
3934 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
3935 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
3936 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
3937 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
3938 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
3939 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
3940 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
3941 : !>
3942 : !> \example{setUnifRandState}
3943 : !> \include{lineno} example/pm_distUnif/setUnifRandState/main.F90
3944 : !> \compilef{setUnifRandState}
3945 : !> \output{setUnifRandState}
3946 : !> \include{lineno} example/pm_distUnif/setUnifRandState/main.out.F90
3947 : !>
3948 : !> \test
3949 : !> [test_pm_distUnif](@ref test_pm_distUnif)
3950 : !>
3951 : !> \finmain{setUnifRandState}
3952 : !>
3953 : !> \author
3954 : !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
3955 : interface setUnifRandState
3956 : impure module subroutine setUnifRandStateDef(seed, imageID)
3957 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3958 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandStateDef
3959 : #endif
3960 : use pm_kind, only: IK
3961 : integer(IK) , intent(in) , optional :: seed, imageID
3962 : end subroutine
3963 : end interface
3964 :
3965 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3966 :
3967 : !> \brief
3968 : !> Generate and return a scalar or a `contiguous` array of rank `1` of length `s1` of randomly uniformly distributed
3969 : !> discrete `logical`, `integer`, `character` value(s), or continuous `real` or `complex value(s) within the specified input range.<br>
3970 : !>
3971 : !> \param[inout] rng : The input/output scalar of type,
3972 : !> <ol>
3973 : !> <li> [rngf_type](@ref pm_distUnif::rngf_type), or
3974 : !> <li> [splitmix64_type](@ref pm_distUnif::splitmix64_type), or
3975 : !> <li> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type),
3976 : !> <li> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type),
3977 : !> </ol>
3978 : !> containing the user-specified random number generator algorithm to be used.<br>
3979 : !> The user must initialize the object with the corresponding type constructors if non-deterministic RNG are desired.
3980 : !> (**optional**, default = [rngf_type](@ref pm_distUnif::rngf_type))
3981 : !> \param[in] lb : The input scalar (or array of the same shape as the desired output `rand` and other input array-like arguments)
3982 : !> of the same type and kind as the output `rand`, representing the lower bound of the Uniform distribution.<br>
3983 : !> If the output random value `rand` is to be of type `logical`, then `lb`, if present, must be `logical(.false., kind = kind(rand))`.<br>
3984 : !> If the input argument `s1` is present, then `lb` must be a scalar.<br>
3985 : !> (**optional**, default = `.false.`)
3986 : !> \param[in] ub : The input scalar or array of the same type, kind, rank, and shape as `lb`, representing the upper bound of the Uniform distribution.<br>
3987 : !> If the input argument `s1` is present, `ub` must be a scalar.<br>
3988 : !> If the output random value `rand` is to be of type `logical`, then `ub`, if present, must be `logical(.true., kind = kind(rand))`.<br>
3989 : !> (**optional**, default = `.true.`)
3990 : !> \param[in] s1 : The input scalar of type `integer` of default kind \IK, representing the size of the output `rand` array along its first dimension.<br>
3991 : !> (**optional**. It must be present if `s2` is present. If missing, the rank and size of the output `rand` is that of `lb` or `ub` with a non-zero rank.)
3992 : !> \param[in] s2 : The input scalar of type `integer` of default kind \IK, representing the size of the output `rand` array along its second dimension.<br>
3993 : !> (**optional**. It must be present if `s3` is present. If missing, the rank and size of the output `rand` is that of `lb` or `ub` with a non-zero rank.)
3994 : !>
3995 : !> \return
3996 : !> `rand` : The output scalar or vector of rank `1` of length `s1` or array of the same shape as the non-zero rank of the input `lb` and `ub`,
3997 : !> containing the uniformly-distributed random output value(s).<br>
3998 : !> If `lb` and `ub` are missing, then the output `rand` is of type `logical` of default kind \LK.<br>
3999 : !> Otherwise, it is either of,
4000 : !> <ol>
4001 : !> <li> type `character` of the same kind as `lb` and `ub`, of the same length type parameter `len` as that of `lb` and `ub` or, <br>
4002 : !> <li> type `integer` of the same kind as `lb` and `ub`, or<br>
4003 : !> <li> type `logical` of the same kind as `lb` and `ub`, or<br>
4004 : !> <li> type `complex` of the same kind as `lb` and `ub`, or<br>
4005 : !> <li> type `real` of the same kind as `lb` and `ub`.<br>
4006 : !> </ol>
4007 : !> Note that,
4008 : !> <ol>
4009 : !> <li> If `lb` is of type `character`, then the random characters will be drawn from the **character collating sequence of the processor**.<br>
4010 : !> <li> If `lb` and `ub` are of type `integer`, then `rand` will be in the interval `[lb, ub]`.<br>
4011 : !> <li> If `lb` and `ub` are of type `real`, then `rand` will be in the interval `[lb, ub)`.<br>
4012 : !> <li> If `lb` and `ub` are of type `character`, then `rand` will be in the interval `[lb, ub]` as defined by the processor collating sequence.<br>
4013 : !> <li> If `lb` and `ub` are of type `complex`, then `rand%%re` and `rand%%im` will be in the intervals `[lb%%re, ub%%re)` and `[lb%%im, ub%%im)` respectively.<br>
4014 : !> <li> If `lb` and `ub` are both missing, then the output will be a `logical` of default kind \LK with possible values `.false._LK` and `.true._LK`.
4015 : !> </ol>
4016 : !>
4017 : !> \interface{getUnifRand}
4018 : !> \code{.F90}
4019 : !>
4020 : !> use pm_distUnif, only: getUnifRand
4021 : !>
4022 : !> rand = getUnifRand() ! Non-elemental, random `logical` output scalar.
4023 : !> rand = getUnifRand(lb, ub) ! Elemental output of the same type and kind as `lb` and `ub`: character, complex, logical, integer, real.
4024 : !> rand(1:s1) = getUnifRand(lb, ub, s1) ! All input arguments must be scalars. Output is a vector of size `s1`, of the same type and kind as `lb` and `ub`.
4025 : !> rand(1:s1,1:s2) = getUnifRand(lb, ub, s1, s2) ! All input arguments must be scalars. Output is a matrix of size `(s1,s2)`, of the same type and kind as `lb` and `ub`.
4026 : !> rand(1:s1,1:s2,1:s3) = getUnifRand(lb, ub, s1, s2, s3) ! All input arguments must be scalars. Output is a cube of size `(s1,s2,s3)`, of the same type and kind as `lb` and `ub`.
4027 : !>
4028 : !> rand = getUnifRand(rng) ! Non-elemental, random `logical` output scalar.
4029 : !> rand = getUnifRand(rng, lb, ub) ! Elemental output of the same type and kind as `lb` and `ub`: character, complex, logical, integer, real.
4030 : !> rand(1:s1) = getUnifRand(rng, lb, ub, s1) ! All input arguments must be scalars. Output is a vector of size `s1`, of the same type and kind as `lb` and `ub`.
4031 : !> rand(1:s1,1:s2) = getUnifRand(rng, lb, ub, s1, s2) ! All input arguments must be scalars. Output is a matrix of size `(s1,s2)`, of the same type and kind as `lb` and `ub`.
4032 : !> rand(1:s1,1:s2,1:s3) = getUnifRand(rng, lb, ub, s1, s2, s3) ! All input arguments must be scalars. Output is a cube of size `(s1,s2,s3)`, of the same type and kind as `lb` and `ub`.
4033 : !> !
4034 : !> \endcode
4035 : !>
4036 : !> \warning
4037 : !> The condition `len(lb) == len(ub) .or. len(lb) == 1 .or. len(ub) == 1` for the corresponding input arguments of type `character`.<br>
4038 : !> The condition `lb <= ub` must hold for the corresponding input arguments where
4039 : !> logical values are compared by the procedures of module [pm_logicalCompare](@ref pm_logicalCompare) and
4040 : !> complex values are compared by the procedures of module [pm_complexCompareAll](@ref pm_complexCompareAll).<br>
4041 : !> \vericons
4042 : !>
4043 : !> \impure
4044 : !>
4045 : !> \elemental
4046 : !> The procedures of this generic interface are non-`elemental` when the argument `rng` is present.<br>
4047 : !>
4048 : !> \remark
4049 : !> The procedures under this generic interface are carefully designed to avoid possible overflow due to
4050 : !> specifying huge negative and positive `lb` and `ub` limits of type `integer`, `complex`, `real`.<br>
4051 : !> This is possible at the cost of making the random number generation slightly more expensive (by a few CPU cycles, equivalent to and extra multiplication).<br>
4052 : !>
4053 : !> \remark
4054 : !> The procedures under the generic interface are all `elemental` when the input arguments `lb` and `ub` are present and `s1` is missing.<br>
4055 : !>
4056 : !> \remark
4057 : !> When the input `s1` argument is present, the procedures under this generic interface will be non-elemental,
4058 : !> and the input arguments `lb` and `ub` must be scalars, because the size of the output `rand` object is determined by `s1`.<br>
4059 : !> Additionally, when there is no input argument, the output will always be a scalar `logical` of default kind \LK.<br>
4060 : !>
4061 : !> \note
4062 : !> The interface `getUnifRand()` corresponds to coin-flipping experiment with two possible outputs: `.true.` (head) and `.false.` (tail).<br>
4063 : !> See [isHead](@ref pm_distBern::isHead) for generating values from a **biased-coin** flipping experiment.<br>
4064 : !>
4065 : !> \note
4066 : !> By default random characters are generated from the ASCII collating sequence to ensure portability across compilers and platforms.<br>
4067 : !> If random uniform characters from the processor collating sequence are desired, specify the `lb` and `ub` inputs
4068 : !> argument as `integer`s of default kind \IK, such that the random numbers are generated from the
4069 : !> processor-dependent character interval `[char(lb), char(ub)]`.<br>
4070 : !>
4071 : !> \see
4072 : !> [rngf](@ref pm_distUnif::rngf)<br>
4073 : !> [isHead](@ref pm_distBern::isHead)<br>
4074 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
4075 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
4076 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
4077 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
4078 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
4079 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
4080 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
4081 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
4082 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
4083 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
4084 : !>
4085 : !> \example{getUnifRand}
4086 : !> \include{lineno} example/pm_distUnif/getUnifRand/main.F90
4087 : !> \compilef{getUnifRand}
4088 : !> \output{getUnifRand}
4089 : !> \include{lineno} example/pm_distUnif/getUnifRand/main.out.F90
4090 : !> \postproc{getUnifRand}
4091 : !> \include{lineno} example/pm_distUnif/getUnifRand/main.py
4092 : !> \vis{getUnifRand}
4093 : !> \image html pm_distUnif/getUnifRand/getUnifRand.CK.png width=700
4094 : !>
4095 : !> \test
4096 : !> [test_pm_distUnif](@ref test_pm_distUnif)
4097 : !>
4098 : !> \todo
4099 : !> The current random `integer` generator uses a simple double precision `real` conversion to `integer` values.<br>
4100 : !> While this works fairly well for most use cases, it may biased for generating large random `integer` of kind \IK4.<br>
4101 : !> A future remedy should use Bitmask with Rejection as described [here](https://www.pcg-random.org/posts/bounded-rands.html).<br>
4102 : !> As of 2021, the use of double precision (64-bit) vs. single-precision for random number generation increases the
4103 : !> computational cost of the algorithms by about three times.<br>
4104 : !>
4105 : !> \finmain{getUnifRand}
4106 : !>
4107 : !> \author
4108 : !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
4109 :
4110 : ! RNGD
4111 :
4112 : interface getUnifRand
4113 :
4114 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4115 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4116 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4117 :
4118 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4119 :
4120 : impure module function getUnifRandRNGDDD_D0_LK() result(rand)
4121 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4122 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDDD_D0_LK
4123 : #endif
4124 : use pm_kind, only: LKC => LK
4125 : logical(LKC) :: rand
4126 : end function
4127 :
4128 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4129 :
4130 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4131 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4132 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4133 :
4134 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4135 :
4136 : #if SK5_ENABLED
4137 : impure elemental module function getUnifRandRNGDLU_D0_SK5(lb, ub) result(rand)
4138 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4139 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_SK5
4140 : #endif
4141 : use pm_kind, only: SKC => SK5
4142 : character(*,SKC) , intent(in) :: lb, ub
4143 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
4144 : end function
4145 : #endif
4146 :
4147 : #if SK4_ENABLED
4148 : impure elemental module function getUnifRandRNGDLU_D0_SK4(lb, ub) result(rand)
4149 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4150 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_SK4
4151 : #endif
4152 : use pm_kind, only: SKC => SK4
4153 : character(*,SKC) , intent(in) :: lb, ub
4154 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
4155 : end function
4156 : #endif
4157 :
4158 : #if SK3_ENABLED
4159 : impure elemental module function getUnifRandRNGDLU_D0_SK3(lb, ub) result(rand)
4160 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4161 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_SK3
4162 : #endif
4163 : use pm_kind, only: SKC => SK3
4164 : character(*,SKC) , intent(in) :: lb, ub
4165 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
4166 : end function
4167 : #endif
4168 :
4169 : #if SK2_ENABLED
4170 : impure elemental module function getUnifRandRNGDLU_D0_SK2(lb, ub) result(rand)
4171 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4172 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_SK2
4173 : #endif
4174 : use pm_kind, only: SKC => SK2
4175 : character(*,SKC) , intent(in) :: lb, ub
4176 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
4177 : end function
4178 : #endif
4179 :
4180 : #if SK1_ENABLED
4181 : impure elemental module function getUnifRandRNGDLU_D0_SK1(lb, ub) result(rand)
4182 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4183 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_SK1
4184 : #endif
4185 : use pm_kind, only: SKC => SK1
4186 : character(*,SKC) , intent(in) :: lb, ub
4187 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
4188 : end function
4189 : #endif
4190 :
4191 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4192 :
4193 : #if IK5_ENABLED
4194 : impure elemental module function getUnifRandRNGDLU_D0_IK5(lb, ub) result(rand)
4195 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4196 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_IK5
4197 : #endif
4198 : use pm_kind, only: IKC => IK5
4199 : integer(IKC) , intent(in) :: lb, ub
4200 : integer(IKC) :: rand
4201 : end function
4202 : #endif
4203 :
4204 : #if IK4_ENABLED
4205 : impure elemental module function getUnifRandRNGDLU_D0_IK4(lb, ub) result(rand)
4206 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4207 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_IK4
4208 : #endif
4209 : use pm_kind, only: IKC => IK4
4210 : integer(IKC) , intent(in) :: lb, ub
4211 : integer(IKC) :: rand
4212 : end function
4213 : #endif
4214 :
4215 : #if IK3_ENABLED
4216 : impure elemental module function getUnifRandRNGDLU_D0_IK3(lb, ub) result(rand)
4217 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4218 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_IK3
4219 : #endif
4220 : use pm_kind, only: IKC => IK3
4221 : integer(IKC) , intent(in) :: lb, ub
4222 : integer(IKC) :: rand
4223 : end function
4224 : #endif
4225 :
4226 : #if IK2_ENABLED
4227 : impure elemental module function getUnifRandRNGDLU_D0_IK2(lb, ub) result(rand)
4228 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4229 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_IK2
4230 : #endif
4231 : use pm_kind, only: IKC => IK2
4232 : integer(IKC) , intent(in) :: lb, ub
4233 : integer(IKC) :: rand
4234 : end function
4235 : #endif
4236 :
4237 : #if IK1_ENABLED
4238 : impure elemental module function getUnifRandRNGDLU_D0_IK1(lb, ub) result(rand)
4239 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4240 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_IK1
4241 : #endif
4242 : use pm_kind, only: IKC => IK1
4243 : integer(IKC) , intent(in) :: lb, ub
4244 : integer(IKC) :: rand
4245 : end function
4246 : #endif
4247 :
4248 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4249 :
4250 : #if LK5_ENABLED
4251 : impure elemental module function getUnifRandRNGDLU_D0_LK5(lb, ub) result(rand)
4252 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4253 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_LK5
4254 : #endif
4255 : use pm_kind, only: LKC => LK5
4256 : logical(LKC) , intent(in) :: lb, ub
4257 : logical(LKC) :: rand
4258 : end function
4259 : #endif
4260 :
4261 : #if LK4_ENABLED
4262 : impure elemental module function getUnifRandRNGDLU_D0_LK4(lb, ub) result(rand)
4263 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4264 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_LK4
4265 : #endif
4266 : use pm_kind, only: LKC => LK4
4267 : logical(LKC) , intent(in) :: lb, ub
4268 : logical(LKC) :: rand
4269 : end function
4270 : #endif
4271 :
4272 : #if LK3_ENABLED
4273 : impure elemental module function getUnifRandRNGDLU_D0_LK3(lb, ub) result(rand)
4274 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4275 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_LK3
4276 : #endif
4277 : use pm_kind, only: LKC => LK3
4278 : logical(LKC) , intent(in) :: lb, ub
4279 : logical(LKC) :: rand
4280 : end function
4281 : #endif
4282 :
4283 : #if LK2_ENABLED
4284 : impure elemental module function getUnifRandRNGDLU_D0_LK2(lb, ub) result(rand)
4285 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4286 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_LK2
4287 : #endif
4288 : use pm_kind, only: LKC => LK2
4289 : logical(LKC) , intent(in) :: lb, ub
4290 : logical(LKC) :: rand
4291 : end function
4292 : #endif
4293 :
4294 : #if LK1_ENABLED
4295 : impure elemental module function getUnifRandRNGDLU_D0_LK1(lb, ub) result(rand)
4296 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4297 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_LK1
4298 : #endif
4299 : use pm_kind, only: LKC => LK1
4300 : logical(LKC) , intent(in) :: lb, ub
4301 : logical(LKC) :: rand
4302 : end function
4303 : #endif
4304 :
4305 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4306 :
4307 : #if CK5_ENABLED
4308 : impure elemental module function getUnifRandRNGDLU_D0_CK5(lb, ub) result(rand)
4309 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4310 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_CK5
4311 : #endif
4312 : use pm_kind, only: CKC => CK5
4313 : complex(CKC) , intent(in) :: lb, ub
4314 : complex(CKC) :: rand
4315 : end function
4316 : #endif
4317 :
4318 : #if CK4_ENABLED
4319 : impure elemental module function getUnifRandRNGDLU_D0_CK4(lb, ub) result(rand)
4320 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4321 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_CK4
4322 : #endif
4323 : use pm_kind, only: CKC => CK4
4324 : complex(CKC) , intent(in) :: lb, ub
4325 : complex(CKC) :: rand
4326 : end function
4327 : #endif
4328 :
4329 : #if CK3_ENABLED
4330 : impure elemental module function getUnifRandRNGDLU_D0_CK3(lb, ub) result(rand)
4331 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4332 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_CK3
4333 : #endif
4334 : use pm_kind, only: CKC => CK3
4335 : complex(CKC) , intent(in) :: lb, ub
4336 : complex(CKC) :: rand
4337 : end function
4338 : #endif
4339 :
4340 : #if CK2_ENABLED
4341 : impure elemental module function getUnifRandRNGDLU_D0_CK2(lb, ub) result(rand)
4342 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4343 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_CK2
4344 : #endif
4345 : use pm_kind, only: CKC => CK2
4346 : complex(CKC) , intent(in) :: lb, ub
4347 : complex(CKC) :: rand
4348 : end function
4349 : #endif
4350 :
4351 : #if CK1_ENABLED
4352 : impure elemental module function getUnifRandRNGDLU_D0_CK1(lb, ub) result(rand)
4353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4354 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_CK1
4355 : #endif
4356 : use pm_kind, only: CKC => CK1
4357 : complex(CKC) , intent(in) :: lb, ub
4358 : complex(CKC) :: rand
4359 : end function
4360 : #endif
4361 :
4362 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4363 :
4364 : #if RK5_ENABLED
4365 : impure elemental module function getUnifRandRNGDLU_D0_RK5(lb, ub) result(rand)
4366 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4367 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_RK5
4368 : #endif
4369 : use pm_kind, only: RKC => RK5
4370 : real(RKC) , intent(in) :: lb, ub
4371 : real(RKC) :: rand
4372 : end function
4373 : #endif
4374 :
4375 : #if RK4_ENABLED
4376 : impure elemental module function getUnifRandRNGDLU_D0_RK4(lb, ub) result(rand)
4377 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4378 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_RK4
4379 : #endif
4380 : use pm_kind, only: RKC => RK4
4381 : real(RKC) , intent(in) :: lb, ub
4382 : real(RKC) :: rand
4383 : end function
4384 : #endif
4385 :
4386 : #if RK3_ENABLED
4387 : impure elemental module function getUnifRandRNGDLU_D0_RK3(lb, ub) result(rand)
4388 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4389 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_RK3
4390 : #endif
4391 : use pm_kind, only: RKC => RK3
4392 : real(RKC) , intent(in) :: lb, ub
4393 : real(RKC) :: rand
4394 : end function
4395 : #endif
4396 :
4397 : #if RK2_ENABLED
4398 : impure elemental module function getUnifRandRNGDLU_D0_RK2(lb, ub) result(rand)
4399 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4400 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_RK2
4401 : #endif
4402 : use pm_kind, only: RKC => RK2
4403 : real(RKC) , intent(in) :: lb, ub
4404 : real(RKC) :: rand
4405 : end function
4406 : #endif
4407 :
4408 : #if RK1_ENABLED
4409 : impure elemental module function getUnifRandRNGDLU_D0_RK1(lb, ub) result(rand)
4410 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4411 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D0_RK1
4412 : #endif
4413 : use pm_kind, only: RKC => RK1
4414 : real(RKC) , intent(in) :: lb, ub
4415 : real(RKC) :: rand
4416 : end function
4417 : #endif
4418 :
4419 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4420 :
4421 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4422 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4423 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4424 :
4425 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4426 :
4427 : #if SK5_ENABLED
4428 : impure module function getUnifRandRNGDLU_D1_SK5(lb, ub, s1) result(rand)
4429 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4430 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_SK5
4431 : #endif
4432 : use pm_kind, only: SKC => SK5
4433 : character(*,SKC) , intent(in) :: lb, ub
4434 : integer(IK) , intent(in) :: s1
4435 : character(len(lb,IK),SKC) :: rand(s1)
4436 : end function
4437 : #endif
4438 :
4439 : #if SK4_ENABLED
4440 : impure module function getUnifRandRNGDLU_D1_SK4(lb, ub, s1) result(rand)
4441 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4442 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_SK4
4443 : #endif
4444 : use pm_kind, only: SKC => SK4
4445 : character(*,SKC) , intent(in) :: lb, ub
4446 : integer(IK) , intent(in) :: s1
4447 : character(len(lb,IK),SKC) :: rand(s1)
4448 : end function
4449 : #endif
4450 :
4451 : #if SK3_ENABLED
4452 : impure module function getUnifRandRNGDLU_D1_SK3(lb, ub, s1) result(rand)
4453 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4454 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_SK3
4455 : #endif
4456 : use pm_kind, only: SKC => SK3
4457 : character(*,SKC) , intent(in) :: lb, ub
4458 : integer(IK) , intent(in) :: s1
4459 : character(len(lb,IK),SKC) :: rand(s1)
4460 : end function
4461 : #endif
4462 :
4463 : #if SK2_ENABLED
4464 : impure module function getUnifRandRNGDLU_D1_SK2(lb, ub, s1) result(rand)
4465 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4466 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_SK2
4467 : #endif
4468 : use pm_kind, only: SKC => SK2
4469 : character(*,SKC) , intent(in) :: lb, ub
4470 : integer(IK) , intent(in) :: s1
4471 : character(len(lb,IK),SKC) :: rand(s1)
4472 : end function
4473 : #endif
4474 :
4475 : #if SK1_ENABLED
4476 : impure module function getUnifRandRNGDLU_D1_SK1(lb, ub, s1) result(rand)
4477 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4478 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_SK1
4479 : #endif
4480 : use pm_kind, only: SKC => SK1
4481 : character(*,SKC) , intent(in) :: lb, ub
4482 : integer(IK) , intent(in) :: s1
4483 : character(len(lb,IK),SKC) :: rand(s1)
4484 : end function
4485 : #endif
4486 :
4487 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4488 :
4489 : #if IK5_ENABLED
4490 : impure module function getUnifRandRNGDLU_D1_IK5(lb, ub, s1) result(rand)
4491 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4492 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_IK5
4493 : #endif
4494 : use pm_kind, only: IKC => IK5
4495 : integer(IKC) , intent(in) :: lb, ub
4496 : integer(IK) , intent(in) :: s1
4497 : integer(IKC) :: rand(s1)
4498 : end function
4499 : #endif
4500 :
4501 : #if IK4_ENABLED
4502 : impure module function getUnifRandRNGDLU_D1_IK4(lb, ub, s1) result(rand)
4503 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4504 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_IK4
4505 : #endif
4506 : use pm_kind, only: IKC => IK4
4507 : integer(IKC) , intent(in) :: lb, ub
4508 : integer(IK) , intent(in) :: s1
4509 : integer(IKC) :: rand(s1)
4510 : end function
4511 : #endif
4512 :
4513 : #if IK3_ENABLED
4514 : impure module function getUnifRandRNGDLU_D1_IK3(lb, ub, s1) result(rand)
4515 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4516 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_IK3
4517 : #endif
4518 : use pm_kind, only: IKC => IK3
4519 : integer(IKC) , intent(in) :: lb, ub
4520 : integer(IK) , intent(in) :: s1
4521 : integer(IKC) :: rand(s1)
4522 : end function
4523 : #endif
4524 :
4525 : #if IK2_ENABLED
4526 : impure module function getUnifRandRNGDLU_D1_IK2(lb, ub, s1) result(rand)
4527 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4528 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_IK2
4529 : #endif
4530 : use pm_kind, only: IKC => IK2
4531 : integer(IKC) , intent(in) :: lb, ub
4532 : integer(IK) , intent(in) :: s1
4533 : integer(IKC) :: rand(s1)
4534 : end function
4535 : #endif
4536 :
4537 : #if IK1_ENABLED
4538 : impure module function getUnifRandRNGDLU_D1_IK1(lb, ub, s1) result(rand)
4539 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4540 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_IK1
4541 : #endif
4542 : use pm_kind, only: IKC => IK1
4543 : integer(IKC) , intent(in) :: lb, ub
4544 : integer(IK) , intent(in) :: s1
4545 : integer(IKC) :: rand(s1)
4546 : end function
4547 : #endif
4548 :
4549 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4550 :
4551 : #if LK5_ENABLED
4552 : impure module function getUnifRandRNGDLU_D1_LK5(lb, ub, s1) result(rand)
4553 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4554 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_LK5
4555 : #endif
4556 : use pm_kind, only: LKC => LK5
4557 : logical(LKC) , intent(in) :: lb, ub
4558 : integer(IK) , intent(in) :: s1
4559 : logical(LKC) :: rand(s1)
4560 : end function
4561 : #endif
4562 :
4563 : #if LK4_ENABLED
4564 : impure module function getUnifRandRNGDLU_D1_LK4(lb, ub, s1) result(rand)
4565 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4566 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_LK4
4567 : #endif
4568 : use pm_kind, only: LKC => LK4
4569 : logical(LKC) , intent(in) :: lb, ub
4570 : integer(IK) , intent(in) :: s1
4571 : logical(LKC) :: rand(s1)
4572 : end function
4573 : #endif
4574 :
4575 : #if LK3_ENABLED
4576 : impure module function getUnifRandRNGDLU_D1_LK3(lb, ub, s1) result(rand)
4577 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4578 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_LK3
4579 : #endif
4580 : use pm_kind, only: LKC => LK3
4581 : logical(LKC) , intent(in) :: lb, ub
4582 : integer(IK) , intent(in) :: s1
4583 : logical(LKC) :: rand(s1)
4584 : end function
4585 : #endif
4586 :
4587 : #if LK2_ENABLED
4588 : impure module function getUnifRandRNGDLU_D1_LK2(lb, ub, s1) result(rand)
4589 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4590 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_LK2
4591 : #endif
4592 : use pm_kind, only: LKC => LK2
4593 : logical(LKC) , intent(in) :: lb, ub
4594 : integer(IK) , intent(in) :: s1
4595 : logical(LKC) :: rand(s1)
4596 : end function
4597 : #endif
4598 :
4599 : #if LK1_ENABLED
4600 : impure module function getUnifRandRNGDLU_D1_LK1(lb, ub, s1) result(rand)
4601 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4602 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_LK1
4603 : #endif
4604 : use pm_kind, only: LKC => LK1
4605 : logical(LKC) , intent(in) :: lb, ub
4606 : integer(IK) , intent(in) :: s1
4607 : logical(LKC) :: rand(s1)
4608 : end function
4609 : #endif
4610 :
4611 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4612 :
4613 : #if CK5_ENABLED
4614 : impure module function getUnifRandRNGDLU_D1_CK5(lb, ub, s1) result(rand)
4615 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4616 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_CK5
4617 : #endif
4618 : use pm_kind, only: CKC => CK5
4619 : complex(CKC) , intent(in) :: lb, ub
4620 : integer(IK) , intent(in) :: s1
4621 : complex(CKC) :: rand(s1)
4622 : end function
4623 : #endif
4624 :
4625 : #if CK4_ENABLED
4626 : impure module function getUnifRandRNGDLU_D1_CK4(lb, ub, s1) result(rand)
4627 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4628 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_CK4
4629 : #endif
4630 : use pm_kind, only: CKC => CK4
4631 : complex(CKC) , intent(in) :: lb, ub
4632 : integer(IK) , intent(in) :: s1
4633 : complex(CKC) :: rand(s1)
4634 : end function
4635 : #endif
4636 :
4637 : #if CK3_ENABLED
4638 : impure module function getUnifRandRNGDLU_D1_CK3(lb, ub, s1) result(rand)
4639 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4640 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_CK3
4641 : #endif
4642 : use pm_kind, only: CKC => CK3
4643 : complex(CKC) , intent(in) :: lb, ub
4644 : integer(IK) , intent(in) :: s1
4645 : complex(CKC) :: rand(s1)
4646 : end function
4647 : #endif
4648 :
4649 : #if CK2_ENABLED
4650 : impure module function getUnifRandRNGDLU_D1_CK2(lb, ub, s1) result(rand)
4651 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4652 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_CK2
4653 : #endif
4654 : use pm_kind, only: CKC => CK2
4655 : complex(CKC) , intent(in) :: lb, ub
4656 : integer(IK) , intent(in) :: s1
4657 : complex(CKC) :: rand(s1)
4658 : end function
4659 : #endif
4660 :
4661 : #if CK1_ENABLED
4662 : impure module function getUnifRandRNGDLU_D1_CK1(lb, ub, s1) result(rand)
4663 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4664 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_CK1
4665 : #endif
4666 : use pm_kind, only: CKC => CK1
4667 : complex(CKC) , intent(in) :: lb, ub
4668 : integer(IK) , intent(in) :: s1
4669 : complex(CKC) :: rand(s1)
4670 : end function
4671 : #endif
4672 :
4673 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4674 :
4675 : #if RK5_ENABLED
4676 : impure module function getUnifRandRNGDLU_D1_RK5(lb, ub, s1) result(rand)
4677 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4678 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_RK5
4679 : #endif
4680 : use pm_kind, only: RKC => RK5
4681 : real(RKC) , intent(in) :: lb, ub
4682 : integer(IK) , intent(in) :: s1
4683 : real(RKC) :: rand(s1)
4684 : end function
4685 :
4686 : #endif
4687 :
4688 : #if RK4_ENABLED
4689 : impure module function getUnifRandRNGDLU_D1_RK4(lb, ub, s1) result(rand)
4690 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4691 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_RK4
4692 : #endif
4693 : use pm_kind, only: RKC => RK4
4694 : real(RKC) , intent(in) :: lb, ub
4695 : integer(IK) , intent(in) :: s1
4696 : real(RKC) :: rand(s1)
4697 : end function
4698 :
4699 : #endif
4700 :
4701 : #if RK3_ENABLED
4702 : impure module function getUnifRandRNGDLU_D1_RK3(lb, ub, s1) result(rand)
4703 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4704 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_RK3
4705 : #endif
4706 : use pm_kind, only: RKC => RK3
4707 : real(RKC) , intent(in) :: lb, ub
4708 : integer(IK) , intent(in) :: s1
4709 : real(RKC) :: rand(s1)
4710 : end function
4711 :
4712 : #endif
4713 :
4714 : #if RK2_ENABLED
4715 : impure module function getUnifRandRNGDLU_D1_RK2(lb, ub, s1) result(rand)
4716 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4717 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_RK2
4718 : #endif
4719 : use pm_kind, only: RKC => RK2
4720 : real(RKC) , intent(in) :: lb, ub
4721 : integer(IK) , intent(in) :: s1
4722 : real(RKC) :: rand(s1)
4723 : end function
4724 : #endif
4725 :
4726 : #if RK1_ENABLED
4727 : impure module function getUnifRandRNGDLU_D1_RK1(lb, ub, s1) result(rand)
4728 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4729 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D1_RK1
4730 : #endif
4731 : use pm_kind, only: RKC => RK1
4732 : real(RKC) , intent(in) :: lb, ub
4733 : integer(IK) , intent(in) :: s1
4734 : real(RKC) :: rand(s1)
4735 : end function
4736 : #endif
4737 :
4738 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4739 :
4740 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4741 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4742 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4743 :
4744 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4745 :
4746 : #if SK5_ENABLED
4747 : impure module function getUnifRandRNGDLU_D2_SK5(lb, ub, s1, s2) result(rand)
4748 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4749 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_SK5
4750 : #endif
4751 : use pm_kind, only: SKC => SK5
4752 : character(*,SKC) , intent(in) :: lb, ub
4753 : integer(IK) , intent(in) :: s1, s2
4754 : character(len(lb,IK),SKC) :: rand(s1, s2)
4755 : end function
4756 : #endif
4757 :
4758 : #if SK4_ENABLED
4759 : impure module function getUnifRandRNGDLU_D2_SK4(lb, ub, s1, s2) result(rand)
4760 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4761 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_SK4
4762 : #endif
4763 : use pm_kind, only: SKC => SK4
4764 : character(*,SKC) , intent(in) :: lb, ub
4765 : integer(IK) , intent(in) :: s1, s2
4766 : character(len(lb,IK),SKC) :: rand(s1, s2)
4767 : end function
4768 : #endif
4769 :
4770 : #if SK3_ENABLED
4771 : impure module function getUnifRandRNGDLU_D2_SK3(lb, ub, s1, s2) result(rand)
4772 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4773 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_SK3
4774 : #endif
4775 : use pm_kind, only: SKC => SK3
4776 : character(*,SKC) , intent(in) :: lb, ub
4777 : integer(IK) , intent(in) :: s1, s2
4778 : character(len(lb,IK),SKC) :: rand(s1, s2)
4779 : end function
4780 : #endif
4781 :
4782 : #if SK2_ENABLED
4783 : impure module function getUnifRandRNGDLU_D2_SK2(lb, ub, s1, s2) result(rand)
4784 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4785 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_SK2
4786 : #endif
4787 : use pm_kind, only: SKC => SK2
4788 : character(*,SKC) , intent(in) :: lb, ub
4789 : integer(IK) , intent(in) :: s1, s2
4790 : character(len(lb,IK),SKC) :: rand(s1, s2)
4791 : end function
4792 : #endif
4793 :
4794 : #if SK1_ENABLED
4795 : impure module function getUnifRandRNGDLU_D2_SK1(lb, ub, s1, s2) result(rand)
4796 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4797 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_SK1
4798 : #endif
4799 : use pm_kind, only: SKC => SK1
4800 : character(*,SKC) , intent(in) :: lb, ub
4801 : integer(IK) , intent(in) :: s1, s2
4802 : character(len(lb,IK),SKC) :: rand(s1, s2)
4803 : end function
4804 : #endif
4805 :
4806 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4807 :
4808 : #if IK5_ENABLED
4809 : impure module function getUnifRandRNGDLU_D2_IK5(lb, ub, s1, s2) result(rand)
4810 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4811 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_IK5
4812 : #endif
4813 : use pm_kind, only: IKC => IK5
4814 : integer(IKC) , intent(in) :: lb, ub
4815 : integer(IK) , intent(in) :: s1, s2
4816 : integer(IKC) :: rand(s1, s2)
4817 : end function
4818 : #endif
4819 :
4820 : #if IK4_ENABLED
4821 : impure module function getUnifRandRNGDLU_D2_IK4(lb, ub, s1, s2) result(rand)
4822 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4823 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_IK4
4824 : #endif
4825 : use pm_kind, only: IKC => IK4
4826 : integer(IKC) , intent(in) :: lb, ub
4827 : integer(IK) , intent(in) :: s1, s2
4828 : integer(IKC) :: rand(s1, s2)
4829 : end function
4830 : #endif
4831 :
4832 : #if IK3_ENABLED
4833 : impure module function getUnifRandRNGDLU_D2_IK3(lb, ub, s1, s2) result(rand)
4834 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4835 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_IK3
4836 : #endif
4837 : use pm_kind, only: IKC => IK3
4838 : integer(IKC) , intent(in) :: lb, ub
4839 : integer(IK) , intent(in) :: s1, s2
4840 : integer(IKC) :: rand(s1, s2)
4841 : end function
4842 : #endif
4843 :
4844 : #if IK2_ENABLED
4845 : impure module function getUnifRandRNGDLU_D2_IK2(lb, ub, s1, s2) result(rand)
4846 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4847 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_IK2
4848 : #endif
4849 : use pm_kind, only: IKC => IK2
4850 : integer(IKC) , intent(in) :: lb, ub
4851 : integer(IK) , intent(in) :: s1, s2
4852 : integer(IKC) :: rand(s1, s2)
4853 : end function
4854 : #endif
4855 :
4856 : #if IK1_ENABLED
4857 : impure module function getUnifRandRNGDLU_D2_IK1(lb, ub, s1, s2) result(rand)
4858 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4859 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_IK1
4860 : #endif
4861 : use pm_kind, only: IKC => IK1
4862 : integer(IKC) , intent(in) :: lb, ub
4863 : integer(IK) , intent(in) :: s1, s2
4864 : integer(IKC) :: rand(s1, s2)
4865 : end function
4866 : #endif
4867 :
4868 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4869 :
4870 : #if LK5_ENABLED
4871 : impure module function getUnifRandRNGDLU_D2_LK5(lb, ub, s1, s2) result(rand)
4872 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4873 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_LK5
4874 : #endif
4875 : use pm_kind, only: LKC => LK5
4876 : logical(LKC) , intent(in) :: lb, ub
4877 : integer(IK) , intent(in) :: s1, s2
4878 : logical(LKC) :: rand(s1, s2)
4879 : end function
4880 : #endif
4881 :
4882 : #if LK4_ENABLED
4883 : impure module function getUnifRandRNGDLU_D2_LK4(lb, ub, s1, s2) result(rand)
4884 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4885 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_LK4
4886 : #endif
4887 : use pm_kind, only: LKC => LK4
4888 : logical(LKC) , intent(in) :: lb, ub
4889 : integer(IK) , intent(in) :: s1, s2
4890 : logical(LKC) :: rand(s1, s2)
4891 : end function
4892 : #endif
4893 :
4894 : #if LK3_ENABLED
4895 : impure module function getUnifRandRNGDLU_D2_LK3(lb, ub, s1, s2) result(rand)
4896 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4897 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_LK3
4898 : #endif
4899 : use pm_kind, only: LKC => LK3
4900 : logical(LKC) , intent(in) :: lb, ub
4901 : integer(IK) , intent(in) :: s1, s2
4902 : logical(LKC) :: rand(s1, s2)
4903 : end function
4904 : #endif
4905 :
4906 : #if LK2_ENABLED
4907 : impure module function getUnifRandRNGDLU_D2_LK2(lb, ub, s1, s2) result(rand)
4908 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4909 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_LK2
4910 : #endif
4911 : use pm_kind, only: LKC => LK2
4912 : logical(LKC) , intent(in) :: lb, ub
4913 : integer(IK) , intent(in) :: s1, s2
4914 : logical(LKC) :: rand(s1, s2)
4915 : end function
4916 : #endif
4917 :
4918 : #if LK1_ENABLED
4919 : impure module function getUnifRandRNGDLU_D2_LK1(lb, ub, s1, s2) result(rand)
4920 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4921 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_LK1
4922 : #endif
4923 : use pm_kind, only: LKC => LK1
4924 : logical(LKC) , intent(in) :: lb, ub
4925 : integer(IK) , intent(in) :: s1, s2
4926 : logical(LKC) :: rand(s1, s2)
4927 : end function
4928 : #endif
4929 :
4930 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4931 :
4932 : #if CK5_ENABLED
4933 : impure module function getUnifRandRNGDLU_D2_CK5(lb, ub, s1, s2) result(rand)
4934 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4935 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_CK5
4936 : #endif
4937 : use pm_kind, only: CKC => CK5
4938 : complex(CKC) , intent(in) :: lb, ub
4939 : integer(IK) , intent(in) :: s1, s2
4940 : complex(CKC) :: rand(s1, s2)
4941 : end function
4942 : #endif
4943 :
4944 : #if CK4_ENABLED
4945 : impure module function getUnifRandRNGDLU_D2_CK4(lb, ub, s1, s2) result(rand)
4946 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4947 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_CK4
4948 : #endif
4949 : use pm_kind, only: CKC => CK4
4950 : complex(CKC) , intent(in) :: lb, ub
4951 : integer(IK) , intent(in) :: s1, s2
4952 : complex(CKC) :: rand(s1, s2)
4953 : end function
4954 : #endif
4955 :
4956 : #if CK3_ENABLED
4957 : impure module function getUnifRandRNGDLU_D2_CK3(lb, ub, s1, s2) result(rand)
4958 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4959 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_CK3
4960 : #endif
4961 : use pm_kind, only: CKC => CK3
4962 : complex(CKC) , intent(in) :: lb, ub
4963 : integer(IK) , intent(in) :: s1, s2
4964 : complex(CKC) :: rand(s1, s2)
4965 : end function
4966 : #endif
4967 :
4968 : #if CK2_ENABLED
4969 : impure module function getUnifRandRNGDLU_D2_CK2(lb, ub, s1, s2) result(rand)
4970 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4971 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_CK2
4972 : #endif
4973 : use pm_kind, only: CKC => CK2
4974 : complex(CKC) , intent(in) :: lb, ub
4975 : integer(IK) , intent(in) :: s1, s2
4976 : complex(CKC) :: rand(s1, s2)
4977 : end function
4978 : #endif
4979 :
4980 : #if CK1_ENABLED
4981 : impure module function getUnifRandRNGDLU_D2_CK1(lb, ub, s1, s2) result(rand)
4982 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4983 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_CK1
4984 : #endif
4985 : use pm_kind, only: CKC => CK1
4986 : complex(CKC) , intent(in) :: lb, ub
4987 : integer(IK) , intent(in) :: s1, s2
4988 : complex(CKC) :: rand(s1, s2)
4989 : end function
4990 : #endif
4991 :
4992 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4993 :
4994 : #if RK5_ENABLED
4995 : impure module function getUnifRandRNGDLU_D2_RK5(lb, ub, s1, s2) result(rand)
4996 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4997 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_RK5
4998 : #endif
4999 : use pm_kind, only: RKC => RK5
5000 : real(RKC) , intent(in) :: lb, ub
5001 : integer(IK) , intent(in) :: s1, s2
5002 : real(RKC) :: rand(s1, s2)
5003 : end function
5004 :
5005 : #endif
5006 :
5007 : #if RK4_ENABLED
5008 : impure module function getUnifRandRNGDLU_D2_RK4(lb, ub, s1, s2) result(rand)
5009 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5010 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_RK4
5011 : #endif
5012 : use pm_kind, only: RKC => RK4
5013 : real(RKC) , intent(in) :: lb, ub
5014 : integer(IK) , intent(in) :: s1, s2
5015 : real(RKC) :: rand(s1, s2)
5016 : end function
5017 :
5018 : #endif
5019 :
5020 : #if RK3_ENABLED
5021 : impure module function getUnifRandRNGDLU_D2_RK3(lb, ub, s1, s2) result(rand)
5022 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5023 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_RK3
5024 : #endif
5025 : use pm_kind, only: RKC => RK3
5026 : real(RKC) , intent(in) :: lb, ub
5027 : integer(IK) , intent(in) :: s1, s2
5028 : real(RKC) :: rand(s1, s2)
5029 : end function
5030 :
5031 : #endif
5032 :
5033 : #if RK2_ENABLED
5034 : impure module function getUnifRandRNGDLU_D2_RK2(lb, ub, s1, s2) result(rand)
5035 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5036 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_RK2
5037 : #endif
5038 : use pm_kind, only: RKC => RK2
5039 : real(RKC) , intent(in) :: lb, ub
5040 : integer(IK) , intent(in) :: s1, s2
5041 : real(RKC) :: rand(s1, s2)
5042 : end function
5043 : #endif
5044 :
5045 : #if RK1_ENABLED
5046 : impure module function getUnifRandRNGDLU_D2_RK1(lb, ub, s1, s2) result(rand)
5047 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5048 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D2_RK1
5049 : #endif
5050 : use pm_kind, only: RKC => RK1
5051 : real(RKC) , intent(in) :: lb, ub
5052 : integer(IK) , intent(in) :: s1, s2
5053 : real(RKC) :: rand(s1, s2)
5054 : end function
5055 : #endif
5056 :
5057 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5058 :
5059 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5060 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5061 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5062 :
5063 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5064 :
5065 : #if SK5_ENABLED
5066 : impure module function getUnifRandRNGDLU_D3_SK5(lb, ub, s1, s2, s3) result(rand)
5067 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5068 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_SK5
5069 : #endif
5070 : use pm_kind, only: SKC => SK5
5071 : character(*,SKC) , intent(in) :: lb, ub
5072 : integer(IK) , intent(in) :: s1, s2, s3
5073 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
5074 : end function
5075 : #endif
5076 :
5077 : #if SK4_ENABLED
5078 : impure module function getUnifRandRNGDLU_D3_SK4(lb, ub, s1, s2, s3) result(rand)
5079 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5080 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_SK4
5081 : #endif
5082 : use pm_kind, only: SKC => SK4
5083 : character(*,SKC) , intent(in) :: lb, ub
5084 : integer(IK) , intent(in) :: s1, s2, s3
5085 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
5086 : end function
5087 : #endif
5088 :
5089 : #if SK3_ENABLED
5090 : impure module function getUnifRandRNGDLU_D3_SK3(lb, ub, s1, s2, s3) result(rand)
5091 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5092 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_SK3
5093 : #endif
5094 : use pm_kind, only: SKC => SK3
5095 : character(*,SKC) , intent(in) :: lb, ub
5096 : integer(IK) , intent(in) :: s1, s2, s3
5097 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
5098 : end function
5099 : #endif
5100 :
5101 : #if SK2_ENABLED
5102 : impure module function getUnifRandRNGDLU_D3_SK2(lb, ub, s1, s2, s3) result(rand)
5103 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5104 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_SK2
5105 : #endif
5106 : use pm_kind, only: SKC => SK2
5107 : character(*,SKC) , intent(in) :: lb, ub
5108 : integer(IK) , intent(in) :: s1, s2, s3
5109 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
5110 : end function
5111 : #endif
5112 :
5113 : #if SK1_ENABLED
5114 : impure module function getUnifRandRNGDLU_D3_SK1(lb, ub, s1, s2, s3) result(rand)
5115 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5116 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_SK1
5117 : #endif
5118 : use pm_kind, only: SKC => SK1
5119 : character(*,SKC) , intent(in) :: lb, ub
5120 : integer(IK) , intent(in) :: s1, s2, s3
5121 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
5122 : end function
5123 : #endif
5124 :
5125 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5126 :
5127 : #if IK5_ENABLED
5128 : impure module function getUnifRandRNGDLU_D3_IK5(lb, ub, s1, s2, s3) result(rand)
5129 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5130 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_IK5
5131 : #endif
5132 : use pm_kind, only: IKC => IK5
5133 : integer(IKC) , intent(in) :: lb, ub
5134 : integer(IK) , intent(in) :: s1, s2, s3
5135 : integer(IKC) :: rand(s1, s2, s3)
5136 : end function
5137 : #endif
5138 :
5139 : #if IK4_ENABLED
5140 : impure module function getUnifRandRNGDLU_D3_IK4(lb, ub, s1, s2, s3) result(rand)
5141 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5142 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_IK4
5143 : #endif
5144 : use pm_kind, only: IKC => IK4
5145 : integer(IKC) , intent(in) :: lb, ub
5146 : integer(IK) , intent(in) :: s1, s2, s3
5147 : integer(IKC) :: rand(s1, s2, s3)
5148 : end function
5149 : #endif
5150 :
5151 : #if IK3_ENABLED
5152 : impure module function getUnifRandRNGDLU_D3_IK3(lb, ub, s1, s2, s3) result(rand)
5153 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5154 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_IK3
5155 : #endif
5156 : use pm_kind, only: IKC => IK3
5157 : integer(IKC) , intent(in) :: lb, ub
5158 : integer(IK) , intent(in) :: s1, s2, s3
5159 : integer(IKC) :: rand(s1, s2, s3)
5160 : end function
5161 : #endif
5162 :
5163 : #if IK2_ENABLED
5164 : impure module function getUnifRandRNGDLU_D3_IK2(lb, ub, s1, s2, s3) result(rand)
5165 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5166 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_IK2
5167 : #endif
5168 : use pm_kind, only: IKC => IK2
5169 : integer(IKC) , intent(in) :: lb, ub
5170 : integer(IK) , intent(in) :: s1, s2, s3
5171 : integer(IKC) :: rand(s1, s2, s3)
5172 : end function
5173 : #endif
5174 :
5175 : #if IK1_ENABLED
5176 : impure module function getUnifRandRNGDLU_D3_IK1(lb, ub, s1, s2, s3) result(rand)
5177 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5178 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_IK1
5179 : #endif
5180 : use pm_kind, only: IKC => IK1
5181 : integer(IKC) , intent(in) :: lb, ub
5182 : integer(IK) , intent(in) :: s1, s2, s3
5183 : integer(IKC) :: rand(s1, s2, s3)
5184 : end function
5185 : #endif
5186 :
5187 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5188 :
5189 : #if LK5_ENABLED
5190 : impure module function getUnifRandRNGDLU_D3_LK5(lb, ub, s1, s2, s3) result(rand)
5191 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5192 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_LK5
5193 : #endif
5194 : use pm_kind, only: LKC => LK5
5195 : logical(LKC) , intent(in) :: lb, ub
5196 : integer(IK) , intent(in) :: s1, s2, s3
5197 : logical(LKC) :: rand(s1, s2, s3)
5198 : end function
5199 : #endif
5200 :
5201 : #if LK4_ENABLED
5202 : impure module function getUnifRandRNGDLU_D3_LK4(lb, ub, s1, s2, s3) result(rand)
5203 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5204 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_LK4
5205 : #endif
5206 : use pm_kind, only: LKC => LK4
5207 : logical(LKC) , intent(in) :: lb, ub
5208 : integer(IK) , intent(in) :: s1, s2, s3
5209 : logical(LKC) :: rand(s1, s2, s3)
5210 : end function
5211 : #endif
5212 :
5213 : #if LK3_ENABLED
5214 : impure module function getUnifRandRNGDLU_D3_LK3(lb, ub, s1, s2, s3) result(rand)
5215 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5216 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_LK3
5217 : #endif
5218 : use pm_kind, only: LKC => LK3
5219 : logical(LKC) , intent(in) :: lb, ub
5220 : integer(IK) , intent(in) :: s1, s2, s3
5221 : logical(LKC) :: rand(s1, s2, s3)
5222 : end function
5223 : #endif
5224 :
5225 : #if LK2_ENABLED
5226 : impure module function getUnifRandRNGDLU_D3_LK2(lb, ub, s1, s2, s3) result(rand)
5227 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5228 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_LK2
5229 : #endif
5230 : use pm_kind, only: LKC => LK2
5231 : logical(LKC) , intent(in) :: lb, ub
5232 : integer(IK) , intent(in) :: s1, s2, s3
5233 : logical(LKC) :: rand(s1, s2, s3)
5234 : end function
5235 : #endif
5236 :
5237 : #if LK1_ENABLED
5238 : impure module function getUnifRandRNGDLU_D3_LK1(lb, ub, s1, s2, s3) result(rand)
5239 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5240 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_LK1
5241 : #endif
5242 : use pm_kind, only: LKC => LK1
5243 : logical(LKC) , intent(in) :: lb, ub
5244 : integer(IK) , intent(in) :: s1, s2, s3
5245 : logical(LKC) :: rand(s1, s2, s3)
5246 : end function
5247 : #endif
5248 :
5249 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5250 :
5251 : #if CK5_ENABLED
5252 : impure module function getUnifRandRNGDLU_D3_CK5(lb, ub, s1, s2, s3) result(rand)
5253 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5254 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_CK5
5255 : #endif
5256 : use pm_kind, only: CKC => CK5
5257 : complex(CKC) , intent(in) :: lb, ub
5258 : integer(IK) , intent(in) :: s1, s2, s3
5259 : complex(CKC) :: rand(s1, s2, s3)
5260 : end function
5261 : #endif
5262 :
5263 : #if CK4_ENABLED
5264 : impure module function getUnifRandRNGDLU_D3_CK4(lb, ub, s1, s2, s3) result(rand)
5265 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5266 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_CK4
5267 : #endif
5268 : use pm_kind, only: CKC => CK4
5269 : complex(CKC) , intent(in) :: lb, ub
5270 : integer(IK) , intent(in) :: s1, s2, s3
5271 : complex(CKC) :: rand(s1, s2, s3)
5272 : end function
5273 : #endif
5274 :
5275 : #if CK3_ENABLED
5276 : impure module function getUnifRandRNGDLU_D3_CK3(lb, ub, s1, s2, s3) result(rand)
5277 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5278 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_CK3
5279 : #endif
5280 : use pm_kind, only: CKC => CK3
5281 : complex(CKC) , intent(in) :: lb, ub
5282 : integer(IK) , intent(in) :: s1, s2, s3
5283 : complex(CKC) :: rand(s1, s2, s3)
5284 : end function
5285 : #endif
5286 :
5287 : #if CK2_ENABLED
5288 : impure module function getUnifRandRNGDLU_D3_CK2(lb, ub, s1, s2, s3) result(rand)
5289 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5290 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_CK2
5291 : #endif
5292 : use pm_kind, only: CKC => CK2
5293 : complex(CKC) , intent(in) :: lb, ub
5294 : integer(IK) , intent(in) :: s1, s2, s3
5295 : complex(CKC) :: rand(s1, s2, s3)
5296 : end function
5297 : #endif
5298 :
5299 : #if CK1_ENABLED
5300 : impure module function getUnifRandRNGDLU_D3_CK1(lb, ub, s1, s2, s3) result(rand)
5301 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5302 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_CK1
5303 : #endif
5304 : use pm_kind, only: CKC => CK1
5305 : complex(CKC) , intent(in) :: lb, ub
5306 : integer(IK) , intent(in) :: s1, s2, s3
5307 : complex(CKC) :: rand(s1, s2, s3)
5308 : end function
5309 : #endif
5310 :
5311 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5312 :
5313 : #if RK5_ENABLED
5314 : impure module function getUnifRandRNGDLU_D3_RK5(lb, ub, s1, s2, s3) result(rand)
5315 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5316 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_RK5
5317 : #endif
5318 : use pm_kind, only: RKC => RK5
5319 : real(RKC) , intent(in) :: lb, ub
5320 : integer(IK) , intent(in) :: s1, s2, s3
5321 : real(RKC) :: rand(s1, s2, s3)
5322 : end function
5323 :
5324 : #endif
5325 :
5326 : #if RK4_ENABLED
5327 : impure module function getUnifRandRNGDLU_D3_RK4(lb, ub, s1, s2, s3) result(rand)
5328 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5329 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_RK4
5330 : #endif
5331 : use pm_kind, only: RKC => RK4
5332 : real(RKC) , intent(in) :: lb, ub
5333 : integer(IK) , intent(in) :: s1, s2, s3
5334 : real(RKC) :: rand(s1, s2, s3)
5335 : end function
5336 :
5337 : #endif
5338 :
5339 : #if RK3_ENABLED
5340 : impure module function getUnifRandRNGDLU_D3_RK3(lb, ub, s1, s2, s3) result(rand)
5341 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5342 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_RK3
5343 : #endif
5344 : use pm_kind, only: RKC => RK3
5345 : real(RKC) , intent(in) :: lb, ub
5346 : integer(IK) , intent(in) :: s1, s2, s3
5347 : real(RKC) :: rand(s1, s2, s3)
5348 : end function
5349 :
5350 : #endif
5351 :
5352 : #if RK2_ENABLED
5353 : impure module function getUnifRandRNGDLU_D3_RK2(lb, ub, s1, s2, s3) result(rand)
5354 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5355 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_RK2
5356 : #endif
5357 : use pm_kind, only: RKC => RK2
5358 : real(RKC) , intent(in) :: lb, ub
5359 : integer(IK) , intent(in) :: s1, s2, s3
5360 : real(RKC) :: rand(s1, s2, s3)
5361 : end function
5362 : #endif
5363 :
5364 : #if RK1_ENABLED
5365 : impure module function getUnifRandRNGDLU_D3_RK1(lb, ub, s1, s2, s3) result(rand)
5366 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5367 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGDLU_D3_RK1
5368 : #endif
5369 : use pm_kind, only: RKC => RK1
5370 : real(RKC) , intent(in) :: lb, ub
5371 : integer(IK) , intent(in) :: s1, s2, s3
5372 : real(RKC) :: rand(s1, s2, s3)
5373 : end function
5374 : #endif
5375 :
5376 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5377 :
5378 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5379 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5380 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5381 :
5382 : end interface
5383 :
5384 : ! RNGF
5385 :
5386 : interface getUnifRand
5387 :
5388 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5389 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5390 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5391 :
5392 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5393 :
5394 : impure module function getUnifRandRNGFDD_D0_LK(rng) result(rand)
5395 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5396 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFDD_D0_LK
5397 : #endif
5398 : use pm_kind, only: LKC => LK
5399 : logical(LKC) :: rand
5400 : type(rngf_type) , intent(inout) :: rng
5401 : end function
5402 :
5403 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5404 :
5405 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5406 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5407 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5408 :
5409 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5410 :
5411 : #if SK5_ENABLED
5412 : impure elemental module function getUnifRandRNGFLU_D0_SK5(rng, lb, ub) result(rand)
5413 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5414 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_SK5
5415 : #endif
5416 : use pm_kind, only: SKC => SK5
5417 : character(*,SKC) , intent(in) :: lb, ub
5418 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
5419 : type(rngf_type) , intent(inout) :: rng
5420 : end function
5421 : #endif
5422 :
5423 : #if SK4_ENABLED
5424 : impure elemental module function getUnifRandRNGFLU_D0_SK4(rng, lb, ub) result(rand)
5425 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5426 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_SK4
5427 : #endif
5428 : use pm_kind, only: SKC => SK4
5429 : character(*,SKC) , intent(in) :: lb, ub
5430 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
5431 : type(rngf_type) , intent(inout) :: rng
5432 : end function
5433 : #endif
5434 :
5435 : #if SK3_ENABLED
5436 : impure elemental module function getUnifRandRNGFLU_D0_SK3(rng, lb, ub) result(rand)
5437 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5438 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_SK3
5439 : #endif
5440 : use pm_kind, only: SKC => SK3
5441 : character(*,SKC) , intent(in) :: lb, ub
5442 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
5443 : type(rngf_type) , intent(inout) :: rng
5444 : end function
5445 : #endif
5446 :
5447 : #if SK2_ENABLED
5448 : impure elemental module function getUnifRandRNGFLU_D0_SK2(rng, lb, ub) result(rand)
5449 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5450 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_SK2
5451 : #endif
5452 : use pm_kind, only: SKC => SK2
5453 : character(*,SKC) , intent(in) :: lb, ub
5454 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
5455 : type(rngf_type) , intent(inout) :: rng
5456 : end function
5457 : #endif
5458 :
5459 : #if SK1_ENABLED
5460 : impure elemental module function getUnifRandRNGFLU_D0_SK1(rng, lb, ub) result(rand)
5461 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5462 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_SK1
5463 : #endif
5464 : use pm_kind, only: SKC => SK1
5465 : character(*,SKC) , intent(in) :: lb, ub
5466 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
5467 : type(rngf_type) , intent(inout) :: rng
5468 : end function
5469 : #endif
5470 :
5471 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5472 :
5473 : #if IK5_ENABLED
5474 : impure elemental module function getUnifRandRNGFLU_D0_IK5(rng, lb, ub) result(rand)
5475 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5476 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_IK5
5477 : #endif
5478 : use pm_kind, only: IKC => IK5
5479 : integer(IKC) , intent(in) :: lb, ub
5480 : integer(IKC) :: rand
5481 : type(rngf_type) , intent(inout) :: rng
5482 : end function
5483 : #endif
5484 :
5485 : #if IK4_ENABLED
5486 : impure elemental module function getUnifRandRNGFLU_D0_IK4(rng, lb, ub) result(rand)
5487 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5488 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_IK4
5489 : #endif
5490 : use pm_kind, only: IKC => IK4
5491 : integer(IKC) , intent(in) :: lb, ub
5492 : integer(IKC) :: rand
5493 : type(rngf_type) , intent(inout) :: rng
5494 : end function
5495 : #endif
5496 :
5497 : #if IK3_ENABLED
5498 : impure elemental module function getUnifRandRNGFLU_D0_IK3(rng, lb, ub) result(rand)
5499 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5500 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_IK3
5501 : #endif
5502 : use pm_kind, only: IKC => IK3
5503 : integer(IKC) , intent(in) :: lb, ub
5504 : integer(IKC) :: rand
5505 : type(rngf_type) , intent(inout) :: rng
5506 : end function
5507 : #endif
5508 :
5509 : #if IK2_ENABLED
5510 : impure elemental module function getUnifRandRNGFLU_D0_IK2(rng, lb, ub) result(rand)
5511 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5512 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_IK2
5513 : #endif
5514 : use pm_kind, only: IKC => IK2
5515 : integer(IKC) , intent(in) :: lb, ub
5516 : integer(IKC) :: rand
5517 : type(rngf_type) , intent(inout) :: rng
5518 : end function
5519 : #endif
5520 :
5521 : #if IK1_ENABLED
5522 : impure elemental module function getUnifRandRNGFLU_D0_IK1(rng, lb, ub) result(rand)
5523 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5524 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_IK1
5525 : #endif
5526 : use pm_kind, only: IKC => IK1
5527 : integer(IKC) , intent(in) :: lb, ub
5528 : integer(IKC) :: rand
5529 : type(rngf_type) , intent(inout) :: rng
5530 : end function
5531 : #endif
5532 :
5533 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5534 :
5535 : #if LK5_ENABLED
5536 : impure elemental module function getUnifRandRNGFLU_D0_LK5(rng, lb, ub) result(rand)
5537 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5538 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_LK5
5539 : #endif
5540 : use pm_kind, only: LKC => LK5
5541 : logical(LKC) , intent(in) :: lb, ub
5542 : logical(LKC) :: rand
5543 : type(rngf_type) , intent(inout) :: rng
5544 : end function
5545 : #endif
5546 :
5547 : #if LK4_ENABLED
5548 : impure elemental module function getUnifRandRNGFLU_D0_LK4(rng, lb, ub) result(rand)
5549 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5550 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_LK4
5551 : #endif
5552 : use pm_kind, only: LKC => LK4
5553 : logical(LKC) , intent(in) :: lb, ub
5554 : logical(LKC) :: rand
5555 : type(rngf_type) , intent(inout) :: rng
5556 : end function
5557 : #endif
5558 :
5559 : #if LK3_ENABLED
5560 : impure elemental module function getUnifRandRNGFLU_D0_LK3(rng, lb, ub) result(rand)
5561 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5562 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_LK3
5563 : #endif
5564 : use pm_kind, only: LKC => LK3
5565 : logical(LKC) , intent(in) :: lb, ub
5566 : logical(LKC) :: rand
5567 : type(rngf_type) , intent(inout) :: rng
5568 : end function
5569 : #endif
5570 :
5571 : #if LK2_ENABLED
5572 : impure elemental module function getUnifRandRNGFLU_D0_LK2(rng, lb, ub) result(rand)
5573 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5574 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_LK2
5575 : #endif
5576 : use pm_kind, only: LKC => LK2
5577 : logical(LKC) , intent(in) :: lb, ub
5578 : logical(LKC) :: rand
5579 : type(rngf_type) , intent(inout) :: rng
5580 : end function
5581 : #endif
5582 :
5583 : #if LK1_ENABLED
5584 : impure elemental module function getUnifRandRNGFLU_D0_LK1(rng, lb, ub) result(rand)
5585 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5586 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_LK1
5587 : #endif
5588 : use pm_kind, only: LKC => LK1
5589 : logical(LKC) , intent(in) :: lb, ub
5590 : logical(LKC) :: rand
5591 : type(rngf_type) , intent(inout) :: rng
5592 : end function
5593 : #endif
5594 :
5595 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5596 :
5597 : #if CK5_ENABLED
5598 : impure elemental module function getUnifRandRNGFLU_D0_CK5(rng, lb, ub) result(rand)
5599 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5600 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_CK5
5601 : #endif
5602 : use pm_kind, only: CKC => CK5
5603 : complex(CKC) , intent(in) :: lb, ub
5604 : complex(CKC) :: rand
5605 : type(rngf_type) , intent(inout) :: rng
5606 : end function
5607 : #endif
5608 :
5609 : #if CK4_ENABLED
5610 : impure elemental module function getUnifRandRNGFLU_D0_CK4(rng, lb, ub) result(rand)
5611 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5612 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_CK4
5613 : #endif
5614 : use pm_kind, only: CKC => CK4
5615 : complex(CKC) , intent(in) :: lb, ub
5616 : complex(CKC) :: rand
5617 : type(rngf_type) , intent(inout) :: rng
5618 : end function
5619 : #endif
5620 :
5621 : #if CK3_ENABLED
5622 : impure elemental module function getUnifRandRNGFLU_D0_CK3(rng, lb, ub) result(rand)
5623 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5624 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_CK3
5625 : #endif
5626 : use pm_kind, only: CKC => CK3
5627 : complex(CKC) , intent(in) :: lb, ub
5628 : complex(CKC) :: rand
5629 : type(rngf_type) , intent(inout) :: rng
5630 : end function
5631 : #endif
5632 :
5633 : #if CK2_ENABLED
5634 : impure elemental module function getUnifRandRNGFLU_D0_CK2(rng, lb, ub) result(rand)
5635 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5636 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_CK2
5637 : #endif
5638 : use pm_kind, only: CKC => CK2
5639 : complex(CKC) , intent(in) :: lb, ub
5640 : complex(CKC) :: rand
5641 : type(rngf_type) , intent(inout) :: rng
5642 : end function
5643 : #endif
5644 :
5645 : #if CK1_ENABLED
5646 : impure elemental module function getUnifRandRNGFLU_D0_CK1(rng, lb, ub) result(rand)
5647 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5648 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_CK1
5649 : #endif
5650 : use pm_kind, only: CKC => CK1
5651 : complex(CKC) , intent(in) :: lb, ub
5652 : complex(CKC) :: rand
5653 : type(rngf_type) , intent(inout) :: rng
5654 : end function
5655 : #endif
5656 :
5657 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5658 :
5659 : #if RK5_ENABLED
5660 : impure elemental module function getUnifRandRNGFLU_D0_RK5(rng, lb, ub) result(rand)
5661 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5662 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_RK5
5663 : #endif
5664 : use pm_kind, only: RKC => RK5
5665 : real(RKC) , intent(in) :: lb, ub
5666 : real(RKC) :: rand
5667 : type(rngf_type) , intent(inout) :: rng
5668 : end function
5669 : #endif
5670 :
5671 : #if RK4_ENABLED
5672 : impure elemental module function getUnifRandRNGFLU_D0_RK4(rng, lb, ub) result(rand)
5673 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5674 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_RK4
5675 : #endif
5676 : use pm_kind, only: RKC => RK4
5677 : real(RKC) , intent(in) :: lb, ub
5678 : real(RKC) :: rand
5679 : type(rngf_type) , intent(inout) :: rng
5680 : end function
5681 : #endif
5682 :
5683 : #if RK3_ENABLED
5684 : impure elemental module function getUnifRandRNGFLU_D0_RK3(rng, lb, ub) result(rand)
5685 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5686 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_RK3
5687 : #endif
5688 : use pm_kind, only: RKC => RK3
5689 : real(RKC) , intent(in) :: lb, ub
5690 : real(RKC) :: rand
5691 : type(rngf_type) , intent(inout) :: rng
5692 : end function
5693 : #endif
5694 :
5695 : #if RK2_ENABLED
5696 : impure elemental module function getUnifRandRNGFLU_D0_RK2(rng, lb, ub) result(rand)
5697 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5698 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_RK2
5699 : #endif
5700 : use pm_kind, only: RKC => RK2
5701 : real(RKC) , intent(in) :: lb, ub
5702 : real(RKC) :: rand
5703 : type(rngf_type) , intent(inout) :: rng
5704 : end function
5705 : #endif
5706 :
5707 : #if RK1_ENABLED
5708 : impure elemental module function getUnifRandRNGFLU_D0_RK1(rng, lb, ub) result(rand)
5709 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5710 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D0_RK1
5711 : #endif
5712 : use pm_kind, only: RKC => RK1
5713 : real(RKC) , intent(in) :: lb, ub
5714 : real(RKC) :: rand
5715 : type(rngf_type) , intent(inout) :: rng
5716 : end function
5717 : #endif
5718 :
5719 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5720 :
5721 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5722 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5723 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5724 :
5725 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5726 :
5727 : #if SK5_ENABLED
5728 : impure module function getUnifRandRNGFLU_D1_SK5(rng, lb, ub, s1) result(rand)
5729 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5730 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_SK5
5731 : #endif
5732 : use pm_kind, only: SKC => SK5
5733 : character(*,SKC) , intent(in) :: lb, ub
5734 : integer(IK) , intent(in) :: s1
5735 : character(len(lb,IK),SKC) :: rand(s1)
5736 : type(rngf_type) , intent(inout) :: rng
5737 : end function
5738 : #endif
5739 :
5740 : #if SK4_ENABLED
5741 : impure module function getUnifRandRNGFLU_D1_SK4(rng, lb, ub, s1) result(rand)
5742 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5743 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_SK4
5744 : #endif
5745 : use pm_kind, only: SKC => SK4
5746 : character(*,SKC) , intent(in) :: lb, ub
5747 : integer(IK) , intent(in) :: s1
5748 : character(len(lb,IK),SKC) :: rand(s1)
5749 : type(rngf_type) , intent(inout) :: rng
5750 : end function
5751 : #endif
5752 :
5753 : #if SK3_ENABLED
5754 : impure module function getUnifRandRNGFLU_D1_SK3(rng, lb, ub, s1) result(rand)
5755 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5756 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_SK3
5757 : #endif
5758 : use pm_kind, only: SKC => SK3
5759 : character(*,SKC) , intent(in) :: lb, ub
5760 : integer(IK) , intent(in) :: s1
5761 : character(len(lb,IK),SKC) :: rand(s1)
5762 : type(rngf_type) , intent(inout) :: rng
5763 : end function
5764 : #endif
5765 :
5766 : #if SK2_ENABLED
5767 : impure module function getUnifRandRNGFLU_D1_SK2(rng, lb, ub, s1) result(rand)
5768 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5769 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_SK2
5770 : #endif
5771 : use pm_kind, only: SKC => SK2
5772 : character(*,SKC) , intent(in) :: lb, ub
5773 : integer(IK) , intent(in) :: s1
5774 : character(len(lb,IK),SKC) :: rand(s1)
5775 : type(rngf_type) , intent(inout) :: rng
5776 : end function
5777 : #endif
5778 :
5779 : #if SK1_ENABLED
5780 : impure module function getUnifRandRNGFLU_D1_SK1(rng, lb, ub, s1) result(rand)
5781 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5782 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_SK1
5783 : #endif
5784 : use pm_kind, only: SKC => SK1
5785 : character(*,SKC) , intent(in) :: lb, ub
5786 : integer(IK) , intent(in) :: s1
5787 : character(len(lb,IK),SKC) :: rand(s1)
5788 : type(rngf_type) , intent(inout) :: rng
5789 : end function
5790 : #endif
5791 :
5792 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5793 :
5794 : #if IK5_ENABLED
5795 : impure module function getUnifRandRNGFLU_D1_IK5(rng, lb, ub, s1) result(rand)
5796 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5797 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_IK5
5798 : #endif
5799 : use pm_kind, only: IKC => IK5
5800 : integer(IKC) , intent(in) :: lb, ub
5801 : integer(IK) , intent(in) :: s1
5802 : integer(IKC) :: rand(s1)
5803 : type(rngf_type) , intent(inout) :: rng
5804 : end function
5805 : #endif
5806 :
5807 : #if IK4_ENABLED
5808 : impure module function getUnifRandRNGFLU_D1_IK4(rng, lb, ub, s1) result(rand)
5809 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5810 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_IK4
5811 : #endif
5812 : use pm_kind, only: IKC => IK4
5813 : integer(IKC) , intent(in) :: lb, ub
5814 : integer(IK) , intent(in) :: s1
5815 : integer(IKC) :: rand(s1)
5816 : type(rngf_type) , intent(inout) :: rng
5817 : end function
5818 : #endif
5819 :
5820 : #if IK3_ENABLED
5821 : impure module function getUnifRandRNGFLU_D1_IK3(rng, lb, ub, s1) result(rand)
5822 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5823 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_IK3
5824 : #endif
5825 : use pm_kind, only: IKC => IK3
5826 : integer(IKC) , intent(in) :: lb, ub
5827 : integer(IK) , intent(in) :: s1
5828 : integer(IKC) :: rand(s1)
5829 : type(rngf_type) , intent(inout) :: rng
5830 : end function
5831 : #endif
5832 :
5833 : #if IK2_ENABLED
5834 : impure module function getUnifRandRNGFLU_D1_IK2(rng, lb, ub, s1) result(rand)
5835 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5836 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_IK2
5837 : #endif
5838 : use pm_kind, only: IKC => IK2
5839 : integer(IKC) , intent(in) :: lb, ub
5840 : integer(IK) , intent(in) :: s1
5841 : integer(IKC) :: rand(s1)
5842 : type(rngf_type) , intent(inout) :: rng
5843 : end function
5844 : #endif
5845 :
5846 : #if IK1_ENABLED
5847 : impure module function getUnifRandRNGFLU_D1_IK1(rng, lb, ub, s1) result(rand)
5848 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5849 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_IK1
5850 : #endif
5851 : use pm_kind, only: IKC => IK1
5852 : integer(IKC) , intent(in) :: lb, ub
5853 : integer(IK) , intent(in) :: s1
5854 : integer(IKC) :: rand(s1)
5855 : type(rngf_type) , intent(inout) :: rng
5856 : end function
5857 : #endif
5858 :
5859 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5860 :
5861 : #if LK5_ENABLED
5862 : impure module function getUnifRandRNGFLU_D1_LK5(rng, lb, ub, s1) result(rand)
5863 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5864 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_LK5
5865 : #endif
5866 : use pm_kind, only: LKC => LK5
5867 : logical(LKC) , intent(in) :: lb, ub
5868 : integer(IK) , intent(in) :: s1
5869 : logical(LKC) :: rand(s1)
5870 : type(rngf_type) , intent(inout) :: rng
5871 : end function
5872 : #endif
5873 :
5874 : #if LK4_ENABLED
5875 : impure module function getUnifRandRNGFLU_D1_LK4(rng, lb, ub, s1) result(rand)
5876 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5877 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_LK4
5878 : #endif
5879 : use pm_kind, only: LKC => LK4
5880 : logical(LKC) , intent(in) :: lb, ub
5881 : integer(IK) , intent(in) :: s1
5882 : logical(LKC) :: rand(s1)
5883 : type(rngf_type) , intent(inout) :: rng
5884 : end function
5885 : #endif
5886 :
5887 : #if LK3_ENABLED
5888 : impure module function getUnifRandRNGFLU_D1_LK3(rng, lb, ub, s1) result(rand)
5889 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5890 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_LK3
5891 : #endif
5892 : use pm_kind, only: LKC => LK3
5893 : logical(LKC) , intent(in) :: lb, ub
5894 : integer(IK) , intent(in) :: s1
5895 : logical(LKC) :: rand(s1)
5896 : type(rngf_type) , intent(inout) :: rng
5897 : end function
5898 : #endif
5899 :
5900 : #if LK2_ENABLED
5901 : impure module function getUnifRandRNGFLU_D1_LK2(rng, lb, ub, s1) result(rand)
5902 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5903 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_LK2
5904 : #endif
5905 : use pm_kind, only: LKC => LK2
5906 : logical(LKC) , intent(in) :: lb, ub
5907 : integer(IK) , intent(in) :: s1
5908 : logical(LKC) :: rand(s1)
5909 : type(rngf_type) , intent(inout) :: rng
5910 : end function
5911 : #endif
5912 :
5913 : #if LK1_ENABLED
5914 : impure module function getUnifRandRNGFLU_D1_LK1(rng, lb, ub, s1) result(rand)
5915 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5916 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_LK1
5917 : #endif
5918 : use pm_kind, only: LKC => LK1
5919 : logical(LKC) , intent(in) :: lb, ub
5920 : integer(IK) , intent(in) :: s1
5921 : logical(LKC) :: rand(s1)
5922 : type(rngf_type) , intent(inout) :: rng
5923 : end function
5924 : #endif
5925 :
5926 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5927 :
5928 : #if CK5_ENABLED
5929 : impure module function getUnifRandRNGFLU_D1_CK5(rng, lb, ub, s1) result(rand)
5930 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5931 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_CK5
5932 : #endif
5933 : use pm_kind, only: CKC => CK5
5934 : complex(CKC) , intent(in) :: lb, ub
5935 : integer(IK) , intent(in) :: s1
5936 : complex(CKC) :: rand(s1)
5937 : type(rngf_type) , intent(inout) :: rng
5938 : end function
5939 : #endif
5940 :
5941 : #if CK4_ENABLED
5942 : impure module function getUnifRandRNGFLU_D1_CK4(rng, lb, ub, s1) result(rand)
5943 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5944 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_CK4
5945 : #endif
5946 : use pm_kind, only: CKC => CK4
5947 : complex(CKC) , intent(in) :: lb, ub
5948 : integer(IK) , intent(in) :: s1
5949 : complex(CKC) :: rand(s1)
5950 : type(rngf_type) , intent(inout) :: rng
5951 : end function
5952 : #endif
5953 :
5954 : #if CK3_ENABLED
5955 : impure module function getUnifRandRNGFLU_D1_CK3(rng, lb, ub, s1) result(rand)
5956 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5957 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_CK3
5958 : #endif
5959 : use pm_kind, only: CKC => CK3
5960 : complex(CKC) , intent(in) :: lb, ub
5961 : integer(IK) , intent(in) :: s1
5962 : complex(CKC) :: rand(s1)
5963 : type(rngf_type) , intent(inout) :: rng
5964 : end function
5965 : #endif
5966 :
5967 : #if CK2_ENABLED
5968 : impure module function getUnifRandRNGFLU_D1_CK2(rng, lb, ub, s1) result(rand)
5969 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5970 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_CK2
5971 : #endif
5972 : use pm_kind, only: CKC => CK2
5973 : complex(CKC) , intent(in) :: lb, ub
5974 : integer(IK) , intent(in) :: s1
5975 : complex(CKC) :: rand(s1)
5976 : type(rngf_type) , intent(inout) :: rng
5977 : end function
5978 : #endif
5979 :
5980 : #if CK1_ENABLED
5981 : impure module function getUnifRandRNGFLU_D1_CK1(rng, lb, ub, s1) result(rand)
5982 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5983 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_CK1
5984 : #endif
5985 : use pm_kind, only: CKC => CK1
5986 : complex(CKC) , intent(in) :: lb, ub
5987 : integer(IK) , intent(in) :: s1
5988 : complex(CKC) :: rand(s1)
5989 : type(rngf_type) , intent(inout) :: rng
5990 : end function
5991 : #endif
5992 :
5993 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5994 :
5995 : #if RK5_ENABLED
5996 : impure module function getUnifRandRNGFLU_D1_RK5(rng, lb, ub, s1) result(rand)
5997 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5998 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_RK5
5999 : #endif
6000 : use pm_kind, only: RKC => RK5
6001 : real(RKC) , intent(in) :: lb, ub
6002 : integer(IK) , intent(in) :: s1
6003 : real(RKC) :: rand(s1)
6004 : type(rngf_type) , intent(inout) :: rng
6005 : end function
6006 :
6007 : #endif
6008 :
6009 : #if RK4_ENABLED
6010 : impure module function getUnifRandRNGFLU_D1_RK4(rng, lb, ub, s1) result(rand)
6011 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6012 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_RK4
6013 : #endif
6014 : use pm_kind, only: RKC => RK4
6015 : real(RKC) , intent(in) :: lb, ub
6016 : integer(IK) , intent(in) :: s1
6017 : real(RKC) :: rand(s1)
6018 : type(rngf_type) , intent(inout) :: rng
6019 : end function
6020 :
6021 : #endif
6022 :
6023 : #if RK3_ENABLED
6024 : impure module function getUnifRandRNGFLU_D1_RK3(rng, lb, ub, s1) result(rand)
6025 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6026 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_RK3
6027 : #endif
6028 : use pm_kind, only: RKC => RK3
6029 : real(RKC) , intent(in) :: lb, ub
6030 : integer(IK) , intent(in) :: s1
6031 : real(RKC) :: rand(s1)
6032 : type(rngf_type) , intent(inout) :: rng
6033 : end function
6034 :
6035 : #endif
6036 :
6037 : #if RK2_ENABLED
6038 : impure module function getUnifRandRNGFLU_D1_RK2(rng, lb, ub, s1) result(rand)
6039 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6040 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_RK2
6041 : #endif
6042 : use pm_kind, only: RKC => RK2
6043 : real(RKC) , intent(in) :: lb, ub
6044 : integer(IK) , intent(in) :: s1
6045 : real(RKC) :: rand(s1)
6046 : type(rngf_type) , intent(inout) :: rng
6047 : end function
6048 : #endif
6049 :
6050 : #if RK1_ENABLED
6051 : impure module function getUnifRandRNGFLU_D1_RK1(rng, lb, ub, s1) result(rand)
6052 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6053 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D1_RK1
6054 : #endif
6055 : use pm_kind, only: RKC => RK1
6056 : real(RKC) , intent(in) :: lb, ub
6057 : integer(IK) , intent(in) :: s1
6058 : real(RKC) :: rand(s1)
6059 : type(rngf_type) , intent(inout) :: rng
6060 : end function
6061 : #endif
6062 :
6063 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6064 :
6065 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6066 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6067 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6068 :
6069 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6070 :
6071 : #if SK5_ENABLED
6072 : impure module function getUnifRandRNGFLU_D2_SK5(rng, lb, ub, s1, s2) result(rand)
6073 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6074 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_SK5
6075 : #endif
6076 : use pm_kind, only: SKC => SK5
6077 : character(*,SKC) , intent(in) :: lb, ub
6078 : integer(IK) , intent(in) :: s1, s2
6079 : character(len(lb,IK),SKC) :: rand(s1, s2)
6080 : type(rngf_type) , intent(inout) :: rng
6081 : end function
6082 : #endif
6083 :
6084 : #if SK4_ENABLED
6085 : impure module function getUnifRandRNGFLU_D2_SK4(rng, lb, ub, s1, s2) result(rand)
6086 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6087 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_SK4
6088 : #endif
6089 : use pm_kind, only: SKC => SK4
6090 : character(*,SKC) , intent(in) :: lb, ub
6091 : integer(IK) , intent(in) :: s1, s2
6092 : character(len(lb,IK),SKC) :: rand(s1, s2)
6093 : type(rngf_type) , intent(inout) :: rng
6094 : end function
6095 : #endif
6096 :
6097 : #if SK3_ENABLED
6098 : impure module function getUnifRandRNGFLU_D2_SK3(rng, lb, ub, s1, s2) result(rand)
6099 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6100 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_SK3
6101 : #endif
6102 : use pm_kind, only: SKC => SK3
6103 : character(*,SKC) , intent(in) :: lb, ub
6104 : integer(IK) , intent(in) :: s1, s2
6105 : character(len(lb,IK),SKC) :: rand(s1, s2)
6106 : type(rngf_type) , intent(inout) :: rng
6107 : end function
6108 : #endif
6109 :
6110 : #if SK2_ENABLED
6111 : impure module function getUnifRandRNGFLU_D2_SK2(rng, lb, ub, s1, s2) result(rand)
6112 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6113 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_SK2
6114 : #endif
6115 : use pm_kind, only: SKC => SK2
6116 : character(*,SKC) , intent(in) :: lb, ub
6117 : integer(IK) , intent(in) :: s1, s2
6118 : character(len(lb,IK),SKC) :: rand(s1, s2)
6119 : type(rngf_type) , intent(inout) :: rng
6120 : end function
6121 : #endif
6122 :
6123 : #if SK1_ENABLED
6124 : impure module function getUnifRandRNGFLU_D2_SK1(rng, lb, ub, s1, s2) result(rand)
6125 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6126 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_SK1
6127 : #endif
6128 : use pm_kind, only: SKC => SK1
6129 : character(*,SKC) , intent(in) :: lb, ub
6130 : integer(IK) , intent(in) :: s1, s2
6131 : character(len(lb,IK),SKC) :: rand(s1, s2)
6132 : type(rngf_type) , intent(inout) :: rng
6133 : end function
6134 : #endif
6135 :
6136 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6137 :
6138 : #if IK5_ENABLED
6139 : impure module function getUnifRandRNGFLU_D2_IK5(rng, lb, ub, s1, s2) result(rand)
6140 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6141 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_IK5
6142 : #endif
6143 : use pm_kind, only: IKC => IK5
6144 : integer(IKC) , intent(in) :: lb, ub
6145 : integer(IK) , intent(in) :: s1, s2
6146 : integer(IKC) :: rand(s1, s2)
6147 : type(rngf_type) , intent(inout) :: rng
6148 : end function
6149 : #endif
6150 :
6151 : #if IK4_ENABLED
6152 : impure module function getUnifRandRNGFLU_D2_IK4(rng, lb, ub, s1, s2) result(rand)
6153 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6154 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_IK4
6155 : #endif
6156 : use pm_kind, only: IKC => IK4
6157 : integer(IKC) , intent(in) :: lb, ub
6158 : integer(IK) , intent(in) :: s1, s2
6159 : integer(IKC) :: rand(s1, s2)
6160 : type(rngf_type) , intent(inout) :: rng
6161 : end function
6162 : #endif
6163 :
6164 : #if IK3_ENABLED
6165 : impure module function getUnifRandRNGFLU_D2_IK3(rng, lb, ub, s1, s2) result(rand)
6166 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6167 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_IK3
6168 : #endif
6169 : use pm_kind, only: IKC => IK3
6170 : integer(IKC) , intent(in) :: lb, ub
6171 : integer(IK) , intent(in) :: s1, s2
6172 : integer(IKC) :: rand(s1, s2)
6173 : type(rngf_type) , intent(inout) :: rng
6174 : end function
6175 : #endif
6176 :
6177 : #if IK2_ENABLED
6178 : impure module function getUnifRandRNGFLU_D2_IK2(rng, lb, ub, s1, s2) result(rand)
6179 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6180 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_IK2
6181 : #endif
6182 : use pm_kind, only: IKC => IK2
6183 : integer(IKC) , intent(in) :: lb, ub
6184 : integer(IK) , intent(in) :: s1, s2
6185 : integer(IKC) :: rand(s1, s2)
6186 : type(rngf_type) , intent(inout) :: rng
6187 : end function
6188 : #endif
6189 :
6190 : #if IK1_ENABLED
6191 : impure module function getUnifRandRNGFLU_D2_IK1(rng, lb, ub, s1, s2) result(rand)
6192 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6193 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_IK1
6194 : #endif
6195 : use pm_kind, only: IKC => IK1
6196 : integer(IKC) , intent(in) :: lb, ub
6197 : integer(IK) , intent(in) :: s1, s2
6198 : integer(IKC) :: rand(s1, s2)
6199 : type(rngf_type) , intent(inout) :: rng
6200 : end function
6201 : #endif
6202 :
6203 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6204 :
6205 : #if LK5_ENABLED
6206 : impure module function getUnifRandRNGFLU_D2_LK5(rng, lb, ub, s1, s2) result(rand)
6207 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6208 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_LK5
6209 : #endif
6210 : use pm_kind, only: LKC => LK5
6211 : logical(LKC) , intent(in) :: lb, ub
6212 : integer(IK) , intent(in) :: s1, s2
6213 : logical(LKC) :: rand(s1, s2)
6214 : type(rngf_type) , intent(inout) :: rng
6215 : end function
6216 : #endif
6217 :
6218 : #if LK4_ENABLED
6219 : impure module function getUnifRandRNGFLU_D2_LK4(rng, lb, ub, s1, s2) result(rand)
6220 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6221 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_LK4
6222 : #endif
6223 : use pm_kind, only: LKC => LK4
6224 : logical(LKC) , intent(in) :: lb, ub
6225 : integer(IK) , intent(in) :: s1, s2
6226 : logical(LKC) :: rand(s1, s2)
6227 : type(rngf_type) , intent(inout) :: rng
6228 : end function
6229 : #endif
6230 :
6231 : #if LK3_ENABLED
6232 : impure module function getUnifRandRNGFLU_D2_LK3(rng, lb, ub, s1, s2) result(rand)
6233 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6234 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_LK3
6235 : #endif
6236 : use pm_kind, only: LKC => LK3
6237 : logical(LKC) , intent(in) :: lb, ub
6238 : integer(IK) , intent(in) :: s1, s2
6239 : logical(LKC) :: rand(s1, s2)
6240 : type(rngf_type) , intent(inout) :: rng
6241 : end function
6242 : #endif
6243 :
6244 : #if LK2_ENABLED
6245 : impure module function getUnifRandRNGFLU_D2_LK2(rng, lb, ub, s1, s2) result(rand)
6246 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6247 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_LK2
6248 : #endif
6249 : use pm_kind, only: LKC => LK2
6250 : logical(LKC) , intent(in) :: lb, ub
6251 : integer(IK) , intent(in) :: s1, s2
6252 : logical(LKC) :: rand(s1, s2)
6253 : type(rngf_type) , intent(inout) :: rng
6254 : end function
6255 : #endif
6256 :
6257 : #if LK1_ENABLED
6258 : impure module function getUnifRandRNGFLU_D2_LK1(rng, lb, ub, s1, s2) result(rand)
6259 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6260 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_LK1
6261 : #endif
6262 : use pm_kind, only: LKC => LK1
6263 : logical(LKC) , intent(in) :: lb, ub
6264 : integer(IK) , intent(in) :: s1, s2
6265 : logical(LKC) :: rand(s1, s2)
6266 : type(rngf_type) , intent(inout) :: rng
6267 : end function
6268 : #endif
6269 :
6270 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6271 :
6272 : #if CK5_ENABLED
6273 : impure module function getUnifRandRNGFLU_D2_CK5(rng, lb, ub, s1, s2) result(rand)
6274 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6275 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_CK5
6276 : #endif
6277 : use pm_kind, only: CKC => CK5
6278 : complex(CKC) , intent(in) :: lb, ub
6279 : integer(IK) , intent(in) :: s1, s2
6280 : complex(CKC) :: rand(s1, s2)
6281 : type(rngf_type) , intent(inout) :: rng
6282 : end function
6283 : #endif
6284 :
6285 : #if CK4_ENABLED
6286 : impure module function getUnifRandRNGFLU_D2_CK4(rng, lb, ub, s1, s2) result(rand)
6287 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6288 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_CK4
6289 : #endif
6290 : use pm_kind, only: CKC => CK4
6291 : complex(CKC) , intent(in) :: lb, ub
6292 : integer(IK) , intent(in) :: s1, s2
6293 : complex(CKC) :: rand(s1, s2)
6294 : type(rngf_type) , intent(inout) :: rng
6295 : end function
6296 : #endif
6297 :
6298 : #if CK3_ENABLED
6299 : impure module function getUnifRandRNGFLU_D2_CK3(rng, lb, ub, s1, s2) result(rand)
6300 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6301 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_CK3
6302 : #endif
6303 : use pm_kind, only: CKC => CK3
6304 : complex(CKC) , intent(in) :: lb, ub
6305 : integer(IK) , intent(in) :: s1, s2
6306 : complex(CKC) :: rand(s1, s2)
6307 : type(rngf_type) , intent(inout) :: rng
6308 : end function
6309 : #endif
6310 :
6311 : #if CK2_ENABLED
6312 : impure module function getUnifRandRNGFLU_D2_CK2(rng, lb, ub, s1, s2) result(rand)
6313 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6314 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_CK2
6315 : #endif
6316 : use pm_kind, only: CKC => CK2
6317 : complex(CKC) , intent(in) :: lb, ub
6318 : integer(IK) , intent(in) :: s1, s2
6319 : complex(CKC) :: rand(s1, s2)
6320 : type(rngf_type) , intent(inout) :: rng
6321 : end function
6322 : #endif
6323 :
6324 : #if CK1_ENABLED
6325 : impure module function getUnifRandRNGFLU_D2_CK1(rng, lb, ub, s1, s2) result(rand)
6326 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6327 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_CK1
6328 : #endif
6329 : use pm_kind, only: CKC => CK1
6330 : complex(CKC) , intent(in) :: lb, ub
6331 : integer(IK) , intent(in) :: s1, s2
6332 : complex(CKC) :: rand(s1, s2)
6333 : type(rngf_type) , intent(inout) :: rng
6334 : end function
6335 : #endif
6336 :
6337 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6338 :
6339 : #if RK5_ENABLED
6340 : impure module function getUnifRandRNGFLU_D2_RK5(rng, lb, ub, s1, s2) result(rand)
6341 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6342 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_RK5
6343 : #endif
6344 : use pm_kind, only: RKC => RK5
6345 : real(RKC) , intent(in) :: lb, ub
6346 : integer(IK) , intent(in) :: s1, s2
6347 : real(RKC) :: rand(s1, s2)
6348 : type(rngf_type) , intent(inout) :: rng
6349 : end function
6350 :
6351 : #endif
6352 :
6353 : #if RK4_ENABLED
6354 : impure module function getUnifRandRNGFLU_D2_RK4(rng, lb, ub, s1, s2) result(rand)
6355 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6356 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_RK4
6357 : #endif
6358 : use pm_kind, only: RKC => RK4
6359 : real(RKC) , intent(in) :: lb, ub
6360 : integer(IK) , intent(in) :: s1, s2
6361 : real(RKC) :: rand(s1, s2)
6362 : type(rngf_type) , intent(inout) :: rng
6363 : end function
6364 :
6365 : #endif
6366 :
6367 : #if RK3_ENABLED
6368 : impure module function getUnifRandRNGFLU_D2_RK3(rng, lb, ub, s1, s2) result(rand)
6369 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6370 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_RK3
6371 : #endif
6372 : use pm_kind, only: RKC => RK3
6373 : real(RKC) , intent(in) :: lb, ub
6374 : integer(IK) , intent(in) :: s1, s2
6375 : real(RKC) :: rand(s1, s2)
6376 : type(rngf_type) , intent(inout) :: rng
6377 : end function
6378 :
6379 : #endif
6380 :
6381 : #if RK2_ENABLED
6382 : impure module function getUnifRandRNGFLU_D2_RK2(rng, lb, ub, s1, s2) result(rand)
6383 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6384 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_RK2
6385 : #endif
6386 : use pm_kind, only: RKC => RK2
6387 : real(RKC) , intent(in) :: lb, ub
6388 : integer(IK) , intent(in) :: s1, s2
6389 : real(RKC) :: rand(s1, s2)
6390 : type(rngf_type) , intent(inout) :: rng
6391 : end function
6392 : #endif
6393 :
6394 : #if RK1_ENABLED
6395 : impure module function getUnifRandRNGFLU_D2_RK1(rng, lb, ub, s1, s2) result(rand)
6396 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6397 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D2_RK1
6398 : #endif
6399 : use pm_kind, only: RKC => RK1
6400 : real(RKC) , intent(in) :: lb, ub
6401 : integer(IK) , intent(in) :: s1, s2
6402 : real(RKC) :: rand(s1, s2)
6403 : type(rngf_type) , intent(inout) :: rng
6404 : end function
6405 : #endif
6406 :
6407 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6408 :
6409 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6410 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6411 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6412 :
6413 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6414 :
6415 : #if SK5_ENABLED
6416 : impure module function getUnifRandRNGFLU_D3_SK5(rng, lb, ub, s1, s2, s3) result(rand)
6417 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6418 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_SK5
6419 : #endif
6420 : use pm_kind, only: SKC => SK5
6421 : character(*,SKC) , intent(in) :: lb, ub
6422 : integer(IK) , intent(in) :: s1, s2, s3
6423 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
6424 : type(rngf_type) , intent(inout) :: rng
6425 : end function
6426 : #endif
6427 :
6428 : #if SK4_ENABLED
6429 : impure module function getUnifRandRNGFLU_D3_SK4(rng, lb, ub, s1, s2, s3) result(rand)
6430 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6431 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_SK4
6432 : #endif
6433 : use pm_kind, only: SKC => SK4
6434 : character(*,SKC) , intent(in) :: lb, ub
6435 : integer(IK) , intent(in) :: s1, s2, s3
6436 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
6437 : type(rngf_type) , intent(inout) :: rng
6438 : end function
6439 : #endif
6440 :
6441 : #if SK3_ENABLED
6442 : impure module function getUnifRandRNGFLU_D3_SK3(rng, lb, ub, s1, s2, s3) result(rand)
6443 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6444 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_SK3
6445 : #endif
6446 : use pm_kind, only: SKC => SK3
6447 : character(*,SKC) , intent(in) :: lb, ub
6448 : integer(IK) , intent(in) :: s1, s2, s3
6449 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
6450 : type(rngf_type) , intent(inout) :: rng
6451 : end function
6452 : #endif
6453 :
6454 : #if SK2_ENABLED
6455 : impure module function getUnifRandRNGFLU_D3_SK2(rng, lb, ub, s1, s2, s3) result(rand)
6456 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6457 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_SK2
6458 : #endif
6459 : use pm_kind, only: SKC => SK2
6460 : character(*,SKC) , intent(in) :: lb, ub
6461 : integer(IK) , intent(in) :: s1, s2, s3
6462 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
6463 : type(rngf_type) , intent(inout) :: rng
6464 : end function
6465 : #endif
6466 :
6467 : #if SK1_ENABLED
6468 : impure module function getUnifRandRNGFLU_D3_SK1(rng, lb, ub, s1, s2, s3) result(rand)
6469 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6470 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_SK1
6471 : #endif
6472 : use pm_kind, only: SKC => SK1
6473 : character(*,SKC) , intent(in) :: lb, ub
6474 : integer(IK) , intent(in) :: s1, s2, s3
6475 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
6476 : type(rngf_type) , intent(inout) :: rng
6477 : end function
6478 : #endif
6479 :
6480 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6481 :
6482 : #if IK5_ENABLED
6483 : impure module function getUnifRandRNGFLU_D3_IK5(rng, lb, ub, s1, s2, s3) result(rand)
6484 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6485 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_IK5
6486 : #endif
6487 : use pm_kind, only: IKC => IK5
6488 : integer(IKC) , intent(in) :: lb, ub
6489 : integer(IK) , intent(in) :: s1, s2, s3
6490 : integer(IKC) :: rand(s1, s2, s3)
6491 : type(rngf_type) , intent(inout) :: rng
6492 : end function
6493 : #endif
6494 :
6495 : #if IK4_ENABLED
6496 : impure module function getUnifRandRNGFLU_D3_IK4(rng, lb, ub, s1, s2, s3) result(rand)
6497 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6498 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_IK4
6499 : #endif
6500 : use pm_kind, only: IKC => IK4
6501 : integer(IKC) , intent(in) :: lb, ub
6502 : integer(IK) , intent(in) :: s1, s2, s3
6503 : integer(IKC) :: rand(s1, s2, s3)
6504 : type(rngf_type) , intent(inout) :: rng
6505 : end function
6506 : #endif
6507 :
6508 : #if IK3_ENABLED
6509 : impure module function getUnifRandRNGFLU_D3_IK3(rng, lb, ub, s1, s2, s3) result(rand)
6510 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6511 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_IK3
6512 : #endif
6513 : use pm_kind, only: IKC => IK3
6514 : integer(IKC) , intent(in) :: lb, ub
6515 : integer(IK) , intent(in) :: s1, s2, s3
6516 : integer(IKC) :: rand(s1, s2, s3)
6517 : type(rngf_type) , intent(inout) :: rng
6518 : end function
6519 : #endif
6520 :
6521 : #if IK2_ENABLED
6522 : impure module function getUnifRandRNGFLU_D3_IK2(rng, lb, ub, s1, s2, s3) result(rand)
6523 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6524 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_IK2
6525 : #endif
6526 : use pm_kind, only: IKC => IK2
6527 : integer(IKC) , intent(in) :: lb, ub
6528 : integer(IK) , intent(in) :: s1, s2, s3
6529 : integer(IKC) :: rand(s1, s2, s3)
6530 : type(rngf_type) , intent(inout) :: rng
6531 : end function
6532 : #endif
6533 :
6534 : #if IK1_ENABLED
6535 : impure module function getUnifRandRNGFLU_D3_IK1(rng, lb, ub, s1, s2, s3) result(rand)
6536 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6537 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_IK1
6538 : #endif
6539 : use pm_kind, only: IKC => IK1
6540 : integer(IKC) , intent(in) :: lb, ub
6541 : integer(IK) , intent(in) :: s1, s2, s3
6542 : integer(IKC) :: rand(s1, s2, s3)
6543 : type(rngf_type) , intent(inout) :: rng
6544 : end function
6545 : #endif
6546 :
6547 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6548 :
6549 : #if LK5_ENABLED
6550 : impure module function getUnifRandRNGFLU_D3_LK5(rng, lb, ub, s1, s2, s3) result(rand)
6551 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6552 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_LK5
6553 : #endif
6554 : use pm_kind, only: LKC => LK5
6555 : logical(LKC) , intent(in) :: lb, ub
6556 : integer(IK) , intent(in) :: s1, s2, s3
6557 : logical(LKC) :: rand(s1, s2, s3)
6558 : type(rngf_type) , intent(inout) :: rng
6559 : end function
6560 : #endif
6561 :
6562 : #if LK4_ENABLED
6563 : impure module function getUnifRandRNGFLU_D3_LK4(rng, lb, ub, s1, s2, s3) result(rand)
6564 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6565 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_LK4
6566 : #endif
6567 : use pm_kind, only: LKC => LK4
6568 : logical(LKC) , intent(in) :: lb, ub
6569 : integer(IK) , intent(in) :: s1, s2, s3
6570 : logical(LKC) :: rand(s1, s2, s3)
6571 : type(rngf_type) , intent(inout) :: rng
6572 : end function
6573 : #endif
6574 :
6575 : #if LK3_ENABLED
6576 : impure module function getUnifRandRNGFLU_D3_LK3(rng, lb, ub, s1, s2, s3) result(rand)
6577 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6578 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_LK3
6579 : #endif
6580 : use pm_kind, only: LKC => LK3
6581 : logical(LKC) , intent(in) :: lb, ub
6582 : integer(IK) , intent(in) :: s1, s2, s3
6583 : logical(LKC) :: rand(s1, s2, s3)
6584 : type(rngf_type) , intent(inout) :: rng
6585 : end function
6586 : #endif
6587 :
6588 : #if LK2_ENABLED
6589 : impure module function getUnifRandRNGFLU_D3_LK2(rng, lb, ub, s1, s2, s3) result(rand)
6590 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6591 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_LK2
6592 : #endif
6593 : use pm_kind, only: LKC => LK2
6594 : logical(LKC) , intent(in) :: lb, ub
6595 : integer(IK) , intent(in) :: s1, s2, s3
6596 : logical(LKC) :: rand(s1, s2, s3)
6597 : type(rngf_type) , intent(inout) :: rng
6598 : end function
6599 : #endif
6600 :
6601 : #if LK1_ENABLED
6602 : impure module function getUnifRandRNGFLU_D3_LK1(rng, lb, ub, s1, s2, s3) result(rand)
6603 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6604 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_LK1
6605 : #endif
6606 : use pm_kind, only: LKC => LK1
6607 : logical(LKC) , intent(in) :: lb, ub
6608 : integer(IK) , intent(in) :: s1, s2, s3
6609 : logical(LKC) :: rand(s1, s2, s3)
6610 : type(rngf_type) , intent(inout) :: rng
6611 : end function
6612 : #endif
6613 :
6614 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6615 :
6616 : #if CK5_ENABLED
6617 : impure module function getUnifRandRNGFLU_D3_CK5(rng, lb, ub, s1, s2, s3) result(rand)
6618 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6619 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_CK5
6620 : #endif
6621 : use pm_kind, only: CKC => CK5
6622 : complex(CKC) , intent(in) :: lb, ub
6623 : integer(IK) , intent(in) :: s1, s2, s3
6624 : complex(CKC) :: rand(s1, s2, s3)
6625 : type(rngf_type) , intent(inout) :: rng
6626 : end function
6627 : #endif
6628 :
6629 : #if CK4_ENABLED
6630 : impure module function getUnifRandRNGFLU_D3_CK4(rng, lb, ub, s1, s2, s3) result(rand)
6631 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6632 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_CK4
6633 : #endif
6634 : use pm_kind, only: CKC => CK4
6635 : complex(CKC) , intent(in) :: lb, ub
6636 : integer(IK) , intent(in) :: s1, s2, s3
6637 : complex(CKC) :: rand(s1, s2, s3)
6638 : type(rngf_type) , intent(inout) :: rng
6639 : end function
6640 : #endif
6641 :
6642 : #if CK3_ENABLED
6643 : impure module function getUnifRandRNGFLU_D3_CK3(rng, lb, ub, s1, s2, s3) result(rand)
6644 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6645 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_CK3
6646 : #endif
6647 : use pm_kind, only: CKC => CK3
6648 : complex(CKC) , intent(in) :: lb, ub
6649 : integer(IK) , intent(in) :: s1, s2, s3
6650 : complex(CKC) :: rand(s1, s2, s3)
6651 : type(rngf_type) , intent(inout) :: rng
6652 : end function
6653 : #endif
6654 :
6655 : #if CK2_ENABLED
6656 : impure module function getUnifRandRNGFLU_D3_CK2(rng, lb, ub, s1, s2, s3) result(rand)
6657 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6658 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_CK2
6659 : #endif
6660 : use pm_kind, only: CKC => CK2
6661 : complex(CKC) , intent(in) :: lb, ub
6662 : integer(IK) , intent(in) :: s1, s2, s3
6663 : complex(CKC) :: rand(s1, s2, s3)
6664 : type(rngf_type) , intent(inout) :: rng
6665 : end function
6666 : #endif
6667 :
6668 : #if CK1_ENABLED
6669 : impure module function getUnifRandRNGFLU_D3_CK1(rng, lb, ub, s1, s2, s3) result(rand)
6670 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6671 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_CK1
6672 : #endif
6673 : use pm_kind, only: CKC => CK1
6674 : complex(CKC) , intent(in) :: lb, ub
6675 : integer(IK) , intent(in) :: s1, s2, s3
6676 : complex(CKC) :: rand(s1, s2, s3)
6677 : type(rngf_type) , intent(inout) :: rng
6678 : end function
6679 : #endif
6680 :
6681 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6682 :
6683 : #if RK5_ENABLED
6684 : impure module function getUnifRandRNGFLU_D3_RK5(rng, lb, ub, s1, s2, s3) result(rand)
6685 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6686 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_RK5
6687 : #endif
6688 : use pm_kind, only: RKC => RK5
6689 : real(RKC) , intent(in) :: lb, ub
6690 : integer(IK) , intent(in) :: s1, s2, s3
6691 : real(RKC) :: rand(s1, s2, s3)
6692 : type(rngf_type) , intent(inout) :: rng
6693 : end function
6694 :
6695 : #endif
6696 :
6697 : #if RK4_ENABLED
6698 : impure module function getUnifRandRNGFLU_D3_RK4(rng, lb, ub, s1, s2, s3) result(rand)
6699 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6700 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_RK4
6701 : #endif
6702 : use pm_kind, only: RKC => RK4
6703 : real(RKC) , intent(in) :: lb, ub
6704 : integer(IK) , intent(in) :: s1, s2, s3
6705 : real(RKC) :: rand(s1, s2, s3)
6706 : type(rngf_type) , intent(inout) :: rng
6707 : end function
6708 :
6709 : #endif
6710 :
6711 : #if RK3_ENABLED
6712 : impure module function getUnifRandRNGFLU_D3_RK3(rng, lb, ub, s1, s2, s3) result(rand)
6713 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6714 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_RK3
6715 : #endif
6716 : use pm_kind, only: RKC => RK3
6717 : real(RKC) , intent(in) :: lb, ub
6718 : integer(IK) , intent(in) :: s1, s2, s3
6719 : real(RKC) :: rand(s1, s2, s3)
6720 : type(rngf_type) , intent(inout) :: rng
6721 : end function
6722 :
6723 : #endif
6724 :
6725 : #if RK2_ENABLED
6726 : impure module function getUnifRandRNGFLU_D3_RK2(rng, lb, ub, s1, s2, s3) result(rand)
6727 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6728 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_RK2
6729 : #endif
6730 : use pm_kind, only: RKC => RK2
6731 : real(RKC) , intent(in) :: lb, ub
6732 : integer(IK) , intent(in) :: s1, s2, s3
6733 : real(RKC) :: rand(s1, s2, s3)
6734 : type(rngf_type) , intent(inout) :: rng
6735 : end function
6736 : #endif
6737 :
6738 : #if RK1_ENABLED
6739 : impure module function getUnifRandRNGFLU_D3_RK1(rng, lb, ub, s1, s2, s3) result(rand)
6740 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6741 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGFLU_D3_RK1
6742 : #endif
6743 : use pm_kind, only: RKC => RK1
6744 : real(RKC) , intent(in) :: lb, ub
6745 : integer(IK) , intent(in) :: s1, s2, s3
6746 : real(RKC) :: rand(s1, s2, s3)
6747 : type(rngf_type) , intent(inout) :: rng
6748 : end function
6749 : #endif
6750 :
6751 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6752 :
6753 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6754 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6755 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6756 :
6757 : end interface
6758 :
6759 : ! RNGS
6760 :
6761 : interface getUnifRand
6762 :
6763 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6764 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6765 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6766 :
6767 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6768 :
6769 : impure module function getUnifRandRNGSDD_D0_LK(rng) result(rand)
6770 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6771 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSDD_D0_LK
6772 : #endif
6773 : use pm_kind, only: LKC => LK
6774 : logical(LKC) :: rand
6775 : type(splitmix64_type) , intent(inout) :: rng
6776 : end function
6777 :
6778 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6779 :
6780 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6781 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6782 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6783 :
6784 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6785 :
6786 : #if SK5_ENABLED
6787 : impure elemental module function getUnifRandRNGSLU_D0_SK5(rng, lb, ub) result(rand)
6788 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6789 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_SK5
6790 : #endif
6791 : use pm_kind, only: SKC => SK5
6792 : character(*,SKC) , intent(in) :: lb, ub
6793 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
6794 : type(splitmix64_type) , intent(inout) :: rng
6795 : end function
6796 : #endif
6797 :
6798 : #if SK4_ENABLED
6799 : impure elemental module function getUnifRandRNGSLU_D0_SK4(rng, lb, ub) result(rand)
6800 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6801 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_SK4
6802 : #endif
6803 : use pm_kind, only: SKC => SK4
6804 : character(*,SKC) , intent(in) :: lb, ub
6805 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
6806 : type(splitmix64_type) , intent(inout) :: rng
6807 : end function
6808 : #endif
6809 :
6810 : #if SK3_ENABLED
6811 : impure elemental module function getUnifRandRNGSLU_D0_SK3(rng, lb, ub) result(rand)
6812 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6813 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_SK3
6814 : #endif
6815 : use pm_kind, only: SKC => SK3
6816 : character(*,SKC) , intent(in) :: lb, ub
6817 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
6818 : type(splitmix64_type) , intent(inout) :: rng
6819 : end function
6820 : #endif
6821 :
6822 : #if SK2_ENABLED
6823 : impure elemental module function getUnifRandRNGSLU_D0_SK2(rng, lb, ub) result(rand)
6824 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6825 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_SK2
6826 : #endif
6827 : use pm_kind, only: SKC => SK2
6828 : character(*,SKC) , intent(in) :: lb, ub
6829 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
6830 : type(splitmix64_type) , intent(inout) :: rng
6831 : end function
6832 : #endif
6833 :
6834 : #if SK1_ENABLED
6835 : impure elemental module function getUnifRandRNGSLU_D0_SK1(rng, lb, ub) result(rand)
6836 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6837 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_SK1
6838 : #endif
6839 : use pm_kind, only: SKC => SK1
6840 : character(*,SKC) , intent(in) :: lb, ub
6841 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
6842 : type(splitmix64_type) , intent(inout) :: rng
6843 : end function
6844 : #endif
6845 :
6846 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6847 :
6848 : #if IK5_ENABLED
6849 : impure elemental module function getUnifRandRNGSLU_D0_IK5(rng, lb, ub) result(rand)
6850 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6851 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_IK5
6852 : #endif
6853 : use pm_kind, only: IKC => IK5
6854 : integer(IKC) , intent(in) :: lb, ub
6855 : integer(IKC) :: rand
6856 : type(splitmix64_type) , intent(inout) :: rng
6857 : end function
6858 : #endif
6859 :
6860 : #if IK4_ENABLED
6861 : impure elemental module function getUnifRandRNGSLU_D0_IK4(rng, lb, ub) result(rand)
6862 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6863 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_IK4
6864 : #endif
6865 : use pm_kind, only: IKC => IK4
6866 : integer(IKC) , intent(in) :: lb, ub
6867 : integer(IKC) :: rand
6868 : type(splitmix64_type) , intent(inout) :: rng
6869 : end function
6870 : #endif
6871 :
6872 : #if IK3_ENABLED
6873 : impure elemental module function getUnifRandRNGSLU_D0_IK3(rng, lb, ub) result(rand)
6874 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6875 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_IK3
6876 : #endif
6877 : use pm_kind, only: IKC => IK3
6878 : integer(IKC) , intent(in) :: lb, ub
6879 : integer(IKC) :: rand
6880 : type(splitmix64_type) , intent(inout) :: rng
6881 : end function
6882 : #endif
6883 :
6884 : #if IK2_ENABLED
6885 : impure elemental module function getUnifRandRNGSLU_D0_IK2(rng, lb, ub) result(rand)
6886 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6887 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_IK2
6888 : #endif
6889 : use pm_kind, only: IKC => IK2
6890 : integer(IKC) , intent(in) :: lb, ub
6891 : integer(IKC) :: rand
6892 : type(splitmix64_type) , intent(inout) :: rng
6893 : end function
6894 : #endif
6895 :
6896 : #if IK1_ENABLED
6897 : impure elemental module function getUnifRandRNGSLU_D0_IK1(rng, lb, ub) result(rand)
6898 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6899 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_IK1
6900 : #endif
6901 : use pm_kind, only: IKC => IK1
6902 : integer(IKC) , intent(in) :: lb, ub
6903 : integer(IKC) :: rand
6904 : type(splitmix64_type) , intent(inout) :: rng
6905 : end function
6906 : #endif
6907 :
6908 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6909 :
6910 : #if LK5_ENABLED
6911 : impure elemental module function getUnifRandRNGSLU_D0_LK5(rng, lb, ub) result(rand)
6912 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6913 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_LK5
6914 : #endif
6915 : use pm_kind, only: LKC => LK5
6916 : logical(LKC) , intent(in) :: lb, ub
6917 : logical(LKC) :: rand
6918 : type(splitmix64_type) , intent(inout) :: rng
6919 : end function
6920 : #endif
6921 :
6922 : #if LK4_ENABLED
6923 : impure elemental module function getUnifRandRNGSLU_D0_LK4(rng, lb, ub) result(rand)
6924 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6925 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_LK4
6926 : #endif
6927 : use pm_kind, only: LKC => LK4
6928 : logical(LKC) , intent(in) :: lb, ub
6929 : logical(LKC) :: rand
6930 : type(splitmix64_type) , intent(inout) :: rng
6931 : end function
6932 : #endif
6933 :
6934 : #if LK3_ENABLED
6935 : impure elemental module function getUnifRandRNGSLU_D0_LK3(rng, lb, ub) result(rand)
6936 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6937 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_LK3
6938 : #endif
6939 : use pm_kind, only: LKC => LK3
6940 : logical(LKC) , intent(in) :: lb, ub
6941 : logical(LKC) :: rand
6942 : type(splitmix64_type) , intent(inout) :: rng
6943 : end function
6944 : #endif
6945 :
6946 : #if LK2_ENABLED
6947 : impure elemental module function getUnifRandRNGSLU_D0_LK2(rng, lb, ub) result(rand)
6948 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6949 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_LK2
6950 : #endif
6951 : use pm_kind, only: LKC => LK2
6952 : logical(LKC) , intent(in) :: lb, ub
6953 : logical(LKC) :: rand
6954 : type(splitmix64_type) , intent(inout) :: rng
6955 : end function
6956 : #endif
6957 :
6958 : #if LK1_ENABLED
6959 : impure elemental module function getUnifRandRNGSLU_D0_LK1(rng, lb, ub) result(rand)
6960 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6961 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_LK1
6962 : #endif
6963 : use pm_kind, only: LKC => LK1
6964 : logical(LKC) , intent(in) :: lb, ub
6965 : logical(LKC) :: rand
6966 : type(splitmix64_type) , intent(inout) :: rng
6967 : end function
6968 : #endif
6969 :
6970 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6971 :
6972 : #if CK5_ENABLED
6973 : impure elemental module function getUnifRandRNGSLU_D0_CK5(rng, lb, ub) result(rand)
6974 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6975 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_CK5
6976 : #endif
6977 : use pm_kind, only: CKC => CK5
6978 : complex(CKC) , intent(in) :: lb, ub
6979 : complex(CKC) :: rand
6980 : type(splitmix64_type) , intent(inout) :: rng
6981 : end function
6982 : #endif
6983 :
6984 : #if CK4_ENABLED
6985 : impure elemental module function getUnifRandRNGSLU_D0_CK4(rng, lb, ub) result(rand)
6986 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6987 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_CK4
6988 : #endif
6989 : use pm_kind, only: CKC => CK4
6990 : complex(CKC) , intent(in) :: lb, ub
6991 : complex(CKC) :: rand
6992 : type(splitmix64_type) , intent(inout) :: rng
6993 : end function
6994 : #endif
6995 :
6996 : #if CK3_ENABLED
6997 : impure elemental module function getUnifRandRNGSLU_D0_CK3(rng, lb, ub) result(rand)
6998 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
6999 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_CK3
7000 : #endif
7001 : use pm_kind, only: CKC => CK3
7002 : complex(CKC) , intent(in) :: lb, ub
7003 : complex(CKC) :: rand
7004 : type(splitmix64_type) , intent(inout) :: rng
7005 : end function
7006 : #endif
7007 :
7008 : #if CK2_ENABLED
7009 : impure elemental module function getUnifRandRNGSLU_D0_CK2(rng, lb, ub) result(rand)
7010 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7011 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_CK2
7012 : #endif
7013 : use pm_kind, only: CKC => CK2
7014 : complex(CKC) , intent(in) :: lb, ub
7015 : complex(CKC) :: rand
7016 : type(splitmix64_type) , intent(inout) :: rng
7017 : end function
7018 : #endif
7019 :
7020 : #if CK1_ENABLED
7021 : impure elemental module function getUnifRandRNGSLU_D0_CK1(rng, lb, ub) result(rand)
7022 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7023 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_CK1
7024 : #endif
7025 : use pm_kind, only: CKC => CK1
7026 : complex(CKC) , intent(in) :: lb, ub
7027 : complex(CKC) :: rand
7028 : type(splitmix64_type) , intent(inout) :: rng
7029 : end function
7030 : #endif
7031 :
7032 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7033 :
7034 : #if RK5_ENABLED
7035 : impure elemental module function getUnifRandRNGSLU_D0_RK5(rng, lb, ub) result(rand)
7036 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7037 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_RK5
7038 : #endif
7039 : use pm_kind, only: RKC => RK5
7040 : real(RKC) , intent(in) :: lb, ub
7041 : real(RKC) :: rand
7042 : type(splitmix64_type) , intent(inout) :: rng
7043 : end function
7044 : #endif
7045 :
7046 : #if RK4_ENABLED
7047 : impure elemental module function getUnifRandRNGSLU_D0_RK4(rng, lb, ub) result(rand)
7048 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7049 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_RK4
7050 : #endif
7051 : use pm_kind, only: RKC => RK4
7052 : real(RKC) , intent(in) :: lb, ub
7053 : real(RKC) :: rand
7054 : type(splitmix64_type) , intent(inout) :: rng
7055 : end function
7056 : #endif
7057 :
7058 : #if RK3_ENABLED
7059 : impure elemental module function getUnifRandRNGSLU_D0_RK3(rng, lb, ub) result(rand)
7060 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7061 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_RK3
7062 : #endif
7063 : use pm_kind, only: RKC => RK3
7064 : real(RKC) , intent(in) :: lb, ub
7065 : real(RKC) :: rand
7066 : type(splitmix64_type) , intent(inout) :: rng
7067 : end function
7068 : #endif
7069 :
7070 : #if RK2_ENABLED
7071 : impure elemental module function getUnifRandRNGSLU_D0_RK2(rng, lb, ub) result(rand)
7072 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7073 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_RK2
7074 : #endif
7075 : use pm_kind, only: RKC => RK2
7076 : real(RKC) , intent(in) :: lb, ub
7077 : real(RKC) :: rand
7078 : type(splitmix64_type) , intent(inout) :: rng
7079 : end function
7080 : #endif
7081 :
7082 : #if RK1_ENABLED
7083 : impure elemental module function getUnifRandRNGSLU_D0_RK1(rng, lb, ub) result(rand)
7084 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7085 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D0_RK1
7086 : #endif
7087 : use pm_kind, only: RKC => RK1
7088 : real(RKC) , intent(in) :: lb, ub
7089 : real(RKC) :: rand
7090 : type(splitmix64_type) , intent(inout) :: rng
7091 : end function
7092 : #endif
7093 :
7094 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7095 :
7096 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7097 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7098 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7099 :
7100 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7101 :
7102 : #if SK5_ENABLED
7103 : impure module function getUnifRandRNGSLU_D1_SK5(rng, lb, ub, s1) result(rand)
7104 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7105 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_SK5
7106 : #endif
7107 : use pm_kind, only: SKC => SK5
7108 : character(*,SKC) , intent(in) :: lb, ub
7109 : integer(IK) , intent(in) :: s1
7110 : character(len(lb,IK),SKC) :: rand(s1)
7111 : type(splitmix64_type) , intent(inout) :: rng
7112 : end function
7113 : #endif
7114 :
7115 : #if SK4_ENABLED
7116 : impure module function getUnifRandRNGSLU_D1_SK4(rng, lb, ub, s1) result(rand)
7117 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7118 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_SK4
7119 : #endif
7120 : use pm_kind, only: SKC => SK4
7121 : character(*,SKC) , intent(in) :: lb, ub
7122 : integer(IK) , intent(in) :: s1
7123 : character(len(lb,IK),SKC) :: rand(s1)
7124 : type(splitmix64_type) , intent(inout) :: rng
7125 : end function
7126 : #endif
7127 :
7128 : #if SK3_ENABLED
7129 : impure module function getUnifRandRNGSLU_D1_SK3(rng, lb, ub, s1) result(rand)
7130 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7131 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_SK3
7132 : #endif
7133 : use pm_kind, only: SKC => SK3
7134 : character(*,SKC) , intent(in) :: lb, ub
7135 : integer(IK) , intent(in) :: s1
7136 : character(len(lb,IK),SKC) :: rand(s1)
7137 : type(splitmix64_type) , intent(inout) :: rng
7138 : end function
7139 : #endif
7140 :
7141 : #if SK2_ENABLED
7142 : impure module function getUnifRandRNGSLU_D1_SK2(rng, lb, ub, s1) result(rand)
7143 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7144 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_SK2
7145 : #endif
7146 : use pm_kind, only: SKC => SK2
7147 : character(*,SKC) , intent(in) :: lb, ub
7148 : integer(IK) , intent(in) :: s1
7149 : character(len(lb,IK),SKC) :: rand(s1)
7150 : type(splitmix64_type) , intent(inout) :: rng
7151 : end function
7152 : #endif
7153 :
7154 : #if SK1_ENABLED
7155 : impure module function getUnifRandRNGSLU_D1_SK1(rng, lb, ub, s1) result(rand)
7156 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7157 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_SK1
7158 : #endif
7159 : use pm_kind, only: SKC => SK1
7160 : character(*,SKC) , intent(in) :: lb, ub
7161 : integer(IK) , intent(in) :: s1
7162 : character(len(lb,IK),SKC) :: rand(s1)
7163 : type(splitmix64_type) , intent(inout) :: rng
7164 : end function
7165 : #endif
7166 :
7167 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7168 :
7169 : #if IK5_ENABLED
7170 : impure module function getUnifRandRNGSLU_D1_IK5(rng, lb, ub, s1) result(rand)
7171 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7172 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_IK5
7173 : #endif
7174 : use pm_kind, only: IKC => IK5
7175 : integer(IKC) , intent(in) :: lb, ub
7176 : integer(IK) , intent(in) :: s1
7177 : integer(IKC) :: rand(s1)
7178 : type(splitmix64_type) , intent(inout) :: rng
7179 : end function
7180 : #endif
7181 :
7182 : #if IK4_ENABLED
7183 : impure module function getUnifRandRNGSLU_D1_IK4(rng, lb, ub, s1) result(rand)
7184 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7185 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_IK4
7186 : #endif
7187 : use pm_kind, only: IKC => IK4
7188 : integer(IKC) , intent(in) :: lb, ub
7189 : integer(IK) , intent(in) :: s1
7190 : integer(IKC) :: rand(s1)
7191 : type(splitmix64_type) , intent(inout) :: rng
7192 : end function
7193 : #endif
7194 :
7195 : #if IK3_ENABLED
7196 : impure module function getUnifRandRNGSLU_D1_IK3(rng, lb, ub, s1) result(rand)
7197 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7198 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_IK3
7199 : #endif
7200 : use pm_kind, only: IKC => IK3
7201 : integer(IKC) , intent(in) :: lb, ub
7202 : integer(IK) , intent(in) :: s1
7203 : integer(IKC) :: rand(s1)
7204 : type(splitmix64_type) , intent(inout) :: rng
7205 : end function
7206 : #endif
7207 :
7208 : #if IK2_ENABLED
7209 : impure module function getUnifRandRNGSLU_D1_IK2(rng, lb, ub, s1) result(rand)
7210 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7211 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_IK2
7212 : #endif
7213 : use pm_kind, only: IKC => IK2
7214 : integer(IKC) , intent(in) :: lb, ub
7215 : integer(IK) , intent(in) :: s1
7216 : integer(IKC) :: rand(s1)
7217 : type(splitmix64_type) , intent(inout) :: rng
7218 : end function
7219 : #endif
7220 :
7221 : #if IK1_ENABLED
7222 : impure module function getUnifRandRNGSLU_D1_IK1(rng, lb, ub, s1) result(rand)
7223 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7224 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_IK1
7225 : #endif
7226 : use pm_kind, only: IKC => IK1
7227 : integer(IKC) , intent(in) :: lb, ub
7228 : integer(IK) , intent(in) :: s1
7229 : integer(IKC) :: rand(s1)
7230 : type(splitmix64_type) , intent(inout) :: rng
7231 : end function
7232 : #endif
7233 :
7234 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7235 :
7236 : #if LK5_ENABLED
7237 : impure module function getUnifRandRNGSLU_D1_LK5(rng, lb, ub, s1) result(rand)
7238 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7239 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_LK5
7240 : #endif
7241 : use pm_kind, only: LKC => LK5
7242 : logical(LKC) , intent(in) :: lb, ub
7243 : integer(IK) , intent(in) :: s1
7244 : logical(LKC) :: rand(s1)
7245 : type(splitmix64_type) , intent(inout) :: rng
7246 : end function
7247 : #endif
7248 :
7249 : #if LK4_ENABLED
7250 : impure module function getUnifRandRNGSLU_D1_LK4(rng, lb, ub, s1) result(rand)
7251 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7252 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_LK4
7253 : #endif
7254 : use pm_kind, only: LKC => LK4
7255 : logical(LKC) , intent(in) :: lb, ub
7256 : integer(IK) , intent(in) :: s1
7257 : logical(LKC) :: rand(s1)
7258 : type(splitmix64_type) , intent(inout) :: rng
7259 : end function
7260 : #endif
7261 :
7262 : #if LK3_ENABLED
7263 : impure module function getUnifRandRNGSLU_D1_LK3(rng, lb, ub, s1) result(rand)
7264 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7265 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_LK3
7266 : #endif
7267 : use pm_kind, only: LKC => LK3
7268 : logical(LKC) , intent(in) :: lb, ub
7269 : integer(IK) , intent(in) :: s1
7270 : logical(LKC) :: rand(s1)
7271 : type(splitmix64_type) , intent(inout) :: rng
7272 : end function
7273 : #endif
7274 :
7275 : #if LK2_ENABLED
7276 : impure module function getUnifRandRNGSLU_D1_LK2(rng, lb, ub, s1) result(rand)
7277 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7278 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_LK2
7279 : #endif
7280 : use pm_kind, only: LKC => LK2
7281 : logical(LKC) , intent(in) :: lb, ub
7282 : integer(IK) , intent(in) :: s1
7283 : logical(LKC) :: rand(s1)
7284 : type(splitmix64_type) , intent(inout) :: rng
7285 : end function
7286 : #endif
7287 :
7288 : #if LK1_ENABLED
7289 : impure module function getUnifRandRNGSLU_D1_LK1(rng, lb, ub, s1) result(rand)
7290 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7291 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_LK1
7292 : #endif
7293 : use pm_kind, only: LKC => LK1
7294 : logical(LKC) , intent(in) :: lb, ub
7295 : integer(IK) , intent(in) :: s1
7296 : logical(LKC) :: rand(s1)
7297 : type(splitmix64_type) , intent(inout) :: rng
7298 : end function
7299 : #endif
7300 :
7301 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7302 :
7303 : #if CK5_ENABLED
7304 : impure module function getUnifRandRNGSLU_D1_CK5(rng, lb, ub, s1) result(rand)
7305 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7306 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_CK5
7307 : #endif
7308 : use pm_kind, only: CKC => CK5
7309 : complex(CKC) , intent(in) :: lb, ub
7310 : integer(IK) , intent(in) :: s1
7311 : complex(CKC) :: rand(s1)
7312 : type(splitmix64_type) , intent(inout) :: rng
7313 : end function
7314 : #endif
7315 :
7316 : #if CK4_ENABLED
7317 : impure module function getUnifRandRNGSLU_D1_CK4(rng, lb, ub, s1) result(rand)
7318 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7319 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_CK4
7320 : #endif
7321 : use pm_kind, only: CKC => CK4
7322 : complex(CKC) , intent(in) :: lb, ub
7323 : integer(IK) , intent(in) :: s1
7324 : complex(CKC) :: rand(s1)
7325 : type(splitmix64_type) , intent(inout) :: rng
7326 : end function
7327 : #endif
7328 :
7329 : #if CK3_ENABLED
7330 : impure module function getUnifRandRNGSLU_D1_CK3(rng, lb, ub, s1) result(rand)
7331 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7332 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_CK3
7333 : #endif
7334 : use pm_kind, only: CKC => CK3
7335 : complex(CKC) , intent(in) :: lb, ub
7336 : integer(IK) , intent(in) :: s1
7337 : complex(CKC) :: rand(s1)
7338 : type(splitmix64_type) , intent(inout) :: rng
7339 : end function
7340 : #endif
7341 :
7342 : #if CK2_ENABLED
7343 : impure module function getUnifRandRNGSLU_D1_CK2(rng, lb, ub, s1) result(rand)
7344 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7345 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_CK2
7346 : #endif
7347 : use pm_kind, only: CKC => CK2
7348 : complex(CKC) , intent(in) :: lb, ub
7349 : integer(IK) , intent(in) :: s1
7350 : complex(CKC) :: rand(s1)
7351 : type(splitmix64_type) , intent(inout) :: rng
7352 : end function
7353 : #endif
7354 :
7355 : #if CK1_ENABLED
7356 : impure module function getUnifRandRNGSLU_D1_CK1(rng, lb, ub, s1) result(rand)
7357 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7358 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_CK1
7359 : #endif
7360 : use pm_kind, only: CKC => CK1
7361 : complex(CKC) , intent(in) :: lb, ub
7362 : integer(IK) , intent(in) :: s1
7363 : complex(CKC) :: rand(s1)
7364 : type(splitmix64_type) , intent(inout) :: rng
7365 : end function
7366 : #endif
7367 :
7368 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7369 :
7370 : #if RK5_ENABLED
7371 : impure module function getUnifRandRNGSLU_D1_RK5(rng, lb, ub, s1) result(rand)
7372 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7373 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_RK5
7374 : #endif
7375 : use pm_kind, only: RKC => RK5
7376 : real(RKC) , intent(in) :: lb, ub
7377 : integer(IK) , intent(in) :: s1
7378 : real(RKC) :: rand(s1)
7379 : type(splitmix64_type) , intent(inout) :: rng
7380 : end function
7381 :
7382 : #endif
7383 :
7384 : #if RK4_ENABLED
7385 : impure module function getUnifRandRNGSLU_D1_RK4(rng, lb, ub, s1) result(rand)
7386 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7387 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_RK4
7388 : #endif
7389 : use pm_kind, only: RKC => RK4
7390 : real(RKC) , intent(in) :: lb, ub
7391 : integer(IK) , intent(in) :: s1
7392 : real(RKC) :: rand(s1)
7393 : type(splitmix64_type) , intent(inout) :: rng
7394 : end function
7395 :
7396 : #endif
7397 :
7398 : #if RK3_ENABLED
7399 : impure module function getUnifRandRNGSLU_D1_RK3(rng, lb, ub, s1) result(rand)
7400 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7401 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_RK3
7402 : #endif
7403 : use pm_kind, only: RKC => RK3
7404 : real(RKC) , intent(in) :: lb, ub
7405 : integer(IK) , intent(in) :: s1
7406 : real(RKC) :: rand(s1)
7407 : type(splitmix64_type) , intent(inout) :: rng
7408 : end function
7409 :
7410 : #endif
7411 :
7412 : #if RK2_ENABLED
7413 : impure module function getUnifRandRNGSLU_D1_RK2(rng, lb, ub, s1) result(rand)
7414 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7415 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_RK2
7416 : #endif
7417 : use pm_kind, only: RKC => RK2
7418 : real(RKC) , intent(in) :: lb, ub
7419 : integer(IK) , intent(in) :: s1
7420 : real(RKC) :: rand(s1)
7421 : type(splitmix64_type) , intent(inout) :: rng
7422 : end function
7423 : #endif
7424 :
7425 : #if RK1_ENABLED
7426 : impure module function getUnifRandRNGSLU_D1_RK1(rng, lb, ub, s1) result(rand)
7427 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7428 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D1_RK1
7429 : #endif
7430 : use pm_kind, only: RKC => RK1
7431 : real(RKC) , intent(in) :: lb, ub
7432 : integer(IK) , intent(in) :: s1
7433 : real(RKC) :: rand(s1)
7434 : type(splitmix64_type) , intent(inout) :: rng
7435 : end function
7436 : #endif
7437 :
7438 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7439 :
7440 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7441 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7442 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7443 :
7444 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7445 :
7446 : #if SK5_ENABLED
7447 : impure module function getUnifRandRNGSLU_D2_SK5(rng, lb, ub, s1, s2) result(rand)
7448 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7449 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_SK5
7450 : #endif
7451 : use pm_kind, only: SKC => SK5
7452 : character(*,SKC) , intent(in) :: lb, ub
7453 : integer(IK) , intent(in) :: s1, s2
7454 : character(len(lb,IK),SKC) :: rand(s1, s2)
7455 : type(splitmix64_type) , intent(inout) :: rng
7456 : end function
7457 : #endif
7458 :
7459 : #if SK4_ENABLED
7460 : impure module function getUnifRandRNGSLU_D2_SK4(rng, lb, ub, s1, s2) result(rand)
7461 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7462 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_SK4
7463 : #endif
7464 : use pm_kind, only: SKC => SK4
7465 : character(*,SKC) , intent(in) :: lb, ub
7466 : integer(IK) , intent(in) :: s1, s2
7467 : character(len(lb,IK),SKC) :: rand(s1, s2)
7468 : type(splitmix64_type) , intent(inout) :: rng
7469 : end function
7470 : #endif
7471 :
7472 : #if SK3_ENABLED
7473 : impure module function getUnifRandRNGSLU_D2_SK3(rng, lb, ub, s1, s2) result(rand)
7474 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7475 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_SK3
7476 : #endif
7477 : use pm_kind, only: SKC => SK3
7478 : character(*,SKC) , intent(in) :: lb, ub
7479 : integer(IK) , intent(in) :: s1, s2
7480 : character(len(lb,IK),SKC) :: rand(s1, s2)
7481 : type(splitmix64_type) , intent(inout) :: rng
7482 : end function
7483 : #endif
7484 :
7485 : #if SK2_ENABLED
7486 : impure module function getUnifRandRNGSLU_D2_SK2(rng, lb, ub, s1, s2) result(rand)
7487 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7488 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_SK2
7489 : #endif
7490 : use pm_kind, only: SKC => SK2
7491 : character(*,SKC) , intent(in) :: lb, ub
7492 : integer(IK) , intent(in) :: s1, s2
7493 : character(len(lb,IK),SKC) :: rand(s1, s2)
7494 : type(splitmix64_type) , intent(inout) :: rng
7495 : end function
7496 : #endif
7497 :
7498 : #if SK1_ENABLED
7499 : impure module function getUnifRandRNGSLU_D2_SK1(rng, lb, ub, s1, s2) result(rand)
7500 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7501 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_SK1
7502 : #endif
7503 : use pm_kind, only: SKC => SK1
7504 : character(*,SKC) , intent(in) :: lb, ub
7505 : integer(IK) , intent(in) :: s1, s2
7506 : character(len(lb,IK),SKC) :: rand(s1, s2)
7507 : type(splitmix64_type) , intent(inout) :: rng
7508 : end function
7509 : #endif
7510 :
7511 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7512 :
7513 : #if IK5_ENABLED
7514 : impure module function getUnifRandRNGSLU_D2_IK5(rng, lb, ub, s1, s2) result(rand)
7515 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7516 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_IK5
7517 : #endif
7518 : use pm_kind, only: IKC => IK5
7519 : integer(IKC) , intent(in) :: lb, ub
7520 : integer(IK) , intent(in) :: s1, s2
7521 : integer(IKC) :: rand(s1, s2)
7522 : type(splitmix64_type) , intent(inout) :: rng
7523 : end function
7524 : #endif
7525 :
7526 : #if IK4_ENABLED
7527 : impure module function getUnifRandRNGSLU_D2_IK4(rng, lb, ub, s1, s2) result(rand)
7528 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7529 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_IK4
7530 : #endif
7531 : use pm_kind, only: IKC => IK4
7532 : integer(IKC) , intent(in) :: lb, ub
7533 : integer(IK) , intent(in) :: s1, s2
7534 : integer(IKC) :: rand(s1, s2)
7535 : type(splitmix64_type) , intent(inout) :: rng
7536 : end function
7537 : #endif
7538 :
7539 : #if IK3_ENABLED
7540 : impure module function getUnifRandRNGSLU_D2_IK3(rng, lb, ub, s1, s2) result(rand)
7541 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7542 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_IK3
7543 : #endif
7544 : use pm_kind, only: IKC => IK3
7545 : integer(IKC) , intent(in) :: lb, ub
7546 : integer(IK) , intent(in) :: s1, s2
7547 : integer(IKC) :: rand(s1, s2)
7548 : type(splitmix64_type) , intent(inout) :: rng
7549 : end function
7550 : #endif
7551 :
7552 : #if IK2_ENABLED
7553 : impure module function getUnifRandRNGSLU_D2_IK2(rng, lb, ub, s1, s2) result(rand)
7554 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7555 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_IK2
7556 : #endif
7557 : use pm_kind, only: IKC => IK2
7558 : integer(IKC) , intent(in) :: lb, ub
7559 : integer(IK) , intent(in) :: s1, s2
7560 : integer(IKC) :: rand(s1, s2)
7561 : type(splitmix64_type) , intent(inout) :: rng
7562 : end function
7563 : #endif
7564 :
7565 : #if IK1_ENABLED
7566 : impure module function getUnifRandRNGSLU_D2_IK1(rng, lb, ub, s1, s2) result(rand)
7567 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7568 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_IK1
7569 : #endif
7570 : use pm_kind, only: IKC => IK1
7571 : integer(IKC) , intent(in) :: lb, ub
7572 : integer(IK) , intent(in) :: s1, s2
7573 : integer(IKC) :: rand(s1, s2)
7574 : type(splitmix64_type) , intent(inout) :: rng
7575 : end function
7576 : #endif
7577 :
7578 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7579 :
7580 : #if LK5_ENABLED
7581 : impure module function getUnifRandRNGSLU_D2_LK5(rng, lb, ub, s1, s2) result(rand)
7582 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7583 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_LK5
7584 : #endif
7585 : use pm_kind, only: LKC => LK5
7586 : logical(LKC) , intent(in) :: lb, ub
7587 : integer(IK) , intent(in) :: s1, s2
7588 : logical(LKC) :: rand(s1, s2)
7589 : type(splitmix64_type) , intent(inout) :: rng
7590 : end function
7591 : #endif
7592 :
7593 : #if LK4_ENABLED
7594 : impure module function getUnifRandRNGSLU_D2_LK4(rng, lb, ub, s1, s2) result(rand)
7595 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7596 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_LK4
7597 : #endif
7598 : use pm_kind, only: LKC => LK4
7599 : logical(LKC) , intent(in) :: lb, ub
7600 : integer(IK) , intent(in) :: s1, s2
7601 : logical(LKC) :: rand(s1, s2)
7602 : type(splitmix64_type) , intent(inout) :: rng
7603 : end function
7604 : #endif
7605 :
7606 : #if LK3_ENABLED
7607 : impure module function getUnifRandRNGSLU_D2_LK3(rng, lb, ub, s1, s2) result(rand)
7608 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7609 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_LK3
7610 : #endif
7611 : use pm_kind, only: LKC => LK3
7612 : logical(LKC) , intent(in) :: lb, ub
7613 : integer(IK) , intent(in) :: s1, s2
7614 : logical(LKC) :: rand(s1, s2)
7615 : type(splitmix64_type) , intent(inout) :: rng
7616 : end function
7617 : #endif
7618 :
7619 : #if LK2_ENABLED
7620 : impure module function getUnifRandRNGSLU_D2_LK2(rng, lb, ub, s1, s2) result(rand)
7621 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7622 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_LK2
7623 : #endif
7624 : use pm_kind, only: LKC => LK2
7625 : logical(LKC) , intent(in) :: lb, ub
7626 : integer(IK) , intent(in) :: s1, s2
7627 : logical(LKC) :: rand(s1, s2)
7628 : type(splitmix64_type) , intent(inout) :: rng
7629 : end function
7630 : #endif
7631 :
7632 : #if LK1_ENABLED
7633 : impure module function getUnifRandRNGSLU_D2_LK1(rng, lb, ub, s1, s2) result(rand)
7634 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7635 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_LK1
7636 : #endif
7637 : use pm_kind, only: LKC => LK1
7638 : logical(LKC) , intent(in) :: lb, ub
7639 : integer(IK) , intent(in) :: s1, s2
7640 : logical(LKC) :: rand(s1, s2)
7641 : type(splitmix64_type) , intent(inout) :: rng
7642 : end function
7643 : #endif
7644 :
7645 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7646 :
7647 : #if CK5_ENABLED
7648 : impure module function getUnifRandRNGSLU_D2_CK5(rng, lb, ub, s1, s2) result(rand)
7649 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7650 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_CK5
7651 : #endif
7652 : use pm_kind, only: CKC => CK5
7653 : complex(CKC) , intent(in) :: lb, ub
7654 : integer(IK) , intent(in) :: s1, s2
7655 : complex(CKC) :: rand(s1, s2)
7656 : type(splitmix64_type) , intent(inout) :: rng
7657 : end function
7658 : #endif
7659 :
7660 : #if CK4_ENABLED
7661 : impure module function getUnifRandRNGSLU_D2_CK4(rng, lb, ub, s1, s2) result(rand)
7662 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7663 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_CK4
7664 : #endif
7665 : use pm_kind, only: CKC => CK4
7666 : complex(CKC) , intent(in) :: lb, ub
7667 : integer(IK) , intent(in) :: s1, s2
7668 : complex(CKC) :: rand(s1, s2)
7669 : type(splitmix64_type) , intent(inout) :: rng
7670 : end function
7671 : #endif
7672 :
7673 : #if CK3_ENABLED
7674 : impure module function getUnifRandRNGSLU_D2_CK3(rng, lb, ub, s1, s2) result(rand)
7675 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7676 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_CK3
7677 : #endif
7678 : use pm_kind, only: CKC => CK3
7679 : complex(CKC) , intent(in) :: lb, ub
7680 : integer(IK) , intent(in) :: s1, s2
7681 : complex(CKC) :: rand(s1, s2)
7682 : type(splitmix64_type) , intent(inout) :: rng
7683 : end function
7684 : #endif
7685 :
7686 : #if CK2_ENABLED
7687 : impure module function getUnifRandRNGSLU_D2_CK2(rng, lb, ub, s1, s2) result(rand)
7688 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7689 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_CK2
7690 : #endif
7691 : use pm_kind, only: CKC => CK2
7692 : complex(CKC) , intent(in) :: lb, ub
7693 : integer(IK) , intent(in) :: s1, s2
7694 : complex(CKC) :: rand(s1, s2)
7695 : type(splitmix64_type) , intent(inout) :: rng
7696 : end function
7697 : #endif
7698 :
7699 : #if CK1_ENABLED
7700 : impure module function getUnifRandRNGSLU_D2_CK1(rng, lb, ub, s1, s2) result(rand)
7701 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7702 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_CK1
7703 : #endif
7704 : use pm_kind, only: CKC => CK1
7705 : complex(CKC) , intent(in) :: lb, ub
7706 : integer(IK) , intent(in) :: s1, s2
7707 : complex(CKC) :: rand(s1, s2)
7708 : type(splitmix64_type) , intent(inout) :: rng
7709 : end function
7710 : #endif
7711 :
7712 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7713 :
7714 : #if RK5_ENABLED
7715 : impure module function getUnifRandRNGSLU_D2_RK5(rng, lb, ub, s1, s2) result(rand)
7716 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7717 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_RK5
7718 : #endif
7719 : use pm_kind, only: RKC => RK5
7720 : real(RKC) , intent(in) :: lb, ub
7721 : integer(IK) , intent(in) :: s1, s2
7722 : real(RKC) :: rand(s1, s2)
7723 : type(splitmix64_type) , intent(inout) :: rng
7724 : end function
7725 :
7726 : #endif
7727 :
7728 : #if RK4_ENABLED
7729 : impure module function getUnifRandRNGSLU_D2_RK4(rng, lb, ub, s1, s2) result(rand)
7730 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7731 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_RK4
7732 : #endif
7733 : use pm_kind, only: RKC => RK4
7734 : real(RKC) , intent(in) :: lb, ub
7735 : integer(IK) , intent(in) :: s1, s2
7736 : real(RKC) :: rand(s1, s2)
7737 : type(splitmix64_type) , intent(inout) :: rng
7738 : end function
7739 :
7740 : #endif
7741 :
7742 : #if RK3_ENABLED
7743 : impure module function getUnifRandRNGSLU_D2_RK3(rng, lb, ub, s1, s2) result(rand)
7744 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7745 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_RK3
7746 : #endif
7747 : use pm_kind, only: RKC => RK3
7748 : real(RKC) , intent(in) :: lb, ub
7749 : integer(IK) , intent(in) :: s1, s2
7750 : real(RKC) :: rand(s1, s2)
7751 : type(splitmix64_type) , intent(inout) :: rng
7752 : end function
7753 :
7754 : #endif
7755 :
7756 : #if RK2_ENABLED
7757 : impure module function getUnifRandRNGSLU_D2_RK2(rng, lb, ub, s1, s2) result(rand)
7758 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7759 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_RK2
7760 : #endif
7761 : use pm_kind, only: RKC => RK2
7762 : real(RKC) , intent(in) :: lb, ub
7763 : integer(IK) , intent(in) :: s1, s2
7764 : real(RKC) :: rand(s1, s2)
7765 : type(splitmix64_type) , intent(inout) :: rng
7766 : end function
7767 : #endif
7768 :
7769 : #if RK1_ENABLED
7770 : impure module function getUnifRandRNGSLU_D2_RK1(rng, lb, ub, s1, s2) result(rand)
7771 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7772 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D2_RK1
7773 : #endif
7774 : use pm_kind, only: RKC => RK1
7775 : real(RKC) , intent(in) :: lb, ub
7776 : integer(IK) , intent(in) :: s1, s2
7777 : real(RKC) :: rand(s1, s2)
7778 : type(splitmix64_type) , intent(inout) :: rng
7779 : end function
7780 : #endif
7781 :
7782 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7783 :
7784 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7785 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7786 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7787 :
7788 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7789 :
7790 : #if SK5_ENABLED
7791 : impure module function getUnifRandRNGSLU_D3_SK5(rng, lb, ub, s1, s2, s3) result(rand)
7792 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7793 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_SK5
7794 : #endif
7795 : use pm_kind, only: SKC => SK5
7796 : character(*,SKC) , intent(in) :: lb, ub
7797 : integer(IK) , intent(in) :: s1, s2, s3
7798 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
7799 : type(splitmix64_type) , intent(inout) :: rng
7800 : end function
7801 : #endif
7802 :
7803 : #if SK4_ENABLED
7804 : impure module function getUnifRandRNGSLU_D3_SK4(rng, lb, ub, s1, s2, s3) result(rand)
7805 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7806 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_SK4
7807 : #endif
7808 : use pm_kind, only: SKC => SK4
7809 : character(*,SKC) , intent(in) :: lb, ub
7810 : integer(IK) , intent(in) :: s1, s2, s3
7811 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
7812 : type(splitmix64_type) , intent(inout) :: rng
7813 : end function
7814 : #endif
7815 :
7816 : #if SK3_ENABLED
7817 : impure module function getUnifRandRNGSLU_D3_SK3(rng, lb, ub, s1, s2, s3) result(rand)
7818 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7819 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_SK3
7820 : #endif
7821 : use pm_kind, only: SKC => SK3
7822 : character(*,SKC) , intent(in) :: lb, ub
7823 : integer(IK) , intent(in) :: s1, s2, s3
7824 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
7825 : type(splitmix64_type) , intent(inout) :: rng
7826 : end function
7827 : #endif
7828 :
7829 : #if SK2_ENABLED
7830 : impure module function getUnifRandRNGSLU_D3_SK2(rng, lb, ub, s1, s2, s3) result(rand)
7831 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7832 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_SK2
7833 : #endif
7834 : use pm_kind, only: SKC => SK2
7835 : character(*,SKC) , intent(in) :: lb, ub
7836 : integer(IK) , intent(in) :: s1, s2, s3
7837 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
7838 : type(splitmix64_type) , intent(inout) :: rng
7839 : end function
7840 : #endif
7841 :
7842 : #if SK1_ENABLED
7843 : impure module function getUnifRandRNGSLU_D3_SK1(rng, lb, ub, s1, s2, s3) result(rand)
7844 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7845 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_SK1
7846 : #endif
7847 : use pm_kind, only: SKC => SK1
7848 : character(*,SKC) , intent(in) :: lb, ub
7849 : integer(IK) , intent(in) :: s1, s2, s3
7850 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
7851 : type(splitmix64_type) , intent(inout) :: rng
7852 : end function
7853 : #endif
7854 :
7855 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7856 :
7857 : #if IK5_ENABLED
7858 : impure module function getUnifRandRNGSLU_D3_IK5(rng, lb, ub, s1, s2, s3) result(rand)
7859 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7860 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_IK5
7861 : #endif
7862 : use pm_kind, only: IKC => IK5
7863 : integer(IKC) , intent(in) :: lb, ub
7864 : integer(IK) , intent(in) :: s1, s2, s3
7865 : integer(IKC) :: rand(s1, s2, s3)
7866 : type(splitmix64_type) , intent(inout) :: rng
7867 : end function
7868 : #endif
7869 :
7870 : #if IK4_ENABLED
7871 : impure module function getUnifRandRNGSLU_D3_IK4(rng, lb, ub, s1, s2, s3) result(rand)
7872 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7873 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_IK4
7874 : #endif
7875 : use pm_kind, only: IKC => IK4
7876 : integer(IKC) , intent(in) :: lb, ub
7877 : integer(IK) , intent(in) :: s1, s2, s3
7878 : integer(IKC) :: rand(s1, s2, s3)
7879 : type(splitmix64_type) , intent(inout) :: rng
7880 : end function
7881 : #endif
7882 :
7883 : #if IK3_ENABLED
7884 : impure module function getUnifRandRNGSLU_D3_IK3(rng, lb, ub, s1, s2, s3) result(rand)
7885 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7886 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_IK3
7887 : #endif
7888 : use pm_kind, only: IKC => IK3
7889 : integer(IKC) , intent(in) :: lb, ub
7890 : integer(IK) , intent(in) :: s1, s2, s3
7891 : integer(IKC) :: rand(s1, s2, s3)
7892 : type(splitmix64_type) , intent(inout) :: rng
7893 : end function
7894 : #endif
7895 :
7896 : #if IK2_ENABLED
7897 : impure module function getUnifRandRNGSLU_D3_IK2(rng, lb, ub, s1, s2, s3) result(rand)
7898 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7899 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_IK2
7900 : #endif
7901 : use pm_kind, only: IKC => IK2
7902 : integer(IKC) , intent(in) :: lb, ub
7903 : integer(IK) , intent(in) :: s1, s2, s3
7904 : integer(IKC) :: rand(s1, s2, s3)
7905 : type(splitmix64_type) , intent(inout) :: rng
7906 : end function
7907 : #endif
7908 :
7909 : #if IK1_ENABLED
7910 : impure module function getUnifRandRNGSLU_D3_IK1(rng, lb, ub, s1, s2, s3) result(rand)
7911 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7912 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_IK1
7913 : #endif
7914 : use pm_kind, only: IKC => IK1
7915 : integer(IKC) , intent(in) :: lb, ub
7916 : integer(IK) , intent(in) :: s1, s2, s3
7917 : integer(IKC) :: rand(s1, s2, s3)
7918 : type(splitmix64_type) , intent(inout) :: rng
7919 : end function
7920 : #endif
7921 :
7922 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7923 :
7924 : #if LK5_ENABLED
7925 : impure module function getUnifRandRNGSLU_D3_LK5(rng, lb, ub, s1, s2, s3) result(rand)
7926 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7927 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_LK5
7928 : #endif
7929 : use pm_kind, only: LKC => LK5
7930 : logical(LKC) , intent(in) :: lb, ub
7931 : integer(IK) , intent(in) :: s1, s2, s3
7932 : logical(LKC) :: rand(s1, s2, s3)
7933 : type(splitmix64_type) , intent(inout) :: rng
7934 : end function
7935 : #endif
7936 :
7937 : #if LK4_ENABLED
7938 : impure module function getUnifRandRNGSLU_D3_LK4(rng, lb, ub, s1, s2, s3) result(rand)
7939 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7940 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_LK4
7941 : #endif
7942 : use pm_kind, only: LKC => LK4
7943 : logical(LKC) , intent(in) :: lb, ub
7944 : integer(IK) , intent(in) :: s1, s2, s3
7945 : logical(LKC) :: rand(s1, s2, s3)
7946 : type(splitmix64_type) , intent(inout) :: rng
7947 : end function
7948 : #endif
7949 :
7950 : #if LK3_ENABLED
7951 : impure module function getUnifRandRNGSLU_D3_LK3(rng, lb, ub, s1, s2, s3) result(rand)
7952 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7953 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_LK3
7954 : #endif
7955 : use pm_kind, only: LKC => LK3
7956 : logical(LKC) , intent(in) :: lb, ub
7957 : integer(IK) , intent(in) :: s1, s2, s3
7958 : logical(LKC) :: rand(s1, s2, s3)
7959 : type(splitmix64_type) , intent(inout) :: rng
7960 : end function
7961 : #endif
7962 :
7963 : #if LK2_ENABLED
7964 : impure module function getUnifRandRNGSLU_D3_LK2(rng, lb, ub, s1, s2, s3) result(rand)
7965 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7966 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_LK2
7967 : #endif
7968 : use pm_kind, only: LKC => LK2
7969 : logical(LKC) , intent(in) :: lb, ub
7970 : integer(IK) , intent(in) :: s1, s2, s3
7971 : logical(LKC) :: rand(s1, s2, s3)
7972 : type(splitmix64_type) , intent(inout) :: rng
7973 : end function
7974 : #endif
7975 :
7976 : #if LK1_ENABLED
7977 : impure module function getUnifRandRNGSLU_D3_LK1(rng, lb, ub, s1, s2, s3) result(rand)
7978 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7979 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_LK1
7980 : #endif
7981 : use pm_kind, only: LKC => LK1
7982 : logical(LKC) , intent(in) :: lb, ub
7983 : integer(IK) , intent(in) :: s1, s2, s3
7984 : logical(LKC) :: rand(s1, s2, s3)
7985 : type(splitmix64_type) , intent(inout) :: rng
7986 : end function
7987 : #endif
7988 :
7989 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7990 :
7991 : #if CK5_ENABLED
7992 : impure module function getUnifRandRNGSLU_D3_CK5(rng, lb, ub, s1, s2, s3) result(rand)
7993 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
7994 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_CK5
7995 : #endif
7996 : use pm_kind, only: CKC => CK5
7997 : complex(CKC) , intent(in) :: lb, ub
7998 : integer(IK) , intent(in) :: s1, s2, s3
7999 : complex(CKC) :: rand(s1, s2, s3)
8000 : type(splitmix64_type) , intent(inout) :: rng
8001 : end function
8002 : #endif
8003 :
8004 : #if CK4_ENABLED
8005 : impure module function getUnifRandRNGSLU_D3_CK4(rng, lb, ub, s1, s2, s3) result(rand)
8006 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8007 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_CK4
8008 : #endif
8009 : use pm_kind, only: CKC => CK4
8010 : complex(CKC) , intent(in) :: lb, ub
8011 : integer(IK) , intent(in) :: s1, s2, s3
8012 : complex(CKC) :: rand(s1, s2, s3)
8013 : type(splitmix64_type) , intent(inout) :: rng
8014 : end function
8015 : #endif
8016 :
8017 : #if CK3_ENABLED
8018 : impure module function getUnifRandRNGSLU_D3_CK3(rng, lb, ub, s1, s2, s3) result(rand)
8019 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8020 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_CK3
8021 : #endif
8022 : use pm_kind, only: CKC => CK3
8023 : complex(CKC) , intent(in) :: lb, ub
8024 : integer(IK) , intent(in) :: s1, s2, s3
8025 : complex(CKC) :: rand(s1, s2, s3)
8026 : type(splitmix64_type) , intent(inout) :: rng
8027 : end function
8028 : #endif
8029 :
8030 : #if CK2_ENABLED
8031 : impure module function getUnifRandRNGSLU_D3_CK2(rng, lb, ub, s1, s2, s3) result(rand)
8032 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8033 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_CK2
8034 : #endif
8035 : use pm_kind, only: CKC => CK2
8036 : complex(CKC) , intent(in) :: lb, ub
8037 : integer(IK) , intent(in) :: s1, s2, s3
8038 : complex(CKC) :: rand(s1, s2, s3)
8039 : type(splitmix64_type) , intent(inout) :: rng
8040 : end function
8041 : #endif
8042 :
8043 : #if CK1_ENABLED
8044 : impure module function getUnifRandRNGSLU_D3_CK1(rng, lb, ub, s1, s2, s3) result(rand)
8045 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8046 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_CK1
8047 : #endif
8048 : use pm_kind, only: CKC => CK1
8049 : complex(CKC) , intent(in) :: lb, ub
8050 : integer(IK) , intent(in) :: s1, s2, s3
8051 : complex(CKC) :: rand(s1, s2, s3)
8052 : type(splitmix64_type) , intent(inout) :: rng
8053 : end function
8054 : #endif
8055 :
8056 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8057 :
8058 : #if RK5_ENABLED
8059 : impure module function getUnifRandRNGSLU_D3_RK5(rng, lb, ub, s1, s2, s3) result(rand)
8060 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8061 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_RK5
8062 : #endif
8063 : use pm_kind, only: RKC => RK5
8064 : real(RKC) , intent(in) :: lb, ub
8065 : integer(IK) , intent(in) :: s1, s2, s3
8066 : real(RKC) :: rand(s1, s2, s3)
8067 : type(splitmix64_type) , intent(inout) :: rng
8068 : end function
8069 :
8070 : #endif
8071 :
8072 : #if RK4_ENABLED
8073 : impure module function getUnifRandRNGSLU_D3_RK4(rng, lb, ub, s1, s2, s3) result(rand)
8074 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8075 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_RK4
8076 : #endif
8077 : use pm_kind, only: RKC => RK4
8078 : real(RKC) , intent(in) :: lb, ub
8079 : integer(IK) , intent(in) :: s1, s2, s3
8080 : real(RKC) :: rand(s1, s2, s3)
8081 : type(splitmix64_type) , intent(inout) :: rng
8082 : end function
8083 :
8084 : #endif
8085 :
8086 : #if RK3_ENABLED
8087 : impure module function getUnifRandRNGSLU_D3_RK3(rng, lb, ub, s1, s2, s3) result(rand)
8088 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8089 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_RK3
8090 : #endif
8091 : use pm_kind, only: RKC => RK3
8092 : real(RKC) , intent(in) :: lb, ub
8093 : integer(IK) , intent(in) :: s1, s2, s3
8094 : real(RKC) :: rand(s1, s2, s3)
8095 : type(splitmix64_type) , intent(inout) :: rng
8096 : end function
8097 :
8098 : #endif
8099 :
8100 : #if RK2_ENABLED
8101 : impure module function getUnifRandRNGSLU_D3_RK2(rng, lb, ub, s1, s2, s3) result(rand)
8102 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8103 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_RK2
8104 : #endif
8105 : use pm_kind, only: RKC => RK2
8106 : real(RKC) , intent(in) :: lb, ub
8107 : integer(IK) , intent(in) :: s1, s2, s3
8108 : real(RKC) :: rand(s1, s2, s3)
8109 : type(splitmix64_type) , intent(inout) :: rng
8110 : end function
8111 : #endif
8112 :
8113 : #if RK1_ENABLED
8114 : impure module function getUnifRandRNGSLU_D3_RK1(rng, lb, ub, s1, s2, s3) result(rand)
8115 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8116 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGSLU_D3_RK1
8117 : #endif
8118 : use pm_kind, only: RKC => RK1
8119 : real(RKC) , intent(in) :: lb, ub
8120 : integer(IK) , intent(in) :: s1, s2, s3
8121 : real(RKC) :: rand(s1, s2, s3)
8122 : type(splitmix64_type) , intent(inout) :: rng
8123 : end function
8124 : #endif
8125 :
8126 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8127 :
8128 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8129 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8130 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8131 :
8132 : end interface
8133 :
8134 : ! RNGX
8135 :
8136 : interface getUnifRand
8137 :
8138 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8139 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8140 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8141 :
8142 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8143 :
8144 : impure module function getUnifRandRNGXDD_D0_LK(rng) result(rand)
8145 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8146 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXDD_D0_LK
8147 : #endif
8148 : use pm_kind, only: LKC => LK
8149 : logical(LKC) :: rand
8150 : type(xoshiro256ssw_type) , intent(inout) :: rng
8151 : end function
8152 :
8153 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8154 :
8155 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8156 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8157 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8158 :
8159 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8160 :
8161 : #if SK5_ENABLED
8162 : impure elemental module function getUnifRandRNGXLU_D0_SK5(rng, lb, ub) result(rand)
8163 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8164 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_SK5
8165 : #endif
8166 : use pm_kind, only: SKC => SK5
8167 : character(*,SKC) , intent(in) :: lb, ub
8168 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
8169 : type(xoshiro256ssw_type) , intent(inout) :: rng
8170 : end function
8171 : #endif
8172 :
8173 : #if SK4_ENABLED
8174 : impure elemental module function getUnifRandRNGXLU_D0_SK4(rng, lb, ub) result(rand)
8175 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8176 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_SK4
8177 : #endif
8178 : use pm_kind, only: SKC => SK4
8179 : character(*,SKC) , intent(in) :: lb, ub
8180 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
8181 : type(xoshiro256ssw_type) , intent(inout) :: rng
8182 : end function
8183 : #endif
8184 :
8185 : #if SK3_ENABLED
8186 : impure elemental module function getUnifRandRNGXLU_D0_SK3(rng, lb, ub) result(rand)
8187 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8188 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_SK3
8189 : #endif
8190 : use pm_kind, only: SKC => SK3
8191 : character(*,SKC) , intent(in) :: lb, ub
8192 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
8193 : type(xoshiro256ssw_type) , intent(inout) :: rng
8194 : end function
8195 : #endif
8196 :
8197 : #if SK2_ENABLED
8198 : impure elemental module function getUnifRandRNGXLU_D0_SK2(rng, lb, ub) result(rand)
8199 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8200 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_SK2
8201 : #endif
8202 : use pm_kind, only: SKC => SK2
8203 : character(*,SKC) , intent(in) :: lb, ub
8204 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
8205 : type(xoshiro256ssw_type) , intent(inout) :: rng
8206 : end function
8207 : #endif
8208 :
8209 : #if SK1_ENABLED
8210 : impure elemental module function getUnifRandRNGXLU_D0_SK1(rng, lb, ub) result(rand)
8211 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8212 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_SK1
8213 : #endif
8214 : use pm_kind, only: SKC => SK1
8215 : character(*,SKC) , intent(in) :: lb, ub
8216 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
8217 : type(xoshiro256ssw_type) , intent(inout) :: rng
8218 : end function
8219 : #endif
8220 :
8221 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8222 :
8223 : #if IK5_ENABLED
8224 : impure elemental module function getUnifRandRNGXLU_D0_IK5(rng, lb, ub) result(rand)
8225 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8226 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_IK5
8227 : #endif
8228 : use pm_kind, only: IKC => IK5
8229 : integer(IKC) , intent(in) :: lb, ub
8230 : integer(IKC) :: rand
8231 : type(xoshiro256ssw_type) , intent(inout) :: rng
8232 : end function
8233 : #endif
8234 :
8235 : #if IK4_ENABLED
8236 : impure elemental module function getUnifRandRNGXLU_D0_IK4(rng, lb, ub) result(rand)
8237 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8238 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_IK4
8239 : #endif
8240 : use pm_kind, only: IKC => IK4
8241 : integer(IKC) , intent(in) :: lb, ub
8242 : integer(IKC) :: rand
8243 : type(xoshiro256ssw_type) , intent(inout) :: rng
8244 : end function
8245 : #endif
8246 :
8247 : #if IK3_ENABLED
8248 : impure elemental module function getUnifRandRNGXLU_D0_IK3(rng, lb, ub) result(rand)
8249 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8250 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_IK3
8251 : #endif
8252 : use pm_kind, only: IKC => IK3
8253 : integer(IKC) , intent(in) :: lb, ub
8254 : integer(IKC) :: rand
8255 : type(xoshiro256ssw_type) , intent(inout) :: rng
8256 : end function
8257 : #endif
8258 :
8259 : #if IK2_ENABLED
8260 : impure elemental module function getUnifRandRNGXLU_D0_IK2(rng, lb, ub) result(rand)
8261 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8262 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_IK2
8263 : #endif
8264 : use pm_kind, only: IKC => IK2
8265 : integer(IKC) , intent(in) :: lb, ub
8266 : integer(IKC) :: rand
8267 : type(xoshiro256ssw_type) , intent(inout) :: rng
8268 : end function
8269 : #endif
8270 :
8271 : #if IK1_ENABLED
8272 : impure elemental module function getUnifRandRNGXLU_D0_IK1(rng, lb, ub) result(rand)
8273 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8274 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_IK1
8275 : #endif
8276 : use pm_kind, only: IKC => IK1
8277 : integer(IKC) , intent(in) :: lb, ub
8278 : integer(IKC) :: rand
8279 : type(xoshiro256ssw_type) , intent(inout) :: rng
8280 : end function
8281 : #endif
8282 :
8283 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8284 :
8285 : #if LK5_ENABLED
8286 : impure elemental module function getUnifRandRNGXLU_D0_LK5(rng, lb, ub) result(rand)
8287 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8288 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_LK5
8289 : #endif
8290 : use pm_kind, only: LKC => LK5
8291 : logical(LKC) , intent(in) :: lb, ub
8292 : logical(LKC) :: rand
8293 : type(xoshiro256ssw_type) , intent(inout) :: rng
8294 : end function
8295 : #endif
8296 :
8297 : #if LK4_ENABLED
8298 : impure elemental module function getUnifRandRNGXLU_D0_LK4(rng, lb, ub) result(rand)
8299 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8300 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_LK4
8301 : #endif
8302 : use pm_kind, only: LKC => LK4
8303 : logical(LKC) , intent(in) :: lb, ub
8304 : logical(LKC) :: rand
8305 : type(xoshiro256ssw_type) , intent(inout) :: rng
8306 : end function
8307 : #endif
8308 :
8309 : #if LK3_ENABLED
8310 : impure elemental module function getUnifRandRNGXLU_D0_LK3(rng, lb, ub) result(rand)
8311 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8312 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_LK3
8313 : #endif
8314 : use pm_kind, only: LKC => LK3
8315 : logical(LKC) , intent(in) :: lb, ub
8316 : logical(LKC) :: rand
8317 : type(xoshiro256ssw_type) , intent(inout) :: rng
8318 : end function
8319 : #endif
8320 :
8321 : #if LK2_ENABLED
8322 : impure elemental module function getUnifRandRNGXLU_D0_LK2(rng, lb, ub) result(rand)
8323 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8324 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_LK2
8325 : #endif
8326 : use pm_kind, only: LKC => LK2
8327 : logical(LKC) , intent(in) :: lb, ub
8328 : logical(LKC) :: rand
8329 : type(xoshiro256ssw_type) , intent(inout) :: rng
8330 : end function
8331 : #endif
8332 :
8333 : #if LK1_ENABLED
8334 : impure elemental module function getUnifRandRNGXLU_D0_LK1(rng, lb, ub) result(rand)
8335 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8336 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_LK1
8337 : #endif
8338 : use pm_kind, only: LKC => LK1
8339 : logical(LKC) , intent(in) :: lb, ub
8340 : logical(LKC) :: rand
8341 : type(xoshiro256ssw_type) , intent(inout) :: rng
8342 : end function
8343 : #endif
8344 :
8345 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8346 :
8347 : #if CK5_ENABLED
8348 : impure elemental module function getUnifRandRNGXLU_D0_CK5(rng, lb, ub) result(rand)
8349 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8350 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_CK5
8351 : #endif
8352 : use pm_kind, only: CKC => CK5
8353 : complex(CKC) , intent(in) :: lb, ub
8354 : complex(CKC) :: rand
8355 : type(xoshiro256ssw_type) , intent(inout) :: rng
8356 : end function
8357 : #endif
8358 :
8359 : #if CK4_ENABLED
8360 : impure elemental module function getUnifRandRNGXLU_D0_CK4(rng, lb, ub) result(rand)
8361 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8362 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_CK4
8363 : #endif
8364 : use pm_kind, only: CKC => CK4
8365 : complex(CKC) , intent(in) :: lb, ub
8366 : complex(CKC) :: rand
8367 : type(xoshiro256ssw_type) , intent(inout) :: rng
8368 : end function
8369 : #endif
8370 :
8371 : #if CK3_ENABLED
8372 : impure elemental module function getUnifRandRNGXLU_D0_CK3(rng, lb, ub) result(rand)
8373 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8374 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_CK3
8375 : #endif
8376 : use pm_kind, only: CKC => CK3
8377 : complex(CKC) , intent(in) :: lb, ub
8378 : complex(CKC) :: rand
8379 : type(xoshiro256ssw_type) , intent(inout) :: rng
8380 : end function
8381 : #endif
8382 :
8383 : #if CK2_ENABLED
8384 : impure elemental module function getUnifRandRNGXLU_D0_CK2(rng, lb, ub) result(rand)
8385 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8386 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_CK2
8387 : #endif
8388 : use pm_kind, only: CKC => CK2
8389 : complex(CKC) , intent(in) :: lb, ub
8390 : complex(CKC) :: rand
8391 : type(xoshiro256ssw_type) , intent(inout) :: rng
8392 : end function
8393 : #endif
8394 :
8395 : #if CK1_ENABLED
8396 : impure elemental module function getUnifRandRNGXLU_D0_CK1(rng, lb, ub) result(rand)
8397 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8398 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_CK1
8399 : #endif
8400 : use pm_kind, only: CKC => CK1
8401 : complex(CKC) , intent(in) :: lb, ub
8402 : complex(CKC) :: rand
8403 : type(xoshiro256ssw_type) , intent(inout) :: rng
8404 : end function
8405 : #endif
8406 :
8407 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8408 :
8409 : #if RK5_ENABLED
8410 : impure elemental module function getUnifRandRNGXLU_D0_RK5(rng, lb, ub) result(rand)
8411 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8412 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_RK5
8413 : #endif
8414 : use pm_kind, only: RKC => RK5
8415 : real(RKC) , intent(in) :: lb, ub
8416 : real(RKC) :: rand
8417 : type(xoshiro256ssw_type) , intent(inout) :: rng
8418 : end function
8419 : #endif
8420 :
8421 : #if RK4_ENABLED
8422 : impure elemental module function getUnifRandRNGXLU_D0_RK4(rng, lb, ub) result(rand)
8423 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8424 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_RK4
8425 : #endif
8426 : use pm_kind, only: RKC => RK4
8427 : real(RKC) , intent(in) :: lb, ub
8428 : real(RKC) :: rand
8429 : type(xoshiro256ssw_type) , intent(inout) :: rng
8430 : end function
8431 : #endif
8432 :
8433 : #if RK3_ENABLED
8434 : impure elemental module function getUnifRandRNGXLU_D0_RK3(rng, lb, ub) result(rand)
8435 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8436 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_RK3
8437 : #endif
8438 : use pm_kind, only: RKC => RK3
8439 : real(RKC) , intent(in) :: lb, ub
8440 : real(RKC) :: rand
8441 : type(xoshiro256ssw_type) , intent(inout) :: rng
8442 : end function
8443 : #endif
8444 :
8445 : #if RK2_ENABLED
8446 : impure elemental module function getUnifRandRNGXLU_D0_RK2(rng, lb, ub) result(rand)
8447 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8448 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_RK2
8449 : #endif
8450 : use pm_kind, only: RKC => RK2
8451 : real(RKC) , intent(in) :: lb, ub
8452 : real(RKC) :: rand
8453 : type(xoshiro256ssw_type) , intent(inout) :: rng
8454 : end function
8455 : #endif
8456 :
8457 : #if RK1_ENABLED
8458 : impure elemental module function getUnifRandRNGXLU_D0_RK1(rng, lb, ub) result(rand)
8459 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8460 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D0_RK1
8461 : #endif
8462 : use pm_kind, only: RKC => RK1
8463 : real(RKC) , intent(in) :: lb, ub
8464 : real(RKC) :: rand
8465 : type(xoshiro256ssw_type) , intent(inout) :: rng
8466 : end function
8467 : #endif
8468 :
8469 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8470 :
8471 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8472 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8473 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8474 :
8475 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8476 :
8477 : #if SK5_ENABLED
8478 : impure module function getUnifRandRNGXLU_D1_SK5(rng, lb, ub, s1) result(rand)
8479 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8480 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_SK5
8481 : #endif
8482 : use pm_kind, only: SKC => SK5
8483 : character(*,SKC) , intent(in) :: lb, ub
8484 : integer(IK) , intent(in) :: s1
8485 : character(len(lb,IK),SKC) :: rand(s1)
8486 : type(xoshiro256ssw_type) , intent(inout) :: rng
8487 : end function
8488 : #endif
8489 :
8490 : #if SK4_ENABLED
8491 : impure module function getUnifRandRNGXLU_D1_SK4(rng, lb, ub, s1) result(rand)
8492 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8493 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_SK4
8494 : #endif
8495 : use pm_kind, only: SKC => SK4
8496 : character(*,SKC) , intent(in) :: lb, ub
8497 : integer(IK) , intent(in) :: s1
8498 : character(len(lb,IK),SKC) :: rand(s1)
8499 : type(xoshiro256ssw_type) , intent(inout) :: rng
8500 : end function
8501 : #endif
8502 :
8503 : #if SK3_ENABLED
8504 : impure module function getUnifRandRNGXLU_D1_SK3(rng, lb, ub, s1) result(rand)
8505 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8506 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_SK3
8507 : #endif
8508 : use pm_kind, only: SKC => SK3
8509 : character(*,SKC) , intent(in) :: lb, ub
8510 : integer(IK) , intent(in) :: s1
8511 : character(len(lb,IK),SKC) :: rand(s1)
8512 : type(xoshiro256ssw_type) , intent(inout) :: rng
8513 : end function
8514 : #endif
8515 :
8516 : #if SK2_ENABLED
8517 : impure module function getUnifRandRNGXLU_D1_SK2(rng, lb, ub, s1) result(rand)
8518 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8519 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_SK2
8520 : #endif
8521 : use pm_kind, only: SKC => SK2
8522 : character(*,SKC) , intent(in) :: lb, ub
8523 : integer(IK) , intent(in) :: s1
8524 : character(len(lb,IK),SKC) :: rand(s1)
8525 : type(xoshiro256ssw_type) , intent(inout) :: rng
8526 : end function
8527 : #endif
8528 :
8529 : #if SK1_ENABLED
8530 : impure module function getUnifRandRNGXLU_D1_SK1(rng, lb, ub, s1) result(rand)
8531 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8532 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_SK1
8533 : #endif
8534 : use pm_kind, only: SKC => SK1
8535 : character(*,SKC) , intent(in) :: lb, ub
8536 : integer(IK) , intent(in) :: s1
8537 : character(len(lb,IK),SKC) :: rand(s1)
8538 : type(xoshiro256ssw_type) , intent(inout) :: rng
8539 : end function
8540 : #endif
8541 :
8542 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8543 :
8544 : #if IK5_ENABLED
8545 : impure module function getUnifRandRNGXLU_D1_IK5(rng, lb, ub, s1) result(rand)
8546 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8547 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_IK5
8548 : #endif
8549 : use pm_kind, only: IKC => IK5
8550 : integer(IKC) , intent(in) :: lb, ub
8551 : integer(IK) , intent(in) :: s1
8552 : integer(IKC) :: rand(s1)
8553 : type(xoshiro256ssw_type) , intent(inout) :: rng
8554 : end function
8555 : #endif
8556 :
8557 : #if IK4_ENABLED
8558 : impure module function getUnifRandRNGXLU_D1_IK4(rng, lb, ub, s1) result(rand)
8559 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8560 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_IK4
8561 : #endif
8562 : use pm_kind, only: IKC => IK4
8563 : integer(IKC) , intent(in) :: lb, ub
8564 : integer(IK) , intent(in) :: s1
8565 : integer(IKC) :: rand(s1)
8566 : type(xoshiro256ssw_type) , intent(inout) :: rng
8567 : end function
8568 : #endif
8569 :
8570 : #if IK3_ENABLED
8571 : impure module function getUnifRandRNGXLU_D1_IK3(rng, lb, ub, s1) result(rand)
8572 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8573 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_IK3
8574 : #endif
8575 : use pm_kind, only: IKC => IK3
8576 : integer(IKC) , intent(in) :: lb, ub
8577 : integer(IK) , intent(in) :: s1
8578 : integer(IKC) :: rand(s1)
8579 : type(xoshiro256ssw_type) , intent(inout) :: rng
8580 : end function
8581 : #endif
8582 :
8583 : #if IK2_ENABLED
8584 : impure module function getUnifRandRNGXLU_D1_IK2(rng, lb, ub, s1) result(rand)
8585 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8586 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_IK2
8587 : #endif
8588 : use pm_kind, only: IKC => IK2
8589 : integer(IKC) , intent(in) :: lb, ub
8590 : integer(IK) , intent(in) :: s1
8591 : integer(IKC) :: rand(s1)
8592 : type(xoshiro256ssw_type) , intent(inout) :: rng
8593 : end function
8594 : #endif
8595 :
8596 : #if IK1_ENABLED
8597 : impure module function getUnifRandRNGXLU_D1_IK1(rng, lb, ub, s1) result(rand)
8598 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8599 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_IK1
8600 : #endif
8601 : use pm_kind, only: IKC => IK1
8602 : integer(IKC) , intent(in) :: lb, ub
8603 : integer(IK) , intent(in) :: s1
8604 : integer(IKC) :: rand(s1)
8605 : type(xoshiro256ssw_type) , intent(inout) :: rng
8606 : end function
8607 : #endif
8608 :
8609 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8610 :
8611 : #if LK5_ENABLED
8612 : impure module function getUnifRandRNGXLU_D1_LK5(rng, lb, ub, s1) result(rand)
8613 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8614 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_LK5
8615 : #endif
8616 : use pm_kind, only: LKC => LK5
8617 : logical(LKC) , intent(in) :: lb, ub
8618 : integer(IK) , intent(in) :: s1
8619 : logical(LKC) :: rand(s1)
8620 : type(xoshiro256ssw_type) , intent(inout) :: rng
8621 : end function
8622 : #endif
8623 :
8624 : #if LK4_ENABLED
8625 : impure module function getUnifRandRNGXLU_D1_LK4(rng, lb, ub, s1) result(rand)
8626 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8627 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_LK4
8628 : #endif
8629 : use pm_kind, only: LKC => LK4
8630 : logical(LKC) , intent(in) :: lb, ub
8631 : integer(IK) , intent(in) :: s1
8632 : logical(LKC) :: rand(s1)
8633 : type(xoshiro256ssw_type) , intent(inout) :: rng
8634 : end function
8635 : #endif
8636 :
8637 : #if LK3_ENABLED
8638 : impure module function getUnifRandRNGXLU_D1_LK3(rng, lb, ub, s1) result(rand)
8639 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8640 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_LK3
8641 : #endif
8642 : use pm_kind, only: LKC => LK3
8643 : logical(LKC) , intent(in) :: lb, ub
8644 : integer(IK) , intent(in) :: s1
8645 : logical(LKC) :: rand(s1)
8646 : type(xoshiro256ssw_type) , intent(inout) :: rng
8647 : end function
8648 : #endif
8649 :
8650 : #if LK2_ENABLED
8651 : impure module function getUnifRandRNGXLU_D1_LK2(rng, lb, ub, s1) result(rand)
8652 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8653 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_LK2
8654 : #endif
8655 : use pm_kind, only: LKC => LK2
8656 : logical(LKC) , intent(in) :: lb, ub
8657 : integer(IK) , intent(in) :: s1
8658 : logical(LKC) :: rand(s1)
8659 : type(xoshiro256ssw_type) , intent(inout) :: rng
8660 : end function
8661 : #endif
8662 :
8663 : #if LK1_ENABLED
8664 : impure module function getUnifRandRNGXLU_D1_LK1(rng, lb, ub, s1) result(rand)
8665 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8666 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_LK1
8667 : #endif
8668 : use pm_kind, only: LKC => LK1
8669 : logical(LKC) , intent(in) :: lb, ub
8670 : integer(IK) , intent(in) :: s1
8671 : logical(LKC) :: rand(s1)
8672 : type(xoshiro256ssw_type) , intent(inout) :: rng
8673 : end function
8674 : #endif
8675 :
8676 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8677 :
8678 : #if CK5_ENABLED
8679 : impure module function getUnifRandRNGXLU_D1_CK5(rng, lb, ub, s1) result(rand)
8680 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8681 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_CK5
8682 : #endif
8683 : use pm_kind, only: CKC => CK5
8684 : complex(CKC) , intent(in) :: lb, ub
8685 : integer(IK) , intent(in) :: s1
8686 : complex(CKC) :: rand(s1)
8687 : type(xoshiro256ssw_type) , intent(inout) :: rng
8688 : end function
8689 : #endif
8690 :
8691 : #if CK4_ENABLED
8692 : impure module function getUnifRandRNGXLU_D1_CK4(rng, lb, ub, s1) result(rand)
8693 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8694 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_CK4
8695 : #endif
8696 : use pm_kind, only: CKC => CK4
8697 : complex(CKC) , intent(in) :: lb, ub
8698 : integer(IK) , intent(in) :: s1
8699 : complex(CKC) :: rand(s1)
8700 : type(xoshiro256ssw_type) , intent(inout) :: rng
8701 : end function
8702 : #endif
8703 :
8704 : #if CK3_ENABLED
8705 : impure module function getUnifRandRNGXLU_D1_CK3(rng, lb, ub, s1) result(rand)
8706 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8707 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_CK3
8708 : #endif
8709 : use pm_kind, only: CKC => CK3
8710 : complex(CKC) , intent(in) :: lb, ub
8711 : integer(IK) , intent(in) :: s1
8712 : complex(CKC) :: rand(s1)
8713 : type(xoshiro256ssw_type) , intent(inout) :: rng
8714 : end function
8715 : #endif
8716 :
8717 : #if CK2_ENABLED
8718 : impure module function getUnifRandRNGXLU_D1_CK2(rng, lb, ub, s1) result(rand)
8719 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8720 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_CK2
8721 : #endif
8722 : use pm_kind, only: CKC => CK2
8723 : complex(CKC) , intent(in) :: lb, ub
8724 : integer(IK) , intent(in) :: s1
8725 : complex(CKC) :: rand(s1)
8726 : type(xoshiro256ssw_type) , intent(inout) :: rng
8727 : end function
8728 : #endif
8729 :
8730 : #if CK1_ENABLED
8731 : impure module function getUnifRandRNGXLU_D1_CK1(rng, lb, ub, s1) result(rand)
8732 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8733 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_CK1
8734 : #endif
8735 : use pm_kind, only: CKC => CK1
8736 : complex(CKC) , intent(in) :: lb, ub
8737 : integer(IK) , intent(in) :: s1
8738 : complex(CKC) :: rand(s1)
8739 : type(xoshiro256ssw_type) , intent(inout) :: rng
8740 : end function
8741 : #endif
8742 :
8743 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8744 :
8745 : #if RK5_ENABLED
8746 : impure module function getUnifRandRNGXLU_D1_RK5(rng, lb, ub, s1) result(rand)
8747 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8748 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_RK5
8749 : #endif
8750 : use pm_kind, only: RKC => RK5
8751 : real(RKC) , intent(in) :: lb, ub
8752 : integer(IK) , intent(in) :: s1
8753 : real(RKC) :: rand(s1)
8754 : type(xoshiro256ssw_type) , intent(inout) :: rng
8755 : end function
8756 :
8757 : #endif
8758 :
8759 : #if RK4_ENABLED
8760 : impure module function getUnifRandRNGXLU_D1_RK4(rng, lb, ub, s1) result(rand)
8761 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8762 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_RK4
8763 : #endif
8764 : use pm_kind, only: RKC => RK4
8765 : real(RKC) , intent(in) :: lb, ub
8766 : integer(IK) , intent(in) :: s1
8767 : real(RKC) :: rand(s1)
8768 : type(xoshiro256ssw_type) , intent(inout) :: rng
8769 : end function
8770 :
8771 : #endif
8772 :
8773 : #if RK3_ENABLED
8774 : impure module function getUnifRandRNGXLU_D1_RK3(rng, lb, ub, s1) result(rand)
8775 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8776 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_RK3
8777 : #endif
8778 : use pm_kind, only: RKC => RK3
8779 : real(RKC) , intent(in) :: lb, ub
8780 : integer(IK) , intent(in) :: s1
8781 : real(RKC) :: rand(s1)
8782 : type(xoshiro256ssw_type) , intent(inout) :: rng
8783 : end function
8784 :
8785 : #endif
8786 :
8787 : #if RK2_ENABLED
8788 : impure module function getUnifRandRNGXLU_D1_RK2(rng, lb, ub, s1) result(rand)
8789 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8790 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_RK2
8791 : #endif
8792 : use pm_kind, only: RKC => RK2
8793 : real(RKC) , intent(in) :: lb, ub
8794 : integer(IK) , intent(in) :: s1
8795 : real(RKC) :: rand(s1)
8796 : type(xoshiro256ssw_type) , intent(inout) :: rng
8797 : end function
8798 : #endif
8799 :
8800 : #if RK1_ENABLED
8801 : impure module function getUnifRandRNGXLU_D1_RK1(rng, lb, ub, s1) result(rand)
8802 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8803 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D1_RK1
8804 : #endif
8805 : use pm_kind, only: RKC => RK1
8806 : real(RKC) , intent(in) :: lb, ub
8807 : integer(IK) , intent(in) :: s1
8808 : real(RKC) :: rand(s1)
8809 : type(xoshiro256ssw_type) , intent(inout) :: rng
8810 : end function
8811 : #endif
8812 :
8813 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8814 :
8815 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8816 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8817 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8818 :
8819 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8820 :
8821 : #if SK5_ENABLED
8822 : impure module function getUnifRandRNGXLU_D2_SK5(rng, lb, ub, s1, s2) result(rand)
8823 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8824 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_SK5
8825 : #endif
8826 : use pm_kind, only: SKC => SK5
8827 : character(*,SKC) , intent(in) :: lb, ub
8828 : integer(IK) , intent(in) :: s1, s2
8829 : character(len(lb,IK),SKC) :: rand(s1, s2)
8830 : type(xoshiro256ssw_type) , intent(inout) :: rng
8831 : end function
8832 : #endif
8833 :
8834 : #if SK4_ENABLED
8835 : impure module function getUnifRandRNGXLU_D2_SK4(rng, lb, ub, s1, s2) result(rand)
8836 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8837 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_SK4
8838 : #endif
8839 : use pm_kind, only: SKC => SK4
8840 : character(*,SKC) , intent(in) :: lb, ub
8841 : integer(IK) , intent(in) :: s1, s2
8842 : character(len(lb,IK),SKC) :: rand(s1, s2)
8843 : type(xoshiro256ssw_type) , intent(inout) :: rng
8844 : end function
8845 : #endif
8846 :
8847 : #if SK3_ENABLED
8848 : impure module function getUnifRandRNGXLU_D2_SK3(rng, lb, ub, s1, s2) result(rand)
8849 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8850 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_SK3
8851 : #endif
8852 : use pm_kind, only: SKC => SK3
8853 : character(*,SKC) , intent(in) :: lb, ub
8854 : integer(IK) , intent(in) :: s1, s2
8855 : character(len(lb,IK),SKC) :: rand(s1, s2)
8856 : type(xoshiro256ssw_type) , intent(inout) :: rng
8857 : end function
8858 : #endif
8859 :
8860 : #if SK2_ENABLED
8861 : impure module function getUnifRandRNGXLU_D2_SK2(rng, lb, ub, s1, s2) result(rand)
8862 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8863 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_SK2
8864 : #endif
8865 : use pm_kind, only: SKC => SK2
8866 : character(*,SKC) , intent(in) :: lb, ub
8867 : integer(IK) , intent(in) :: s1, s2
8868 : character(len(lb,IK),SKC) :: rand(s1, s2)
8869 : type(xoshiro256ssw_type) , intent(inout) :: rng
8870 : end function
8871 : #endif
8872 :
8873 : #if SK1_ENABLED
8874 : impure module function getUnifRandRNGXLU_D2_SK1(rng, lb, ub, s1, s2) result(rand)
8875 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8876 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_SK1
8877 : #endif
8878 : use pm_kind, only: SKC => SK1
8879 : character(*,SKC) , intent(in) :: lb, ub
8880 : integer(IK) , intent(in) :: s1, s2
8881 : character(len(lb,IK),SKC) :: rand(s1, s2)
8882 : type(xoshiro256ssw_type) , intent(inout) :: rng
8883 : end function
8884 : #endif
8885 :
8886 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8887 :
8888 : #if IK5_ENABLED
8889 : impure module function getUnifRandRNGXLU_D2_IK5(rng, lb, ub, s1, s2) result(rand)
8890 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8891 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_IK5
8892 : #endif
8893 : use pm_kind, only: IKC => IK5
8894 : integer(IKC) , intent(in) :: lb, ub
8895 : integer(IK) , intent(in) :: s1, s2
8896 : integer(IKC) :: rand(s1, s2)
8897 : type(xoshiro256ssw_type) , intent(inout) :: rng
8898 : end function
8899 : #endif
8900 :
8901 : #if IK4_ENABLED
8902 : impure module function getUnifRandRNGXLU_D2_IK4(rng, lb, ub, s1, s2) result(rand)
8903 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8904 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_IK4
8905 : #endif
8906 : use pm_kind, only: IKC => IK4
8907 : integer(IKC) , intent(in) :: lb, ub
8908 : integer(IK) , intent(in) :: s1, s2
8909 : integer(IKC) :: rand(s1, s2)
8910 : type(xoshiro256ssw_type) , intent(inout) :: rng
8911 : end function
8912 : #endif
8913 :
8914 : #if IK3_ENABLED
8915 : impure module function getUnifRandRNGXLU_D2_IK3(rng, lb, ub, s1, s2) result(rand)
8916 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8917 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_IK3
8918 : #endif
8919 : use pm_kind, only: IKC => IK3
8920 : integer(IKC) , intent(in) :: lb, ub
8921 : integer(IK) , intent(in) :: s1, s2
8922 : integer(IKC) :: rand(s1, s2)
8923 : type(xoshiro256ssw_type) , intent(inout) :: rng
8924 : end function
8925 : #endif
8926 :
8927 : #if IK2_ENABLED
8928 : impure module function getUnifRandRNGXLU_D2_IK2(rng, lb, ub, s1, s2) result(rand)
8929 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8930 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_IK2
8931 : #endif
8932 : use pm_kind, only: IKC => IK2
8933 : integer(IKC) , intent(in) :: lb, ub
8934 : integer(IK) , intent(in) :: s1, s2
8935 : integer(IKC) :: rand(s1, s2)
8936 : type(xoshiro256ssw_type) , intent(inout) :: rng
8937 : end function
8938 : #endif
8939 :
8940 : #if IK1_ENABLED
8941 : impure module function getUnifRandRNGXLU_D2_IK1(rng, lb, ub, s1, s2) result(rand)
8942 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8943 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_IK1
8944 : #endif
8945 : use pm_kind, only: IKC => IK1
8946 : integer(IKC) , intent(in) :: lb, ub
8947 : integer(IK) , intent(in) :: s1, s2
8948 : integer(IKC) :: rand(s1, s2)
8949 : type(xoshiro256ssw_type) , intent(inout) :: rng
8950 : end function
8951 : #endif
8952 :
8953 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8954 :
8955 : #if LK5_ENABLED
8956 : impure module function getUnifRandRNGXLU_D2_LK5(rng, lb, ub, s1, s2) result(rand)
8957 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8958 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_LK5
8959 : #endif
8960 : use pm_kind, only: LKC => LK5
8961 : logical(LKC) , intent(in) :: lb, ub
8962 : integer(IK) , intent(in) :: s1, s2
8963 : logical(LKC) :: rand(s1, s2)
8964 : type(xoshiro256ssw_type) , intent(inout) :: rng
8965 : end function
8966 : #endif
8967 :
8968 : #if LK4_ENABLED
8969 : impure module function getUnifRandRNGXLU_D2_LK4(rng, lb, ub, s1, s2) result(rand)
8970 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8971 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_LK4
8972 : #endif
8973 : use pm_kind, only: LKC => LK4
8974 : logical(LKC) , intent(in) :: lb, ub
8975 : integer(IK) , intent(in) :: s1, s2
8976 : logical(LKC) :: rand(s1, s2)
8977 : type(xoshiro256ssw_type) , intent(inout) :: rng
8978 : end function
8979 : #endif
8980 :
8981 : #if LK3_ENABLED
8982 : impure module function getUnifRandRNGXLU_D2_LK3(rng, lb, ub, s1, s2) result(rand)
8983 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8984 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_LK3
8985 : #endif
8986 : use pm_kind, only: LKC => LK3
8987 : logical(LKC) , intent(in) :: lb, ub
8988 : integer(IK) , intent(in) :: s1, s2
8989 : logical(LKC) :: rand(s1, s2)
8990 : type(xoshiro256ssw_type) , intent(inout) :: rng
8991 : end function
8992 : #endif
8993 :
8994 : #if LK2_ENABLED
8995 : impure module function getUnifRandRNGXLU_D2_LK2(rng, lb, ub, s1, s2) result(rand)
8996 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
8997 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_LK2
8998 : #endif
8999 : use pm_kind, only: LKC => LK2
9000 : logical(LKC) , intent(in) :: lb, ub
9001 : integer(IK) , intent(in) :: s1, s2
9002 : logical(LKC) :: rand(s1, s2)
9003 : type(xoshiro256ssw_type) , intent(inout) :: rng
9004 : end function
9005 : #endif
9006 :
9007 : #if LK1_ENABLED
9008 : impure module function getUnifRandRNGXLU_D2_LK1(rng, lb, ub, s1, s2) result(rand)
9009 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9010 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_LK1
9011 : #endif
9012 : use pm_kind, only: LKC => LK1
9013 : logical(LKC) , intent(in) :: lb, ub
9014 : integer(IK) , intent(in) :: s1, s2
9015 : logical(LKC) :: rand(s1, s2)
9016 : type(xoshiro256ssw_type) , intent(inout) :: rng
9017 : end function
9018 : #endif
9019 :
9020 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9021 :
9022 : #if CK5_ENABLED
9023 : impure module function getUnifRandRNGXLU_D2_CK5(rng, lb, ub, s1, s2) result(rand)
9024 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9025 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_CK5
9026 : #endif
9027 : use pm_kind, only: CKC => CK5
9028 : complex(CKC) , intent(in) :: lb, ub
9029 : integer(IK) , intent(in) :: s1, s2
9030 : complex(CKC) :: rand(s1, s2)
9031 : type(xoshiro256ssw_type) , intent(inout) :: rng
9032 : end function
9033 : #endif
9034 :
9035 : #if CK4_ENABLED
9036 : impure module function getUnifRandRNGXLU_D2_CK4(rng, lb, ub, s1, s2) result(rand)
9037 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9038 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_CK4
9039 : #endif
9040 : use pm_kind, only: CKC => CK4
9041 : complex(CKC) , intent(in) :: lb, ub
9042 : integer(IK) , intent(in) :: s1, s2
9043 : complex(CKC) :: rand(s1, s2)
9044 : type(xoshiro256ssw_type) , intent(inout) :: rng
9045 : end function
9046 : #endif
9047 :
9048 : #if CK3_ENABLED
9049 : impure module function getUnifRandRNGXLU_D2_CK3(rng, lb, ub, s1, s2) result(rand)
9050 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9051 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_CK3
9052 : #endif
9053 : use pm_kind, only: CKC => CK3
9054 : complex(CKC) , intent(in) :: lb, ub
9055 : integer(IK) , intent(in) :: s1, s2
9056 : complex(CKC) :: rand(s1, s2)
9057 : type(xoshiro256ssw_type) , intent(inout) :: rng
9058 : end function
9059 : #endif
9060 :
9061 : #if CK2_ENABLED
9062 : impure module function getUnifRandRNGXLU_D2_CK2(rng, lb, ub, s1, s2) result(rand)
9063 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9064 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_CK2
9065 : #endif
9066 : use pm_kind, only: CKC => CK2
9067 : complex(CKC) , intent(in) :: lb, ub
9068 : integer(IK) , intent(in) :: s1, s2
9069 : complex(CKC) :: rand(s1, s2)
9070 : type(xoshiro256ssw_type) , intent(inout) :: rng
9071 : end function
9072 : #endif
9073 :
9074 : #if CK1_ENABLED
9075 : impure module function getUnifRandRNGXLU_D2_CK1(rng, lb, ub, s1, s2) result(rand)
9076 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9077 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_CK1
9078 : #endif
9079 : use pm_kind, only: CKC => CK1
9080 : complex(CKC) , intent(in) :: lb, ub
9081 : integer(IK) , intent(in) :: s1, s2
9082 : complex(CKC) :: rand(s1, s2)
9083 : type(xoshiro256ssw_type) , intent(inout) :: rng
9084 : end function
9085 : #endif
9086 :
9087 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9088 :
9089 : #if RK5_ENABLED
9090 : impure module function getUnifRandRNGXLU_D2_RK5(rng, lb, ub, s1, s2) result(rand)
9091 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9092 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_RK5
9093 : #endif
9094 : use pm_kind, only: RKC => RK5
9095 : real(RKC) , intent(in) :: lb, ub
9096 : integer(IK) , intent(in) :: s1, s2
9097 : real(RKC) :: rand(s1, s2)
9098 : type(xoshiro256ssw_type) , intent(inout) :: rng
9099 : end function
9100 :
9101 : #endif
9102 :
9103 : #if RK4_ENABLED
9104 : impure module function getUnifRandRNGXLU_D2_RK4(rng, lb, ub, s1, s2) result(rand)
9105 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9106 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_RK4
9107 : #endif
9108 : use pm_kind, only: RKC => RK4
9109 : real(RKC) , intent(in) :: lb, ub
9110 : integer(IK) , intent(in) :: s1, s2
9111 : real(RKC) :: rand(s1, s2)
9112 : type(xoshiro256ssw_type) , intent(inout) :: rng
9113 : end function
9114 :
9115 : #endif
9116 :
9117 : #if RK3_ENABLED
9118 : impure module function getUnifRandRNGXLU_D2_RK3(rng, lb, ub, s1, s2) result(rand)
9119 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9120 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_RK3
9121 : #endif
9122 : use pm_kind, only: RKC => RK3
9123 : real(RKC) , intent(in) :: lb, ub
9124 : integer(IK) , intent(in) :: s1, s2
9125 : real(RKC) :: rand(s1, s2)
9126 : type(xoshiro256ssw_type) , intent(inout) :: rng
9127 : end function
9128 :
9129 : #endif
9130 :
9131 : #if RK2_ENABLED
9132 : impure module function getUnifRandRNGXLU_D2_RK2(rng, lb, ub, s1, s2) result(rand)
9133 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9134 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_RK2
9135 : #endif
9136 : use pm_kind, only: RKC => RK2
9137 : real(RKC) , intent(in) :: lb, ub
9138 : integer(IK) , intent(in) :: s1, s2
9139 : real(RKC) :: rand(s1, s2)
9140 : type(xoshiro256ssw_type) , intent(inout) :: rng
9141 : end function
9142 : #endif
9143 :
9144 : #if RK1_ENABLED
9145 : impure module function getUnifRandRNGXLU_D2_RK1(rng, lb, ub, s1, s2) result(rand)
9146 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9147 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D2_RK1
9148 : #endif
9149 : use pm_kind, only: RKC => RK1
9150 : real(RKC) , intent(in) :: lb, ub
9151 : integer(IK) , intent(in) :: s1, s2
9152 : real(RKC) :: rand(s1, s2)
9153 : type(xoshiro256ssw_type) , intent(inout) :: rng
9154 : end function
9155 : #endif
9156 :
9157 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9158 :
9159 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9160 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9161 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9162 :
9163 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9164 :
9165 : #if SK5_ENABLED
9166 : impure module function getUnifRandRNGXLU_D3_SK5(rng, lb, ub, s1, s2, s3) result(rand)
9167 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9168 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_SK5
9169 : #endif
9170 : use pm_kind, only: SKC => SK5
9171 : character(*,SKC) , intent(in) :: lb, ub
9172 : integer(IK) , intent(in) :: s1, s2, s3
9173 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
9174 : type(xoshiro256ssw_type) , intent(inout) :: rng
9175 : end function
9176 : #endif
9177 :
9178 : #if SK4_ENABLED
9179 : impure module function getUnifRandRNGXLU_D3_SK4(rng, lb, ub, s1, s2, s3) result(rand)
9180 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9181 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_SK4
9182 : #endif
9183 : use pm_kind, only: SKC => SK4
9184 : character(*,SKC) , intent(in) :: lb, ub
9185 : integer(IK) , intent(in) :: s1, s2, s3
9186 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
9187 : type(xoshiro256ssw_type) , intent(inout) :: rng
9188 : end function
9189 : #endif
9190 :
9191 : #if SK3_ENABLED
9192 : impure module function getUnifRandRNGXLU_D3_SK3(rng, lb, ub, s1, s2, s3) result(rand)
9193 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9194 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_SK3
9195 : #endif
9196 : use pm_kind, only: SKC => SK3
9197 : character(*,SKC) , intent(in) :: lb, ub
9198 : integer(IK) , intent(in) :: s1, s2, s3
9199 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
9200 : type(xoshiro256ssw_type) , intent(inout) :: rng
9201 : end function
9202 : #endif
9203 :
9204 : #if SK2_ENABLED
9205 : impure module function getUnifRandRNGXLU_D3_SK2(rng, lb, ub, s1, s2, s3) result(rand)
9206 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9207 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_SK2
9208 : #endif
9209 : use pm_kind, only: SKC => SK2
9210 : character(*,SKC) , intent(in) :: lb, ub
9211 : integer(IK) , intent(in) :: s1, s2, s3
9212 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
9213 : type(xoshiro256ssw_type) , intent(inout) :: rng
9214 : end function
9215 : #endif
9216 :
9217 : #if SK1_ENABLED
9218 : impure module function getUnifRandRNGXLU_D3_SK1(rng, lb, ub, s1, s2, s3) result(rand)
9219 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9220 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_SK1
9221 : #endif
9222 : use pm_kind, only: SKC => SK1
9223 : character(*,SKC) , intent(in) :: lb, ub
9224 : integer(IK) , intent(in) :: s1, s2, s3
9225 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
9226 : type(xoshiro256ssw_type) , intent(inout) :: rng
9227 : end function
9228 : #endif
9229 :
9230 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9231 :
9232 : #if IK5_ENABLED
9233 : impure module function getUnifRandRNGXLU_D3_IK5(rng, lb, ub, s1, s2, s3) result(rand)
9234 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9235 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_IK5
9236 : #endif
9237 : use pm_kind, only: IKC => IK5
9238 : integer(IKC) , intent(in) :: lb, ub
9239 : integer(IK) , intent(in) :: s1, s2, s3
9240 : integer(IKC) :: rand(s1, s2, s3)
9241 : type(xoshiro256ssw_type) , intent(inout) :: rng
9242 : end function
9243 : #endif
9244 :
9245 : #if IK4_ENABLED
9246 : impure module function getUnifRandRNGXLU_D3_IK4(rng, lb, ub, s1, s2, s3) result(rand)
9247 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9248 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_IK4
9249 : #endif
9250 : use pm_kind, only: IKC => IK4
9251 : integer(IKC) , intent(in) :: lb, ub
9252 : integer(IK) , intent(in) :: s1, s2, s3
9253 : integer(IKC) :: rand(s1, s2, s3)
9254 : type(xoshiro256ssw_type) , intent(inout) :: rng
9255 : end function
9256 : #endif
9257 :
9258 : #if IK3_ENABLED
9259 : impure module function getUnifRandRNGXLU_D3_IK3(rng, lb, ub, s1, s2, s3) result(rand)
9260 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9261 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_IK3
9262 : #endif
9263 : use pm_kind, only: IKC => IK3
9264 : integer(IKC) , intent(in) :: lb, ub
9265 : integer(IK) , intent(in) :: s1, s2, s3
9266 : integer(IKC) :: rand(s1, s2, s3)
9267 : type(xoshiro256ssw_type) , intent(inout) :: rng
9268 : end function
9269 : #endif
9270 :
9271 : #if IK2_ENABLED
9272 : impure module function getUnifRandRNGXLU_D3_IK2(rng, lb, ub, s1, s2, s3) result(rand)
9273 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9274 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_IK2
9275 : #endif
9276 : use pm_kind, only: IKC => IK2
9277 : integer(IKC) , intent(in) :: lb, ub
9278 : integer(IK) , intent(in) :: s1, s2, s3
9279 : integer(IKC) :: rand(s1, s2, s3)
9280 : type(xoshiro256ssw_type) , intent(inout) :: rng
9281 : end function
9282 : #endif
9283 :
9284 : #if IK1_ENABLED
9285 : impure module function getUnifRandRNGXLU_D3_IK1(rng, lb, ub, s1, s2, s3) result(rand)
9286 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9287 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_IK1
9288 : #endif
9289 : use pm_kind, only: IKC => IK1
9290 : integer(IKC) , intent(in) :: lb, ub
9291 : integer(IK) , intent(in) :: s1, s2, s3
9292 : integer(IKC) :: rand(s1, s2, s3)
9293 : type(xoshiro256ssw_type) , intent(inout) :: rng
9294 : end function
9295 : #endif
9296 :
9297 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9298 :
9299 : #if LK5_ENABLED
9300 : impure module function getUnifRandRNGXLU_D3_LK5(rng, lb, ub, s1, s2, s3) result(rand)
9301 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9302 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_LK5
9303 : #endif
9304 : use pm_kind, only: LKC => LK5
9305 : logical(LKC) , intent(in) :: lb, ub
9306 : integer(IK) , intent(in) :: s1, s2, s3
9307 : logical(LKC) :: rand(s1, s2, s3)
9308 : type(xoshiro256ssw_type) , intent(inout) :: rng
9309 : end function
9310 : #endif
9311 :
9312 : #if LK4_ENABLED
9313 : impure module function getUnifRandRNGXLU_D3_LK4(rng, lb, ub, s1, s2, s3) result(rand)
9314 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9315 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_LK4
9316 : #endif
9317 : use pm_kind, only: LKC => LK4
9318 : logical(LKC) , intent(in) :: lb, ub
9319 : integer(IK) , intent(in) :: s1, s2, s3
9320 : logical(LKC) :: rand(s1, s2, s3)
9321 : type(xoshiro256ssw_type) , intent(inout) :: rng
9322 : end function
9323 : #endif
9324 :
9325 : #if LK3_ENABLED
9326 : impure module function getUnifRandRNGXLU_D3_LK3(rng, lb, ub, s1, s2, s3) result(rand)
9327 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9328 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_LK3
9329 : #endif
9330 : use pm_kind, only: LKC => LK3
9331 : logical(LKC) , intent(in) :: lb, ub
9332 : integer(IK) , intent(in) :: s1, s2, s3
9333 : logical(LKC) :: rand(s1, s2, s3)
9334 : type(xoshiro256ssw_type) , intent(inout) :: rng
9335 : end function
9336 : #endif
9337 :
9338 : #if LK2_ENABLED
9339 : impure module function getUnifRandRNGXLU_D3_LK2(rng, lb, ub, s1, s2, s3) result(rand)
9340 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9341 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_LK2
9342 : #endif
9343 : use pm_kind, only: LKC => LK2
9344 : logical(LKC) , intent(in) :: lb, ub
9345 : integer(IK) , intent(in) :: s1, s2, s3
9346 : logical(LKC) :: rand(s1, s2, s3)
9347 : type(xoshiro256ssw_type) , intent(inout) :: rng
9348 : end function
9349 : #endif
9350 :
9351 : #if LK1_ENABLED
9352 : impure module function getUnifRandRNGXLU_D3_LK1(rng, lb, ub, s1, s2, s3) result(rand)
9353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9354 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_LK1
9355 : #endif
9356 : use pm_kind, only: LKC => LK1
9357 : logical(LKC) , intent(in) :: lb, ub
9358 : integer(IK) , intent(in) :: s1, s2, s3
9359 : logical(LKC) :: rand(s1, s2, s3)
9360 : type(xoshiro256ssw_type) , intent(inout) :: rng
9361 : end function
9362 : #endif
9363 :
9364 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9365 :
9366 : #if CK5_ENABLED
9367 : impure module function getUnifRandRNGXLU_D3_CK5(rng, lb, ub, s1, s2, s3) result(rand)
9368 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9369 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_CK5
9370 : #endif
9371 : use pm_kind, only: CKC => CK5
9372 : complex(CKC) , intent(in) :: lb, ub
9373 : integer(IK) , intent(in) :: s1, s2, s3
9374 : complex(CKC) :: rand(s1, s2, s3)
9375 : type(xoshiro256ssw_type) , intent(inout) :: rng
9376 : end function
9377 : #endif
9378 :
9379 : #if CK4_ENABLED
9380 : impure module function getUnifRandRNGXLU_D3_CK4(rng, lb, ub, s1, s2, s3) result(rand)
9381 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9382 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_CK4
9383 : #endif
9384 : use pm_kind, only: CKC => CK4
9385 : complex(CKC) , intent(in) :: lb, ub
9386 : integer(IK) , intent(in) :: s1, s2, s3
9387 : complex(CKC) :: rand(s1, s2, s3)
9388 : type(xoshiro256ssw_type) , intent(inout) :: rng
9389 : end function
9390 : #endif
9391 :
9392 : #if CK3_ENABLED
9393 : impure module function getUnifRandRNGXLU_D3_CK3(rng, lb, ub, s1, s2, s3) result(rand)
9394 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9395 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_CK3
9396 : #endif
9397 : use pm_kind, only: CKC => CK3
9398 : complex(CKC) , intent(in) :: lb, ub
9399 : integer(IK) , intent(in) :: s1, s2, s3
9400 : complex(CKC) :: rand(s1, s2, s3)
9401 : type(xoshiro256ssw_type) , intent(inout) :: rng
9402 : end function
9403 : #endif
9404 :
9405 : #if CK2_ENABLED
9406 : impure module function getUnifRandRNGXLU_D3_CK2(rng, lb, ub, s1, s2, s3) result(rand)
9407 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9408 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_CK2
9409 : #endif
9410 : use pm_kind, only: CKC => CK2
9411 : complex(CKC) , intent(in) :: lb, ub
9412 : integer(IK) , intent(in) :: s1, s2, s3
9413 : complex(CKC) :: rand(s1, s2, s3)
9414 : type(xoshiro256ssw_type) , intent(inout) :: rng
9415 : end function
9416 : #endif
9417 :
9418 : #if CK1_ENABLED
9419 : impure module function getUnifRandRNGXLU_D3_CK1(rng, lb, ub, s1, s2, s3) result(rand)
9420 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9421 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_CK1
9422 : #endif
9423 : use pm_kind, only: CKC => CK1
9424 : complex(CKC) , intent(in) :: lb, ub
9425 : integer(IK) , intent(in) :: s1, s2, s3
9426 : complex(CKC) :: rand(s1, s2, s3)
9427 : type(xoshiro256ssw_type) , intent(inout) :: rng
9428 : end function
9429 : #endif
9430 :
9431 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9432 :
9433 : #if RK5_ENABLED
9434 : impure module function getUnifRandRNGXLU_D3_RK5(rng, lb, ub, s1, s2, s3) result(rand)
9435 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9436 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_RK5
9437 : #endif
9438 : use pm_kind, only: RKC => RK5
9439 : real(RKC) , intent(in) :: lb, ub
9440 : integer(IK) , intent(in) :: s1, s2, s3
9441 : real(RKC) :: rand(s1, s2, s3)
9442 : type(xoshiro256ssw_type) , intent(inout) :: rng
9443 : end function
9444 :
9445 : #endif
9446 :
9447 : #if RK4_ENABLED
9448 : impure module function getUnifRandRNGXLU_D3_RK4(rng, lb, ub, s1, s2, s3) result(rand)
9449 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9450 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_RK4
9451 : #endif
9452 : use pm_kind, only: RKC => RK4
9453 : real(RKC) , intent(in) :: lb, ub
9454 : integer(IK) , intent(in) :: s1, s2, s3
9455 : real(RKC) :: rand(s1, s2, s3)
9456 : type(xoshiro256ssw_type) , intent(inout) :: rng
9457 : end function
9458 :
9459 : #endif
9460 :
9461 : #if RK3_ENABLED
9462 : impure module function getUnifRandRNGXLU_D3_RK3(rng, lb, ub, s1, s2, s3) result(rand)
9463 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9464 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_RK3
9465 : #endif
9466 : use pm_kind, only: RKC => RK3
9467 : real(RKC) , intent(in) :: lb, ub
9468 : integer(IK) , intent(in) :: s1, s2, s3
9469 : real(RKC) :: rand(s1, s2, s3)
9470 : type(xoshiro256ssw_type) , intent(inout) :: rng
9471 : end function
9472 :
9473 : #endif
9474 :
9475 : #if RK2_ENABLED
9476 : impure module function getUnifRandRNGXLU_D3_RK2(rng, lb, ub, s1, s2, s3) result(rand)
9477 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9478 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_RK2
9479 : #endif
9480 : use pm_kind, only: RKC => RK2
9481 : real(RKC) , intent(in) :: lb, ub
9482 : integer(IK) , intent(in) :: s1, s2, s3
9483 : real(RKC) :: rand(s1, s2, s3)
9484 : type(xoshiro256ssw_type) , intent(inout) :: rng
9485 : end function
9486 : #endif
9487 :
9488 : #if RK1_ENABLED
9489 : impure module function getUnifRandRNGXLU_D3_RK1(rng, lb, ub, s1, s2, s3) result(rand)
9490 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9491 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGXLU_D3_RK1
9492 : #endif
9493 : use pm_kind, only: RKC => RK1
9494 : real(RKC) , intent(in) :: lb, ub
9495 : integer(IK) , intent(in) :: s1, s2, s3
9496 : real(RKC) :: rand(s1, s2, s3)
9497 : type(xoshiro256ssw_type) , intent(inout) :: rng
9498 : end function
9499 : #endif
9500 :
9501 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9502 :
9503 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9504 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9505 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9506 :
9507 : end interface
9508 :
9509 : ! RNGG
9510 :
9511 : interface getUnifRand
9512 :
9513 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9514 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9515 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9516 :
9517 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9518 :
9519 : impure module function getUnifRandRNGGDD_D0_LK(rng) result(rand)
9520 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9521 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGDD_D0_LK
9522 : #endif
9523 : use pm_kind, only: LKC => LK
9524 : logical(LKC) :: rand
9525 : type(xoshiro256ssg_type) , intent(inout) :: rng
9526 : end function
9527 :
9528 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9529 :
9530 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9531 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9532 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9533 :
9534 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9535 :
9536 : #if SK5_ENABLED
9537 : impure elemental module function getUnifRandRNGGLU_D0_SK5(rng, lb, ub) result(rand)
9538 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9539 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_SK5
9540 : #endif
9541 : use pm_kind, only: SKC => SK5
9542 : character(*,SKC) , intent(in) :: lb, ub
9543 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
9544 : type(xoshiro256ssg_type) , intent(inout) :: rng
9545 : end function
9546 : #endif
9547 :
9548 : #if SK4_ENABLED
9549 : impure elemental module function getUnifRandRNGGLU_D0_SK4(rng, lb, ub) result(rand)
9550 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9551 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_SK4
9552 : #endif
9553 : use pm_kind, only: SKC => SK4
9554 : character(*,SKC) , intent(in) :: lb, ub
9555 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
9556 : type(xoshiro256ssg_type) , intent(inout) :: rng
9557 : end function
9558 : #endif
9559 :
9560 : #if SK3_ENABLED
9561 : impure elemental module function getUnifRandRNGGLU_D0_SK3(rng, lb, ub) result(rand)
9562 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9563 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_SK3
9564 : #endif
9565 : use pm_kind, only: SKC => SK3
9566 : character(*,SKC) , intent(in) :: lb, ub
9567 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
9568 : type(xoshiro256ssg_type) , intent(inout) :: rng
9569 : end function
9570 : #endif
9571 :
9572 : #if SK2_ENABLED
9573 : impure elemental module function getUnifRandRNGGLU_D0_SK2(rng, lb, ub) result(rand)
9574 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9575 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_SK2
9576 : #endif
9577 : use pm_kind, only: SKC => SK2
9578 : character(*,SKC) , intent(in) :: lb, ub
9579 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
9580 : type(xoshiro256ssg_type) , intent(inout) :: rng
9581 : end function
9582 : #endif
9583 :
9584 : #if SK1_ENABLED
9585 : impure elemental module function getUnifRandRNGGLU_D0_SK1(rng, lb, ub) result(rand)
9586 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9587 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_SK1
9588 : #endif
9589 : use pm_kind, only: SKC => SK1
9590 : character(*,SKC) , intent(in) :: lb, ub
9591 : character(max(len(lb,IK),len(ub,IK)),SKC) :: rand
9592 : type(xoshiro256ssg_type) , intent(inout) :: rng
9593 : end function
9594 : #endif
9595 :
9596 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9597 :
9598 : #if IK5_ENABLED
9599 : impure elemental module function getUnifRandRNGGLU_D0_IK5(rng, lb, ub) result(rand)
9600 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9601 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_IK5
9602 : #endif
9603 : use pm_kind, only: IKC => IK5
9604 : integer(IKC) , intent(in) :: lb, ub
9605 : integer(IKC) :: rand
9606 : type(xoshiro256ssg_type) , intent(inout) :: rng
9607 : end function
9608 : #endif
9609 :
9610 : #if IK4_ENABLED
9611 : impure elemental module function getUnifRandRNGGLU_D0_IK4(rng, lb, ub) result(rand)
9612 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9613 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_IK4
9614 : #endif
9615 : use pm_kind, only: IKC => IK4
9616 : integer(IKC) , intent(in) :: lb, ub
9617 : integer(IKC) :: rand
9618 : type(xoshiro256ssg_type) , intent(inout) :: rng
9619 : end function
9620 : #endif
9621 :
9622 : #if IK3_ENABLED
9623 : impure elemental module function getUnifRandRNGGLU_D0_IK3(rng, lb, ub) result(rand)
9624 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9625 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_IK3
9626 : #endif
9627 : use pm_kind, only: IKC => IK3
9628 : integer(IKC) , intent(in) :: lb, ub
9629 : integer(IKC) :: rand
9630 : type(xoshiro256ssg_type) , intent(inout) :: rng
9631 : end function
9632 : #endif
9633 :
9634 : #if IK2_ENABLED
9635 : impure elemental module function getUnifRandRNGGLU_D0_IK2(rng, lb, ub) result(rand)
9636 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9637 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_IK2
9638 : #endif
9639 : use pm_kind, only: IKC => IK2
9640 : integer(IKC) , intent(in) :: lb, ub
9641 : integer(IKC) :: rand
9642 : type(xoshiro256ssg_type) , intent(inout) :: rng
9643 : end function
9644 : #endif
9645 :
9646 : #if IK1_ENABLED
9647 : impure elemental module function getUnifRandRNGGLU_D0_IK1(rng, lb, ub) result(rand)
9648 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9649 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_IK1
9650 : #endif
9651 : use pm_kind, only: IKC => IK1
9652 : integer(IKC) , intent(in) :: lb, ub
9653 : integer(IKC) :: rand
9654 : type(xoshiro256ssg_type) , intent(inout) :: rng
9655 : end function
9656 : #endif
9657 :
9658 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9659 :
9660 : #if LK5_ENABLED
9661 : impure elemental module function getUnifRandRNGGLU_D0_LK5(rng, lb, ub) result(rand)
9662 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9663 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_LK5
9664 : #endif
9665 : use pm_kind, only: LKC => LK5
9666 : logical(LKC) , intent(in) :: lb, ub
9667 : logical(LKC) :: rand
9668 : type(xoshiro256ssg_type) , intent(inout) :: rng
9669 : end function
9670 : #endif
9671 :
9672 : #if LK4_ENABLED
9673 : impure elemental module function getUnifRandRNGGLU_D0_LK4(rng, lb, ub) result(rand)
9674 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9675 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_LK4
9676 : #endif
9677 : use pm_kind, only: LKC => LK4
9678 : logical(LKC) , intent(in) :: lb, ub
9679 : logical(LKC) :: rand
9680 : type(xoshiro256ssg_type) , intent(inout) :: rng
9681 : end function
9682 : #endif
9683 :
9684 : #if LK3_ENABLED
9685 : impure elemental module function getUnifRandRNGGLU_D0_LK3(rng, lb, ub) result(rand)
9686 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9687 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_LK3
9688 : #endif
9689 : use pm_kind, only: LKC => LK3
9690 : logical(LKC) , intent(in) :: lb, ub
9691 : logical(LKC) :: rand
9692 : type(xoshiro256ssg_type) , intent(inout) :: rng
9693 : end function
9694 : #endif
9695 :
9696 : #if LK2_ENABLED
9697 : impure elemental module function getUnifRandRNGGLU_D0_LK2(rng, lb, ub) result(rand)
9698 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9699 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_LK2
9700 : #endif
9701 : use pm_kind, only: LKC => LK2
9702 : logical(LKC) , intent(in) :: lb, ub
9703 : logical(LKC) :: rand
9704 : type(xoshiro256ssg_type) , intent(inout) :: rng
9705 : end function
9706 : #endif
9707 :
9708 : #if LK1_ENABLED
9709 : impure elemental module function getUnifRandRNGGLU_D0_LK1(rng, lb, ub) result(rand)
9710 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9711 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_LK1
9712 : #endif
9713 : use pm_kind, only: LKC => LK1
9714 : logical(LKC) , intent(in) :: lb, ub
9715 : logical(LKC) :: rand
9716 : type(xoshiro256ssg_type) , intent(inout) :: rng
9717 : end function
9718 : #endif
9719 :
9720 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9721 :
9722 : #if CK5_ENABLED
9723 : impure elemental module function getUnifRandRNGGLU_D0_CK5(rng, lb, ub) result(rand)
9724 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9725 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_CK5
9726 : #endif
9727 : use pm_kind, only: CKC => CK5
9728 : complex(CKC) , intent(in) :: lb, ub
9729 : complex(CKC) :: rand
9730 : type(xoshiro256ssg_type) , intent(inout) :: rng
9731 : end function
9732 : #endif
9733 :
9734 : #if CK4_ENABLED
9735 : impure elemental module function getUnifRandRNGGLU_D0_CK4(rng, lb, ub) result(rand)
9736 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9737 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_CK4
9738 : #endif
9739 : use pm_kind, only: CKC => CK4
9740 : complex(CKC) , intent(in) :: lb, ub
9741 : complex(CKC) :: rand
9742 : type(xoshiro256ssg_type) , intent(inout) :: rng
9743 : end function
9744 : #endif
9745 :
9746 : #if CK3_ENABLED
9747 : impure elemental module function getUnifRandRNGGLU_D0_CK3(rng, lb, ub) result(rand)
9748 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9749 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_CK3
9750 : #endif
9751 : use pm_kind, only: CKC => CK3
9752 : complex(CKC) , intent(in) :: lb, ub
9753 : complex(CKC) :: rand
9754 : type(xoshiro256ssg_type) , intent(inout) :: rng
9755 : end function
9756 : #endif
9757 :
9758 : #if CK2_ENABLED
9759 : impure elemental module function getUnifRandRNGGLU_D0_CK2(rng, lb, ub) result(rand)
9760 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9761 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_CK2
9762 : #endif
9763 : use pm_kind, only: CKC => CK2
9764 : complex(CKC) , intent(in) :: lb, ub
9765 : complex(CKC) :: rand
9766 : type(xoshiro256ssg_type) , intent(inout) :: rng
9767 : end function
9768 : #endif
9769 :
9770 : #if CK1_ENABLED
9771 : impure elemental module function getUnifRandRNGGLU_D0_CK1(rng, lb, ub) result(rand)
9772 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9773 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_CK1
9774 : #endif
9775 : use pm_kind, only: CKC => CK1
9776 : complex(CKC) , intent(in) :: lb, ub
9777 : complex(CKC) :: rand
9778 : type(xoshiro256ssg_type) , intent(inout) :: rng
9779 : end function
9780 : #endif
9781 :
9782 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9783 :
9784 : #if RK5_ENABLED
9785 : impure elemental module function getUnifRandRNGGLU_D0_RK5(rng, lb, ub) result(rand)
9786 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9787 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_RK5
9788 : #endif
9789 : use pm_kind, only: RKC => RK5
9790 : real(RKC) , intent(in) :: lb, ub
9791 : real(RKC) :: rand
9792 : type(xoshiro256ssg_type) , intent(inout) :: rng
9793 : end function
9794 : #endif
9795 :
9796 : #if RK4_ENABLED
9797 : impure elemental module function getUnifRandRNGGLU_D0_RK4(rng, lb, ub) result(rand)
9798 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9799 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_RK4
9800 : #endif
9801 : use pm_kind, only: RKC => RK4
9802 : real(RKC) , intent(in) :: lb, ub
9803 : real(RKC) :: rand
9804 : type(xoshiro256ssg_type) , intent(inout) :: rng
9805 : end function
9806 : #endif
9807 :
9808 : #if RK3_ENABLED
9809 : impure elemental module function getUnifRandRNGGLU_D0_RK3(rng, lb, ub) result(rand)
9810 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9811 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_RK3
9812 : #endif
9813 : use pm_kind, only: RKC => RK3
9814 : real(RKC) , intent(in) :: lb, ub
9815 : real(RKC) :: rand
9816 : type(xoshiro256ssg_type) , intent(inout) :: rng
9817 : end function
9818 : #endif
9819 :
9820 : #if RK2_ENABLED
9821 : impure elemental module function getUnifRandRNGGLU_D0_RK2(rng, lb, ub) result(rand)
9822 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9823 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_RK2
9824 : #endif
9825 : use pm_kind, only: RKC => RK2
9826 : real(RKC) , intent(in) :: lb, ub
9827 : real(RKC) :: rand
9828 : type(xoshiro256ssg_type) , intent(inout) :: rng
9829 : end function
9830 : #endif
9831 :
9832 : #if RK1_ENABLED
9833 : impure elemental module function getUnifRandRNGGLU_D0_RK1(rng, lb, ub) result(rand)
9834 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9835 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D0_RK1
9836 : #endif
9837 : use pm_kind, only: RKC => RK1
9838 : real(RKC) , intent(in) :: lb, ub
9839 : real(RKC) :: rand
9840 : type(xoshiro256ssg_type) , intent(inout) :: rng
9841 : end function
9842 : #endif
9843 :
9844 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9845 :
9846 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9847 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9848 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9849 :
9850 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9851 :
9852 : #if SK5_ENABLED
9853 : impure module function getUnifRandRNGGLU_D1_SK5(rng, lb, ub, s1) result(rand)
9854 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9855 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_SK5
9856 : #endif
9857 : use pm_kind, only: SKC => SK5
9858 : character(*,SKC) , intent(in) :: lb, ub
9859 : integer(IK) , intent(in) :: s1
9860 : character(len(lb,IK),SKC) :: rand(s1)
9861 : type(xoshiro256ssg_type) , intent(inout) :: rng
9862 : end function
9863 : #endif
9864 :
9865 : #if SK4_ENABLED
9866 : impure module function getUnifRandRNGGLU_D1_SK4(rng, lb, ub, s1) result(rand)
9867 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9868 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_SK4
9869 : #endif
9870 : use pm_kind, only: SKC => SK4
9871 : character(*,SKC) , intent(in) :: lb, ub
9872 : integer(IK) , intent(in) :: s1
9873 : character(len(lb,IK),SKC) :: rand(s1)
9874 : type(xoshiro256ssg_type) , intent(inout) :: rng
9875 : end function
9876 : #endif
9877 :
9878 : #if SK3_ENABLED
9879 : impure module function getUnifRandRNGGLU_D1_SK3(rng, lb, ub, s1) result(rand)
9880 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9881 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_SK3
9882 : #endif
9883 : use pm_kind, only: SKC => SK3
9884 : character(*,SKC) , intent(in) :: lb, ub
9885 : integer(IK) , intent(in) :: s1
9886 : character(len(lb,IK),SKC) :: rand(s1)
9887 : type(xoshiro256ssg_type) , intent(inout) :: rng
9888 : end function
9889 : #endif
9890 :
9891 : #if SK2_ENABLED
9892 : impure module function getUnifRandRNGGLU_D1_SK2(rng, lb, ub, s1) result(rand)
9893 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9894 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_SK2
9895 : #endif
9896 : use pm_kind, only: SKC => SK2
9897 : character(*,SKC) , intent(in) :: lb, ub
9898 : integer(IK) , intent(in) :: s1
9899 : character(len(lb,IK),SKC) :: rand(s1)
9900 : type(xoshiro256ssg_type) , intent(inout) :: rng
9901 : end function
9902 : #endif
9903 :
9904 : #if SK1_ENABLED
9905 : impure module function getUnifRandRNGGLU_D1_SK1(rng, lb, ub, s1) result(rand)
9906 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9907 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_SK1
9908 : #endif
9909 : use pm_kind, only: SKC => SK1
9910 : character(*,SKC) , intent(in) :: lb, ub
9911 : integer(IK) , intent(in) :: s1
9912 : character(len(lb,IK),SKC) :: rand(s1)
9913 : type(xoshiro256ssg_type) , intent(inout) :: rng
9914 : end function
9915 : #endif
9916 :
9917 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9918 :
9919 : #if IK5_ENABLED
9920 : impure module function getUnifRandRNGGLU_D1_IK5(rng, lb, ub, s1) result(rand)
9921 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9922 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_IK5
9923 : #endif
9924 : use pm_kind, only: IKC => IK5
9925 : integer(IKC) , intent(in) :: lb, ub
9926 : integer(IK) , intent(in) :: s1
9927 : integer(IKC) :: rand(s1)
9928 : type(xoshiro256ssg_type) , intent(inout) :: rng
9929 : end function
9930 : #endif
9931 :
9932 : #if IK4_ENABLED
9933 : impure module function getUnifRandRNGGLU_D1_IK4(rng, lb, ub, s1) result(rand)
9934 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9935 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_IK4
9936 : #endif
9937 : use pm_kind, only: IKC => IK4
9938 : integer(IKC) , intent(in) :: lb, ub
9939 : integer(IK) , intent(in) :: s1
9940 : integer(IKC) :: rand(s1)
9941 : type(xoshiro256ssg_type) , intent(inout) :: rng
9942 : end function
9943 : #endif
9944 :
9945 : #if IK3_ENABLED
9946 : impure module function getUnifRandRNGGLU_D1_IK3(rng, lb, ub, s1) result(rand)
9947 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9948 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_IK3
9949 : #endif
9950 : use pm_kind, only: IKC => IK3
9951 : integer(IKC) , intent(in) :: lb, ub
9952 : integer(IK) , intent(in) :: s1
9953 : integer(IKC) :: rand(s1)
9954 : type(xoshiro256ssg_type) , intent(inout) :: rng
9955 : end function
9956 : #endif
9957 :
9958 : #if IK2_ENABLED
9959 : impure module function getUnifRandRNGGLU_D1_IK2(rng, lb, ub, s1) result(rand)
9960 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9961 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_IK2
9962 : #endif
9963 : use pm_kind, only: IKC => IK2
9964 : integer(IKC) , intent(in) :: lb, ub
9965 : integer(IK) , intent(in) :: s1
9966 : integer(IKC) :: rand(s1)
9967 : type(xoshiro256ssg_type) , intent(inout) :: rng
9968 : end function
9969 : #endif
9970 :
9971 : #if IK1_ENABLED
9972 : impure module function getUnifRandRNGGLU_D1_IK1(rng, lb, ub, s1) result(rand)
9973 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9974 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_IK1
9975 : #endif
9976 : use pm_kind, only: IKC => IK1
9977 : integer(IKC) , intent(in) :: lb, ub
9978 : integer(IK) , intent(in) :: s1
9979 : integer(IKC) :: rand(s1)
9980 : type(xoshiro256ssg_type) , intent(inout) :: rng
9981 : end function
9982 : #endif
9983 :
9984 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9985 :
9986 : #if LK5_ENABLED
9987 : impure module function getUnifRandRNGGLU_D1_LK5(rng, lb, ub, s1) result(rand)
9988 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
9989 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_LK5
9990 : #endif
9991 : use pm_kind, only: LKC => LK5
9992 : logical(LKC) , intent(in) :: lb, ub
9993 : integer(IK) , intent(in) :: s1
9994 : logical(LKC) :: rand(s1)
9995 : type(xoshiro256ssg_type) , intent(inout) :: rng
9996 : end function
9997 : #endif
9998 :
9999 : #if LK4_ENABLED
10000 : impure module function getUnifRandRNGGLU_D1_LK4(rng, lb, ub, s1) result(rand)
10001 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10002 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_LK4
10003 : #endif
10004 : use pm_kind, only: LKC => LK4
10005 : logical(LKC) , intent(in) :: lb, ub
10006 : integer(IK) , intent(in) :: s1
10007 : logical(LKC) :: rand(s1)
10008 : type(xoshiro256ssg_type) , intent(inout) :: rng
10009 : end function
10010 : #endif
10011 :
10012 : #if LK3_ENABLED
10013 : impure module function getUnifRandRNGGLU_D1_LK3(rng, lb, ub, s1) result(rand)
10014 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10015 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_LK3
10016 : #endif
10017 : use pm_kind, only: LKC => LK3
10018 : logical(LKC) , intent(in) :: lb, ub
10019 : integer(IK) , intent(in) :: s1
10020 : logical(LKC) :: rand(s1)
10021 : type(xoshiro256ssg_type) , intent(inout) :: rng
10022 : end function
10023 : #endif
10024 :
10025 : #if LK2_ENABLED
10026 : impure module function getUnifRandRNGGLU_D1_LK2(rng, lb, ub, s1) result(rand)
10027 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10028 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_LK2
10029 : #endif
10030 : use pm_kind, only: LKC => LK2
10031 : logical(LKC) , intent(in) :: lb, ub
10032 : integer(IK) , intent(in) :: s1
10033 : logical(LKC) :: rand(s1)
10034 : type(xoshiro256ssg_type) , intent(inout) :: rng
10035 : end function
10036 : #endif
10037 :
10038 : #if LK1_ENABLED
10039 : impure module function getUnifRandRNGGLU_D1_LK1(rng, lb, ub, s1) result(rand)
10040 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10041 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_LK1
10042 : #endif
10043 : use pm_kind, only: LKC => LK1
10044 : logical(LKC) , intent(in) :: lb, ub
10045 : integer(IK) , intent(in) :: s1
10046 : logical(LKC) :: rand(s1)
10047 : type(xoshiro256ssg_type) , intent(inout) :: rng
10048 : end function
10049 : #endif
10050 :
10051 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10052 :
10053 : #if CK5_ENABLED
10054 : impure module function getUnifRandRNGGLU_D1_CK5(rng, lb, ub, s1) result(rand)
10055 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10056 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_CK5
10057 : #endif
10058 : use pm_kind, only: CKC => CK5
10059 : complex(CKC) , intent(in) :: lb, ub
10060 : integer(IK) , intent(in) :: s1
10061 : complex(CKC) :: rand(s1)
10062 : type(xoshiro256ssg_type) , intent(inout) :: rng
10063 : end function
10064 : #endif
10065 :
10066 : #if CK4_ENABLED
10067 : impure module function getUnifRandRNGGLU_D1_CK4(rng, lb, ub, s1) result(rand)
10068 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10069 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_CK4
10070 : #endif
10071 : use pm_kind, only: CKC => CK4
10072 : complex(CKC) , intent(in) :: lb, ub
10073 : integer(IK) , intent(in) :: s1
10074 : complex(CKC) :: rand(s1)
10075 : type(xoshiro256ssg_type) , intent(inout) :: rng
10076 : end function
10077 : #endif
10078 :
10079 : #if CK3_ENABLED
10080 : impure module function getUnifRandRNGGLU_D1_CK3(rng, lb, ub, s1) result(rand)
10081 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10082 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_CK3
10083 : #endif
10084 : use pm_kind, only: CKC => CK3
10085 : complex(CKC) , intent(in) :: lb, ub
10086 : integer(IK) , intent(in) :: s1
10087 : complex(CKC) :: rand(s1)
10088 : type(xoshiro256ssg_type) , intent(inout) :: rng
10089 : end function
10090 : #endif
10091 :
10092 : #if CK2_ENABLED
10093 : impure module function getUnifRandRNGGLU_D1_CK2(rng, lb, ub, s1) result(rand)
10094 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10095 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_CK2
10096 : #endif
10097 : use pm_kind, only: CKC => CK2
10098 : complex(CKC) , intent(in) :: lb, ub
10099 : integer(IK) , intent(in) :: s1
10100 : complex(CKC) :: rand(s1)
10101 : type(xoshiro256ssg_type) , intent(inout) :: rng
10102 : end function
10103 : #endif
10104 :
10105 : #if CK1_ENABLED
10106 : impure module function getUnifRandRNGGLU_D1_CK1(rng, lb, ub, s1) result(rand)
10107 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10108 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_CK1
10109 : #endif
10110 : use pm_kind, only: CKC => CK1
10111 : complex(CKC) , intent(in) :: lb, ub
10112 : integer(IK) , intent(in) :: s1
10113 : complex(CKC) :: rand(s1)
10114 : type(xoshiro256ssg_type) , intent(inout) :: rng
10115 : end function
10116 : #endif
10117 :
10118 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10119 :
10120 : #if RK5_ENABLED
10121 : impure module function getUnifRandRNGGLU_D1_RK5(rng, lb, ub, s1) result(rand)
10122 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10123 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_RK5
10124 : #endif
10125 : use pm_kind, only: RKC => RK5
10126 : real(RKC) , intent(in) :: lb, ub
10127 : integer(IK) , intent(in) :: s1
10128 : real(RKC) :: rand(s1)
10129 : type(xoshiro256ssg_type) , intent(inout) :: rng
10130 : end function
10131 :
10132 : #endif
10133 :
10134 : #if RK4_ENABLED
10135 : impure module function getUnifRandRNGGLU_D1_RK4(rng, lb, ub, s1) result(rand)
10136 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10137 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_RK4
10138 : #endif
10139 : use pm_kind, only: RKC => RK4
10140 : real(RKC) , intent(in) :: lb, ub
10141 : integer(IK) , intent(in) :: s1
10142 : real(RKC) :: rand(s1)
10143 : type(xoshiro256ssg_type) , intent(inout) :: rng
10144 : end function
10145 :
10146 : #endif
10147 :
10148 : #if RK3_ENABLED
10149 : impure module function getUnifRandRNGGLU_D1_RK3(rng, lb, ub, s1) result(rand)
10150 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10151 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_RK3
10152 : #endif
10153 : use pm_kind, only: RKC => RK3
10154 : real(RKC) , intent(in) :: lb, ub
10155 : integer(IK) , intent(in) :: s1
10156 : real(RKC) :: rand(s1)
10157 : type(xoshiro256ssg_type) , intent(inout) :: rng
10158 : end function
10159 :
10160 : #endif
10161 :
10162 : #if RK2_ENABLED
10163 : impure module function getUnifRandRNGGLU_D1_RK2(rng, lb, ub, s1) result(rand)
10164 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10165 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_RK2
10166 : #endif
10167 : use pm_kind, only: RKC => RK2
10168 : real(RKC) , intent(in) :: lb, ub
10169 : integer(IK) , intent(in) :: s1
10170 : real(RKC) :: rand(s1)
10171 : type(xoshiro256ssg_type) , intent(inout) :: rng
10172 : end function
10173 : #endif
10174 :
10175 : #if RK1_ENABLED
10176 : impure module function getUnifRandRNGGLU_D1_RK1(rng, lb, ub, s1) result(rand)
10177 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10178 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D1_RK1
10179 : #endif
10180 : use pm_kind, only: RKC => RK1
10181 : real(RKC) , intent(in) :: lb, ub
10182 : integer(IK) , intent(in) :: s1
10183 : real(RKC) :: rand(s1)
10184 : type(xoshiro256ssg_type) , intent(inout) :: rng
10185 : end function
10186 : #endif
10187 :
10188 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10189 :
10190 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10191 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10192 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10193 :
10194 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10195 :
10196 : #if SK5_ENABLED
10197 : impure module function getUnifRandRNGGLU_D2_SK5(rng, lb, ub, s1, s2) result(rand)
10198 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10199 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_SK5
10200 : #endif
10201 : use pm_kind, only: SKC => SK5
10202 : character(*,SKC) , intent(in) :: lb, ub
10203 : integer(IK) , intent(in) :: s1, s2
10204 : character(len(lb,IK),SKC) :: rand(s1, s2)
10205 : type(xoshiro256ssg_type) , intent(inout) :: rng
10206 : end function
10207 : #endif
10208 :
10209 : #if SK4_ENABLED
10210 : impure module function getUnifRandRNGGLU_D2_SK4(rng, lb, ub, s1, s2) result(rand)
10211 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10212 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_SK4
10213 : #endif
10214 : use pm_kind, only: SKC => SK4
10215 : character(*,SKC) , intent(in) :: lb, ub
10216 : integer(IK) , intent(in) :: s1, s2
10217 : character(len(lb,IK),SKC) :: rand(s1, s2)
10218 : type(xoshiro256ssg_type) , intent(inout) :: rng
10219 : end function
10220 : #endif
10221 :
10222 : #if SK3_ENABLED
10223 : impure module function getUnifRandRNGGLU_D2_SK3(rng, lb, ub, s1, s2) result(rand)
10224 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10225 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_SK3
10226 : #endif
10227 : use pm_kind, only: SKC => SK3
10228 : character(*,SKC) , intent(in) :: lb, ub
10229 : integer(IK) , intent(in) :: s1, s2
10230 : character(len(lb,IK),SKC) :: rand(s1, s2)
10231 : type(xoshiro256ssg_type) , intent(inout) :: rng
10232 : end function
10233 : #endif
10234 :
10235 : #if SK2_ENABLED
10236 : impure module function getUnifRandRNGGLU_D2_SK2(rng, lb, ub, s1, s2) result(rand)
10237 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10238 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_SK2
10239 : #endif
10240 : use pm_kind, only: SKC => SK2
10241 : character(*,SKC) , intent(in) :: lb, ub
10242 : integer(IK) , intent(in) :: s1, s2
10243 : character(len(lb,IK),SKC) :: rand(s1, s2)
10244 : type(xoshiro256ssg_type) , intent(inout) :: rng
10245 : end function
10246 : #endif
10247 :
10248 : #if SK1_ENABLED
10249 : impure module function getUnifRandRNGGLU_D2_SK1(rng, lb, ub, s1, s2) result(rand)
10250 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10251 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_SK1
10252 : #endif
10253 : use pm_kind, only: SKC => SK1
10254 : character(*,SKC) , intent(in) :: lb, ub
10255 : integer(IK) , intent(in) :: s1, s2
10256 : character(len(lb,IK),SKC) :: rand(s1, s2)
10257 : type(xoshiro256ssg_type) , intent(inout) :: rng
10258 : end function
10259 : #endif
10260 :
10261 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10262 :
10263 : #if IK5_ENABLED
10264 : impure module function getUnifRandRNGGLU_D2_IK5(rng, lb, ub, s1, s2) result(rand)
10265 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10266 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_IK5
10267 : #endif
10268 : use pm_kind, only: IKC => IK5
10269 : integer(IKC) , intent(in) :: lb, ub
10270 : integer(IK) , intent(in) :: s1, s2
10271 : integer(IKC) :: rand(s1, s2)
10272 : type(xoshiro256ssg_type) , intent(inout) :: rng
10273 : end function
10274 : #endif
10275 :
10276 : #if IK4_ENABLED
10277 : impure module function getUnifRandRNGGLU_D2_IK4(rng, lb, ub, s1, s2) result(rand)
10278 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10279 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_IK4
10280 : #endif
10281 : use pm_kind, only: IKC => IK4
10282 : integer(IKC) , intent(in) :: lb, ub
10283 : integer(IK) , intent(in) :: s1, s2
10284 : integer(IKC) :: rand(s1, s2)
10285 : type(xoshiro256ssg_type) , intent(inout) :: rng
10286 : end function
10287 : #endif
10288 :
10289 : #if IK3_ENABLED
10290 : impure module function getUnifRandRNGGLU_D2_IK3(rng, lb, ub, s1, s2) result(rand)
10291 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10292 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_IK3
10293 : #endif
10294 : use pm_kind, only: IKC => IK3
10295 : integer(IKC) , intent(in) :: lb, ub
10296 : integer(IK) , intent(in) :: s1, s2
10297 : integer(IKC) :: rand(s1, s2)
10298 : type(xoshiro256ssg_type) , intent(inout) :: rng
10299 : end function
10300 : #endif
10301 :
10302 : #if IK2_ENABLED
10303 : impure module function getUnifRandRNGGLU_D2_IK2(rng, lb, ub, s1, s2) result(rand)
10304 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10305 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_IK2
10306 : #endif
10307 : use pm_kind, only: IKC => IK2
10308 : integer(IKC) , intent(in) :: lb, ub
10309 : integer(IK) , intent(in) :: s1, s2
10310 : integer(IKC) :: rand(s1, s2)
10311 : type(xoshiro256ssg_type) , intent(inout) :: rng
10312 : end function
10313 : #endif
10314 :
10315 : #if IK1_ENABLED
10316 : impure module function getUnifRandRNGGLU_D2_IK1(rng, lb, ub, s1, s2) result(rand)
10317 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10318 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_IK1
10319 : #endif
10320 : use pm_kind, only: IKC => IK1
10321 : integer(IKC) , intent(in) :: lb, ub
10322 : integer(IK) , intent(in) :: s1, s2
10323 : integer(IKC) :: rand(s1, s2)
10324 : type(xoshiro256ssg_type) , intent(inout) :: rng
10325 : end function
10326 : #endif
10327 :
10328 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10329 :
10330 : #if LK5_ENABLED
10331 : impure module function getUnifRandRNGGLU_D2_LK5(rng, lb, ub, s1, s2) result(rand)
10332 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10333 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_LK5
10334 : #endif
10335 : use pm_kind, only: LKC => LK5
10336 : logical(LKC) , intent(in) :: lb, ub
10337 : integer(IK) , intent(in) :: s1, s2
10338 : logical(LKC) :: rand(s1, s2)
10339 : type(xoshiro256ssg_type) , intent(inout) :: rng
10340 : end function
10341 : #endif
10342 :
10343 : #if LK4_ENABLED
10344 : impure module function getUnifRandRNGGLU_D2_LK4(rng, lb, ub, s1, s2) result(rand)
10345 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10346 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_LK4
10347 : #endif
10348 : use pm_kind, only: LKC => LK4
10349 : logical(LKC) , intent(in) :: lb, ub
10350 : integer(IK) , intent(in) :: s1, s2
10351 : logical(LKC) :: rand(s1, s2)
10352 : type(xoshiro256ssg_type) , intent(inout) :: rng
10353 : end function
10354 : #endif
10355 :
10356 : #if LK3_ENABLED
10357 : impure module function getUnifRandRNGGLU_D2_LK3(rng, lb, ub, s1, s2) result(rand)
10358 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10359 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_LK3
10360 : #endif
10361 : use pm_kind, only: LKC => LK3
10362 : logical(LKC) , intent(in) :: lb, ub
10363 : integer(IK) , intent(in) :: s1, s2
10364 : logical(LKC) :: rand(s1, s2)
10365 : type(xoshiro256ssg_type) , intent(inout) :: rng
10366 : end function
10367 : #endif
10368 :
10369 : #if LK2_ENABLED
10370 : impure module function getUnifRandRNGGLU_D2_LK2(rng, lb, ub, s1, s2) result(rand)
10371 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10372 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_LK2
10373 : #endif
10374 : use pm_kind, only: LKC => LK2
10375 : logical(LKC) , intent(in) :: lb, ub
10376 : integer(IK) , intent(in) :: s1, s2
10377 : logical(LKC) :: rand(s1, s2)
10378 : type(xoshiro256ssg_type) , intent(inout) :: rng
10379 : end function
10380 : #endif
10381 :
10382 : #if LK1_ENABLED
10383 : impure module function getUnifRandRNGGLU_D2_LK1(rng, lb, ub, s1, s2) result(rand)
10384 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10385 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_LK1
10386 : #endif
10387 : use pm_kind, only: LKC => LK1
10388 : logical(LKC) , intent(in) :: lb, ub
10389 : integer(IK) , intent(in) :: s1, s2
10390 : logical(LKC) :: rand(s1, s2)
10391 : type(xoshiro256ssg_type) , intent(inout) :: rng
10392 : end function
10393 : #endif
10394 :
10395 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10396 :
10397 : #if CK5_ENABLED
10398 : impure module function getUnifRandRNGGLU_D2_CK5(rng, lb, ub, s1, s2) result(rand)
10399 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10400 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_CK5
10401 : #endif
10402 : use pm_kind, only: CKC => CK5
10403 : complex(CKC) , intent(in) :: lb, ub
10404 : integer(IK) , intent(in) :: s1, s2
10405 : complex(CKC) :: rand(s1, s2)
10406 : type(xoshiro256ssg_type) , intent(inout) :: rng
10407 : end function
10408 : #endif
10409 :
10410 : #if CK4_ENABLED
10411 : impure module function getUnifRandRNGGLU_D2_CK4(rng, lb, ub, s1, s2) result(rand)
10412 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10413 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_CK4
10414 : #endif
10415 : use pm_kind, only: CKC => CK4
10416 : complex(CKC) , intent(in) :: lb, ub
10417 : integer(IK) , intent(in) :: s1, s2
10418 : complex(CKC) :: rand(s1, s2)
10419 : type(xoshiro256ssg_type) , intent(inout) :: rng
10420 : end function
10421 : #endif
10422 :
10423 : #if CK3_ENABLED
10424 : impure module function getUnifRandRNGGLU_D2_CK3(rng, lb, ub, s1, s2) result(rand)
10425 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10426 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_CK3
10427 : #endif
10428 : use pm_kind, only: CKC => CK3
10429 : complex(CKC) , intent(in) :: lb, ub
10430 : integer(IK) , intent(in) :: s1, s2
10431 : complex(CKC) :: rand(s1, s2)
10432 : type(xoshiro256ssg_type) , intent(inout) :: rng
10433 : end function
10434 : #endif
10435 :
10436 : #if CK2_ENABLED
10437 : impure module function getUnifRandRNGGLU_D2_CK2(rng, lb, ub, s1, s2) result(rand)
10438 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10439 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_CK2
10440 : #endif
10441 : use pm_kind, only: CKC => CK2
10442 : complex(CKC) , intent(in) :: lb, ub
10443 : integer(IK) , intent(in) :: s1, s2
10444 : complex(CKC) :: rand(s1, s2)
10445 : type(xoshiro256ssg_type) , intent(inout) :: rng
10446 : end function
10447 : #endif
10448 :
10449 : #if CK1_ENABLED
10450 : impure module function getUnifRandRNGGLU_D2_CK1(rng, lb, ub, s1, s2) result(rand)
10451 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10452 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_CK1
10453 : #endif
10454 : use pm_kind, only: CKC => CK1
10455 : complex(CKC) , intent(in) :: lb, ub
10456 : integer(IK) , intent(in) :: s1, s2
10457 : complex(CKC) :: rand(s1, s2)
10458 : type(xoshiro256ssg_type) , intent(inout) :: rng
10459 : end function
10460 : #endif
10461 :
10462 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10463 :
10464 : #if RK5_ENABLED
10465 : impure module function getUnifRandRNGGLU_D2_RK5(rng, lb, ub, s1, s2) result(rand)
10466 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10467 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_RK5
10468 : #endif
10469 : use pm_kind, only: RKC => RK5
10470 : real(RKC) , intent(in) :: lb, ub
10471 : integer(IK) , intent(in) :: s1, s2
10472 : real(RKC) :: rand(s1, s2)
10473 : type(xoshiro256ssg_type) , intent(inout) :: rng
10474 : end function
10475 :
10476 : #endif
10477 :
10478 : #if RK4_ENABLED
10479 : impure module function getUnifRandRNGGLU_D2_RK4(rng, lb, ub, s1, s2) result(rand)
10480 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10481 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_RK4
10482 : #endif
10483 : use pm_kind, only: RKC => RK4
10484 : real(RKC) , intent(in) :: lb, ub
10485 : integer(IK) , intent(in) :: s1, s2
10486 : real(RKC) :: rand(s1, s2)
10487 : type(xoshiro256ssg_type) , intent(inout) :: rng
10488 : end function
10489 :
10490 : #endif
10491 :
10492 : #if RK3_ENABLED
10493 : impure module function getUnifRandRNGGLU_D2_RK3(rng, lb, ub, s1, s2) result(rand)
10494 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10495 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_RK3
10496 : #endif
10497 : use pm_kind, only: RKC => RK3
10498 : real(RKC) , intent(in) :: lb, ub
10499 : integer(IK) , intent(in) :: s1, s2
10500 : real(RKC) :: rand(s1, s2)
10501 : type(xoshiro256ssg_type) , intent(inout) :: rng
10502 : end function
10503 :
10504 : #endif
10505 :
10506 : #if RK2_ENABLED
10507 : impure module function getUnifRandRNGGLU_D2_RK2(rng, lb, ub, s1, s2) result(rand)
10508 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10509 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_RK2
10510 : #endif
10511 : use pm_kind, only: RKC => RK2
10512 : real(RKC) , intent(in) :: lb, ub
10513 : integer(IK) , intent(in) :: s1, s2
10514 : real(RKC) :: rand(s1, s2)
10515 : type(xoshiro256ssg_type) , intent(inout) :: rng
10516 : end function
10517 : #endif
10518 :
10519 : #if RK1_ENABLED
10520 : impure module function getUnifRandRNGGLU_D2_RK1(rng, lb, ub, s1, s2) result(rand)
10521 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10522 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D2_RK1
10523 : #endif
10524 : use pm_kind, only: RKC => RK1
10525 : real(RKC) , intent(in) :: lb, ub
10526 : integer(IK) , intent(in) :: s1, s2
10527 : real(RKC) :: rand(s1, s2)
10528 : type(xoshiro256ssg_type) , intent(inout) :: rng
10529 : end function
10530 : #endif
10531 :
10532 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10533 :
10534 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10535 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10536 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10537 :
10538 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10539 :
10540 : #if SK5_ENABLED
10541 : impure module function getUnifRandRNGGLU_D3_SK5(rng, lb, ub, s1, s2, s3) result(rand)
10542 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10543 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_SK5
10544 : #endif
10545 : use pm_kind, only: SKC => SK5
10546 : character(*,SKC) , intent(in) :: lb, ub
10547 : integer(IK) , intent(in) :: s1, s2, s3
10548 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
10549 : type(xoshiro256ssg_type) , intent(inout) :: rng
10550 : end function
10551 : #endif
10552 :
10553 : #if SK4_ENABLED
10554 : impure module function getUnifRandRNGGLU_D3_SK4(rng, lb, ub, s1, s2, s3) result(rand)
10555 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10556 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_SK4
10557 : #endif
10558 : use pm_kind, only: SKC => SK4
10559 : character(*,SKC) , intent(in) :: lb, ub
10560 : integer(IK) , intent(in) :: s1, s2, s3
10561 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
10562 : type(xoshiro256ssg_type) , intent(inout) :: rng
10563 : end function
10564 : #endif
10565 :
10566 : #if SK3_ENABLED
10567 : impure module function getUnifRandRNGGLU_D3_SK3(rng, lb, ub, s1, s2, s3) result(rand)
10568 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10569 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_SK3
10570 : #endif
10571 : use pm_kind, only: SKC => SK3
10572 : character(*,SKC) , intent(in) :: lb, ub
10573 : integer(IK) , intent(in) :: s1, s2, s3
10574 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
10575 : type(xoshiro256ssg_type) , intent(inout) :: rng
10576 : end function
10577 : #endif
10578 :
10579 : #if SK2_ENABLED
10580 : impure module function getUnifRandRNGGLU_D3_SK2(rng, lb, ub, s1, s2, s3) result(rand)
10581 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10582 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_SK2
10583 : #endif
10584 : use pm_kind, only: SKC => SK2
10585 : character(*,SKC) , intent(in) :: lb, ub
10586 : integer(IK) , intent(in) :: s1, s2, s3
10587 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
10588 : type(xoshiro256ssg_type) , intent(inout) :: rng
10589 : end function
10590 : #endif
10591 :
10592 : #if SK1_ENABLED
10593 : impure module function getUnifRandRNGGLU_D3_SK1(rng, lb, ub, s1, s2, s3) result(rand)
10594 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10595 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_SK1
10596 : #endif
10597 : use pm_kind, only: SKC => SK1
10598 : character(*,SKC) , intent(in) :: lb, ub
10599 : integer(IK) , intent(in) :: s1, s2, s3
10600 : character(len(lb,IK),SKC) :: rand(s1, s2, s3)
10601 : type(xoshiro256ssg_type) , intent(inout) :: rng
10602 : end function
10603 : #endif
10604 :
10605 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10606 :
10607 : #if IK5_ENABLED
10608 : impure module function getUnifRandRNGGLU_D3_IK5(rng, lb, ub, s1, s2, s3) result(rand)
10609 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10610 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_IK5
10611 : #endif
10612 : use pm_kind, only: IKC => IK5
10613 : integer(IKC) , intent(in) :: lb, ub
10614 : integer(IK) , intent(in) :: s1, s2, s3
10615 : integer(IKC) :: rand(s1, s2, s3)
10616 : type(xoshiro256ssg_type) , intent(inout) :: rng
10617 : end function
10618 : #endif
10619 :
10620 : #if IK4_ENABLED
10621 : impure module function getUnifRandRNGGLU_D3_IK4(rng, lb, ub, s1, s2, s3) result(rand)
10622 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10623 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_IK4
10624 : #endif
10625 : use pm_kind, only: IKC => IK4
10626 : integer(IKC) , intent(in) :: lb, ub
10627 : integer(IK) , intent(in) :: s1, s2, s3
10628 : integer(IKC) :: rand(s1, s2, s3)
10629 : type(xoshiro256ssg_type) , intent(inout) :: rng
10630 : end function
10631 : #endif
10632 :
10633 : #if IK3_ENABLED
10634 : impure module function getUnifRandRNGGLU_D3_IK3(rng, lb, ub, s1, s2, s3) result(rand)
10635 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10636 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_IK3
10637 : #endif
10638 : use pm_kind, only: IKC => IK3
10639 : integer(IKC) , intent(in) :: lb, ub
10640 : integer(IK) , intent(in) :: s1, s2, s3
10641 : integer(IKC) :: rand(s1, s2, s3)
10642 : type(xoshiro256ssg_type) , intent(inout) :: rng
10643 : end function
10644 : #endif
10645 :
10646 : #if IK2_ENABLED
10647 : impure module function getUnifRandRNGGLU_D3_IK2(rng, lb, ub, s1, s2, s3) result(rand)
10648 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10649 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_IK2
10650 : #endif
10651 : use pm_kind, only: IKC => IK2
10652 : integer(IKC) , intent(in) :: lb, ub
10653 : integer(IK) , intent(in) :: s1, s2, s3
10654 : integer(IKC) :: rand(s1, s2, s3)
10655 : type(xoshiro256ssg_type) , intent(inout) :: rng
10656 : end function
10657 : #endif
10658 :
10659 : #if IK1_ENABLED
10660 : impure module function getUnifRandRNGGLU_D3_IK1(rng, lb, ub, s1, s2, s3) result(rand)
10661 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10662 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_IK1
10663 : #endif
10664 : use pm_kind, only: IKC => IK1
10665 : integer(IKC) , intent(in) :: lb, ub
10666 : integer(IK) , intent(in) :: s1, s2, s3
10667 : integer(IKC) :: rand(s1, s2, s3)
10668 : type(xoshiro256ssg_type) , intent(inout) :: rng
10669 : end function
10670 : #endif
10671 :
10672 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10673 :
10674 : #if LK5_ENABLED
10675 : impure module function getUnifRandRNGGLU_D3_LK5(rng, lb, ub, s1, s2, s3) result(rand)
10676 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10677 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_LK5
10678 : #endif
10679 : use pm_kind, only: LKC => LK5
10680 : logical(LKC) , intent(in) :: lb, ub
10681 : integer(IK) , intent(in) :: s1, s2, s3
10682 : logical(LKC) :: rand(s1, s2, s3)
10683 : type(xoshiro256ssg_type) , intent(inout) :: rng
10684 : end function
10685 : #endif
10686 :
10687 : #if LK4_ENABLED
10688 : impure module function getUnifRandRNGGLU_D3_LK4(rng, lb, ub, s1, s2, s3) result(rand)
10689 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10690 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_LK4
10691 : #endif
10692 : use pm_kind, only: LKC => LK4
10693 : logical(LKC) , intent(in) :: lb, ub
10694 : integer(IK) , intent(in) :: s1, s2, s3
10695 : logical(LKC) :: rand(s1, s2, s3)
10696 : type(xoshiro256ssg_type) , intent(inout) :: rng
10697 : end function
10698 : #endif
10699 :
10700 : #if LK3_ENABLED
10701 : impure module function getUnifRandRNGGLU_D3_LK3(rng, lb, ub, s1, s2, s3) result(rand)
10702 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10703 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_LK3
10704 : #endif
10705 : use pm_kind, only: LKC => LK3
10706 : logical(LKC) , intent(in) :: lb, ub
10707 : integer(IK) , intent(in) :: s1, s2, s3
10708 : logical(LKC) :: rand(s1, s2, s3)
10709 : type(xoshiro256ssg_type) , intent(inout) :: rng
10710 : end function
10711 : #endif
10712 :
10713 : #if LK2_ENABLED
10714 : impure module function getUnifRandRNGGLU_D3_LK2(rng, lb, ub, s1, s2, s3) result(rand)
10715 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10716 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_LK2
10717 : #endif
10718 : use pm_kind, only: LKC => LK2
10719 : logical(LKC) , intent(in) :: lb, ub
10720 : integer(IK) , intent(in) :: s1, s2, s3
10721 : logical(LKC) :: rand(s1, s2, s3)
10722 : type(xoshiro256ssg_type) , intent(inout) :: rng
10723 : end function
10724 : #endif
10725 :
10726 : #if LK1_ENABLED
10727 : impure module function getUnifRandRNGGLU_D3_LK1(rng, lb, ub, s1, s2, s3) result(rand)
10728 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10729 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_LK1
10730 : #endif
10731 : use pm_kind, only: LKC => LK1
10732 : logical(LKC) , intent(in) :: lb, ub
10733 : integer(IK) , intent(in) :: s1, s2, s3
10734 : logical(LKC) :: rand(s1, s2, s3)
10735 : type(xoshiro256ssg_type) , intent(inout) :: rng
10736 : end function
10737 : #endif
10738 :
10739 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10740 :
10741 : #if CK5_ENABLED
10742 : impure module function getUnifRandRNGGLU_D3_CK5(rng, lb, ub, s1, s2, s3) result(rand)
10743 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10744 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_CK5
10745 : #endif
10746 : use pm_kind, only: CKC => CK5
10747 : complex(CKC) , intent(in) :: lb, ub
10748 : integer(IK) , intent(in) :: s1, s2, s3
10749 : complex(CKC) :: rand(s1, s2, s3)
10750 : type(xoshiro256ssg_type) , intent(inout) :: rng
10751 : end function
10752 : #endif
10753 :
10754 : #if CK4_ENABLED
10755 : impure module function getUnifRandRNGGLU_D3_CK4(rng, lb, ub, s1, s2, s3) result(rand)
10756 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10757 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_CK4
10758 : #endif
10759 : use pm_kind, only: CKC => CK4
10760 : complex(CKC) , intent(in) :: lb, ub
10761 : integer(IK) , intent(in) :: s1, s2, s3
10762 : complex(CKC) :: rand(s1, s2, s3)
10763 : type(xoshiro256ssg_type) , intent(inout) :: rng
10764 : end function
10765 : #endif
10766 :
10767 : #if CK3_ENABLED
10768 : impure module function getUnifRandRNGGLU_D3_CK3(rng, lb, ub, s1, s2, s3) result(rand)
10769 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10770 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_CK3
10771 : #endif
10772 : use pm_kind, only: CKC => CK3
10773 : complex(CKC) , intent(in) :: lb, ub
10774 : integer(IK) , intent(in) :: s1, s2, s3
10775 : complex(CKC) :: rand(s1, s2, s3)
10776 : type(xoshiro256ssg_type) , intent(inout) :: rng
10777 : end function
10778 : #endif
10779 :
10780 : #if CK2_ENABLED
10781 : impure module function getUnifRandRNGGLU_D3_CK2(rng, lb, ub, s1, s2, s3) result(rand)
10782 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10783 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_CK2
10784 : #endif
10785 : use pm_kind, only: CKC => CK2
10786 : complex(CKC) , intent(in) :: lb, ub
10787 : integer(IK) , intent(in) :: s1, s2, s3
10788 : complex(CKC) :: rand(s1, s2, s3)
10789 : type(xoshiro256ssg_type) , intent(inout) :: rng
10790 : end function
10791 : #endif
10792 :
10793 : #if CK1_ENABLED
10794 : impure module function getUnifRandRNGGLU_D3_CK1(rng, lb, ub, s1, s2, s3) result(rand)
10795 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10796 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_CK1
10797 : #endif
10798 : use pm_kind, only: CKC => CK1
10799 : complex(CKC) , intent(in) :: lb, ub
10800 : integer(IK) , intent(in) :: s1, s2, s3
10801 : complex(CKC) :: rand(s1, s2, s3)
10802 : type(xoshiro256ssg_type) , intent(inout) :: rng
10803 : end function
10804 : #endif
10805 :
10806 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10807 :
10808 : #if RK5_ENABLED
10809 : impure module function getUnifRandRNGGLU_D3_RK5(rng, lb, ub, s1, s2, s3) result(rand)
10810 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10811 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_RK5
10812 : #endif
10813 : use pm_kind, only: RKC => RK5
10814 : real(RKC) , intent(in) :: lb, ub
10815 : integer(IK) , intent(in) :: s1, s2, s3
10816 : real(RKC) :: rand(s1, s2, s3)
10817 : type(xoshiro256ssg_type) , intent(inout) :: rng
10818 : end function
10819 :
10820 : #endif
10821 :
10822 : #if RK4_ENABLED
10823 : impure module function getUnifRandRNGGLU_D3_RK4(rng, lb, ub, s1, s2, s3) result(rand)
10824 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10825 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_RK4
10826 : #endif
10827 : use pm_kind, only: RKC => RK4
10828 : real(RKC) , intent(in) :: lb, ub
10829 : integer(IK) , intent(in) :: s1, s2, s3
10830 : real(RKC) :: rand(s1, s2, s3)
10831 : type(xoshiro256ssg_type) , intent(inout) :: rng
10832 : end function
10833 :
10834 : #endif
10835 :
10836 : #if RK3_ENABLED
10837 : impure module function getUnifRandRNGGLU_D3_RK3(rng, lb, ub, s1, s2, s3) result(rand)
10838 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10839 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_RK3
10840 : #endif
10841 : use pm_kind, only: RKC => RK3
10842 : real(RKC) , intent(in) :: lb, ub
10843 : integer(IK) , intent(in) :: s1, s2, s3
10844 : real(RKC) :: rand(s1, s2, s3)
10845 : type(xoshiro256ssg_type) , intent(inout) :: rng
10846 : end function
10847 :
10848 : #endif
10849 :
10850 : #if RK2_ENABLED
10851 : impure module function getUnifRandRNGGLU_D3_RK2(rng, lb, ub, s1, s2, s3) result(rand)
10852 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10853 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_RK2
10854 : #endif
10855 : use pm_kind, only: RKC => RK2
10856 : real(RKC) , intent(in) :: lb, ub
10857 : integer(IK) , intent(in) :: s1, s2, s3
10858 : real(RKC) :: rand(s1, s2, s3)
10859 : type(xoshiro256ssg_type) , intent(inout) :: rng
10860 : end function
10861 : #endif
10862 :
10863 : #if RK1_ENABLED
10864 : impure module function getUnifRandRNGGLU_D3_RK1(rng, lb, ub, s1, s2, s3) result(rand)
10865 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
10866 : !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRandRNGGLU_D3_RK1
10867 : #endif
10868 : use pm_kind, only: RKC => RK1
10869 : real(RKC) , intent(in) :: lb, ub
10870 : integer(IK) , intent(in) :: s1, s2, s3
10871 : real(RKC) :: rand(s1, s2, s3)
10872 : type(xoshiro256ssg_type) , intent(inout) :: rng
10873 : end function
10874 : #endif
10875 :
10876 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10877 :
10878 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10879 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10880 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10881 :
10882 : end interface
10883 :
10884 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10885 :
10886 : !> \brief
10887 : !> Return a uniform random scalar or `contiguous` array of arbitrary rank of randomly uniformly distributed discrete
10888 : !> `logical`, `integer`, `character` value(s), or continuous `real` or `complex value(s) within the specified input range.
10889 : !>
10890 : !> \param[inout] rng : The input/output scalar of type,
10891 : !> <ol>
10892 : !> <li> [rngf_type](@ref pm_distUnif::rngf_type), or
10893 : !> <li> [splitmix64_type](@ref pm_distUnif::splitmix64_type), or
10894 : !> <li> [xoshiro256ssg_type](@ref pm_distUnif::xoshiro256ssg_type),
10895 : !> <li> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type),
10896 : !> </ol>
10897 : !> containing the user-specified random number generator algorithm to be used.<br>
10898 : !> The user must initialize the object with the corresponding type constructors if non-deterministic RNG are desired.
10899 : !> (**optional**, default = [rngf_type](@ref pm_distUnif::rngf_type))
10900 : !> \param[out] rand : The output object of either<br>
10901 : !> <ol>
10902 : !> <li> scalar of type `character` of kind \SKALL of arbitrary `len` type parameter or, <br>
10903 : !> </ol>
10904 : !> or `contiguous` array of the rank, shape, and size as other array-like arguments, of either <br>
10905 : !> <ol>
10906 : !> <li> type `character` of kind \SKALL of arbitrary `len` type parameter or, <br>
10907 : !> <li> type `integer` of kind \IKALL or, <br>
10908 : !> <li> type `complex` of kind \CKALL or, <br>
10909 : !> <li> type `real` of kind \RKALL or, <br>
10910 : !> <li> type `logical` of kind \LKALL, <br>
10911 : !> </ol>
10912 : !> containing the uniformly-distributed random output value.<br>
10913 : !> <ol>
10914 : !> <li> If `rand` is of type `logical`, its value is either `.false.` or `.true.`.<br>
10915 : !> <li> If `rand` is of type `integer`, its value is in the interval `[lb, ub]`.<br>
10916 : !> <li> If `rand` is of type `complex` or `real`, its value is in the interval `[lb, ub)`.<br>
10917 : !> <li> If `rand` is of type `character`, its value is by default in the interval `[char(1), char(127)]`.<br>
10918 : !> </ol>
10919 : !> \param[in] lb : The input scalar (or array of the same rank, shape, and size as other array-like arguments),
10920 : !> of the same type and kind as `rand`, representing the lower bound of the Uniform distribution.<br>
10921 : !> <ol>
10922 : !> <li> If `rand` is of type `character`, then `len(rand) == len(lb)` must hold.<br>
10923 : !> <li> If `rand` is of type `logical`, then `lb` must be `.false.` (there is no other possibility).<br>
10924 : !> </ol>
10925 : !> (**optional**, default = `char(1)`, `repeat(char(1), len(rand))`, `-huge(rand)`, `.false.`, `(0.,0.)`, or `0.`,
10926 : !> for a scalar `character`, vector `character`, `integer`, `complex`, or `real` output `rand`, respectively.<br>
10927 : !> It must be present <b>if and only if</b> `ub` is also present.)
10928 : !> \param[in] ub : The input scalar (or array of the same shape as `rand`) of the same type and kind as `rand`,
10929 : !> representing the upper bound of the Uniform distribution.<br>
10930 : !> If `rand` is of type `character`, then `len(rand) == len(ub)` must hold.<br>
10931 : !> If `rand` is of type `logical`, then `ub` does not exist as an input argument (it must not be present).<br>
10932 : !> (**optional**, default = `char(127)`, `repeat(char(127), len(rand))`, `+huge(rand)`, `.true.`, `(1.,1.)`, or `1.`,
10933 : !> for a scalar `character`, vector `character`, `integer`, `complex`, or `real` output `rand`, respectively.<br>
10934 : !> It must be present <b>if and only if</b> `ub` is also present.)
10935 : !>
10936 : !> \interface{setUnifRand}
10937 : !> \code{.F90}
10938 : !>
10939 : !> use pm_distUnif, only: setUnifRand
10940 : !>
10941 : !> call setUnifRand(rand) ! `rand` can be any intrinsic type: character, complex, logical, integer, real.
10942 : !> call setUnifRand(rand, lb, ub) ! `rand` can be any intrinsic type: character, complex, logical, integer, real.
10943 : !>
10944 : !> call setUnifRand(rng, rand) ! `rand` can be any intrinsic type: character, complex, logical, integer, real.
10945 : !> call setUnifRand(rng, rand, lb, ub) ! `rand` can be any intrinsic type: character, complex, logical, integer, real.
10946 : !> !
10947 : !> \endcode
10948 : !>
10949 : !> \warning
10950 : !> The condition `len(lb) == len(ub) .or. len(lb) == 1 .or. len(ub) == 1` for the corresponding input arguments of type `character`.<br>
10951 : !> The condition `lb <= ub` must hold for the corresponding input arguments where
10952 : !> logical values are compared by the procedures of module [pm_logicalCompare](@ref pm_logicalCompare) and
10953 : !> complex values are compared by the procedures of module [pm_complexCompareAll](@ref pm_complexCompareAll).<br>
10954 : !> \vericons
10955 : !>
10956 : !> \impure
10957 : !> The procedures of this generic interface are `pure` when the argument `rng` is present.<br>
10958 : !>
10959 : !> \elemental
10960 : !> The procedures of this generic interface are non-`elemental` when the argument `rng` is present.<br>
10961 : !>
10962 : !> \remark
10963 : !> The procedures under this generic interface are carefully designed to avoid possible overflow due to
10964 : !> specifying huge negative and positive `lb` and `ub` limits of type `integer`, `complex`, `real`.<br>
10965 : !> This is possible at the cost of making the random number generation slightly more expensive
10966 : !> (by a few CPU cycles, equivalent to and extra multiplication).<br>
10967 : !>
10968 : !> \remark
10969 : !> It is expected that the condition `lb <= ub` if the two input arguments are specified by the user.<br>
10970 : !> However, this condition is neither enforced nor checked at runtime within the procedures.<br>
10971 : !>
10972 : !> \note
10973 : !> By default random characters are generated from the ASCII collating sequence to ensure portability across compilers and platforms.<br>
10974 : !> If random uniform characters from the processor's collating sequence are desired, specify the `lb`
10975 : !> and `ub` inputs argument as `integer`s of default kind \IK, such that the random numbers are generated from the
10976 : !> processor-dependent character interval `[char(lb), char(ub)]`.<br>
10977 : !>
10978 : !> \see
10979 : !> [rngf](@ref pm_distUnif::rngf)<br>
10980 : !> [isHead](@ref pm_distBern::isHead)<br>
10981 : !> [getUnifCDF](@ref pm_distUnif::getUnifCDF)<br>
10982 : !> [getUnifRand](@ref pm_distUnif::getUnifRand)<br>
10983 : !> [setUnifRand](@ref pm_distUnif::setUnifRand)<br>
10984 : !> [getUnifRandState](@ref pm_distUnif::getUnifRandState)<br>
10985 : !> [setUnifRandState](@ref pm_distUnif::setUnifRandState)<br>
10986 : !> [rngu_type](@ref pm_distUnif::rngu_type)<br>
10987 : !> [rngf_type](@ref pm_distUnif::rngf_type)<br>
10988 : !> [splitmix64_type](@ref pm_distUnif::splitmix64_type)<br>
10989 : !> [xoshiro256ssw_type](@ref pm_distUnif::xoshiro256ssw_type)<br>
10990 : !> [getUnifRandStateSize](@ref pm_distUnif::getUnifRandStateSize)<br>
10991 : !>
10992 : !> \example{setUnifRand}
10993 : !> \include{lineno} example/pm_distUnif/setUnifRand/main.F90
10994 : !> \compilef{setUnifRand}
10995 : !> \output{setUnifRand}
10996 : !> \include{lineno} example/pm_distUnif/setUnifRand/main.out.F90
10997 : !> \postproc{setUnifRand}
10998 : !> \include{lineno} example/pm_distUnif/setUnifRand/main.py
10999 : !> \vis{setUnifRand}
11000 : !> \image html pm_distUnif/setUnifRand/setUnifRand.IK.png width=700
11001 : !> \image html pm_distUnif/setUnifRand/setUnifRand.CK.png width=700
11002 : !> \image html pm_distUnif/setUnifRand/setUnifRand.RK.png width=700
11003 : !>
11004 : !> \test
11005 : !> [test_pm_distUnif](@ref test_pm_distUnif)
11006 : !>
11007 : !> \bug
11008 : !> \status \unresolved
11009 : !> \source \gfortran{10.3}
11010 : !> \desc
11011 : !> \gfortran yields an internal compiler error with the expression `rand = nint(temp, kind = IKC)`
11012 : !> in `pm_distUnif@routines@IK.inc.F90` file when `IKC => integer_kinds(5)` on WSL OS.<br>
11013 : !> \remedy
11014 : !> For now, the expression is replaced with `rand = int(0.5d0 + temp, kind = IKC)`.<br>
11015 : !>
11016 : !> \finmain{setUnifRand}
11017 : !>
11018 : !> \author
11019 : !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
11020 :
11021 : ! RNGD
11022 :
11023 : interface setUnifRand
11024 :
11025 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11026 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11027 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11028 :
11029 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11030 :
11031 : #if SK5_ENABLED
11032 : impure elemental module subroutine setUnifRandRNGDDD_D0_SK5(rand)
11033 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11034 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_SK5
11035 : #endif
11036 : use pm_kind, only: SKC => SK5
11037 : character(*,SKC) , intent(out) :: rand
11038 : end subroutine
11039 : #endif
11040 :
11041 : #if SK4_ENABLED
11042 : impure elemental module subroutine setUnifRandRNGDDD_D0_SK4(rand)
11043 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11044 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_SK4
11045 : #endif
11046 : use pm_kind, only: SKC => SK4
11047 : character(*,SKC) , intent(out) :: rand
11048 : end subroutine
11049 : #endif
11050 :
11051 : #if SK3_ENABLED
11052 : impure elemental module subroutine setUnifRandRNGDDD_D0_SK3(rand)
11053 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11054 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_SK3
11055 : #endif
11056 : use pm_kind, only: SKC => SK3
11057 : character(*,SKC) , intent(out) :: rand
11058 : end subroutine
11059 : #endif
11060 :
11061 : #if SK2_ENABLED
11062 : impure elemental module subroutine setUnifRandRNGDDD_D0_SK2(rand)
11063 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11064 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_SK2
11065 : #endif
11066 : use pm_kind, only: SKC => SK2
11067 : character(*,SKC) , intent(out) :: rand
11068 : end subroutine
11069 : #endif
11070 :
11071 : #if SK1_ENABLED
11072 : impure elemental module subroutine setUnifRandRNGDDD_D0_SK1(rand)
11073 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11074 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_SK1
11075 : #endif
11076 : use pm_kind, only: SKC => SK1
11077 : character(*,SKC) , intent(out) :: rand
11078 : end subroutine
11079 : #endif
11080 :
11081 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11082 :
11083 : #if IK5_ENABLED
11084 : impure elemental module subroutine setUnifRandRNGDDD_D0_IK5(rand)
11085 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11086 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_IK5
11087 : #endif
11088 : use pm_kind, only: IKC => IK5
11089 : integer(IKC) , intent(out) :: rand
11090 : end subroutine
11091 : #endif
11092 :
11093 : #if IK4_ENABLED
11094 : impure elemental module subroutine setUnifRandRNGDDD_D0_IK4(rand)
11095 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11096 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_IK4
11097 : #endif
11098 : use pm_kind, only: IKC => IK4
11099 : integer(IKC) , intent(out) :: rand
11100 : end subroutine
11101 : #endif
11102 :
11103 : #if IK3_ENABLED
11104 : impure elemental module subroutine setUnifRandRNGDDD_D0_IK3(rand)
11105 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11106 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_IK3
11107 : #endif
11108 : use pm_kind, only: IKC => IK3
11109 : integer(IKC) , intent(out) :: rand
11110 : end subroutine
11111 : #endif
11112 :
11113 : #if IK2_ENABLED
11114 : impure elemental module subroutine setUnifRandRNGDDD_D0_IK2(rand)
11115 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11116 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_IK2
11117 : #endif
11118 : use pm_kind, only: IKC => IK2
11119 : integer(IKC) , intent(out) :: rand
11120 : end subroutine
11121 : #endif
11122 :
11123 : #if IK1_ENABLED
11124 : impure elemental module subroutine setUnifRandRNGDDD_D0_IK1(rand)
11125 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11126 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_IK1
11127 : #endif
11128 : use pm_kind, only: IKC => IK1
11129 : integer(IKC) , intent(out) :: rand
11130 : end subroutine
11131 : #endif
11132 :
11133 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11134 :
11135 : #if LK5_ENABLED
11136 : impure elemental module subroutine setUnifRandRNGDDD_D0_LK5(rand)
11137 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11138 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_LK5
11139 : #endif
11140 : use pm_kind, only: LKC => LK5
11141 : logical(LKC) , intent(out) :: rand
11142 : end subroutine
11143 : #endif
11144 :
11145 : #if LK4_ENABLED
11146 : impure elemental module subroutine setUnifRandRNGDDD_D0_LK4(rand)
11147 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11148 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_LK4
11149 : #endif
11150 : use pm_kind, only: LKC => LK4
11151 : logical(LKC) , intent(out) :: rand
11152 : end subroutine
11153 : #endif
11154 :
11155 : #if LK3_ENABLED
11156 : impure elemental module subroutine setUnifRandRNGDDD_D0_LK3(rand)
11157 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11158 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_LK3
11159 : #endif
11160 : use pm_kind, only: LKC => LK3
11161 : logical(LKC) , intent(out) :: rand
11162 : end subroutine
11163 : #endif
11164 :
11165 : #if LK2_ENABLED
11166 : impure elemental module subroutine setUnifRandRNGDDD_D0_LK2(rand)
11167 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11168 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_LK2
11169 : #endif
11170 : use pm_kind, only: LKC => LK2
11171 : logical(LKC) , intent(out) :: rand
11172 : end subroutine
11173 : #endif
11174 :
11175 : #if LK1_ENABLED
11176 : impure elemental module subroutine setUnifRandRNGDDD_D0_LK1(rand)
11177 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11178 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_LK1
11179 : #endif
11180 : use pm_kind, only: LKC => LK1
11181 : logical(LKC) , intent(out) :: rand
11182 : end subroutine
11183 : #endif
11184 :
11185 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11186 :
11187 : #if CK5_ENABLED
11188 : impure elemental module subroutine setUnifRandRNGDDD_D0_CK5(rand)
11189 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11190 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_CK5
11191 : #endif
11192 : use pm_kind, only: CKC => CK5
11193 : complex(CKC) , intent(out) :: rand
11194 : end subroutine
11195 : #endif
11196 :
11197 : #if CK4_ENABLED
11198 : impure elemental module subroutine setUnifRandRNGDDD_D0_CK4(rand)
11199 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11200 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_CK4
11201 : #endif
11202 : use pm_kind, only: CKC => CK4
11203 : complex(CKC) , intent(out) :: rand
11204 : end subroutine
11205 : #endif
11206 :
11207 : #if CK3_ENABLED
11208 : impure elemental module subroutine setUnifRandRNGDDD_D0_CK3(rand)
11209 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11210 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_CK3
11211 : #endif
11212 : use pm_kind, only: CKC => CK3
11213 : complex(CKC) , intent(out) :: rand
11214 : end subroutine
11215 : #endif
11216 :
11217 : #if CK2_ENABLED
11218 : impure elemental module subroutine setUnifRandRNGDDD_D0_CK2(rand)
11219 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11220 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_CK2
11221 : #endif
11222 : use pm_kind, only: CKC => CK2
11223 : complex(CKC) , intent(out) :: rand
11224 : end subroutine
11225 : #endif
11226 :
11227 : #if CK1_ENABLED
11228 : impure elemental module subroutine setUnifRandRNGDDD_D0_CK1(rand)
11229 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11230 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_CK1
11231 : #endif
11232 : use pm_kind, only: CKC => CK1
11233 : complex(CKC) , intent(out) :: rand
11234 : end subroutine
11235 : #endif
11236 :
11237 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11238 :
11239 : #if RK5_ENABLED
11240 : impure elemental module subroutine setUnifRandRNGDDD_D0_RK5(rand)
11241 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11242 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_RK5
11243 : #endif
11244 : use pm_kind, only: RKC => RK5
11245 : real(RKC) , intent(out) :: rand
11246 : end subroutine
11247 : #endif
11248 :
11249 : #if RK4_ENABLED
11250 : impure elemental module subroutine setUnifRandRNGDDD_D0_RK4(rand)
11251 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11252 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_RK4
11253 : #endif
11254 : use pm_kind, only: RKC => RK4
11255 : real(RKC) , intent(out) :: rand
11256 : end subroutine
11257 : #endif
11258 :
11259 : #if RK3_ENABLED
11260 : impure elemental module subroutine setUnifRandRNGDDD_D0_RK3(rand)
11261 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11262 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_RK3
11263 : #endif
11264 : use pm_kind, only: RKC => RK3
11265 : real(RKC) , intent(out) :: rand
11266 : end subroutine
11267 : #endif
11268 :
11269 : #if RK2_ENABLED
11270 : impure elemental module subroutine setUnifRandRNGDDD_D0_RK2(rand)
11271 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11272 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_RK2
11273 : #endif
11274 : use pm_kind, only: RKC => RK2
11275 : real(RKC) , intent(out) :: rand
11276 : end subroutine
11277 : #endif
11278 :
11279 : #if RK1_ENABLED
11280 : impure elemental module subroutine setUnifRandRNGDDD_D0_RK1(rand)
11281 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11282 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDDD_D0_RK1
11283 : #endif
11284 : use pm_kind, only: RKC => RK1
11285 : real(RKC) , intent(out) :: rand
11286 : end subroutine
11287 : #endif
11288 :
11289 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11290 :
11291 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11292 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11293 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11294 :
11295 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11296 :
11297 : #if SK5_ENABLED
11298 : impure elemental module subroutine setUnifRandRNGDLU_D0_SK5(rand, lb, ub)
11299 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11300 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_SK5
11301 : #endif
11302 : use pm_kind, only: SKC => SK5
11303 : character(*,SKC) , intent(out) :: rand
11304 : character(*,SKC) , intent(in) :: lb, ub
11305 : end subroutine
11306 : #endif
11307 :
11308 : #if SK4_ENABLED
11309 : impure elemental module subroutine setUnifRandRNGDLU_D0_SK4(rand, lb, ub)
11310 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11311 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_SK4
11312 : #endif
11313 : use pm_kind, only: SKC => SK4
11314 : character(*,SKC) , intent(out) :: rand
11315 : character(*,SKC) , intent(in) :: lb, ub
11316 : end subroutine
11317 : #endif
11318 :
11319 : #if SK3_ENABLED
11320 : impure elemental module subroutine setUnifRandRNGDLU_D0_SK3(rand, lb, ub)
11321 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11322 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_SK3
11323 : #endif
11324 : use pm_kind, only: SKC => SK3
11325 : character(*,SKC) , intent(out) :: rand
11326 : character(*,SKC) , intent(in) :: lb, ub
11327 : end subroutine
11328 : #endif
11329 :
11330 : #if SK2_ENABLED
11331 : impure elemental module subroutine setUnifRandRNGDLU_D0_SK2(rand, lb, ub)
11332 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11333 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_SK2
11334 : #endif
11335 : use pm_kind, only: SKC => SK2
11336 : character(*,SKC) , intent(out) :: rand
11337 : character(*,SKC) , intent(in) :: lb, ub
11338 : end subroutine
11339 : #endif
11340 :
11341 : #if SK1_ENABLED
11342 : impure elemental module subroutine setUnifRandRNGDLU_D0_SK1(rand, lb, ub)
11343 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11344 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_SK1
11345 : #endif
11346 : use pm_kind, only: SKC => SK1
11347 : character(*,SKC) , intent(out) :: rand
11348 : character(*,SKC) , intent(in) :: lb, ub
11349 : end subroutine
11350 : #endif
11351 :
11352 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11353 :
11354 : #if IK5_ENABLED
11355 : impure elemental module subroutine setUnifRandRNGDLU_D0_IK5(rand, lb, ub)
11356 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11357 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_IK5
11358 : #endif
11359 : use pm_kind, only: IKC => IK5
11360 : integer(IKC) , intent(out) :: rand
11361 : integer(IKC) , intent(in) :: lb, ub
11362 : end subroutine
11363 : #endif
11364 :
11365 : #if IK4_ENABLED
11366 : impure elemental module subroutine setUnifRandRNGDLU_D0_IK4(rand, lb, ub)
11367 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11368 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_IK4
11369 : #endif
11370 : use pm_kind, only: IKC => IK4
11371 : integer(IKC) , intent(out) :: rand
11372 : integer(IKC) , intent(in) :: lb, ub
11373 : end subroutine
11374 : #endif
11375 :
11376 : #if IK3_ENABLED
11377 : impure elemental module subroutine setUnifRandRNGDLU_D0_IK3(rand, lb, ub)
11378 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11379 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_IK3
11380 : #endif
11381 : use pm_kind, only: IKC => IK3
11382 : integer(IKC) , intent(out) :: rand
11383 : integer(IKC) , intent(in) :: lb, ub
11384 : end subroutine
11385 : #endif
11386 :
11387 : #if IK2_ENABLED
11388 : impure elemental module subroutine setUnifRandRNGDLU_D0_IK2(rand, lb, ub)
11389 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11390 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_IK2
11391 : #endif
11392 : use pm_kind, only: IKC => IK2
11393 : integer(IKC) , intent(out) :: rand
11394 : integer(IKC) , intent(in) :: lb, ub
11395 : end subroutine
11396 : #endif
11397 :
11398 : #if IK1_ENABLED
11399 : impure elemental module subroutine setUnifRandRNGDLU_D0_IK1(rand, lb, ub)
11400 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11401 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_IK1
11402 : #endif
11403 : use pm_kind, only: IKC => IK1
11404 : integer(IKC) , intent(out) :: rand
11405 : integer(IKC) , intent(in) :: lb, ub
11406 : end subroutine
11407 : #endif
11408 :
11409 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11410 :
11411 : #if LK5_ENABLED
11412 : impure elemental module subroutine setUnifRandRNGDLU_D0_LK5(rand, lb, ub)
11413 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11414 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_LK5
11415 : #endif
11416 : use pm_kind, only: LKC => LK5
11417 : logical(LKC) , intent(out) :: rand
11418 : logical(LKC) , intent(in) :: lb, ub
11419 : end subroutine
11420 : #endif
11421 :
11422 : #if LK4_ENABLED
11423 : impure elemental module subroutine setUnifRandRNGDLU_D0_LK4(rand, lb, ub)
11424 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11425 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_LK4
11426 : #endif
11427 : use pm_kind, only: LKC => LK4
11428 : logical(LKC) , intent(out) :: rand
11429 : logical(LKC) , intent(in) :: lb, ub
11430 : end subroutine
11431 : #endif
11432 :
11433 : #if LK3_ENABLED
11434 : impure elemental module subroutine setUnifRandRNGDLU_D0_LK3(rand, lb, ub)
11435 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11436 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_LK3
11437 : #endif
11438 : use pm_kind, only: LKC => LK3
11439 : logical(LKC) , intent(out) :: rand
11440 : logical(LKC) , intent(in) :: lb, ub
11441 : end subroutine
11442 : #endif
11443 :
11444 : #if LK2_ENABLED
11445 : impure elemental module subroutine setUnifRandRNGDLU_D0_LK2(rand, lb, ub)
11446 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11447 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_LK2
11448 : #endif
11449 : use pm_kind, only: LKC => LK2
11450 : logical(LKC) , intent(out) :: rand
11451 : logical(LKC) , intent(in) :: lb, ub
11452 : end subroutine
11453 : #endif
11454 :
11455 : #if LK1_ENABLED
11456 : impure elemental module subroutine setUnifRandRNGDLU_D0_LK1(rand, lb, ub)
11457 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11458 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_LK1
11459 : #endif
11460 : use pm_kind, only: LKC => LK1
11461 : logical(LKC) , intent(out) :: rand
11462 : logical(LKC) , intent(in) :: lb, ub
11463 : end subroutine
11464 : #endif
11465 :
11466 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11467 :
11468 : #if CK5_ENABLED
11469 : impure elemental module subroutine setUnifRandRNGDLU_D0_CK5(rand, lb, ub)
11470 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11471 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_CK5
11472 : #endif
11473 : use pm_kind, only: CKC => CK5
11474 : complex(CKC) , intent(out) :: rand
11475 : complex(CKC) , intent(in) :: lb, ub
11476 : end subroutine
11477 : #endif
11478 :
11479 : #if CK4_ENABLED
11480 : impure elemental module subroutine setUnifRandRNGDLU_D0_CK4(rand, lb, ub)
11481 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11482 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_CK4
11483 : #endif
11484 : use pm_kind, only: CKC => CK4
11485 : complex(CKC) , intent(out) :: rand
11486 : complex(CKC) , intent(in) :: lb, ub
11487 : end subroutine
11488 : #endif
11489 :
11490 : #if CK3_ENABLED
11491 : impure elemental module subroutine setUnifRandRNGDLU_D0_CK3(rand, lb, ub)
11492 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11493 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_CK3
11494 : #endif
11495 : use pm_kind, only: CKC => CK3
11496 : complex(CKC) , intent(out) :: rand
11497 : complex(CKC) , intent(in) :: lb, ub
11498 : end subroutine
11499 : #endif
11500 :
11501 : #if CK2_ENABLED
11502 : impure elemental module subroutine setUnifRandRNGDLU_D0_CK2(rand, lb, ub)
11503 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11504 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_CK2
11505 : #endif
11506 : use pm_kind, only: CKC => CK2
11507 : complex(CKC) , intent(out) :: rand
11508 : complex(CKC) , intent(in) :: lb, ub
11509 : end subroutine
11510 : #endif
11511 :
11512 : #if CK1_ENABLED
11513 : impure elemental module subroutine setUnifRandRNGDLU_D0_CK1(rand, lb, ub)
11514 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11515 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_CK1
11516 : #endif
11517 : use pm_kind, only: CKC => CK1
11518 : complex(CKC) , intent(out) :: rand
11519 : complex(CKC) , intent(in) :: lb, ub
11520 : end subroutine
11521 : #endif
11522 :
11523 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11524 :
11525 : #if RK5_ENABLED
11526 : impure elemental module subroutine setUnifRandRNGDLU_D0_RK5(rand, lb, ub)
11527 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11528 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_RK5
11529 : #endif
11530 : use pm_kind, only: RKC => RK5
11531 : real(RKC) , intent(out) :: rand
11532 : real(RKC) , intent(in) :: lb, ub
11533 : end subroutine
11534 : #endif
11535 :
11536 : #if RK4_ENABLED
11537 : impure elemental module subroutine setUnifRandRNGDLU_D0_RK4(rand, lb, ub)
11538 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11539 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_RK4
11540 : #endif
11541 : use pm_kind, only: RKC => RK4
11542 : real(RKC) , intent(out) :: rand
11543 : real(RKC) , intent(in) :: lb, ub
11544 : end subroutine
11545 : #endif
11546 :
11547 : #if RK3_ENABLED
11548 : impure elemental module subroutine setUnifRandRNGDLU_D0_RK3(rand, lb, ub)
11549 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11550 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_RK3
11551 : #endif
11552 : use pm_kind, only: RKC => RK3
11553 : real(RKC) , intent(out) :: rand
11554 : real(RKC) , intent(in) :: lb, ub
11555 : end subroutine
11556 : #endif
11557 :
11558 : #if RK2_ENABLED
11559 : impure elemental module subroutine setUnifRandRNGDLU_D0_RK2(rand, lb, ub)
11560 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11561 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_RK2
11562 : #endif
11563 : use pm_kind, only: RKC => RK2
11564 : real(RKC) , intent(out) :: rand
11565 : real(RKC) , intent(in) :: lb, ub
11566 : end subroutine
11567 : #endif
11568 :
11569 : #if RK1_ENABLED
11570 : impure elemental module subroutine setUnifRandRNGDLU_D0_RK1(rand, lb, ub)
11571 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11572 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGDLU_D0_RK1
11573 : #endif
11574 : use pm_kind, only: RKC => RK1
11575 : real(RKC) , intent(out) :: rand
11576 : real(RKC) , intent(in) :: lb, ub
11577 : end subroutine
11578 : #endif
11579 :
11580 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11581 :
11582 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11583 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11584 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11585 :
11586 : end interface
11587 :
11588 : ! RNGF
11589 :
11590 : interface setUnifRand
11591 :
11592 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11593 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11594 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11595 :
11596 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11597 :
11598 : #if SK5_ENABLED
11599 : impure elemental module subroutine setUnifRandRNGFDD_D0_SK5(rng, rand)
11600 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11601 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_SK5
11602 : #endif
11603 : use pm_kind, only: SKC => SK5
11604 : character(*,SKC) , intent(out) :: rand
11605 : type(rngf_type) , intent(in) :: rng
11606 : end subroutine
11607 : #endif
11608 :
11609 : #if SK4_ENABLED
11610 : impure elemental module subroutine setUnifRandRNGFDD_D0_SK4(rng, rand)
11611 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11612 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_SK4
11613 : #endif
11614 : use pm_kind, only: SKC => SK4
11615 : character(*,SKC) , intent(out) :: rand
11616 : type(rngf_type) , intent(in) :: rng
11617 : end subroutine
11618 : #endif
11619 :
11620 : #if SK3_ENABLED
11621 : impure elemental module subroutine setUnifRandRNGFDD_D0_SK3(rng, rand)
11622 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11623 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_SK3
11624 : #endif
11625 : use pm_kind, only: SKC => SK3
11626 : character(*,SKC) , intent(out) :: rand
11627 : type(rngf_type) , intent(in) :: rng
11628 : end subroutine
11629 : #endif
11630 :
11631 : #if SK2_ENABLED
11632 : impure elemental module subroutine setUnifRandRNGFDD_D0_SK2(rng, rand)
11633 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11634 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_SK2
11635 : #endif
11636 : use pm_kind, only: SKC => SK2
11637 : character(*,SKC) , intent(out) :: rand
11638 : type(rngf_type) , intent(in) :: rng
11639 : end subroutine
11640 : #endif
11641 :
11642 : #if SK1_ENABLED
11643 : impure elemental module subroutine setUnifRandRNGFDD_D0_SK1(rng, rand)
11644 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11645 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_SK1
11646 : #endif
11647 : use pm_kind, only: SKC => SK1
11648 : character(*,SKC) , intent(out) :: rand
11649 : type(rngf_type) , intent(in) :: rng
11650 : end subroutine
11651 : #endif
11652 :
11653 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11654 :
11655 : #if IK5_ENABLED
11656 : impure elemental module subroutine setUnifRandRNGFDD_D0_IK5(rng, rand)
11657 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11658 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_IK5
11659 : #endif
11660 : use pm_kind, only: IKC => IK5
11661 : integer(IKC) , intent(out) :: rand
11662 : type(rngf_type) , intent(in) :: rng
11663 : end subroutine
11664 : #endif
11665 :
11666 : #if IK4_ENABLED
11667 : impure elemental module subroutine setUnifRandRNGFDD_D0_IK4(rng, rand)
11668 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11669 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_IK4
11670 : #endif
11671 : use pm_kind, only: IKC => IK4
11672 : integer(IKC) , intent(out) :: rand
11673 : type(rngf_type) , intent(in) :: rng
11674 : end subroutine
11675 : #endif
11676 :
11677 : #if IK3_ENABLED
11678 : impure elemental module subroutine setUnifRandRNGFDD_D0_IK3(rng, rand)
11679 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11680 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_IK3
11681 : #endif
11682 : use pm_kind, only: IKC => IK3
11683 : integer(IKC) , intent(out) :: rand
11684 : type(rngf_type) , intent(in) :: rng
11685 : end subroutine
11686 : #endif
11687 :
11688 : #if IK2_ENABLED
11689 : impure elemental module subroutine setUnifRandRNGFDD_D0_IK2(rng, rand)
11690 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11691 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_IK2
11692 : #endif
11693 : use pm_kind, only: IKC => IK2
11694 : integer(IKC) , intent(out) :: rand
11695 : type(rngf_type) , intent(in) :: rng
11696 : end subroutine
11697 : #endif
11698 :
11699 : #if IK1_ENABLED
11700 : impure elemental module subroutine setUnifRandRNGFDD_D0_IK1(rng, rand)
11701 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11702 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_IK1
11703 : #endif
11704 : use pm_kind, only: IKC => IK1
11705 : integer(IKC) , intent(out) :: rand
11706 : type(rngf_type) , intent(in) :: rng
11707 : end subroutine
11708 : #endif
11709 :
11710 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11711 :
11712 : #if LK5_ENABLED
11713 : impure elemental module subroutine setUnifRandRNGFDD_D0_LK5(rng, rand)
11714 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11715 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_LK5
11716 : #endif
11717 : use pm_kind, only: LKC => LK5
11718 : logical(LKC) , intent(out) :: rand
11719 : type(rngf_type) , intent(in) :: rng
11720 : end subroutine
11721 : #endif
11722 :
11723 : #if LK4_ENABLED
11724 : impure elemental module subroutine setUnifRandRNGFDD_D0_LK4(rng, rand)
11725 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11726 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_LK4
11727 : #endif
11728 : use pm_kind, only: LKC => LK4
11729 : logical(LKC) , intent(out) :: rand
11730 : type(rngf_type) , intent(in) :: rng
11731 : end subroutine
11732 : #endif
11733 :
11734 : #if LK3_ENABLED
11735 : impure elemental module subroutine setUnifRandRNGFDD_D0_LK3(rng, rand)
11736 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11737 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_LK3
11738 : #endif
11739 : use pm_kind, only: LKC => LK3
11740 : logical(LKC) , intent(out) :: rand
11741 : type(rngf_type) , intent(in) :: rng
11742 : end subroutine
11743 : #endif
11744 :
11745 : #if LK2_ENABLED
11746 : impure elemental module subroutine setUnifRandRNGFDD_D0_LK2(rng, rand)
11747 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11748 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_LK2
11749 : #endif
11750 : use pm_kind, only: LKC => LK2
11751 : logical(LKC) , intent(out) :: rand
11752 : type(rngf_type) , intent(in) :: rng
11753 : end subroutine
11754 : #endif
11755 :
11756 : #if LK1_ENABLED
11757 : impure elemental module subroutine setUnifRandRNGFDD_D0_LK1(rng, rand)
11758 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11759 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_LK1
11760 : #endif
11761 : use pm_kind, only: LKC => LK1
11762 : logical(LKC) , intent(out) :: rand
11763 : type(rngf_type) , intent(in) :: rng
11764 : end subroutine
11765 : #endif
11766 :
11767 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11768 :
11769 : #if CK5_ENABLED
11770 : impure elemental module subroutine setUnifRandRNGFDD_D0_CK5(rng, rand)
11771 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11772 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_CK5
11773 : #endif
11774 : use pm_kind, only: CKC => CK5
11775 : complex(CKC) , intent(out) :: rand
11776 : type(rngf_type) , intent(in) :: rng
11777 : end subroutine
11778 : #endif
11779 :
11780 : #if CK4_ENABLED
11781 : impure elemental module subroutine setUnifRandRNGFDD_D0_CK4(rng, rand)
11782 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11783 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_CK4
11784 : #endif
11785 : use pm_kind, only: CKC => CK4
11786 : complex(CKC) , intent(out) :: rand
11787 : type(rngf_type) , intent(in) :: rng
11788 : end subroutine
11789 : #endif
11790 :
11791 : #if CK3_ENABLED
11792 : impure elemental module subroutine setUnifRandRNGFDD_D0_CK3(rng, rand)
11793 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11794 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_CK3
11795 : #endif
11796 : use pm_kind, only: CKC => CK3
11797 : complex(CKC) , intent(out) :: rand
11798 : type(rngf_type) , intent(in) :: rng
11799 : end subroutine
11800 : #endif
11801 :
11802 : #if CK2_ENABLED
11803 : impure elemental module subroutine setUnifRandRNGFDD_D0_CK2(rng, rand)
11804 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11805 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_CK2
11806 : #endif
11807 : use pm_kind, only: CKC => CK2
11808 : complex(CKC) , intent(out) :: rand
11809 : type(rngf_type) , intent(in) :: rng
11810 : end subroutine
11811 : #endif
11812 :
11813 : #if CK1_ENABLED
11814 : impure elemental module subroutine setUnifRandRNGFDD_D0_CK1(rng, rand)
11815 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11816 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_CK1
11817 : #endif
11818 : use pm_kind, only: CKC => CK1
11819 : complex(CKC) , intent(out) :: rand
11820 : type(rngf_type) , intent(in) :: rng
11821 : end subroutine
11822 : #endif
11823 :
11824 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11825 :
11826 : #if RK5_ENABLED
11827 : impure elemental module subroutine setUnifRandRNGFDD_D0_RK5(rng, rand)
11828 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11829 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_RK5
11830 : #endif
11831 : use pm_kind, only: RKC => RK5
11832 : real(RKC) , intent(out) :: rand
11833 : type(rngf_type) , intent(in) :: rng
11834 : end subroutine
11835 : #endif
11836 :
11837 : #if RK4_ENABLED
11838 : impure elemental module subroutine setUnifRandRNGFDD_D0_RK4(rng, rand)
11839 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11840 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_RK4
11841 : #endif
11842 : use pm_kind, only: RKC => RK4
11843 : real(RKC) , intent(out) :: rand
11844 : type(rngf_type) , intent(in) :: rng
11845 : end subroutine
11846 : #endif
11847 :
11848 : #if RK3_ENABLED
11849 : impure elemental module subroutine setUnifRandRNGFDD_D0_RK3(rng, rand)
11850 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11851 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_RK3
11852 : #endif
11853 : use pm_kind, only: RKC => RK3
11854 : real(RKC) , intent(out) :: rand
11855 : type(rngf_type) , intent(in) :: rng
11856 : end subroutine
11857 : #endif
11858 :
11859 : #if RK2_ENABLED
11860 : impure elemental module subroutine setUnifRandRNGFDD_D0_RK2(rng, rand)
11861 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11862 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_RK2
11863 : #endif
11864 : use pm_kind, only: RKC => RK2
11865 : real(RKC) , intent(out) :: rand
11866 : type(rngf_type) , intent(in) :: rng
11867 : end subroutine
11868 : #endif
11869 :
11870 : #if RK1_ENABLED
11871 : impure elemental module subroutine setUnifRandRNGFDD_D0_RK1(rng, rand)
11872 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11873 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFDD_D0_RK1
11874 : #endif
11875 : use pm_kind, only: RKC => RK1
11876 : real(RKC) , intent(out) :: rand
11877 : type(rngf_type) , intent(in) :: rng
11878 : end subroutine
11879 : #endif
11880 :
11881 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11882 :
11883 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11884 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11885 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11886 :
11887 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11888 :
11889 : #if SK5_ENABLED
11890 : impure elemental module subroutine setUnifRandRNGFLU_D0_SK5(rng, rand, lb, ub)
11891 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11892 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_SK5
11893 : #endif
11894 : use pm_kind, only: SKC => SK5
11895 : character(*,SKC) , intent(out) :: rand
11896 : character(*,SKC) , intent(in) :: lb, ub
11897 : type(rngf_type) , intent(in) :: rng
11898 : end subroutine
11899 : #endif
11900 :
11901 : #if SK4_ENABLED
11902 : impure elemental module subroutine setUnifRandRNGFLU_D0_SK4(rng, rand, lb, ub)
11903 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11904 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_SK4
11905 : #endif
11906 : use pm_kind, only: SKC => SK4
11907 : character(*,SKC) , intent(out) :: rand
11908 : character(*,SKC) , intent(in) :: lb, ub
11909 : type(rngf_type) , intent(in) :: rng
11910 : end subroutine
11911 : #endif
11912 :
11913 : #if SK3_ENABLED
11914 : impure elemental module subroutine setUnifRandRNGFLU_D0_SK3(rng, rand, lb, ub)
11915 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11916 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_SK3
11917 : #endif
11918 : use pm_kind, only: SKC => SK3
11919 : character(*,SKC) , intent(out) :: rand
11920 : character(*,SKC) , intent(in) :: lb, ub
11921 : type(rngf_type) , intent(in) :: rng
11922 : end subroutine
11923 : #endif
11924 :
11925 : #if SK2_ENABLED
11926 : impure elemental module subroutine setUnifRandRNGFLU_D0_SK2(rng, rand, lb, ub)
11927 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11928 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_SK2
11929 : #endif
11930 : use pm_kind, only: SKC => SK2
11931 : character(*,SKC) , intent(out) :: rand
11932 : character(*,SKC) , intent(in) :: lb, ub
11933 : type(rngf_type) , intent(in) :: rng
11934 : end subroutine
11935 : #endif
11936 :
11937 : #if SK1_ENABLED
11938 : impure elemental module subroutine setUnifRandRNGFLU_D0_SK1(rng, rand, lb, ub)
11939 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11940 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_SK1
11941 : #endif
11942 : use pm_kind, only: SKC => SK1
11943 : character(*,SKC) , intent(out) :: rand
11944 : character(*,SKC) , intent(in) :: lb, ub
11945 : type(rngf_type) , intent(in) :: rng
11946 : end subroutine
11947 : #endif
11948 :
11949 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11950 :
11951 : #if IK5_ENABLED
11952 : impure elemental module subroutine setUnifRandRNGFLU_D0_IK5(rng, rand, lb, ub)
11953 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11954 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_IK5
11955 : #endif
11956 : use pm_kind, only: IKC => IK5
11957 : integer(IKC) , intent(out) :: rand
11958 : integer(IKC) , intent(in) :: lb, ub
11959 : type(rngf_type) , intent(in) :: rng
11960 : end subroutine
11961 : #endif
11962 :
11963 : #if IK4_ENABLED
11964 : impure elemental module subroutine setUnifRandRNGFLU_D0_IK4(rng, rand, lb, ub)
11965 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11966 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_IK4
11967 : #endif
11968 : use pm_kind, only: IKC => IK4
11969 : integer(IKC) , intent(out) :: rand
11970 : integer(IKC) , intent(in) :: lb, ub
11971 : type(rngf_type) , intent(in) :: rng
11972 : end subroutine
11973 : #endif
11974 :
11975 : #if IK3_ENABLED
11976 : impure elemental module subroutine setUnifRandRNGFLU_D0_IK3(rng, rand, lb, ub)
11977 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11978 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_IK3
11979 : #endif
11980 : use pm_kind, only: IKC => IK3
11981 : integer(IKC) , intent(out) :: rand
11982 : integer(IKC) , intent(in) :: lb, ub
11983 : type(rngf_type) , intent(in) :: rng
11984 : end subroutine
11985 : #endif
11986 :
11987 : #if IK2_ENABLED
11988 : impure elemental module subroutine setUnifRandRNGFLU_D0_IK2(rng, rand, lb, ub)
11989 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
11990 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_IK2
11991 : #endif
11992 : use pm_kind, only: IKC => IK2
11993 : integer(IKC) , intent(out) :: rand
11994 : integer(IKC) , intent(in) :: lb, ub
11995 : type(rngf_type) , intent(in) :: rng
11996 : end subroutine
11997 : #endif
11998 :
11999 : #if IK1_ENABLED
12000 : impure elemental module subroutine setUnifRandRNGFLU_D0_IK1(rng, rand, lb, ub)
12001 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12002 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_IK1
12003 : #endif
12004 : use pm_kind, only: IKC => IK1
12005 : integer(IKC) , intent(out) :: rand
12006 : integer(IKC) , intent(in) :: lb, ub
12007 : type(rngf_type) , intent(in) :: rng
12008 : end subroutine
12009 : #endif
12010 :
12011 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12012 :
12013 : #if LK5_ENABLED
12014 : impure elemental module subroutine setUnifRandRNGFLU_D0_LK5(rng, rand, lb, ub)
12015 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12016 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_LK5
12017 : #endif
12018 : use pm_kind, only: LKC => LK5
12019 : logical(LKC) , intent(out) :: rand
12020 : logical(LKC) , intent(in) :: lb, ub
12021 : type(rngf_type) , intent(in) :: rng
12022 : end subroutine
12023 : #endif
12024 :
12025 : #if LK4_ENABLED
12026 : impure elemental module subroutine setUnifRandRNGFLU_D0_LK4(rng, rand, lb, ub)
12027 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12028 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_LK4
12029 : #endif
12030 : use pm_kind, only: LKC => LK4
12031 : logical(LKC) , intent(out) :: rand
12032 : logical(LKC) , intent(in) :: lb, ub
12033 : type(rngf_type) , intent(in) :: rng
12034 : end subroutine
12035 : #endif
12036 :
12037 : #if LK3_ENABLED
12038 : impure elemental module subroutine setUnifRandRNGFLU_D0_LK3(rng, rand, lb, ub)
12039 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12040 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_LK3
12041 : #endif
12042 : use pm_kind, only: LKC => LK3
12043 : logical(LKC) , intent(out) :: rand
12044 : logical(LKC) , intent(in) :: lb, ub
12045 : type(rngf_type) , intent(in) :: rng
12046 : end subroutine
12047 : #endif
12048 :
12049 : #if LK2_ENABLED
12050 : impure elemental module subroutine setUnifRandRNGFLU_D0_LK2(rng, rand, lb, ub)
12051 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12052 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_LK2
12053 : #endif
12054 : use pm_kind, only: LKC => LK2
12055 : logical(LKC) , intent(out) :: rand
12056 : logical(LKC) , intent(in) :: lb, ub
12057 : type(rngf_type) , intent(in) :: rng
12058 : end subroutine
12059 : #endif
12060 :
12061 : #if LK1_ENABLED
12062 : impure elemental module subroutine setUnifRandRNGFLU_D0_LK1(rng, rand, lb, ub)
12063 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12064 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_LK1
12065 : #endif
12066 : use pm_kind, only: LKC => LK1
12067 : logical(LKC) , intent(out) :: rand
12068 : logical(LKC) , intent(in) :: lb, ub
12069 : type(rngf_type) , intent(in) :: rng
12070 : end subroutine
12071 : #endif
12072 :
12073 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12074 :
12075 : #if CK5_ENABLED
12076 : impure elemental module subroutine setUnifRandRNGFLU_D0_CK5(rng, rand, lb, ub)
12077 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12078 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_CK5
12079 : #endif
12080 : use pm_kind, only: CKC => CK5
12081 : complex(CKC) , intent(out) :: rand
12082 : complex(CKC) , intent(in) :: lb, ub
12083 : type(rngf_type) , intent(in) :: rng
12084 : end subroutine
12085 : #endif
12086 :
12087 : #if CK4_ENABLED
12088 : impure elemental module subroutine setUnifRandRNGFLU_D0_CK4(rng, rand, lb, ub)
12089 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12090 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_CK4
12091 : #endif
12092 : use pm_kind, only: CKC => CK4
12093 : complex(CKC) , intent(out) :: rand
12094 : complex(CKC) , intent(in) :: lb, ub
12095 : type(rngf_type) , intent(in) :: rng
12096 : end subroutine
12097 : #endif
12098 :
12099 : #if CK3_ENABLED
12100 : impure elemental module subroutine setUnifRandRNGFLU_D0_CK3(rng, rand, lb, ub)
12101 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12102 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_CK3
12103 : #endif
12104 : use pm_kind, only: CKC => CK3
12105 : complex(CKC) , intent(out) :: rand
12106 : complex(CKC) , intent(in) :: lb, ub
12107 : type(rngf_type) , intent(in) :: rng
12108 : end subroutine
12109 : #endif
12110 :
12111 : #if CK2_ENABLED
12112 : impure elemental module subroutine setUnifRandRNGFLU_D0_CK2(rng, rand, lb, ub)
12113 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12114 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_CK2
12115 : #endif
12116 : use pm_kind, only: CKC => CK2
12117 : complex(CKC) , intent(out) :: rand
12118 : complex(CKC) , intent(in) :: lb, ub
12119 : type(rngf_type) , intent(in) :: rng
12120 : end subroutine
12121 : #endif
12122 :
12123 : #if CK1_ENABLED
12124 : impure elemental module subroutine setUnifRandRNGFLU_D0_CK1(rng, rand, lb, ub)
12125 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12126 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_CK1
12127 : #endif
12128 : use pm_kind, only: CKC => CK1
12129 : complex(CKC) , intent(out) :: rand
12130 : complex(CKC) , intent(in) :: lb, ub
12131 : type(rngf_type) , intent(in) :: rng
12132 : end subroutine
12133 : #endif
12134 :
12135 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12136 :
12137 : #if RK5_ENABLED
12138 : impure elemental module subroutine setUnifRandRNGFLU_D0_RK5(rng, rand, lb, ub)
12139 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12140 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_RK5
12141 : #endif
12142 : use pm_kind, only: RKC => RK5
12143 : real(RKC) , intent(out) :: rand
12144 : real(RKC) , intent(in) :: lb, ub
12145 : type(rngf_type) , intent(in) :: rng
12146 : end subroutine
12147 : #endif
12148 :
12149 : #if RK4_ENABLED
12150 : impure elemental module subroutine setUnifRandRNGFLU_D0_RK4(rng, rand, lb, ub)
12151 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12152 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_RK4
12153 : #endif
12154 : use pm_kind, only: RKC => RK4
12155 : real(RKC) , intent(out) :: rand
12156 : real(RKC) , intent(in) :: lb, ub
12157 : type(rngf_type) , intent(in) :: rng
12158 : end subroutine
12159 : #endif
12160 :
12161 : #if RK3_ENABLED
12162 : impure elemental module subroutine setUnifRandRNGFLU_D0_RK3(rng, rand, lb, ub)
12163 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12164 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_RK3
12165 : #endif
12166 : use pm_kind, only: RKC => RK3
12167 : real(RKC) , intent(out) :: rand
12168 : real(RKC) , intent(in) :: lb, ub
12169 : type(rngf_type) , intent(in) :: rng
12170 : end subroutine
12171 : #endif
12172 :
12173 : #if RK2_ENABLED
12174 : impure elemental module subroutine setUnifRandRNGFLU_D0_RK2(rng, rand, lb, ub)
12175 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12176 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_RK2
12177 : #endif
12178 : use pm_kind, only: RKC => RK2
12179 : real(RKC) , intent(out) :: rand
12180 : real(RKC) , intent(in) :: lb, ub
12181 : type(rngf_type) , intent(in) :: rng
12182 : end subroutine
12183 : #endif
12184 :
12185 : #if RK1_ENABLED
12186 : impure elemental module subroutine setUnifRandRNGFLU_D0_RK1(rng, rand, lb, ub)
12187 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12188 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGFLU_D0_RK1
12189 : #endif
12190 : use pm_kind, only: RKC => RK1
12191 : real(RKC) , intent(out) :: rand
12192 : real(RKC) , intent(in) :: lb, ub
12193 : type(rngf_type) , intent(in) :: rng
12194 : end subroutine
12195 : #endif
12196 :
12197 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12198 :
12199 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12200 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12201 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12202 :
12203 : end interface
12204 :
12205 : ! RNGS
12206 :
12207 : interface setUnifRand
12208 :
12209 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12210 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12211 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12212 :
12213 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12214 :
12215 : #if SK5_ENABLED
12216 : PURE elemental module subroutine setUnifRandRNGSDD_D0_SK5(rng, rand)
12217 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12218 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_SK5
12219 : #endif
12220 : use pm_kind, only: SKC => SK5
12221 : character(*,SKC) , intent(out) :: rand
12222 : type(splitmix64_type) , intent(inout) :: rng
12223 : end subroutine
12224 : #endif
12225 :
12226 : #if SK4_ENABLED
12227 : PURE elemental module subroutine setUnifRandRNGSDD_D0_SK4(rng, rand)
12228 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12229 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_SK4
12230 : #endif
12231 : use pm_kind, only: SKC => SK4
12232 : character(*,SKC) , intent(out) :: rand
12233 : type(splitmix64_type) , intent(inout) :: rng
12234 : end subroutine
12235 : #endif
12236 :
12237 : #if SK3_ENABLED
12238 : PURE elemental module subroutine setUnifRandRNGSDD_D0_SK3(rng, rand)
12239 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12240 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_SK3
12241 : #endif
12242 : use pm_kind, only: SKC => SK3
12243 : character(*,SKC) , intent(out) :: rand
12244 : type(splitmix64_type) , intent(inout) :: rng
12245 : end subroutine
12246 : #endif
12247 :
12248 : #if SK2_ENABLED
12249 : PURE elemental module subroutine setUnifRandRNGSDD_D0_SK2(rng, rand)
12250 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12251 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_SK2
12252 : #endif
12253 : use pm_kind, only: SKC => SK2
12254 : character(*,SKC) , intent(out) :: rand
12255 : type(splitmix64_type) , intent(inout) :: rng
12256 : end subroutine
12257 : #endif
12258 :
12259 : #if SK1_ENABLED
12260 : PURE elemental module subroutine setUnifRandRNGSDD_D0_SK1(rng, rand)
12261 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12262 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_SK1
12263 : #endif
12264 : use pm_kind, only: SKC => SK1
12265 : character(*,SKC) , intent(out) :: rand
12266 : type(splitmix64_type) , intent(inout) :: rng
12267 : end subroutine
12268 : #endif
12269 :
12270 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12271 :
12272 : #if IK5_ENABLED
12273 : PURE elemental module subroutine setUnifRandRNGSDD_D0_IK5(rng, rand)
12274 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12275 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_IK5
12276 : #endif
12277 : use pm_kind, only: IKC => IK5
12278 : integer(IKC) , intent(out) :: rand
12279 : type(splitmix64_type) , intent(inout) :: rng
12280 : end subroutine
12281 : #endif
12282 :
12283 : #if IK4_ENABLED
12284 : PURE elemental module subroutine setUnifRandRNGSDD_D0_IK4(rng, rand)
12285 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12286 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_IK4
12287 : #endif
12288 : use pm_kind, only: IKC => IK4
12289 : integer(IKC) , intent(out) :: rand
12290 : type(splitmix64_type) , intent(inout) :: rng
12291 : end subroutine
12292 : #endif
12293 :
12294 : #if IK3_ENABLED
12295 : PURE elemental module subroutine setUnifRandRNGSDD_D0_IK3(rng, rand)
12296 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12297 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_IK3
12298 : #endif
12299 : use pm_kind, only: IKC => IK3
12300 : integer(IKC) , intent(out) :: rand
12301 : type(splitmix64_type) , intent(inout) :: rng
12302 : end subroutine
12303 : #endif
12304 :
12305 : #if IK2_ENABLED
12306 : PURE elemental module subroutine setUnifRandRNGSDD_D0_IK2(rng, rand)
12307 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12308 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_IK2
12309 : #endif
12310 : use pm_kind, only: IKC => IK2
12311 : integer(IKC) , intent(out) :: rand
12312 : type(splitmix64_type) , intent(inout) :: rng
12313 : end subroutine
12314 : #endif
12315 :
12316 : #if IK1_ENABLED
12317 : PURE elemental module subroutine setUnifRandRNGSDD_D0_IK1(rng, rand)
12318 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12319 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_IK1
12320 : #endif
12321 : use pm_kind, only: IKC => IK1
12322 : integer(IKC) , intent(out) :: rand
12323 : type(splitmix64_type) , intent(inout) :: rng
12324 : end subroutine
12325 : #endif
12326 :
12327 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12328 :
12329 : #if LK5_ENABLED
12330 : PURE elemental module subroutine setUnifRandRNGSDD_D0_LK5(rng, rand)
12331 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12332 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_LK5
12333 : #endif
12334 : use pm_kind, only: LKC => LK5
12335 : logical(LKC) , intent(out) :: rand
12336 : type(splitmix64_type) , intent(inout) :: rng
12337 : end subroutine
12338 : #endif
12339 :
12340 : #if LK4_ENABLED
12341 : PURE elemental module subroutine setUnifRandRNGSDD_D0_LK4(rng, rand)
12342 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12343 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_LK4
12344 : #endif
12345 : use pm_kind, only: LKC => LK4
12346 : logical(LKC) , intent(out) :: rand
12347 : type(splitmix64_type) , intent(inout) :: rng
12348 : end subroutine
12349 : #endif
12350 :
12351 : #if LK3_ENABLED
12352 : PURE elemental module subroutine setUnifRandRNGSDD_D0_LK3(rng, rand)
12353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12354 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_LK3
12355 : #endif
12356 : use pm_kind, only: LKC => LK3
12357 : logical(LKC) , intent(out) :: rand
12358 : type(splitmix64_type) , intent(inout) :: rng
12359 : end subroutine
12360 : #endif
12361 :
12362 : #if LK2_ENABLED
12363 : PURE elemental module subroutine setUnifRandRNGSDD_D0_LK2(rng, rand)
12364 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12365 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_LK2
12366 : #endif
12367 : use pm_kind, only: LKC => LK2
12368 : logical(LKC) , intent(out) :: rand
12369 : type(splitmix64_type) , intent(inout) :: rng
12370 : end subroutine
12371 : #endif
12372 :
12373 : #if LK1_ENABLED
12374 : PURE elemental module subroutine setUnifRandRNGSDD_D0_LK1(rng, rand)
12375 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12376 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_LK1
12377 : #endif
12378 : use pm_kind, only: LKC => LK1
12379 : logical(LKC) , intent(out) :: rand
12380 : type(splitmix64_type) , intent(inout) :: rng
12381 : end subroutine
12382 : #endif
12383 :
12384 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12385 :
12386 : #if CK5_ENABLED
12387 : PURE elemental module subroutine setUnifRandRNGSDD_D0_CK5(rng, rand)
12388 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12389 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_CK5
12390 : #endif
12391 : use pm_kind, only: CKC => CK5
12392 : complex(CKC) , intent(out) :: rand
12393 : type(splitmix64_type) , intent(inout) :: rng
12394 : end subroutine
12395 : #endif
12396 :
12397 : #if CK4_ENABLED
12398 : PURE elemental module subroutine setUnifRandRNGSDD_D0_CK4(rng, rand)
12399 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12400 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_CK4
12401 : #endif
12402 : use pm_kind, only: CKC => CK4
12403 : complex(CKC) , intent(out) :: rand
12404 : type(splitmix64_type) , intent(inout) :: rng
12405 : end subroutine
12406 : #endif
12407 :
12408 : #if CK3_ENABLED
12409 : PURE elemental module subroutine setUnifRandRNGSDD_D0_CK3(rng, rand)
12410 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12411 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_CK3
12412 : #endif
12413 : use pm_kind, only: CKC => CK3
12414 : complex(CKC) , intent(out) :: rand
12415 : type(splitmix64_type) , intent(inout) :: rng
12416 : end subroutine
12417 : #endif
12418 :
12419 : #if CK2_ENABLED
12420 : PURE elemental module subroutine setUnifRandRNGSDD_D0_CK2(rng, rand)
12421 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12422 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_CK2
12423 : #endif
12424 : use pm_kind, only: CKC => CK2
12425 : complex(CKC) , intent(out) :: rand
12426 : type(splitmix64_type) , intent(inout) :: rng
12427 : end subroutine
12428 : #endif
12429 :
12430 : #if CK1_ENABLED
12431 : PURE elemental module subroutine setUnifRandRNGSDD_D0_CK1(rng, rand)
12432 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12433 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_CK1
12434 : #endif
12435 : use pm_kind, only: CKC => CK1
12436 : complex(CKC) , intent(out) :: rand
12437 : type(splitmix64_type) , intent(inout) :: rng
12438 : end subroutine
12439 : #endif
12440 :
12441 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12442 :
12443 : #if RK5_ENABLED
12444 : PURE elemental module subroutine setUnifRandRNGSDD_D0_RK5(rng, rand)
12445 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12446 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_RK5
12447 : #endif
12448 : use pm_kind, only: RKC => RK5
12449 : real(RKC) , intent(out) :: rand
12450 : type(splitmix64_type) , intent(inout) :: rng
12451 : end subroutine
12452 : #endif
12453 :
12454 : #if RK4_ENABLED
12455 : PURE elemental module subroutine setUnifRandRNGSDD_D0_RK4(rng, rand)
12456 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12457 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_RK4
12458 : #endif
12459 : use pm_kind, only: RKC => RK4
12460 : real(RKC) , intent(out) :: rand
12461 : type(splitmix64_type) , intent(inout) :: rng
12462 : end subroutine
12463 : #endif
12464 :
12465 : #if RK3_ENABLED
12466 : PURE elemental module subroutine setUnifRandRNGSDD_D0_RK3(rng, rand)
12467 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12468 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_RK3
12469 : #endif
12470 : use pm_kind, only: RKC => RK3
12471 : real(RKC) , intent(out) :: rand
12472 : type(splitmix64_type) , intent(inout) :: rng
12473 : end subroutine
12474 : #endif
12475 :
12476 : #if RK2_ENABLED
12477 : PURE elemental module subroutine setUnifRandRNGSDD_D0_RK2(rng, rand)
12478 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12479 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_RK2
12480 : #endif
12481 : use pm_kind, only: RKC => RK2
12482 : real(RKC) , intent(out) :: rand
12483 : type(splitmix64_type) , intent(inout) :: rng
12484 : end subroutine
12485 : #endif
12486 :
12487 : #if RK1_ENABLED
12488 : PURE elemental module subroutine setUnifRandRNGSDD_D0_RK1(rng, rand)
12489 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12490 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D0_RK1
12491 : #endif
12492 : use pm_kind, only: RKC => RK1
12493 : real(RKC) , intent(out) :: rand
12494 : type(splitmix64_type) , intent(inout) :: rng
12495 : end subroutine
12496 : #endif
12497 :
12498 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12499 :
12500 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12501 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12502 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12503 :
12504 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12505 :
12506 : #if SK5_ENABLED
12507 : PURE elemental module subroutine setUnifRandRNGSLU_D0_SK5(rng, rand, lb, ub)
12508 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12509 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_SK5
12510 : #endif
12511 : use pm_kind, only: SKC => SK5
12512 : character(*,SKC) , intent(out) :: rand
12513 : character(*,SKC) , intent(in) :: lb, ub
12514 : type(splitmix64_type) , intent(inout) :: rng
12515 : end subroutine
12516 : #endif
12517 :
12518 : #if SK4_ENABLED
12519 : PURE elemental module subroutine setUnifRandRNGSLU_D0_SK4(rng, rand, lb, ub)
12520 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12521 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_SK4
12522 : #endif
12523 : use pm_kind, only: SKC => SK4
12524 : character(*,SKC) , intent(out) :: rand
12525 : character(*,SKC) , intent(in) :: lb, ub
12526 : type(splitmix64_type) , intent(inout) :: rng
12527 : end subroutine
12528 : #endif
12529 :
12530 : #if SK3_ENABLED
12531 : PURE elemental module subroutine setUnifRandRNGSLU_D0_SK3(rng, rand, lb, ub)
12532 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12533 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_SK3
12534 : #endif
12535 : use pm_kind, only: SKC => SK3
12536 : character(*,SKC) , intent(out) :: rand
12537 : character(*,SKC) , intent(in) :: lb, ub
12538 : type(splitmix64_type) , intent(inout) :: rng
12539 : end subroutine
12540 : #endif
12541 :
12542 : #if SK2_ENABLED
12543 : PURE elemental module subroutine setUnifRandRNGSLU_D0_SK2(rng, rand, lb, ub)
12544 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12545 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_SK2
12546 : #endif
12547 : use pm_kind, only: SKC => SK2
12548 : character(*,SKC) , intent(out) :: rand
12549 : character(*,SKC) , intent(in) :: lb, ub
12550 : type(splitmix64_type) , intent(inout) :: rng
12551 : end subroutine
12552 : #endif
12553 :
12554 : #if SK1_ENABLED
12555 : PURE elemental module subroutine setUnifRandRNGSLU_D0_SK1(rng, rand, lb, ub)
12556 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12557 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_SK1
12558 : #endif
12559 : use pm_kind, only: SKC => SK1
12560 : character(*,SKC) , intent(out) :: rand
12561 : character(*,SKC) , intent(in) :: lb, ub
12562 : type(splitmix64_type) , intent(inout) :: rng
12563 : end subroutine
12564 : #endif
12565 :
12566 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12567 :
12568 : #if IK5_ENABLED
12569 : PURE elemental module subroutine setUnifRandRNGSLU_D0_IK5(rng, rand, lb, ub)
12570 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12571 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_IK5
12572 : #endif
12573 : use pm_kind, only: IKC => IK5
12574 : integer(IKC) , intent(out) :: rand
12575 : integer(IKC) , intent(in) :: lb, ub
12576 : type(splitmix64_type) , intent(inout) :: rng
12577 : end subroutine
12578 : #endif
12579 :
12580 : #if IK4_ENABLED
12581 : PURE elemental module subroutine setUnifRandRNGSLU_D0_IK4(rng, rand, lb, ub)
12582 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12583 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_IK4
12584 : #endif
12585 : use pm_kind, only: IKC => IK4
12586 : integer(IKC) , intent(out) :: rand
12587 : integer(IKC) , intent(in) :: lb, ub
12588 : type(splitmix64_type) , intent(inout) :: rng
12589 : end subroutine
12590 : #endif
12591 :
12592 : #if IK3_ENABLED
12593 : PURE elemental module subroutine setUnifRandRNGSLU_D0_IK3(rng, rand, lb, ub)
12594 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12595 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_IK3
12596 : #endif
12597 : use pm_kind, only: IKC => IK3
12598 : integer(IKC) , intent(out) :: rand
12599 : integer(IKC) , intent(in) :: lb, ub
12600 : type(splitmix64_type) , intent(inout) :: rng
12601 : end subroutine
12602 : #endif
12603 :
12604 : #if IK2_ENABLED
12605 : PURE elemental module subroutine setUnifRandRNGSLU_D0_IK2(rng, rand, lb, ub)
12606 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12607 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_IK2
12608 : #endif
12609 : use pm_kind, only: IKC => IK2
12610 : integer(IKC) , intent(out) :: rand
12611 : integer(IKC) , intent(in) :: lb, ub
12612 : type(splitmix64_type) , intent(inout) :: rng
12613 : end subroutine
12614 : #endif
12615 :
12616 : #if IK1_ENABLED
12617 : PURE elemental module subroutine setUnifRandRNGSLU_D0_IK1(rng, rand, lb, ub)
12618 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12619 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_IK1
12620 : #endif
12621 : use pm_kind, only: IKC => IK1
12622 : integer(IKC) , intent(out) :: rand
12623 : integer(IKC) , intent(in) :: lb, ub
12624 : type(splitmix64_type) , intent(inout) :: rng
12625 : end subroutine
12626 : #endif
12627 :
12628 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12629 :
12630 : #if LK5_ENABLED
12631 : PURE elemental module subroutine setUnifRandRNGSLU_D0_LK5(rng, rand, lb, ub)
12632 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12633 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_LK5
12634 : #endif
12635 : use pm_kind, only: LKC => LK5
12636 : logical(LKC) , intent(out) :: rand
12637 : logical(LKC) , intent(in) :: lb, ub
12638 : type(splitmix64_type) , intent(inout) :: rng
12639 : end subroutine
12640 : #endif
12641 :
12642 : #if LK4_ENABLED
12643 : PURE elemental module subroutine setUnifRandRNGSLU_D0_LK4(rng, rand, lb, ub)
12644 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12645 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_LK4
12646 : #endif
12647 : use pm_kind, only: LKC => LK4
12648 : logical(LKC) , intent(out) :: rand
12649 : logical(LKC) , intent(in) :: lb, ub
12650 : type(splitmix64_type) , intent(inout) :: rng
12651 : end subroutine
12652 : #endif
12653 :
12654 : #if LK3_ENABLED
12655 : PURE elemental module subroutine setUnifRandRNGSLU_D0_LK3(rng, rand, lb, ub)
12656 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12657 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_LK3
12658 : #endif
12659 : use pm_kind, only: LKC => LK3
12660 : logical(LKC) , intent(out) :: rand
12661 : logical(LKC) , intent(in) :: lb, ub
12662 : type(splitmix64_type) , intent(inout) :: rng
12663 : end subroutine
12664 : #endif
12665 :
12666 : #if LK2_ENABLED
12667 : PURE elemental module subroutine setUnifRandRNGSLU_D0_LK2(rng, rand, lb, ub)
12668 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12669 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_LK2
12670 : #endif
12671 : use pm_kind, only: LKC => LK2
12672 : logical(LKC) , intent(out) :: rand
12673 : logical(LKC) , intent(in) :: lb, ub
12674 : type(splitmix64_type) , intent(inout) :: rng
12675 : end subroutine
12676 : #endif
12677 :
12678 : #if LK1_ENABLED
12679 : PURE elemental module subroutine setUnifRandRNGSLU_D0_LK1(rng, rand, lb, ub)
12680 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12681 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_LK1
12682 : #endif
12683 : use pm_kind, only: LKC => LK1
12684 : logical(LKC) , intent(out) :: rand
12685 : logical(LKC) , intent(in) :: lb, ub
12686 : type(splitmix64_type) , intent(inout) :: rng
12687 : end subroutine
12688 : #endif
12689 :
12690 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12691 :
12692 : #if CK5_ENABLED
12693 : PURE elemental module subroutine setUnifRandRNGSLU_D0_CK5(rng, rand, lb, ub)
12694 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12695 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_CK5
12696 : #endif
12697 : use pm_kind, only: CKC => CK5
12698 : complex(CKC) , intent(out) :: rand
12699 : complex(CKC) , intent(in) :: lb, ub
12700 : type(splitmix64_type) , intent(inout) :: rng
12701 : end subroutine
12702 : #endif
12703 :
12704 : #if CK4_ENABLED
12705 : PURE elemental module subroutine setUnifRandRNGSLU_D0_CK4(rng, rand, lb, ub)
12706 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12707 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_CK4
12708 : #endif
12709 : use pm_kind, only: CKC => CK4
12710 : complex(CKC) , intent(out) :: rand
12711 : complex(CKC) , intent(in) :: lb, ub
12712 : type(splitmix64_type) , intent(inout) :: rng
12713 : end subroutine
12714 : #endif
12715 :
12716 : #if CK3_ENABLED
12717 : PURE elemental module subroutine setUnifRandRNGSLU_D0_CK3(rng, rand, lb, ub)
12718 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12719 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_CK3
12720 : #endif
12721 : use pm_kind, only: CKC => CK3
12722 : complex(CKC) , intent(out) :: rand
12723 : complex(CKC) , intent(in) :: lb, ub
12724 : type(splitmix64_type) , intent(inout) :: rng
12725 : end subroutine
12726 : #endif
12727 :
12728 : #if CK2_ENABLED
12729 : PURE elemental module subroutine setUnifRandRNGSLU_D0_CK2(rng, rand, lb, ub)
12730 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12731 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_CK2
12732 : #endif
12733 : use pm_kind, only: CKC => CK2
12734 : complex(CKC) , intent(out) :: rand
12735 : complex(CKC) , intent(in) :: lb, ub
12736 : type(splitmix64_type) , intent(inout) :: rng
12737 : end subroutine
12738 : #endif
12739 :
12740 : #if CK1_ENABLED
12741 : PURE elemental module subroutine setUnifRandRNGSLU_D0_CK1(rng, rand, lb, ub)
12742 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12743 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_CK1
12744 : #endif
12745 : use pm_kind, only: CKC => CK1
12746 : complex(CKC) , intent(out) :: rand
12747 : complex(CKC) , intent(in) :: lb, ub
12748 : type(splitmix64_type) , intent(inout) :: rng
12749 : end subroutine
12750 : #endif
12751 :
12752 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12753 :
12754 : #if RK5_ENABLED
12755 : PURE elemental module subroutine setUnifRandRNGSLU_D0_RK5(rng, rand, lb, ub)
12756 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12757 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_RK5
12758 : #endif
12759 : use pm_kind, only: RKC => RK5
12760 : real(RKC) , intent(out) :: rand
12761 : real(RKC) , intent(in) :: lb, ub
12762 : type(splitmix64_type) , intent(inout) :: rng
12763 : end subroutine
12764 : #endif
12765 :
12766 : #if RK4_ENABLED
12767 : PURE elemental module subroutine setUnifRandRNGSLU_D0_RK4(rng, rand, lb, ub)
12768 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12769 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_RK4
12770 : #endif
12771 : use pm_kind, only: RKC => RK4
12772 : real(RKC) , intent(out) :: rand
12773 : real(RKC) , intent(in) :: lb, ub
12774 : type(splitmix64_type) , intent(inout) :: rng
12775 : end subroutine
12776 : #endif
12777 :
12778 : #if RK3_ENABLED
12779 : PURE elemental module subroutine setUnifRandRNGSLU_D0_RK3(rng, rand, lb, ub)
12780 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12781 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_RK3
12782 : #endif
12783 : use pm_kind, only: RKC => RK3
12784 : real(RKC) , intent(out) :: rand
12785 : real(RKC) , intent(in) :: lb, ub
12786 : type(splitmix64_type) , intent(inout) :: rng
12787 : end subroutine
12788 : #endif
12789 :
12790 : #if RK2_ENABLED
12791 : PURE elemental module subroutine setUnifRandRNGSLU_D0_RK2(rng, rand, lb, ub)
12792 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12793 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_RK2
12794 : #endif
12795 : use pm_kind, only: RKC => RK2
12796 : real(RKC) , intent(out) :: rand
12797 : real(RKC) , intent(in) :: lb, ub
12798 : type(splitmix64_type) , intent(inout) :: rng
12799 : end subroutine
12800 : #endif
12801 :
12802 : #if RK1_ENABLED
12803 : PURE elemental module subroutine setUnifRandRNGSLU_D0_RK1(rng, rand, lb, ub)
12804 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12805 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D0_RK1
12806 : #endif
12807 : use pm_kind, only: RKC => RK1
12808 : real(RKC) , intent(out) :: rand
12809 : real(RKC) , intent(in) :: lb, ub
12810 : type(splitmix64_type) , intent(inout) :: rng
12811 : end subroutine
12812 : #endif
12813 :
12814 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12815 :
12816 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12817 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12818 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12819 :
12820 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12821 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12822 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12823 :
12824 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12825 :
12826 : #if SK5_ENABLED
12827 : PURE module subroutine setUnifRandRNGSDD_D1_SK5(rng, rand)
12828 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12829 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_SK5
12830 : #endif
12831 : use pm_kind, only: SKC => SK5
12832 : character(*,SKC) , intent(out) :: rand(:)
12833 : type(splitmix64_type) , intent(inout) :: rng
12834 : end subroutine
12835 : #endif
12836 :
12837 : #if SK4_ENABLED
12838 : PURE module subroutine setUnifRandRNGSDD_D1_SK4(rng, rand)
12839 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12840 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_SK4
12841 : #endif
12842 : use pm_kind, only: SKC => SK4
12843 : character(*,SKC) , intent(out) :: rand(:)
12844 : type(splitmix64_type) , intent(inout) :: rng
12845 : end subroutine
12846 : #endif
12847 :
12848 : #if SK3_ENABLED
12849 : PURE module subroutine setUnifRandRNGSDD_D1_SK3(rng, rand)
12850 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12851 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_SK3
12852 : #endif
12853 : use pm_kind, only: SKC => SK3
12854 : character(*,SKC) , intent(out) :: rand(:)
12855 : type(splitmix64_type) , intent(inout) :: rng
12856 : end subroutine
12857 : #endif
12858 :
12859 : #if SK2_ENABLED
12860 : PURE module subroutine setUnifRandRNGSDD_D1_SK2(rng, rand)
12861 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12862 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_SK2
12863 : #endif
12864 : use pm_kind, only: SKC => SK2
12865 : character(*,SKC) , intent(out) :: rand(:)
12866 : type(splitmix64_type) , intent(inout) :: rng
12867 : end subroutine
12868 : #endif
12869 :
12870 : #if SK1_ENABLED
12871 : PURE module subroutine setUnifRandRNGSDD_D1_SK1(rng, rand)
12872 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12873 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_SK1
12874 : #endif
12875 : use pm_kind, only: SKC => SK1
12876 : character(*,SKC) , intent(out) :: rand(:)
12877 : type(splitmix64_type) , intent(inout) :: rng
12878 : end subroutine
12879 : #endif
12880 :
12881 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12882 :
12883 : #if IK5_ENABLED
12884 : PURE module subroutine setUnifRandRNGSDD_D1_IK5(rng, rand)
12885 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12886 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_IK5
12887 : #endif
12888 : use pm_kind, only: IKC => IK5
12889 : integer(IKC) , intent(out) :: rand(:)
12890 : type(splitmix64_type) , intent(inout) :: rng
12891 : end subroutine
12892 : #endif
12893 :
12894 : #if IK4_ENABLED
12895 : PURE module subroutine setUnifRandRNGSDD_D1_IK4(rng, rand)
12896 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12897 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_IK4
12898 : #endif
12899 : use pm_kind, only: IKC => IK4
12900 : integer(IKC) , intent(out) :: rand(:)
12901 : type(splitmix64_type) , intent(inout) :: rng
12902 : end subroutine
12903 : #endif
12904 :
12905 : #if IK3_ENABLED
12906 : PURE module subroutine setUnifRandRNGSDD_D1_IK3(rng, rand)
12907 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12908 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_IK3
12909 : #endif
12910 : use pm_kind, only: IKC => IK3
12911 : integer(IKC) , intent(out) :: rand(:)
12912 : type(splitmix64_type) , intent(inout) :: rng
12913 : end subroutine
12914 : #endif
12915 :
12916 : #if IK2_ENABLED
12917 : PURE module subroutine setUnifRandRNGSDD_D1_IK2(rng, rand)
12918 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12919 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_IK2
12920 : #endif
12921 : use pm_kind, only: IKC => IK2
12922 : integer(IKC) , intent(out) :: rand(:)
12923 : type(splitmix64_type) , intent(inout) :: rng
12924 : end subroutine
12925 : #endif
12926 :
12927 : #if IK1_ENABLED
12928 : PURE module subroutine setUnifRandRNGSDD_D1_IK1(rng, rand)
12929 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12930 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_IK1
12931 : #endif
12932 : use pm_kind, only: IKC => IK1
12933 : integer(IKC) , intent(out) :: rand(:)
12934 : type(splitmix64_type) , intent(inout) :: rng
12935 : end subroutine
12936 : #endif
12937 :
12938 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12939 :
12940 : #if LK5_ENABLED
12941 : PURE module subroutine setUnifRandRNGSDD_D1_LK5(rng, rand)
12942 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12943 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_LK5
12944 : #endif
12945 : use pm_kind, only: LKC => LK5
12946 : logical(LKC) , intent(out) :: rand(:)
12947 : type(splitmix64_type) , intent(inout) :: rng
12948 : end subroutine
12949 : #endif
12950 :
12951 : #if LK4_ENABLED
12952 : PURE module subroutine setUnifRandRNGSDD_D1_LK4(rng, rand)
12953 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12954 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_LK4
12955 : #endif
12956 : use pm_kind, only: LKC => LK4
12957 : logical(LKC) , intent(out) :: rand(:)
12958 : type(splitmix64_type) , intent(inout) :: rng
12959 : end subroutine
12960 : #endif
12961 :
12962 : #if LK3_ENABLED
12963 : PURE module subroutine setUnifRandRNGSDD_D1_LK3(rng, rand)
12964 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12965 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_LK3
12966 : #endif
12967 : use pm_kind, only: LKC => LK3
12968 : logical(LKC) , intent(out) :: rand(:)
12969 : type(splitmix64_type) , intent(inout) :: rng
12970 : end subroutine
12971 : #endif
12972 :
12973 : #if LK2_ENABLED
12974 : PURE module subroutine setUnifRandRNGSDD_D1_LK2(rng, rand)
12975 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12976 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_LK2
12977 : #endif
12978 : use pm_kind, only: LKC => LK2
12979 : logical(LKC) , intent(out) :: rand(:)
12980 : type(splitmix64_type) , intent(inout) :: rng
12981 : end subroutine
12982 : #endif
12983 :
12984 : #if LK1_ENABLED
12985 : PURE module subroutine setUnifRandRNGSDD_D1_LK1(rng, rand)
12986 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
12987 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_LK1
12988 : #endif
12989 : use pm_kind, only: LKC => LK1
12990 : logical(LKC) , intent(out) :: rand(:)
12991 : type(splitmix64_type) , intent(inout) :: rng
12992 : end subroutine
12993 : #endif
12994 :
12995 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12996 :
12997 : #if CK5_ENABLED
12998 : PURE module subroutine setUnifRandRNGSDD_D1_CK5(rng, rand)
12999 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13000 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_CK5
13001 : #endif
13002 : use pm_kind, only: CKC => CK5
13003 : complex(CKC) , intent(out) :: rand(:)
13004 : type(splitmix64_type) , intent(inout) :: rng
13005 : end subroutine
13006 : #endif
13007 :
13008 : #if CK4_ENABLED
13009 : PURE module subroutine setUnifRandRNGSDD_D1_CK4(rng, rand)
13010 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13011 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_CK4
13012 : #endif
13013 : use pm_kind, only: CKC => CK4
13014 : complex(CKC) , intent(out) :: rand(:)
13015 : type(splitmix64_type) , intent(inout) :: rng
13016 : end subroutine
13017 : #endif
13018 :
13019 : #if CK3_ENABLED
13020 : PURE module subroutine setUnifRandRNGSDD_D1_CK3(rng, rand)
13021 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13022 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_CK3
13023 : #endif
13024 : use pm_kind, only: CKC => CK3
13025 : complex(CKC) , intent(out) :: rand(:)
13026 : type(splitmix64_type) , intent(inout) :: rng
13027 : end subroutine
13028 : #endif
13029 :
13030 : #if CK2_ENABLED
13031 : PURE module subroutine setUnifRandRNGSDD_D1_CK2(rng, rand)
13032 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13033 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_CK2
13034 : #endif
13035 : use pm_kind, only: CKC => CK2
13036 : complex(CKC) , intent(out) :: rand(:)
13037 : type(splitmix64_type) , intent(inout) :: rng
13038 : end subroutine
13039 : #endif
13040 :
13041 : #if CK1_ENABLED
13042 : PURE module subroutine setUnifRandRNGSDD_D1_CK1(rng, rand)
13043 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13044 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_CK1
13045 : #endif
13046 : use pm_kind, only: CKC => CK1
13047 : complex(CKC) , intent(out) :: rand(:)
13048 : type(splitmix64_type) , intent(inout) :: rng
13049 : end subroutine
13050 : #endif
13051 :
13052 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13053 :
13054 : #if RK5_ENABLED
13055 : PURE module subroutine setUnifRandRNGSDD_D1_RK5(rng, rand)
13056 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13057 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_RK5
13058 : #endif
13059 : use pm_kind, only: RKC => RK5
13060 : real(RKC) , intent(out) :: rand(:)
13061 : type(splitmix64_type) , intent(inout) :: rng
13062 : end subroutine
13063 : #endif
13064 :
13065 : #if RK4_ENABLED
13066 : PURE module subroutine setUnifRandRNGSDD_D1_RK4(rng, rand)
13067 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13068 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_RK4
13069 : #endif
13070 : use pm_kind, only: RKC => RK4
13071 : real(RKC) , intent(out) :: rand(:)
13072 : type(splitmix64_type) , intent(inout) :: rng
13073 : end subroutine
13074 : #endif
13075 :
13076 : #if RK3_ENABLED
13077 : PURE module subroutine setUnifRandRNGSDD_D1_RK3(rng, rand)
13078 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13079 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_RK3
13080 : #endif
13081 : use pm_kind, only: RKC => RK3
13082 : real(RKC) , intent(out) :: rand(:)
13083 : type(splitmix64_type) , intent(inout) :: rng
13084 : end subroutine
13085 : #endif
13086 :
13087 : #if RK2_ENABLED
13088 : PURE module subroutine setUnifRandRNGSDD_D1_RK2(rng, rand)
13089 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13090 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_RK2
13091 : #endif
13092 : use pm_kind, only: RKC => RK2
13093 : real(RKC) , intent(out) :: rand(:)
13094 : type(splitmix64_type) , intent(inout) :: rng
13095 : end subroutine
13096 : #endif
13097 :
13098 : #if RK1_ENABLED
13099 : PURE module subroutine setUnifRandRNGSDD_D1_RK1(rng, rand)
13100 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13101 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D1_RK1
13102 : #endif
13103 : use pm_kind, only: RKC => RK1
13104 : real(RKC) , intent(out) :: rand(:)
13105 : type(splitmix64_type) , intent(inout) :: rng
13106 : end subroutine
13107 : #endif
13108 :
13109 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13110 :
13111 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13112 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13113 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13114 :
13115 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13116 :
13117 : #if SK5_ENABLED
13118 : PURE module subroutine setUnifRandRNGSLU_D1_SK5(rng, rand, lb, ub)
13119 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13120 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_SK5
13121 : #endif
13122 : use pm_kind, only: SKC => SK5
13123 : character(*,SKC) , intent(out) :: rand(:)
13124 : character(*,SKC) , intent(in) :: lb, ub
13125 : type(splitmix64_type) , intent(inout) :: rng
13126 : end subroutine
13127 : #endif
13128 :
13129 : #if SK4_ENABLED
13130 : PURE module subroutine setUnifRandRNGSLU_D1_SK4(rng, rand, lb, ub)
13131 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13132 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_SK4
13133 : #endif
13134 : use pm_kind, only: SKC => SK4
13135 : character(*,SKC) , intent(out) :: rand(:)
13136 : character(*,SKC) , intent(in) :: lb, ub
13137 : type(splitmix64_type) , intent(inout) :: rng
13138 : end subroutine
13139 : #endif
13140 :
13141 : #if SK3_ENABLED
13142 : PURE module subroutine setUnifRandRNGSLU_D1_SK3(rng, rand, lb, ub)
13143 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13144 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_SK3
13145 : #endif
13146 : use pm_kind, only: SKC => SK3
13147 : character(*,SKC) , intent(out) :: rand(:)
13148 : character(*,SKC) , intent(in) :: lb, ub
13149 : type(splitmix64_type) , intent(inout) :: rng
13150 : end subroutine
13151 : #endif
13152 :
13153 : #if SK2_ENABLED
13154 : PURE module subroutine setUnifRandRNGSLU_D1_SK2(rng, rand, lb, ub)
13155 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13156 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_SK2
13157 : #endif
13158 : use pm_kind, only: SKC => SK2
13159 : character(*,SKC) , intent(out) :: rand(:)
13160 : character(*,SKC) , intent(in) :: lb, ub
13161 : type(splitmix64_type) , intent(inout) :: rng
13162 : end subroutine
13163 : #endif
13164 :
13165 : #if SK1_ENABLED
13166 : PURE module subroutine setUnifRandRNGSLU_D1_SK1(rng, rand, lb, ub)
13167 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13168 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_SK1
13169 : #endif
13170 : use pm_kind, only: SKC => SK1
13171 : character(*,SKC) , intent(out) :: rand(:)
13172 : character(*,SKC) , intent(in) :: lb, ub
13173 : type(splitmix64_type) , intent(inout) :: rng
13174 : end subroutine
13175 : #endif
13176 :
13177 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13178 :
13179 : #if IK5_ENABLED
13180 : PURE module subroutine setUnifRandRNGSLU_D1_IK5(rng, rand, lb, ub)
13181 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13182 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_IK5
13183 : #endif
13184 : use pm_kind, only: IKC => IK5
13185 : integer(IKC) , intent(out) :: rand(:)
13186 : integer(IKC) , intent(in) :: lb, ub
13187 : type(splitmix64_type) , intent(inout) :: rng
13188 : end subroutine
13189 : #endif
13190 :
13191 : #if IK4_ENABLED
13192 : PURE module subroutine setUnifRandRNGSLU_D1_IK4(rng, rand, lb, ub)
13193 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13194 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_IK4
13195 : #endif
13196 : use pm_kind, only: IKC => IK4
13197 : integer(IKC) , intent(out) :: rand(:)
13198 : integer(IKC) , intent(in) :: lb, ub
13199 : type(splitmix64_type) , intent(inout) :: rng
13200 : end subroutine
13201 : #endif
13202 :
13203 : #if IK3_ENABLED
13204 : PURE module subroutine setUnifRandRNGSLU_D1_IK3(rng, rand, lb, ub)
13205 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13206 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_IK3
13207 : #endif
13208 : use pm_kind, only: IKC => IK3
13209 : integer(IKC) , intent(out) :: rand(:)
13210 : integer(IKC) , intent(in) :: lb, ub
13211 : type(splitmix64_type) , intent(inout) :: rng
13212 : end subroutine
13213 : #endif
13214 :
13215 : #if IK2_ENABLED
13216 : PURE module subroutine setUnifRandRNGSLU_D1_IK2(rng, rand, lb, ub)
13217 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13218 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_IK2
13219 : #endif
13220 : use pm_kind, only: IKC => IK2
13221 : integer(IKC) , intent(out) :: rand(:)
13222 : integer(IKC) , intent(in) :: lb, ub
13223 : type(splitmix64_type) , intent(inout) :: rng
13224 : end subroutine
13225 : #endif
13226 :
13227 : #if IK1_ENABLED
13228 : PURE module subroutine setUnifRandRNGSLU_D1_IK1(rng, rand, lb, ub)
13229 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13230 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_IK1
13231 : #endif
13232 : use pm_kind, only: IKC => IK1
13233 : integer(IKC) , intent(out) :: rand(:)
13234 : integer(IKC) , intent(in) :: lb, ub
13235 : type(splitmix64_type) , intent(inout) :: rng
13236 : end subroutine
13237 : #endif
13238 :
13239 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13240 :
13241 : #if LK5_ENABLED
13242 : PURE module subroutine setUnifRandRNGSLU_D1_LK5(rng, rand, lb, ub)
13243 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13244 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_LK5
13245 : #endif
13246 : use pm_kind, only: LKC => LK5
13247 : logical(LKC) , intent(out) :: rand(:)
13248 : logical(LKC) , intent(in) :: lb, ub
13249 : type(splitmix64_type) , intent(inout) :: rng
13250 : end subroutine
13251 : #endif
13252 :
13253 : #if LK4_ENABLED
13254 : PURE module subroutine setUnifRandRNGSLU_D1_LK4(rng, rand, lb, ub)
13255 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13256 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_LK4
13257 : #endif
13258 : use pm_kind, only: LKC => LK4
13259 : logical(LKC) , intent(out) :: rand(:)
13260 : logical(LKC) , intent(in) :: lb, ub
13261 : type(splitmix64_type) , intent(inout) :: rng
13262 : end subroutine
13263 : #endif
13264 :
13265 : #if LK3_ENABLED
13266 : PURE module subroutine setUnifRandRNGSLU_D1_LK3(rng, rand, lb, ub)
13267 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13268 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_LK3
13269 : #endif
13270 : use pm_kind, only: LKC => LK3
13271 : logical(LKC) , intent(out) :: rand(:)
13272 : logical(LKC) , intent(in) :: lb, ub
13273 : type(splitmix64_type) , intent(inout) :: rng
13274 : end subroutine
13275 : #endif
13276 :
13277 : #if LK2_ENABLED
13278 : PURE module subroutine setUnifRandRNGSLU_D1_LK2(rng, rand, lb, ub)
13279 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13280 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_LK2
13281 : #endif
13282 : use pm_kind, only: LKC => LK2
13283 : logical(LKC) , intent(out) :: rand(:)
13284 : logical(LKC) , intent(in) :: lb, ub
13285 : type(splitmix64_type) , intent(inout) :: rng
13286 : end subroutine
13287 : #endif
13288 :
13289 : #if LK1_ENABLED
13290 : PURE module subroutine setUnifRandRNGSLU_D1_LK1(rng, rand, lb, ub)
13291 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13292 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_LK1
13293 : #endif
13294 : use pm_kind, only: LKC => LK1
13295 : logical(LKC) , intent(out) :: rand(:)
13296 : logical(LKC) , intent(in) :: lb, ub
13297 : type(splitmix64_type) , intent(inout) :: rng
13298 : end subroutine
13299 : #endif
13300 :
13301 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13302 :
13303 : #if CK5_ENABLED
13304 : PURE module subroutine setUnifRandRNGSLU_D1_CK5(rng, rand, lb, ub)
13305 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13306 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_CK5
13307 : #endif
13308 : use pm_kind, only: CKC => CK5
13309 : complex(CKC) , intent(out) :: rand(:)
13310 : complex(CKC) , intent(in) :: lb, ub
13311 : type(splitmix64_type) , intent(inout) :: rng
13312 : end subroutine
13313 : #endif
13314 :
13315 : #if CK4_ENABLED
13316 : PURE module subroutine setUnifRandRNGSLU_D1_CK4(rng, rand, lb, ub)
13317 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13318 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_CK4
13319 : #endif
13320 : use pm_kind, only: CKC => CK4
13321 : complex(CKC) , intent(out) :: rand(:)
13322 : complex(CKC) , intent(in) :: lb, ub
13323 : type(splitmix64_type) , intent(inout) :: rng
13324 : end subroutine
13325 : #endif
13326 :
13327 : #if CK3_ENABLED
13328 : PURE module subroutine setUnifRandRNGSLU_D1_CK3(rng, rand, lb, ub)
13329 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13330 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_CK3
13331 : #endif
13332 : use pm_kind, only: CKC => CK3
13333 : complex(CKC) , intent(out) :: rand(:)
13334 : complex(CKC) , intent(in) :: lb, ub
13335 : type(splitmix64_type) , intent(inout) :: rng
13336 : end subroutine
13337 : #endif
13338 :
13339 : #if CK2_ENABLED
13340 : PURE module subroutine setUnifRandRNGSLU_D1_CK2(rng, rand, lb, ub)
13341 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13342 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_CK2
13343 : #endif
13344 : use pm_kind, only: CKC => CK2
13345 : complex(CKC) , intent(out) :: rand(:)
13346 : complex(CKC) , intent(in) :: lb, ub
13347 : type(splitmix64_type) , intent(inout) :: rng
13348 : end subroutine
13349 : #endif
13350 :
13351 : #if CK1_ENABLED
13352 : PURE module subroutine setUnifRandRNGSLU_D1_CK1(rng, rand, lb, ub)
13353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13354 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_CK1
13355 : #endif
13356 : use pm_kind, only: CKC => CK1
13357 : complex(CKC) , intent(out) :: rand(:)
13358 : complex(CKC) , intent(in) :: lb, ub
13359 : type(splitmix64_type) , intent(inout) :: rng
13360 : end subroutine
13361 : #endif
13362 :
13363 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13364 :
13365 : #if RK5_ENABLED
13366 : PURE module subroutine setUnifRandRNGSLU_D1_RK5(rng, rand, lb, ub)
13367 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13368 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_RK5
13369 : #endif
13370 : use pm_kind, only: RKC => RK5
13371 : real(RKC) , intent(out) :: rand(:)
13372 : real(RKC) , intent(in) :: lb, ub
13373 : type(splitmix64_type) , intent(inout) :: rng
13374 : end subroutine
13375 : #endif
13376 :
13377 : #if RK4_ENABLED
13378 : PURE module subroutine setUnifRandRNGSLU_D1_RK4(rng, rand, lb, ub)
13379 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13380 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_RK4
13381 : #endif
13382 : use pm_kind, only: RKC => RK4
13383 : real(RKC) , intent(out) :: rand(:)
13384 : real(RKC) , intent(in) :: lb, ub
13385 : type(splitmix64_type) , intent(inout) :: rng
13386 : end subroutine
13387 : #endif
13388 :
13389 : #if RK3_ENABLED
13390 : PURE module subroutine setUnifRandRNGSLU_D1_RK3(rng, rand, lb, ub)
13391 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13392 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_RK3
13393 : #endif
13394 : use pm_kind, only: RKC => RK3
13395 : real(RKC) , intent(out) :: rand(:)
13396 : real(RKC) , intent(in) :: lb, ub
13397 : type(splitmix64_type) , intent(inout) :: rng
13398 : end subroutine
13399 : #endif
13400 :
13401 : #if RK2_ENABLED
13402 : PURE module subroutine setUnifRandRNGSLU_D1_RK2(rng, rand, lb, ub)
13403 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13404 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_RK2
13405 : #endif
13406 : use pm_kind, only: RKC => RK2
13407 : real(RKC) , intent(out) :: rand(:)
13408 : real(RKC) , intent(in) :: lb, ub
13409 : type(splitmix64_type) , intent(inout) :: rng
13410 : end subroutine
13411 : #endif
13412 :
13413 : #if RK1_ENABLED
13414 : PURE module subroutine setUnifRandRNGSLU_D1_RK1(rng, rand, lb, ub)
13415 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13416 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D1_RK1
13417 : #endif
13418 : use pm_kind, only: RKC => RK1
13419 : real(RKC) , intent(out) :: rand(:)
13420 : real(RKC) , intent(in) :: lb, ub
13421 : type(splitmix64_type) , intent(inout) :: rng
13422 : end subroutine
13423 : #endif
13424 :
13425 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13426 :
13427 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13428 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13429 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13430 :
13431 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13432 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13433 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13434 :
13435 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13436 :
13437 : #if SK5_ENABLED
13438 : PURE module subroutine setUnifRandRNGSDD_D2_SK5(rng, rand)
13439 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13440 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_SK5
13441 : #endif
13442 : use pm_kind, only: SKC => SK5
13443 : character(*,SKC) , intent(out) :: rand(:,:)
13444 : type(splitmix64_type) , intent(inout) :: rng
13445 : end subroutine
13446 : #endif
13447 :
13448 : #if SK4_ENABLED
13449 : PURE module subroutine setUnifRandRNGSDD_D2_SK4(rng, rand)
13450 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13451 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_SK4
13452 : #endif
13453 : use pm_kind, only: SKC => SK4
13454 : character(*,SKC) , intent(out) :: rand(:,:)
13455 : type(splitmix64_type) , intent(inout) :: rng
13456 : end subroutine
13457 : #endif
13458 :
13459 : #if SK3_ENABLED
13460 : PURE module subroutine setUnifRandRNGSDD_D2_SK3(rng, rand)
13461 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13462 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_SK3
13463 : #endif
13464 : use pm_kind, only: SKC => SK3
13465 : character(*,SKC) , intent(out) :: rand(:,:)
13466 : type(splitmix64_type) , intent(inout) :: rng
13467 : end subroutine
13468 : #endif
13469 :
13470 : #if SK2_ENABLED
13471 : PURE module subroutine setUnifRandRNGSDD_D2_SK2(rng, rand)
13472 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13473 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_SK2
13474 : #endif
13475 : use pm_kind, only: SKC => SK2
13476 : character(*,SKC) , intent(out) :: rand(:,:)
13477 : type(splitmix64_type) , intent(inout) :: rng
13478 : end subroutine
13479 : #endif
13480 :
13481 : #if SK1_ENABLED
13482 : PURE module subroutine setUnifRandRNGSDD_D2_SK1(rng, rand)
13483 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13484 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_SK1
13485 : #endif
13486 : use pm_kind, only: SKC => SK1
13487 : character(*,SKC) , intent(out) :: rand(:,:)
13488 : type(splitmix64_type) , intent(inout) :: rng
13489 : end subroutine
13490 : #endif
13491 :
13492 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13493 :
13494 : #if IK5_ENABLED
13495 : PURE module subroutine setUnifRandRNGSDD_D2_IK5(rng, rand)
13496 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13497 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_IK5
13498 : #endif
13499 : use pm_kind, only: IKC => IK5
13500 : integer(IKC) , intent(out) :: rand(:,:)
13501 : type(splitmix64_type) , intent(inout) :: rng
13502 : end subroutine
13503 : #endif
13504 :
13505 : #if IK4_ENABLED
13506 : PURE module subroutine setUnifRandRNGSDD_D2_IK4(rng, rand)
13507 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13508 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_IK4
13509 : #endif
13510 : use pm_kind, only: IKC => IK4
13511 : integer(IKC) , intent(out) :: rand(:,:)
13512 : type(splitmix64_type) , intent(inout) :: rng
13513 : end subroutine
13514 : #endif
13515 :
13516 : #if IK3_ENABLED
13517 : PURE module subroutine setUnifRandRNGSDD_D2_IK3(rng, rand)
13518 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13519 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_IK3
13520 : #endif
13521 : use pm_kind, only: IKC => IK3
13522 : integer(IKC) , intent(out) :: rand(:,:)
13523 : type(splitmix64_type) , intent(inout) :: rng
13524 : end subroutine
13525 : #endif
13526 :
13527 : #if IK2_ENABLED
13528 : PURE module subroutine setUnifRandRNGSDD_D2_IK2(rng, rand)
13529 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13530 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_IK2
13531 : #endif
13532 : use pm_kind, only: IKC => IK2
13533 : integer(IKC) , intent(out) :: rand(:,:)
13534 : type(splitmix64_type) , intent(inout) :: rng
13535 : end subroutine
13536 : #endif
13537 :
13538 : #if IK1_ENABLED
13539 : PURE module subroutine setUnifRandRNGSDD_D2_IK1(rng, rand)
13540 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13541 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_IK1
13542 : #endif
13543 : use pm_kind, only: IKC => IK1
13544 : integer(IKC) , intent(out) :: rand(:,:)
13545 : type(splitmix64_type) , intent(inout) :: rng
13546 : end subroutine
13547 : #endif
13548 :
13549 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13550 :
13551 : #if LK5_ENABLED
13552 : PURE module subroutine setUnifRandRNGSDD_D2_LK5(rng, rand)
13553 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13554 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_LK5
13555 : #endif
13556 : use pm_kind, only: LKC => LK5
13557 : logical(LKC) , intent(out) :: rand(:,:)
13558 : type(splitmix64_type) , intent(inout) :: rng
13559 : end subroutine
13560 : #endif
13561 :
13562 : #if LK4_ENABLED
13563 : PURE module subroutine setUnifRandRNGSDD_D2_LK4(rng, rand)
13564 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13565 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_LK4
13566 : #endif
13567 : use pm_kind, only: LKC => LK4
13568 : logical(LKC) , intent(out) :: rand(:,:)
13569 : type(splitmix64_type) , intent(inout) :: rng
13570 : end subroutine
13571 : #endif
13572 :
13573 : #if LK3_ENABLED
13574 : PURE module subroutine setUnifRandRNGSDD_D2_LK3(rng, rand)
13575 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13576 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_LK3
13577 : #endif
13578 : use pm_kind, only: LKC => LK3
13579 : logical(LKC) , intent(out) :: rand(:,:)
13580 : type(splitmix64_type) , intent(inout) :: rng
13581 : end subroutine
13582 : #endif
13583 :
13584 : #if LK2_ENABLED
13585 : PURE module subroutine setUnifRandRNGSDD_D2_LK2(rng, rand)
13586 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13587 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_LK2
13588 : #endif
13589 : use pm_kind, only: LKC => LK2
13590 : logical(LKC) , intent(out) :: rand(:,:)
13591 : type(splitmix64_type) , intent(inout) :: rng
13592 : end subroutine
13593 : #endif
13594 :
13595 : #if LK1_ENABLED
13596 : PURE module subroutine setUnifRandRNGSDD_D2_LK1(rng, rand)
13597 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13598 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_LK1
13599 : #endif
13600 : use pm_kind, only: LKC => LK1
13601 : logical(LKC) , intent(out) :: rand(:,:)
13602 : type(splitmix64_type) , intent(inout) :: rng
13603 : end subroutine
13604 : #endif
13605 :
13606 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13607 :
13608 : #if CK5_ENABLED
13609 : PURE module subroutine setUnifRandRNGSDD_D2_CK5(rng, rand)
13610 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13611 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_CK5
13612 : #endif
13613 : use pm_kind, only: CKC => CK5
13614 : complex(CKC) , intent(out) :: rand(:,:)
13615 : type(splitmix64_type) , intent(inout) :: rng
13616 : end subroutine
13617 : #endif
13618 :
13619 : #if CK4_ENABLED
13620 : PURE module subroutine setUnifRandRNGSDD_D2_CK4(rng, rand)
13621 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13622 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_CK4
13623 : #endif
13624 : use pm_kind, only: CKC => CK4
13625 : complex(CKC) , intent(out) :: rand(:,:)
13626 : type(splitmix64_type) , intent(inout) :: rng
13627 : end subroutine
13628 : #endif
13629 :
13630 : #if CK3_ENABLED
13631 : PURE module subroutine setUnifRandRNGSDD_D2_CK3(rng, rand)
13632 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13633 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_CK3
13634 : #endif
13635 : use pm_kind, only: CKC => CK3
13636 : complex(CKC) , intent(out) :: rand(:,:)
13637 : type(splitmix64_type) , intent(inout) :: rng
13638 : end subroutine
13639 : #endif
13640 :
13641 : #if CK2_ENABLED
13642 : PURE module subroutine setUnifRandRNGSDD_D2_CK2(rng, rand)
13643 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13644 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_CK2
13645 : #endif
13646 : use pm_kind, only: CKC => CK2
13647 : complex(CKC) , intent(out) :: rand(:,:)
13648 : type(splitmix64_type) , intent(inout) :: rng
13649 : end subroutine
13650 : #endif
13651 :
13652 : #if CK1_ENABLED
13653 : PURE module subroutine setUnifRandRNGSDD_D2_CK1(rng, rand)
13654 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13655 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_CK1
13656 : #endif
13657 : use pm_kind, only: CKC => CK1
13658 : complex(CKC) , intent(out) :: rand(:,:)
13659 : type(splitmix64_type) , intent(inout) :: rng
13660 : end subroutine
13661 : #endif
13662 :
13663 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13664 :
13665 : #if RK5_ENABLED
13666 : PURE module subroutine setUnifRandRNGSDD_D2_RK5(rng, rand)
13667 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13668 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_RK5
13669 : #endif
13670 : use pm_kind, only: RKC => RK5
13671 : real(RKC) , intent(out) :: rand(:,:)
13672 : type(splitmix64_type) , intent(inout) :: rng
13673 : end subroutine
13674 : #endif
13675 :
13676 : #if RK4_ENABLED
13677 : PURE module subroutine setUnifRandRNGSDD_D2_RK4(rng, rand)
13678 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13679 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_RK4
13680 : #endif
13681 : use pm_kind, only: RKC => RK4
13682 : real(RKC) , intent(out) :: rand(:,:)
13683 : type(splitmix64_type) , intent(inout) :: rng
13684 : end subroutine
13685 : #endif
13686 :
13687 : #if RK3_ENABLED
13688 : PURE module subroutine setUnifRandRNGSDD_D2_RK3(rng, rand)
13689 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13690 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_RK3
13691 : #endif
13692 : use pm_kind, only: RKC => RK3
13693 : real(RKC) , intent(out) :: rand(:,:)
13694 : type(splitmix64_type) , intent(inout) :: rng
13695 : end subroutine
13696 : #endif
13697 :
13698 : #if RK2_ENABLED
13699 : PURE module subroutine setUnifRandRNGSDD_D2_RK2(rng, rand)
13700 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13701 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_RK2
13702 : #endif
13703 : use pm_kind, only: RKC => RK2
13704 : real(RKC) , intent(out) :: rand(:,:)
13705 : type(splitmix64_type) , intent(inout) :: rng
13706 : end subroutine
13707 : #endif
13708 :
13709 : #if RK1_ENABLED
13710 : PURE module subroutine setUnifRandRNGSDD_D2_RK1(rng, rand)
13711 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13712 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D2_RK1
13713 : #endif
13714 : use pm_kind, only: RKC => RK1
13715 : real(RKC) , intent(out) :: rand(:,:)
13716 : type(splitmix64_type) , intent(inout) :: rng
13717 : end subroutine
13718 : #endif
13719 :
13720 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13721 :
13722 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13723 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13724 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13725 :
13726 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13727 :
13728 : #if SK5_ENABLED
13729 : PURE module subroutine setUnifRandRNGSLU_D2_SK5(rng, rand, lb, ub)
13730 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13731 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_SK5
13732 : #endif
13733 : use pm_kind, only: SKC => SK5
13734 : character(*,SKC) , intent(out) :: rand(:,:)
13735 : character(*,SKC) , intent(in) :: lb, ub
13736 : type(splitmix64_type) , intent(inout) :: rng
13737 : end subroutine
13738 : #endif
13739 :
13740 : #if SK4_ENABLED
13741 : PURE module subroutine setUnifRandRNGSLU_D2_SK4(rng, rand, lb, ub)
13742 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13743 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_SK4
13744 : #endif
13745 : use pm_kind, only: SKC => SK4
13746 : character(*,SKC) , intent(out) :: rand(:,:)
13747 : character(*,SKC) , intent(in) :: lb, ub
13748 : type(splitmix64_type) , intent(inout) :: rng
13749 : end subroutine
13750 : #endif
13751 :
13752 : #if SK3_ENABLED
13753 : PURE module subroutine setUnifRandRNGSLU_D2_SK3(rng, rand, lb, ub)
13754 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13755 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_SK3
13756 : #endif
13757 : use pm_kind, only: SKC => SK3
13758 : character(*,SKC) , intent(out) :: rand(:,:)
13759 : character(*,SKC) , intent(in) :: lb, ub
13760 : type(splitmix64_type) , intent(inout) :: rng
13761 : end subroutine
13762 : #endif
13763 :
13764 : #if SK2_ENABLED
13765 : PURE module subroutine setUnifRandRNGSLU_D2_SK2(rng, rand, lb, ub)
13766 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13767 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_SK2
13768 : #endif
13769 : use pm_kind, only: SKC => SK2
13770 : character(*,SKC) , intent(out) :: rand(:,:)
13771 : character(*,SKC) , intent(in) :: lb, ub
13772 : type(splitmix64_type) , intent(inout) :: rng
13773 : end subroutine
13774 : #endif
13775 :
13776 : #if SK1_ENABLED
13777 : PURE module subroutine setUnifRandRNGSLU_D2_SK1(rng, rand, lb, ub)
13778 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13779 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_SK1
13780 : #endif
13781 : use pm_kind, only: SKC => SK1
13782 : character(*,SKC) , intent(out) :: rand(:,:)
13783 : character(*,SKC) , intent(in) :: lb, ub
13784 : type(splitmix64_type) , intent(inout) :: rng
13785 : end subroutine
13786 : #endif
13787 :
13788 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13789 :
13790 : #if IK5_ENABLED
13791 : PURE module subroutine setUnifRandRNGSLU_D2_IK5(rng, rand, lb, ub)
13792 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13793 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_IK5
13794 : #endif
13795 : use pm_kind, only: IKC => IK5
13796 : integer(IKC) , intent(out) :: rand(:,:)
13797 : integer(IKC) , intent(in) :: lb, ub
13798 : type(splitmix64_type) , intent(inout) :: rng
13799 : end subroutine
13800 : #endif
13801 :
13802 : #if IK4_ENABLED
13803 : PURE module subroutine setUnifRandRNGSLU_D2_IK4(rng, rand, lb, ub)
13804 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13805 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_IK4
13806 : #endif
13807 : use pm_kind, only: IKC => IK4
13808 : integer(IKC) , intent(out) :: rand(:,:)
13809 : integer(IKC) , intent(in) :: lb, ub
13810 : type(splitmix64_type) , intent(inout) :: rng
13811 : end subroutine
13812 : #endif
13813 :
13814 : #if IK3_ENABLED
13815 : PURE module subroutine setUnifRandRNGSLU_D2_IK3(rng, rand, lb, ub)
13816 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13817 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_IK3
13818 : #endif
13819 : use pm_kind, only: IKC => IK3
13820 : integer(IKC) , intent(out) :: rand(:,:)
13821 : integer(IKC) , intent(in) :: lb, ub
13822 : type(splitmix64_type) , intent(inout) :: rng
13823 : end subroutine
13824 : #endif
13825 :
13826 : #if IK2_ENABLED
13827 : PURE module subroutine setUnifRandRNGSLU_D2_IK2(rng, rand, lb, ub)
13828 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13829 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_IK2
13830 : #endif
13831 : use pm_kind, only: IKC => IK2
13832 : integer(IKC) , intent(out) :: rand(:,:)
13833 : integer(IKC) , intent(in) :: lb, ub
13834 : type(splitmix64_type) , intent(inout) :: rng
13835 : end subroutine
13836 : #endif
13837 :
13838 : #if IK1_ENABLED
13839 : PURE module subroutine setUnifRandRNGSLU_D2_IK1(rng, rand, lb, ub)
13840 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13841 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_IK1
13842 : #endif
13843 : use pm_kind, only: IKC => IK1
13844 : integer(IKC) , intent(out) :: rand(:,:)
13845 : integer(IKC) , intent(in) :: lb, ub
13846 : type(splitmix64_type) , intent(inout) :: rng
13847 : end subroutine
13848 : #endif
13849 :
13850 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13851 :
13852 : #if LK5_ENABLED
13853 : PURE module subroutine setUnifRandRNGSLU_D2_LK5(rng, rand, lb, ub)
13854 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13855 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_LK5
13856 : #endif
13857 : use pm_kind, only: LKC => LK5
13858 : logical(LKC) , intent(out) :: rand(:,:)
13859 : logical(LKC) , intent(in) :: lb, ub
13860 : type(splitmix64_type) , intent(inout) :: rng
13861 : end subroutine
13862 : #endif
13863 :
13864 : #if LK4_ENABLED
13865 : PURE module subroutine setUnifRandRNGSLU_D2_LK4(rng, rand, lb, ub)
13866 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13867 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_LK4
13868 : #endif
13869 : use pm_kind, only: LKC => LK4
13870 : logical(LKC) , intent(out) :: rand(:,:)
13871 : logical(LKC) , intent(in) :: lb, ub
13872 : type(splitmix64_type) , intent(inout) :: rng
13873 : end subroutine
13874 : #endif
13875 :
13876 : #if LK3_ENABLED
13877 : PURE module subroutine setUnifRandRNGSLU_D2_LK3(rng, rand, lb, ub)
13878 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13879 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_LK3
13880 : #endif
13881 : use pm_kind, only: LKC => LK3
13882 : logical(LKC) , intent(out) :: rand(:,:)
13883 : logical(LKC) , intent(in) :: lb, ub
13884 : type(splitmix64_type) , intent(inout) :: rng
13885 : end subroutine
13886 : #endif
13887 :
13888 : #if LK2_ENABLED
13889 : PURE module subroutine setUnifRandRNGSLU_D2_LK2(rng, rand, lb, ub)
13890 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13891 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_LK2
13892 : #endif
13893 : use pm_kind, only: LKC => LK2
13894 : logical(LKC) , intent(out) :: rand(:,:)
13895 : logical(LKC) , intent(in) :: lb, ub
13896 : type(splitmix64_type) , intent(inout) :: rng
13897 : end subroutine
13898 : #endif
13899 :
13900 : #if LK1_ENABLED
13901 : PURE module subroutine setUnifRandRNGSLU_D2_LK1(rng, rand, lb, ub)
13902 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13903 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_LK1
13904 : #endif
13905 : use pm_kind, only: LKC => LK1
13906 : logical(LKC) , intent(out) :: rand(:,:)
13907 : logical(LKC) , intent(in) :: lb, ub
13908 : type(splitmix64_type) , intent(inout) :: rng
13909 : end subroutine
13910 : #endif
13911 :
13912 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13913 :
13914 : #if CK5_ENABLED
13915 : PURE module subroutine setUnifRandRNGSLU_D2_CK5(rng, rand, lb, ub)
13916 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13917 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_CK5
13918 : #endif
13919 : use pm_kind, only: CKC => CK5
13920 : complex(CKC) , intent(out) :: rand(:,:)
13921 : complex(CKC) , intent(in) :: lb, ub
13922 : type(splitmix64_type) , intent(inout) :: rng
13923 : end subroutine
13924 : #endif
13925 :
13926 : #if CK4_ENABLED
13927 : PURE module subroutine setUnifRandRNGSLU_D2_CK4(rng, rand, lb, ub)
13928 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13929 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_CK4
13930 : #endif
13931 : use pm_kind, only: CKC => CK4
13932 : complex(CKC) , intent(out) :: rand(:,:)
13933 : complex(CKC) , intent(in) :: lb, ub
13934 : type(splitmix64_type) , intent(inout) :: rng
13935 : end subroutine
13936 : #endif
13937 :
13938 : #if CK3_ENABLED
13939 : PURE module subroutine setUnifRandRNGSLU_D2_CK3(rng, rand, lb, ub)
13940 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13941 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_CK3
13942 : #endif
13943 : use pm_kind, only: CKC => CK3
13944 : complex(CKC) , intent(out) :: rand(:,:)
13945 : complex(CKC) , intent(in) :: lb, ub
13946 : type(splitmix64_type) , intent(inout) :: rng
13947 : end subroutine
13948 : #endif
13949 :
13950 : #if CK2_ENABLED
13951 : PURE module subroutine setUnifRandRNGSLU_D2_CK2(rng, rand, lb, ub)
13952 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13953 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_CK2
13954 : #endif
13955 : use pm_kind, only: CKC => CK2
13956 : complex(CKC) , intent(out) :: rand(:,:)
13957 : complex(CKC) , intent(in) :: lb, ub
13958 : type(splitmix64_type) , intent(inout) :: rng
13959 : end subroutine
13960 : #endif
13961 :
13962 : #if CK1_ENABLED
13963 : PURE module subroutine setUnifRandRNGSLU_D2_CK1(rng, rand, lb, ub)
13964 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13965 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_CK1
13966 : #endif
13967 : use pm_kind, only: CKC => CK1
13968 : complex(CKC) , intent(out) :: rand(:,:)
13969 : complex(CKC) , intent(in) :: lb, ub
13970 : type(splitmix64_type) , intent(inout) :: rng
13971 : end subroutine
13972 : #endif
13973 :
13974 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13975 :
13976 : #if RK5_ENABLED
13977 : PURE module subroutine setUnifRandRNGSLU_D2_RK5(rng, rand, lb, ub)
13978 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13979 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_RK5
13980 : #endif
13981 : use pm_kind, only: RKC => RK5
13982 : real(RKC) , intent(out) :: rand(:,:)
13983 : real(RKC) , intent(in) :: lb, ub
13984 : type(splitmix64_type) , intent(inout) :: rng
13985 : end subroutine
13986 : #endif
13987 :
13988 : #if RK4_ENABLED
13989 : PURE module subroutine setUnifRandRNGSLU_D2_RK4(rng, rand, lb, ub)
13990 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
13991 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_RK4
13992 : #endif
13993 : use pm_kind, only: RKC => RK4
13994 : real(RKC) , intent(out) :: rand(:,:)
13995 : real(RKC) , intent(in) :: lb, ub
13996 : type(splitmix64_type) , intent(inout) :: rng
13997 : end subroutine
13998 : #endif
13999 :
14000 : #if RK3_ENABLED
14001 : PURE module subroutine setUnifRandRNGSLU_D2_RK3(rng, rand, lb, ub)
14002 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14003 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_RK3
14004 : #endif
14005 : use pm_kind, only: RKC => RK3
14006 : real(RKC) , intent(out) :: rand(:,:)
14007 : real(RKC) , intent(in) :: lb, ub
14008 : type(splitmix64_type) , intent(inout) :: rng
14009 : end subroutine
14010 : #endif
14011 :
14012 : #if RK2_ENABLED
14013 : PURE module subroutine setUnifRandRNGSLU_D2_RK2(rng, rand, lb, ub)
14014 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14015 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_RK2
14016 : #endif
14017 : use pm_kind, only: RKC => RK2
14018 : real(RKC) , intent(out) :: rand(:,:)
14019 : real(RKC) , intent(in) :: lb, ub
14020 : type(splitmix64_type) , intent(inout) :: rng
14021 : end subroutine
14022 : #endif
14023 :
14024 : #if RK1_ENABLED
14025 : PURE module subroutine setUnifRandRNGSLU_D2_RK1(rng, rand, lb, ub)
14026 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14027 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D2_RK1
14028 : #endif
14029 : use pm_kind, only: RKC => RK1
14030 : real(RKC) , intent(out) :: rand(:,:)
14031 : real(RKC) , intent(in) :: lb, ub
14032 : type(splitmix64_type) , intent(inout) :: rng
14033 : end subroutine
14034 : #endif
14035 :
14036 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14037 :
14038 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14039 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14040 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14041 :
14042 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14043 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14044 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14045 :
14046 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14047 :
14048 : #if SK5_ENABLED
14049 : PURE module subroutine setUnifRandRNGSDD_D3_SK5(rng, rand)
14050 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14051 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_SK5
14052 : #endif
14053 : use pm_kind, only: SKC => SK5
14054 : character(*,SKC) , intent(out) :: rand(:,:,:)
14055 : type(splitmix64_type) , intent(inout) :: rng
14056 : end subroutine
14057 : #endif
14058 :
14059 : #if SK4_ENABLED
14060 : PURE module subroutine setUnifRandRNGSDD_D3_SK4(rng, rand)
14061 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14062 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_SK4
14063 : #endif
14064 : use pm_kind, only: SKC => SK4
14065 : character(*,SKC) , intent(out) :: rand(:,:,:)
14066 : type(splitmix64_type) , intent(inout) :: rng
14067 : end subroutine
14068 : #endif
14069 :
14070 : #if SK3_ENABLED
14071 : PURE module subroutine setUnifRandRNGSDD_D3_SK3(rng, rand)
14072 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14073 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_SK3
14074 : #endif
14075 : use pm_kind, only: SKC => SK3
14076 : character(*,SKC) , intent(out) :: rand(:,:,:)
14077 : type(splitmix64_type) , intent(inout) :: rng
14078 : end subroutine
14079 : #endif
14080 :
14081 : #if SK2_ENABLED
14082 : PURE module subroutine setUnifRandRNGSDD_D3_SK2(rng, rand)
14083 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14084 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_SK2
14085 : #endif
14086 : use pm_kind, only: SKC => SK2
14087 : character(*,SKC) , intent(out) :: rand(:,:,:)
14088 : type(splitmix64_type) , intent(inout) :: rng
14089 : end subroutine
14090 : #endif
14091 :
14092 : #if SK1_ENABLED
14093 : PURE module subroutine setUnifRandRNGSDD_D3_SK1(rng, rand)
14094 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14095 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_SK1
14096 : #endif
14097 : use pm_kind, only: SKC => SK1
14098 : character(*,SKC) , intent(out) :: rand(:,:,:)
14099 : type(splitmix64_type) , intent(inout) :: rng
14100 : end subroutine
14101 : #endif
14102 :
14103 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14104 :
14105 : #if IK5_ENABLED
14106 : PURE module subroutine setUnifRandRNGSDD_D3_IK5(rng, rand)
14107 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14108 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_IK5
14109 : #endif
14110 : use pm_kind, only: IKC => IK5
14111 : integer(IKC) , intent(out) :: rand(:,:,:)
14112 : type(splitmix64_type) , intent(inout) :: rng
14113 : end subroutine
14114 : #endif
14115 :
14116 : #if IK4_ENABLED
14117 : PURE module subroutine setUnifRandRNGSDD_D3_IK4(rng, rand)
14118 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14119 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_IK4
14120 : #endif
14121 : use pm_kind, only: IKC => IK4
14122 : integer(IKC) , intent(out) :: rand(:,:,:)
14123 : type(splitmix64_type) , intent(inout) :: rng
14124 : end subroutine
14125 : #endif
14126 :
14127 : #if IK3_ENABLED
14128 : PURE module subroutine setUnifRandRNGSDD_D3_IK3(rng, rand)
14129 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14130 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_IK3
14131 : #endif
14132 : use pm_kind, only: IKC => IK3
14133 : integer(IKC) , intent(out) :: rand(:,:,:)
14134 : type(splitmix64_type) , intent(inout) :: rng
14135 : end subroutine
14136 : #endif
14137 :
14138 : #if IK2_ENABLED
14139 : PURE module subroutine setUnifRandRNGSDD_D3_IK2(rng, rand)
14140 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14141 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_IK2
14142 : #endif
14143 : use pm_kind, only: IKC => IK2
14144 : integer(IKC) , intent(out) :: rand(:,:,:)
14145 : type(splitmix64_type) , intent(inout) :: rng
14146 : end subroutine
14147 : #endif
14148 :
14149 : #if IK1_ENABLED
14150 : PURE module subroutine setUnifRandRNGSDD_D3_IK1(rng, rand)
14151 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14152 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_IK1
14153 : #endif
14154 : use pm_kind, only: IKC => IK1
14155 : integer(IKC) , intent(out) :: rand(:,:,:)
14156 : type(splitmix64_type) , intent(inout) :: rng
14157 : end subroutine
14158 : #endif
14159 :
14160 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14161 :
14162 : #if LK5_ENABLED
14163 : PURE module subroutine setUnifRandRNGSDD_D3_LK5(rng, rand)
14164 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14165 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_LK5
14166 : #endif
14167 : use pm_kind, only: LKC => LK5
14168 : logical(LKC) , intent(out) :: rand(:,:,:)
14169 : type(splitmix64_type) , intent(inout) :: rng
14170 : end subroutine
14171 : #endif
14172 :
14173 : #if LK4_ENABLED
14174 : PURE module subroutine setUnifRandRNGSDD_D3_LK4(rng, rand)
14175 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14176 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_LK4
14177 : #endif
14178 : use pm_kind, only: LKC => LK4
14179 : logical(LKC) , intent(out) :: rand(:,:,:)
14180 : type(splitmix64_type) , intent(inout) :: rng
14181 : end subroutine
14182 : #endif
14183 :
14184 : #if LK3_ENABLED
14185 : PURE module subroutine setUnifRandRNGSDD_D3_LK3(rng, rand)
14186 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14187 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_LK3
14188 : #endif
14189 : use pm_kind, only: LKC => LK3
14190 : logical(LKC) , intent(out) :: rand(:,:,:)
14191 : type(splitmix64_type) , intent(inout) :: rng
14192 : end subroutine
14193 : #endif
14194 :
14195 : #if LK2_ENABLED
14196 : PURE module subroutine setUnifRandRNGSDD_D3_LK2(rng, rand)
14197 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14198 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_LK2
14199 : #endif
14200 : use pm_kind, only: LKC => LK2
14201 : logical(LKC) , intent(out) :: rand(:,:,:)
14202 : type(splitmix64_type) , intent(inout) :: rng
14203 : end subroutine
14204 : #endif
14205 :
14206 : #if LK1_ENABLED
14207 : PURE module subroutine setUnifRandRNGSDD_D3_LK1(rng, rand)
14208 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14209 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_LK1
14210 : #endif
14211 : use pm_kind, only: LKC => LK1
14212 : logical(LKC) , intent(out) :: rand(:,:,:)
14213 : type(splitmix64_type) , intent(inout) :: rng
14214 : end subroutine
14215 : #endif
14216 :
14217 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14218 :
14219 : #if CK5_ENABLED
14220 : PURE module subroutine setUnifRandRNGSDD_D3_CK5(rng, rand)
14221 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14222 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_CK5
14223 : #endif
14224 : use pm_kind, only: CKC => CK5
14225 : complex(CKC) , intent(out) :: rand(:,:,:)
14226 : type(splitmix64_type) , intent(inout) :: rng
14227 : end subroutine
14228 : #endif
14229 :
14230 : #if CK4_ENABLED
14231 : PURE module subroutine setUnifRandRNGSDD_D3_CK4(rng, rand)
14232 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14233 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_CK4
14234 : #endif
14235 : use pm_kind, only: CKC => CK4
14236 : complex(CKC) , intent(out) :: rand(:,:,:)
14237 : type(splitmix64_type) , intent(inout) :: rng
14238 : end subroutine
14239 : #endif
14240 :
14241 : #if CK3_ENABLED
14242 : PURE module subroutine setUnifRandRNGSDD_D3_CK3(rng, rand)
14243 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14244 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_CK3
14245 : #endif
14246 : use pm_kind, only: CKC => CK3
14247 : complex(CKC) , intent(out) :: rand(:,:,:)
14248 : type(splitmix64_type) , intent(inout) :: rng
14249 : end subroutine
14250 : #endif
14251 :
14252 : #if CK2_ENABLED
14253 : PURE module subroutine setUnifRandRNGSDD_D3_CK2(rng, rand)
14254 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14255 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_CK2
14256 : #endif
14257 : use pm_kind, only: CKC => CK2
14258 : complex(CKC) , intent(out) :: rand(:,:,:)
14259 : type(splitmix64_type) , intent(inout) :: rng
14260 : end subroutine
14261 : #endif
14262 :
14263 : #if CK1_ENABLED
14264 : PURE module subroutine setUnifRandRNGSDD_D3_CK1(rng, rand)
14265 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14266 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_CK1
14267 : #endif
14268 : use pm_kind, only: CKC => CK1
14269 : complex(CKC) , intent(out) :: rand(:,:,:)
14270 : type(splitmix64_type) , intent(inout) :: rng
14271 : end subroutine
14272 : #endif
14273 :
14274 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14275 :
14276 : #if RK5_ENABLED
14277 : PURE module subroutine setUnifRandRNGSDD_D3_RK5(rng, rand)
14278 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14279 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_RK5
14280 : #endif
14281 : use pm_kind, only: RKC => RK5
14282 : real(RKC) , intent(out) :: rand(:,:,:)
14283 : type(splitmix64_type) , intent(inout) :: rng
14284 : end subroutine
14285 : #endif
14286 :
14287 : #if RK4_ENABLED
14288 : PURE module subroutine setUnifRandRNGSDD_D3_RK4(rng, rand)
14289 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14290 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_RK4
14291 : #endif
14292 : use pm_kind, only: RKC => RK4
14293 : real(RKC) , intent(out) :: rand(:,:,:)
14294 : type(splitmix64_type) , intent(inout) :: rng
14295 : end subroutine
14296 : #endif
14297 :
14298 : #if RK3_ENABLED
14299 : PURE module subroutine setUnifRandRNGSDD_D3_RK3(rng, rand)
14300 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14301 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_RK3
14302 : #endif
14303 : use pm_kind, only: RKC => RK3
14304 : real(RKC) , intent(out) :: rand(:,:,:)
14305 : type(splitmix64_type) , intent(inout) :: rng
14306 : end subroutine
14307 : #endif
14308 :
14309 : #if RK2_ENABLED
14310 : PURE module subroutine setUnifRandRNGSDD_D3_RK2(rng, rand)
14311 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14312 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_RK2
14313 : #endif
14314 : use pm_kind, only: RKC => RK2
14315 : real(RKC) , intent(out) :: rand(:,:,:)
14316 : type(splitmix64_type) , intent(inout) :: rng
14317 : end subroutine
14318 : #endif
14319 :
14320 : #if RK1_ENABLED
14321 : PURE module subroutine setUnifRandRNGSDD_D3_RK1(rng, rand)
14322 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14323 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSDD_D3_RK1
14324 : #endif
14325 : use pm_kind, only: RKC => RK1
14326 : real(RKC) , intent(out) :: rand(:,:,:)
14327 : type(splitmix64_type) , intent(inout) :: rng
14328 : end subroutine
14329 : #endif
14330 :
14331 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14332 :
14333 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14334 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14335 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14336 :
14337 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14338 :
14339 : #if SK5_ENABLED
14340 : PURE module subroutine setUnifRandRNGSLU_D3_SK5(rng, rand, lb, ub)
14341 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14342 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_SK5
14343 : #endif
14344 : use pm_kind, only: SKC => SK5
14345 : character(*,SKC) , intent(out) :: rand(:,:,:)
14346 : character(*,SKC) , intent(in) :: lb, ub
14347 : type(splitmix64_type) , intent(inout) :: rng
14348 : end subroutine
14349 : #endif
14350 :
14351 : #if SK4_ENABLED
14352 : PURE module subroutine setUnifRandRNGSLU_D3_SK4(rng, rand, lb, ub)
14353 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14354 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_SK4
14355 : #endif
14356 : use pm_kind, only: SKC => SK4
14357 : character(*,SKC) , intent(out) :: rand(:,:,:)
14358 : character(*,SKC) , intent(in) :: lb, ub
14359 : type(splitmix64_type) , intent(inout) :: rng
14360 : end subroutine
14361 : #endif
14362 :
14363 : #if SK3_ENABLED
14364 : PURE module subroutine setUnifRandRNGSLU_D3_SK3(rng, rand, lb, ub)
14365 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14366 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_SK3
14367 : #endif
14368 : use pm_kind, only: SKC => SK3
14369 : character(*,SKC) , intent(out) :: rand(:,:,:)
14370 : character(*,SKC) , intent(in) :: lb, ub
14371 : type(splitmix64_type) , intent(inout) :: rng
14372 : end subroutine
14373 : #endif
14374 :
14375 : #if SK2_ENABLED
14376 : PURE module subroutine setUnifRandRNGSLU_D3_SK2(rng, rand, lb, ub)
14377 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14378 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_SK2
14379 : #endif
14380 : use pm_kind, only: SKC => SK2
14381 : character(*,SKC) , intent(out) :: rand(:,:,:)
14382 : character(*,SKC) , intent(in) :: lb, ub
14383 : type(splitmix64_type) , intent(inout) :: rng
14384 : end subroutine
14385 : #endif
14386 :
14387 : #if SK1_ENABLED
14388 : PURE module subroutine setUnifRandRNGSLU_D3_SK1(rng, rand, lb, ub)
14389 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14390 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_SK1
14391 : #endif
14392 : use pm_kind, only: SKC => SK1
14393 : character(*,SKC) , intent(out) :: rand(:,:,:)
14394 : character(*,SKC) , intent(in) :: lb, ub
14395 : type(splitmix64_type) , intent(inout) :: rng
14396 : end subroutine
14397 : #endif
14398 :
14399 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14400 :
14401 : #if IK5_ENABLED
14402 : PURE module subroutine setUnifRandRNGSLU_D3_IK5(rng, rand, lb, ub)
14403 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14404 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_IK5
14405 : #endif
14406 : use pm_kind, only: IKC => IK5
14407 : integer(IKC) , intent(out) :: rand(:,:,:)
14408 : integer(IKC) , intent(in) :: lb, ub
14409 : type(splitmix64_type) , intent(inout) :: rng
14410 : end subroutine
14411 : #endif
14412 :
14413 : #if IK4_ENABLED
14414 : PURE module subroutine setUnifRandRNGSLU_D3_IK4(rng, rand, lb, ub)
14415 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14416 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_IK4
14417 : #endif
14418 : use pm_kind, only: IKC => IK4
14419 : integer(IKC) , intent(out) :: rand(:,:,:)
14420 : integer(IKC) , intent(in) :: lb, ub
14421 : type(splitmix64_type) , intent(inout) :: rng
14422 : end subroutine
14423 : #endif
14424 :
14425 : #if IK3_ENABLED
14426 : PURE module subroutine setUnifRandRNGSLU_D3_IK3(rng, rand, lb, ub)
14427 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14428 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_IK3
14429 : #endif
14430 : use pm_kind, only: IKC => IK3
14431 : integer(IKC) , intent(out) :: rand(:,:,:)
14432 : integer(IKC) , intent(in) :: lb, ub
14433 : type(splitmix64_type) , intent(inout) :: rng
14434 : end subroutine
14435 : #endif
14436 :
14437 : #if IK2_ENABLED
14438 : PURE module subroutine setUnifRandRNGSLU_D3_IK2(rng, rand, lb, ub)
14439 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14440 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_IK2
14441 : #endif
14442 : use pm_kind, only: IKC => IK2
14443 : integer(IKC) , intent(out) :: rand(:,:,:)
14444 : integer(IKC) , intent(in) :: lb, ub
14445 : type(splitmix64_type) , intent(inout) :: rng
14446 : end subroutine
14447 : #endif
14448 :
14449 : #if IK1_ENABLED
14450 : PURE module subroutine setUnifRandRNGSLU_D3_IK1(rng, rand, lb, ub)
14451 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14452 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_IK1
14453 : #endif
14454 : use pm_kind, only: IKC => IK1
14455 : integer(IKC) , intent(out) :: rand(:,:,:)
14456 : integer(IKC) , intent(in) :: lb, ub
14457 : type(splitmix64_type) , intent(inout) :: rng
14458 : end subroutine
14459 : #endif
14460 :
14461 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14462 :
14463 : #if LK5_ENABLED
14464 : PURE module subroutine setUnifRandRNGSLU_D3_LK5(rng, rand, lb, ub)
14465 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14466 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_LK5
14467 : #endif
14468 : use pm_kind, only: LKC => LK5
14469 : logical(LKC) , intent(out) :: rand(:,:,:)
14470 : logical(LKC) , intent(in) :: lb, ub
14471 : type(splitmix64_type) , intent(inout) :: rng
14472 : end subroutine
14473 : #endif
14474 :
14475 : #if LK4_ENABLED
14476 : PURE module subroutine setUnifRandRNGSLU_D3_LK4(rng, rand, lb, ub)
14477 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14478 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_LK4
14479 : #endif
14480 : use pm_kind, only: LKC => LK4
14481 : logical(LKC) , intent(out) :: rand(:,:,:)
14482 : logical(LKC) , intent(in) :: lb, ub
14483 : type(splitmix64_type) , intent(inout) :: rng
14484 : end subroutine
14485 : #endif
14486 :
14487 : #if LK3_ENABLED
14488 : PURE module subroutine setUnifRandRNGSLU_D3_LK3(rng, rand, lb, ub)
14489 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14490 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_LK3
14491 : #endif
14492 : use pm_kind, only: LKC => LK3
14493 : logical(LKC) , intent(out) :: rand(:,:,:)
14494 : logical(LKC) , intent(in) :: lb, ub
14495 : type(splitmix64_type) , intent(inout) :: rng
14496 : end subroutine
14497 : #endif
14498 :
14499 : #if LK2_ENABLED
14500 : PURE module subroutine setUnifRandRNGSLU_D3_LK2(rng, rand, lb, ub)
14501 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14502 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_LK2
14503 : #endif
14504 : use pm_kind, only: LKC => LK2
14505 : logical(LKC) , intent(out) :: rand(:,:,:)
14506 : logical(LKC) , intent(in) :: lb, ub
14507 : type(splitmix64_type) , intent(inout) :: rng
14508 : end subroutine
14509 : #endif
14510 :
14511 : #if LK1_ENABLED
14512 : PURE module subroutine setUnifRandRNGSLU_D3_LK1(rng, rand, lb, ub)
14513 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14514 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_LK1
14515 : #endif
14516 : use pm_kind, only: LKC => LK1
14517 : logical(LKC) , intent(out) :: rand(:,:,:)
14518 : logical(LKC) , intent(in) :: lb, ub
14519 : type(splitmix64_type) , intent(inout) :: rng
14520 : end subroutine
14521 : #endif
14522 :
14523 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14524 :
14525 : #if CK5_ENABLED
14526 : PURE module subroutine setUnifRandRNGSLU_D3_CK5(rng, rand, lb, ub)
14527 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14528 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_CK5
14529 : #endif
14530 : use pm_kind, only: CKC => CK5
14531 : complex(CKC) , intent(out) :: rand(:,:,:)
14532 : complex(CKC) , intent(in) :: lb, ub
14533 : type(splitmix64_type) , intent(inout) :: rng
14534 : end subroutine
14535 : #endif
14536 :
14537 : #if CK4_ENABLED
14538 : PURE module subroutine setUnifRandRNGSLU_D3_CK4(rng, rand, lb, ub)
14539 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14540 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_CK4
14541 : #endif
14542 : use pm_kind, only: CKC => CK4
14543 : complex(CKC) , intent(out) :: rand(:,:,:)
14544 : complex(CKC) , intent(in) :: lb, ub
14545 : type(splitmix64_type) , intent(inout) :: rng
14546 : end subroutine
14547 : #endif
14548 :
14549 : #if CK3_ENABLED
14550 : PURE module subroutine setUnifRandRNGSLU_D3_CK3(rng, rand, lb, ub)
14551 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14552 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_CK3
14553 : #endif
14554 : use pm_kind, only: CKC => CK3
14555 : complex(CKC) , intent(out) :: rand(:,:,:)
14556 : complex(CKC) , intent(in) :: lb, ub
14557 : type(splitmix64_type) , intent(inout) :: rng
14558 : end subroutine
14559 : #endif
14560 :
14561 : #if CK2_ENABLED
14562 : PURE module subroutine setUnifRandRNGSLU_D3_CK2(rng, rand, lb, ub)
14563 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14564 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_CK2
14565 : #endif
14566 : use pm_kind, only: CKC => CK2
14567 : complex(CKC) , intent(out) :: rand(:,:,:)
14568 : complex(CKC) , intent(in) :: lb, ub
14569 : type(splitmix64_type) , intent(inout) :: rng
14570 : end subroutine
14571 : #endif
14572 :
14573 : #if CK1_ENABLED
14574 : PURE module subroutine setUnifRandRNGSLU_D3_CK1(rng, rand, lb, ub)
14575 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14576 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_CK1
14577 : #endif
14578 : use pm_kind, only: CKC => CK1
14579 : complex(CKC) , intent(out) :: rand(:,:,:)
14580 : complex(CKC) , intent(in) :: lb, ub
14581 : type(splitmix64_type) , intent(inout) :: rng
14582 : end subroutine
14583 : #endif
14584 :
14585 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14586 :
14587 : #if RK5_ENABLED
14588 : PURE module subroutine setUnifRandRNGSLU_D3_RK5(rng, rand, lb, ub)
14589 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14590 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_RK5
14591 : #endif
14592 : use pm_kind, only: RKC => RK5
14593 : real(RKC) , intent(out) :: rand(:,:,:)
14594 : real(RKC) , intent(in) :: lb, ub
14595 : type(splitmix64_type) , intent(inout) :: rng
14596 : end subroutine
14597 : #endif
14598 :
14599 : #if RK4_ENABLED
14600 : PURE module subroutine setUnifRandRNGSLU_D3_RK4(rng, rand, lb, ub)
14601 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14602 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_RK4
14603 : #endif
14604 : use pm_kind, only: RKC => RK4
14605 : real(RKC) , intent(out) :: rand(:,:,:)
14606 : real(RKC) , intent(in) :: lb, ub
14607 : type(splitmix64_type) , intent(inout) :: rng
14608 : end subroutine
14609 : #endif
14610 :
14611 : #if RK3_ENABLED
14612 : PURE module subroutine setUnifRandRNGSLU_D3_RK3(rng, rand, lb, ub)
14613 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14614 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_RK3
14615 : #endif
14616 : use pm_kind, only: RKC => RK3
14617 : real(RKC) , intent(out) :: rand(:,:,:)
14618 : real(RKC) , intent(in) :: lb, ub
14619 : type(splitmix64_type) , intent(inout) :: rng
14620 : end subroutine
14621 : #endif
14622 :
14623 : #if RK2_ENABLED
14624 : PURE module subroutine setUnifRandRNGSLU_D3_RK2(rng, rand, lb, ub)
14625 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14626 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_RK2
14627 : #endif
14628 : use pm_kind, only: RKC => RK2
14629 : real(RKC) , intent(out) :: rand(:,:,:)
14630 : real(RKC) , intent(in) :: lb, ub
14631 : type(splitmix64_type) , intent(inout) :: rng
14632 : end subroutine
14633 : #endif
14634 :
14635 : #if RK1_ENABLED
14636 : PURE module subroutine setUnifRandRNGSLU_D3_RK1(rng, rand, lb, ub)
14637 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14638 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGSLU_D3_RK1
14639 : #endif
14640 : use pm_kind, only: RKC => RK1
14641 : real(RKC) , intent(out) :: rand(:,:,:)
14642 : real(RKC) , intent(in) :: lb, ub
14643 : type(splitmix64_type) , intent(inout) :: rng
14644 : end subroutine
14645 : #endif
14646 :
14647 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14648 :
14649 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14650 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14651 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14652 :
14653 : end interface
14654 :
14655 : ! RNGX
14656 :
14657 : interface setUnifRand
14658 :
14659 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14660 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14661 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14662 :
14663 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14664 :
14665 : #if SK5_ENABLED
14666 : PURE elemental module subroutine setUnifRandRNGGDD_D0_SK5(rng, rand)
14667 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14668 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_SK5
14669 : #endif
14670 : use pm_kind, only: SKC => SK5
14671 : character(*,SKC) , intent(out) :: rand
14672 : type(xoshiro256ssg_type) , intent(inout) :: rng
14673 : end subroutine
14674 : #endif
14675 :
14676 : #if SK4_ENABLED
14677 : PURE elemental module subroutine setUnifRandRNGGDD_D0_SK4(rng, rand)
14678 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14679 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_SK4
14680 : #endif
14681 : use pm_kind, only: SKC => SK4
14682 : character(*,SKC) , intent(out) :: rand
14683 : type(xoshiro256ssg_type) , intent(inout) :: rng
14684 : end subroutine
14685 : #endif
14686 :
14687 : #if SK3_ENABLED
14688 : PURE elemental module subroutine setUnifRandRNGGDD_D0_SK3(rng, rand)
14689 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14690 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_SK3
14691 : #endif
14692 : use pm_kind, only: SKC => SK3
14693 : character(*,SKC) , intent(out) :: rand
14694 : type(xoshiro256ssg_type) , intent(inout) :: rng
14695 : end subroutine
14696 : #endif
14697 :
14698 : #if SK2_ENABLED
14699 : PURE elemental module subroutine setUnifRandRNGGDD_D0_SK2(rng, rand)
14700 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14701 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_SK2
14702 : #endif
14703 : use pm_kind, only: SKC => SK2
14704 : character(*,SKC) , intent(out) :: rand
14705 : type(xoshiro256ssg_type) , intent(inout) :: rng
14706 : end subroutine
14707 : #endif
14708 :
14709 : #if SK1_ENABLED
14710 : PURE elemental module subroutine setUnifRandRNGGDD_D0_SK1(rng, rand)
14711 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14712 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_SK1
14713 : #endif
14714 : use pm_kind, only: SKC => SK1
14715 : character(*,SKC) , intent(out) :: rand
14716 : type(xoshiro256ssg_type) , intent(inout) :: rng
14717 : end subroutine
14718 : #endif
14719 :
14720 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14721 :
14722 : #if IK5_ENABLED
14723 : PURE elemental module subroutine setUnifRandRNGGDD_D0_IK5(rng, rand)
14724 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14725 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_IK5
14726 : #endif
14727 : use pm_kind, only: IKC => IK5
14728 : integer(IKC) , intent(out) :: rand
14729 : type(xoshiro256ssg_type) , intent(inout) :: rng
14730 : end subroutine
14731 : #endif
14732 :
14733 : #if IK4_ENABLED
14734 : PURE elemental module subroutine setUnifRandRNGGDD_D0_IK4(rng, rand)
14735 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14736 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_IK4
14737 : #endif
14738 : use pm_kind, only: IKC => IK4
14739 : integer(IKC) , intent(out) :: rand
14740 : type(xoshiro256ssg_type) , intent(inout) :: rng
14741 : end subroutine
14742 : #endif
14743 :
14744 : #if IK3_ENABLED
14745 : PURE elemental module subroutine setUnifRandRNGGDD_D0_IK3(rng, rand)
14746 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14747 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_IK3
14748 : #endif
14749 : use pm_kind, only: IKC => IK3
14750 : integer(IKC) , intent(out) :: rand
14751 : type(xoshiro256ssg_type) , intent(inout) :: rng
14752 : end subroutine
14753 : #endif
14754 :
14755 : #if IK2_ENABLED
14756 : PURE elemental module subroutine setUnifRandRNGGDD_D0_IK2(rng, rand)
14757 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14758 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_IK2
14759 : #endif
14760 : use pm_kind, only: IKC => IK2
14761 : integer(IKC) , intent(out) :: rand
14762 : type(xoshiro256ssg_type) , intent(inout) :: rng
14763 : end subroutine
14764 : #endif
14765 :
14766 : #if IK1_ENABLED
14767 : PURE elemental module subroutine setUnifRandRNGGDD_D0_IK1(rng, rand)
14768 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14769 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_IK1
14770 : #endif
14771 : use pm_kind, only: IKC => IK1
14772 : integer(IKC) , intent(out) :: rand
14773 : type(xoshiro256ssg_type) , intent(inout) :: rng
14774 : end subroutine
14775 : #endif
14776 :
14777 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14778 :
14779 : #if LK5_ENABLED
14780 : PURE elemental module subroutine setUnifRandRNGGDD_D0_LK5(rng, rand)
14781 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14782 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_LK5
14783 : #endif
14784 : use pm_kind, only: LKC => LK5
14785 : logical(LKC) , intent(out) :: rand
14786 : type(xoshiro256ssg_type) , intent(inout) :: rng
14787 : end subroutine
14788 : #endif
14789 :
14790 : #if LK4_ENABLED
14791 : PURE elemental module subroutine setUnifRandRNGGDD_D0_LK4(rng, rand)
14792 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14793 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_LK4
14794 : #endif
14795 : use pm_kind, only: LKC => LK4
14796 : logical(LKC) , intent(out) :: rand
14797 : type(xoshiro256ssg_type) , intent(inout) :: rng
14798 : end subroutine
14799 : #endif
14800 :
14801 : #if LK3_ENABLED
14802 : PURE elemental module subroutine setUnifRandRNGGDD_D0_LK3(rng, rand)
14803 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14804 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_LK3
14805 : #endif
14806 : use pm_kind, only: LKC => LK3
14807 : logical(LKC) , intent(out) :: rand
14808 : type(xoshiro256ssg_type) , intent(inout) :: rng
14809 : end subroutine
14810 : #endif
14811 :
14812 : #if LK2_ENABLED
14813 : PURE elemental module subroutine setUnifRandRNGGDD_D0_LK2(rng, rand)
14814 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14815 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_LK2
14816 : #endif
14817 : use pm_kind, only: LKC => LK2
14818 : logical(LKC) , intent(out) :: rand
14819 : type(xoshiro256ssg_type) , intent(inout) :: rng
14820 : end subroutine
14821 : #endif
14822 :
14823 : #if LK1_ENABLED
14824 : PURE elemental module subroutine setUnifRandRNGGDD_D0_LK1(rng, rand)
14825 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14826 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_LK1
14827 : #endif
14828 : use pm_kind, only: LKC => LK1
14829 : logical(LKC) , intent(out) :: rand
14830 : type(xoshiro256ssg_type) , intent(inout) :: rng
14831 : end subroutine
14832 : #endif
14833 :
14834 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14835 :
14836 : #if CK5_ENABLED
14837 : PURE elemental module subroutine setUnifRandRNGGDD_D0_CK5(rng, rand)
14838 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14839 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_CK5
14840 : #endif
14841 : use pm_kind, only: CKC => CK5
14842 : complex(CKC) , intent(out) :: rand
14843 : type(xoshiro256ssg_type) , intent(inout) :: rng
14844 : end subroutine
14845 : #endif
14846 :
14847 : #if CK4_ENABLED
14848 : PURE elemental module subroutine setUnifRandRNGGDD_D0_CK4(rng, rand)
14849 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14850 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_CK4
14851 : #endif
14852 : use pm_kind, only: CKC => CK4
14853 : complex(CKC) , intent(out) :: rand
14854 : type(xoshiro256ssg_type) , intent(inout) :: rng
14855 : end subroutine
14856 : #endif
14857 :
14858 : #if CK3_ENABLED
14859 : PURE elemental module subroutine setUnifRandRNGGDD_D0_CK3(rng, rand)
14860 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14861 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_CK3
14862 : #endif
14863 : use pm_kind, only: CKC => CK3
14864 : complex(CKC) , intent(out) :: rand
14865 : type(xoshiro256ssg_type) , intent(inout) :: rng
14866 : end subroutine
14867 : #endif
14868 :
14869 : #if CK2_ENABLED
14870 : PURE elemental module subroutine setUnifRandRNGGDD_D0_CK2(rng, rand)
14871 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14872 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_CK2
14873 : #endif
14874 : use pm_kind, only: CKC => CK2
14875 : complex(CKC) , intent(out) :: rand
14876 : type(xoshiro256ssg_type) , intent(inout) :: rng
14877 : end subroutine
14878 : #endif
14879 :
14880 : #if CK1_ENABLED
14881 : PURE elemental module subroutine setUnifRandRNGGDD_D0_CK1(rng, rand)
14882 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14883 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_CK1
14884 : #endif
14885 : use pm_kind, only: CKC => CK1
14886 : complex(CKC) , intent(out) :: rand
14887 : type(xoshiro256ssg_type) , intent(inout) :: rng
14888 : end subroutine
14889 : #endif
14890 :
14891 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14892 :
14893 : #if RK5_ENABLED
14894 : PURE elemental module subroutine setUnifRandRNGGDD_D0_RK5(rng, rand)
14895 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14896 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_RK5
14897 : #endif
14898 : use pm_kind, only: RKC => RK5
14899 : real(RKC) , intent(out) :: rand
14900 : type(xoshiro256ssg_type) , intent(inout) :: rng
14901 : end subroutine
14902 : #endif
14903 :
14904 : #if RK4_ENABLED
14905 : PURE elemental module subroutine setUnifRandRNGGDD_D0_RK4(rng, rand)
14906 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14907 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_RK4
14908 : #endif
14909 : use pm_kind, only: RKC => RK4
14910 : real(RKC) , intent(out) :: rand
14911 : type(xoshiro256ssg_type) , intent(inout) :: rng
14912 : end subroutine
14913 : #endif
14914 :
14915 : #if RK3_ENABLED
14916 : PURE elemental module subroutine setUnifRandRNGGDD_D0_RK3(rng, rand)
14917 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14918 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_RK3
14919 : #endif
14920 : use pm_kind, only: RKC => RK3
14921 : real(RKC) , intent(out) :: rand
14922 : type(xoshiro256ssg_type) , intent(inout) :: rng
14923 : end subroutine
14924 : #endif
14925 :
14926 : #if RK2_ENABLED
14927 : PURE elemental module subroutine setUnifRandRNGGDD_D0_RK2(rng, rand)
14928 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14929 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_RK2
14930 : #endif
14931 : use pm_kind, only: RKC => RK2
14932 : real(RKC) , intent(out) :: rand
14933 : type(xoshiro256ssg_type) , intent(inout) :: rng
14934 : end subroutine
14935 : #endif
14936 :
14937 : #if RK1_ENABLED
14938 : PURE elemental module subroutine setUnifRandRNGGDD_D0_RK1(rng, rand)
14939 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14940 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D0_RK1
14941 : #endif
14942 : use pm_kind, only: RKC => RK1
14943 : real(RKC) , intent(out) :: rand
14944 : type(xoshiro256ssg_type) , intent(inout) :: rng
14945 : end subroutine
14946 : #endif
14947 :
14948 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14949 :
14950 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14951 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14952 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14953 :
14954 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14955 :
14956 : #if SK5_ENABLED
14957 : PURE elemental module subroutine setUnifRandRNGGLU_D0_SK5(rng, rand, lb, ub)
14958 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14959 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_SK5
14960 : #endif
14961 : use pm_kind, only: SKC => SK5
14962 : character(*,SKC) , intent(out) :: rand
14963 : character(*,SKC) , intent(in) :: lb, ub
14964 : type(xoshiro256ssg_type) , intent(inout) :: rng
14965 : end subroutine
14966 : #endif
14967 :
14968 : #if SK4_ENABLED
14969 : PURE elemental module subroutine setUnifRandRNGGLU_D0_SK4(rng, rand, lb, ub)
14970 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14971 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_SK4
14972 : #endif
14973 : use pm_kind, only: SKC => SK4
14974 : character(*,SKC) , intent(out) :: rand
14975 : character(*,SKC) , intent(in) :: lb, ub
14976 : type(xoshiro256ssg_type) , intent(inout) :: rng
14977 : end subroutine
14978 : #endif
14979 :
14980 : #if SK3_ENABLED
14981 : PURE elemental module subroutine setUnifRandRNGGLU_D0_SK3(rng, rand, lb, ub)
14982 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14983 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_SK3
14984 : #endif
14985 : use pm_kind, only: SKC => SK3
14986 : character(*,SKC) , intent(out) :: rand
14987 : character(*,SKC) , intent(in) :: lb, ub
14988 : type(xoshiro256ssg_type) , intent(inout) :: rng
14989 : end subroutine
14990 : #endif
14991 :
14992 : #if SK2_ENABLED
14993 : PURE elemental module subroutine setUnifRandRNGGLU_D0_SK2(rng, rand, lb, ub)
14994 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
14995 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_SK2
14996 : #endif
14997 : use pm_kind, only: SKC => SK2
14998 : character(*,SKC) , intent(out) :: rand
14999 : character(*,SKC) , intent(in) :: lb, ub
15000 : type(xoshiro256ssg_type) , intent(inout) :: rng
15001 : end subroutine
15002 : #endif
15003 :
15004 : #if SK1_ENABLED
15005 : PURE elemental module subroutine setUnifRandRNGGLU_D0_SK1(rng, rand, lb, ub)
15006 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15007 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_SK1
15008 : #endif
15009 : use pm_kind, only: SKC => SK1
15010 : character(*,SKC) , intent(out) :: rand
15011 : character(*,SKC) , intent(in) :: lb, ub
15012 : type(xoshiro256ssg_type) , intent(inout) :: rng
15013 : end subroutine
15014 : #endif
15015 :
15016 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15017 :
15018 : #if IK5_ENABLED
15019 : PURE elemental module subroutine setUnifRandRNGGLU_D0_IK5(rng, rand, lb, ub)
15020 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15021 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_IK5
15022 : #endif
15023 : use pm_kind, only: IKC => IK5
15024 : integer(IKC) , intent(out) :: rand
15025 : integer(IKC) , intent(in) :: lb, ub
15026 : type(xoshiro256ssg_type) , intent(inout) :: rng
15027 : end subroutine
15028 : #endif
15029 :
15030 : #if IK4_ENABLED
15031 : PURE elemental module subroutine setUnifRandRNGGLU_D0_IK4(rng, rand, lb, ub)
15032 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15033 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_IK4
15034 : #endif
15035 : use pm_kind, only: IKC => IK4
15036 : integer(IKC) , intent(out) :: rand
15037 : integer(IKC) , intent(in) :: lb, ub
15038 : type(xoshiro256ssg_type) , intent(inout) :: rng
15039 : end subroutine
15040 : #endif
15041 :
15042 : #if IK3_ENABLED
15043 : PURE elemental module subroutine setUnifRandRNGGLU_D0_IK3(rng, rand, lb, ub)
15044 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15045 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_IK3
15046 : #endif
15047 : use pm_kind, only: IKC => IK3
15048 : integer(IKC) , intent(out) :: rand
15049 : integer(IKC) , intent(in) :: lb, ub
15050 : type(xoshiro256ssg_type) , intent(inout) :: rng
15051 : end subroutine
15052 : #endif
15053 :
15054 : #if IK2_ENABLED
15055 : PURE elemental module subroutine setUnifRandRNGGLU_D0_IK2(rng, rand, lb, ub)
15056 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15057 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_IK2
15058 : #endif
15059 : use pm_kind, only: IKC => IK2
15060 : integer(IKC) , intent(out) :: rand
15061 : integer(IKC) , intent(in) :: lb, ub
15062 : type(xoshiro256ssg_type) , intent(inout) :: rng
15063 : end subroutine
15064 : #endif
15065 :
15066 : #if IK1_ENABLED
15067 : PURE elemental module subroutine setUnifRandRNGGLU_D0_IK1(rng, rand, lb, ub)
15068 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15069 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_IK1
15070 : #endif
15071 : use pm_kind, only: IKC => IK1
15072 : integer(IKC) , intent(out) :: rand
15073 : integer(IKC) , intent(in) :: lb, ub
15074 : type(xoshiro256ssg_type) , intent(inout) :: rng
15075 : end subroutine
15076 : #endif
15077 :
15078 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15079 :
15080 : #if LK5_ENABLED
15081 : PURE elemental module subroutine setUnifRandRNGGLU_D0_LK5(rng, rand, lb, ub)
15082 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15083 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_LK5
15084 : #endif
15085 : use pm_kind, only: LKC => LK5
15086 : logical(LKC) , intent(out) :: rand
15087 : logical(LKC) , intent(in) :: lb, ub
15088 : type(xoshiro256ssg_type) , intent(inout) :: rng
15089 : end subroutine
15090 : #endif
15091 :
15092 : #if LK4_ENABLED
15093 : PURE elemental module subroutine setUnifRandRNGGLU_D0_LK4(rng, rand, lb, ub)
15094 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15095 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_LK4
15096 : #endif
15097 : use pm_kind, only: LKC => LK4
15098 : logical(LKC) , intent(out) :: rand
15099 : logical(LKC) , intent(in) :: lb, ub
15100 : type(xoshiro256ssg_type) , intent(inout) :: rng
15101 : end subroutine
15102 : #endif
15103 :
15104 : #if LK3_ENABLED
15105 : PURE elemental module subroutine setUnifRandRNGGLU_D0_LK3(rng, rand, lb, ub)
15106 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15107 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_LK3
15108 : #endif
15109 : use pm_kind, only: LKC => LK3
15110 : logical(LKC) , intent(out) :: rand
15111 : logical(LKC) , intent(in) :: lb, ub
15112 : type(xoshiro256ssg_type) , intent(inout) :: rng
15113 : end subroutine
15114 : #endif
15115 :
15116 : #if LK2_ENABLED
15117 : PURE elemental module subroutine setUnifRandRNGGLU_D0_LK2(rng, rand, lb, ub)
15118 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15119 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_LK2
15120 : #endif
15121 : use pm_kind, only: LKC => LK2
15122 : logical(LKC) , intent(out) :: rand
15123 : logical(LKC) , intent(in) :: lb, ub
15124 : type(xoshiro256ssg_type) , intent(inout) :: rng
15125 : end subroutine
15126 : #endif
15127 :
15128 : #if LK1_ENABLED
15129 : PURE elemental module subroutine setUnifRandRNGGLU_D0_LK1(rng, rand, lb, ub)
15130 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15131 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_LK1
15132 : #endif
15133 : use pm_kind, only: LKC => LK1
15134 : logical(LKC) , intent(out) :: rand
15135 : logical(LKC) , intent(in) :: lb, ub
15136 : type(xoshiro256ssg_type) , intent(inout) :: rng
15137 : end subroutine
15138 : #endif
15139 :
15140 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15141 :
15142 : #if CK5_ENABLED
15143 : PURE elemental module subroutine setUnifRandRNGGLU_D0_CK5(rng, rand, lb, ub)
15144 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15145 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_CK5
15146 : #endif
15147 : use pm_kind, only: CKC => CK5
15148 : complex(CKC) , intent(out) :: rand
15149 : complex(CKC) , intent(in) :: lb, ub
15150 : type(xoshiro256ssg_type) , intent(inout) :: rng
15151 : end subroutine
15152 : #endif
15153 :
15154 : #if CK4_ENABLED
15155 : PURE elemental module subroutine setUnifRandRNGGLU_D0_CK4(rng, rand, lb, ub)
15156 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15157 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_CK4
15158 : #endif
15159 : use pm_kind, only: CKC => CK4
15160 : complex(CKC) , intent(out) :: rand
15161 : complex(CKC) , intent(in) :: lb, ub
15162 : type(xoshiro256ssg_type) , intent(inout) :: rng
15163 : end subroutine
15164 : #endif
15165 :
15166 : #if CK3_ENABLED
15167 : PURE elemental module subroutine setUnifRandRNGGLU_D0_CK3(rng, rand, lb, ub)
15168 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15169 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_CK3
15170 : #endif
15171 : use pm_kind, only: CKC => CK3
15172 : complex(CKC) , intent(out) :: rand
15173 : complex(CKC) , intent(in) :: lb, ub
15174 : type(xoshiro256ssg_type) , intent(inout) :: rng
15175 : end subroutine
15176 : #endif
15177 :
15178 : #if CK2_ENABLED
15179 : PURE elemental module subroutine setUnifRandRNGGLU_D0_CK2(rng, rand, lb, ub)
15180 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15181 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_CK2
15182 : #endif
15183 : use pm_kind, only: CKC => CK2
15184 : complex(CKC) , intent(out) :: rand
15185 : complex(CKC) , intent(in) :: lb, ub
15186 : type(xoshiro256ssg_type) , intent(inout) :: rng
15187 : end subroutine
15188 : #endif
15189 :
15190 : #if CK1_ENABLED
15191 : PURE elemental module subroutine setUnifRandRNGGLU_D0_CK1(rng, rand, lb, ub)
15192 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15193 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_CK1
15194 : #endif
15195 : use pm_kind, only: CKC => CK1
15196 : complex(CKC) , intent(out) :: rand
15197 : complex(CKC) , intent(in) :: lb, ub
15198 : type(xoshiro256ssg_type) , intent(inout) :: rng
15199 : end subroutine
15200 : #endif
15201 :
15202 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15203 :
15204 : #if RK5_ENABLED
15205 : PURE elemental module subroutine setUnifRandRNGGLU_D0_RK5(rng, rand, lb, ub)
15206 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15207 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_RK5
15208 : #endif
15209 : use pm_kind, only: RKC => RK5
15210 : real(RKC) , intent(out) :: rand
15211 : real(RKC) , intent(in) :: lb, ub
15212 : type(xoshiro256ssg_type) , intent(inout) :: rng
15213 : end subroutine
15214 : #endif
15215 :
15216 : #if RK4_ENABLED
15217 : PURE elemental module subroutine setUnifRandRNGGLU_D0_RK4(rng, rand, lb, ub)
15218 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15219 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_RK4
15220 : #endif
15221 : use pm_kind, only: RKC => RK4
15222 : real(RKC) , intent(out) :: rand
15223 : real(RKC) , intent(in) :: lb, ub
15224 : type(xoshiro256ssg_type) , intent(inout) :: rng
15225 : end subroutine
15226 : #endif
15227 :
15228 : #if RK3_ENABLED
15229 : PURE elemental module subroutine setUnifRandRNGGLU_D0_RK3(rng, rand, lb, ub)
15230 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15231 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_RK3
15232 : #endif
15233 : use pm_kind, only: RKC => RK3
15234 : real(RKC) , intent(out) :: rand
15235 : real(RKC) , intent(in) :: lb, ub
15236 : type(xoshiro256ssg_type) , intent(inout) :: rng
15237 : end subroutine
15238 : #endif
15239 :
15240 : #if RK2_ENABLED
15241 : PURE elemental module subroutine setUnifRandRNGGLU_D0_RK2(rng, rand, lb, ub)
15242 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15243 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_RK2
15244 : #endif
15245 : use pm_kind, only: RKC => RK2
15246 : real(RKC) , intent(out) :: rand
15247 : real(RKC) , intent(in) :: lb, ub
15248 : type(xoshiro256ssg_type) , intent(inout) :: rng
15249 : end subroutine
15250 : #endif
15251 :
15252 : #if RK1_ENABLED
15253 : PURE elemental module subroutine setUnifRandRNGGLU_D0_RK1(rng, rand, lb, ub)
15254 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15255 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D0_RK1
15256 : #endif
15257 : use pm_kind, only: RKC => RK1
15258 : real(RKC) , intent(out) :: rand
15259 : real(RKC) , intent(in) :: lb, ub
15260 : type(xoshiro256ssg_type) , intent(inout) :: rng
15261 : end subroutine
15262 : #endif
15263 :
15264 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15265 :
15266 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15267 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15268 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15269 :
15270 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15271 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15272 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15273 :
15274 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15275 :
15276 : #if SK5_ENABLED
15277 : PURE module subroutine setUnifRandRNGGDD_D1_SK5(rng, rand)
15278 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15279 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_SK5
15280 : #endif
15281 : use pm_kind, only: SKC => SK5
15282 : character(*,SKC) , intent(out) :: rand(:)
15283 : type(xoshiro256ssg_type) , intent(inout) :: rng
15284 : end subroutine
15285 : #endif
15286 :
15287 : #if SK4_ENABLED
15288 : PURE module subroutine setUnifRandRNGGDD_D1_SK4(rng, rand)
15289 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15290 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_SK4
15291 : #endif
15292 : use pm_kind, only: SKC => SK4
15293 : character(*,SKC) , intent(out) :: rand(:)
15294 : type(xoshiro256ssg_type) , intent(inout) :: rng
15295 : end subroutine
15296 : #endif
15297 :
15298 : #if SK3_ENABLED
15299 : PURE module subroutine setUnifRandRNGGDD_D1_SK3(rng, rand)
15300 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15301 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_SK3
15302 : #endif
15303 : use pm_kind, only: SKC => SK3
15304 : character(*,SKC) , intent(out) :: rand(:)
15305 : type(xoshiro256ssg_type) , intent(inout) :: rng
15306 : end subroutine
15307 : #endif
15308 :
15309 : #if SK2_ENABLED
15310 : PURE module subroutine setUnifRandRNGGDD_D1_SK2(rng, rand)
15311 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15312 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_SK2
15313 : #endif
15314 : use pm_kind, only: SKC => SK2
15315 : character(*,SKC) , intent(out) :: rand(:)
15316 : type(xoshiro256ssg_type) , intent(inout) :: rng
15317 : end subroutine
15318 : #endif
15319 :
15320 : #if SK1_ENABLED
15321 : PURE module subroutine setUnifRandRNGGDD_D1_SK1(rng, rand)
15322 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15323 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_SK1
15324 : #endif
15325 : use pm_kind, only: SKC => SK1
15326 : character(*,SKC) , intent(out) :: rand(:)
15327 : type(xoshiro256ssg_type) , intent(inout) :: rng
15328 : end subroutine
15329 : #endif
15330 :
15331 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15332 :
15333 : #if IK5_ENABLED
15334 : PURE module subroutine setUnifRandRNGGDD_D1_IK5(rng, rand)
15335 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15336 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_IK5
15337 : #endif
15338 : use pm_kind, only: IKC => IK5
15339 : integer(IKC) , intent(out) :: rand(:)
15340 : type(xoshiro256ssg_type) , intent(inout) :: rng
15341 : end subroutine
15342 : #endif
15343 :
15344 : #if IK4_ENABLED
15345 : PURE module subroutine setUnifRandRNGGDD_D1_IK4(rng, rand)
15346 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15347 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_IK4
15348 : #endif
15349 : use pm_kind, only: IKC => IK4
15350 : integer(IKC) , intent(out) :: rand(:)
15351 : type(xoshiro256ssg_type) , intent(inout) :: rng
15352 : end subroutine
15353 : #endif
15354 :
15355 : #if IK3_ENABLED
15356 : PURE module subroutine setUnifRandRNGGDD_D1_IK3(rng, rand)
15357 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15358 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_IK3
15359 : #endif
15360 : use pm_kind, only: IKC => IK3
15361 : integer(IKC) , intent(out) :: rand(:)
15362 : type(xoshiro256ssg_type) , intent(inout) :: rng
15363 : end subroutine
15364 : #endif
15365 :
15366 : #if IK2_ENABLED
15367 : PURE module subroutine setUnifRandRNGGDD_D1_IK2(rng, rand)
15368 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15369 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_IK2
15370 : #endif
15371 : use pm_kind, only: IKC => IK2
15372 : integer(IKC) , intent(out) :: rand(:)
15373 : type(xoshiro256ssg_type) , intent(inout) :: rng
15374 : end subroutine
15375 : #endif
15376 :
15377 : #if IK1_ENABLED
15378 : PURE module subroutine setUnifRandRNGGDD_D1_IK1(rng, rand)
15379 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15380 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_IK1
15381 : #endif
15382 : use pm_kind, only: IKC => IK1
15383 : integer(IKC) , intent(out) :: rand(:)
15384 : type(xoshiro256ssg_type) , intent(inout) :: rng
15385 : end subroutine
15386 : #endif
15387 :
15388 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15389 :
15390 : #if LK5_ENABLED
15391 : PURE module subroutine setUnifRandRNGGDD_D1_LK5(rng, rand)
15392 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15393 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_LK5
15394 : #endif
15395 : use pm_kind, only: LKC => LK5
15396 : logical(LKC) , intent(out) :: rand(:)
15397 : type(xoshiro256ssg_type) , intent(inout) :: rng
15398 : end subroutine
15399 : #endif
15400 :
15401 : #if LK4_ENABLED
15402 : PURE module subroutine setUnifRandRNGGDD_D1_LK4(rng, rand)
15403 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15404 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_LK4
15405 : #endif
15406 : use pm_kind, only: LKC => LK4
15407 : logical(LKC) , intent(out) :: rand(:)
15408 : type(xoshiro256ssg_type) , intent(inout) :: rng
15409 : end subroutine
15410 : #endif
15411 :
15412 : #if LK3_ENABLED
15413 : PURE module subroutine setUnifRandRNGGDD_D1_LK3(rng, rand)
15414 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15415 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_LK3
15416 : #endif
15417 : use pm_kind, only: LKC => LK3
15418 : logical(LKC) , intent(out) :: rand(:)
15419 : type(xoshiro256ssg_type) , intent(inout) :: rng
15420 : end subroutine
15421 : #endif
15422 :
15423 : #if LK2_ENABLED
15424 : PURE module subroutine setUnifRandRNGGDD_D1_LK2(rng, rand)
15425 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15426 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_LK2
15427 : #endif
15428 : use pm_kind, only: LKC => LK2
15429 : logical(LKC) , intent(out) :: rand(:)
15430 : type(xoshiro256ssg_type) , intent(inout) :: rng
15431 : end subroutine
15432 : #endif
15433 :
15434 : #if LK1_ENABLED
15435 : PURE module subroutine setUnifRandRNGGDD_D1_LK1(rng, rand)
15436 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15437 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_LK1
15438 : #endif
15439 : use pm_kind, only: LKC => LK1
15440 : logical(LKC) , intent(out) :: rand(:)
15441 : type(xoshiro256ssg_type) , intent(inout) :: rng
15442 : end subroutine
15443 : #endif
15444 :
15445 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15446 :
15447 : #if CK5_ENABLED
15448 : PURE module subroutine setUnifRandRNGGDD_D1_CK5(rng, rand)
15449 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15450 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_CK5
15451 : #endif
15452 : use pm_kind, only: CKC => CK5
15453 : complex(CKC) , intent(out) :: rand(:)
15454 : type(xoshiro256ssg_type) , intent(inout) :: rng
15455 : end subroutine
15456 : #endif
15457 :
15458 : #if CK4_ENABLED
15459 : PURE module subroutine setUnifRandRNGGDD_D1_CK4(rng, rand)
15460 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15461 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_CK4
15462 : #endif
15463 : use pm_kind, only: CKC => CK4
15464 : complex(CKC) , intent(out) :: rand(:)
15465 : type(xoshiro256ssg_type) , intent(inout) :: rng
15466 : end subroutine
15467 : #endif
15468 :
15469 : #if CK3_ENABLED
15470 : PURE module subroutine setUnifRandRNGGDD_D1_CK3(rng, rand)
15471 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15472 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_CK3
15473 : #endif
15474 : use pm_kind, only: CKC => CK3
15475 : complex(CKC) , intent(out) :: rand(:)
15476 : type(xoshiro256ssg_type) , intent(inout) :: rng
15477 : end subroutine
15478 : #endif
15479 :
15480 : #if CK2_ENABLED
15481 : PURE module subroutine setUnifRandRNGGDD_D1_CK2(rng, rand)
15482 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15483 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_CK2
15484 : #endif
15485 : use pm_kind, only: CKC => CK2
15486 : complex(CKC) , intent(out) :: rand(:)
15487 : type(xoshiro256ssg_type) , intent(inout) :: rng
15488 : end subroutine
15489 : #endif
15490 :
15491 : #if CK1_ENABLED
15492 : PURE module subroutine setUnifRandRNGGDD_D1_CK1(rng, rand)
15493 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15494 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_CK1
15495 : #endif
15496 : use pm_kind, only: CKC => CK1
15497 : complex(CKC) , intent(out) :: rand(:)
15498 : type(xoshiro256ssg_type) , intent(inout) :: rng
15499 : end subroutine
15500 : #endif
15501 :
15502 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15503 :
15504 : #if RK5_ENABLED
15505 : PURE module subroutine setUnifRandRNGGDD_D1_RK5(rng, rand)
15506 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15507 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_RK5
15508 : #endif
15509 : use pm_kind, only: RKC => RK5
15510 : real(RKC) , intent(out) :: rand(:)
15511 : type(xoshiro256ssg_type) , intent(inout) :: rng
15512 : end subroutine
15513 : #endif
15514 :
15515 : #if RK4_ENABLED
15516 : PURE module subroutine setUnifRandRNGGDD_D1_RK4(rng, rand)
15517 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15518 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_RK4
15519 : #endif
15520 : use pm_kind, only: RKC => RK4
15521 : real(RKC) , intent(out) :: rand(:)
15522 : type(xoshiro256ssg_type) , intent(inout) :: rng
15523 : end subroutine
15524 : #endif
15525 :
15526 : #if RK3_ENABLED
15527 : PURE module subroutine setUnifRandRNGGDD_D1_RK3(rng, rand)
15528 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15529 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_RK3
15530 : #endif
15531 : use pm_kind, only: RKC => RK3
15532 : real(RKC) , intent(out) :: rand(:)
15533 : type(xoshiro256ssg_type) , intent(inout) :: rng
15534 : end subroutine
15535 : #endif
15536 :
15537 : #if RK2_ENABLED
15538 : PURE module subroutine setUnifRandRNGGDD_D1_RK2(rng, rand)
15539 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15540 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_RK2
15541 : #endif
15542 : use pm_kind, only: RKC => RK2
15543 : real(RKC) , intent(out) :: rand(:)
15544 : type(xoshiro256ssg_type) , intent(inout) :: rng
15545 : end subroutine
15546 : #endif
15547 :
15548 : #if RK1_ENABLED
15549 : PURE module subroutine setUnifRandRNGGDD_D1_RK1(rng, rand)
15550 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15551 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D1_RK1
15552 : #endif
15553 : use pm_kind, only: RKC => RK1
15554 : real(RKC) , intent(out) :: rand(:)
15555 : type(xoshiro256ssg_type) , intent(inout) :: rng
15556 : end subroutine
15557 : #endif
15558 :
15559 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15560 :
15561 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15562 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15563 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15564 :
15565 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15566 :
15567 : #if SK5_ENABLED
15568 : PURE module subroutine setUnifRandRNGGLU_D1_SK5(rng, rand, lb, ub)
15569 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15570 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_SK5
15571 : #endif
15572 : use pm_kind, only: SKC => SK5
15573 : character(*,SKC) , intent(out) :: rand(:)
15574 : character(*,SKC) , intent(in) :: lb, ub
15575 : type(xoshiro256ssg_type) , intent(inout) :: rng
15576 : end subroutine
15577 : #endif
15578 :
15579 : #if SK4_ENABLED
15580 : PURE module subroutine setUnifRandRNGGLU_D1_SK4(rng, rand, lb, ub)
15581 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15582 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_SK4
15583 : #endif
15584 : use pm_kind, only: SKC => SK4
15585 : character(*,SKC) , intent(out) :: rand(:)
15586 : character(*,SKC) , intent(in) :: lb, ub
15587 : type(xoshiro256ssg_type) , intent(inout) :: rng
15588 : end subroutine
15589 : #endif
15590 :
15591 : #if SK3_ENABLED
15592 : PURE module subroutine setUnifRandRNGGLU_D1_SK3(rng, rand, lb, ub)
15593 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15594 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_SK3
15595 : #endif
15596 : use pm_kind, only: SKC => SK3
15597 : character(*,SKC) , intent(out) :: rand(:)
15598 : character(*,SKC) , intent(in) :: lb, ub
15599 : type(xoshiro256ssg_type) , intent(inout) :: rng
15600 : end subroutine
15601 : #endif
15602 :
15603 : #if SK2_ENABLED
15604 : PURE module subroutine setUnifRandRNGGLU_D1_SK2(rng, rand, lb, ub)
15605 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15606 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_SK2
15607 : #endif
15608 : use pm_kind, only: SKC => SK2
15609 : character(*,SKC) , intent(out) :: rand(:)
15610 : character(*,SKC) , intent(in) :: lb, ub
15611 : type(xoshiro256ssg_type) , intent(inout) :: rng
15612 : end subroutine
15613 : #endif
15614 :
15615 : #if SK1_ENABLED
15616 : PURE module subroutine setUnifRandRNGGLU_D1_SK1(rng, rand, lb, ub)
15617 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15618 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_SK1
15619 : #endif
15620 : use pm_kind, only: SKC => SK1
15621 : character(*,SKC) , intent(out) :: rand(:)
15622 : character(*,SKC) , intent(in) :: lb, ub
15623 : type(xoshiro256ssg_type) , intent(inout) :: rng
15624 : end subroutine
15625 : #endif
15626 :
15627 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15628 :
15629 : #if IK5_ENABLED
15630 : PURE module subroutine setUnifRandRNGGLU_D1_IK5(rng, rand, lb, ub)
15631 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15632 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_IK5
15633 : #endif
15634 : use pm_kind, only: IKC => IK5
15635 : integer(IKC) , intent(out) :: rand(:)
15636 : integer(IKC) , intent(in) :: lb, ub
15637 : type(xoshiro256ssg_type) , intent(inout) :: rng
15638 : end subroutine
15639 : #endif
15640 :
15641 : #if IK4_ENABLED
15642 : PURE module subroutine setUnifRandRNGGLU_D1_IK4(rng, rand, lb, ub)
15643 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15644 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_IK4
15645 : #endif
15646 : use pm_kind, only: IKC => IK4
15647 : integer(IKC) , intent(out) :: rand(:)
15648 : integer(IKC) , intent(in) :: lb, ub
15649 : type(xoshiro256ssg_type) , intent(inout) :: rng
15650 : end subroutine
15651 : #endif
15652 :
15653 : #if IK3_ENABLED
15654 : PURE module subroutine setUnifRandRNGGLU_D1_IK3(rng, rand, lb, ub)
15655 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15656 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_IK3
15657 : #endif
15658 : use pm_kind, only: IKC => IK3
15659 : integer(IKC) , intent(out) :: rand(:)
15660 : integer(IKC) , intent(in) :: lb, ub
15661 : type(xoshiro256ssg_type) , intent(inout) :: rng
15662 : end subroutine
15663 : #endif
15664 :
15665 : #if IK2_ENABLED
15666 : PURE module subroutine setUnifRandRNGGLU_D1_IK2(rng, rand, lb, ub)
15667 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15668 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_IK2
15669 : #endif
15670 : use pm_kind, only: IKC => IK2
15671 : integer(IKC) , intent(out) :: rand(:)
15672 : integer(IKC) , intent(in) :: lb, ub
15673 : type(xoshiro256ssg_type) , intent(inout) :: rng
15674 : end subroutine
15675 : #endif
15676 :
15677 : #if IK1_ENABLED
15678 : PURE module subroutine setUnifRandRNGGLU_D1_IK1(rng, rand, lb, ub)
15679 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15680 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_IK1
15681 : #endif
15682 : use pm_kind, only: IKC => IK1
15683 : integer(IKC) , intent(out) :: rand(:)
15684 : integer(IKC) , intent(in) :: lb, ub
15685 : type(xoshiro256ssg_type) , intent(inout) :: rng
15686 : end subroutine
15687 : #endif
15688 :
15689 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15690 :
15691 : #if LK5_ENABLED
15692 : PURE module subroutine setUnifRandRNGGLU_D1_LK5(rng, rand, lb, ub)
15693 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15694 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_LK5
15695 : #endif
15696 : use pm_kind, only: LKC => LK5
15697 : logical(LKC) , intent(out) :: rand(:)
15698 : logical(LKC) , intent(in) :: lb, ub
15699 : type(xoshiro256ssg_type) , intent(inout) :: rng
15700 : end subroutine
15701 : #endif
15702 :
15703 : #if LK4_ENABLED
15704 : PURE module subroutine setUnifRandRNGGLU_D1_LK4(rng, rand, lb, ub)
15705 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15706 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_LK4
15707 : #endif
15708 : use pm_kind, only: LKC => LK4
15709 : logical(LKC) , intent(out) :: rand(:)
15710 : logical(LKC) , intent(in) :: lb, ub
15711 : type(xoshiro256ssg_type) , intent(inout) :: rng
15712 : end subroutine
15713 : #endif
15714 :
15715 : #if LK3_ENABLED
15716 : PURE module subroutine setUnifRandRNGGLU_D1_LK3(rng, rand, lb, ub)
15717 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15718 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_LK3
15719 : #endif
15720 : use pm_kind, only: LKC => LK3
15721 : logical(LKC) , intent(out) :: rand(:)
15722 : logical(LKC) , intent(in) :: lb, ub
15723 : type(xoshiro256ssg_type) , intent(inout) :: rng
15724 : end subroutine
15725 : #endif
15726 :
15727 : #if LK2_ENABLED
15728 : PURE module subroutine setUnifRandRNGGLU_D1_LK2(rng, rand, lb, ub)
15729 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15730 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_LK2
15731 : #endif
15732 : use pm_kind, only: LKC => LK2
15733 : logical(LKC) , intent(out) :: rand(:)
15734 : logical(LKC) , intent(in) :: lb, ub
15735 : type(xoshiro256ssg_type) , intent(inout) :: rng
15736 : end subroutine
15737 : #endif
15738 :
15739 : #if LK1_ENABLED
15740 : PURE module subroutine setUnifRandRNGGLU_D1_LK1(rng, rand, lb, ub)
15741 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15742 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_LK1
15743 : #endif
15744 : use pm_kind, only: LKC => LK1
15745 : logical(LKC) , intent(out) :: rand(:)
15746 : logical(LKC) , intent(in) :: lb, ub
15747 : type(xoshiro256ssg_type) , intent(inout) :: rng
15748 : end subroutine
15749 : #endif
15750 :
15751 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15752 :
15753 : #if CK5_ENABLED
15754 : PURE module subroutine setUnifRandRNGGLU_D1_CK5(rng, rand, lb, ub)
15755 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15756 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_CK5
15757 : #endif
15758 : use pm_kind, only: CKC => CK5
15759 : complex(CKC) , intent(out) :: rand(:)
15760 : complex(CKC) , intent(in) :: lb, ub
15761 : type(xoshiro256ssg_type) , intent(inout) :: rng
15762 : end subroutine
15763 : #endif
15764 :
15765 : #if CK4_ENABLED
15766 : PURE module subroutine setUnifRandRNGGLU_D1_CK4(rng, rand, lb, ub)
15767 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15768 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_CK4
15769 : #endif
15770 : use pm_kind, only: CKC => CK4
15771 : complex(CKC) , intent(out) :: rand(:)
15772 : complex(CKC) , intent(in) :: lb, ub
15773 : type(xoshiro256ssg_type) , intent(inout) :: rng
15774 : end subroutine
15775 : #endif
15776 :
15777 : #if CK3_ENABLED
15778 : PURE module subroutine setUnifRandRNGGLU_D1_CK3(rng, rand, lb, ub)
15779 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15780 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_CK3
15781 : #endif
15782 : use pm_kind, only: CKC => CK3
15783 : complex(CKC) , intent(out) :: rand(:)
15784 : complex(CKC) , intent(in) :: lb, ub
15785 : type(xoshiro256ssg_type) , intent(inout) :: rng
15786 : end subroutine
15787 : #endif
15788 :
15789 : #if CK2_ENABLED
15790 : PURE module subroutine setUnifRandRNGGLU_D1_CK2(rng, rand, lb, ub)
15791 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15792 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_CK2
15793 : #endif
15794 : use pm_kind, only: CKC => CK2
15795 : complex(CKC) , intent(out) :: rand(:)
15796 : complex(CKC) , intent(in) :: lb, ub
15797 : type(xoshiro256ssg_type) , intent(inout) :: rng
15798 : end subroutine
15799 : #endif
15800 :
15801 : #if CK1_ENABLED
15802 : PURE module subroutine setUnifRandRNGGLU_D1_CK1(rng, rand, lb, ub)
15803 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15804 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_CK1
15805 : #endif
15806 : use pm_kind, only: CKC => CK1
15807 : complex(CKC) , intent(out) :: rand(:)
15808 : complex(CKC) , intent(in) :: lb, ub
15809 : type(xoshiro256ssg_type) , intent(inout) :: rng
15810 : end subroutine
15811 : #endif
15812 :
15813 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15814 :
15815 : #if RK5_ENABLED
15816 : PURE module subroutine setUnifRandRNGGLU_D1_RK5(rng, rand, lb, ub)
15817 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15818 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_RK5
15819 : #endif
15820 : use pm_kind, only: RKC => RK5
15821 : real(RKC) , intent(out) :: rand(:)
15822 : real(RKC) , intent(in) :: lb, ub
15823 : type(xoshiro256ssg_type) , intent(inout) :: rng
15824 : end subroutine
15825 : #endif
15826 :
15827 : #if RK4_ENABLED
15828 : PURE module subroutine setUnifRandRNGGLU_D1_RK4(rng, rand, lb, ub)
15829 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15830 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_RK4
15831 : #endif
15832 : use pm_kind, only: RKC => RK4
15833 : real(RKC) , intent(out) :: rand(:)
15834 : real(RKC) , intent(in) :: lb, ub
15835 : type(xoshiro256ssg_type) , intent(inout) :: rng
15836 : end subroutine
15837 : #endif
15838 :
15839 : #if RK3_ENABLED
15840 : PURE module subroutine setUnifRandRNGGLU_D1_RK3(rng, rand, lb, ub)
15841 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15842 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_RK3
15843 : #endif
15844 : use pm_kind, only: RKC => RK3
15845 : real(RKC) , intent(out) :: rand(:)
15846 : real(RKC) , intent(in) :: lb, ub
15847 : type(xoshiro256ssg_type) , intent(inout) :: rng
15848 : end subroutine
15849 : #endif
15850 :
15851 : #if RK2_ENABLED
15852 : PURE module subroutine setUnifRandRNGGLU_D1_RK2(rng, rand, lb, ub)
15853 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15854 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_RK2
15855 : #endif
15856 : use pm_kind, only: RKC => RK2
15857 : real(RKC) , intent(out) :: rand(:)
15858 : real(RKC) , intent(in) :: lb, ub
15859 : type(xoshiro256ssg_type) , intent(inout) :: rng
15860 : end subroutine
15861 : #endif
15862 :
15863 : #if RK1_ENABLED
15864 : PURE module subroutine setUnifRandRNGGLU_D1_RK1(rng, rand, lb, ub)
15865 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15866 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D1_RK1
15867 : #endif
15868 : use pm_kind, only: RKC => RK1
15869 : real(RKC) , intent(out) :: rand(:)
15870 : real(RKC) , intent(in) :: lb, ub
15871 : type(xoshiro256ssg_type) , intent(inout) :: rng
15872 : end subroutine
15873 : #endif
15874 :
15875 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15876 :
15877 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15878 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15879 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15880 :
15881 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15882 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15883 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15884 :
15885 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15886 :
15887 : #if SK5_ENABLED
15888 : PURE module subroutine setUnifRandRNGGDD_D2_SK5(rng, rand)
15889 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15890 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_SK5
15891 : #endif
15892 : use pm_kind, only: SKC => SK5
15893 : character(*,SKC) , intent(out) :: rand(:,:)
15894 : type(xoshiro256ssg_type) , intent(inout) :: rng
15895 : end subroutine
15896 : #endif
15897 :
15898 : #if SK4_ENABLED
15899 : PURE module subroutine setUnifRandRNGGDD_D2_SK4(rng, rand)
15900 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15901 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_SK4
15902 : #endif
15903 : use pm_kind, only: SKC => SK4
15904 : character(*,SKC) , intent(out) :: rand(:,:)
15905 : type(xoshiro256ssg_type) , intent(inout) :: rng
15906 : end subroutine
15907 : #endif
15908 :
15909 : #if SK3_ENABLED
15910 : PURE module subroutine setUnifRandRNGGDD_D2_SK3(rng, rand)
15911 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15912 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_SK3
15913 : #endif
15914 : use pm_kind, only: SKC => SK3
15915 : character(*,SKC) , intent(out) :: rand(:,:)
15916 : type(xoshiro256ssg_type) , intent(inout) :: rng
15917 : end subroutine
15918 : #endif
15919 :
15920 : #if SK2_ENABLED
15921 : PURE module subroutine setUnifRandRNGGDD_D2_SK2(rng, rand)
15922 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15923 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_SK2
15924 : #endif
15925 : use pm_kind, only: SKC => SK2
15926 : character(*,SKC) , intent(out) :: rand(:,:)
15927 : type(xoshiro256ssg_type) , intent(inout) :: rng
15928 : end subroutine
15929 : #endif
15930 :
15931 : #if SK1_ENABLED
15932 : PURE module subroutine setUnifRandRNGGDD_D2_SK1(rng, rand)
15933 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15934 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_SK1
15935 : #endif
15936 : use pm_kind, only: SKC => SK1
15937 : character(*,SKC) , intent(out) :: rand(:,:)
15938 : type(xoshiro256ssg_type) , intent(inout) :: rng
15939 : end subroutine
15940 : #endif
15941 :
15942 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15943 :
15944 : #if IK5_ENABLED
15945 : PURE module subroutine setUnifRandRNGGDD_D2_IK5(rng, rand)
15946 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15947 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_IK5
15948 : #endif
15949 : use pm_kind, only: IKC => IK5
15950 : integer(IKC) , intent(out) :: rand(:,:)
15951 : type(xoshiro256ssg_type) , intent(inout) :: rng
15952 : end subroutine
15953 : #endif
15954 :
15955 : #if IK4_ENABLED
15956 : PURE module subroutine setUnifRandRNGGDD_D2_IK4(rng, rand)
15957 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15958 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_IK4
15959 : #endif
15960 : use pm_kind, only: IKC => IK4
15961 : integer(IKC) , intent(out) :: rand(:,:)
15962 : type(xoshiro256ssg_type) , intent(inout) :: rng
15963 : end subroutine
15964 : #endif
15965 :
15966 : #if IK3_ENABLED
15967 : PURE module subroutine setUnifRandRNGGDD_D2_IK3(rng, rand)
15968 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15969 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_IK3
15970 : #endif
15971 : use pm_kind, only: IKC => IK3
15972 : integer(IKC) , intent(out) :: rand(:,:)
15973 : type(xoshiro256ssg_type) , intent(inout) :: rng
15974 : end subroutine
15975 : #endif
15976 :
15977 : #if IK2_ENABLED
15978 : PURE module subroutine setUnifRandRNGGDD_D2_IK2(rng, rand)
15979 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15980 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_IK2
15981 : #endif
15982 : use pm_kind, only: IKC => IK2
15983 : integer(IKC) , intent(out) :: rand(:,:)
15984 : type(xoshiro256ssg_type) , intent(inout) :: rng
15985 : end subroutine
15986 : #endif
15987 :
15988 : #if IK1_ENABLED
15989 : PURE module subroutine setUnifRandRNGGDD_D2_IK1(rng, rand)
15990 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
15991 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_IK1
15992 : #endif
15993 : use pm_kind, only: IKC => IK1
15994 : integer(IKC) , intent(out) :: rand(:,:)
15995 : type(xoshiro256ssg_type) , intent(inout) :: rng
15996 : end subroutine
15997 : #endif
15998 :
15999 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16000 :
16001 : #if LK5_ENABLED
16002 : PURE module subroutine setUnifRandRNGGDD_D2_LK5(rng, rand)
16003 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16004 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_LK5
16005 : #endif
16006 : use pm_kind, only: LKC => LK5
16007 : logical(LKC) , intent(out) :: rand(:,:)
16008 : type(xoshiro256ssg_type) , intent(inout) :: rng
16009 : end subroutine
16010 : #endif
16011 :
16012 : #if LK4_ENABLED
16013 : PURE module subroutine setUnifRandRNGGDD_D2_LK4(rng, rand)
16014 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16015 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_LK4
16016 : #endif
16017 : use pm_kind, only: LKC => LK4
16018 : logical(LKC) , intent(out) :: rand(:,:)
16019 : type(xoshiro256ssg_type) , intent(inout) :: rng
16020 : end subroutine
16021 : #endif
16022 :
16023 : #if LK3_ENABLED
16024 : PURE module subroutine setUnifRandRNGGDD_D2_LK3(rng, rand)
16025 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16026 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_LK3
16027 : #endif
16028 : use pm_kind, only: LKC => LK3
16029 : logical(LKC) , intent(out) :: rand(:,:)
16030 : type(xoshiro256ssg_type) , intent(inout) :: rng
16031 : end subroutine
16032 : #endif
16033 :
16034 : #if LK2_ENABLED
16035 : PURE module subroutine setUnifRandRNGGDD_D2_LK2(rng, rand)
16036 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16037 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_LK2
16038 : #endif
16039 : use pm_kind, only: LKC => LK2
16040 : logical(LKC) , intent(out) :: rand(:,:)
16041 : type(xoshiro256ssg_type) , intent(inout) :: rng
16042 : end subroutine
16043 : #endif
16044 :
16045 : #if LK1_ENABLED
16046 : PURE module subroutine setUnifRandRNGGDD_D2_LK1(rng, rand)
16047 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16048 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_LK1
16049 : #endif
16050 : use pm_kind, only: LKC => LK1
16051 : logical(LKC) , intent(out) :: rand(:,:)
16052 : type(xoshiro256ssg_type) , intent(inout) :: rng
16053 : end subroutine
16054 : #endif
16055 :
16056 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16057 :
16058 : #if CK5_ENABLED
16059 : PURE module subroutine setUnifRandRNGGDD_D2_CK5(rng, rand)
16060 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16061 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_CK5
16062 : #endif
16063 : use pm_kind, only: CKC => CK5
16064 : complex(CKC) , intent(out) :: rand(:,:)
16065 : type(xoshiro256ssg_type) , intent(inout) :: rng
16066 : end subroutine
16067 : #endif
16068 :
16069 : #if CK4_ENABLED
16070 : PURE module subroutine setUnifRandRNGGDD_D2_CK4(rng, rand)
16071 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16072 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_CK4
16073 : #endif
16074 : use pm_kind, only: CKC => CK4
16075 : complex(CKC) , intent(out) :: rand(:,:)
16076 : type(xoshiro256ssg_type) , intent(inout) :: rng
16077 : end subroutine
16078 : #endif
16079 :
16080 : #if CK3_ENABLED
16081 : PURE module subroutine setUnifRandRNGGDD_D2_CK3(rng, rand)
16082 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16083 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_CK3
16084 : #endif
16085 : use pm_kind, only: CKC => CK3
16086 : complex(CKC) , intent(out) :: rand(:,:)
16087 : type(xoshiro256ssg_type) , intent(inout) :: rng
16088 : end subroutine
16089 : #endif
16090 :
16091 : #if CK2_ENABLED
16092 : PURE module subroutine setUnifRandRNGGDD_D2_CK2(rng, rand)
16093 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16094 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_CK2
16095 : #endif
16096 : use pm_kind, only: CKC => CK2
16097 : complex(CKC) , intent(out) :: rand(:,:)
16098 : type(xoshiro256ssg_type) , intent(inout) :: rng
16099 : end subroutine
16100 : #endif
16101 :
16102 : #if CK1_ENABLED
16103 : PURE module subroutine setUnifRandRNGGDD_D2_CK1(rng, rand)
16104 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16105 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_CK1
16106 : #endif
16107 : use pm_kind, only: CKC => CK1
16108 : complex(CKC) , intent(out) :: rand(:,:)
16109 : type(xoshiro256ssg_type) , intent(inout) :: rng
16110 : end subroutine
16111 : #endif
16112 :
16113 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16114 :
16115 : #if RK5_ENABLED
16116 : PURE module subroutine setUnifRandRNGGDD_D2_RK5(rng, rand)
16117 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16118 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_RK5
16119 : #endif
16120 : use pm_kind, only: RKC => RK5
16121 : real(RKC) , intent(out) :: rand(:,:)
16122 : type(xoshiro256ssg_type) , intent(inout) :: rng
16123 : end subroutine
16124 : #endif
16125 :
16126 : #if RK4_ENABLED
16127 : PURE module subroutine setUnifRandRNGGDD_D2_RK4(rng, rand)
16128 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16129 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_RK4
16130 : #endif
16131 : use pm_kind, only: RKC => RK4
16132 : real(RKC) , intent(out) :: rand(:,:)
16133 : type(xoshiro256ssg_type) , intent(inout) :: rng
16134 : end subroutine
16135 : #endif
16136 :
16137 : #if RK3_ENABLED
16138 : PURE module subroutine setUnifRandRNGGDD_D2_RK3(rng, rand)
16139 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16140 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_RK3
16141 : #endif
16142 : use pm_kind, only: RKC => RK3
16143 : real(RKC) , intent(out) :: rand(:,:)
16144 : type(xoshiro256ssg_type) , intent(inout) :: rng
16145 : end subroutine
16146 : #endif
16147 :
16148 : #if RK2_ENABLED
16149 : PURE module subroutine setUnifRandRNGGDD_D2_RK2(rng, rand)
16150 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16151 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_RK2
16152 : #endif
16153 : use pm_kind, only: RKC => RK2
16154 : real(RKC) , intent(out) :: rand(:,:)
16155 : type(xoshiro256ssg_type) , intent(inout) :: rng
16156 : end subroutine
16157 : #endif
16158 :
16159 : #if RK1_ENABLED
16160 : PURE module subroutine setUnifRandRNGGDD_D2_RK1(rng, rand)
16161 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16162 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D2_RK1
16163 : #endif
16164 : use pm_kind, only: RKC => RK1
16165 : real(RKC) , intent(out) :: rand(:,:)
16166 : type(xoshiro256ssg_type) , intent(inout) :: rng
16167 : end subroutine
16168 : #endif
16169 :
16170 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16171 :
16172 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16173 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16174 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16175 :
16176 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16177 :
16178 : #if SK5_ENABLED
16179 : PURE module subroutine setUnifRandRNGGLU_D2_SK5(rng, rand, lb, ub)
16180 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16181 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_SK5
16182 : #endif
16183 : use pm_kind, only: SKC => SK5
16184 : character(*,SKC) , intent(out) :: rand(:,:)
16185 : character(*,SKC) , intent(in) :: lb, ub
16186 : type(xoshiro256ssg_type) , intent(inout) :: rng
16187 : end subroutine
16188 : #endif
16189 :
16190 : #if SK4_ENABLED
16191 : PURE module subroutine setUnifRandRNGGLU_D2_SK4(rng, rand, lb, ub)
16192 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16193 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_SK4
16194 : #endif
16195 : use pm_kind, only: SKC => SK4
16196 : character(*,SKC) , intent(out) :: rand(:,:)
16197 : character(*,SKC) , intent(in) :: lb, ub
16198 : type(xoshiro256ssg_type) , intent(inout) :: rng
16199 : end subroutine
16200 : #endif
16201 :
16202 : #if SK3_ENABLED
16203 : PURE module subroutine setUnifRandRNGGLU_D2_SK3(rng, rand, lb, ub)
16204 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16205 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_SK3
16206 : #endif
16207 : use pm_kind, only: SKC => SK3
16208 : character(*,SKC) , intent(out) :: rand(:,:)
16209 : character(*,SKC) , intent(in) :: lb, ub
16210 : type(xoshiro256ssg_type) , intent(inout) :: rng
16211 : end subroutine
16212 : #endif
16213 :
16214 : #if SK2_ENABLED
16215 : PURE module subroutine setUnifRandRNGGLU_D2_SK2(rng, rand, lb, ub)
16216 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16217 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_SK2
16218 : #endif
16219 : use pm_kind, only: SKC => SK2
16220 : character(*,SKC) , intent(out) :: rand(:,:)
16221 : character(*,SKC) , intent(in) :: lb, ub
16222 : type(xoshiro256ssg_type) , intent(inout) :: rng
16223 : end subroutine
16224 : #endif
16225 :
16226 : #if SK1_ENABLED
16227 : PURE module subroutine setUnifRandRNGGLU_D2_SK1(rng, rand, lb, ub)
16228 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16229 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_SK1
16230 : #endif
16231 : use pm_kind, only: SKC => SK1
16232 : character(*,SKC) , intent(out) :: rand(:,:)
16233 : character(*,SKC) , intent(in) :: lb, ub
16234 : type(xoshiro256ssg_type) , intent(inout) :: rng
16235 : end subroutine
16236 : #endif
16237 :
16238 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16239 :
16240 : #if IK5_ENABLED
16241 : PURE module subroutine setUnifRandRNGGLU_D2_IK5(rng, rand, lb, ub)
16242 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16243 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_IK5
16244 : #endif
16245 : use pm_kind, only: IKC => IK5
16246 : integer(IKC) , intent(out) :: rand(:,:)
16247 : integer(IKC) , intent(in) :: lb, ub
16248 : type(xoshiro256ssg_type) , intent(inout) :: rng
16249 : end subroutine
16250 : #endif
16251 :
16252 : #if IK4_ENABLED
16253 : PURE module subroutine setUnifRandRNGGLU_D2_IK4(rng, rand, lb, ub)
16254 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16255 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_IK4
16256 : #endif
16257 : use pm_kind, only: IKC => IK4
16258 : integer(IKC) , intent(out) :: rand(:,:)
16259 : integer(IKC) , intent(in) :: lb, ub
16260 : type(xoshiro256ssg_type) , intent(inout) :: rng
16261 : end subroutine
16262 : #endif
16263 :
16264 : #if IK3_ENABLED
16265 : PURE module subroutine setUnifRandRNGGLU_D2_IK3(rng, rand, lb, ub)
16266 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16267 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_IK3
16268 : #endif
16269 : use pm_kind, only: IKC => IK3
16270 : integer(IKC) , intent(out) :: rand(:,:)
16271 : integer(IKC) , intent(in) :: lb, ub
16272 : type(xoshiro256ssg_type) , intent(inout) :: rng
16273 : end subroutine
16274 : #endif
16275 :
16276 : #if IK2_ENABLED
16277 : PURE module subroutine setUnifRandRNGGLU_D2_IK2(rng, rand, lb, ub)
16278 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16279 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_IK2
16280 : #endif
16281 : use pm_kind, only: IKC => IK2
16282 : integer(IKC) , intent(out) :: rand(:,:)
16283 : integer(IKC) , intent(in) :: lb, ub
16284 : type(xoshiro256ssg_type) , intent(inout) :: rng
16285 : end subroutine
16286 : #endif
16287 :
16288 : #if IK1_ENABLED
16289 : PURE module subroutine setUnifRandRNGGLU_D2_IK1(rng, rand, lb, ub)
16290 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16291 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_IK1
16292 : #endif
16293 : use pm_kind, only: IKC => IK1
16294 : integer(IKC) , intent(out) :: rand(:,:)
16295 : integer(IKC) , intent(in) :: lb, ub
16296 : type(xoshiro256ssg_type) , intent(inout) :: rng
16297 : end subroutine
16298 : #endif
16299 :
16300 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16301 :
16302 : #if LK5_ENABLED
16303 : PURE module subroutine setUnifRandRNGGLU_D2_LK5(rng, rand, lb, ub)
16304 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16305 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_LK5
16306 : #endif
16307 : use pm_kind, only: LKC => LK5
16308 : logical(LKC) , intent(out) :: rand(:,:)
16309 : logical(LKC) , intent(in) :: lb, ub
16310 : type(xoshiro256ssg_type) , intent(inout) :: rng
16311 : end subroutine
16312 : #endif
16313 :
16314 : #if LK4_ENABLED
16315 : PURE module subroutine setUnifRandRNGGLU_D2_LK4(rng, rand, lb, ub)
16316 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16317 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_LK4
16318 : #endif
16319 : use pm_kind, only: LKC => LK4
16320 : logical(LKC) , intent(out) :: rand(:,:)
16321 : logical(LKC) , intent(in) :: lb, ub
16322 : type(xoshiro256ssg_type) , intent(inout) :: rng
16323 : end subroutine
16324 : #endif
16325 :
16326 : #if LK3_ENABLED
16327 : PURE module subroutine setUnifRandRNGGLU_D2_LK3(rng, rand, lb, ub)
16328 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16329 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_LK3
16330 : #endif
16331 : use pm_kind, only: LKC => LK3
16332 : logical(LKC) , intent(out) :: rand(:,:)
16333 : logical(LKC) , intent(in) :: lb, ub
16334 : type(xoshiro256ssg_type) , intent(inout) :: rng
16335 : end subroutine
16336 : #endif
16337 :
16338 : #if LK2_ENABLED
16339 : PURE module subroutine setUnifRandRNGGLU_D2_LK2(rng, rand, lb, ub)
16340 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16341 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_LK2
16342 : #endif
16343 : use pm_kind, only: LKC => LK2
16344 : logical(LKC) , intent(out) :: rand(:,:)
16345 : logical(LKC) , intent(in) :: lb, ub
16346 : type(xoshiro256ssg_type) , intent(inout) :: rng
16347 : end subroutine
16348 : #endif
16349 :
16350 : #if LK1_ENABLED
16351 : PURE module subroutine setUnifRandRNGGLU_D2_LK1(rng, rand, lb, ub)
16352 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16353 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_LK1
16354 : #endif
16355 : use pm_kind, only: LKC => LK1
16356 : logical(LKC) , intent(out) :: rand(:,:)
16357 : logical(LKC) , intent(in) :: lb, ub
16358 : type(xoshiro256ssg_type) , intent(inout) :: rng
16359 : end subroutine
16360 : #endif
16361 :
16362 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16363 :
16364 : #if CK5_ENABLED
16365 : PURE module subroutine setUnifRandRNGGLU_D2_CK5(rng, rand, lb, ub)
16366 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16367 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_CK5
16368 : #endif
16369 : use pm_kind, only: CKC => CK5
16370 : complex(CKC) , intent(out) :: rand(:,:)
16371 : complex(CKC) , intent(in) :: lb, ub
16372 : type(xoshiro256ssg_type) , intent(inout) :: rng
16373 : end subroutine
16374 : #endif
16375 :
16376 : #if CK4_ENABLED
16377 : PURE module subroutine setUnifRandRNGGLU_D2_CK4(rng, rand, lb, ub)
16378 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16379 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_CK4
16380 : #endif
16381 : use pm_kind, only: CKC => CK4
16382 : complex(CKC) , intent(out) :: rand(:,:)
16383 : complex(CKC) , intent(in) :: lb, ub
16384 : type(xoshiro256ssg_type) , intent(inout) :: rng
16385 : end subroutine
16386 : #endif
16387 :
16388 : #if CK3_ENABLED
16389 : PURE module subroutine setUnifRandRNGGLU_D2_CK3(rng, rand, lb, ub)
16390 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16391 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_CK3
16392 : #endif
16393 : use pm_kind, only: CKC => CK3
16394 : complex(CKC) , intent(out) :: rand(:,:)
16395 : complex(CKC) , intent(in) :: lb, ub
16396 : type(xoshiro256ssg_type) , intent(inout) :: rng
16397 : end subroutine
16398 : #endif
16399 :
16400 : #if CK2_ENABLED
16401 : PURE module subroutine setUnifRandRNGGLU_D2_CK2(rng, rand, lb, ub)
16402 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16403 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_CK2
16404 : #endif
16405 : use pm_kind, only: CKC => CK2
16406 : complex(CKC) , intent(out) :: rand(:,:)
16407 : complex(CKC) , intent(in) :: lb, ub
16408 : type(xoshiro256ssg_type) , intent(inout) :: rng
16409 : end subroutine
16410 : #endif
16411 :
16412 : #if CK1_ENABLED
16413 : PURE module subroutine setUnifRandRNGGLU_D2_CK1(rng, rand, lb, ub)
16414 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16415 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_CK1
16416 : #endif
16417 : use pm_kind, only: CKC => CK1
16418 : complex(CKC) , intent(out) :: rand(:,:)
16419 : complex(CKC) , intent(in) :: lb, ub
16420 : type(xoshiro256ssg_type) , intent(inout) :: rng
16421 : end subroutine
16422 : #endif
16423 :
16424 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16425 :
16426 : #if RK5_ENABLED
16427 : PURE module subroutine setUnifRandRNGGLU_D2_RK5(rng, rand, lb, ub)
16428 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16429 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_RK5
16430 : #endif
16431 : use pm_kind, only: RKC => RK5
16432 : real(RKC) , intent(out) :: rand(:,:)
16433 : real(RKC) , intent(in) :: lb, ub
16434 : type(xoshiro256ssg_type) , intent(inout) :: rng
16435 : end subroutine
16436 : #endif
16437 :
16438 : #if RK4_ENABLED
16439 : PURE module subroutine setUnifRandRNGGLU_D2_RK4(rng, rand, lb, ub)
16440 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16441 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_RK4
16442 : #endif
16443 : use pm_kind, only: RKC => RK4
16444 : real(RKC) , intent(out) :: rand(:,:)
16445 : real(RKC) , intent(in) :: lb, ub
16446 : type(xoshiro256ssg_type) , intent(inout) :: rng
16447 : end subroutine
16448 : #endif
16449 :
16450 : #if RK3_ENABLED
16451 : PURE module subroutine setUnifRandRNGGLU_D2_RK3(rng, rand, lb, ub)
16452 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16453 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_RK3
16454 : #endif
16455 : use pm_kind, only: RKC => RK3
16456 : real(RKC) , intent(out) :: rand(:,:)
16457 : real(RKC) , intent(in) :: lb, ub
16458 : type(xoshiro256ssg_type) , intent(inout) :: rng
16459 : end subroutine
16460 : #endif
16461 :
16462 : #if RK2_ENABLED
16463 : PURE module subroutine setUnifRandRNGGLU_D2_RK2(rng, rand, lb, ub)
16464 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16465 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_RK2
16466 : #endif
16467 : use pm_kind, only: RKC => RK2
16468 : real(RKC) , intent(out) :: rand(:,:)
16469 : real(RKC) , intent(in) :: lb, ub
16470 : type(xoshiro256ssg_type) , intent(inout) :: rng
16471 : end subroutine
16472 : #endif
16473 :
16474 : #if RK1_ENABLED
16475 : PURE module subroutine setUnifRandRNGGLU_D2_RK1(rng, rand, lb, ub)
16476 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16477 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D2_RK1
16478 : #endif
16479 : use pm_kind, only: RKC => RK1
16480 : real(RKC) , intent(out) :: rand(:,:)
16481 : real(RKC) , intent(in) :: lb, ub
16482 : type(xoshiro256ssg_type) , intent(inout) :: rng
16483 : end subroutine
16484 : #endif
16485 :
16486 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16487 :
16488 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16489 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16490 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16491 :
16492 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16493 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16494 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16495 :
16496 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16497 :
16498 : #if SK5_ENABLED
16499 : PURE module subroutine setUnifRandRNGGDD_D3_SK5(rng, rand)
16500 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16501 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_SK5
16502 : #endif
16503 : use pm_kind, only: SKC => SK5
16504 : character(*,SKC) , intent(out) :: rand(:,:,:)
16505 : type(xoshiro256ssg_type) , intent(inout) :: rng
16506 : end subroutine
16507 : #endif
16508 :
16509 : #if SK4_ENABLED
16510 : PURE module subroutine setUnifRandRNGGDD_D3_SK4(rng, rand)
16511 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16512 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_SK4
16513 : #endif
16514 : use pm_kind, only: SKC => SK4
16515 : character(*,SKC) , intent(out) :: rand(:,:,:)
16516 : type(xoshiro256ssg_type) , intent(inout) :: rng
16517 : end subroutine
16518 : #endif
16519 :
16520 : #if SK3_ENABLED
16521 : PURE module subroutine setUnifRandRNGGDD_D3_SK3(rng, rand)
16522 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16523 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_SK3
16524 : #endif
16525 : use pm_kind, only: SKC => SK3
16526 : character(*,SKC) , intent(out) :: rand(:,:,:)
16527 : type(xoshiro256ssg_type) , intent(inout) :: rng
16528 : end subroutine
16529 : #endif
16530 :
16531 : #if SK2_ENABLED
16532 : PURE module subroutine setUnifRandRNGGDD_D3_SK2(rng, rand)
16533 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16534 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_SK2
16535 : #endif
16536 : use pm_kind, only: SKC => SK2
16537 : character(*,SKC) , intent(out) :: rand(:,:,:)
16538 : type(xoshiro256ssg_type) , intent(inout) :: rng
16539 : end subroutine
16540 : #endif
16541 :
16542 : #if SK1_ENABLED
16543 : PURE module subroutine setUnifRandRNGGDD_D3_SK1(rng, rand)
16544 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16545 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_SK1
16546 : #endif
16547 : use pm_kind, only: SKC => SK1
16548 : character(*,SKC) , intent(out) :: rand(:,:,:)
16549 : type(xoshiro256ssg_type) , intent(inout) :: rng
16550 : end subroutine
16551 : #endif
16552 :
16553 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16554 :
16555 : #if IK5_ENABLED
16556 : PURE module subroutine setUnifRandRNGGDD_D3_IK5(rng, rand)
16557 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16558 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_IK5
16559 : #endif
16560 : use pm_kind, only: IKC => IK5
16561 : integer(IKC) , intent(out) :: rand(:,:,:)
16562 : type(xoshiro256ssg_type) , intent(inout) :: rng
16563 : end subroutine
16564 : #endif
16565 :
16566 : #if IK4_ENABLED
16567 : PURE module subroutine setUnifRandRNGGDD_D3_IK4(rng, rand)
16568 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16569 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_IK4
16570 : #endif
16571 : use pm_kind, only: IKC => IK4
16572 : integer(IKC) , intent(out) :: rand(:,:,:)
16573 : type(xoshiro256ssg_type) , intent(inout) :: rng
16574 : end subroutine
16575 : #endif
16576 :
16577 : #if IK3_ENABLED
16578 : PURE module subroutine setUnifRandRNGGDD_D3_IK3(rng, rand)
16579 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16580 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_IK3
16581 : #endif
16582 : use pm_kind, only: IKC => IK3
16583 : integer(IKC) , intent(out) :: rand(:,:,:)
16584 : type(xoshiro256ssg_type) , intent(inout) :: rng
16585 : end subroutine
16586 : #endif
16587 :
16588 : #if IK2_ENABLED
16589 : PURE module subroutine setUnifRandRNGGDD_D3_IK2(rng, rand)
16590 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16591 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_IK2
16592 : #endif
16593 : use pm_kind, only: IKC => IK2
16594 : integer(IKC) , intent(out) :: rand(:,:,:)
16595 : type(xoshiro256ssg_type) , intent(inout) :: rng
16596 : end subroutine
16597 : #endif
16598 :
16599 : #if IK1_ENABLED
16600 : PURE module subroutine setUnifRandRNGGDD_D3_IK1(rng, rand)
16601 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16602 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_IK1
16603 : #endif
16604 : use pm_kind, only: IKC => IK1
16605 : integer(IKC) , intent(out) :: rand(:,:,:)
16606 : type(xoshiro256ssg_type) , intent(inout) :: rng
16607 : end subroutine
16608 : #endif
16609 :
16610 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16611 :
16612 : #if LK5_ENABLED
16613 : PURE module subroutine setUnifRandRNGGDD_D3_LK5(rng, rand)
16614 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16615 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_LK5
16616 : #endif
16617 : use pm_kind, only: LKC => LK5
16618 : logical(LKC) , intent(out) :: rand(:,:,:)
16619 : type(xoshiro256ssg_type) , intent(inout) :: rng
16620 : end subroutine
16621 : #endif
16622 :
16623 : #if LK4_ENABLED
16624 : PURE module subroutine setUnifRandRNGGDD_D3_LK4(rng, rand)
16625 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16626 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_LK4
16627 : #endif
16628 : use pm_kind, only: LKC => LK4
16629 : logical(LKC) , intent(out) :: rand(:,:,:)
16630 : type(xoshiro256ssg_type) , intent(inout) :: rng
16631 : end subroutine
16632 : #endif
16633 :
16634 : #if LK3_ENABLED
16635 : PURE module subroutine setUnifRandRNGGDD_D3_LK3(rng, rand)
16636 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16637 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_LK3
16638 : #endif
16639 : use pm_kind, only: LKC => LK3
16640 : logical(LKC) , intent(out) :: rand(:,:,:)
16641 : type(xoshiro256ssg_type) , intent(inout) :: rng
16642 : end subroutine
16643 : #endif
16644 :
16645 : #if LK2_ENABLED
16646 : PURE module subroutine setUnifRandRNGGDD_D3_LK2(rng, rand)
16647 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16648 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_LK2
16649 : #endif
16650 : use pm_kind, only: LKC => LK2
16651 : logical(LKC) , intent(out) :: rand(:,:,:)
16652 : type(xoshiro256ssg_type) , intent(inout) :: rng
16653 : end subroutine
16654 : #endif
16655 :
16656 : #if LK1_ENABLED
16657 : PURE module subroutine setUnifRandRNGGDD_D3_LK1(rng, rand)
16658 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16659 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_LK1
16660 : #endif
16661 : use pm_kind, only: LKC => LK1
16662 : logical(LKC) , intent(out) :: rand(:,:,:)
16663 : type(xoshiro256ssg_type) , intent(inout) :: rng
16664 : end subroutine
16665 : #endif
16666 :
16667 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16668 :
16669 : #if CK5_ENABLED
16670 : PURE module subroutine setUnifRandRNGGDD_D3_CK5(rng, rand)
16671 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16672 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_CK5
16673 : #endif
16674 : use pm_kind, only: CKC => CK5
16675 : complex(CKC) , intent(out) :: rand(:,:,:)
16676 : type(xoshiro256ssg_type) , intent(inout) :: rng
16677 : end subroutine
16678 : #endif
16679 :
16680 : #if CK4_ENABLED
16681 : PURE module subroutine setUnifRandRNGGDD_D3_CK4(rng, rand)
16682 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16683 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_CK4
16684 : #endif
16685 : use pm_kind, only: CKC => CK4
16686 : complex(CKC) , intent(out) :: rand(:,:,:)
16687 : type(xoshiro256ssg_type) , intent(inout) :: rng
16688 : end subroutine
16689 : #endif
16690 :
16691 : #if CK3_ENABLED
16692 : PURE module subroutine setUnifRandRNGGDD_D3_CK3(rng, rand)
16693 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16694 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_CK3
16695 : #endif
16696 : use pm_kind, only: CKC => CK3
16697 : complex(CKC) , intent(out) :: rand(:,:,:)
16698 : type(xoshiro256ssg_type) , intent(inout) :: rng
16699 : end subroutine
16700 : #endif
16701 :
16702 : #if CK2_ENABLED
16703 : PURE module subroutine setUnifRandRNGGDD_D3_CK2(rng, rand)
16704 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16705 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_CK2
16706 : #endif
16707 : use pm_kind, only: CKC => CK2
16708 : complex(CKC) , intent(out) :: rand(:,:,:)
16709 : type(xoshiro256ssg_type) , intent(inout) :: rng
16710 : end subroutine
16711 : #endif
16712 :
16713 : #if CK1_ENABLED
16714 : PURE module subroutine setUnifRandRNGGDD_D3_CK1(rng, rand)
16715 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16716 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_CK1
16717 : #endif
16718 : use pm_kind, only: CKC => CK1
16719 : complex(CKC) , intent(out) :: rand(:,:,:)
16720 : type(xoshiro256ssg_type) , intent(inout) :: rng
16721 : end subroutine
16722 : #endif
16723 :
16724 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16725 :
16726 : #if RK5_ENABLED
16727 : PURE module subroutine setUnifRandRNGGDD_D3_RK5(rng, rand)
16728 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16729 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_RK5
16730 : #endif
16731 : use pm_kind, only: RKC => RK5
16732 : real(RKC) , intent(out) :: rand(:,:,:)
16733 : type(xoshiro256ssg_type) , intent(inout) :: rng
16734 : end subroutine
16735 : #endif
16736 :
16737 : #if RK4_ENABLED
16738 : PURE module subroutine setUnifRandRNGGDD_D3_RK4(rng, rand)
16739 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16740 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_RK4
16741 : #endif
16742 : use pm_kind, only: RKC => RK4
16743 : real(RKC) , intent(out) :: rand(:,:,:)
16744 : type(xoshiro256ssg_type) , intent(inout) :: rng
16745 : end subroutine
16746 : #endif
16747 :
16748 : #if RK3_ENABLED
16749 : PURE module subroutine setUnifRandRNGGDD_D3_RK3(rng, rand)
16750 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16751 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_RK3
16752 : #endif
16753 : use pm_kind, only: RKC => RK3
16754 : real(RKC) , intent(out) :: rand(:,:,:)
16755 : type(xoshiro256ssg_type) , intent(inout) :: rng
16756 : end subroutine
16757 : #endif
16758 :
16759 : #if RK2_ENABLED
16760 : PURE module subroutine setUnifRandRNGGDD_D3_RK2(rng, rand)
16761 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16762 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_RK2
16763 : #endif
16764 : use pm_kind, only: RKC => RK2
16765 : real(RKC) , intent(out) :: rand(:,:,:)
16766 : type(xoshiro256ssg_type) , intent(inout) :: rng
16767 : end subroutine
16768 : #endif
16769 :
16770 : #if RK1_ENABLED
16771 : PURE module subroutine setUnifRandRNGGDD_D3_RK1(rng, rand)
16772 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16773 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGDD_D3_RK1
16774 : #endif
16775 : use pm_kind, only: RKC => RK1
16776 : real(RKC) , intent(out) :: rand(:,:,:)
16777 : type(xoshiro256ssg_type) , intent(inout) :: rng
16778 : end subroutine
16779 : #endif
16780 :
16781 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16782 :
16783 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16784 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16785 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16786 :
16787 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16788 :
16789 : #if SK5_ENABLED
16790 : PURE module subroutine setUnifRandRNGGLU_D3_SK5(rng, rand, lb, ub)
16791 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16792 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_SK5
16793 : #endif
16794 : use pm_kind, only: SKC => SK5
16795 : character(*,SKC) , intent(out) :: rand(:,:,:)
16796 : character(*,SKC) , intent(in) :: lb, ub
16797 : type(xoshiro256ssg_type) , intent(inout) :: rng
16798 : end subroutine
16799 : #endif
16800 :
16801 : #if SK4_ENABLED
16802 : PURE module subroutine setUnifRandRNGGLU_D3_SK4(rng, rand, lb, ub)
16803 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16804 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_SK4
16805 : #endif
16806 : use pm_kind, only: SKC => SK4
16807 : character(*,SKC) , intent(out) :: rand(:,:,:)
16808 : character(*,SKC) , intent(in) :: lb, ub
16809 : type(xoshiro256ssg_type) , intent(inout) :: rng
16810 : end subroutine
16811 : #endif
16812 :
16813 : #if SK3_ENABLED
16814 : PURE module subroutine setUnifRandRNGGLU_D3_SK3(rng, rand, lb, ub)
16815 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16816 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_SK3
16817 : #endif
16818 : use pm_kind, only: SKC => SK3
16819 : character(*,SKC) , intent(out) :: rand(:,:,:)
16820 : character(*,SKC) , intent(in) :: lb, ub
16821 : type(xoshiro256ssg_type) , intent(inout) :: rng
16822 : end subroutine
16823 : #endif
16824 :
16825 : #if SK2_ENABLED
16826 : PURE module subroutine setUnifRandRNGGLU_D3_SK2(rng, rand, lb, ub)
16827 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16828 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_SK2
16829 : #endif
16830 : use pm_kind, only: SKC => SK2
16831 : character(*,SKC) , intent(out) :: rand(:,:,:)
16832 : character(*,SKC) , intent(in) :: lb, ub
16833 : type(xoshiro256ssg_type) , intent(inout) :: rng
16834 : end subroutine
16835 : #endif
16836 :
16837 : #if SK1_ENABLED
16838 : PURE module subroutine setUnifRandRNGGLU_D3_SK1(rng, rand, lb, ub)
16839 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16840 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_SK1
16841 : #endif
16842 : use pm_kind, only: SKC => SK1
16843 : character(*,SKC) , intent(out) :: rand(:,:,:)
16844 : character(*,SKC) , intent(in) :: lb, ub
16845 : type(xoshiro256ssg_type) , intent(inout) :: rng
16846 : end subroutine
16847 : #endif
16848 :
16849 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16850 :
16851 : #if IK5_ENABLED
16852 : PURE module subroutine setUnifRandRNGGLU_D3_IK5(rng, rand, lb, ub)
16853 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16854 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_IK5
16855 : #endif
16856 : use pm_kind, only: IKC => IK5
16857 : integer(IKC) , intent(out) :: rand(:,:,:)
16858 : integer(IKC) , intent(in) :: lb, ub
16859 : type(xoshiro256ssg_type) , intent(inout) :: rng
16860 : end subroutine
16861 : #endif
16862 :
16863 : #if IK4_ENABLED
16864 : PURE module subroutine setUnifRandRNGGLU_D3_IK4(rng, rand, lb, ub)
16865 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16866 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_IK4
16867 : #endif
16868 : use pm_kind, only: IKC => IK4
16869 : integer(IKC) , intent(out) :: rand(:,:,:)
16870 : integer(IKC) , intent(in) :: lb, ub
16871 : type(xoshiro256ssg_type) , intent(inout) :: rng
16872 : end subroutine
16873 : #endif
16874 :
16875 : #if IK3_ENABLED
16876 : PURE module subroutine setUnifRandRNGGLU_D3_IK3(rng, rand, lb, ub)
16877 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16878 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_IK3
16879 : #endif
16880 : use pm_kind, only: IKC => IK3
16881 : integer(IKC) , intent(out) :: rand(:,:,:)
16882 : integer(IKC) , intent(in) :: lb, ub
16883 : type(xoshiro256ssg_type) , intent(inout) :: rng
16884 : end subroutine
16885 : #endif
16886 :
16887 : #if IK2_ENABLED
16888 : PURE module subroutine setUnifRandRNGGLU_D3_IK2(rng, rand, lb, ub)
16889 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16890 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_IK2
16891 : #endif
16892 : use pm_kind, only: IKC => IK2
16893 : integer(IKC) , intent(out) :: rand(:,:,:)
16894 : integer(IKC) , intent(in) :: lb, ub
16895 : type(xoshiro256ssg_type) , intent(inout) :: rng
16896 : end subroutine
16897 : #endif
16898 :
16899 : #if IK1_ENABLED
16900 : PURE module subroutine setUnifRandRNGGLU_D3_IK1(rng, rand, lb, ub)
16901 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16902 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_IK1
16903 : #endif
16904 : use pm_kind, only: IKC => IK1
16905 : integer(IKC) , intent(out) :: rand(:,:,:)
16906 : integer(IKC) , intent(in) :: lb, ub
16907 : type(xoshiro256ssg_type) , intent(inout) :: rng
16908 : end subroutine
16909 : #endif
16910 :
16911 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16912 :
16913 : #if LK5_ENABLED
16914 : PURE module subroutine setUnifRandRNGGLU_D3_LK5(rng, rand, lb, ub)
16915 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16916 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_LK5
16917 : #endif
16918 : use pm_kind, only: LKC => LK5
16919 : logical(LKC) , intent(out) :: rand(:,:,:)
16920 : logical(LKC) , intent(in) :: lb, ub
16921 : type(xoshiro256ssg_type) , intent(inout) :: rng
16922 : end subroutine
16923 : #endif
16924 :
16925 : #if LK4_ENABLED
16926 : PURE module subroutine setUnifRandRNGGLU_D3_LK4(rng, rand, lb, ub)
16927 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16928 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_LK4
16929 : #endif
16930 : use pm_kind, only: LKC => LK4
16931 : logical(LKC) , intent(out) :: rand(:,:,:)
16932 : logical(LKC) , intent(in) :: lb, ub
16933 : type(xoshiro256ssg_type) , intent(inout) :: rng
16934 : end subroutine
16935 : #endif
16936 :
16937 : #if LK3_ENABLED
16938 : PURE module subroutine setUnifRandRNGGLU_D3_LK3(rng, rand, lb, ub)
16939 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16940 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_LK3
16941 : #endif
16942 : use pm_kind, only: LKC => LK3
16943 : logical(LKC) , intent(out) :: rand(:,:,:)
16944 : logical(LKC) , intent(in) :: lb, ub
16945 : type(xoshiro256ssg_type) , intent(inout) :: rng
16946 : end subroutine
16947 : #endif
16948 :
16949 : #if LK2_ENABLED
16950 : PURE module subroutine setUnifRandRNGGLU_D3_LK2(rng, rand, lb, ub)
16951 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16952 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_LK2
16953 : #endif
16954 : use pm_kind, only: LKC => LK2
16955 : logical(LKC) , intent(out) :: rand(:,:,:)
16956 : logical(LKC) , intent(in) :: lb, ub
16957 : type(xoshiro256ssg_type) , intent(inout) :: rng
16958 : end subroutine
16959 : #endif
16960 :
16961 : #if LK1_ENABLED
16962 : PURE module subroutine setUnifRandRNGGLU_D3_LK1(rng, rand, lb, ub)
16963 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16964 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_LK1
16965 : #endif
16966 : use pm_kind, only: LKC => LK1
16967 : logical(LKC) , intent(out) :: rand(:,:,:)
16968 : logical(LKC) , intent(in) :: lb, ub
16969 : type(xoshiro256ssg_type) , intent(inout) :: rng
16970 : end subroutine
16971 : #endif
16972 :
16973 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16974 :
16975 : #if CK5_ENABLED
16976 : PURE module subroutine setUnifRandRNGGLU_D3_CK5(rng, rand, lb, ub)
16977 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16978 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_CK5
16979 : #endif
16980 : use pm_kind, only: CKC => CK5
16981 : complex(CKC) , intent(out) :: rand(:,:,:)
16982 : complex(CKC) , intent(in) :: lb, ub
16983 : type(xoshiro256ssg_type) , intent(inout) :: rng
16984 : end subroutine
16985 : #endif
16986 :
16987 : #if CK4_ENABLED
16988 : PURE module subroutine setUnifRandRNGGLU_D3_CK4(rng, rand, lb, ub)
16989 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
16990 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_CK4
16991 : #endif
16992 : use pm_kind, only: CKC => CK4
16993 : complex(CKC) , intent(out) :: rand(:,:,:)
16994 : complex(CKC) , intent(in) :: lb, ub
16995 : type(xoshiro256ssg_type) , intent(inout) :: rng
16996 : end subroutine
16997 : #endif
16998 :
16999 : #if CK3_ENABLED
17000 : PURE module subroutine setUnifRandRNGGLU_D3_CK3(rng, rand, lb, ub)
17001 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17002 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_CK3
17003 : #endif
17004 : use pm_kind, only: CKC => CK3
17005 : complex(CKC) , intent(out) :: rand(:,:,:)
17006 : complex(CKC) , intent(in) :: lb, ub
17007 : type(xoshiro256ssg_type) , intent(inout) :: rng
17008 : end subroutine
17009 : #endif
17010 :
17011 : #if CK2_ENABLED
17012 : PURE module subroutine setUnifRandRNGGLU_D3_CK2(rng, rand, lb, ub)
17013 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17014 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_CK2
17015 : #endif
17016 : use pm_kind, only: CKC => CK2
17017 : complex(CKC) , intent(out) :: rand(:,:,:)
17018 : complex(CKC) , intent(in) :: lb, ub
17019 : type(xoshiro256ssg_type) , intent(inout) :: rng
17020 : end subroutine
17021 : #endif
17022 :
17023 : #if CK1_ENABLED
17024 : PURE module subroutine setUnifRandRNGGLU_D3_CK1(rng, rand, lb, ub)
17025 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17026 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_CK1
17027 : #endif
17028 : use pm_kind, only: CKC => CK1
17029 : complex(CKC) , intent(out) :: rand(:,:,:)
17030 : complex(CKC) , intent(in) :: lb, ub
17031 : type(xoshiro256ssg_type) , intent(inout) :: rng
17032 : end subroutine
17033 : #endif
17034 :
17035 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17036 :
17037 : #if RK5_ENABLED
17038 : PURE module subroutine setUnifRandRNGGLU_D3_RK5(rng, rand, lb, ub)
17039 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17040 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_RK5
17041 : #endif
17042 : use pm_kind, only: RKC => RK5
17043 : real(RKC) , intent(out) :: rand(:,:,:)
17044 : real(RKC) , intent(in) :: lb, ub
17045 : type(xoshiro256ssg_type) , intent(inout) :: rng
17046 : end subroutine
17047 : #endif
17048 :
17049 : #if RK4_ENABLED
17050 : PURE module subroutine setUnifRandRNGGLU_D3_RK4(rng, rand, lb, ub)
17051 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17052 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_RK4
17053 : #endif
17054 : use pm_kind, only: RKC => RK4
17055 : real(RKC) , intent(out) :: rand(:,:,:)
17056 : real(RKC) , intent(in) :: lb, ub
17057 : type(xoshiro256ssg_type) , intent(inout) :: rng
17058 : end subroutine
17059 : #endif
17060 :
17061 : #if RK3_ENABLED
17062 : PURE module subroutine setUnifRandRNGGLU_D3_RK3(rng, rand, lb, ub)
17063 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17064 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_RK3
17065 : #endif
17066 : use pm_kind, only: RKC => RK3
17067 : real(RKC) , intent(out) :: rand(:,:,:)
17068 : real(RKC) , intent(in) :: lb, ub
17069 : type(xoshiro256ssg_type) , intent(inout) :: rng
17070 : end subroutine
17071 : #endif
17072 :
17073 : #if RK2_ENABLED
17074 : PURE module subroutine setUnifRandRNGGLU_D3_RK2(rng, rand, lb, ub)
17075 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17076 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_RK2
17077 : #endif
17078 : use pm_kind, only: RKC => RK2
17079 : real(RKC) , intent(out) :: rand(:,:,:)
17080 : real(RKC) , intent(in) :: lb, ub
17081 : type(xoshiro256ssg_type) , intent(inout) :: rng
17082 : end subroutine
17083 : #endif
17084 :
17085 : #if RK1_ENABLED
17086 : PURE module subroutine setUnifRandRNGGLU_D3_RK1(rng, rand, lb, ub)
17087 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17088 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGGLU_D3_RK1
17089 : #endif
17090 : use pm_kind, only: RKC => RK1
17091 : real(RKC) , intent(out) :: rand(:,:,:)
17092 : real(RKC) , intent(in) :: lb, ub
17093 : type(xoshiro256ssg_type) , intent(inout) :: rng
17094 : end subroutine
17095 : #endif
17096 :
17097 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17098 :
17099 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17100 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17101 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17102 :
17103 : end interface
17104 :
17105 : ! RNGS
17106 :
17107 : interface setUnifRand
17108 :
17109 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17110 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17111 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17112 :
17113 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17114 :
17115 : #if SK5_ENABLED
17116 : PURE elemental module subroutine setUnifRandRNGXDD_D0_SK5(rng, rand)
17117 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17118 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_SK5
17119 : #endif
17120 : use pm_kind, only: SKC => SK5
17121 : character(*,SKC) , intent(out) :: rand
17122 : type(xoshiro256ssw_type) , intent(inout) :: rng
17123 : end subroutine
17124 : #endif
17125 :
17126 : #if SK4_ENABLED
17127 : PURE elemental module subroutine setUnifRandRNGXDD_D0_SK4(rng, rand)
17128 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17129 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_SK4
17130 : #endif
17131 : use pm_kind, only: SKC => SK4
17132 : character(*,SKC) , intent(out) :: rand
17133 : type(xoshiro256ssw_type) , intent(inout) :: rng
17134 : end subroutine
17135 : #endif
17136 :
17137 : #if SK3_ENABLED
17138 : PURE elemental module subroutine setUnifRandRNGXDD_D0_SK3(rng, rand)
17139 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17140 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_SK3
17141 : #endif
17142 : use pm_kind, only: SKC => SK3
17143 : character(*,SKC) , intent(out) :: rand
17144 : type(xoshiro256ssw_type) , intent(inout) :: rng
17145 : end subroutine
17146 : #endif
17147 :
17148 : #if SK2_ENABLED
17149 : PURE elemental module subroutine setUnifRandRNGXDD_D0_SK2(rng, rand)
17150 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17151 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_SK2
17152 : #endif
17153 : use pm_kind, only: SKC => SK2
17154 : character(*,SKC) , intent(out) :: rand
17155 : type(xoshiro256ssw_type) , intent(inout) :: rng
17156 : end subroutine
17157 : #endif
17158 :
17159 : #if SK1_ENABLED
17160 : PURE elemental module subroutine setUnifRandRNGXDD_D0_SK1(rng, rand)
17161 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17162 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_SK1
17163 : #endif
17164 : use pm_kind, only: SKC => SK1
17165 : character(*,SKC) , intent(out) :: rand
17166 : type(xoshiro256ssw_type) , intent(inout) :: rng
17167 : end subroutine
17168 : #endif
17169 :
17170 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17171 :
17172 : #if IK5_ENABLED
17173 : PURE elemental module subroutine setUnifRandRNGXDD_D0_IK5(rng, rand)
17174 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17175 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_IK5
17176 : #endif
17177 : use pm_kind, only: IKC => IK5
17178 : integer(IKC) , intent(out) :: rand
17179 : type(xoshiro256ssw_type) , intent(inout) :: rng
17180 : end subroutine
17181 : #endif
17182 :
17183 : #if IK4_ENABLED
17184 : PURE elemental module subroutine setUnifRandRNGXDD_D0_IK4(rng, rand)
17185 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17186 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_IK4
17187 : #endif
17188 : use pm_kind, only: IKC => IK4
17189 : integer(IKC) , intent(out) :: rand
17190 : type(xoshiro256ssw_type) , intent(inout) :: rng
17191 : end subroutine
17192 : #endif
17193 :
17194 : #if IK3_ENABLED
17195 : PURE elemental module subroutine setUnifRandRNGXDD_D0_IK3(rng, rand)
17196 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17197 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_IK3
17198 : #endif
17199 : use pm_kind, only: IKC => IK3
17200 : integer(IKC) , intent(out) :: rand
17201 : type(xoshiro256ssw_type) , intent(inout) :: rng
17202 : end subroutine
17203 : #endif
17204 :
17205 : #if IK2_ENABLED
17206 : PURE elemental module subroutine setUnifRandRNGXDD_D0_IK2(rng, rand)
17207 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17208 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_IK2
17209 : #endif
17210 : use pm_kind, only: IKC => IK2
17211 : integer(IKC) , intent(out) :: rand
17212 : type(xoshiro256ssw_type) , intent(inout) :: rng
17213 : end subroutine
17214 : #endif
17215 :
17216 : #if IK1_ENABLED
17217 : PURE elemental module subroutine setUnifRandRNGXDD_D0_IK1(rng, rand)
17218 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17219 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_IK1
17220 : #endif
17221 : use pm_kind, only: IKC => IK1
17222 : integer(IKC) , intent(out) :: rand
17223 : type(xoshiro256ssw_type) , intent(inout) :: rng
17224 : end subroutine
17225 : #endif
17226 :
17227 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17228 :
17229 : #if LK5_ENABLED
17230 : PURE elemental module subroutine setUnifRandRNGXDD_D0_LK5(rng, rand)
17231 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17232 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_LK5
17233 : #endif
17234 : use pm_kind, only: LKC => LK5
17235 : logical(LKC) , intent(out) :: rand
17236 : type(xoshiro256ssw_type) , intent(inout) :: rng
17237 : end subroutine
17238 : #endif
17239 :
17240 : #if LK4_ENABLED
17241 : PURE elemental module subroutine setUnifRandRNGXDD_D0_LK4(rng, rand)
17242 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17243 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_LK4
17244 : #endif
17245 : use pm_kind, only: LKC => LK4
17246 : logical(LKC) , intent(out) :: rand
17247 : type(xoshiro256ssw_type) , intent(inout) :: rng
17248 : end subroutine
17249 : #endif
17250 :
17251 : #if LK3_ENABLED
17252 : PURE elemental module subroutine setUnifRandRNGXDD_D0_LK3(rng, rand)
17253 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17254 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_LK3
17255 : #endif
17256 : use pm_kind, only: LKC => LK3
17257 : logical(LKC) , intent(out) :: rand
17258 : type(xoshiro256ssw_type) , intent(inout) :: rng
17259 : end subroutine
17260 : #endif
17261 :
17262 : #if LK2_ENABLED
17263 : PURE elemental module subroutine setUnifRandRNGXDD_D0_LK2(rng, rand)
17264 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17265 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_LK2
17266 : #endif
17267 : use pm_kind, only: LKC => LK2
17268 : logical(LKC) , intent(out) :: rand
17269 : type(xoshiro256ssw_type) , intent(inout) :: rng
17270 : end subroutine
17271 : #endif
17272 :
17273 : #if LK1_ENABLED
17274 : PURE elemental module subroutine setUnifRandRNGXDD_D0_LK1(rng, rand)
17275 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17276 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_LK1
17277 : #endif
17278 : use pm_kind, only: LKC => LK1
17279 : logical(LKC) , intent(out) :: rand
17280 : type(xoshiro256ssw_type) , intent(inout) :: rng
17281 : end subroutine
17282 : #endif
17283 :
17284 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17285 :
17286 : #if CK5_ENABLED
17287 : PURE elemental module subroutine setUnifRandRNGXDD_D0_CK5(rng, rand)
17288 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17289 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_CK5
17290 : #endif
17291 : use pm_kind, only: CKC => CK5
17292 : complex(CKC) , intent(out) :: rand
17293 : type(xoshiro256ssw_type) , intent(inout) :: rng
17294 : end subroutine
17295 : #endif
17296 :
17297 : #if CK4_ENABLED
17298 : PURE elemental module subroutine setUnifRandRNGXDD_D0_CK4(rng, rand)
17299 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17300 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_CK4
17301 : #endif
17302 : use pm_kind, only: CKC => CK4
17303 : complex(CKC) , intent(out) :: rand
17304 : type(xoshiro256ssw_type) , intent(inout) :: rng
17305 : end subroutine
17306 : #endif
17307 :
17308 : #if CK3_ENABLED
17309 : PURE elemental module subroutine setUnifRandRNGXDD_D0_CK3(rng, rand)
17310 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17311 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_CK3
17312 : #endif
17313 : use pm_kind, only: CKC => CK3
17314 : complex(CKC) , intent(out) :: rand
17315 : type(xoshiro256ssw_type) , intent(inout) :: rng
17316 : end subroutine
17317 : #endif
17318 :
17319 : #if CK2_ENABLED
17320 : PURE elemental module subroutine setUnifRandRNGXDD_D0_CK2(rng, rand)
17321 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17322 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_CK2
17323 : #endif
17324 : use pm_kind, only: CKC => CK2
17325 : complex(CKC) , intent(out) :: rand
17326 : type(xoshiro256ssw_type) , intent(inout) :: rng
17327 : end subroutine
17328 : #endif
17329 :
17330 : #if CK1_ENABLED
17331 : PURE elemental module subroutine setUnifRandRNGXDD_D0_CK1(rng, rand)
17332 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17333 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_CK1
17334 : #endif
17335 : use pm_kind, only: CKC => CK1
17336 : complex(CKC) , intent(out) :: rand
17337 : type(xoshiro256ssw_type) , intent(inout) :: rng
17338 : end subroutine
17339 : #endif
17340 :
17341 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17342 :
17343 : #if RK5_ENABLED
17344 : PURE elemental module subroutine setUnifRandRNGXDD_D0_RK5(rng, rand)
17345 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17346 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_RK5
17347 : #endif
17348 : use pm_kind, only: RKC => RK5
17349 : real(RKC) , intent(out) :: rand
17350 : type(xoshiro256ssw_type) , intent(inout) :: rng
17351 : end subroutine
17352 : #endif
17353 :
17354 : #if RK4_ENABLED
17355 : PURE elemental module subroutine setUnifRandRNGXDD_D0_RK4(rng, rand)
17356 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17357 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_RK4
17358 : #endif
17359 : use pm_kind, only: RKC => RK4
17360 : real(RKC) , intent(out) :: rand
17361 : type(xoshiro256ssw_type) , intent(inout) :: rng
17362 : end subroutine
17363 : #endif
17364 :
17365 : #if RK3_ENABLED
17366 : PURE elemental module subroutine setUnifRandRNGXDD_D0_RK3(rng, rand)
17367 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17368 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_RK3
17369 : #endif
17370 : use pm_kind, only: RKC => RK3
17371 : real(RKC) , intent(out) :: rand
17372 : type(xoshiro256ssw_type) , intent(inout) :: rng
17373 : end subroutine
17374 : #endif
17375 :
17376 : #if RK2_ENABLED
17377 : PURE elemental module subroutine setUnifRandRNGXDD_D0_RK2(rng, rand)
17378 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17379 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_RK2
17380 : #endif
17381 : use pm_kind, only: RKC => RK2
17382 : real(RKC) , intent(out) :: rand
17383 : type(xoshiro256ssw_type) , intent(inout) :: rng
17384 : end subroutine
17385 : #endif
17386 :
17387 : #if RK1_ENABLED
17388 : PURE elemental module subroutine setUnifRandRNGXDD_D0_RK1(rng, rand)
17389 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17390 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D0_RK1
17391 : #endif
17392 : use pm_kind, only: RKC => RK1
17393 : real(RKC) , intent(out) :: rand
17394 : type(xoshiro256ssw_type) , intent(inout) :: rng
17395 : end subroutine
17396 : #endif
17397 :
17398 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17399 :
17400 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17401 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17402 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17403 :
17404 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17405 :
17406 : #if SK5_ENABLED
17407 : PURE elemental module subroutine setUnifRandRNGXLU_D0_SK5(rng, rand, lb, ub)
17408 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17409 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_SK5
17410 : #endif
17411 : use pm_kind, only: SKC => SK5
17412 : character(*,SKC) , intent(out) :: rand
17413 : character(*,SKC) , intent(in) :: lb, ub
17414 : type(xoshiro256ssw_type) , intent(inout) :: rng
17415 : end subroutine
17416 : #endif
17417 :
17418 : #if SK4_ENABLED
17419 : PURE elemental module subroutine setUnifRandRNGXLU_D0_SK4(rng, rand, lb, ub)
17420 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17421 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_SK4
17422 : #endif
17423 : use pm_kind, only: SKC => SK4
17424 : character(*,SKC) , intent(out) :: rand
17425 : character(*,SKC) , intent(in) :: lb, ub
17426 : type(xoshiro256ssw_type) , intent(inout) :: rng
17427 : end subroutine
17428 : #endif
17429 :
17430 : #if SK3_ENABLED
17431 : PURE elemental module subroutine setUnifRandRNGXLU_D0_SK3(rng, rand, lb, ub)
17432 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17433 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_SK3
17434 : #endif
17435 : use pm_kind, only: SKC => SK3
17436 : character(*,SKC) , intent(out) :: rand
17437 : character(*,SKC) , intent(in) :: lb, ub
17438 : type(xoshiro256ssw_type) , intent(inout) :: rng
17439 : end subroutine
17440 : #endif
17441 :
17442 : #if SK2_ENABLED
17443 : PURE elemental module subroutine setUnifRandRNGXLU_D0_SK2(rng, rand, lb, ub)
17444 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17445 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_SK2
17446 : #endif
17447 : use pm_kind, only: SKC => SK2
17448 : character(*,SKC) , intent(out) :: rand
17449 : character(*,SKC) , intent(in) :: lb, ub
17450 : type(xoshiro256ssw_type) , intent(inout) :: rng
17451 : end subroutine
17452 : #endif
17453 :
17454 : #if SK1_ENABLED
17455 : PURE elemental module subroutine setUnifRandRNGXLU_D0_SK1(rng, rand, lb, ub)
17456 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17457 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_SK1
17458 : #endif
17459 : use pm_kind, only: SKC => SK1
17460 : character(*,SKC) , intent(out) :: rand
17461 : character(*,SKC) , intent(in) :: lb, ub
17462 : type(xoshiro256ssw_type) , intent(inout) :: rng
17463 : end subroutine
17464 : #endif
17465 :
17466 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17467 :
17468 : #if IK5_ENABLED
17469 : PURE elemental module subroutine setUnifRandRNGXLU_D0_IK5(rng, rand, lb, ub)
17470 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17471 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_IK5
17472 : #endif
17473 : use pm_kind, only: IKC => IK5
17474 : integer(IKC) , intent(out) :: rand
17475 : integer(IKC) , intent(in) :: lb, ub
17476 : type(xoshiro256ssw_type) , intent(inout) :: rng
17477 : end subroutine
17478 : #endif
17479 :
17480 : #if IK4_ENABLED
17481 : PURE elemental module subroutine setUnifRandRNGXLU_D0_IK4(rng, rand, lb, ub)
17482 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17483 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_IK4
17484 : #endif
17485 : use pm_kind, only: IKC => IK4
17486 : integer(IKC) , intent(out) :: rand
17487 : integer(IKC) , intent(in) :: lb, ub
17488 : type(xoshiro256ssw_type) , intent(inout) :: rng
17489 : end subroutine
17490 : #endif
17491 :
17492 : #if IK3_ENABLED
17493 : PURE elemental module subroutine setUnifRandRNGXLU_D0_IK3(rng, rand, lb, ub)
17494 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17495 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_IK3
17496 : #endif
17497 : use pm_kind, only: IKC => IK3
17498 : integer(IKC) , intent(out) :: rand
17499 : integer(IKC) , intent(in) :: lb, ub
17500 : type(xoshiro256ssw_type) , intent(inout) :: rng
17501 : end subroutine
17502 : #endif
17503 :
17504 : #if IK2_ENABLED
17505 : PURE elemental module subroutine setUnifRandRNGXLU_D0_IK2(rng, rand, lb, ub)
17506 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17507 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_IK2
17508 : #endif
17509 : use pm_kind, only: IKC => IK2
17510 : integer(IKC) , intent(out) :: rand
17511 : integer(IKC) , intent(in) :: lb, ub
17512 : type(xoshiro256ssw_type) , intent(inout) :: rng
17513 : end subroutine
17514 : #endif
17515 :
17516 : #if IK1_ENABLED
17517 : PURE elemental module subroutine setUnifRandRNGXLU_D0_IK1(rng, rand, lb, ub)
17518 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17519 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_IK1
17520 : #endif
17521 : use pm_kind, only: IKC => IK1
17522 : integer(IKC) , intent(out) :: rand
17523 : integer(IKC) , intent(in) :: lb, ub
17524 : type(xoshiro256ssw_type) , intent(inout) :: rng
17525 : end subroutine
17526 : #endif
17527 :
17528 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17529 :
17530 : #if LK5_ENABLED
17531 : PURE elemental module subroutine setUnifRandRNGXLU_D0_LK5(rng, rand, lb, ub)
17532 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17533 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_LK5
17534 : #endif
17535 : use pm_kind, only: LKC => LK5
17536 : logical(LKC) , intent(out) :: rand
17537 : logical(LKC) , intent(in) :: lb, ub
17538 : type(xoshiro256ssw_type) , intent(inout) :: rng
17539 : end subroutine
17540 : #endif
17541 :
17542 : #if LK4_ENABLED
17543 : PURE elemental module subroutine setUnifRandRNGXLU_D0_LK4(rng, rand, lb, ub)
17544 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17545 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_LK4
17546 : #endif
17547 : use pm_kind, only: LKC => LK4
17548 : logical(LKC) , intent(out) :: rand
17549 : logical(LKC) , intent(in) :: lb, ub
17550 : type(xoshiro256ssw_type) , intent(inout) :: rng
17551 : end subroutine
17552 : #endif
17553 :
17554 : #if LK3_ENABLED
17555 : PURE elemental module subroutine setUnifRandRNGXLU_D0_LK3(rng, rand, lb, ub)
17556 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17557 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_LK3
17558 : #endif
17559 : use pm_kind, only: LKC => LK3
17560 : logical(LKC) , intent(out) :: rand
17561 : logical(LKC) , intent(in) :: lb, ub
17562 : type(xoshiro256ssw_type) , intent(inout) :: rng
17563 : end subroutine
17564 : #endif
17565 :
17566 : #if LK2_ENABLED
17567 : PURE elemental module subroutine setUnifRandRNGXLU_D0_LK2(rng, rand, lb, ub)
17568 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17569 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_LK2
17570 : #endif
17571 : use pm_kind, only: LKC => LK2
17572 : logical(LKC) , intent(out) :: rand
17573 : logical(LKC) , intent(in) :: lb, ub
17574 : type(xoshiro256ssw_type) , intent(inout) :: rng
17575 : end subroutine
17576 : #endif
17577 :
17578 : #if LK1_ENABLED
17579 : PURE elemental module subroutine setUnifRandRNGXLU_D0_LK1(rng, rand, lb, ub)
17580 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17581 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_LK1
17582 : #endif
17583 : use pm_kind, only: LKC => LK1
17584 : logical(LKC) , intent(out) :: rand
17585 : logical(LKC) , intent(in) :: lb, ub
17586 : type(xoshiro256ssw_type) , intent(inout) :: rng
17587 : end subroutine
17588 : #endif
17589 :
17590 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17591 :
17592 : #if CK5_ENABLED
17593 : PURE elemental module subroutine setUnifRandRNGXLU_D0_CK5(rng, rand, lb, ub)
17594 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17595 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_CK5
17596 : #endif
17597 : use pm_kind, only: CKC => CK5
17598 : complex(CKC) , intent(out) :: rand
17599 : complex(CKC) , intent(in) :: lb, ub
17600 : type(xoshiro256ssw_type) , intent(inout) :: rng
17601 : end subroutine
17602 : #endif
17603 :
17604 : #if CK4_ENABLED
17605 : PURE elemental module subroutine setUnifRandRNGXLU_D0_CK4(rng, rand, lb, ub)
17606 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17607 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_CK4
17608 : #endif
17609 : use pm_kind, only: CKC => CK4
17610 : complex(CKC) , intent(out) :: rand
17611 : complex(CKC) , intent(in) :: lb, ub
17612 : type(xoshiro256ssw_type) , intent(inout) :: rng
17613 : end subroutine
17614 : #endif
17615 :
17616 : #if CK3_ENABLED
17617 : PURE elemental module subroutine setUnifRandRNGXLU_D0_CK3(rng, rand, lb, ub)
17618 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17619 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_CK3
17620 : #endif
17621 : use pm_kind, only: CKC => CK3
17622 : complex(CKC) , intent(out) :: rand
17623 : complex(CKC) , intent(in) :: lb, ub
17624 : type(xoshiro256ssw_type) , intent(inout) :: rng
17625 : end subroutine
17626 : #endif
17627 :
17628 : #if CK2_ENABLED
17629 : PURE elemental module subroutine setUnifRandRNGXLU_D0_CK2(rng, rand, lb, ub)
17630 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17631 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_CK2
17632 : #endif
17633 : use pm_kind, only: CKC => CK2
17634 : complex(CKC) , intent(out) :: rand
17635 : complex(CKC) , intent(in) :: lb, ub
17636 : type(xoshiro256ssw_type) , intent(inout) :: rng
17637 : end subroutine
17638 : #endif
17639 :
17640 : #if CK1_ENABLED
17641 : PURE elemental module subroutine setUnifRandRNGXLU_D0_CK1(rng, rand, lb, ub)
17642 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17643 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_CK1
17644 : #endif
17645 : use pm_kind, only: CKC => CK1
17646 : complex(CKC) , intent(out) :: rand
17647 : complex(CKC) , intent(in) :: lb, ub
17648 : type(xoshiro256ssw_type) , intent(inout) :: rng
17649 : end subroutine
17650 : #endif
17651 :
17652 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17653 :
17654 : #if RK5_ENABLED
17655 : PURE elemental module subroutine setUnifRandRNGXLU_D0_RK5(rng, rand, lb, ub)
17656 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17657 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_RK5
17658 : #endif
17659 : use pm_kind, only: RKC => RK5
17660 : real(RKC) , intent(out) :: rand
17661 : real(RKC) , intent(in) :: lb, ub
17662 : type(xoshiro256ssw_type) , intent(inout) :: rng
17663 : end subroutine
17664 : #endif
17665 :
17666 : #if RK4_ENABLED
17667 : PURE elemental module subroutine setUnifRandRNGXLU_D0_RK4(rng, rand, lb, ub)
17668 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17669 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_RK4
17670 : #endif
17671 : use pm_kind, only: RKC => RK4
17672 : real(RKC) , intent(out) :: rand
17673 : real(RKC) , intent(in) :: lb, ub
17674 : type(xoshiro256ssw_type) , intent(inout) :: rng
17675 : end subroutine
17676 : #endif
17677 :
17678 : #if RK3_ENABLED
17679 : PURE elemental module subroutine setUnifRandRNGXLU_D0_RK3(rng, rand, lb, ub)
17680 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17681 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_RK3
17682 : #endif
17683 : use pm_kind, only: RKC => RK3
17684 : real(RKC) , intent(out) :: rand
17685 : real(RKC) , intent(in) :: lb, ub
17686 : type(xoshiro256ssw_type) , intent(inout) :: rng
17687 : end subroutine
17688 : #endif
17689 :
17690 : #if RK2_ENABLED
17691 : PURE elemental module subroutine setUnifRandRNGXLU_D0_RK2(rng, rand, lb, ub)
17692 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17693 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_RK2
17694 : #endif
17695 : use pm_kind, only: RKC => RK2
17696 : real(RKC) , intent(out) :: rand
17697 : real(RKC) , intent(in) :: lb, ub
17698 : type(xoshiro256ssw_type) , intent(inout) :: rng
17699 : end subroutine
17700 : #endif
17701 :
17702 : #if RK1_ENABLED
17703 : PURE elemental module subroutine setUnifRandRNGXLU_D0_RK1(rng, rand, lb, ub)
17704 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17705 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D0_RK1
17706 : #endif
17707 : use pm_kind, only: RKC => RK1
17708 : real(RKC) , intent(out) :: rand
17709 : real(RKC) , intent(in) :: lb, ub
17710 : type(xoshiro256ssw_type) , intent(inout) :: rng
17711 : end subroutine
17712 : #endif
17713 :
17714 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17715 :
17716 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17717 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17718 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17719 :
17720 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17721 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17722 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17723 :
17724 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17725 :
17726 : #if SK5_ENABLED
17727 : PURE module subroutine setUnifRandRNGXDD_D1_SK5(rng, rand)
17728 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17729 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_SK5
17730 : #endif
17731 : use pm_kind, only: SKC => SK5
17732 : character(*,SKC) , intent(out) :: rand(:)
17733 : type(xoshiro256ssw_type) , intent(inout) :: rng
17734 : end subroutine
17735 : #endif
17736 :
17737 : #if SK4_ENABLED
17738 : PURE module subroutine setUnifRandRNGXDD_D1_SK4(rng, rand)
17739 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17740 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_SK4
17741 : #endif
17742 : use pm_kind, only: SKC => SK4
17743 : character(*,SKC) , intent(out) :: rand(:)
17744 : type(xoshiro256ssw_type) , intent(inout) :: rng
17745 : end subroutine
17746 : #endif
17747 :
17748 : #if SK3_ENABLED
17749 : PURE module subroutine setUnifRandRNGXDD_D1_SK3(rng, rand)
17750 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17751 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_SK3
17752 : #endif
17753 : use pm_kind, only: SKC => SK3
17754 : character(*,SKC) , intent(out) :: rand(:)
17755 : type(xoshiro256ssw_type) , intent(inout) :: rng
17756 : end subroutine
17757 : #endif
17758 :
17759 : #if SK2_ENABLED
17760 : PURE module subroutine setUnifRandRNGXDD_D1_SK2(rng, rand)
17761 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17762 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_SK2
17763 : #endif
17764 : use pm_kind, only: SKC => SK2
17765 : character(*,SKC) , intent(out) :: rand(:)
17766 : type(xoshiro256ssw_type) , intent(inout) :: rng
17767 : end subroutine
17768 : #endif
17769 :
17770 : #if SK1_ENABLED
17771 : PURE module subroutine setUnifRandRNGXDD_D1_SK1(rng, rand)
17772 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17773 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_SK1
17774 : #endif
17775 : use pm_kind, only: SKC => SK1
17776 : character(*,SKC) , intent(out) :: rand(:)
17777 : type(xoshiro256ssw_type) , intent(inout) :: rng
17778 : end subroutine
17779 : #endif
17780 :
17781 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17782 :
17783 : #if IK5_ENABLED
17784 : PURE module subroutine setUnifRandRNGXDD_D1_IK5(rng, rand)
17785 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17786 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_IK5
17787 : #endif
17788 : use pm_kind, only: IKC => IK5
17789 : integer(IKC) , intent(out) :: rand(:)
17790 : type(xoshiro256ssw_type) , intent(inout) :: rng
17791 : end subroutine
17792 : #endif
17793 :
17794 : #if IK4_ENABLED
17795 : PURE module subroutine setUnifRandRNGXDD_D1_IK4(rng, rand)
17796 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17797 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_IK4
17798 : #endif
17799 : use pm_kind, only: IKC => IK4
17800 : integer(IKC) , intent(out) :: rand(:)
17801 : type(xoshiro256ssw_type) , intent(inout) :: rng
17802 : end subroutine
17803 : #endif
17804 :
17805 : #if IK3_ENABLED
17806 : PURE module subroutine setUnifRandRNGXDD_D1_IK3(rng, rand)
17807 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17808 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_IK3
17809 : #endif
17810 : use pm_kind, only: IKC => IK3
17811 : integer(IKC) , intent(out) :: rand(:)
17812 : type(xoshiro256ssw_type) , intent(inout) :: rng
17813 : end subroutine
17814 : #endif
17815 :
17816 : #if IK2_ENABLED
17817 : PURE module subroutine setUnifRandRNGXDD_D1_IK2(rng, rand)
17818 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17819 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_IK2
17820 : #endif
17821 : use pm_kind, only: IKC => IK2
17822 : integer(IKC) , intent(out) :: rand(:)
17823 : type(xoshiro256ssw_type) , intent(inout) :: rng
17824 : end subroutine
17825 : #endif
17826 :
17827 : #if IK1_ENABLED
17828 : PURE module subroutine setUnifRandRNGXDD_D1_IK1(rng, rand)
17829 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17830 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_IK1
17831 : #endif
17832 : use pm_kind, only: IKC => IK1
17833 : integer(IKC) , intent(out) :: rand(:)
17834 : type(xoshiro256ssw_type) , intent(inout) :: rng
17835 : end subroutine
17836 : #endif
17837 :
17838 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17839 :
17840 : #if LK5_ENABLED
17841 : PURE module subroutine setUnifRandRNGXDD_D1_LK5(rng, rand)
17842 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17843 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_LK5
17844 : #endif
17845 : use pm_kind, only: LKC => LK5
17846 : logical(LKC) , intent(out) :: rand(:)
17847 : type(xoshiro256ssw_type) , intent(inout) :: rng
17848 : end subroutine
17849 : #endif
17850 :
17851 : #if LK4_ENABLED
17852 : PURE module subroutine setUnifRandRNGXDD_D1_LK4(rng, rand)
17853 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17854 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_LK4
17855 : #endif
17856 : use pm_kind, only: LKC => LK4
17857 : logical(LKC) , intent(out) :: rand(:)
17858 : type(xoshiro256ssw_type) , intent(inout) :: rng
17859 : end subroutine
17860 : #endif
17861 :
17862 : #if LK3_ENABLED
17863 : PURE module subroutine setUnifRandRNGXDD_D1_LK3(rng, rand)
17864 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17865 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_LK3
17866 : #endif
17867 : use pm_kind, only: LKC => LK3
17868 : logical(LKC) , intent(out) :: rand(:)
17869 : type(xoshiro256ssw_type) , intent(inout) :: rng
17870 : end subroutine
17871 : #endif
17872 :
17873 : #if LK2_ENABLED
17874 : PURE module subroutine setUnifRandRNGXDD_D1_LK2(rng, rand)
17875 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17876 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_LK2
17877 : #endif
17878 : use pm_kind, only: LKC => LK2
17879 : logical(LKC) , intent(out) :: rand(:)
17880 : type(xoshiro256ssw_type) , intent(inout) :: rng
17881 : end subroutine
17882 : #endif
17883 :
17884 : #if LK1_ENABLED
17885 : PURE module subroutine setUnifRandRNGXDD_D1_LK1(rng, rand)
17886 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17887 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_LK1
17888 : #endif
17889 : use pm_kind, only: LKC => LK1
17890 : logical(LKC) , intent(out) :: rand(:)
17891 : type(xoshiro256ssw_type) , intent(inout) :: rng
17892 : end subroutine
17893 : #endif
17894 :
17895 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17896 :
17897 : #if CK5_ENABLED
17898 : PURE module subroutine setUnifRandRNGXDD_D1_CK5(rng, rand)
17899 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17900 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_CK5
17901 : #endif
17902 : use pm_kind, only: CKC => CK5
17903 : complex(CKC) , intent(out) :: rand(:)
17904 : type(xoshiro256ssw_type) , intent(inout) :: rng
17905 : end subroutine
17906 : #endif
17907 :
17908 : #if CK4_ENABLED
17909 : PURE module subroutine setUnifRandRNGXDD_D1_CK4(rng, rand)
17910 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17911 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_CK4
17912 : #endif
17913 : use pm_kind, only: CKC => CK4
17914 : complex(CKC) , intent(out) :: rand(:)
17915 : type(xoshiro256ssw_type) , intent(inout) :: rng
17916 : end subroutine
17917 : #endif
17918 :
17919 : #if CK3_ENABLED
17920 : PURE module subroutine setUnifRandRNGXDD_D1_CK3(rng, rand)
17921 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17922 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_CK3
17923 : #endif
17924 : use pm_kind, only: CKC => CK3
17925 : complex(CKC) , intent(out) :: rand(:)
17926 : type(xoshiro256ssw_type) , intent(inout) :: rng
17927 : end subroutine
17928 : #endif
17929 :
17930 : #if CK2_ENABLED
17931 : PURE module subroutine setUnifRandRNGXDD_D1_CK2(rng, rand)
17932 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17933 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_CK2
17934 : #endif
17935 : use pm_kind, only: CKC => CK2
17936 : complex(CKC) , intent(out) :: rand(:)
17937 : type(xoshiro256ssw_type) , intent(inout) :: rng
17938 : end subroutine
17939 : #endif
17940 :
17941 : #if CK1_ENABLED
17942 : PURE module subroutine setUnifRandRNGXDD_D1_CK1(rng, rand)
17943 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17944 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_CK1
17945 : #endif
17946 : use pm_kind, only: CKC => CK1
17947 : complex(CKC) , intent(out) :: rand(:)
17948 : type(xoshiro256ssw_type) , intent(inout) :: rng
17949 : end subroutine
17950 : #endif
17951 :
17952 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17953 :
17954 : #if RK5_ENABLED
17955 : PURE module subroutine setUnifRandRNGXDD_D1_RK5(rng, rand)
17956 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17957 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_RK5
17958 : #endif
17959 : use pm_kind, only: RKC => RK5
17960 : real(RKC) , intent(out) :: rand(:)
17961 : type(xoshiro256ssw_type) , intent(inout) :: rng
17962 : end subroutine
17963 : #endif
17964 :
17965 : #if RK4_ENABLED
17966 : PURE module subroutine setUnifRandRNGXDD_D1_RK4(rng, rand)
17967 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17968 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_RK4
17969 : #endif
17970 : use pm_kind, only: RKC => RK4
17971 : real(RKC) , intent(out) :: rand(:)
17972 : type(xoshiro256ssw_type) , intent(inout) :: rng
17973 : end subroutine
17974 : #endif
17975 :
17976 : #if RK3_ENABLED
17977 : PURE module subroutine setUnifRandRNGXDD_D1_RK3(rng, rand)
17978 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17979 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_RK3
17980 : #endif
17981 : use pm_kind, only: RKC => RK3
17982 : real(RKC) , intent(out) :: rand(:)
17983 : type(xoshiro256ssw_type) , intent(inout) :: rng
17984 : end subroutine
17985 : #endif
17986 :
17987 : #if RK2_ENABLED
17988 : PURE module subroutine setUnifRandRNGXDD_D1_RK2(rng, rand)
17989 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
17990 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_RK2
17991 : #endif
17992 : use pm_kind, only: RKC => RK2
17993 : real(RKC) , intent(out) :: rand(:)
17994 : type(xoshiro256ssw_type) , intent(inout) :: rng
17995 : end subroutine
17996 : #endif
17997 :
17998 : #if RK1_ENABLED
17999 : PURE module subroutine setUnifRandRNGXDD_D1_RK1(rng, rand)
18000 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18001 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D1_RK1
18002 : #endif
18003 : use pm_kind, only: RKC => RK1
18004 : real(RKC) , intent(out) :: rand(:)
18005 : type(xoshiro256ssw_type) , intent(inout) :: rng
18006 : end subroutine
18007 : #endif
18008 :
18009 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18010 :
18011 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18012 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18013 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18014 :
18015 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18016 :
18017 : #if SK5_ENABLED
18018 : PURE module subroutine setUnifRandRNGXLU_D1_SK5(rng, rand, lb, ub)
18019 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18020 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_SK5
18021 : #endif
18022 : use pm_kind, only: SKC => SK5
18023 : character(*,SKC) , intent(out) :: rand(:)
18024 : character(*,SKC) , intent(in) :: lb, ub
18025 : type(xoshiro256ssw_type) , intent(inout) :: rng
18026 : end subroutine
18027 : #endif
18028 :
18029 : #if SK4_ENABLED
18030 : PURE module subroutine setUnifRandRNGXLU_D1_SK4(rng, rand, lb, ub)
18031 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18032 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_SK4
18033 : #endif
18034 : use pm_kind, only: SKC => SK4
18035 : character(*,SKC) , intent(out) :: rand(:)
18036 : character(*,SKC) , intent(in) :: lb, ub
18037 : type(xoshiro256ssw_type) , intent(inout) :: rng
18038 : end subroutine
18039 : #endif
18040 :
18041 : #if SK3_ENABLED
18042 : PURE module subroutine setUnifRandRNGXLU_D1_SK3(rng, rand, lb, ub)
18043 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18044 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_SK3
18045 : #endif
18046 : use pm_kind, only: SKC => SK3
18047 : character(*,SKC) , intent(out) :: rand(:)
18048 : character(*,SKC) , intent(in) :: lb, ub
18049 : type(xoshiro256ssw_type) , intent(inout) :: rng
18050 : end subroutine
18051 : #endif
18052 :
18053 : #if SK2_ENABLED
18054 : PURE module subroutine setUnifRandRNGXLU_D1_SK2(rng, rand, lb, ub)
18055 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18056 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_SK2
18057 : #endif
18058 : use pm_kind, only: SKC => SK2
18059 : character(*,SKC) , intent(out) :: rand(:)
18060 : character(*,SKC) , intent(in) :: lb, ub
18061 : type(xoshiro256ssw_type) , intent(inout) :: rng
18062 : end subroutine
18063 : #endif
18064 :
18065 : #if SK1_ENABLED
18066 : PURE module subroutine setUnifRandRNGXLU_D1_SK1(rng, rand, lb, ub)
18067 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18068 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_SK1
18069 : #endif
18070 : use pm_kind, only: SKC => SK1
18071 : character(*,SKC) , intent(out) :: rand(:)
18072 : character(*,SKC) , intent(in) :: lb, ub
18073 : type(xoshiro256ssw_type) , intent(inout) :: rng
18074 : end subroutine
18075 : #endif
18076 :
18077 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18078 :
18079 : #if IK5_ENABLED
18080 : PURE module subroutine setUnifRandRNGXLU_D1_IK5(rng, rand, lb, ub)
18081 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18082 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_IK5
18083 : #endif
18084 : use pm_kind, only: IKC => IK5
18085 : integer(IKC) , intent(out) :: rand(:)
18086 : integer(IKC) , intent(in) :: lb, ub
18087 : type(xoshiro256ssw_type) , intent(inout) :: rng
18088 : end subroutine
18089 : #endif
18090 :
18091 : #if IK4_ENABLED
18092 : PURE module subroutine setUnifRandRNGXLU_D1_IK4(rng, rand, lb, ub)
18093 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18094 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_IK4
18095 : #endif
18096 : use pm_kind, only: IKC => IK4
18097 : integer(IKC) , intent(out) :: rand(:)
18098 : integer(IKC) , intent(in) :: lb, ub
18099 : type(xoshiro256ssw_type) , intent(inout) :: rng
18100 : end subroutine
18101 : #endif
18102 :
18103 : #if IK3_ENABLED
18104 : PURE module subroutine setUnifRandRNGXLU_D1_IK3(rng, rand, lb, ub)
18105 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18106 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_IK3
18107 : #endif
18108 : use pm_kind, only: IKC => IK3
18109 : integer(IKC) , intent(out) :: rand(:)
18110 : integer(IKC) , intent(in) :: lb, ub
18111 : type(xoshiro256ssw_type) , intent(inout) :: rng
18112 : end subroutine
18113 : #endif
18114 :
18115 : #if IK2_ENABLED
18116 : PURE module subroutine setUnifRandRNGXLU_D1_IK2(rng, rand, lb, ub)
18117 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18118 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_IK2
18119 : #endif
18120 : use pm_kind, only: IKC => IK2
18121 : integer(IKC) , intent(out) :: rand(:)
18122 : integer(IKC) , intent(in) :: lb, ub
18123 : type(xoshiro256ssw_type) , intent(inout) :: rng
18124 : end subroutine
18125 : #endif
18126 :
18127 : #if IK1_ENABLED
18128 : PURE module subroutine setUnifRandRNGXLU_D1_IK1(rng, rand, lb, ub)
18129 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18130 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_IK1
18131 : #endif
18132 : use pm_kind, only: IKC => IK1
18133 : integer(IKC) , intent(out) :: rand(:)
18134 : integer(IKC) , intent(in) :: lb, ub
18135 : type(xoshiro256ssw_type) , intent(inout) :: rng
18136 : end subroutine
18137 : #endif
18138 :
18139 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18140 :
18141 : #if LK5_ENABLED
18142 : PURE module subroutine setUnifRandRNGXLU_D1_LK5(rng, rand, lb, ub)
18143 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18144 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_LK5
18145 : #endif
18146 : use pm_kind, only: LKC => LK5
18147 : logical(LKC) , intent(out) :: rand(:)
18148 : logical(LKC) , intent(in) :: lb, ub
18149 : type(xoshiro256ssw_type) , intent(inout) :: rng
18150 : end subroutine
18151 : #endif
18152 :
18153 : #if LK4_ENABLED
18154 : PURE module subroutine setUnifRandRNGXLU_D1_LK4(rng, rand, lb, ub)
18155 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18156 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_LK4
18157 : #endif
18158 : use pm_kind, only: LKC => LK4
18159 : logical(LKC) , intent(out) :: rand(:)
18160 : logical(LKC) , intent(in) :: lb, ub
18161 : type(xoshiro256ssw_type) , intent(inout) :: rng
18162 : end subroutine
18163 : #endif
18164 :
18165 : #if LK3_ENABLED
18166 : PURE module subroutine setUnifRandRNGXLU_D1_LK3(rng, rand, lb, ub)
18167 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18168 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_LK3
18169 : #endif
18170 : use pm_kind, only: LKC => LK3
18171 : logical(LKC) , intent(out) :: rand(:)
18172 : logical(LKC) , intent(in) :: lb, ub
18173 : type(xoshiro256ssw_type) , intent(inout) :: rng
18174 : end subroutine
18175 : #endif
18176 :
18177 : #if LK2_ENABLED
18178 : PURE module subroutine setUnifRandRNGXLU_D1_LK2(rng, rand, lb, ub)
18179 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18180 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_LK2
18181 : #endif
18182 : use pm_kind, only: LKC => LK2
18183 : logical(LKC) , intent(out) :: rand(:)
18184 : logical(LKC) , intent(in) :: lb, ub
18185 : type(xoshiro256ssw_type) , intent(inout) :: rng
18186 : end subroutine
18187 : #endif
18188 :
18189 : #if LK1_ENABLED
18190 : PURE module subroutine setUnifRandRNGXLU_D1_LK1(rng, rand, lb, ub)
18191 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18192 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_LK1
18193 : #endif
18194 : use pm_kind, only: LKC => LK1
18195 : logical(LKC) , intent(out) :: rand(:)
18196 : logical(LKC) , intent(in) :: lb, ub
18197 : type(xoshiro256ssw_type) , intent(inout) :: rng
18198 : end subroutine
18199 : #endif
18200 :
18201 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18202 :
18203 : #if CK5_ENABLED
18204 : PURE module subroutine setUnifRandRNGXLU_D1_CK5(rng, rand, lb, ub)
18205 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18206 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_CK5
18207 : #endif
18208 : use pm_kind, only: CKC => CK5
18209 : complex(CKC) , intent(out) :: rand(:)
18210 : complex(CKC) , intent(in) :: lb, ub
18211 : type(xoshiro256ssw_type) , intent(inout) :: rng
18212 : end subroutine
18213 : #endif
18214 :
18215 : #if CK4_ENABLED
18216 : PURE module subroutine setUnifRandRNGXLU_D1_CK4(rng, rand, lb, ub)
18217 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18218 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_CK4
18219 : #endif
18220 : use pm_kind, only: CKC => CK4
18221 : complex(CKC) , intent(out) :: rand(:)
18222 : complex(CKC) , intent(in) :: lb, ub
18223 : type(xoshiro256ssw_type) , intent(inout) :: rng
18224 : end subroutine
18225 : #endif
18226 :
18227 : #if CK3_ENABLED
18228 : PURE module subroutine setUnifRandRNGXLU_D1_CK3(rng, rand, lb, ub)
18229 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18230 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_CK3
18231 : #endif
18232 : use pm_kind, only: CKC => CK3
18233 : complex(CKC) , intent(out) :: rand(:)
18234 : complex(CKC) , intent(in) :: lb, ub
18235 : type(xoshiro256ssw_type) , intent(inout) :: rng
18236 : end subroutine
18237 : #endif
18238 :
18239 : #if CK2_ENABLED
18240 : PURE module subroutine setUnifRandRNGXLU_D1_CK2(rng, rand, lb, ub)
18241 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18242 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_CK2
18243 : #endif
18244 : use pm_kind, only: CKC => CK2
18245 : complex(CKC) , intent(out) :: rand(:)
18246 : complex(CKC) , intent(in) :: lb, ub
18247 : type(xoshiro256ssw_type) , intent(inout) :: rng
18248 : end subroutine
18249 : #endif
18250 :
18251 : #if CK1_ENABLED
18252 : PURE module subroutine setUnifRandRNGXLU_D1_CK1(rng, rand, lb, ub)
18253 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18254 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_CK1
18255 : #endif
18256 : use pm_kind, only: CKC => CK1
18257 : complex(CKC) , intent(out) :: rand(:)
18258 : complex(CKC) , intent(in) :: lb, ub
18259 : type(xoshiro256ssw_type) , intent(inout) :: rng
18260 : end subroutine
18261 : #endif
18262 :
18263 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18264 :
18265 : #if RK5_ENABLED
18266 : PURE module subroutine setUnifRandRNGXLU_D1_RK5(rng, rand, lb, ub)
18267 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18268 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_RK5
18269 : #endif
18270 : use pm_kind, only: RKC => RK5
18271 : real(RKC) , intent(out) :: rand(:)
18272 : real(RKC) , intent(in) :: lb, ub
18273 : type(xoshiro256ssw_type) , intent(inout) :: rng
18274 : end subroutine
18275 : #endif
18276 :
18277 : #if RK4_ENABLED
18278 : PURE module subroutine setUnifRandRNGXLU_D1_RK4(rng, rand, lb, ub)
18279 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18280 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_RK4
18281 : #endif
18282 : use pm_kind, only: RKC => RK4
18283 : real(RKC) , intent(out) :: rand(:)
18284 : real(RKC) , intent(in) :: lb, ub
18285 : type(xoshiro256ssw_type) , intent(inout) :: rng
18286 : end subroutine
18287 : #endif
18288 :
18289 : #if RK3_ENABLED
18290 : PURE module subroutine setUnifRandRNGXLU_D1_RK3(rng, rand, lb, ub)
18291 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18292 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_RK3
18293 : #endif
18294 : use pm_kind, only: RKC => RK3
18295 : real(RKC) , intent(out) :: rand(:)
18296 : real(RKC) , intent(in) :: lb, ub
18297 : type(xoshiro256ssw_type) , intent(inout) :: rng
18298 : end subroutine
18299 : #endif
18300 :
18301 : #if RK2_ENABLED
18302 : PURE module subroutine setUnifRandRNGXLU_D1_RK2(rng, rand, lb, ub)
18303 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18304 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_RK2
18305 : #endif
18306 : use pm_kind, only: RKC => RK2
18307 : real(RKC) , intent(out) :: rand(:)
18308 : real(RKC) , intent(in) :: lb, ub
18309 : type(xoshiro256ssw_type) , intent(inout) :: rng
18310 : end subroutine
18311 : #endif
18312 :
18313 : #if RK1_ENABLED
18314 : PURE module subroutine setUnifRandRNGXLU_D1_RK1(rng, rand, lb, ub)
18315 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18316 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D1_RK1
18317 : #endif
18318 : use pm_kind, only: RKC => RK1
18319 : real(RKC) , intent(out) :: rand(:)
18320 : real(RKC) , intent(in) :: lb, ub
18321 : type(xoshiro256ssw_type) , intent(inout) :: rng
18322 : end subroutine
18323 : #endif
18324 :
18325 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18326 :
18327 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18328 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18329 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18330 :
18331 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18332 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18333 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18334 :
18335 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18336 :
18337 : #if SK5_ENABLED
18338 : PURE module subroutine setUnifRandRNGXDD_D2_SK5(rng, rand)
18339 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18340 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_SK5
18341 : #endif
18342 : use pm_kind, only: SKC => SK5
18343 : character(*,SKC) , intent(out) :: rand(:,:)
18344 : type(xoshiro256ssw_type) , intent(inout) :: rng
18345 : end subroutine
18346 : #endif
18347 :
18348 : #if SK4_ENABLED
18349 : PURE module subroutine setUnifRandRNGXDD_D2_SK4(rng, rand)
18350 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18351 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_SK4
18352 : #endif
18353 : use pm_kind, only: SKC => SK4
18354 : character(*,SKC) , intent(out) :: rand(:,:)
18355 : type(xoshiro256ssw_type) , intent(inout) :: rng
18356 : end subroutine
18357 : #endif
18358 :
18359 : #if SK3_ENABLED
18360 : PURE module subroutine setUnifRandRNGXDD_D2_SK3(rng, rand)
18361 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18362 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_SK3
18363 : #endif
18364 : use pm_kind, only: SKC => SK3
18365 : character(*,SKC) , intent(out) :: rand(:,:)
18366 : type(xoshiro256ssw_type) , intent(inout) :: rng
18367 : end subroutine
18368 : #endif
18369 :
18370 : #if SK2_ENABLED
18371 : PURE module subroutine setUnifRandRNGXDD_D2_SK2(rng, rand)
18372 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18373 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_SK2
18374 : #endif
18375 : use pm_kind, only: SKC => SK2
18376 : character(*,SKC) , intent(out) :: rand(:,:)
18377 : type(xoshiro256ssw_type) , intent(inout) :: rng
18378 : end subroutine
18379 : #endif
18380 :
18381 : #if SK1_ENABLED
18382 : PURE module subroutine setUnifRandRNGXDD_D2_SK1(rng, rand)
18383 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18384 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_SK1
18385 : #endif
18386 : use pm_kind, only: SKC => SK1
18387 : character(*,SKC) , intent(out) :: rand(:,:)
18388 : type(xoshiro256ssw_type) , intent(inout) :: rng
18389 : end subroutine
18390 : #endif
18391 :
18392 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18393 :
18394 : #if IK5_ENABLED
18395 : PURE module subroutine setUnifRandRNGXDD_D2_IK5(rng, rand)
18396 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18397 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_IK5
18398 : #endif
18399 : use pm_kind, only: IKC => IK5
18400 : integer(IKC) , intent(out) :: rand(:,:)
18401 : type(xoshiro256ssw_type) , intent(inout) :: rng
18402 : end subroutine
18403 : #endif
18404 :
18405 : #if IK4_ENABLED
18406 : PURE module subroutine setUnifRandRNGXDD_D2_IK4(rng, rand)
18407 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18408 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_IK4
18409 : #endif
18410 : use pm_kind, only: IKC => IK4
18411 : integer(IKC) , intent(out) :: rand(:,:)
18412 : type(xoshiro256ssw_type) , intent(inout) :: rng
18413 : end subroutine
18414 : #endif
18415 :
18416 : #if IK3_ENABLED
18417 : PURE module subroutine setUnifRandRNGXDD_D2_IK3(rng, rand)
18418 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18419 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_IK3
18420 : #endif
18421 : use pm_kind, only: IKC => IK3
18422 : integer(IKC) , intent(out) :: rand(:,:)
18423 : type(xoshiro256ssw_type) , intent(inout) :: rng
18424 : end subroutine
18425 : #endif
18426 :
18427 : #if IK2_ENABLED
18428 : PURE module subroutine setUnifRandRNGXDD_D2_IK2(rng, rand)
18429 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18430 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_IK2
18431 : #endif
18432 : use pm_kind, only: IKC => IK2
18433 : integer(IKC) , intent(out) :: rand(:,:)
18434 : type(xoshiro256ssw_type) , intent(inout) :: rng
18435 : end subroutine
18436 : #endif
18437 :
18438 : #if IK1_ENABLED
18439 : PURE module subroutine setUnifRandRNGXDD_D2_IK1(rng, rand)
18440 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18441 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_IK1
18442 : #endif
18443 : use pm_kind, only: IKC => IK1
18444 : integer(IKC) , intent(out) :: rand(:,:)
18445 : type(xoshiro256ssw_type) , intent(inout) :: rng
18446 : end subroutine
18447 : #endif
18448 :
18449 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18450 :
18451 : #if LK5_ENABLED
18452 : PURE module subroutine setUnifRandRNGXDD_D2_LK5(rng, rand)
18453 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18454 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_LK5
18455 : #endif
18456 : use pm_kind, only: LKC => LK5
18457 : logical(LKC) , intent(out) :: rand(:,:)
18458 : type(xoshiro256ssw_type) , intent(inout) :: rng
18459 : end subroutine
18460 : #endif
18461 :
18462 : #if LK4_ENABLED
18463 : PURE module subroutine setUnifRandRNGXDD_D2_LK4(rng, rand)
18464 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18465 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_LK4
18466 : #endif
18467 : use pm_kind, only: LKC => LK4
18468 : logical(LKC) , intent(out) :: rand(:,:)
18469 : type(xoshiro256ssw_type) , intent(inout) :: rng
18470 : end subroutine
18471 : #endif
18472 :
18473 : #if LK3_ENABLED
18474 : PURE module subroutine setUnifRandRNGXDD_D2_LK3(rng, rand)
18475 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18476 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_LK3
18477 : #endif
18478 : use pm_kind, only: LKC => LK3
18479 : logical(LKC) , intent(out) :: rand(:,:)
18480 : type(xoshiro256ssw_type) , intent(inout) :: rng
18481 : end subroutine
18482 : #endif
18483 :
18484 : #if LK2_ENABLED
18485 : PURE module subroutine setUnifRandRNGXDD_D2_LK2(rng, rand)
18486 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18487 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_LK2
18488 : #endif
18489 : use pm_kind, only: LKC => LK2
18490 : logical(LKC) , intent(out) :: rand(:,:)
18491 : type(xoshiro256ssw_type) , intent(inout) :: rng
18492 : end subroutine
18493 : #endif
18494 :
18495 : #if LK1_ENABLED
18496 : PURE module subroutine setUnifRandRNGXDD_D2_LK1(rng, rand)
18497 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18498 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_LK1
18499 : #endif
18500 : use pm_kind, only: LKC => LK1
18501 : logical(LKC) , intent(out) :: rand(:,:)
18502 : type(xoshiro256ssw_type) , intent(inout) :: rng
18503 : end subroutine
18504 : #endif
18505 :
18506 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18507 :
18508 : #if CK5_ENABLED
18509 : PURE module subroutine setUnifRandRNGXDD_D2_CK5(rng, rand)
18510 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18511 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_CK5
18512 : #endif
18513 : use pm_kind, only: CKC => CK5
18514 : complex(CKC) , intent(out) :: rand(:,:)
18515 : type(xoshiro256ssw_type) , intent(inout) :: rng
18516 : end subroutine
18517 : #endif
18518 :
18519 : #if CK4_ENABLED
18520 : PURE module subroutine setUnifRandRNGXDD_D2_CK4(rng, rand)
18521 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18522 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_CK4
18523 : #endif
18524 : use pm_kind, only: CKC => CK4
18525 : complex(CKC) , intent(out) :: rand(:,:)
18526 : type(xoshiro256ssw_type) , intent(inout) :: rng
18527 : end subroutine
18528 : #endif
18529 :
18530 : #if CK3_ENABLED
18531 : PURE module subroutine setUnifRandRNGXDD_D2_CK3(rng, rand)
18532 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18533 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_CK3
18534 : #endif
18535 : use pm_kind, only: CKC => CK3
18536 : complex(CKC) , intent(out) :: rand(:,:)
18537 : type(xoshiro256ssw_type) , intent(inout) :: rng
18538 : end subroutine
18539 : #endif
18540 :
18541 : #if CK2_ENABLED
18542 : PURE module subroutine setUnifRandRNGXDD_D2_CK2(rng, rand)
18543 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18544 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_CK2
18545 : #endif
18546 : use pm_kind, only: CKC => CK2
18547 : complex(CKC) , intent(out) :: rand(:,:)
18548 : type(xoshiro256ssw_type) , intent(inout) :: rng
18549 : end subroutine
18550 : #endif
18551 :
18552 : #if CK1_ENABLED
18553 : PURE module subroutine setUnifRandRNGXDD_D2_CK1(rng, rand)
18554 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18555 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_CK1
18556 : #endif
18557 : use pm_kind, only: CKC => CK1
18558 : complex(CKC) , intent(out) :: rand(:,:)
18559 : type(xoshiro256ssw_type) , intent(inout) :: rng
18560 : end subroutine
18561 : #endif
18562 :
18563 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18564 :
18565 : #if RK5_ENABLED
18566 : PURE module subroutine setUnifRandRNGXDD_D2_RK5(rng, rand)
18567 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18568 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_RK5
18569 : #endif
18570 : use pm_kind, only: RKC => RK5
18571 : real(RKC) , intent(out) :: rand(:,:)
18572 : type(xoshiro256ssw_type) , intent(inout) :: rng
18573 : end subroutine
18574 : #endif
18575 :
18576 : #if RK4_ENABLED
18577 : PURE module subroutine setUnifRandRNGXDD_D2_RK4(rng, rand)
18578 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18579 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_RK4
18580 : #endif
18581 : use pm_kind, only: RKC => RK4
18582 : real(RKC) , intent(out) :: rand(:,:)
18583 : type(xoshiro256ssw_type) , intent(inout) :: rng
18584 : end subroutine
18585 : #endif
18586 :
18587 : #if RK3_ENABLED
18588 : PURE module subroutine setUnifRandRNGXDD_D2_RK3(rng, rand)
18589 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18590 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_RK3
18591 : #endif
18592 : use pm_kind, only: RKC => RK3
18593 : real(RKC) , intent(out) :: rand(:,:)
18594 : type(xoshiro256ssw_type) , intent(inout) :: rng
18595 : end subroutine
18596 : #endif
18597 :
18598 : #if RK2_ENABLED
18599 : PURE module subroutine setUnifRandRNGXDD_D2_RK2(rng, rand)
18600 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18601 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_RK2
18602 : #endif
18603 : use pm_kind, only: RKC => RK2
18604 : real(RKC) , intent(out) :: rand(:,:)
18605 : type(xoshiro256ssw_type) , intent(inout) :: rng
18606 : end subroutine
18607 : #endif
18608 :
18609 : #if RK1_ENABLED
18610 : PURE module subroutine setUnifRandRNGXDD_D2_RK1(rng, rand)
18611 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18612 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D2_RK1
18613 : #endif
18614 : use pm_kind, only: RKC => RK1
18615 : real(RKC) , intent(out) :: rand(:,:)
18616 : type(xoshiro256ssw_type) , intent(inout) :: rng
18617 : end subroutine
18618 : #endif
18619 :
18620 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18621 :
18622 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18623 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18624 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18625 :
18626 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18627 :
18628 : #if SK5_ENABLED
18629 : PURE module subroutine setUnifRandRNGXLU_D2_SK5(rng, rand, lb, ub)
18630 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18631 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_SK5
18632 : #endif
18633 : use pm_kind, only: SKC => SK5
18634 : character(*,SKC) , intent(out) :: rand(:,:)
18635 : character(*,SKC) , intent(in) :: lb, ub
18636 : type(xoshiro256ssw_type) , intent(inout) :: rng
18637 : end subroutine
18638 : #endif
18639 :
18640 : #if SK4_ENABLED
18641 : PURE module subroutine setUnifRandRNGXLU_D2_SK4(rng, rand, lb, ub)
18642 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18643 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_SK4
18644 : #endif
18645 : use pm_kind, only: SKC => SK4
18646 : character(*,SKC) , intent(out) :: rand(:,:)
18647 : character(*,SKC) , intent(in) :: lb, ub
18648 : type(xoshiro256ssw_type) , intent(inout) :: rng
18649 : end subroutine
18650 : #endif
18651 :
18652 : #if SK3_ENABLED
18653 : PURE module subroutine setUnifRandRNGXLU_D2_SK3(rng, rand, lb, ub)
18654 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18655 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_SK3
18656 : #endif
18657 : use pm_kind, only: SKC => SK3
18658 : character(*,SKC) , intent(out) :: rand(:,:)
18659 : character(*,SKC) , intent(in) :: lb, ub
18660 : type(xoshiro256ssw_type) , intent(inout) :: rng
18661 : end subroutine
18662 : #endif
18663 :
18664 : #if SK2_ENABLED
18665 : PURE module subroutine setUnifRandRNGXLU_D2_SK2(rng, rand, lb, ub)
18666 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18667 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_SK2
18668 : #endif
18669 : use pm_kind, only: SKC => SK2
18670 : character(*,SKC) , intent(out) :: rand(:,:)
18671 : character(*,SKC) , intent(in) :: lb, ub
18672 : type(xoshiro256ssw_type) , intent(inout) :: rng
18673 : end subroutine
18674 : #endif
18675 :
18676 : #if SK1_ENABLED
18677 : PURE module subroutine setUnifRandRNGXLU_D2_SK1(rng, rand, lb, ub)
18678 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18679 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_SK1
18680 : #endif
18681 : use pm_kind, only: SKC => SK1
18682 : character(*,SKC) , intent(out) :: rand(:,:)
18683 : character(*,SKC) , intent(in) :: lb, ub
18684 : type(xoshiro256ssw_type) , intent(inout) :: rng
18685 : end subroutine
18686 : #endif
18687 :
18688 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18689 :
18690 : #if IK5_ENABLED
18691 : PURE module subroutine setUnifRandRNGXLU_D2_IK5(rng, rand, lb, ub)
18692 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18693 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_IK5
18694 : #endif
18695 : use pm_kind, only: IKC => IK5
18696 : integer(IKC) , intent(out) :: rand(:,:)
18697 : integer(IKC) , intent(in) :: lb, ub
18698 : type(xoshiro256ssw_type) , intent(inout) :: rng
18699 : end subroutine
18700 : #endif
18701 :
18702 : #if IK4_ENABLED
18703 : PURE module subroutine setUnifRandRNGXLU_D2_IK4(rng, rand, lb, ub)
18704 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18705 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_IK4
18706 : #endif
18707 : use pm_kind, only: IKC => IK4
18708 : integer(IKC) , intent(out) :: rand(:,:)
18709 : integer(IKC) , intent(in) :: lb, ub
18710 : type(xoshiro256ssw_type) , intent(inout) :: rng
18711 : end subroutine
18712 : #endif
18713 :
18714 : #if IK3_ENABLED
18715 : PURE module subroutine setUnifRandRNGXLU_D2_IK3(rng, rand, lb, ub)
18716 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18717 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_IK3
18718 : #endif
18719 : use pm_kind, only: IKC => IK3
18720 : integer(IKC) , intent(out) :: rand(:,:)
18721 : integer(IKC) , intent(in) :: lb, ub
18722 : type(xoshiro256ssw_type) , intent(inout) :: rng
18723 : end subroutine
18724 : #endif
18725 :
18726 : #if IK2_ENABLED
18727 : PURE module subroutine setUnifRandRNGXLU_D2_IK2(rng, rand, lb, ub)
18728 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18729 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_IK2
18730 : #endif
18731 : use pm_kind, only: IKC => IK2
18732 : integer(IKC) , intent(out) :: rand(:,:)
18733 : integer(IKC) , intent(in) :: lb, ub
18734 : type(xoshiro256ssw_type) , intent(inout) :: rng
18735 : end subroutine
18736 : #endif
18737 :
18738 : #if IK1_ENABLED
18739 : PURE module subroutine setUnifRandRNGXLU_D2_IK1(rng, rand, lb, ub)
18740 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18741 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_IK1
18742 : #endif
18743 : use pm_kind, only: IKC => IK1
18744 : integer(IKC) , intent(out) :: rand(:,:)
18745 : integer(IKC) , intent(in) :: lb, ub
18746 : type(xoshiro256ssw_type) , intent(inout) :: rng
18747 : end subroutine
18748 : #endif
18749 :
18750 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18751 :
18752 : #if LK5_ENABLED
18753 : PURE module subroutine setUnifRandRNGXLU_D2_LK5(rng, rand, lb, ub)
18754 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18755 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_LK5
18756 : #endif
18757 : use pm_kind, only: LKC => LK5
18758 : logical(LKC) , intent(out) :: rand(:,:)
18759 : logical(LKC) , intent(in) :: lb, ub
18760 : type(xoshiro256ssw_type) , intent(inout) :: rng
18761 : end subroutine
18762 : #endif
18763 :
18764 : #if LK4_ENABLED
18765 : PURE module subroutine setUnifRandRNGXLU_D2_LK4(rng, rand, lb, ub)
18766 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18767 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_LK4
18768 : #endif
18769 : use pm_kind, only: LKC => LK4
18770 : logical(LKC) , intent(out) :: rand(:,:)
18771 : logical(LKC) , intent(in) :: lb, ub
18772 : type(xoshiro256ssw_type) , intent(inout) :: rng
18773 : end subroutine
18774 : #endif
18775 :
18776 : #if LK3_ENABLED
18777 : PURE module subroutine setUnifRandRNGXLU_D2_LK3(rng, rand, lb, ub)
18778 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18779 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_LK3
18780 : #endif
18781 : use pm_kind, only: LKC => LK3
18782 : logical(LKC) , intent(out) :: rand(:,:)
18783 : logical(LKC) , intent(in) :: lb, ub
18784 : type(xoshiro256ssw_type) , intent(inout) :: rng
18785 : end subroutine
18786 : #endif
18787 :
18788 : #if LK2_ENABLED
18789 : PURE module subroutine setUnifRandRNGXLU_D2_LK2(rng, rand, lb, ub)
18790 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18791 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_LK2
18792 : #endif
18793 : use pm_kind, only: LKC => LK2
18794 : logical(LKC) , intent(out) :: rand(:,:)
18795 : logical(LKC) , intent(in) :: lb, ub
18796 : type(xoshiro256ssw_type) , intent(inout) :: rng
18797 : end subroutine
18798 : #endif
18799 :
18800 : #if LK1_ENABLED
18801 : PURE module subroutine setUnifRandRNGXLU_D2_LK1(rng, rand, lb, ub)
18802 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18803 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_LK1
18804 : #endif
18805 : use pm_kind, only: LKC => LK1
18806 : logical(LKC) , intent(out) :: rand(:,:)
18807 : logical(LKC) , intent(in) :: lb, ub
18808 : type(xoshiro256ssw_type) , intent(inout) :: rng
18809 : end subroutine
18810 : #endif
18811 :
18812 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18813 :
18814 : #if CK5_ENABLED
18815 : PURE module subroutine setUnifRandRNGXLU_D2_CK5(rng, rand, lb, ub)
18816 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18817 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_CK5
18818 : #endif
18819 : use pm_kind, only: CKC => CK5
18820 : complex(CKC) , intent(out) :: rand(:,:)
18821 : complex(CKC) , intent(in) :: lb, ub
18822 : type(xoshiro256ssw_type) , intent(inout) :: rng
18823 : end subroutine
18824 : #endif
18825 :
18826 : #if CK4_ENABLED
18827 : PURE module subroutine setUnifRandRNGXLU_D2_CK4(rng, rand, lb, ub)
18828 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18829 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_CK4
18830 : #endif
18831 : use pm_kind, only: CKC => CK4
18832 : complex(CKC) , intent(out) :: rand(:,:)
18833 : complex(CKC) , intent(in) :: lb, ub
18834 : type(xoshiro256ssw_type) , intent(inout) :: rng
18835 : end subroutine
18836 : #endif
18837 :
18838 : #if CK3_ENABLED
18839 : PURE module subroutine setUnifRandRNGXLU_D2_CK3(rng, rand, lb, ub)
18840 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18841 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_CK3
18842 : #endif
18843 : use pm_kind, only: CKC => CK3
18844 : complex(CKC) , intent(out) :: rand(:,:)
18845 : complex(CKC) , intent(in) :: lb, ub
18846 : type(xoshiro256ssw_type) , intent(inout) :: rng
18847 : end subroutine
18848 : #endif
18849 :
18850 : #if CK2_ENABLED
18851 : PURE module subroutine setUnifRandRNGXLU_D2_CK2(rng, rand, lb, ub)
18852 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18853 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_CK2
18854 : #endif
18855 : use pm_kind, only: CKC => CK2
18856 : complex(CKC) , intent(out) :: rand(:,:)
18857 : complex(CKC) , intent(in) :: lb, ub
18858 : type(xoshiro256ssw_type) , intent(inout) :: rng
18859 : end subroutine
18860 : #endif
18861 :
18862 : #if CK1_ENABLED
18863 : PURE module subroutine setUnifRandRNGXLU_D2_CK1(rng, rand, lb, ub)
18864 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18865 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_CK1
18866 : #endif
18867 : use pm_kind, only: CKC => CK1
18868 : complex(CKC) , intent(out) :: rand(:,:)
18869 : complex(CKC) , intent(in) :: lb, ub
18870 : type(xoshiro256ssw_type) , intent(inout) :: rng
18871 : end subroutine
18872 : #endif
18873 :
18874 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18875 :
18876 : #if RK5_ENABLED
18877 : PURE module subroutine setUnifRandRNGXLU_D2_RK5(rng, rand, lb, ub)
18878 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18879 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_RK5
18880 : #endif
18881 : use pm_kind, only: RKC => RK5
18882 : real(RKC) , intent(out) :: rand(:,:)
18883 : real(RKC) , intent(in) :: lb, ub
18884 : type(xoshiro256ssw_type) , intent(inout) :: rng
18885 : end subroutine
18886 : #endif
18887 :
18888 : #if RK4_ENABLED
18889 : PURE module subroutine setUnifRandRNGXLU_D2_RK4(rng, rand, lb, ub)
18890 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18891 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_RK4
18892 : #endif
18893 : use pm_kind, only: RKC => RK4
18894 : real(RKC) , intent(out) :: rand(:,:)
18895 : real(RKC) , intent(in) :: lb, ub
18896 : type(xoshiro256ssw_type) , intent(inout) :: rng
18897 : end subroutine
18898 : #endif
18899 :
18900 : #if RK3_ENABLED
18901 : PURE module subroutine setUnifRandRNGXLU_D2_RK3(rng, rand, lb, ub)
18902 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18903 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_RK3
18904 : #endif
18905 : use pm_kind, only: RKC => RK3
18906 : real(RKC) , intent(out) :: rand(:,:)
18907 : real(RKC) , intent(in) :: lb, ub
18908 : type(xoshiro256ssw_type) , intent(inout) :: rng
18909 : end subroutine
18910 : #endif
18911 :
18912 : #if RK2_ENABLED
18913 : PURE module subroutine setUnifRandRNGXLU_D2_RK2(rng, rand, lb, ub)
18914 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18915 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_RK2
18916 : #endif
18917 : use pm_kind, only: RKC => RK2
18918 : real(RKC) , intent(out) :: rand(:,:)
18919 : real(RKC) , intent(in) :: lb, ub
18920 : type(xoshiro256ssw_type) , intent(inout) :: rng
18921 : end subroutine
18922 : #endif
18923 :
18924 : #if RK1_ENABLED
18925 : PURE module subroutine setUnifRandRNGXLU_D2_RK1(rng, rand, lb, ub)
18926 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18927 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D2_RK1
18928 : #endif
18929 : use pm_kind, only: RKC => RK1
18930 : real(RKC) , intent(out) :: rand(:,:)
18931 : real(RKC) , intent(in) :: lb, ub
18932 : type(xoshiro256ssw_type) , intent(inout) :: rng
18933 : end subroutine
18934 : #endif
18935 :
18936 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18937 :
18938 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18939 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18940 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18941 :
18942 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18943 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18944 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18945 :
18946 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18947 :
18948 : #if SK5_ENABLED
18949 : PURE module subroutine setUnifRandRNGXDD_D3_SK5(rng, rand)
18950 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18951 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_SK5
18952 : #endif
18953 : use pm_kind, only: SKC => SK5
18954 : character(*,SKC) , intent(out) :: rand(:,:,:)
18955 : type(xoshiro256ssw_type) , intent(inout) :: rng
18956 : end subroutine
18957 : #endif
18958 :
18959 : #if SK4_ENABLED
18960 : PURE module subroutine setUnifRandRNGXDD_D3_SK4(rng, rand)
18961 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18962 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_SK4
18963 : #endif
18964 : use pm_kind, only: SKC => SK4
18965 : character(*,SKC) , intent(out) :: rand(:,:,:)
18966 : type(xoshiro256ssw_type) , intent(inout) :: rng
18967 : end subroutine
18968 : #endif
18969 :
18970 : #if SK3_ENABLED
18971 : PURE module subroutine setUnifRandRNGXDD_D3_SK3(rng, rand)
18972 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18973 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_SK3
18974 : #endif
18975 : use pm_kind, only: SKC => SK3
18976 : character(*,SKC) , intent(out) :: rand(:,:,:)
18977 : type(xoshiro256ssw_type) , intent(inout) :: rng
18978 : end subroutine
18979 : #endif
18980 :
18981 : #if SK2_ENABLED
18982 : PURE module subroutine setUnifRandRNGXDD_D3_SK2(rng, rand)
18983 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18984 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_SK2
18985 : #endif
18986 : use pm_kind, only: SKC => SK2
18987 : character(*,SKC) , intent(out) :: rand(:,:,:)
18988 : type(xoshiro256ssw_type) , intent(inout) :: rng
18989 : end subroutine
18990 : #endif
18991 :
18992 : #if SK1_ENABLED
18993 : PURE module subroutine setUnifRandRNGXDD_D3_SK1(rng, rand)
18994 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
18995 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_SK1
18996 : #endif
18997 : use pm_kind, only: SKC => SK1
18998 : character(*,SKC) , intent(out) :: rand(:,:,:)
18999 : type(xoshiro256ssw_type) , intent(inout) :: rng
19000 : end subroutine
19001 : #endif
19002 :
19003 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19004 :
19005 : #if IK5_ENABLED
19006 : PURE module subroutine setUnifRandRNGXDD_D3_IK5(rng, rand)
19007 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19008 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_IK5
19009 : #endif
19010 : use pm_kind, only: IKC => IK5
19011 : integer(IKC) , intent(out) :: rand(:,:,:)
19012 : type(xoshiro256ssw_type) , intent(inout) :: rng
19013 : end subroutine
19014 : #endif
19015 :
19016 : #if IK4_ENABLED
19017 : PURE module subroutine setUnifRandRNGXDD_D3_IK4(rng, rand)
19018 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19019 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_IK4
19020 : #endif
19021 : use pm_kind, only: IKC => IK4
19022 : integer(IKC) , intent(out) :: rand(:,:,:)
19023 : type(xoshiro256ssw_type) , intent(inout) :: rng
19024 : end subroutine
19025 : #endif
19026 :
19027 : #if IK3_ENABLED
19028 : PURE module subroutine setUnifRandRNGXDD_D3_IK3(rng, rand)
19029 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19030 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_IK3
19031 : #endif
19032 : use pm_kind, only: IKC => IK3
19033 : integer(IKC) , intent(out) :: rand(:,:,:)
19034 : type(xoshiro256ssw_type) , intent(inout) :: rng
19035 : end subroutine
19036 : #endif
19037 :
19038 : #if IK2_ENABLED
19039 : PURE module subroutine setUnifRandRNGXDD_D3_IK2(rng, rand)
19040 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19041 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_IK2
19042 : #endif
19043 : use pm_kind, only: IKC => IK2
19044 : integer(IKC) , intent(out) :: rand(:,:,:)
19045 : type(xoshiro256ssw_type) , intent(inout) :: rng
19046 : end subroutine
19047 : #endif
19048 :
19049 : #if IK1_ENABLED
19050 : PURE module subroutine setUnifRandRNGXDD_D3_IK1(rng, rand)
19051 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19052 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_IK1
19053 : #endif
19054 : use pm_kind, only: IKC => IK1
19055 : integer(IKC) , intent(out) :: rand(:,:,:)
19056 : type(xoshiro256ssw_type) , intent(inout) :: rng
19057 : end subroutine
19058 : #endif
19059 :
19060 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19061 :
19062 : #if LK5_ENABLED
19063 : PURE module subroutine setUnifRandRNGXDD_D3_LK5(rng, rand)
19064 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19065 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_LK5
19066 : #endif
19067 : use pm_kind, only: LKC => LK5
19068 : logical(LKC) , intent(out) :: rand(:,:,:)
19069 : type(xoshiro256ssw_type) , intent(inout) :: rng
19070 : end subroutine
19071 : #endif
19072 :
19073 : #if LK4_ENABLED
19074 : PURE module subroutine setUnifRandRNGXDD_D3_LK4(rng, rand)
19075 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19076 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_LK4
19077 : #endif
19078 : use pm_kind, only: LKC => LK4
19079 : logical(LKC) , intent(out) :: rand(:,:,:)
19080 : type(xoshiro256ssw_type) , intent(inout) :: rng
19081 : end subroutine
19082 : #endif
19083 :
19084 : #if LK3_ENABLED
19085 : PURE module subroutine setUnifRandRNGXDD_D3_LK3(rng, rand)
19086 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19087 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_LK3
19088 : #endif
19089 : use pm_kind, only: LKC => LK3
19090 : logical(LKC) , intent(out) :: rand(:,:,:)
19091 : type(xoshiro256ssw_type) , intent(inout) :: rng
19092 : end subroutine
19093 : #endif
19094 :
19095 : #if LK2_ENABLED
19096 : PURE module subroutine setUnifRandRNGXDD_D3_LK2(rng, rand)
19097 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19098 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_LK2
19099 : #endif
19100 : use pm_kind, only: LKC => LK2
19101 : logical(LKC) , intent(out) :: rand(:,:,:)
19102 : type(xoshiro256ssw_type) , intent(inout) :: rng
19103 : end subroutine
19104 : #endif
19105 :
19106 : #if LK1_ENABLED
19107 : PURE module subroutine setUnifRandRNGXDD_D3_LK1(rng, rand)
19108 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19109 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_LK1
19110 : #endif
19111 : use pm_kind, only: LKC => LK1
19112 : logical(LKC) , intent(out) :: rand(:,:,:)
19113 : type(xoshiro256ssw_type) , intent(inout) :: rng
19114 : end subroutine
19115 : #endif
19116 :
19117 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19118 :
19119 : #if CK5_ENABLED
19120 : PURE module subroutine setUnifRandRNGXDD_D3_CK5(rng, rand)
19121 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19122 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_CK5
19123 : #endif
19124 : use pm_kind, only: CKC => CK5
19125 : complex(CKC) , intent(out) :: rand(:,:,:)
19126 : type(xoshiro256ssw_type) , intent(inout) :: rng
19127 : end subroutine
19128 : #endif
19129 :
19130 : #if CK4_ENABLED
19131 : PURE module subroutine setUnifRandRNGXDD_D3_CK4(rng, rand)
19132 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19133 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_CK4
19134 : #endif
19135 : use pm_kind, only: CKC => CK4
19136 : complex(CKC) , intent(out) :: rand(:,:,:)
19137 : type(xoshiro256ssw_type) , intent(inout) :: rng
19138 : end subroutine
19139 : #endif
19140 :
19141 : #if CK3_ENABLED
19142 : PURE module subroutine setUnifRandRNGXDD_D3_CK3(rng, rand)
19143 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19144 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_CK3
19145 : #endif
19146 : use pm_kind, only: CKC => CK3
19147 : complex(CKC) , intent(out) :: rand(:,:,:)
19148 : type(xoshiro256ssw_type) , intent(inout) :: rng
19149 : end subroutine
19150 : #endif
19151 :
19152 : #if CK2_ENABLED
19153 : PURE module subroutine setUnifRandRNGXDD_D3_CK2(rng, rand)
19154 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19155 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_CK2
19156 : #endif
19157 : use pm_kind, only: CKC => CK2
19158 : complex(CKC) , intent(out) :: rand(:,:,:)
19159 : type(xoshiro256ssw_type) , intent(inout) :: rng
19160 : end subroutine
19161 : #endif
19162 :
19163 : #if CK1_ENABLED
19164 : PURE module subroutine setUnifRandRNGXDD_D3_CK1(rng, rand)
19165 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19166 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_CK1
19167 : #endif
19168 : use pm_kind, only: CKC => CK1
19169 : complex(CKC) , intent(out) :: rand(:,:,:)
19170 : type(xoshiro256ssw_type) , intent(inout) :: rng
19171 : end subroutine
19172 : #endif
19173 :
19174 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19175 :
19176 : #if RK5_ENABLED
19177 : PURE module subroutine setUnifRandRNGXDD_D3_RK5(rng, rand)
19178 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19179 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_RK5
19180 : #endif
19181 : use pm_kind, only: RKC => RK5
19182 : real(RKC) , intent(out) :: rand(:,:,:)
19183 : type(xoshiro256ssw_type) , intent(inout) :: rng
19184 : end subroutine
19185 : #endif
19186 :
19187 : #if RK4_ENABLED
19188 : PURE module subroutine setUnifRandRNGXDD_D3_RK4(rng, rand)
19189 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19190 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_RK4
19191 : #endif
19192 : use pm_kind, only: RKC => RK4
19193 : real(RKC) , intent(out) :: rand(:,:,:)
19194 : type(xoshiro256ssw_type) , intent(inout) :: rng
19195 : end subroutine
19196 : #endif
19197 :
19198 : #if RK3_ENABLED
19199 : PURE module subroutine setUnifRandRNGXDD_D3_RK3(rng, rand)
19200 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19201 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_RK3
19202 : #endif
19203 : use pm_kind, only: RKC => RK3
19204 : real(RKC) , intent(out) :: rand(:,:,:)
19205 : type(xoshiro256ssw_type) , intent(inout) :: rng
19206 : end subroutine
19207 : #endif
19208 :
19209 : #if RK2_ENABLED
19210 : PURE module subroutine setUnifRandRNGXDD_D3_RK2(rng, rand)
19211 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19212 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_RK2
19213 : #endif
19214 : use pm_kind, only: RKC => RK2
19215 : real(RKC) , intent(out) :: rand(:,:,:)
19216 : type(xoshiro256ssw_type) , intent(inout) :: rng
19217 : end subroutine
19218 : #endif
19219 :
19220 : #if RK1_ENABLED
19221 : PURE module subroutine setUnifRandRNGXDD_D3_RK1(rng, rand)
19222 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19223 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXDD_D3_RK1
19224 : #endif
19225 : use pm_kind, only: RKC => RK1
19226 : real(RKC) , intent(out) :: rand(:,:,:)
19227 : type(xoshiro256ssw_type) , intent(inout) :: rng
19228 : end subroutine
19229 : #endif
19230 :
19231 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19232 :
19233 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19234 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19235 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19236 :
19237 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19238 :
19239 : #if SK5_ENABLED
19240 : PURE module subroutine setUnifRandRNGXLU_D3_SK5(rng, rand, lb, ub)
19241 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19242 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_SK5
19243 : #endif
19244 : use pm_kind, only: SKC => SK5
19245 : character(*,SKC) , intent(out) :: rand(:,:,:)
19246 : character(*,SKC) , intent(in) :: lb, ub
19247 : type(xoshiro256ssw_type) , intent(inout) :: rng
19248 : end subroutine
19249 : #endif
19250 :
19251 : #if SK4_ENABLED
19252 : PURE module subroutine setUnifRandRNGXLU_D3_SK4(rng, rand, lb, ub)
19253 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19254 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_SK4
19255 : #endif
19256 : use pm_kind, only: SKC => SK4
19257 : character(*,SKC) , intent(out) :: rand(:,:,:)
19258 : character(*,SKC) , intent(in) :: lb, ub
19259 : type(xoshiro256ssw_type) , intent(inout) :: rng
19260 : end subroutine
19261 : #endif
19262 :
19263 : #if SK3_ENABLED
19264 : PURE module subroutine setUnifRandRNGXLU_D3_SK3(rng, rand, lb, ub)
19265 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19266 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_SK3
19267 : #endif
19268 : use pm_kind, only: SKC => SK3
19269 : character(*,SKC) , intent(out) :: rand(:,:,:)
19270 : character(*,SKC) , intent(in) :: lb, ub
19271 : type(xoshiro256ssw_type) , intent(inout) :: rng
19272 : end subroutine
19273 : #endif
19274 :
19275 : #if SK2_ENABLED
19276 : PURE module subroutine setUnifRandRNGXLU_D3_SK2(rng, rand, lb, ub)
19277 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19278 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_SK2
19279 : #endif
19280 : use pm_kind, only: SKC => SK2
19281 : character(*,SKC) , intent(out) :: rand(:,:,:)
19282 : character(*,SKC) , intent(in) :: lb, ub
19283 : type(xoshiro256ssw_type) , intent(inout) :: rng
19284 : end subroutine
19285 : #endif
19286 :
19287 : #if SK1_ENABLED
19288 : PURE module subroutine setUnifRandRNGXLU_D3_SK1(rng, rand, lb, ub)
19289 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19290 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_SK1
19291 : #endif
19292 : use pm_kind, only: SKC => SK1
19293 : character(*,SKC) , intent(out) :: rand(:,:,:)
19294 : character(*,SKC) , intent(in) :: lb, ub
19295 : type(xoshiro256ssw_type) , intent(inout) :: rng
19296 : end subroutine
19297 : #endif
19298 :
19299 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19300 :
19301 : #if IK5_ENABLED
19302 : PURE module subroutine setUnifRandRNGXLU_D3_IK5(rng, rand, lb, ub)
19303 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19304 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_IK5
19305 : #endif
19306 : use pm_kind, only: IKC => IK5
19307 : integer(IKC) , intent(out) :: rand(:,:,:)
19308 : integer(IKC) , intent(in) :: lb, ub
19309 : type(xoshiro256ssw_type) , intent(inout) :: rng
19310 : end subroutine
19311 : #endif
19312 :
19313 : #if IK4_ENABLED
19314 : PURE module subroutine setUnifRandRNGXLU_D3_IK4(rng, rand, lb, ub)
19315 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19316 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_IK4
19317 : #endif
19318 : use pm_kind, only: IKC => IK4
19319 : integer(IKC) , intent(out) :: rand(:,:,:)
19320 : integer(IKC) , intent(in) :: lb, ub
19321 : type(xoshiro256ssw_type) , intent(inout) :: rng
19322 : end subroutine
19323 : #endif
19324 :
19325 : #if IK3_ENABLED
19326 : PURE module subroutine setUnifRandRNGXLU_D3_IK3(rng, rand, lb, ub)
19327 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19328 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_IK3
19329 : #endif
19330 : use pm_kind, only: IKC => IK3
19331 : integer(IKC) , intent(out) :: rand(:,:,:)
19332 : integer(IKC) , intent(in) :: lb, ub
19333 : type(xoshiro256ssw_type) , intent(inout) :: rng
19334 : end subroutine
19335 : #endif
19336 :
19337 : #if IK2_ENABLED
19338 : PURE module subroutine setUnifRandRNGXLU_D3_IK2(rng, rand, lb, ub)
19339 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19340 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_IK2
19341 : #endif
19342 : use pm_kind, only: IKC => IK2
19343 : integer(IKC) , intent(out) :: rand(:,:,:)
19344 : integer(IKC) , intent(in) :: lb, ub
19345 : type(xoshiro256ssw_type) , intent(inout) :: rng
19346 : end subroutine
19347 : #endif
19348 :
19349 : #if IK1_ENABLED
19350 : PURE module subroutine setUnifRandRNGXLU_D3_IK1(rng, rand, lb, ub)
19351 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19352 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_IK1
19353 : #endif
19354 : use pm_kind, only: IKC => IK1
19355 : integer(IKC) , intent(out) :: rand(:,:,:)
19356 : integer(IKC) , intent(in) :: lb, ub
19357 : type(xoshiro256ssw_type) , intent(inout) :: rng
19358 : end subroutine
19359 : #endif
19360 :
19361 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19362 :
19363 : #if LK5_ENABLED
19364 : PURE module subroutine setUnifRandRNGXLU_D3_LK5(rng, rand, lb, ub)
19365 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19366 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_LK5
19367 : #endif
19368 : use pm_kind, only: LKC => LK5
19369 : logical(LKC) , intent(out) :: rand(:,:,:)
19370 : logical(LKC) , intent(in) :: lb, ub
19371 : type(xoshiro256ssw_type) , intent(inout) :: rng
19372 : end subroutine
19373 : #endif
19374 :
19375 : #if LK4_ENABLED
19376 : PURE module subroutine setUnifRandRNGXLU_D3_LK4(rng, rand, lb, ub)
19377 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19378 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_LK4
19379 : #endif
19380 : use pm_kind, only: LKC => LK4
19381 : logical(LKC) , intent(out) :: rand(:,:,:)
19382 : logical(LKC) , intent(in) :: lb, ub
19383 : type(xoshiro256ssw_type) , intent(inout) :: rng
19384 : end subroutine
19385 : #endif
19386 :
19387 : #if LK3_ENABLED
19388 : PURE module subroutine setUnifRandRNGXLU_D3_LK3(rng, rand, lb, ub)
19389 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19390 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_LK3
19391 : #endif
19392 : use pm_kind, only: LKC => LK3
19393 : logical(LKC) , intent(out) :: rand(:,:,:)
19394 : logical(LKC) , intent(in) :: lb, ub
19395 : type(xoshiro256ssw_type) , intent(inout) :: rng
19396 : end subroutine
19397 : #endif
19398 :
19399 : #if LK2_ENABLED
19400 : PURE module subroutine setUnifRandRNGXLU_D3_LK2(rng, rand, lb, ub)
19401 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19402 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_LK2
19403 : #endif
19404 : use pm_kind, only: LKC => LK2
19405 : logical(LKC) , intent(out) :: rand(:,:,:)
19406 : logical(LKC) , intent(in) :: lb, ub
19407 : type(xoshiro256ssw_type) , intent(inout) :: rng
19408 : end subroutine
19409 : #endif
19410 :
19411 : #if LK1_ENABLED
19412 : PURE module subroutine setUnifRandRNGXLU_D3_LK1(rng, rand, lb, ub)
19413 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19414 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_LK1
19415 : #endif
19416 : use pm_kind, only: LKC => LK1
19417 : logical(LKC) , intent(out) :: rand(:,:,:)
19418 : logical(LKC) , intent(in) :: lb, ub
19419 : type(xoshiro256ssw_type) , intent(inout) :: rng
19420 : end subroutine
19421 : #endif
19422 :
19423 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19424 :
19425 : #if CK5_ENABLED
19426 : PURE module subroutine setUnifRandRNGXLU_D3_CK5(rng, rand, lb, ub)
19427 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19428 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_CK5
19429 : #endif
19430 : use pm_kind, only: CKC => CK5
19431 : complex(CKC) , intent(out) :: rand(:,:,:)
19432 : complex(CKC) , intent(in) :: lb, ub
19433 : type(xoshiro256ssw_type) , intent(inout) :: rng
19434 : end subroutine
19435 : #endif
19436 :
19437 : #if CK4_ENABLED
19438 : PURE module subroutine setUnifRandRNGXLU_D3_CK4(rng, rand, lb, ub)
19439 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19440 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_CK4
19441 : #endif
19442 : use pm_kind, only: CKC => CK4
19443 : complex(CKC) , intent(out) :: rand(:,:,:)
19444 : complex(CKC) , intent(in) :: lb, ub
19445 : type(xoshiro256ssw_type) , intent(inout) :: rng
19446 : end subroutine
19447 : #endif
19448 :
19449 : #if CK3_ENABLED
19450 : PURE module subroutine setUnifRandRNGXLU_D3_CK3(rng, rand, lb, ub)
19451 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19452 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_CK3
19453 : #endif
19454 : use pm_kind, only: CKC => CK3
19455 : complex(CKC) , intent(out) :: rand(:,:,:)
19456 : complex(CKC) , intent(in) :: lb, ub
19457 : type(xoshiro256ssw_type) , intent(inout) :: rng
19458 : end subroutine
19459 : #endif
19460 :
19461 : #if CK2_ENABLED
19462 : PURE module subroutine setUnifRandRNGXLU_D3_CK2(rng, rand, lb, ub)
19463 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19464 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_CK2
19465 : #endif
19466 : use pm_kind, only: CKC => CK2
19467 : complex(CKC) , intent(out) :: rand(:,:,:)
19468 : complex(CKC) , intent(in) :: lb, ub
19469 : type(xoshiro256ssw_type) , intent(inout) :: rng
19470 : end subroutine
19471 : #endif
19472 :
19473 : #if CK1_ENABLED
19474 : PURE module subroutine setUnifRandRNGXLU_D3_CK1(rng, rand, lb, ub)
19475 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19476 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_CK1
19477 : #endif
19478 : use pm_kind, only: CKC => CK1
19479 : complex(CKC) , intent(out) :: rand(:,:,:)
19480 : complex(CKC) , intent(in) :: lb, ub
19481 : type(xoshiro256ssw_type) , intent(inout) :: rng
19482 : end subroutine
19483 : #endif
19484 :
19485 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19486 :
19487 : #if RK5_ENABLED
19488 : PURE module subroutine setUnifRandRNGXLU_D3_RK5(rng, rand, lb, ub)
19489 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19490 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_RK5
19491 : #endif
19492 : use pm_kind, only: RKC => RK5
19493 : real(RKC) , intent(out) :: rand(:,:,:)
19494 : real(RKC) , intent(in) :: lb, ub
19495 : type(xoshiro256ssw_type) , intent(inout) :: rng
19496 : end subroutine
19497 : #endif
19498 :
19499 : #if RK4_ENABLED
19500 : PURE module subroutine setUnifRandRNGXLU_D3_RK4(rng, rand, lb, ub)
19501 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19502 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_RK4
19503 : #endif
19504 : use pm_kind, only: RKC => RK4
19505 : real(RKC) , intent(out) :: rand(:,:,:)
19506 : real(RKC) , intent(in) :: lb, ub
19507 : type(xoshiro256ssw_type) , intent(inout) :: rng
19508 : end subroutine
19509 : #endif
19510 :
19511 : #if RK3_ENABLED
19512 : PURE module subroutine setUnifRandRNGXLU_D3_RK3(rng, rand, lb, ub)
19513 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19514 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_RK3
19515 : #endif
19516 : use pm_kind, only: RKC => RK3
19517 : real(RKC) , intent(out) :: rand(:,:,:)
19518 : real(RKC) , intent(in) :: lb, ub
19519 : type(xoshiro256ssw_type) , intent(inout) :: rng
19520 : end subroutine
19521 : #endif
19522 :
19523 : #if RK2_ENABLED
19524 : PURE module subroutine setUnifRandRNGXLU_D3_RK2(rng, rand, lb, ub)
19525 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19526 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_RK2
19527 : #endif
19528 : use pm_kind, only: RKC => RK2
19529 : real(RKC) , intent(out) :: rand(:,:,:)
19530 : real(RKC) , intent(in) :: lb, ub
19531 : type(xoshiro256ssw_type) , intent(inout) :: rng
19532 : end subroutine
19533 : #endif
19534 :
19535 : #if RK1_ENABLED
19536 : PURE module subroutine setUnifRandRNGXLU_D3_RK1(rng, rand, lb, ub)
19537 : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
19538 : !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRandRNGXLU_D3_RK1
19539 : #endif
19540 : use pm_kind, only: RKC => RK1
19541 : real(RKC) , intent(out) :: rand(:,:,:)
19542 : real(RKC) , intent(in) :: lb, ub
19543 : type(xoshiro256ssw_type) , intent(inout) :: rng
19544 : end subroutine
19545 : #endif
19546 :
19547 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19548 :
19549 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19550 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19551 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19552 :
19553 : end interface
19554 :
19555 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19556 :
19557 0 : end module pm_distUnif
|