ssq*_*idd 5 math floating-point
我最感兴趣的是C/C++中的"exp"和"exp2"函数,但这个问题可能与IEEE 754标准有关,而不是特定的语言特性.
在我10年前做过的一个家庭作业问题中,它尝试按所需的周期C功能对不同的浮点运算进行排序
double exp2 (double)
Run Code Online (Sandbox Code Playgroud)
似乎比...略快
double exp (double)
Run Code Online (Sandbox Code Playgroud)
鉴于"double"使用尾数的二进制表示,我觉得这个结果是合理的.
然而,今天,在以几种不同的方式再次测试这两种方式之后,我看不出任何可衡量的差异.所以我的问题是
有许多平台不太关心他们的数学库,exp2(x)只是简单地实现,exp(x * log(2))反之亦然.这些实现不能提供良好的准确性(或特别好的性能),但它们相当普遍.在执行此操作的平台上,一个函数与另一个函数的成本完全相同,但是额外乘法的成本,无论哪个得到额外的乘法将是两者中较慢的.
在积极调整数学库并尝试提供良好准确性的平台上,这两个函数的性能非常相似.生成结果的指数更容易exp2,但获得高精度有效数可能需要稍微多一些工作; 这两个因素大致均匀,即性能通常相当于10-15%.从广义上讲,exp2通常是两者中较快的.