Türe özel matematik

ISO C Standard 11 (C11) ve üzeri için, <tgmath.h> ve <complex.h>eklemeye <math.h> ek olarak üst bilgi, parametrelerin türlerine göre karşılık gelen matematik işlevini çağıran makrolar sağlar.

C çalışma zamanı kitaplığı matematik işlevleri gerçek ve karmaşık çeşitlemelerle gelir. Bağımsız değişkenin türüne bağlı olarak her değişken üç çeşit halinde gelir: float, doubleve long double. C, C++ gibi aşırı yüklemeyi desteklemediğinden, her değişkenin farklı bir adı vardır. Örneğin, gerçek bir kayan nokta değerinin mutlak değerini almak için, sırasıyla bir , fabsveya long double fabsl değeri geçirip floatgeçirmediğinize bağlı olarak , doubleveya çağırabilirsinizfabsf. Karmaşık mutlak değeri almak için , veya sırasıyla bir , doublecabscabsl ve long double karmaşık değeri geçirip floatgeçirmediğinize bağlı olarak birini çağırırsınız.cabsf Bağımsız değişkenler yukarıda belirtilen türlerden herhangi biriyle eşleşmiyorsa, işlev bağımsız değişkenler çiftmiş gibi seçilir.

<tgmath.h> , çağrılacak doğru matematik işlevinin seçimini basitleştiren makrolar içerir. Makrolar geçirildikleri türü inceler ve doğru işlevi çağırır. Örneğin, sqrt makro öğesine sqrtf()bağlanırsqrt(9.9f), ancak öğesine sqrt()bağlanırsqrt(9.9). Genel parametre için en az bir makro bağımsız değişkeni karmaşıksa, makro karmaşık bir işleve bağlanır; aksi takdirde, gerçek bir işlev çağırır.

içindeki <tgmath.h> tür genel makroları, bağımsız değişkenin türüne bağlı olarak farklı işlev adları atamayı veya seçmeyi yönetmenize gerek olmadığından daha fazla taşınabilir kod yazmanıza olanak tanır.

Bu makrolar kendi üst bilgilerindedir, böylece üst bilgi kullanılarak <math.h> yazılan programlar bozulmaz. Bu nedenle double x = sin(42); math.h.'>i dahil <ettiğinizde her zaman olduğu gibi davranır. Yine de, veya yerine üst bilgi eklendiğinde <tgmath.h> mevcut C programlarının <math.h> <complex.h>çoğunun etkilenmemesi beklenir.

Aşağıdaki tabloda, içinde <tgmath.h> kullanılabilen makrolar ve bunların genişletilmesi listelenir. modf , tür çözümlemesini karmaşık hale getirmeden nasıl güvenli hale getirildiği açık olmadığından ilgili tür genel makrosunda olmadığından bu tabloya dahil değildir.

Makro Gerçek
float
Gerçek
double
Gerçek
long double
Karmaşık
float
Karmaşık
double
Karmaşık
long double
acos acosf acos acosl cacosf cacos cacosl
acosh acoshf acosh acoshl cacoshf cacosh cacoshl
asin asinf asin asinl casinf casin casinl
asinh asinhf asinh asinhl casinhf casinh casinhl
atan atanf atan atanl catanf catan catanl
atanh atanhf atanh atanhl catanhf catanh catanhl
cos cosf cos cosl ccosf ccos ccosl
cosh coshf cosh coshl ccoshf ccosh ccoshl
exp expf exp expl cexpf cexp cexpl
fabs fabsf fabs fabsl cabsf cabs cabsl
log logf log logl clogf clog clogl
pow powf pow powl cpowf cpow cpowl
sin sinf sin sinl csinf csin csinl
sinh sinhf sinh sinhl csinhf csinh csinhl
sqrt sqrtf sqrt sqrtl csqrtf csqrt csqrtl
tan tanf tan tanl ctanf ctan ctanl
tanh tanhf tanh tanhl ctanhf ctanh ctanhl
atan2 atan2f atan2 atan2l - - -
cbrt cbrtf cbrt cbrtl - - -
ceil ceilf ceil ceill - - -
copysign copysignf copysign copysignl - - -
erf erff erf erfl - - -
erfc erfcf erfc erfcl - - -
exp2 exp2f exp2 exp2l - - -
expm1 expm1f expm1 expm1l - - -
fdim fdimf fdim fdiml - - -
floor floorf floor floorl - - -
fma fmaf fma fmal - - -
fmax fmaxf fmax fmaxl - - -
fmin fminf fmin fminl - - -
fmod fmodf fmod fmodl - - -
frexp frexpf frexp frexpl - - -
hypot hypotf hypot hypotl - - -
ilogb ilogbf ilogb ilogbl - - -
ldexp ldexpf ldexp ldexpl - - -
lgamma lgammaf lgamma lgammal - - -
llrint llrintf llrint llrintl - - -
llround llroundf llround llroundl - - -
log10 log10f log10 log10l - - -
log1p log1pf log1p log1pl - - -
log2 log2f log2 log2l - - -
logb logbf logb logbl - - -
lrint lrintf lrint lrintl - - -
lround lroundf lround lroundl - - -
nearbyint nearbyintf nearbyint nearbyintl - - -
nextafter nextafterf nextafter nextafterl - - -
nexttoward nexttowardf nexttoward nexttowardl - - -
remainder remainderf remainder remainderl - - -
remquo remquof remquo remquol - - -
rint rintf rint rintl - - -
round roundf round roundl - - -
scalbln scalblnf scalbln scalblnl - - -
scalbn scalbnf scalbn scalbnl - - -
tgamma tgammaf tgamma tgammal - - -
trunc truncf trunc truncl - - -
carg - - - cargf carg cargl
conj - - - conjf conj conjl
creal - - - crealf creal creall
cimag - - - cimagf cimag cimagl
cproj - - - cprojf cproj cprojl

Gereksinimler

ile derleyin /std:c11.

Windows SDK 10.0.20348.0 (sürüm 2104) veya üzeri. En son SDK'yı indirmek için bkz. Windows SDK' sı. C11 ve C17 geliştirmesi için SDK'yı yükleme ve kullanma yönergeleri için bkz . Visual Studio'da C11 ve C17 desteğini yükleme.

Ayrıca bkz.

C Çalışma Zamanı kitaplığı başvurusu