On Wed, 25 Nov 2020, Tobias Burnus wrote:
> > Well, it does not link, for the somewhat unsurprising reason of a missing
> > libgfortran runtime. I have modified the program with whatever little
> > Fortran skills I gained a while ago to get something that can be parseable
> > for a human being in the assembly form:
>
> You could also try -fdump-tree-original or -fdump-parse-tree
> which might be a bit more readable than assembler – at least
> it avoids the problem of D-floating format.
>
> > real(8) :: h = HUGE(1.0)
> > real(8) :: e = EPSILON(1.0)
> >
> > print *,h
> > print *,e
> > end
Umm, my bad: 1.0 is Fortran single while 1d0 is a double literal. So the
raw values produced are correct for the VAX F-floating format, and for the
D-floating I get:
.align 2
.type h.2, @object
.size h.2, 8
h.2:
.long -32769
.long -1
.align 2
.type e.1, @object
.size e.1, 8
e.1:
.long 9472
.long 0
which look right to me too. Mind that VAX FP data are encoded in 16-bit
(word in DEC-speak) rather than 32-bit (longword in DEC-speak) chunks in
memory.
The options you mention (thanks for the hint) report:
static real(kind=4) e = 1.1920928955078125e-7;
static real(kind=4) h = 1.7014117331926442990585209174225846272e+38;
and:
static real(kind=8) e = 2.77555756156289135105907917022705078125e-17;
static real(kind=8) h = 1.7014118346046922937050406228106149888e+38;
respectively and reflect the 8-bit exponent. For the G-floating format,
produced with the `-mg' GCC option (a multilib candidate I would guess):
static real(kind=8) e = 2.220446049250313080847263336181640625e-16;
static real(kind=8) h =
8.98846567431157854072637118658521783990352837629224982994e+307;
> huge and epsilon are defined as:
> huge(x) = (1 - b**(-p)) * b**(emax-1) * b
> epsilon(x) = b**(1-p)
> with
> b = radix = REAL_MODE_FORMAT (mode)->b
> p = digits = REAL_MODE_FORMAT (mode)->p
> emax = max_exponent = REAL_MODE_FORMAT (mode)->emax
Yeah, I've seen it my Fortran reference (not an official standard though;
I don't remember where to get them from and given I don't seem to have a
copy, I suspect they are charged for).
Maciej