#const #soft #float-point

无 std const_soft_float

常量软浮点

5 个版本

0.1.4 2023 年 7 月 3 日
0.1.3 2023 年 4 月 18 日
0.1.2 2023 年 2 月 18 日
0.1.1 2023 年 2 月 7 日
0.1.0 2023 年 2 月 7 日

#31 in 无标准库

Download history 13359/week @ 2024-03-14 13938/week @ 2024-03-21 14370/week @ 2024-03-28 14344/week @ 2024-04-04 13993/week @ 2024-04-11 14918/week @ 2024-04-18 12199/week @ 2024-04-25 13104/week @ 2024-05-02 10654/week @ 2024-05-09 11442/week @ 2024-05-16 12775/week @ 2024-05-23 13731/week @ 2024-05-30 13469/week @ 2024-06-06 13102/week @ 2024-06-13 11394/week @ 2024-06-20 10467/week @ 2024-06-27

50,509 每月下载量
用于 481 个 crates(4 个直接使用)

MIT/Apache

165KB
3K SLoC

Rust 常量上下文中的浮点数

浮点代码来自 compiler_builtins = "0.1.94"libm = "0.2.6",并已重写以用于常量上下文。

对所有操作进行模糊测试,以相关参考代码进行测试,以确保移植的正确性,但如果存在任何不一致的行为,请提出问题。

导出的软浮点类型

  • SoftF32
  • SoftF64

功能

  • no_std - 默认启用
  • const_trait_impl - 用于常量操作符实现
  • const_mut_refs - 用于具有赋值实现的常量操作符

stable

const fn const_f32_add(a: f32, b: f32) -> f32 {
    SoftF32(a).add(SoftF32(b)).to_f32()
}

nightly 上使用 const_trait_impl

const fn const_f32_add(a: f32, b: f32) -> f32 {
    (SoftF32(a) + SoftF32(b)).to_f32()
}

nightly 上使用 const_mut_refs

const fn const_f32_add(a: f32, b: f32) -> f32 {
    let mut x = SoftF32(a);
    x += SoftF32(b);
    x.to_f32()
}

实现 const 函数

  • from_(f32/f64)
  • to_(f32/f64)
  • from_bits
  • to_bits
  • add
  • sub
  • mul
  • div
  • cmp
  • neg
  • sqrt
  • powi
  • copysign
  • trunc
  • round
  • floor
  • sin
  • cos

无运行时依赖