📄 zlarfx.c
字号:
sum.i += v[7].r * c[i__1].i - v[7].i * c[i__1].r;
++i__1;
sum.r += v[8].r * c[i__1].r + v[8].i * c[i__1].i,
sum.i += v[8].r * c[i__1].i - v[8].i * c[i__1].r;
++i__1;
sum.r += v[9].r * c[i__1].r + v[9].i * c[i__1].i,
sum.i += v[9].r * c[i__1].i - v[9].i * c[i__1].r;
i__1 = j * *ldc;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
++i__1;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
++i__1;
c[i__1].r -= sum.r * t3.r - sum.i * t3.i,
c[i__1].i -= sum.r * t3.i + sum.i * t3.r;
++i__1;
c[i__1].r -= sum.r * t4.r - sum.i * t4.i,
c[i__1].i -= sum.r * t4.i + sum.i * t4.r;
++i__1;
c[i__1].r -= sum.r * t5.r - sum.i * t5.i,
c[i__1].i -= sum.r * t5.i + sum.i * t5.r;
++i__1;
c[i__1].r -= sum.r * t6.r - sum.i * t6.i,
c[i__1].i -= sum.r * t6.i + sum.i * t6.r;
++i__1;
c[i__1].r -= sum.r * t7.r - sum.i * t7.i,
c[i__1].i -= sum.r * t7.i + sum.i * t7.r;
++i__1;
c[i__1].r -= sum.r * t8.r - sum.i * t8.i,
c[i__1].i -= sum.r * t8.i + sum.i * t8.r;
++i__1;
c[i__1].r -= sum.r * t9.r - sum.i * t9.i,
c[i__1].i -= sum.r * t9.i + sum.i * t9.r;
++i__1;
c[i__1].r -= sum.r * t10.r - sum.i * t10.i,
c[i__1].i -= sum.r * t10.i + sum.i * t10.r;
}
return; /* exit zlarfx */
} else {
/* Form C * H, where H has order n. */
switch ((int)*n) {
case 1: goto L210;
case 2: goto L230;
case 3: goto L250;
case 4: goto L270;
case 5: goto L290;
case 6: goto L310;
case 7: goto L330;
case 8: goto L350;
case 9: goto L370;
case 10: goto L390;
}
/* Code for general N */
/* w := C * v */
zgemv_("No transpose", m, n, &c_b15, c, ldc, v, &c__1, &c_b2, work, &c__1);
/* C := C - tau * w * v' */
z__1.r = -tau->r, z__1.i = -tau->i;
zgerc_(m, n, &z__1, work, &c__1, v, &c__1, c, ldc);
return; /* exit zlarfx */
L210:
/* Special code for 1 x 1 Householder */
z__1.r = tau->r * v[0].r - tau->i * v[0].i,
z__1.i = tau->r * v[0].i + tau->i * v[0].r;
t1.r = 1. - z__1.r * v[0].r - z__1.i * v[0].i,
t1.i = 0. + z__1.r * v[0].i - z__1.i * v[0].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
z__1.r = t1.r * c[i__1].r - t1.i * c[i__1].i,
z__1.i = t1.r * c[i__1].i + t1.i * c[i__1].r;
c[i__1].r = z__1.r,
c[i__1].i = z__1.i;
}
return; /* exit zlarfx */
L230:
/* Special code for 2 x 2 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
sum.r = v[0].r * c[i__1].r - v[0].i * c[i__1].i,
sum.i = v[0].r * c[i__1].i + v[0].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[1].r * c[i__1].r - v[1].i * c[i__1].i,
sum.i += v[1].r * c[i__1].i + v[1].i * c[i__1].r;
i__1 = j;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
}
return; /* exit zlarfx */
L250:
/* Special code for 3 x 3 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
t3.r = tau->r * v[2].r + tau->i * v[2].i,
t3.i = - tau->r * v[2].i + tau->i * v[2].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
sum.r = v[0].r * c[i__1].r - v[0].i * c[i__1].i,
sum.i = v[0].r * c[i__1].i + v[0].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[1].r * c[i__1].r - v[1].i * c[i__1].i,
sum.i += v[1].r * c[i__1].i + v[1].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[2].r * c[i__1].r - v[2].i * c[i__1].i,
sum.i += v[2].r * c[i__1].i + v[2].i * c[i__1].r;
i__1 = j;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t3.r - sum.i * t3.i,
c[i__1].i -= sum.r * t3.i + sum.i * t3.r;
}
return; /* exit zlarfx */
L270:
/* Special code for 4 x 4 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
t3.r = tau->r * v[2].r + tau->i * v[2].i,
t3.i = - tau->r * v[2].i + tau->i * v[2].r;
t4.r = tau->r * v[3].r + tau->i * v[3].i,
t4.i = - tau->r * v[3].i + tau->i * v[3].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
sum.r = v[0].r * c[i__1].r - v[0].i * c[i__1].i,
sum.i = v[0].r * c[i__1].i + v[0].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[1].r * c[i__1].r - v[1].i * c[i__1].i,
sum.i += v[1].r * c[i__1].i + v[1].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[2].r * c[i__1].r - v[2].i * c[i__1].i,
sum.i += v[2].r * c[i__1].i + v[2].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[3].r * c[i__1].r - v[3].i * c[i__1].i,
sum.i += v[3].r * c[i__1].i + v[3].i * c[i__1].r;
i__1 = j;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t3.r - sum.i * t3.i,
c[i__1].i -= sum.r * t3.i + sum.i * t3.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t4.r - sum.i * t4.i,
c[i__1].i -= sum.r * t4.i + sum.i * t4.r;
}
return; /* exit zlarfx */
L290:
/* Special code for 5 x 5 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
t3.r = tau->r * v[2].r + tau->i * v[2].i,
t3.i = - tau->r * v[2].i + tau->i * v[2].r;
t4.r = tau->r * v[3].r + tau->i * v[3].i,
t4.i = - tau->r * v[3].i + tau->i * v[3].r;
t5.r = tau->r * v[4].r + tau->i * v[4].i,
t5.i = - tau->r * v[4].i + tau->i * v[4].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
sum.r = v[0].r * c[i__1].r - v[0].i * c[i__1].i,
sum.i = v[0].r * c[i__1].i + v[0].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[1].r * c[i__1].r - v[1].i * c[i__1].i,
sum.i += v[1].r * c[i__1].i + v[1].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[2].r * c[i__1].r - v[2].i * c[i__1].i,
sum.i += v[2].r * c[i__1].i + v[2].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[3].r * c[i__1].r - v[3].i * c[i__1].i,
sum.i += v[3].r * c[i__1].i + v[3].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[4].r * c[i__1].r - v[4].i * c[i__1].i,
sum.i += v[4].r * c[i__1].i + v[4].i * c[i__1].r;
i__1 = j;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t3.r - sum.i * t3.i,
c[i__1].i -= sum.r * t3.i + sum.i * t3.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t4.r - sum.i * t4.i,
c[i__1].i -= sum.r * t4.i + sum.i * t4.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t5.r - sum.i * t5.i,
c[i__1].i -= sum.r * t5.i + sum.i * t5.r;
}
return; /* exit zlarfx */
L310:
/* Special code for 6 x 6 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
t3.r = tau->r * v[2].r + tau->i * v[2].i,
t3.i = - tau->r * v[2].i + tau->i * v[2].r;
t4.r = tau->r * v[3].r + tau->i * v[3].i,
t4.i = - tau->r * v[3].i + tau->i * v[3].r;
t5.r = tau->r * v[4].r + tau->i * v[4].i,
t5.i = - tau->r * v[4].i + tau->i * v[4].r;
t6.r = tau->r * v[5].r + tau->i * v[5].i,
t6.i = - tau->r * v[5].i + tau->i * v[5].r;
for (j = 0; j < *m; ++j) {
i__1 = j;
sum.r = v[0].r * c[i__1].r - v[0].i * c[i__1].i,
sum.i = v[0].r * c[i__1].i + v[0].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[1].r * c[i__1].r - v[1].i * c[i__1].i,
sum.i += v[1].r * c[i__1].i + v[1].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[2].r * c[i__1].r - v[2].i * c[i__1].i,
sum.i += v[2].r * c[i__1].i + v[2].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[3].r * c[i__1].r - v[3].i * c[i__1].i,
sum.i += v[3].r * c[i__1].i + v[3].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[4].r * c[i__1].r - v[4].i * c[i__1].i,
sum.i += v[4].r * c[i__1].i + v[4].i * c[i__1].r;
i__1 += *ldc;
sum.r += v[5].r * c[i__1].r - v[5].i * c[i__1].i,
sum.i += v[5].r * c[i__1].i + v[5].i * c[i__1].r;
i__1 = j;
c[i__1].r -= sum.r * t1.r - sum.i * t1.i,
c[i__1].i -= sum.r * t1.i + sum.i * t1.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t2.r - sum.i * t2.i,
c[i__1].i -= sum.r * t2.i + sum.i * t2.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t3.r - sum.i * t3.i,
c[i__1].i -= sum.r * t3.i + sum.i * t3.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t4.r - sum.i * t4.i,
c[i__1].i -= sum.r * t4.i + sum.i * t4.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t5.r - sum.i * t5.i,
c[i__1].i -= sum.r * t5.i + sum.i * t5.r;
i__1 += *ldc;
c[i__1].r -= sum.r * t6.r - sum.i * t6.i,
c[i__1].i -= sum.r * t6.i + sum.i * t6.r;
}
return; /* exit zlarfx */
L330:
/* Special code for 7 x 7 Householder */
t1.r = tau->r * v[0].r + tau->i * v[0].i,
t1.i = - tau->r * v[0].i + tau->i * v[0].r;
t2.r = tau->r * v[1].r + tau->i * v[1].i,
t2.i = - tau->r * v[1].i + tau->i * v[1].r;
t3.r = tau->r * v[2].r + tau->i * v[2].i,
t3.i = - tau->r * v[2].i + tau->i * v[2].r;
t4.r = tau->r * v[3].r + tau->i * v[3].i,
t4.i = - tau->r * v[3].i + tau->i * v[3].r;
t5.r = tau->r * v[4].r + tau->i * v[4].i,
t5.i = - tau->r * v[4].i + tau->i * v[4].r;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -