Ignore:
Timestamp:
Feb 18, 2026, 9:50:57 AM (9 days ago)
Author:
jbclement
Message:

PEM:
Fallback for 128-bit integers since this type is not supported by Intel Fortran.
JBC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/numerics.F90

    r4065 r4076  
    2828! ----------
    2929! Integers
    30 integer, parameter :: ti = int8                   ! Tiny integer      = 8 bits
    31 integer, parameter :: si = int16                  ! Short integer     = 16 bits
    32 integer, parameter :: di = int32                  ! Standard integer  = 32 bits (default)
    33 integer, parameter :: li = int64                  ! Long integer      = 64 bits
    34 integer, parameter :: lli = selected_int_kind(30) ! Long long integer = 128 bits
    35 integer, parameter :: wi = di                     ! Working integer
     30integer, parameter :: lli_candidate = selected_int_kind(38)
     31logical, parameter :: has_int128 = (lli_candidate > 0)
     32integer, parameter :: ti = int8                                ! Tiny integer      = 8 bits
     33integer, parameter :: si = int16                               ! Short integer     = 16 bits
     34integer, parameter :: di = int32                               ! Standard integer  = 32 bits (default)
     35integer, parameter :: li = int64                               ! Long integer      = 64 bits
     36integer, parameter :: lli = merge(lli_candidate,li,has_int128) ! Long long integer = 128 bits (if available, otherwise fallback to int64)
     37integer, parameter :: wi = di                                  ! Working integer
    3638
    3739! Reals
    38 integer, parameter :: sp = real32  ! Simple precision    = 32  bits = 1-bit sign + 8-bits  exponent + 23-bits  significand
    39 integer, parameter :: dp = real64  ! Double precision    = 64  bits = 1-bit sign + 11-bits exponent + 52-bits  significand
    40 integer, parameter :: qp = real128 ! Quadruple precision = 128 bits = 1-bit sign + 15-bits exponent + 112-bits significand
     40integer, parameter :: sp = real32  ! Simple precision    = 32  bits = 1-bit sign + 8-bit  exponent + 23-bit  significand
     41integer, parameter :: dp = real64  ! Double precision    = 64  bits = 1-bit sign + 11-bit exponent + 52-bit  significand
     42integer, parameter :: qp = real128 ! Quadruple precision = 128 bits = 1-bit sign + 15-bit exponent + 112-bit significand
    4143integer, parameter :: wp = dp      ! Working precision
    4244
Note: See TracChangeset for help on using the changeset viewer.