2016-09-23 2 views
4

exponent(0.0)은 도메인 에러를 제공하는 이유가 있습니까? 0.0의 지수는 1.0의 지수와 같아야합니다. 0은 Int이므로 도메인에서 벗어난 이유는 혼란 스럽습니다 (또는 버그입니까?)하지만 오류가 설정되었으므로 여기, 그것은 의식적인 선택 인 것 같다).왜 지수 (0.0)가 DomainError입니까?

답변

6

보러 값으로 재생할 수 :

julia> exponent(2.0)                                  
1 --- 2^1 = 2 

julia> exponent(4.0)                                  
2 --- 2^2 = 4 

julia> exponent(1.0)                                  
0 --- 2^0 = 1 

julia> exponent(0.5)                                  
-1 --- 2^-1 = 0.5 

julia> exponent(0.25)                                  
-2 --- 2^-2 = 0.25 

. 
. 
. 

그래서 그 의미

julia> exponent(0.0)                                  
-∞ --- 2^-∞ = 0.0 

음의 무한대 도메인 오류를 야기한다.

+2

오, 이런 ... 내 두뇌가 조금은 작동하지 않았다. 좋은 설명. –

+1

'2.0^(- 1024) == 0.0이므로 오류없이 그대로 침묵하는 똑같은 정신으로'expoenent (0.0) == -1024'을 오류없이 작성하는 것이 타당합니다. 이것은 Float64 (IEEE754 표준)의 실제 지수 비트 표현에 충실합니다. 단지 그럴듯하다고 말하는 것뿐입니다. 현재의 행동은 수학적 진실에 가깝습니다. –

+1

그러나'exponent (0.0) == -1024'는'exponent (nextfloat (0.0)) == -1074'와는 일치하지 않습니다. – DNF