我无法理解在计算范围[-1,1)之外的数字指数后面的数学(实际上,我不确定使用CORDIC计算exp的好范围,我读过的一些地方[-pi/4,pi/4],而在另外一些中,我已经阅读[-1,1))使用CORDIC算法。有人可以举个例子吗?如何使用CORDIC计算[-1,1]以外的数字的指数?
我阅读http://zone.ni.com/reference/en-XX/help/371599G-01/lvfpga/ht_exponential/以下声明:
“x必须是在范围[-1,1)来计算EXP(X),当x在该范围之外,找到一个整数q和一个实数。 r,其中r在[0,ln(2))范围内,使得x = q×ln(2)+ r。然后可以计算2^q×exp(r),这等价于exp(x )。因为r在[-1,1)的有效范围内,所以可以使用此函数来计算exp(r)。“
但是我怎么能找到q和r对我来说没什么意义呢?
第二种方法我发现了在http://www.xilinx.com/support/documentation/application_notes/xapp552-cordic-floating-point-operations.pdf它告诉我们将所述数目为整数和小数部分后使用等式:
cosh(int + frac) = cosh(int) * cosh(frac) + sinh(int) * sinh(frac)
sinh(int + frac) = cosh(int) * sinh(frac) + cosh(frac) * sinh(int)
COSH(int)和双曲正弦(INT)从查找表会被执行。但是这种方法计算量更大,所以我更喜欢前一个。
这可能是在[数学堆栈Exchange站点]更适合(https://开头的数学.stackexchange.com /) –
是的,但我找不到像Verilog,HDL和CORDIC这样的标签,这使得很难找到合适的人。 – user3575732