summaryrefslogtreecommitdiff
path: root/static/freebsd/man3/fpgetround.3 4.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man3/fpgetround.3 4.html')
-rw-r--r--static/freebsd/man3/fpgetround.3 4.html161
1 files changed, 161 insertions, 0 deletions
diff --git a/static/freebsd/man3/fpgetround.3 4.html b/static/freebsd/man3/fpgetround.3 4.html
new file mode 100644
index 00000000..4547c0b3
--- /dev/null
+++ b/static/freebsd/man3/fpgetround.3 4.html
@@ -0,0 +1,161 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">FPGETROUND(3)</td>
+ <td class="head-vol">Library Functions Manual</td>
+ <td class="head-rtitle">FPGETROUND(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">fpgetround</code>,
+ <code class="Nm">fpsetround</code>, <code class="Nm">fpsetprec</code>,
+ <code class="Nm">fpgetprec</code>, <code class="Nm">fpgetmask</code>,
+ <code class="Nm">fpsetmask</code>, <code class="Nm">fpgetsticky</code>,
+ <code class="Nm">fpresetsticky</code> &#x2014; <span class="Nd">IEEE
+ floating point interface</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">ieeefp.h</a>&gt;</code></p>
+<div class="Bd Pp Li">
+<pre>typedef enum {
+ FP_RN, /* round to nearest */
+ FP_RM, /* round down to minus infinity */
+ FP_RP, /* round up to plus infinity */
+ FP_RZ /* truncate */
+} fp_rnd_t;</pre>
+</div>
+<br/>
+<var class="Ft">fp_rnd_t</var>
+<br/>
+<code class="Fn">fpgetround</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
+<p class="Pp"><var class="Ft">fp_rnd_t</var>
+ <br/>
+ <code class="Fn">fpsetround</code>(<var class="Fa" style="white-space: nowrap;">fp_rnd_t
+ direction</var>);</p>
+<div class="Bd Pp Li">
+<pre>typedef enum {
+ FP_PS, /* 24 bit (single-precision) */
+ FP_PRS, /* reserved */
+ FP_PD, /* 53 bit (double-precision) */
+ FP_PE /* 64 bit (extended-precision) */
+} fp_prec_t;</pre>
+</div>
+<br/>
+<var class="Ft">fp_prec_t</var>
+<br/>
+<code class="Fn">fpgetprec</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
+<p class="Pp"><var class="Ft">fp_prec_t</var>
+ <br/>
+ <code class="Fn">fpsetprec</code>(<var class="Fa" style="white-space: nowrap;">fp_prec_t
+ precision</var>);</p>
+<div class="Bd Pp Li">
+<pre>#define fp_except_t int
+#define FP_X_INV 0x01 /* invalid operation */
+#define FP_X_DNML 0x02 /* denormal */
+#define FP_X_DZ 0x04 /* zero divide */
+#define FP_X_OFL 0x08 /* overflow */
+#define FP_X_UFL 0x10 /* underflow */
+#define FP_X_IMP 0x20 /* (im)precision */
+#define FP_X_STK 0x40 /* stack fault */</pre>
+</div>
+<br/>
+<var class="Ft">fp_except_t</var>
+<br/>
+<code class="Fn">fpgetmask</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
+<p class="Pp"><var class="Ft">fp_except_t</var>
+ <br/>
+ <code class="Fn">fpsetmask</code>(<var class="Fa" style="white-space: nowrap;">fp_except_t
+ mask</var>);</p>
+<p class="Pp"><var class="Ft">fp_except_t</var>
+ <br/>
+ <code class="Fn">fpgetsticky</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
+<p class="Pp"><var class="Ft">fp_except_t</var>
+ <br/>
+ <code class="Fn">fpresetsticky</code>(<var class="Fa" style="white-space: nowrap;">fp_except_t
+ sticky</var>);</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The routines described herein are deprecated. New code should use
+ the functionality provided by <a class="Xr">fenv(3)</a>.</p>
+<p class="Pp">When a floating point exception is detected, the exception sticky
+ flag is set and the exception mask is tested. If the mask is set, then a
+ trap occurs. These routines allow both setting the floating point exception
+ masks, and resetting the exception sticky flags after an exception is
+ detected. In addition, they allow setting the floating point rounding mode
+ and precision.</p>
+<p class="Pp" id="fpgetround">The
+ <a class="permalink" href="#fpgetround"><code class="Fn">fpgetround</code></a>()
+ function returns the current floating point rounding mode.</p>
+<p class="Pp" id="fpsetround">The
+ <a class="permalink" href="#fpsetround"><code class="Fn">fpsetround</code></a>()
+ function sets the floating point rounding mode and returns the previous
+ mode.</p>
+<p class="Pp" id="fpgetprec">The
+ <a class="permalink" href="#fpgetprec"><code class="Fn">fpgetprec</code></a>()
+ function returns the current floating point precision.</p>
+<p class="Pp" id="fpsetprec">The
+ <a class="permalink" href="#fpsetprec"><code class="Fn">fpsetprec</code></a>()
+ function sets the floating point precision and returns the previous
+ precision.</p>
+<p class="Pp" id="fpgetmask">The
+ <a class="permalink" href="#fpgetmask"><code class="Fn">fpgetmask</code></a>()
+ function returns the current floating point exception masks.</p>
+<p class="Pp" id="fpsetmask">The
+ <a class="permalink" href="#fpsetmask"><code class="Fn">fpsetmask</code></a>()
+ function sets the floating point exception masks and returns the previous
+ masks.</p>
+<p class="Pp" id="fpgetsticky">The
+ <a class="permalink" href="#fpgetsticky"><code class="Fn">fpgetsticky</code></a>()
+ function returns the current floating point sticky flags.</p>
+<p class="Pp" id="fpresetsticky">The
+ <a class="permalink" href="#fpresetsticky"><code class="Fn">fpresetsticky</code></a>()
+ function clears the floating point sticky flags and returns the previous
+ flags.</p>
+<p class="Pp">Sample code which prevents a trap on divide-by-zero:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>fpsetmask(~FP_X_DZ);
+a = 1.0;
+b = 0;
+c = a / b;
+fpresetsticky(FP_X_DZ);
+fpsetmask(FP_X_DZ);</pre>
+</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
+ NOTES</a></h1>
+<p class="Pp">The <code class="Fn">fpgetprec</code>() and
+ <code class="Fn">fpsetprec</code>() functions provide functionality
+ unavailable on many platforms. At present, they are implemented only on the
+ i386 and amd64 platforms. Changing precision is not a supported feature: it
+ may be ineffective when code is compiled to take advantage of SSE, and many
+ library functions and compiler optimizations depend upon the default
+ precision for correct behavior.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">fenv(3)</a>, <a class="Xr">isnan(3)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">These routines are based on SysV/386 routines of the same
+ name.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
+<p class="Pp">After a floating point exception and before a mask is set, the
+ sticky flags must be reset. If another exception occurs before the sticky
+ flags are reset, then a wrong exception type may be signaled.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">December 3, 2010</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>