(57)【特許請求の範囲】
【請求項１】
指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する演算装置であって、前記関数入力値から指数部が分離された残余の仮数部を入力値としてルックアップテーブルを参照した補間近似計算を行う補間処理手段と、前記関数入力値から抽出された指数部をあらかじめ設定された倍数で乗算する乗算手段と、前記補間処理手段からの出力値の指数部に、前記倍数で乗算した指数部の値を加算する加算手段と、
関数入力値が収束の速い関数であるか又は遅い関数であるかに応じて入力されるモード指示信号に応答して、収束の速い関数の計算モード指示信号である場合には入力された指数部と仮数部とを含む前記関数入力値を前記補間処理手段へ出力するとともに指数部としてゼロを前記乗算手段に出力し、収束の遅い関数の計算モード指示信号である場合には入力された指数部をゼロとして残余の関数入力値を補間処理手段へ出力するとともに前記関数入力値から抽出した指数部を前記乗算手段に出力する分離手段を備えたことを特徴とする演算装置。
【請求項２】
指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する演算装置であって、前記関数入力値から指数部が分離された残余の仮数部を入力値としてルックアップテーブルを参照した補間近似計算を行う補間処理手段と、前記関数入力値から抽出された指数部をあらかじめ設定された倍数で乗算する乗算手段と、前記補間処理手段からの出力値の指数部に、前記倍数で乗算した指数部の値を加算する加算手段と、
関数入力値が収束の速い関数であるか又は遅い関数であるかに応じて入力されるモード指示信号に応答して、収束の速い関数の計算モード指示信号である場合には入力された指数部と仮数部とを含む前記関数入力値を前記補間処理手段へ出力するとともに前記関数入力値から抽出した指数部を前記乗算手段に出力し、収束の遅い関数の計算モード指示信号である場合には入力された指数部をゼロとして残余の関数入力値を補間処理手段へ出力するとともに前記関数入力値から抽出した指数部を前記乗算手段に出力する分離手段を備え、前記乗算手段は、収束の速い関数の計算モードである場合には入力された指数部にゼロを乗算する処理を行うことを特徴とする演算装置。
【請求項３】
指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する演算装置であって、前記関数入力値から指数部の上位ビット部が分離された残余の部分を入力値としてルックアップテーブルを参照した補間近似計算を行う補間処理手段と、前記関数入力値から抽出された指数部の上位ビット部をあらかじめ設定された倍数で乗算する乗算手段と、前記補間処理手段からの出力値の指数部に、前記倍数で乗算した指数部の上位ビット部の値を加算する加算手段と、
関数入力値が収束の速い関数であるか又は遅い関数であるかに応じて入力されるモード指示信号に応答して、収束の速い関数の計算モード指示信号である場合には入力された指数部と仮数部とを含む前記関数入力値を前記補間処理手段へ出力するとともに指数部の上位ビット部としてゼロを前記乗算手段に出力し、収束の遅い関数の計算モード指示信号である場合には指数部の上位ビット部をゼロとして残余の指数部の下位ビット部及び仮数部を含む部分を補間処理手段へ出力するとともに前記関数入力値から抽出した指数部の上位ビット部を前記乗算手段に出力する分離手段を備えたことを特徴とする演算装置。
【請求項４】
指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する演算装置であって、前記関数入力値から指数部の上位ビット部が分離された残余の部分を入力値としてルックアップテーブルを参照した補間近似計算を行う補間処理手段と、前記関数入力値から抽出された指数部の上位ビット部をあらかじめ設定された倍数で乗算する乗算手段と、前記補間処理手段からの出力値の指数部に、前記倍数で乗算した指数部の上位ビット部の値を加算する加算手段と、
関数入力値が収束の速い関数であるか又は遅い関数であるかに応じて入力されるモード指示信号に応答して、収束の速い関数の計算モード指示信号である場合には入力された指数部と仮数部とを含む前記関数入力値を前記補間処理手段へ出力するとともに前記関数入力値から抽出した指数部の上位ビット部を前記乗算手段に出力し、収束の遅い関数の計算モード指示信号である場合には入力された指数部の上位ビット部をゼロとして残余の指数部の下位ビット部及び仮数部を含む部分を補間処理手段へ出力するとともに前記関数入力値から抽出した指数部の上位ビット部を前記乗算手段に出力する分離手段を備え、前記乗算手段は、収束の速い関数の計算モードである場合には入力された指数部の上位ビット部にゼロを乗算する処理を行うことを特徴とする演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ルックアップテーブルとしてメモリに格納されているデータを用いて補間近似計算処理を行う演算装置及び方法に関し、特に、指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値の演算に適した技術に関する。
【０００２】
【従来の技術】
液体や固体或いは高分子などの挙動をそれらを構成する原子や分子の動きの結果として考え、その動きを電子計算機でシミュレーションして研究する分野は分子動力学と呼ばれる。分子動力学では原子または分子を粒子と考え、それらの粒子間に働く力を計算し、微小時間後の粒子の位置を計算する。この計算を繰り返し行って各粒子の軌跡を求め、その結果としての物質の性質などを計算する。したがって、分子動力学では、粒子間に働く力は必ず計算しなければならない物理量である。
【０００３】
分子動力学において力の計算を行う場合には、粒子間の距離を入力値とし、粒子に働く力やポテンシャル、或いはそれに類する値を出力とする関数を得る手段として、１次や２次補間といった多項式による補間近似計算処理が行われる。
この多項式による補間近似計算処理を行う装置としては、例えば特開平６―１７５８２５号公報に記載されるように、微分係数や近似値があらかじめ格納されているルックアップテーブルを参照して補間計算処理を行う装置が知られている。例えば、関数ｆ(ｘ)で表される補間データの場合、ｆ(1)、ｆ(2)…といった非連続的な点での値と、関数ｆ(ｘ)の微分係数（傾き）をルックアップテーブルに格納する。
【０００４】
ここで、分子動力学で扱う粒子間力は様々な力から成り立っており、一般にそれらの力は近距離でしか作用しない近距離力と、遠距離まで到達する遠距離力の二つ大別することができる。
近距離力は、例えば共有結合力やファンデルワールス力などの、距離が増大するにしたがって大きさが急速にゼロに近づく収束の速い力である。このような近距離力の計算式は一般的に比較的複雑な形の式となる。例えばファンデルワールス力の計算式は、距離をｘ、力場パラメータをＲ、εとすると、下記の数式１にように表現される。
【０００５】
【数１】
0004129618.tif 000002
【０００６】
遠距離力は、例えばクーロン力に代表され、距離が増大しても大きさがなかなかゼロにならない収束の遅い力であり、そのため粒子間距離が大きくても他の粒子へ影響をおよぼす。一般に遠距離力の計算式は、数式２に示すように単純な指数関数の形となる。例えばクーロン力の計算式は、距離をｘ、粒子の電荷を定数ｑ1、ｑ2とすると、数式３に示すように単純な指数関数の形で表現できる。
【０００７】
【数２】
0004129618.tif 000003
【０００８】
【数３】
0004129618.tif 000004
【０００９】
このように分子動力学で扱う粒子間力には遠距離力が含まれるため、粒子間の距離が大きい場合にも無視できない力が存在する。
したがって、演算装置では、遠距離力を含む粒子間力を一括して計算するため、力の計算を行う関数の入力値域は広い範囲をカバーする必要がある。この入力値域の広さは補間近似計算処理を行うためのルックアップテーブルの必要容量（メモリの容量）に比例するので、分子動力学における力の計算を行う補間近似処理装置のルックアップテーブルの容量が、大きくなってしまうという問題がある。
【００１０】
以下、従来における補間近似処理の具体例を説明し、必要となるルックアップテーブルの大きさを説明する。
図４は、従来の補間処理装置の一例の構成図である。
この補間処理装置は、乗算器４１、加算器４２、計算結果を一時的に記憶する一時記憶装置（ラッチ）４３、加算器４２の入力を一時記憶装置４３またはゼロのどちらかに選択する論理ゲート器４４、入力値（ＩＮ）に基づいて補間データのインデックスアドレスを生成するアドレス生成器４５、アドレス生成器４５が出力したインデックスアドレスに基づいて補間データを出力するルックアップテーブル記憶装置４６、論理ゲート器４４とアドレス生成器４５を制御する制御装置４７を備えて構成される。
【００１１】
この補間処理装置は、クロックに同期して順次動作する同期回路として構成されており、多項式補間によってあらかじめルックアップテーブル４６に登録された関数の計算を行うことができる。
２次多項式補間を行う場合を例に処理の流れを説明する。２次多項式補間近似とは、入力（ＩＮ）に値ｘが入力された場合に、この値ｘに対応する補間項ａ2、ａ１、ａ0をルックアップテーブルから選択し、出力（ＯＵＴ）に数式４に示す近似値を出力することをいう。
【００１２】
【数４】
0004129618.tif 000005
【００１３】
図５に、クロック（ｃｌｏｃｋ）、入力値（ＩＮ）、乗算器４１のＡ入力値（ＭＵＬ＿Ａ）、ルックアップテーブル記憶装置４６の出力且つ加算器４３の入力値（ＡＤＤ＿Ｂ）、乗算器４１の出力且つ加算器４２のもう一つの入力値（ＭＵＬ＿ＯＵＴ）、加算器４２の出力値（ＡＤＤ＿ＯＵＴ）の信号タイミングチャートを示す。
【００１４】
まず最初のクロックでは、論理ゲート器４４がゼロを出力するように制御装置４７が制御する。同時にアドレス生成器４５が入力値ｘに対応する２次補間項ａ2が格納されたインデックスアドレスを出力するように制御装置４７が制御する。
この結果、ゼロに何を乗算してもゼロであるから乗算器４１はゼロを出力し、加算器４２は０＋ａ2を計算して当然ａ2を出力し、一時記憶装置４３に記憶される。最初のクロックの処理はこれで終わりである。
【００１５】
次の第２クロックでは、論理ゲート器４４が一時記憶装置４３に記憶された値を出力するように制御装置４７が制御する。同時にアドレス生成器４５が入力値ｘに対応する１次補間項ａ1が格納されたインデックスアドレスを出力するように制御装置４７が制御する。
一時記憶装置４３にはａ2が記憶されているので、乗算器４１はａ2・ｘを出力する。そして、加算器４２はａ2・ｘ＋ａ1を出力し、この値は一時記憶装置４３に記憶される。これで第２クロックの処理は終りである。
【００１６】
次ぎの第３クロックでは、第２クロック同様に、論理ゲート器４４が一時記憶装置４３に記憶された値を出力するように制御装置４７が制御する。同時にアドレス生成器４が入力値ｘに対応する定数補間項ａ0が格納されたインデックスアドレスを出力するように制御装置４７が制御する。
一時記憶装置４３には、ａ2・ｘ＋ａ1が記憶されているので、乗算器４１は数式５の値を出力する。そして、加算器４２は数式６に示す値を出力し、この値は一時記憶装置４３に記憶される。この値が２次補間近似の計算結果である。
以上の手順により、３クロックで２次補間近似の計算を行うことができる。なお、より高次の多項式近似を計算する場合は、第２クロック以降の手順の反復数を増やせばよい。
【００１７】
【数５】
0004129618.tif 000006
【００１８】
【数６】
0004129618.tif 000007
【００１９】
次いで、ルックアップテーブルの容量について具体的に説明する。
分子動力学法で一般的に必要な精度は、３２ビットの単精度浮動小数点では足りないが、６４ビットの倍精度浮動小数点ほどは必要ない。
そこで、図６に示すように、仮数部３１ビット、指数部８ビット、符号１ビットの計４０ビットの浮動小数点形式を採用する。
また、３次元直交座標系（デカルト座標）で二つの座標間の距離を算出する場合、距離の自乗値は積和演算のみで簡単に求められる。よって、補間処理装置への入力値（ＩＮ）は、距離ｒではなく、粒子間距離の自乗ｒ2とする。なお、入力値（ＩＮ）は必ず正値となる。
【００２０】
クーロン力やファンデルワールス力の関数において、２次補間近似で仮数部３１ビットの精度を出すためには、上位１１ビットでインデックスされる補間データ、つまり２０４８組の補間データが必要となることが経験的にわかっている。２次補間であるから補間データ１組は３つの補間係数から構成され、それぞれの補間係数は４０ビットの浮動集数点形式で格納される。
【００２１】
分子動力学法上、クーロン力のような遠距離力を考えると、少なくとも数式７の入力値域が必要とされる。指数で―９から＋２１の範囲を補間近似するためには３０×２０４８組の補間データが必要となる。つまり、必要なルックアップテーブル記憶容量は、３０×２０４８×３×４０＝７３７２８００ビットとなり、８メガビット弱の容量がルックアップテーブルメモリに必要となる。
【００２２】
【数７】
0004129618.tif 000008
【００２３】
これではさすがに容量が大きすぎるので、精度を或る程度犠牲にしてルックアップテーブル容量を圧縮する方法もある。
例えば、数式８及び数式９に示す比較的精度が重要でない領域について、補間データを間引いて、仮数部の上位８ビットのインデックスアドレスを用いることにして、ルックアップテーブル容量を圧縮する方法がある。
この容量圧縮により、数式８及び数式９に示す領域では、仮数にして２０〜２３ビット程度の精度しか得られなくなるが、全体の容量は、１６×２０４８×３×４０＝３９３２１６０ビットとなって、４メガビットに圧縮することができる。
【００２４】
【数８】
0004129618.tif 000009
【００２５】
【数９】
0004129618.tif 000010
【００２６】
【発明が解決しようとする課題】
上記の例ように精度を犠牲にして圧縮しても、ルックアップテーブル記憶装置は４メガビットもの大容量を必要とし、コストが高く消費電力が多いシステムとなってしまうと言う課題がある。
本発明は、補間近似計算の精度を落とすことなく、より少ないルックアップテーブルの容量で、分子動力学等で扱う力を計算できるようにすることを目的とする。
なお、本発明の更なる目的は以下に説明するところにより明らかである。
【００２７】
【課題を解決するための手段】
本発明は、指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する演算装置であり、前記関数入力値から指数部又は指数部の上位ビット部が分離された残余の部分を入力値としてルックアップテーブルを参照した補間近似計算を行う補間処理手段と、前記関数入力値から抽出された指数部又は指数部の上位ビット部をあらかじめ設定された倍数で乗算する乗算手段と、前記補間処理手段からの出力値の指数部に、前記倍数で乗算した指数部又は指数部の上位ビット部の値を加算する加算手段と、を備える。
【００２８】
また、本発明は、指数部と仮数部とを含む浮動小数点形式として与えられる関数入力値を演算する方法であり、前記関数入力値から指数部又は指数部の上位ビット部を分離して、メモリに記憶したルックアップテーブルを参照した演算処理で残余の仮数部又は指数部の上位ビット部が分離された残余の部分を補間近似計算し、前記関数入力値から抽出した指数部又は指数部の上位ビット部をあらかじめ設定された倍数で乗算し、前記補間近似計算の結果値の指数部に、前記倍数で乗算した指数部又は指数部の上位ビット部の値を加算する演算方法である。
【００２９】
例えば、関数入力値が数式１０に示すような単純な指数関数である場合は、収束が遅いため従来の補間近似処理装置で計算すると、大量のルックアップテーブルが必要となってしまうが、本発明によれば、次ぎのような原理で必要なルックアップテーブルの容量を少なくすることができる。
一般に、デジタル計算機で正の実数値を扱う場合、仮数ｍ（１≦ｍ＜２）と指数ｅ（整数）を用いて、数式１１に示すような形で表現する浮動小数点形式を用いる。
浮動小数点形式で単純な指数関数の計算を行うと、数式１２に示すような変形ができる。
【００３０】
【数１０】
0004129618.tif 000011
【００３１】
【数１１】
0004129618.tif 000012
【００３２】
【数１２】
0004129618.tif 000013
【００３３】
浮動小数点形式の数値に２のｎｅ乗の値を乗じるには、指数部にｎｅを加えるだけでよく、非常に簡単である。つまりｆ(ｍ)を補間処理で計算し、その結果の指数部にｎｅを加えることによって関数の計算ができることを示す。仮数ｍは１≦ｍ＜２といった狭い範囲の値であるため、ルックアップテーブル容量が小さい補間処理装置で、ｆ(ｍ)の計算ができる。
この原理を用いて、ルックアップテーブルの必要容量を少なくするため、以下のように計算を行う。
【００３４】
浮動小数点形式として与えられる関数入力値を、指数部すべて又は指数部の上位ビット部から構成される指数シフト部と、仮数部又は指数部の下位ビット部と仮数部を連結したものから構成される仮数インデックス部の２つに分離する。そして、指数シフト部を関数式のべき乗数であるｎと乗算し、これと並行して、仮数インデックス部を補間処理演算する。そして、補間処理による出力値の指数部に指数シフト部にべき乗数ｎで乗じてできた値を加算して出力値とする。
すなわち、補間近似処理に入力される仮数インデックス部は関数入力値全体よりも指数シフト部を分離した分だけビット長が短くでき、それにより、補間近似処理に用いるルックアップテーブルの容量を計算精度を高く保ったまま小さくすることができる。
【００３５】
本発明は、収束の遅い関数入力値に対する演算に効果的であり、関数の形が複雑だが速く収束する関数入力値については、従来の補間近似処理で演算を行うようにしてもよい。すなわち、このような関数入力値であれば収束速度が速いため、必要とされる入力値の値域は狭く、ルックアップテーブルの容量は小さくて済むからである。
したがって、本発明の態様として、演算する関数入力値の式の形が複雑で収束が速いものか、或いは、単純な指数関数形で収束が遅いものかを区別して演算処理するようにする。
【００３６】
なお、本発明は、指数シフト部のビット長には制限がないため、入力が許される入力値域は浮動小数点形式が表現できる範囲すべてに広げることができる。
また、本発明は分子動力学のみならず、浮動小数点形式で与えられる収束の遅い関数演算を行う一般的な多体問題にも勿論適用することができる。
【００３７】
【発明の実施の形態】
本発明を、実施例に基づいて具体的に説明する。
図１には、本発明の一実施例に係る演算装置の主要部の構成を示してある。
関数入力値１として、符号部と指数部と仮数部をもつ浮動小数点形式の数値が入力され、指数部／仮数部分離手段２が、計算モード信号に従って、入力値１を指数部出力３と仮数部出力４に分けて出力する。なお、指数部／仮数部分離手段２は、例えば入力信号に応答してビットを出力するレジスタなどの論理回路として容易に構成することができる。
【００３８】
計算モードには指数関数モードと複雑関数モードの２種類があり、この計算モード信号はオペレータの選択操作によって入力される。なお、関数入力値１の関数形式に基づいて自動判定し、この判定結果に応じていずれの計算モードにするかを信号入力するようにしてもよい。
計算モードが指数関数モードである場合には、指数部出力３は関数入力値１の指数部が出力され、仮数部出力４は関数入力値１の指数部をゼロ（ゼロビット列）にした浮動小数点形式が出力される。一方、計算モードが複雑関数モードである場合には、指数部出力３はゼロ（ゼロビット列）が出力され、仮数部出力４は関数入力値１がそのまま出力される。
【００３９】
乗算器６は、指数部出力３とあらかじめ設定された倍数５との積を計算する。乗算器６は論理回路によって容易に構成することができ、また、整数の乗算器なので小さい規模で簡単に実現できる。
補間処理装置７は、メモリに必要な補間データを記憶したルックアップテーブル７ａを有し、仮数部出力４を入力としてルックアップテーブル７ａを参照する多項式補間近似により関数計算を行い、浮動小数点形式で補間近似出力８を出力する。なお、補間処理装置７は、例えば特開平６―１７５８２５号公報に記載されるように、論理回路によって容易に構成することができる。
【００４０】
加算器９は、補間近似出力８の指数部に、乗算器６が出力した積を加えて、計算結果１０を生成出力する。
したがって、計算モードが収束の遅い指数関数モードである場合には、関数入力値１が指数部と残余の部分とに分離されて、指数部には倍数が乗じられ、残余の部分にはルックアップテーブルを参照した補間近似計算がなされ、これら倍数された指数部と補間近似計算結果とが加算される処理がなされる。なお、計算モードが複雑関数モードである場合にも同様な処理がなされるが、乗算器６が出力する積はゼロであるので、補間近似出力８がそのまま計算結果１０となる。
【００４１】
上記のように計算モードが指数関数モードの場合の補間処理装置７の入力値域は、１以上２未満と大変狭く、必要なルックアップテーブルの容量は非常に少なくて済む。
一方、計算モードが複雑関数モードの場合、前述した分子動力学法における近距離力の計算に相当するので、収束が速い関数の計算である。そのため、補間処理装置７の入力値域の上限は小さくて済み、補間処理装置７の必要なルックアップテーブル容量は少なくなる。
したがって、本実施例によれば、少ないルックアップテーブル容量の補間処理装置で、精度を落とすことなく正しい計算結果を出すことができる。
【００４２】
図２には、本発明の他の実施例に係る演算装置の主要部の構成を示してある。
本例は、関数入力値を、指数部の上位ビット部と、指数部に下位ビット部及び仮数部を含む残余の部分とに分離するものであり、また、関数入力値などの全ての浮動小数点は図６に示すように４０ビット長の拡張単精度形式を用いて、より具体的に説明する。
【００４３】
本例では、入力値には粒子間距離の自乗値を用いる。前述したように、３次元直交座標系（デカルト座標）で二つの座標間の距離を算出する場合、距離の自乗値は積和演算のみで簡単に求められるためである。
入力値をSとして、計算する関数は、数式１３に示すようなクーロン力ｆｃ(Ｓ)と、数式１４に示すようなファンデルワールス力ｆｖｄｗ(Ｓ)である。式の形からわかるようにクーロン力は単純な指数関数であり、ファンデルワールス力は複雑な形だが収束は速い関数である。
【００４４】
【数１３】
0004129618.tif 000014
【００４５】
【数１４】
0004129618.tif 000015
【００４６】
入力値２１は、計算する関数の引数Ｓを図６に示す４０ビットの拡張単精度浮動小数点形式で表現したものである。具体的には、仮数ｍ（１≦ｍ＜２）と指数ｅ（整数）を用いて、数式１５に示す形で表現される。
入力値２１は、分離手段２２によって、３８ビット目から３２ビット目までの指数部の上位７ビットを切り出した指数部分２３と、それ以外の指数部の下位ビットや仮数部や符号部を含む仮数部分２４の二つに分離される。
【００４７】
【数１５】
0004129618.tif 000016
【００４８】
ここで、本例では指数部の下位１ビットを仮数部分２４に残している。これは、数式１３に示すクーロン力の計算式の指数が―１５で整数でないためである。そこで、指数部ｅを上位７ビットのｅｈと下位１ビットのｅｌに分けて扱う。そうすれば、ｅｈは必ず偶数となるから、―１５を乗じた値―１５ｅｈは必ず整数となる。つまり数式１６であり、数式１７となる。数式１７中の数式１８に示す項を仮数部分として補間処理で計算を行う。この仮数部分の範囲は１以上４未満となる。
―１５ｅｈは必ず整数であるから、これを補間処理で得た値の指数部に加えることによって、正しい計算結果を得ることができる。
【００４９】
【数１６】
0004129618.tif 000017
【００５０】
【数１７】
0004129618.tif 000018
【００５１】
【数１８】
0004129618.tif 000019
【００５２】
論理ゲート２５は、FuncMode指令信号（計算モード信号）の値と、指数部分２３との論理積演算を行う。計算する関数が単純な指数関数であるとしてFuncMode指令値が設定された場合は、論理ゲート２５は７ビットのゼロ列を出力し、計算する関数が複雑な形の関数であるとしてFuncMode指令値が設定された場合は、指数部分２３をそのまま出力する。
論理ゲート２５の出力は仮数部分２４の分離した指数部分に挿入されて合成され、補間処理入力値２６が生成される。補間処理装置２７は、補間データをメモリに記憶したルックアップテーブル２７ａを有し、補間処理入力値２６を入力値としてルックアップテーブル２７ａを参照して補間近似出力値２８を計算する。
【００５３】
一方、指数部分２３は、左シフタ２９および二つのゲート装置３０、３１および加算器３２、符号反転器３３によって、MULSEL指令信号値に基づいて図３に示す倍数で乗算処理を行い、８ビットの整数３４を生成する乗算手段を構成している。数式１３に示すクーロン力を計算する場合は、MULSEL指令信号値を（１１）として、―１．５倍の値を計算する。ファンデルワールス力のような複雑な関数の計算を行う場合は、MULSELを（００）として、ゼロ倍の計算をする。
なお、図３に示すように、MULSEL指令信号値の設定によって別の形の単純指数関数の計算に用いることも可能である。
【００５４】
加算器３５は補間近似出力２８の指数部に整数３４を加算し、計算結果３６を出力する。この場合、複雑な関数の計算をする場合は整数３４がゼロとなっているので、補間近似出力２８がそのまま計算結果３６となる。
したがって、上記の処理によって、正しく計算結果３６を得ることができる。
【００５５】
そして、本例の補間処理装置２７に必要な入力値域は、単純な指数関数の場合で１以上４未満、複雑な関数の場合はその関数の収束の速さに依存する。
例えば、数式１４に示すファンデルワールス力の計算では経験的にＳが２の９乗未満の範囲で十分であることがわかっている。
そこで、入力値域を数式１９のようにすると、指数で―９から＋９の範囲を補間近似するためには１８×２０４８組の補間データが必要となる。つまり、必要なルックアップテーブル記憶容量は、１８×２０４８×３×４０＝４４２３６８０ビットとなり、従来の７３７２８００ビットのほぼ半分で済む。
【００５６】
【数１９】
0004129618.tif 000020
【００５７】
次に、従来と同様に比較的精度が重要でない領域について補間データを間引いた場合を考える。
数式２０及び数式２１に示す領域について、仮数部の上位８ビットのインデックスアドレスを用いることにして、ルックアップテーブル容量を圧縮した場合、必要なルックアップテーブル記憶容量は１０．５×２０４８×３×４０＝２５８０４８０ビットとなり、従来の３９３２１６０ビットよりかなり圧縮できる。
この容量圧縮によりファンデルワールス力においては、数式２０及び数式２１に示す領域で仮数にして２０〜２３ビット程度の精度しか得られなくなるが、単純な指数関数であるクーロン力に関しては、すべての入力値域に関して十分な精度で計算できる。
【００５８】
【数２０】
0004129618.tif 000021
【００５９】
【数２１】
0004129618.tif 000022
【００６０】
ここで、収束の速い関数入力値の計算モードの場合、図１に示した例では、入力関数値から分離した指数部をゼロとして倍数乗算して補間近似計算結果にゼロを加算し、また、図２に示した例では、入力関数値から分離した指数部にゼロを倍数乗算して補間近似計算結果にゼロを加算しているが、いずれの態様にあっても同一結果を得られるので、本発明では、関数入力値から指数部の全部を分離する方式と指数部の上位ビット部を分離する方式において、これらいずれの態様も採用することができる。また、関数入力値から指数部の上位ビット部を分離する方式の場合、上位ビットを何ビットにするか（すなわち、下位ビットとして何ビット仮数部に連結して残すか）は、計算する指数関数の形によって決定され、当該指数関数の指数を整数として扱えるようにすればよい。
【００６１】
【発明の効果】
以上説明したように、本発明によると、関数入力値の指数部の全て或いは上位ビット部を除いた部分に付いて補間近似処理を行うようにしたため、高精度な演算結果を保証しつつ、補間近似処理に用いるルックアップテーブルに必要な記憶容量を減らすことができる。
【図面の簡単な説明】
【図１】  本発明の一実施例に係る演算装置の主要部の構成図である。
【図２】  本発明の他の一実施例に係る演算装置の主要部の構成図である。
【図３】  本発明の他の一実施例に係るMULSEL信号と倍数の関係を示す図である。
【図４】  従来の一例に係る演算装置の主要部の構成図である。
【図５】  補間処理の一例に係るタイミングチャートである。
【図６】  拡張単精度浮動小数点形式の一例を説明する図である。
【符号の説明】
１：関数入力値、  ２：指数部／仮数部分離手段、
６：乗算器、  ７：補間処理装置、
７ａ：ルックアップテーブル、  ９：加算器、
２１：関数入力値、  ２５：論理積ゲート器、
２７：補間処理装置、  ２７ａ：ルックアップテーブル、
２９：左シフト装置、  ３０、３１：論理積ゲート器、
３２：加算器、  ３３：符号反転器、
３５：加算器、
【図１】
0004129618.tif 000023
【図２】
0004129618.tif 000024
【図３】
0004129618.tif 000025
【図４】
0004129618.tif 000026
【図５】
0004129618.tif 000027
【図６】
0004129618.tif 000028