diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
| commit | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch) | |
| tree | 9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man3/tgmath.3 3.html | |
| parent | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (diff) | |
docs: Added All FreeBSD Manuals
Diffstat (limited to 'static/freebsd/man3/tgmath.3 3.html')
| -rw-r--r-- | static/freebsd/man3/tgmath.3 3.html | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/static/freebsd/man3/tgmath.3 3.html b/static/freebsd/man3/tgmath.3 3.html new file mode 100644 index 00000000..095cff0f --- /dev/null +++ b/static/freebsd/man3/tgmath.3 3.html @@ -0,0 +1,262 @@ +<table class="head"> + <tr> + <td class="head-ltitle">TGMATH(3)</td> + <td class="head-vol">Library Functions Manual</td> + <td class="head-rtitle">TGMATH(3)</td> + </tr> +</table> +<div class="manual-text"> +<section class="Sh"> +<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> +<p class="Pp"><code class="Nm">tgmath</code> — + <span class="Nd">type-generic macros</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<p class="Pp"><code class="In">#include + <<a class="In">tgmath.h</a>></code></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">The header + <code class="In"><<a class="In">tgmath.h</a>></code> provides + type-generic macros for + <code class="In"><<a class="In">math.h</a>></code> and + <code class="In"><<a class="In">complex.h</a>></code> functions that + have <var class="Vt">float</var> (suffixed with + <a class="permalink" href="#f"><b class="Sy" id="f">f</b></a>), + <var class="Vt">double</var> and <var class="Vt">long double</var> (suffixed + with <a class="permalink" href="#l"><b class="Sy" id="l">l</b></a>) + versions. The arguments that vary across the three functions and have type + <var class="Vt">float</var>, <var class="Vt">double</var> and + <var class="Vt">long double</var>, respectively, are called + <a class="permalink" href="#generic"><i class="Em" id="generic">generic + arguments</i></a>.</p> +<p class="Pp">The following rules describe which function is actually called if + a type-generic macro is invoked. If any generic argument has type + <var class="Vt">long double</var> or <var class="Vt">long double + complex</var>, the <var class="Vt">long double</var> function is called. + Else, if any generic argument has type <var class="Vt">double</var>, + <var class="Vt">double complex</var> or an integer type, the + <var class="Vt">double</var> version is invoked. Otherwise, the macro + expands to the <var class="Vt">float</var> implementation.</p> +<p class="Pp">For the macros in the following table, both real and complex + functions exist. The real functions are prototyped in + <code class="In"><<a class="In">math.h</a>></code> and the complex + equivalents in <code class="In"><<a class="In">complex.h</a>></code>. + The complex function is called if any of the generic arguments is a complex + value. Otherwise, the real equivalent is called.</p> +<table class="Bl-column Bd-indent"> + <tr id="Macro"> + <td><a class="permalink" href="#Macro"><b class="Sy">Macro</b></a></td> + <td><a class="permalink" href="#real"><b class="Sy" id="real">real + function</b></a></td> + <td><a class="permalink" href="#complex"><b class="Sy" id="complex">complex + function</b></a></td> + </tr> + <tr id="acos"> + <td><a class="permalink" href="#acos"><code class="Fn">acos</code></a>()</td> + <td><code class="Fn">acos</code>()</td> + <td><a class="permalink" href="#cacos"><code class="Fn" id="cacos">cacos</code></a>()</td> + </tr> + <tr id="asin"> + <td><a class="permalink" href="#asin"><code class="Fn">asin</code></a>()</td> + <td><code class="Fn">asin</code>()</td> + <td><a class="permalink" href="#casin"><code class="Fn" id="casin">casin</code></a>()</td> + </tr> + <tr id="atan"> + <td><a class="permalink" href="#atan"><code class="Fn">atan</code></a>()</td> + <td><code class="Fn">atan</code>()</td> + <td><a class="permalink" href="#catan"><code class="Fn" id="catan">catan</code></a>()</td> + </tr> + <tr id="acosh"> + <td><a class="permalink" href="#acosh"><code class="Fn">acosh</code></a>()</td> + <td><code class="Fn">acosh</code>()</td> + <td><a class="permalink" href="#cacosh"><code class="Fn" id="cacosh">cacosh</code></a>()</td> + </tr> + <tr id="asinh"> + <td><a class="permalink" href="#asinh"><code class="Fn">asinh</code></a>()</td> + <td><code class="Fn">asinh</code>()</td> + <td><a class="permalink" href="#casinh"><code class="Fn" id="casinh">casinh</code></a>()</td> + </tr> + <tr id="atanh"> + <td><a class="permalink" href="#atanh"><code class="Fn">atanh</code></a>()</td> + <td><code class="Fn">atanh</code>()</td> + <td><a class="permalink" href="#catanh"><code class="Fn" id="catanh">catanh</code></a>()</td> + </tr> + <tr id="cos"> + <td><a class="permalink" href="#cos"><code class="Fn">cos</code></a>()</td> + <td><code class="Fn">cos</code>()</td> + <td><a class="permalink" href="#ccos"><code class="Fn" id="ccos">ccos</code></a>()</td> + </tr> + <tr id="sin"> + <td><a class="permalink" href="#sin"><code class="Fn">sin</code></a>()</td> + <td><code class="Fn">sin</code>()</td> + <td><a class="permalink" href="#csin"><code class="Fn" id="csin">csin</code></a>()</td> + </tr> + <tr id="tan"> + <td><a class="permalink" href="#tan"><code class="Fn">tan</code></a>()</td> + <td><code class="Fn">tan</code>()</td> + <td><a class="permalink" href="#ctan"><code class="Fn" id="ctan">ctan</code></a>()</td> + </tr> + <tr id="cosh"> + <td><a class="permalink" href="#cosh"><code class="Fn">cosh</code></a>()</td> + <td><code class="Fn">cosh</code>()</td> + <td><a class="permalink" href="#ccosh"><code class="Fn" id="ccosh">ccosh</code></a>()</td> + </tr> + <tr id="sinh"> + <td><a class="permalink" href="#sinh"><code class="Fn">sinh</code></a>()</td> + <td><code class="Fn">sinh</code>()</td> + <td><a class="permalink" href="#csinh"><code class="Fn" id="csinh">csinh</code></a>()</td> + </tr> + <tr id="tanh"> + <td><a class="permalink" href="#tanh"><code class="Fn">tanh</code></a>()</td> + <td><code class="Fn">tanh</code>()</td> + <td><a class="permalink" href="#ctanh"><code class="Fn" id="ctanh">ctanh</code></a>()</td> + </tr> + <tr id="exp"> + <td><a class="permalink" href="#exp"><code class="Fn">exp</code></a>()</td> + <td><code class="Fn">exp</code>()</td> + <td><a class="permalink" href="#cexp"><code class="Fn" id="cexp">cexp</code></a>()</td> + </tr> + <tr id="log"> + <td><a class="permalink" href="#log"><code class="Fn">log</code></a>()</td> + <td><code class="Fn">log</code>()</td> + <td><a class="permalink" href="#clog"><code class="Fn" id="clog">clog</code></a>()</td> + </tr> + <tr id="pow"> + <td><a class="permalink" href="#pow"><code class="Fn">pow</code></a>()</td> + <td><code class="Fn">pow</code>()</td> + <td><a class="permalink" href="#cpow"><code class="Fn" id="cpow">cpow</code></a>()</td> + </tr> + <tr id="sqrt"> + <td><a class="permalink" href="#sqrt"><code class="Fn">sqrt</code></a>()</td> + <td><code class="Fn">sqrt</code>()</td> + <td><a class="permalink" href="#csqrt"><code class="Fn" id="csqrt">csqrt</code></a>()</td> + </tr> + <tr id="fabs"> + <td><a class="permalink" href="#fabs"><code class="Fn">fabs</code></a>()</td> + <td><code class="Fn">fabs</code>()</td> + <td><a class="permalink" href="#cabs"><code class="Fn" id="cabs">cabs</code></a>()</td> + </tr> +</table> +<p class="Pp">No complex functions exist for the following macros, so passing a + complex value to a generic argument invokes undefined behaviour:</p> +<table class="Bl-column Bd-indent"> + <tr id="atan2"> + <td><a class="permalink" href="#atan2"><code class="Fn">atan2</code></a>()</td> + <td><a class="permalink" href="#fma"><code class="Fn" id="fma">fma</code></a>()</td> + <td><a class="permalink" href="#llround"><code class="Fn" id="llround">llround</code></a>()</td> + <td><a class="permalink" href="#remainder"><code class="Fn" id="remainder">remainder</code></a>()</td> + </tr> + <tr id="cbrt"> + <td><a class="permalink" href="#cbrt"><code class="Fn">cbrt</code></a>()</td> + <td><a class="permalink" href="#fmax"><code class="Fn" id="fmax">fmax</code></a>()</td> + <td><a class="permalink" href="#log10"><code class="Fn" id="log10">log10</code></a>()</td> + <td><a class="permalink" href="#remquo"><code class="Fn" id="remquo">remquo</code></a>()</td> + </tr> + <tr id="ceil"> + <td><a class="permalink" href="#ceil"><code class="Fn">ceil</code></a>()</td> + <td><a class="permalink" href="#fmin"><code class="Fn" id="fmin">fmin</code></a>()</td> + <td><a class="permalink" href="#log1p"><code class="Fn" id="log1p">log1p</code></a>()</td> + <td><a class="permalink" href="#rint"><code class="Fn" id="rint">rint</code></a>()</td> + </tr> + <tr id="copysign"> + <td><a class="permalink" href="#copysign"><code class="Fn">copysign</code></a>()</td> + <td><a class="permalink" href="#fmod"><code class="Fn" id="fmod">fmod</code></a>()</td> + <td><a class="permalink" href="#log2"><code class="Fn" id="log2">log2</code></a>()</td> + <td><a class="permalink" href="#round"><code class="Fn" id="round">round</code></a>()</td> + </tr> + <tr id="erf"> + <td><a class="permalink" href="#erf"><code class="Fn">erf</code></a>()</td> + <td><a class="permalink" href="#frexp"><code class="Fn" id="frexp">frexp</code></a>()</td> + <td><a class="permalink" href="#logb"><code class="Fn" id="logb">logb</code></a>()</td> + <td><a class="permalink" href="#scalbn"><code class="Fn" id="scalbn">scalbn</code></a>()</td> + </tr> + <tr id="erfc"> + <td><a class="permalink" href="#erfc"><code class="Fn">erfc</code></a>()</td> + <td><a class="permalink" href="#hypot"><code class="Fn" id="hypot">hypot</code></a>()</td> + <td><a class="permalink" href="#lrint"><code class="Fn" id="lrint">lrint</code></a>()</td> + <td><a class="permalink" href="#scalbln"><code class="Fn" id="scalbln">scalbln</code></a>()</td> + </tr> + <tr id="exp2"> + <td><a class="permalink" href="#exp2"><code class="Fn">exp2</code></a>()</td> + <td><a class="permalink" href="#ilogb"><code class="Fn" id="ilogb">ilogb</code></a>()</td> + <td><a class="permalink" href="#lround"><code class="Fn" id="lround">lround</code></a>()</td> + <td><a class="permalink" href="#tgamma"><code class="Fn" id="tgamma">tgamma</code></a>()</td> + </tr> + <tr id="expm1"> + <td><a class="permalink" href="#expm1"><code class="Fn">expm1</code></a>()</td> + <td><a class="permalink" href="#ldexp"><code class="Fn" id="ldexp">ldexp</code></a>()</td> + <td><a class="permalink" href="#nearbyint"><code class="Fn" id="nearbyint">nearbyint</code></a>()</td> + <td><a class="permalink" href="#trunc"><code class="Fn" id="trunc">trunc</code></a>()</td> + </tr> + <tr id="fdim"> + <td><a class="permalink" href="#fdim"><code class="Fn">fdim</code></a>()</td> + <td><a class="permalink" href="#lgamma"><code class="Fn" id="lgamma">lgamma</code></a>()</td> + <td><a class="permalink" href="#nextafter"><code class="Fn" id="nextafter">nextafter</code></a>()</td> + <td></td> + </tr> + <tr id="floor"> + <td><a class="permalink" href="#floor"><code class="Fn">floor</code></a>()</td> + <td><a class="permalink" href="#llrint"><code class="Fn" id="llrint">llrint</code></a>()</td> + <td><a class="permalink" href="#nexttoward"><code class="Fn" id="nexttoward">nexttoward</code></a>()</td> + <td></td> + </tr> +</table> +<p class="Pp">The following macros always expand to a complex function:</p> +<table class="Bl-column Bd-indent"> + <tr id="carg"> + <td><a class="permalink" href="#carg"><code class="Fn">carg</code></a>()</td> + <td><a class="permalink" href="#cimag"><code class="Fn" id="cimag">cimag</code></a>()</td> + <td><a class="permalink" href="#conj"><code class="Fn" id="conj">conj</code></a>()</td> + <td><a class="permalink" href="#cproj"><code class="Fn" id="cproj">cproj</code></a>()</td> + <td><a class="permalink" href="#creal"><code class="Fn" id="creal">creal</code></a>()</td> + </tr> +</table> +<p class="Pp">This header includes + <code class="In"><<a class="In">complex.h</a>></code> and + <code class="In"><<a class="In">math.h</a>></code>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1> +<p class="Pp">The header + <code class="In"><<a class="In">tgmath.h</a>></code> conforms to + <span class="St">ISO/IEC 9899:1999 + (“ISO C99”)</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">The header + <code class="In"><<a class="In">tgmath.h</a>></code> first appeared in + <span class="Ux">FreeBSD 5.3</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="COMPILER_SUPPORT"><a class="permalink" href="#COMPILER_SUPPORT">COMPILER + SUPPORT</a></h1> +<p class="Pp">Before <span class="St">ISO/IEC 9899:2011 + (“ISO C11”)</span>, the header + <code class="In"><<a class="In">tgmath.h</a>></code> could not be + implemented with strictly conforming C code and needed special compiler + support. As of <span class="St">ISO/IEC 9899:2011 + (“ISO C11”)</span>, this header file can be implemented + using the + <a class="permalink" href="#_Generic"><code class="Fn" id="_Generic">_Generic</code></a>() + language keyword. In addition to compilers that support this keyword, this + header file works with GCC.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1> +<p class="Pp">Many of the functions mentioned here are not prototyped in + <code class="In"><<a class="In">math.h</a>></code> or + <code class="In"><<a class="In">complex.h</a>></code> as they are not + yet implemented. This prevents the corresponding type-generic macro from + working at all.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">January 4, 2012</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
