Re: TAxis bug

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Fri Apr 10 1998 - 19:18:58 MEST


For a detailed discussion on IEEE rounding see:

http://suburbia.net/~billm/floating-point/ieee.html#standards

IEEE recommends to use round-to-nearest or even. This is the default
mode used nby Linux. To be compatible we probably should run on WinNT
with the option  _controlfp(_RC_NEAR, _MCW_RC).

Cheers, Fons.


Valery Fine wrote:
> 
> Dear Fred
> On  9 Apr 98 at 23:22, you wrote:
> 
> > There is a Visual C++ runtime library function called _controlfp()
> > which sets the IEEE floating-point status word.  The syntax is
> > _controlfp(value, mask); the mask indicates which bits of the status
> > word you want to change.  There are lots of constants defined for
> > various parts of this word.  In order to set round-to-nearest mode,
> > the syntax would be:
> >
> > _controlfp(_RC_NEAR, _MCW_RC);
> >
> > The other rounding mode choices are _RC_CHOP, _RC_UP, and _RC_DOWN.
> 
>   Thank you very much for your clarification.
> 
>   I am aware about this function but I doubt ROOT should change the
> default setting.
> 
>   Another question whether ROOT should supply some "common" method to
> give the user an opportunity to change this option on his / her own
> via TSystem class.
> 
>   Since ROOT is multi-platform package it should be understood how
> this method will be implemented for the rest supported platforms too.
> 
>   For the time being I would advice those finding it is essential
> to control the rounding "by hand" call this function himself
> /herself from his/her method.
> 
>   From another hand I'd like to call your attention that the C / C++
> docs says:
> 
>    Floating to Integral
>    ====================
> 
>    When an object of floating type is converted to an integral type,
>    the fractional part is truncated. No rounding takes place in the
>    conversion process. Truncation means that a number like 1.3 is
>    converted to 1, and -1.3 is converted to -1.
> 
>   THAT'S TRUE for ANY CURRENT MathCPU bits setting (it is a LAW for
> each platform / compiler implementation and NO hardware/ CPU flag /
> mask are "allowed" to change it)
> 
>  And just another LAW:
> 
>   Integral to Floating
>   ====================
>   When an object of integral type is converted to a floating type and
>   the original value cannot be represented exactly, the result is
>   either the next higher or the next lower representable value.
> 
>                                   Valery
> 
> =================================================================
> Dr. Valeri Faine (Fine)
>     -------------------          Phone: +1 516 344 7806
> Brookhaven National Laboratory   FAX  : +1 516 344 4206
> Bldg. 510A /STAR                 mailto:fine@bnl.gov
> Upton, New York, 11973-5000      http://nicewww.cern.ch/~fine
> USA
> 
> Dr. Valery Fine                  Telex : 911621 dubna su
>     -----------
> LCTA/Joint Inst.for Nuclear Res. Phone : +7 09621 6 40 80
> 141980 Dubna, Moscow region      Fax   : +7 09621 6 51 45
> Russia                           mailto:fine@main1.jinr.dubna.su

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland          Phone: +41 22 7679248
E-Mail: Fons.Rademakers@cern.ch              Fax:   +41 22 7677910



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:32 MET