提交 559de8f5 编写于 作者: S Szabolcs Nagy 提交者: Rich Felker

fix FLT_ROUNDS to reflect the current rounding mode

Implemented as a wrapper around fegetround introducing a new function
to the ABI: __flt_rounds. (fegetround cannot be used directly from float.h)
上级 bd67959f
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#ifdef __FLT_EVAL_METHOD__ #ifdef __FLT_EVAL_METHOD__
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#else #else
......
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0 #define FLT_EVAL_METHOD 0
#define LDBL_TRUE_MIN 4.94065645841246544177e-324L #define LDBL_TRUE_MIN 4.94065645841246544177e-324L
......
#define FLT_ROUNDS 1
#ifdef __FLT_EVAL_METHOD__ #ifdef __FLT_EVAL_METHOD__
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#else #else
......
#define FLT_ROUNDS 1
#ifdef __FLT_EVAL_METHOD__ #ifdef __FLT_EVAL_METHOD__
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#else #else
......
#ifndef _FLOAT_H #ifndef _FLOAT_H
#define _FLOAT_H #define _FLOAT_H
int __flt_rounds(void);
#define FLT_ROUNDS (__flt_rounds())
#define FLT_RADIX 2 #define FLT_RADIX 2
#define FLT_TRUE_MIN 1.40129846432481707092e-45F #define FLT_TRUE_MIN 1.40129846432481707092e-45F
......
#include <float.h>
#include <fenv.h>
int __flt_rounds()
{
switch (fegetround()) {
#ifdef FE_TOWARDZERO
case FE_TOWARDZERO: return 0;
#endif
case FE_TONEAREST: return 1;
#ifdef FE_UPWARD
case FE_UPWARD: return 2;
#endif
#ifdef FE_DOWNWARD
case FE_DOWNWARD: return 3;
#endif
}
return -1;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册