comp.lang.ada
 help / color / mirror / Atom feed
From: "James Van Buskirk" <not_valid@comcast.net>
Subject: Re: Shortcut logicals (was: Re: F200x )
Date: Mon, 31 Jan 2005 17:56:40 -0700
Date: 2005-01-31T17:56:40-07:00	[thread overview]
Message-ID: <OtidnVAKUaPWT2PcRVn-ig@comcast.com> (raw)
In-Reply-To: mXzLd.100$xR1.94@bgtnsc04-news.ops.worldnet.att.net

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3072 bytes --]

"James Giles" <jamesgiles@worldnet.att.net> wrote in message
news:mXzLd.100$xR1.94@bgtnsc04-news.ops.worldnet.att.net...

> Well, I have the F2003 FCD open right now, in �7.4.3 Masked array
> assignment - WHERE.  So, perhaps you can point out what part of
> it resolves the issue I raised:

>    cond1 .and. cond2 .andthen. cond3 .and. cond4

> Is COND4 permitted to be evaluated or not?  I don't see that
> WHERE tells me.  It has a concept of "pending control" which
> I see can be applied on nested constructs, but in the above
> expression, not of the terms actually present are part of any
> "pending" condition.  Or, are you talking about some other
> aspect of WHERE entirely?

OK, I have added comp.lang.ada, so hopefully someone there
can answer the question about the effect of precedence on
your snippet, and also discuss the ergonomics of Ada short-
circuiting logical operators, or whatever they call them.

I would answer your question above, assuming cond1 .AND. cond2
evaluate to scaler .FALSE._lk to be that it all depends; either
cond3 or cond4 or neither or both could be 'short-circuited'.
In the f95 standard I see some verbiage to the effect that:

"If a nonelemental function reference occurs in the expr or
variable of a where-assignment-statement or in a mask-expr, the
function is evaluated without any masked control; that is, all
of its argument expressions are fully evaluated and the function
is fully evaluated.  If the result is an array and the reference
is not within the argument list of a nonelemental function,
elements corresponding to true values in the control mask are
selected for use in evaluating the expr, variable, or mask-expr.

"If an elemental operation or function reference occurs in the expr
or variable of a where-assignment-stmt or in a mask-expr, and is not
within the argument list of a nonelemental function reference, the
operation is performed or the function is evaluated only for the
elements corresopnding to true values of the control mask.

"If an array constructor appears in a where-assignment-stmt or in
a mask-expr, the array constructor is evaluated without any masked
control and then the where-assignment-stmt is executed or the
mask-expr is evaluated."

For .AND_THEN. and .OR_ELSE., if added to the Fortran language,
the language would have to be changed somewhat to make it in
terms of evaluating expressions rather than masked assignment.
Also there should be something about scalar function references
in there as well.  I'm not even sure about what the standard
thinks in WHERE, if an elemental function reference is used in
a scalar context, such as

WHERE(cond1) x = f(y)*g(z)

given that cond1, x, and g(z) all have the same shape, f is
elemental, and y is scalar.  Is any(cond1) == .FALSE. then
is the standard saying you still have to evaluate f(y) if it's
a scalar function but not if it's elemental.  This last
paragraph shouldn't be considered a well-formed thought.

-- 
write(*,*) transfer((/17.392111325966148d0,6.5794487871554595D-85, &
6.0134700243160014d-154/),(/'x'/)); end





       reply	other threads:[~2005-02-01  0:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <41f94cab$1@news1.ethz.ch>
     [not found] ` <INfKd.13707$bh6.378409@weber.videotron.net>
     [not found]   ` <nospam-6F7AE0.11340228012005@news.supernews.com>
     [not found]     ` <lqjnv01969glk2mbv1plvjdn5idkb1c3db@4ax.com>
     [not found]       ` <1107060103.157135.325010@z14g2000cwz.googlegroups.com>
     [not found]         ` <8u2pv0tdd9b1v689rtqc2c2tlm9pn9t1t6@4ax.com>
     [not found]           ` <1107085125.849687.318060@c13g2000cwb.googlegroups.com>
     [not found]             ` <1107096062.786125.100030@f14g2000cwb.googlegroups.com>
     [not found]               ` <10vq094k09igv3c@corp.supernews.com>
     [not found]                 ` <eudLd.43724$8u5.37685@bgtnsc04-news.ops.worldnet.att.net>
     [not found]                   ` <1107160100.162171.223490@f14g2000cwb.googlegroups.com>
     [not found]                     ` <cTxLd.126318$w62.46060@bgtnsc05-news.ops.worldnet.att.net>
     [not found]                       ` <xfKdnUflrtW3I2PcRVn-og@comcast.com>
     [not found]                         ` <rEzLd.68$xR1.54@bgtnsc04-news.ops.worldnet.att.net>
     [not found]                           ` <ON-dnSQzGfXOVWPcRVn-1A@comcast.com>
     [not found]                             ` <mXzLd.100$xR1.94@bgtnsc04-news.ops.worldnet.att.net>
2005-02-01  0:56                               ` James Van Buskirk [this message]
2005-02-01  1:16                                 ` Shortcut logicals (was: Re: F200x ) Robert A Duff
2005-02-01  6:49                                   ` Shortcut logicals Martin Dowie
2005-02-01 13:46                                     ` Robert A Duff
2005-02-01  8:08                                   ` Shortcut logicals (was: Re: F200x ) Martin Krischik
2005-02-01  1:43                                 ` James Giles
2005-02-01  2:33                                   ` James Van Buskirk
2005-02-01  2:53                                     ` James Giles
2005-02-01  3:49                                       ` James Van Buskirk
2005-02-01  4:31                                         ` James Giles
2005-02-01  8:49 Christoph Grein
2005-02-01 11:43 ` Martin Krischik
2005-02-01 12:45   ` Adrien Plisson
2005-02-01 14:03     ` Martin Krischik
2005-02-01 14:56       ` Les
2005-02-01 16:57       ` Frank J. Lhota
2005-02-01 17:55       ` Dan Nagle
2005-02-01 18:25         ` James Giles
2005-02-01 13:57   ` Robert A Duff
replies disabled

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