[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: IDL's handling of LOGICAL quantities (WHERE)*From*: James Tappin <sjt(at)star.sr.bham.ac.uk>*Date*: Tue, 12 Oct 1999 15:17:27 +0100*Newsgroups*: comp.lang.idl-pvwave*Organization*: Astrophysics & Space Research, University of Birmingham*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:16816

\begin{rant} I've finally decided to have a public moan about one of the weaknesses of IDL's handling of logical operations: to boot -- that the WHERE function follows a C-like interpretation while most other things are Fortran-like. for example suppose we have an array (m) some of whose values are NaN then the (inefficient) loop: for j=0, n_elements(m) do if not finite(m(j)) then m(j)=0 will set all non-finite elements of m to 0. However: m(where(not finite(m))) = 0 will zero out the whole array since where sees (not 1) as a Yes. [The correct solution is of course: m(where(finite(m) ne 1)) = 0 ] Or a simpler example: IDL> a = [0, 1, 0, 1] IDL> print, where(a eq 0) 0 2 IDL> print, where(not (a ne 0)) 0 1 2 3 I guess the proper answer isto have aproper logical or boolean type and functions like FINITE and logical operations should return it, and of course WHERE should accept it. \end{rant} -- +------------------------+-------------------------------+---------+ | James Tappin | School of Physics & Astronomy | O__ | | sjt@star.sr.bham.ac.uk | University of Birmingham | -- \/` | | Ph: 0121-414-6462. Fax: 0121-414-3722 | | +--------------------------------------------------------+---------+

**Follow-Ups**:**Re: IDL's handling of LOGICAL quantities (WHERE)***From:*Pavel Romashkin

**Re: IDL's handling of LOGICAL quantities (WHERE)***From:*Liam Gumley

**Re: IDL's handling of LOGICAL quantities (WHERE)***From:*Mark Fardal

- Prev by Date:
**Re: Table widgets** - Next by Date:
**Re: IDL's handling of LOGICAL quantities (WHERE)** - Prev by thread:
**Colorbar Program Changes** - Next by thread:
**Re: IDL's handling of LOGICAL quantities (WHERE)** - Index(es):