use*_*931 5 c++ sqrt
是否保证对于static_cast<int>(std::sqrt(x * x)) == x所有正 x 且 x*x 不会溢出?
static_cast<int>(std::sqrt(x * x)) == x
如果不是,我将如何稳健地计算这些数字的平方根?
Ast*_*ngs 0
来自 cppreference:
std::sqrtIEEE 标准要求准确。唯一需要精确的其他操作是算术运算符和函数std::fma。舍入到返回类型后(使用默认舍入模式), 的结果std::sqrt与无限精确的结果没有区别。换句话说,误差小于0.5 ulp。其他功能,包括std::pow,则不受如此限制。(参考)
std::sqrt
std::fma
std::pow
因此,考虑到您的限制,我看不出有任何担心的理由。
归档时间:
5 年,3 月 前
查看次数:
201 次
最近记录: