fix/
aliases.rs

1/// Base-2 types.
2pub mod binary {
3    use typenum::U2;
4
5    use crate::Fix;
6
7    pub type UFix8<Exp> = Fix<u8, U2, Exp>;
8    pub type UFix16<Exp> = Fix<u16, U2, Exp>;
9    pub type UFix32<Exp> = Fix<u32, U2, Exp>;
10    pub type UFix64<Exp> = Fix<u64, U2, Exp>;
11    pub type UFixSize<Exp> = Fix<usize, U2, Exp>;
12
13    #[cfg(feature = "i128")]
14    pub type UFix128<Exp> = Fix<u128, U2, Exp>;
15
16    pub type IFix8<Exp> = Fix<i8, U2, Exp>;
17    pub type IFix16<Exp> = Fix<i16, U2, Exp>;
18    pub type IFix32<Exp> = Fix<i32, U2, Exp>;
19    pub type IFix64<Exp> = Fix<i64, U2, Exp>;
20    pub type IFixSize<Exp> = Fix<isize, U2, Exp>;
21
22    #[cfg(feature = "i128")]
23    pub type IFix128<Exp> = Fix<i128, U2, Exp>;
24}
25
26/// Base-10 types.
27pub mod decimal {
28    use typenum::U10;
29
30    use crate::Fix;
31
32    pub type UFix8<Exp> = Fix<u8, U10, Exp>;
33    pub type UFix16<Exp> = Fix<u16, U10, Exp>;
34    pub type UFix32<Exp> = Fix<u32, U10, Exp>;
35    pub type UFix64<Exp> = Fix<u64, U10, Exp>;
36    pub type UFixSize<Exp> = Fix<usize, U10, Exp>;
37
38    #[cfg(feature = "i128")]
39    pub type UFix128<Exp> = Fix<u128, U10, Exp>;
40
41    pub type IFix8<Exp> = Fix<i8, U10, Exp>;
42    pub type IFix16<Exp> = Fix<i16, U10, Exp>;
43    pub type IFix32<Exp> = Fix<i32, U10, Exp>;
44    pub type IFix64<Exp> = Fix<i64, U10, Exp>;
45    pub type IFixSize<Exp> = Fix<isize, U10, Exp>;
46
47    #[cfg(feature = "i128")]
48    pub type IFix128<Exp> = Fix<i128, U10, Exp>;
49}
50
51/// SI prefixes.
52pub mod si {
53    use typenum::{N1, N12, N15, N18, N2, N21, N24, N3, N6, N9};
54    use typenum::{P1, P12, P15, P18, P2, P21, P24, P3, P6, P9};
55    use typenum::{U10, Z0};
56
57    use crate::Fix;
58
59    /** 10<sup>-24</sup> */
60    pub type Yocto<Bits> = Fix<Bits, U10, N24>;
61    /** 10<sup>-21</sup> */
62    pub type Zepto<Bits> = Fix<Bits, U10, N21>;
63    /** 10<sup>-18</sup> */
64    pub type Atto<Bits> = Fix<Bits, U10, N18>;
65    /** 10<sup>-15</sup> */
66    pub type Femto<Bits> = Fix<Bits, U10, N15>;
67    /** 10<sup>-12</sup> */
68    pub type Pico<Bits> = Fix<Bits, U10, N12>;
69    /** 10<sup>-9</sup> */
70    pub type Nano<Bits> = Fix<Bits, U10, N9>;
71    /** 10<sup>-6</sup> */
72    pub type Micro<Bits> = Fix<Bits, U10, N6>;
73    /** 10<sup>-3</sup> */
74    pub type Milli<Bits> = Fix<Bits, U10, N3>;
75    /** 10<sup>-2</sup> */
76    pub type Centi<Bits> = Fix<Bits, U10, N2>;
77    /** 10<sup>-1</sup> */
78    pub type Deci<Bits> = Fix<Bits, U10, N1>;
79
80    /** 10<sup>0</sup> */
81    pub type Unit<Bits> = Fix<Bits, U10, Z0>;
82
83    /** 10<sup>1</sup> */
84    pub type Deca<Bits> = Fix<Bits, U10, P1>;
85    /** 10<sup>2</sup> */
86    pub type Hecto<Bits> = Fix<Bits, U10, P2>;
87    /** 10<sup>3</sup> */
88    pub type Kilo<Bits> = Fix<Bits, U10, P3>;
89    /** 10<sup>6</sup> */
90    pub type Mega<Bits> = Fix<Bits, U10, P6>;
91    /** 10<sup>9</sup> */
92    pub type Giga<Bits> = Fix<Bits, U10, P9>;
93    /** 10<sup>12</sup> */
94    pub type Tera<Bits> = Fix<Bits, U10, P12>;
95    /** 10<sup>15</sup> */
96    pub type Peta<Bits> = Fix<Bits, U10, P15>;
97    /** 10<sup>18</sup> */
98    pub type Exa<Bits> = Fix<Bits, U10, P18>;
99    /** 10<sup>21</sup> */
100    pub type Zeta<Bits> = Fix<Bits, U10, P21>;
101    /** 10<sup>24</sup> */
102    pub type Yotta<Bits> = Fix<Bits, U10, P24>;
103}
104
105/// IEC prefixes.
106pub mod iec {
107    use typenum::{P10, P20, P30, P40, P50, P60, P70, P80};
108    use typenum::{U2, Z0};
109
110    use crate::Fix;
111
112    /** 2<sup>0</sup> */
113    pub type Unit<Bits> = Fix<Bits, U2, Z0>;
114
115    /** 2<sup>10</sup> */
116    pub type Kibi<Bits> = Fix<Bits, U2, P10>;
117    /** 2<sup>20</sup> */
118    pub type Mebi<Bits> = Fix<Bits, U2, P20>;
119    /** 2<sup>30</sup> */
120    pub type Gibi<Bits> = Fix<Bits, U2, P30>;
121    /** 2<sup>40</sup> */
122    pub type Tebi<Bits> = Fix<Bits, U2, P40>;
123    /** 2<sup>50</sup> */
124    pub type Pebi<Bits> = Fix<Bits, U2, P50>;
125    /** 2<sup>60</sup> */
126    pub type Exbi<Bits> = Fix<Bits, U2, P60>;
127    /** 2<sup>70</sup> */
128    pub type Zebi<Bits> = Fix<Bits, U2, P70>;
129    /** 2<sup>80</sup> */
130    pub type Yobi<Bits> = Fix<Bits, U2, P80>;
131}