summaryrefslogtreecommitdiffstats
path: root/share/man/man3
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1995-03-18 16:54:35 +0000
committerbde <bde@FreeBSD.org>1995-03-18 16:54:35 +0000
commit0821aad944bcb33e6bab23977e4a012e8b8a41a9 (patch)
treeb47feaf4ff26160e6ad056cab28e7f2a3c68b76e /share/man/man3
parent4a0584d64d0d52fa2f589fc0907fd297f433cd19 (diff)
downloadFreeBSD-src-0821aad944bcb33e6bab23977e4a012e8b8a41a9.zip
FreeBSD-src-0821aad944bcb33e6bab23977e4a012e8b8a41a9.tar.gz
Obtained from: 1.1.5 (originally by Andrew Moore)
Add the manpage for the stuff in <machine/floatingpoint.h>.
Diffstat (limited to 'share/man/man3')
-rw-r--r--share/man/man3/Makefile8
-rw-r--r--share/man/man3/fpgetround.3138
2 files changed, 144 insertions, 2 deletions
diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile
index 0aa0bbc..a0d6b40 100644
--- a/share/man/man3/Makefile
+++ b/share/man/man3/Makefile
@@ -1,7 +1,11 @@
# @(#)Makefile 8.2 (Berkeley) 12/13/93
-MAN3= assert.3 bitstring.3 end.3 intro.3 queue.3 stdarg.3
-MLINKS+=end.3 edata.3 end.3 etext.3 moncontrol.3 monstartup.3
+MAN3= assert.3 bitstring.3 end.3 fpgetround.3 intro.3 queue.3 stdarg.3
+MLINKS+=end.3 edata.3 end.3 etext.3
+MLINKS+=fpgetround.3 fpsetround.3 fpgetround.3 fpgetmask.3
+MLINKS+=fpgetround.3 fpsetmask.3 fpgetround.3 fpgetsticky.3
+MLINKS+=fpgetround.3 fpsetsticky.3 fpgetround.3 fpresetsticky.3
+MLINKS+=moncontrol.3 monstartup.3
MLINKS+=queue.3 list_entry.3 queue.3 list_head.3 queue.3 list_init.3
MLINKS+=queue.3 list_insert_after.3 queue.3 list_insert_head.3
MLINKS+=queue.3 list_remove.3 queue.3 tailq_entry.3 queue.3 tailq_head.3
diff --git a/share/man/man3/fpgetround.3 b/share/man/man3/fpgetround.3
new file mode 100644
index 0000000..30365afa
--- /dev/null
+++ b/share/man/man3/fpgetround.3
@@ -0,0 +1,138 @@
+.\" Copyright (c) 1993 Andrew Moore, Talke Studio
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)fpgetround.3 1.0 (Berkeley) 9/23/93
+.\"
+.Dd August 23, 1993
+.Dt FPGETROUND 3
+.Os
+.Sh NAME
+.Nm fpgetround ,
+.Nm fpsetround ,
+.Nm fpgetmask ,
+.Nm fpsetmask ,
+.Nm fpgetsticky ,
+.Nm fpresetsticky
+.Nd IEEE floating point interface
+.Sh SYNOPSIS
+.Fd #include <floatingpoint.h>
+.Ft typedef enum {
+.br
+.Ft FP_RN,
+.Li /* round to nearest */
+.br
+.Ft FP_RM,
+.Li /* round to minus infinity */
+.br
+.Ft FP_RP,
+.Li /* round to plus inifinity */
+.br
+.Ft FP_RZ,
+.Li /* truncate */
+.br
+.Ft } fp_rnd;
+.Pp
+.Ft fp_rnd
+.Fn fpgetround ""
+.Ft fp_rnd
+.Fn fpsetround "fp_rnd direction"
+.Fd #define fp_except int
+.Fd #define FP_X_INV 0x01 /* invalid */
+.Fd #define FP_X_OFL 0x08 /* overflow */
+.Fd #define FP_X_UFL 0x10 /* underflow */
+.Fd #define FP_X_DZ 0x04 /* divide-by-zero */
+.Fd #define FP_X_IMP 0x20 /* loss of precision */
+.Fd #define FP_X_DNML 0x02 /* denormal */
+.Ft fp_except
+.Fn fpgetmask ""
+.Ft fp_except
+.Fn fpsetmask "fp_except mask"
+.Ft fp_except
+.Fn fpgetsticky ""
+.Ft fp_except
+.Fn fpresetsticky "fp_except sticky"
+.Sh DESCRIPTION
+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.
+.Pp
+The
+.Fn fpgetround
+function
+returns the current floating point rounding mode.
+.Pp
+The
+.Fn fpsetround
+function
+sets the floating point rounding mode and returns
+the previous mode.
+.Pp
+The
+.Fn fpgetmask
+function
+returns the current floating point exception masks.
+.Pp
+The
+.Fn fpsetmask
+function
+sets the floating point exception masks and returns the
+previous masks.
+.Pp
+The
+.Fn fpgetsticky
+function
+returns the current floating point sticky flags.
+.Pp
+The
+.Fn fpresetsticky
+function
+clears the floating point sticky flags and returns
+the previous flags.
+.Pp
+Sample code which prevents a trap on divide-by-zero:
+.Bd -literal -offset indent
+fpsetmask(~FP_X_DZ);
+a = 1.0;
+b = 0;
+c = a / b;
+fpresetsticky(FP_X_DZ);
+fpsetmask(FP_X_DZ);
+.Ed
+.Sh SEE ALSO
+.Xr isnan 3
+.Sh CAVEAT
+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.
+.Sh HISTORY
+These routines are based on SysV/386 routines of the same name.
OpenPOWER on IntegriCloud