TW202144997A - 對數計算方法及對數計算電路 - Google Patents
對數計算方法及對數計算電路 Download PDFInfo
- Publication number
- TW202144997A TW202144997A TW109127334A TW109127334A TW202144997A TW 202144997 A TW202144997 A TW 202144997A TW 109127334 A TW109127334 A TW 109127334A TW 109127334 A TW109127334 A TW 109127334A TW 202144997 A TW202144997 A TW 202144997A
- Authority
- TW
- Taiwan
- Prior art keywords
- parameter
- input value
- value
- logarithmic
- output value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/4833—Logarithmic number system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2101/00—Indexing scheme relating to the type of digital function generated
- G06F2101/10—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
Abstract
本發明揭露了一種對數計算方法,其包含有以下步驟:(a)選擇對應到第i次曡代運算的第一參數、第二參數、第三參數及第四參數;(b)判斷輸入值是大於第三參數或是小於第四參數;(c)若是輸入值大於第三參數,透過乘以第一參數以更新輸入值,並透過減去第一參數的對數值以更新輸出值;若是輸入值小於第四參數,透過乘以第二參數以更新輸入值,並減去第二參數的對數值以更新輸出值;若是輸入值位於第三參數與第四參數之間,不改變輸入值與輸出值;(d)將i加上1,並回到步驟(a),直到i等於預設值;(e)當i等於預設值時,將目前的輸出值作為計算結果。
Description
本發明係有關於對數計算方法。
在一般的對數計算電路中,通常是採用座標旋轉數字計算(Coordinate Rotation Digital Computer,CORDIC)方式來實現對數計算,然而,上述方法會需要儲存一個很大的參數表,且也需要使用多個電路設計較為複雜的乘法器,因此,會增加電路設計的複雜度及成本。
因此,本發明的目的之一在於提出一種對數計算方法及相關的電路,其在每次疊代(iteration)運算的過程中僅需要兩次加法以及一次移位,因此可以大幅簡化電路設計,以解決先前技術中的問題。
在本發明的一個實施例中,揭露一種對數計算方法,其用以對一初始輸入值進行對數運算,其包含有以下步驟:(a)選擇對應到第i次曡代運算的一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係由該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新一輸入值,透過減去該第一參數的對數值以更新該輸出值;若是該輸入值小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將i加上1,並回到步驟(a),直到i等於一預設值;以及(e)當i等於該預設值時,將目前的該輸出值作為對該初始輸入值進行對數運算的一輸出結果。
在本發明的另一個實施例中,揭露了一種對數計算電路,其用以對一初始輸入值進行對數運算,且包含有一曡代運算電路,且該曡代運算電路用以依序進行多次曡代運算;針對該曡代運算電路所執行的任一次曡代運算,該曡代運算電路執行以下操作:(a)選擇對應到之一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係根據該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新該輸入值,透過減去該第一參數的對數值以更新一輸出值;若是該輸入小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將更新後的該輸入值及該輸出值作為下一次疊帶運算的輸出值與輸入值;其中該曡代運算電路的最後一次曡代運算所產生的該輸出值作為對該初始輸入值進行對數運算的一計算結果。
第1圖為根據本發明一實施例之對數計算方法的流程圖。如第1圖所示,在步驟100中,流程開始,且準備對初始輸入值x進行對數運算以得到輸出值y,亦即y=ln(x)。在步驟102中,先將輸出值y設為0,參數i設為1(亦即,進行第1次曡代運算,並將初始輸入值x轉換為浮點數表示,亦即將初始輸入值x轉換為x=m*2^n,其中n為正整數,且m為介於0.5~1之間的數值。在一實施例中,m可以是16位元的數位值、且n可以是6位元的數位值。在步驟104中,選擇第i組參數,其中第i組參數包含了xa(i)、xb(i)、limit_up(i)、limit_low(i),此時,由於一開始計算時i等於1,第1組參數所包含的xa(1)、xb(1)、limit_up(1)、limit_low(1)分別為(1/2)、(3/2)、(4/3)、(4/5)。在步驟106,判斷初始輸入值x與參數limit_up(1)、limit_low(1)的大小關係,若是初始輸入值x大於參數limit_up(1),則流程進入步驟108;若是初始輸入值x小於參數limit_low(1),則流程進入步驟110;若是初始輸入值x介於參數limit_up(1)與limit_low(1)之間,則流程進入步驟112。在步驟108中,將初始輸入值x乘上參數xa(1)以進行更新(後續的x均稱為輸入值),並將輸出值y減去ln(xa(1)),亦即x=x*xa(1),且y=y-ln(xa(1))。在步驟110中,將輸入值x乘上參數xb(1),並將輸出值y減去ln(xb(1)),亦即x=x*xb(1),且y=y-ln(xb(1))。在步驟112中,將參數i加上1,並回到步驟104開始進行第二次曡代運算。
需注意的是,由於在以上的參數xa(1)與xb(1)分別滿足1-2^(-1)以及1+2^(-1)的結構,因此,步驟108中的x*xa(1)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xa(1)= x*(1-2^(-1))=x-x>>1,其中“>>”是移位運算子;同理,步驟110中的x*xb(1)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xb(1)= x*(1+2^(-1))=x+x>>1,其中“>>”是移位運算子。
在第二次曡代運算中,在步驟104中所選擇的第2組參數所包含的參數xa(2)、xb(2)、limit_up(2)、limit_low(2)分別為(3/4)、(5/4)、(8/7)、(8/9)。在步驟106,判斷輸入值x與參數limit_up(2)、limit_low(2)的大小關係,若是輸入值x大於limit_up(2),則流程進入步驟108;若是輸入值x小於參數limit_low(2),則流程進入步驟110;若是輸入值x介於參數limit_up(2)與limit_low(2)之間,則流程進入步驟112。在步驟108中,將x乘上xa(2),並將輸出值y減去ln(xa(2)),亦即x=x*xa(2),且y=y-ln(xa(2))。在步驟110中,將輸入值x乘上xb(2),並將輸出值y減去ln(xb(2)),亦即x=x*xb(2),且y=y-ln(xb(2))。
由於在以上的參數xa(2)與xb(2)分別滿足1-2^(-2)以及1+2^(-2)的結構,因此,步驟108中的x*xa(2)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xa(2)= x*(1-2^(-2))=x-x>>2;同理,步驟110中的x*xb(2)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xb(2)= x*(1+2^(-2))=x+x>>2。
接著,繼續進行第三次曡代運算、第四次曡代運算、…直到系統的一預設值,例如,當第八次曡代運算完成之後便將所計算出的輸出值y輸出以作為最後的計算結果,亦即對初始輸入值進行對數計算的結果。
在一實施例中,每一次曡代運算所使用的參數xa(i)、xb(i)、limit_up(i)、limit_low(i)設計如以下的表一與表二:
表一
表二
i | xa(i) | xb(i) |
1 | 1/2 | 3/2 |
2 | 3/4 | 5/4 |
3 | 7/8 | 9/8 |
4 | 15/16 | 17/16 |
5 | 31/32 | 33/32 |
6 | 63/64 | 65/64 |
7 | 127/128 | 129/128 |
8 | 255/256 | 257/256 |
9 | 511/512 | 513/512 |
10 | 1023/1024 | 1025/1024 |
11 | 2047/2048 | 2049/2048 |
12 | 4095/4096 | 4097/4096 |
13 | 8191/8192 | 8193/8192 |
14 | 16383/16384 | 16385/16384 |
15 | 32767/32768 | 32769/32768 |
16 | 65535/65536 | 65537/65536 |
i | limit_up(i) | limit_low(i) |
1 | 4/3 | 4/5 |
2 | 8/7 | 8/9 |
3 | 16/15 | 16/17 |
4 | 32/31 | 32/33 |
5 | 64/63 | 64/65 |
6 | 128/127 | 128/129 |
7 | 256/255 | 256/257 |
8 | 512/511 | 512/513 |
9 | 1024/1023 | 1024/1025 |
10 | 2048/2047 | 2048/2049 |
11 | 4096/4095 | 4096/4097 |
12 | 8192/8191 | 8192/8193 |
13 | 16384/16383 | 16384/16385 |
14 | 32768/32767 | 32768/32769 |
15 | 65536/65535 | 65536/65537 |
16 | 131072 / 131071 | 131072 / 131073 |
透過上表的參數設計,在第一次曡代運算後的輸入值x會介於(2/3)與(4/3)之間,在第二次曡代運算後的輸入值x會介於(5/6)與(8/7)之間,在第三次曡代運算後的輸入值x會介於(14/15)與(16/15)之間,在第四次曡代運算後的輸入值x會介於(30/31)與(32/31)之間,在第五次曡代運算後的輸入值x會介於(62/63)與(64/63)之間,在第六次曡代運算後的輸入值x會介於(126/127)與(128/127)之間,…,亦即隨著曡代運算的次數越多,的輸入值x的數值會越來越逼近1,因而使得輸出值y也會更逼近理想值。在一範例中,若是進行16次曡代運算操作,輸出值y與理想值的誤差為7.6*10^(-6)。
如以上表所述,由於參數xa(i)與xb(i)分別滿足1-2^(-i)以及1+2^(-i)的結構,因此每一次曡代運算中有關於輸入值x的計算在電路上可以透過一個移位暫存器以及一個加法器來實現;此外,由於參數xa(i)、xb(i)、limit_up(i)、limit_low(i)都是常數,因此可以事先將這些參數的對數值預先計算出來並建立出一個查找表,以供每一次曡代運算中計算輸出值y使用,亦即每一次曡代運算中輸出值y的計算在電路上可以僅透過一個加法器來實現。綜上所述,每一次曡代運算總共只需要一次移位運算、兩次加法運算以及兩個比較運算便可以實現,因此可以有效的降低對數計算過程中的複雜度,且也降低了電路的製造及設計成本。
第2圖為根據本發明一實施例之對數計算電路200的示意圖。如第2圖所示,對數計算電路200包含了一曡代運算電路210以及一選擇電路220,其中曡代運算電路210係用來執行第1圖所示的每一次曡代運算,而選擇電路220則是根據目前所進行的第i次疊代運算來傳送相關的參數至疊代運算電路210,例如上述的i、xa(i)、xb(i)、limit_up(i)、limit_low(i)以及目前的輸入值x及輸出值y。在本實施例中在曡代運算電路210的操作中,曡代運算電路210包含了移位暫存器202以及兩個加法器204、206,其中移位暫存器202以及加法器204係用來執行步驟108、110中有關於輸入值x的操作,亦即x=x*xa(i)或是x=x*xb(i),其中圖示的x’用來表示下一次曡代運算電路210的輸入值x;且加法器206係用來執行步驟108、110中有關於輸出值y的操作,亦即y=y-ln(xa(i))或是y=y-ln(xb(i)),其中圖示的y’用來表示下一次曡代運算輸出值y。由於本領域具有通常知識者再搭配有關於第1圖所述的流程後應能輕易了解到對數計算電路200的操作,故對數計算電路200的操作細節不再重述。
簡要歸納本發明,在本發明的對數計算方法及相關的電路中,透過特殊的參數設定以及曡代運算流程,可以讓每一個曡代運算僅需要透過一個移位暫存器及兩個加法器便可實現,因此,可以有效的降低對數計算過程中的複雜度,且也降低了電路的製造及設計成本。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100~112:步驟
200:對數計算電路
210:曡代運算電路
202:移位暫存器
204:加法器
206:加法器
220:選擇電路
x,x’:輸入值
xa(i):參數
xb(i):參數
y,y’:輸出值
第1圖為根據本發明一實施例之對數計算方法的流程圖。
第2圖為根據本發明一實施例之對數計算電路的示意圖。
100~112:步驟
Claims (10)
- 一種對數計算方法,其用以對一初始輸入值進行對數運算,其包含有以下步驟: (a) 選擇對應到第i次曡代運算的一第一參數、一第二參數、一第三參數以及一第四參數; (b) 判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係由該初始輸入值所得到; (c) 若是該輸入值大於該第三參數,透過乘以該第一參數以更新一輸入值,並透過減去該第一參數的對數值以更新該輸出值;若是該輸入值小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值; (d) 將i加上1,並回到步驟(a),直到i等於一預設值;以及 (e) 當i等於該預設值時,將目前的該輸出值作為對該初始輸入值進行對數運算的一計算結果。
- 如申請專利範圍第1項所述的對數計算方法,其中當i等於1時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(1/2)、(3/2)、(4/3)、(4/5);當i等於2時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(3/4)、(5/4)、(8/7)、(8/9);當i等於3時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(7/8)、(9/8)、(16/15)、(16/17);當i等於4時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(15/16)、(17/16)、(32/31)、(32/33)。
- 如申請專利範圍第1項所述的對數計算方法,其中該第三參數大於該第四參數,且該第一參數為1-2^(-i),且該第二參數為1+2^(-i)。
- 如申請專利範圍第3項所述的對數計算方法,其中該步驟(c)中係僅透過移位暫存器以及加法器來完成更新該輸入值及更新該輸出值的操作。
- 如申請專利範圍第4項所述的對數計算方法,其中該步驟(c)中係僅透過移位暫存器以及一個加法器來完成更新該輸入值操作,並僅透過一個加法器來完成更新該輸出值的操作。
- 一種對數計算電路,用以對一初始輸入值進行對數運算,包含有: 一曡代運算電路,用以依序進行多次曡代運算; 其中針對該曡代運算電路所執行的任一次疊帶運算,該曡代運算電路執行以下操作:(a) 選擇對應到之一第一參數、一第二參數、一第三參數以及一第四參數;(b) 判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係根據該初始輸入值所得到;(c) 若是該輸入值大於該第三參數,透過乘以該第一參數以更新該輸入值,並透過減去該第一參數的對數值以更新一輸出值;若是該輸入小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d) 將更新後的該輸入值及該輸出值作為下一次疊帶運算的輸出值與輸入值; 其中該曡代運算電路的最後一次曡代運算所產生的該輸出值係作為對該初始輸入值進行對數運算的一計算結果。
- 如申請專利範圍第6項所述的對數計算電路,其中該多次曡代運算的第一次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(1/2)、(3/2)、(4/3)、(4/5);該多次曡代運算的第二次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(3/4)、(5/4)、(8/7)、(8/9);該多次曡代運算的第三次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(7/8)、(9/8)、(16/15)、(16/17);該多次曡代運算的第四次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(15/16)、(17/16)、(32/31)、(32/33)。
- 如申請專利範圍第6項所述的對數計算電路,其中該第三參數大於該第四參數,且該第一參數為1-2^(-i),且該第二參數為1+2^(-i)。
- 如申請專利範圍第8項所述的對數計算電路,其中該曡代運算電路僅透過移位暫存器以及加法器來完成更新該輸入值及更新該輸出值的操作。
- 如申請專利範圍第9項所述的對數計算電路,其中該曡代運算電路僅透過移位暫存器以及一個加法器來完成更新該輸入值操作,並僅透過一個加法器來完成更新該輸出值的操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010446312.0A CN113721886A (zh) | 2020-05-25 | 2020-05-25 | 对数计算方法及对数计算电路 |
CN202010446312.0 | 2020-05-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202144997A true TW202144997A (zh) | 2021-12-01 |
TWI768430B TWI768430B (zh) | 2022-06-21 |
Family
ID=78608959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109127334A TWI768430B (zh) | 2020-05-25 | 2020-08-12 | 對數計算方法及對數計算電路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210365239A1 (zh) |
CN (1) | CN113721886A (zh) |
TW (1) | TWI768430B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197024A (en) * | 1989-06-14 | 1993-03-23 | Pickett Lester C | Method and apparatus for exponential/logarithmic computation |
AU672787B2 (en) * | 1992-04-03 | 1996-10-17 | Lester Caryl Pickett | Exponential/Logarithmic Computational Apparatus and Method |
EP0572695A1 (en) * | 1992-06-03 | 1993-12-08 | International Business Machines Corporation | A digital circuit for calculating a logarithm of a number |
US9778908B2 (en) * | 2014-07-02 | 2017-10-03 | Via Alliance Semiconductor Co., Ltd. | Temporally split fused multiply-accumulate operation |
WO2020090025A1 (ja) * | 2018-10-31 | 2020-05-07 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
-
2020
- 2020-05-25 CN CN202010446312.0A patent/CN113721886A/zh active Pending
- 2020-08-12 TW TW109127334A patent/TWI768430B/zh active
-
2021
- 2021-02-25 US US17/184,625 patent/US20210365239A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
TWI768430B (zh) | 2022-06-21 |
US20210365239A1 (en) | 2021-11-25 |
CN113721886A (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5909385A (en) | Multiplying method and apparatus | |
US10877733B2 (en) | Segment divider, segment division operation method, and electronic device | |
US20060129623A1 (en) | Division and square root arithmetic unit | |
US6178435B1 (en) | Method and system for performing a power of two estimation within a data processing system | |
US11662978B2 (en) | Modular operation circuit adopting iterative calculations | |
US7143126B2 (en) | Method and apparatus for implementing power of two floating point estimation | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
TWI768430B (zh) | 對數計算方法及對數計算電路 | |
US10216481B2 (en) | Digit recurrence division with scaling and digit selection using intermediate value | |
CN113138749A (zh) | 基于cordic算法的三角函数计算装置及方法 | |
KR920003494B1 (ko) | 디지탈 신호처리 시스템에서의 실시간 2's 콤플리멘트코드 숫자의 승산방법 및 회로 | |
CN108319447A (zh) | 便于硬件实现的开平方算法 | |
CN111353118B (zh) | 开平方的方法及相应的用于开平方的电路 | |
CN108595148B (zh) | 除法函数实现方法、电路、芯片以及系统 | |
CN220208247U (zh) | 除法运算电路 | |
JPH08202533A (ja) | 除算処理装置 | |
CN113127802B (zh) | 基于cordic算法的复对数实现方法、装置、设备及计算机存储介质 | |
JP2009089343A (ja) | 角度計算方法及び関連回路 | |
JP2991788B2 (ja) | 復号器 | |
JPH0225924A (ja) | 浮動小数点演算処理装置 | |
JP2003223316A (ja) | 演算処理装置 | |
WO2023226173A1 (zh) | 一种数论变换素数下的模乘运算方法 | |
JPS6129020B2 (zh) | ||
JPS592055B2 (ja) | 開平演算方式 | |
JP2002032215A (ja) | 10進データ除算方法およびそのプログラム記録媒体 |