gpt4 book ai didi

具有明确舍入策略的整数除法 C++ 函数

转载 作者:可可西里 更新时间:2023-11-01 17:39:32 25 4
gpt4 key购买 nike

我想要 C++ 中的某些东西,让我可以使用指定的舍入行为进行高效的整数除法,如下所示:

div_down(-4,3)        ==> -2
div_up(4,3) ==> 2
div_to_zero(-4,3) ==> -1
div_to_nearest(5,3) ==> 2

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

这个存在吗?

如果不是,有什么好的制作方法?我可以想到一些可能的方法:

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

最佳答案

这就是我到目前为止所得到的,前提条件 d > 0。它们似乎都有效,但它们可以简化吗?

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++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com