Skip to content

Commit

Permalink
Merge ccc5498 into a853fff
Browse files Browse the repository at this point in the history
  • Loading branch information
v923z committed Jul 20, 2020
2 parents a853fff + ccc5498 commit 7dfabdd
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
34 changes: 34 additions & 0 deletions lib/libm_dbl/round.c
@@ -0,0 +1,34 @@
#include "libm.h"

#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
#define EPS DBL_EPSILON
#elif FLT_EVAL_METHOD==2
#define EPS LDBL_EPSILON
#endif
static const double_t toint = 1/EPS;

double round(double x) {
union {double f; uint64_t i;} u = {x};
int e = u.i >> 52 & 0x7ff;
double_t y;

if (e >= 0x3ff+52)
return x;
if (u.i >> 63)
x = -x;
if (e < 0x3ff-1) {
/* raise inexact if x!=0 */
FORCE_EVAL(x + toint);
return 0*u.f;
}
y = x + toint - toint - x;
if (y > 0.5)
y = y + x - 1;
else if (y <= -0.5)
y = y + x + 1;
else
y = y + x;
if (u.i >> 63)
y = -y;
return y;
}
1 change: 1 addition & 0 deletions ports/stm32/Makefile
Expand Up @@ -191,6 +191,7 @@ LIBM_SRC_C = $(addprefix lib/libm_dbl/,\
nearbyint.c \
pow.c \
rint.c \
round.c \
scalbn.c \
sin.c \
sinh.c \
Expand Down

0 comments on commit 7dfabdd

Please sign in to comment.