【发布时间】:2010-08-17 22:40:40
【问题描述】:
我正在为一种基于 LLVM 的小型编程语言编写数学函数, 我目前对如何实现常见的舍入函数 floor、ceil 和 round(甚至)感到困惑。首先是因为我没有找到这些函数的任何算法描述,其次是因为我不熟悉 LLVM 有哪些功能。四舍五入。
能够正确舍入负数是必须的,而舍入到特定精度则不是。四舍五入到整数值就可以了。简单地指出可以从 LLVM 位码中使用的任何现有实现也将起作用。
【问题讨论】:
-
不是一个真正的答案,否则我会这样做。但只是轶事信息。我发现当我处于这样的位置时,我会编写 C 代码来重现该函数,然后用 clang 或 llvm-gcc 编译它并查看生成的 llvm ir。这通常让我对应该如何进行有足够的了解。
-
这可能有点离题,但我认为在实现自己的数学库时了解和考虑仍然很有价值:为那些与浮点数学的怪癖正确工作的函数提出一种算法是不像最初看起来那么微不足道,例如可以看出here.
标签: math compiler-construction llvm primitive