Tag: division

INT_MIN%-1是否会产生未定义的行为?

gcc生成浮动代码,为以下代码引发SIGFPE : #include int x = -1; int main() { return INT_MIN % x; } 但是,我在标准中找不到此代码调用未定义或实现定义的行为的语句。 据我所知,它需要返回0.这是gcc中的错误还是我错过了标准所做的一些特殊例外?

我应该使用什么算法进行高性能大整数除法?

我将大整数编码为size_t数组。 我已经有其他操作工作(加,减,乘); 以及一位数的除法。 但是如果可能的话,我想匹配我的乘法算法的时间复杂度(目前是Toom-Cook)。 我收集有线性时间算法,用于采用我的红利的乘法逆的各种概念。 这意味着我理论上可以在与乘法相同的时间复杂度中实现除法,因为无论如何,线性时间操作通过比较是“无关紧要的”。 我的问题是,我该怎么做呢? 什么类型的乘法逆在实践中最好? Modulo 64^digitcount ? 当我将乘法逆乘以我的除数时,我可以推卸计算由于整数截断而丢弃的数据部分吗? 任何人都可以提供C或C ++伪代码或准确解释应该如何做到这一点? 或者是否存在比基于逆的方法更好的专用除法算法? 编辑:我挖出了上面提到的“反向”方法。 在“Art of Computer Programming,Volume 2:Seminumerical Algorithms”的第312页上,Knuth提供了“算法R”,它是一种高精度的倒数。 他说它的时间复杂度小于乘法的时间复杂度。 然而,将它转换为C并测试它并且不清楚将消耗多少开销内存等直到我对其进行编码是非常重要的,这将需要一段时间。 如果没有人打败我,我会发布它。