Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      tgamma, tgammaf, tgammal

      From cppreference.com
      <c‎ |numeric‎ |math
       
       
       
      Common mathematical functions
      Functions
      Basic operations
      (C99)
      (C99)
      (C99)
      (C99)(C99)(C99)(C23)
      Maximum/minimum operations
      (C99)
      (C99)
      Exponential functions
      (C23)
      (C99)
      (C99)
      (C23)
      (C23)

      (C99)
      (C99)(C23)
      (C23)
      (C23)
      Power functions
      (C99)
      (C23)
      (C23)

      (C99)
      (C23)
      (C23)
      Trigonometric and hyperbolic functions
      (C23)
      (C23)
      (C23)
      (C23)
      (C99)
      (C99)
      (C99)
      Nearest integer floating-point
      (C99)(C99)(C99)
      (C23)(C23)(C23)(C23)
      Floating-point manipulation
      (C99)(C99)
      (C99)(C23)
      (C99)
      Narrowing operations
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      Quantum and quantum exponent
      Decimal re-encoding functions
      Total order and payload functions
      Classification
      Error and gamma functions
      (C99)
      (C99)
      (C99)
      tgamma
      (C99)
      Types
      Macro constants
      Special floating-point values
      (C99)(C23)
      Arguments and return values
      Error handling
      Fast operation indicators
       
      Defined in header<math.h>
      float       tgammaf(float arg);
      (1)(since C99)
      double      tgamma(double arg);
      (2)(since C99)
      longdouble tgammal(longdouble arg);
      (3)(since C99)
      Defined in header<tgmath.h>
      #define tgamma( arg )
      (4)(since C99)
      1-3) Computes thegamma function ofarg.
      4) Type-generic macro: Ifarg has typelongdouble,tgammal is called. Otherwise, ifarg has integer type or the typedouble,tgamma is called. Otherwise,tgammaf is called.

      Contents

      [edit]Parameters

      arg - floating-point value

      [edit]Return value

      If no errors occur, the value of the gamma function ofarg, that is\(\Gamma(\mathtt{arg}) = \displaystyle\int_0^\infty\!\! t^{\mathtt{arg}-1} e^{-t}\, dt\)
      0
      targ-1
      e-t dt
      , is returned.

      If a domain error occurs, an implementation-defined value (NaN where supported) is returned.

      If a pole error occurs,±HUGE_VAL,±HUGE_VALF, or±HUGE_VALL is returned.

      If a range error due to overflow occurs,±HUGE_VAL,±HUGE_VALF, or±HUGE_VALL is returned.

      If a range error due to underflow occurs, the correct value (after rounding) is returned.

      [edit]Error handling

      Errors are reported as specified inmath_errhandling.

      Ifarg is zero or is an integer less than zero, a pole error or a domain error may occur.

      If the implementation supports IEEE floating-point arithmetic (IEC 60559):

      • If the argument is ±0, ±∞ is returned andFE_DIVBYZERO is raised.
      • If the argument is a negative integer, NaN is returned andFE_INVALID is raised.
      • If the argument is -∞, NaN is returned andFE_INVALID is raised.
      • If the argument is +∞, +∞ is returned.
      • If the argument is NaN, NaN is returned.

      [edit]Notes

      Ifarg is a natural number,tgamma(arg) is the factorial ofarg-1. Many implementations calculate the exact integer-domain factorial if the argument is a sufficiently small integer.

      For IEEE-compatible typedouble, overflow happens if0< x<1/DBL_MAX or ifx>171.7.

      POSIX requires that a pole error occurs if the argument is zero, but a domain error occurs when the argument is a negative integer. It also specifies that in future, domain errors may be replaced by pole errors for negative integer arguments (in which case the return value in those cases would change from NaN to ±∞).

      There is a non-standard function namedgamma in various implementations, but its definition is inconsistent. For example, glibc and 4.2BSD version ofgamma executeslgamma, but 4.4BSD version ofgamma executestgamma.

      [edit]Example

      Run this code
      #include <errno.h>#include <fenv.h>#include <float.h>#include <math.h>#include <stdio.h>// #pragma STDC FENV_ACCESS ON int main(void){printf("tgamma(10) = %f, 9!=%f\n", tgamma(10),2*3*4*5*6*7*8*9.0);printf("tgamma(0.5) = %f, sqrt(pi) = %f\n", tgamma(0.5),sqrt(acos(-1))); // special valuesprintf("tgamma(+Inf) = %f\n", tgamma(INFINITY)); // error handlingerrno=0;feclearexcept(FE_ALL_EXCEPT);printf("tgamma(-1) = %f\n", tgamma(-1));if(errno==ERANGE)perror("    errno == ERANGE");elseif(errno==EDOM)perror("    errno == EDOM");if(fetestexcept(FE_DIVBYZERO))puts("    FE_DIVBYZERO raised");elseif(fetestexcept(FE_INVALID))puts("    FE_INVALID raised");}

      Possible output:

      tgamma(10) = 362880.000000, 9!=362880.000000tgamma(0.5) = 1.772454, sqrt(pi) = 1.772454tgamma(+Inf) = inftgamma(-1) = nan    errno == EDOM: Numerical argument out of domain    FE_INVALID raised

      [edit]References

      • C23 standard (ISO/IEC 9899:2024):
      • 7.12.8.4 The tgamma functions (p: 250)
      • 7.25 Type-generic math <tgmath.h> (p: 373-375)
      • F.10.5.4 The tgamma functions (p: 525)
      • C17 standard (ISO/IEC 9899:2018):
      • 7.12.8.4 The tgamma functions (p: 250)
      • 7.25 Type-generic math <tgmath.h> (p: 373-375)
      • F.10.5.4 The tgamma functions (p: 525)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.12.8.4 The tgamma functions (p: 250)
      • 7.25 Type-generic math <tgmath.h> (p: 373-375)
      • F.10.5.4 The tgamma functions (p: 525)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.12.8.4 The tgamma functions (p: 231)
      • 7.22 Type-generic math <tgmath.h> (p: 335-337)
      • F.9.5.4 The tgamma functions (p: 462)

      [edit]See also

      (C99)(C99)(C99)
      computes natural (base-e) logarithm of the gamma function
      (function)[edit]

      [edit]External links

      Weisstein, Eric W. "Gamma Function." From MathWorld — A Wolfram Web Resource.
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/tgamma&oldid=172066"

      [8]ページ先頭

      ©2009-2025 Movatter.jp