Many systems don't return a negative value for negative infinities; so do
a separate check.
double dval;
dval = va_arg(ap, double);
- if (isinf(dval) == 1)
+ if (isinf(dval))
{
- sarg = flags & FL_UPPER ? "INF" : "inf";
- slen = strlen(sarg);
- goto is_string;
- }
- if (isinf(dval) == -1)
- {
- sarg = flags & FL_UPPER ? "-INF" : "-inf";
+ if (isgreater(dval, 0.0))
+ {
+ sarg = flags & FL_UPPER ? "INF" : "inf";
+ }
+ else
+ {
+ sarg = flags & FL_UPPER ? "-INF" : "-inf";
+ }
slen = strlen(sarg);
goto is_string;
}