Skip to content

Commit e6c4159

Browse files
authored
Merge pull request #1379 from IMRCLab/feature_print_nan
printf: add support to print NaNs
2 parents 4a35997 + 3c64588 commit e6c4159

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/utils/src/eprintf.c

+15-8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <stdint.h>
3030
#include <stdbool.h>
3131
#include <ctype.h>
32+
#include <math.h>
3233

3334
static const char digit[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
3435
'A', 'B', 'C', 'D', 'E', 'F'};
@@ -275,15 +276,21 @@ int evprintf(putc_t putcf, const char * fmt, va_list ap)
275276
break;
276277
case 'f':
277278
num = va_arg(ap, double);
278-
if(num<0)
279-
{
280-
putcf('-');
281-
num = -num;
282-
len++;
279+
if (isnan(num)) {
280+
putcf('n');len++;
281+
putcf('a');len++;
282+
putcf('n');len++;
283+
} else {
284+
if(num<0)
285+
{
286+
putcf('-');
287+
num = -num;
288+
len++;
289+
}
290+
len += itoa10(putcf, (int)num, 0);
291+
putcf('.'); len++;
292+
len += itoa10(putcf, (num - (int)num) * power(10,precision), precision);
283293
}
284-
len += itoa10(putcf, (int)num, 0);
285-
putcf('.'); len++;
286-
len += itoa10(putcf, (num - (int)num) * power(10,precision), precision);
287294
break;
288295
case 's':
289296
str = va_arg(ap, char* );

0 commit comments

Comments
 (0)