help-octave
[Top][All Lists]

## short-circuit logical operators for Octave

 From: John Eaton Subject: short-circuit logical operators for Octave Date: Fri, 20 May 1994 01:09:37 -0500

```[This was also posted to comp.soft-sys.matlab, but I'm also posting
here since some people on this list may not read that newsgroup. --jwe]

Based on the discussion of the past few days in comp.soft-sys.matlab,
I've implemented short-circuit logical operators for Octave.  An
experimental patch is available via anonymous ftp from
ftp.che.utexas.edu in the file /pub/octave/short-circuit-diffs.  It
seems to work, but I have not done extensive testing.

The changes alter the behavior of Octave's logical `&&' and `||'
operators so that they are no longer simply different forms of the
logical `&' and `|' operators.  Instead, they have the following
properties:

* The value of the expressions formed with these operators is either
1 (true) or 0 (false).

* The operands can be matrices, but an implicit all(all()) is
applied to each operand before it is used.

* Evaluation is performed in a short-circuit fashion.

a || b  returns true if either a or b is determined to be true,
but only evaluates b if a is determined to be false.

a && b  returns true if both a and b are determined to be true,
but only evaluates b if a is determined to be true.

* `&&' and `||' have the same precedence, now just below that
of `&' and `|'.

The behavior of the logical `&' and `|' operators is not changed.

These changes will probably break some of Octave's functions as they
are currently implemented because they use only the `&&' and `||'
forms, but some of the functions may actually need to use the `&' and
`|' operators.  These problems will be fixed if this change is
adopted, but no patches are currently available.  If you would like to