ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

cordicatan2

CORDIC ベースの 4 象限逆正接

構文

theta = cordicatan2(y,x)
theta = cordicatan2(y,x,niters)

説明

theta = cordicatan2(y,x) は、CORDIC アルゴリズム近似を使用して、y および x の 4 象限逆正接を計算します。

theta = cordicatan2(y,x,niters) では、アルゴリズムの反復が niters 回実行されます。

入力引数

y,x

y,x は直交座標です。y および x は同じサイズでなければなりません。サイズが異なる場合は、少なくともいずれか一方の値がスカラー値でなければなりません。y および x は同じデータ型をもたなければなりません。

niters

niters は、CORDIC アルゴリズムによって実行される反復の回数です。これはオプションの引数です。指定する場合、niters は正の整数で、スカラーでなければなりません。niters を指定しない場合や指定した値が大きすぎた場合は、アルゴリズムでは最大値が使用されます。固定小数点の演算では、反復の最大回数は y または x の語長よりも 1 回少なくなります。浮動小数点の演算では、最大値は double で 52、single で 23 です。反復数を増やすと、結果の精度が高まりますが、計算量も増加し待ち時間も増えます。

出力引数

theta

theta は逆正接の値です。値の範囲は -pi から pi ラジアンです。y および x が浮動小数点数の場合、thetayx と同じデータ型になります。それ以外の場合、theta は固定小数点データ型となり、語長は y および x と同じで、小数部の長さは -pi から pi の値に対して最高精度となります。

浮動小数点 CORDIC 逆正接の計算。

theta_cdat2_float = cordicatan2(0.5,-0.5)

theta_cdat2_float =
    2.3562

固定小数点 CORDIC 逆正接の計算。

theta_cdat2_fixpt = cordicatan2(fi(0.5,1,16,15),fi(-0.5,1,16,15));

theta_cdat2_fixpt = 
    2.3562

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

詳細

すべて展開する

CORDIC

CORDIC は、COordinate Rotation DIgital Computer の略語です。ギブンス回転に基づく CORDIC アルゴリズムは、必要とされるものが Shift-Add 反復演算のみであることから、ハードウェア効率が最も優れたアルゴリズムの 1 つです (「参考文献」を参照)。CORDIC アルゴリズムは、明示的な乗数を必要としません。CORDIC を使用すると、正弦、余弦、逆正弦、逆余弦、逆正接、ベクトル振幅などのさまざまな関数を計算できます。また、このアルゴリズムは除算、平方根、双曲線、対数などの関数にも使用できます。

CORDIC の反復数を増やすと、結果の精度が高まりますが、計算量も増加し待ち時間も増えます。

アルゴリズム

信号の流れ図

CORDIC ベクトル モード カーネル

CORDIC カーネルの精度は X、Y および Z の初期値の選択に依存します。このアルゴリズムは以下の初期値を使用します。

x0 is initialized to the x input valuey0 is initialized to the y input valuez0 is initialized to 0

fimath の伝播ルール

CORDIC 関数は、入力に追加されたすべてのローカル fimath を破棄します。

CORDIC 関数は、計算の実行時に独自の内部 fimath を使用します。

  • OverflowActionWrap

  • RoundingMethodFloor

出力には fimath が追加されていません。

参考文献

[1] Volder, JE. “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers. Vol. EC-8, September 1959, pp. 330–334.

[2] Andraka, R. “A survey of CORDIC algorithm for FPGA based computers.” Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays. Feb. 22–24, 1998, pp. 191–200.

[3] Walther, J.S. “A Unified Algorithm for Elementary Functions.” Hewlett-Packard Company, Palo Alto. Spring Joint Computer Conference, 1971, pp. 379–386. (from the collection of the Computer History Museum). www.computer.org/csdl/proceedings/afips/1971/5077/00/50770379.pdf

[4] Schelin, Charles W. “Calculator Function Approximation.” The American Mathematical Monthly. Vol. 90, No. 5, May 1983, pp. 317–325.

この情報は役に立ちましたか?