Chip123 科技應用創新平台

標題: Verilog上算10^N次方(N為小數) [打印本頁]

作者: 呆頭鴨    時間: 2009-12-16 09:51 PM
標題: Verilog上算10^N次方(N為小數)
想請問大大們~5 _' z4 g3 c* z% `  d# N. g
根據數學式
5 L, Y' A; Y' _9 n8 s1 R" N用對數的方式算出N次方根的答案之後,答案的格式為10^N) }' F- k1 x1 [0 J
N如果是整數的話計算上沒什麼問題,
! m( z2 x3 [5 {& }- V不過如果是像1.41598452 這樣的小數,在verilog內要怎麼做才可以
9 J! {# w) q/ U得到10^1.41598452 的答案呢@@?
作者: xcx123    時間: 2009-12-27 04:51 PM
我也想知道,有高人发表一些意见吗
作者: kevin    時間: 2009-12-28 11:46 AM
回復 1# 呆頭鴨 ' `1 Z4 u% {% N' }, {& m
如果不想用查表的話,把10^x' 轉成 2^(log2(10)*x') 即  10^x' =  2^(log2(10)*x')
! O: N# Y9 L4 |3 k% B; M注意x的整數部分要先提出,即 x = 整數 + x' ---------->> 0 <= x' <= 1,包含0 與 1.4 k2 e7 j" f6 P6 P1 A3 z
整數部分的計算沒有問題,小數部分用 泰勒級數逼近如下 即可.! P6 }+ w1 N; ~9 j+ `
2^x ~=: b/ m9 I1 H% ]/ {3 H) ^
                                 1.05 b+ f. g0 \7 L9 P; _5 `
                        +        0.6930321187 * x9 _$ G/ \) G  E1 d7 B- s  r% M
                        +        0.2413797743 * x^24 u2 ^# N& e3 p2 [& z5 ?* y6 v
                        +        0.0520323499 * x^3* B/ a" _, g6 l
                        +        0.0135557571 * x^4
作者: 呆頭鴨    時間: 2010-1-2 02:30 PM
請問大大~0.6930321187  這個值是怎麼來的@@? ln 2 ?
作者: kevin    時間: 2010-1-5 10:53 AM
請問大大~0.6930321187  這個值是怎麼來的@@? ln 2 ?* S9 t( J; e# V" H3 T' O2 F! c9 }2 I+ G
呆頭鴨 發表於 2010-1-2 02:30 PM
, h) T' q) c2 q6 g- T- c; L# F

/ r# @3 R! T6 p. |/ V( K; r# \0 @- Y# j2 [* z: |  p" ]
這些係數是經過用Remez Exchange Algorithm優化過,比單純用有限項數的泰勒級數的係數好,誤差較小.
作者: 呆頭鴨    時間: 2010-1-5 09:29 PM
那X^1/2  (開根號)2 }6 ]! G4 Q& D7 \% ?# d
" g. K; y) M# P5 L- ^
也可以用類似作法嗎??
作者: 賈斯丁    時間: 2010-1-13 11:17 AM
可以參考看看牛頓法根號逼近,較簡單
作者: 呆頭鴨    時間: 2010-1-13 09:26 PM
回復 7# 賈斯丁 6 _2 |, p2 U/ q8 S7 k
. s# K6 _2 O  M% F
; X0 G+ H4 _) ^  c
    大大~牛頓法的公式有用到除法運算,有辦法簡化他不使用"除法"來實現嗎@@?




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com.tw/) Powered by Discuz! X3.2