ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_mathLogSubExp.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
34
35!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36
38
39 use pm_kind, only: SK, IK, LK
41
42 implicit none
43
44 character(*, SK), parameter :: MODULE_NAME = "@pm_mathLogSubExp"
45
46!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47
166 interface getLogSubExp
167
168 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
170 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
171
172 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
173 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
174 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
175
176 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
177
178#if CK5_ENABLED
179 PURE elemental module function getLogSubExpSeqSL_CK5(smaller, larger) result(logSubExp)
180#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
181 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_CK5
182#endif
183 use pm_kind, only: CKG => CK5
184 complex(CKG) , intent(in) :: smaller, larger
185 complex(CKG) :: logSubExp
186 end function
187#endif
188
189#if CK4_ENABLED
190 PURE elemental module function getLogSubExpSeqSL_CK4(smaller, larger) result(logSubExp)
191#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
192 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_CK4
193#endif
194 use pm_kind, only: CKG => CK4
195 complex(CKG) , intent(in) :: smaller, larger
196 complex(CKG) :: logSubExp
197 end function
198#endif
199
200#if CK3_ENABLED
201 PURE elemental module function getLogSubExpSeqSL_CK3(smaller, larger) result(logSubExp)
202#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
203 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_CK3
204#endif
205 use pm_kind, only: CKG => CK3
206 complex(CKG) , intent(in) :: smaller, larger
207 complex(CKG) :: logSubExp
208 end function
209#endif
210
211#if CK2_ENABLED
212 PURE elemental module function getLogSubExpSeqSL_CK2(smaller, larger) result(logSubExp)
213#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
214 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_CK2
215#endif
216 use pm_kind, only: CKG => CK2
217 complex(CKG) , intent(in) :: smaller, larger
218 complex(CKG) :: logSubExp
219 end function
220#endif
221
222#if CK1_ENABLED
223 PURE elemental module function getLogSubExpSeqSL_CK1(smaller, larger) result(logSubExp)
224#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
225 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_CK1
226#endif
227 use pm_kind, only: CKG => CK1
228 complex(CKG) , intent(in) :: smaller, larger
229 complex(CKG) :: logSubExp
230 end function
231#endif
232
233 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
234
235#if RK5_ENABLED
236 PURE elemental module function getLogSubExpSeqSL_RK5(smaller, larger) result(logSubExp)
237#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
238 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_RK5
239#endif
240 use pm_kind, only: RKG => RK5
241 real(RKG) , intent(in) :: smaller, larger
242 real(RKG) :: logSubExp
243 end function
244#endif
245
246#if RK4_ENABLED
247 PURE elemental module function getLogSubExpSeqSL_RK4(smaller, larger) result(logSubExp)
248#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
249 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_RK4
250#endif
251 use pm_kind, only: RKG => RK4
252 real(RKG) , intent(in) :: smaller, larger
253 real(RKG) :: logSubExp
254 end function
255#endif
256
257#if RK3_ENABLED
258 PURE elemental module function getLogSubExpSeqSL_RK3(smaller, larger) result(logSubExp)
259#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
260 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_RK3
261#endif
262 use pm_kind, only: RKG => RK3
263 real(RKG) , intent(in) :: smaller, larger
264 real(RKG) :: logSubExp
265 end function
266#endif
267
268#if RK2_ENABLED
269 PURE elemental module function getLogSubExpSeqSL_RK2(smaller, larger) result(logSubExp)
270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
271 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_RK2
272#endif
273 use pm_kind, only: RKG => RK2
274 real(RKG) , intent(in) :: smaller, larger
275 real(RKG) :: logSubExp
276 end function
277#endif
278
279#if RK1_ENABLED
280 PURE elemental module function getLogSubExpSeqSL_RK1(smaller, larger) result(logSubExp)
281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
282 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqSL_RK1
283#endif
284 use pm_kind, only: RKG => RK1
285 real(RKG) , intent(in) :: smaller, larger
286 real(RKG) :: logSubExp
287 end function
288#endif
289
290 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
291
292 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
293 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
294 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295
296 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
297
298#if CK5_ENABLED
299 PURE elemental module function getLogSubExpSelSL_CK5(smaller, larger, control) result(logSubExp)
300#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
301 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_CK5
302#endif
303 use pm_kind, only: CKG => CK5
304 type(selection_type), intent(in) :: control
305 complex(CKG) , intent(in) :: smaller, larger
306 complex(CKG) :: logSubExp
307 end function
308#endif
309
310#if CK4_ENABLED
311 PURE elemental module function getLogSubExpSelSL_CK4(smaller, larger, control) result(logSubExp)
312#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
313 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_CK4
314#endif
315 use pm_kind, only: CKG => CK4
316 type(selection_type), intent(in) :: control
317 complex(CKG) , intent(in) :: smaller, larger
318 complex(CKG) :: logSubExp
319 end function
320#endif
321
322#if CK3_ENABLED
323 PURE elemental module function getLogSubExpSelSL_CK3(smaller, larger, control) result(logSubExp)
324#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
325 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_CK3
326#endif
327 use pm_kind, only: CKG => CK3
328 type(selection_type), intent(in) :: control
329 complex(CKG) , intent(in) :: smaller, larger
330 complex(CKG) :: logSubExp
331 end function
332#endif
333
334#if CK2_ENABLED
335 PURE elemental module function getLogSubExpSelSL_CK2(smaller, larger, control) result(logSubExp)
336#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
337 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_CK2
338#endif
339 use pm_kind, only: CKG => CK2
340 type(selection_type), intent(in) :: control
341 complex(CKG) , intent(in) :: smaller, larger
342 complex(CKG) :: logSubExp
343 end function
344#endif
345
346#if CK1_ENABLED
347 PURE elemental module function getLogSubExpSelSL_CK1(smaller, larger, control) result(logSubExp)
348#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
349 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_CK1
350#endif
351 use pm_kind, only: CKG => CK1
352 type(selection_type), intent(in) :: control
353 complex(CKG) , intent(in) :: smaller, larger
354 complex(CKG) :: logSubExp
355 end function
356#endif
357
358 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359
360#if RK5_ENABLED
361 PURE elemental module function getLogSubExpSelSL_RK5(smaller, larger, control) result(logSubExp)
362#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
363 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_RK5
364#endif
365 use pm_kind, only: RKG => RK5
366 type(selection_type), intent(in) :: control
367 real(RKG) , intent(in) :: smaller, larger
368 real(RKG) :: logSubExp
369 end function
370#endif
371
372#if RK4_ENABLED
373 PURE elemental module function getLogSubExpSelSL_RK4(smaller, larger, control) result(logSubExp)
374#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
375 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_RK4
376#endif
377 use pm_kind, only: RKG => RK4
378 type(selection_type), intent(in) :: control
379 real(RKG) , intent(in) :: smaller, larger
380 real(RKG) :: logSubExp
381 end function
382#endif
383
384#if RK3_ENABLED
385 PURE elemental module function getLogSubExpSelSL_RK3(smaller, larger, control) result(logSubExp)
386#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
387 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_RK3
388#endif
389 use pm_kind, only: RKG => RK3
390 type(selection_type), intent(in) :: control
391 real(RKG) , intent(in) :: smaller, larger
392 real(RKG) :: logSubExp
393 end function
394#endif
395
396#if RK2_ENABLED
397 PURE elemental module function getLogSubExpSelSL_RK2(smaller, larger, control) result(logSubExp)
398#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
399 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_RK2
400#endif
401 use pm_kind, only: RKG => RK2
402 type(selection_type), intent(in) :: control
403 real(RKG) , intent(in) :: smaller, larger
404 real(RKG) :: logSubExp
405 end function
406#endif
407
408#if RK1_ENABLED
409 PURE elemental module function getLogSubExpSelSL_RK1(smaller, larger, control) result(logSubExp)
410#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
411 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelSL_RK1
412#endif
413 use pm_kind, only: RKG => RK1
414 type(selection_type), intent(in) :: control
415 real(RKG) , intent(in) :: smaller, larger
416 real(RKG) :: logSubExp
417 end function
418#endif
419
420 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
421
422 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
423 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
425
426 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
427 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
428 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
429
430 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
431
432#if CK5_ENABLED
433 PURE module function getLogSubExpSeqMM_CK5(minMax) result(logSubExp)
434#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
435 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_CK5
436#endif
437 use pm_kind, only: CKG => CK5
438 complex(CKG) , intent(in) :: minMax(2)
439 complex(CKG) :: logSubExp
440 end function
441#endif
442
443#if CK4_ENABLED
444 PURE module function getLogSubExpSeqMM_CK4(minMax) result(logSubExp)
445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
446 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_CK4
447#endif
448 use pm_kind, only: CKG => CK4
449 complex(CKG) , intent(in) :: minMax(2)
450 complex(CKG) :: logSubExp
451 end function
452#endif
453
454#if CK3_ENABLED
455 PURE module function getLogSubExpSeqMM_CK3(minMax) result(logSubExp)
456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
457 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_CK3
458#endif
459 use pm_kind, only: CKG => CK3
460 complex(CKG) , intent(in) :: minMax(2)
461 complex(CKG) :: logSubExp
462 end function
463#endif
464
465#if CK2_ENABLED
466 PURE module function getLogSubExpSeqMM_CK2(minMax) result(logSubExp)
467#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
468 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_CK2
469#endif
470 use pm_kind, only: CKG => CK2
471 complex(CKG) , intent(in) :: minMax(2)
472 complex(CKG) :: logSubExp
473 end function
474#endif
475
476#if CK1_ENABLED
477 PURE module function getLogSubExpSeqMM_CK1(minMax) result(logSubExp)
478#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
479 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_CK1
480#endif
481 use pm_kind, only: CKG => CK1
482 complex(CKG) , intent(in) :: minMax(2)
483 complex(CKG) :: logSubExp
484 end function
485#endif
486
487 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
488
489#if RK5_ENABLED
490 PURE module function getLogSubExpSeqMM_RK5(minMax) result(logSubExp)
491#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
492 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_RK5
493#endif
494 use pm_kind, only: RKG => RK5
495 real(RKG) , intent(in) :: minMax(2)
496 real(RKG) :: logSubExp
497 end function
498#endif
499
500#if RK4_ENABLED
501 PURE module function getLogSubExpSeqMM_RK4(minMax) result(logSubExp)
502#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
503 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_RK4
504#endif
505 use pm_kind, only: RKG => RK4
506 real(RKG) , intent(in) :: minMax(2)
507 real(RKG) :: logSubExp
508 end function
509#endif
510
511#if RK3_ENABLED
512 PURE module function getLogSubExpSeqMM_RK3(minMax) result(logSubExp)
513#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
514 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_RK3
515#endif
516 use pm_kind, only: RKG => RK3
517 real(RKG) , intent(in) :: minMax(2)
518 real(RKG) :: logSubExp
519 end function
520#endif
521
522#if RK2_ENABLED
523 PURE module function getLogSubExpSeqMM_RK2(minMax) result(logSubExp)
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_RK2
526#endif
527 use pm_kind, only: RKG => RK2
528 real(RKG) , intent(in) :: minMax(2)
529 real(RKG) :: logSubExp
530 end function
531#endif
532
533#if RK1_ENABLED
534 PURE module function getLogSubExpSeqMM_RK1(minMax) result(logSubExp)
535#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
536 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSeqMM_RK1
537#endif
538 use pm_kind, only: RKG => RK1
539 real(RKG) , intent(in) :: minMax(2)
540 real(RKG) :: logSubExp
541 end function
542#endif
543
544 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
545
546 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
547 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
548 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
549
550 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
551
552#if CK5_ENABLED
553 PURE module function getLogSubExpSelMM_CK5(minMax, control) result(logSubExp)
554#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
555 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_CK5
556#endif
557 use pm_kind, only: CKG => CK5
558 type(selection_type), intent(in) :: control
559 complex(CKG) , intent(in) :: minMax(2)
560 complex(CKG) :: logSubExp
561 end function
562#endif
563
564#if CK4_ENABLED
565 PURE module function getLogSubExpSelMM_CK4(minMax, control) result(logSubExp)
566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
567 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_CK4
568#endif
569 use pm_kind, only: CKG => CK4
570 type(selection_type), intent(in) :: control
571 complex(CKG) , intent(in) :: minMax(2)
572 complex(CKG) :: logSubExp
573 end function
574#endif
575
576#if CK3_ENABLED
577 PURE module function getLogSubExpSelMM_CK3(minMax, control) result(logSubExp)
578#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
579 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_CK3
580#endif
581 use pm_kind, only: CKG => CK3
582 type(selection_type), intent(in) :: control
583 complex(CKG) , intent(in) :: minMax(2)
584 complex(CKG) :: logSubExp
585 end function
586#endif
587
588#if CK2_ENABLED
589 PURE module function getLogSubExpSelMM_CK2(minMax, control) result(logSubExp)
590#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
591 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_CK2
592#endif
593 use pm_kind, only: CKG => CK2
594 type(selection_type), intent(in) :: control
595 complex(CKG) , intent(in) :: minMax(2)
596 complex(CKG) :: logSubExp
597 end function
598#endif
599
600#if CK1_ENABLED
601 PURE module function getLogSubExpSelMM_CK1(minMax, control) result(logSubExp)
602#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
603 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_CK1
604#endif
605 use pm_kind, only: CKG => CK1
606 type(selection_type), intent(in) :: control
607 complex(CKG) , intent(in) :: minMax(2)
608 complex(CKG) :: logSubExp
609 end function
610#endif
611
612 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
613
614#if RK5_ENABLED
615 PURE module function getLogSubExpSelMM_RK5(minMax, control) result(logSubExp)
616#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
617 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_RK5
618#endif
619 use pm_kind, only: RKG => RK5
620 type(selection_type), intent(in) :: control
621 real(RKG) , intent(in) :: minMax(2)
622 real(RKG) :: logSubExp
623 end function
624#endif
625
626#if RK4_ENABLED
627 PURE module function getLogSubExpSelMM_RK4(minMax, control) result(logSubExp)
628#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
629 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_RK4
630#endif
631 use pm_kind, only: RKG => RK4
632 type(selection_type), intent(in) :: control
633 real(RKG) , intent(in) :: minMax(2)
634 real(RKG) :: logSubExp
635 end function
636#endif
637
638#if RK3_ENABLED
639 PURE module function getLogSubExpSelMM_RK3(minMax, control) result(logSubExp)
640#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
641 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_RK3
642#endif
643 use pm_kind, only: RKG => RK3
644 type(selection_type), intent(in) :: control
645 real(RKG) , intent(in) :: minMax(2)
646 real(RKG) :: logSubExp
647 end function
648#endif
649
650#if RK2_ENABLED
651 PURE module function getLogSubExpSelMM_RK2(minMax, control) result(logSubExp)
652#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
653 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_RK2
654#endif
655 use pm_kind, only: RKG => RK2
656 type(selection_type), intent(in) :: control
657 real(RKG) , intent(in) :: minMax(2)
658 real(RKG) :: logSubExp
659 end function
660#endif
661
662#if RK1_ENABLED
663 PURE module function getLogSubExpSelMM_RK1(minMax, control) result(logSubExp)
664#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
665 !DEC$ ATTRIBUTES DLLEXPORT :: getLogSubExpSelMM_RK1
666#endif
667 use pm_kind, only: RKG => RK1
668 type(selection_type), intent(in) :: control
669 real(RKG) , intent(in) :: minMax(2)
670 real(RKG) :: logSubExp
671 end function
672#endif
673
674 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
675
676 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
677 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
678 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
679
680 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
681 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
682 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
683
684 end interface
685
686!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
687
688end module pm_mathLogSubExp ! LCOV_EXCL_LINE
Generate and return the natural logarithm of the subtraction of the exponential of the smaller input ...
This module contains abstract and concrete derived types that are required for compile-time resolutio...
Definition: pm_control.F90:45
character(*, SK), parameter MODULE_NAME
Definition: pm_control.F90:51
type(selection_type), parameter selection
This is a scalar parameter object of type selection_type that is exclusively used to request selectio...
Definition: pm_control.F90:320
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 CK1
Definition: pm_kind.F90:464
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 CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter CK3
Definition: pm_kind.F90:442
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
This module contains procedures and generic interfaces for subtracting two real or complex values wit...
This is a concrete derived type whose instances are exclusively used to request selection control flo...
Definition: pm_control.F90:295