[问题] 数学函式的实作

楼主: SMpeng (peng)   2015-01-14 22:17:10
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
gcc
补充说明(Supplement):
其实应该算闲聊XD
这学期学了C,大致上还OK,不过刚刚突然有点好奇,在标准程式库的math.h当中,
那些用到double的函数大致上是用什么样的方法实作的阿?
比方说
double pow(double base, double exponent);
double log(double x);
double exp(double x);
如果想要自己写一个这样的函式是不是有点困难?
作者: tj386 (最爱欧阳三姊妹♥♥♥)   2015-01-14 22:27:00
可以参考glibc都是open source,有兴趣可以慢慢trace
作者: EdisonX (卡卡兽)   2015-01-14 22:39:00
glibc 的 math.h 几乎看不到 source, 比较推 fdlibmhttp://www.netlib.org/fdlibm/另在 c 里的 math.h , 没记错的话有些是直接呼叫组语做的至于原理的话-都是数值分析,而且方法不只一种。像求 sin我所知的方法大概就三种了。想自己做玩具级(速度慢)的话http://edisonx.pixnet.net/blog/post/88987513 参考下
楼主: SMpeng (peng)   2015-01-14 22:45:00
太感谢了! 来研究看看XD
作者: suhorng ( )   2015-01-14 22:55:00
像是..x86 有 fsin, fcos 组语指令XD
作者: LPH66 (-6.2598534e+18f)   2015-01-15 00:04:00
还有一个 fsincos 可以一次做完, 补一个除就变 tan 了
作者: hidog (.....)   2015-01-15 16:06:00
有学过微积分就能实做了 剩下是精确度还有效率问题
作者: wenyonba (射后不理很XX啊!!!!)   2015-01-15 16:14:00
楼上你也跑来这闲晃啊 XD
作者: hidog (.....)   2015-01-15 16:17:00
因为是工程师阿XD
作者: Killercat (杀人猫™)   2015-01-15 17:24:00
这边除了新手 学生以外就只剩下工程师跟攻城兽了吧...
作者: amozartea (自行车单)   2015-01-16 11:05:00
exp用泰勒展式做就好了
作者: tubbysong (song)   2015-01-16 20:57:00
Double 是双精倍浮点数,被用表现“自然数”计算

Links booklink

Contact Us: admin [ a t ] ucptt.com