#include <vppinfra/error.h>
#include <vppinfra/string.h>
#include <vppinfra/os.h> /* os_puts */
+#include <vppinfra/math.h>
typedef struct
{
return s;
}
-static u8 *
-do_percent (u8 ** _s, u8 * fmt, va_list * va)
+static const u8 *
+do_percent (u8 ** _s, const u8 * fmt, va_list * va)
{
u8 *s = *_s;
uword c;
- u8 *f = fmt;
+ const u8 *f = fmt;
format_info_t fi = {
.justify = '+',
u8 *
va_format (u8 * s, const char *fmt, va_list * va)
{
- u8 *f = (u8 *) fmt, *g;
+ const u8 *f = (u8 *) fmt, *g;
u8 c;
g = f;
sign = 1;
}
+ /* Check for not-a-number. */
+ if (isnan (x))
+ return format (s, "%cNaN", sign ? '-' : '+');
+
/* Check for infinity. */
- if (x == x / 2)
+ if (isinf (x))
return format (s, "%cinfinity", sign ? '-' : '+');
x = normalize (x, &expon, &prec);