From: 18k11tm001@sneakemail.com (Russ)
Subject: Re: efficient vector/matrix operations in Ada
Date: 13 Aug 2001 21:46:50 -0700
Date: 2001-08-14T04:46:50+00:00 [thread overview]
Message-ID: <bebbba07.0108132046.53d265dc@posting.google.com> (raw)
In-Reply-To: 3B783732.A3A1EB82@mindspring.com
Larry Hazel <lhazel@mindspring.com> wrote in message news:<3B783732.A3A1EB82@mindspring.com>...
> Russ wrote:
> >
> > Here's how you write "A = B + C + D;" efficiently:
> >
> > A = B;
> > A += C;
> > A += D;
> >
> > This requires no temporary matrices or passing by value. The original
> > form (A=B+C+D) is fine for rapid prototyping, but the efficient form
> > is preferable for production code. As far as I am concerned, Ada
> > really needs arithmetic assignment operators. Sure, you can use
> > procedures, but they're intent and effect is not as obvious to the
> > reader.
> >
> Seems to me if a compiler can't generate the most efficient code for
>
> A = B + C + D
>
> or
>
> A := B + C + D
>
> in any language, you need a different compiler.
>
> Larry
I'm no compiler expert, but I seriously doubt that you are correct
here. Come to think of it, I'll just say that you are flat out
wrong--and I'll eat crow if you are right. The difference (in C++)
between
A = B + C + D;
and
A = B; A += C; A += D;
is more fundamental than a compiler can account for. Don't forget that
"+" and "+=" are user-defined operators to start with. The former says
to add B, C, and D, place the result in a temporary matrix, and copy
that matrix by value back into A. The latter says to copy B into A,
Add C directly to the result, then add D directly to that result. The
latter needs no temporary matrices, whereas the former requires a
temporary for each "+" operator. A special preprocessor could possibly
convert the former to the latter, but I don't see how a compiler could
possibly do it.
This is all old hat in the C++ community. Ada is a great language, but
it missed the boat here. If you don't believe it, you probably don't
understand efficient vector/matrix operations.
By the way, if you think the arithmetic operators should be called
"+:=", "-:=", etc., I give up.
Russ
next prev parent reply other threads:[~2001-08-14 4:46 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-07 1:13 efficient vector/matrix operations in Ada Russ
2001-08-07 2:18 ` Dale Stanbrough
2001-08-07 2:21 ` tmoran
2001-08-07 3:04 ` Russ P.
2001-08-10 16:54 ` B.Gaffney
2001-08-13 7:50 ` Dmitry Kazakov
2001-08-13 19:45 ` Russ
2001-08-13 20:23 ` Larry Hazel
2001-08-13 21:26 ` Ted Dennison
2001-08-14 4:46 ` Russ [this message]
2001-08-14 5:28 ` David Starner
2001-08-14 8:17 ` Alexander Boucke
2001-08-14 8:56 ` Lutz Donnerhacke
2001-08-14 10:54 ` Jacob Sparre Andersen
2001-08-13 21:30 ` Ted Dennison
2001-08-14 4:56 ` Russ
2001-08-14 7:32 ` efficient vector/matrix operations in Fortran, was Re: ... " tmoran
2001-08-14 14:05 ` efficient vector/matrix operations " Ted Dennison
-- strict thread matches above, loose matches on Subject: below --
2001-08-07 11:36 Gautier Write-only-address
2001-08-14 12:37 Gautier Write-only-address
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox