Math-Random-MTwist

 view release on metacpan or  search on metacpan

MTwist.xs  view on Meta::CPAN

new_state(char* CLASS)
  CODE:
    Newxz(RETVAL, 1, mt_state);
    if (RETVAL == NULL)
      croak("Could not allocate state memory");
  OUTPUT:
    RETVAL

void
DESTROY(mt_state* state)
  PPCODE:
    Safefree(state);

UV
seed32(mt_state* state, uint32_t seed)
  CODE:
    mts_seed32new(state, seed);
    RETVAL = seed;
  OUTPUT:
    RETVAL

MTwist.xs  view on Meta::CPAN

  CODE:
    RETVAL = goodseed(NULL);
  OUTPUT:
    RETVAL

void
bestseed(mt_state* state)

void
_bestseed()
  PPCODE:
    bestseed(NULL);

void
seedfull(mt_state* state, AV* seeds)
  PPCODE:
    seedfull(state, seeds);

void
_seedfull(AV* seeds)
  PPCODE:
    seedfull(NULL, seeds);

SV*
irand32(mt_state* state);
  ALIAS:
    irand64 = 1
    irand = 2
  CODE:
#if IVSIZE >= 8
    if (ix)

MTwist.xs  view on Meta::CPAN

        PUSHs(&PL_sv_undef);     \
      mPUSHp(i2d.str, 8);        \
    }                            \
  }                              \
}                                \

void
rd_double(mt_state* state, int index = 0)
  PREINIT:
    int2dbl i2d;
  PPCODE:
    i2d = rd_double(state);
    RETURN_I2D(items > 1);

void
_rd_double(int index = 0)
  PREINIT:
    int2dbl i2d;
  PPCODE:
    i2d = rd_double(NULL);
    RETURN_I2D(items != 0);

IV
rd_iuniform32(mt_state* state, IV lower, IV upper);
  ALIAS:
    rd_iuniform64 = 1
    rd_iuniform   = 2
  CODE:
#if IVSIZE >= 8

MTwist.xs  view on Meta::CPAN


SV*
_getstate()
  CODE:
    RETVAL = newSVpvn((char*)&mt_default_state, sizeof(mt_state));
  OUTPUT:
    RETVAL

void
setstate(mt_state* state, SV* sv_state)
  PPCODE:
    set_state_from_sv(sv_state, state);

void
_setstate(SV* sv_state)
  PPCODE:
    set_state_from_sv(sv_state, &mt_default_state);

BOOT:
{
  HV *stash;

  stash = gv_stashpv("Math::Random::MTwist", TRUE);
  newCONSTSUB(stash, "HAS_UINT64_T", newSViv(HAS_UINT64_T));
  newCONSTSUB(stash, "NVMANTBITS",   newSViv(NVMANTBITS));
}



( run in 0.615 second using v1.01-cache-2.11-cpan-5511b514fd6 )