ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
remainder.c File Reference
#include <fenv.h>
#include <math.h>
Include dependency graph for remainder.c:

Macros

#define remainder_def(type, name, isnan_func, isinf_func, llrint_func)

Functions

 remainder_def (float, remainderf, isnan, isinf, llrintf)
 remainder_def (double, remainder, isnan, isinf, llrint)
 remainder_def (long double, remainderl, isnan, isinf, llrintl)

Macro Definition Documentation

◆ remainder_def

#define remainder_def ( type,
name,
isnan_func,
isinf_func,
llrint_func )
Value:
type name(type x, type y) \
{ \
__ESBMC_HIDE:; \
if (isnan_func(x) || isnan_func(y)) \
return NAN; \
\
if (y == 0.0) \
return NAN; \
\
if (isinf_func(x)) \
return NAN; \
\
if (isinf_func(y)) \
return x; \
\
int old_rm = fegetround(); \
fesetround(FE_TONEAREST); \
long long rquot = llrint_func(x / y); \
fesetround(old_rm); \
\
return x - (y * rquot); \
} \
\
type __##name(type x, type y) \
{ \
__ESBMC_HIDE:; \
return name(x, y); \
}
int fegetround(void)
Definition fenv.c:5

Function Documentation

◆ remainder_def() [1/3]

remainder_def ( double ,
remainder ,
isnan ,
isinf ,
llrint  )

◆ remainder_def() [2/3]

remainder_def ( float ,
remainderf ,
isnan ,
isinf ,
llrintf  )

◆ remainder_def() [3/3]

remainder_def ( long double ,
remainderl ,
isnan ,
isinf ,
llrintl  )