0

I just noticed that the FSE 1996 conference paper which defines ISAAC mentions a counter variable cc.

This variable is said to be the reason why ISAAC has a guaranteed minimum cycle length of $2^{40}$.

However, no-one seems to have noticed (until I did just now) that the algorithm does not use the cc variable for anything other than incrementing it. But the incremented values are not used anywhere.

Removing the variable does not seem to affect the algorithm's output either. At least not in my implementation.

Did I miss something, or is this variable really as completely useless as it seems to be?

And if it is, does this mean there is no guarantee that there are no short cycles?

fgrieu
  • 149,326
  • 13
  • 324
  • 622

1 Answers1

0

ISAAC does make use of it's counter cc, in figure 4 where it does b = *bb + (++*cc). That increments cc, then uses the updated value in the computation of b.

Since c is 32-bit, that makes it extremely likely (perhaps demonstrable) that the minimum period is a multiple of $2^{32}$.

I think there's another $8$ bit counter somewhere, bringing the minimum period to some multiple of $2^{40}$.

fgrieu
  • 149,326
  • 13
  • 324
  • 622