부동 소수점 계수 정확도가 중요한 이유는 무엇입니까?


9

대부분의 스몰 토크 방언은 현재 순진한 부정확 한 부동 계수 (fmod / remainder)를 구현합니다.
방금 다른 최신 부동 소수점 연산에서와 마찬가지로 Squeak / Pharo 및 결국 표준에 대한 다른 스몰 토크 준수 (IEEE 754, ISO / IEC 10967)를 개선하기 위해 이것을 변경했습니다.

그러나 이러한 변경 사항을 채택하기 위해 표준을 준수하는 것이 동료를 설득하기에 충분하지 않을 것으로 예상되므로 어떤 상황 에서이 정확성이 실제로 중요한지 설명하면 많은 도움이 될 것입니다. 나는 지금까지 혼자서 좋은 모범을 찾을 수 없었습니다.

여기 누구가 왜 / 언제 / 어디서 (어떤 알고리즘의 IOW) 그러한 계수의 정확성이 중요한지 알고 있습니까?


내가 생각하는 당신이 더 나은 답변을 얻을 수 있습니다 전산 과학 등의 문제가 (하위) 도메인에 더 중요하기 때문이다. 어쨌든 여기서 질문은 주제에 관한 것이며 다시 게시하기 며칠 전에 답변자에게 알려 주어야합니다.
Raphael

1
나는 fmod / modf 정확성에 의존하는 코드를 보았지만, 언어가 순진한 부동 소수점 모듈러스를 구현할 수있는 가능성은 훨씬 더 무서워 보인다. 예제 코드 : (1) 나머지를 가져갑니다. (2) 0이면 정지합니다. (3) 2를 곱하고 (1)로 이동하십시오. 이 과정에서 유용한 작업을 수행 할 수 있지만 중요한 점은이 과정의 종료가 나머지의 정확성과 곱셈의 정확성에 달려 있다는 것입니다. 전산 과학 이 더 적절 해 보이기 때문에 여기에 더 완전한 답을 주어야하는지 확실하지 않습니다 이 질문에.
Thomas Klimpel

한 가지 추측 : 삼각 함수의 입력을 정규화하는 것입니다.
Paul A. Clayton

@ThomasKlimpel 참고 문헌을 찾으면 관심이 있습니다. 순진 나머지는 IEEE를 가장 가까운 짝수로 반올림하여 (x-((y / x) truncated * x))로 정의됨에 따라 exactRem (x, y) == 0 => naiveRem (x, y) == 0. 문제는 불행하게도 많은 경우에 순진한 기대에 부응하는 naiveRem (4.0,0.1) == 0.0과 같은 잘못된 정확한 분할 양수입니다!
aka.nice

@ PaulA.Clayton 네, 아마도 사인은 아마도 ... 어쩌면 내 생각에 순진 rem은 대략 rem까지 정확하게 동일하게 작동한다는 것입니다. 360에는 6 비트 세트 만 있고 360으로 나누기는 360의 배수에 대해서는 반올림하지 않기 때문에 1e16 도입니다. 그런 경우에 정말로 도움이 되셨습니까?
aka.nice

답변:


1

부정확 한 부동 소수점 구현은 날씨에 영향을 미칩니다.

서로 다른 하드웨어에서 동일한 입력을 사용하여 날씨 예측을 실행하는 테스트가 있었고 예측이 분기되었습니다. 반복 알고리즘을 실행하는 경우 여기에서 약간의 반올림 차이가 발생하거나 햇빛이 비로 변하는 나비 효과가 발생할 수 있습니다.

표준의 반올림 규칙 (IEEE 754, ISO / IEC 10967)은 숫자 알고리즘이 가장 정확하게 예측 가능하고 매번 동일한 결과를 재현 할 수 있도록 신중하게 고려되었습니다. 반올림 규칙을 위해 설계된 표준 수치 알고리즘을 따르지 않으면 날씨 예측과 같은 반복 알고리즘이 임의의 결과를 줄 수도 있습니다.

(그리고 그것은 일기 예보에 대해 말하지 않습니까? :)


1
반면에, 나비 효과가 햇빛으로 비가 바뀌면 결과는 유용하지 않습니다.
gnasher729

옛날 옛적에, 나는 충분한 숫자가없는 ASCII로 부동 데이터를 저장했습니다. 한 고객이 나에게 문제를 보여주고 싶었지만 ASCII 파일에서 데이터를 복원 한 후 문제가 사라졌습니다. 나는 그의 몇 가지 문제가 중요하지 않다고 말했는데, 그의 문제가 잘못되면 내가 할 수있는 일이 없습니다. 그는 자신의 사업이라고 말했다. 내 자신의 문제를 재현 할 수있는 소프트웨어를 제공하는 것이었다. 그는 옳았다.
aka.nice

그렇기 때문에 % a를 사용하여 16 진수로 저장하기 위해 부동 소수점 숫자를 출력해야합니다.
Goswin von Brederlow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.