You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 28, 2025. It is now read-only.
Rust's f32/f64 types specify that they're IEEE-754 2008 compliant, from which the behavior of sqrt is explicitly defined by the standard. The SSE/SSE2 path in both is currently the only target-feature based platform specific alterations in the libm codebase. While these intrinsic based paths are significantly faster, there should be extensive testing to show that these alternative implementations produce identical results across platforms that is consistent with the standard.
For deterministic game networking and simulation stability, we're relying on libm to provide bit-for-bit identical output across multiple targets for common mathematical functions that are not consistent across hardware implementations (i.e. much of the x87 transcendental instructions), and sqrt(f) is a particularly common function to see used.