我有一个C++应用程序,需要比较两个值并确定哪个更大。唯一的麻烦是,一个数字表示在对数空间中,而另一个数字则没有。例如:

double log_num_1 = log(1.23);
double num_2 = 1.24;

如果我想比较num_1num_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/

10-12 19:52