summaryrefslogtreecommitdiff
path: root/static/freebsd/man3/tgmath.3 3.html
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
commitac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch)
tree9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man3/tgmath.3 3.html
parent253e67c8b3a72b3a4757fdbc5845297628db0a4a (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.html262
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> &#x2014;
+ <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
+ &lt;<a class="In">tgmath.h</a>&gt;</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">&lt;<a class="In">tgmath.h</a>&gt;</code> provides
+ type-generic macros for
+ <code class="In">&lt;<a class="In">math.h</a>&gt;</code> and
+ <code class="In">&lt;<a class="In">complex.h</a>&gt;</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">&lt;<a class="In">math.h</a>&gt;</code> and the complex
+ equivalents in <code class="In">&lt;<a class="In">complex.h</a>&gt;</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">&lt;<a class="In">complex.h</a>&gt;</code> and
+ <code class="In">&lt;<a class="In">math.h</a>&gt;</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">&lt;<a class="In">tgmath.h</a>&gt;</code> conforms to
+ <span class="St">ISO/IEC 9899:1999
+ (&#x201C;ISO&#x00A0;C99&#x201D;)</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">&lt;<a class="In">tgmath.h</a>&gt;</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
+ (&#x201C;ISO&#x00A0;C11&#x201D;)</span>, the header
+ <code class="In">&lt;<a class="In">tgmath.h</a>&gt;</code> could not be
+ implemented with strictly conforming C code and needed special compiler
+ support. As of <span class="St">ISO/IEC 9899:2011
+ (&#x201C;ISO&#x00A0;C11&#x201D;)</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">&lt;<a class="In">math.h</a>&gt;</code> or
+ <code class="In">&lt;<a class="In">complex.h</a>&gt;</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>