To: J3 J3/18-148
From: Anton Schterenlikht
Subject: Logical kinds, another real kind
Date: 2018-February-15
Reference: 18-122, 18-131, N2147
Introduction
------------
N2146 has
16.10.2.14 INT8, INT16, INT32, and INT64
16.10.2.25 REAL32, REAL64, and REAL128
Some users demand a better control of logical kind, in particular a 1
byte logical. The primary motivation is to save space occupied by
logical data objects.
The proposed solution is to add LOG8, LOG16, LOG32, and LOG64
constants to ISO_FORTRAN_ENV.
In addition some users advocate for REAL16, as it is supported by some
modern hardware.
Edits to N2146
--------------
Immediately before 16.10.2.20 LOGICAL_KINDS insert a new section with
text closely mirroring 16.10.2.14 INT8, INT16, INT32, and INT64, e.g:
"The values of these default integer scalar constants shall be those
of the kind type parameters that specify an LOGICAL type whose storage
size expressed in bits is 8, 16, 32, and 64 respectively. If, for any
of these constants, the processor supports more than one kind of that
size, it is processor dependent which kind value is provided. If the
processor supports no kind of a particular size, that constant shall
be equal to -2 if the processor supports a kind with larger size and
-1 otherwise."
Section 16.10.2.25 REAL32, REAL64, and REAL128, 1st sentence, insert
"16, " before "32". The complete new sentence will read:
"The values of these default integer scalar named constants shall be
those of the kind type parameters that specify a REAL type whose
storage size expressed in bits is 16 32, 64, and 128 respectively."