macro_rules! make_element {
    (
        ty $type:ident $precision:expr,
        zero $zero:expr,
        one $one:expr,
        convert $convert:expr,
        random $random:expr

    ) => { ... };
    (
        float $float:ident $precision:expr,
        convert $convert:expr,
        random $random:expr
    ) => { ... };
    (
        int $int:ident $precision:expr,
        convert $convert:expr,
        random $random:expr
    ) => { ... };
}