ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distNormShell.F90
Go to the documentation of this file.
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
44
45!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46
48
49 use pm_kind, only: IK, LK, RK, SK
50 implicit none
51
52 character(*, SK), parameter :: MODULE_NAME = "@pm_distNormShell"
53
54!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
55
162
163 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
164 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
165 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
166
167 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168
169#if RK5_ENABLED
170 PURE module function getNormShellLogUDFODD_D1_RK5(X, width, radius) result(logUDF)
171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
172 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFODD_D1_RK5
173#endif
174 use pm_kind, only: RKG => RK5
175 real(RKG) , intent(in) , contiguous :: X(:)
176 real(RKG) , intent(in) , optional :: width, radius
177 real(RKG) :: logUDF
178 end function
179#endif
180
181#if RK4_ENABLED
182 PURE module function getNormShellLogUDFODD_D1_RK4(X, width, radius) result(logUDF)
183#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
184 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFODD_D1_RK4
185#endif
186 use pm_kind, only: RKG => RK4
187 real(RKG) , intent(in) , contiguous :: X(:)
188 real(RKG) , intent(in) , optional :: width, radius
189 real(RKG) :: logUDF
190 end function
191#endif
192
193#if RK3_ENABLED
194 PURE module function getNormShellLogUDFODD_D1_RK3(X, width, radius) result(logUDF)
195#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
196 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFODD_D1_RK3
197#endif
198 use pm_kind, only: RKG => RK3
199 real(RKG) , intent(in) , contiguous :: X(:)
200 real(RKG) , intent(in) , optional :: width, radius
201 real(RKG) :: logUDF
202 end function
203#endif
204
205#if RK2_ENABLED
206 PURE module function getNormShellLogUDFODD_D1_RK2(X, width, radius) result(logUDF)
207#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
208 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFODD_D1_RK2
209#endif
210 use pm_kind, only: RKG => RK2
211 real(RKG) , intent(in) , contiguous :: X(:)
212 real(RKG) , intent(in) , optional :: width, radius
213 real(RKG) :: logUDF
214 end function
215#endif
216
217#if RK1_ENABLED
218 PURE module function getNormShellLogUDFODD_D1_RK1(X, width, radius) result(logUDF)
219#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
220 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFODD_D1_RK1
221#endif
222 use pm_kind, only: RKG => RK1
223 real(RKG) , intent(in) , contiguous :: X(:)
224 real(RKG) , intent(in) , optional :: width, radius
225 real(RKG) :: logUDF
226 end function
227#endif
228
229 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
230
231#if RK5_ENABLED
232 PURE module function getNormShellLogUDFOCI_D1_RK5(X, center, invCov, width, radius) result(logUDF)
233#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
234 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFOCI_D1_RK5
235#endif
236 use pm_kind, only: RKG => RK5
237 real(RKG) , intent(in) , contiguous :: X(:), center(:), invCov(:,:)
238 real(RKG) , intent(in) , optional :: width, radius
239 real(RKG) :: logUDF
240 end function
241#endif
242
243#if RK4_ENABLED
244 PURE module function getNormShellLogUDFOCI_D1_RK4(X, center, invCov, width, radius) result(logUDF)
245#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
246 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFOCI_D1_RK4
247#endif
248 use pm_kind, only: RKG => RK4
249 real(RKG) , intent(in) , contiguous :: X(:), center(:), invCov(:,:)
250 real(RKG) , intent(in) , optional :: width, radius
251 real(RKG) :: logUDF
252 end function
253#endif
254
255#if RK3_ENABLED
256 PURE module function getNormShellLogUDFOCI_D1_RK3(X, center, invCov, width, radius) result(logUDF)
257#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
258 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFOCI_D1_RK3
259#endif
260 use pm_kind, only: RKG => RK3
261 real(RKG) , intent(in) , contiguous :: X(:), center(:), invCov(:,:)
262 real(RKG) , intent(in) , optional :: width, radius
263 real(RKG) :: logUDF
264 end function
265#endif
266
267#if RK2_ENABLED
268 PURE module function getNormShellLogUDFOCI_D1_RK2(X, center, invCov, width, radius) result(logUDF)
269#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
270 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFOCI_D1_RK2
271#endif
272 use pm_kind, only: RKG => RK2
273 real(RKG) , intent(in) , contiguous :: X(:), center(:), invCov(:,:)
274 real(RKG) , intent(in) , optional :: width, radius
275 real(RKG) :: logUDF
276 end function
277#endif
278
279#if RK1_ENABLED
280 PURE module function getNormShellLogUDFOCI_D1_RK1(X, center, invCov, width, radius) result(logUDF)
281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
282 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFOCI_D1_RK1
283#endif
284 use pm_kind, only: RKG => RK1
285 real(RKG) , intent(in) , contiguous :: X(:), center(:), invCov(:,:)
286 real(RKG) , intent(in) , optional :: width, radius
287 real(RKG) :: logUDF
288 end function
289#endif
290
291 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
292
293 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
294 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296
297 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
298
299#if RK5_ENABLED
300 PURE module function getNormShellLogUDFMDD_D1_RK5(X, width, radius) result(logUDF)
301#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
302 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMDD_D1_RK5
303#endif
304 use pm_kind, only: RKG => RK5
305 real(RKG) , intent(in) , contiguous :: X(:)
306 real(RKG) , intent(in) , contiguous :: width(:), radius(:)
307 real(RKG) :: logUDF(size(width, 1, IK))
308 end function
309#endif
310
311#if RK4_ENABLED
312 PURE module function getNormShellLogUDFMDD_D1_RK4(X, width, radius) result(logUDF)
313#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
314 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMDD_D1_RK4
315#endif
316 use pm_kind, only: RKG => RK4
317 real(RKG) , intent(in) , contiguous :: X(:)
318 real(RKG) , intent(in) , contiguous :: width(:), radius(:)
319 real(RKG) :: logUDF(size(width, 1, IK))
320 end function
321#endif
322
323#if RK3_ENABLED
324 PURE module function getNormShellLogUDFMDD_D1_RK3(X, width, radius) result(logUDF)
325#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
326 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMDD_D1_RK3
327#endif
328 use pm_kind, only: RKG => RK3
329 real(RKG) , intent(in) , contiguous :: X(:)
330 real(RKG) , intent(in) , contiguous :: width(:), radius(:)
331 real(RKG) :: logUDF(size(width, 1, IK))
332 end function
333#endif
334
335#if RK2_ENABLED
336 PURE module function getNormShellLogUDFMDD_D1_RK2(X, width, radius) result(logUDF)
337#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
338 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMDD_D1_RK2
339#endif
340 use pm_kind, only: RKG => RK2
341 real(RKG) , intent(in) , contiguous :: X(:)
342 real(RKG) , intent(in) , contiguous :: width(:), radius(:)
343 real(RKG) :: logUDF(size(width, 1, IK))
344 end function
345#endif
346
347#if RK1_ENABLED
348 PURE module function getNormShellLogUDFMDD_D1_RK1(X, width, radius) result(logUDF)
349#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
350 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMDD_D1_RK1
351#endif
352 use pm_kind, only: RKG => RK1
353 real(RKG) , intent(in) , contiguous :: X(:)
354 real(RKG) , intent(in) , contiguous :: width(:), radius(:)
355 real(RKG) :: logUDF(size(width, 1, IK))
356 end function
357#endif
358
359 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
360
361#if RK5_ENABLED
362 PURE module function getNormShellLogUDFMCI_D1_RK5(X, center, invCov, width, radius) result(logUDF)
363#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
364 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMCI_D1_RK5
365#endif
366 use pm_kind, only: RKG => RK5
367 real(RKG) , intent(in) , contiguous :: X(:), center(:,:), invCov(:,:,:)
368 real(RKG) , intent(in) , contiguous, optional :: width(:), radius(:)
369 real(RKG) :: logUDF(size(center, 2, IK))
370 end function
371#endif
372
373#if RK4_ENABLED
374 PURE module function getNormShellLogUDFMCI_D1_RK4(X, center, invCov, width, radius) result(logUDF)
375#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
376 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMCI_D1_RK4
377#endif
378 use pm_kind, only: RKG => RK4
379 real(RKG) , intent(in) , contiguous :: X(:), center(:,:), invCov(:,:,:)
380 real(RKG) , intent(in) , contiguous, optional :: width(:), radius(:)
381 real(RKG) :: logUDF(size(center, 2, IK))
382 end function
383#endif
384
385#if RK3_ENABLED
386 PURE module function getNormShellLogUDFMCI_D1_RK3(X, center, invCov, width, radius) result(logUDF)
387#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
388 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMCI_D1_RK3
389#endif
390 use pm_kind, only: RKG => RK3
391 real(RKG) , intent(in) , contiguous :: X(:), center(:,:), invCov(:,:,:)
392 real(RKG) , intent(in) , contiguous, optional :: width(:), radius(:)
393 real(RKG) :: logUDF(size(center, 2, IK))
394 end function
395#endif
396
397#if RK2_ENABLED
398 PURE module function getNormShellLogUDFMCI_D1_RK2(X, center, invCov, width, radius) result(logUDF)
399#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
400 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMCI_D1_RK2
401#endif
402 use pm_kind, only: RKG => RK2
403 real(RKG) , intent(in) , contiguous :: X(:), center(:,:), invCov(:,:,:)
404 real(RKG) , intent(in) , contiguous, optional :: width(:), radius(:)
405 real(RKG) :: logUDF(size(center, 2, IK))
406 end function
407#endif
408
409#if RK1_ENABLED
410 PURE module function getNormShellLogUDFMCI_D1_RK1(X, center, invCov, width, radius) result(logUDF)
411#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
412 !DEC$ ATTRIBUTES DLLEXPORT :: getNormShellLogUDFMCI_D1_RK1
413#endif
414 use pm_kind, only: RKG => RK1
415 real(RKG) , intent(in) , contiguous :: X(:), center(:,:), invCov(:,:,:)
416 real(RKG) , intent(in) , contiguous, optional :: width(:), radius(:)
417 real(RKG) :: logUDF(size(center, 2, IK))
418 end function
419#endif
420
421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
422
423 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
425 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
426
427 end interface
428
429!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
430
431end module pm_distNormShell ! LCOV_EXCL_LINE
Generate and return the natural logarithm of the NormShell density function value(s) at the specified...
This module contains procedures and generic interfaces for computing the Multivariate Normal Shell de...
character(*, SK), parameter MODULE_NAME
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter RK2
Definition: pm_kind.F90:511
integer, parameter RK
The default real kind in the ParaMonte library: real64 in Fortran, c_double in C-Fortran Interoperati...
Definition: pm_kind.F90:543
integer, parameter RK3
Definition: pm_kind.F90:500
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522