我刚刚对从 1 到 50 的数字进行了循环,并打印出 WebGL 对 exp(float) 的计算。我正在使用高精度,这些来自 WebGL2。
precision highp float;
varying vec2 TexCoords;
uniform highp sampler2D A;
void main() {
float result = exp(texture2D(A, TexCoords).r);
gl_FragColor.r = result;
}
我在 javascript 中运行了同样的东西并比较了结果。聪明的东西非常小,但很快就会增加非常大的数字。
所以我还比较了 javascript 和 python (numpy) 的结果,它们非常具有可比性。
以下是 Math.abs(diff) 中的纬度数:
Diffs', '8.25484005595456e-8, 3.700182968913168e-7, 0.0000037810978241736848, 0.0000055018942362039525, 0.000003128868712565236, ... 12720537652, 21883728284, 30738633104, 20683268800, 324543434496, 2989835245824, 6539001840640, 12329169293312, 110431739568128, 262788127178752, 615023709454336, 1369528883085312, 3028196912005120
这些是 javascript 和 pyton 之间的最后几个差异:
3.0517578125e-05 6.103515625e-05 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 32.0 0.0 0.0 ... 0.0 0.0 0.0 262144.0
这些是 WebGL 程序的前几个数字:
'来自 WebGL 的结果', '2.7182817459106445,7.3890557289123535,20.085533142089844,
并来自javascript:
'来自 javascript 的结果', '2.718281828459045,7.38905609893065,20.085536923187668,