📄 ztrmv.c
字号:
x[i__1].r = z__1.r, x[i__1].i = z__1.i;
}
/*< END IF >*/
}
/*< 60 CONTINUE >*/
/* L60: */
}
/*< ELSE >*/
} else {
/*< KX = KX + ( N - 1 )*INCX >*/
kx += (*n - 1) * *incx;
/*< JX = KX >*/
jx = kx;
/*< DO 80, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< IF( X( JX ).NE.ZERO )THEN >*/
i__1 = jx;
if (x[i__1].r != 0. || x[i__1].i != 0.) {
/*< TEMP = X( JX ) >*/
i__1 = jx;
temp.r = x[i__1].r, temp.i = x[i__1].i;
/*< IX = KX >*/
ix = kx;
/*< DO 70, I = N, J + 1, -1 >*/
i__1 = j + 1;
for (i__ = *n; i__ >= i__1; --i__) {
/*< X( IX ) = X( IX ) + TEMP*A( I, J ) >*/
i__2 = ix;
i__3 = ix;
i__4 = i__ + j * a_dim1;
z__2.r = temp.r * a[i__4].r - temp.i * a[i__4].i,
z__2.i = temp.r * a[i__4].i + temp.i * a[
i__4].r;
z__1.r = x[i__3].r + z__2.r, z__1.i = x[i__3].i +
z__2.i;
x[i__2].r = z__1.r, x[i__2].i = z__1.i;
/*< IX = IX - INCX >*/
ix -= *incx;
/*< 70 CONTINUE >*/
/* L70: */
}
/*< >*/
if (nounit) {
i__1 = jx;
i__2 = jx;
i__3 = j + j * a_dim1;
z__1.r = x[i__2].r * a[i__3].r - x[i__2].i * a[
i__3].i, z__1.i = x[i__2].r * a[i__3].i +
x[i__2].i * a[i__3].r;
x[i__1].r = z__1.r, x[i__1].i = z__1.i;
}
/*< END IF >*/
}
/*< JX = JX - INCX >*/
jx -= *incx;
/*< 80 CONTINUE >*/
/* L80: */
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< ELSE >*/
} else {
/* Form x := A'*x or x := conjg( A' )*x. */
/*< IF( LSAME( UPLO, 'U' ) )THEN >*/
if (lsame_(uplo, "U", (ftnlen)1, (ftnlen)1)) {
/*< IF( INCX.EQ.1 )THEN >*/
if (*incx == 1) {
/*< DO 110, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< TEMP = X( J ) >*/
i__1 = j;
temp.r = x[i__1].r, temp.i = x[i__1].i;
/*< IF( NOCONJ )THEN >*/
if (noconj) {
/*< >*/
if (nounit) {
i__1 = j + j * a_dim1;
z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
z__1.i = temp.r * a[i__1].i + temp.i * a[
i__1].r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 90, I = J - 1, 1, -1 >*/
for (i__ = j - 1; i__ >= 1; --i__) {
/*< TEMP = TEMP + A( I, J )*X( I ) >*/
i__1 = i__ + j * a_dim1;
i__2 = i__;
z__2.r = a[i__1].r * x[i__2].r - a[i__1].i * x[
i__2].i, z__2.i = a[i__1].r * x[i__2].i +
a[i__1].i * x[i__2].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 90 CONTINUE >*/
/* L90: */
}
/*< ELSE >*/
} else {
/*< >*/
if (nounit) {
d_cnjg(&z__2, &a[j + j * a_dim1]);
z__1.r = temp.r * z__2.r - temp.i * z__2.i,
z__1.i = temp.r * z__2.i + temp.i *
z__2.r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 100, I = J - 1, 1, -1 >*/
for (i__ = j - 1; i__ >= 1; --i__) {
/*< TEMP = TEMP + DCONJG( A( I, J ) )*X( I ) >*/
d_cnjg(&z__3, &a[i__ + j * a_dim1]);
i__1 = i__;
z__2.r = z__3.r * x[i__1].r - z__3.i * x[i__1].i,
z__2.i = z__3.r * x[i__1].i + z__3.i * x[
i__1].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 100 CONTINUE >*/
/* L100: */
}
/*< END IF >*/
}
/*< X( J ) = TEMP >*/
i__1 = j;
x[i__1].r = temp.r, x[i__1].i = temp.i;
/*< 110 CONTINUE >*/
/* L110: */
}
/*< ELSE >*/
} else {
/*< JX = KX + ( N - 1 )*INCX >*/
jx = kx + (*n - 1) * *incx;
/*< DO 140, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< TEMP = X( JX ) >*/
i__1 = jx;
temp.r = x[i__1].r, temp.i = x[i__1].i;
/*< IX = JX >*/
ix = jx;
/*< IF( NOCONJ )THEN >*/
if (noconj) {
/*< >*/
if (nounit) {
i__1 = j + j * a_dim1;
z__1.r = temp.r * a[i__1].r - temp.i * a[i__1].i,
z__1.i = temp.r * a[i__1].i + temp.i * a[
i__1].r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 120, I = J - 1, 1, -1 >*/
for (i__ = j - 1; i__ >= 1; --i__) {
/*< IX = IX - INCX >*/
ix -= *incx;
/*< TEMP = TEMP + A( I, J )*X( IX ) >*/
i__1 = i__ + j * a_dim1;
i__2 = ix;
z__2.r = a[i__1].r * x[i__2].r - a[i__1].i * x[
i__2].i, z__2.i = a[i__1].r * x[i__2].i +
a[i__1].i * x[i__2].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 120 CONTINUE >*/
/* L120: */
}
/*< ELSE >*/
} else {
/*< >*/
if (nounit) {
d_cnjg(&z__2, &a[j + j * a_dim1]);
z__1.r = temp.r * z__2.r - temp.i * z__2.i,
z__1.i = temp.r * z__2.i + temp.i *
z__2.r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 130, I = J - 1, 1, -1 >*/
for (i__ = j - 1; i__ >= 1; --i__) {
/*< IX = IX - INCX >*/
ix -= *incx;
/*< TEMP = TEMP + DCONJG( A( I, J ) )*X( IX ) >*/
d_cnjg(&z__3, &a[i__ + j * a_dim1]);
i__1 = ix;
z__2.r = z__3.r * x[i__1].r - z__3.i * x[i__1].i,
z__2.i = z__3.r * x[i__1].i + z__3.i * x[
i__1].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 130 CONTINUE >*/
/* L130: */
}
/*< END IF >*/
}
/*< X( JX ) = TEMP >*/
i__1 = jx;
x[i__1].r = temp.r, x[i__1].i = temp.i;
/*< JX = JX - INCX >*/
jx -= *incx;
/*< 140 CONTINUE >*/
/* L140: */
}
/*< END IF >*/
}
/*< ELSE >*/
} else {
/*< IF( INCX.EQ.1 )THEN >*/
if (*incx == 1) {
/*< DO 170, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< TEMP = X( J ) >*/
i__2 = j;
temp.r = x[i__2].r, temp.i = x[i__2].i;
/*< IF( NOCONJ )THEN >*/
if (noconj) {
/*< >*/
if (nounit) {
i__2 = j + j * a_dim1;
z__1.r = temp.r * a[i__2].r - temp.i * a[i__2].i,
z__1.i = temp.r * a[i__2].i + temp.i * a[
i__2].r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 150, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< TEMP = TEMP + A( I, J )*X( I ) >*/
i__3 = i__ + j * a_dim1;
i__4 = i__;
z__2.r = a[i__3].r * x[i__4].r - a[i__3].i * x[
i__4].i, z__2.i = a[i__3].r * x[i__4].i +
a[i__3].i * x[i__4].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 150 CONTINUE >*/
/* L150: */
}
/*< ELSE >*/
} else {
/*< >*/
if (nounit) {
d_cnjg(&z__2, &a[j + j * a_dim1]);
z__1.r = temp.r * z__2.r - temp.i * z__2.i,
z__1.i = temp.r * z__2.i + temp.i *
z__2.r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 160, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< TEMP = TEMP + DCONJG( A( I, J ) )*X( I ) >*/
d_cnjg(&z__3, &a[i__ + j * a_dim1]);
i__3 = i__;
z__2.r = z__3.r * x[i__3].r - z__3.i * x[i__3].i,
z__2.i = z__3.r * x[i__3].i + z__3.i * x[
i__3].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 160 CONTINUE >*/
/* L160: */
}
/*< END IF >*/
}
/*< X( J ) = TEMP >*/
i__2 = j;
x[i__2].r = temp.r, x[i__2].i = temp.i;
/*< 170 CONTINUE >*/
/* L170: */
}
/*< ELSE >*/
} else {
/*< JX = KX >*/
jx = kx;
/*< DO 200, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< TEMP = X( JX ) >*/
i__2 = jx;
temp.r = x[i__2].r, temp.i = x[i__2].i;
/*< IX = JX >*/
ix = jx;
/*< IF( NOCONJ )THEN >*/
if (noconj) {
/*< >*/
if (nounit) {
i__2 = j + j * a_dim1;
z__1.r = temp.r * a[i__2].r - temp.i * a[i__2].i,
z__1.i = temp.r * a[i__2].i + temp.i * a[
i__2].r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 180, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< IX = IX + INCX >*/
ix += *incx;
/*< TEMP = TEMP + A( I, J )*X( IX ) >*/
i__3 = i__ + j * a_dim1;
i__4 = ix;
z__2.r = a[i__3].r * x[i__4].r - a[i__3].i * x[
i__4].i, z__2.i = a[i__3].r * x[i__4].i +
a[i__3].i * x[i__4].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 180 CONTINUE >*/
/* L180: */
}
/*< ELSE >*/
} else {
/*< >*/
if (nounit) {
d_cnjg(&z__2, &a[j + j * a_dim1]);
z__1.r = temp.r * z__2.r - temp.i * z__2.i,
z__1.i = temp.r * z__2.i + temp.i *
z__2.r;
temp.r = z__1.r, temp.i = z__1.i;
}
/*< DO 190, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< IX = IX + INCX >*/
ix += *incx;
/*< TEMP = TEMP + DCONJG( A( I, J ) )*X( IX ) >*/
d_cnjg(&z__3, &a[i__ + j * a_dim1]);
i__3 = ix;
z__2.r = z__3.r * x[i__3].r - z__3.i * x[i__3].i,
z__2.i = z__3.r * x[i__3].i + z__3.i * x[
i__3].r;
z__1.r = temp.r + z__2.r, z__1.i = temp.i +
z__2.i;
temp.r = z__1.r, temp.i = z__1.i;
/*< 190 CONTINUE >*/
/* L190: */
}
/*< END IF >*/
}
/*< X( JX ) = TEMP >*/
i__2 = jx;
x[i__2].r = temp.r, x[i__2].i = temp.i;
/*< JX = JX + INCX >*/
jx += *incx;
/*< 200 CONTINUE >*/
/* L200: */
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< RETURN >*/
return 0;
/* End of ZTRMV . */
/*< END >*/
} /* ztrmv_ */
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -