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

📄 c_cblas2.c

📁 基于Blas CLapck的.用过的人知道是干啥的
💻 C
📖 第 1 页 / 共 2 页
字号:
              for( j=jcol; j<(*n+*k); j++ ) {	         A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real;                 A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag;              }           }        }        cblas_ctbsv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, 		    x, *incx);        free(A);     }  }  else if (*order == TEST_COL_MJR)     cblas_ctbsv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);  else     cblas_ctbsv(UNDEFINED, uplo, trans, diag, *n, *k, a, *lda, x, *incx);}void F77_ctpmv(int *order, char *uplow, char *transp, char *diagn,      int *n, CBLAS_TEST_COMPLEX *ap, CBLAS_TEST_COMPLEX *x, int *incx) {  CBLAS_TEST_COMPLEX *A, *AP;  int i, j, k, LDA;  enum CBLAS_TRANSPOSE trans;  enum CBLAS_UPLO uplo;  enum CBLAS_DIAG diag;  get_transpose_type(transp,&trans);  get_uplo_type(uplow,&uplo);  get_diag_type(diagn,&diag);  if (*order == TEST_ROW_MJR) {     if (uplo != CblasUpper && uplo != CblasLower )        cblas_ctpmv( CblasRowMajor, UNDEFINED, trans, diag, *n, ap, x, *incx );     else {        LDA = *n;        A=(CBLAS_TEST_COMPLEX*)malloc(LDA*LDA*sizeof(CBLAS_TEST_COMPLEX));        AP=(CBLAS_TEST_COMPLEX*)malloc((((LDA+1)*LDA)/2)*	 	sizeof(CBLAS_TEST_COMPLEX));        if (uplo == CblasUpper) {           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ) {                 A[ LDA*i+j ].real=ap[ k ].real;                 A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;                 AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        else {           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ) {                 A[ LDA*i+j ].real=ap[ k ].real;	         A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;	         AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        cblas_ctpmv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );        free(A);        free(AP);     }  }  else if (*order == TEST_COL_MJR)     cblas_ctpmv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );  else     cblas_ctpmv( UNDEFINED, uplo, trans, diag, *n, ap, x, *incx );}void F77_ctpsv(int *order, char *uplow, char *transp, char *diagn,     int *n, CBLAS_TEST_COMPLEX *ap, CBLAS_TEST_COMPLEX *x, int *incx) {  CBLAS_TEST_COMPLEX *A, *AP;  int i, j, k, LDA;  enum CBLAS_TRANSPOSE trans;  enum CBLAS_UPLO uplo;  enum CBLAS_DIAG diag;  get_transpose_type(transp,&trans);  get_uplo_type(uplow,&uplo);  get_diag_type(diagn,&diag);  if (*order == TEST_ROW_MJR) {     if (uplo != CblasUpper && uplo != CblasLower )        cblas_ctpsv( CblasRowMajor, UNDEFINED, trans, diag, *n, ap, x, *incx );     else {        LDA = *n;        A=(CBLAS_TEST_COMPLEX*)malloc(LDA*LDA*sizeof(CBLAS_TEST_COMPLEX));        AP=(CBLAS_TEST_COMPLEX*)malloc((((LDA+1)*LDA)/2)*		sizeof(CBLAS_TEST_COMPLEX));     	if (uplo == CblasUpper) {           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ) {                 A[ LDA*i+j ].real=ap[ k ].real;       	         A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;	         AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        else {           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ) {                 A[ LDA*i+j ].real=ap[ k ].real;                 A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;	         AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        cblas_ctpsv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );        free(A);        free(AP);     }  }  else if (*order == TEST_COL_MJR)     cblas_ctpsv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );  else     cblas_ctpsv( UNDEFINED, uplo, trans, diag, *n, ap, x, *incx );}void F77_ctrmv(int *order, char *uplow, char *transp, char *diagn,     int *n, CBLAS_TEST_COMPLEX *a, int *lda, CBLAS_TEST_COMPLEX *x,      int *incx) {  CBLAS_TEST_COMPLEX *A;  int i,j,LDA;  enum CBLAS_TRANSPOSE trans;  enum CBLAS_UPLO uplo;  enum CBLAS_DIAG diag;  get_transpose_type(transp,&trans);  get_uplo_type(uplow,&uplo);  get_diag_type(diagn,&diag);  if (*order == TEST_ROW_MJR) {     LDA=*n+1;     A=(CBLAS_TEST_COMPLEX*)malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX));     for( i=0; i<*n; i++ )       for( j=0; j<*n; j++ ) {	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;          A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;       }     cblas_ctrmv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx);     free(A);  }  else if (*order == TEST_COL_MJR)     cblas_ctrmv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx);  else     cblas_ctrmv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx);}void F77_ctrsv(int *order, char *uplow, char *transp, char *diagn,       int *n, CBLAS_TEST_COMPLEX *a, int *lda, CBLAS_TEST_COMPLEX *x,              int *incx) {  CBLAS_TEST_COMPLEX *A;  int i,j,LDA;  enum CBLAS_TRANSPOSE trans;  enum CBLAS_UPLO uplo;  enum CBLAS_DIAG diag;  get_transpose_type(transp,&trans);  get_uplo_type(uplow,&uplo);  get_diag_type(diagn,&diag);  if (*order == TEST_ROW_MJR) {     LDA = *n+1;     A =(CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX ) );     for( i=0; i<*n; i++ )        for( j=0; j<*n; j++ ) {           A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;	   A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;	}     cblas_ctrsv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx );     free(A);   }   else if (*order == TEST_COL_MJR)     cblas_ctrsv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx );   else     cblas_ctrsv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx );}void F77_chpr(int *order, char *uplow, int *n, float *alpha,	     CBLAS_TEST_COMPLEX *x, int *incx, CBLAS_TEST_COMPLEX *ap) {  CBLAS_TEST_COMPLEX *A, *AP;  int i,j,k,LDA;  enum CBLAS_UPLO uplo;  get_uplo_type(uplow,&uplo);  if (*order == TEST_ROW_MJR) {     if (uplo != CblasUpper && uplo != CblasLower )        cblas_chpr(CblasRowMajor, UNDEFINED, *n, *alpha, x, *incx, ap );     else {        LDA = *n;        A = (CBLAS_TEST_COMPLEX* )malloc(LDA*LDA*sizeof(CBLAS_TEST_COMPLEX ) );        AP = ( CBLAS_TEST_COMPLEX* )malloc( (((LDA+1)*LDA)/2)*		sizeof( CBLAS_TEST_COMPLEX ));        if (uplo == CblasUpper) {           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ){                 A[ LDA*i+j ].real=ap[ k ].real;                 A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ){                 AP[ k ].real=A[ LDA*i+j ].real;                 AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        else {           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ){                 A[ LDA*i+j ].real=ap[ k ].real;       	         A[ LDA*i+j ].imag=ap[ k ].imag;              }           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ){                 AP[ k ].real=A[ LDA*i+j ].real;                 AP[ k ].imag=A[ LDA*i+j ].imag;              }        }        cblas_chpr(CblasRowMajor, uplo, *n, *alpha, x, *incx, AP );        if (uplo == CblasUpper) {           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ){                 A[ LDA*i+j ].real=AP[ k ].real;                 A[ LDA*i+j ].imag=AP[ k ].imag;              }           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ){                 ap[ k ].real=A[ LDA*i+j ].real;                 ap[ k ].imag=A[ LDA*i+j ].imag;              }        }        else {           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ){                 A[ LDA*i+j ].real=AP[ k ].real;                 A[ LDA*i+j ].imag=AP[ k ].imag;              }           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ){                 ap[ k ].real=A[ LDA*i+j ].real;                 ap[ k ].imag=A[ LDA*i+j ].imag;              }        }        free(A);        free(AP);     }  }  else if (*order == TEST_COL_MJR)     cblas_chpr(CblasColMajor, uplo, *n, *alpha, x, *incx, ap );  else     cblas_chpr(UNDEFINED, uplo, *n, *alpha, x, *incx, ap );}void F77_chpr2(int *order, char *uplow, int *n, CBLAS_TEST_COMPLEX *alpha,       CBLAS_TEST_COMPLEX *x, int *incx, CBLAS_TEST_COMPLEX *y, int *incy,       CBLAS_TEST_COMPLEX *ap) {  CBLAS_TEST_COMPLEX *A, *AP;  int i,j,k,LDA;  enum CBLAS_UPLO uplo;  get_uplo_type(uplow,&uplo);  if (*order == TEST_ROW_MJR) {     if (uplo != CblasUpper && uplo != CblasLower )        cblas_chpr2( CblasRowMajor, UNDEFINED, *n, alpha, x, *incx, y, 		     *incy, ap );     else {        LDA = *n;        A=(CBLAS_TEST_COMPLEX*)malloc( LDA*LDA*sizeof(CBLAS_TEST_COMPLEX ) );        AP=(CBLAS_TEST_COMPLEX*)malloc( (((LDA+1)*LDA)/2)*	sizeof( CBLAS_TEST_COMPLEX ));        if (uplo == CblasUpper) {           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ) {                 A[ LDA*i+j ].real=ap[ k ].real;	         A[ LDA*i+j ].imag=ap[ k ].imag;	      }           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;	         AP[ k ].imag=A[ LDA*i+j ].imag;	      }        }        else {           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ) {	         A[ LDA*i+j ].real=ap[ k ].real;	         A[ LDA*i+j ].imag=ap[ k ].imag;	      }           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ) {                 AP[ k ].real=A[ LDA*i+j ].real;	         AP[ k ].imag=A[ LDA*i+j ].imag;	      }        }        cblas_chpr2( CblasRowMajor, uplo, *n, alpha, x, *incx, y, *incy, AP );        if (uplo == CblasUpper) {           for( i=0, k=0; i<*n; i++ )              for( j=i; j<*n; j++, k++ ) {                 A[ LDA*i+j ].real=AP[ k ].real;                 A[ LDA*i+j ].imag=AP[ k ].imag;              }           for( j=0, k=0; j<*n; j++ )              for( i=0; i<j+1; i++, k++ ) {                 ap[ k ].real=A[ LDA*i+j ].real;	         ap[ k ].imag=A[ LDA*i+j ].imag;              }        }        else {           for( i=0, k=0; i<*n; i++ )              for( j=0; j<i+1; j++, k++ ) {                 A[ LDA*i+j ].real=AP[ k ].real;	         A[ LDA*i+j ].imag=AP[ k ].imag;              }           for( j=0, k=0; j<*n; j++ )              for( i=j; i<*n; i++, k++ ) {                 ap[ k ].real=A[ LDA*i+j ].real;	         ap[ k ].imag=A[ LDA*i+j ].imag;              }        }        free(A);        free(AP);     }  }  else if (*order == TEST_COL_MJR)     cblas_chpr2( CblasColMajor, uplo, *n, alpha, x, *incx, y, *incy, ap );  else     cblas_chpr2( UNDEFINED, uplo, *n, alpha, x, *incx, y, *incy, ap );}void F77_cher(int *order, char *uplow, int *n, float *alpha,  CBLAS_TEST_COMPLEX *x, int *incx, CBLAS_TEST_COMPLEX *a, int *lda) {  CBLAS_TEST_COMPLEX *A;  int i,j,LDA;  enum CBLAS_UPLO uplo;  get_uplo_type(uplow,&uplo);  if (*order == TEST_ROW_MJR) {     LDA = *n+1;     A=(CBLAS_TEST_COMPLEX*)malloc((*n)*LDA*sizeof( CBLAS_TEST_COMPLEX ));     for( i=0; i<*n; i++ )        for( j=0; j<*n; j++ ) {	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;          A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;       }     cblas_cher(CblasRowMajor, uplo, *n, *alpha, x, *incx, A, LDA );     for( i=0; i<*n; i++ )       for( j=0; j<*n; j++ ) {	  a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;          a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;       }     free(A);  }  else if (*order == TEST_COL_MJR)     cblas_cher( CblasColMajor, uplo, *n, *alpha, x, *incx, a, *lda );  else     cblas_cher( UNDEFINED, uplo, *n, *alpha, x, *incx, a, *lda );}void F77_cher2(int *order, char *uplow, int *n, CBLAS_TEST_COMPLEX *alpha,          CBLAS_TEST_COMPLEX *x, int *incx, CBLAS_TEST_COMPLEX *y, int *incy,	  CBLAS_TEST_COMPLEX *a, int *lda) {  CBLAS_TEST_COMPLEX *A;  int i,j,LDA;  enum CBLAS_UPLO uplo;  get_uplo_type(uplow,&uplo);  if (*order == TEST_ROW_MJR) {     LDA = *n+1;     A= ( CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX ) );     for( i=0; i<*n; i++ )        for( j=0; j<*n; j++ ) {	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;          A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;       }     cblas_cher2(CblasRowMajor, uplo, *n, alpha, x, *incx, y, *incy, A, LDA );     for( i=0; i<*n; i++ )       for( j=0; j<*n; j++ ) {	  a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;          a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;       }     free(A);  }  else if (*order == TEST_COL_MJR)     cblas_cher2( CblasColMajor, uplo, *n, alpha, x, *incx, y, *incy, a, *lda);  else     cblas_cher2( UNDEFINED, uplo, *n, alpha, x, *incx, y, *incy, a, *lda);}

⌨️ 快捷键说明

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