Questions tagged «computer-arithmetic»

2
为什么除法比其他算术运算那么复杂?
我最近遇到一种情况,我需要在一个缺少整数的运算符(ARM Cortex-A8)上进行整数除法运算。在尝试研究为什么必须这样做时,我发现在几乎所有整数(或定点)架构上,除法运算比加法,减法或乘法要花费更多的周期。为什么会这样呢?它不是像其他所有东西一样用两层AND-OR逻辑表示的吗?

4
在浮点算术中,为什么数字不精确度是通过将一个小项与一个大项之差相加而导致的?
我一直在阅读Allen和Tildesley撰写的《液体的计算机模拟》一书。从第71页开始,作者讨论了用于将牛顿运动方程式集成到分子动力学(MD)模拟中的各种算法。从第78页开始,作者讨论了Verlet算法,这也许是MD中的规范集成算法。他们声明: 也许最广泛使用的积分运动方程的方法是Verlet(1967)最初采用并归因于Stormer(Gear 1971)的方法。此方法的第二阶方程的直接溶液。该方法是基于志愿服务岗位- [R (吨),加速度一个(吨),以及位置- [R (吨- δ 吨)从前面的步骤。推进位置的等式如下:米一世[R¨一世= f一世mir¨i=fim_i \ddot{\textbf{r}}_i = \textbf{f}_i[R (吨)r(t)\textbf{r}(t)a(吨)a(t)\textbf{a}(t)[R(吨-δŤ )r(t−δt)\textbf{r}(t - \delta t) r(t+δ吨)= 2 - [R (吨)- [R (吨- δt )+ δŤ2一个(t)。(3.14)(3.14)r(t+δt)=2r(t)−r(t−δt)+δt2a(t).\tag{3.14}\textbf{r}(t + \delta t) = 2\textbf{r}(t) - \textbf{r}(t - \delta t) + \delta t^2 \textbf{a}(t). 关于eqn(3.14),有几点要注意。可以看出,速度根本没有出现。通过添加关于泰勒展开式获得的方程式已消除了它们:[R (吨)r(t)\textbf{r}(t) r(t+δt )= r(t )+ δ吨v(吨)+ (1 …

4
确定性模型的运行会产生小的,不可预测的结果
我有一个用C编写的相当大的模型(约5000行)。它是一个串行程序,在任何地方都没有随机数的产生。它将FFTW库用于使用FFT的函数-我不知道FFTW实现的详细信息,但是我假设其中的函数也是确定性的(如果我出错,请更正我)。 我无法理解的问题是,在同一台计算机(相同的编译器,相同的库)上运行相同的结果在结果上存在很小的差异。 我使用双精度变量,并将结果输出到变量中value,例如,我发出: fprintf(outFID, "%.15e\n", value);或 fwrite(&value, 1, sizeof(double), outFID); 而且我会不断得到诸如以下的差异: 2.07843469652206 4 e-16与2.07843469652206 3 e-16 我花了很多时间试图找出原因。最初我以为我的一个存储芯片已经坏了,所以我下令更换了它们,无济于事。随后,我还尝试在同事的Linux机器上运行我的代码,并且得到了相同性质的差异。 是什么原因造成的?现在这是一个小问题,但我想知道这是否是“冰山一角”(一个严重的问题)。 我以为我会在这里发布而不是StackOverflow,以防有人使用数值模型。如果有人可以阐明这一点,我将非常有义务。 评论后续: Christian Clason和Vikram:首先,感谢您对我的问题的关注。您链接的文章建议:1.舍入错误限制了准确性,并且2.不同的代码(例如引入看似无害的打印语句)可能会影响机器的结果。我要澄清的是,我没有比较效果fwrite和fprintf功能。我正在使用一个或另一个。特别是,两次运行都使用相同的可执行文件。我只是在说明是否使用fprintfOR 发生问题fwrite。 因此,代码路径(和可执行文件)相同,硬件也相同。在所有这些外部因素保持不变的情况下,随机性从何而来呢?我怀疑由于错误的内存无法正确保留位而发生了位翻转,这就是为什么我更换了内存芯片的原因,但是我证实这并不是这里的问题,我证实并指出。我的程序在一次运行中输出了数千个这种双精度数字,并且总是有随机的少数具有随机的位翻转。 跟帖基督教克拉森的第一个评论:为什么是机器精度内一样的0?双精度数的最小正数是2.22e-308,那不等于0吗?我的程序输出10 ^ -16范围(从1e-15到8e-17)的数千个值,并且我们一直在研究项目中看到有意义的变化,所以我希望我们不要一直在研究荒谬的东西。数字。2 ⋅ 10− 162⋅10-162\cdot 10^{-16} 后续活动2: 这是模型输出的时间序列的图,有助于注释中的分支讨论。

3
,或计算速度更快?
其计算速度更快,一个baba^b或日志一个Cloga⁡c\log_a c或C√bcb\sqrt[b]{c}?一个aa,bbb和Ccc是正实数,且b > 1b>1b>1。 您将在比较中使用哪种算法?它们的复杂性是什么? 例如,当Ç ≡ 一bc≡abc \equiv a^b或Ç ≈ 一bc≈abc \approx a^b 这个问题的灵感来自对数学堆栈交换问题的评论,斯特林近似于阶乘的目的是什么?。特别是mjqxxxx,Thomas Andrews和我留下的评论。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.