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

📄 ztrmv.c

📁 InsightToolkit-1.4.0(有大量的优化算法程序)
💻 C
📖 第 1 页 / 共 2 页
字号:
                            z__1.i = x[jx].r * a[i__1].i + x[jx].i * a[i__1].r;
                            x[jx].r = z__1.r, x[jx].i = z__1.i;
                        }
                    }
                    jx += *incx;
                }
            }
        } else {
            if (*incx == 1) {
                for (j = *n - 1; j >= 0; --j) {

                    if (x[j].r != 0. || x[j].i != 0.) {

                        temp.r = x[j].r, temp.i = x[j].i;
                        for (i = *n - 1; i > j; --i) {
                            i__1 = i + j * *lda;
                            x[i].r += temp.r * a[i__1].r - temp.i * a[i__1].i,
                            x[i].i += temp.r * a[i__1].i + temp.i * a[i__1].r;
                        }
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = x[j].r * a[i__1].r - x[j].i * a[i__1].i,
                            z__1.i = x[j].r * a[i__1].i + x[j].i * a[i__1].r;
                            x[j].r = z__1.r, x[j].i = z__1.i;
                        }
                    }
                }
            } else {
                kx += (*n - 1) * *incx;
                jx = kx;
                for (j = *n - 1; j >= 0; --j) {
                    if (x[jx].r != 0. || x[jx].i != 0.) {
                        temp.r = x[jx].r, temp.i = x[jx].i;
                        ix = kx;
                        for (i = *n - 1; i > j; --i) {
                            i__1 = i + j * *lda;
                            x[ix].r += temp.r * a[i__1].r - temp.i * a[i__1].i,
                            x[ix].i += temp.r * a[i__1].i + temp.i * a[i__1].r;
                            ix -= *incx;
                        }
                        if (nounit) {
                            i__1 = j + j * *lda;
                            x[jx].r = x[jx].r * a[i__1].r - x[jx].i * a[i__1].i,
                            x[jx].i = x[jx].r * a[i__1].i + x[jx].i * a[i__1].r;
                        }
                    }
                    jx -= *incx;
                }
            }
        }
    } else {

/*        Form  x := A'*x  or  x := conjg( A' )*x. */

        if (lsame_(uplo, "U")) {
            if (*incx == 1) {
                for (j = *n - 1; j >= 0; --j) {

                    temp.r = x[j].r, temp.i = x[j].i;
                    if (noconj) {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r + temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j - 1; i >= 0; --i) {
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[i].r - a[i__1].i * x[i].i,
                            temp.i += a[i__1].r * x[i].i + a[i__1].i * x[i].r;
                        }
                    } else {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r + temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r - temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j - 1; i >= 0; --i) {
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[i].r + a[i__1].i * x[i].i,
                            temp.i += a[i__1].r * x[i].i - a[i__1].i * x[i].r;
                        }
                    }

                    x[j].r = temp.r, x[j].i = temp.i;
                }
            } else {
                jx = kx + (*n - 1) * *incx;
                for (j = *n - 1; j >= 0; --j) {
                    temp.r = x[jx].r, temp.i = x[jx].i;
                    ix = jx;
                    if (noconj) {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r + temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j - 1; i >= 0; --i) {
                            ix -= *incx;
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[ix].r - a[i__1].i * x[ix].i,
                            temp.i += a[i__1].r * x[ix].i + a[i__1].i * x[ix].r;
                        }
                    } else {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r + temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r - temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j - 1; i >= 0; --i) {
                            ix -= *incx;
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[ix].r + a[i__1].i * x[ix].i,
                            temp.i += a[i__1].r * x[ix].i - a[i__1].i * x[ix].r;
                        }
                    }
                    x[jx].r = temp.r, x[jx].i = temp.i;
                    jx -= *incx;
                }
            }
        } else {
            if (*incx == 1) {
                for (j = 0; j < *n; ++j) {
                    temp.r = x[j].r, temp.i = x[j].i;
                    if (noconj) {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r + temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j + 1; i < *n; ++i) {
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[i].r - a[i__1].i * x[i].i,
                            temp.i += a[i__1].r * x[i].i + a[i__1].i * x[i].r;
                        }
                    } else {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r + temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r - temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j + 1; i < *n; ++i) {
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[i].r + a[i__1].i * x[i].i,
                            temp.i += a[i__1].r * x[i].i - a[i__1].i * x[i].r;
                        }
                    }

                    x[j].r = temp.r, x[j].i = temp.i;
                }
            } else {
                jx = kx;
                for (j = 0; j < *n; ++j) {
                    temp.r = x[jx].r, temp.i = x[jx].i;
                    ix = jx;
                    if (noconj) {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r + temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j + 1; i < *n; ++i) {
                            ix += *incx;
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[ix].r - a[i__1].i * x[ix].i,
                            temp.i += a[i__1].r * x[ix].i + a[i__1].i * x[ix].r;
                        }
                    } else {
                        if (nounit) {
                            i__1 = j + j * *lda;
                            z__1.r = temp.r * a[i__1].r + temp.i * a[i__1].i,
                            z__1.i = temp.i * a[i__1].r - temp.r * a[i__1].i;
                            temp.r = z__1.r, temp.i = z__1.i;
                        }
                        for (i = j + 1; i < *n; ++i) {
                            ix += *incx;
                            i__1 = i + j * *lda;
                            temp.r += a[i__1].r * x[ix].r + a[i__1].i * x[ix].i,
                            temp.i += a[i__1].r * x[ix].i - a[i__1].i * x[ix].r;
                        }
                    }
                    x[jx].r = temp.r, x[jx].i = temp.i;
                    jx += *incx;
                }
            }
        }
    }
} /* ztrmv_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -