名前空間
変種
操作

Type-generic math

提供: cppreference.com
< c‎ | numeric

ヘッダ<tgmath.h>はヘッダー<math.h><complex.h>が含まれており、いくつかの型総称マクロを定義しています。これらのマクロは、パラメータの種類に応じて呼び出すことが実際の関数を決定.
Original:
The header <tgmath.h> includes the headers <math.h> and <complex.h> and defines several type-generic macros. These macros determines the actual function to call depending on the types of the parameters.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集] 三角関数、双曲線、電力や指数関数NJ

型汎用マクロXXXいずれかの呼び出します
Original:
A type-generic macro XXX calls either of:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • 実関数:
    Original:
    real function:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • floatバリアントXXXf
    Original:
    float variant XXXf
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • doubleバリアントXXX
    Original:
    double variant XXX
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • long doubleバリアントXXXl
    Original:
    long double variant XXXl
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 複素関数:
    Original:
    complex function:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • floatバリアントcXXXf
    Original:
    float variant cXXXf
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • doubleバリアントcXXX
    Original:
    double variant cXXX
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • long doubleバリアントcXXXl
    Original:
    long double variant cXXXl
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
上記ルー​​ルの例外は、(下記の表を参照)expです.
Original:
An exception to the above rule is exp (see the table below).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
呼び出す関数は次のように決定されます
Original:
The function to call is determined as follows:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • いずれかのパラメータが複雑な場合、複雑な関数が実関数が呼び出され、それ以外の場合は呼ばれて.
    Original:
    If any of the parameters is complex, then the complex function is called, otherwise the real function is called.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • いずれかのパラメータがlong doubleであれば、long doubleバリアントが呼び出されます。いずれかのパラメータがdoubleあればそうでない場合は、次にdoubleバリアントが呼び出されます。それ以外の場合は、floatバリアントが呼び出されます.
    Original:
    If any of the parameters is long double, then the long double variant is called. Otherwise, if any of the parameters is double, then the double variant is called. Otherwise, float variant is called.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 動作は未定義である関数の対応する引数と互換性のないパラメータのいずれかをされています。
    Original:
    The behavior is undefined is any of the parameters is incompatible with the corresponding argument of the function.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
型汎用マクロは次のとおりです
Original:
The type-generic macros are as follows:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Type-generic macro Real function
variants
Complex function
variants
 
float
double
long double
float
double
long double
asin asinf asin asinl casinf casin casinl
acos acosf acos acosl cacosf cacos cacosl
atan atanf atan atanl catanf catan catanl
asinh asinhf asinh asinhl casinhf casinh casinhl
acosh acoshf acosh acoshl cacoshf cacosh cacoshl
atanh atanhf atanh atanhl catanhf catanh catanhl
sin sinf sin sinl csinf csin csinl
cos cosf cos cosl ccosf ccos ccosl
tan tanf tan tanl ctanf ctan ctanl
sinh sinhf sinh sinhl csinhf csinh csinhl
cosh coshf cosh coshl ccoshf ccosh ccoshl
tanh tanhf tanh tanhl ctanhf ctanh ctanhl
exp expf exp expl cexpf cexp cexpl
log logf log logl clogf clog clogl
pow powf pow powl cpowf cpow cpowl
sqrt sqrtf sqrt sqrtl csqrtf csqrt csqrtl
abs fabsf fabs fabsl cabsf cabs cabsl
exp expf exp expl cexpf cexp cexpl

[編集] その他の関数NJ

型汎用マクロXXXは実関数のバリアントのいずれかを呼び出します
Original:
A type-generic macro XXX calls either of the variants of a real function:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • floatバリアントXXXf
    Original:
    float variant XXXf
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • doubleバリアントXXX
    Original:
    double variant XXX
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • long doubleバリアントXXXl
    Original:
    long double variant XXXl
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
注意、何modf型汎用マクロがありません.
Original:
Note, there's no modf type-generic macro.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
呼び出す関数は次のように決定されます
Original:
The function to call is determined as follows:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • いずれかのパラメータがlong doubleであれば、long doubleバリアントが呼び出されます。いずれかのパラメータがdoubleあればそうでない場合は、次にdoubleバリアントが呼び出されます。それ以外の場合は、floatバリアントが呼び出されます.
    Original:
    If any of the parameters is long double, then the long double variant is called. Otherwise, if any of the parameters is double, then the double variant is called. Otherwise, float variant is called.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 動作は未定義である関数の対応する引数と互換性のないパラメータのいずれかをされています。
    Original:
    The behavior is undefined is any of the parameters is incompatible with the corresponding argument of the function.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
Type-generic macro Real function
variants
 
float
double
long double
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

[編集]

int i;
float f;
double d;
long double ld;
float complex fc;
double complex dc;
long double complex ldc;
 
// macro -> function call
cos(i);   // -> cos(i)
sin(f);   // -> sinf(f)
acos(d);  // -> acos(d)
sqrt(dc); // -> csqrt(dc);