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) .\" 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 .\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are .\" manual provided the copyright notice and this permission notice are
@ -28,7 +30,7 @@
.\" Modified 2002-07-27 by Walter Harms .\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de) .\" (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 .SH NAME
fmod, fmodf, fmodl \- floating-point remainder function fmod, fmodf, fmodl \- floating-point remainder function
.SH SYNOPSIS .SH SYNOPSIS
@ -43,28 +45,94 @@ fmod, fmodf, fmodl \- floating-point remainder function
.fi .fi
.sp .sp
Link with \fI\-lm\fP. 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 .SH DESCRIPTION
The The
.BR fmod () .BR fmod ()
function computes the remainder of dividing \fIx\fP by function computes the floating-point remainder of dividing \fIx\fP by
\fIy\fP. \fIy\fP.
The return value is \fIx\fP \- \fIn\fP * \fIy\fP, where \fIn\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. is the quotient of \fIx\fP / \fIy\fP, rounded towards zero to an integer.
.SH "RETURN VALUE" .SH "RETURN VALUE"
The On success, these
.BR fmod () functions return the value \fIx\fP\ \-\ \fIn\fP*\fIy\fP,
function returns the remainder, unless \fIy\fP is zero, for some integer \fIn\fP,
when the function fails and \fIerrno\fP is set. 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 .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 .TP
.B EDOM Domain error: \fIx\fP is an infinity
The denominator \fIy\fP is zero. .\" .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" .SH "CONFORMING TO"
C99, POSIX.1-2001.
The variant returning
.I double
also conforms to
SVr4, 4.3BSD, C89. SVr4, 4.3BSD, C89.
The
.I float
and
.I "long double"
variants are C99 requirements.
.SH "SEE ALSO" .SH "SEE ALSO"
.BR remainder (3) .BR remainder (3)