(57)【要約】【課題】計算機で行われている計算の実行速度を、多くのハードウェア資源を用いる代わりに向上させることのできる計算装置及び計算方法の提供を目的とする。【解決手段】本発明の計算装置は、多項式を用いて複数の入力数値を演算する演算装置において、複数の入力数値を読み込む数値読込手段と、上記入力数値を対象とする基本演算の種類を読み込む演算種読込手段と、複数の演算２値化セットを保持する記憶手段と、上記複数の入力数値及び基本的演算の種類の各々を２値からなる複数のベクトルとして受け取り、それらを上記演算２値化セットから構成される結線論理を使用して処理する演算処理手段と、演算結果を出力する出力手段とを有することを特徴としている。必要に応じて演算２値化セットを作成する代数展開部を有するとよい。【選択図】図１
2012032967.tif 000002
【特許請求の範囲】
【請求項１】
多項式を用いて複数の入力数値を演算する演算装置において、
複数の入力数値を読み込む数値読込手段と、
上記入力数値を対象とする基本演算の種類を読み込む演算種読込手段と、
複数の演算２値化セットを保持する記憶手段と、
上記複数の入力数値及び基本演算の種類の各々を２値からなる複数のベクトルとして受け取り、それらを上記演算２値化セットから構成される結線論理を使用して処理する演算処理手段と、
演算結果を出力する出力手段と
を有することを特徴とする計算装置。
【請求項２】
入力多項式を読み込む多項式読込手段と、
この入力多項式を、所定の多項式２値ベクトルを用いて代数展開して演算２値化セットを作成する代数展開手段と、
演算２値化セットに含まれる２値多項式に現れる最大変数数及び上記代数展開手段による代数展開の度合いを保存するパラメータ保存手段と、
上記入力多項式を代数展開して得られる多項式２値ベクトルを実装する結線論理に必要とされるハードウェア量が妥当であるかを判定し、妥当でないと判断した場合に、パラメータ保存手段によって保存されるパラメータを変更する判定手段とを有し、
上記代数展開手段が、上記判定手段によってハードウェア量が妥当でないと判断された場合に、パラメータ保存手段に保存されるパラメータに基づき再度演算２値化セットを作成する請求項１に記載の計算装置。
【請求項３】
上記記憶手段が、多入力・多出力論理素子の使用を前提とする演算２値化セットを保持する請求項１又は請求項２に記載の計算装置。
【請求項４】
上記入力多項式と演算２値化セットとの対応を保持する演算２値化セットキャッシュ部を有する請求項２又は請求項３に記載の計算装置。
【請求項５】
上記演算２値化セットに含まれる２値ベクトル値関数及び変数間の対応情報と、結線論理との対応を保持する結線論理キャッシュ部を有する請求項１から請求項４のいずれか１項に記載の計算装置。
【請求項６】
入力信号値及び／又は出力信号値が０又は１である割合やある組合せをとる頻度を記録する記録部を有する請求項１から請求項５のいずれか１項に記載の計算装置。
【請求項７】
上記記憶手段が新たな演算２値化セットを書き込み可能に構成される請求項１から請求項６のいずれか１項に記載の計算装置。
【請求項８】
多項式を用いて複数の入力数値を演算する演算方法において、
複数の入力数値を読み込む数値読込ステップと、
上記入力数値を対象とする基本演算の種類を読み込む演算種読込ステップと、
上記複数の入力数値及び基本演算の種類の各々を２値からなる複数のベクトルとして受け取ったうえ、別途与えられる演算２値化セットから構成される結線論理を使用して複数の入力数値の演算を処理する演算処理ステップと、
演算結果を出力する出力ステップと
を有することを特徴とする計算方法。
【請求項９】
上記数値読込ステップに加えて、入力多項式を読み込む多項式読込ステップを有し、
さらに、
この入力多項式を、所定の多項式２値ベクトルを用いて代数展開して演算２値化セットを作成する代数展開ステップと、
演算２値化セットに含まれる２値多項式に現れる最大変数数及び上記代数展開ステップによる代数展開度合いを保存するパラメータ保存ステップと、
上記入力多項式を代数展開して得られた多項式２値ベクトルを実装する結線論理に必要とされるハードウェア量が妥当であるかを判定し、妥当でないと判断した場合に、パラメータ保存ステップによって保存されるパラメータを変更する判定ステップとを有し、
上記代数展開ステップが、上記判定ステップによってハードウェア量が妥当でないと判断された場合に、パラメータ保存ステップによって保存されるパラメータに基づき再度演算２値化セットを作成する請求項８に記載の計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２値からなる複数のベクトル（以下、「２値ベクトル」という）及び多項式を用いる計算装置及び計算方法に関し、詳細には、入力数値の各々を２値ベクトルとみなし、さらにこれらのベクトルに係る演算自体を２値多項式の集まりとみなしたうえで、かかる２値多項式の集まりに基づいて構成される結線論理を使用して、高速な計算が可能な計算装置及び計算方法に関する。
【背景技術】
【０００２】
今日では、情報処理装置による計算方法として、様々な方法が考えられている。このような計算方法として、例えば、乗算では、（１）ブースアルゴリズムを利用した計算方法（特開平０６−２９００２９号公報参照）が発案されている。（１）の計算方法は、乗数と被乗数とをともに高次のブースアルゴリズムに従ってコード信号化し、このコード信号を用いて乗数及び被乗数を複数の部分に分割し、各分割部分同士を乗算して得られる部分を加算することによって積を得る方法である。
【０００３】
また、剰余系における計算方法としては、（２）乗算剰余算の繰返し計算を高速化するための計算方法（特開２００７−５７８１１号公報参照）が発案されている。（２）の計算方法は、整数Ｍを法とする剰余系において、変数Ｕ、Ｖを、Ｍと互いに素でＭより小さな定数Ｒを用いて、変数Ｘ＝Ｕ・ＲｍｏｄＭ、変数Ｙ＝Ｖ・ＲｍｏｄＭに変換し、剰余系における乗算剰余算Ｕ・ＶｍｏｄＭを、演算Ｘ・Ｙ・Ｒ−１ｍｏｄＭに置換することによって計算結果を算出する方法である。
【０００４】
これらの手法及び現行の一般的な計算方法は、和算や乗算等の計算全体を、加減算やシフト演算等の単純な演算に組み直すというアプローチに基づいている。このようなアプローチに基づく計算方法は、実行する演算の繰返し回数が多くなるため、十分な量のハードウェアを用いることができる場合でも、計算時間を大幅に短縮することができない。この分析から、効果的に計算時間を短縮するためには、演算の繰返し回数を少なくすることが肝要であるといえる。
【０００５】
この点、計算全体を単純な演算ではなく複雑な演算に組み直すことができれば、演算の繰返し回数を減らし、計算時間を短縮することができる。しかし、これまでの手法では、そのような複雑な演算を電子回路として設計し、計算全体をそれらの演算に組み直すことは困難であった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−２９００２９号公報
【特許文献２】特開２００７−５７８１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、これらの不都合に鑑みてなされたものであり、離散・有限な計算を２値多項式の集まりと捉え、それらを２値ベクトルとして符号化して取り扱うことで、計算を２値多項式の集まりとして定式化される複雑な演算に組み直して計算式における演算の繰返し回数を削減するとともに、２値多項式の集まりに基づいて構成される結線論理を用いて複雑な演算を処理することにより計算の高速化を実現することを目的とするものである。
【課題を解決するための手段】
【０００８】
上記課題を解決するためになされた発明は、
多項式を用いて複数の入力数値を演算する演算装置において、
複数の入力数値を読み込む数値読込手段と、
上記入力数値を対象とする基本演算の種類を読み込む演算種読込手段と、
複数の演算２値化セットを保持する記憶手段と、
上記複数の入力数値及び基本演算の種類の各々を２値からなる複数のベクトルとして受け取り、それらを上記演算２値化セットから構成される結線論理を使用して処理する演算処理手段と、
演算結果を出力する出力手段と
を有することを特徴とする計算装置である。
【０００９】
当該計算装置は、演算２値化セットから構成される結線論理を使用して計算を複雑な演算に組み直したうえで演算処理するので、計算式における演算の繰返し回数を削減することができる。その結果、当該計算装置は、計算時間を効果的に削減することができる。
【００１０】
入力多項式を読み込む多項式読込手段と、この入力多項式を、所定の多項式２値ベクトルを用いて代数展開して演算２値化セットを作成する代数展開手段と、演算２値化セットに含まれる２値多項式に現れる最大変数数及び上記代数展開手段による代数展開の度合いを保存するパラメータ保存手段と、上記入力多項式を代数展開して得られる多項式２値ベクトルを実装する結線論理に必要とされるハードウェア量が妥当であるかを判定し、妥当でないと判断した場合に、パラメータ保存手段によって保存されるパラメータを変更する判定手段とを有し、上記代数展開手段が、上記判定手段によってハードウェア量が妥当でないと判断された場合に、パラメータ保存手段に保存されるパラメータに基づき再度演算２値化セットを作成するとよい。これにより、入力多項式を複数の演算の組合せに展開するとともに、演算２値化セットに含まれる２値多項式に現れる最大変数数や代数展開の度合いを変更することにより、必要となるハードウェア量を調整することができる。その結果、当該計算装置は、使用可能なハードウェア資源に適した計算環境を提供することができる。
【００１１】
上記記憶手段が、多入力・多出力論理素子の使用を前提とする演算２値化セットを保持するとよい。これにより、代数展開度合いを大きくし、計算の段数を減少することができる。その結果、当該計算装置は、計算の処理速度をさらに高速化することができる。
【００１２】
上記入力多項式と演算２値化セットとの対応を保持する演算２値化セットキャッシュ部を有するとよい。これにより、一度行われた計算の処理速度をさらに向上することができる。
【００１３】
上記演算２値化セットに含まれる２値ベクトル値関数及び変数間の対応情報と、結線論理との対応を保持する結線論理キャッシュ部を有するとよい。これにより、一度行われた計算の処理速度をさらに向上することができる。
【００１４】
入力信号値及び／又は出力信号値が０又は１である割合やある組合せをとる頻度を記録する記録部を有するとよい。これにより、記録されたデータを当該計算装置の内外で使用することができる。また、これらのデータに基づいて結線論理を作成することにより、結線論理のより効率的な再設計を行うことができる。
【００１５】
上記記憶手段が新たな演算２値化セットを書き込み可能に構成されるとよい。これにより、計算を組み直す基本演算を変更し、所望の計算を高速に処理することができる。
【００１６】
従って、多項式を用いて複数の入力数値を演算する演算方法において、複数の入力数値を読み込む数値読込ステップと、上記入力数値を対象とする基本演算の種類を読み込む演算種読込ステップと、上記複数の入力数値及び基本演算の種類の各々を２値からなる複数のベクトルとして受け取ったうえ、別途与えられる演算２値化セットから構成される結線論理を使用して複数の入力数値の演算を処理する演算処理ステップと、演算結果を出力する出力ステップとを有することを特徴とする計算方法は、計算を結線論理が表す複雑な演算に組み直し、それらを用いて演算処理するので、計算式における演算の繰返し回数を削減することができる。その結果、当該計算方法は、計算時間を効果的に削減することができる。
【００１７】
上記数値読込ステップに加えて、入力多項式を読み込む多項式読込ステップを有し、さらに、この入力多項式を、所定の多項式２値ベクトルを用いて代数展開して演算２値化セットを作成する代数展開ステップと、演算２値化セットに含まれる２値多項式に現れる最大変数数及び上記代数展開ステップによる代数展開度合いを保存するパラメータ保存ステップと、上記入力多項式を代数展開して得られた多項式２値ベクトルを実装する結線論理に必要とされるハードウェア量が妥当であるかを判定し、妥当でないと判断した場合に、パラメータ保存ステップによって保存されるパラメータを変更する判定ステップとを有し、上記代数展開ステップが、上記判定ステップによってハードウェア量が妥当でないと判断された場合に、パラメータ保存ステップによって保存されるパラメータに基づき再度演算２値化セットを作成するとよい。これにより、入力多項式を複数の基本演算の組合せに展開するとともに、演算２値化セットに含まれる２値多項式に現れる最大変数数や代数展開の度合いを変更することにより、必要となるハードウェア量を調整したうえで計算することができる。その結果、当該計算方法は、使用可能なハードウェア資源に適した計算を実現することができる。
【００１８】
本明細書において、「多項式」とは、定数、変数が、和、差、積で組み合わせて構成される計算式のことをいい、「２値多項式」とは、現われる定数、変数の定義域が２値である多項式のことをいう。また、定数、変数の積から構成される多項式の構成要素を「項」といい、例えば、２、Ｘ＊Ｙ、４＊Ｘ＊Ｘ＊Ｙ等によって表される。この「項」は、「係数を表す部分」、「変数を表す部分」、「変数の次数を表す部分」という３つの部分として符号化することができる。「変数を表す部分」及び「変数の次数を表す部分」は、項に現われる変数の数に応じて長くなるが、項に現われる変数の数及びその次数の最大値を所与・固定とすれば、符号化することができる。「積和形多項式」とは、項が和、差で組み合わされて構成される多項式のことであり、例えば、４＊Ｘ＊Ｘ＊Ｙ＋Ｘ＊Ｙ−２等で示される。「代数和」は、二つの多項式を足して一つの多項式を作成する演算であり、「代数積」は、二つの多項式を掛けて一つの多項式を作成する演算である。
【００１９】
「２値ベクトル値関数」とは、２値多項式の集まりのことをいう。「基本演算」とは、和・差・積・除・剰余算、条件分岐、代数和、代数積のいずれか又はそれらの組み合わせによって表される演算をいう。「既展開多項式２値ベクトル」とは、項を構成する変数の数、項数、定数の定義域などが限られた２分木構造を有さない多項式を符号化する２値ベクトルをいい、「未展開多項式２値ベクトル」とは、未展開多項式２値ベクトルあるいは既展開多項式２値ベクトルから２分木構造を有するよう再帰的に構成される２値ベクトルをいう。また、かかる「既展開多項式２値ベクトル」及び「未展開多項式２値ベクトル」を総称して「多項式２値ベクトル」という。「入力多項式」は、当該計算装置のためのコンパイラにより、当該計算装置で処理可能と判定されたプログラムソースに含まれる多項式から作成された未展開多項式２値ベクトルである。
【００２０】
「演算２値化セット」とは、一つの基本演算を実装するために必要な情報であって、一又は複数の２値ベクトル値関数を構成する２値多項式及びこの２値多項式に係る入出力信号線並びに他の２値多項式における変数との対応からなる情報のことをいう。演算２値化セットにおける一つの２値ベクトル値関数は、複数の多項式２値ベクトルとして符号化される。同じ基本演算であっても、演算２値化セットに含まれる２値多項式に現れる最大変数数が異なると、演算２値化セットは通常異なるものになる。「結線論理」とは、電子回路の入力信号線と出力信号線との接続を規定する論理関数の集まりのことをいう。ある結線論理は、ある２値ベクトル値関数及び変数間の対応情報から構成される。
【発明の効果】
【００２１】
以上説明したように、本発明の２値ベクトル及び多項式を用いる計算装置及び計算方法は、２値ベクトル値関数及び変数間の対応情報に基づいて構成される結線論理を使用し、計算を複雑な演算に組み直すことで計算式における演算の繰返し回数を削減し、ひいては計算の高速化を実現することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態に係る計算装置の構成を示す概略ブロック図である。
【図２】図１の計算装置を備える計算システムを示す概略ブロック図である。
【図３】図１の計算装置による計算処理方法を示すフローチャートである。
【図４】図１の計算装置とは異なる形態に係る計算装置の構成を示す概略ブロック図である。
【図５】図４の計算装置で行われる代数展開の流れを示す概略図である。
【図６】図４の計算装置による計算処理方法を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、適宜図面を参照しつつ本発明の実施の形態を詳説する。
【００２４】
図１の計算装置１は、数値読込部２と、演算種読込部３と、記憶部４と、演算処理部５と、出力部６と、記録部７とを有している。
【００２５】
計算装置１は、特に限定されないが、一般的には、図２に示すようにＣＰＵを補佐するコプロセッサとして用いられる。計算装置１がコプロセッサとして用いられる場合、計算装置１が演算処理を行うのと並行して、ＣＰＵは別の処理を行うことができ、全体としての効率化を図ることができる。
【００２６】
数値読込部２は、ＣＰＵ等の計算機から入力される複数の入力数値の読み込みを行う。数値読込部２は、計算式に現れる一連の数値を２値ベクトルとして受けとる。ここで、２値ベクトルの表現としては、たとえば符号付き２進数表現や浮動小数点表現を用いることができる。数値読込部２は、複数の入力数値を演算処理部５に送る。また、数値読込部２は、複数の入力数値を、演算処理部５とともに、記録部７にも送る。
【００２７】
演算種読込部３は、数値読込部２から入力される入力数値を対象とする基本演算の種類を読み込む。演算種読込部３は、かかる基本演算の種類を２値ベクトルとして読み込み、演算処理部５に送る。演算処理部５は、この情報に基づいて、記憶部４から演算２値化セットを選択する。
【００２８】
記憶部４は、複数の演算２値化セットを保持する。一つの演算２値化セットが、計算式に現れる一つの基本演算に対応する。すなわち、ある１つの基本演算は、基本的には、その結果として得られる２値ベクトルの各ビット値を計算する２値多項式を符号化する２値ベクトルの集合として符号化される。これらの２値多項式から、１つの２値ベクトル値関数が構成される。但し、演算２値化セットは、基本演算が多段、たとえば和算と積算の組み合わせなどとなる場合、複数の２値ベクトル値関数を有することになる。２値ベクトル値関数を構成する２値多項式の符号化の形式としては、たとえば、段落００４１及び段落０１９４以下に述べるような積和形多項式表現を用いることができる。２値多項式と変数との対応は、２値多項式の数の上限、変数の数の上限を所与・固定とすれば、各変数へ一意に番号を振ることで、２値ベクトルとして容易に符号化できる。記憶部４は、ＲＯＭ、ＲＡＭ等により計算装置１と一体的に構成されていてもよく、またＣＤ−Ｒ等の電子媒体として別体的に構成されてもよい。記憶部４がＲＡＭやＣＤ−ＲＷなどの書き込み可能な形で構成されている場合は、演算２値化セットを変更することができる。
【００２９】
演算処理部５は、記憶部４に保持される演算２値化セットから構成される結線論理を用いて、数値読込部２及び演算種読込部３から送られる２値ベクトルにより指定される基本演算を処理する。演算処理部５は、演算２値化セットから一又は複数の結線論理を構成する一又は複数の結線ユニット８と、結線論理を実装する一又は複数の実装ユニット９と、２値ベクトル値関数及び変数間の対応情報と結線論理との対応をキャッシュする結線論理キャッシュ部１０と、途中の計算結果を保持するレジスタ（図示せず）とを有している。
【００３０】
結線ユニット８は、演算２値化セットに含まれる２値ベクトル値関数及び変数間の対応情報から結線論理を作成し、実装ユニット９へ送る。結線ユニット８は、入力対応線、２値ベクトル値関数入力線、出力対応線、出力信号線を有している。まず、演算２値化セットに含まれる２値ベクトル値関数が２値ベクトル値関数入力線から与えられ、２値ベクトル値関数に含まれる変数と入力変数との対応が入力対応線から与えられ、２値多項式と出力変数との対応が出力対応線から与えられる。これらに基づき、結線ユニット８は、入力信号線と２値ベクトル値関数に現れる変数とを対応させ、２値多項式と出力信号線とを対応させ、２値ベクトル値関数を変換して結線論理を作成する。これが出力信号線を通して実装ユニット９及び結線論理キャッシュ部１０へ送られる。
【００３１】
実装ユニット９は、一つの結線論理が表す電子回路として用いられる。実装ユニット９は、結線論理を用いて入力信号線と出力信号線とを接続させる。実装ユニット９の入力信号線には、数値入力部２から送られる入力数値又は他の実装ユニット９からの出力を符号化した２値ベクトルが与えられる。実装ユニット９の出力信号線から得られる信号は、他の実装ユニット９又は出力部６へ送られる。演算処理部５に複数の結線ユニット８及び実装ユニット９が含まれており、かつ演算２値化セットに含まれる２値ベクトル値関数が複数である場合、各２値ベクトル値関数が個別の結線ユニット８によって結線論理へ変換され、それぞれの結線論理は個別の実装ユニット９により電子回路として実装される。入力数値の各ビットと入力信号線との対応、ある実装ユニット９の出力信号線と他の実装ユニット９の入力信号線又は出力信号線との対応、並びに出力信号線と出力数値の各ビットとの対応は、演算２値化セットから与えられる。演算処理部５は、演算２値化セットに含まれれる変数間の対応情報、及びレジスタを用いて、これら複数の実装ユニット９間の出力・入力を連絡する。
【００３２】
結線論理キャッシュ部１０は、演算２値化セットに含まれる一つの２値ベクトル値関数及び変数間の対応情報と、結線論理との対応を保持する。当該計算装置１は、結線ユニット８によって結線論理を作成する前にこのデータの有無を調べ、結線論理キャッシュ部１０がこのデータを保持していた場合はこのデータを使用する。
【００３３】
演算処理部５は、基本演算に現れる入力変数を符号化するビット数の合計値が２値多項式に現れる最大変数数よりも多く、基本演算がブロック化される場合、演算２値化セットに含まれる２値ベクトル値関数が単数であっても、１つの結線論理を複数の異なる実装ユニット９を用いて別個に実装・利用する。例えば、基本演算が二つの数値の加算であり、２値多項式に現れる最大変数数が加算の対象である一つの入力変数を符号化するビット数の３倍であるとき、入力変数のビット群を上位と下位とに分け、下位ビット群を計算するための実装ユニット９及びその結果を桁上がり入力とし上位ビット群を計算するための実装ユニット９を用いることができる。
【００３４】
出力部６は、演算結果を出力する。出力部６は、演算処理部５から送られる信号を、２値ベクトルとして、計算機やＣＰＵに送る。
【００３５】
記録部７は、電子回路からなり、数値読込部２及び演算種読込部３から演算処理部５への信号線並びに演算処理部５から出力部６への信号線、又はこれらの組み合わせが０、１となる割合やそれらがある組合せをとる頻度のデータを計算・記録する。記録部７で記録されたデータは、計算装置１の内外で使用することができる。
【００３６】
次に、図３を参照して、計算装置１の動作手順について説明する。
【００３７】
なお、計算装置１の使用に際しては、計算装置１で処理可能な計算を識別できるコンパイラが用いられることが好ましい。かかるコンパイラは、通常は、協調動作するＣＰＵのためのコンパイラと同様に振舞う。このコンパイラは、計算装置１で処理可能な計算式を識別した場合に、これらの開始位置と終了位置に特殊なマークをつける。この開始マークは、終了マークの位置を示すようにする。また、このコンパイラは、必要によっては、計算式に現れる変数とその具体値との対応を計算し、計算式や変数を適宜２値ベクトルへ変換し、それらのデータをコンパイラにより作成されるファイル内に記録する。ＣＰＵは、メモリからデータを順に読み込んでいき、この開始マークを見つけた場合、計算装置１へのデータの読み込みを指示する。
【００３８】
数値読込ステップ（ＳＴＰ１）は、複数の入力数値を読み込むステップである。これらの複数の入力数値は、数値読込部２によって読み込まれ、２値ベクトルとして演算処理部５に送られる。また、数値読込部２によって読み込まれた複数の入力数値は、演算処理部５に送られるとともに、記録部７へも送られる。
【００３９】
演算種読込ステップ（ＳＴＰ２）は、入力数値を対象とする基本演算の種類を読み込むステップである。この情報は演算種読込部３によって読み込まれ、２値ベクトルとして演算処理部５及び記録部７へ送られる。ＳＴＰ２では、ＳＴＰ１と並行して、それらの数値を対象とする基本演算の種類を読み込む。この情報は、演算処理ステップ（ＳＴＰ３）で利用される。
【００４０】
演算処理ステップ（ＳＴＰ３）は、記憶部４に保持される演算２値化セットから構成される結線論理を使用して複数の入力数値の基本演算を処理するステップである。具体的には、ＳＴＰ３は、演算処理部５が、記憶部４が保持している演算２値化セットの一つを、複数の入力数値及び演算種読込部３から指定される基本演算の種類に応じて選択することによって行われる。選択された演算２値化セットに含まれる２値多項式は、定数、変数が和、差、積により組み合わされることで構成されている。これらの式を、１−ＸをＮＯＴ  Ｘと変換したうえで、Ｘ＊ＹをＸ  ＡＮＤ  Ｙ、Ｘ＋ＹをＸ  ＯＲ  Ｙと変換することで、論理関数とすることができる。ここで、Ｘ、Ｙは、式に現れる変数を表す。論理関数に現れる変数を入力数値の２値ベクトルのあるビットと対応させ、かつ各論理関数を出力数値のあるビット又は他の論理関数に現れる変数と対応させることで、基本演算の結線論理を構成することができる。これらの対応は、記憶部４又は当該計算装置１のためのコンパイラが生成した情報から、演算２値化セットとして与えられる。２値多項式が未展開多項式２値ベクトルとして符号化されている場合は、それを構成する既展開多項式２値ベクトルごとに結線論理を作成し、その結線論理からの出力をレジスタに保持し、ほかの結線論理への入力とすることで、全体をブロック化して計算することができる。
【００４１】
基本演算を２値多項式の集まり（２値ベクトル値関数）として定式化する方法について説明する。
【００４２】
値域が有限である離散計算を考える。定義域が有限である任意の離散値からなる入力数値をａ、ｂの２つとし、出力数値をｚとする。説明容易のため、ａ、ｂ、ｚは全て整数であり、正又は負であることを表す符号ビットを有する符号付き２進数として符号化されているとする。また、ａ、ｂは、各々、合計３ビットの正又は負の符号付き２進数であるとする。なお、計算対象の数値が浮動小数点型実数であるときは、仮数部・指数部にわけ、仮数部・指数部ごとに数値の桁を揃えることで、符号付き２進数同士の演算と同様に扱うことができる。
【００４３】
ａ、ｂは、各々、正又は負を表す符号ビットを除いたビット数が２であるから、定義域は［−３、３］である。ｚの定義域は、演算が和の場合は［−６、６］、差の場合は［−６、６］、積の場合は［−９、９］、除の場合は［−３、３］、剰余の場合は［−２、２］である。
【００４４】
入力数値ａ、ｂは、１つの表現方法として以下のように符号化することができる。
【００４５】
定義域が［−２Ｎ＋１、２Ｎ−１］である整数ａ（又はｂ）が値ｎをとるか否かをａ（ｂ）［ｎ］∈｛０、１｝（ｎ＝−２Ｎ＋１，．．．，２Ｎ−１）と表し、この符号化を１進ベクトル符号化と呼ぶ。例えば、１０進数においてａ＝２であれば、ａ［２］＝１、ａ［ｎ］＝０（ｎ≠２）である。
【００４６】
また、整数ａ（又はｂ）をＮ＋１ビット目が符号を表す長さＮ＋１の２値ベクトル［ａＮ（ｂＮ），ａＮ−１（ｂＮ−１），．．．，ａ１（ｂ１），ａ０（ｂ０）］として表し、この符号化を２進ベクトル符号化と呼ぶ。ここで、ａ（又はｂ）が負値のとき、ａＮ（ｂＮ）＝１であり、ａ（又はｂ）が正値のとき、ａＮ（ｂＮ）＝０であり、ａ（又はｂ）が０のとき、ａＮ（ｂＮ）は０又は１のどちらでもよいものとする。例えば、１０進数において、ａ＝３であれば、ａ１＝１、ａ０＝１、ａｍ＝０（ｍ≠０，１）である。
【００４７】
まず、加算の定式化について説明する。以下、ａ、ｂをそれぞれ横軸、縦軸と考えたときの、それらの組み合わせが第一象限の場合、第二象限の場合、第三象限の場合及び第四象限の場合に分けて説明する。
【００４８】
（１）ａ、ｂの組み合わせが第一象限の場合
演算結果が０となる場合（ｚ［０］＝１となる場合）を列挙すると表１のようになる。このような列挙は、計算機を用いてプログラムを作成するなどして行うことができる。
【００４９】
【表１】
2012032967.tif 000003
【００５０】
表１と同様に、演算結果が、１、２、３、４、５、６となる場合を列挙すると、それぞれ表２、表３、表４、表５、表６、表７となる。
【００５１】
【表２】
2012032967.tif 000004
【００５２】
【表３】
2012032967.tif 000005
【００５３】
【表４】
2012032967.tif 000006
【００５４】
【表５】
2012032967.tif 000007
【００５５】
【表６】
2012032967.tif 000008
【００５６】
【表７】
2012032967.tif 000009
【００５７】
表８に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここで、全ての象限を考慮したｚの定義域は［−６、６］であるから、ｚを２進ベクトル符号化した場合の合計ビット数は４で十分である。ここでは、第一象限のみを考慮しているため、ａ２＝０、ｂ２＝０、ｚ３＝０として問題はない。なお、表８の対応は、ｚだけでなくａ、ｂについても成立する。
【００５８】
【表８】
2012032967.tif 000010
【００５９】
表１から表８より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（１）のようになる。
【００６０】
【数１】
2012032967.tif 000011
【００６１】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（２）のようになる。
【００６２】
【数２】
2012032967.tif 000012
【００６３】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ２の２値多項式は、次式（３）のようになる。
【００６４】
【数３】
2012032967.tif 000013
【００６５】
（２）ａ、ｂの組み合わせが第二象限の場合
演算結果が−３となる場合（ｚ［−３］＝１となる場合）を列挙すると表９のようになる。
【００６６】
【表９】
2012032967.tif 000014
【００６７】
表９と同様に、演算結果が、−２、−１、０、１、２、３となる場合を列挙すると、それぞれ表１０、表１１、表１２、表１３、表１４、表１５となる。
【００６８】
【表１０】
2012032967.tif 000015
【００６９】
【表１１】
2012032967.tif 000016
【００７０】
【表１２】
2012032967.tif 000017
【００７１】
【表１３】
2012032967.tif 000018
【００７２】
【表１４】
2012032967.tif 000019
【００７３】
【表１５】
2012032967.tif 000020
【００７４】
表１６に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここでは、第二象限のみを考慮しているため、ａ２＝１、ｂ２＝０として問題はない。なお、表１６の対応は、ｚだけでなくａ、ｂについても成立する。
【００７５】
【表１６】
2012032967.tif 000021
【００７６】
表９から表１６より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（４）のようになる。
【００７７】
【数４】
2012032967.tif 000022
【００７８】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（５）のようになる。
【００７９】
【数５】
2012032967.tif 000023
【００８０】
表１６より、ｚ２＝０である。
【００８１】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ３の２値多項式は、次式（６）のようになる。
【００８２】
【数６】
2012032967.tif 000024
【００８３】
（３）ａ、ｂの組み合わせが第三象限の場合
第三象限では、ａ’＝−ａ、ｂ’＝−ｂを導入することにより、ａ＋ｂ＝−ａ’＋（−ｂ’）＝−（ａ’＋ｂ’）（ａ’≧０，ｂ’≧０）とみなすことができ、ａ２を１−ａ２に、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ３＝１である。
【００８４】
（４）ａ、ｂの組み合わせが第四象限の場合
第四象限では、ａ’＝−ａ、ｂ’＝−ｂを導入することで、ａ＋ｂ＝−ａ’＋（−ｂ’）＝−（ａ’＋ｂ’）（ａ’≦０，ｂ’≧０）とみなすことができ、ａ２を１−ａ２に、ｂ２を１−ｂ２に入れ替えた上で第二象限の結果を利用することができる。但し、ｚ３の値は、「１−第二象限の場合のｚ３の計算式」となる。
【００８５】
以上より、第ｋ象限のｚｍ（ｍ＝０，１，２，３）の加算をｆｍｋａ（・，・）とした場合、象限の場合分けを内包することにより、加算によるｚｍの２値多項式を、次式（７）のように定式化することができる。
【００８６】
【数７】
2012032967.tif 000025
【００８７】
次に、減算の定式化について説明する。
【００８８】
（１）ａ、ｂの組み合わせが第一象限の場合
第一象限では、ｂ’＝−ｂを導入することで、ａ−ｂ＝ａ＋ｂ’（ａ≧０，ｂ’≦０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第四象限における加算の結果を利用することができる。
【００８９】
（２）ａ、ｂの組み合わせが第二象限の場合
第二象限では、ｂ’＝−ｂを導入することで、ａ−ｂ＝ａ＋ｂ’（ａ≦０，ｂ’≦０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第三象限における加算の結果を利用することができる。
【００９０】
（３）ａ、ｂの組み合わせが第三象限の場合
第三象限では、ｂ’＝−ｂを導入することで、ａ−ｂ＝ａ＋ｂ’（ａ≦０，ｂ’≧０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第二象限における加算の結果を利用することができる。
【００９１】
（４）ａ、ｂの組み合わせが第四象限の場合
第四象限では、ｂ’＝−ｂを導入することで、ａ−ｂ＝ａ＋ｂ’（ａ≧０，ｂ’≧０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第一象限における加算の結果を利用することができる。
【００９２】
以上より、第ｋ象限のｚｍ（ｍ＝０，１，２，３）の減算をｆｍｋｓ（・，・）とした場合、象限の場合分けを内包することにより、減算によるｚｍの２値多項式を、次式（８）のように定式化することができる。
【００９３】
【数８】
2012032967.tif 000026
【００９４】
次に、乗算の定式化について説明する。
【００９５】
（１）ａ、ｂの組み合わせが第一象限の場合
演算結果が０となる場合（ｚ［０］＝１となる場合）を列挙すると表１７のようになる。
【００９６】
【表１７】
2012032967.tif 000027
【００９７】
表１７と同様に、演算結果が、１、２、３、４、６、９となる場合を列挙すると、それぞれ表１８、表１９、表２０、表２１、表２２、表２３となる。なお、演算結果が、５、７、８となる場合は存在しない。
【００９８】
【表１８】
2012032967.tif 000028
【００９９】
【表１９】
2012032967.tif 000029
【０１００】
【表２０】
2012032967.tif 000030
【０１０１】
【表２１】
2012032967.tif 000031
【０１０２】
【表２２】
2012032967.tif 000032
【０１０３】
【表２３】
2012032967.tif 000033
【０１０４】
表２４に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここで、全ての象限を考慮したｚの定義域は［−９、９］であるから、ｚを２進ベクトル符号化した場合の合計ビット数は５で十分である。ここでは第一象限のみを考慮しているため、ａ２＝０、ｂ２＝０、ｚ４＝０として問題ない。なお、表２４の対応は、ｚだけでなくａ、ｂについても成立する。
【０１０５】
【表２４】
2012032967.tif 000034
【０１０６】
表１７から表２４より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（９）のようになる。
【０１０７】
【数９】
2012032967.tif 000035
【０１０８】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（１０）のようになる。
【０１０９】
【数１０】
2012032967.tif 000036
【０１１０】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ２の２値多項式は、次式（１１）のようになる。
【０１１１】
【数１１】
2012032967.tif 000037
【０１１２】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ３の２値多項式は、次式（１２）のようになる。
【０１１３】
【数１２】
2012032967.tif 000038
【０１１４】
（２）ａ、ｂの組み合わせが第二象限の場合
第二象限では、ａ’＝−ａを導入することで、ａｂ＝−ａ’ｂ（ａ’≧０，ｂ≧０）とみなすことができ、ａ２を１−ａ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ４＝１である。
【０１１５】
（３）ａ、ｂの組み合わせが第三象限の場合
第三象限では、ａ’＝−ａ、ｂ’＝−ｂを導入することで、ａｂ＝−ａ’（−ｂ’）＝ａ’ｂ’（ａ’≧０，ｂ’≧０）とみなすことができ、ａ２を１−ａ２に、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。
【０１１６】
（４）ａ、ｂの組み合わせが第四象限の場合
第四象限では、ｂ’＝−ｂを代入することで、ａｂ＝ａ（−ｂ’）＝−ａｂ’（ａ≧０，ｂ’≧０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ４＝１である。
【０１１７】
以上より、第ｋ象限のｚｍ（ｍ＝０，１，２，３）の乗算をｆｍｋｍ（・，・）とした場合、象限の場合分けを内包することにより、乗算によるｚｍの２値多項式を、次式（１３）のように定式化することができる。
【０１１８】
【数１３】
2012032967.tif 000039
【０１１９】
続いて、除算の定式化について説明する。なお、除算の定式化では、演算対象の数値が分数表現のように複数ではなく、単一の数値で表される場合、複数の入力数値の定義域の大きさが、プログラムを用いて計算機上で列挙可能な範囲に限られる。これに対し、加算・乗算は、一般的に桁上がり入力のある全加算器を用いる場合のようにブロック化することで、定義域が広くすべての演算結果を列挙することが現実的でない場合でも、定式化することができる。但し、除算であっても、数値が分数として二つの数値によって表され、分母・分子をそれぞれ整数として扱うことができるならば、１つの除算を二つの乗算に変換できるため、ブロック化によって定式化可能な規模を向上させることができる。
【０１２０】
（１）ａ、ｂの組み合わせが第一象限の場合
演算結果が０となる場合（ｚ［０］＝１となる場合）を列挙すると表２５のようになる。ここで説明する演算は、小数をその値よりも０から離れない値のうちもっとも０から遠い整数とする関数を「ｆｌｏｏｒ」としたとき、「ｆｌｏｏｒ（ａ÷ｂ）」と表される。小数をその値よりも０に近づかない値のうちもっとも０から近い整数とする関数を「ｃｅｉｌ」としたとき、以下に説明するものと同様の手続きにより、「ｃｅｉｌ（ａ÷ｂ）」も表すことができる。ただし、ｂ≠０を前提とする。
【０１２１】
【表２５】
2012032967.tif 000040
【０１２２】
表２５と同様に、演算結果が、１、２、３となる場合を列挙すると、それぞれ表２６、表２７、表２８となる。
【０１２３】
【表２６】
2012032967.tif 000041
【０１２４】
【表２７】
2012032967.tif 000042
【０１２５】
【表２８】
2012032967.tif 000043
【０１２６】
表２９に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここで、全ての象限を考慮したｚの定義域は［−３、３］であるから、ｚを２進ベクトル符号化した場合の合計ビット数は３で十分である。ここでは第一象限のみを考慮しているため、ａ２＝０、ｂ２＝０、ｚ２＝０として問題ない。なお、表２９の対応は、ｚだけでなくａ、ｂについても成立する。
【０１２７】
【表２９】
2012032967.tif 000044
【０１２８】
表２５から表２９より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（１４）のようになる。
【０１２９】
【数１４】
2012032967.tif 000045
【０１３０】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（１５）のようになる。
【０１３１】
【数１５】
2012032967.tif 000046
【０１３２】
（２）ａ、ｂの組み合わせが第二象限の場合
第二象限では、ａ’＝−ａを導入することで、ａ／ｂ＝−ａ’／ｂ（ａ’≧０，ｂ≧０）とみなすことができ、ａ２を１−ａ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ２＝１である。
【０１３３】
（３）ａ、ｂの組み合わせが第三象限の場合
第三象限では、ａ’＝−ａ、ｂ’＝−ｂを導入することで、ａ／ｂ＝ａ’／ｂ’（ａ’≧０，ｂ’≧０）とみなすことができ、ａ２を１−ａ２に、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。
【０１３４】
（４）ａ、ｂの組み合わせが第四象限の場合
第四象限では、ｂ’＝−ｂを導入することで、ａ／ｂ＝−ａ／ｂ’（ａ≧０，ｂ’≧０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ２＝１である。
【０１３５】
以上より、第ｋ象限のｚｍ（ｍ＝０，１，２）の除算をｆｍｋｄ（・，・）とした場合、象限の場合分けを内包することにより、除算によるｚｍの２値多項式を、次式（１６）のように定式化することができる。
【０１３６】
【数１６】
2012032967.tif 000047
【０１３７】
次に、剰余算の定式化について説明する。なお、剰余算の定式化については、複数の入力数値の定義域の大きさが、プログラムを用いて計算機上で列挙可能な範囲に限られる。ここで説明する演算は、「ａｍｏｄｂ」と表すことができる。ただし、ｂ≠０を前提とする。また、演算結果の符号はａと同じとする。たとえば、−３ｍｏｄ２、−３ｍｏｄ（−２）の結果は−１であり、３ｍｏｄ２、３ｍｏｄ（−２）の結果は１である。
【０１３８】
（１）ａ、ｂの組み合わせが第一象限の場合
演算結果が０となる場合（ｚ［０］＝１となる場合）を列挙すると表３０のようになる。
【０１３９】
【表３０】
2012032967.tif 000048
【０１４０】
表３０と同様に、演算結果が、１、２となる場合を列挙すると、それぞれ表３１、表３２となる。
【０１４１】
【表３１】
2012032967.tif 000049
【０１４２】
【表３２】
2012032967.tif 000050
【０１４３】
表３３に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここで、全ての象限を考慮したｚの定義域は［−２、２］であるから、ｚを２進ベクトル符号化した場合の合計ビット数は３で十分である。ここでは第一象限のみを考慮しているため、ａ２＝０、ｂ２＝０、ｚ２＝０として問題はない。なお、表３３の対応はｚだけでなくａ、ｂについても成立する。
【０１４４】
【表３３】
2012032967.tif 000051
【０１４５】
表３０から表３３より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（１７）のようになる。
【０１４６】
【数１７】
2012032967.tif 000052
【０１４７】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（１８）のようになる。
【０１４８】
【数１８】
2012032967.tif 000053
【０１４９】
（２）ａ、ｂの組み合わせが第二象限の場合
計算結果が−２となる場合（ｚ［−２］＝１となる場合）を列挙すると表３４のようになる。
【０１５０】
【表３４】
2012032967.tif 000054
【０１５１】
表３４と同様に、計算結果が、−１、０となる場合を列挙すると、それぞれ表３５、表３６となる。
【０１５２】
【表３５】
2012032967.tif 000055
【０１５３】
【表３６】
2012032967.tif 000056
【０１５４】
表３７に、１進ベクトル符号化した場合の変数が１となる場合と、２進ベクトル符号化した場合の変数が１となるとなる場合の組み合わせを列挙する。ここでは、第二象限のみを考慮しているため、ａ２＝１、ｂ２＝０、ｚ２＝１として問題はない。なお、表３７の対応は、ｚだけでなくａ、ｂについても成立する。
【０１５５】
【表３７】
2012032967.tif 000057
【０１５６】
表３４から表３７より、ｚを２進ベクトル符号化した場合の変数ｚ０の２値多項式は、次式（１９）のようになる。
【０１５７】
【数１９】
2012032967.tif 000058
【０１５８】
同様に、ｚを２進ベクトル符号化した場合の変数ｚ１の２値多項式は、次式（２０）のようになる。
【０１５９】
【数２０】
2012032967.tif 000059
【０１６０】
（３）ａ、ｂの組み合わせが第三象限の場合
第三象限では、ａ’＝−ａ、ｂ’＝−ｂを導入することにより、ａｍｏｄｂ＝−（ａ’ｍｏｄｂ’）（ａ’≧０，ｂ’≧０）とみなすことができ、ａ２を１−ａ２に、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。ただし、ｚ２＝１である。
【０１６１】
（４）ａ、ｂの組み合わせが第四象限の場合
第四象限では、ｂ’＝−ｂを導入することにより、ａｍｏｄｂ＝ａｍｏｄｂ’（ｂ’≧０）とみなすことができ、ｂ２を１−ｂ２に入れ替えた上で第一象限の結果を利用することができる。
【０１６２】
以上より、第ｋ象限のｚｍ（ｍ＝０，１，２）の剰余算をｆｍｋｒ（・，・）とした場合、象限の場合分けを内包することにより、剰余算によるｚｍの２値多項式を、次式（２１）のように定式化することができる。
【０１６３】
【数２１】
2012032967.tif 000060
【０１６４】
なお、かかる定式化は、上述の加・減・乗・除・剰余に限られず、例えば、平方根、階乗、対数等所望の演算についても行うことができる。また、少なくとも加算・減算・乗算については、桁上がり入力を考慮したものへと拡張することができる。
【０１６５】
出力ステップ（ＳＴＰ４）は、ＳＴＰ３によって行われる演算結果を出力するステップである。ＳＴＰ４は、出力部６により、演算処理部５から送られる信号を、２値ベクトルとして出力する。
【０１６６】
当該計算装置１は、演算２値化セットから構成される結線論理を使用して計算を複雑な演算に組み直したうえで演算処理を行うので、計算式における演算の繰返し回数を削減することができる。その結果、当該計算装置１は、計算時間を効果的に削減することができる。
【０１６７】
当該計算装置１は、記憶部４が多入力・多出力論理素子の使用を前提とする演算２値化セットを保持することにより、計算の処理速度をさらに高速化することができる。なお、かかる多入力・多出力論理素子については、特開平０３−２９１０１４号公報等を参照することができる。また、多入力・多出力論理素子を２入力１出力の論理素子から構成される電子回路で代用することもできる。
【０１６８】
当該計算装置１は、結線論理キャッシュ部１０が保持する情報を用いることにより、結線論理作成の手間を省き、以前に実行された計算の処理速度をさらに高速化することができる。
【０１６９】
図４の計算装置１１は、数値読込部２と、出力部６と、多項式読込部１２と、展開部１３と、パラメータ部１４と、判定部１５と、演算２値化セットキャッシュ部１６と、記憶部１７と、記録部１８と、演算処理部１９とを有している。
【０１７０】
以下の説明において、図１の計算装置１と同様の構成については同一番号を付して適宜説明を省略する。
【０１７１】
多項式読込部１２は、２値ベクトルとして符号化された入力多項式を読み込む。多項式読込部１２は、かかる２値ベクトルを、機械語ではなく、ＬＩＳＰにおけるＳ式又は逆ポーランド記法等の２分木構造を保って符号化された未展開多項式２値ベクトルとして読み込み、展開部１３や演算２値化セットキャッシュ部１６に送る。このように、多項式読込部１２は、２分木構造を保持した状態で基本演算を読み込む必要があるため、計算装置１１を用いるためには、計算装置１１で処理可能な計算を識別できるコンパイラが必要となる。
【０１７２】
展開部１３は、計算装置１１が行う計算を、パラメータ部１４が保持する情報に従いつつ、できるだけ段数の小さな未展開多項式２値ベクトル、又はできるだけ少数の次数が低い変数から構成される項を含む既展開多項式２値ベクトルとなるよう代数展開して演算２値化セットを作成する。展開部１３は、代数展開を表す演算２値化セットを結線論理へ変換するための結線ユニットと、その結線論理を実装する実装ユニットと、計算の途中結果を保持するレジスタと、２分木構造を保って２値ベクトルを保持するためのスタック用レジスタと、処理対象の２値ベクトルを保持するためのオペランド用レジスタと、結線論理キャッシュ部とを有している（ともに図示せず）。展開部１３は、多項式読込部１２から送られる入力多項式を受け取る。入力数値は、それぞれ、パラメータ部１４に保持されているビット数に従い、２値ベクトルに変換される。入力多項式は、２分木構造を保つ２値ベクトルとして与えられる。例えば、「（ａ＋ｂ）＊ｃ」という計算式は、逆ポーランド記法で「ａｂ＋ｃ＊」と表され、＋を１０１、＊を１１１、ａ、ｂ、ｃをそれぞれ００１０１  ０００００  ０００００  ０００００  ０００００  ０００００、０１００１  ０００００  ０００００  ０００００  ０００００  ０００００、０１１０１  ０００００  ０００００  ０００００  ０００００  ０００００と符号化することで、「００１０１  ０００００  ０００００  ０００００  ０００００  ０００００  ０１００１  ０００００  ０００００  ０００００  ０００００  ０００００  １０１  ０１１０１  ０００００  ０００００  ０００００  ０００００  ０００００  １１１」という２値ベクトルとして符号化することができる。展開部１３は、まず、２値ベクトルとして与えられた入力多項式を、代数展開多項式を実装する実装ユニットを用いて、所定の多項式２値ベクトルを用いて代数展開する。この結果、代数展開の度合いが十分大きければ、一つの積和形多項式を表す一つの２値ベクトルが得られる。上の例では、まず「ａ＋ｂ」という多項式を表す「００１０１  ０００００  ０００００  ０１００１  ０００００  ０００００」という多項式が、続く展開で「ａ＊ｃ＋ｂ＊ｃ」という多項式を表す「００１０１  ０１１０１  ０００００  ０１００１  ０１１０１  ０００００」という一つの２値ベクトルが得られる。この代数展開の度合いを制御するために、パラメータ部１４に保持されるデータが用いられる。なお、代数展開の途中結果は、レジスタやスタック用レジスタ、オペランド用レジスタに保持される。
【０１７３】
展開部１３は、２値ベクトル値関数として符号化される複数の多項式から、単一の多項式２値ベクトルを構成する。この構成例の様子を、図５に示す。
【０１７４】
図５では、説明の容易のため、２値ベクトル値関数は同一であり、その表す多項式はｘ１＝ａ１＋ｂ１であるとする。ここで、ａ１、ｂ１は、それぞれ入力変数である。但し、ｂ１は、他の入力変数ｃ１、ｄ１からなるｃ１＋ｄ１という多項式の出力とする。すなわち、例示している基本演算は、ｘ１＝ａ１＋ｃ１＋ｄ１という多項式を符号化しているとする。
【０１７５】
図５（１）は、ａ１＋ｂ１が逆ポーランド記法で符号化され、ａ１ｂ１＋という形で与えられている状況を示す。ここで、ａ１、ｂ１、＋は本来すべて２値ベクトルとして保持されるが、説明の容易のため文字列として表記している。
【０１７６】
図５（２）では、これらの２値ベクトルのうち、ａ１の部分がオペランド用レジスタＲ１へ送られる。この変数はこれ以上代数展開されないことから、そのままスタック用レジスタへ送られる。残りはｂ１＋となる。
【０１７７】
図５（３）では、ｂ１の部分がオペランド用レジスタＲ１へ送られる。この変数はさらにｃ１＋ｄ１という多項式に展開されるが、この情報がオペランド用レジスタＲ２へ送られる。これらのレジスタの値を用いて、ｃ１＋ｄ１という多項式が既展開多項式２値ベクトルとしてスタック用レジスタへ送られる。
【０１７８】
図５（４）は、＋を表す２値ベクトルから、対応する基本演算（代数和）が選択され、これから結線ユニットで作成された（又は結線論理キャッシュ部から取り出された）結線論理が実装ユニットへ送られた状況である。ここでは、代数和を符号化する演算２値化セットが記憶部１７から利用可能であることを前提としている。図５（３）のスタック用レジスタの上位にある二つの２値ベクトルが、オペランド用レジスタへ送られる。
【０１７９】
図５（５）は、実装ユニットの入力信号線へオペランド用レジスタの値を入力することで、それらの代数和として得られる既展開多項式２値ベクトルを符号化する２値ベクトルが出力信号線から得られ、これがスタック用レジスタの最上位へ送られた状況を表している。
【０１８０】
また、展開部１３は、作成した多項式２値ベクトル、入力数値と多項式に表れる変数の対応、多項式と他の多項式に現れる変数との対応、多項式と出力数値との対応をまとめ、１つの演算２値化セットを作成する。この際、未展開多項式２値ベクトルが存在する場合には、２分木の葉に位置する多項式をそれぞれ２値ベクトル値関数として符号化し、これらで置き換えられる変数を新たに用意し、これらの変数と２値ベクトル値関数を構成する２値多項式との対応を保持することで、ブロック構造を有するものとして演算２値化セットを作成する。展開部１３は、作成した演算２値化セットを判定部１５に送る。
【０１８１】
作成された演算２値化セットは、判定部１５によって、使用可能なハードウェアを用いて実現できると判定された場合、展開部１３から記憶部１７へ送られる。展開部１３は、必要に応じて演算２値化セットキャッシュ部１６へも演算２値化セットを送る。演算２値化セットキャッシュ部１６は、必要に応じて演算２値化セットと入力多項式との対応を記録する。
【０１８２】
演算処理部１９は、通常、複数の演算処理部５を有している。演算処理部１９は、展開部１３により作成され、記憶部１７から送られる演算２値化セットが表す基本演算を処理する。具体的には、演算処理部１９は、まず、演算２値化セットに含まれている２値多項式のうち、変数が入力数値と対応するもの（２値ベクトル）だけを選択し、その２値多項式を構成する各項の値を計算し、その後これらの値の多項式全体にわたる総和をとる。この際、記憶部１７は、各項の値の計算には積算を表す演算２値化セットを、項に渡る総和の計算には和算を表す演算２値化セットを演算処理部５に与える。演算処理部１９は、これらの演算２値化セット及び別途与えられる入力数値を用いて演算を処理する。この計算の途中結果は、適宜レジスタに保存され、使用される。続いて、演算処理部１９は、値の確定した２値多項式又は入力数値のみを入力変数とする２値多項式の値を、同様に計算する。そして、演算処理部１９は、かかる処理を繰り返すことで、展開部１３に与えられた入力多項式の、その変数に入力数値を代入した結果を計算する。この計算結果は、出力部６に送られる。
【０１８３】
パラメータ部１４は、演算２値化セットに含まれる２値多項式に現れる最大変数数を、使用可能なハードウェア量に応じて予め設定する。ここで設定される変数数は、演算２値化セットを作成する時のパラメータとなる。絶対値の計算など入力数値が一つである演算を例にとれば、入力数値の定義域が１０ビットでカバーされるとき、最大変数数を１０として入力数値を一つの１０ビットの２値ベクトルとするか、最大変数数を５として入力数値を二つの５ビットの２値ベクトルとするかは任意である。しかし、前者の変数数では、使用するハードウェア量が大きくなり、実現が難しい場合がある。従って、パラメータ部１４は、使用可能なハードウェア量が実現したい計算装置の規模と比べて小さい場合には、計算全体が多段のブロック構造をとる電子回路となることを想定し、１つの数値が多数の２値ベクトルとして符号化されるよう、変数数を少なくする。また、パラメータ部１４は、展開部１３による演算２値化セットを実装するために必要なハードウェア量に影響を与える、代数展開度合いを保持する。代数展開の度合いが大きい場合、項はより多数の変数から構成されるように、また演算２値化セットはより多数の項から構成されるように作成され、これを実装する際のハードウェア量は大きくなる。それらのパラメータは、計算装置１１の外部から計測可能であり、また計算装置１１の内部又は外部から設定可能である。
【０１８４】
なお、ここでいう、「代数展開度合い」とは、未展開多項式２値ベクトルを既展開多項式２値ベクトルへ展開する際に、完全に展開するか、展開を途中でとどめるかを制御するパラメータである。この制御は、例えば、２分木構造の根（ルート）からの深さがある値以上となる位置にある２分木は展開しない、などとなる。この制御は、このように一律に規定するだけでなく、演算の種類に基づいて枝ごとに規定することもできる。
【０１８５】
判定部１５は、展開部１３から送られる演算２値化セットから構成される結線論理を実装する際のハードウェア量が妥当であるかを判定する。判定部１５は、かかるハードウェア量が妥当でないと判断した場合、パラメータ部１４に保持されているパラメータを必要に応じて変更し、展開部１３に多項式２値ベクトルの再展開及び演算２値化セットの再作成を指示する。
【０１８６】
演算２値化セットキャッシュ部１６は、多項式読込部１２によって読み込まれた入力多項式及び展開部１３で作成されて送られた演算２値化セットとの対応を保持する。具体的には、演算２値化セットキャッシュ部１６は、入力多項式を表す、２分木構造を保つものとして符号化された２値ベクトルと、演算２値化セットを符号化する２値ベクトルとの対応を関連付けて保存する。
【０１８７】
記憶部１７は、演算処理部１９や展開部１３で使用される演算２値化セットを２値ベクトルとして保持する。かかる演算２値化セットは、計算装置１１の外部から入力されてもよく、展開部１３又は演算２値化セットキャッシュ部１６から送られてもよい。記憶部１７に保持される演算２値化セットは、演算処理部１９や展開部１３で使用される他、計算装置１１の外部で使用されてもよい。なお、記憶部１７は、記憶部４と同様、ＲＯＭ、ＲＡＭ又はＣＤ−Ｒ等により構成される。
【０１８８】
記録部１８は、電子回路からなり、数値読込部２から演算処理部１９への信号線並びに演算処理部１９から出力部６への信号線、又はこれらの組み合わせが０、１となる割合等のデータを計算・記録する。記録部１８で記録されたデータは、展開部１３又は計算装置１１の内外で使用することができる。
【０１８９】
次に、図６を参照して、当該計算装置１１の動作手順について説明する。
【０１９０】
まず、パラメータ保存ステップ（図示せず）として、パラメータ部１４が、演算２値化セットに含まれる２値多項式に現れる最大変数数を、使用可能なハードウェア量に対応させて設定する。この設定は、計算装置１１の内部又は外部から行うことができる。また、パラメータ部１４は、展開部１３により作成される演算２値化セットを実装する際に必要となるハードウェア量に影響を与える、代数展開度合いを保存する。
【０１９１】
多項式読込ステップ（ＳＴＰ１１）は、入力多項式を読み込むステップである。ＳＴＰ１１では、多項式読込部１２により、入力多項式が読み込まれる。
【０１９２】
代数展開ステップ（ＳＴＰ１２）は、ＳＴＰ１１によって読み込まれた入力多項式を、所定の多項式２値ベクトルを用いて代数展開する。また、ＳＴＰ１２は、これらの多項式２値ベクトルに含まれる変数と入力多項式に含まれる変数との対応、多項式２値ベクトルと他の多項式２値ベクトルに現れる変数との対応、多項式２値ベクトルとして符号化される２値多項式と出力変数との対応を計算し、演算２値化セットを作成する。ＳＴＰ１２で作成された演算２値化セットは判定部１５に送られる。ＳＴＰ１２は、展開部１３で行われる。なお、展開部１３による多項式の展開は、度合いが大きいほど論理関数の段数を少なくすることができる。他方、多項式の展開度合いが大きいほど、項数、各項への入力信号数（項を構成する変数の数に等しい）、各項からの出力信号数等が増加し、必要なハードウェア量が増大する。
【０１９３】
代数展開の定式化について説明する。なお、後述の定式化では、条件分岐を含む演算も対象とする。条件分岐を含む演算は、前述した和・差・積・除・剰余算の定式化の説明において象限の場合分けを内包するために使われていたものである。
【０１９４】
（１）代数展開の定式化
以下に、積和形多項式表現の一例及びこれに基づく代数展開多項式の一例について説明する。
【０１９５】
代数展開の定式化としては、一つの項（単項）と一つの多項式との展開について説明する。複数の項からなる多項式同士の展開等は、これらを２分木構造をもつものとして表せば、それらの式の展開を繰り返すことで行うことができる。記述容易のため、可能な変数の数、可能な項の数を、それぞれＮ、Ｍとし、項の係数の定義域の大きさ及び次数の定義域の大きさは、どちらも［−２Ｄ−１＋１，２Ｄ−１−１］とする（すなわち、どちらも符号ビットを含めてＤビットで符号化されている）。このとき、ある多項式Ａは、次式（２２）のように次のようなビット数Ｍ（Ｄ＋ＮＤ）の２進ベクトルとして符号化することができる。
【０１９６】
【数２２】
2012032967.tif 000061
【０１９７】
ここで、Ａｉｃ＝〈Ａｉ，１ｃ，．．．，Ａｉ，Ｄｃ〉は、項ｉの係数を表す。Ａｉ，ｊｃ∈｛０，１｝は、項ｉの係数を２進ベクトル符号化したときのｊビットの値を表す。また、Ａｉｄ＝〈Ａｉ，１ｄ，．．．，Ａｉ，Ｎｄ〉は、項ｉに含まれる変数の次数の集合を表す。Ａｉ，ｊｄが非０をとることは、項ｉに変数ｊが現れ、その次数がＡｉ，ｊｄであることを表す。Ａｉ，ｊｄが０であることは、項ｉに変数ｊが現れないことを表す。Ａｉ，ｊｄ＝〈Ａｉ，ｊ，１ｄ，．．．，Ａｉ，ｊ，Ｄｄ〉は、項ｉの変数ｊの次数を表し、Ａｉ，ｊ，ｋｄ∈｛０，１｝は、項ｉの変数ｊの次数を２値ベクトル符号化したときのｋビットの値を表す。
【０１９８】
一つの項からなる多項式Ａ（Ａ１ｃ≠０，Ａｉｃ＝０（ｉ≠１））及び多項式Ｂを対象とするｘ＋（ｙ＋ｚ）＝ｘ＋ｙ＋ｚという形の代数和による代数展開は、計算結果の多項式をＣとしたとき、次式（２３）〜（２５）のように表すことができる。ここで、２進ベクトルとスカラとの比較は、２進ベクトルを１０進数の整数へ変換した後での比較を表すことにする。また、多項式Ｂは０でない、すなわち∃ｉ∈｛１，．．．，Ｍ｝（Ｂｉｃ≠０）とする。
【０１９９】
Ｂｉｄ＝Ａ１ｄなる項ｉがあれば、∀ｉ’∈｛１，．．．，Ｍ｝について、
【０２００】
【数２３】
2012032967.tif 000062
【０２０１】
そうでなければ、以下のように、係数が０である項をＡで置き換える。
【０２０２】
Ｂｉｃ＝０なる項ｉが存在すれば、∀ｉ’∈｛１，．．．，Ｍ｝について、
【０２０３】
【数２４】
2012032967.tif 000063
【０２０４】
ここで、Ｚｉ∈｛０，１｝は、項ｉがＢｉｃ＝０なる添字のうち最小であるか否かを表し、次のように計算される。
【０２０５】
【数２５】
2012032967.tif 000064
【０２０６】
Ｂｉｃ＝０なる項ｉが存在しなければ、項数がＭを越えているので、異常フラグをたて、何もしない。
【０２０７】
但しここでは、多項式内に全ての変数の次数が同じ項（即ち、変数が同じである項）が複数含まれることはないこと、及び演算が定義域に収まらなかったことを表す異常フラグが存在すること、を前提としている。
【０２０８】
かかる多項式展開は、次式（２６）、（２７）のように２値多項式として定式化することができる。
【０２０９】
【数２６】
2012032967.tif 000065
【０２１０】
【数２７】
2012032967.tif 000066
【０２１１】
ここで、Ｆ∈｛０，１｝はＡ１ｄ＝Ｂｉｄなる項ｉが存在するか否かを表す。この値の計算は次のように定式化できる。
【０２１２】
【数２８】
2012032967.tif 000067
【０２１３】
但し、Ｆｉ∈｛０，１｝はＡ１ｄ＝Ｂｉｄが成立するかを表す。この値の計算は次のように定式化できる。
【０２１４】
【数２９】
2012032967.tif 000068
【０２１５】
なお、Ａ１,ｊ,Ｄｄ、Ｂｉ,ｊ,Ｄｄは、それぞれＡ１,ｊｄ、Ｂｉ,ｊｄの符号を表すビットとする。
【０２１６】
Ｚｉの計算は、次のように定式化することができる。
【０２１７】
【数３０】
2012032967.tif 000069
【０２１８】
なお、Ｂｉ,Ｄｃは、Ｂｉｃの符号を表すビットとする。
【０２１９】
また、一つの項からなる多項式Ａ（Ａ１ｃ≠０，Ａｉｃ＝０（ｉ≠１））と多項式Ｂを対象とするｘ（ｙｚ）＝ｘｙｚ，ｘ（ｙ＋ｚ）＝ｘｙ＋ｙｚという形の代数積による代数展開は、計算結果の多項式をＣとして次式（３１）のように表すことができる。
【０２２０】
【数３１】
2012032967.tif 000070
【０２２１】
また、この代数展開は、次式（３２）、（３３）のように定式化することができる。
【０２２２】
【数３２】
2012032967.tif 000071
【０２２３】
【数３３】
2012032967.tif 000072
【０２２４】
なお、以上の計算式では、表記の容易のために、本来２値ベクトルの要素ごとに示すべき計算式を略記している。例えば、Ｘｉｃ：＝ＹｉｃというＤビットの２値ベクトル間の代入式は、正確には、次式（３４）を表す。
【０２２５】
【数３４】
2012032967.tif 000073
【０２２６】
また、２値ベクトル同士の和積算（例えば、Ａ１ｃ×Ｂｉｃ）を構成する２値多項式は、別途演算２値化セットにより与えられていることを前提にしている。
【０２２７】
（２）条件分岐式の定式化
条件分岐式の定式化の例として、｜Ａ−Ｂ｜（Ａ≧０、Ｂ≧０）を例に説明する。｜Ａ−Ｂ｜は、「Ｂ≧ＡであればＢ−Ａ、そうでなければＡ−Ｂ」という条件に従う条件分岐式として表すことができる。そして、Ｂ≧Ａであるか否かは、Ａ−Ｂの結果が負であるか否かとして、Ａ、ＢともにＮビットで符号化されているとして、ｆＮ１ｓ（Ａ，Ｂ）として定式化することができる。一方、Ｂ−Ａの結果はｆｋ１ｓ（Ｂ，Ａ）として、またＡ−Ｂの結果はｆｋ１ｓ（Ａ，Ｂ）（ｋ＝０，１，２，・・・，Ｎ−１）として定式化することができる。従って、「Ｃ」を条件が成立するか否かを１，０で表現する変数として定義し、Ｃ＝ｆＮ１ｓ（Ａ，Ｂ）とすることにより、計算結果Ｈｋは、Ｈｋ＝Ｃｆｋ１ｓ（Ｂ，Ａ）＋（１−Ｃ）ｆｋ１ｓ（Ａ，Ｂ）＝ｆＮ１ｓ（Ａ，Ｂ）ｆｋ１ｓ（Ｂ，Ａ）＋（１−ｆＮ１ｓ（Ａ，Ｂ））ｆｋ１ｓ（Ａ，Ｂ）（ｋ＝０，１，２，・・・，Ｎ−１）として定式化することができる。
【０２２８】
判定ステップ（ＳＴＰ１３）は、展開部１３から送られる演算２値化セットを実装する際に必要となるハードウエア量が妥当であるか否かを判定するステップである。ＳＴＰ１３は、判定部１５により行われる。判定部１５は、使用可能なハードウェア量を考慮したうえ、用いられるハードウェア量が妥当でないと判断した場合、パラメータ部１４が保持するパラメータの変更を行うとともに、展開部１３に再展開を指示する。一方、判定部１５がハードウェア量が妥当であると判断した場合は、演算処理ステップ（ＳＴＰ１４）に移行する。
【０２２９】
ＳＴＰ１３においてハードウエア量が妥当でないと判断された場合はＳＴＰ１２に移行する。この場合、展開部１３は、パラメータ部１４が保持する変更後のパラメータに従って、多項式を再展開する。
【０２３０】
数値読込ステップ（ＳＴＰ１６）は、入力多項式により処理される具体的数値を読み込むステップである。ＳＴＰ１６は、数値読込部２により行われる。ＳＴＰ１６は、ＳＴＰ１１で読み込まれた入力多項式に現れる入力変数へ代入する具体的数値を、代入先の入力変数との対応と併せて読み込む。それらの情報は、計算装置１１に対応するコンパイラにより作成される。
【０２３１】
演算処理ステップ（ＳＴＰ１４）は、展開部１３により作成され、記憶部１７から送られる演算２値化セットが表す演算を処理するステップである。ＳＴＰ１４は、演算処理部１９により行われる。
【０２３２】
出力ステップ（ＳＴＰ１５）は、ＳＴＰ１４により行われた演算結果を出力するステップである。ＳＴＰ１５は、出力部６により、演算処理部１９から送られる信号を２値ベクトルとして出力する。この際、典型的には、符号付き２進数表現が用いられるが、浮動小数点表現を用いることも可能である。
【０２３３】
当該計算装置１１は、多項式を２値ベクトルとして符号化することができる。当該計算装置１１は、入力多項式を複数の演算の組合せに展開するとともに、演算２値化セットに含まれる２値多項式に現れる最大変数数や代数展開の度合いを変更することにより、必要となるハードウェア量を調整することができる。その結果、当該計算装置１１は、使用可能なハードウェア資源に応じた計算環境を提供することができる。
【０２３４】
当該計算装置１１は、多入力・多出力論理素子が利用可能な場合、記憶部１７が、多入力・多出力論理素子の使用を前提とした演算２値化セットを保持することにより、代数展開度合いを大きくし、計算の段数を減少することができ、ひいては計算の処理速度をさらに高速化することができる。
【０２３５】
当該計算装置１１は、演算２値化セットキャッシュ部１６により、多項式読込部１２によって読み込まれた入力多項式及びそれを展開部１３で展開することで作成された演算２値化セットが対応付けられて保存されている。従って、当該計算装置１１は、過去に計算された入力多項式については、演算２値化セットキャッシュ部１６に保存されているデータを記憶部１７に送ることにより、展開部１３が演算２値化セットを作成する手間を省略することができる。その結果、当該計算装置１１は、一度行われた計算の処理速度をさらに向上することができる。
【０２３６】
当該計算装置１１は、演算処理部５の内部又は展開部１３の内部にある結線論理キャッシュ部により、演算２値化セットに含まれる一つの２値ベクトル値関数及び変数間の対応情報と、結線論理とが対応づけられて保存されている。当該計算装置１１は、演算２値化セットに含まれる２値ベクトル値関数及び変数間の対応情報から結線ユニットを用いて結線論理を作成する手間を、対応する結線論理が結線論理キャッシュ部に保持されている場合に省くことができる。その結果、当該計算装置１１は、一度行われた計算の処理速度をさらに向上することができる。
【０２３７】
当該計算装置１１は、記録部１８により、入力信号値及び／又は出力信号値が０又は１となる割合やそれらがある組み合わせをとる頻度が記録されている。従って、当該計算装置１１は、展開部１３が多項式を作成するに際して、記録部１８に保存されているデータを利用することができる。展開部１３は、これらの割合に基づいて演算２値化セットを作成することにより、より効率的な代数展開を行うことができる。
【０２３８】
当該計算装置１１は、記憶部１７を書き込み可能な媒体として構成し、記憶部１７に新たな演算２値化セットを書き込めるようにすることにより、計算を組み直す基本演算を変更し、所望の計算を高速処理することができる。その結果、当該計算装置１１は、各ユーザに特化した計算を高速に行うことができる。
【０２３９】
なお、本発明の２値ベクトルを用いる計算装置及び計算方法は、上記態様の他、種々の変更、改良を施した態様で実施することができる。例えば、当該計算装置は、電子回路をＰｒｏｇｒａｍｍａｂｌｅ  Ａｒｒａｙ  Ｌｏｇｉｃ、Ｇｅｎｅｒｉｃ  Ａｒｒａｙ  Ｌｏｇｉｃ、Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ等の書き換え可能な計算装置を用いて実装することができる。
【０２４０】
また、当該計算装置は、複数の演算処理部１９を具備するように構成されてもよい。これにより、当該計算装置は、入力多項式又は入力多項式を代数展開することで得られる２値多項式を構成する複数の基本演算を並行して処理することができる。具体的には、当該計算装置は、入力多項式が代数展開ステップによって、例えばａｂ＋ａｃｄ＋ａｃｅに展開された場合、この多項式の各項（ａｂ、ａｃｄ及びａｃｅ）を複数の演算処理部１９によって別個に並行して処理することができる。従って、当該計算装置は、各々の演算処理部１９の処理結果を他の演算処理部１９に送ることができるように互いに関連付けて構成することで、入力多項式の計算時間をさらに短縮することができる。
【０２４１】
さらに、当該計算装置は、展開部を複数備えることによって、未展開多項式２値ベクトルの一部となっている未展開多項式２値ベクトルを切り出し、その代数展開を別の展開部で行うことができ、計算の高速化を向上することができる。
【産業上の利用可能性】
【０２４２】
以上のように、本発明の２値ベクトル及び多項式を用いる計算装置及び計算方法は、２値ベクトル値関数及び変数間の対応情報に基づいて構成される結線論理を使用し、計算を複雑な演算に組み直すことで計算式における演算の繰返し回数を削減して計算の高速化を実現するのに適している。
【符号の説明】
【０２４３】
１  計算装置
２  数値読込部  
３  演算種読込部
４  記憶部
５  演算処理部
６  出力部
７  記録部
８  結線ユニット
９  実装ユニット
１０  結線論理キャッシュ部
１１  計算装置
１２  多項式読込部
１３  展開部
１４  パラメータ部
１５  判定部
１６  演算２値化セットキャッシュ部
１７  記憶部
１８  記録部
１９  演算処理部
【図１】
2012032967.tif 000074
【図２】
2012032967.tif 000075
【図３】
2012032967.tif 000076
【図４】
2012032967.tif 000077
【図５】
2012032967.tif 000078
【図６】
2012032967.tif 000079