?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 |