Пример #1
0
uint32_t rseqf(rst *rs)
{
#if RSEQMETHOD==0
	return ((rs->i = (rs->i) * 2110005341UL + 2531011UL) >> 3) * 445223UL;
#elif RSEQMETHOD==1
/*	double d = 1. / (double)MBIG;*/
	uint32_t mj;

	if(++rs->pk1 == rs->k_ma_end)	rs->pk1 = &rs->k_ma[1];
	if(++rs->pk2 == rs->k_ma_end)	rs->pk2 = &rs->k_ma[1];
	if((mj = *rs->pk1 - *rs->pk2) < 0)	mj += MBIG;
	return (*rs->pk1 = mj);
#elif RSEQMETHOD==2
	return SHR3((rs->jsr));
#elif RSEQMETHOD==3
	return FIB((rs->a),(rs->b));
#elif RSEQMETHOD==6
	return rseq(rs);
#else
	return MWC((rs->z),(rs->w));
#endif
}
Пример #2
0
unsigned long fib(int n)
{
  if (n<3) return 1;
  return FIB(n-2)+FIB(n-1);
}