2009-07-21 4 views

답변

5

:

참고 :math 모듈은 주로 플랫폼 C math 라이브러리 함수 주위에 얇은 래퍼로 구성되어 있습니다. 예외적 인 경우의 동작은 C 표준에 의해 느슨하게 지정되며, Python은 플랫폼 C 구현에서 많은 기능 오류보고 동작을 상속받습니다. 결과적으로 오류 케이스에서 발생하는 특정 예외 (일부 인수가 예외적 인 것으로 간주되는지 여부)는 유용한 교차 플랫폼 또는 교차 릴리스 방법으로 정의되지 않습니다. 예를 들어 math.log(0)-Inf을 반환하거나 ValueError 또는 OverflowError을 발생시킬 경우 math.log(0)이 발생하는 경우 OverflowError이 발생하는 경우 math.log(0L)ValueError을 대신 생성 할 수 있습니다.

모든 함수는 args 중 하나 이상이 NaN 인 경우 조용한 NaN을 반환합니다. 신호 NaN은 예외를 발생시킵니다. 예외 유형은 여전히 ​​플랫폼 및 libm 구현에 따라 다릅니다. EDOM은 일반적으로 ValueError이고 errno ERANGEOverflowError입니다.

버전 2.6에서 변경 : 파이썬 이전 버전의 작업의 결과를 NaN로 입력 플랫폼과 libm 구현에 의존한다.

+0

이것은 파이썬이 현재 플랫폼의 math.h 구현을 사용한다는 것을 의미합니까? – Paradius

+1

이렇게 생각하면 http://svn.python.org/projects/python/trunk/Include/pymath.h 믿을 관련 코드가 있습니다. – SilentGhost

+0

@paradius, 어떻게하면 플랫폼 C 라이브러리의 얇은 래퍼를 해석 할 수 있습니까? "현재 플랫폼의 구현을 사용하는 것과 다르게"...? –

2

파이썬은 링크 된 C 라이브러리를 사용합니다. Windows에는 '플랫폼 C 라이브러리'가 없습니다. 실제로 모든 버전에서 여러 버전의 MicrosoftCRunTimeLibrary (MSCRT)가 있습니다.

관련 문제