SYNOPSIS: Added feature test macro requirements.

RETURN VALUE: Added details for special argument cases.
Rewrote ERRORS section; noted that errno is not always set; see
also http://sources.redhat.com/bugzilla/show_bug.cgi?id=6783.
Updated CONFORMING TO.
SYNOPSIS: Added feature test macro requirements.
RETURN VALUE: Added details for special argument cases.
Rewrote ERRORS section; noted that errno is not always set; see
also http://sources.redhat.com/bugzilla/show_bug.cgi?id=6783.
Updated CONFORMING TO.
This commit is contained in:
Michael Kerrisk 2008-08-01 05:26:18 +00:00
parent 6bd01965d4
commit 1cc72c09fc
1 changed files with 81 additions and 13 deletions

View File

@ -1,4 +1,6 @@
.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
.\" <mtk.manpages@gmail.com>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
@ -28,7 +30,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
.TH FMOD 3 2002-07-27 "" "Linux Programmer's Manual"
.TH FMOD 3 2008-07-29 "" "Linux Programmer's Manual"
.SH NAME
fmod, fmodf, fmodl \- floating-point remainder function
.SH SYNOPSIS
@ -43,28 +45,94 @@ fmod, fmodf, fmodl \- floating-point remainder function
.fi
.sp
Link with \fI\-lm\fP.
.sp
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.sp
.ad l
.BR fmodf (),
.BR fmodl ():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE; or
.I cc\ -std=c99
.ad b
.SH DESCRIPTION
The
.BR fmod ()
function computes the remainder of dividing \fIx\fP by
function computes the floating-point remainder of dividing \fIx\fP by
\fIy\fP.
The return value is \fIx\fP \- \fIn\fP * \fIy\fP, where \fIn\fP
is the quotient of \fIx\fP / \fIy\fP, rounded towards zero to an integer.
.SH "RETURN VALUE"
The
.BR fmod ()
function returns the remainder, unless \fIy\fP is zero,
when the function fails and \fIerrno\fP is set.
On success, these
functions return the value \fIx\fP\ \-\ \fIn\fP*\fIy\fP,
for some integer \fIn\fP,
such that the returned value has the same sign as
.I x
and a magnitude less than the magnitude of
.IR y .
If
.I x
or
.I y
is a NaN, a NaN is returned.
If
.I x
is an infinity,
a "domain error" occurs, and
a NaN is returned.
If
.I y
is zero,
a "domain error" occurs, and
a NaN is returned.
If
.I x
is +0 (\-0), and
.I y
is not zero, +0 (\-0) is returned.
.SH ERRORS
See
.BR math_error (7)
for information on how to determine whether an error has occurred
when calling these functions.
.PP
The following errors can occur:
.TP
.B EDOM
The denominator \fIy\fP is zero.
Domain error: \fIx\fP is an infinity
.\" .I errno
.\" is set to
.\" .BR EDOM .
An invalid floating-point exception
.RB ( FE_INVALID )
is raised.
.IP
These functions do not set
.IR errno
for this case.
.\" FIXME . Is it intentional that these functions do not set errno?
.\" They do set errno for the y == 0 case, below.
.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6784
.TP
Domain error: \fIy\fP is zero
.I errno
is set to
.BR EDOM .
An invalid floating-point exception
.RB ( FE_INVALID )
is raised.
.\" POSIX.1 documents an optional underflow error, but AFAICT it doesn't
.\" (can't?) occur -- mtk, Jul 2008
.SH "CONFORMING TO"
C99, POSIX.1-2001.
The variant returning
.I double
also conforms to
SVr4, 4.3BSD, C89.
The
.I float
and
.I "long double"
variants are C99 requirements.
.SH "SEE ALSO"
.BR remainder (3)