C用于整数除法,具有明确定义的舍入策略

C用于整数除法,具有明确定义的舍入策略,第1张

概述我想要一些C语言,让我用指定的舍入行为进行有效的整数除法,如下所示: div_down(-4,3) ==> -2div_up(4,3) ==> 2div_to_zero(-4,3) ==> -1div_to_nearest(5,3) ==> 2 我希望它能够在编译时检测目标机器的行为并生成适当的最佳实现.类似于模数的东西也会很好,在编译时抽象出负 我想要一些C语言,让我用指定的舍入行为进行有效的整数除法,如下所示:
div_down(-4,3)        ==> -2div_up(4,3)           ==> 2div_to_zero(-4,3)     ==> -1div_to_nearest(5,3)   ==> 2

我希望它能够在编译时检测目标机器的行为并生成适当的最佳实现.类似于模数的东西也会很好,在编译时抽象出负 *** 作数的未定义行为.

这存在吗?

如果没有,有什么好办法呢?我可以想到几种可能的方法:

>尝试将它们实现为静态优化的单个表达式
>使用常量表达式来检测目标行为,并从多个实现中进行选择,使用模板进行选择(但具体如何?)

解决方法 这是我到目前为止所得到的,前提条件d>它们似乎都有效,但它们可以简化吗?
int div_down(int n,int d) {  if (n < 0) {    return -((d - n - 1) / d);  } else {    return n / d;  }}int div_up(int n,int d) {  if (n < 0) {    return -(-n / d);  } else {    return (n + d - 1) / d;  }}int div_to_zero(int n,int d) {  return n / d;}int div_to_nearest(int n,int d) {  if (n < 0) {    return (n - d/2 + 1) / d;  } else {    return (n + d/2) / d;  }}
总结

以上是内存溢出为你收集整理的C用于整数除法,具有明确定义的舍入策略全部内容,希望文章能够帮你解决C用于整数除法,具有明确定义的舍入策略所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1241266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存