fixes for -O gen-C++ generation of floating point constants

This commit is contained in:
Vern Paxson 2024-08-13 14:42:25 -07:00
parent a93a69ba62
commit 6daf9d5b88

View file

@ -17,6 +17,16 @@ string Fmt(double d) {
if ( d == 0.0 && signbit(d) ) if ( d == 0.0 && signbit(d) )
return "-0.0"; return "-0.0";
if ( isinf(d) ) {
string infty = "std::numeric_limits<double>::infinity()";
if ( d < 0.0 )
infty = "-" + infty;
return infty;
}
if ( isnan(d) )
return "std::numeric_limits<double>::quiet_NaN()";
// Unfortunately, to_string(double) is hardwired to use %f with // Unfortunately, to_string(double) is hardwired to use %f with
// default of 6 digits precision. // default of 6 digits precision.
char buf[8192]; char buf[8192];