1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

remove SCM_HAVE_T_INT64, SCM_HAVE_T_UINT64

* libguile/__scm.h:
* libguile/numbers.h:
* libguile/random.c:
* libguile/srfi-4.c:
* libguile/srfi-4.h:
* libguile/numbers.c:
* test-suite/standalone/test-conversion.c:
* libguile/gen-scmconfig.c: As we require 64-bit integers in
  configure.ac, remove conditional definition of 64-bit types.
This commit is contained in:
Andy Wingo 2010-07-22 20:56:55 +02:00
parent 77b139121d
commit 4ca4826997
8 changed files with 8 additions and 86 deletions

View file

@ -77,8 +77,6 @@ scm_t_rng scm_the_rng;
#define M_PI 3.14159265359
#endif
#if SCM_HAVE_T_UINT64
unsigned long
scm_i_uniform32 (scm_t_i_rstate *state)
{
@ -89,38 +87,6 @@ scm_i_uniform32 (scm_t_i_rstate *state)
return w;
}
#else
/* ww This is a portable version of the same RNG without 64 bit
* * aa arithmetic.
* ----
* xx It is only intended to provide identical behaviour on
* xx platforms without 8 byte longs or long longs until
* xx someone has implemented the routine in assembler code.
* xxcc
* ----
* ccww
*/
#define L(x) ((x) & 0xffff)
#define H(x) ((x) >> 16)
unsigned long
scm_i_uniform32 (scm_t_i_rstate *state)
{
scm_t_uint32 x1 = L (A) * L (state->w);
scm_t_uint32 x2 = L (A) * H (state->w);
scm_t_uint32 x3 = H (A) * L (state->w);
scm_t_uint32 w = L (x1) + L (state->c);
scm_t_uint32 m = H (x1) + L (x2) + L (x3) + H (state->c) + H (w);
scm_t_uint32 x4 = H (A) * H (state->w);
state->w = w = (L (m) << 16) + L (w);
state->c = H (x2) + H (x3) + x4 + H (m);
return w;
}
#endif
void
scm_i_init_rstate (scm_t_i_rstate *state, const char *seed, int n)
{