URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [stdlib/] [__adjust.c] - Rev 1765
Compare with Previous | Blame | View Log
/* * return (*acc) scaled by 10**dexp. */ #include <_ansi.h> #include <reent.h> #include "std.h" #define abs(x) (((x) < 0) ? -(x) : (x)) double _DEFUN (__adjust, (ptr, acc, dexp, sign), struct _reent *ptr _AND double *acc _AND int dexp _AND int sign) /* *acc the 64 bit accumulator */ /* dexp decimal exponent */ /* sign sign flag */ { double r; if (dexp > MAXE) { ptr->_errno = ERANGE; return (sign) ? -HUGE_VAL : HUGE_VAL; } else if (dexp < MINE) { ptr->_errno = ERANGE; return 0.0; } r = *acc; if (sign) r = -r; if (dexp == 0) return r; if (dexp < 0) return r / __exp10 (abs (dexp)); else return r * __exp10 (dexp); }