晚安。我是数学学士学位,并且正在研究log()和系列。我确实想看看GCC如何计算所有这些东西,这将对我有很大帮助,在math.h中没有任何内容。我已经读过它。我疯狂地试图找到GCC如何使用有史以来最快的方法来计算对数和平方根。我没有下载源代码,但找不到数学例程在哪里。
https://github.com/gcc-mirror/gcc
我只想看看,我根本不是一个好的程序员,我的事是数学。
数学函数是C标准库的一部分,而GCC只是使用它们。如果要查看源代码,则可以从官方的glibc website(对于GNU C库版本,这是最常用的版本之一)下载源代码,也可以使用an online code browser。例如[the code for log()
。
由于您说的不是程序员,所以我怀疑您会理解GNU C标准库。这是数十年来的优化和兼容性调整的结果,并且代码非常复杂。 我建议改为看看log()
。源代码更简洁,注释更多。 musl C Library,这是Here's the log()
function。
最后,GCC或C库也没有“有史以来最快的方法”来计算此类函数。 C库的目标不是提供每个数学函数尽可能快的实现,而是提供足够好的实现,同时仍具有足够的可移植性以在多种体系结构上使用,因此它们确实非常快,但很可能“有史以来最快”。在最佳情况下,如果CPU支持快速的内置硬件数学运算(例如log()
),则某些数学函数甚至可以简化为一条CPU指令。
这是log
的,它具有人类中很多C函数的实现(在https://github.com/JuliaMath/openlibm/blob/master/src/e_log.c之后。