Skip to main content

dashu/
lib.rs

1//! The meta crate that re-exports all `dashu` numeric types.
2
3#![cfg_attr(not(feature = "std"), no_std)]
4#![doc(
5    html_logo_url = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiIGZpbGw9IiNGNUYxRTYiLz48Y2lyY2xlIGN4PSIyNTAiIGN5PSIxNzAiIHI9IjEzMCIgZmlsbD0iI0YyRTVDOCIgb3BhY2l0eT0iMC43Ii8+PGNpcmNsZSBjeD0iMjUwIiBjeT0iMTgwIiByPSIxMDAiIGZpbGw9IiNFRURGQTkiIG9wYWNpdHk9IjAuNSIvPjxwYXRoIGQ9Ik0yNTAgMTE1QzMxMCAxMTUgMzU1IDE1MCAzNjUgMTk1QzQwNSAyMDUgNDQwIDI0NSA0NDAgMjk1QzQ0MCAzNDUgMzk1IDM3MCAzMzUgMzcwTDE2NSAzNzBDMTA1IDM3MCA2MCAzNDUgNjAgMjk1QzYwIDI0NSA5NSAyMDUgMTM1IDE5NUMxNDUgMTUwIDE5MCAxMTUgMjUwIDExNVoiIGZpbGw9IiMzRDVBNDUiLz48ZyBzdHJva2U9IiMzRDVBNDUiIHN0cm9rZS13aWR0aD0iNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJub25lIj48bGluZSB4MT0iMTIwIiB5MT0iMzYwIiB4Mj0iMTIwIiB5Mj0iNDIwIi8+PGxpbmUgeDE9IjE1MCIgeTE9IjM3MCIgeDI9IjE1MCIgeTI9IjQ1MCIvPjxsaW5lIHgxPSIxNzUiIHkxPSIzNzAiIHgyPSIxNzUiIHkyPSI0MjUiLz48bGluZSB4MT0iMjAwIiB5MT0iMzcwIiB4Mj0iMjAwIiB5Mj0iNDM1Ii8+PGxpbmUgeDE9IjMwMCIgeTE9IjM3MCIgeDI9IjMwMCIgeTI9IjQzNSIvPjxsaW5lIHgxPSIzMjUiIHkxPSIzNzAiIHgyPSIzMjUiIHkyPSI0MjUiLz48bGluZSB4MT0iMzUwIiB5MT0iMzcwIiB4Mj0iMzUwIiB5Mj0iNDUwIi8+PGxpbmUgeDE9IjM4MCIgeTE9IjM2MCIgeDI9IjM4MCIgeTI9IjQyMCIvPjwvZz48ZyBzdHJva2U9IiNDODVBM0UiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJub25lIj48cGF0aCBkPSJNMjMyIDQzNUwyMzIgMzQwUTIzMCAzMTAgMjEwIDI5NUwxOTggMjg3Ii8+PHBhdGggZD0iTTI2OCA0MzVMMjY4IDM0MFEyNzAgMzEwIDI5MCAyOTVMMzAyIDI4NyIvPjxsaW5lIHgxPSIyMTgiIHkxPSI0MzUiIHgyPSIyODIiIHkyPSI0MzUiLz48L2c+PC9zdmc+Cg=="
6)]
7#![deny(missing_docs)]
8#![deny(clippy::dbg_macro)]
9#![deny(clippy::undocumented_unsafe_blocks)]
10#![deny(clippy::let_underscore_must_use)]
11
12/// Defintions of common traits
13pub mod base {
14    pub use dashu_base::*;
15}
16
17/// Arbitrary precision integer number
18pub mod integer {
19    pub use dashu_int::*;
20}
21
22/// Arbitrary precision floating point number
23pub mod float {
24    pub use dashu_float::*;
25}
26
27/// Arbitrary precision rational number
28pub mod rational {
29    pub use dashu_ratio::*;
30}
31
32/// Arbitrary precision complex number
33pub mod complex {
34    pub use dashu_cmplx::*;
35}
36
37#[doc(hidden)]
38pub use dashu_macros as __dashu_macros;
39
40#[macro_export]
41#[doc = include_str!("macro-docs/ubig.md")]
42macro_rules! ubig {
43    ($($t:tt)+) => {
44        $crate::__dashu_macros::ubig_embedded!($($t)+)
45    }
46}
47
48#[macro_export]
49#[rustversion::since(1.64)]
50#[doc = include_str!("macro-docs/static_ubig.md")]
51macro_rules! static_ubig {
52    ($($t:tt)+) => {
53        $crate::__dashu_macros::static_ubig_embedded!($($t)+)
54    }
55}
56
57#[macro_export]
58#[doc = include_str!("macro-docs/ibig.md")]
59macro_rules! ibig {
60    ($($t:tt)+) => {
61        $crate::__dashu_macros::ibig_embedded!($($t)+)
62    }
63}
64
65#[macro_export]
66#[rustversion::since(1.64)]
67#[doc = include_str!("macro-docs/static_ibig.md")]
68macro_rules! static_ibig {
69    ($($t:tt)+) => {
70        $crate::__dashu_macros::static_ibig_embedded!($($t)+)
71    }
72}
73
74#[macro_export]
75#[doc = include_str!("macro-docs/fbig.md")]
76macro_rules! fbig {
77    ($($t:tt)+) => {
78        $crate::__dashu_macros::fbig_embedded!($($t)+)
79    }
80}
81
82#[macro_export]
83#[rustversion::since(1.64)]
84#[doc = include_str!("macro-docs/static_fbig.md")]
85macro_rules! static_fbig {
86    ($($t:tt)+) => {
87        $crate::__dashu_macros::static_fbig_embedded!($($t)+)
88    }
89}
90
91#[macro_export]
92#[doc = include_str!("macro-docs/dbig.md")]
93macro_rules! dbig {
94    ($($t:tt)+) => {
95        $crate::__dashu_macros::dbig_embedded!($($t)+)
96    }
97}
98
99#[macro_export]
100#[rustversion::since(1.64)]
101#[doc = include_str!("macro-docs/static_dbig.md")]
102macro_rules! static_dbig {
103    ($($t:tt)+) => {
104        $crate::__dashu_macros::static_dbig_embedded!($($t)+)
105    }
106}
107
108#[macro_export]
109#[doc = include_str!("macro-docs/rbig.md")]
110macro_rules! rbig {
111    ($($t:tt)+) => {
112        $crate::__dashu_macros::rbig_embedded!($($t)+)
113    }
114}
115
116#[macro_export]
117#[rustversion::since(1.64)]
118#[doc = include_str!("macro-docs/static_rbig.md")]
119macro_rules! static_rbig {
120    ($($t:tt)+) => {
121        $crate::__dashu_macros::static_rbig_embedded!($($t)+)
122    }
123}
124
125#[macro_export]
126#[doc = include_str!("macro-docs/cbig.md")]
127macro_rules! cbig {
128    ($($t:tt)+) => {
129        $crate::__dashu_macros::cbig_embedded!($($t)+)
130    }
131}
132
133#[macro_export]
134#[rustversion::since(1.64)]
135#[doc = include_str!("macro-docs/static_cbig.md")]
136macro_rules! static_cbig {
137    ($($t:tt)+) => {
138        $crate::__dashu_macros::static_cbig_embedded!($($t)+)
139    }
140}
141
142/// A verbose alias for [UBig][dashu_int::UBig]
143pub type Natural = dashu_int::UBig;
144
145/// A verbose alias for [IBig][dashu_int::IBig]
146pub type Integer = dashu_int::IBig;
147
148/// A verbose alias for [FBig][dashu_float::FBig] (base 2, rounding towards zero)
149pub type Real = dashu_float::FBig;
150
151/// A verbose alias for [CachedFBig][dashu_float::CachedFBig] (base 2, rounding towards zero) — the
152/// cached, faster variant of [`Real`] for transcendental-heavy code. `!Send + !Sync`.
153pub type FastReal = dashu_float::CachedFBig;
154
155/// A verbose alias for [DBig][dashu_float::DBig] (base 10, rounding to the nearest)
156pub type Decimal = dashu_float::DBig;
157
158/// A verbose alias for the base-10 [CachedFBig][dashu_float::CachedFBig] (rounding to nearest) — the
159/// cached, faster variant of [`Decimal`]. `!Send + !Sync`.
160pub type FastDecimal = dashu_float::CachedFBig<dashu_float::round::mode::HalfAway, 10>;
161
162/// A verbose alias for [RBig][dashu_ratio::RBig]
163pub type Rational = dashu_ratio::RBig;
164
165/// A verbose alias for [CBig][dashu_cmplx::CBig] (base 2, rounding towards zero)
166pub type Complex = dashu_cmplx::CBig;
167
168/// A verbose alias for [CachedCBig][dashu_cmplx::CachedCBig] (base 2, rounding towards zero) — the
169/// cached, faster variant of [`Complex`] for transcendental-heavy code. `!Send + !Sync`.
170pub type FastComplex = dashu_cmplx::CachedCBig;