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
next prev 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