Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4921 Serge 1
/*
2
 * return (*acc) scaled by 10**dexp.
3
 */
4
 
5
#include <_ansi.h>
6
#include 
7
#include "std.h"
8
 
9
#define abs(x) (((x) < 0) ? -(x) : (x))
10
 
11
double
12
_DEFUN (__adjust, (ptr, acc, dexp, sign),
13
	struct _reent *ptr _AND
14
	double *acc _AND
15
	int dexp _AND
16
	int sign)
17
     /* *acc	the 64 bit accumulator */
18
     /* dexp	decimal exponent       */
19
     /* sign	sign flag   	       */
20
{
21
  double r;
22
 
23
  if (dexp > MAXE)
24
    {
25
      ptr->_errno = ERANGE;
26
      return (sign) ? -HUGE_VAL : HUGE_VAL;
27
    }
28
  else if (dexp < MINE)
29
    {
30
      ptr->_errno = ERANGE;
31
      return 0.0;
32
    }
33
 
34
  r = *acc;
35
  if (sign)
36
    r = -r;
37
  if (dexp == 0)
38
    return r;
39
 
40
  if (dexp < 0)
41
    return r / __exp10 (abs (dexp));
42
  else
43
    return r * __exp10 (dexp);
44
}