我所遇到的一些舊代碼,計算數值權衡(-0.5 *的std ::日誌(X))
double y = 1/std::sqrt(x);
使用:
constexpr double base16 = 16.0;
double log_base16 = std::log(base16);
double y = std::pow(base16, -0.5 * std::log(x)/log_base16);
基本上是:
double y = std::exp(-0.5 * std::log(x));
有什麼理由對於數值的好處(如準確性或更有可能避免下溢/過流程)之間的方法?原作者可能會這樣想。
可以多大? 'constexpr'在2011年得到了標準化。 – Potatoswatter
@Patatoswatte我清理了語法,使得例子儘可能清晰。 – keith