2017-01-15 31 views
16

Liệu có tồn tại một IEEE đôi x>0sqrt(x*x) ≠ x, dưới điều kiện là việc tính toán x*x không tràn hoặc tràn dưới để Inf, 0, hoặc một số denormal?IEEE đôi như vậy mà sqrt (x * x) ≠ x

Điều này được cho rằng sqrt trả về kết quả đại diện gần nhất, và x*x (cả theo yêu cầu của tiêu chuẩn IEEE, "hoạt động căn bậc hai được tính như trong độ chính xác vô hạn, và sau đó làm tròn đến một trong hai nổi gần nhất số điểm của độ chính xác được chỉ định bao quanh kết quả vô cùng chính xác "). Theo giả định rằng nếu đôi như vậy sẽ tồn tại, thì có lẽ là các ví dụ gần 1, tôi đã viết một chương trình để tìm các mẫu đối sánh này, và nó không tìm thấy bất kỳ từ 1.01.0000004780981346.

Câu hỏi tương tự trước perfect squares and floating point numbers trả lời câu hỏi ở tiêu cực cho các tình huống trong đó tính toán x*x không không liên quan đến làm tròn. Câu trả lời đó không đủ cho câu hỏi này bởi vì có thể có x*x để làm tròn theo một hướng, sau đó sqrt(x*x) để làm tròn theo số cùng hướng, do đó tạo ra câu trả lời không chính xác là x.

Trả lời

19

Sylvie Boldo có formally proved rằng số dấu phẩy động đáp ứng các điều kiện trong câu hỏi của bạn không tồn tại.

Trích dẫn tóm tắt của bài viết:

chuyên gia Floating-point biết rằng công thức toán học có thể thất bại hoặc cho kết quả không chính xác khi thực hiện trong dấu chấm động số học. Bài viết này mô tả một ví dụ, đáng ngạc nhiên, nó là hoàn toàn không phải như vậy. Thật vậy, bằng cách sử dụng cơ số 2 và dãy số mũ không giới hạn , việc tính căn bậc hai của hình vuông là số dấu phẩy động a là chính xác | a |. Kết quả là một thực tế là tính toán dấu phẩy động của a/sqrt (một + b) luôn trong khoảng thời gian [−1, 1]. Điều này loại bỏ nhu cầu thử nghiệm khi gọi một arccos hoặc arcsin về giá trị này. Để đảm bảo hơn, thuộc tính này được chính thức kiểm tra bằng cách sử dụng trợ lý Coq và thư viện Flocq . Kết luận sẽ đưa ra những gợi ý về những gì xảy ra mà không có các giả định và trong các thiết bị khác, nơi hành vi này là rất khác nhau .

"sử dụng cơ số 2" có thể ẩn trong câu hỏi của bạn (mặc dù IEEE cũng đã định dạng số thập phân và hoạt động chuẩn) và "phạm vi số mũ không liên kết" tương đương với "không tràn hoặc tràn " sự hạn chế.

Lý do khiến cho bất động sản có thể là x*x “mở rộng” (khoảng [1,2] được ánh xạ tới [1,4] chẳng hạn) theo cách sao cho khi không có tràn hoặc dòng chảy, làm tròn có thể xảy ra cho * là lành tính và x vẫn là số dấu phẩy động nổi bật gần nhất với căn bậc hai thực của sản phẩm dấu phẩy động x*x.Đối số gợn sóng bằng tay này không cấu thành một bằng chứng, vì vậy nó là một điều tốt mà bài viết liên kết ở trên chứa một.

+2

Tôi tin rằng kết quả này, nhưng vẫn thấy nó cực kỳ đáng ngạc nhiên. –

Các vấn đề liên quan