คำถามติดแท็ก floating-point

3
ฉันยังจำเป็นต้องใช้จุดคงที่เพื่อรับประกันว่าคอมพิวเตอร์จะได้ผลลัพธ์เหมือนกันสำหรับการดำเนินการทางคณิตศาสตร์อีกต่อไปหรือไม่?
ฉันบอกคอมพิวเตอร์ที่ทันสมัยที่สุดว่าเป็นไปตามมาตรฐานจุดลอยตัวเดียวกันหมายความว่าพวกเขาทุกคนจะได้รับคำตอบเดียวกันสำหรับการดำเนินการทางคณิตศาสตร์ที่กำหนดหากอินพุตเหมือนกันหรือไม่? ฉันถามเพราะฉันกำลังค้นคว้าหาข้อมูลเกี่ยวกับการสร้างเกม RTS บนเครือข่ายและการซิงค์ตำแหน่งของยูนิตนับร้อยดูเหมือนจะเป็นวิธีที่ไม่ดี ดังนั้นถ้าฉันส่งเฉพาะอินพุตเท่านั้นฉันต้องรับประกันว่าลูกค้าทั้งหมดจะได้รับผลลัพธ์เดียวกันโดยให้พวกเขาเรียกใช้การจำลองจากอินพุตเหล่านั้น ฉันอ่านว่าเกม RTS ที่เก่ากว่าใช้การคำนวณจุดคงที่ แต่ฉันไม่รู้ว่ายังคงต้องใช้กับคอมพิวเตอร์ที่ทันสมัยหรือไม่หากพวกเขาปฏิบัติตามมาตรฐานเดียวกันหรือไม่ ฉันยังบอกด้วยว่าถึงแม้จะไม่แน่ชัด แต่ผลลัพธ์ของจุดลอยตัวนั้นถูกกำหนดไว้สำหรับอินพุตเดียวกัน คอมพิวเตอร์ยังคงมีการเบี่ยงเบนแม้ว่าพวกเขาจะเป็นไปตามมาตรฐานจุดลอยตัวเดียวกันหรือไม่? ฉันกำลังเขียนเกมนี้ใน C # ไม่แน่ใจว่าเรื่องนั้นคิดว่าฉันจะพูดถึงมันต่อไป

2
`Vector <float> ควรจะสะท้อนกลับหรือควรเป็นไปตามความหมายของ IEEE 754?
เมื่อเปรียบเทียบค่าทศนิยมเพื่อความเท่าเทียมมีสองวิธีที่แตกต่างกัน: NaNจะไม่เท่ากับตัวเองซึ่งตรงกับมาตรฐาน IEEE 754สเปค NaNมีความเท่าเทียมกับตัวเองซึ่งให้คุณสมบัติทางคณิตศาสตร์ของReflexivityซึ่งเป็นสิ่งจำเป็นต่อความหมายของความสัมพันธ์ที่เท่าเทียมกัน สร้างขึ้นใน IEEE ลอยชนิดจุดใน C # ( floatและdouble) ปฏิบัติตามมาตรฐาน IEEE ความหมายสำหรับ==และ!=(และผู้ประกอบการเชิงสัมพันธ์เช่น&lt;) แต่ให้มั่นใจ reflexivity สำหรับobject.Equals, IEquatable&lt;T&gt;.Equals(และCompareTo) ตอนนี้พิจารณาห้องสมุดที่ให้ structs เวกเตอร์ที่ด้านบนของ/float doubleประเภทเวกเตอร์ดังกล่าวจะเกิน==/ !=และแทนที่/object.EqualsIEquatable&lt;T&gt;.Equals สิ่งที่ทุกคนเห็นพ้องต้องกันคือ==/ !=ควรทำตามความหมายของ IEEE คำถามคือห้องสมุดควรใช้Equalsวิธีการ (ซึ่งแยกจากตัวดำเนินการความเสมอภาค) ในวิธีที่สะท้อนกลับหรือในวิธีที่ตรงกับความหมายของ IEEE อาร์กิวเมนต์สำหรับการใช้ความหมายของ IEEE สำหรับEquals: เป็นไปตาม IEEE 754 มันเร็วกว่า (อาจมาก) เพราะสามารถใช้ประโยชน์จากคำสั่ง SIMD ได้ ฉันได้ถามคำถามแยกต่างหากเกี่ยวกับสแต็คโอเวอร์โฟลว์เกี่ยวกับวิธีที่คุณแสดงความเท่าเทียมสะท้อนกลับโดยใช้คำสั่ง SIMD และผลกระทบต่อประสิทธิภาพการทำงานของพวกเขา: คำแนะนำ SIMD สำหรับการเปรียบเทียบความเท่าเทียมกันของจุดลอยตัว อัปเดต:ดูเหมือนว่าเป็นไปได้ที่จะใช้ความเท่าเทียมแบบสะท้อนได้อย่างมีประสิทธิภาพโดยใช้คำสั่ง SIMD …

1
Unums สามารถเลียนแบบศูนย์ลบของ IEEE ได้อย่างไร
ฉันกำลังอ่าน "จุดจบของข้อผิดพลาด - Unum Computing" โดย John Gustafson ( Youtube ) สิ่งที่ฉันยังไม่แน่ใจเกี่ยวกับคือกรณีที่จัดการใน IEEE โดยศูนย์ลบลงนามได้รับการจัดการกับ Unums ดังนั้นก่อนอื่น unums อนุญาตให้แสดงค่าที่แน่นอนบางอย่าง (คล้ายกับคะแนนลอย) และอนุญาตเพิ่มเติมเพื่อแสดงช่วงเวลาเปิดที่อยู่ระหว่างค่าที่แน่นอน (รวมถึงที่แน่นอน-exact และ∞) ดังนั้นจำนวนจริงทั้งหมดจะถูกแทนด้วยการสลับค่าที่แม่นยำและช่วงเวลาเปิด: -∞, (-∞, -maxreal), -maxreal, ... -smallsubnormal, (-smallsubnormal, 0), 0, (0, smallsubnormal), smallsubnormal, ... maxreal, (maxreal, ∞), ∞ ด้วยวิธีนี้ค่าพิเศษ (ตามธรรมเนียม IEEE) เช่นอันเดอร์โฟลว์และโอเวอร์โฟลว์เป็นเพียงช่วงเวลาเปิด ในคำอื่น ๆ : เงื่อนไขพิเศษก่อนหน้านี้ตอนนี้กลายเป็นกรณีปกติ IEEE's -∞สอดคล้องกับสหภาพของ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.