comp.lang.ada
 help / color / mirror / Atom feed
From: "Nasser M. Abbasi" <nma@12000.org>
Subject: Re: getting same output as gfortran, long_float
Date: Thu, 30 Apr 2015 17:37:13 -0500
Date: 2015-04-30T17:37:13-05:00	[thread overview]
Message-ID: <mhuaqp$2jk$1@speranza.aioe.org> (raw)
In-Reply-To: 1kxou0nloqg9c$.1x0itzgdrlosm$.dlg@40tude.net

On 4/30/2015 5:08 PM, Dmitry A. Kazakov wrote:
>
> I don't know what FORTRAN does, but assuming, you are using Intel, the
> longest floating-point available there is not, as you seem assume, of 16
> bytes (quadruple-precision), but so-called extended precision, which is not
> that long (10 bytes, namely).
>

Yes, I do not know either how gfortran does it. I am on intel,
using

>gfortran --version
GNU Fortran (Ubuntu 4.8.2-19ubuntu1) 4.8.2

It might be linked to libquadmath? I see article on this

http://glennklockwood.blogspot.com/2014/02/linux-perf-libquadmath-and-gfortrans.html

"Executive Summary: libquadmath was introduced in GFortran 4.6
which fundamentally changed what the -fdefault-real-8 switch does"

thanks for your input below, will look at it:

> AFAIK, GNAT on x86 maps:
>
> Float to single precision float (4 bytes)
> Long_Float to double precision float (8 bytes)
> Long_Long_Float to extended precision float (10 bytes, effectively)
>
> You can try this program to see how many binary mantissa bits are available
> for each type:
> -----------------------------
> with Text_IO; use Text_IO;
> procedure Test is
> begin
>     Put_Line ("Float mantissa:" & Integer'Image (Float'Machine_Mantissa));
>     Put_Line ("Long Float mantissa:" & Integer'Image
> (Long_Float'Machine_Mantissa));
>     Put_Line ("Long Long Float mantissa:" & Integer'Image
> (Long_Long_Float'Machine_Mantissa));
> end Test;
> --------------------------
> On an Intel machine it will print:
>
> Float mantissa: 24
> Long_Float mantissa: 53
> Long_Long_Float mantissa: 64
>
> If FORTRAN supports longer floating point numbers (e.g.
> quadruple-precision) then it must emulate them since Intel hardware does
> not have them. That would make computations quite slow and you should
> consider if you really need that many significant digits.
>
> If GNAT allowed floating-point emulation, you could declare a custom type
> of required precision:
>
>     type My_Float is digits 34; -- 112 * lg(2)
>
> Which is advisable anyway in order to make your program portable. Using
> built-in types is a bad idea and poor taste in most cases.
>
> Since GNAT does support emulation, at least not with the standard compiler
> switches, you need a library for doing this.
>



  parent reply	other threads:[~2015-04-30 22:37 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-30 21:17 getting same output as gfortran, long_float Nasser M. Abbasi
2015-04-30 22:08 ` Dmitry A. Kazakov
2015-04-30 22:11   ` Dmitry A. Kazakov
2015-04-30 22:37   ` Nasser M. Abbasi [this message]
2015-04-30 22:53     ` Nasser M. Abbasi
2015-05-01  7:22       ` Jacob Sparre Andersen
2015-05-01  1:12   ` Nasser M. Abbasi
2015-05-01  6:52     ` Dmitry A. Kazakov
2015-05-01  7:32       ` Nasser M. Abbasi
2015-05-01  7:45         ` Dmitry A. Kazakov
2015-05-04  0:15           ` robin.vowels
2015-05-04  7:21             ` Dmitry A. Kazakov
2015-05-04  8:53               ` robin.vowels
2015-05-04 10:18                 ` Dmitry A. Kazakov
2015-05-04 13:45                   ` robin.vowels
2015-05-04 14:47                     ` Dmitry A. Kazakov
2015-05-07  2:01                       ` robin.vowels
2015-05-01 23:24       ` Dennis Lee Bieber
2015-05-04  0:09       ` robin.vowels
2015-05-01  7:01     ` Dmitry A. Kazakov
2015-05-04  0:42     ` robin.vowels
2015-04-30 22:12 ` Jeffrey R. Carter
2015-04-30 22:27   ` Qun-Ying
2015-05-01  0:59     ` Dennis Lee Bieber
2015-04-30 22:32   ` Nasser M. Abbasi
2015-05-01  1:16     ` Jeffrey R. Carter
2015-05-01  1:40       ` Nasser M. Abbasi
2015-05-01  7:47         ` Jacob Sparre Andersen
2015-05-01 15:39         ` Waldek Hebisch
2015-05-01 17:27           ` Nasser M. Abbasi
2015-05-01 18:03             ` Nasser M. Abbasi
2015-05-04  0:51             ` robin.vowels
2015-05-04  0:47         ` robin.vowels
2015-05-01  8:21 ` Simon Wright
2015-05-01 11:55 ` Georg Bauhaus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox