Hi, ALL On Fri, 18 Feb 2000, Peter Malzacher wrote: > l.TT() is 'nan' ( = not a number) i.e underflow or overflow A small correction here. Yes, "nan" is Not A Number, but "nan" is neither underflow (minus infinity, -inf) nor overflow (plus infinity, +inf). Mathematical library (at least under Linux, glibc 2.1) works correctly with +/- inf and nan. Try this example: #include <iostream> #include <cmath> int main(void) { float inf_m = log(0), // -inf inf_p = -inf_m, // +inf nan = log(-1); // or sqrt(-1); cout.form("infinites (inf): %g %g %g %g %g\n", inf_m,inf_p,inf_m+inf_p, 1/inf_m, exp(inf_m)); cout.form("not a numbers (nan): %g %g %g %g\n",nan,-nan,1/nan,0*nan); } The output is: infinites (inf): -inf inf nan -0 0 not a numbers (nan): nan nan nan nan And remember that this example do not use complex numbers! Here is "man finite": isinf, isnan, finite - test for infinity or not-a-number (NaN) SYNOPSIS #include <math.h> int isinf(double value); int isnan(double value); int finite(double value); DESCRIPTION The isinf() function returns -1 if value represents nega- tive infinity, 1 if value represents positive infinity, and 0 otherwise. The isnan() function returns a non-zero value if value is "not-a-number" (NaN), and 0 otherwise. The finite() function returns a non-zero value if value is neither infinite nor a "not-a-number" (NaN) value, and 0 otherwise. CONFORMING TO BSD 4.3 ---- End of man page ---- Note, these functions do NOT confirm POSIX, so use it carefully in portable applications! With best wishes, Alexander Zvyagin.
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:19 MET