JPH11195012A - 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体 - Google Patents

自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体

Info

Publication number
JPH11195012A
JPH11195012A JP10012055A JP1205598A JPH11195012A JP H11195012 A JPH11195012 A JP H11195012A JP 10012055 A JP10012055 A JP 10012055A JP 1205598 A JP1205598 A JP 1205598A JP H11195012 A JPH11195012 A JP H11195012A
Authority
JP
Japan
Prior art keywords
value
point
calculation
function
data
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
JP10012055A
Other languages
English (en)
Inventor
Akiko Wakabayashi
明子 若林
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.)
Namco Ltd
Original Assignee
Namco Ltd
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 Namco Ltd filed Critical Namco Ltd
Priority to JP10012055A priority Critical patent/JPH11195012A/ja
Publication of JPH11195012A publication Critical patent/JPH11195012A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】本来浮動小数点演算で実行すべき自由曲線の関
数値を求める演算を、固定小数点演算や整数演算で実行
する場合に、高速に、かつ滑らかで高精度な補間結果を
得ることができる自由曲線演算方法および該方法に係る
プログラムを格納した記憶媒体を提供することを目的と
する。 【解決手段】自由曲線を表す補間多項式x(t)のう
ち、tおよび定数のみで表記できる項について、tの各
値に対応するその項の値の一覧を示す演算用テーブル
を、あらかじめ作成しておき、実際にt値が与えられた
ときには、該テーブルを参照して演算を行なう。また、
演算を行なう際の浮動小数点での計算は、浮動小数点の
データを符号部、指数部、および仮数部の3つの変数に
分けたデータ形式で表したデータを用い、固定小数点演
算機能(整数演算機能含む)によって浮動小数点の演算
を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、通常は浮動小数点
演算で実行すべき自由曲線の関数値を求める演算を固定
小数点演算または整数演算によって実行する自由曲線演
算方法および該方法に係るプログラムを格納した記憶媒
体に関する。
【0002】
【従来の技術】浮動小数点演算は、FPU(Floating P
oint Unit)と呼ばれる数値演算プロセッサを用いて高
速に実行することができる。浮動小数点演算が必要な場
合としては、例えば、t=t0,t1,t2,…,tnの各
位置における関数値h(t0),h(t1),h(t
2),…,h(tn)が知られていて、それら各点の間の
関数値を補間により求める場合がある。すなわち、各点
を滑らかにつなぐ自由曲線(例えば、エルミート曲線や
B−スプライン曲線など)を求める場合である。このよ
うな自由曲線を求める処理は、ゲームソフトで各種の表
示データを作成する場合など、種々の場面で適用される
処理である。
【0003】一方、コストを抑えるためなどの理由によ
り、FPUが搭載されていなかったりあるいはFPUが
CPU(中央処理装置)より低速なコンピュータ上で、
所定のソフトウエアにより浮動小数点演算を実行したい
場合がある。例えば、上記の補間処理をFPUを用いず
に、固定小数点演算または整数演算で実行する場合であ
る。この場合、従来は、浮動小数点のデータを所定倍
して固定小数点演算または整数演算できる値として線形
補間を行なう方式、または、浮動小数点のデータを所
定倍して固定小数点演算または整数演算できる値として
自由曲線を求める方式などが用いられていた。
【0004】
【発明が解決しようとする課題】上記のように固定小
数点演算や整数演算で線形補間を行なう方式では、高速
に処理を行なうことはできるが、滑らかな補間にならな
いという不都合がある。また、上記のように固定小数
点演算や整数演算で自由曲線を求める方式は、上記の
線形補間より処理速度は若干遅いものの、比較的高速に
処理が可能であり、線形補間より滑らかな補間結果を得
ることができる。しかし、自由曲線を求めるため御演算
途中でしばしば桁数が大きくなるため、固定小数点演算
や整数演算で自由曲線を求めるのでは、十分な精度が得
られない。
【0005】本発明は、上述の従来形における問題点に
鑑み、本来浮動小数点演算で実行すべき自由曲線の関数
値を求める処理を、固定小数点演算または整数演算で実
行する場合に、高速に、かつ滑らかで高精度な補間結果
を得ることができる自由曲線演算方法および該方法に係
るプログラムを格納した記憶媒体を提供することを目的
とする。
【0006】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に係る発明は、固定小数点演算機能または
整数演算機能を備えた処理装置で、自由曲線を求める浮
動小数点の補間演算を行なう方法であって、区間[t
0,t3]内の任意のt値に対する自由曲線の関数値を求
めるための補間多項式x(t)のうち、tおよび定数の
みで表記できる項について、tの各値に対応するその項
の値の一覧を示す演算用テーブルを、あらかじめ作成し
て記憶しておき、tの値を入力したとき、上記演算用テ
ーブルを参照して、入力したt値に対応する上記項の値
を取得し、取得した項の値を用いて関数値x(t)を求
めるとともに、上記関数値x(t)を求める演算では、
該演算に用いる実数データを、符号部、指数部、および
仮数部の3つの変数に分けたデータ形式で表し、該デー
タ形式の実数データの四則演算を上記固定小数点演算機
能または整数演算機能を用いて行なうことを特徴とす
る。
【0007】請求項2に係る発明は、固定小数点演算機
能または整数演算機能を備えた処理装置で、自由曲線を
求める浮動小数点の補間演算を行なうプログラムを格納
した記憶媒体であって、該プログラムは、区間[t0,
t3]内の任意のt値に対する自由曲線の関数値を求め
るための補間多項式x(t)のうち、tおよび定数のみ
で表記できる項について、tの各値に対応するその項の
値の一覧を示す演算用テーブルを含むものであり、tの
値を入力したとき、上記演算用テーブルを参照して、入
力したt値に対応する上記項の値を取得し、取得した項
の値を用いて関数値x(t)を求めるとともに、上記関
数値x(t)を求める演算では、該演算に用いる実数デ
ータを、符号部、指数部、および仮数部の3つの変数に
分けたデータ形式で表し、該データ形式の実数データの
四則演算を上記固定小数点演算機能または整数演算機能
を用いて行なうものであることを特徴とする。
【0008】
【発明の実施の形態】以下、図面を用いて、本発明の実
施の形態を説明する。
【0009】図1は、本発明に係る自由曲線演算方法を
実行するデータ処理装置のブロック構成を示す。自由曲
線としてはエルミート曲線やB−スプライン曲線などが
あるが、この実施の形態ではエルミート曲線を用いたエ
ルミート補間演算を例として説明する。本装置は、入力
部101、メモリ102、出力部103、CPU(中央
処理装置)104、およびエルミート演算用テーブル1
06を備えている。
【0010】入力部101は補間演算に必要な各種のデ
ータを入力する機能を果たす。入力部101により入力
されたデータは、メモリ102に格納される。メモリ1
02は、補間処理を行なう処理対象データや処理結果な
どを格納するワーク領域に使用するRAM(ランダムア
クセスメモリ)である。また、メモリ102は、本発明
に係るエルミート演算方法を実行するプログラムを格納
し、CPU104は該プログラムを読み出して実行する
ことによりエルミート補間演算を行なう。該プログラム
は、実行時に不図示の外部記憶装置からメモリ102に
ロードするように構成してもよいし、メモリ102の一
部をROM構成として格納しておいてもよい。
【0011】CPU104は、この装置全体の動作を制
御する処理装置である。CPU104は、整数演算部1
05を備えており、この整数演算部105を用いて、浮
動小数点のエルミート補間演算を実行する。この整数演
算部105は、16ビットまたは32ビットで整数演算
を行なうことができるものである。エルミート演算用テ
ーブル106は、CPU104が浮動小数点のエルミー
ト補間演算を行なう際に参照するテーブルである。エル
ミート演算用テーブル106は、ROMまたはRAMの
どちらで構成してもよく、RAM構成を採る場合は、あ
らかじめ入力部101からテーブルの内容を読み込んで
ロードしておく。ROM構成またはRAM構成の何れを
採る場合でも、エルミート演算用テーブル106をメモ
リ102と同じチップ内の別領域を用いてよい。エルミ
ート補間演算の処理手順やエルミート演算用テーブル1
06の内容については、後に詳述する。出力部103
は、メモリ102上の処理結果を出力する機能を果た
す。
【0012】本実施の形態のエルミート演算方法は、取
り扱う浮動小数点データの符号部、指数部、および仮数
部をそれぞれ独立の変数で表すデータ形式を用いる点、
および、エルミート演算の計算式の一部を定数テーブル
化して保持しておき、該テーブルを参照して演算する点
を特徴とする。
【0013】まず、本実施の形態で用いるデータ形式に
ついて説明する。このデータ形式はANSI/IEEE754-1985
floating-point standard のフォーマットを応用したも
のであるので、始めにIEEE標準のフォーマットについて
説明し、次にそれを応用した本実施の形態におけるエル
ミート演算方法で用いるデータ形式について説明する。
【0014】図2は、IEEE標準の浮動小数点データのフ
ォーマットを示す。この浮動小数点データフォーマット
200は4バイトまたは8バイト形式で、実数を 実数=(-|+) 2^(n-B) * 1.F の形式で表現する。*は指数と仮数の積を表す。図2に
おいて、201は、上記式中の(-|+)の部分、すなわち
実数の符号(+または−)を表すデータを格納する符号
部である。202は上記式中のnの値を格納する指数部
である。なお、2^(n-B)は2の(n-B)乗を表し、Bはバイ
アス値を表す。バイアス値とは、指数部202として使
用するビット数の符号無し(unsigned)での最大値を2
で割った値である。実際に表現したい実数の指数部(n-
B)にこのバイアス値Bを加算した値n=(n-B)+Bを指数部
202に格納するのは、実際に表現したい実数の指数の
範囲をプラスからマイナスの範囲にするためである。2
03は上記式中のFの値を格納する仮数部である。すな
わち、実際に表現したい実数の仮数部を1.Fの形式(2
進表記で、小数点より上位1桁目が必ず1になるように
した形式)で表したときの小数点以下の値Fを仮数部2
03に格納する。
【0015】全体のデータ長が4バイト(32ビット)
の場合は、符号部201に1ビット、指数部202に8
ビット、仮数部203に23ビットを、それぞれ割り当
てる。全体のデータ長が8バイト(64ビット)の場合
は、符号部201に1ビット、指数部202に11ビッ
ト、仮数部203に52ビットを、それぞれ割り当て
る。
【0016】図2のIEEE標準の浮動小数点データのフォ
ーマットをそのまま用いて、整数演算や固定小数点演算
で浮動小数点演算を行なう場合には、指数部202を取
り出したり、仮数部203から1.Fの形の仮数を生成し
たり、演算の後に演算結果を図2の形式に戻す処理な
ど、本来の演算に対して前処理や後処理といえる処理を
行なわなくてはならない。そのような前処理や後処理を
行なうのでは、処理速度を上げることができない。ま
た、16ビット単位で処理するという条件がある場合
は、図2のフォーマットを16ビットに合わせる必要が
ある。しかし、例えば、符号部201に1ビット、指数
部202に6ビット、仮数部203に9ビットを割り当
てたとしても、仮数部が9ビットでは10進数で2桁の
レンジしか表すことができず、精度が悪くなる。
【0017】そこで、本実施の形態では、図2のフォー
マットを応用し、図2の符号部201、指数部202、
および仮数部203をそれぞれ独立の変数で表現し、そ
れら3つの変数の組み合せで1つの浮動小数点の実数を
表す。各変数は16ビットデータとする。また、指数部
ではバイアスを用いない。仮数部は、表現したい実数の
仮数部をそのまま1.Fの形式で格納する。
【0018】図3は、本実施の形態で浮動小数点の実数
を表現するために用いる3つの変数についての説明を記
載した表である。変数1は、表現したい実数の符号部
(−または+)を格納する変数である。変数1も16ビ
ットデータであるが、使用するのはそのうち1ビットで
ある。変数2は、表現したい実数の指数部(バイアスな
し)を格納する変数であり、16ビットの符号付き整数
形式である。指数部の符号は、16ビットの符号付き整
数形式で表現される+または−をそのまま用いる。変数
3は、表現したい実数の仮数部を1.Fの形で格納する変
数であり、変数3の長さ16ビットのうちの下位15ビ
ットを使用する。変数3の16ビットのうちの最上位の
1ビットには0を入れておく。16ビットをフルに使用
しないのは、四則演算時のオーバフローを防ぐためであ
る。
【0019】以上より、変数1により表現される符号を
(-|+)とし、変数2により表現される指数部の値をXと
し、変数3により表現される仮数部の値をYとすると、
これらの変数により表現される浮動小数点の実数は、 実数=(-|+) 2^X * Y となる。2^Xは2のX乗を表し、*は指数と仮数の積を
表す。
【0020】以上説明したデータ形式を用いれば、表現
したい実数の仮数部に比較的十分なビット数(15ビッ
ト)を使用することができるので、整数演算部を用いて
浮動小数点演算を行なう場合でも、ある程度の精度を保
つことができる。また、各変数を独立した16ビットの
データとして保持しているので、整数演算部を用いて浮
動小数点演算を行なう際の前処理や後処理のステップを
減らすことができ、演算を比較的高速に行なうことがで
きる。
【0021】図4は、図2のIEEE標準のデータ形式をそ
のまま用いて整数演算部により浮動小数点演算を行なう
場合の処理ステップ数と、本実施の形態の図3のデータ
形式を用いた場合の処理ステップ数とを、比較した表で
ある。乗算および加算ともに、IEEE標準のデータ形式を
用いた場合には、指数を取り出すなどの前処理や後処理
に必要なステップがあるため処理速度が遅くなってしま
うが、本実施の形態では図3で説明した変数1〜3を直
接用いて演算を行なえるので、ステップ数が少なくて済
み、処理速度が速い。
【0022】図3のデータフォーマットで表現された2
つの実数に対して、乗算、除算、および加減算を行なう
手順を具体的に説明する。
【0023】まず、乗算の手順を説明する。乗算は、次
の〜の手順にしたがって行なう。 1.Fの形式の仮数部(変数3)の部分同士は、普通に
乗算(変数3を整数とみなした整数演算)を行なう。演
算結果を16ビットに納める場合は、乗算してもオーバ
フローしないように、(16ビット/2)のビット幅に
なるように右シフトしてから乗算を行なう。そうするこ
とにより、丁度変数の全ビット(16ビット)を使うこ
とになる。一方、演算結果を32ビットに納める場合
(例えば、16ビットデータを入力して、演算結果を3
2ビットで出力するようなコプロセッサを用いる場合な
ど)は、乗算前のビットシフトの必要はなくなり、変数
3の形式の仮数部を用いてそのまま乗算(変数3のデー
タを整数とみなした整数演算)すればよい。得られた乗
算結果は32ビットデータであり、元の16ビットデー
タの小数点位置は上位から第2ビット目と第3ビット目
の間にあったから、乗算結果の32ビットデータでは上
位から第4ビット目と第5ビット目に小数点があること
になる。この32ビットの乗算結果ををシフトして、変
数3の形式、すなわち16ビットデータ中の上位から第
2ビット目と第3ビット目の間に小数点がくるようにす
る。変数3の形式の仮数部をそのまま乗算し、乗算後に
シフトするので、上記(16ビット/2)のビット幅に
なるようにシフトしてから乗算を行なう手法と比較し
て、より精度が保てる。後述するエルミート計算に使用
する場合は、計算精度を保つため、後者の方式を用い
る。 指数部(変数2)同士は加算を行なう。 上記およびの演算結果を、図3のデータフォーマ
ット、すなわち(2^n *1.F)の形にするため、仮数部が
大きな値になったときは指数に加算して、仮数を小さく
する。具体的には、上記の仮数部の乗算結果(16ビ
ットで小数点が上位から第2ビット目と第3ビット目に
くるようにシフトしたデータ)の最上位ビット(小数点
から上位の側に向かって2桁目)に1が立っている場
合、そのままでは1.Fの形にならないので、仮数部を1
ビット分多く右シフトさせるために、指数部に1加算す
る。仮数部の乗算結果の最上位ビット(小数点から上位
の側に向かって2桁目)に1が立っていることをチェッ
クしさえすれば良い理由は以下の通りである。すなわ
ち、仮数部は1.Fの形式であり2.0より小さい値であるの
で、そのような仮数部を乗算した結果は (1.F*1.F)<0100.000B (0100.000Bは4.0の2進数
表記を表す) である。したがって、16ビットデータの下位15ビッ
トで1.Fの形式の仮数部を表している場合、それらの積
で1が立つ可能性があるビットは16ビット目(16ビ
ットデータの最上位ビットであり、小数点から上位の側
に向かって2桁目のビット)までである。
【0024】次に、除算の手順を説明する。除算は、次
の〜の手順にしたがって行なう。 仮数部(変数3)同士で同じ桁数で除算を行うと、結
果は1か0しか出ない。したがって、割られる数値の仮
数部を桁上げするか、割る数値の仮数部を小さくする
か、どちらかの処理を行なっておく必要がある。割られ
る数値の仮数部を桁上げする場合、本実施の形態では1
6ビットデータを単位としているので、割られる数値の
仮数部を16ビット左シフトし、32ビット/16ビッ
トで仮数部同士の除算(変数3を整数とみなした整数演
算)を行なう。この方法によれば、計算精度を保つこと
ができる。一方、割る数値の仮数部を小さくする場合
は、割る数値の仮数部を16/2=8ビット右シフトし
てから除算を行なう。この方法によれば、結果が16ビ
ットにすべて納まる反面、誤差も発生する。 指数(変数2)同士は減算を行なう。 上記およびの演算結果を、図3のデータフォーマ
ット、すなわち(2^n *1.F)の形にするため、演算結果
の仮数部が1.Fの形式でなかったときは指数部の値を調
整して、仮数部を1.Fの形式にする。
【0025】次に、加減算の手順を説明する。加減算
は、次の〜の手順にしたがって行なう。 指数部(変数2)の値の大きい方に合わせて(2つの
数値の指数が同じ値になるように)、仮数部(変数3)
の値をシフトする。 仮数部同士を加減算する。 上記およびの演算結果を、図3のデータフォーマ
ット、すなわち(2^n *1.F)の形にするため、演算結果
の仮数部が1.Fの形式でなかったときは指数部の値を調
整して、仮数部を1.Fの形式にする。
【0026】次に、本実施の形態の第2の特徴点であ
る、エルミート演算の計算式の一部を定数テーブル化し
て保持しておき該テーブルを参照して演算する点につい
て説明する。エルミート演算の計算式は、各種の表現形
式のものが知られているが、ここでは下記の式を用い
る。 x(t)=x0*(項1)+d0*(項2)+x3*(項
3)+d3*(項4) ただし、*は乗算を示し、(項1)〜(項4)の各項
は、 (項1)=2t^3−3t^2+1 (項2)=t^3−2t^2+t (項3)=−2t^3+3t^2 (項4)=t^3−t^2 である。t^2およびt^3は、それぞれtの2乗および3
乗を表す。tは0.0≦t≦1.0の実数で、x(t)は関数
値を示す。上記計算式は、横軸にtをとり縦軸にx
(t)をとった座標系で、t=0の位置を始点、t=1
の位置を終点としたとき、0と1の間のtの値に対応す
る関数値x(t)をエルミート演算で求める式である。
t=0の始点において、関数値はx(0)=x0、傾き
はdx(t)/dt=d0とする。t=1の終点におい
て、関数値はx(1)=x3、傾きはdx(t)/dt
=d3とする。
【0027】上記計算式の(項1)〜(項4)は、始点
や終点における関数値xや傾きdの影響を受けず、また
t値の取り得る範囲も0.0≦t≦1.0と限られている。そ
こで、0から1の間を所定数で等分割した各t値に対応
する(項1)〜(項4)の値を、あらかじめテーブル化
しておく。図1のエルミート演算用テーブル106が、
そのテーブルである。図5に、エルミート演算用テーブ
ル106の内容を示す。エルミート演算用テーブル10
6は、(項1)テーブルから(項4)テーブルにより構
成され、各テーブルはt値に対する各項の値を保持して
いる。例えば、(項1)テーブルは、各t値に対する
(項1)=2t^3−3t^2+1の値を保持するテーブル
である。t値の表現形式および各項の値の表現形式は、
上述した図3の形である。0〜1の範囲をどの程度に等
分割するかは、要求される計算精度に応じて定めればよ
い。
【0028】図5に示した各項のテーブルは、あらかじ
め作成して、図1のエルミート演算用テーブル106と
して格納しておく。エルミート演算による補間計算を行
なう際には、まず図1で入力部101から、t=0の始
点における関数値x0と傾きd0、およびt=1の終点に
おける関数値x3と傾きd3を入力し、図3の形式でメモ
リ102の所定領域に記憶する。以降は、入力部101
から0〜1の範囲のtが図3の形式で入力すると(別の
形式で入力してから、図3の形式に直してもよい)、C
PU104は、そのt値に対応する(項1)〜(項4)
の値を図5のエルミート演算用テーブル106を参照し
て取得し、その(項1)〜(項4)の値とx0,d0,x
3,d3の値とを用いて上記の計算式でx(t)を算出す
る。その演算は、整数演算部105により、図3の形式
のところで説明した乗算および加減算の手順にしたがっ
て行なう。
【0029】図6は、上述したエルミート演算方法にし
たがって補間計算を実行した例を示す。ここでは、フレ
ームナンバTにより、始点のフレームナンバはT0=1
2、終点のフレームナンバはT3=30というように表
現し、始点と終点との間のフレームナンバTの位置にお
ける補間計算値を求めている。フレームナンバTで表現
しているので、t=(T−T0)/(T3−T0)により
0から1の範囲のt値に変換してから、上述の手法によ
り補間計算を行なった。
【0030】図6において、「Frame No.」はフレーム
ナンバT(T0≦T≦T3)を示し、「doubleでの計算結
果」はFPUを用いて32ビット浮動小数点形式で各フ
レームのエルミート補間演算を行なった結果を示す。
「本手法」の欄のうち「256」と記載した欄は、0≦
t≦1の範囲を256分割した各t値に対応する(項
1)〜(項4)の値を格納したエルミート演算用テーブ
ル106(図5)を用いて上述した本実施の形態の手法
により計算した各フレームのエルミート補間結果であ
る。「本手法」の欄のうち「4096」と記載した欄
は、0≦t≦1の範囲を4096分割した各t値に対応
する(項1)〜(項4)の値を格納したエルミート演算
用テーブル106(図5)を用いて上述した本実施の形
態の手法により計算した各フレームのエルミート補間結
果である。「誤差」の欄は、それぞれの場合における本
手法での計算結果とdoubleでの計算結果との差を示す。
また、「最大誤差」と「平均誤差」は、それぞれ、誤差
の最大値(絶対値)と誤差の平均値を示す。
【0031】なお、ここでは、エルミート演算用テーブ
ル106として、テーブル長が256のものと4096
のものとを用いた例を示したが、どの程度のテーブル長
のエルミート演算用テーブル106を用いるかは、要求
される計算精度に応じて定めればよい。
【0032】また、エルミート計算自体には除算は無い
が、図6の例のようにフレームナンバTで表現した場合
は、t=(T−T0)/(T3−T0)の除算が必要にな
る。除算は処理時間がかかるので、この除算のステップ
を省略するため、(T−T0)と(T3−T0)とをイン
デックスとしてtを求めるテーブル、あるいはTをイン
デックスとしてtを求めるテーブルをあらかじめ作成し
ておいてもよい。そのテーブルサイズはエルミート演算
に誤差が生じない程度の長さとする。
【0033】なお、上記の実施の形態で用いたエルミー
ト演算の計算式では、始点と終点の傾きd0,d3を入力
するが、傾きd0,d3はマイナス無限大から無限大の範
囲をとるので、入力データも図3の浮動小数点の形式で
精度を保つように与えなければ誤差が大きくなってしま
う。しかし、図3の浮動小数点形式では1つのデータに
対して16ビット×3個の変数を入力する必要があり、
必要な記憶容量が大きくなるという不都合がある。そこ
で、傾きdは角度で表記したデータ(16ビット)を入
力するようにし、あらかじめ角度からタンジェント値を
求めるテーブルを用意しておき、CPU104は、その
テーブルを参照して、入力した角度dからタンジェント
値の傾きdを求めてエルミート演算に使用するようにし
てもよい。これにより、入力データd0,d3は、16ビ
ット×3個分のデータでなく、16ビット×1個分のデ
ータを入力すればよくなる。
【0034】図7は、d値を角度で入力しテーブルを参
照する方式を採った場合の誤差と、d値を図3の浮動小
数点の形式のデータで入力した場合の誤差とを比較した
表である。図6で説明したのと同様に、フレームナンバ
Tを用いて、始点のフレームナンバはT0=12、終点
のフレームナンバはT3=32というように表現し、始
点と終点との間のフレームナンバT=26の位置におけ
る補間計算値を求めている。「doubleで計算」はFPU
を用いて32ビット浮動小数点形式で実行した場合、
「角度で表す手法」はd値を角度で(具体的には、始点
での角度は0度、終点での角度は89.472642度)入力し
テーブルを参照する手法で実行した場合、「16bit浮動
小数点」はd値を図3の浮動小数点形式で(具体的に
は、始点でd0=0.000000、終点でd3=1278.062500)
入力した場合を示す。終点での角度が89.472642度で90
度(d=無限大)に近くなっているため、「角度で表す
手法」での誤差が大きくなっているが、この程度の誤差
があることをあらかじめ見越して、d値を角度で入力す
るようにすれば、入力データの記憶容量を少なくでき
る。
【0035】なお、図7から分かるように、d値を角度
で入力する場合、-90度や90度に近いほど誤差が大きく
なるので、その付近では図3の浮動小数点形式でデータ
入力し、それ以外では角度でデータ入力するようにして
もよい。
【0036】上記実施の形態では、図3に示した3つの
変数で浮動小数点の実数を表す形式を説明したが、32
ビット変数の上位16ビットを符号部と指数部に使用
し、下位16ビットを仮数部に使用するようにしてもよ
い。その場合、指数部はバイアスを用いて図2の指数部
と同様に表し、演算時には、上位16ビットから符号部
や指数部を取り出すためのマスク演算や、バイアスを考
慮した演算を行なう。図3の形式に比較すると、バイア
スやマスク演算の処理が必要なのでその分処理時間がか
かるが、装置によっては32ビットを単位として効率的
にメモリアクセスできるものもあるので、符号部と指数
部を合体させた方が全体として効率的に処理できる場合
もある。
【0037】上記実施の形態では、上記x(t)のエル
ミート演算の計算式を用いたが、他の形の計算式を用い
てもよい。また、上記実施の形態では、エルミート演
算、すなわち自由曲線としてエルミート曲線で関数値の
知られている各点を結ぶ場合を例に説明したが、その他
の自由曲線、例えばB−スプライン曲線を用いた場合も
同様に演算することができる。
【0038】
【発明の効果】以上説明したように、本発明によれば、
自由曲線を表す補間多項式x(t)のうち、tおよび定
数のみで表記できる項について、tの各値に対応するそ
の項の値の一覧を示す演算用テーブルを、あらかじめ作
成しておき、実際にt値が与えられたときには、該テー
ブルを参照して演算を行なうので、高速な処理が可能で
ある。また、演算を行なう際の浮動小数点での計算は、
浮動小数点のデータを符号部、指数部、および仮数部の
3つの変数に分けたデータ形式で表したデータを用いる
ので、整数演算機能または固定小数点演算機能によって
浮動小数点の演算を実行できる。また、従来の浮動小数
点のデータ形式をそのまま用いて固定小数点演算機能に
よって浮動小数点の演算を実行する場合と比較して、少
ない演算ステップ数で演算でき、高速な処理が可能であ
る。
【図面の簡単な説明】
【図1】本発明に係る自由曲線演算方法を実行するデー
タ処理装置のブロック構成図
【図2】IEEE標準の浮動小数点データのフォーマットを
示す図
【図3】浮動小数点の実数を表現するために用いる3つ
の変数についての説明図
【図4】従来のデータ形式での処理ステップ数と図3の
データ形式での処理ステップ数とを比較する図
【図5】エルミート演算用テーブルの内容を示す図
【図6】補間計算の実行例を示す図
【図7】d値を角度で入力した場合と浮動小数点で入力
した場合の誤差を比較する図
【符号の説明】
101…入力部、102…メモリ、103…出力部、1
04…CPU(中央処理装置)、105…固定小数点演
算部、106…エルミート演算用テーブル。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】固定小数点演算機能または整数演算機能を
    備えた処理装置で、自由曲線を求める浮動小数点の補間
    演算を行なう方法であって、 区間[t0,t3]内の任意のt値に対する自由曲線の関
    数値を求めるための補間多項式x(t)のうち、tおよ
    び定数のみで表記できる項について、tの各値に対応す
    るその項の値の一覧を示す演算用テーブルを、あらかじ
    め作成して記憶しておき、 tの値を入力したとき、上記演算用テーブルを参照し
    て、入力したt値に対応する上記項の値を取得し、取得
    した項の値を用いて関数値x(t)を求めるとともに、 上記関数値x(t)を求める演算では、該演算に用いる
    実数データを、符号部、指数部、および仮数部の3つの
    変数に分けたデータ形式で表し、該データ形式の実数デ
    ータの四則演算を上記固定小数点演算機能または整数演
    算機能を用いて行なうことを特徴とする自由曲線演算方
    法。
  2. 【請求項2】固定小数点演算機能または整数演算機能を
    備えた処理装置で、自由曲線を求める浮動小数点の補間
    演算を行なうプログラムを格納した記憶媒体であって、 該プログラムは、 区間[t0,t3]内の任意のt値に対する自由曲線の関
    数値を求めるための補間多項式x(t)のうち、tおよ
    び定数のみで表記できる項について、tの各値に対応す
    るその項の値の一覧を示す演算用テーブルを含むもので
    あり、 tの値を入力したとき、上記演算用テーブルを参照し
    て、入力したt値に対応する上記項の値を取得し、取得
    した項の値を用いて関数値x(t)を求めるとともに、 上記関数値x(t)を求める演算では、該演算に用いる
    実数データを、符号部、指数部、および仮数部の3つの
    変数に分けたデータ形式で表し、該データ形式の実数デ
    ータの四則演算を上記固定小数点演算機能または整数演
    算機能を用いて行なうものであることを特徴とする自由
    曲線補間演算を行なうプログラムを格納した記憶媒体。
JP10012055A 1998-01-06 1998-01-06 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体 Pending JPH11195012A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10012055A JPH11195012A (ja) 1998-01-06 1998-01-06 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10012055A JPH11195012A (ja) 1998-01-06 1998-01-06 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体

Publications (1)

Publication Number Publication Date
JPH11195012A true JPH11195012A (ja) 1999-07-21

Family

ID=11794927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10012055A Pending JPH11195012A (ja) 1998-01-06 1998-01-06 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体

Country Status (1)

Country Link
JP (1) JPH11195012A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020090003A (ko) * 2001-05-25 2002-11-30 주식회사 리코시스 플랫폼에 독립적인 멀티미디어 재생방법 및 그 기록매체
JP2021525403A (ja) * 2018-06-05 2021-09-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 改良された低精度の2進浮動小数点形式設定

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020090003A (ko) * 2001-05-25 2002-11-30 주식회사 리코시스 플랫폼에 독립적인 멀티미디어 재생방법 및 그 기록매체
JP2021525403A (ja) * 2018-06-05 2021-09-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 改良された低精度の2進浮動小数点形式設定
US11775257B2 (en) 2018-06-05 2023-10-03 International Business Machines Corporation Enhanced low precision binary floating-point formatting

Similar Documents

Publication Publication Date Title
KR920005226B1 (ko) 부동 소수점 연산장치
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
JPS6347874A (ja) 算術演算装置
JPH01125626A (ja) 逆数計算方法
US9223545B2 (en) Modified fixed-point algorithm for implementing infrared sensor radiation equation
JPH03208170A (ja) 数学関数の近似を計算する数値システム及び計算法
US20080208945A1 (en) Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format
JPH09212337A (ja) 浮動小数点演算処理装置
EP0416308A2 (en) Rectangular array signed digit multiplier
USH1222H (en) Apparatus for determining sticky bit value in arithmetic operations
JPH04291418A (ja) 除算回路の前処理装置
JPH11195012A (ja) 自由曲線演算方法および該方法に係るプログラムを格納した記憶媒体
EP0738959A1 (en) Method and apparatus for finding arctangents
JPS5939774B2 (ja) 指数関数の演算方式
KR19980032055A (ko) 제산장치
JPH04172526A (ja) 浮動小数点除算器
JPH03192429A (ja) 平方根演算装置
WO1999067704A1 (fr) Systeme de division utilisant une memoire de faible capacite
JPH0831024B2 (ja) 演算プロセッサ
JP2508286B2 (ja) 平方根演算装置
JP3517162B2 (ja) 除算・開平演算装置
JP2530504B2 (ja) 浮動小数点演算器
KR20010067226A (ko) 인터폴레이션 방법 및 장치
JPH0251732A (ja) 浮動小数点演算器
Ahari Computer Arithmetic in modern computers and usages of Computer Arithmetic

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071106