?ROTG_

List

srotg_単精度実 数で与えられた点に対してy座標をゼロにするGivens回転を求める
drotg_倍精度実 数で与えられた点に対してy座標をゼロにするGivens回転を求める
crotg_単精度複素数で与えられた点に対してy座標をゼロにするGivens回転を求める
zrotg_倍精度複素数で与えられた点に対してy座標をゼロにするGivens回転を求める

概略

点P(a,b)を与えます。 この点をGivens回転させ、y座標をゼロにするようなパラメータa,b,c,sを計算させます。QR分解などに応用が可能です。このとき返ってくるc,sを?rot_に与えると、求めた回転が実行されます

計算式

c * a + s * b = r
-s * a + c * b = 0
r = ||(a,b)||
c^2 + s^2 = 1
z=s if |a| > |b|
z=1/c if |a| <= |b| and c != 0 and r != 0

を満たすr,z,c,sを求めます。
ただし、r=0になる場合はz = 0, c = 1,s = 0が返ってきます。
また、c=0になる場合で、|a| <= |b| and c != 0 and r != 0 の場合は、z=1 が返ってきます

プロトタイプ宣言

void srotg_(float *a,float *b, float *c, float *s);
void drotg_(double *a,double *b, double *c, double *s);
void crotg_(complex *a,complex *b, float *c, float *s);
void zrotg_(doublecomplex *a,doublecomplex *b, double *c, double *s);

引数/戻り値

変数名概要
a double*Pのx座標 : 求めたrの値が格納され返ってくる
b double*Pのy座標 : 求めたzの値が格納され返ってくる
c double*求めたcの値が格納される
s double*求めたsの値が格納される
戻り値void