6.11.76 fmodl Function
Calculates the remainder of the division between two long double-precision floating-point values.
Include
<math.h>
Prototype
long double fmodl(long double x, long double y);
Arguments
x
- a long double precision floating-point value
y
- a long double precision floating-point value
Return Value
Returns the remainder of x/y
with the same sign as x
and
magnitude less than the magnitude of y
, or returns NaN if y
is zero.
Remarks
If y
is zero, a domain error occurs, and errno
will be set
to EDOM
.
Example
See the notes at the beginning of this chapter or section for
information on using printf()
or scanf()
(and other functions reading and writing the stdin
or
stdout
streams) in the example code.
#include <math.h>
#include <stdio.h>
#include <errno.h>
int main(void)
{
long double x,y,z;
errno = 0;
x = 7.0;
y = 3.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
errno = 0;
x = 7.0;
y = 7.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
errno = 0;
x = -5.0;
y = 3.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
errno = 0;
x = 5.0;
y = -3.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
errno = 0;
x = -5.0;
y = -5.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
errno = 0;
x = 7.0;
y = 0.0;
z = fmodl(x, y);
if (errno)
perror("Error");
printf("For fmodl(%Lf, %Lf) the remainder is %Lf\n", x, y, z);
}
Example Output
For fmod(7.000000, 3.000000) the remainder is 1.000000
For fmod(7.000000, 7.000000) the remainder is 0.000000
For fmod(-5.000000, 3.000000) the remainder is -2.000000
For fmod(5.000000, -3.000000) the remainder is 2.000000
For fmod(-5.000000, -5.000000) the remainder is -0.000000
Error: domain error
For fmod(7.000000, 0.000000) the remainder is nan