matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4b9666b700
commit
58e04b755a
@ -1,3 +1,8 @@
|
|||||||
|
Thu Nov 2 18:01:16 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* random.c (rb_f_rand): half-baked float support fixed. This fix
|
||||||
|
was originally proposed by K.Kosako <kosako@sofnec.co.jp>.
|
||||||
|
|
||||||
Tue Oct 31 17:27:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Tue Oct 31 17:27:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* bignum.c: change digit size to `long|int' if long long is
|
* bignum.c: change digit size to `long|int' if long long is
|
||||||
|
16
bignum.c
16
bignum.c
@ -20,14 +20,14 @@ VALUE rb_cBignum;
|
|||||||
#define USHORT _USHORT
|
#define USHORT _USHORT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SIZEOF_LONG*2 <= SIZEOF_LONG_LONG
|
#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG
|
||||||
typedef unsigned long BDIGIT;
|
|
||||||
typedef unsigned long long BDIGIT_DBL;
|
|
||||||
typedef long long BDIGIT_DBL_SIGNED;
|
|
||||||
#elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG
|
|
||||||
typedef unsigned int BDIGIT;
|
typedef unsigned int BDIGIT;
|
||||||
typedef unsigned long long BDIGIT_DBL;
|
typedef unsigned long long BDIGIT_DBL;
|
||||||
typedef long long BDIGIT_DBL_SIGNED;
|
typedef long long BDIGIT_DBL_SIGNED;
|
||||||
|
#elif SIZEOF_INT*2 <= SIZEOF___INT64
|
||||||
|
typedef unsigned int BDIGIT;
|
||||||
|
typedef unsigned __int64 BDIGIT_DBL;
|
||||||
|
typedef __int64 BDIGIT_DBL_SIGNED;
|
||||||
#else
|
#else
|
||||||
typedef unsigned short BDIGIT;
|
typedef unsigned short BDIGIT;
|
||||||
typedef unsigned long BDIGIT_DBL;
|
typedef unsigned long BDIGIT_DBL;
|
||||||
@ -469,7 +469,7 @@ dbl2big(d)
|
|||||||
double d;
|
double d;
|
||||||
{
|
{
|
||||||
long i = 0;
|
long i = 0;
|
||||||
long c;
|
BDIGIT c;
|
||||||
BDIGIT *digits;
|
BDIGIT *digits;
|
||||||
VALUE z;
|
VALUE z;
|
||||||
double u = (d < 0)?-d:d;
|
double u = (d < 0)?-d:d;
|
||||||
@ -489,9 +489,9 @@ dbl2big(d)
|
|||||||
digits = BDIGITS(z);
|
digits = BDIGITS(z);
|
||||||
while (i--) {
|
while (i--) {
|
||||||
u *= BIGRAD;
|
u *= BIGRAD;
|
||||||
c = (long)u;
|
c = (BDIGIT)u;
|
||||||
u -= c;
|
u -= c;
|
||||||
digits[i] = (BDIGIT)c;
|
digits[i] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
return z;
|
return z;
|
||||||
|
@ -113,6 +113,7 @@ AC_CHECK_SIZEOF(int, 4)
|
|||||||
AC_CHECK_SIZEOF(short, 2)
|
AC_CHECK_SIZEOF(short, 2)
|
||||||
AC_CHECK_SIZEOF(long, 4)
|
AC_CHECK_SIZEOF(long, 4)
|
||||||
AC_CHECK_SIZEOF(long long, 0)
|
AC_CHECK_SIZEOF(long long, 0)
|
||||||
|
AC_CHECK_SIZEOF(__int64, 0)
|
||||||
AC_CHECK_SIZEOF(void*, 4)
|
AC_CHECK_SIZEOF(void*, 4)
|
||||||
AC_CHECK_SIZEOF(float, 4)
|
AC_CHECK_SIZEOF(float, 4)
|
||||||
AC_CHECK_SIZEOF(double, 8)
|
AC_CHECK_SIZEOF(double, 8)
|
||||||
|
@ -18,10 +18,7 @@
|
|||||||
double strtod();
|
double strtod();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SIZEOF_LONG*2 <= SIZEOF_LONG_LONG
|
#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG || SIZEOF_INT*2 <= SIZEOF___INT64
|
||||||
typedef unsigned long BDIGIT;
|
|
||||||
#define SIZEOF_BDIGITS SIZEOF_LONG
|
|
||||||
#elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG
|
|
||||||
typedef unsigned int BDIGIT;
|
typedef unsigned int BDIGIT;
|
||||||
#define SIZEOF_BDIGITS SIZEOF_INT
|
#define SIZEOF_BDIGITS SIZEOF_INT
|
||||||
#else
|
#else
|
||||||
|
5
random.c
5
random.c
@ -147,8 +147,11 @@ rb_f_rand(argc, argv, obj)
|
|||||||
}
|
}
|
||||||
switch (TYPE(vmax)) {
|
switch (TYPE(vmax)) {
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
if (RFLOAT(vmax)->value <= LONG_MAX && RFLOAT(vmax)->value >= LONG_MIN)
|
if (RFLOAT(vmax)->value <= LONG_MAX && RFLOAT(vmax)->value >= LONG_MIN) {
|
||||||
|
max = (long)RFLOAT(vmax)->value;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
vmax = rb_dbl2big(RFLOAT(vmax)->value);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return rb_big_rand(vmax, RANDOM_NUMBER);
|
return rb_big_rand(vmax, RANDOM_NUMBER);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#define RUBY_VERSION "1.6.2"
|
#define RUBY_VERSION "1.6.2"
|
||||||
#define RUBY_RELEASE_DATE "2000-11-01"
|
#define RUBY_RELEASE_DATE "2000-11-02"
|
||||||
#define RUBY_VERSION_CODE 162
|
#define RUBY_VERSION_CODE 162
|
||||||
#define RUBY_RELEASE_CODE 20001101
|
#define RUBY_RELEASE_CODE 20001102
|
||||||
|
Loading…
x
Reference in New Issue
Block a user