我有一个C++应用程序,需要比较两个值并确定哪个更大。唯一的麻烦是,一个数字表示在对数空间中,而另一个数字则没有。例如:
double log_num_1 = log(1.23);
double num_2 = 1.24;
如果我想比较
num_1
和num_2
,我必须使用log()
或exp()
,我想知道一种方法是否比另一种方法更容易计算(即通常运行时间更短)。您可以假设我正在使用标准的cmath
库。换句话说,以下内容在语义上是等效的,因此速度更快:
if(exp(log_num_1) > num_2)) cout << "num_1 is greater";
或者
if(log_num_1 > log(num_2)) cout << "num_1 is greater";
最佳答案
AFAIK的算法,复杂度是相同的,差异应该只是一个(希望可以忽略不计)常数。
因此,我将使用exp(a) > b
,只是因为它不会在无效输入时中断。
关于C++ Exp与日志: Which is faster?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/817491/