macro_rules! random_custom_tuples {
    (
        ($($vis:tt)*),
        $random_struct: ident,
        $out_t: ty,
        $random_fn: ident,
        $([$t: ident, $it: ident, $xs: ident, $xs_gen: ident, $([$x: ident, $x_ord: ident]),*]),*
    ) => { ... };
}
Expand description

Defines custom random tuple generators.

You can define custom tuple generators like random_triples_xyx in your program using the code below.

See usage examples here.

use malachite_base::random::Seed;

random_custom_tuples!(
    (pub(crate)),
    RandomTriplesXXY,
    (X, X, Y),
    random_triples_xxy,
    [X, I, xs, xs_gen, [x_0, x_0], [x_1, x_1]],
    [Y, J, ys, ys_gen, [y_2, y_2]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomTriplesXYX,
    (X, Y, X),
    random_triples_xyx,
    [X, I, xs, xs_gen, [x_0, x_0], [x_2, y_1]],
    [Y, J, ys, ys_gen, [y_1, x_2]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomTriplesXYY,
    (X, Y, Y),
    random_triples_xyy,
    [X, I, xs, xs_gen, [x_0, x_0]],
    [Y, J, ys, ys_gen, [y_1, y_1], [y_2, y_2]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXXXY,
    (X, X, X, Y),
    random_quadruples_xxxy,
    [X, I, xs, xs_gen, [x_0, x_0], [x_1, x_1], [x_2, x_2]],
    [Y, J, ys, ys_gen, [y_3, y_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXXYX,
    (X, X, Y, X),
    random_quadruples_xxyx,
    [X, I, xs, xs_gen, [x_0, x_0], [x_1, x_1], [x_3, y_2]],
    [Y, J, ys, ys_gen, [y_2, x_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXXYZ,
    (X, X, Y, Z),
    random_quadruples_xxyz,
    [X, I, xs, xs_gen, [x_0, x_0], [x_1, x_1]],
    [Y, J, ys, ys_gen, [y_2, y_2]],
    [Z, K, zs, zs_gen, [z_3, z_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXYXZ,
    (X, Y, X, Z),
    random_quadruples_xyxz,
    [X, I, xs, xs_gen, [x_0, x_0], [x_2, y_1]],
    [Y, J, ys, ys_gen, [y_1, x_2]],
    [Z, K, zs, zs_gen, [z_3, z_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXYYX,
    (X, Y, Y, X),
    random_quadruples_xyyx,
    [X, I, xs, xs_gen, [x_0, x_0], [x_3, y_1]],
    [Y, J, ys, ys_gen, [y_1, y_2], [y_2, x_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXYYZ,
    (X, Y, Y, Z),
    random_quadruples_xyyz,
    [X, I, xs, xs_gen, [x_0, x_0]],
    [Y, J, ys, ys_gen, [y_1, y_1], [y_2, y_2]],
    [Z, K, zs, zs_gen, [z_3, z_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuadruplesXYZZ,
    (X, Y, Z, Z),
    random_quadruples_xyzz,
    [X, I, xs, xs_gen, [x_0, x_0]],
    [Y, J, ys, ys_gen, [y_1, y_1]],
    [Z, K, zs, zs_gen, [z_2, z_2], [z_3, z_3]]
);
random_custom_tuples!(
    (pub(crate)),
    RandomQuintuplesXYYYZ,
    (X, Y, Y, Y, Z),
    random_quintuples_xyyyz,
    [X, I, xs, xs_gen, [x_0, x_0]],
    [Y, J, ys, ys_gen, [y_1, y_1], [y_2, y_2], [y_3, y_3]],
    [Z, K, zs, zs_gen, [z_4, z_4]]
);