我想了解從http://gruntthepeon.free.fr/ssemath/sse_mathfun.h或exp256_ps()
從http://software-lisc.fbk.eu/avx_mathfun/avx_mathfun.hexp_ps()
的實現。
我明白幾乎所有的計算,除了如何確定恆定cephes_exp_C2
。它似乎增加了計算的準確性。如果將其從計算中移除,則結果函數顯着更快且精確度稍低(對於+/- 10左右的值,相對誤差仍低於1%)。我在其他數字庫中發現了這樣的係數,但沒有更詳細的解釋。exp()函數的數值計算中的係數
-1
A
回答
2
經過Cephes來源搜索後,我認爲這是Pommier的翻譯錯誤。這不是我第一次在Pommier的代碼中看到錯誤。我建議在Gromacs中使用數學庫。
從exp.c
在Cephe的,
static double C1 = 6.93145751953125E-1;
static double C2 = 1.42860682030941723212E-6;
....
px = floor(LOG2E * x + 0.5);
n = px;
x -= px * C1;
x -= px * C2;
從POMMIER,
_PS_CONST(cephes_exp_C1, 0.693359375);
_PS_CONST(cephes_exp_C2, -2.12194440e-4); <-- Wrong value
....
//
// fx = LOG2E * x + 0.5
//
fx = _mm_mul_ps(x, *(v4sf*)_ps_cephes_LOG2EF);
fx = _mm_add_ps(fx, *(v4sf*)_ps_0p5);
//
// fx = floor(fx)
//
emm0 = _mm_cvttps_epi32(fx);
tmp = _mm_cvtepi32_ps(emm0);
v4sf mask = _mm_cmpgt_ps(tmp, fx);
mask = _mm_and_ps(mask, one);
fx = _mm_sub_ps(tmp, mask);
//
// x -= fx * C1;
// x -= fx * C2; (Using z allows for better ILP in this step)
//
tmp = _mm_mul_ps(fx, *(v4sf*)_ps_cephes_exp_C1);
v4sf z = _mm_mul_ps(fx, *(v4sf*)_ps_cephes_exp_C2);
x = _mm_sub_ps(x, tmp);
x = _mm_sub_ps(x, z);
+0
感謝鏈接到cephes庫,這對於研究基本數學函數的實現來說好得多。但我仍然不明白C2有什麼好處。 (2)= e ^(g + n loge(2))=> x = g + n loge(2) )。 n用floor/round函數計算,x - = px * C1等價於g = x - n loge(2)(C1 == loge(2))。用x - = px * C2計算什麼?它是否與浮點數有關,以提高精度? – faramir
相關問題
- 1. 不良的exp計算函數?
- 2. 函數計算postgresql中的總計數
- 3. 計算傳遞函數係數
- 4. jquery計算輸入函數中的值
- 5. 計算係數
- 6. 函數計算CRC16(Modbus)值
- 7. 從函數計算列值
- 8. 使用C++的exp函數
- 9. 如何計算總exp exp
- 10. 如何計算單元格中函數句柄總和的exp的積分
- 11. 計算函數的大θ值
- 12. 使用計算函數的值在AGDA
- 13. 列表值的函數計算
- 14. 如何計算遞歸函數的值?
- 15. 計算函數值的總和
- 16. 計算Tanimoto係數
- 17. 數值計算MATLAB中的導數?
- 18. 從另一個函數計算平均值的Python函數
- 19. 如何計算遞歸函數中值的重複次數?
- 20. 在Java中計算數學函數的值
- 21. Mysql的計算函數的參數
- 22. Python函數參數計算
- 23. 計算句子的函數
- 24. 計算變化的函數
- 25. 函數的大O計算
- 26. 如何創建返回計算值的公共計算函數?
- 27. Matlab,exp函數溢出
- 28. r函數來計算列表中的值的均值
- 29. CSS計算「函數」
- 30. AVR函數計算
碼?嘗試?例子? –
我想這個常數是'exp(C2)',其中'C2'是其他常數。你真的瞭解其他一切嗎?例如。什麼是'cephes_exp_p0'? – user463035818
不僅你不顯示任何[mcve],而且還會將兩個鏈接轉儲到一堆文本中,甚至沒有**特定的**問題。這不是它的工作原理。在這裏3年後,你真的應該知道[問]! – Olaf