我有一个 C++ 应用程序,需要比较两个值并决定哪个值更大。唯一的复杂之处是一个数字在对数空间中表示,而另一个则不是。例如:
double log_num_1 = log(1.23);
double num_2 = 1.24;
如果我想比较num_1
and num_2
,我必须使用log()
or exp()
,我想知道一个是否比另一个更容易计算(即通常运行时间更短)。你可以假设我正在使用标准cmath
图书馆。
换句话说,以下内容在语义上是等效的,因此哪个更快:
if(exp(log_num_1) > num_2)) cout << "num_1 is greater";
or
if(log_num_1 > log(num_2)) cout << "num_1 is greater";
据我所知,算法的复杂性是相同的,差异应该只是一个(希望可以忽略不计的)常数。
因此,我会使用exp(a) > b
,只是因为它不会因无效输入而中断。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)