mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
numeric.c: suppress warning
* numeric.c (DEFINE_INT_SQRT): suppress a type-limits warning where int is always smaller than double. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c1138f066a
commit
0e099878eb
1 changed files with 15 additions and 4 deletions
19
numeric.c
19
numeric.c
|
@ -5132,8 +5132,7 @@ int_truncate(int argc, VALUE* argv, VALUE num)
|
||||||
rettype \
|
rettype \
|
||||||
prefix##_isqrt(argtype n) \
|
prefix##_isqrt(argtype n) \
|
||||||
{ \
|
{ \
|
||||||
if (sizeof(n) * CHAR_BIT > DBL_MANT_DIG && \
|
if (!argtype##_IN_DOUBLE_P(n)) { \
|
||||||
n >= ((argtype)1UL << DBL_MANT_DIG)) { \
|
|
||||||
unsigned int b = bit_length(n); \
|
unsigned int b = bit_length(n); \
|
||||||
argtype t; \
|
argtype t; \
|
||||||
rettype x = (rettype)(n >> (b/2+1)); \
|
rettype x = (rettype)(n >> (b/2+1)); \
|
||||||
|
@ -5144,8 +5143,20 @@ prefix##_isqrt(argtype n) \
|
||||||
return (rettype)sqrt((double)n); \
|
return (rettype)sqrt((double)n); \
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_INT_SQRT(unsigned long, rb_ulong, unsigned long)
|
#if SIZEOF_LONG*CHAR_BIT > DBL_MANT_DIG
|
||||||
#if SIZEOF_BDIGIT*2 > SIZEOF_LONG
|
# define RB_ULONG_IN_DOUBLE_P(n) ((n) < (1UL << DBL_MANT_DIG))
|
||||||
|
#else
|
||||||
|
# define RB_ULONG_IN_DOUBLE_P(n) 1
|
||||||
|
#endif
|
||||||
|
#define RB_ULONG unsigned long
|
||||||
|
DEFINE_INT_SQRT(unsigned long, rb_ulong, RB_ULONG)
|
||||||
|
|
||||||
|
#if 2*SIZEOF_BDIGIT > SIZEOF_LONG
|
||||||
|
# if 2*SIZEOF_BDIGIT*CHAR_BIT > DBL_MANT_DIG
|
||||||
|
# define BDIGIT_DBL_IN_DOUBLE_P(n) ((n) < ((BDIGIT_DBL)1UL << DBL_MANT_DIG))
|
||||||
|
# else
|
||||||
|
# define BDIGIT_DBL_IN_DOUBLE_P(n) 1
|
||||||
|
# endif
|
||||||
DEFINE_INT_SQRT(BDIGIT, rb_bdigit_dbl, BDIGIT_DBL)
|
DEFINE_INT_SQRT(BDIGIT, rb_bdigit_dbl, BDIGIT_DBL)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue