comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: S'Is_nan or S'Is_inf?
Date: Fri, 16 Jul 2010 10:42:38 +0200
Date: 2010-07-16T10:42:38+02:00	[thread overview]
Message-ID: <1tbp3geoa5yna$.171cmlfdrbm98$.dlg@40tude.net> (raw)
In-Reply-To: m2y6dctn48.fsf@pushface.org

On Thu, 15 Jul 2010 23:07:51 +0100, Simon Wright wrote:

> Warren <ve3wwg@gmail.com> writes:
> 
>> Is there any is not-a-number or is-infinity test support in Ada05+
>> (for floats)?  Is there any being planned?

with Ada.Text_IO;  use Ada.Text_IO;
procedure IEEE is -- Only if Float is IEEE!
   Zero : Float := 0.0;
   Inf  : Float := 1.0 / Zero;
   NaN  : Float := 0.0 / Zero;
begin
   Put_Line ("Valid    " & Boolean'Image (Inf'Valid));
   Put_Line ("In range " & Boolean'Image (Inf <= Float'Last));
   Put_Line ("Self NaN " & Boolean'Image (NaN = NaN));
end IEEE;

On an IEEE machine it could print 3x FALSE.

> With GNAT, using a subtype
> 
>    subtype Checked_Float is Float range Float'Range;
> 
> will give you a Constraint_Error for NaN or +/-Inf.

Yes, one of the reasons not to use built-in types is that the floating
point ones most likely are IEEE with all nasty consequences.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2010-07-16  8:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-15 21:00 S'Is_nan or S'Is_inf? Warren
2010-07-15 21:30 ` Rod Chapman
2010-07-15 22:03   ` Simon Wright
2010-07-15 21:42 ` J-P. Rosen
2010-07-15 22:07 ` Simon Wright
2010-07-16  8:42   ` Dmitry A. Kazakov [this message]
2010-07-16 17:06     ` Warren
2010-07-16 19:39       ` Dmitry A. Kazakov
2010-07-16 22:35     ` Warren
2010-07-17  6:24       ` Simon Wright
2010-07-19 17:04         ` Warren
2010-07-17  7:40       ` Dmitry A. Kazakov
2010-07-19 17:18         ` Warren
2010-07-19 23:15 ` Randy Brukardt
2010-07-20 14:12   ` Warren
2010-07-20 16:20     ` Dmitry A. Kazakov
replies disabled

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