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

📄 zgemm.c

📁 DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.
💻 C
📖 第 1 页 / 共 3 页
字号:
/*<                   DO 210, 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.;
/*<   210             CONTINUE >*/
/* L210: */
                    }
/*<                ELSE IF( BETA.NE.ONE )THEN >*/
                } else if (beta->r != 1. || beta->i != 0.) {
/*<                   DO 220, 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;
/*<   220             CONTINUE >*/
/* L220: */
                    }
/*<                END IF >*/
                }
/*<                DO 240, 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*B( J, L ) >*/
                        i__3 = j + l * 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 230, 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;
/*<   230                CONTINUE >*/
/* L230: */
                        }
/*<                   END IF >*/
                    }
/*<   240          CONTINUE >*/
/* L240: */
                }
/*<   250       CONTINUE >*/
/* L250: */
            }
/*<          END IF >*/
        }
/*<       ELSE IF( CONJA )THEN >*/
    } else if (conja) {
/*<          IF( CONJB )THEN >*/
        if (conjb) {

/*           Form  C := alpha*conjg( A' )*conjg( B' ) + beta*C. */

/*<             DO 280, J = 1, N >*/
            i__1 = *n;
            for (j = 1; j <= i__1; ++j) {
/*<                DO 270, I = 1, M >*/
                i__2 = *m;
                for (i__ = 1; i__ <= i__2; ++i__) {
/*<                   TEMP = ZERO >*/
                    temp.r = 0., temp.i = 0.;
/*<                   DO 260, L = 1, K >*/
                    i__3 = *k;
                    for (l = 1; l <= i__3; ++l) {
/*<    >*/
                        d_cnjg(&z__3, &a[l + i__ * a_dim1]);
                        d_cnjg(&z__4, &b[j + l * b_dim1]);
                        z__2.r = z__3.r * z__4.r - z__3.i * z__4.i, z__2.i = 
                                z__3.r * z__4.i + z__3.i * z__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;
/*<   260             CONTINUE >*/
/* L260: */
                    }
/*<                   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 >*/
                    }
/*<   270          CONTINUE >*/
/* L270: */
                }
/*<   280       CONTINUE >*/
/* L280: */
            }
/*<          ELSE >*/
        } else {

/*           Form  C := alpha*conjg( A' )*B' + beta*C */

/*<             DO 310, J = 1, N >*/
            i__1 = *n;
            for (j = 1; j <= i__1; ++j) {
/*<                DO 300, I = 1, M >*/
                i__2 = *m;
                for (i__ = 1; i__ <= i__2; ++i__) {
/*<                   TEMP = ZERO >*/
                    temp.r = 0., temp.i = 0.;
/*<                   DO 290, L = 1, K >*/
                    i__3 = *k;
                    for (l = 1; l <= i__3; ++l) {
/*<                      TEMP = TEMP + DCONJG( A( L, I ) )*B( J, L ) >*/
                        d_cnjg(&z__3, &a[l + i__ * a_dim1]);
                        i__4 = j + l * 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;
/*<   290             CONTINUE >*/
/* L290: */
                    }
/*<                   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 >*/
                    }
/*<   300          CONTINUE >*/
/* L300: */
                }
/*<   310       CONTINUE >*/
/* L310: */
            }
/*<          END IF >*/
        }
/*<       ELSE >*/
    } else {
/*<          IF( CONJB )THEN >*/
        if (conjb) {

/*           Form  C := alpha*A'*conjg( B' ) + beta*C */

/*<             DO 340, J = 1, N >*/
            i__1 = *n;
            for (j = 1; j <= i__1; ++j) {
/*<                DO 330, I = 1, M >*/
                i__2 = *m;
                for (i__ = 1; i__ <= i__2; ++i__) {
/*<                   TEMP = ZERO >*/
                    temp.r = 0., temp.i = 0.;
/*<                   DO 320, L = 1, K >*/
                    i__3 = *k;
                    for (l = 1; l <= i__3; ++l) {
/*<                      TEMP = TEMP + A( L, I )*DCONJG( B( J, L ) ) >*/
                        i__4 = l + i__ * a_dim1;
                        d_cnjg(&z__3, &b[j + l * b_dim1]);
                        z__2.r = a[i__4].r * z__3.r - a[i__4].i * z__3.i, 
                                z__2.i = a[i__4].r * z__3.i + a[i__4].i * 
                                z__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;
/*<   320             CONTINUE >*/
/* L320: */
                    }
/*<                   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 >*/
                    }
/*<   330          CONTINUE >*/
/* L330: */
                }
/*<   340       CONTINUE >*/
/* L340: */
            }
/*<          ELSE >*/
        } else {

/*           Form  C := alpha*A'*B' + beta*C */

/*<             DO 370, J = 1, N >*/
            i__1 = *n;
            for (j = 1; j <= i__1; ++j) {
/*<                DO 360, I = 1, M >*/
                i__2 = *m;
                for (i__ = 1; i__ <= i__2; ++i__) {
/*<                   TEMP = ZERO >*/
                    temp.r = 0., temp.i = 0.;
/*<                   DO 350, L = 1, K >*/
                    i__3 = *k;
                    for (l = 1; l <= i__3; ++l) {
/*<                      TEMP = TEMP + A( L, I )*B( J, L ) >*/
                        i__4 = l + i__ * a_dim1;
                        i__5 = j + l * 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;
/*<   350             CONTINUE >*/
/* L350: */
                    }
/*<                   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 >*/
                    }
/*<   360          CONTINUE >*/
/* L360: */
                }
/*<   370       CONTINUE >*/
/* L370: */
            }
/*<          END IF >*/
        }
/*<       END IF >*/
    }

/*<       RETURN >*/
    return 0;

/*     End of ZGEMM . */

/*<       END >*/
} /* zgemm_ */

#ifdef __cplusplus
        }
#endif

⌨️ 快捷键说明

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