diff options
Diffstat (limited to 'gdtoa_fltrnds.h')
-rw-r--r-- | gdtoa_fltrnds.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gdtoa_fltrnds.h b/gdtoa_fltrnds.h new file mode 100644 index 0000000000000..33e5f9e5342c8 --- /dev/null +++ b/gdtoa_fltrnds.h @@ -0,0 +1,18 @@ + FPI *fpi, fpi1; + int Rounding; +#ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */ + Rounding = Flt_Rounds; +#else /*}{*/ + Rounding = 1; + switch(fegetround()) { + case FE_TOWARDZERO: Rounding = 0; break; + case FE_UPWARD: Rounding = 2; break; + case FE_DOWNWARD: Rounding = 3; + } +#endif /*}}*/ + fpi = &fpi0; + if (Rounding != 1) { + fpi1 = fpi0; + fpi = &fpi1; + fpi1.rounding = Rounding; + } |