📄 dtrsv.c
字号:
x[i__] -= temp * a[i__ + j * a_dim1];
/*< 10 CONTINUE >*/
/* L10: */
}
/*< END IF >*/
}
/*< 20 CONTINUE >*/
/* L20: */
}
/*< ELSE >*/
} else {
/*< JX = KX + ( N - 1 )*INCX >*/
jx = kx + (*n - 1) * *incx;
/*< DO 40, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< IF( X( JX ).NE.ZERO )THEN >*/
if (x[jx] != 0.) {
/*< >*/
if (nounit) {
x[jx] /= a[j + j * a_dim1];
}
/*< TEMP = X( JX ) >*/
temp = x[jx];
/*< IX = JX >*/
ix = jx;
/*< DO 30, I = J - 1, 1, -1 >*/
for (i__ = j - 1; i__ >= 1; --i__) {
/*< IX = IX - INCX >*/
ix -= *incx;
/*< X( IX ) = X( IX ) - TEMP*A( I, J ) >*/
x[ix] -= temp * a[i__ + j * a_dim1];
/*< 30 CONTINUE >*/
/* L30: */
}
/*< END IF >*/
}
/*< JX = JX - INCX >*/
jx -= *incx;
/*< 40 CONTINUE >*/
/* L40: */
}
/*< END IF >*/
}
/*< ELSE >*/
} else {
/*< IF( INCX.EQ.1 )THEN >*/
if (*incx == 1) {
/*< DO 60, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< IF( X( J ).NE.ZERO )THEN >*/
if (x[j] != 0.) {
/*< >*/
if (nounit) {
x[j] /= a[j + j * a_dim1];
}
/*< TEMP = X( J ) >*/
temp = x[j];
/*< DO 50, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< X( I ) = X( I ) - TEMP*A( I, J ) >*/
x[i__] -= temp * a[i__ + j * a_dim1];
/*< 50 CONTINUE >*/
/* L50: */
}
/*< END IF >*/
}
/*< 60 CONTINUE >*/
/* L60: */
}
/*< ELSE >*/
} else {
/*< JX = KX >*/
jx = kx;
/*< DO 80, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< IF( X( JX ).NE.ZERO )THEN >*/
if (x[jx] != 0.) {
/*< >*/
if (nounit) {
x[jx] /= a[j + j * a_dim1];
}
/*< TEMP = X( JX ) >*/
temp = x[jx];
/*< IX = JX >*/
ix = jx;
/*< DO 70, I = J + 1, N >*/
i__2 = *n;
for (i__ = j + 1; i__ <= i__2; ++i__) {
/*< IX = IX + INCX >*/
ix += *incx;
/*< X( IX ) = X( IX ) - TEMP*A( I, J ) >*/
x[ix] -= temp * a[i__ + j * a_dim1];
/*< 70 CONTINUE >*/
/* L70: */
}
/*< END IF >*/
}
/*< JX = JX + INCX >*/
jx += *incx;
/*< 80 CONTINUE >*/
/* L80: */
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< ELSE >*/
} else {
/* Form x := inv( A' )*x. */
/*< IF( LSAME( UPLO, 'U' ) )THEN >*/
if (lsame_(uplo, "U", (ftnlen)1, (ftnlen)1)) {
/*< IF( INCX.EQ.1 )THEN >*/
if (*incx == 1) {
/*< DO 100, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< TEMP = X( J ) >*/
temp = x[j];
/*< DO 90, I = 1, J - 1 >*/
i__2 = j - 1;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< TEMP = TEMP - A( I, J )*X( I ) >*/
temp -= a[i__ + j * a_dim1] * x[i__];
/*< 90 CONTINUE >*/
/* L90: */
}
/*< >*/
if (nounit) {
temp /= a[j + j * a_dim1];
}
/*< X( J ) = TEMP >*/
x[j] = temp;
/*< 100 CONTINUE >*/
/* L100: */
}
/*< ELSE >*/
} else {
/*< JX = KX >*/
jx = kx;
/*< DO 120, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< TEMP = X( JX ) >*/
temp = x[jx];
/*< IX = KX >*/
ix = kx;
/*< DO 110, I = 1, J - 1 >*/
i__2 = j - 1;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< TEMP = TEMP - A( I, J )*X( IX ) >*/
temp -= a[i__ + j * a_dim1] * x[ix];
/*< IX = IX + INCX >*/
ix += *incx;
/*< 110 CONTINUE >*/
/* L110: */
}
/*< >*/
if (nounit) {
temp /= a[j + j * a_dim1];
}
/*< X( JX ) = TEMP >*/
x[jx] = temp;
/*< JX = JX + INCX >*/
jx += *incx;
/*< 120 CONTINUE >*/
/* L120: */
}
/*< END IF >*/
}
/*< ELSE >*/
} else {
/*< IF( INCX.EQ.1 )THEN >*/
if (*incx == 1) {
/*< DO 140, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< TEMP = X( J ) >*/
temp = x[j];
/*< DO 130, I = N, J + 1, -1 >*/
i__1 = j + 1;
for (i__ = *n; i__ >= i__1; --i__) {
/*< TEMP = TEMP - A( I, J )*X( I ) >*/
temp -= a[i__ + j * a_dim1] * x[i__];
/*< 130 CONTINUE >*/
/* L130: */
}
/*< >*/
if (nounit) {
temp /= a[j + j * a_dim1];
}
/*< X( J ) = TEMP >*/
x[j] = temp;
/*< 140 CONTINUE >*/
/* L140: */
}
/*< ELSE >*/
} else {
/*< KX = KX + ( N - 1 )*INCX >*/
kx += (*n - 1) * *incx;
/*< JX = KX >*/
jx = kx;
/*< DO 160, J = N, 1, -1 >*/
for (j = *n; j >= 1; --j) {
/*< TEMP = X( JX ) >*/
temp = x[jx];
/*< IX = KX >*/
ix = kx;
/*< DO 150, I = N, J + 1, -1 >*/
i__1 = j + 1;
for (i__ = *n; i__ >= i__1; --i__) {
/*< TEMP = TEMP - A( I, J )*X( IX ) >*/
temp -= a[i__ + j * a_dim1] * x[ix];
/*< IX = IX - INCX >*/
ix -= *incx;
/*< 150 CONTINUE >*/
/* L150: */
}
/*< >*/
if (nounit) {
temp /= a[j + j * a_dim1];
}
/*< X( JX ) = TEMP >*/
x[jx] = temp;
/*< JX = JX - INCX >*/
jx -= *incx;
/*< 160 CONTINUE >*/
/* L160: */
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< END IF >*/
}
/*< RETURN >*/
return 0;
/* End of DTRSV . */
/*< END >*/
} /* dtrsv_ */
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -