ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_kind.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
265
266!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
267
269
270 use, intrinsic :: iso_fortran_env , only: character_kinds
271 use, intrinsic :: iso_fortran_env , only: integer_kinds
272 use, intrinsic :: iso_fortran_env , only: logical_kinds
273 use, intrinsic :: iso_fortran_env , only: real_kinds
274
275!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
276! Specific (interoperable) kind type parameters of the ParaMonte library.
277!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
278
279#if CFI_ENABLED
280
282 use, intrinsic :: iso_c_binding , only: IK64_DEF => c_int64_t
283 use, intrinsic :: iso_c_binding , only: IK32_DEF => c_int32_t
284 use, intrinsic :: iso_c_binding , only: IK16_DEF => c_int16_t
285 use, intrinsic :: iso_c_binding , only: IK8_DEF => c_int8_t
286 use, intrinsic :: iso_c_binding , only: RK128_DEF => c_long_double
287 use, intrinsic :: iso_c_binding , only: RK64_DEF => c_double
288 use, intrinsic :: iso_c_binding , only: RK32_DEF => c_float
289 use, intrinsic :: iso_c_binding , only: CK128_DEF => c_long_double_complex
290 use, intrinsic :: iso_c_binding , only: CK64_DEF => c_double_complex
291 use, intrinsic :: iso_c_binding , only: CK32_DEF => c_float_complex
292 use, intrinsic :: iso_c_binding , only: SK_DEF => c_char
293 use, intrinsic :: iso_c_binding , only: IK_DEF => c_int32_t
294 !use, intrinsic :: iso_c_binding , only: LK_DEF => c_bool ! c_bool is one byte, which is problematic for some Fortran intrinsics like `execute_command_line()`.
295 use, intrinsic :: iso_c_binding , only: CK_DEF => c_double_complex
296 use, intrinsic :: iso_c_binding , only: RK_DEF => c_double
298
299#else
300
301 use, intrinsic :: iso_fortran_env , only: IK64_DEF => int64
302 use, intrinsic :: iso_fortran_env , only: IK32_DEF => int32
303 use, intrinsic :: iso_fortran_env , only: IK16_DEF => int16
304 use, intrinsic :: iso_fortran_env , only: IK8_DEF => int8
305 use, intrinsic :: iso_fortran_env , only: RK128_DEF => real128
306 use, intrinsic :: iso_fortran_env , only: RK64_DEF => real64
307 use, intrinsic :: iso_fortran_env , only: RK32_DEF => real32
308 use, intrinsic :: iso_fortran_env , only: CK128_DEF => real128
309 use, intrinsic :: iso_fortran_env , only: CK64_DEF => real64
310 use, intrinsic :: iso_fortran_env , only: CK32_DEF => real32
311
312 integer , parameter :: SK_DEF = kind("a")
313 integer , parameter :: IK_DEF = kind(1) ! IK64_DEF
314 integer , parameter :: CK_DEF = kind(1.d0)
315 integer , parameter :: RK_DEF = kind(1.d0)
316
317#endif
318
319 integer , parameter :: LK_DEF = kind(.true.)
320
321!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322! Supported kind type parameters of the ParaMonte library.
323!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
324
325#if SK5_ENABLED
326 integer , parameter :: SK5 = character_kinds(SK5_ENABLED)
327#else
328 integer , parameter :: SK5 = -1
329#endif
330#if SK4_ENABLED
331 integer , parameter :: SK4 = character_kinds(SK4_ENABLED)
332#else
333 integer , parameter :: SK4 = -1
334#endif
335#if SK3_ENABLED
336 integer , parameter :: SK3 = character_kinds(SK3_ENABLED)
337#else
338 integer , parameter :: SK3 = -1
339#endif
340#if SK2_ENABLED
341 integer , parameter :: SK2 = character_kinds(SK2_ENABLED)
342#else
343 integer , parameter :: SK2 = -1
344#endif
345#if SK1_ENABLED
346 integer , parameter :: SK1 = character_kinds(SK1_ENABLED)
347#else
348 integer , parameter :: SK1 = -1
349#endif
350
351 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
352
353#if IK5_ENABLED
354 integer , parameter :: IK5 = integer_kinds(IK5_ENABLED)
355 integer , parameter :: IR5 = range(0_IK5)
356#else
357 integer , parameter :: IK5 = -1
358 integer , parameter :: IR5 = -1
359#endif
360#if IK4_ENABLED
361 integer , parameter :: IK4 = integer_kinds(IK4_ENABLED)
362 integer , parameter :: IR4 = range(0_IK4)
363#else
364 integer , parameter :: IK4 = -1
365 integer , parameter :: IR4 = -1
366#endif
367#if IK3_ENABLED
368 integer , parameter :: IK3 = integer_kinds(IK3_ENABLED)
369 integer , parameter :: IR3 = range(0_IK3)
370#else
371 integer , parameter :: IK3 = -1
372 integer , parameter :: IR3 = -1
373#endif
374#if IK2_ENABLED
375 integer , parameter :: IK2 = integer_kinds(IK2_ENABLED)
376 integer , parameter :: IR2 = range(0_IK2)
377#else
378 integer , parameter :: IK2 = -1
379 integer , parameter :: IR2 = -1
380#endif
381#if IK1_ENABLED
382 integer , parameter :: IK1 = integer_kinds(IK1_ENABLED)
383 integer , parameter :: IR1 = range(0_IK1)
384#else
385 integer , parameter :: IK1 = -1
386 integer , parameter :: IR1 = -1
387#endif
388
389 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
390
391#if LK5_ENABLED
392 integer , parameter :: LK5 = logical_kinds(LK5_ENABLED)
393#else
394 integer , parameter :: LK5 = -1
395#endif
396#if LK4_ENABLED
397 integer , parameter :: LK4 = logical_kinds(LK4_ENABLED)
398#else
399 integer , parameter :: LK4 = -1
400#endif
401#if LK3_ENABLED
402 integer , parameter :: LK3 = logical_kinds(LK3_ENABLED)
403#else
404 integer , parameter :: LK3 = -1
405#endif
406#if LK2_ENABLED
407 integer , parameter :: LK2 = logical_kinds(LK2_ENABLED)
408#else
409 integer , parameter :: LK2 = -1
410#endif
411#if LK1_ENABLED
412 integer , parameter :: LK1 = logical_kinds(LK1_ENABLED)
413#else
414 integer , parameter :: LK1 = -1
415#endif
416
417 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
418
419#if CK5_ENABLED
420 integer , parameter :: CK5 = real_kinds(CK5_ENABLED)
421 integer , parameter :: CP5 = precision(0._CK5)
422 integer , parameter :: CR5 = range(0._CK5)
424#else
425 integer , parameter :: CK5 = -1
426 integer , parameter :: CP5 = 0
427 integer , parameter :: CR5 = 0
429#endif
430#if CK4_ENABLED
431 integer , parameter :: CK4 = real_kinds(CK4_ENABLED)
432 integer , parameter :: CP4 = precision(0._CK4)
433 integer , parameter :: CR4 = range(0._CK4)
435#else
436 integer , parameter :: CK4 = -1
437 integer , parameter :: CP4 = 0
438 integer , parameter :: CR4 = 0
440#endif
441#if CK3_ENABLED
442 integer , parameter :: CK3 = real_kinds(CK3_ENABLED)
443 integer , parameter :: CP3 = precision(0._CK3)
444 integer , parameter :: CR3 = range(0._CK3)
446#else
447 integer , parameter :: CK3 = -1
448 integer , parameter :: CP3 = 0
449 integer , parameter :: CR3 = 0
451#endif
452#if CK2_ENABLED
453 integer , parameter :: CK2 = real_kinds(CK2_ENABLED)
454 integer , parameter :: CP2 = precision(0._CK2)
455 integer , parameter :: CR2 = range(0._CK2)
457#else
458 integer , parameter :: CK2 = -1
459 integer , parameter :: CP2 = 0
460 integer , parameter :: CR2 = 0
462#endif
463#if CK1_ENABLED
464 integer , parameter :: CK1 = real_kinds(CK1_ENABLED)
465 integer , parameter :: CP1 = precision(0._CK1)
466 integer , parameter :: CR1 = range(0._CK1)
468#else
469 integer , parameter :: CK1 = -1
470 integer , parameter :: CP1 = 0
471 integer , parameter :: CR1 = 0
473#endif
474
475 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
476
477#if RK5_ENABLED
478 integer , parameter :: RK5 = real_kinds(RK5_ENABLED)
479 integer , parameter :: RP5 = precision(0._RK5)
480 integer , parameter :: RR5 = range(0._RK5)
482#else
483 integer , parameter :: RK5 = -1
484 integer , parameter :: RP5 = 0
485 integer , parameter :: RR5 = 0
487#endif
488#if RK4_ENABLED
489 integer , parameter :: RK4 = real_kinds(RK4_ENABLED)
490 integer , parameter :: RP4 = precision(0._RK4)
491 integer , parameter :: RR4 = range(0._RK4)
493#else
494 integer , parameter :: RK4 = -1
495 integer , parameter :: RP4 = 0
496 integer , parameter :: RR4 = 0
498#endif
499#if RK3_ENABLED
500 integer , parameter :: RK3 = real_kinds(RK3_ENABLED)
501 integer , parameter :: RP3 = precision(0._RK3)
502 integer , parameter :: RR3 = range(0._RK3)
504#else
505 integer , parameter :: RK3 = -1
506 integer , parameter :: RP3 = 0
507 integer , parameter :: RR3 = 0
509#endif
510#if RK2_ENABLED
511 integer , parameter :: RK2 = real_kinds(RK2_ENABLED)
512 integer , parameter :: RP2 = precision(0._RK2)
513 integer , parameter :: RR2 = range(0._RK2)
515#else
516 integer , parameter :: RK2 = -1
517 integer , parameter :: RP2 = 0
518 integer , parameter :: RR2 = 0
520#endif
521#if RK1_ENABLED
522 integer , parameter :: RK1 = real_kinds(RK1_ENABLED)
523 integer , parameter :: RP1 = precision(0._RK1)
524 integer , parameter :: RR1 = range(0._RK1)
526#else
527 integer , parameter :: RK1 = -1
528 integer , parameter :: RP1 = 0
529 integer , parameter :: RR1 = 0
531#endif
532
533 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
534
535!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
536! Default kind type parameters of the ParaMonte library.
537!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
538
539 integer , parameter :: SK = SK_DEF
540 integer , parameter :: IK = IK_DEF
541 integer , parameter :: LK = LK_DEF
542 integer , parameter :: CK = CK_DEF
543 integer , parameter :: RK = RK_DEF
544
545 integer , parameter :: IK64 = IK64_DEF
546 integer , parameter :: IK32 = IK32_DEF
547 integer , parameter :: IK16 = IK16_DEF
548 integer , parameter :: IK8 = IK8_DEF
549 integer , parameter :: CK128 = CK128_DEF
550 integer , parameter :: CK64 = CK64_DEF
551 integer , parameter :: CK32 = CK32_DEF
552 integer , parameter :: RK128 = RK128_DEF
553 integer , parameter :: RK64 = RK64_DEF
554 integer , parameter :: RK32 = RK32_DEF
555
556!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
557! Other popular non-default kind type parameters of the ParaMonte library.
558!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
559
560 integer , parameter :: SKU = selected_char_kind("iso_10646")
561 integer , parameter :: SKD = selected_char_kind("default")
562 integer , parameter :: SKA = selected_char_kind("ascii")
563 integer , parameter :: IKS = kind(1)
564 integer , parameter :: IKD = selected_int_kind(18)
565 integer , parameter :: IKQ = selected_int_kind(36)
567 integer , parameter :: RKS = kind(1.)
568 integer , parameter :: RKD = kind(1.d0)
569 integer , parameter :: RKQ = selected_real_kind(2*precision(1._RKD))
570 integer , parameter :: CKS = RKS
571 integer , parameter :: CKD = RKD
572 integer , parameter :: CKQ = RKQ
573
574!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
575! Define the vector of all type kinds supported by the ParaMonte library.
576!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
577
588 integer , parameter :: SKALL(*) = pack([SK1, SK2, SK3, SK4, SK5], 0 < [SK1, SK2, SK3, SK4, SK5])
589
600 integer , parameter :: IKALL(*) = pack([IK1, IK2, IK3, IK4, IK5], 0 < [IK1, IK2, IK3, IK4, IK5])
601
612 integer , parameter :: LKALL(*) = pack([LK1, LK2, LK3, LK4, LK5], 0 < [LK1, LK2, LK3, LK4, LK5])
613
624 integer , parameter :: CKALL(*) = pack([CK1, CK2, CK3, CK4, CK5], 0 < [CK1, CK2, CK3, CK4, CK5])
625
636 integer , parameter :: RKALL(*) = pack([RK1, RK2, RK3, RK4, RK5], 0 < [RK1, RK2, RK3, RK4, RK5])
637
638!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
639! The highest and the lowest rnages and precisions for the kind type parameters supported by the ParaMonte library.
640!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
641
649 integer , parameter :: IRL = minval([IR1, IR2, IR3, IR4, IR5], mask = 0 < [IR1, IR2, IR3, IR4, IR5]) ! Integer Range Lowest
650
658 integer , parameter :: IRH = maxval([IR1, IR2, IR3, IR4, IR5], mask = 0 < [IR1, IR2, IR3, IR4, IR5]) ! Integer Range Highest
659
667 integer , parameter :: CPL = minval([CP1, CP2, CP3, CP4, CP5], mask = 0 < [CP1, CP2, CP3, CP4, CP5]) ! Complex Precision Lowest
668
676 integer , parameter :: CPH = maxval([CP1, CP2, CP3, CP4, CP5], mask = 0 < [CP1, CP2, CP3, CP4, CP5]) ! Complex Precision Highest
677
685 integer , parameter :: CRL = minval([CR1, CR2, CR3, CR4, CR5], mask = 0 < [CR1, CR2, CR3, CR4, CR5]) ! Complex Range Lowest
686
694 integer , parameter :: CRH = maxval([CR1, CR2, CR3, CR4, CR5], mask = 0 < [CR1, CR2, CR3, CR4, CR5]) ! Complex Range Lowest
695
703 integer , parameter :: RPL = minval([RP1, RP2, RP3, RP4, RP5], mask = 0 < [RP1, RP2, RP3, RP4, RP5]) ! Real Precision Lowest
704
712 integer , parameter :: RPH = maxval([RP1, RP2, RP3, RP4, RP5], mask = 0 < [RP1, RP2, RP3, RP4, RP5]) ! Real Precision Highest
713
721 integer , parameter :: RRL = minval([RR1, RR2, RR3, RR4, RR5], mask = 0 < [RR1, RR2, RR3, RR4, RR5]) ! Real Range Lowest
722
730 integer , parameter :: RRH = maxval([RR1, RR2, RR3, RR4, RR5], mask = 0 < [RR1, RR2, RR3, RR4, RR5]) ! Real Range Lowest
731
732!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
733! The lowest precision/range kinds supported by the ParaMonte library.
734!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
735
749 integer , parameter :: IKL = selected_int_kind(IRL)
750
764 integer , parameter :: CKL = selected_real_kind(CPL)
765
779 integer , parameter :: RKL = selected_real_kind(RPL)
780
794 integer , parameter :: CKLR = selected_real_kind(r = CRL)
795
809 integer , parameter :: RKLR = selected_real_kind(r = RRL)
810
811!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
812! The highest precision/range kinds supported by the ParaMonte library.
813!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
814
828 integer , parameter :: IKH = selected_int_kind(IRH)
829
843 integer , parameter :: CKH = selected_real_kind(CPH)
844
858 integer , parameter :: RKH = selected_real_kind(RPH)
859
860 integer , parameter , private :: CKHR_VEC_RAW(*)= [ selected_real_kind(merge(huge(1), CP5, CP5 < 1), r = CRH) &
861 , selected_real_kind(merge(huge(1), CP4, CP4 < 1), r = CRH) &
862 , selected_real_kind(merge(huge(1), CP3, CP3 < 1), r = CRH) &
863 , selected_real_kind(merge(huge(1), CP2, CP2 < 1), r = CRH) &
864 , selected_real_kind(merge(huge(1), CP1, CP1 < 1), r = CRH) ]
865 integer , parameter , private :: CKHR_VEC(*) = pack(CKHR_VEC_RAW, 0 <= CKHR_VEC_RAW)
866
880 integer , parameter :: CKHR = CKHR_VEC(1)
881
882 integer , parameter , private :: RKHR_VEC_RAW(*)= [ selected_real_kind(merge(huge(1), RP5, RP5 < 1), r = RRH) &
883 , selected_real_kind(merge(huge(1), RP4, RP4 < 1), r = RRH) &
884 , selected_real_kind(merge(huge(1), RP3, RP3 < 1), r = RRH) &
885 , selected_real_kind(merge(huge(1), RP2, RP2 < 1), r = RRH) &
886 , selected_real_kind(merge(huge(1), RP1, RP1 < 1), r = RRH) ]
887 integer , parameter , private :: RKHR_VEC(*) = pack(RKHR_VEC_RAW, 0 <= RKHR_VEC_RAW)
888
902 integer , parameter :: RKHR = RKHR_VEC(1)
903
904!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
905! The worst range/precision kind type parameters supported by the processor.
906!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
907
921 integer , parameter :: IKW = selected_int_kind(1)
922
936 integer , parameter :: CKW = selected_real_kind(1)
937
951 integer , parameter :: RKW = selected_real_kind(1)
952
966 integer , parameter :: CKWR = selected_real_kind(r = 1)
967
981 integer , parameter :: RKWR = selected_real_kind(r = 1)
982
983!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
984! The best range/precision kind type parameters supported by the processor.
985!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
986
1002 integer , parameter , private :: integer_kinds_range(*) = [ range(int(0, kind = integer_kinds(min(size(integer_kinds), 1)))) &
1003 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 2)))) &
1004 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 3)))) &
1005 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 4)))) &
1006 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 5)))) &
1007 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 6)))) &
1008 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 7)))) &
1009 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 8)))) &
1010 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 9)))) &
1011 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 10)))) &
1012 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 11)))) &
1013 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 12)))) &
1014 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 13)))) &
1015 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 14)))) &
1016 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 15)))) &
1017 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 16)))) &
1018 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 17)))) &
1019 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 18)))) &
1020 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 19)))) &
1021 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 20)))) &
1022 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 21)))) &
1023 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 22)))) &
1024 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 23)))) &
1025 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 24)))) &
1026 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 25)))) &
1027 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 26)))) &
1028 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 27)))) &
1029 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 28)))) &
1030 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 29)))) &
1031 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 30)))) &
1032 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 31)))) &
1033 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 32)))) &
1034 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 33)))) &
1035 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 34)))) &
1036 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 35)))) &
1037 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 36)))) &
1038 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 37)))) &
1039 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 38)))) &
1040 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 39)))) &
1041 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 40)))) &
1042 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 40)))) &
1043 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 41)))) &
1044 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 42)))) &
1045 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 43)))) &
1046 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 44)))) &
1047 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 45)))) &
1048 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 46)))) &
1049 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 47)))) &
1050 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 48)))) &
1051 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 49)))) &
1052 , range(int(0, kind = integer_kinds(min(size(integer_kinds), 50)))) &
1053 ]
1054
1070 integer , parameter , private :: real_kinds_range(*) = [ range(real(0, kind = real_kinds(min(size(real_kinds), 1)))) &
1071 , range(real(0, kind = real_kinds(min(size(real_kinds), 2)))) &
1072 , range(real(0, kind = real_kinds(min(size(real_kinds), 3)))) &
1073 , range(real(0, kind = real_kinds(min(size(real_kinds), 4)))) &
1074 , range(real(0, kind = real_kinds(min(size(real_kinds), 5)))) &
1075 , range(real(0, kind = real_kinds(min(size(real_kinds), 6)))) &
1076 , range(real(0, kind = real_kinds(min(size(real_kinds), 7)))) &
1077 , range(real(0, kind = real_kinds(min(size(real_kinds), 8)))) &
1078 , range(real(0, kind = real_kinds(min(size(real_kinds), 9)))) &
1079 , range(real(0, kind = real_kinds(min(size(real_kinds), 10)))) &
1080 , range(real(0, kind = real_kinds(min(size(real_kinds), 11)))) &
1081 , range(real(0, kind = real_kinds(min(size(real_kinds), 12)))) &
1082 , range(real(0, kind = real_kinds(min(size(real_kinds), 13)))) &
1083 , range(real(0, kind = real_kinds(min(size(real_kinds), 14)))) &
1084 , range(real(0, kind = real_kinds(min(size(real_kinds), 15)))) &
1085 , range(real(0, kind = real_kinds(min(size(real_kinds), 16)))) &
1086 , range(real(0, kind = real_kinds(min(size(real_kinds), 17)))) &
1087 , range(real(0, kind = real_kinds(min(size(real_kinds), 18)))) &
1088 , range(real(0, kind = real_kinds(min(size(real_kinds), 19)))) &
1089 , range(real(0, kind = real_kinds(min(size(real_kinds), 20)))) &
1090 , range(real(0, kind = real_kinds(min(size(real_kinds), 21)))) &
1091 , range(real(0, kind = real_kinds(min(size(real_kinds), 22)))) &
1092 , range(real(0, kind = real_kinds(min(size(real_kinds), 23)))) &
1093 , range(real(0, kind = real_kinds(min(size(real_kinds), 24)))) &
1094 , range(real(0, kind = real_kinds(min(size(real_kinds), 25)))) &
1095 , range(real(0, kind = real_kinds(min(size(real_kinds), 26)))) &
1096 , range(real(0, kind = real_kinds(min(size(real_kinds), 27)))) &
1097 , range(real(0, kind = real_kinds(min(size(real_kinds), 28)))) &
1098 , range(real(0, kind = real_kinds(min(size(real_kinds), 29)))) &
1099 , range(real(0, kind = real_kinds(min(size(real_kinds), 30)))) &
1100 , range(real(0, kind = real_kinds(min(size(real_kinds), 31)))) &
1101 , range(real(0, kind = real_kinds(min(size(real_kinds), 32)))) &
1102 , range(real(0, kind = real_kinds(min(size(real_kinds), 33)))) &
1103 , range(real(0, kind = real_kinds(min(size(real_kinds), 34)))) &
1104 , range(real(0, kind = real_kinds(min(size(real_kinds), 35)))) &
1105 , range(real(0, kind = real_kinds(min(size(real_kinds), 36)))) &
1106 , range(real(0, kind = real_kinds(min(size(real_kinds), 37)))) &
1107 , range(real(0, kind = real_kinds(min(size(real_kinds), 38)))) &
1108 , range(real(0, kind = real_kinds(min(size(real_kinds), 39)))) &
1109 , range(real(0, kind = real_kinds(min(size(real_kinds), 40)))) &
1110 , range(real(0, kind = real_kinds(min(size(real_kinds), 40)))) &
1111 , range(real(0, kind = real_kinds(min(size(real_kinds), 41)))) &
1112 , range(real(0, kind = real_kinds(min(size(real_kinds), 42)))) &
1113 , range(real(0, kind = real_kinds(min(size(real_kinds), 43)))) &
1114 , range(real(0, kind = real_kinds(min(size(real_kinds), 44)))) &
1115 , range(real(0, kind = real_kinds(min(size(real_kinds), 45)))) &
1116 , range(real(0, kind = real_kinds(min(size(real_kinds), 46)))) &
1117 , range(real(0, kind = real_kinds(min(size(real_kinds), 47)))) &
1118 , range(real(0, kind = real_kinds(min(size(real_kinds), 48)))) &
1119 , range(real(0, kind = real_kinds(min(size(real_kinds), 49)))) &
1120 , range(real(0, kind = real_kinds(min(size(real_kinds), 50)))) &
1121 ]
1122
1138 integer , parameter , private :: real_kinds_precision(*)= [ precision(real(0, kind = real_kinds(min(size(real_kinds), 1)))) &
1139 , precision(real(0, kind = real_kinds(min(size(real_kinds), 2)))) &
1140 , precision(real(0, kind = real_kinds(min(size(real_kinds), 3)))) &
1141 , precision(real(0, kind = real_kinds(min(size(real_kinds), 4)))) &
1142 , precision(real(0, kind = real_kinds(min(size(real_kinds), 5)))) &
1143 , precision(real(0, kind = real_kinds(min(size(real_kinds), 6)))) &
1144 , precision(real(0, kind = real_kinds(min(size(real_kinds), 7)))) &
1145 , precision(real(0, kind = real_kinds(min(size(real_kinds), 8)))) &
1146 , precision(real(0, kind = real_kinds(min(size(real_kinds), 9)))) &
1147 , precision(real(0, kind = real_kinds(min(size(real_kinds), 10)))) &
1148 , precision(real(0, kind = real_kinds(min(size(real_kinds), 11)))) &
1149 , precision(real(0, kind = real_kinds(min(size(real_kinds), 12)))) &
1150 , precision(real(0, kind = real_kinds(min(size(real_kinds), 13)))) &
1151 , precision(real(0, kind = real_kinds(min(size(real_kinds), 14)))) &
1152 , precision(real(0, kind = real_kinds(min(size(real_kinds), 15)))) &
1153 , precision(real(0, kind = real_kinds(min(size(real_kinds), 16)))) &
1154 , precision(real(0, kind = real_kinds(min(size(real_kinds), 17)))) &
1155 , precision(real(0, kind = real_kinds(min(size(real_kinds), 18)))) &
1156 , precision(real(0, kind = real_kinds(min(size(real_kinds), 19)))) &
1157 , precision(real(0, kind = real_kinds(min(size(real_kinds), 20)))) &
1158 , precision(real(0, kind = real_kinds(min(size(real_kinds), 21)))) &
1159 , precision(real(0, kind = real_kinds(min(size(real_kinds), 22)))) &
1160 , precision(real(0, kind = real_kinds(min(size(real_kinds), 23)))) &
1161 , precision(real(0, kind = real_kinds(min(size(real_kinds), 24)))) &
1162 , precision(real(0, kind = real_kinds(min(size(real_kinds), 25)))) &
1163 , precision(real(0, kind = real_kinds(min(size(real_kinds), 26)))) &
1164 , precision(real(0, kind = real_kinds(min(size(real_kinds), 27)))) &
1165 , precision(real(0, kind = real_kinds(min(size(real_kinds), 28)))) &
1166 , precision(real(0, kind = real_kinds(min(size(real_kinds), 29)))) &
1167 , precision(real(0, kind = real_kinds(min(size(real_kinds), 30)))) &
1168 , precision(real(0, kind = real_kinds(min(size(real_kinds), 31)))) &
1169 , precision(real(0, kind = real_kinds(min(size(real_kinds), 32)))) &
1170 , precision(real(0, kind = real_kinds(min(size(real_kinds), 33)))) &
1171 , precision(real(0, kind = real_kinds(min(size(real_kinds), 34)))) &
1172 , precision(real(0, kind = real_kinds(min(size(real_kinds), 35)))) &
1173 , precision(real(0, kind = real_kinds(min(size(real_kinds), 36)))) &
1174 , precision(real(0, kind = real_kinds(min(size(real_kinds), 37)))) &
1175 , precision(real(0, kind = real_kinds(min(size(real_kinds), 38)))) &
1176 , precision(real(0, kind = real_kinds(min(size(real_kinds), 39)))) &
1177 , precision(real(0, kind = real_kinds(min(size(real_kinds), 40)))) &
1178 , precision(real(0, kind = real_kinds(min(size(real_kinds), 40)))) &
1179 , precision(real(0, kind = real_kinds(min(size(real_kinds), 41)))) &
1180 , precision(real(0, kind = real_kinds(min(size(real_kinds), 42)))) &
1181 , precision(real(0, kind = real_kinds(min(size(real_kinds), 43)))) &
1182 , precision(real(0, kind = real_kinds(min(size(real_kinds), 44)))) &
1183 , precision(real(0, kind = real_kinds(min(size(real_kinds), 45)))) &
1184 , precision(real(0, kind = real_kinds(min(size(real_kinds), 46)))) &
1185 , precision(real(0, kind = real_kinds(min(size(real_kinds), 47)))) &
1186 , precision(real(0, kind = real_kinds(min(size(real_kinds), 48)))) &
1187 , precision(real(0, kind = real_kinds(min(size(real_kinds), 49)))) &
1188 , precision(real(0, kind = real_kinds(min(size(real_kinds), 50)))) &
1189 ]
1190
1199 integer , parameter , private :: real_kinds_range_max = maxval(real_kinds_range, dim = 1)
1200
1209 integer , parameter , private :: real_kinds_precision_max = maxval(real_kinds_precision, dim = 1)
1210
1219 integer , parameter , private :: real_kinds_precision_min = minval(real_kinds_precision, dim = 1)
1220
1232 real , parameter , private :: real_kinds_precision_hop = real(real_kinds_precision_max - real_kinds_precision_min) / size(real_kinds_precision)
1233
1249 integer , parameter , private :: real_kinds_prmax_kind(*) = [ selected_real_kind(p = real_kinds_precision_max, r = real_kinds_range_max) &
1301 , selected_real_kind(p = real_kinds_precision_min, r = real_kinds_range_max) &
1302 ]
1303
1315 integer , parameter , private :: real_kinds_prmax_kind_avail(*) = pack(real_kinds_prmax_kind, 0 <= real_kinds_prmax_kind)
1316
1333 ! maxval([(selected_int_kind(i), i = 1, 1000)]) ! merge(IKH6, merge(IKH5, merge(IKH4, merge(IKH3, merge(IKH2, IKS, IKH2 > 0), IKH3 > 0), IKH4 > 0), IKH5 > 0), IKH6 > 0) ! only up to `3` times more precise than the double range kind.
1334 integer , parameter :: IKB = selected_int_kind(maxval(integer_kinds_range, dim = 1))
1335
1352 integer , parameter :: CKB = selected_real_kind(maxval(real_kinds_precision, dim = 1))
1353
1370 ! maxval([(selected_real_kind(i), i = 1, 1000)]) ! merge(RKH6, merge(RKH5, merge(RKH4, merge(RKH3, merge(RKH2, RKS, RKH2 > 0), RKH3 > 0), RKH4 > 0), RKH5 > 0), RKH6 > 0) ! only up to `3` times more precise than the double precision kind.
1371 integer , parameter :: RKB = selected_real_kind(maxval(real_kinds_precision, dim = 1))
1372
1389 integer , parameter :: CKBR = real_kinds_prmax_kind_avail(1)
1390
1407 integer , parameter :: RKBR = real_kinds_prmax_kind_avail(1)
1408
1409 ! Constants for kind precisions.<br>
1410
1411 !integer , parameter :: RKP = precision(1._RK) !< \public The precision corresponding to the real kind \RK.<br>
1412 !integer , parameter :: RK32P = precision(1._RK32) !< \public The precision corresponding to the real kind \RK1.<br>
1413 !integer , parameter :: RK64P = precision(1._RK64) !< \public The precision corresponding to the real kind \RK2.<br>
1414 !integer , parameter :: RK128P = precision(1._RK128) !< \public The precision corresponding to the real kind \RK3.<br>
1415
1416!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1417
1504 type, abstract :: model_type
1505 integer(IK) :: kind
1506 integer(IK) :: storage_size
1508 end type
1509
1510!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1511
1544 type, abstract, extends(model_type) :: modeln_type
1545 integer(IK) :: digits
1547 integer(IK) :: radix
1549 integer(IK) :: range
1552 end type
1553
1554!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1555
1615 type, extends(modeln_type) :: modeli_type
1616 integer(IKH) :: huge
1618 end type
1619
1620!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1621
1680 type, extends(modeli_type) :: modelb_type
1681 integer(IK) :: bit_size
1683 end type
1684
1685!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1686
1746 type, extends(modeln_type) :: modelr_type
1747 real(RKH) :: epsilon
1754 real(RKHR) :: huge
1756 integer(IK) :: maxexponent
1758 integer(IK) :: minexponent
1760 integer(IK) :: precision
1764 real(RKHR) :: tiny
1767 end type
1768
1769!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1770
1834 interface modeli_type
1835
1836 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1837
1838#if IK5_ENABLED
1839 pure elemental module function modeli_typer_IK5(mold) result(model)
1840#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1841 !DEC$ ATTRIBUTES DLLEXPORT :: modeli_typer_IK5
1842#endif
1843 integer(IK5), intent(in) :: mold
1844 type(modeli_type) :: model
1845 end function
1846#endif
1847
1848#if IK4_ENABLED
1849 pure elemental module function modeli_typer_IK4(mold) result(model)
1850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1851 !DEC$ ATTRIBUTES DLLEXPORT :: modeli_typer_IK4
1852#endif
1853 integer(IK4), intent(in) :: mold
1854 type(modeli_type) :: model
1855 end function
1856#endif
1857
1858#if IK3_ENABLED
1859 pure elemental module function modeli_typer_IK3(mold) result(model)
1860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1861 !DEC$ ATTRIBUTES DLLEXPORT :: modeli_typer_IK3
1862#endif
1863 integer(IK3), intent(in) :: mold
1864 type(modeli_type) :: model
1865 end function
1866#endif
1867
1868#if IK2_ENABLED
1869 pure elemental module function modeli_typer_IK2(mold) result(model)
1870#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1871 !DEC$ ATTRIBUTES DLLEXPORT :: modeli_typer_IK2
1872#endif
1873 integer(IK2), intent(in) :: mold
1874 type(modeli_type) :: model
1875 end function
1876#endif
1877
1878#if IK1_ENABLED
1879 pure elemental module function modeli_typer_IK1(mold) result(model)
1880#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1881 !DEC$ ATTRIBUTES DLLEXPORT :: modeli_typer_IK1
1882#endif
1883 integer(IK1), intent(in) :: mold
1884 type(modeli_type) :: model
1885 end function
1886#endif
1887
1888 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1889
1890 end interface
1892
1893!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1894
1958 interface modelb_type
1959
1960 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1961
1962#if IK5_ENABLED
1963 pure elemental module function modelb_typer_IK5(mold) result(model)
1964#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1965 !DEC$ ATTRIBUTES DLLEXPORT :: modelb_typer_IK5
1966#endif
1967 integer(IK5), intent(in) :: mold
1968 type(modelb_type) :: model
1969 end function
1970#endif
1971
1972#if IK4_ENABLED
1973 pure elemental module function modelb_typer_IK4(mold) result(model)
1974#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1975 !DEC$ ATTRIBUTES DLLEXPORT :: modelb_typer_IK4
1976#endif
1977 integer(IK4), intent(in) :: mold
1978 type(modelb_type) :: model
1979 end function
1980#endif
1981
1982#if IK3_ENABLED
1983 pure elemental module function modelb_typer_IK3(mold) result(model)
1984#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1985 !DEC$ ATTRIBUTES DLLEXPORT :: modelb_typer_IK3
1986#endif
1987 integer(IK3), intent(in) :: mold
1988 type(modelb_type) :: model
1989 end function
1990#endif
1991
1992#if IK2_ENABLED
1993 pure elemental module function modelb_typer_IK2(mold) result(model)
1994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1995 !DEC$ ATTRIBUTES DLLEXPORT :: modelb_typer_IK2
1996#endif
1997 integer(IK2), intent(in) :: mold
1998 type(modelb_type) :: model
1999 end function
2000#endif
2001
2002#if IK1_ENABLED
2003 pure elemental module function modelb_typer_IK1(mold) result(model)
2004#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2005 !DEC$ ATTRIBUTES DLLEXPORT :: modelb_typer_IK1
2006#endif
2007 integer(IK1), intent(in) :: mold
2008 type(modelb_type) :: model
2009 end function
2010#endif
2011
2012 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2013
2014 end interface
2016
2017!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2018
2082 interface modelr_type
2083
2084 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2085
2086#if RK5_ENABLED
2087 pure elemental module function modelr_typer_RK5(mold) result(model)
2088#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2089 !DEC$ ATTRIBUTES DLLEXPORT :: modelr_typer_RK5
2090#endif
2091 real(RK5) , intent(in) :: mold
2092 type(modelr_type) :: model
2093 end function
2094#endif
2095
2096#if RK4_ENABLED
2097 pure elemental module function modelr_typer_RK4(mold) result(model)
2098#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2099 !DEC$ ATTRIBUTES DLLEXPORT :: modelr_typer_RK4
2100#endif
2101 real(RK4) , intent(in) :: mold
2102 type(modelr_type) :: model
2103 end function
2104#endif
2105
2106#if RK3_ENABLED
2107 pure elemental module function modelr_typer_RK3(mold) result(model)
2108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2109 !DEC$ ATTRIBUTES DLLEXPORT :: modelr_typer_RK3
2110#endif
2111 real(RK3) , intent(in) :: mold
2112 type(modelr_type) :: model
2113 end function
2114#endif
2115
2116#if RK2_ENABLED
2117 pure elemental module function modelr_typer_RK2(mold) result(model)
2118#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2119 !DEC$ ATTRIBUTES DLLEXPORT :: modelr_typer_RK2
2120#endif
2121 real(RK2) , intent(in) :: mold
2122 type(modelr_type) :: model
2123 end function
2124#endif
2125
2126#if RK1_ENABLED
2127 pure elemental module function modelr_typer_RK1(mold) result(model)
2128#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2129 !DEC$ ATTRIBUTES DLLEXPORT :: modelr_typer_RK1
2130#endif
2131 real(RK1) , intent(in) :: mold
2132 type(modelr_type) :: model
2133 end function
2134#endif
2135
2136 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2137
2138 end interface
2140
2141!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2142
2143end module pm_kind ! LCOV_EXCL_LINE
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter SK5
Definition: pm_kind.F90:326
integer, parameter CKLR
The scalar integer constant of intrinsic default kind, representing the highest-decimal-exponent-rang...
Definition: pm_kind.F90:794
integer, parameter LK1
Definition: pm_kind.F90:412
integer, parameter IK3
Definition: pm_kind.F90:368
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter real_kinds_range_max
The scalar integer constant of intrinsic default kind, representing the highest-decimal-exponent-rang...
Definition: pm_kind.F90:1199
integer, parameter RR2
Definition: pm_kind.F90:513
integer, parameter CKBR
The scalar integer constant of intrinsic default kind, representing the Best-decimal-exponent-range c...
Definition: pm_kind.F90:1389
integer, dimension(*), parameter RKALL
The integer vector containing all defined real kinds within the ParaMonte library.
Definition: pm_kind.F90:636
integer, parameter RK4
Definition: pm_kind.F90:489
integer, dimension(*), parameter CKHR_VEC_RAW
Definition: pm_kind.F90:860
integer, parameter IKW
The scalar integer constant of intrinsic default kind, representing the Worst-range integer kind supp...
Definition: pm_kind.F90:921
integer, parameter SK1
Definition: pm_kind.F90:346
integer, dimension(*), parameter RKHR_VEC_RAW
Definition: pm_kind.F90:882
integer, parameter RR3
Definition: pm_kind.F90:502
integer, parameter IK1
Definition: pm_kind.F90:382
integer, dimension(*), parameter real_kinds_range
The vector of integer constants of intrinsic default kind, representing the vector of 50 possible rea...
Definition: pm_kind.F90:1070
integer, parameter LK5
Definition: pm_kind.F90:392
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 CKWR
The scalar integer constant of intrinsic default kind, representing the Worst-decimal-exponent-range ...
Definition: pm_kind.F90:966
integer, parameter CK1
Definition: pm_kind.F90:464
integer, parameter SKA
The ASCII string kind in Fortran mode.
Definition: pm_kind.F90:562
integer, parameter IR5
Definition: pm_kind.F90:355
integer, parameter RP3
Definition: pm_kind.F90:501
integer, dimension(*), parameter LKALL
The integer vector containing all defined logical kinds within the ParaMonte library.
Definition: pm_kind.F90:612
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 IR1
Definition: pm_kind.F90:383
integer, parameter CKH
The scalar integer constant of intrinsic default kind, representing the highest-precision complex kin...
Definition: pm_kind.F90:843
integer, parameter CR1
Definition: pm_kind.F90:466
integer, parameter RKB
The scalar integer constant of intrinsic default kind, representing the Best-precision real kind supp...
Definition: pm_kind.F90:1371
integer, parameter LK2
Definition: pm_kind.F90:407
integer, parameter IK64
The integer kind for a 64-bits container.
Definition: pm_kind.F90:545
integer, parameter SKU
The UNICODE string kind in Fortran mode.
Definition: pm_kind.F90:560
integer, parameter CP3
Definition: pm_kind.F90:443
integer, parameter LK4
Definition: pm_kind.F90:397
integer, dimension(*), parameter IKALL
The integer vector containing all defined integer kinds within the ParaMonte library.
Definition: pm_kind.F90:600
integer, parameter CKB
The scalar integer constant of intrinsic default kind, representing the Best-precision complex kind s...
Definition: pm_kind.F90:1352
integer, parameter CKS
The single-precision complex kind in Fortran mode. On most platforms, this is a 32-bit real kind.
Definition: pm_kind.F90:570
integer, dimension(*), parameter real_kinds_precision
The vector of integer constants of intrinsic default kind, representing the vector of 50 possible rea...
Definition: pm_kind.F90:1138
integer, parameter CP5
Definition: pm_kind.F90:421
integer, parameter CR5
Definition: pm_kind.F90:422
integer, parameter RR4
Definition: pm_kind.F90:491
integer, parameter CPL
The scalar integer constant of intrinsic default kind, representing the lowest precision among all co...
Definition: pm_kind.F90:667
integer, parameter RK32
The real kind for a 32-bits container.
Definition: pm_kind.F90:554
integer, dimension(*), parameter CKALL
The integer vector containing all defined complex kinds within the ParaMonte library.
Definition: pm_kind.F90:624
integer, parameter RR5
Definition: pm_kind.F90:480
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter RPH
The scalar integer constant of intrinsic default kind, representing the highest precision among all r...
Definition: pm_kind.F90:712
integer, parameter real_kinds_precision_min
The scalar integer constant of intrinsic default kind, representing the lowest-precision of real type...
Definition: pm_kind.F90:1219
integer, parameter CK
The default complex kind in the ParaMonte library: real64 in Fortran, c_double_complex in C-Fortran I...
Definition: pm_kind.F90:542
integer, parameter CKHR
The scalar integer constant of intrinsic default kind, representing the highest-decimal-exponent-rang...
Definition: pm_kind.F90:880
integer, parameter CK64
The complex kind for a 64-bits container.
Definition: pm_kind.F90:550
integer, parameter CK128
The complex kind for a 128-bits container.
Definition: pm_kind.F90:549
integer, parameter RRL
The scalar integer constant of intrinsic default kind, representing the lowest decimal exponent range...
Definition: pm_kind.F90:721
integer, parameter CK32
The complex kind for a 32-bits container.
Definition: pm_kind.F90:551
integer, parameter IKS
The single-precision integer kind in Fortran mode. On most platforms, this is a 32-bit integer kind.
Definition: pm_kind.F90:563
integer, parameter RRH
The scalar integer constant of intrinsic default kind, representing the highest decimal exponent rang...
Definition: pm_kind.F90:730
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter CKW
The scalar integer constant of intrinsic default kind, representing the Worst-precision complex kind ...
Definition: pm_kind.F90:936
integer, parameter IK32
The integer kind for a 32-bits container.
Definition: pm_kind.F90:546
integer, parameter SK4
Definition: pm_kind.F90:331
integer, parameter SK_DEF
Definition: pm_kind.F90:312
integer, parameter IK_DEF
Definition: pm_kind.F90:313
integer, dimension(*), parameter CKHR_VEC
Definition: pm_kind.F90:865
integer, dimension(*), parameter RKHR_VEC
Definition: pm_kind.F90:887
integer, parameter LK3
Definition: pm_kind.F90:402
integer, parameter CR2
Definition: pm_kind.F90:455
integer, parameter IKL
The scalar integer constant of intrinsic default kind, representing the lowest range integer kind typ...
Definition: pm_kind.F90:749
integer, parameter IR2
Definition: pm_kind.F90:376
integer, parameter IK2
Definition: pm_kind.F90:375
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter IRH
The scalar integer constant of intrinsic default kind, representing the highest range among all integ...
Definition: pm_kind.F90:658
integer, parameter SK2
Definition: pm_kind.F90:341
integer, parameter CRL
The scalar integer constant of intrinsic default kind, representing the lowest decimal exponent range...
Definition: pm_kind.F90:685
integer, parameter CK3
Definition: pm_kind.F90:442
integer, parameter RKWR
The scalar integer constant of intrinsic default kind, representing the Worst-decimal-exponent-range ...
Definition: pm_kind.F90:981
integer, parameter IKH
The scalar integer constant of intrinsic default kind, representing the highest range integer kind ty...
Definition: pm_kind.F90:828
integer, parameter RK64
The real kind for a 64-bits container.
Definition: pm_kind.F90:553
integer, parameter RKL
The scalar integer constant of intrinsic default kind, representing the lowest-precision real kind ty...
Definition: pm_kind.F90:779
integer, parameter CKL
The scalar integer constant of intrinsic default kind, representing the lowest-precision complex kind...
Definition: pm_kind.F90:764
integer, parameter LK_DEF
Definition: pm_kind.F90:319
integer, parameter CKQ
The quadru-precision complex kind in Fortran mode. On most platforms, this is a 128-bit real kind.
Definition: pm_kind.F90:572
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 RKW
The scalar integer constant of intrinsic default kind, representing the Worst-precision real kind sup...
Definition: pm_kind.F90:951
real, parameter real_kinds_precision_hop
The scalar real constant of intrinsic default kind, representing the step size between the highest an...
Definition: pm_kind.F90:1232
integer, parameter CR3
Definition: pm_kind.F90:444
integer, parameter CRH
The scalar integer constant of intrinsic default kind, representing the highest decimal exponent rang...
Definition: pm_kind.F90:694
integer, parameter RP1
Definition: pm_kind.F90:523
integer, parameter RKQ
The quadru-precision real kind in Fortran mode. On most platforms, this is an 128-bit real kind.
Definition: pm_kind.F90:569
integer, parameter IR4
Definition: pm_kind.F90:362
integer, parameter RK_DEF
Definition: pm_kind.F90:315
integer, parameter IK4
Definition: pm_kind.F90:361
integer, parameter real_kinds_precision_max
The scalar integer constant of intrinsic default kind, representing the highest-precision of real typ...
Definition: pm_kind.F90:1209
integer, parameter IKQ
The quadru-precision integer kind in Fortran mode. On most platforms, this is a 128-bit integer kind....
Definition: pm_kind.F90:565
integer, parameter CKD
The double precision complex kind in Fortran mode. On most platforms, this is a 64-bit real kind.
Definition: pm_kind.F90:571
integer, parameter CR4
Definition: pm_kind.F90:433
integer, parameter RKD
The double precision real kind in Fortran mode. On most platforms, this is an 64-bit real kind.
Definition: pm_kind.F90:568
integer, parameter RKBR
The scalar integer constant of intrinsic default kind, representing the Best-decimal-exponent-range r...
Definition: pm_kind.F90:1407
integer, parameter IK8
The integer kind for an 8-bits container.
Definition: pm_kind.F90:548
integer, parameter IK16
The integer kind for a 16-bits container.
Definition: pm_kind.F90:547
integer, parameter CP1
Definition: pm_kind.F90:465
integer, dimension(*), parameter real_kinds_prmax_kind
The vector of integer constants of intrinsic default kind, representing the 50 possible real highest-...
Definition: pm_kind.F90:1249
integer, parameter IKD
The double precision integer kind in Fortran mode. On most platforms, this is a 64-bit integer kind.
Definition: pm_kind.F90:564
integer, parameter RP2
Definition: pm_kind.F90:512
integer, parameter CK_DEF
Definition: pm_kind.F90:314
integer, parameter IRL
The scalar integer constant of intrinsic default kind, representing the lowest range among all intege...
Definition: pm_kind.F90:649
integer, parameter SKD
The DEFAULT string kind in Fortran mode.
Definition: pm_kind.F90:561
integer, parameter IR3
Definition: pm_kind.F90:369
integer, parameter RPL
The scalar integer constant of intrinsic default kind, representing the lowest precision among all re...
Definition: pm_kind.F90:703
integer, parameter RK128
The real kind for a 128-bits container.
Definition: pm_kind.F90:552
integer, parameter RR1
Definition: pm_kind.F90:524
integer, parameter RP5
Definition: pm_kind.F90:479
integer, parameter IKB
The scalar integer constant of intrinsic default kind, representing the Best-range integer kind suppo...
Definition: pm_kind.F90:1334
integer, parameter RKLR
The scalar integer constant of intrinsic default kind, representing the highest-decimal-exponent-rang...
Definition: pm_kind.F90:809
integer, parameter RKHR
The scalar integer constant of intrinsic default kind, representing the highest-decimal-exponent-rang...
Definition: pm_kind.F90:902
integer, parameter IK5
Definition: pm_kind.F90:354
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 RKH
The scalar integer constant of intrinsic default kind, representing the highest-precision real kind t...
Definition: pm_kind.F90:858
integer, parameter RP4
Definition: pm_kind.F90:490
integer, dimension(*), parameter real_kinds_prmax_kind_avail
The vector of integer constants of intrinsic default kind, containing all maximum-range real kind typ...
Definition: pm_kind.F90:1315
integer, parameter RKS
The single-precision real kind in Fortran mode. On most platforms, this is an 32-bit real kind.
Definition: pm_kind.F90:567
integer, parameter RK1
Definition: pm_kind.F90:522
integer, parameter CP2
Definition: pm_kind.F90:454
integer, parameter CP4
Definition: pm_kind.F90:432
integer, parameter CPH
The scalar integer constant of intrinsic default kind, representing the highest precision among all c...
Definition: pm_kind.F90:676
integer, dimension(*), parameter integer_kinds_range
The vector of integer constants of intrinsic default kind, representing the vector of 50 possible int...
Definition: pm_kind.F90:1002
integer, dimension(*), parameter SKALL
The integer vector containing all defined character kinds within the ParaMonte library.
Definition: pm_kind.F90:588
integer, parameter SK3
Definition: pm_kind.F90:336
This is the abstract derived type for creating objects of class model_type that contain the character...
Definition: pm_kind.F90:1504
This is the abstract derived type for creating objects of class modelb_type that contain the characte...
Definition: pm_kind.F90:1680
This is the abstract derived type for creating objects of class modeli_type that contain the characte...
Definition: pm_kind.F90:1615
This is the abstract derived type for creating objects of class modeln_type that contain the characte...
Definition: pm_kind.F90:1544
This is the abstract derived type for creating objects of class modelr_type that contain the characte...
Definition: pm_kind.F90:1746