Boost logo

Boost Users :

From: Tobias Munk (munk_tobias_at_[hidden])
Date: 2007-01-25 04:25:52


I am using a custom rounding policy for transcendental functions, based on crlibm and defined in the manner of

libs/numeric/interval/examples/transc.cpp

In the documentation of crlibm, it is recommended to call the init function crlibm_init() before calling one of their transcendental functions. My question now is: does anybody know if calling this init function collides with any of the boost.numeric.interval internal algorithms?

On i686 and amd64 crlibm_init() instructs the FPU not to use extended arithmetics:

/* An init function which sets FPU flags when needed */
unsigned long long crlibm_init() {
  /* Set FPU flags to use double, not double extended,
     with rounding to nearest */
  cw = (_FPU_DEFAULT & ~_FPU_EXTENDED)|_FPU_DOUBLE;
  _FPU_SETCW(cw);
...
}

Is it necessary to reset the old state after a call of a crlibm function, for correct interval arithmetics, or is one call of crlibm_init() for the whole program sufficient?

Thanks,

Tobias Munk
                 
---------------------------------
NEU: Fragen stellen - Wissen, Meinungen und Erfahrungen teilen. Jetzt auf Yahoo! Clever.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net