(57)【特許請求の範囲】
【請求項１】
コンピュータに、
符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出し、
検出した前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する、
処理を実行させることを特徴とする処理プログラム。
【請求項２】
前記検出する処理は、前記仮数部の上位ビットから所定単位のビット数ずつ部分ビット列を照合し、一致しない場合には、照合処理の開始位置を１ビット分下位方向にシフトしてから照合処理を実行し、一致する場合には、一致する部分ビット列を繰り返しビット部分として検出する
処理を実行させることを特徴とする請求項１に記載の処理プログラム。
【請求項３】
前記検出する処理は、さらに、一致しない場合に、トータルのシフト数と所定単位のビット数とを加算して得られる数値が、予め定められた繰り返しビット部分の最大ビット数より大きくなったタイミングで、所定単位のビット数を１ビット減算し、減算して得られる新たな所定単位のビット数ずつ照合処理を実行する
処理を実行させることを特徴とする請求項２に記載の処理プログラム。
【請求項４】
前記出力する処理によって出力された、２つの浮動小数点数の数値を加算する要求を受け付けると、２つの浮動小数点数の数値における、前記特定のビットパターンに対応するビット列の箇所を特定するビット列の値が同値である場合に、繰り返しビット部分同士を加算する
処理を実行させることを特徴とする請求項１に記載の処理プログラム。
【請求項５】
前記出力する処理によって圧縮された、２つの浮動小数点数の数値を減算する要求を受け付けると、２つの浮動小数点数の数値における、前記特定のビットパターンに対応するビット列の箇所を特定するビット列の値が同値である場合に、繰り返しビット部分同士を減算する
処理を実行させることを特徴とする請求項１に記載の処理プログラム。
【請求項６】
符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出する検出部と、
前記検出部によって検出された前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する実行部と、
を有することを特徴とする処理装置。
【請求項７】
コンピュータが、
符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出し、
検出した前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する、
各処理を実行することを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理プログラムなどに関する。
【背景技術】
【０００２】
コンピュータ上で扱われる、ビット数の多い数値型として、ＩＥＥＥ７５４に規定された単精度浮動小数点数（３２ビット）および倍精度浮動小数点数（６４ビット）が存在する。単精度浮動小数点数は、符号１ビット、指数部８ビット、仮数部２３ビットから構成される。倍精度浮動小数点数は、符号１ビット、指数部１１ビット、仮数部５２ビットから構成される。
【０００３】
近年、ＣＰＵの性能が上がり、ディスクに対する入出力のコストが問題となってきたことにより、ディスクに対する１回の入出力で扱える情報量を増やすことが望ましい。ＩＥＥＥ７５４に規定された浮動小数点数に関しても、公知の手法で圧縮することにより、ディスクに対する１回の入出力で扱える情報量を増やすことが可能である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−１２９４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、公知の手法により圧縮しても、圧縮された符号により、圧縮前と同等の演算を行うことは難しいという問題がある。
【０００６】
１つの側面では、浮動小数点数のビット列を、圧縮後の利用効率を勘案して圧縮することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、コンピュータに、下記の処理を実行させる。コンピュータに、符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出する処理を実行させる。コンピュータに、検出した前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する処理を実行させる。
【発明の効果】
【０００８】
本発明の１実施態様によれば、浮動小数点数のビット列を、圧縮後の利用効率を勘案して圧縮することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例に係る単精度浮動小数点数の圧縮処理を示す図である。
【図２】図２は、本実施例に係る倍精度浮動小数点数の圧縮処理を示す図である。
【図３】図３は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図４】図４は、圧縮処理の一例を示す図である。
【図５】図５は、本実施例に係る圧縮部の処理手順を示すフローチャートである。
【図６】図６は、本実施例に係る伸長部の処理手順を示すフローチャートである。
【図７】図７は、本実施例に係る大小比較部の処理手順を示すフローチャートである。
【図８】図８は、本実施例に係る加算部の処理手順を示すフローチャートである。
【図９】図９は、本実施例に係る減算部の処理手順を示すフローチャートである。
【図１０】図１０は、コンピュータのハードウェア構成例を示す図である。
【図１１】図１１は、コンピュータで動作するプログラムの構成例を示す図である。
【図１２】図１２は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する処理プログラム、処理装置および処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
図１は、本実施例に係る単精度浮動小数点数の圧縮処理を示す図である。
【００１２】
図１上段に示すように、ＩＥＥＥ７５４で規定される単精度浮動小数点数は、４バイトで表わされ、１ビットからなる符号部ａ１、８ビットからなる指数部ａ２および２３ビットからなる仮数部ａ３から構成される。符号部ａ１は、０を正数、１を負数とする。指数部ａ２は、符号なしの２進整数として、単精度の場合１２７のゲタを履かせた表現で表わされる。仮数部ａ３は、整数部分以下の小数部分の値を２進数で表わされる。
【００１３】
例えば、１０進数の数値１．１は、（−１）０（数１）＊（１＋０．１（数２））＊２（１２７（数３）−１２７）で表わされる。（数１）には、符号部ａ１で表わされる値の１０進表記が設定され、ここでは０が設定される。（数２）には、仮数部ａ３で表わされる値の１０進表記が設定され、ここでは０．１が設定される。（数３）には、指数部ａ２で表わされる値の１０進表記が設定され、ここでは１２７が設定される。単精度浮動小数点数は、（数１）、（数２）および（数３）の１０進表記をそれぞれ符号部ａ１、指数部ａ２および仮数部ａ３に対して２進表記で表わす。なお、仮数部ａ３の最下位ビットの値は、後続するビットの値を繰り上げた状態となっている。
【００１４】
本実施例に係る圧縮処理では、このような単精度浮動小数点数を圧縮する。圧縮処理は、単精度浮動小数点数の数値を表すビット列の仮数部ａ３から循環パターンを抽出する。循環パターンとは、同じ数字の列が循環して繰り返されるパターンのことをいう。圧縮処理は、循環パターンが抽出された場合に、仮数部ａ３を循環パターンと循環パターンのビット数を示す循環数により規定する。圧縮処理は、規定された循環パターンおよび循環数を用いて、仮数部ａ３を圧縮する。
【００１５】
図１中段に示すように、単精度浮動小数点数は、仮数部ａ３が圧縮される場合、３バイトで表わされる。単精度浮動小数点数は、１ビットからなる圧縮フラグｂ１、１ビットからなる符号部ｂ２、８ビットからなる指数部ｂ３、４ビットからなる循環数部ｂ４および１０ビットからなる循環仮数部ｂ５から構成される。図１上段に示すＩＥＥＥ７５４で規定される単精度浮動小数点数の構成と同じ構成は、符号部ｂ２と指数部ｂ３である。ＩＥＥＥ７５４で規定される単精度浮動小数点数と異なる構成は、圧縮フラグｂ１、循環数部ｂ４および循環仮数部ｂ５である。
【００１６】
圧縮フラグｂ１は、圧縮されたか否かを示すフラグである。一例として、圧縮フラグｂ１には、圧縮された場合には１が設定され、圧縮されなかった場合には、０が設定される。循環数部ｂ４には、循環パターンのビット数を示す循環数が設定される。循環仮数部ｂ５は、有限仮数部ｂ５１および循環節部ｂ５２から構成される。有限仮数部ｂ５１には、仮数部ａ３の循環パターンが開始されるまでのビット列が設定される。循環節部ｂ５２には、循環パターンのビット列が設定される。循環節部ｂ５２には、循環数部ｂ４に設定された循環数分の循環パターンのビット列が設定されるので、循環数部ｂ４は、循環仮数部ｂ５のうち循環節部ｂ５２に対応するビット列の箇所を特定するビット列であるともいえる。循環数部ｂ４は４ビットであり、循環仮数部ｂ５は１０ビットであるので、循環数部ｂ４は循環仮数部ｂ５で表わす循環パターンの最大ビット数１０（０ｂ１０１０）を表現できる。
【００１７】
ここでは、圧縮処理が、仮数部ａ３から循環パターン「０１１００１１０」を抽出した場合の処理について説明する。圧縮処理は、符号部ａ１および指数部ａ２の値をそれぞれ符号部ｂ２および指数部ｂ３に設定する。圧縮処理は、循環数部ｂ４に循環パターンのビット数である８を２進表現した「１０００」を設定する。圧縮処理は、循環節部ｂ５２に循環パターンのビット列である「０１１００１１０」を設定する。圧縮処理は、有限仮数部ｂ５１に循環パターンが開始されるまでのビット列である「００」を設定する。そして、圧縮処理は、圧縮フラグｂ１に圧縮されることを示す「１」を設定する。これにより、圧縮処理は、単精度浮動小数点数を４バイトから３バイトに短縮することができる。
【００１８】
図１下段に示すように、単精度浮動小数点数は、仮数部ａ３が圧縮されない場合、４バイトで表わされる。単精度浮動小数点数は、１ビットからなる圧縮フラグｂ１、１ビットからなる符号部ｂ２、８ビットからなる指数部ｂ３、２２ビットからなる短縮仮数部ｃ１から構成される。図１中段に示す圧縮される場合の単精度浮動小数点数の構成と同一の構成については同一符号を示すことで、その重複する構成の説明については省略する。圧縮される場合の単精度浮動小数点数の構成と異なる構成は、短縮仮数部ｃ１である。短縮仮数部ｃ１は、仮数部ａ３の最下位ビットを落としたものである。
【００１９】
ここでは、圧縮処理が、仮数部ａ３から循環パターンを抽出しない場合の処理について説明する。圧縮処理は、符号部ａ１および指数部ａ２の値をそれぞれ符号部ｂ２および指数部ｂ３に設定する。圧縮処理は、仮数部ａ３から循環パターンを抽出しないので、短縮仮数部ｃ１に仮数部ａ３の最下位ビットを落としたビット列を設定する。そして、圧縮処理は、圧縮フラグｂ１に圧縮されないことを示す「０」を設定する。これにより、圧縮処理は、単精度浮動小数点数を圧縮できない場合であっても、ＩＥＥＥ７５４形式を１ビット右にずらした構成であるので、ＩＥＥＥ７５４形式と互換性を保つことができる。
【００２０】
図２は、本実施例に係る倍精度浮動小数点数の圧縮処理を示す図である。
【００２１】
図２上段に示すように、ＩＥＥＥ７５４で規定される単精度浮動小数点数は、８バイトで表わされ、１ビットからなる符号部ａ１、１１ビットからなる指数部ａ２および５２ビットからなる仮数部ａ３から構成される。符号部ａ１は、０を正数、１を負数とする。指数部ａ２は、符号なしの２進整数として、単精度の場合１２７のゲタを履かせた表現で表わされる。仮数部ａ３は、整数部分以下の小数部分の値を２進数で表わされる。
【００２２】
例えば、１０進数の数値１９４５．６は、（−１）１（数４）＊（１＋０．９（数５））＊２（１３７（数６）−１２７）で表わされる。（数４）には、符号部ａ１で表わされる値の１０進表記が設定され、ここでは１が設定される。（数５）には、仮数部ａ３で表わされる値の１０進表記が設定され、ここでは０．９が設定される。（数６）には、指数部ａ２で表わされる値の１０進表記が設定され、ここでは１３７が設定される。倍精度浮動小数点数は、（数４）、（数５）および（数６）の１０進表記をそれぞれ符号部ａ１、指数部ａ２および仮数部ａ３に対して２進表記で表わす。なお、仮数部ａ３の最下位ビットの値は、後続するビットの値を繰り上げた状態となっている。
【００２３】
本実施例に係る圧縮処理では、このような倍精度浮動小数点数を圧縮する。圧縮処理は、倍精度浮動小数点数の数値を表すビット列の仮数部ａ３から循環パターンを抽出する。圧縮処理は、循環パターンが抽出された場合に、仮数部ａ３を循環パターンと循環パターンのビット数を示す循環数により規定する。圧縮処理は、規定された循環パターンおよび循環数を用いて、仮数部ａ３を圧縮する。
【００２４】
図２中段に示すように、倍精度浮動小数点数は、仮数部ａ３が圧縮される場合、４バイトで表わされる。倍精度浮動小数点数は、１ビットからなる圧縮フラグｂ１、１ビットからなる符号部ｂ２、１１ビットからなる指数部ｂ３、４ビットからなる循環数部ｂ４および１５ビットからなる循環仮数部ｂ５から構成される。図２上段に示すＩＥＥＥ７５４で規定される倍精度浮動小数点数の構成と同じ構成は、符号部ｂ２と指数部ｂ３である。ＩＥＥＥ７５４で規定される倍精度浮動小数点数と異なる構成は、圧縮フラグｂ１、循環数部ｂ４および循環仮数部ｂ５である。これらの中で圧縮フラグｂ１および循環数部ｂ４は、単精度浮動小数点数の構成と同一であるので、その重複する構成の説明については省略する。これらの中で循環仮数部ｂ５は、単精度浮動小数点数の構成とビット数が異なる。循環仮数部ｂ５は１５ビットであり、循環数部ｂ４は４ビットであるので、循環数部ｂ４は循環仮数部ｂ５で表わす循環パターンの最大ビット数１５（０ｂ１１１１）を表現できる。
【００２５】
ここでは、圧縮処理が、仮数部ａ３から循環パターン「００１１００１１００１１」を抽出した場合の処理について説明する。圧縮処理は、符号部ａ１および指数部ａ２の値をそれぞれ符号部ｂ２および指数部ｂ３に設定する。圧縮処理は、循環数部ｂ４に循環パターンのビット数である１２を２進表現した「１１００」を設定する。圧縮処理は、循環節部ｂ５２に循環パターンのビット列である「００１１００１１００１１」を設定する。圧縮処理は、有限仮数部ｂ５１に循環パターンが開始されるまでのビット列である「１１１」を設定する。そして、圧縮処理は、圧縮フラグｂ１に圧縮されることを示す「１」を設定する。これにより、圧縮処理は、倍精度浮動小数点数を８バイトから４バイトに短縮することができる。
【００２６】
図２下段に示すように、倍精度浮動小数点数は、仮数部ａ３が圧縮されない場合、８バイトで表わされる。倍精度浮動小数点数は、１ビットからなる圧縮フラグｂ１、１ビットからなる符号部ｂ２、１１ビットからなる指数部ｂ３、５１ビットからなる短縮仮数部ｃ１から構成される。図２中段に示す圧縮される場合の倍精度浮動小数点数の構成と同一の構成については同一符号を示すことで、その重複する構成の説明については省略する。圧縮される場合の倍精度浮動小数点数の構成と異なる構成は、短縮仮数部ｃ１である。短縮仮数部ｃ１は、仮数部ａ３の最下位ビットを落としたものである。
【００２７】
ここでは、圧縮処理が、仮数部ａ３から循環パターンを抽出しない場合の処理について説明する。圧縮処理は、符号部ａ１および指数部ａ２の値をそれぞれ符号部ｂ２および指数部ｂ３に設定する。圧縮処理は、仮数部ａ３から循環パターンを抽出しないので、短縮仮数部ｃ１に仮数部ａ３の最下位ビットを落としたビット列を設定する。そして、圧縮処理は、圧縮フラグｂ１に圧縮されないことを示す「０」を設定する。これにより、圧縮処理は、倍精度浮動小数点数を圧縮できない場合であっても、ＩＥＥＥ７５４形式を１ビット右にずらした構成であるので、ＩＥＥＥ７５４形式と互換性を保つことができる。
【００２８】
ここで、浮動小数点数を圧縮する際に、単精度浮動小数点数を３バイト構成とし、倍精度浮動小数点数を４バイト構成とする理由を、以下に説明する。かかる理由は、以下の（１）〜（４）を考慮する。（１）圧縮後の構成バイト数は、バイト単位であることが望ましい。これは、データのディスクに対する入出力時間を高速にするためである。（２）圧縮後の構成バイト数は、固定長であることが望ましい。これは、データの処理時間を高速にするためである。（３）符号部と指数部は圧縮しないこととする。これは、圧縮前のＩＥＥＥ７５４形式の浮動小数点数、圧縮できない浮動小数点数とも大小比較を可能にするためである。（４）仮数部の精度を可能な限り保つこととする。これは、精度が下がると浮動小数点数としての誤差が大きくなるからである。
【００２９】
このような（１）〜（４）の考慮に基づいて、単精度浮動小数点数を３バイト構成とする理由を説明する。まず、ＩＥＥＥ７５４形式の単精度浮動小数点数の構成バイト数は、４バイトであるので、（１）、（２）の考慮を反映すると、圧縮後の構成バイト数の候補は、１バイト、２バイト、３バイトである。次に、（３）の考慮を反映すると、１ビットからなる符号部ｂ２、８ビットからなる指数部ｂ３をそのままとするため、圧縮後の構成バイト数の候補から１バイト構成が除外される。加えて、１ビットからなる圧縮フラグｂ１を考慮すると、圧縮後の構成バイト数を２バイトとすると、残りのビット数が６ビットとなる。圧縮後の構成バイト数を３バイトとすると、残りのビット数が１４ビットとなる。次に、（４）の考慮を反映すると、循環数部ｂ４のビット数で循環仮数部ｂ５を精度良く表現するため、残りのビット数が６ビットである２バイト構成が除外される。すなわち、圧縮後の精度を考慮すると、循環数部ｂ４は最低でも３ビット（循環数部ｂ４によって表現できる循環節部ｂ５２のビット数の最大値：７）必要である。すると、残りのビット数が６ビットである２バイト構成が除外される。
【００３０】
この結果、圧縮後の構成バイト数を、３バイトとする。そして、全体として３バイトに圧縮する中で循環仮数部ｂ５の長さを最大とれる値として、循環数部ｂ４を４ビットとし、循環仮数部ｂ５を１０ビットとすることができる。なお、１０ビットである循環仮数部ｂ５が全て循環パターンに用いられるとしても、循環仮数部ｂ５の１０ビットは循環数部ｂ４の４ビットで表現できるので、問題はない。すなわち、循環数部ｂ４は４ビットで１５（０ｂ１１１１）までの循環パターンのビット長を表現できるからである。
【００３１】
次に、（１）〜（４）の考慮に基づいて、倍精度浮動小数点数を４バイト構成とする理由を説明する。まず、ＩＥＥＥ７５４形式の倍精度浮動小数点数の構成バイト数は、８バイトであるので、（１）、（２）の考慮を反映すると、圧縮後の構成バイト数の候補は、１〜７バイトである。次に、（３）の考慮を反映すると、１ビットからなる符号部ｂ２、１１ビットからなる指数部ｂ３をそのままとするため、圧縮後の構成バイト数の候補から１バイト構成が除外される。次に、（４）の考慮を反映すると、循環数部ｂ４のビット数で循環仮数部ｂ５を精度良く表現するため、残りのビット数が６ビットである２バイト構成が除外される。すなわち、圧縮後の精度を考慮すると、循環数部ｂ４は最低でも３ビット（循環数部ｂ４によって表現できる循環節部ｂ５２のビット数の最大値：７）必要である。すると、残りのビット数が６ビットである２バイト構成が除外される。加えて、１ビットからなる圧縮フラグｂ１を考慮すると、圧縮後の構成バイト数を３バイトとすると、残りのビット数が１１ビットとなる。圧縮後の構成バイト数を４バイトとすると、残りのビット数が１９ビットとなる。（４）の考慮および単精度浮動小数点数の循環仮数部ｂ５の長さが１０ビットであることから、残りのビット数が１１ビットである３バイト構成が除外される。倍精度の仮数部が単精度の仮数部より短いと精度を保つことができないからである。
【００３２】
この結果、圧縮後の構成バイト数を、４バイトとする。そして、全体として４バイトに圧縮する中で循環仮数部ｂ５の長さを最大とれる値として、循環数部ｂ４を４ビットとし、循環仮数部ｂ５を１５ビットとすることができる。なお、１５ビットである循環仮数部ｂ５が全て循環パターンに用いられるとしても、循環仮数部ｂ５の１５ビットは循環数部ｂ４の４ビットで表現できるので、問題はない。すなわち、循環数部ｂ４は４ビットで１５（０ｂ１１１１）までの循環パターンのビット長を表現できるからである。
【００３３】
［情報処理装置の構成］
図３は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図３に示すように、この情報処理装置１は、圧縮部１０と、演算部２０と、伸長部３０と、記憶部４０とを有する。圧縮部１０は、図１、図２などに示した浮動小数点数の圧縮処理を実行する処理部である。演算部２０は、浮動小数点数同士の各種演算処理を実行する。伸長部３０は、圧縮部１０によって圧縮された浮動小数点数の伸長処理を実行する。なお、圧縮部１０は、検出部および出力部の一例である。
【００３４】
記憶部４０は、ＩＥＥＥ７５４形式の浮動小数点数および圧縮部１０によって圧縮された浮動小数点数を記憶する。なお、記憶部４０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）等の不揮発性の半導体メモリ素子等の記憶装置に対応する。また、記憶部４０は、例えばＲＡＭ（Random  Access  Memory）等の揮発性の半導体メモリ素子を利用した記憶装置に対応しても良い。
【００３５】
圧縮部１０は、浮動小数点数の数値を表すビット列の仮数部ａ３から循環パターンを抽出する。圧縮部１０は、循環パターンが抽出された場合に、仮数部ａ３を循環パターンと循環パターンのビット数（循環数）により規定する。圧縮部１０は、規定された循環パターンおよび循環数を用いて、仮数部ａ３を圧縮する。
【００３６】
例えば、圧縮部１０は、仮数部ａ３の最上位ビットから所定単位ずつビット列を照合する。所定単位は、循環仮数部ｂ５に設定可能な循環パターンのビット列の長さであり、初期値を循環仮数部ｂ５の長さとする。すなわち、所定単位の初期値は、単精度浮動小数点数の場合「１０」であり、倍精度浮動小数点数の場合「１５」である。そして、圧縮部１０は、一致しない場合には、照合処理の開始位置を１ビット下位方向にシフトする。圧縮部１０は、所定単位に関して、トータルのシフト数と所定単位を加算して得られた値が循環仮数部ｂ５の長さ以下である場合には、照合処理により一致した場合循環仮数部ｂ５で表現できると判断する。そして、圧縮部１０は、仮数部ａ３の新たな開始位置から所定単位ずつビット列を照合する照合処理を実行する。圧縮部１０は、所定単位に関して、トータルのシフト数と所定単位を加算して得られた値が循環仮数部ｂ５の長さより大きい場合には、照合処理により一致した場合循環仮数部ｂ５で表現できないと判断する。そして、圧縮部１０は、所定単位を１ビット減算し、新たな所定単位ずつ仮数部ａ３の最上位ビットからビット列を照合する照合処理を実行する。そして、圧縮部１０は、一致する場合には、一致するビット列を循環パターンの候補として抽出する。そして、圧縮部１０は、仮数部ａ３の所定単位に満たない端数部分が循環パターンの候補と前方一致する場合には、循環パターンの候補を循環パターンと判断する。循環パターンが見つかると、見つかった循環パターンの１ビット先から循環パターンのビット数分も、循環パターンとなる。そこで、圧縮部１０は、仮数部ａ３の最上位ビットから循環仮数部ｂ５の長さ分のビット列を循環仮数部ｂ５に設定する。圧縮部１０は、循環パターンのビット数（循環数）を循環数部ｂ４に設定する。すなわち、循環節部ｂ５２は、循環仮数部ｂ５の後方から、循環数部ｂ４に設定された循環パターンのビット数分のビット列である。有限仮数部ｂ５１は、循環仮数部ｂ５の残りのビット列である。
【００３７】
図４は、圧縮処理の一例を示す図である。図４に示すように、圧縮部１０がＩＥＥＥ７５４形式の数値「１．１」を圧縮する一例を示す。数値「１．１」は、ＩＥＥＥ７５４で規定された単精度浮動小数点数として、図４上段のように表わされる。すなわち、数値「１．１」は、符号部ａ１として「０」（１ビット）、指数部ａ２として「０１１１１１１１」（８ビット）、仮数部ａ３として「０００１１００１１００１１００１１００１１０１」（２３ビット）と表現される。仮数部ａ３の最下位ビットは、繰り上がり処理がなされた結果の値である。
【００３８】
圧縮部１０は、単精度浮動小数点数の循環仮数部ｂ５の長さが１０ビットであるため、初期値の所定単位を１０とする。
【００３９】
圧縮部１０は、仮数部ａ３の最上位ビットから所定単位である１０ビットずつビット列を照合する。すなわち、仮数部ａ３を１０（ビット）×２＋３（ビット）に区別する場合である。ここでは、圧縮部１０は、仮数部ａ３の１ビット目からの１０ビット「０００１１００１１０」と後続する１０ビット「０１１００１１００１」を照合するが、一致しない。そこで、圧縮部１０は、照合処理の開始位置を１ビット下位方向にシフトする。
【００４０】
圧縮部１０は、トータルのシフト数「１」と所定単位である「１０」を加算して得られた値「１１」が循環仮数部ｂ５の長さ「１０」より大きいので、照合処理により一致した場合循環仮数部ｂ５で表現できないと判断する。
【００４１】
そこで、圧縮部１０は、所定単位を１ビット減算し、新たな所定単位である９ビットずつ仮数部ａ３の最上位ビットからビット列を照合する。すなわち、仮数部ａ３を９（ビット）×２＋５（ビット）に区別する場合である。ここでは、圧縮部１０は、仮数部ａ３の１ビット目からの９ビット「０００１１００１１」と後続する９ビット「００１１００１１０」を照合するが、一致しない。そこで、圧縮部１０は、照合処理の開始位置を１ビット下位方向にシフトする。
【００４２】
圧縮部１０は、トータルのシフト数「１」と所定単位である「９」を加算して得られた値「１０」が循環仮数部ｂ５の長さ「１０」以下であるので、照合処理により一致した場合循環仮数部ｂ５で表現できると判断する。
【００４３】
そこで、圧縮部１０は、仮数部ａ３の新たな開始位置から所定単位である９ビットずつビット列を照合する。すなわち、仮数部ａ３を１＋９（ビット）×２＋４（ビット）に区別する場合である。ここでは、圧縮部１０は、仮数部ａ３の２ビット目からの９ビット「００１１００１１０」と後続する９ビット「０１１００１１００」を照合するが、一致しない。そこで、圧縮部１０は、照合処理の開始位置を１ビット下位方向にシフトする。
【００４４】
圧縮部１０は、トータルのシフト数「２」と所定単位である「９」を加算して得られた値「１１」が循環仮数部ｂ５の長さ「１０」より大きいので、照合処理により一致した場合循環仮数部ｂ５で表現できないと判断する。
【００４５】
そこで、圧縮部１０は、所定単位を１ビット減算し、新たな所定単位である８ビットずつ仮数部ａ３の最上位ビットからビット列を照合する。すなわち、仮数部ａ３を８（ビット）×２＋７（ビット）に区別する場合である。ここでは、圧縮部１０は、仮数部ａ３の１ビット目からの８ビット「０００１１００１」と後続する８ビット「１００１１００１」を照合するが、一致しない。そこで、圧縮部１０は、照合処理の開始位置を１ビット下位方向にシフトする。
【００４６】
圧縮部１０は、トータルのシフト数「１」と所定単位である「８」を加算して得られた値「９」が循環仮数部ｂ５の長さ「１０」以下であるので、照合処理により一致した場合循環仮数部ｂ５で表現できると判断する。
【００４７】
そこで、圧縮部１０は、仮数部ａ３の新たな開始位置から所定単位である８ビットずつビット列を照合する。すなわち、仮数部ａ３を１＋８（ビット）×２＋６（ビット）に区別する場合である。ここでは、圧縮部１０は、仮数部ａ３の２ビット目からの８ビット「００１１００１１」と後続する８ビット「００１１００１１」を照合すると、一致する。そして、圧縮部１０は、一致するビット列「００１１００１１」を循環パターンの候補として抽出する。
【００４８】
圧縮部１０は、仮数部ａ３の端数部分が循環パターンの候補と前方一致する場合には、循環パターンの候補を循環パターンと判断する。ここでは、循環パターンの候補「００１１００１１」は、端数部分「００１１０」と一致するので、循環パターンの候補「００１１００１１」は、循環パターンと判断される。循環パターンが見つかると、見つかった循環パターンの１ビット先から循環パターンのビット数分の「０１１００１１０」も、循環パターンとなる。
【００４９】
そして、圧縮部１０は、仮数部ａ３の最上位ビットから循環仮数部ｂ５の長さ「１０」ビット分のビット列「０００１１００１１０」を循環仮数部ｂ５に設定する。圧縮部１０は、循環パターンのビット数「８」の２進値「１０００」を循環数部ｂ４に設定する。
【００５０】
なお、圧縮部１０は、ＩＥＥＥ７５４の浮動小数点数から圧縮する場合を説明したが、これに限定されず、オリジナルの数値から圧縮する場合であっても良い。かかる場合、圧縮部１０は、オリジナルの数値をＩＥＥＥ７５４の浮動小数点数より１ビット多めに浮動小数点数化する。これは、仮数部ａ３の最終ビットの繰り上がりをさせないようにするためである。そして、圧縮部１０は、浮動小数点数化した数から上記した方法で圧縮すれば良い。
【００５１】
図３に戻って、演算部２０は、大小比較部２１と、加算部２２と、減算部２３と、乗算部２４と、除算部２５とを有する。
【００５２】
大小比較部２１は、圧縮した浮動小数点数の値同士の大小を比較する。また、大小比較部２１は、圧縮した浮動小数点数の値と圧縮していない浮動小数点数の値の大小を比較する。なお、圧縮していない浮動小数点数の値同士の大小の比較は、ＩＥＥＥ７５４の演算方法に従って比較するので、ここでは説明を省略する。
【００５３】
例えば、大小比較部２１は、符号部のビットを比較する。大小比較部２１は、符号部のビットが「１」である方の浮動小数点数の値を小さいと判断する。大小比較部２１は、符号部のビットが同値である場合には、指数部のビットを比較する。符号部のビットの値に応じて、指数部のビットを上位ビットから順番に比較することで大小を比較する。一例として、符号部のビットが「０」である場合、指数部のビットが「１１００」と「１０００」とを比較すると、上位から２つ目のビットが立っている「１１００」の方が大きいと判断される。
【００５４】
大小比較部２１は、指数部のビットが同値である場合には、圧縮した浮動小数点数同士であるか否かを判定する。
【００５５】
大小比較部２１は、圧縮した浮動小数点数同士である場合には、循環仮数部のビットを比較する。符号部のビットの値に応じて、循環仮数部のビットを上位ビットから順番に比較することで大小を比較する。大小比較部２１は、循環仮数部のビットが同一でない場合には、大きい方の浮動小数点数の値を大きいと判断する。
【００５６】
大小比較部２１は、循環仮数部のビットが同一である場合には、循環数部のビットを比較する。大小比較部２１は、循環数部のビットが同一である場合には、圧縮した浮動小数点数の値同士は同一であると判断する。大小比較部２１は、循環数部のビットが同一でない場合には、大小の判断ができないので、伸長して比較する。
【００５７】
ここで、循環数部のみ異なる場合の大小比較の一例を、以下に示す。一方の１０進数の数値「３６０９８８０」のＩＥＥＥ７５４の単精度浮動小数点数のデータ形式は、符号部ａ１として「０」、指数部ａ２として「１００１１０００」、仮数部ａ３として「０００１１００１１００１１００１１００１１０１」である。圧縮部１０により圧縮された後の単精度浮動小数点数のデータ形式は、圧縮フラグｂ１として「１」、符号部ｂ２として「０」、指数部ｂ３として「１００１１０００」、循環数部ｂ４として「１０００」、循環仮数部ｂ５として「０００１１００１１０」である。
【００５８】
他方の１０進数の数値「３６９２３０８０」のＩＥＥＥ７５４の単精度浮動小数点数のデータ形式は、符号部ａ１として「０」、指数部ａ２として「１００１１０００」、仮数部ａ３として「０００１１００１１０１１００１１０１１００１１」である。圧縮部１０により圧縮された後の単精度浮動小数点数のデータ形式は、圧縮フラグｂ１として「１」、符号部ｂ２として「０」、指数部ｂ３として「１００１１０００」、循環数部ｂ４として「０１１１」、循環仮数部ｂ５として「０００１１００１１０」である。
【００５９】
これら２つの数値では、圧縮後について、圧縮フラグｂ１、符号部ｂ２、指数部ｂ３および循環仮数部ｂ５が等しいが、循環数部ｂ４のみが異なる。なお、圧縮前については、上位１９ビットが等しい。これら２つの数値では、数値「３６９２３０８０」が数値「３６０９８８０」より大きいが、数値「３６９２３０８０」の循環数部ｂ４「０１１１」の方が数値「３６０９８８０」の循環数部ｂ４「１０００」より小さい。このため、循環数部ｂ４のみ異なる場合、大小比較部２１は、大小の判断ができないので、伸長して比較する。
【００６０】
また、大小比較部２１は、圧縮した浮動小数点数同士でない場合には、循環仮数部ｂ５のビットと仮数部ａ３のビットを比較する。循環仮数部ｂ５のビットと仮数部ａ３のビットを上位ビットから順番に比較することで大小を比較する。そして、大小比較部２１は、循環仮数部ｂ５のビットと仮数部ａ３のビットが同一である場合には、大小の判断ができないので、伸長して比較する。
【００６１】
加算部２２は、圧縮された２つの浮動小数点数の値を加算する。なお、加算部２２は、２つの浮動小数点数がどちらも圧縮されていない場合には、ＩＥＥＥ７５４の演算方法に従って加算する。また、加算部２２は、２つの浮動小数点数のどちらか一方が圧縮されている場合には、圧縮されている浮動小数点数を伸長してから、ＩＥＥＥ７５４の演算方法に従って加算する。
【００６２】
例えば、加算部２２は、大小比較部２１を用いて、圧縮された２つの浮動小数点数の値の大小を比較する。加算部２２は、指数部ｂ３および循環数部ｂ４を用いて、小さい方の数の指数部ｂ３の値を大きい方の数の指数部ｂ３の値に合わせるとともに、循環仮数部ｂ５の値を調整する。一例として、加算部２２は、大きい方の数の指数部ｂ３の値から小さい方の数の指数部ｂ３の値を減算する。加算部２２は、減算して得た差分値が０であるか、または差分値が小さい方の数の循環数部ｂ４の値であれば、小さい方の数の循環仮数部ｂ５を差分値分右にシフトする。すなわち、差分値が０であれば、指数部ｂ３の値は同じであるので、循環仮数部ｂ５は調整されている。減算して得た値が小さい方の循環数部ｂ４の値であれば、小さい方の指数が大きい方より自己の循環数分小さいので、加算部２２は、指数部ｂ３の値を循環数分大きい方向（左）にシフトして大きい方の指数に合わせる。加えて、加算部２２は、循環仮数部ｂ５の値を循環数分小さい方向（右）にシフトする。加算部２２は、差分値が小さい方の循環数部ｂ４の値より小さければ、循環節部ｂ５２の値が０である場合に限り、以下の処理を行う。すなわち、加算部２２は、指数部ｂ３の値を差分値分大きい方向（左）にシフトして大きい方の指数に合わせるととともに、循環仮数部ｂ５を同じ値分小さい方向（右）にシフトする。
【００６３】
なお、差分値が小さい方の循環数部ｂ４の値より小さい場合に、循環節部ｂ５２の値が０でなければ、加算部２２は、循環仮数部ｂ５の調整ができないので、伸長して加算すれば良い。
【００６４】
加算部２２は、２つの浮動小数点数の循環数部ｂ４の値を比較する。加算部２２は、２つの浮動小数点数の循環数部ｂ４の値が同一であれば、２つの浮動小数点数の循環仮数部ｂ５を加算する。加算部２２は、加算結果の繰り上がり処理を行い、正規化して指数部ｂ３の値を求める。加算部２２は、２つの浮動小数点数の循環数部ｂ４の値が同一でなければ、循環パターンが異なるので、循環仮数部ｂ５の繰り上がり処理を正確に行うことができないので、伸長して加算する。
【００６５】
減算部２３は、圧縮された２つの浮動小数点数の値を減算する。なお、減算部２３は、２つの浮動小数点数がどちらも圧縮されていない場合には、ＩＥＥＥ７５４の演算方法に従って加算する。また、減算部２３は、２つの浮動小数点数のどちらか一方が圧縮されている場合には、圧縮されている浮動小数点数を伸長してから、ＩＥＥＥ７５４の演算方法に従って加算する。
【００６６】
例えば、減算部２３は、大小比較部２１を用いて、圧縮された２つの浮動小数点数の値の大小を比較する。減算部２３は、指数部ｂ３および循環数部ｂ４を用いて、小さい方の数の指数部ｂ３の値を大きい方の数の指数部ｂ３の値に合わせるとともに、循環仮数部ｂ５の値を調整する。調整方法は、加算部２２と同じであるので、説明を省略する。
【００６７】
減算部２３は、２つの浮動小数点数の循環数部ｂ４の値を比較する。減算部２３は、２つの浮動小数点数の循環数部ｂ４の値が同一であれば、大きい方の数の循環仮数部ｂ５から小さい方の数の循環仮数部ｂ５を減算する。減算部２３は、減算結果の繰り下がり処理を行い、正規化して指数部ｂ３の値を求める。そして、減算部２３は、被減算数が小さい方の数であった場合には、すなわち、減算数が大きい方の数であった場合には、符号部ｂ２に負数であることを示す「１」を立てる。減算部２３は、２つの浮動小数点数の循環数部ｂ４の値が同一でなければ、循環パターンが異なるので、循環仮数部ｂ５の繰り下がり処理を正確に行うことができないので、伸長して減算する。
【００６８】
乗算部２４は、乗算対象の浮動小数点数が圧縮されていれば当該浮動小数点数を伸長する。乗算部２４は、伸長された２つの浮動小数点数の値を、ＩＥＥＥ７５４の演算方法に従って乗算する。
【００６９】
除算部２５は、除算対象の浮動小数点数が圧縮されていれば当該浮動小数点数を伸長する。除算部２５は、伸長された２つの浮動小数点数の値を、ＩＥＥＥ７５４の演算方法に従って除算する。
【００７０】
伸長部３０は、圧縮フラグｂ１が圧縮されたことを示す「１」であるか否かを判定する。伸長部３０は、圧縮フラグｂ１が「１」である場合には、循環数部ｂ４を用いて循環仮数部ｂ５を伸長する。例えば、伸長部３０は、循環仮数部ｂ５に設定されたビット列を仮数部ａ３の最上位ビットの位置から設定する。そして、伸長部３０は、循環仮数部ｂ５に設定されたビット列のうち、後方の循環パターンのビット数分のビット列を仮数部ａ３に付け足して設定する。そして、伸長部３０は、仮数部ａ３の最終ビットについて、繰り上がり処理を行う。そして、伸長部３０は、符号部ｂ２のビット値を符号部ａ１に設定する。伸長部３０は、指数部ｂ３のビット列を指数部ａ２に設定する。
【００７１】
伸長部３０は、圧縮フラグｂ１が「１」でない場合には、短縮仮数部ｃ１に設定されたビット列を仮数部ａ３の最上位ビットの位置から設定する。伸長部３０は、仮数部ａ３の最終ビットに０または１を設定する。そして、伸長部３０は、符号部ｂ２のビット値を符号部ａ１に設定する。伸長部３０は、指数部ｂ３のビット列を指数部ａ２に設定する。
【００７２】
［圧縮部の処理手順］
図５は、本実施例に係る圧縮部の処理手順を示すフローチャートである。図５に示すように、圧縮部１０は、数値がオリジナルであるか否かを判定する（ステップＳ１０１）。圧縮部１０は、数値がオリジナルである場合には（ステップＳ１０１；Ｙｅｓ）、数値を１ビット多く浮動小数点化する（ステップＳ１０２）。これは、仮数部ａ３の最終ビットの繰り上がりをさせないようにするためである。そして、圧縮部１０は、ステップＳ１０４に移行する。
【００７３】
一方、圧縮部１０は、数値がオリジナルでない場合には（ステップＳ１０１；Ｎｏ）、ステップＳ１０４に移行する。ステップＳ１０４では、圧縮部１０は、浮動小数点表記から符号部ａ１、指数部ａ２および仮数部ａ３を分離する（ステップＳ１０４）。
【００７４】
続いて、圧縮部１０は、循環パターンの候補（循環節候補）のビット数にＭを設定する（ステップＳ１０５）。Ｍの初期値は、循環仮数部ｂ５の長さであり、単精度浮動小数点数の場合には「１０」、倍精度浮動小数点数の場合には「１５」である。そして、圧縮部１０は、仮数部ａ３の先頭からＭビットずつ照合する（ステップＳ１０６）。
【００７５】
圧縮部１０は、照合処理により一致するか否かを判定する（ステップＳ１０７）。圧縮部１０は、照合処理により一致する場合には（ステップＳ１０７；Ｙｅｓ）、一致するビット列を循環節候補として記憶部４０に一時的に設定する（ステップＳ１０８）。そして、圧縮部１０は、仮数部ａ３の端数部分が循環節候補と前方一致するか否かを判定する（ステップＳ１０９）。なお、圧縮部１０は、仮数部ａ３の端数部分の最終ビットを無視するようにしても良い。仮数部ａ３の端数部分の最終ビットは、繰り上がった値が設定されている場合があるからである。
【００７６】
圧縮部１０は、仮数部ａ３の端数部分が循環節候補と前方一致しない場合には（ステップＳ１０９；Ｎｏ）、照合処理により一致しなかったと判断し、ステップＳ１１２に移行する。
【００７７】
一方、圧縮部１０は、仮数部ａ３の端数部分が循環節候補と前方一致する場合には（ステップＳ１０９；Ｙｅｓ）、循環節候補を循環節と判断し、仮数部ａ３の先頭から循環仮数部ｂ５の長さ分のビット列を循環仮数部ｂ５に設定する（ステップＳ１１０）。そして、圧縮部１０は、循環節の長さを循環数部ｂ４に設定する（ステップＳ１１０Ａ）。そして、圧縮部１０は、圧縮フラグｂ１を「１」に設定し、符号部ａ１の値を符号部ｂ２に設定し、指数部ａ２の値を指数部ｂ３に設定し、圧縮データを生成する（ステップＳ１１１）。そして、圧縮部１０は、圧縮処理を終了する。
【００７８】
ステップＳ１０７では、圧縮部１０は、照合処理により一致しない場合には（ステップＳ１０７；Ｎｏ）、照合処理の先頭を１ビット右にシフトする（ステップＳ１１２）。続いて、圧縮部１０は、トータルのシフト数とＭとを加算して得られた値が循環仮数部ｂ５の長さより大きいか否かを判定する（ステップＳ１１３）。
【００７９】
圧縮部１０は、トータルのシフト数とＭとを加算して得られた値が循環仮数部ｂ５の長さ以下である場合には（ステップＳ１１３；Ｎｏ）、照合により一致した場合循環仮数部ｂ５で表現できると判断する。そして、圧縮部１０は、シフトした位置からの照合処理をすべく、ステップＳ１０７に移行する。
【００８０】
一方、圧縮部１０は、トータルのシフト数とＭとを加算して得られた値が循環仮数部ｂ５の長さより大きい場合には（ステップＳ１１３；Ｙｅｓ）、照合により一致した場合循環仮数部ｂ５で表現できないと判断する。そして、圧縮部１０は、Ｍを１減算する（ステップＳ１１４）。圧縮部１０は、Ｍが１であるか否かを判定する（ステップＳ１１５）。
【００８１】
圧縮部１０は、Ｍが１でない場合には（ステップＳ１１５；Ｎｏ）、減算した新たなＭずつ照合処理をすべく、ステップＳ１０５に移行する。一方、圧縮部１０は、Ｍが１である場合には（ステップＳ１１５；Ｙｅｓ）、圧縮できないと判断し、圧縮処理を終了する。
【００８２】
［伸長部の処理手順］
図６は、本実施例に係る伸長部の処理手順を示すフローチャートである。なお、図６では、伸長部３０が、伸長対象の浮動小数点数を受け取ったものとする。
【００８３】
図６に示すように、伸長部３０は、受け取った圧縮フラグｂ１が「１」であるか否かを判定する（ステップＳ２０１）。伸長部３０は、圧縮フラグｂ１が「１」である場合には（ステップＳ２０１；Ｙｅｓ）、循環数部ｂ４の値を用いて循環仮数部ｂ５の値を伸長し、伸長したビット列を仮数部ａ３に設定する（ステップＳ２０２）。そして、伸長部３０は、ステップＳ２０４に移行する。
【００８４】
一方、伸長部３０は、圧縮フラグｂ１が「１」でない場合には（ステップＳ２０１；Ｎｏ）、短縮仮数部ｃ１の値を仮数部ａ３に設定する（ステップＳ２０３）。そして、伸長部３０は、ステップＳ２０４に移行する。
【００８５】
ステップＳ２０４では、伸長部３０は、符号部ｂ２の値を符号部ａ１に設定し、指数部ｂ３の値を指数部ａ２に設定する（ステップＳ２０４）。そして、伸長部３０は、伸長処理を終了する。
【００８６】
［大小比較部の処理手順］
図７は、本実施例に係る大小比較部の処理手順を示すフローチャートである。図７に示すように、大小比較部２１は、大小比較をする２つの数値を受け取ったか否かを判定する（ステップＳ３００）。大小比較部２１は、２つの数値を受け取っていない場合には（ステップＳ３００；Ｎｏ）、２つの数値を受け取るまで判定処理を繰り返す。
【００８７】
一方、大小比較部２１は、２つの数値を受け取った場合には（ステップＳ３００；Ｙｅｓ）、符号部ｂ２のビットを比較する（ステップＳ３０１）。そして、大小比較部２１は、どちらか一方の符号部ｂ２のビットが「１」であるか否かを判定する（ステップＳ３０２）。大小比較部２１は、どちらか一方の符号部ｂ２のビットが「１」である場合には（ステップＳ３０２；Ｙｅｓ）、符号部ｂ２のビットが「１」の数値が小さいと判断する（ステップＳ３０３）。なお、符号部ｂ２のビット「１」は、負数であることを示す。そして、大小比較部２１は、大小比較処理を終了する。
【００８８】
一方、大小比較部２１は、どちらか一方の符号部ｂ２のビットが「１」でない場合には（ステップＳ３０２；Ｎｏ）、すなわち、どちらも「０」またはどちらも「１」である場合には、指数部ｂ３のビットを比較する（ステップＳ３０４）。そして、大小比較部２１は、指数部ｂ３のビットが同一であるか否かを判定する（ステップＳ３０５）。大小比較部２１は、指数部ｂ３のビットが同一でない場合には（ステップＳ３０５；Ｎｏ）、符号部ｂ２のビットが「１」の場合は小さい方の数値が大きいと判断し、そうでない場合は大きい方の数値が大きいと判断する（ステップＳ３０６）。そして、大小比較部２１は、大小比較処理を終了する。
【００８９】
一方、大小比較部２１は、指数部ｂ３のビットが同一である場合には（ステップＳ３０５；Ｙｅｓ）、２つの数値が圧縮された数値同士であるか否かを判定する（ステップＳ３０７）。大小比較部２１は、２つの数値が圧縮された数値同士である場合には（ステップＳ３０７；Ｙｅｓ）、循環仮数部ｂ５のビットを比較する（ステップＳ３０８）。大小比較部２１は、循環仮数部ｂ５のビットが同一であるか否かを判定する（ステップＳ３０９）。大小比較部２１は、循環仮数部ｂ５のビットが同一でない場合には（ステップＳ３０９；Ｎｏ）、符号部ｂ２のビットが「１」の場合は小さい方の数値が大きいと判断し、そうでない場合は大きい方の数値が大きいと判断する（ステップＳ３１０）。そして、大小比較部２１は、大小比較処理を終了する。
【００９０】
一方、大小比較部２１は、循環仮数部ｂ５のビットが同一である場合には（ステップＳ３０９；Ｙｅｓ）、循環数部ｂ４のビットを比較する（ステップＳ３１１）。大小比較部２１は、循環数部ｂ４のビットが同一であるか否かを判定する（ステップＳ３１２）。大小比較部２１は、循環数部ｂ４のビットが同一である場合には（ステップＳ３１２；Ｙｅｓ）、２つの数値は同一であると判断する（ステップＳ３１３）。そして、大小比較部２１は、大小比較処理を終了する。
【００９１】
一方、大小比較部２１は、循環数部ｂ４のビットが同一でない場合には（ステップＳ３１２；Ｎｏ）、大小の判断ができないので、伸長して比較する（ステップＳ３１４）。その結果、符号部ｂ２のビットが「１」の場合は小さい方の数値が大きいと判断し、そうでない場合は大きい方の数値が大きいと判断する（ステップＳ３１５）。そして、大小比較部２１は、大小比較処理を終了する。
【００９２】
ステップＳ３０７において、大小比較部２１は、２つの数値が圧縮された数値同士でない場合には（ステップＳ３０７；Ｎｏ）、循環仮数部ｂ５のビットと仮数部ａ３のビットを比較する（ステップＳ３１６）。大小比較部２１は、循環仮数部ｂ５のビットと仮数部ａ３のビットが同一であるか否かを判定する（ステップＳ３１７）。大小比較部２１は、循環仮数部ｂ５のビットと仮数部ａ３のビットが同一でない場合には（ステップＳ３１７；Ｎｏ）、符号部ｂ２のビットが「１」の場合は小さい方の数値が大きいと判断し、そうでない場合は大きい方の数値が大きいと判断する（ステップＳ３１８）。そして、大小比較部２１は、大小比較処理を終了する。
【００９３】
一方、大小比較部２１は、循環仮数部ｂ５のビットと仮数部ａ３のビットが同一である場合には（ステップＳ３１７；Ｙｅｓ）、大小の判断ができないので、伸長して比較する（ステップＳ３１９）。その結果、符号部ｂ２のビットが「１」の場合は小さい方の数値が大きいと判断し、そうでない場合は大きい方の数値が大きいと判断する（ステップＳ３２０）。そして、大小比較部２１は、大小比較処理を終了する。
【００９４】
［加算部の処理手順］
図８は、本実施例に係る加算部の処理手順を示すフローチャートである。図８に示すように、加算部２２は、加算対象の２つの数値を受け取ったか否かを判定する（ステップＳ４０１）。加算部２２は、２つの数値を受け取っていない場合には（ステップＳ４０１；Ｎｏ）、２つの数値を受け取るまで判定処理を繰り返す。
【００９５】
一方、加算部２２は、２つの数値を受け取った場合には（ステップＳ４０１；Ｙｅｓ）、大小比較部２１による大小比較処理を行う（ステップＳ４０２）。以下では、大きい方の数値をα、小さい方の数値をβとして説明する。
【００９６】
加算部２２は、αの指数部ｂ３の値からβの指数部ｂ３の値を減算して得た差分値が０であるか、または差分値がβの循環数であるか否かを判定する（ステップＳ４０３）。加算部２２は、差分値が０であるか、または差分値がβの循環数である場合には（ステップＳ４０３；Ｙｅｓ）、βの循環仮数部ｂ５の値を差分値分右シフトする（ステップＳ４０４）。これは、βの指数部ｂ３の値をαの指数部ｂ３の値に合わせるためである。そして、加算部２２は、αの指数部ｂ３の値をβの指数部ｂ３に設定する（ステップＳ４０５）。
【００９７】
続いて、加算部２２は、αの循環数がβの循環数と一致するか否かを判定する（ステップＳ４０６）。加算部２２は、αの循環数がβの循環数と一致しない場合には（ステップＳ４０６；Ｎｏ）、圧縮したまま加算ができないと判断し、ステップＳ４１１に移行する。
【００９８】
一方、加算部２２は、αの循環数がβの循環数と一致する場合には（ステップＳ４０６；Ｙｅｓ）、αの循環仮数部ｂ５の値とβの循環仮数部ｂ５の値を加算する（ステップＳ４０７）。加算部２２は、加算結果の繰り上がり処理を行う（ステップＳ４０８）。加算部２２は、繰り上がり処理の結果を正規化して指数を求め、求めた値を指数部ｂ３に設定する（ステップＳ４０９）。そして、加算部２２は、加算処理を終了する。
【００９９】
ステップＳ４０３では、加算部２２は、差分値が０でなく、且つ差分値がβの循環数でない場合には（ステップＳ４０３；Ｎｏ）、差分値がβの循環数より小さく、且つβの循環節の値が０であるか否かを判定する（ステップＳ４１０）。加算部２２は、差分値がβの循環数より小さく、且つβの循環節の値が０である場合には（ステップＳ４１０；Ｙｅｓ）、指数部ｂ３の値を合わせるべく、ステップＳ４０４に移行する。
【０１００】
一方、加算部２２は、差分値がβの循環数以上、またはβの循環節の値が０でない場合には（ステップＳ４１０；Ｎｏ）、圧縮したまま加算ができないと判断し、ステップＳ４１１に移行する。
【０１０１】
ステップＳ４１１では、加算部２２は、伸長してからＩＥＥＥ７５４の演算方法で加算する（ステップＳ４１１）。そして、加算部２２は、加算処理を終了する。
【０１０２】
［減算部の処理手順］
図９は、本実施例に係る減算部の処理手順を示すフローチャートである。図９に示すように、減算部２３は、減算対象の２つの数値を受け取ったか否かを判定する（ステップＳ５０１）。減算部２３は、２つの数値を受け取っていない場合には（ステップＳ５０１；Ｎｏ）、２つの数値を受け取るまで判定処理を繰り返す。
【０１０３】
一方、減算部２３は、２つの数値を受け取った場合には（ステップＳ５０１；Ｙｅｓ）、大小比較部２１による大小比較処理を行う（ステップＳ５０２）。以下では、大きい方の数値をα、小さい方の数値をβとして説明する。
【０１０４】
減算部２３は、被減算数が減算数より小さいか否かを判定する（ステップＳ５０３）。減算部２３は、被減算数が減算数より小さい場合には（ステップＳ５０３；Ｙｅｓ）、減算結果が負になるので、減算した後に符号部ｂ２のビットに「１」を設定する（ステップＳ５０４）。そして、減算部２３は、ステップＳ５０５に移行する。
【０１０５】
一方、減算部２３は、被減算数が減算数より小さくない場合には（ステップＳ５０３；Ｎｏ）、減算結果が負にならないので、ステップＳ５０５に移行する。
【０１０６】
ステップＳ５０５では、減算部２３は、αの指数部ｂ３の値からβの指数部ｂ３の値を減算して得た差分値が０であるか、または差分値がβの循環数であるか否かを判定する（ステップＳ５０５）。減算部２３は、差分値が０であるか、または差分値がβの循環数である場合には（ステップＳ５０５；Ｙｅｓ）、βの循環仮数部ｂ５の値を差分値分右シフトする（ステップＳ５０６）。これは、βの指数部ｂ３の値をαの指数部ｂ３の値に合わせるためである。そして、減算部２３は、αの指数部ｂ３の値をβの指数部ｂ３に設定する（ステップＳ５０７）。
【０１０７】
続いて、減算部２３は、αの循環数がβの循環数と一致するか否かを判定する（ステップＳ５０８）。減算部２３は、αの循環数がβの循環数と一致しない場合には（ステップＳ５０８；Ｎｏ）、圧縮したまま加算ができないと判断し、ステップＳ５１３に移行する。
【０１０８】
一方、減算部２３は、αの循環数がβの循環数と一致する場合には（ステップＳ５０８；Ｙｅｓ）、αの循環仮数部ｂ５の値からβの循環仮数部ｂ５の値を減算する（ステップＳ５０９）。減算部２３は、減算結果の繰り下がり処理を行う（ステップＳ５１０）。減算部２３は、繰り下がり処理の結果を正規化して指数を求め、求めた値を指数部ｂ３に設定する（ステップＳ５１１）。そして、減算部２３は、減算処理を終了する。
【０１０９】
ステップＳ５０５では、減算部２３は、差分値が０でなく、且つ差分値がβの循環数でない場合には（ステップＳ５０５；Ｎｏ）、差分値がβの循環数より小さく、且つβの循環節の値が０であるか否かを判定する（ステップＳ５１２）。減算部２３は、差分値がβの循環数より小さく、且つβの循環節の値が０である場合には（ステップＳ５１２；Ｙｅｓ）、指数部ｂ３の値を合わせるべく、ステップＳ５０６に移行する。
【０１１０】
一方、減算部２３は、差分値がβの循環数以上、またはβの循環節の値が０でない場合には（ステップＳ５１２；Ｎｏ）、圧縮したまま減算ができないと判断し、ステップＳ５１３に移行する。
【０１１１】
ステップＳ５１３では、減算部２３は、伸長してからＩＥＥＥ７５４の演算方法で減算する（ステップＳ５１３）。そして、減算部２３は、減算処理を終了する。
【０１１２】
次に、本実施例に係る情報処理装置１の効果について説明する。情報処理装置１は、符号部ａ１、指数部ａ２および仮数部ａ３を有する浮動小数点数に対応したビット列のうち、仮数部ａ３に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、部分ビット列の末尾まで特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出する。情報処理装置１は、検出した部分ビット列を、部分ビット列のうち特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む圧縮ビット列を出力する処理を実行する。かかる構成によれば、情報処理装置は、仮数部ａ３を、特定のビットパターンに対応するビット列と当該ビット列の箇所を特定するビット列とで規定することで、仮数部ａ３を圧縮することができる。また、情報処理装置１は、符号部ａ１と指数部ａ２をそのままにして仮数部ａ３を圧縮することで、圧縮後の利用効率を勘案して圧縮することができる。例えば、情報処理装置１は、圧縮したまま、圧縮前と同等の演算を行うことができる。
【０１１３】
単精度浮動小数点数の場合、情報処理装置１は、ＩＥＥＥ７５４形式の４バイトの浮動小数点数を３バイトの浮動小数点数に圧縮する。圧縮前には、１レコードが１００バイトであって、１レコードに単精度浮動小数点数が５２バイト（１３個）含まれるとする。圧縮後には、１レコードに単精度浮動小数点数が３９バイト（１３個）含まれることとなるため、情報処理装置１は、圧縮前と比較してレコード長を１３バイト小さくできる。４ＭＢのメモリにそれぞれのレコードが格納される場合、圧縮前では、以下の式（１）により、４１９４３レコードが格納される。
４×１０２４×１０２４／１００（byte/record）＝４１９４３・・・式（１）
一方、圧縮後では、以下の式（２）により、４８２１０レコードが格納される。
４×１０２４×１０２４／（１００−１３）（byte/record）＝４８２１０・・・式（２）
したがって、情報処理装置１は、圧縮後では圧縮前と比較して、メモリに対して１．１倍のレコードを格納することができる。
【０１１４】
倍精度浮動小数点数の場合、情報処理装置１は、ＩＥＥＥ７５４形式の８バイトの浮動小数点数を４バイトの浮動小数点数に圧縮する。圧縮前には、１レコードが１００バイトであって、１レコードに倍精度浮動小数点数が５６バイト（７個）含まれるとする。圧縮後には、１レコードに倍精度浮動小数点数が２８バイト（７個）含まれることとなるため、情報処理装置１は、圧縮前と比較してレコード長を２８バイト小さくできる。４ＭＢのメモリにそれぞれのレコードが格納される場合、圧縮前では、上記式（１）により、４１９４３レコードが格納される。
一方、圧縮後では、以下の式（３）により、５８２５４レコードが格納される。
４×１０２４×１０２４／（１００−２８）（byte/record）＝５８２５４・・・式（３）
したがって、情報処理装置１は、圧縮後では圧縮前と比較して、メモリに対して１．３９倍のレコードを格納することができる。
【０１１５】
また、本実施例に係る情報処理装置１によれば、仮数部ａ３の上位ビットから所定単位のビット数ずつビット列を照合する。情報処理装置１は、一致しない場合には、照合処理の開始位置を１ビット分下位方向にシフトしてから照合処理を実行する。情報処理装置１は、一致する場合には、一致するビット列を循環パターンとして抽出する。かかる構成によれば、情報処理装置１は、仮数部ａ３の循環パターンを効率的に抽出することができる。
【０１１６】
また、本実施例に係る情報処理装置１によれば、所定単位のビット数の照合処理で一致しない場合に、さらに以下の処理を行う。情報処理装置１は、トータルのシフト数と所定単位のビット数とを加算して得られる数値が、予め定められた循環パターンの最大ビット数より大きくなったタイミングで、所定単位のビット数を１ビット減算する。情報処理装置１は、減算して得られる新たな所定単位のビット数ずつ照合処理を実行する。かかる構成によれば、情報処理装置１は、所定単位のビット数を大きいビット数から小さいビット数へ変更して照合処理を実行することで、大きいビット数の循環パターンを優先して抽出することが可能となる。この結果、情報処理装置１は、循環の精度を保証することができる。すなわち、情報処理装置１は、小さいビット数を優先した場合に、誤って循環パターンとしてしまうことを防ぐことができる。
【０１１７】
また、本実施例に係る情報処理装置１によれば、圧縮された２つの浮動小数点数の数値を加算する要求を受け付けると、２つの浮動小数点数の数値における循環数の値が同値である場合に、循環パターン同士を加算する。かかる構成により、情報処理装置１は、圧縮したまま加算することができる。
【０１１８】
また、本実施例に係る情報処理装置１によれば、圧縮された２つの浮動小数点数の数値を減算する要求を受け付けると、２つの浮動小数点数の数値における循環数の値が同値である場合に、循環パターン同士を減算する。かかる構成により、情報処理装置１は、圧縮したまま減算することができる。
【０１１９】
また、本実施例に係る情報処理装置１によれば、浮動小数点数の数値を圧縮した圧縮データのサイズをバイト数単位となるように圧縮する。かかる構成により、情報処理装置１は、バイト区切りに対応させることで、ディスクやメモリに対する入出力を高速化することができる。
【０１２０】
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１０は、コンピュータ３００のハードウェア構成例を示す図である。コンピュータ３００は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【０１２１】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ３００は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１２２】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク４００を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ３００と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１２３】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ３００の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ３００の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ３００と一体になっていてもよいし、コンピュータ３００に含まれず、例えば、コンピュータ３００に外部から接続する装置であってもよい。
【０１２４】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って圧縮部１０の処理、演算部２０の処理または伸張部３０の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部４０の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２０４、ミドルウェア２０３およびＯＳ２０２など）や各種データ（例えば、浮動小数点数）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１１を用いて説明する。
【０１２５】
図１１は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ３００において、図１０に示すハードウェア群２０１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２０２が動作する。ＯＳ２０２に従った手順でプロセッサ３０１が動作して、ハードウェア群２０１の制御・管理が行なわれることにより、アプリケーションプログラム２０４やミドルウェア２０３に従った処理がハードウェア群２０１で実行される。さらに、コンピュータ３００において、ミドルウェア２０３またはアプリケーションプログラム２０４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【０１２６】
プロセッサ３０１が、圧縮機能が呼び出された場合に、ミドルウェア２０３またはアプリケーションプログラム２０４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２０２に基づいてハードウェア群２０１を制御して）圧縮部１０の機能が実現される。また、プロセッサ３０１が、伸張機能が呼び出された場合に、ミドルウェア２０３またはアプリケーションプログラム２０４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２０２に基づいてハードウェア群２０１を制御して）伸張部３０の機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム２０４自体に含まれてもよいし、アプリケーションプログラム２０４に従って呼び出されることで実行されるミドルウェア２０３の一部であってもよい。
【０１２７】
図１２は、実施形態のシステムにおける装置の構成例を示す。図１２のシステムは、コンピュータ３００ａ、コンピュータ３００ｂ、基地局５００およびネットワーク４００を含む。コンピュータ３００ａは、無線または有線の少なくとも一方により、コンピュータ３００ｂと接続されたネットワーク４００に接続している。
【０１２８】
図３に示す圧縮部１０と伸張部３０とは、図１２に示すコンピュータ３００ａとコンピュータ３００ｂとのいずれに含まれてもよい。コンピュータ３００ａが圧縮部１０を含み、コンピュータ３００ｂが伸張部３０を含んでも良いし、コンピュータ３００ｂが圧縮部１０を含み、コンピュータ３００ａが伸張部３０を含んでも良い。また、コンピュータ３００ａとコンピュータ３００ｂとの双方が、圧縮部１０および伸張部３０を備えても良い。
【０１２９】
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。圧縮処理の対象は、単に入力される浮動小数点数以外にも、システムから入力される浮動小数点数であっても良いし、ファイル内の浮動小数点数であっても良いし、データベースに格納された浮動小数点数であっても良い。例えば、データベースに格納された浮動小数点数を上述の圧縮処理により圧縮し、データベースに更新するなどの処理が行なわれる。
【０１３０】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３１】
（付記１）コンピュータに、
符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出し、
検出した前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する、
処理を実行させることを特徴とする処理プログラム。
【０１３２】
（付記２）前記検出する処理は、前記仮数部の上位ビットから所定単位のビット数ずつ部分ビット列を照合し、一致しない場合には、照合処理の開始位置を１ビット分下位方向にシフトしてから照合処理を実行し、一致する場合には、一致する部分ビット列を繰り返しビット部分として抽出する
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１３３】
（付記３）前記検出する処理は、さらに、一致しない場合に、トータルのシフト数と所定単位のビット数とを加算して得られる数値が、予め定められた繰り返しビット部分の最大ビット数より大きくなったタイミングで、所定単位のビット数を１ビット減算し、減算して得られる新たな所定単位のビット数ずつ照合処理を実行する
処理を実行させることを特徴とする付記２に記載の処理プログラム。
【０１３４】
（付記４）前記出力する処理によって出力された、２つの浮動小数点数の数値を加算する要求を受け付けると、２つの浮動小数点数の数値における、前記特定のビットパターンに対応するビット列の箇所を特定するビット列の値が同値である場合に、繰り返しビット部分同士を加算する
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１３５】
（付記５）前記出力する処理によって圧縮された、２つの浮動小数点数の数値を減算する要求を受け付けると、２つの浮動小数点数の数値における、前記特定のビットパターンに対応するビット列の箇所を特定するビット列の値が同値である場合に、繰り返しビット部分同士を減算する
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１３６】
（付記６）前記出力する処理は、前記浮動小数点数の数値を出力した出力データのサイズをバイト数単位となるように出力する
処理を実行させることを特徴とする付記１に記載の処理プログラム。
【０１３７】
（付記７）符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出する検出部と、
前記検出部によって検出された前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する実行部と、
を有することを特徴とする処理装置。
【０１３８】
（付記８）コンピュータが、
符号部、指数部および仮数部を有する浮動小数点数に対応したビット列のうち、前記仮数部に対応する部分ビット列について、特定のビットパターンの繰り返しが開始され、前記部分ビット列の末尾まで前記特定のビットパターンの順に従ったビットの並びが続く繰り返しビット部分を検出し、
検出した前記部分ビット列を、前記部分ビット列のうち前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列と、前記特定のビットパターンの２回目以降の繰り返し部分を除くビット列のうち前記特定のビットパターンに対応するビット列の箇所を特定するビット列とを含む変換ビット列を出力する処理を実行する、
各処理を実行することを特徴とする処理方法。
【符号の説明】
【０１３９】
１  情報処理装置
１０  圧縮部
２０  演算部
２１  大小比較部
２２  加算部
２３  減算部
２４  乗算部
２５  除算部
３０  伸長部
４０  記憶部
【図１】
0006350296.tif 000002
【図２】
0006350296.tif 000003
【図３】
0006350296.tif 000004
【図４】
0006350296.tif 000005
【図５】
0006350296.tif 000006
【図６】
0006350296.tif 000007
【図７】
0006350296.tif 000008
【図８】
0006350296.tif 000009
【図９】
0006350296.tif 000010
【図１０】
0006350296.tif 000011
【図１１】
0006350296.tif 000012
【図１２】
0006350296.tif 000013