#[cfg(test)]
mod tests;
use crate::number::{
integer::*,
rational::{
macros::{from_integer, from_rational, try_from_integer, try_from_rational},
*,
},
};
#[cfg(feature = "try_from")]
use core::num::NonZeroU128;
use core::num::{
NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroU16, NonZeroU32, NonZeroU64,
NonZeroU8,
};
from_integer![primint for:Rational+16,num:Z,den:N0z, from:u+8];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:u+8,16];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:u+8,16,32];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:u+8,16,32,64];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:u+8,16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:u+16,32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:u+32,64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:u+64,128];
try_from_integer![primint for:Rational+128,num:Z,den:N0z, from:u+128];
from_integer![primint for:Rational+8,num:Z,den:N0z, from:i+8];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:i+8,16];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:i+8,16,32];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:i+8,16,32,64];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:i+8,16,32,64,128];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:i+16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:i+32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:i+64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:i+128];
from_integer![non0 for:Rational+16,num:Z,den:N0z, from:NonZeroU+8];
from_integer![non0 for:Rational+32,num:Z,den:N0z, from:NonZeroU+8,16];
from_integer![non0 for:Rational+64,num:Z,den:N0z, from:NonZeroU+8,16,32];
from_integer![non0 for:Rational+128,num:Z,den:N0z, from:NonZeroU+8,16,32,64];
try_from_integer![non0 for:Rational+8,num:Z,den:N0z, from:NonZeroU+8,16,32,64,128];
try_from_integer![non0 for:Rational+16,num:Z,den:N0z, from:NonZeroU+16,32,64,128];
try_from_integer![non0 for:Rational+32,num:Z,den:N0z, from:NonZeroU+32,64,128];
try_from_integer![non0 for:Rational+64,num:Z,den:N0z, from:NonZeroU+64,128];
try_from_integer![non0 for:Rational+128,num:Z,den:N0z, from:NonZeroU+128];
from_integer![non0 for:Rational+8,num:Z,den:N0z, from:NonZeroI+8];
from_integer![non0 for:Rational+16,num:Z,den:N0z, from:NonZeroI+8,16];
from_integer![non0 for:Rational+32,num:Z,den:N0z, from:NonZeroI+8,16,32];
from_integer![non0 for:Rational+64,num:Z,den:N0z, from:NonZeroI+8,16,32,64];
from_integer![non0 for:Rational+128,num:Z,den:N0z, from:NonZeroI+8,16,32,64,128];
try_from_integer![non0 for:Rational+8,num:Z,den:N0z, from:NonZeroI+16,32,64,128];
try_from_integer![non0 for:Rational+16,num:Z,den:N0z, from:NonZeroI+32,64,128];
try_from_integer![non0 for:Rational+32,num:Z,den:N0z, from:NonZeroI+64,128];
try_from_integer![non0 for:Rational+64,num:Z,den:N0z, from:NonZeroI+128];
from_integer![primint for:Rational+8,num:Z,den:N0z, from:Integer+8];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:Integer+8,16];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:Integer+8,16,32];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:Integer+8,16,32,64];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:Integer+8,16,32,64,128];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:Integer+16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:Integer+32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:Integer+64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:Integer+128];
from_integer![primint for:Rational+8,num:Z,den:N0z, from:NonZeroInteger+8];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonZeroInteger+8,16];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonZeroInteger+8,16,32];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonZeroInteger+8,16,32,64];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:NonZeroInteger+8,16,32,64,128];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:NonZeroInteger+16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonZeroInteger+32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonZeroInteger+64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonZeroInteger+128];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonNegativeInteger+8];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonNegativeInteger+8,16];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonNegativeInteger+8,16,32];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:NonNegativeInteger+8,16,32,64];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:NonNegativeInteger+8,16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonNegativeInteger+16,32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonNegativeInteger+32,64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonNegativeInteger+64,128];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:PositiveInteger+8];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:PositiveInteger+8,16];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:PositiveInteger+8,16,32];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:PositiveInteger+8,16,32,64];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:PositiveInteger+8,16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:PositiveInteger+16,32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:PositiveInteger+32,64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:PositiveInteger+64,128];
try_from_integer![primint for:Rational+128,num:Z,den:N0z, from:PositiveInteger+128];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonPositiveInteger+8];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonPositiveInteger+8,16];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonPositiveInteger+8,16,32];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:NonPositiveInteger+8,16,32,64];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:NonPositiveInteger+8,16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:NonPositiveInteger+16,32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:NonPositiveInteger+32,64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:NonPositiveInteger+64,128];
try_from_integer![primint for:Rational+128,num:Z,den:N0z, from:NonPositiveInteger+128];
from_integer![primint for:Rational+16,num:Z,den:N0z, from:NegativeInteger+8];
from_integer![primint for:Rational+32,num:Z,den:N0z, from:NegativeInteger+8,16];
from_integer![primint for:Rational+64,num:Z,den:N0z, from:NegativeInteger+8,16,32];
from_integer![primint for:Rational+128,num:Z,den:N0z, from:NegativeInteger+8,16,32,64];
try_from_integer![primint for:Rational+8,num:Z,den:N0z, from:NegativeInteger+8,16,32,64,128];
try_from_integer![primint for:Rational+16,num:Z,den:N0z, from:NegativeInteger+16,32,64,128];
try_from_integer![primint for:Rational+32,num:Z,den:N0z, from:NegativeInteger+32,64,128];
try_from_integer![primint for:Rational+64,num:Z,den:N0z, from:NegativeInteger+64,128];
try_from_integer![primint for:Rational+128,num:Z,den:N0z, from:NegativeInteger+128];
from_rational![for:Rational+16,num:Z,den:N0z, from:Rational+8];
from_rational![for:Rational+32,num:Z,den:N0z, from:Rational+8,16];
from_rational![for:Rational+64,num:Z,den:N0z, from:Rational+8,16,32];
from_rational![for:Rational+128,num:Z,den:N0z, from:Rational+8,16,32,64];
try_from_rational![for:Rational+8,num:Z,den:N0z, from:Rational+16,32,64,128];
try_from_rational![for:Rational+16,num:Z,den:N0z, from:Rational+32,64,128];
try_from_rational![for:Rational+32,num:Z,den:N0z, from:Rational+64,128];
try_from_rational![for:Rational+64,num:Z,den:N0z, from:Rational+128];