2015-06-12 95 views
-3

我想知道C函數庫如何實現sqrt()函數。我得到了/usr/include中的頭文件math.h。但是,實際的實施在哪裏?我正在做一個數值計算項目,並希望看到math.h中所有可用函數的實現。C庫的實現在哪裏?

+5

「谷歌搜索沒有給出任何好結果」 - 不知何故,我不相信。對不起。 –

+1

另請參見[ceil()和floor()]的實現(http://stackoverflow.com/questions/6208488/implementation-of-ceil-and-floor) –

+0

在linux上:'man sqrt'告訴我要鏈接'-lm',意思是'libm',是libmath的縮寫。通常這些是glibc(GNU libc)的一部分,它是大多數Linux發行版中的「標準」C庫。默認情況下,您的發行版不可能爲您的計算機上安裝的源代碼提供源代碼,而是預編譯的共享庫。要獲得源代碼,最好的方法是轉到圖書館的網頁。 Google'GNU C Library',你會發現。 – Jite

回答

1

對於您在this SO thread中的查詢,您將得到一個通用答案。

但是,具體到這個問題,得到數學相關的功能,你需要搜索裏面glibclibm源代碼。這存在於名爲math的目錄中。

在線瀏覽版本爲。

+0

GNU C庫** do **包含數學函數,如果需要,您只需將它們專門鏈接起來。 – Jite

+0

@Jite是的,我更新了措辭。寫完後我意識到錯誤的意思。謝謝。 –

+0

那麼源代碼仍然只是在一個存儲庫中,所以你的措辭仍然有點混亂。你更有可能在數學文件夾中尋找數學函數(儘管它可能並不是很明顯的東西在哪裏實現)。 – Jite