cmath内部装饰

时间:2011-01-13 05:12:13

标签: c++ visual-studio

我只是想知道在cmath中实现sine,cosine和sqrt等函数的位置和方式。我知道cmath包含math.h和math.h有很多东西,但是这些函数背后的实际“数学”在哪里?

编辑:我对是否有与数学函数相关的有形源代码感兴趣,或者是那些我将要去的最低标题。

4 个答案:

答案 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