cpp/numeric/random/subtract with carry engine

Is a random number engine that uses algorithm.

The state of a consists of a sequence, every  is in interval.

Let all subscripts applied to sequence be taken modulo, be the carry value which is either  or. The state transition is performed as follows:
 * let $$,
 * set to ,
 * set to, if , to  otherwise.

The following typedefs define the random number engine with two commonly used parameter sets: