#![warn(missing_docs)]
#![doc(html_root_url = "https://docs.rs/rug/~1.19")]
#![doc(html_logo_url = "data:image/svg+xml;base64,
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93
d3cuaW5rc2NhcGUub3JnLykgLS0+Cjxzdmcgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHZlcnNpb249IjEuMSIgdmlld0JveD0i
MCAwIDMzLjg2NyAzMy44NjciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpyZGY9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogPG1ldGFkYXRhPgogIDxyZGY6UkRGPgogICA8
Y2M6V29yayByZGY6YWJvdXQ9IiI+CiAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgIDxkYzp0eXBl
IHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiLz4KICAgPC9jYzpXb3JrPgogIDwv
cmRmOlJERj4KIDwvbWV0YWRhdGE+CiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0yNjMuMTMpIj4KICA8Y2lyY2xlIGN4PSIx
Ni45MzMiIGN5PSIyODAuMDciIHI9IjE2LjkzMyIgZmlsbD0iI2Y3ZjFhMSIvPgogIDxnIGZpbGw9IiMwMDcyYjIiIHN0cm9rZS13
aWR0aD0iLjI2NDU4cHgiPgogICA8ZyBzdHJva2U9IiMwMDAiPgogICAgPGcgYXJpYS1sYWJlbD0iNiI+CiAgICAgPHBhdGggZD0i
bTE0LjM2MSAyNzguNzFjMC42NjA0IDAgMS4yODQxIDAuMjc1MTYgMS4yODQxIDEuMzk0MiAwIDEuMjI5MS0wLjU4NzAyIDEuNjE0
My0xLjI0NzQgMS42MTQzLTAuNTY4NjggMC0xLjI2NTgtMC4zODUyMy0xLjUyMjYtMi4wMTc5IDAuMzY2ODktMC42OTcwOSAwLjkz
NTU2LTAuOTkwNiAxLjQ4NTktMC45OTA2em0wLjExMDA3IDUuMzU2NmMyLjIwMTMgMCA0LjAzNTgtMS40Njc2IDQuMDM1OC0zLjk2
MjRzLTEuNTQwOS0zLjU5NTUtMy41MjIxLTMuNTk1NWMtMC42MjM3MSAwLTEuNjE0MyAwLjQwMzU4LTIuMTgzIDEuMTU1NyAwLjEy
ODQxLTIuMzQ4MSAxLjAwODktMy4xMzY5IDIuMTQ2My0zLjEzNjkgMC42NjA0IDAgMS4zOTQyIDAuNDAzNTcgMS43NjExIDAuODA3
MTVsMS42NTEtMS44NzExYy0wLjc3MDQ2LTAuNzcwNDYtMS45ODEyLTEuNDY3Ni0zLjYzMjItMS40Njc2LTIuNDk0OCAwLTQuODA2
MiAyLjAxNzktNC44MDYyIDYuMjM3MSAwIDQuMjE5MiAyLjMxMTQgNS44MzM1IDQuNTQ5NCA1LjgzMzV6IiBzdHJva2U9Im5vbmUi
Lz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKDE1LjUxNSkiIGFyaWEtbGFiZWw9IjIiPgogICAgIDxwYXRoIGQ9
Im05OC4wMjggMjY3Ljk1aDUuMDQ2MXYtMS4zOTk4aC0xLjYwM2MtMC4zMjczOCAwLTAuODI0MDkgMC4wNDUxLTEuMTk2NiAwLjA5
MDMgMS4yNzU2LTEuMjUzMSAyLjQ0OTctMi40MjcxIDIuNDQ5Ny0zLjcyNTMgMC0xLjM2Ni0wLjk1OTU2LTIuMjY5MS0yLjM3MDct
Mi4yNjkxLTEuMDA0NyAwLTEuNjgyIDAuMzk1MTEtMi4zNzA3IDEuMTc0bDAuODY5MjQgMC44NTc5NmMwLjM2MTI0LTAuMzgzODMg
MC43NTYzNi0wLjczMzc4IDEuMjc1Ni0wLjczMzc4IDAuNjIwODkgMCAxLjAxNiAwLjM4MzgyIDEuMDE2IDEuMDgzNyAwIDEuMDA0
Ny0xLjMwOTUgMi4yOTE2LTMuMTE1NyAzLjg5NDd6IiBmaWxsLW9wYWNpdHk9Ii45NzI1NSIgc3Ryb2tlPSJub25lIi8+CiAgICA8
L2c+CiAgICA8ZyB0cmFuc2Zvcm09InJvdGF0ZSgtMTEuMDMzKSIgYXJpYS1sYWJlbD0iOCI+CiAgICAgPHBhdGggZD0ibS0zOC45
MiAyOTAuNzZjMS4yNzQyIDAgMi4xMjM3LTAuNzQwODMgMi4xMjM3LTEuNzA4OCAwLTAuODM5NjItMC41MDM3Ny0xLjMwMzktMS4w
ODY2LTEuNjI5OHYtMC4wMzk1YzAuNDA0OTktMC4yOTYzMyAwLjgzOTYxLTAuODE5ODYgMC44Mzk2MS0xLjQ0MjIgMC0xLjAxNzQt
MC43MjEwOC0xLjY5OS0xLjg0NzEtMS42OTktMS4wODY2IDAtMS44OTY1IDAuNjUxOTMtMS44OTY1IDEuNjY5MyAwIDAuNjYxODEg
MC4zODUyMyAxLjEyNjEgMC44NjkyNCAxLjQ3MTh2MC4wMzk1Yy0wLjU5MjY3IDAuMzE2MDktMS4xMzU5IDAuODI5NzQtMS4xMzU5
IDEuNjEwMSAwIDEuMDE3NCAwLjkwODc2IDEuNzI4NiAyLjEzMzYgMS43Mjg2em0wLjQxNDg3LTMuNjY0N2MtMC43MDEzMi0wLjI3
NjU3LTEuMjY0NC0wLjU1MzE1LTEuMjY0NC0xLjE4NTMgMC0wLjU0MzI4IDAuMzc1MzYtMC44NTkzNyAwLjg1OTM3LTAuODU5Mzcg
MC41ODI3OSAwIDAuOTI4NTEgMC40MDQ5OSAwLjkyODUxIDAuOTU4MTUgMCAwLjM5NTExLTAuMTg3NjggMC43NTA3MS0wLjUyMzUy
IDEuMDg2NnptLTAuMzk1MTEgMi44NTQ3Yy0wLjY0MjA2IDAtMS4xNTU3LTAuNDE0ODYtMS4xNTU3LTEuMDM3MiAwLTAuNDg0MDEg
MC4yODY0Ni0wLjg4OSAwLjY4MTU3LTEuMTc1NSAwLjg0OTQ5IDAuMzQ1NzIgMS41MTEzIDAuNTkyNjcgMS41MTEzIDEuMjc0MiAw
IDAuNTgyNzktMC40MzQ2MiAwLjkzODM5LTEuMDM3MiAwLjkzODM5eiIgZmlsbC1vcGFjaXR5PSIuOTQxMTgiIHN0cm9rZT0ibm9u
ZSIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJyb3RhdGUoNi41MDA4KSIgYXJpYS1sYWJlbD0iMyI+CiAgICAgPHBhdGgg
ZD0ibTM5LjMwMiAyODMuNjRjMS4wMzI5IDAgMS44ODgxLTAuNTc1NzMgMS44ODgxLTEuNTU3OSAwLTAuNzExMi0wLjQ4MjYtMS4x
Njg0LTEuMTE3Ni0xLjMzNzd2LTAuMDMzOWMwLjU4NDItMC4yMjg2IDAuOTM5OC0wLjYzNSAwLjkzOTgtMS4yMzYxIDAtMC45MTQ0
LTAuNzExMi0xLjQyMjQtMS43NDQxLTEuNDIyNC0wLjY0MzQ3IDAtMS4xNTk5IDAuMjcwOTMtMS42MTcxIDAuNjc3MzNsMC40OTk1
MyAwLjYwMTE0YzAuMzMwMi0wLjMwNDggMC42NjA0LTAuNTA4IDEuMDgzNy0wLjUwOCAwLjQ5MTA3IDAgMC43OTU4NyAwLjI3MDkz
IDAuNzk1ODcgMC43MTk2NiAwIDAuNDk5NTQtMC4zNDcxMyAwLjg2MzYtMS40MDU1IDAuODYzNnYwLjcxMTJjMS4yMjc3IDAgMS41
ODMzIDAuMzU1NiAxLjU4MzMgMC45MTQ0IDAgMC41MDgtMC40MDY0IDAuODEyODEtMC45OTA2IDAuODEyODEtMC41NDE4NyAwLTAu
OTU2NzMtMC4yNjI0Ny0xLjI3ODUtMC41OTI2N2wtMC40NjU2NyAwLjYyNjUzYzAuMzgxIDAuNDIzMzQgMC45NTY3MyAwLjc2MiAx
LjgyODggMC43NjJ6IiBmaWxsLW9wYWNpdHk9Ii44Nzg0MyIgc3Ryb2tlPSJub25lIi8+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zv
cm09InJvdGF0ZSg4LjM1NikiIGFyaWEtbGFiZWw9IjEiPgogICAgIDxwYXRoIGQ9Im00Ni40MDUgMjY4LjloMy4yNDI3di0wLjc5
NTg3aC0xLjA1ODN2LTQuNTg4OWgtMC43MjgxM2MtMC4zMzg2NyAwLjIwMzItMC43MTEyIDAuMzM4NjctMS4yNDQ2IDAuNDQwMjd2
MC42MDk2aDAuOTkwNnYzLjUzOTFoLTEuMjAyM3oiIGZpbGwtb3BhY2l0eT0iLjc1Mjk0IiBzdHJva2U9Im5vbmUiLz4KICAgIDwv
Zz4KICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKDEyLjg2MSkiIGFyaWEtbGFiZWw9IjgiPgogICAgIDxwYXRoIGQ9Im04NS4wMzYg
MjYxLjYzYzEuMDkyMiAwIDEuODIwMy0wLjYzNSAxLjgyMDMtMS40NjQ3IDAtMC43MTk2Ny0wLjQzMTgtMS4xMTc2LTAuOTMxMzMt
MS4zOTd2LTAuMDMzOWMwLjM0NzEzLTAuMjU0IDAuNzE5NjctMC43MDI3MyAwLjcxOTY3LTEuMjM2MSAwLTAuODcyMDctMC42MTgw
Ny0xLjQ1NjMtMS41ODMzLTEuNDU2My0wLjkzMTMzIDAtMS42MjU2IDAuNTU4OC0xLjYyNTYgMS40MzA5IDAgMC41NjcyNiAwLjMz
MDIgMC45NjUyIDAuNzQ1MDcgMS4yNjE1djAuMDMzOWMtMC41MDggMC4yNzA5My0wLjk3MzY3IDAuNzExMi0wLjk3MzY3IDEuMzgw
MSAwIDAuODcyMDcgMC43Nzg5MyAxLjQ4MTcgMS44Mjg4IDEuNDgxN3ptMC4zNTU2LTMuMTQxMWMtMC42MDExMy0wLjIzNzA3LTEu
MDgzNy0wLjQ3NDE0LTEuMDgzNy0xLjAxNiAwLTAuNDY1NjcgMC4zMjE3My0wLjczNjYgMC43MzY2LTAuNzM2NiAwLjQ5OTUzIDAg
MC43OTU4NyAwLjM0NzEzIDAuNzk1ODcgMC44MjEyNiAwIDAuMzM4NjctMC4xNjA4NyAwLjY0MzQ3LTAuNDQ4NzMgMC45MzEzNHpt
LTAuMzM4NjcgMi40NDY5Yy0wLjU1MDMzIDAtMC45OTA2LTAuMzU1Ni0wLjk5MDYtMC44ODkgMC0wLjQxNDg2IDAuMjQ1NTMtMC43
NjIgMC41ODQyLTEuMDA3NSAwLjcyODEzIDAuMjk2MzMgMS4yOTU0IDAuNTA4IDEuMjk1NCAxLjA5MjIgMCAwLjQ5OTUzLTAuMzcy
NTMgMC44MDQzMy0wLjg4OSAwLjgwNDMzeiIgZmlsbC1vcGFjaXR5PSIuNjI3NDUiIHN0cm9rZT0ibm9uZSIvPgogICAgPC9nPgog
ICAgPGcgdHJhbnNmb3JtPSJyb3RhdGUoNC4zMDk5KSIgYXJpYS1sYWJlbD0iNSI+CiAgICAgPHBhdGggZD0ibTQ2LjM0MSAyODku
NDljMC45OTA2IDAgMS44OTY1LTAuNjc3MzQgMS44OTY1LTEuODU0MiAwLTEuMTU5OS0wLjc3MDQ3LTEuNjg0OS0xLjY5MzMtMS42
ODQ5LTAuMjc5NCAwLTAuNDgyNiAwLjA2NzctMC43MTEyIDAuMTc3OGwwLjExMDA3LTEuMzAzOWgyLjAzMnYtMC44MjEyN2gtMi44
Nzg3bC0wLjE2MDg3IDIuNjU4NSAwLjQ2NTY3IDAuMjk2MzNjMC4zMjE3My0wLjIxMTY3IDAuNTE2NDctMC4zMDQ4IDAuODYzNi0w
LjMwNDggMC41OTI2NyAwIDAuOTkwNiAwLjM2NDA3IDAuOTkwNiAxLjAwNzUgMCAwLjY1MTk0LTAuNDQwMjcgMS4wMzI5LTEuMDQx
NCAxLjAzMjktMC41NDE4NyAwLTAuOTM5OC0wLjI3MDk0LTEuMjYxNS0wLjU3NTc0bC0wLjQ0ODczIDAuNjI2NTRjMC4zOTc5MyAw
LjM5NzkzIDAuOTY1MiAwLjc0NTA3IDEuODM3MyAwLjc0NTA3eiIgZmlsbC1vcGFjaXR5PSIuNTAxOTYiIHN0cm9rZT0ibm9uZSIv
PgogICAgPC9nPgogICAgPGcgZmlsbC1vcGFjaXR5PSIuMzc2NDciIGFyaWEtbGFiZWw9IjMiPgogICAgIDxwYXRoIGQ9Im05Ljg4
NTkgMjkzLjQ2YzEuMDMyOSAwIDEuODg4MS0wLjU3NTc0IDEuODg4MS0xLjU1NzkgMC0wLjcxMTItMC40ODI2LTEuMTY4NC0xLjEx
NzYtMS4zMzc3di0wLjAzMzljMC41ODQyLTAuMjI4NiAwLjkzOTgtMC42MzUgMC45Mzk4LTEuMjM2MSAwLTAuOTE0NC0wLjcxMTIt
MS40MjI0LTEuNzQ0MS0xLjQyMjQtMC42NDM0NyAwLTEuMTU5OSAwLjI3MDk0LTEuNjE3MSAwLjY3NzM0bDAuNDk5NTMgMC42MDEx
M2MwLjMzMDItMC4zMDQ4IDAuNjYwNC0wLjUwOCAxLjA4MzctMC41MDggMC40OTEwNyAwIDAuNzk1ODcgMC4yNzA5MyAwLjc5NTg3
IDAuNzE5NjcgMCAwLjQ5OTUzLTAuMzQ3MTMgMC44NjM2LTEuNDA1NSAwLjg2MzZ2MC43MTEyYzEuMjI3NyAwIDEuNTgzMyAwLjM1
NTYgMS41ODMzIDAuOTE0NCAwIDAuNTA4LTAuNDA2NCAwLjgxMjgtMC45OTA2IDAuODEyOC0wLjU0MTg3IDAtMC45NTY3My0wLjI2
MjQ3LTEuMjc4NS0wLjU5MjY3bC0wLjQ2NTY3IDAuNjI2NTRjMC4zODEgMC40MjMzMyAwLjk1NjczIDAuNzYyIDEuODI4OCAwLjc2
MnoiIHN0cm9rZT0ibm9uZSIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTExLjM1MikiIGFyaWEtbGFiZWw9
IjAiPgogICAgIDxwYXRoIGQ9Im0tNTEuNDcxIDI3Ni4xN2MxLjExNzYgMCAxLjgyODgtMC45OTkwNyAxLjgyODgtMi44MTk0IDAt
MS44MTE5LTAuNzExMi0yLjc2ODYtMS44Mjg4LTIuNzY4Ni0xLjExNzYgMC0xLjgyODggMC45NDgyNi0xLjgyODggMi43Njg2IDAg
MS44MjAzIDAuNzExMiAyLjgxOTQgMS44Mjg4IDIuODE5NHptMC0wLjc2MmMtMC41MTY0NyAwLTAuODk3NDctMC41MzM0LTAuODk3
NDctMi4wNTc0czAuMzgxLTIuMDA2NiAwLjg5NzQ3LTIuMDA2NmMwLjUyNDkzIDAgMC44OTc0NyAwLjQ4MjYgMC44OTc0NyAyLjAw
NjZzLTAuMzcyNTMgMi4wNTc0LTAuODk3NDcgMi4wNTc0eiIgZmlsbC1vcGFjaXR5PSIuMjUwOTgiIHN0cm9rZT0ibm9uZSIvPgog
ICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJyb3RhdGUoMjIuNTA2KSIgYXJpYS1sYWJlbD0iNyI+CiAgICAgPHBhdGggZD0ibTEx
OC4xNSAyNDMuMDhoMC45OTA2YzAuMDkzMS0yLjA5OTcgMC4zNDcxMy0zLjIwODkgMS42NDI1LTQuNzkyMXYtMC41OTI2NmgtMy42
MTUzdjAuODIxMjZoMi41NTY5Yy0xLjA3NTMgMS40NjQ3LTEuNDczMiAyLjY1MDEtMS41NzQ4IDQuNTYzNXoiIGZpbGwtb3BhY2l0
eT0iLjEyNTQ5IiBzdHJva2U9Im5vbmUiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKC05LjcyNzMpIiBhcmlh
LWxhYmVsPSIxIj4KICAgICA8cGF0aCBkPSJtLTE4LjI5OSAyODIuNzloMy4yNDI3di0wLjc5NTg3aC0xLjA1ODN2LTQuNTg4OWgt
MC43MjgxM2MtMC4zMzg2NyAwLjIwMzItMC43MTEyIDAuMzM4NjYtMS4yNDQ2IDAuNDQwMjZ2MC42MDk2aDAuOTkwNnYzLjUzOTFo
LTEuMjAyM3oiIGZpbGwtb3BhY2l0eT0iLjA2Mjc0NSIgc3Ryb2tlPSJub25lIi8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgYXJp
YS1sYWJlbD0iLiI+CiAgICA8cGF0aCBkPSJtMjAuOTIgMjgzLjk4YzAuNjU0NzYgMCAxLjEyODktMC41MTkyOSAxLjEyODktMS4x
NzQgMC0wLjY1NDc2LTAuNDc0MTMtMS4xNzQtMS4xMjg5LTEuMTc0LTAuNjU0NzYgMC0xLjEyODkgMC41MTkyOS0xLjEyODkgMS4x
NzQgMCAwLjY1NDc1IDAuNDc0MTMgMS4xNzQgMS4xMjg5IDEuMTc0eiIvPgogICA8L2c+CiAgPC9nPgogPC9nPgo8L3N2Zz4K
")]
#![doc(test(attr(deny(warnings))))]
#![cfg_attr(feature = "fail-on-warnings", deny(warnings))]
#![warn(unsafe_op_in_unsafe_fn)]
#![allow(clippy::useless_conversion)]
#[macro_use]
mod macros;
mod ext;
#[cfg(any(feature = "integer", feature = "float"))]
mod misc;
mod ops_prim;
#[cfg(all(feature = "serde", any(feature = "integer", feature = "float")))]
mod serdeize;
pub mod ops;
pub trait Assign<Src = Self> {
fn assign(&mut self, src: Src);
}
pub trait Complete {
type Completed;
fn complete(self) -> Self::Completed;
#[inline]
fn complete_into<T>(self, target: &mut T)
where
Self: Sized,
T: Assign<Self>,
{
target.assign(self);
}
}
#[cfg(feature = "integer")]
pub mod integer;
#[cfg(feature = "integer")]
pub use crate::integer::big::Integer;
#[cfg(feature = "rational")]
pub mod rational;
#[cfg(feature = "rational")]
pub use crate::rational::big::Rational;
#[cfg(feature = "float")]
pub mod float;
#[cfg(feature = "float")]
pub use crate::float::big::Float;
#[cfg(feature = "complex")]
pub mod complex;
#[cfg(feature = "complex")]
pub use crate::complex::big::Complex;
#[cfg(feature = "rand")]
pub mod rand;
#[cfg(any(feature = "integer", feature = "float"))]
mod static_assertions {
use gmp_mpfr_sys::gmp::{limb_t, LIMB_BITS, NAIL_BITS, NUMB_BITS};
static_assert!(NAIL_BITS == 0);
static_assert!(NUMB_BITS == LIMB_BITS);
static_assert!(cfg!(target_pointer_width = "32") ^ cfg!(target_pointer_width = "64"));
static_assert!(cfg!(gmp_limb_bits_32) ^ cfg!(gmp_limb_bits_64));
#[cfg(gmp_limb_bits_64)]
static_assert!(NUMB_BITS == 64);
#[cfg(gmp_limb_bits_32)]
static_assert!(NUMB_BITS == 32);
static_assert!(NUMB_BITS % 8 == 0);
static_assert!(limb_t::BITS == NUMB_BITS as u32);
}
#[cfg(all(test, any(feature = "integer", feature = "float")))]
mod tests {
pub const U8: &[u8] = &[0, 1, 100, 101, i8::MAX as u8 + 1, u8::MAX];
pub const I8: &[i8] = &[i8::MIN, -101, -100, -1, 0, 1, 100, 101, i8::MAX];
pub const U16: &[u16] = &[0, 1, 1000, 1001, i16::MAX as u16 + 1, u16::MAX];
pub const I16: &[i16] = &[i16::MIN, -1001, -1000, -1, 0, 1, 1000, 1001, i16::MAX];
pub const U32: &[u32] = &[0, 1, 1000, 1001, i32::MAX as u32 + 1, u32::MAX];
pub const I32: &[i32] = &[i32::MIN, -1001, -1000, -1, 0, 1, 1000, 1001, i32::MAX];
pub const U64: &[u64] = &[
0,
1,
1000,
1001,
i32::MAX as u64 + 1,
u32::MAX as u64 + 1,
u64::MAX,
];
pub const I64: &[i64] = &[
i64::MIN,
-(u32::MAX as i64) - 1,
i32::MIN as i64 - 1,
-1001,
-1000,
-1,
0,
1,
1000,
1001,
i32::MAX as i64 + 1,
u32::MAX as i64 + 1,
i64::MAX,
];
pub const U128: &[u128] = &[
0,
1,
1000,
1001,
i32::MAX as u128 + 1,
u32::MAX as u128 + 1,
i64::MAX as u128 + 1,
u64::MAX as u128 + 1,
u128::MAX,
];
pub const I128: &[i128] = &[
i128::MIN,
-(u64::MAX as i128) - 1,
i64::MIN as i128 - 1,
-(u32::MAX as i128) - 1,
i32::MIN as i128 - 1,
-1001,
-1000,
-1,
0,
1,
1000,
1001,
i32::MAX as i128 + 1,
u32::MAX as i128 + 1,
i64::MAX as i128 + 1,
u64::MAX as i128 + 1,
i128::MAX,
];
pub const USIZE: &[usize] = &[0, 1, 1000, 1001, isize::MAX as usize + 1, usize::MAX];
pub const ISIZE: &[isize] = &[isize::MIN, -1001, -1000, -1, 0, 1, 1000, 1001, isize::MAX];
#[cfg(any(feature = "rational", feature = "float"))]
pub const F32: &[f32] = &[
-f32::NAN,
f32::NEG_INFINITY,
f32::MIN,
-12.0e30,
-2.0,
-1.0 - f32::EPSILON,
-1.0,
-f32::MIN_POSITIVE,
-f32::MIN_POSITIVE * f32::EPSILON,
-0.0,
0.0,
f32::MIN_POSITIVE * f32::EPSILON,
f32::MIN_POSITIVE,
1.0,
1.0 + f32::EPSILON,
2.0,
12.0e30,
f32::MAX,
f32::INFINITY,
f32::NAN,
];
#[cfg(any(feature = "rational", feature = "float"))]
pub const F64: &[f64] = &[
-f64::NAN,
f64::NEG_INFINITY,
f64::MIN,
-12.0e43,
-2.0,
-1.0 - f64::EPSILON,
-1.0,
-f64::MIN_POSITIVE,
-f64::MIN_POSITIVE * f64::EPSILON,
-0.0,
0.0,
f64::MIN_POSITIVE * f64::EPSILON,
f64::MIN_POSITIVE,
1.0,
1.0 + f64::EPSILON,
2.0,
12.0e43,
f64::MAX,
f64::INFINITY,
f64::NAN,
];
}