Pollita <[EMAIL PROTECTED]> wrote: > log(0) in any base (except 0, which would be silly) is an undefined > number.
Yes, that's what the teachers told us before they admitted the existance of infinity. > the libc log() function will return an exceedingly small number > to avoid causing widepsread panic when log(0) is attempted > (-1.7976931348623E+308 shown below). Are you sure? % cat log.c #include <stdio.h> #include <math.h> int main() { printf("%g\n",log(0)); } % gcc log.c -o log -lm % ./log -inf That's on Linux. On Tru64, it prints: -1.79769e+308 > The test function for log: > > $x2 = (int) pow($base, log($x, $base)); > > attempts to check that $x2 is close to $x, but since log(0,*) will return > an excessively small number, pow() winds up choking. > > Suggest: $x2 = (int) log(pow($x,base),$base); instead. Thanks for the suggestion, but it dumps core nevertheless: % sapi/cli/php -r 'echo log(pow(0,2),2),"\n";' Floating point exception (core dumped) % sapi/cli/php -r 'echo log(0,2),"\n";' Floating point exception (core dumped) > P.S. example below using log in base 1 is also nonsensical... only > log(1,1) is a valid use of log with a base parameter of 1, any other value > results in "undefined" Umm, yes, maybe - but my point was that PHP should not dump core in such situations, and it certainly should not do so in a "make test" ("Wait a minute, what's that core file here? And now you want me to 'make install'?!"). Regards... Michael -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php