我正在使用Jama矩阵来执行SVD操作.我有几个关于表现的问题.
我并不担心这么多的准确性,我认为double比Float更准确,对吗?如果我使用浮动而不是双倍,它会提高多少性能并降低精度?
在Jama矩阵中,它使用了一个它调用很多的函数,它使用了double和Math.abs函数,这需要大量的Heap和CPU.如果我将其更改为double并删除Math.abs,它会对性能产生多大影响并导致准确性?
这是Jama数学函数:
public static double hypot(double a, double b) {
double r;
if (Math.abs(a) > Math.abs(b)) {
r = b/a;
r = Math.abs(a)*Math.sqrt(1+r*r);
} else if (b != 0) {
r = a/b;
r = Math.abs(b)*Math.sqrt(1+r*r);
} else {
r = 0.0;
}
return r;
}
Run Code Online (Sandbox Code Playgroud)
这是我想用这个功能做的事情
public static float hypot(float a, float b) {
float r;
if (a > b) {
r = b/a;
r = (float) (a*Math.sqrt(1+r*r));
} else if (b != 0) { …Run Code Online (Sandbox Code Playgroud)