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.