comp.lang.ada
 help / color / mirror / Atom feed
From: Robert Matthews <ignored@ramatthews.free-online.co.uk>
Subject: Re: Question on types conversions - operations
Date: Sat, 13 Jun 2009 17:13:35 +0100
Date: 2009-06-13T17:13:35+01:00	[thread overview]
Message-ID: <aeKdnW8pnb6FTa7XnZ2dnUVZ8m6dnZ2d@brightview.co.uk> (raw)
In-Reply-To: 4a33cb0b$0$2848$ba620e4c@news.skynet.be

Olivier Scalbert wrote:

> Hello,
> 
> I have the following three types:
>      type Length is new Float;
>      type Time   is new Float;
>      type Speed  is new Float;
> 
> Suppose I need to compute a speed given a length and a time.
> 
>      L: Length := 100.0;
>      T: Time   :=  10.0;
>      S: Speed;
> 
> How to do that ?
> 
> With S := Speed(Float(L) / Float(T)) ? Mmmm ... not nice.
> 
> With S := Speed(L / Length(T)), I am also not satisfy as I convert a
> time in Length ...
> 
> I am sure you have better ideas !
> 
> Good weekend,
> 
> Olivier

For some software with a LOT of maths, I used:
type Working_Real_Type is digits 16;
(which was big enough for the VAX target).
I would convert the various values (typed in a similar
way to your Length, Time etc) to Working_Real_Type
before using them in the equations. It was certainly
not ideal but it seemed a reasonable compromise between
type safety and the maths.

Robert





  reply	other threads:[~2009-06-13 16:13 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-13 15:51 Question on types conversions - operations Olivier Scalbert
2009-06-13 16:13 ` Robert Matthews [this message]
2009-06-13 16:55 ` anon
2009-06-13 16:58 ` Dmitry A. Kazakov
2009-06-13 16:59 ` sjw
2009-06-13 17:24   ` Martin
2009-06-13 19:35     ` sjw
2009-06-14  8:22     ` sjw
2009-06-15  8:40   ` Jean-Pierre Rosen
2009-06-15  9:30     ` Olivier Scalbert
2009-06-15  9:51       ` stefan-lucks
2009-06-15 10:33     ` AdaMagica
2009-06-15 19:37     ` sjw
2009-06-13 19:56 ` Jeffrey R. Carter
2009-06-14 15:55   ` Robert A Duff
2009-06-15  8:52 ` AdaMagica
replies disabled

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