C ++ 에서 pow (0, 0) 의 결과는 기본적으로 구현 정의 된 동작입니다. 수학적으로 N^0
는 항상 있어야 1
하지만 0^N
항상 0
for 여야 하는 모순적인 상황 N > 0
이 있으므로이 결과에 대해 수학적으로 기대할 수 없습니다. 이 Wolfram Alpha 포럼 게시물은 좀 더 자세한 내용을 담고 있습니다.
IEC 60559 부동 소수점 산술 지원을 다루는 섹션에서 국제 표준 (프로그래밍 언어) C에 대한 이론적 설명에 따라 pow(0,0)
결과를 갖는 1
것이 많은 응용 프로그램에 유용 하지만
일반적으로 C99는 숫자 값이 유용한 NaN 결과를 피합니다. [...] pow (∞, 0) 및 pow (0,0)의 결과는 모두 1입니다.이 정의를 이용할 수있는 응용 프로그램이 있기 때문입니다. 예를 들어, x (p)와 y (p)가 p = a에서 0이되는 분석 함수라면 exp (y * log (x))와 같은 pow (x, y)는 p가 접근 할 때 1에 접근합니다. ㅏ.
C ++ 업데이트
leemes가 제대로 지적한 바와 같이 나는 원래의 기준에 연결된 복잡한 버전 펑 그동안 복잡하지 않은 그것이 버전 주장 도메인 오류 초안 C ++ 표준은 받는 다시 떨어질 초안 C 표준 모두 C99 및 C11 섹션에서 7.12.7.4
포로 기능의 단락 2 말한다 ( 내 강조 ) :
[...] x가 0이고 y가 0이면 도메인 오류 가 발생할 수 있습니다 . [...]
내가 알 수있는 한이 동작은 지정되지 않은 동작 임을 의미합니다 . 약간의 섹션을 되감기 7.12.1
오류 조건 처리 는 다음과 같이 말합니다.
[...] 입력 인수가 수학적 함수가 정의 된 도메인 외부에있는 경우 도메인 오류가 발생합니다. [...] 도메인 오류에서 함수는 구현 정의 값을 반환합니다. 정수 표현식 math_errhandling & MATH_ERRNO가 0이 아니면 정수 표현식 errno는 값 EDOM을 획득합니다. [...]
있었다 그래서 만약 도메인 오류 다음이 될 것이다 구현 정의 행동 하지만 최신 버전 모두 gcc
와 clang
의 값 errno
입니다 0
그것이되지 않도록 도메인 오류 그 컴파일러.
자바 스크립트 업데이트
를 들어 자바 스크립트 ECMAScript® 언어 사양 섹션에서 15.8
Math 객체 에서 15.8.2.13
펑 (x, y)는 다른 조건이 사이에 말한다 :
y가 +0이면 x가 NaN이더라도 결과는 1입니다.