⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlarfx.c

📁 InsightToolkit-1.4.0(有大量的优化算法程序)
💻 C
📖 第 1 页 / 共 4 页
字号:
            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 + -