The R Project SVN R

Rev

Rev 19500 | Rev 35148 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 19500 Rev 19855
Line 95... Line 95...
95
	}
95
	}
96
	pow10 = R_pow_di(10., e10);
96
	pow10 = R_pow_di(10., e10);
97
	return(sgn*(floor((x*pow10)*p10+0.5)/pow10)/p10);
97
	return(sgn*(floor((x*pow10)*p10+0.5)/pow10)/p10);
98
    } else { /* -- LARGE or small -- */
98
    } else { /* -- LARGE or small -- */
99
	do_round = max10e - l10	 >= R_pow_di(10., -dig);
99
	do_round = max10e - l10	 >= R_pow_di(10., -dig);
100
	e2 = dig + ((e10>0)? 16 : -16);
100
	e2 = dig + ((e10>0)? 1 : -1) * MAX_DIGITS;
101
	p10 = R_pow_di(10., e2);	x *= p10;
101
	p10 = R_pow_di(10., e2);	x *= p10;
102
	P10 = R_pow_di(10., e10-e2);	x *= P10;
102
	P10 = R_pow_di(10., e10-e2);	x *= P10;
103
	/*-- p10 * P10 = 10 ^ e10 */
103
	/*-- p10 * P10 = 10 ^ e10 */
104
	if(do_round) x += 0.5;
104
	if(do_round) x += 0.5;
105
	x = floor(x) / p10;
105
	x = floor(x) / p10;