我只是想知道在cmath中实现sine,cosine和sqrt等函数的位置和方式。我知道cmath包含math.h和math.h有很多东西,但是这些函数背后的实际“数学”在哪里?
编辑:我对是否有与数学函数相关的有形源代码感兴趣,或者是那些我将要去的最低标题。
答案 0 :(得分:3)
这些操作的数学几乎肯定不是用C代码完成的,至少对x86架构来说是这样。它是在芯片上完成的。自从integration of the 8087 math co-processor into the 486以来,x86系列已经在芯片上发出了正弦,余弦和平方根等指令。 This page有一个很好的综述。
修改强>
在How does C compute sin() and other math functions?和How do Trigonometric functions work?找到了可能的重复项。
答案 1 :(得分:1)
这些函数可能只在标题中声明,无论是<cmath>
还是<math.h>
。实现通常在库函数中,在完成实际计算之前必须处理各种奇怪的东西。有关实施优秀数学库所涉及的一些问题的讨论,请参阅Plauger稍微过时但仍然有趣的书'The Standard C Library'。
答案 2 :(得分:1)
我曾经对你现在感兴趣,最后我找到了这些数学函数的C参考实现。这很好,不仅因为代码的简单性以及丰富而完整的评论。我希望你能像我一样喜欢它 这些算法可以从着名的网络库netlib获得,作为“Freely Distributable Math Library”包fdlibm。 首先阅读e_sqrt.c。这就是你要求的。
答案 3 :(得分:0)
其中大多数是使用泰勒系列完成的 http://en.wikipedia.org/wiki/Taylor_series