181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray/*
281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *     Written by D.P. Manley, Digital Equipment Corporation.
381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *     Prefixed "C_" to BLAS routines and their declarations.
481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *
581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *     Modified by T. H. Do, 1/23/98, SGI/CRAY Research.
681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray */
781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdlib.h>
881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas.h"
981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas_test.h"
1081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
1181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dgemv(int *order, char *transp, int *m, int *n, double *alpha,
1281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	       double *a, int *lda, double *x, int *incx, double *beta,
1381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	       double *y, int *incy ) {
1481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
1581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
1681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
1781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
1881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
1981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp, &trans);
2081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
2181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
2281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*m)*LDA*sizeof( double ) );
2381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*m; i++ )
2481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
2581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*i+j ]=a[ (*lda)*j+i ];
2681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dgemv( CblasRowMajor, trans,
2781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  *m, *n, *alpha, A, LDA, x, *incx, *beta, y, *incy );
2881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
2981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
3081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else if (*order == TEST_COL_MJR)
3181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dgemv( CblasColMajor, trans,
3281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy );
3381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
3481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dgemv( UNDEFINED, trans,
3581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy );
3681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
3781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
3881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dger(int *order, int *m, int *n, double *alpha, double *x, int *incx,
3981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	     double *y, int *incy, double *a, int *lda ) {
4081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
4181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
4281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
4381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
4481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
4581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
4681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*m)*LDA*sizeof( double ) );
4781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
4881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*m; i++ ) {
4981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
5081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray         A[ LDA*i+j ]=a[ (*lda)*j+i ];
5181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
5281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
5381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dger(CblasRowMajor, *m, *n, *alpha, x, *incx, y, *incy, A, LDA );
5481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*m; i++ )
5581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
5681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray         a[ (*lda)*j+i ]=A[ LDA*i+j ];
5781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
5881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
5981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
6081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dger( CblasColMajor, *m, *n, *alpha, x, *incx, y, *incy, a, *lda );
6181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
6281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
6381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtrmv(int *order, char *uplow, char *transp, char *diagn,
6481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *n, double *a, int *lda, double *x, int *incx) {
6581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
6681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
6781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
6881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
6981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
7081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
7181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
7281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
7381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
7481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
7581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
7681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
7781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n)*LDA*sizeof( double ) );
7881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
7981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
8081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray         A[ LDA*i+j ]=a[ (*lda)*j+i ];
8181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtrmv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx);
8281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
8381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
8481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else if (*order == TEST_COL_MJR)
8581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtrmv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx);
8681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else {
8781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtrmv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx);
8881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
8981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
9081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
9181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtrsv(int *order, char *uplow, char *transp, char *diagn,
9281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	       int *n, double *a, int *lda, double *x, int *incx ) {
9381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
9481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
9581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
9681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
9781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
9881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
9981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
10081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
10181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
10281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
10381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
10481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
10581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n)*LDA*sizeof( double ) );
10681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
10781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
10881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*i+j ]=a[ (*lda)*j+i ];
10981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtrsv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx );
11081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
11181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
11281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
11381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtrsv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx );
11481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
11581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsymv(int *order, char *uplow, int *n, double *alpha, double *a,
11681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *lda, double *x, int *incx, double *beta, double *y,
11781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *incy) {
11881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
11981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
12081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
12181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
12281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
12381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
12481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
12581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
12681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n)*LDA*sizeof( double ) );
12781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
12881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
12981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*i+j ]=a[ (*lda)*j+i ];
13081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsymv(CblasRowMajor, uplo, *n, *alpha, A, LDA, x, *incx,
13181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		 *beta, y, *incy );
13281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
13381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
13481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
13581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsymv(CblasColMajor, uplo, *n, *alpha, a, *lda, x, *incx,
13681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		 *beta, y, *incy );
13781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
13881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
13981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsyr(int *order, char *uplow, int *n, double *alpha, double *x,
14081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	     int *incx, double *a, int *lda) {
14181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
14281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
14381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
14481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
14581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
14681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
14781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
14881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
14981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n)*LDA*sizeof( double ) );
15081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
15181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
15281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*i+j ]=a[ (*lda)*j+i ];
15381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsyr(CblasRowMajor, uplo, *n, *alpha, x, *incx, A, LDA);
15481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
15581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
15681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray         a[ (*lda)*j+i ]=A[ LDA*i+j ];
15781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
15881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
15981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
16081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsyr(CblasColMajor, uplo, *n, *alpha, x, *incx, a, *lda);
16181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
16281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
16381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsyr2(int *order, char *uplow, int *n, double *alpha, double *x,
16481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	     int *incx, double *y, int *incy, double *a, int *lda) {
16581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
16681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,LDA;
16781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
16881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
16981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
17081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
17181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
17281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n+1;
17381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n)*LDA*sizeof( double ) );
17481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
17581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
17681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*i+j ]=a[ (*lda)*j+i ];
17781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsyr2(CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, A, LDA);
17881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*n; i++ )
17981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
18081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray         a[ (*lda)*j+i ]=A[ LDA*i+j ];
18181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
18281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
18381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
18481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsyr2(CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, a, *lda);
18581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
18681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
18781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dgbmv(int *order, char *transp, int *m, int *n, int *kl, int *ku,
18881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	       double *alpha, double *a, int *lda, double *x, int *incx,
18981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	       double *beta, double *y, int *incy ) {
19081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
19181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
19281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,irow,j,jcol,LDA;
19381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
19481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
19581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp, &trans);
19681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
19781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
19881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *ku+*kl+2;
19981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n+*kl)*LDA*sizeof( double ) );
20081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=0; i<*ku; i++ ){
20181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*ku+*kl-i;
20281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        jcol=(*ku)-i;
20381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=jcol; j<*n; j++ )
20481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
20581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
20681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     i=*ku;
20781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     irow=*ku+*kl-i;
20881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( j=0; j<*n; j++ )
20981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        A[ LDA*j+irow ]=a[ (*lda)*j+i ];
21081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     for( i=*ku+1; i<*ku+*kl+1; i++ ){
21181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*ku+*kl-i;
21281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        jcol=i-(*ku);
21381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=jcol; j<(*n+*kl); j++ )
21481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
21581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
21681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dgbmv( CblasRowMajor, trans, *m, *n, *kl, *ku, *alpha,
21781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  A, LDA, x, *incx, *beta, y, *incy );
21881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
21981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
22081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
22181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dgbmv( CblasColMajor, trans, *m, *n, *kl, *ku, *alpha,
22281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  a, *lda, x, *incx, *beta, y, *incy );
22381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
22481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
22581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtbmv(int *order, char *uplow, char *transp, char *diagn,
22681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *n, int *k, double *a, int *lda, double *x, int *incx) {
22781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
22881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int irow, jcol, i, j, LDA;
22981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
23081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
23181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
23281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
23381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
23481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
23581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
23681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
23781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
23881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *k+1;
23981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
24081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
24181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0; i<*k; i++ ){
24281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           irow=*k-i;
24381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           jcol=(*k)-i;
24481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=jcol; j<*n; j++ )
24581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
24681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        }
24781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        i=*k;
24881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
24981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
25081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*j+i ];
25181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
25281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
25381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       i=0;
25481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       irow=*k-i;
25581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( j=0; j<*n; j++ )
25681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray          A[ LDA*j+irow ]=a[ (*lda)*j+i ];
25781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       for( i=1; i<*k+1; i++ ){
25881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray          irow=*k-i;
25981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray          jcol=i;
26081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray          for( j=jcol; j<(*n+*k); j++ )
26181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray             A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
26281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray       }
26381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
26481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtbmv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx);
26581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
26681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
26781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
26881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtbmv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
26981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
27081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
27181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtbsv(int *order, char *uplow, char *transp, char *diagn,
27281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *n, int *k, double *a, int *lda, double *x, int *incx) {
27381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
27481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int irow, jcol, i, j, LDA;
27581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
27681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
27781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
27881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
27981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
28081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
28181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
28281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
28381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
28481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *k+1;
28581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
28681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
28781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0; i<*k; i++ ){
28881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
28981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        jcol=(*k)-i;
29081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=jcol; j<*n; j++ )
29181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
29281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        }
29381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        i=*k;
29481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
29581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
29681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*j+i ];
29781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
29881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
29981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        i=0;
30081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
30181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
30281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*j+i ];
30381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=1; i<*k+1; i++ ){
30481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           irow=*k-i;
30581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           jcol=i;
30681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=jcol; j<(*n+*k); j++ )
30781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
30881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        }
30981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
31081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtbsv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx);
31181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
31281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
31381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
31481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtbsv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
31581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
31681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
31781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsbmv(int *order, char *uplow, int *n, int *k, double *alpha,
31881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      double *a, int *lda, double *x, int *incx, double *beta,
31981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      double *y, int *incy) {
32081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A;
32181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,irow,jcol,LDA;
32281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
32381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
32481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
32581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
32681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
32781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *k+1;
32881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
32981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
33081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0; i<*k; i++ ){
33181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           irow=*k-i;
33281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           jcol=(*k)-i;
33381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=jcol; j<*n; j++ )
33481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
33581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        }
33681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        i=*k;
33781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
33881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
33981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*j+i ];
34081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
34181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
34281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        i=0;
34381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        irow=*k-i;
34481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0; j<*n; j++ )
34581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           A[ LDA*j+irow ]=a[ (*lda)*j+i ];
34681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=1; i<*k+1; i++ ){
34781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           irow=*k-i;
34881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           jcol=i;
34981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=jcol; j<(*n+*k); j++ )
35081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
35181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        }
35281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
35381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsbmv(CblasRowMajor, uplo, *n, *k, *alpha, A, LDA, x, *incx,
35481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		 *beta, y, *incy );
35581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
35681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   }
35781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray   else
35881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dsbmv(CblasColMajor, uplo, *n, *k, *alpha, a, *lda, x, *incx,
35981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		 *beta, y, *incy );
36081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
36181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
36281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspmv(int *order, char *uplow, int *n, double *alpha, double *ap,
36381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      double *x, int *incx, double *beta, double *y, int *incy) {
36481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A,*AP;
36581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,k,LDA;
36681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
36781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
36881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
36981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
37081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
37181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n;
37281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( LDA*LDA*sizeof( double ) );
37381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     AP  = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
37481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
37581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
37681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
37781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
37881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
37981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
38081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
38181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
38281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
38381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
38481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
38581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
38681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
38781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
38881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
38981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
39081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspmv( CblasRowMajor, uplo, *n, *alpha, AP, x, *incx, *beta, y,
39181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  *incy );
39281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
39381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(AP);
39481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
39581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
39681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspmv( CblasColMajor, uplo, *n, *alpha, ap, x, *incx, *beta, y,
39781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray		  *incy );
39881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
39981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
40081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtpmv(int *order, char *uplow, char *transp, char *diagn,
40181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *n, double *ap, double *x, int *incx) {
40281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A, *AP;
40381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i, j, k, LDA;
40481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
40581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
40681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
40781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
40881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
40981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
41081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
41181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
41281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
41381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n;
41481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( LDA*LDA*sizeof( double ) );
41581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     AP  = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
41681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
41781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
41881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
41981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
42081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
42181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
42281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
42381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
42481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
42581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
42681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
42781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
42881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
42981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
43081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
43181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
43281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtpmv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
43381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
43481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(AP);
43581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
43681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
43781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtpmv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
43881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
43981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
44081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtpsv(int *order, char *uplow, char *transp, char *diagn,
44181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	      int *n, double *ap, double *x, int *incx) {
44281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A, *AP;
44381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i, j, k, LDA;
44481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_TRANSPOSE trans;
44581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
44681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_DIAG diag;
44781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
44881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_transpose_type(transp,&trans);
44981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
45081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_diag_type(diagn,&diag);
45181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
45281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
45381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n;
45481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( LDA*LDA*sizeof( double ) );
45581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     AP  = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
45681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
45781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
45881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
45981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
46081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
46181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
46281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
46381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
46481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
46581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
46681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
46781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
46881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
46981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
47081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
47181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
47281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
47381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtpsv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
47481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
47581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(AP);
47681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
47781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
47881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dtpsv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
47981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
48081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
48181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspr(int *order, char *uplow, int *n, double *alpha, double *x,
48281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	     int *incx, double *ap ){
48381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A, *AP;
48481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,k,LDA;
48581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
48681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
48781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
48881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
48981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
49081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n;
49181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( LDA*LDA*sizeof( double ) );
49281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     AP  = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
49381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
49481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
49581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
49681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
49781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
49881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
49981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
50081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
50181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
50281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
50381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
50481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
50581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
50681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
50781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
50881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
50981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspr( CblasRowMajor, uplo, *n, *alpha, x, *incx, AP );
51081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
51181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
51281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
51381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=AP[ k ];
51481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
51581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
51681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              ap[ k ]=A[ LDA*i+j ];
51781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
51881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
51981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
52081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
52181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=AP[ k ];
52281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
52381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
52481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              ap[ k ]=A[ LDA*i+j ];
52581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
52681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
52781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(AP);
52881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
52981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
53081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspr( CblasColMajor, uplo, *n, *alpha, x, *incx, ap );
53181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
53281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
53381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspr2(int *order, char *uplow, int *n, double *alpha, double *x,
53481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray	     int *incx, double *y, int *incy, double *ap ){
53581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  double *A, *AP;
53681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  int i,j,k,LDA;
53781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  enum CBLAS_UPLO uplo;
53881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
53981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  get_uplo_type(uplow,&uplo);
54081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray
54181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  if (*order == TEST_ROW_MJR) {
54281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     LDA = *n;
54381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     A   = ( double* )malloc( LDA*LDA*sizeof( double ) );
54481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     AP  = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
54581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
54681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
54781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
54881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
54981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
55081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
55181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
55281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
55381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
55481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
55581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
55681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=ap[ k ];
55781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
55881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
55981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              AP[ k ]=A[ LDA*i+j ];
56081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
56181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspr2( CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, AP );
56281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     if (uplo == CblasUpper) {
56381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
56481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=i; j<*n; j++, k++ )
56581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=AP[ k ];
56681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
56781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=0; i<j+1; i++, k++ )
56881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              ap[ k ]=A[ LDA*i+j ];
56981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
57081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     else {
57181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( i=0, k=0; i<*n; i++ )
57281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( j=0; j<i+1; j++, k++ )
57381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              A[ LDA*i+j ]=AP[ k ];
57481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray        for( j=0, k=0; j<*n; j++ )
57581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray           for( i=j; i<*n; i++, k++ )
57681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray              ap[ k ]=A[ LDA*i+j ];
57781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     }
57881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(A);
57981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     free(AP);
58081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  }
58181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray  else
58281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray     cblas_dspr2( CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, ap );
58381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray}
584