comp.lang.ada
 help / color / mirror / Atom feed
From: britt@adapower.net (Britt Snodgrass)
Subject: Re: Dimensionality Checking (Ada 20XX)
Date: 17 Dec 2001 13:07:07 -0800
Date: 2001-12-17T21:07:08+00:00	[thread overview]
Message-ID: <36c6f8dd.0112171307.2a8bf6c4@posting.google.com> (raw)
In-Reply-To: 3c1dd328.10829203@News.CIS.DFN.DE

dmitry@elros.cbb-automation.de (Dmitry A. Kazakov) wrote in message news:<3c1dd328.10829203@News.CIS.DFN.DE>...
> On Sat, 15 Dec 2001 02:07:41 -0500, "Steven Deller"
> <deller@smsail.com> wrote:
> 
> >What is wrong with using Pat Roger's dimensioning system.  It has units
> >and scaling.  It allows making metric, English, or other dimensional
> >units, with all "interconversions" straightforward and easy.  For
> >example, the following user code works with dimension checking and
> >appropriate scaling conversions:

I agree with Steve.  Pat Roger's approach seems pretty elegant to me.

> 
> I used a similar approach. The difference was that I used only one
> discriminant - a modular number holding all 7 powers. With
> Interfaces.Unsigned_32 it holds powers -8..7. Then I used an
> additional field for the offset [to cope with damned Celsius degree
> (:-))]

Can you provide an example of your modular type definition?

> 
> >The only difficulties I see are getting the RIGHT system of dimensions
> >for such a package (but then again, not being "built in", it can be
> >changed is so needed).
> 
> The approach is thinkable and it has a great advantage - an ability to
> write "class-wide" subroutines for dimensioned types. But it still
> faces several problems.
> 
> 1. Optimization issues. I saw no compiler able to remove run-time
> checks and storage for the dicriminants for constrained subtypes. [I
> wrote a small test program which calculated performance penalty. It is
> 6..20 times when compared with regular float]. I agree with you that
> such kind of optimizations could be even more useful than dimensioned
> values itself: some sort of user-defined compile-time expressions,
> removal of static discriminants as well as tags (the later one might
> require revison of tagged types, because of redispatch).
>

Could a large part of the performance penalty be attributed to your
use of a single modular number discriminant for the dimensional
powers?  I think this would require a lot of bit unpacking/repacking. 
Separate discriminants might be faster.

I would probably remove the unit checks in final production code by
redefining the unit types to be reqular floating types, recompiling,
and retesting.

Britt Snodgrass

 <<snip>>
 
> Regards,
> Dmitry Kazakov



  parent reply	other threads:[~2001-12-17 21:07 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-07  0:09 Dimensionality Checking (Ada 20XX) Snodgrass, Britt (NM75)
2001-12-07 16:15 ` Ian
2001-12-09 17:58   ` Nick Roberts
2001-12-09 22:58     ` Nick Roberts
2001-12-10  0:17     ` Mark Lundquist
2001-12-10  1:51       ` James Rogers
2001-12-10  3:33         ` Nick Roberts
2001-12-10 19:09           ` Nick Roberts
2001-12-11  8:20             ` Thomas Koenig
2001-12-11 15:37               ` Nick Roberts
2001-12-11 20:18                 ` Thomas Koenig
2001-12-12  0:58                   ` Mark Lundquist
2001-12-12  8:19                     ` Wilhelm Spickermann
2001-12-12 14:21                     ` Stephen Leake
2001-12-12 19:10                       ` Nick Roberts
2001-12-13 19:04                         ` Stephen Leake
2001-12-13 22:56                           ` Nick Roberts
2001-12-14  0:11                             ` Nick Roberts
2001-12-14 22:14                       ` Mark Lundquist
2001-12-15  1:30                         ` Nick Roberts
2001-12-10 20:22         ` Thomas Koenig
2001-12-10 17:21       ` Wes Groleau
2001-12-10 19:51         ` Mark Lundquist
2001-12-10 19:56           ` Wes Groleau
2001-12-10 20:37             ` Mark Lundquist
2001-12-10 18:56       ` Nick Roberts
2001-12-11 15:05         ` Wes Groleau
2001-12-11 16:39         ` Stephen Leake
2001-12-11 19:05           ` Nick Roberts
2001-12-11 22:50             ` Mark Johnson
2001-12-12  1:59               ` Nick Roberts
2001-12-11 23:01             ` Stephen Leake
2001-12-12  2:21               ` Nick Roberts
2001-12-12 14:16                 ` Stephen Leake
2001-12-13 19:52                   ` Nick Roberts
2001-12-13 22:22                     ` Nick Roberts
2001-12-14  6:40                       ` Robert C. Leif, Ph.D.
2001-12-14 17:30                       ` Stephen Leake
2001-12-14 17:38                     ` Stephen Leake
2001-12-11 22:45           ` Mark Lundquist
2001-12-12  1:42             ` Nick Roberts
2001-12-12 15:17               ` Mark Lundquist
2001-12-12 14:03             ` Stephen Leake
2001-12-12  9:35           ` Dmitry A. Kazakov
2001-12-12 14:26             ` Stephen Leake
2001-12-13 17:02               ` daniele andreatta
2001-12-13 19:06                 ` Stephen Leake
2001-12-14 10:16                 ` Dmitry A. Kazakov
2001-12-14 22:01                   ` Nick Roberts
2001-12-17 11:10                     ` Dmitry A. Kazakov
2001-12-17 12:16                       ` Thomas Koenig
2001-12-17 14:30                         ` Dmitry A. Kazakov
2001-12-27 17:18                         ` Steven Deller
2001-12-15  7:07                   ` Steven Deller
2001-12-17 12:31                     ` Dmitry A. Kazakov
2001-12-17 13:46                       ` Thomas Koenig
2001-12-17 15:00                         ` Dmitry A. Kazakov
2001-12-17 16:38                         ` Thomas Koenig
2001-12-17 21:07                       ` Britt Snodgrass [this message]
2001-12-20 13:44                         ` Dmitry A. Kazakov
2001-12-13 19:33         ` Mark Lundquist
2001-12-13 22:15           ` Nick Roberts
2001-12-14 20:20             ` Mark Lundquist
2001-12-10 23:31       ` Mark Lundquist
2001-12-10 13:57     ` Ian
2001-12-10 17:24       ` Wes Groleau
2001-12-10 20:38       ` Britt Snodgrass
  -- strict thread matches above, loose matches on Subject: below --
2001-12-11 13:11 Mike Brenner
2001-12-11 17:03 ` Mark Lundquist
2001-12-02 16:01 Another Idea for Ada 20XX James Rogers
2001-12-03 14:56 ` Mark Lundquist
2001-12-03 15:12   ` Lutz Donnerhacke
2001-12-03 21:13     ` Dimensionality Checking (Ada 20XX) Nick Roberts
2001-12-04 14:00       ` Dmitry A. Kazakov
2001-12-06 19:52         ` Britt Snodgrass
2001-12-06 20:55           ` Mark Lundquist
2001-12-06 22:38           ` Wes Groleau
2001-12-06 23:12             ` Mark Lundquist
2001-12-07 14:36               ` Wes Groleau
2001-12-07  9:37           ` Dmitry A. Kazakov
2001-12-07 22:51           ` Mark Lundquist
replies disabled

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