--- server/asobj/Number.cpp.orig Sun Feb 11 10:42:24 2007 +++ server/asobj/Number.cpp Sun Feb 11 11:30:51 2007 @@ -201,17 +201,17 @@ number_val_to_str(double _val, char *_st // Handle non-numeric values. // "printf" gives "nan", "inf", "-inf", so we check explicitly - switch (fpclassify(_val)) { - case FP_NAN: - strcpy(_str, "NaN"); - break; - case FP_INFINITE: + + if (isnan(_val)) + strcpy(_str, "NaN"); + + else if (isinf(_val)) // isinf() cannot be relied on to distinguish -Infinity - strcpy(_str, _val < 0 ? "-Infinity" : "Infinity"); - break; - default: // FP_ZERO, FP_NORMAL and FP_SUBNORMAL - if (fabs(_val) < 0.0001 && - fabs(_val) >= 0.00001) { + strcpy(_str, _val < 0 ? "-Infinity" : "Infinity"); + + else { // FP_ZERO, FP_NORMAL and FP_SUBNORMAL + if (fabs(_val) < 0.0001 && + fabs(_val) >= 0.00001) { // This is the range for which %.15g gives scientific // notation but for which we must give decimal. // We can't easily use %f bcos it prints a fixed number @@ -267,7 +267,8 @@ number_val_to_str(double _val, char *_st } } } -} + } + static void number_ctor(const fn_call& fn)