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

*Subject*: Re: summation problem*From*: Paul van Delst <paul.vandelst(at)noaa.gov>*Date*: Thu, 05 Apr 2001 12:54:59 -0400*Newsgroups*: comp.lang.idl-pvwave*Organization*: CIMSS @ NOAA/NCEP*References*: <9ahj10$8sg$1@yarrow.open.ac.uk> <3ACC53E1.A396D87C@fz-juelich.de> <3ACC888C.85A2FFAB@noaa.gov> <3ACC9CA6.40E91D7C@fz-juelich.de>*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:24401

Jaco van Gorkom wrote: > > Paul van Delst wrote: > > Jaco van Gorkom wrote: > > > Manish wrote: > > > ... > > > > I have a program which produces an array of values of sunlight flux during > > > > the day. Unfortunately, it produces crazy numbers before the sunrises and > > > > after it sets(as expected). I'm summing the values throughout the day to > > > > get a total integrated day flux, but here's the problem - is there a way of > > > > telling the TOTAL function to ignore negative numbers and NaN numbers? > > > > > > IDL> print, total(test>0,/nan) > > > 7.00000 > > > % Program caused arithmetic error: Floating illegal operand > > > > > > The 'illegal operand' error appears to be harmless, caused by comparing test>0: > > > > Harmless maybe, but I for one don't like seeing illegal operand errors, let alone ignoring > > them. What if you add some code that tries to take the log of a -ve number, see the same > > error and shrug it off? > > That is *exactly* what I'd do: shrug it off! The log of a -ve number gives me > -Inf as a > result, which will propagate through any calculation to be NaN, Inf, or -Inf. > Just another > missing data point. Yoicks. Please prepend any procedures/functions you distribute with your initials, JVG_ :o) > > loc_finite = WHERE( FINITE( test ) EQ 1, count_finite ) > > IF ( count_finite GT 0 ) THEN $ > > sum = TOTAL( test[ loc_finite ] > 0.0 ) $ > > ELSE $ > > sum = !VALUES.F_NAN ; Or some other suitable flag > > Of course I see your point. I would probably implement a FINITE() check if I > were writing a > full program, but the annoying special-case programming for when WHERE() returns > -1 held me > back here. Hence the use of count_finite. Then it doesn't matter what is returned by WHERE() in loc_finite. > On second thought: WHERE() could only return -1 for a day without sunrise... I'm sure there are some Laplanders that use IDL :o) And there's those Antarctic folk. > > Oh, and make sure you set !EXCEPT = 2 in your idl setup file. That'll learn ya to remove > > errors from your code :o) > > Geez! Thanks for pointing that out! This solves everything Manish: !EXCEPT = 0. Oof! That hurtz. paulv -- Paul van Delst A little learning is a dangerous thing; CIMSS @ NOAA/NCEP Drink deep, or taste not the Pierian spring; Ph: (301)763-8000 x7274 There shallow draughts intoxicate the brain, Fax:(301)763-8545 And drinking largely sobers us again. paul.vandelst@noaa.gov Alexander Pope.

**References**:**summation problem***From:*Manish

**Re: summation problem***From:*Jaco van Gorkom

**Re: summation problem***From:*Paul van Delst

**Re: summation problem***From:*Jaco van Gorkom

- Prev by Date:
**long to float** - Next by Date:
**Re: Object epiphany: A new way of building widget applications** - Prev by thread:
**Re: summation problem** - Next by thread:
**Testing - Please ignore** - Index(es):