CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
对数系列函数

函数

float64_t csky_log10_f64 (float64_t x)
 双精度数以10为底的对数函数的快速逼近 更多...
 
float64_t csky_log2_f64 (float64_t x)
 双精度数以2为底的对数函数的快速逼近 更多...
 
float64_t csky_log_f64 (float64_t x)
 双精度数以e为底的对数函数的快速逼近 更多...
 

简要说明

对数系列函数包括log, log2 和 log10, 分别代表以e为底,以2为底和以10为底的对数函数。 和指数函数一样,计算对数函数的常用方法有多项式逼近法和查表法。这是一个双精度版本, 即输入和输出都是双精度数。

函数说明

float64_t csky_log10_f64 ( float64_t  x)
参数
[in]x双精度输入
返回
log10(x)

函数的实现基于换底公式,从以10为底变成以e为底。

实现过程如下:

  1. 特殊情况的处理。
  2. 用换底公式,转为计算以e为底的对数函数。
float64_t csky_log2_f64 ( float64_t  x)
参数
[in]x双精度输入
返回
log2(x).

函数的实现依赖以下变换:

log2(x)  = log2^k*(1+f)       其中 sqrt(2)/2 < 1+f < sqrt(2)
         = k + log(1+f)/log2. 然后
log(1+f) = log(1+s) - log(1-s), 其中 s = f/(1+f)
         = 2s + 2/3 s**3 + 2/5 s**5 + .....,
         = 2s + s*R
其中 R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s  +Lg6*s  +Lg7*s

实现过程如下:

  1. 首先, 计算k的值使得(1+f)在sqrt(2)/2和sqrt(2)范围内。
  2. 然后, 计算R的值。
  3. 最后, 计算log2(x)的值,并处理特殊情况。
float64_t csky_log_f64 ( float64_t  x)
参数
[in]x双精度输入
返回
log(x).

函数的实现基于(x-1)绝对值的范围,当(x-1)的绝对值小于0.03时,级数展开被用于计算函数值; 当(x-1)的绝对值大于0.03时,函数使用级数展开和查表相结合的方法。

实现过程如下:

  1. 首先, 处理特殊情况。
  2. 然后, 处理(x-1)的绝对值小于0.03的情况。
  3. 最后, 处理(x-1)的绝对值大于0.03的情况。