標題猶豫了很久,本想以C語言數值分析 cmath / math.h 實作提要紀錄 II 為標題,
不過這篇真正的重點,筆者本意是較偏向以 ieee754 方式分析 library function,
只是以 log nature log, ln 為例做為主要分析對象
所謂的加速math librar
- 7月 18 週三 201201:46
[C語言數值分析] ieee754 欄位分析加速 math library
- 4月 17 週二 201205:20
[C語言數值分析] cmath / math.h 實作提要紀錄
二年前瘋狂研究 math.h 裡之各 function 如何實作,
一般見得了人之 function 為求速度,都直接與 IEEE754 format 做為操作基準,
這裡提的是見不了人的,也就是速度上有所懸殊之方式
猜我大概也沒什麼時間精力完成這系列文章之所有實作,留個筆記底,
避免日後 文末註
- 3月 28 週三 201213:51
[C語言數值分析] cmath / math.h - log (nature log)
nature log wiki 網頁,相關的函式還有 log10
求 nature log 可以用積分法,如 lnx = 1/t dt , t E 1, x,
但這並不實際,速度反而慢簡單的方式是用下列級數
lnx = x-1 - x-12/2 x-13/3 -..., for 0
但這級數收斂
- 11月 30 週三 201123:00
[C語言數值分析] cmath / math.h - sin.cos
參考網址
1. wiki - Trigonometric_functions
2. wiki - 三角恆等式
3. glibc - sin_S.c
4. netlib - k_sin.c
5.polygonal lab. - Fast and accurate sine / cosine appro
- 11月 22 週二 201104:42
[C語言數值分析] cmath / math.h - exp
使用公式
expx = 1 x x2 / 2! x3 / 3! ... xn / n!
不要用定義式 : expx = 1x/nn , n-0
誤差沒辦法控制
誤差作收斂條件
純粹照著公式跑
double xExpconst double x, const double eps
doub
- 11月 21 週一 201123:26
[C語言數值分析] cmath / math.h - fastpower
傳統作法
只考慮整數情況一般在求 power 時大多這麼做
double powerdouble base, int exponment double rst=1.0; int i; ifexponment forexponment=-exponment, i=0; iexponment;
- 4月 29 週五 201115:57
[C] Sqrt
吾人本身一陣最常用到的二個運算: Sqrt, 1/Sqrt,於是會找些奇淫怪技想辦法加速
事實上在做 Sqrt 加速時,實測之結果效能都沒 VC 開 O2 來得快,即使只求整數之 sqrt 之演算法效果也沒很好,所幸在 codeproject 看到有人已實測,該程式碼共寫了 14 份 sqrt,有興
