147 lines
4.8 KiB
Groff
147 lines
4.8 KiB
Groff
.\" 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
|
|
.\" %FreeBSD: src/share/man/man3/fpgetround.3,v 1.9.2.2 2001/12/17 11:30:11 ru Exp %
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd August 23, 1993
|
|
.Dt FPGETROUND 3
|
|
.Os
|
|
.Sh ̾¾Î
|
|
.Nm fpgetround ,
|
|
.Nm fpsetround ,
|
|
.Nm fpsetprec ,
|
|
.Nm fpgetprec ,
|
|
.Nm fpgetmask ,
|
|
.Nm fpsetmask ,
|
|
.Nm fpgetsticky ,
|
|
.Nm fpresetsticky
|
|
.Nd IEEE ÉâÆ°¾®¿ôÅÀ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
|
|
.Sh ½ñ¼°
|
|
.In ieeefp.h
|
|
.Pp
|
|
.Bd -literal
|
|
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;
|
|
.Pp
|
|
.Ft fp_rnd_t
|
|
.Fn fpgetround void
|
|
.Ft fp_rnd_t
|
|
.Fn fpsetround "fp_rnd_t direction"
|
|
.Pp
|
|
.Bd -literal
|
|
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;
|
|
.Ed
|
|
.Ft fp_prec_t
|
|
.Fn fpgetprec void
|
|
.Ft fp_prec_t
|
|
.Fn fpsetprec "fp_prec_t precision"
|
|
.Pp
|
|
.Bd -literal
|
|
#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 */
|
|
.Ed
|
|
.Ft fp_except_t
|
|
.Fn fpgetmask void
|
|
.Ft fp_except_t
|
|
.Fn fpsetmask "fp_except_t mask"
|
|
.Ft fp_except_t
|
|
.Fn fpgetsticky void
|
|
.Ft fp_except_t
|
|
.Fn fpresetsticky "fp_except_t sticky"
|
|
.Sh ²òÀâ
|
|
ÉâÆ°¾®¿ôÅÀÎã³°¤¬¸¡½Ð¤µ¤ì¤ë¤È¡¢Îã³°¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¡¢Îã³°¥Þ¥¹¥¯
|
|
¤¬¸¡ºº¤µ¤ì¤Þ¤¹¡£¥Þ¥¹¥¯¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¥È¥é¥Ã¥×¤¬È¯À¸¤·¤Þ¤¹¡£¤³¤Î
|
|
¥ë¡¼¥Á¥ó¤Ç¤Ï¡¢ÉâÆ°¾®¿ôÅÀÎã³°¥Þ¥¹¥¯¤ÎÀßÄê¡¢¤ª¤è¤ÓÎã³°¤¬È¯À¸¤·¤¿¸å¤Ç¤ÎÎã³°
|
|
¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤Î¥ê¥»¥Ã¥È¤¬¤Ç¤¤Þ¤¹¡£ÉâÆ°¾®¿ôÅÀ´Ý¤á¥â¡¼¥É¤ÈÀºÅÙ¤â
|
|
ÀßÄê¤Ç¤¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpgetround
|
|
´Ø¿ô¤Ï¡¢¸½ºß¤ÎÉâÆ°¾®¿ôÅÀ´Ý¤á¥â¡¼¥É¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpsetround
|
|
´Ø¿ô¤Ï¡¢ÉâÆ°¾®¿ôÅÀ´Ý¤á¥â¡¼¥É¤òÀßÄꤷ¡¢Á°¤Î¥â¡¼¥É¤ò
|
|
Ìᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpgetprec
|
|
´Ø¿ô¤Ï¡¢¸½ºß¤ÎÉâÆ°¾®¿ôÅÀÀºÅÙ¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpsetprec
|
|
´Ø¿ô¤Ï¡¢ÉâÆ°¾®¿ôÅÀÀºÅÙ¤òÀßÄꤷ¡¢Á°¤ÎÀºÅÙ¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpgetmask
|
|
´Ø¿ô¤Ï¡¢¸½ºß¤ÎÉâÆ°¾®¿ôÅÀÎã³°¥Þ¥¹¥¯¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpsetmask
|
|
´Ø¿ô¤Ï¡¢ÉâÆ°¾®¿ôÅÀÎã³°¥Þ¥¹¥¯¤òÀßÄꤷ¡¢Á°¤Î¥Þ¥¹¥¯¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpgetsticky
|
|
´Ø¿ô¤Ï¡¢¸½ºß¤ÎÉâÆ°¾®¿ôÅÀ¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
.Fn fpresetsticky
|
|
´Ø¿ô¤Ï¡¢ÉâÆ°¾®¿ôÅÀ¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¡¢Á°¤Î¥Õ¥é¥°
|
|
¤òÌᤷ¤Þ¤¹¡£
|
|
.Pp
|
|
°Ê²¼¤Ï¡¢0 ½ü»»¤Ë¤è¤ë¥È¥é¥Ã¥×¤òËɤ°¥³¡¼¥ÉÎã¤Ç¤¹¡£
|
|
.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 ´ØÏ¢¹àÌÜ
|
|
.Xr isnan 3
|
|
.Sh ·Ù¹ð
|
|
ÉâÆ°¾®¿ôÅÀÎã³°¤¬È¯À¸¤·¤¿¸å¡¢¤«¤Ä¡¢¥Þ¥¹¥¯¤òÀßÄꤹ¤ëÁ°¤Ë¡¢
|
|
¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤ò¥ê¥»¥Ã¥È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¹¥Æ¥£¥Ã¥¥Õ¥é¥°¤ò¥ê¥»¥Ã¥È
|
|
¤¹¤ëÁ°¤ËÊ̤ÎÎã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï¡¢¸í¤Ã¤¿Îã³°¥¿¥¤¥×¤¬
|
|
ÄÌÃΤµ¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
|
|
.Sh Îò»Ë
|
|
¤³¤Î¥ë¡¼¥Á¥ó¤Ï¡¢Æ±¤¸Ì¾Á°¤Î SysV/386 ¥ë¡¼¥Á¥ó¤Ë´ð¤Å¤¤¤Æ¤¤¤Þ¤¹¡£
|
|
.\"X kuma 1999-11-5
|