On 2012-01-21 15:54, Poul-Henning Kamp wrote:

timeval contains bogus combinations of tv_sec and tv_usec and
a lot of code does not even notice...

  Yes, in contrast to IEEE binary floating point values where
  each and every bit pattern belongs to one of the classes
  FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, or FP_ZERO.

I already specified that you get EINVAL if it is not a valid
floating point number.  I may have to be more specific than "valid"
but I really don't see this a problem, considering how trivial
and fast this is to check, compared to the math needed to get
to, for instance UTC.

  Yes, a specification had to clarify what the term "valid
  floating point number" means. More to the point: IEEE
  arithmetic adheres to a well-defined (and sophisticated)
  computational model, and I believe users would expect
  that model to be followed if time_t was an IEEE float.

  Case in point: difftime() should react in the standard
  way on arguments that are signalling or quiet NaNs --
  even if the programers don't care or don't know, their
  debuggers may rely on it.

  Of course, you are right that all this can be reasonably
  specified (with some effort). May be this is what BSD
  users REALly want to be in <time.h> (or in <math.h>).
  You probably know best how to find out.

 >   Moreover, IEEE floating point operations depend on certain
 >   environmental settings (eg, rounding modes and enabled
 >   traps) and it is not clear whether a system call must or
 >   can use those of the caller in every circumstance.

I'm not sure I can see how it can become relevant, given
a good quality library implementation.

  Example questions: does difftime() set the inexact flag?
  does it use the rounding mode in force at the call?
  (People do interval arithmetic by executing their
  algorithm twice with different rounding modes.)

  Michael Deckers.
_______________________________________________
LEAPSECS mailing list
LEAPSECS@leapsecond.com
http://six.pairlist.net/mailman/listinfo/leapsecs

Reply via email to