대부분의 스몰 토크 방언은 현재 순진한 부정확 한 부동 계수 (fmod / remainder)를 구현합니다.
방금 다른 최신 부동 소수점 연산에서와 마찬가지로 Squeak / Pharo 및 결국 표준에 대한 다른 스몰 토크 준수 (IEEE 754, ISO / IEC 10967)를 개선하기 위해 이것을 변경했습니다.
그러나 이러한 변경 사항을 채택하기 위해 표준을 준수하는 것이 동료를 설득하기에 충분하지 않을 것으로 예상되므로 어떤 상황 에서이 정확성이 실제로 중요한지 설명하면 많은 도움이 될 것입니다. 나는 지금까지 혼자서 좋은 모범을 찾을 수 없었습니다.
여기 누구가 왜 / 언제 / 어디서 (어떤 알고리즘의 IOW) 그러한 계수의 정확성이 중요한지 알고 있습니까?
내가 생각하는 당신이 더 나은 답변을 얻을 수 있습니다 전산 과학 등의 문제가 (하위) 도메인에 더 중요하기 때문이다. 어쨌든 여기서 질문은 주제에 관한 것이며 다시 게시하기 며칠 전에 답변자에게 알려 주어야합니다.
—
Raphael
나는 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