Re: A big BUG in PLOT, SURFACE, ... [message #4483 is a reply to message #4482] |
Fri, 16 June 1995 00:00   |
theil
Messages: 2 Registered: June 1995
|
Junior Member |
|
|
Running on sun4 with SunOs 4.1.3 I get the arithmetic error but the
plot looks fine. when the yrange is large enough, the error goes away,
so the error probably occurs when IDL tries to calculate where on the
plot the -1e15 point should lie. I do not know what the plotting bug
looks like in the other OS's but from what I read, I guessed
that some number in the graphics interface with the OS wraps around
positive in the OS end when it goes too far negative in the IDL end.
I Tried the following experiment;
I defined d=dindgen(100).
I made a series of plots with d(10)=-1*double(10)^X, where X was a
number I steadily increased. The X value where the plots start
displaying improperly was 39, as in the first exponent which is beyond
the range of a 32 bit float! So I made a series of plots where
d(10)=-1*Y*double(10)^38 and incremented Y. I saw some plots with
d(10) very negative and some with d(10) very positive; but never less
than -3.40282E38. This is clearly some kind of wrap around problem
when you reach the limit of a float.
I decided that it is a probably a problem in IDL rather than the OS,
because when I did not specify the yrange, IDL would supply a yrange
that fit the DISPLAY and not the DATA. with out knowing details of
how the plotting routines work I can't be sure; perhaps IDL feeds info
to the graphics of what to plot; the graphics driver wraps around and
then tells IDL what is about to draw and then IDL comes up with
tick labels based on this. Perhaps there is some other sort of mischief
afoot. Regardless, the problem seems to occur at the limit of a float
on my system and probably the limit of a long 2147483647 on the pc's
etc.
MORAL: Don't stake your career on any plot if IDL complained while making
it! If IDL does complain, find some other meaningful way to scale/display
the data.
--
David Theil
campus box 389 Boulder, Colorado 80309 (303)492-0895
No guts, no glory.
|
|
|