C 程式設計/tgmath.h
外觀
< C 程式設計
(重定向自 C 程式設計/C 參考/tgmath.h)tgmath.h 是一個 標準 C 標頭檔案,它定義了許多型別泛型 宏,可用於各種數學運算。該標頭檔案還包含 math.h 和 complex.h。對於 math.h 和 complex.h 標頭檔案中的所有沒有 f (float) 或 l (long double) 字尾的函式,以及其對應型別為 double(modf() 除外)的函式,都有一個相應的宏。 [1]
型別泛型宏是一種允許呼叫函式的機制,該函式的型別由宏中引數的型別決定。這意味著,例如,x 被宣告為 int 資料型別,但 被這樣呼叫
tan((float)x)
那麼這個表示式將具有型別 float [2]。
此外,如果型別泛型宏的任何一個引數或自變數是複數,它將呼叫複數函式,否則將呼叫實數函式。最終呼叫的函式型別取決於引數的最終轉換型別。 [3]。
下面的流程圖顯示了 tgmath.h 的依賴圖。 [4]

下面列出的函式僅處理實數引數並返回實數輸出。如果傳遞複數引數給這些函式,將返回 NaN 或其他特殊數字。 [5]。
| 名稱 | 描述 |
|---|---|
acos |
反餘弦 |
asin |
反正弦 |
atan |
單引數反正切 |
atan2 |
雙引數反正切 |
ceil |
向上取整,不小於引數的最小整數 |
cos |
餘弦 |
cosh |
雙曲餘弦 |
exp |
指數函式 |
fabs |
浮點數的絕對值 |
floor |
向下取整,不大於引數的最大整數 |
fmod |
浮點餘數 |
frexp |
將數字分解為有效數字和 2 的冪 |
ldexp |
根據指數縮放浮點數(見文章) |
log |
自然對數 |
log10 |
以 10 為底的對數 |
modf(x,p) |
返回x 的小數部分,並將整數部分儲存在指標p 指向的位置 |
pow(x,y) |
將x 乘方y,xy |
sin |
正弦 |
sinh |
雙曲正弦 |
sqrt |
平方根,返回數字的非負平方根 |
tan |
正切 |
tanh |
雙曲正切 |
isgreater |
如果 x > y,則返回 1,否則返回 0 |
isnan(x) |
如果 x 是 NaN(非數字),則返回 1 |
islessequal |
如果 x 小於或等於 y,則返回 1,否則返回 0 |
isinf(x) |
表示 x 是否為無窮大 |
signbit |
表示 x 是否為負數(如果 x 小於 0,則返回 8,否則返回 0) |
下面定義的函式處理複數引數,但不返回複數輸出。 [5]。
| 名稱 | 描述 |
|---|---|
cacos |
反餘弦 |
casin |
反正弦 |
catan |
單引數反正切 |
catan2 |
雙引數反正切 |
cceil |
向上取整,不小於引數的最小整數 |
ccos |
餘弦 |
ccosh |
雙曲餘弦 |
cexp |
指數函式 |
cabs |
複數浮點數的絕對值 |
cfloor |
向下取整,不大於引數的最大整數 |
cfmod |
浮點餘數 |
cfrexp |
將數字分解為有效數字和 2 的冪 |
cldexp |
根據指數縮放浮點數(見文章) |
clog |
自然對數 |
clog10 |
以 10 為底的對數 |
cmodf(x,p) |
返回x 的小數部分,並將整數部分儲存在指標p 指向的位置 |
cpow(x,y) |
將x 乘方y,xy |
csin |
正弦 |
csinh |
雙曲正弦 |
csqrt |
平方根,返回數字的非負平方根 |
ctan |
正切 |
ctanh |
雙曲正切 |
以下程式碼說明了 tgmath.h 中定義的 atan 函式的使用,該函式計算正切函式域中定義的數字的反正切。
#include <stdio.h>
#include <tgmath.h>
int main()
{
float ang, ans;
scanf("%f", &ang);
ans = atan(ang);
printf("%0.3f\n", ans);
return 0;
}
這裡定義的類似函式在“棘手”數字的返回值方面存在顯著差異。例如,使用 sqrt 計算 -25 的平方根返回 -NaN(非數字),而 csqrt 返回 0.000000。在其他函式中也可能注意到此類差異。
此標頭檔案主要在計算數學函式時包含。由於它包含了 math.h 和 complex.h,因此解決了由不一致輸入引起的錯誤。單獨包含任何標頭檔案都會導致某些輸入的不一致輸出。
- ↑ http://www.opengroup.org/onlinepubs/009695399/basedefs/tgmath.h.html
- ↑ http://manpages.ubuntu.com/manpages/hardy/man7/tgmath.h.7posix.html
- ↑ http://www.qnx.com/developers/docs/6.4.1/dinkum_en/c99/tgmath.html
- ↑ http://www-zeuthen.desy.de/apewww/APE/software/nlibc/html/tgmath_8h.html
- ↑ a b http://pubs.opengroup.org/onlinepubs/009604599/basedefs/tgmath.h.html