HUGE_VAL is +Inf on systems supporting IEEE Std 754-1985 and some
"huge" value denoting error on other systems

ksh arithmetic supports Inf on all systems
so there's no need for { HUGE_VAL HUGE_VALF HUGE_VALL }

-- Glenn Fowler -- AT&T Research, Florham Park NJ --

On Mon, 13 Nov 2006 05:30:49 +0100 Roland Mainz wrote:
> Don Cragun wrote:
> > >[This is slightly offtopic for ksh93 (or better: It may be interesting
> > >for the C99 math stuff... or not...)]
> > >
> > >Question for our standard+compi?er experts:
> > >C99 defines |HUGE_VAL|, |HUGE_VALF| and |HUGE_VALL| but there seems to
> > >be no |ishugeval()| function (at least /usr/include/iso/math_c99.h
> > >doesn't have such a function) to probe for this value while |NaN| and
> > >|+Inf|/|-Inf| have such probing functions (e.g. |isinf()|, |isnan()|) -
> > >is that an oversight in the C99 standard or something obmitted
> > >intentional ?

> > I forwarded this question to the Chair of the ISO committee
> > responsible for the C99 standard.  Part of his response was:
> > 
> > >     "isinf() and isnan() are macros not functions in C99 they are
> > >     defined as macros in subclause 7.12.3 Classification macros.
> > > 
> > >     "The other macros defined by this subclause are:
> > >        fpclassify()
> > >        isfinite()
> > >        isnormal()
> > >        signbit()
> > > 
> > >     So, I wouldn't call it an oversight, HUGEVAL has nothing to
> > >     do with the classification of a floating-point values."
> > 
> > Hope this helps,

> Mhhh, I am just wondering why HUGEVAL is treated slightly differently.

> The include "/usr/include/iso/math_c99.h" has the following section:
> -- snip --
> #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 ||
> defined(__C99FEATURES__)
> #if defined(__GNUC__)
> #undef  HUGE_VAL
> #define HUGE_VAL        (__builtin_huge_val())
> #undef  HUGE_VALF
> #define HUGE_VALF       (__builtin_huge_valf())
> #undef  HUGE_VALL
> #define HUGE_VALL       (__builtin_huge_vall())
> #undef  INFINITY
> #define INFINITY        (__builtin_inff())
> #undef  NAN
> #define NAN             (__builtin_nanf(""))
> -- snip --

> |NAN| and |INFINITY| have their matching macros to identify these values
> but there is no macro for |HUGE_VAL*|.

> I am asking since ksh93s- implemented all the new macros listed in
> "/usr/include/iso/math_c99.h" as arithmetic functions and I am wondering
> whether it is a loss/problem that there is no |ishugeval()| (maybe it is
> neccesary... maybe not... I am still digging for C99 specs which don't
> have the label "draft" as title... ;-( ).

> ----

> Bye,
> Roland

> -- 
>   __ .  . __
>  (o.\ \/ /.o) roland.mainz at nrubsig.org
>   \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
>   /O /==\ O\  TEL +49 641 7950090
>  (;O/ \/ \O;)
> _______________________________________________
> ksh93-integration-discuss mailing list
> ksh93-integration-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss


Reply via email to