Re: axisScaleMin/axisScaleMax
Brought to you by:
rathmann
From: Fritz Z. <za...@ee...> - 2001-07-18 07:00:14
|
On Tue, 17 Jul 2001, Steven Knight wrote: > On Tue, Jul 17, 2001 at 10:01:18PM +0200, Fritz Zaucker wrote: > > In a case, where there is no clear invalid value (and why should > > HUGE_VAL be invalid?), wouldn't it be better to return -1/0 for > > invalid/valid axes and return the min/max value in a variable passed > > as argument? > > > > Sure, it makes for a bit more lengthy code, but at least it is clear > > then and does not depend on HUGE_VAL being available on all platforms. > > I checked and HUGE_VAL is defined on win32, linux, irix and sun. Also on all > these systems HUGE_VAL is defined in math.h. > > > > > Cheers, > > Fritz > > > > P.S.: One could even make a function axisScaleMinMax() returning both > > values, as they might be needed together most of the time > > anyway. > > > > While a function like axisScaleMinMax() might be useful, I would suggest > keeping axisScaleMin() and axisScaleMax() for the simple reason that > there may be sometimes when you only need the min or max value on the > axis scale. I have no problem with having both, but I still think that using HUGE_VAL is sort of a hack (although not a bad one). Or is somewhere said that HUGE_VAL should be considered invalid? Another clean way would be to return a NaN (which can be tested with isnan(3C). Unfortunately it is not straightforward to create a NaN (or at least I don't know it). My coworker Tobias Oetiker (author of MRTG and RRDtool) uses #define NaN 0.0/0.0 but says that one has to deal with issues of floating point exceptions on various OSes. So perhaps using ou of band signaling (as I had originally suggested) is the cleanest way ... Cheers, Fritz -- Dr. Fritz Zaucker, Head IT Support Group Department of Electrical Engineering, Federal Institute of Technology ETZ J97, Gloriastrasse 35, CH-8092 Zurich, Switzerland Tel.: +41-1-632-5241 Fax: +41-1-632-1194 http://people.ee.ethz.ch/~zaucker/ E-mail: za...@ee... (see home page for PGP key) |