31得票6回答
浮点数加法和浮点数乘法的相对速度是什么?

几十年前,编写数值代码以避免使用乘除法并使用加减法代替是值得的。一个很好的例子是使用前向差分来评估多项式曲线而不是直接计算多项式。现代计算机架构是否已经发展到了*,/不再比+,-慢许多的程度?具体而言,我对在现代典型x86芯片上运行的编译C/C++代码感兴趣,该芯片具有广泛的内置浮点硬件,而不...

20得票2回答
Clojure中快速的复数运算

我在Clojure中实现一些基本复数运算时发现,即使有类型提示,它的速度大约比相似的Java代码慢了10倍。 比较:(defn plus [[^double x1 ^double y1] [^double x2 ^double y2]] [(+ x1 x2) (+ y1 y2)]) ...

20得票5回答
为什么在解决欧拉计划第5题时,Elixir比Ruby和Go慢?

更新:Elixir不慢,我的算法才慢。我的算法甚至没有进行苹果对苹果的比较。请查看下面Roman关于Ruby和Go等效算法的回答。还要感谢José,我的慢算法可以通过仅加前缀MIX_ENV=prod显著加速。我已经更新了问题中的数据。 原问题: 我正在使用多种语言解决Project Eule...

19得票1回答
为什么在100x100时,NumPy矩阵乘法的计算时间增加了一个数量级?

当使用numpy计算A @ a时,其中A是一个随机的N x N矩阵,a是一个具有N个随机元素的向量,在N=100时,计算时间会增加一个数量级。这是有什么特别的原因吗?相比之下,使用torch在cpu上进行相同操作的增长更为渐进。 已尝试使用python3.10、3.9和3.7生成相同行为。 ...

15得票3回答
使用16位算术计算π的级数时如何避免溢出?

我正在尝试编写一个程序,计算π的小数点后1000位或更多位。 为了练习低级编程并增加趣味性,最终程序将在一个没有乘法或除法,只能执行16位加法的8位CPU上用汇编语言编写。为了简化实现,希望仅使用16位无符号整数操作,并使用迭代算法。速度不是主要问题。快速的乘法和除法超出了本问题的范围,因此...

10得票2回答
用R解决非方程线性系统

如何用R解决非方程线性系统:A X = B? (在系统无解或有无限多个解的情况下) 示例: A=matrix(c(0,1,-2,3,5,-3,1,-2,5,-2,-1,1),3,4,T) B=matrix(c(-17,28,11),3,1,T) A [,1] [,2] [,3...

8得票2回答
在C++中检查双精度浮点数是否等于负无穷的最佳方式是什么?

我找到了这个网址:http://en.cppreference.com/w/cpp/numeric/math/isinf,但它似乎只检查正无穷或负无穷。 我想检查一个值是否恰好等于负无穷,或者换句话说,是否为log(0)。 谢谢您的回答!基于以下响应,下面是一些代码,显示可行方法。 #in...

7得票4回答
C++ 数值截断误差

抱歉,如果问题比较简单,我找不到答案。 #include <iostream> using namespace std; int main() { double a(0); double b(0.001); cout << a - 0.0 << end...

7得票4回答
如何在Clojure中使用不可变数据进行数字模拟?

我正在使用Clojure,需要运行一个小型模拟。我有一个长度为n的向量(n通常在10到100之间),保存着一些值。在每一轮模拟(总共大概1000轮),向量中的一个值会被随机更新。我想我可以通过使用Java数组并调用aset方法来实现这一点,但这会破坏函数式编程/不可变性习惯。 是否有更多函数...

7得票3回答
Python打印计算结果所需时间比执行计算本身的时间更长。

我用Python写了一个脚本,令我惊讶的是脚本的执行速度。 基本上,它会将五个20位数相乘,然后将结果的3000次方。使用timeit模块查找计算所需的时间。当我运行这个脚本时,它告诉我计算只需要3*10^-7秒。 接着,脚本生成一个文件output.txt,但直到15秒之后脚本才结束。 i...