comp.lang.ada
 help / color / mirror / Atom feed
From: Jerry <lanceboyle@qwest.net>
Subject: Re: How to check a Float for NaN
Date: Thu, 1 May 2008 17:04:53 -0700 (PDT)
Date: 2008-05-01T17:04:53-07:00	[thread overview]
Message-ID: <13e5c71c-627a-4176-891b-4371949565b4@p25g2000pri.googlegroups.com> (raw)
In-Reply-To: 48197575$1_1@glkas0286.greenlnk.net

On May 1, 1:04 am, "Stuart" <stu...@0.0> wrote:
> "Adam Beneschan" <a...@irvine.com> wrote in message
>
> news:93b0d930-102a-4ac4-8b85-48e87d9d3df1@j33g2000pri.googlegroups.com...> On Apr 30, 3:50 am, christoph.gr...@eurocopter.com wrote:
> >> On 30 Apr., 12:47, christoph.gr...@eurocopter.com wrote:
>
> >> > Try Float'Valid (X), see RM 13.9.2
>
> >> Ahem, I meant X'Valid for X of type Float
>
> <snip>
>
> > The problem here is that if you're dealing with NaN's on purpose,
> > you're not really dealing with Ada, as far as I can tell, unless your
> > purpose is to test for an uninitialized variable (in which case
> > X'Valid makes sense).  Otherwise, though, NaN's and infinities are not
> > possible values of floating-point types, and therefore they can't be
> > returned by operations that return floating-point values, even if
> > Float'Machine_Overflows is False.  (There are certain passages in the
> > RM that say a result is implementation-defined if the
> > Machine_Overflows attribute is False; however, I do not think
> > assigning a variable to an invalid value, as a NaN would be, is an
> > allowed "implementation-defined" result.  13.9.2(4-11) lists the ways
> > that invalid data could be created, and the "result of a floating-
> > point operation that cannot return a valid result" is not one of those
> > listed.  Yes, I know that this is a NOTE and is not normative.)
>
> Would not 13.9.2(10) cover this:
>    "disrupting an assignment due to the failure of a language-defined check
> (see 11.6)"
>
> Thus if a floating point operation creates a NaN, which would indicate an
> ill-conditioned computation that should violate some language-defined check,
> the object (X) that was to receive the result would be considered invalid.
>
> As noted elsewhere, 'valid encompasses more than NaNs - which may or may not
> suit the OPs purpose.

Not sure. Apparently, the plotting example I'm translating from C
needs to check for NaN when the underlying surface plot machinery is
working. It seems odd that this heavy a responsibility should appear
to the user in an example, but that's out of my control. I suppose
'valid would work since I doubt that other pathologies would arise.

Jerry
>
> Regards
> --
> Stuart




  parent reply	other threads:[~2008-05-02  0:04 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30 10:27 How to check a Float for NaN Jerry
2008-04-30 10:47 ` christoph.grein
2008-04-30 10:50   ` christoph.grein
2008-04-30 15:02     ` Adam Beneschan
2008-04-30 20:33       ` Jerry
2008-04-30 23:23         ` Adam Beneschan
2008-05-01  1:00           ` Adam Beneschan
2008-05-01 19:52             ` Keith Thompson
2008-05-01 23:57               ` Jerry
2008-04-30 23:29       ` Randy Brukardt
2008-05-01  8:04       ` Stuart
2008-05-01 14:38         ` Adam Beneschan
2008-05-01 17:14           ` Stuart
2008-05-01 19:22             ` Randy Brukardt
2008-05-02  0:04         ` Jerry [this message]
2008-04-30 20:36 ` Jerry
2008-04-30 21:53   ` Adam Beneschan
2008-05-01  1:05     ` Jerry
2014-05-22  7:27   ` jan.de.kruyf
2014-05-22  8:09     ` Dmitry A. Kazakov
2014-05-22  9:24       ` Simon Wright
2014-05-22  9:48         ` Dmitry A. Kazakov
2014-05-22 15:28           ` Adam Beneschan
2014-05-22 16:31             ` Dmitry A. Kazakov
2014-05-22 23:33               ` Adam Beneschan
2014-05-23  7:38                 ` Dmitry A. Kazakov
2014-05-23 21:39                 ` Randy Brukardt
2014-05-27  8:35                   ` Dmitry A. Kazakov
2014-05-27 12:35                   ` Maurizio Tomasi
2014-05-27 15:53                     ` Adam Beneschan
2014-05-27 22:35                       ` Randy Brukardt
2014-05-27 22:59                         ` Jeffrey Carter
2014-05-28  7:32                         ` Dmitry A. Kazakov
2014-05-28  8:40                       ` Maurizio Tomasi
2008-05-05 18:23 ` Martin Krischik
2008-05-05 20:49   ` Adam Beneschan
2008-05-06 18:09     ` Jerry
2008-05-06 18:45       ` Wiljan Derks
2008-05-06 22:18         ` Adam Beneschan
2008-05-07 22:56           ` Randy Brukardt
2008-05-07 22:56           ` Randy Brukardt
2008-05-07 23:20             ` Adam Beneschan
2008-05-09  7:24             ` Stephen Leake
2008-05-10 17:00   ` anon
2008-05-11 22:00     ` Keith Thompson
2008-05-12  2:01       ` anon
2008-05-09 19:49 ` anon
2008-05-10  2:36   ` Jerry
2008-05-10  3:53     ` anon
2008-05-10  6:24       ` christoph.grein
2008-05-10  8:05     ` 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