Re: Lazy expression evaluation

From: David Brown <dbrown_at_nyahnyahspammersnyahnyah>
Date: Tue, 16 Jun 2009 16:30:27 -0600

Hi Dave,

This is a very interesting observation. In the NCL reference manual
lazy expression evaluation is only documented in the context of 'if'
statements, which require a scalar logical expression. The
documentation for '.and.' and '.or.' says only that the operands must
be logical, but does not mention lazy evaluation. Apparently lazy
evaluation was implemented specifically for 'if' statement evaluation
but was never generalized to work for array logical expressions.

This leads to the inconsistency that you have pointed out here. The
code could easily be updated to use lazy evaluation for .and.
and .or. in the context of array logical expressions. I am not
totally confident that there might not be some backwards-
compatibility issue, but it does seem like a bug of sorts, so my
inclination is to go ahead and make the change, noting that the
behavior should be clearly documented. The development team will
discuss.
  -dave

On Jun 12, 2009, at 7:22 PM, Dave Allured wrote:

> NCL team,
>
> Is lazy expression evaluation supposed to work for array expressions?
>
> See attached script. mask1 is scalar and shows the expected
> result. This is basically the example in the NCL manual under "If
> statements", with assignment rather than if statement.
>
> http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/
> NclStatements.shtml
>
> For mask2 I expect True, False, True, but NCL returns True,
> Missing, True. This creates problems for subsequent usage of the
> mask.
>
> I checked this with NCL versions 5.0.1 (pre-release, ca. May 2008)
> and 5.1.1 (pre-release). The problem was the same in both.
>
> uname -a
> Darwin mac56.psd.esrl.noaa.gov 9.7.0 Darwin Kernel Version 9.7.0:
> Tue Mar 31 22:54:29 PDT 2009; root:xnu-1228.12.14~1/RELEASE_PPC
> Power Macintosh powerpc PowerMac7,3 Darwin
>
> Please advise. Thank you for taking a look.
>
> Dave Allured
> CU/CIRES Climate Diagnostics Center (CDC)
> http://cires.colorado.edu/science/centers/cdc/
> NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
> http://www.cdc.noaa.gov/psd1/
> ; Test program for lazy expression evaluation.
> ; 2009-jun-13 By Dave Allured, NOAA/PSD/CU/CIRES/CDC.
>
> begin
> a = (/ 1,2,3 /)
> a@_FillValue = 2
>
> i=1
> mask1 = (.not.ismissing(a(i)) .and. (a(i) .gt. 0))
> print (mask1)
>
> mask2 = (.not.ismissing(a) .and. (a .gt. 0))
> print (mask2)
> end
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Jun 16 2009 - 16:30:27 MDT

This archive was generated by hypermail 2.2.0 : Fri Jun 19 2009 - 13:23:25 MDT