Mark Dickinson added the comment:

Also:  -1.0 shouldn't be returned at this level to indicate an error;  these 
are pure C functions 
we're writing---the Python wrappers, and Python error conventions, apply 
further up the chain 
somewhere.

Just so I'm doing something a little more constructive than yelling criticisms 
from the sideline,  
I've attached a file invhyp.c that's how I think the C functions should look.  
Some notes:

- it doesn't touch errno, but lets the platform decide how to handle errors 
(i.e. produce a 
special value/set errno/signal a floating-point exception/some combination of 
these).  This will 
make the asinh, acosh, atanh functions behave in the same way that the regular 
libm functions 
behave on any platform.  So e.g. if a particular platform is used to setting 
errno for domain 
errors like sqrt(-1), it'll do so for atanh/asinh/acosh.  And another platform 
that signals a 
floating-point exception for sqrt(-1) will do the same for atanh(3).

- I've left in the "huge+x > 1.0" test in asinh;  it's kinda pointless, but 
also fairly harmless.  
I think its only point is to make sure that the inexact flag gets set where 
appropriate, and 
Python doesn't much care about the inexact flag.

- I'm reasonably sure that the test "x == 1." in acosh is safe.

Added file: http://bugs.python.org/file9252/invhyp.c

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1640>
__________________________________
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to