comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@merv.cs.nyu.edu (Robert Dewar)
Subject: Re: floating point comparison
Date: 1997/08/03
Date: 1997-08-03T00:00:00+00:00	[thread overview]
Message-ID: <dewar.870620792@merv> (raw)
In-Reply-To: mheaney-ya023680000208971643530001@news.ni.net


Matthew said:

  Perhaps so, but if you're writing an application that uses real numbers,
  then I assume your admonishment not to use floating point types means "use
  fixed point types" or "use floating point types, but take a class in
  numerical analysis first."
  
  You must admit that using a fixed point types in Ada 83 was sometimes a
  pain, compounded by the fact that often only T'Small that was a power of 2
  was supported.
  
  Consider a simple 16 bit heading type, say, typical of what you'd read off
  a 1553B:
  
     Ownship_Heading_Delta : constant := 360.0 / 2 ** 16;
     type Ownship_Heading is delta Ownship_Heading_Delta range 0.0 .. 360.0;
     for Ownship_Heading'Small use Ownship_Heading_Delta;
  
  How many Ada 83 or Ada 95 compilers support this declaration?  My bet is
  few (if any), despite the fact that this declaration isn't unreasonable,
  since it is typical of the needs of applications in the domain for which
  Ada was designed.
  
  What motivates the use of floating point is that the fixed point
  declaration above doesn't compile.  So here's what an Ada programmer does:

  We'll declare a fixed point type with a small that's a power of 2:
  
     Fixed_16_U_16_Delta : constant := 1.0 / 2 ** 16;
     type Fixed_16_U_16 is delta Fixed_16_U_16_Delta range 0.0 .. 1.0;
     for Fixed_16_U_16'Small use Fixed_16_U_16_Delta;
  
  We'll declare a floating point type with the range we require.  Since there
  are 16 bits of precision, we need a floating point type with ceiling (16 /
  3.32) = 5 digits of precision.
  
     type Ownship_Heading is digits 5 range 0.0 .. 360.0;
  
  So he reads the data off the interface using a fixed point type, and
  converts it to a floating point type:
  
  declare
     Normalized_Heading : Fixed_16_U_16;
     Heading : Ownship_Heading;
  begin
     Read (fd, Normalized_Heading);
     Heading := 360.0 * Ownship_Heading (Normalized_Heading);
  end;
  
  Now I'm back to square one: how do I compare values of ownship heading?
  
  Yes, people routinely use floating point types - probably inappropriately -
  but fixed point type support has traditionally been weak.  Perhaps this
  will change in Ada 95.

Robert replies

  I will say it again, to use floating-point without knowing anything about it
  makes as much sense as trying to write an Ada program when you know nothing
  about programming. That goes for all human endeavors, if you want to do
  something right, you need to know what you are doing. You are giving the
  impression that you really know *nothing* about fpt, which is fine, but
  then what makes you think you can possibly learn a complex subject by
  virtue of a few simple rules.
  
  Anyone who understands floating-point will be able to deal with scenarios
  such as you mention without any special knowledge of Ada. These are fpt
  problems, not Ada problems!
  
  As to your question, how do you compare values of ownship heading? Impossible
  of course to answer without specs as to the accuracy of the input, and the
  purpose of the comparison.
  
  By the way
  
     Ownship_Heading_Delta : constant := 360.0 / 2 ** 16;
     type Ownship_Heading is delta Ownship_Heading_Delta range 0.0 .. 360.0;
     for Ownship_Heading'Small use Ownship_Heading_Delta;
  
  of course compiles fine in GNAT, what might possibly give you the impression
  that it would not. GNAT supports arbitrary smalls, with a precision of up
  to 64 bits. Remember GNAT is a full language compiler, not a subset!





  reply	other threads:[~1997-08-03  0:00 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-07-29  0:00 floating point comparison Matthew Heaney
1997-07-30  0:00 ` Robert Dewar
1997-07-30  0:00   ` Matthew Heaney
1997-07-31  0:00     ` Jim Carr
1997-07-30  0:00   ` Matthew Heaney
1997-07-31  0:00     ` Bob Binder  (remove .mapson to email)
1997-07-31  0:00       ` Robert Dewar
1997-08-01  0:00         ` Dale Stanbrough
1997-08-04  0:00         ` Paul Eggert
1997-08-06  0:00           ` Robert Dewar
1997-08-14  0:00             ` Paul Eggert
1997-08-01  0:00       ` user
1997-08-02  0:00         ` Peter L. Montgomery
1997-08-04  0:00           ` W. Wesley Groleau x4923
1997-08-05  0:00             ` Bob Binder  (remove .mapson to email)
1997-08-02  0:00         ` Lynn Killingbeck
1997-08-03  0:00           ` Robert Dewar
1997-08-03  0:00           ` Bob Binder  (remove .mapson to email)
1997-08-03  0:00             ` Charles R. Lyttle
1997-07-31  0:00     ` Martin Tom Brown
1997-07-31  0:00     ` Samuel Mize
1997-07-31  0:00     ` Robert Dewar
1997-08-02  0:00     ` Lynn Killingbeck
1997-07-31  0:00   ` Gerald Kasner
1997-07-31  0:00     ` Robert Dewar
1997-07-30  0:00 ` Jan Galkowski
1997-07-31  0:00   ` Don Taylor
1997-07-31  0:00     ` Russ Lyttle
1997-08-01  0:00       ` W. Wesley Groleau x4923
1997-08-02  0:00         ` Robert Dewar
1997-08-02  0:00           ` Matthew Heaney
1997-08-03  0:00             ` Robert Dewar [this message]
1997-08-04  0:00           ` W. Wesley Groleau x4923
1997-08-05  0:00             ` Jan-Christoph Puchta
1997-08-05  0:00               ` W. Wesley Groleau x4923
1997-08-05  0:00                 ` Samuel Mize
1997-08-06  0:00                 ` Chris L. Kuszmaul
1997-08-07  0:00                   ` Dave Sparks
1997-08-08  0:00                     ` Jan-Christoph Puchta
1997-08-09  0:00                       ` Robert Dewar
1997-08-10  0:00                       ` Lynn Killingbeck
1997-08-08  0:00                     ` Mark Eichin
1997-08-08  0:00                     ` Robert Dewar
     [not found]                   ` <5sbb90$qsc@redtail.cruzio.com>
     [not found]                     ` <5scugs$jdc$1@cnn.nas.nasa.gov>
1997-08-07  0:00                       ` Robert Dewar
1997-08-08  0:00                     ` Gerhard Heinzel
1997-08-08  0:00                       ` Daniel Villeneuve
1997-08-08  0:00                       ` schlafly
1997-08-09  0:00                       ` Robert Dewar
1997-08-09  0:00                         ` David Ullrich
1997-08-10  0:00                           ` Robert Dewar
1997-08-16  0:00                             ` Andrew V. Nesterov
1997-08-18  0:00                               ` Robert Dewar
1997-08-19  0:00                                 ` Hans Olsson
1997-08-19  0:00                                 ` Jim Carr
1997-08-21  0:00                                   ` Christian Bau
1997-08-21  0:00                                     ` Jim Carr
1997-08-21  0:00                                       ` Robert Dewar
1997-08-22  0:00                                         ` Jim Carr
1997-08-22  0:00                                           ` Robert Dewar
1997-08-23  0:00                                             ` Jim Carr
1997-08-24  0:00                                               ` Robert Dewar
1997-08-29  0:00                                                 ` Andrew V. Nesterov
1997-08-29  0:00                                                   ` Robert Dewar
     [not found]                                                     ` <340DF1DD.2736@iop.com>
1997-09-07  0:00                                                       ` Get_Immediate Robert Dewar
1997-09-07  0:00                                                       ` Get_Immediate Robert Dewar
1997-09-08  0:00                                                       ` Get_Immediate J Giffen
     [not found]                                                 ` <5u4eq6$30b$1@news.lth.se>
1997-08-29  0:00                                                   ` floating point comparison Robert Dewar
1997-09-01  0:00                                                     ` Chris RL Morgan
1997-09-01  0:00                                                 ` Jim Carr
     [not found]                                                   ` <checkerEFx6xI.FCM@netcom.com>
1997-09-03  0:00                                                     ` Chris L. Kuszmaul
1997-09-05  0:00                                                       ` Malome Khomo
1997-09-07  0:00                                                       ` Robert Dewar
1997-09-05  0:00                                                   ` Robert Dewar
1997-09-10  0:00                                                     ` Jim Carr
1997-09-12  0:00                                                       ` Robert Dewar
1997-09-15  0:00                                                         ` James Pauley
1997-09-16  0:00                                                           ` Robert Dewar
1997-08-23  0:00                                         ` W. Wesley Groleau x4923
1997-08-23  0:00                                           ` Robert Dewar
1997-08-30  0:00                                 ` Paul Eggert
1997-08-06  0:00                 ` Robert Dewar
1997-08-07  0:00                   ` Shmuel (Seymour J.) Metz
1997-08-08  0:00                     ` Peter Shenkin
1997-08-09  0:00                       ` Albert Y.C. Lai
1997-08-06  0:00             ` Robert Dewar
1997-08-07  0:00               ` Dr. Rex A. Dwyer
     [not found]               ` <33E8DFF6.6F44@pseserv3.fw.hac.com>
1997-08-07  0:00                 ` Robert Dewar
     [not found]                 ` <33EA1251.3466@link.com>
     [not found]                   ` <33EA46CC.226@pseserv3.fw.hac.com>
1997-08-08  0:00                     ` Christian Bau
1997-08-12  0:00                     ` Martin Tom Brown
1997-08-23  0:00                       ` W. Wesley Groleau x4923
1997-08-23  0:00                         ` Robert Dewar
1997-09-05  0:00                         ` Robert I. Eachus
1997-09-06  0:00                           ` schlafly
1997-09-09  0:00                             ` Robert Dewar
1997-09-07  0:00                           ` M. J. Saltzman
1997-09-11  0:00                           ` Robin Rosenberg
1997-08-06  0:00             ` Robert Dewar
     [not found]               ` <33E8E3E1.17EA@pseserv3.fw.hac.com>
     [not found]                 ` <5sbgpk$q0n$1@goanna.cs.rmit.edu.au>
1997-08-07  0:00                   ` Robert Dewar
     [not found]                     ` <33FE4603.1B6B@pseserv3.fw.hac.com>
1997-08-23  0:00                       ` Robert Dewar
1997-08-08  0:00                   ` W. Wesley Groleau x4923
1997-08-07  0:00             ` Do-While Jones
1997-08-03  0:00         ` Brian Rogoff
1997-08-03  0:00           ` Robert Dewar
1997-08-02  0:00 ` Michael Sierchio
1997-08-08  0:00 ` floating point conversions Mark Lusti
replies disabled

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