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