Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikibooksThe Free Textbook Project
Search

C Programming/tgmath.h

From Wikibooks, open books for an open world
<C Programming
(Redirected fromC Programming/C Reference/tgmath.h)

tgmath.h is aStandard C header that defines many type-genericmacros that can be used for a variety of mathematical operations. This header also includesmath.h andcomplex.h. For all of the functions in themath.h andcomplex.h headers that do not have an f (float) or l (long double) suffix, and whose corresponding type is double (with the exception ofmodf()), there is a corresponding macro.[1]

Type-generic macro

[edit |edit source]

A type generic macro is something which allows calling a function whose type is determined by the type of argument in the macro. This means, for example, x is declared as anint data type buttan{\displaystyle tan} has been called this way:

tan((float)x)


then this expression will have a typefloat[2].
Also, if any one of the parameters or arguments of a type-generic macro is complex, it will call a complex function, otherwise a real function will be called. The type of function that is called, ultimately depends upon the final converted type of parameter.[3].

Dependency Graph

[edit |edit source]

The flowchart below shows the Dependency graph for tgmath.h.[4]

Dependency Graph

Functions frommath.h

[edit |edit source]

The functions listed below handle real arguments and return real output only. If complex arguments are passed to these functions, NaN or other special numbers are returned[5].

NameDescription
acosinverse cosine
asininverse sine
atanone-parameter inverse tangent
atan2two-parameter inverse tangent
ceilceiling, the smallest integer not less than parameter
coscosine
coshhyperbolic cosine
expexponential function
fabsabsolute value of a floating-point number
floorfloor, the largest integer not greater than parameter
fmodfloating-point remainder
frexpdecomposes a number into significand and a power of 2
ldexpscale floating-point number by exponent (see article)
lognatural logarithm
log10base-10 logarithm
modf(x,p)returns fractional part ofx and stores integral part where pointerp points to
pow(x,y)raisex to the power ofy,xy
sinsine
sinhhyperbolic sine
sqrtsquare root, returns non-negative square-root of the number
tantangent
tanhhyperbolic tangent
isgreaterIf x > y, it returns 1, otherwise 0
isnan(x)returns 1, if x is NaN (Not A Number)
islessequalreturns 1, if x is less than or equal to y, otherwise returns 0
isinf(x)represents whether x is infinite
signbitrepresents whether x is negative (returns 8 if x is less than 0, otherwise returns 0)

Functions fromcomplex.h

[edit |edit source]

The functions defined below handle complex parameters, but do not return complex output[5].

NameDescription
cacosinverse cosine
casininverse sine
catanone-parameter inverse tangent
catan2two-parameter inverse tangent
cceilceiling, the smallest integer not less than parameter
ccoscosine
ccoshhyperbolic cosine
cexpexponential function
cabsabsolute value of a complex floating-point number
cfloorfloor, the largest integer not greater than parameter
cfmodfloating-point remainder
cfrexpdecomposes a number into significand and a power of 2
cldexpscale floating-point number by exponent (see article)
clognatural logarithm
clog10base-10 logarithm
cmodf(x,p)returns fractional part ofx and stores integral part where pointerp points to
cpow(x,y)raisex to the power ofy,xy
csinsine
csinhhyperbolic sine
csqrtsquare root, returns non-negative square-root of the number
ctantangent
ctanhhyperbolic tangent

Usage example

[edit |edit source]

The code below illustrates usage of ,atan function defined intgmath.h, which computes the inverse of tangent of a number defined in the domain of tangent.

#include<stdio.h>#include<tgmath.h>intmain(){floatang,ans;scanf("%f",&ang);ans=atan(ang);printf("%0.3f\n",ans);return0;}

Notable differences

[edit |edit source]

The similar functions defined here have notable difference when it comes to return value of "tricky" numbers. For example, using sqrt to compute square root of -25 returns-NaN(Not a Number), whereas, csqrt returns 0.000000. Such differences may be noticed in other functions also.

Rationale

[edit |edit source]

This header file is mainly included while calculating mathematical functions.As it includes bothmath.h andcomplex.h, the problem arising due to inconsistent input is solved. Including any of the header files, individually, involves inconsistent outputs for some inputs.

References

[edit |edit source]
  1. http://www.opengroup.org/onlinepubs/009695399/basedefs/tgmath.h.html
  2. http://manpages.ubuntu.com/manpages/hardy/man7/tgmath.h.7posix.html
  3. http://www.qnx.com/developers/docs/6.4.1/dinkum_en/c99/tgmath.html
  4. http://www-zeuthen.desy.de/apewww/APE/software/nlibc/html/tgmath_8h.html
  5. abhttp://pubs.opengroup.org/onlinepubs/009604599/basedefs/tgmath.h.html

External Links

[edit |edit source]
Retrieved from "https://en.wikibooks.org/w/index.php?title=C_Programming/tgmath.h&oldid=3719112"
Category:

[8]ページ先頭

©2009-2025 Movatter.jp