JPH02287821A - 高速計算を行うための方法及び装置 - Google Patents

高速計算を行うための方法及び装置

Info

Publication number
JPH02287821A
JPH02287821A JP9296790A JP9296790A JPH02287821A JP H02287821 A JPH02287821 A JP H02287821A JP 9296790 A JP9296790 A JP 9296790A JP 9296790 A JP9296790 A JP 9296790A JP H02287821 A JPH02287821 A JP H02287821A
Authority
JP
Japan
Prior art keywords
function
value
polynomial
input
intermediate result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9296790A
Other languages
English (en)
Inventor
S Stanley Kendall
ケンドール・エス・スタンレー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WEYTEC CORP
Weitek Corp
Original Assignee
WEYTEC CORP
Weitek Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WEYTEC CORP, Weitek Corp filed Critical WEYTEC CORP
Publication of JPH02287821A publication Critical patent/JPH02287821A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明はコンピュータのハードウェア及びソフトウェア
の分腎に関するものである。さらに詳しくは本発明はサ
イン5 コサイン及びその類の、特に固定小数点ハード
ウェアのような算数関数の計算に関する改良された方法
及び装置を提供するものである。
〔従来の技術〕
浮動小数点演算を使用づるほとんどのコンピプ。
−タにおいて単精度浮動小数点数i;I:10−”から
10”]lまでの数を表現する。1つの数[J指数及び
仮数による浮動小数点書式によって表現される。指数は
8ビツト指数で、仮数は実効的に24ビット仮数である
。浮動小数点数の数は下記の指数及び仮数によって決定
される。
値−+/−2°″p ×仮数    ・・・(1)指数
は仮数が1と2の間となる。1、うに選ばれろ。
2つの単精度浮動小数点数の乗算は次の手順によって行
われる。
1) 指数と仮数を2つの入力に夫々分離すること。
2) 仮数を乗算ずろこと。
3) 結果として得られた仮数を24ヒソI・に丸める
こと。
4) 入力の指数を加算すること。
5) 結果を正規化すること、即ち仮数が1〜2となる
ように指数を調整すること。
6) 得られた指数及び仮数を浮動小数点書式にバンク
すること。
2つの単精度浮動小数点数の加算は現在下記の手順によ
って行われる。
1)2つの入力の夫々を指数及び仮数に分に1すること
2) 入力をそれらの指数が等しくなるように、即ち小
数点が並ぶように桁移動すること。
3) 仮数を加算すること。
4) 得られた仮数を24ビットに丸めること。
5) 得られた結果を正規化すること。即ち仮数が1〜
2となるように調整すること。
6) 得られた指数及び仮数を浮動小数点書式ヘパツク
すること。
固定小数点を使用している計算装置においては一般に数
は2−12と(1,−2−”)との間の32ビットの整
数によって表現される。2つの固定小数点数の乗算は3
2ビツトと32ビットの2つの整数を乗算して得られた
64ピノI・の始めの32ピツ]・を取って結果とする
ことで完了する。
2つの固定小数点数を加算するには単に32ヒツトの整
数を加算する以−1−のものを必要としない。
あふれは計算に先立って行われる解析によってさげろこ
とができる。
固定小数点計算の主要な利点は速度である。固定小数点
計算を行う従来技術の2つの欠点は縮小された範囲及び
縮小された可変精度である。
サイン、コサイン、アークタンジェント1指数平方根及
び対数(以後ば夫々sin、 C,O8,al、;+n
exp、5qrt及び1nと略ず)のルーチンはコンピ
ュータ演算において浮動小数点演算法を使用するルーチ
ンの代表である。現在これらのルーチンの実行のために
広く用いられている2゛つの方法がある。
第1の方法は例えばウアレリオの「コープイックを用い
た超越的な近似法J (1988)に説明されているよ
うに「コープイック」方法と呼ばれるものである。コー
プイック方法は長い除算のよ・うに「桁送りしてから減
産する」ようにして実行される。
コープイック方法は例えばインテル8087及び803
87、及びモトロラ6E1881及び68882におい
て用いられている。
第2の一般的に用いられている方法は多項式展開として
知られているように高い浮動小数点能力を持ったシステ
ム、及びソフトウェア浮動小数点だけを持ったシステム
によって用いられる方法である。多項式展開法において
は一般に次の形の無限級数の多項式は例えばサインの値
[x]の計算に用いられる。
sin(x)= a 十x’ *(b +x’*(c→
−X ”)*・)  ・+2)こごにおいてa、b、c
は定数、β、m、nは整数である。
級数は誤差が許容され得るある点で打切られる。
この変形はcos、 atan、 exρのような関数
についても用いられる。多項式展開は例えば本文におい
て、あらゆる目的について弓用しているハート等による
[コンピュータによる近似法J (1,961’l)に
おいて説明されている。
[発明が解決しようとする課題〕 多項式による方法は現在は非常に多くのコンピュータ時
間を使用している。特にザン3/60の、V、うな、標
準的に固定小数点モードで作!FJIする装:ξにおい
てはそうである。したがって極めて高速で特に固定小数
点法によるコンピュータハートつT、゛)′システムに
適した、S!n+ C03I arc:t++n、  
E n、L!Xpsqrt及び同類の計算を行うための
方法及び装置l:を提供することが要求されている。
〔課題を解決するだめの手段〕
計算装置において演算機能を行うための改良された方法
及び装置がここに開示される。この方法及び装置は1個
又はそれ以にの中間結果からの指数を計算も記4.1も
しないので特に高速である。この方法及び装置は例えば
固定小数点機械、又はウェイチック社によって製作され
たX18000. X1800のような独立した32ビ
ットの乗算機能を1)った機械に応用することができる
この方法/装置は入力として浮動小数点値を使用し、出
力として浮動小数点値をη1成するが、内部的には固定
小数点演算法を使用する。この方法/装置は固定小数点
機械における縮小された範囲の問題を避けて極めて改善
された実行時間を可能にした。
1つの実施例においてこの方法は1つの関数を計算する
のに多項式展開を応用する。中間結果は中間結果の指数
(位セリ因数)を計算したり記憶することなしに計算さ
れる。その代わりに多項式展開の各項に対する位取り因
数は中間結果の指数を計算したり記憶する必要なしに、
結果の指数か用意に計算の後で配置されるよ・うに予め
選択される。最も好ましい実施例においては位取り因数
はどのような電子的形式にも表現されない。この方法は
多項式方法を用いた現在のどの装置に用いられている方
式よりもはるかに高速である。更にこの方法はコーデイ
ソク方法のハードウェアによる実行よりも高速でかつ安
価であり、より多方面に応用できる。
したがっである実施例においてこの方法は、多項式展開
において第1の中間結果を決定するステップ、中間結果
の出力を与えるために第1の中間結果と第1の入力値と
を演算するステップ、前記演算は加算と減算から成る群
から選ばれ、第1の入力値は第1中間結果及び第1入力
値とが同し指数を持つように調整された指数を12」つ
数によって表される第1の入力値から選ばれたAIYに
ついてji!i算を行い、そして中間結果の出力に対応
して該関数の値を提供するステップを有している。
他の実施例においてはこの方法は既知の位取り因数を持
った入力値の代表を記憶し、中間結果を提供する第1及
び第2の入力を乗算し、中間(1’+と入力値の1つと
の桁移動と胡算を行い、)Jll ’(’Ic及び減算
より成る群から選ばれたれ1i算を行い、既知の位取り
因数に答える桁移動を行い、関数の値の出力を提供する
ステップを有している。
〔実施例〕
目次 A、 全般 B、 −π/4からπ/4までのsjnの計算C,co
sの計算 り、  八tanの計算 E、 他の関数の計算 F、 他の方法との比較又は効果 八、  全般 位取りは固定小数点演算において用いられ得る数の範囲
を拡張するために一般に用いられる。こごに開示された
方法を用いれば、位取り因数は多項式の計算におりる変
数、定数、及び中間値に対して前もって選定される。選
定された位取り因数は好ましい実施例におけるものと同
じ位取り因数を待った中間結果に帰着する。
ここに開示する方法は単純多項式の評価方法によってま
ず図解される。この例においては仮説1゜進法機械が3
桁加算及び3桁と3桁の乗算によって6桁の結果をもた
らすように使用される。多項式 f fx) = x *5.0 + 0.00324は
Xが(0,01,0,2)17)範囲に拘束されており
、f (0,0189)及びf (0,0199)が用
いられた場合を例にとって固定小数点て評価される。
表1は計算における値にとって位取り因数の選択がいか
に計算及び採集結果に影響を与えるかということを示し
ている。第1行に選択されたイ1ン取り因数は2個の有
意桁を持った正しい結果をもたらす。第2行は答えにお
いて3個の有意桁を8′1ず位取り因数の選択を示す。
3番眼の有意桁は乗算の後、加算の前における】0−1
の乗算の結果を位取りしてもたらされる。第3行は許容
範囲(0,01,0の最大に近い入力Xの場合を示して
おり、第2行において用いられた位取り因数はあぶれの
原因となっている。従って第2行及び第3行の荀取り因
数は許容できない。第4行は位取り因数の選択がいかに
不必要に結果の精度を落とすかを示してJ3す、この場
合には存意]iiが1桁に終わっている。
(以下余白) 2〕 第2行と第3行においてx*5.0の全6桁の結果は夫
々、089500及び、0995であるが1.0032
4との加算に用いられた3桁は夫々、895及び、99
5であることに注意されたい。実際にはこれは乗算の結
果が加算の行われる前に桁移動されていなければならな
いごとを示している。この理由から第1行の位取り因数
はもしあぶれの心配がないと(−1でも、それらは乗算
と加算との間で桁移動を必要としないことから第2行の
位取り因数よりも大いに好ましい。×し体系において、
桁移動ができない乗算のアンロードの時でも加算を実行
することができるので、第1行に示し、た位取り因数の
事前選択及び桁移動の省略によって乗算及び加算に要求
されるサイクル数を10から8に減少させることができ
る。
位取り因数は中間結果を加算するだめの桁移動をうまく
やるように選択されるが中間結果の指数は既知であるか
ら、桁移動の複雑性を減少さ−lること、つまり桁移動
の小数点位置の数を予め知ることができることはこの技
術に熟練している者には明らかであろう。
変数、定数及び中間値の位取り因数の選択については3
つが関与する。
1、 あふれは避りられねばならない。
2、 精度の過度の低下は避りられねばならない。
3、位取り因数は中間加算において等しくなりればなら
ない。
あふれは各項が入力範囲を引受げろように最大規模を計
算することによって避りることかできる。
これは用いることができる最も小さい位取り因数を与え
ることを、啄味している。
同等でない位取り因数は加算における2つの入力の内の
1つを加算の寸前に位取りすることによって避りること
かできる。これは表1の第2行及び第3行において実行
されている。しかし実行時における位取りは位取り因数
の事前選択によってしばしば省略することができる。
[3,−π/4からπ/4までのsinの引算−ヒ記に
説明された方法はXの範囲が一π/4からπ/4におけ
るs i n (x)の計算に応用された場合の例とし
て下記に図解されている。ディジタル計算機によってs
in(又は他の多くの関数のなかの1つ)の計算を行う
ために、加、減5乗及び/又は除算によって履行される
問題の計算を減少さ−(!ろことか必要である。例えば
s i n (x)の値を計算Jるにあたり、次の形の
多項式展開が応用される。
a+bx’ +cx’(d4−ex’(f+(Hxo(
h・−)))(:3) ここにおいて、a、b、cは定数であり、pm、nは整
数である。
本発明は上記の形式に関してここに説明されているが、
例えばf (xi / g (x)を含めて、3I:常
に多様な形式に適用され得るごとは、この技術に熟練し
ている者には当然理解されるであろう。
特に次の多項式展開はこごてsinの計算に使われる。
sin (x)−x+ x*x2*(c++x2*(C
2+x2*(7,))・(4) ここにおいてcl+c2及びC3は定数である。
最も好ましい実施例においてcl、C2及び(,3は夫
々−0,166、−0,00833及び−0,0001
95である。
x+  X2+  CI +  C2及びC3の小数点
位置は夫々の加算(又は減算)が既知の指数についての
加数と、好ましい実施例における同し指数を持った加数
との間にあるように調節される。
例えばもし×2はその指数が11」で03はその↑指数
が1−3」で代表されるとするならば、C,3*X2の
結果は指数「−2」を持っているはずである。そこでC
3*x2の結果とC2が同じ小数点位置を持つようにC
2は指数「−2」を持った数で代表される。x2*(C
2→−x2*c3)の結果はそれ故指数「−1」を持つ
から、したがってC1の値は指数「−1」を持った数で
代表される。このプロセスはできるだけ多くの「足し」
 (又は[弓き1)は同じ小数点位置を持った数で導か
れるように行われる。指数の選択は実際には一般に上記
とは逆に導かれることば認識されるべきである。
特にx2はまず第1に計算されその含意指数が「1」で
ある整数によって表現される。即ち×2は小数点がピノ
I・30とビット31との間にある整数によって代表さ
れる。逆に働いた場合、その小数点がビット30とビッ
ト31との間にある数の×2を乗算すると、その小数点
がまたビット29とビット30との間にある結果を生ず
ることが知られていン)。
しかし小数点がピノ1−31とヒy l・32との間に
ある数x2の乗算は小数点がビット30とヒツト31と
の間にある結果を生ずる。それ故c、LJできるかぎり
多くの桁により代表されるべきであり、小数点はビット
30とビット31との間におかれろ。c 7本x 2の
乗算の結果はそれ故ビット30とビット3]との間にあ
るべきである。c2の小数点は従ってヒツト31とヒツ
ト32との間におかれろ。同様に(5,の小数点はC3
*X2の小数点がc2の小数点と並ぶようにするために
ヒツト32とビット33との間にあイ)べきである。
この方法はさらにsin(0,5)の計算に応用された
場合について図解される。sin(0,5)の泪算に・
て)いての多項式の展開は、 0、5−0. s*o、 25*(0,166−0,2
5−(0,00833−0,25*O,OOO]9!’
1))この式にはx、x2.C,、c2及びcJの5つ
の入力がある。夫々は含意指数を持った16進法の数を
代表する。]6進法はそれが2進法よりも読みやすいの
でここで応用されるが10進法よりは機械に密接な表現
である。下記のすべての16進数はH、すべての10進
数はDの添字を付している。
下記の表2は選択された含意指数及び16進法表現に伴
う、式の各入力を供給するものである。真の16進法値
は計算に用いられた値に伴って供給されている。
表   2 入力計算値の例 表3は上記の入力値を使用してsin計算を検索するも
のである。示されているように各入力(i5の10進法
位置は各加算または減算が同し含意指数にについて2つ
の値を包含するように選択されている。従って桁移動は
加算又は減算には要求されない。
表   3 sin計算の検索 G 行うことができる。これに比較して、もし乗算及び加算
をソフレシェア浮動小数点ルーヂンを代用して行った場
合には、乗算及び加算に80サイクル(乗算に35サイ
クルと加算に45勺イクル)必要とするであろう。更に
計算のソフI・ウェア浮動小数点は、それらが取扱わな
I′Jればならない特殊な場合の大きな数のために極め
て低速である。(例えば正の数と負の数の加算とか、小
さい数と大きい数の加算等々。)また更にそれらは浮動
小数点数を指数5符号、及び仮数に分離しなければなら
ず、その後で部分を「再組み立て」しなければならない
。上記の問題のすべてはここに示す方法を使用して避け
ることができる。
C,cosの計算 好ましい実施例においてsin、 cos、及び類似の
関数の計算には範囲低減のためのイ]加的ステップを応
用する。cosのための範囲低減は例として用いられて
いる。
π/4より大きいXなる値に対して範囲低減は「X′」
が下記のような入力値Xになるように適XL体系におい
ては乗算及び加算は8サイクルで用される。
a)  abs(x ’) <π/4 b)  cos (x)−(i)  sin(x ’)
(ii)  −sin(x ’ ) (iii)  cos(x ’ ) (iv)  −cos(x ’ ) 範囲低減を行うためにr n−1なる値は次式を満足さ
ゼるように計算される。
n = 1nt(x *2/π+0.5)   ・・(
6)X′の値は次式から計算される。
x””x−n*π/2   ・・(7)nの値に基づい
て適当な式b  (i) 、  t、+  (ii)t
)(iii)又はb(iv)が選択される。
特に a)もしn=o、ならば、式’)(iii)が用いられ
、b)もしn−■、ならば、式l〕(ii)が用いらね
1、C)もしn=2、ならば、式’)(iv)が用いら
れ、d)もしn=3、ならば、式1)輸)が用いられる
更に本方法は図18から10までに示されたフロチャー
1・に図解される。Xなる値はまず最初にそれがπ/4
より大きいかどうかを決めるために検査される。もし値
がπ/4より小さければXは2より大きいかどうか決定
するために検査される。
もし大きくなければ、丁度「1」であると言う結果がリ
ターンされる。もしXが2−12よりも大きいがπ/4
よりは小さいとcos展開式、cos(xl= l +
x2*(c、+ x2(c2+ X2C3))が適用さ
れる。符号ビットはO(正)にセットされ指数は−1に
七ノドされ、結果がリターンされる。もちろん好ましい
実施例において上記のcos展開は中間の1足し」及び
「引き」の指数が同じになるように実行される。もしX
がπ/4より大きiすれば、n及びXは上記したように
計算される。
nなる値に基づいてCO3は図10に示されたsinル
ーチン又は図1bに示されたcosルーチンを用いて計
算される。
図1bに示したように、もしCOSルーチンが使用され
ればX′なる(直は2−12より大きいかどうか決定す
るように検査される。もし小さければ11」なる値がリ
ターンされる。もし太きiJればcosfx)はX′に
基づいて」1記に説明された多項式展開を使用して計算
される。cos(xlの符号はnに基ついて七ノドされ
、指数は−1にセノI・されCO!((x!なるイ直が
リターンされる。
図10に示されたように、もしsinルーチンか使用さ
れればs i n (xlは多項式展開を使用して4算
される。計算は多項式中の中間の「足し−1及び回き」
が既知の指数に近似した加数を持つように、好ましい実
施例においては等しい指数をBiつように進められる。
nなる値は竹刀ヒツトが0 (正)か又は1 (負)か
どうかを決定するために検査される。もしn−3ならば
、s i n (X)は負であり、もしn≠3ならば、
s i n (x)は正である。
加算及び減算された加数が同し小数位置となるような範
囲低減式の内のすべての中間結果の指数値を適正にセッ
トすることによって計算の計:x’t N速度をさらに
早くすることがてきろ。も−し、例えばXなる値が0.
5から1の間であれば、最終減算が同じ小数位置を持っ
た2つの値の間で行われるようにXの小数点はビット2
9と28との間にセットされる。2/πに対する小数位
置はビ・ノI・31と30との間にセットされ、X*2
/πに対する小数位置はビン)21と26との間にセン
トされ、π/2に対する小数位置はビット30と29と
の間にセットされる。
範囲低減式の最終結果(X′)は0.5と1との間のX
の値に対して小数位置ビット29と28との間の値を持
つことになる。上記に説明したようにsinの計算にお
いてビット31と30との間に小数位置を持つことが望
ましい。X′の小数位置は従って2ヒソ1〜だけ左へ桁
移動され指数はそれに従って調整される。0.5より小
さいXなる値に対しては範囲低減は行われない。■より
大きいXなる値に対しては小数位置は、より大きいXな
る値を説明できるようにさらに桁移動される。小数位置
はXか1より大きい2の漏数が1増加する毎に1ビット
ずつ左へ桁移動される。
表4はここに開示されたコサインルーチンの疑似コード
説明を提供している。好ましい実施例においては木刀法
は例えばウェイチック×1.8000又は×1.820
0についてのアセンブリ言語を回行する。−1ζ記の疑
偵コートは31ピノ1=31ビット乗算に基づいている
。それは32ピッ1−−32ビット乗℃1にもそのまま
応用ずろことができる。
表   4 コサインのための疑(以コート コサインのための疑似コー(・ if  (absfxl < I’i /イ)if  
(absfx) < 2 才*  12)result
−1,0 else(ahs(x) < 2 **−1,2)xs
q = x * x [implied cxponc
n171 ]result=1.0  +xsq*(c
l  +xsq傘(c2I−x:;q*c3)si(H
n= 0 (positive)exponent−−
1 enclif (abs(X12**−12)else
  (absfxl<Pi/4)goto range
 reduction for cosineendi
f  (absfx)<Pi/ 4 )(1)   X
<2−12ならば、x=1.0、この特殊な場合には他
のすべてのXは、絶対(iff fx) <π/4、c
osfxl < 1.0、 下記(5)を参照。
まず仮数は閂SB(つまり陰ビット)が30ヒツトとな
るように桁移りjされる。これは仮数が含意指数2+e
xpを持っていることを意味している。それから仮数は
平方されて含意指数4+2柁χpを持つx2を生ずる。
それからX平方は3 + 2 *expだLJ右に桁移
動されて含意指数1を持ったx2を生ずる。
(4+2 *exp −(3→−2*exp)) = 
1註:もしexp−−1ならばこれは実際には左へ1桁
だけ、桁移動することを意味する。指数は、絶対値(×
)<π/4なので−1よりも大で有り得ない。
下記の表は弐の右側の5つの値の夫々の含意指数及び計
算における中間値のいくつかを示している。
1、O 3q I XSQ*C3 c2+xsq*c3 xsq木(c2  →−χ5q*c3)cl+xsq*
(c2 +xsq*c3)xsq* (cl+xsq*
 (c2+xsq*c3))1、Q  +xsq*  
(C1+XSQ*  (C2−1−XSQ*C3))(
4) もし絶対値(×)〈π/4、cos(x)>ば、
符号−〇、 (5) もし2−12 <絶対値(×)<π/4.1.
0 > cos(x) >0.5ならば指数−コサイン
の範囲低減 n = 1nt(x * 2 / Pi 40.5)x
 ’ =x−n *pi/ 2 xsq = x ’ * x ’  [implied
 cxponent=含■冊数−一−− +1−2−1 ■ 1 +−1= 0 1  + 0 = 1 0なら 1] if  sine expansion  i、e、(
(n  mod2 )  = 1 )go  to  
sine  expansionelse sine 
expansion  i、C,((n  mod2)
= 1)go to cosine expansio
nendif  sine expansion  i
、e、  ((n  mod2 )  = ] )ステ
ップ6及び7は範囲低減を行うために結合する。
(6) 下表はこの式の右側の値の含意指数及びこの計
算の中間値を示すものである。
X                        
   4 + exp2/Pi           
            1x *2/ Pi    
               5 +!!Xll0.
5                        
31    Ifint  n −(x*2/Pi)>
>(26−exp)      31   112in
t  n +0.5                
31n −1nt  n +0.5)>>1     
        32   113111、含意指数3
1についての0.5は1とする。
+12.中間値nは0.5と同し含意指数を持つ。
113、含意指数32についての中間値nは、小数部は
完全に桁移動されてしまってい るごとを意味している。
(7) 下表はどのようにx ’ =x−η*π/2を
計算するかを示している。この計算ε、1正確に行われ
る。丸め、又は切り捨てによるビットfj%失があって
はならない。我々のdl算機のπ/2の仙としては31
ヒソj・のバ/2を使用した。
4.0、指上− n=n<<(3Q  −exp)          
 2+exp   110Pi/2         
          2n*I’i/2       
            /I トexp   月4+
exp  (j二記参117J )x −n *4’i
/2             4+oxp   1!
2x  ’  −(x  −n  *l”+/2)  
<<(21(沫p)  2        113I1
1.この乗算の後ではピノL 14切捨てられない。結
果の全64ビツトは保全されている。
牡、これは全64ピツ1〜の゛成算である。
+13.ごれは64ヒツトの数から、64ビット数の上
半部までの桁移動である。結果の 64ビット数の後半の32ビツトはゼ1コとなるので計
算しない。結果の64ヒント数の後半の32ピツI・は
ステップ110によりゼロとなり、目盛りをセロに合わ
せ る(30−exp)が桁移1)Jされ、そしてステップ
113で他の目盛りをゼロに合わせる(2+exp)が
桁移動されて入ってくる。((30−exp)+  (
2+exp))  −32゜それ故に後半の32ヒソI
・はゼロである。
絶対値(X′)はπ/4より小さいこ とが判っているので左側に桁移動させ るビットは無い。従ってこの範囲低減 ステップは正確に行われる。
(8) 下表はどのように含意指数−1に基づいてX平
方=X′*x′を計算したかを示す。
含″指 値 x’*x’               2+2=4
xsq  =  (x’  *x’)<<3     
 /l−3=]コザインの展開 + f  abs(x) > 2牢よ一12rcsul
t=1.0 elseabs(x) > 2 ** −12resu
lt = 1.0 + xsq*(cl −1−X5(
I*(C2→xsqs:c3)if  ((n mod
 4) −2)sign= O(positive) 
 IIJ二i己グラフ参11((else((n mo
d 4 ) = 2 )si8n= ]  (ne5a
1.1ve)  II上記グラフ参照endif ((
n nod 4 ) = 2)exponent= −
] endif   abs(Xi>  2+本−12サイ
ンの展開 x  =abs(x ’ ) result= x ” + x *xsq (si 
 十xsq  *  (s2→−XSQ +53)) if  ((n mod 4) −3)sign=op
posite of sign of  xelse(
(n mod  4 ) −3)Slgn−3+1me
 as Sign of  Xendif  ((n 
nod  4 )  = 3 )norlIlal+z
e  resuN[I   X”の正の数字について計
算する方が容易である。
(2) 下表はどのように、結果−xN + xII 
*X平方(sl+x平方*(32+X平方m53))を
計算するかを示す。
値 X ′ x   −alls<x  ’ ) XSQ x  ”  =  x  ”<<1 xsq*53 s2−1− xsq*53 XSQ*  (s2 + xsq*53)sl+xsq
* (s2+xsq*53)Xsq*(sl  +xs
q*  (s2+xsQ13))x *xsq*(sl
 +xsq*  (s2+xsq*53))x ” +
 x ” *XSQ*(31+XSQ* (s2+xs
q*53))含意指数 2 (上記より) 1 (」1記より) 2−1=] 1+−3=−2 1−+−−2−−1 1+−1=0 1+O=1 (3)及び(4) 上のグラフの範囲低減セクションを
参照。
結果の正規化はMSBをヒツト23へ移動させることを
含んでおり(icecフメー”ンノト中の陰ビット)指
数を計算しそれらを一1′Hに合併する。我々は最初の
1の前の(f’ l:lの数をビット32から始めて計
数してどこに結果のMS[lがあるかを告げるrffo
 i命令を用いた。それから結果をこのビットがヒツト
23となるように桁移動した。指数は、I(結果の内の
最有意ビット上の1」盛りをゼロに合ね−lる数)であ
る。
(C)著作権1989. ウェイチック コーボレーシ
mlンD、 アーククンジエンI・の計算 ここに開示する方法は多項式によって代表されるどの関
数にも応用するごとかできろ。例えばaLanは入力値
によって7つの異な−2だ展開の内の1・つから計算す
ることができる。x J><1’J、 (7)時のal
:bn(xlの記号(4入力の絶対値のajanの負で
ある。0から1.3までの範囲の正の入力の場合だけ単
純化について下記で議論される。他の多項式は他の範囲
で用いられる。
8X10−5より小さい入力値についてはatan(X
iは近似的にXに等しい。8X10−5と0..173
の間の入]j埴についてはatanf×)は多項式の形
で代表される。
al、an(xl= x*(co−x2*(c、 −x
2*(C2x”03  X ’ C、))))    
−f91ここで、好ましい実施例においては c o−,9999999399 c、 −,3333195404 C2−,1994890599 c 、3= 、 136]037025c 、 = 、
072835292] 473と、868との間の入力値については、すべての
値は位取り因数2°で代表され下記の多項式が用いられ
る。
atan(x)= c o+ x*(c 、+ XI(
C2−XI(C3X*(C<  XIC5))))  
  −001ここて、 CO2 C2゜ C3″ .9898257920 .5326482619 3408B23d31 .07639662347 表   5 868より大きい入力値及び13より小さい入力値につ
いては、下記の多項式が用いられろ。
Co−XI(C,−x*(C2−1−XI(C3−x*
(c、、−x*c、、))))Ql) X及びC1についての位取り因数は、これらの2つの数
が32の有意ピノl−の精度を持つようにセ・ノドされ
る。他の定数及び中間値についての位取り因数は表5に
示されるように加算の前の乗ffQの結果を桁移動しな
くても良いようにセットされる。
(以下余白) B、 他の関数 この技術に熟練した者には明らかなようにここに開示さ
れた方法は多項式によって代表される多くの関数のどれ
にもずく応用することができ、上記に説明されるsin
、 cos及びatanは単に実例となったにすぎない
。例えば本方法はexp、βn、 5qrt双曲線関数
及び類1νのものの計算に応用できる。
更に本技術にy1練した者には明らかなように」−記に
説明された方法は、より多くの回数の勺イクルが要求さ
れるにせよ、倍精度計算にも直らに応用することができ
る。
F、 他の方法との比較又は効果 95〜98%が整数で2〜5%が浮動小数点であるよう
なコストに敏感な混合演算に関する利用か多(有る。こ
れらの利用の任意選択しよ予めIIIられている。この
ような利用はどれも11−1間の95〜98%Let遊
んでいる浮動小数点コブ1コセノ4Jのポートスペース
かシリコンに重点を置いている。反t、14こ、整数演
算の300″yoも長い浮動小数点I山笠(全体の2〜
5%)に注目することができる。
ここに提示された技術すよ×し体系の超高速ソフトウェ
ア浮動小数点の実行と連結されて第3の任意選択、つま
り専用ハードウェアを必要としない、相当の浮動小数点
性能を提供する。
表6はウェイチック×1、■及び×1.0ナツプについ
て使用された本発明の方法と、ナン3/60とソフI・
ウェア浮動小数点を用いた場合、及びインテル6881
チツプの場合との対比を示し−Cいる。またナツプ計算
における80960の速度も示している。
(以下余白) 表6から判るように本発明の方法はリンブーレットフオ
ームにおける浮動小数点又はソフ]・ウェア実行のいず
れよりもはるかに高速なS]算待時間対処できている。
さらに809(ioと比較しても11じ6Q)性能を持
っていることが判る。
表6のすべての時間は命令当たりのマイクI−2秒単位
で表わされている。すべてのルーチンζJ:(i888
1だけが倍精度で行われている以外は単精度である。
80960を除外してすべての時間が測定された。時間
は、80960データ及びs i n fs)及びco
乏+f!+)計算を除外して、0から10.0までの範
囲の入力についての平均である。cosfs)及びsi
 n fs)は0から0.5の範囲で入力された。80
960についての時間はr80960KBプログラムの
参考マニュアル」から入手した。入力範囲は明記されて
いない。25M1lzのクロック周波数が実行時間を計
算するのに用いられた。
ボエットストン結果を表7に示す。(jl(位(Jキロ
ホエソトストンである。)すべての肋間は80960を
除外して測定した。
以上に開示したところを要約する。ディジタルコンピュ
ータにおいて、ザイン、コサイン及び頻憤の関数の計算
のための方法及び装置を公開する。
多項式展開が応用される。展開の中間結果の指数は記憶
されない。その代わりに最終結果の指数は多項式内の定
数の調整された指数と、入力値の指数とに基づいて決定
される。この方法は固定小数点装置に使用するのに特に
適している。
上記の説明は実例的であり、制限的なものではないよう
に考慮していることを理解すべきである。
多くの実施例は」1記の説明を再考すればこの技術に熟
練した者には明らかになるであろう。それ故本発明の範
囲は、上記の説明によって限定されるものではなく、こ
れらのフレイムが権利を与えられるものの全範囲にわた
って添付のフレイムによって規定されるべきである。
本特許書類の開示の一部分は著作権保護の対象となるも
のを含んでいる。著作権所有昔は、特許庁の特許ファイ
ル又は記録に載っている場合については特許書類又は特
許公開のファクシミリ複写を誰が行っても異議を中し立
てないが、それ以外の場合に関しては何であろうとも、
すべての著作権の権利を保有する。
【図面の簡単な説明】
図1a、 Ib、 lcはcosine計算に応用され
た場合の本発明の演算を図解するフローヂャ−1・を示
ず。 特 許 出願人 ウェイチック・コーポレーショ゛/代
理人 弁理士 河  野  登  人手続補正書(自発
) 平成2年5月15日 平成2年特許願第92967勺 発明の名称 高速計算を行うための方法及び装置 補正をする者 事件との関係 特許出願人 所在地 アメリカ合衆国 カリフォルニア94086サ
ニーヘイル アー力ス アへニュー1060ウエイチツ
ク・コーポレーション 代表者 ジョン・エイチ・スタインハート称 名 1ミ 4、代理人 住 所 ■543大阪市天王寺区四天王寺1丁目14番
22号 日進ヒル207号 阿り!目1許事務所(几1.06−779−3088)
図面及び優先権証明書 6、 補正の内容 6−1図面 全図を別紙のとおりに訂正ずろ。 6−2優先権証明書 優先権証明書を提出する。 7、添付書類の目録 (1)訂正図面 (2)優先権証明書(訳文部イ」)

Claims (1)

  1. 【特許請求の範囲】 1、ディジタル計算手段において入力値を持った多項式
    展開による部分を少なくとも一部に有する関数の値を計
    算する方法において、 a)多項式展開の第1の中間結果を決定するステップ、 b)該第1の中間結果及び第2の中間結果出力を与える
    前記入力値の第1のものについ て演算を行うステップ、 該演算は加算及び減算から成る群から選 ばれ、前記入力値の少なくとも一部分は前 記第1の中間結果及び前記第1の入力値が 同じ指数を持つように調整された指数を持 った数により前記計算手段において表され ており、 c)前記第2の中間結果出力に対応して前記関数の値を
    与えるステップ を有することを特徴とする方法。 2、少なくとも部分的に多項式展開により表され、該多
    項式展開は入力値を持っている固定小数点プロセッサに
    おける関数の評価方法において、 a)前記入力値の代表を記憶するステップ、該入力値は
    既知の位取り因数を持つ、 b)中間結果を得るために前記入力値の第1部分及び第
    2部分を乗算するステップ、 c)前記中間結果及び前記入力値の1つについて桁移動
    及び演算を行うステップ、 該演算は加算及び減算より成る群から選 ばれたものについて行われ、前記桁移動ス テップは前記既知の位取り因数に対応して おり、 d)該関数の値を出力として与えるステップを有するこ
    とを特徴とする方法。 3、前記関数がサイン、コサイン及びアークタンジェン
    トより成る群から選ばれたものであることを特徴とする
    請求項1又は2に記載の方法。 4、前記関数はf(x)/g(x)の形の多項式により
    表されるものであることを特徴とする請求項1又は2に
    記載の方法。 5、前記関数は f(x)=a+bx^l+cx^m(d+ex^n(f
    +gx^o(h…)))の形の無限級数多項式により表
    されるものであることを特徴とする請求項1又は2に記
    載の方法。 但し、a、b、c、d、e、f、g及びh は定数、 l、m、n及びoは整数。 6、 a)前記関数はサイン関数であり、 b)前記多項式展開は sin(x)=x+x*x^2*(c_1+x^2*(
    c_2+x^2*c_3))の形の式である請求項1又
    は2に記載の方 法。 但し、c_1、c_2及びc_3は定数。 7、x、x^2、c_1、c_2及びc_3の小数位置
    は a)x^2*c_3の結果がc_2と同じ小数位置を持
    ち、 b)x^2(c_2+x^2*c_3)の結果がc_3
    と同じ小数位置を持ち、 c)x*x^2*(c_1+x^2*(c_2+x^2
    *c_3))がxと同じ小数位置を持つ ように調整される請求項6に記載の方法。 8、前記関数はサイン関数であり、さらに入力値の範囲
    低減のステップを含み、該範囲低減は範囲低減入力値を
    持つ請求項1又は2に記載の方法。 9、その中間結果が同じ指数を持つ前記範囲低減入力値
    の小数位置を調整するステップをさらに含む請求項8に
    記載の方法。 10、前記関数はコサイン関数であり、さらに範囲低減
    ステップを含み、該範囲低減ステップはさらに a)n=int(x*2/π+0.5)のような値nを
    決定し、 b)x′=x−nπ/2のような値x′を決定し、 c)i)もしn=0又は2ならばx′のコサインを計算
    し、 ii)もしn=1又は3ならばx′のサインを計算する ことによってxのコサインを決定するステップを含む請
    求項1又は2に記載の方法。 11、前記関数はコサイン関数であり、前記多項式は cos(x)=1+x^2*(c_1+x^2(c_2
    +x^2c_3))の形であり、ここにおいてc_1、
    c_2及びc_3は定数である請求項1又は2に記載の
    方法。 12、前記関数の値はディジタルコンピュータからの出
    力を得るために用いられる請求項1又は2に記載の方法
    。 13、ディジタル処理手段から出力を与える方法におい
    て、 a)前記ディジタル処理手段内に入力を受けるステップ
    、 b)該入力の関数の値を計算するステップ、該計算ステ
    ップはさらに i)前記関数の多項式の代表を与えるステ ップ、 該多項式の代表は少なくとも第1中間 結果を持つ ii)前記入力の1つの小数位置の少なくとも1つが、
    該第1の中間結果の加算又は 減算が少なくとも1つの入力の小数位置 と等しくなるように調整されるステップ iii)前記多項式が関数値を与えるように計算するス
    テップ を含み、 c)前記関数値に基づいて前記出力を与えるステップ を有することを特徴とする方法。 14、前記関数は3角関数である請求項13に記載の方
    法。 15、前記3角関数はサイン関数であり、前記多項式は sin(x)=x+x*x^2*(c_1x^2*(c
    _2+x^2*c_3))の形であり、ここにおいてc
    _1、c_2及びc_3は定数である請求項14に記載
    の方法。 16、前記3角関数はコサイン関数であり、前記多項式
    は cos(x)=1+x^2*(c_1x^2(c_2x
    ^2c_3))の形であり、ここにおいてc_1、c_
    2及びc_3は定数である請求項14に記載の方法。 17、関数の値を与える装置において、 a)入力値を受取るための手段、 b)i)中間結果を持った多項式関数に前記関数の多項
    式代表を与え、 ii)前記入力値に基づく前記多項式の展開中に使用さ
    れる値を与え、前記使用され る値は加算される値と等しい小数位置を 持つ中間結果の少なくとも1つを与える ように適応され、 iii)前記使用される値と前記多項式展開に基づいて
    前記値の前記関数を計算するよ うにプログラムされた、前記入力値の前 記関数を計算する手段、及び c)前記関数の値を与える手段 を備えることを特徴とする装置。 18、固定小数点装置である請求項17に記載の装置。 19、前記多項式の代表はサイン関数の代表である請求
    項17記載の装置。 20、前記関数を計算するためにアセンブリ言語により
    プログラムされている請求項17に記載の装置。 21、前記サイン関数は、 sin(x)=x+x*x^2(c_1x^2*(c_
    2+x^2+c_3))の形式の式に基づいて計算され
    、ここにおいてc_1、c_2及びc_3は定数である
    請求項19に記載の装置。 22、前記ディジタルコンピュータは cos(x)=1+x^2*(c_1+x^2(c_2
    +x^2c_3))の形式の多項式に基づくコサイン関
    数を計算するようにプログラムされている請求項17に
    記載の装置。 23、ディジタル処理手段における、入力値を持った多
    項式展開により少なくとも一部分が表される関数の値を
    引算する方法において、 a)前記多項式展開において第1の中間値を決定するス
    テップ、 b)前記第1の中間結果及び前記入力値の第1のものに
    ついて演算を行うステップ、 該演算は加算及び減算より成る群から選 ばれ、前記入力値の少なくとも一部分は前 記第1の中間結果と、前記第1の入力値と が同じ指数を持つように調整された指数を 持つ数により表され、 c)前記演算の結果に基づき、前記関数の値を与えるス
    テップ を有することを特徴とする方法。 24、固定小数点ハードウェアの浮動小数点数の計算実
    行方法において、 a)浮動小数点数を入力するステップ、 b)前記固定小数点ハードウェア内の前記浮動小数点数
    の関数を評価するステップ、 該評価ステップはさらに、 i)前記浮動小数点数の代表と第1入力値 とを乗算して中間結果を得るステップ、 ii)第2入力値による前記中間結果と、浮動小数点数
    の前記代表の位取り因数と、 前記第1入力値と、前記中間結果と前記 第2入力値とが等しい位取り因数を持つ ように選ばれた前記第2入力値について 加算又は減算を行い、該加算ステップは 出力値を生成するステップを含み、 c)前記固定小数点ハードウェアからの出力を与えるた
    めに前記出力値を使用するステ ップ を有することを特徴とする方法。
JP9296790A 1989-04-07 1990-04-06 高速計算を行うための方法及び装置 Pending JPH02287821A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US33516189A 1989-04-07 1989-04-07
US335,161 1989-04-07

Publications (1)

Publication Number Publication Date
JPH02287821A true JPH02287821A (ja) 1990-11-27

Family

ID=23310538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9296790A Pending JPH02287821A (ja) 1989-04-07 1990-04-06 高速計算を行うための方法及び装置

Country Status (1)

Country Link
JP (1) JPH02287821A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100506470B1 (ko) * 2001-05-31 2005-08-05 세미콘덕터 테크놀로지 아카데믹 리서치 센터 평방근의 역수 계산 방법, 계산 회로, 및 기록매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100506470B1 (ko) * 2001-05-31 2005-08-05 세미콘덕터 테크놀로지 아카데믹 리서치 센터 평방근의 역수 계산 방법, 계산 회로, 및 기록매체

Similar Documents

Publication Publication Date Title
US6360241B1 (en) Computer method and apparatus for division and square root operations using signed digit
JP2622896B2 (ja) 除算装置
EP0421092A2 (en) Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
US9959093B2 (en) Binary fused multiply-add floating-point calculations
JP2557190B2 (ja) 引き数簡約の最適化システム
US10303438B2 (en) Fused-multiply-add floating-point operations on 128 bit wide operands
JPH03204720A (ja) 初等関数演算装置
US20090172069A1 (en) Method and apparatus for integer division
US4594680A (en) Apparatus for performing quadratic convergence division in a large data processing system
JPH09212337A (ja) 浮動小数点演算処理装置
US9767073B2 (en) Arithmetic operation in a data processing system
US7080112B2 (en) Method and apparatus for computing an approximation to the reciprocal of a floating point number in IEEE format
JPH02287821A (ja) 高速計算を行うための方法及び装置
Wires et al. Reciprocal and reciprocal square root units with operand modification and multiplication
JPS6120134A (ja) 平方根計算装置
CN117827145B (zh) 浮点运算装置及其处理方法、信息处理系统、硬件加速器
Jorgensen et al. Exact floating point
JPS59154542A (ja) 乗算装置
Vazquez et al. Redundant floating-point decimal CORDIC algorithm
Qu et al. SCR-LIBM: A Correctly Rounded Elementary Function Library in Double-Precision
Gopal Design and performance analysis of high throughput and low latency double precision floating point division on FPGA.
Kulisch et al. High speed associative accumulation of floating-point numbers and floating-point intervals
Galal et al. Division Algorithms and Hardware Implementations
JPS581244A (ja) 浮動小数点命令例外検出方法
Vlăduţiu The representation of numbers in computing systems