unums가 어떻게 IEEE의 음의 0을 모방 할 수 있습니까?


9

현재 John Gustafson ( Youtube ) 의 "The End of Error-Unum Computing"을 읽고 있습니다. 내가 여전히 확신하지 못하는 것은 IEEE에서 음수 부호 0 으로 처리 된 사례가 unum으로 처리되는 방식입니다.

따라서, 우선, unum은 특정 정확한 값 (부동 소수점과 유사)을 나타낼 수 있으며, 정확한 값 (정확한 -∞ 및 ∞ 포함) 사이에있는 열린 간격을 나타낼 수도 있습니다. 따라서 완전한 실수 라인은 정확한 값과 열린 간격을 교대로 표시합니다.

-∞, (-∞, -maxreal), -maxreal, ... -smallsubnormal, (-smallsubnormal, 0),

0,

(0, 소규모 정규), 소규모 정규, ... maxreal, (maxreal, ∞), ∞

이런 식으로 (IEEE 전통에서) 언더 플로 및 오버플로와 같은 예외적 인 값은 개방 된 간격 일뿐입니다. 다시 말해, 이전의이 특별한 조건은 이제 일반적인 경우로 바뀝니다.

IEEE의 -∞은 {-∞}과 (-∞, -maxreal)의 합집합에 해당합니다.

그리고 부호 0은 간격 (-smallsubnormal, 0)과 (0, smallsubnormal) 일 수 있습니다.

그러나 1 / (-smallsubnormal, 0)은 이제 -∞가 아닌 (-∞, -maxreal)입니다. 반면 1/0은 ∞입니다.

내가 여전히 망설이고있는 것은 IEEE -0과 +0에서 동일하다는 것입니다. 그러나 그들은 unums에 없습니다. 매핑이 100 %가 아닌 것 같습니다. 따라서 차이가 나타날 수있는 코너 케이스가 있는지 궁금합니다 (그리고 그러한 경우가 실제로 관련이 있는지).

( 음수 0이 중요한 이유를 알고 있습니까? , 음의 부동 소수점 값에 사용 )


1
매핑이 일대일이어야한다고 생각하는 이유는 무엇입니까? 연결 한 질문에 언급 된 이유는 unums가 아닌 문제이므로 왜 음수 0이됩니까?
Ordous

@Ordous : 왜냐하면 (Ch.18.1, p.257) "Unums는 수레의 수퍼 셋입니다. Floats는 단순히 ubit가 0 등인 unum입니다." 을 포함하여 모두가 ( guess또는 시작으로) 문자 그대로 번역 할 수 있음을 제안합니다. 나는 문자 그대로의 번역이 unum을 최대한 활용하지 못한다는 것을 완전히 알고 있습니다.
false

5
책을 손에 넣지 않고 견적에 반대하는 것은 상당히 어렵습니다. 그러나 IEEE 프리젠 테이션에서 그의 슬라이드는 "컴퓨팅 할 필요 없음"이라는 unum 컴퓨팅의 장점으로 언급되었습니다. 따라서 정확하게 언더 플로되므로 음의 0이 필요하지 않습니다. 이 시스템을 확장하여 음수 0을 포함 할 수도 있지만 그렇게 할 이유가 없습니다. IEEE의 음수 0은 수학과 일치하지 않습니다 .
Ordous

@Ordous : 언더 플로우는 열린 간격 (-smallsubnormal, 0)과 그 양의 대응 물에 의해 처리됩니다. 따라서 이것들은 -0과 +0에 가장 가까운 것입니다. 그러나이 간격이 실제로 마치처럼 행동 할 수 있습니까?
거짓

8
언더 플로는 여기서 처리 되지 않고 존재하지 않습니다 . 음수 0은 IEEE의 문제이며이 표준은 다른 것들과 함께 수정하려고합니다. -0과 +0을 동일하게 할 수는 없습니다. 그러나 IEEE에서는 그 차이가 0이므로 동일해야합니다. 이 역설은 좋은 해결책이 없습니다. unums에서 그들이 어떻게 차이가 있고, 따라서 그들은 수 없습니다 동일합니다. 시스템의 요점은 IEEE의 문제를 해결하는 것이지만 반드시 시스템과 일치하지 않는다는 것을 의미합니다. 이것은 불일치 중 하나입니다. 그리고 그의 책에서 오래된 표준을 사용하기 위해 내장 시스템이 제안 된 이유입니다.
Ordous

답변:


3

댓글이 너무 길어서 답변으로 작성하세요 ...

IEEE의 문제점은 우리가 차별화해야 할 세 가지 경우가 있지만 이것에 대한 두 가지 표현 만 있다는 것입니다.

  • 음수, 절대 값이 너무 작아 표현하기 어려움-IEEE -0.0으로 표시되며 쉽게 매핑 될 수 있음 (-smallsubnormal,0)
  • IEEE 0.0으로 표시되는 정확히 null 값 0
  • 양수 값이 너무 작아 표현하기 어렵다. 이것도 IEEE 표현 0.0 을 가지고 있지만에 매핑되어야합니다 (0, +smallsubnormal).

문제는 지금 하지 네거티브 제로 그러나 우리는 구별 할 수없는 IEEE 0.0 번째 또는 세 번째 경우에 해당! 즉 : IEEE에 Unum의에서 매핑 기능은 하지 전단 사 - 그리고 영원히 같이되지 않습니다 어떤 것이 정확한 또는 간격 일 경우 다른 IEEE 값도 우리가 결코 알지 못할!

따라서 나는 -0.0을 매핑하는 것이 절대적으로 좋다고 생각하며 (-smallsubnormal,0), IEEE 0.0이 0더 매핑 될지 아니면 더 나은지를 결정해야 합니다 (0, +smallsubnormal). 나는 개인적으로 첫 번째 경향이 있지만 그렇게 권위적이지는 않습니다 ...

IEEE와의 비교 (-0.0은 0.0) : 어쨌든 정확한 평등 (C 또는 C ++ : == 연산자)을 비교해서는 안되지만 차이의 절대 값 만 적절한 임계 값보다 작습니다. 이 문제는 UNUMS를 사용하더라도 부분적으로 만 제거됩니다. 이제 u- 비트가 설정 되지 않은 경우 정확한 동등성을 비교할 있지만 설정되어 있어도 실제로 알지 못합니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.