3个版本
新版本 0.1.2 | 2024年8月13日 |
---|---|
0.1.1 | 2024年4月28日 |
0.1.0 | 2023年9月28日 |
547 在 数学 中排名
每月 155 次下载
20KB
372 代码行
q-num
这个库提供了一个在编译时评估的define_q_num!
过程宏,用于定义有符号/无符号二进制定点数类型。它使用ARM风格的Q表示法:Qm.n
(有符号)或UQm.n
(无符号),其中
- m是整数位数量,
- n是小数位数量。
内部,宏选择可以容纳m + n位的最窄原始整数类型,最高可达u64
(无符号)和i64
(有符号)。更详细的内部讨论如下。
Q数值
Q数值的值是存储的数字(有n + m位)与一个固定分母(等于2 ^ n)的比值。
例如,使用UQ3.2规范,位模式0b10111表示值为5.75。考虑到分母是2 ^ 2 = 4,有两种方式来理解这一点
- 0b10111 / 4 == 23 / 4 == 5.75
- 0b101 + 0b11 / 4 == 5 + 3/4 == 5.75
宏使用示例
这里有一个示例
define_q_num!(MyQ, Q6.2);
let a = MyQ::from(13.75);
let b = MyQ::from(-2.25);
let c = a + b; // 11.5
依赖关系
~255–700KB
~17K SLoC