I would just remove the trancendental c implementation. It is not
consistent
with the java one anyway on amd64:
You've got that backwards. The C implementation is actually the
correct result as far as the spec goes and it's what is used by
StrictMath.log. Math.log is allowed to produce less strict results
but it's always correct to use the same implementation as
StrictMath.log.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6539464
It's been 2 years that this is has been open. I don't understand how
come
nobody else has hit this. My only guess is that people don't compare
results
from successive runs.
This is actually a bug in hotspot. The interpreter is using the C
implementation and compiled code is using the log instructions on x86
but the interpreter and compiler are required to use the same
implementation so that Math.log is self consistent. The amd64
interpreter has the code to use the x86 instruction but some code in
AbstractInterpreterGenerator::generate_method_entry keep it from
getting used. Anyway, I've refiled this into hotspot and it should be
fixed in an upcoming hotspot.
tom
christos