On 11/04/2019 11.45, Xin, Peixing wrote:
> Hi, Math experts:
> 
> Looking at the codes below, for many math operations, CPython is checking 
> errno to determine the error status even though the math function returns 
> normal value back. Is it a safe solution? From the description here 
> http://man7.org/linux/man-pages/man3/errno.3.html and 
> https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152351, it 
> looks apis probably set the errno when normal result is returned. Or being a 
> side effect by calling other APIs in the implementation. In this situation, 
> CPython's math operation might raise exceptions however in fact the result is 
> correct.
> 
> https://github.com/python/cpython/blob/master/Modules/mathmodule.c#L956
> https://github.com/python/cpython/blob/master/Modules/mathmodule.c#L864

This is safe because all places first set errno to 0. Errno is a thread
local variable, so other threads cannot influence the variable during
the calls.

This is one of the many quirks that Mark has implemented for platforms
bugs in various libm.

Christian
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to