Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 263 → Rev 264

/SPARTAN/trunk/src/debug/print.c
41,7 → 41,7
#define DEFAULT_DOUBLE_PRECISION 16
#define DEFAULT_DOUBLE_BUFFER_SIZE 128
 
void print_double(double num, __u16 precision)
void print_double(double num, __u8 modifier, __u16 precision)
{
double intval,intval2;
int counter;
48,6 → 48,7
int exponent,exponenttmp;
unsigned char buf[DEFAULT_DOUBLE_BUFFER_SIZE];
unsigned long in1,in2;
/*
if (fmath_is_nan(num)) {
print_str("NaN");
61,6 → 62,23
num=fmath_abs(num);
 
if ((modifier=='E')||(modifier=='e')) {
intval2=fmath_fint(fmath_get_decimal_exponent(num),&intval);
exponent=intval;
if ((intval2<0.0)&&(exponent<0)) exponent--;
num = num / ((fmath_dpow(10.0,exponent)));
print_double(num,modifier+1,precision); //modifier+1 = E => F or e => f
putchar(modifier);
if (exponent<0) {
putchar('-');
exponent*=-1;
}
print_number(exponent,10);
return;
}
 
/*
if (fmath_is_infinity(num)) {
print_str("Inf");
232,7 → 250,9
int irqpri, i = 0;
va_list ap;
char c;
 
__u16 precision;
va_start(ap, fmt);
 
irqpri = cpu_priority_high();
241,8 → 261,22
while (c = fmt[i++]) {
switch (c) {
 
/* control character */
case '%':
precision = DEFAULT_DOUBLE_PRECISION;
if (fmt[i]=='.') {
precision=0;
c=fmt[++i];
while((c>='0')&&(c<='9')) {
precision = precision*10 + c - '0';
c=fmt[++i];
}
}
switch (c = fmt[i++]) {
 
/* percentile itself */
298,9 → 332,20
*/
case 'F':
print_double(va_arg(ap, double),'F',precision);
goto loop;
case 'f':
print_double(va_arg(ap, double),DEFAULT_DOUBLE_PRECISION);
print_double(va_arg(ap, double),'f',precision);
goto loop;
case 'E':
print_double(va_arg(ap, double),'E',precision);
goto loop;
case 'e':
print_double(va_arg(ap, double),'e',precision);
goto loop;
/*
* Decimal and hexadecimal conversions.
*/