readv.2, pthread_tryjoin_np.3, stailq.3, strlen.3, wcslen.3: Arrange .SH sections...
[man-pages.git] / man3 / fmod.3
blobf49d8bb230c9bbe66fedc0e211b2f57c8054f689
1 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
2 .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
3 .\"     <mtk.manpages@gmail.com>
4 .\"
5 .\" %%%LICENSE_START(VERBATIM)
6 .\" Permission is granted to make and distribute verbatim copies of this
7 .\" manual provided the copyright notice and this permission notice are
8 .\" preserved on all copies.
9 .\"
10 .\" Permission is granted to copy and distribute modified versions of this
11 .\" manual under the conditions for verbatim copying, provided that the
12 .\" entire resulting derived work is distributed under the terms of a
13 .\" permission notice identical to this one.
14 .\"
15 .\" Since the Linux kernel and libraries are constantly changing, this
16 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
17 .\" responsibility for errors or omissions, or for damages resulting from
18 .\" the use of the information contained herein.  The author(s) may not
19 .\" have taken the same level of care in the production of this manual,
20 .\" which is licensed free of charge, as they might when working
21 .\" professionally.
22 .\"
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
25 .\" %%%LICENSE_END
26 .\"
27 .\" References consulted:
28 .\"     Linux libc source code
29 .\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
30 .\"     386BSD man pages
31 .\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
32 .\" Modified 2002-07-27 by Walter Harms
33 .\"     (walter.harms@informatik.uni-oldenburg.de)
34 .\"
35 .TH FMOD 3  2021-03-22 "" "Linux Programmer's Manual"
36 .SH NAME
37 fmod, fmodf, fmodl \- floating-point remainder function
38 .SH SYNOPSIS
39 .nf
40 .B #include <math.h>
41 .PP
42 .BI "double fmod(double " x ", double " y );
43 .BI "float fmodf(float " x ", float " y );
44 .BI "long double fmodl(long double " x ", long double " y );
45 .fi
46 .PP
47 Link with \fI\-lm\fP.
48 .PP
49 .RS -4
50 Feature Test Macro Requirements for glibc (see
51 .BR feature_test_macros (7)):
52 .RE
53 .PP
54 .BR fmodf (),
55 .BR fmodl ():
56 .nf
57     _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
58         || /* Since glibc 2.19: */ _DEFAULT_SOURCE
59         || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
60 .fi
61 .SH DESCRIPTION
62 These functions compute the floating-point remainder of dividing
63 .I x
65 .IR y .
66 The return value is
67 .IR x
69 .I n
71 .IR y ,
72 where
73 .I n
74 is the quotient of
75 .I x
77 .IR y ,
78 rounded toward zero to an integer.
79 .SH RETURN VALUE
80 On success, these
81 functions return the value \fIx\fP\ \-\ \fIn\fP*\fIy\fP,
82 for some integer
83 .IR n ,
84 such that the returned value has the same sign as
85 .I x
86 and a magnitude less than the magnitude of
87 .IR y .
88 .PP
90 .I x
92 .I y
93 is a NaN, a NaN is returned.
94 .PP
96 .I x
97 is an infinity,
98 a domain error occurs, and
99 a NaN is returned.
102 .I y
103 is zero,
104 a domain error occurs, and
105 a NaN is returned.
108 .I x
109 is +0 (\-0), and
110 .I y
111 is not zero, +0 (\-0) is returned.
112 .SH ERRORS
114 .BR math_error (7)
115 for information on how to determine whether an error has occurred
116 when calling these functions.
118 The following errors can occur:
120 Domain error: \fIx\fP is an infinity
121 .I errno
122 is set to
123 .BR EDOM
124 (but see BUGS).
125 An invalid floating-point exception
126 .RB ( FE_INVALID )
127 is raised.
129 Domain error: \fIy\fP is zero
130 .I errno
131 is set to
132 .BR EDOM .
133 An invalid floating-point exception
134 .RB ( FE_INVALID )
135 is raised.
136 .\" POSIX.1 documents an optional underflow error, but AFAICT it doesn't
137 .\" (can't?) occur -- mtk, Jul 2008
138 .SH ATTRIBUTES
139 For an explanation of the terms used in this section, see
140 .BR attributes (7).
141 .ad l
144 allbox;
145 lbx lb lb
146 l l l.
147 Interface       Attribute       Value
149 .BR fmod (),
150 .BR fmodf (),
151 .BR fmodl ()
152 T}      Thread safety   MT-Safe
156 .sp 1
157 .SH CONFORMING TO
158 C99, POSIX.1-2001, POSIX.1-2008.
160 The variant returning
161 .I double
162 also conforms to
163 SVr4, 4.3BSD, C89.
164 .SH BUGS
165 Before version 2.10, the glibc implementation did not set
166 .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6784
167 .I errno
169 .B EDOM
170 when a domain error occurred for an infinite
171 .IR x .
172 .SH SEE ALSO
173 .BR remainder (3)