From 3c6458832728c5cca104b1a3d136de2d6bfa5116 Mon Sep 17 00:00:00 2001 From: Wolfgang Hoenig Date: Wed, 29 May 2024 21:27:06 +0200 Subject: [PATCH] printf: add support to print NaNs --- src/utils/src/eprintf.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/utils/src/eprintf.c b/src/utils/src/eprintf.c index c339bf2dd3..4d18b7dcff 100644 --- a/src/utils/src/eprintf.c +++ b/src/utils/src/eprintf.c @@ -29,6 +29,7 @@ #include #include #include +#include static const char digit[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; @@ -275,15 +276,21 @@ int evprintf(putc_t putcf, const char * fmt, va_list ap) break; case 'f': num = va_arg(ap, double); - if(num<0) - { - putcf('-'); - num = -num; - len++; + if (isnan(num)) { + putcf('n');len++; + putcf('a');len++; + putcf('n');len++; + } else { + if(num<0) + { + putcf('-'); + num = -num; + len++; + } + len += itoa10(putcf, (int)num, 0); + putcf('.'); len++; + len += itoa10(putcf, (num - (int)num) * power(10,precision), precision); } - len += itoa10(putcf, (int)num, 0); - putcf('.'); len++; - len += itoa10(putcf, (num - (int)num) * power(10,precision), precision); break; case 's': str = va_arg(ap, char* );