📄 zgemm.c
字号:
i__3 = i__ + j * c_dim1;
c__[i__3].r = 0., c__[i__3].i = 0.;
/*< 10 CONTINUE >*/
/* L10: */
}
/*< 20 CONTINUE >*/
/* L20: */
}
/*< ELSE >*/
} else {
/*< DO 40, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< DO 30, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< C( I, J ) = BETA*C( I, J ) >*/
i__3 = i__ + j * c_dim1;
i__4 = i__ + j * c_dim1;
z__1.r = beta->r * c__[i__4].r - beta->i * c__[i__4].i,
z__1.i = beta->r * c__[i__4].i + beta->i * c__[
i__4].r;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< 30 CONTINUE >*/
/* L30: */
}
/*< 40 CONTINUE >*/
/* L40: */
}
/*< END IF >*/
}
/*< RETURN >*/
return 0;
/*< END IF >*/
}
/* Start the operations. */
/*< IF( NOTB )THEN >*/
if (notb) {
/*< IF( NOTA )THEN >*/
if (nota) {
/* Form C := alpha*A*B + beta*C. */
/*< DO 90, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< IF( BETA.EQ.ZERO )THEN >*/
if (beta->r == 0. && beta->i == 0.) {
/*< DO 50, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< C( I, J ) = ZERO >*/
i__3 = i__ + j * c_dim1;
c__[i__3].r = 0., c__[i__3].i = 0.;
/*< 50 CONTINUE >*/
/* L50: */
}
/*< ELSE IF( BETA.NE.ONE )THEN >*/
} else if (beta->r != 1. || beta->i != 0.) {
/*< DO 60, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< C( I, J ) = BETA*C( I, J ) >*/
i__3 = i__ + j * c_dim1;
i__4 = i__ + j * c_dim1;
z__1.r = beta->r * c__[i__4].r - beta->i * c__[i__4]
.i, z__1.i = beta->r * c__[i__4].i + beta->i *
c__[i__4].r;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< 60 CONTINUE >*/
/* L60: */
}
/*< END IF >*/
}
/*< DO 80, L = 1, K >*/
i__2 = *k;
for (l = 1; l <= i__2; ++l) {
/*< IF( B( L, J ).NE.ZERO )THEN >*/
i__3 = l + j * b_dim1;
if (b[i__3].r != 0. || b[i__3].i != 0.) {
/*< TEMP = ALPHA*B( L, J ) >*/
i__3 = l + j * b_dim1;
z__1.r = alpha->r * b[i__3].r - alpha->i * b[i__3].i,
z__1.i = alpha->r * b[i__3].i + alpha->i * b[
i__3].r;
temp.r = z__1.r, temp.i = z__1.i;
/*< DO 70, I = 1, M >*/
i__3 = *m;
for (i__ = 1; i__ <= i__3; ++i__) {
/*< C( I, J ) = C( I, J ) + TEMP*A( I, L ) >*/
i__4 = i__ + j * c_dim1;
i__5 = i__ + j * c_dim1;
i__6 = i__ + l * a_dim1;
z__2.r = temp.r * a[i__6].r - temp.i * a[i__6].i,
z__2.i = temp.r * a[i__6].i + temp.i * a[
i__6].r;
z__1.r = c__[i__5].r + z__2.r, z__1.i = c__[i__5]
.i + z__2.i;
c__[i__4].r = z__1.r, c__[i__4].i = z__1.i;
/*< 70 CONTINUE >*/
/* L70: */
}
/*< END IF >*/
}
/*< 80 CONTINUE >*/
/* L80: */
}
/*< 90 CONTINUE >*/
/* L90: */
}
/*< ELSE IF( CONJA )THEN >*/
} else if (conja) {
/* Form C := alpha*conjg( A' )*B + beta*C. */
/*< DO 120, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< DO 110, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< TEMP = ZERO >*/
temp.r = 0., temp.i = 0.;
/*< DO 100, L = 1, K >*/
i__3 = *k;
for (l = 1; l <= i__3; ++l) {
/*< TEMP = TEMP + DCONJG( A( L, I ) )*B( L, J ) >*/
d_cnjg(&z__3, &a[l + i__ * a_dim1]);
i__4 = l + j * b_dim1;
z__2.r = z__3.r * b[i__4].r - z__3.i * b[i__4].i,
z__2.i = z__3.r * b[i__4].i + z__3.i * b[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;
/*< 100 CONTINUE >*/
/* L100: */
}
/*< IF( BETA.EQ.ZERO )THEN >*/
if (beta->r == 0. && beta->i == 0.) {
/*< C( I, J ) = ALPHA*TEMP >*/
i__3 = i__ + j * c_dim1;
z__1.r = alpha->r * temp.r - alpha->i * temp.i,
z__1.i = alpha->r * temp.i + alpha->i *
temp.r;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< ELSE >*/
} else {
/*< C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) >*/
i__3 = i__ + j * c_dim1;
z__2.r = alpha->r * temp.r - alpha->i * temp.i,
z__2.i = alpha->r * temp.i + alpha->i *
temp.r;
i__4 = i__ + j * c_dim1;
z__3.r = beta->r * c__[i__4].r - beta->i * c__[i__4]
.i, z__3.i = beta->r * c__[i__4].i + beta->i *
c__[i__4].r;
z__1.r = z__2.r + z__3.r, z__1.i = z__2.i + z__3.i;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< END IF >*/
}
/*< 110 CONTINUE >*/
/* L110: */
}
/*< 120 CONTINUE >*/
/* L120: */
}
/*< ELSE >*/
} else {
/* Form C := alpha*A'*B + beta*C */
/*< DO 150, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< DO 140, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< TEMP = ZERO >*/
temp.r = 0., temp.i = 0.;
/*< DO 130, L = 1, K >*/
i__3 = *k;
for (l = 1; l <= i__3; ++l) {
/*< TEMP = TEMP + A( L, I )*B( L, J ) >*/
i__4 = l + i__ * a_dim1;
i__5 = l + j * b_dim1;
z__2.r = a[i__4].r * b[i__5].r - a[i__4].i * b[i__5]
.i, z__2.i = a[i__4].r * b[i__5].i + a[i__4]
.i * b[i__5].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: */
}
/*< IF( BETA.EQ.ZERO )THEN >*/
if (beta->r == 0. && beta->i == 0.) {
/*< C( I, J ) = ALPHA*TEMP >*/
i__3 = i__ + j * c_dim1;
z__1.r = alpha->r * temp.r - alpha->i * temp.i,
z__1.i = alpha->r * temp.i + alpha->i *
temp.r;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< ELSE >*/
} else {
/*< C( I, J ) = ALPHA*TEMP + BETA*C( I, J ) >*/
i__3 = i__ + j * c_dim1;
z__2.r = alpha->r * temp.r - alpha->i * temp.i,
z__2.i = alpha->r * temp.i + alpha->i *
temp.r;
i__4 = i__ + j * c_dim1;
z__3.r = beta->r * c__[i__4].r - beta->i * c__[i__4]
.i, z__3.i = beta->r * c__[i__4].i + beta->i *
c__[i__4].r;
z__1.r = z__2.r + z__3.r, z__1.i = z__2.i + z__3.i;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< END IF >*/
}
/*< 140 CONTINUE >*/
/* L140: */
}
/*< 150 CONTINUE >*/
/* L150: */
}
/*< END IF >*/
}
/*< ELSE IF( NOTA )THEN >*/
} else if (nota) {
/*< IF( CONJB )THEN >*/
if (conjb) {
/* Form C := alpha*A*conjg( B' ) + beta*C. */
/*< DO 200, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< IF( BETA.EQ.ZERO )THEN >*/
if (beta->r == 0. && beta->i == 0.) {
/*< DO 160, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< C( I, J ) = ZERO >*/
i__3 = i__ + j * c_dim1;
c__[i__3].r = 0., c__[i__3].i = 0.;
/*< 160 CONTINUE >*/
/* L160: */
}
/*< ELSE IF( BETA.NE.ONE )THEN >*/
} else if (beta->r != 1. || beta->i != 0.) {
/*< DO 170, I = 1, M >*/
i__2 = *m;
for (i__ = 1; i__ <= i__2; ++i__) {
/*< C( I, J ) = BETA*C( I, J ) >*/
i__3 = i__ + j * c_dim1;
i__4 = i__ + j * c_dim1;
z__1.r = beta->r * c__[i__4].r - beta->i * c__[i__4]
.i, z__1.i = beta->r * c__[i__4].i + beta->i *
c__[i__4].r;
c__[i__3].r = z__1.r, c__[i__3].i = z__1.i;
/*< 170 CONTINUE >*/
/* L170: */
}
/*< END IF >*/
}
/*< DO 190, L = 1, K >*/
i__2 = *k;
for (l = 1; l <= i__2; ++l) {
/*< IF( B( J, L ).NE.ZERO )THEN >*/
i__3 = j + l * b_dim1;
if (b[i__3].r != 0. || b[i__3].i != 0.) {
/*< TEMP = ALPHA*DCONJG( B( J, L ) ) >*/
d_cnjg(&z__2, &b[j + l * b_dim1]);
z__1.r = alpha->r * z__2.r - alpha->i * z__2.i,
z__1.i = alpha->r * z__2.i + alpha->i *
z__2.r;
temp.r = z__1.r, temp.i = z__1.i;
/*< DO 180, I = 1, M >*/
i__3 = *m;
for (i__ = 1; i__ <= i__3; ++i__) {
/*< C( I, J ) = C( I, J ) + TEMP*A( I, L ) >*/
i__4 = i__ + j * c_dim1;
i__5 = i__ + j * c_dim1;
i__6 = i__ + l * a_dim1;
z__2.r = temp.r * a[i__6].r - temp.i * a[i__6].i,
z__2.i = temp.r * a[i__6].i + temp.i * a[
i__6].r;
z__1.r = c__[i__5].r + z__2.r, z__1.i = c__[i__5]
.i + z__2.i;
c__[i__4].r = z__1.r, c__[i__4].i = z__1.i;
/*< 180 CONTINUE >*/
/* L180: */
}
/*< END IF >*/
}
/*< 190 CONTINUE >*/
/* L190: */
}
/*< 200 CONTINUE >*/
/* L200: */
}
/*< ELSE >*/
} else {
/* Form C := alpha*A*B' + beta*C */
/*< DO 250, J = 1, N >*/
i__1 = *n;
for (j = 1; j <= i__1; ++j) {
/*< IF( BETA.EQ.ZERO )THEN >*/
if (beta->r == 0. && beta->i == 0.) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -