"CORDICCOordinateRotationDIgitalComputer演算を実行可能に接続された複数のシフト加減算手段を有し、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する演算手段と、外部から受け取った複数のデータに基づいてCORDIC演算またはバタフライ演算を実行することを前記演算手段に指示する制御手段と、を備えるプロセッサ。前記制御手段は、前記バタフライ演算を実行することを前記演算手段に指示する場合には、前記バタフライ演算の基数を表す情報を前記演算手段に供給し、前記演算手段は、前記基数を表す情報に基づいて、前記シフト加減算処理において加減算するデータの組み合わせを制御する情報を、前記シフト加減算手段に対して供給するシフト加減算制御手段をさらに有する請求項1に記載のプロセッサ。前記シフト加減算制御手段は、前記シフト加減算処理に係数乗算処理が含まれる場合には、前記基数を表す情報に基づいて、前記係数乗算処理を実行するシフト加減算手段に対して、係数を乗算するデータに対するビットシフト量を表す情報をさらに供給する請求項2に記載のプロセッサ。前記複数のデータには、複素数の実数成分を表す実数成分データおよび前記複素数の虚数成分を表す虚数成分データが含まれ、前記シフト加減算制御手段は、前記係数乗算処理における前記係数が虚数である場合には、該係数乗算処理を実行する前記シフト加減算手段に対して、虚数である前記係数を乗算する実数成分データと虚数成分データとの入れ替えを制御する情報をさらに供給する請求項3に記載のプロセッサ。前記複数のデータには、複素数の実数成分を表す実数成分データおよび前記複素数の虚数成分を表す虚数成分データが含まれ、前記シフト加減算制御手段は、前記バタフライ演算の基数の2倍が前記シフト加減算手段に入力可能なデータ数よりも多い場合には、前記実数成分データに対する前記シフト加減算処理と、前記虚数成分データに対する前記シフト加減算処理とを、互いに異なるサイクルにおいて制御する請求項2乃至請求項4のいずれか一つに記載のプロセッサ。CORDIC演算を実行可能に接続された複数のシフト加減算手段を有する演算手段を備えたプロセッサが、外部から受け取った複数のデータに基づいて、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する演算方法。前記プロセッサが、前記バタフライ演算の基数を表す情報に基づいて、前記シフト加減算処理において加減算するデータの組み合わせを制御することにより、前記シフト加減算処理を前記シフト加減算手段を用いて実行することを特徴とする請求項6に記載の演算方法。前記プロセッサが、前記シフト加減算処理に係数乗算処理が含まれる場合には、係数を乗算するデータに対するビットシフト量を、前記基数を表す情報に基づいてさらに制御する請求項7に記載の演算方法。前記第1の関連技術を利用したプロセッサは、CORDIC演算回路を有する。このため、当該プロセッサは、バタフライ演算を実行する際に、前述したようなCORDIC演算を行う必要がある。そのCORDIC演算では、加減算処理を1回実行する際に、演算精度n回分のシフト加減算処理を伴う。このために、当該プロセッサは、効率が悪いという課題を有する。さらに、第1の関連技術を利用したプロセッサは、スケーリング補正処理を必要とする場合がある。この場合には、プロセッサの演算量が増大するため、当該プロセッサは、さらに効率が悪くなるという課題を有する。前記第2の関連技術を利用したプロセッサは、CORDIC演算回路に加えてバタフライ演算回路を有する。このため、当該プロセッサは、DFT演算以外の処理時には、バタフライ演算回路をアイドル状態にしてしまうという課題を有する。本発明は、上記したような課題を解決するために成された。すなわち、本発明の主な目的は、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できるプロセッサなどを提供することである。本発明のプロセッサは、CORDICCOordinateRotationDIgitalComputer演算を実行可能に接続された複数のシフト加減算手段を有し、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する演算手段と、外部から受け取った複数のデータに基づいてCORDIC演算またはバタフライ演算を実行することを前記演算手段に指示する制御手段と、を備える。本発明の演算方法においては、CORDIC演算を実行可能に接続された複数のシフト加減算手段を有する演算手段を備えたプロセッサが、外部から受け取った複数のデータに基づいて、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する。本発明は、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できるプロセッサを提供できる。以下に、本発明に係る実施形態を、図面を参照して説明する。図1は、本発明に係るプロセッサの一実施形態を簡略的に示すブロック図である。プロセッサ10は、制御回路100と、CORDIC兼バタフライ演算回路以下、演算回路と略して記す200と、メモリ300とを有している。ここで、制御回路100およびメモリ300は、本発明における制御手段制御部に対応している。また、演算回路200は、本発明における演算手段演算部に対応している。制御回路100は、メモリ300に向けて、演算する入力データのアドレス情報および演算結果を書き込むアドレス情報を出力する。また、制御回路100は、演算回路200に向けて、演算モード制御信号を出力する。演算モード制御信号は、CORDIC演算モードCORDIC演算を実行するモードを示す情報と、バタフライ演算モードバタフライ演算を実行するモードを示す情報とのいずれかを含む信号である。ここで、演算モード制御信号が、バタフライ演算モードを示す情報を含んでいる場合には、当該演算モード制御信号は、バタフライ演算の基数を示す情報をも含んでいる。メモリ300は、外部から受け取ったデータを記憶する。例えば、メモリ300は、CORDIC演算を行うベクトルデータ[x0,y0]’および回転角z0を示すデータを記憶する。例えば、メモリ300は、バタフライ演算を行うNN:整数個の離散周期データを記憶する。その離散周期データは、複素数の形態である。メモリ300は、離散周期データとして、離散周期データの実数成分を示す実数成分データRe{x0},Re{x1},Re{xN}、および、その離散周期データの虚数成分を示す虚数成分データIm{x0},Im{x1},Im{xN}を記憶する。メモリ300は、制御回路100から受け取ったアドレス情報に基づき、演算回路200に出力する3MM:並列数個の入力データを読み出す。また、メモリ300は、制御回路100から受け取ったアドレス情報に基づき、演算回路200が出力した3M個の演算結果を書き込む。なお、Mは、演算回路200が並列に実行可能なCORDIC演算数を表す正の整数である。すなわち、3Mは、演算回路200が有するシフト加減算回路シフト加減算部シフト加減算手段;以下、シフト回路とも略して記す220図2参照に入力可能なデータ数に相当する。なお、以下に説明する実施形態においては、並列数Mを2とする例について主に説明するが、本発明において演算部演算回路200が並列に実行可能なCORDIC演算数は2に限定されない。演算回路200は、制御回路100から受け取った演算モード制御信号に基づき、CORDIC演算モードと、バタフライ演算モードとを選択的に切り替える。そして、演算回路200は、その切り替えた演算モードに基づいて、メモリ300から受け取った入力データを演算する。さらに、この演算結果をメモリ300に出力する。また、演算回路200は、CORDIC演算モードでは、座標系を選択するとともに、Rotationモードローテンション回転モードとVectoringモードベクターモードを選択的に切り替える。そして、演算回路200は、その切り替えたRotationモードあるいはVectoringモードにより、乗除算、三角関数演算、指数対数演算または双曲関数演算を実行する。なお、演算回路200は、並列数Mを2とした場合には、CORDIC演算を2並列に実行してもよい。バタフライ演算モードでは、演算回路200は、基数を切り替えることにより、バタフライ演算を実行する。なお、演算回路200は、Mを2とした場合には、基数5までのバタフライ演算を実行できる。図2は、演算回路200の構成の一例を示す。なお、この実施形態では、CORDIC演算精度は16ビットと仮定されているが、本発明における演算部のCORDIC演算精度は限定されない。図2においては、演算回路200は、シフト加減算制御回路シフト加減算制御部シフト加減算制御手段;以下、シフト制御回路とも略して記す210と、16個のシフト回路2201~22016総称して、シフト回路220とも記すとを有している。シフト制御回路210は、制御回路100から受け取った演算モード制御信号に基づいて、シフト加減算制御信号をシフト回路2201~22016に供給する。このシフト加減算制御信号は、シフト回路2201~22016の動作を制御する信号である。つまり、各シフト回路2201~22016は、演算モードの種類に応じて当該演算モード毎に定められた動作をそれぞれ行う。その演算モード制御信号は、各シフト回路2201~22016に、演算モードに応じた動作を実行する指令となる情報を含んでいる。具体的には、シフト回路2201~22016の演算モードをCORDIC演算モードとする場合には、シフト制御回路210は、シフト加減算制御信号に、ビットシフト量、座標系の種類、RotationモードとVectoringモードのうちの一方を示す情報などを含める。シフト回路2201~22016の演算モードをバタフライ演算モードとする場合には、シフト制御回路210は、シフト加減算制御信号に次のような制御情報を含める。つまり、シフト加減算処理は、基数に応じた1以上のステージで実行される。そのステージに対応するシフト回路220が予め定められている。シフト加減算制御信号に含まれる制御情報は、シフト回路220に、対応するステージに応じた動作を制御する指令となる情報である。例えば、基数が2のべき乗のバタフライ演算は、1ステージ以上の加減算処理で実行される。そこで、シフト回路2201~22016の演算モードを、2のべき乗の基数のバタフライ演算とする場合には、シフト制御回路210は、次のような制御情報を含むシフト加減算制御信号をシフト回路220に供給する。その制御情報は、ステージ毎に、加減算する入力データの組み合わせを基数に応じて知らせる情報である。例えば、基数が2のべき乗でないバタフライ演算は、複数のステージで実行される。各ステージでは、加減算処理および係数乗算処理を含む処理を行う。その係数乗算処理は、シフト演算処理を繰り返す処理である。シフト回路2201~22016の演算モードを、2のべき乗でない基数のバタフライ演算とする場合には、シフト制御回路210は、次の制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、基数に応じた係数乗算処理に利用されるビットシフト量である。また、シフト制御回路210は、演算モード制御信号に基づいたバタフライ演算の基数を2倍した数が、シフト回路220に入力可能なデータの個数3Mよりも多い場合、次のように各シフト回路220を制御する。すなわち、各シフト回路220は、シフト制御回路210による制御によって、前述の実数成分データに対する各ステージのシフト加減算処理と、虚数成分データに対する各ステージのシフト加減算処理とを異なるサイクルで実行する。例えば、各シフト回路220は、実数成分データの処理を偶数サイクルで、虚数成分データの処理を基数サイクルで実行する。バタフライ演算を構成する係数乗算処理において係数が虚数の場合には、シフト制御回路210は、次に示すような制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、係数乗算処理を実行するいずれかのシフト回路220に対して、虚数の係数を乗算する実数成分データと、虚数成分データとを入れ替える指示を示す情報である。実数成分データを処理するサイクルが偶数サイクルに設定され、かつ、基数成分データを処理するサイクルが奇数サイクルに設定されている場合には、シフト制御回路210は、次に示すような制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、係数乗算処理を実行するいずれかのシフト回路220に対して、偶数サイクルで入力されて虚数の係数を乗算する実数成分データと、奇数サイクルで入力されて虚数の係数を乗算する虚数成分データとを入れ替える指示を示す情報である。次に、シフト回路220の構成の一例について詳細に説明する。図2に示すように、シフト回路2201~22016は、直列接続されている。各シフト回路220は、それぞれ、3M個のシフト加減算入力データに基づいて、シフト加減算処理を実行し、その処理による3M個のシフト加減算結果データを出力する。この実施形態では、Mを2とする。この場合には、シフト回路2201は、メモリ300から第1~第6のシフト加減算入力データを受け取る。そして、シフト回路2201は、第1~第6のシフト加減算入力データに基づいてシフト加減算処理を行い、その処理による第1~第6のシフト加減算結果データをシフト回路2202に出力する。シフト回路2202~22015は、それぞれ、受け取った第1~第6のシフト加減算結果データをシフト加減算入力データとして、上記同様に、シフト加減算処理を行う。そして、シフト回路2202~22015は、それぞれ、第1~第6のシフト加減算結果データを、次の順番のシフト回路2203~22016に出力する。シフト回路22016は、シフト回路22015から受け取った第1~第6のシフト加減算結果データをシフト加減算入力データとして、上記同様に、シフト加減算処理を行う。そして、シフト回路22016は、その処理による第1~第6のシフト加減算結果データを、演算回路200の演算結果として、メモリ300に出力する。図3は、シフト回路220の構成の一例を示す。図3において、シフト回路220は、クロスバ221と、6個のシフタ兼LUT以下、SLとも略して記す2221~2226と、6個の加減算器2231~2236と、2個の回転方向判定回路以下、略して判定回路とも記す2241,2242とを含んでいる。なお、LUTは、ルックアップテーブルLookUpTableの略である。また、SL2221~2226は、総称してSL222とも記す。さらに、加減算器2231~2236は、総称して加減算器223とも記す。さらに、判定回路2241,2242は、総称して判定回路224とも記す。クロスバ221は、第1~第6のシフト加減算入力データを受け取り、第1~第6のクロスバ出力データを出力する。このとき、クロスバ221は、シフト加減算制御信号に基づき、第1~第6のシフト加減算入力データのうち、指定されたデータを入れ替えて第1~第6のクロスバ出力データとして出力する。また、クロスバ221は、互いに異なるサイクルで入力した複数の入力データのうち、任意のデータを入れ替え、入れ替え後の前記入力データを、各サイクルの各クロスバ出力データとして出力することが可能である。例えば、クロスバ221は、偶数サイクルと奇数サイクルで入力した計12個の入力データのうち、シフト加減算制御信号で指定されたデータを入れ替え、入れ替え後の12個の入力データを、各サイクルの各クロスバ出力データとして出力する。SL2221~2226は、第1~第6のクロスバ出力データに対して、シフト加減算制御信号で指定された処理を行い、処理後のデータを、第1~第6のSL出力データとして、対応する加減算器2231~2236に出力する。また、SL222は、CORDIC演算で用いるLUTLookUpTableを有している。LUTは、CORDIC演算で選択される座標系ごとに、シフト加減算処理の反復回数jj=0,,15に対応するマイクロ回転量αjを示す情報を予め格納している。SL222の処理内容を、SL2221を例にして説明する。SL2221は、第1と第2のクロスバ出力データのうちの一方を選択し、選択したデータをビットシフトして加減算器2231に出力する。もしくは、SL2221は、数式1に示したzデータに対する処理を行う際は、シフト加減算制御信号で指定された座標系に対応するマイクロ回転量αjを内部のLUTから呼び出し、加減算器2231に出力する。なお、SL222は、シフト加減算制御信号に含まれる制御情報に基づいて、ビットシフト量およびLUTから呼び出すデータを決定する。SL2222~2226も、SL2221と同様である。判定回路2241~2242は、CORDIC演算を実行する場合に、数式6に従って回転方向パラメータσjを求め、当該回転方向パラメータσjを示す情報を、加減算器2231~2236に出力する。判定回路224は、シフト加減算制御信号に基づいて、RotationモードとVectoringモードのうちの一方を実行モードとして決定する。加減算器2231~2236は、シフト加減算制御信号に基づいて、第1~第6のクロスバ出力データと、SL2221~2226から出力された出力データとに対して、加減算処理を行う。そして、加減算器2231~2236は、その演算処理による結果を、第1~第6のシフト加減算結果データとして、次の処理を行うシフト回路220に出力する。以下に、プロセッサ10の動作例について説明する。この実施形態では、プロセッサ10がCORDIC演算を実行する動作、および、基数2、3、5のバタフライ演算を実行する動作について説明する。<CORDIC演算に関する動作>まず、CORDIC演算を行うプロセッサ10の動作について説明する。ここでは、まず、メモリ300は、制御回路100によって指定されたアドレスに基づいて、ベクトルデータ[x0,y0]’および回転角z0を表す3つのデータを読み出す。そして、メモリ300は、それらデータを演算回路200に出力する。次に、シフト回路2201~22016が、数式1に示したシフト加減算処理による回転処理を順次実行する。ここで、シフト回路220j1j=0,,15が行う処理について詳細に説明する。まず、シフト回路220j1のクロスバ221に、メモリ300またはシフト回路220jからのデータ{xj,yj,zj}が入力する。次に、クロスバ221は、第1~第3の入力データをそのまま第1~第3のクロスバ出力データとして出力する。次に、SL2221は、y成分に対応する第2のクロスバ出力データに対し、j1ビット右シフトを行い、加減算器2231に出力する。また、SL2222は、x成分に対応する第1のクロスバ出力データに対し、j1ビット右シフトを行い、加減算器2232に出力する。また、SL2223は、シフト加減算制御信号で指定されたCORDIC演算モードの座標系に基づいて、マイクロ回転量αjを示す情報を、内蔵しているLUTから呼び出し、加減算器2233に出力する。また、判定回路2241は、シフト加減算制御信号で指定されたRotationモードまたはVectoringモードに基づいて、数式6に従って回転方向パラメータσjを求める。そして、判定回路2241は、その回転方向パラメータσjを示す情報を、加減算器2231~2236に出力する。次に、加減算器2231~2233は、それぞれ、SL2221~2223からの出力データ、クロスバ221からの出力データ、および、判定回路2241からの出力データに基づいて、数式1に示した加減算処理を行う。これにより、加減算器2231~2233は、データ{xj1,yj1,zj1}を算出する。そして、加減算器2231は、シフト加減算制御信号で指定されたCORDIC演算モードの座標系に基づいて、上記処理による加算結果と減算結果のうちから、出力する一方を決定し、その決定した結果を出力する。このようにして、シフト回路2201~22016は、回転処理を順次実行する。そして、シフト回路22016は、演算結果であるデータ{x16,y16,z16}を演算回路200の出力データとして出力する。次に、メモリ300は、制御回路100によって指定されたアドレスに基づいて、演算回路200の出力データを書き込む。これにより、プロセッサ10は、CORDIC演算の動作を終了する。なお、プロセッサ10において、上述の3個の入力データ{x0,y0,z0}に加え、他の3個の入力データ{x10,y10,z10}を演算回路200に入力することにより、演算回路200は、CORDIC演算を2並列に実行可能である。この場合には、シフト回路2201は、上述の第1~第3のシフト加減算入力データに加えて、第4~第6のシフト加減算入力データを受け取る。シフト回路2201~22016は、第4~第6のシフト加減算入力データに対する回転処理を、第1~第3の入力データに対する回転処理と同様に実行する。<基数2のバタフライ演算に関する動作>次に、基数2のバタフライ演算に関わるプロセッサ10の動作について、図4の模式図を用いて説明する。図4では、基数2のバタフライ演算を行う複素数データは、{x0,x1}として表されている。また、演算結果は複素数{X0,X1}として表されている。図4に示すように、基数2のバタフライ演算は、2つの複素数データに対する1ステージの加減算処理によって行う。図4は、シフト回路2201が、その1ステージの加減算処理を実行することを示している。基数2のバタフライ演算を行う場合には、制御回路100による制御に基づき、演算回路200のシフト回路2201に、第1と第2のシフト加減算入力データとして、実数成分データ{Re{x0},Re{x1}}が入力する。また、第3と第4のシフト加減算入力データとして、シフト回路2201に、虚数成分データ{Im{x0},Im{x1}}が入力する。次に、制御回路100は、基数2のバタフライ演算に関わる情報を含む演算モード制御信号を、演算回路200に供給する。演算回路200において、シフト制御回路210は、その演算モード制御信号に基づき、シフト回路2201にシフト加減算制御信号を供給する。そのシフト加減算制御信号は、加減算処理を行う2つの実数成分データの組み合わせと、2つの虚数成分データの組み合わせとを示す制御情報を含んでいる。また、シフト制御回路210は、シフト回路2202~22016にシフト加減算制御信号を供給する。そのシフト加減算制御信号は、シフト加減算入力データをそのままシフト加減算結果データとして出力する指示情報を含んでいる。以下に、シフト加減算制御信号に基づくシフト回路220の動作について説明する。ここでは、シフト回路2201のクロスバ221は、第1と第2のシフト加減算入力データをそのまま第1と第2のクロスバ出力データとして出力する。次に、SL2221は、Re{x1}に対応する第2のクロスバ出力データを、シフト処理を行わずに加減算器2231に出力する。また、SL2222は、Re{x0}成分に対応する第1のクロスバ出力データを、シフト処理を行わずに加減算器2232に出力する。次に、加減算器2231~2232は、それぞれ、2つの実数成分データについて加算処理および減算処理を行い、その演算処理による結果を、第1と第2のシフト加減算結果データとして、出力する。その後に、シフト回路2201は、虚数成分である第3と第4のシフト加減算入力データについても、実数成分である第1と第2のシフト加減算入力データと同様に、SL2223,2224および加減算器2233,2234を用いて加減算処理を実行する。そして、シフト回路2201は、その演算処理による結果を第3と第4のシフト加減算結果データとして出力する。その後、シフト回路2202~22016は、シフト回路2201から出力される第1~第4のシフト加減算結果データを、順次、そのまま出力する。つまり、シフト回路22016は、シフト回路2201から出力される第1~第4のシフト加減算結果データを、演算回路200の出力データとして出力する。そして、メモリ300は、制御回路100によって指定されたアドレスに基づいて、演算回路200の出力データを書き込む。これにより、プロセッサ10は、基数2のバタフライ演算の動作を終了する。<基数3のバタフライ演算に関する動作>次に、基数3のバタフライ演算を行うプロセッサ10の動作について、図5の模式図を用いて説明する。ここで、図5において、基数3のバタフライ演算を行う複素数データは、{x0,x1,x2}として表されている。その基数3のバタフライ演算による結果は、複素数{X0,X1,X2}として表されている。図5に示すように、基数3のバタフライ演算は、第1加減算ステージ~第4加減算ステージでの加減算処理と、係数乗算ステージでの係数乗算処理によって、実行される。また、係数乗算処理は、シフト加減算の繰り返しで実現されることが知られている。図5においては、シフト回路2201が、第1加減算ステージでの処理を実行する。シフト回路2202が、第2加減算ステージでの処理を実行する。シフト回路2207が、第3加減算ステージでの処理を実行する。シフト回路2208が、第4加減算ステージでの処理を実行する。シフト回路2203~2206が、係数乗算ステージでの処理を実行する。基数3のバタフライ演算を行う場合には、まず、制御回路100による制御によって、演算回路200のシフト回路2201に、第1~第3のシフト加減算入力データとして、図5に示した{x0,x1,x2}の実数成分データ{Re{x0},Re{x1},Re{x2}}が入力する。また、第4~第6のシフト加減算入力データとして、虚数成分データ{Im{x0},Im{x1},Im{x2}}が、シフト回路2201に入力する。制御回路100は、基数3のバタフライ演算を指示する演算モード制御信号を、演算回路200に供給する。その後に、シフト制御回路210は、シフト回路2201,2202,2207,2208に、それぞれ、次のようなシフト加減算制御信号を供給する。そのシフト加減算制御信号は、それぞれ、第1~第4加減算ステージにおいて加減算を行う入力データの組み合わせを示す情報を含んでいる。また、シフト制御回路210は、シフト回路2203~2206に、次に示すようなシフト加減算制御信号を供給する。そのシフト加減算制御信号は、係数乗算ステージにおいて係数を乗算する入力データおよびビットシフト量を制御する情報を含んでいる。なお、係数乗算ステージにおける係数が、図5に示す0.8660jjは虚数単位を表すのように虚数である場合には、シフト加減算制御信号は、係数乗算ステージを実行するシフト回路2203~2206のいずれかに対して、虚数の係数を乗算する虚数成分データと実数成分データとを入れ替えるように指示する情報を含んでいる。以下に、シフト加減算制御信号に基づくシフト回路220の動作について説明する。第1加減算ステージまず、シフト回路2201は、第1加減算ステージでの処理を実行する。つまり、シフト回路2201には、第1~第3のシフト加減算入力データとして、{Re{x0},Re{x1},Re{x2}}が入力する。シフト回路2201において、クロスバ221は、第1~第3のシフト加減算入力データを並べ替え、第1~第3のクロスバ出力データとして、{Re{x1},Re{x2},Re{x0}}を出力する。その後に、シフト回路2201において、SL2221,2222および加減算器2231,2232は、第1~第2のクロスバ出力データである{Re{x1},Re{x2}}に対して、基数2のバタフライ演算と同様の処理を行う。第3のクロスバ出力であるRe{x0}は、シフト回路2201によってそのまま出力される。シフト回路2201には、第4~第6の入力データとして、虚数成分データ{Im{x0},Im{x1},Im{x2}}が入力する。シフト回路2201において、クロスバ221、SL222、加減算器223は、虚数成分データに対して、実数成分データと同様の処理を行う。第2加減算ステージ次に、シフト回路2202は、シフト回路2201から出力されたデータに、第2加減算ステージにおける処理を実行する。つまり、シフト回路2202において、クロスバ221とSL222と加減算器223により、上記データに、第2加減算ステージにおける加減算処理を実行する。係数乗算ステージ次に、シフト回路2203~2206は、係数乗算ステージでの係数乗算処理を実行する。その係数乗算処理では、シフト加減算が繰り返し実行される。16ビット精度は、4ステージ4段のシフト加減算を行うことによって実現される。例えば、図5における-0.8660jの係数乗算処理においては、数式11に示すシフト加減算が繰り返し実行される。-0.8660jの係数乗算処理に着目して説明を続ける。この実施形態では、図5における係数1.0、係数-1.5、係数-0.8660jをそれぞれ乗算する各実数成分データが、第1~第3のシフト加減算入力データとして、シフト回路2202からシフト回路2203に入力する。さらに、図5における係数1.0、係数-1.5、係数-0.8660jをそれぞれ乗算する各虚数成分データが、第4~第6の入力データとして、シフト回路2202からシフト回路2203に入力する。次に、シフト回路2203において、クロスバ221は、第3のシフト加減算入力データと、第6のシフト加減算入力データとを入れ替える。第3のシフト加減算入力データは、虚数の係数である-0.8660jを乗ずる実数成分に対応するデータである。第6のシフト加減算入力データは、虚数の係数である-0.8660jを乗ずる虚数成分に対応するデータである。その後に、シフト回路2203において、SL2223は、第3のクロスバ出力データを3ビット右シフト処理し、処理後のデータを加減算器2231に出力する。加減算器2233は、SL2223から出力した上記データから、第3のクロスバ出力データを減算し、当該演算による結果をシフト回路2204に出力する。この実施形態では、シフト回路2203において、クロスバ221により、前述したように、実数成分第3のシフト加減算入力データと虚数成分第6のシフト加減算入力データとが入れ替えられている。これにより、シフト回路2204~2206においては、クロスバ221は、実数成分と虚数成分との入れ替えを行わない。シフト回路2204~2206で実行される-0.8660j係数乗算処理においては、SL2223および加減算器2233によって、7ビットと9ビットと12ビットの各右シフト処理、および、減算処理が行われる。同様に、シフト回路2203~2206は、それぞれSL2221,2222および加減算器2231,2232を用いて、係数1.0および係数-1.5についての乗算処理を実行する。第3~第4の加減算ステージ次に、シフト回路2207,2208は、それぞれ、シフト回路2201,2202と同様に動作して、第3~第4加減算ステージにおける加減算処理を実行する。シフト回路2209~22016は、それぞれ、シフト回路2208から出力した第1~第6のシフト加減算結果データをそのまま出力する。つまり、シフト回路22016は、シフト回路2208から出力した第1~第6のシフト加減算結果データを、そのまま演算回路200の出力データとして出力する。その後に、メモリ300は、制御回路100によって指定されるアドレスに基づいて、演算回路200の出力データを書き込む。これにより、プロセッサ10は、基数3のバタフライ演算の動作を終了する。<基数4と基数5の各バタフライ演算に関する動作>次に、基数4と基数5の各バタフライ演算を行うプロセッサ10の動作について説明する。基数4と基数5の各バタフライ演算を行う場合には、プロセッサ10は、複数サイクルでバタフライ演算を行う。このプロセッサ10の動作が、上述の基数3のバタフライ演算を行う動作とは異なる。基数4のバタフライ演算を行う場合には、入力データの数は、実数成分を示すデータと、虚数成分を示すデータとを合わせると、8個である。基数5のバタフライ演算を行う場合には、入力データの数は、実数成分を示すデータと、虚数成分を示すデータとを合わせると、10個である。この実施形態では、演算回路200に入力可能な入力データの数は、3M=6個である。このため、演算回路200は、基数4と基数5の各バタフライ演算を1サイクルだけでは処理できない。このことから、シフト制御回路210は、基数4または基数5のバタフライ演算処理を、実数成分処理と虚数成分処理に分け、それぞれの処理を異なるサイクルで行う。例えば、演算回路200は、偶数サイクルで実数成分処理を行う。演算回路200は、奇数サイクルで虚数成分処理を行う。また、係数乗算ステージで用いる係数が虚数の場合には、係数乗算ステージを処理するシフト回路220のいずれかのクロスバ221が、前述同様に、虚数の係数を乗算する実数成分データと虚数成分データとを入れ替える。その実数成分データは、偶数サイクルで入力したデータである。虚数成分データは、奇数サイクルで入力したデータである。上記以外の点については、プロセッサ10は、基数4と基数5の各バタフライ演算を行う複数ステージにおけるシフト加減算処理を、上述の基数3のバタフライ演算と同様に行う。このことから、その重複する詳細な説明を省略する。なお、この実施形態では、演算回路200に入力可能なデータの個数を6としている。これにより、プロセッサは、CORDIC演算を並列数2で実行可能である。また、プロセッサは、基数5までの任意の基数のバタフライ演算を処理可能である。これに対して、演算回路200に入力可能なデータの個数が増加し、かつ、シフト加減算回路シフト回路が時分割で複数の処理を行えば、プロセッサが実行できるCORDIC演算の並列数およびバタフライ演算の基数を増大できる。以下に、この実施形態のプロセッサが得ることができる効果について述べる。この実施形態のプロセッサは、DFT演算以外の処理を行う場合にも、基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に処理できる。その理由は、CORDIC演算を実行する複数のシフト加減算回路シフト回路が、それぞれ、バタフライ演算でのシフト加減算処理の各ステージを分担して実行するためである。このため、この実施形態のプロセッサは、バタフライ演算での加減算処理1回につき演算精度回数分の反復処理を伴うCORDIC演算を行う必要がない。さらなる理由は、この実施形態のプロセッサは、CORDIC演算を行うシフト加減算回路シフト回路を用いてバタフライ演算を行う。このため、シフト加減算回路シフト回路と別個のバタフライ演算回路が必要でない。換言すれば、そのバタフライ演算回路は設けられない。したがって、バタフライ演算以外の処理を行うときにバタフライ演算回路がアイドル状態になるという事態が発生しない。なお、この実施形態では、演算回路200は、シフト制御回路210を省略しても、所定の基数のバタフライ演算について、上記効果を奏することができる。この場合には、予め定められた基数のバタフライ演算を行うシフト加減算処理の各ステージにおいて、加減算するデータの組み合わせは予め定まる。予め定められた基数のバタフライ演算を行うシフト加減算処理に、係数乗算処理が含まれる場合であっても、係数乗算処理を実現するシフト演算におけるビットシフト量も予め定まる。したがって、演算回路200がシフト制御回路210を有していない場合には、各シフト回路220は、バタフライ演算モードでは、予め定められた入力データを入れ替える動作およびビットシフトを行う動作を行えばよい。また、この実施形態のプロセッサは、アプリケーションから要求される基数の種類に応じたバタフライ演算回路を予め備えることなく、任意の基数のバタフライ演算を効率的に処理できる。これに対して、第2の関連技術を採用したプロセッサCORDIC演算回路に加えてバタフライ演算回路を備えているプロセッサでは、アプリケーションから要求される基数の種類に応じたバタフライ演算回路を用意する必要がある。このために、プロセッサの効率が悪かった。この問題を、この実施形態のプロセッサは解決している。つまり、この実施形態では、基数が2のべき乗のバタフライ演算を行う場合には、シフト制御回路シフト加減算制御回路が、各シフト回路シフト加減算回路に対して、基数に応じて加減算を行うデータの組み合わせを制御する。この制御により、アプリケーションから要求される2のべき乗の基数の種類に応じたバタフライ演算回路を備える必要が無くなる。また、基数が2のべき乗でないバタフライ演算を行う場合には、シフト制御回路シフト加減算制御回路は、上記した加減算するデータの組み合わせを制御することに加えて、基数に応じた係数乗算処理を実行するシフト回路シフト加減算回路に対して、基数に応じたビットシフト量を制御する。これにより、アプリケーションから要求される2のべき乗でない基数の種類に応じたバタフライ演算回路を備える必要が無くなる。さらに、基数の2倍が演算回路に入力可能なデータ数以上である場合にバタフライ演算を行う場合には、シフト制御回路シフト加減算制御回路は、バタフライ演算に関わるシフト加減算処理を行うシフト回路シフト加減算回路に、実数成分データに対する処理と、虚数成分データに対する処理とを、異なるサイクルで実行するように制御する。上記のようなことにより、この実施形態では、上記問題プロセッサの効率が悪化する問題が解決される。この実施形態のプロセッサは、基数が2のべき乗でないバタフライ演算であって虚数の係数乗算処理を含むバタフライ演算も、効率的に実行できる。この理由は、シフト制御回路シフト加減算制御回路が、係数乗算処理を実行するシフト回路シフト加減算回路に、虚数の係数を乗算する実数成分データと虚数成分データを入れ替える制御を行うからである。なお、この発明は上述した実施形態に限定されるものではなく、様々な実施形態を採り得る。例えば、本発明に係るプロセッサは、図6に示される構成を採用してもよい。図6に示されるプロセッサ1は、演算部演算手段2と、制御部制御手段3とを有している。演算部2は、CORDICCOordinateRotationDIgitalComputer演算を実行可能に接続された複数のシフト加減算部シフト加減算手段を有する。前記シフト加減算部は、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理をも実行する。制御部3は、外部から受け取った複数のデータに基づいて、CORDIC演算またはバタフライ演算を実行することを前記演算部2に指示する。このプロセッサ1においても、前記実施形態と同様に、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できる。以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。なお、この出願は、2010年6月23日に出願された日本出願特願2010-142206を基礎とする優先権を主張し、その開示の全てをここに取り込む。"