xref: /aosp_15_r20/external/cblas/testing/c_zblas2.c (revision 1858f9982ea1ad57fb52080c08594e4d1cce4fa1)
1*1858f998SYi Kong /*
2*1858f998SYi Kong  *     Written by D.P. Manley, Digital Equipment Corporation.
3*1858f998SYi Kong  *     Prefixed "C_" to BLAS routines and their declarations.
4*1858f998SYi Kong  *
5*1858f998SYi Kong  *     Modified by T. H. Do, 4/08/98, SGI/CRAY Research.
6*1858f998SYi Kong  */
7*1858f998SYi Kong #include <stdlib.h>
8*1858f998SYi Kong #include "cblas.h"
9*1858f998SYi Kong #include "cblas_test.h"
10*1858f998SYi Kong 
F77_zgemv(int * order,char * transp,int * m,int * n,const void * alpha,CBLAS_TEST_ZOMPLEX * a,int * lda,const void * x,int * incx,const void * beta,void * y,int * incy)11*1858f998SYi Kong void F77_zgemv(int *order, char *transp, int *m, int *n,
12*1858f998SYi Kong           const void *alpha,
13*1858f998SYi Kong           CBLAS_TEST_ZOMPLEX *a, int *lda, const void *x, int *incx,
14*1858f998SYi Kong           const void *beta, void *y, int *incy) {
15*1858f998SYi Kong 
16*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
17*1858f998SYi Kong   int i,j,LDA;
18*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
19*1858f998SYi Kong 
20*1858f998SYi Kong   get_transpose_type(transp, &trans);
21*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
22*1858f998SYi Kong      LDA = *n+1;
23*1858f998SYi Kong      A  = (CBLAS_TEST_ZOMPLEX *)malloc( (*m)*LDA*sizeof( CBLAS_TEST_ZOMPLEX) );
24*1858f998SYi Kong      for( i=0; i<*m; i++ )
25*1858f998SYi Kong         for( j=0; j<*n; j++ ){
26*1858f998SYi Kong            A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
27*1858f998SYi Kong            A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
28*1858f998SYi Kong         }
29*1858f998SYi Kong      cblas_zgemv( CblasRowMajor, trans, *m, *n, alpha, A, LDA, x, *incx,
30*1858f998SYi Kong 	    beta, y, *incy );
31*1858f998SYi Kong      free(A);
32*1858f998SYi Kong   }
33*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
34*1858f998SYi Kong      cblas_zgemv( CblasColMajor, trans,
35*1858f998SYi Kong                   *m, *n, alpha, a, *lda, x, *incx, beta, y, *incy );
36*1858f998SYi Kong   else
37*1858f998SYi Kong      cblas_zgemv( UNDEFINED, trans,
38*1858f998SYi Kong                   *m, *n, alpha, a, *lda, x, *incx, beta, y, *incy );
39*1858f998SYi Kong }
40*1858f998SYi Kong 
F77_zgbmv(int * order,char * transp,int * m,int * n,int * kl,int * ku,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * beta,CBLAS_TEST_ZOMPLEX * y,int * incy)41*1858f998SYi Kong void F77_zgbmv(int *order, char *transp, int *m, int *n, int *kl, int *ku,
42*1858f998SYi Kong 	      CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda,
43*1858f998SYi Kong 	      CBLAS_TEST_ZOMPLEX *x, int *incx,
44*1858f998SYi Kong 	      CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *y, int *incy) {
45*1858f998SYi Kong 
46*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
47*1858f998SYi Kong   int i,j,irow,jcol,LDA;
48*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
49*1858f998SYi Kong 
50*1858f998SYi Kong   get_transpose_type(transp, &trans);
51*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
52*1858f998SYi Kong      LDA = *ku+*kl+2;
53*1858f998SYi Kong      A=( CBLAS_TEST_ZOMPLEX* )malloc((*n+*kl)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
54*1858f998SYi Kong      for( i=0; i<*ku; i++ ){
55*1858f998SYi Kong         irow=*ku+*kl-i;
56*1858f998SYi Kong         jcol=(*ku)-i;
57*1858f998SYi Kong         for( j=jcol; j<*n; j++ ){
58*1858f998SYi Kong            A[ LDA*(j-jcol)+irow ].real=a[ (*lda)*j+i ].real;
59*1858f998SYi Kong            A[ LDA*(j-jcol)+irow ].imag=a[ (*lda)*j+i ].imag;
60*1858f998SYi Kong         }
61*1858f998SYi Kong      }
62*1858f998SYi Kong      i=*ku;
63*1858f998SYi Kong      irow=*ku+*kl-i;
64*1858f998SYi Kong      for( j=0; j<*n; j++ ){
65*1858f998SYi Kong         A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
66*1858f998SYi Kong         A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
67*1858f998SYi Kong      }
68*1858f998SYi Kong      for( i=*ku+1; i<*ku+*kl+1; i++ ){
69*1858f998SYi Kong         irow=*ku+*kl-i;
70*1858f998SYi Kong         jcol=i-(*ku);
71*1858f998SYi Kong         for( j=jcol; j<(*n+*kl); j++ ){
72*1858f998SYi Kong            A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real;
73*1858f998SYi Kong            A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag;
74*1858f998SYi Kong         }
75*1858f998SYi Kong      }
76*1858f998SYi Kong      cblas_zgbmv( CblasRowMajor, trans, *m, *n, *kl, *ku, alpha, A, LDA, x,
77*1858f998SYi Kong 		  *incx, beta, y, *incy );
78*1858f998SYi Kong      free(A);
79*1858f998SYi Kong   }
80*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
81*1858f998SYi Kong      cblas_zgbmv( CblasColMajor, trans, *m, *n, *kl, *ku, alpha, a, *lda, x,
82*1858f998SYi Kong 		  *incx, beta, y, *incy );
83*1858f998SYi Kong   else
84*1858f998SYi Kong      cblas_zgbmv( UNDEFINED, trans, *m, *n, *kl, *ku, alpha, a, *lda, x,
85*1858f998SYi Kong 		  *incx, beta, y, *incy );
86*1858f998SYi Kong }
87*1858f998SYi Kong 
F77_zgeru(int * order,int * m,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * y,int * incy,CBLAS_TEST_ZOMPLEX * a,int * lda)88*1858f998SYi Kong void F77_zgeru(int *order, int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha,
89*1858f998SYi Kong 	 CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *y, int *incy,
90*1858f998SYi Kong          CBLAS_TEST_ZOMPLEX *a, int *lda){
91*1858f998SYi Kong 
92*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
93*1858f998SYi Kong   int i,j,LDA;
94*1858f998SYi Kong 
95*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
96*1858f998SYi Kong      LDA = *n+1;
97*1858f998SYi Kong      A=(CBLAS_TEST_ZOMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
98*1858f998SYi Kong      for( i=0; i<*m; i++ )
99*1858f998SYi Kong         for( j=0; j<*n; j++ ){
100*1858f998SYi Kong            A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
101*1858f998SYi Kong            A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
102*1858f998SYi Kong      }
103*1858f998SYi Kong      cblas_zgeru( CblasRowMajor, *m, *n, alpha, x, *incx, y, *incy, A, LDA );
104*1858f998SYi Kong      for( i=0; i<*m; i++ )
105*1858f998SYi Kong         for( j=0; j<*n; j++ ){
106*1858f998SYi Kong            a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;
107*1858f998SYi Kong            a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;
108*1858f998SYi Kong         }
109*1858f998SYi Kong      free(A);
110*1858f998SYi Kong   }
111*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
112*1858f998SYi Kong      cblas_zgeru( CblasColMajor, *m, *n, alpha, x, *incx, y, *incy, a, *lda );
113*1858f998SYi Kong   else
114*1858f998SYi Kong      cblas_zgeru( UNDEFINED, *m, *n, alpha, x, *incx, y, *incy, a, *lda );
115*1858f998SYi Kong }
116*1858f998SYi Kong 
F77_zgerc(int * order,int * m,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * y,int * incy,CBLAS_TEST_ZOMPLEX * a,int * lda)117*1858f998SYi Kong void F77_zgerc(int *order, int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha,
118*1858f998SYi Kong 	 CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *y, int *incy,
119*1858f998SYi Kong          CBLAS_TEST_ZOMPLEX *a, int *lda) {
120*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
121*1858f998SYi Kong   int i,j,LDA;
122*1858f998SYi Kong 
123*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
124*1858f998SYi Kong      LDA = *n+1;
125*1858f998SYi Kong      A=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) );
126*1858f998SYi Kong      for( i=0; i<*m; i++ )
127*1858f998SYi Kong         for( j=0; j<*n; j++ ){
128*1858f998SYi Kong            A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
129*1858f998SYi Kong            A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
130*1858f998SYi Kong         }
131*1858f998SYi Kong      cblas_zgerc( CblasRowMajor, *m, *n, alpha, x, *incx, y, *incy, A, LDA );
132*1858f998SYi Kong      for( i=0; i<*m; i++ )
133*1858f998SYi Kong         for( j=0; j<*n; j++ ){
134*1858f998SYi Kong            a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;
135*1858f998SYi Kong            a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;
136*1858f998SYi Kong         }
137*1858f998SYi Kong      free(A);
138*1858f998SYi Kong   }
139*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
140*1858f998SYi Kong      cblas_zgerc( CblasColMajor, *m, *n, alpha, x, *incx, y, *incy, a, *lda );
141*1858f998SYi Kong   else
142*1858f998SYi Kong      cblas_zgerc( UNDEFINED, *m, *n, alpha, x, *incx, y, *incy, a, *lda );
143*1858f998SYi Kong }
144*1858f998SYi Kong 
F77_zhemv(int * order,char * uplow,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * beta,CBLAS_TEST_ZOMPLEX * y,int * incy)145*1858f998SYi Kong void F77_zhemv(int *order, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha,
146*1858f998SYi Kong       CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x,
147*1858f998SYi Kong       int *incx, CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *y, int *incy){
148*1858f998SYi Kong 
149*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
150*1858f998SYi Kong   int i,j,LDA;
151*1858f998SYi Kong   enum CBLAS_UPLO uplo;
152*1858f998SYi Kong 
153*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
154*1858f998SYi Kong 
155*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
156*1858f998SYi Kong      LDA = *n+1;
157*1858f998SYi Kong      A = (CBLAS_TEST_ZOMPLEX *)malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
158*1858f998SYi Kong      for( i=0; i<*n; i++ )
159*1858f998SYi Kong         for( j=0; j<*n; j++ ){
160*1858f998SYi Kong            A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
161*1858f998SYi Kong            A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
162*1858f998SYi Kong      }
163*1858f998SYi Kong      cblas_zhemv( CblasRowMajor, uplo, *n, alpha, A, LDA, x, *incx,
164*1858f998SYi Kong 	    beta, y, *incy );
165*1858f998SYi Kong      free(A);
166*1858f998SYi Kong   }
167*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
168*1858f998SYi Kong      cblas_zhemv( CblasColMajor, uplo, *n, alpha, a, *lda, x, *incx,
169*1858f998SYi Kong 	   beta, y, *incy );
170*1858f998SYi Kong   else
171*1858f998SYi Kong      cblas_zhemv( UNDEFINED, uplo, *n, alpha, a, *lda, x, *incx,
172*1858f998SYi Kong 	   beta, y, *incy );
173*1858f998SYi Kong }
174*1858f998SYi Kong 
F77_zhbmv(int * order,char * uplow,int * n,int * k,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * beta,CBLAS_TEST_ZOMPLEX * y,int * incy)175*1858f998SYi Kong void F77_zhbmv(int *order, char *uplow, int *n, int *k,
176*1858f998SYi Kong      CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda,
177*1858f998SYi Kong      CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *beta,
178*1858f998SYi Kong      CBLAS_TEST_ZOMPLEX *y, int *incy){
179*1858f998SYi Kong 
180*1858f998SYi Kong CBLAS_TEST_ZOMPLEX *A;
181*1858f998SYi Kong int i,irow,j,jcol,LDA;
182*1858f998SYi Kong 
183*1858f998SYi Kong   enum CBLAS_UPLO uplo;
184*1858f998SYi Kong 
185*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
186*1858f998SYi Kong 
187*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
188*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
189*1858f998SYi Kong         cblas_zhbmv(CblasRowMajor, UNDEFINED, *n, *k, alpha, a, *lda, x,
190*1858f998SYi Kong 		 *incx, beta, y, *incy );
191*1858f998SYi Kong      else {
192*1858f998SYi Kong         LDA = *k+2;
193*1858f998SYi Kong         A =(CBLAS_TEST_ZOMPLEX*)malloc((*n+*k)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
194*1858f998SYi Kong         if (uplo == CblasUpper) {
195*1858f998SYi Kong            for( i=0; i<*k; i++ ){
196*1858f998SYi Kong               irow=*k-i;
197*1858f998SYi Kong               jcol=(*k)-i;
198*1858f998SYi Kong               for( j=jcol; j<*n; j++ ) {
199*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].real=a[ (*lda)*j+i ].real;
200*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].imag=a[ (*lda)*j+i ].imag;
201*1858f998SYi Kong               }
202*1858f998SYi Kong            }
203*1858f998SYi Kong            i=*k;
204*1858f998SYi Kong            irow=*k-i;
205*1858f998SYi Kong            for( j=0; j<*n; j++ ) {
206*1858f998SYi Kong               A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
207*1858f998SYi Kong               A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
208*1858f998SYi Kong            }
209*1858f998SYi Kong         }
210*1858f998SYi Kong         else {
211*1858f998SYi Kong            i=0;
212*1858f998SYi Kong            irow=*k-i;
213*1858f998SYi Kong            for( j=0; j<*n; j++ ) {
214*1858f998SYi Kong               A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
215*1858f998SYi Kong               A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
216*1858f998SYi Kong            }
217*1858f998SYi Kong            for( i=1; i<*k+1; i++ ){
218*1858f998SYi Kong               irow=*k-i;
219*1858f998SYi Kong               jcol=i;
220*1858f998SYi Kong               for( j=jcol; j<(*n+*k); j++ ) {
221*1858f998SYi Kong                  A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real;
222*1858f998SYi Kong                  A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag;
223*1858f998SYi Kong               }
224*1858f998SYi Kong            }
225*1858f998SYi Kong         }
226*1858f998SYi Kong         cblas_zhbmv( CblasRowMajor, uplo, *n, *k, alpha, A, LDA, x, *incx,
227*1858f998SYi Kong        		     beta, y, *incy );
228*1858f998SYi Kong         free(A);
229*1858f998SYi Kong       }
230*1858f998SYi Kong    }
231*1858f998SYi Kong    else if (*order == TEST_COL_MJR)
232*1858f998SYi Kong      cblas_zhbmv(CblasColMajor, uplo, *n, *k, alpha, a, *lda, x, *incx,
233*1858f998SYi Kong                  beta, y, *incy );
234*1858f998SYi Kong    else
235*1858f998SYi Kong      cblas_zhbmv(UNDEFINED, uplo, *n, *k, alpha, a, *lda, x, *incx,
236*1858f998SYi Kong                  beta, y, *incy );
237*1858f998SYi Kong }
238*1858f998SYi Kong 
F77_zhpmv(int * order,char * uplow,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * ap,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * beta,CBLAS_TEST_ZOMPLEX * y,int * incy)239*1858f998SYi Kong void F77_zhpmv(int *order, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha,
240*1858f998SYi Kong      CBLAS_TEST_ZOMPLEX *ap, CBLAS_TEST_ZOMPLEX *x, int *incx,
241*1858f998SYi Kong      CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *y, int *incy){
242*1858f998SYi Kong 
243*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A, *AP;
244*1858f998SYi Kong   int i,j,k,LDA;
245*1858f998SYi Kong   enum CBLAS_UPLO uplo;
246*1858f998SYi Kong 
247*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
248*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
249*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
250*1858f998SYi Kong         cblas_zhpmv(CblasRowMajor, UNDEFINED, *n, alpha, ap, x, *incx,
251*1858f998SYi Kong 	         beta, y, *incy);
252*1858f998SYi Kong      else {
253*1858f998SYi Kong         LDA = *n;
254*1858f998SYi Kong         A = (CBLAS_TEST_ZOMPLEX* )malloc(LDA*LDA*sizeof(CBLAS_TEST_ZOMPLEX ));
255*1858f998SYi Kong         AP = (CBLAS_TEST_ZOMPLEX* )malloc( (((LDA+1)*LDA)/2)*
256*1858f998SYi Kong 	        sizeof( CBLAS_TEST_ZOMPLEX ));
257*1858f998SYi Kong         if (uplo == CblasUpper) {
258*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
259*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ) {
260*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
261*1858f998SYi Kong                  A[ LDA*i+j ].imag=ap[ k ].imag;
262*1858f998SYi Kong               }
263*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
264*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ) {
265*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
266*1858f998SYi Kong                  AP[ k ].imag=A[ LDA*i+j ].imag;
267*1858f998SYi Kong               }
268*1858f998SYi Kong         }
269*1858f998SYi Kong         else {
270*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
271*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ) {
272*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
273*1858f998SYi Kong                  A[ LDA*i+j ].imag=ap[ k ].imag;
274*1858f998SYi Kong               }
275*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
276*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ) {
277*1858f998SYi Kong 	         AP[ k ].real=A[ LDA*i+j ].real;
278*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
279*1858f998SYi Kong               }
280*1858f998SYi Kong         }
281*1858f998SYi Kong         cblas_zhpmv( CblasRowMajor, uplo, *n, alpha, AP, x, *incx, beta, y,
282*1858f998SYi Kong                      *incy );
283*1858f998SYi Kong         free(A);
284*1858f998SYi Kong         free(AP);
285*1858f998SYi Kong      }
286*1858f998SYi Kong   }
287*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
288*1858f998SYi Kong      cblas_zhpmv( CblasColMajor, uplo, *n, alpha, ap, x, *incx, beta, y,
289*1858f998SYi Kong                   *incy );
290*1858f998SYi Kong   else
291*1858f998SYi Kong      cblas_zhpmv( UNDEFINED, uplo, *n, alpha, ap, x, *incx, beta, y,
292*1858f998SYi Kong                   *incy );
293*1858f998SYi Kong }
294*1858f998SYi Kong 
F77_ztbmv(int * order,char * uplow,char * transp,char * diagn,int * n,int * k,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx)295*1858f998SYi Kong void F77_ztbmv(int *order, char *uplow, char *transp, char *diagn,
296*1858f998SYi Kong      int *n, int *k, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x,
297*1858f998SYi Kong      int *incx) {
298*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
299*1858f998SYi Kong   int irow, jcol, i, j, LDA;
300*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
301*1858f998SYi Kong   enum CBLAS_UPLO uplo;
302*1858f998SYi Kong   enum CBLAS_DIAG diag;
303*1858f998SYi Kong 
304*1858f998SYi Kong   get_transpose_type(transp,&trans);
305*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
306*1858f998SYi Kong   get_diag_type(diagn,&diag);
307*1858f998SYi Kong 
308*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
309*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
310*1858f998SYi Kong         cblas_ztbmv(CblasRowMajor, UNDEFINED, trans, diag, *n, *k, a, *lda,
311*1858f998SYi Kong 	x, *incx);
312*1858f998SYi Kong      else {
313*1858f998SYi Kong         LDA = *k+2;
314*1858f998SYi Kong         A=(CBLAS_TEST_ZOMPLEX *)malloc((*n+*k)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
315*1858f998SYi Kong         if (uplo == CblasUpper) {
316*1858f998SYi Kong            for( i=0; i<*k; i++ ){
317*1858f998SYi Kong               irow=*k-i;
318*1858f998SYi Kong               jcol=(*k)-i;
319*1858f998SYi Kong               for( j=jcol; j<*n; j++ ) {
320*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].real=a[ (*lda)*j+i ].real;
321*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].imag=a[ (*lda)*j+i ].imag;
322*1858f998SYi Kong               }
323*1858f998SYi Kong            }
324*1858f998SYi Kong            i=*k;
325*1858f998SYi Kong            irow=*k-i;
326*1858f998SYi Kong            for( j=0; j<*n; j++ ) {
327*1858f998SYi Kong               A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
328*1858f998SYi Kong               A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
329*1858f998SYi Kong            }
330*1858f998SYi Kong         }
331*1858f998SYi Kong         else {
332*1858f998SYi Kong           i=0;
333*1858f998SYi Kong           irow=*k-i;
334*1858f998SYi Kong           for( j=0; j<*n; j++ ) {
335*1858f998SYi Kong              A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
336*1858f998SYi Kong              A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
337*1858f998SYi Kong           }
338*1858f998SYi Kong           for( i=1; i<*k+1; i++ ){
339*1858f998SYi Kong              irow=*k-i;
340*1858f998SYi Kong              jcol=i;
341*1858f998SYi Kong              for( j=jcol; j<(*n+*k); j++ ) {
342*1858f998SYi Kong                 A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real;
343*1858f998SYi Kong                 A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag;
344*1858f998SYi Kong              }
345*1858f998SYi Kong           }
346*1858f998SYi Kong         }
347*1858f998SYi Kong         cblas_ztbmv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x,
348*1858f998SYi Kong 		    *incx);
349*1858f998SYi Kong         free(A);
350*1858f998SYi Kong      }
351*1858f998SYi Kong    }
352*1858f998SYi Kong    else if (*order == TEST_COL_MJR)
353*1858f998SYi Kong      cblas_ztbmv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
354*1858f998SYi Kong    else
355*1858f998SYi Kong      cblas_ztbmv(UNDEFINED, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
356*1858f998SYi Kong }
357*1858f998SYi Kong 
F77_ztbsv(int * order,char * uplow,char * transp,char * diagn,int * n,int * k,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx)358*1858f998SYi Kong void F77_ztbsv(int *order, char *uplow, char *transp, char *diagn,
359*1858f998SYi Kong       int *n, int *k, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x,
360*1858f998SYi Kong       int *incx) {
361*1858f998SYi Kong 
362*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
363*1858f998SYi Kong   int irow, jcol, i, j, LDA;
364*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
365*1858f998SYi Kong   enum CBLAS_UPLO uplo;
366*1858f998SYi Kong   enum CBLAS_DIAG diag;
367*1858f998SYi Kong 
368*1858f998SYi Kong   get_transpose_type(transp,&trans);
369*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
370*1858f998SYi Kong   get_diag_type(diagn,&diag);
371*1858f998SYi Kong 
372*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
373*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
374*1858f998SYi Kong         cblas_ztbsv(CblasRowMajor, UNDEFINED, trans, diag, *n, *k, a, *lda, x,
375*1858f998SYi Kong 	         *incx);
376*1858f998SYi Kong      else {
377*1858f998SYi Kong         LDA = *k+2;
378*1858f998SYi Kong         A=(CBLAS_TEST_ZOMPLEX*)malloc((*n+*k)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ));
379*1858f998SYi Kong         if (uplo == CblasUpper) {
380*1858f998SYi Kong            for( i=0; i<*k; i++ ){
381*1858f998SYi Kong               irow=*k-i;
382*1858f998SYi Kong               jcol=(*k)-i;
383*1858f998SYi Kong               for( j=jcol; j<*n; j++ ) {
384*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].real=a[ (*lda)*j+i ].real;
385*1858f998SYi Kong                  A[ LDA*(j-jcol)+irow ].imag=a[ (*lda)*j+i ].imag;
386*1858f998SYi Kong               }
387*1858f998SYi Kong            }
388*1858f998SYi Kong            i=*k;
389*1858f998SYi Kong            irow=*k-i;
390*1858f998SYi Kong            for( j=0; j<*n; j++ ) {
391*1858f998SYi Kong               A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
392*1858f998SYi Kong               A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
393*1858f998SYi Kong            }
394*1858f998SYi Kong         }
395*1858f998SYi Kong         else {
396*1858f998SYi Kong            i=0;
397*1858f998SYi Kong            irow=*k-i;
398*1858f998SYi Kong            for( j=0; j<*n; j++ ) {
399*1858f998SYi Kong              A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real;
400*1858f998SYi Kong              A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag;
401*1858f998SYi Kong            }
402*1858f998SYi Kong            for( i=1; i<*k+1; i++ ){
403*1858f998SYi Kong               irow=*k-i;
404*1858f998SYi Kong               jcol=i;
405*1858f998SYi Kong               for( j=jcol; j<(*n+*k); j++ ) {
406*1858f998SYi Kong 	         A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real;
407*1858f998SYi Kong                  A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag;
408*1858f998SYi Kong               }
409*1858f998SYi Kong            }
410*1858f998SYi Kong         }
411*1858f998SYi Kong         cblas_ztbsv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA,
412*1858f998SYi Kong 		    x, *incx);
413*1858f998SYi Kong         free(A);
414*1858f998SYi Kong      }
415*1858f998SYi Kong   }
416*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
417*1858f998SYi Kong      cblas_ztbsv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
418*1858f998SYi Kong   else
419*1858f998SYi Kong      cblas_ztbsv(UNDEFINED, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
420*1858f998SYi Kong }
421*1858f998SYi Kong 
F77_ztpmv(int * order,char * uplow,char * transp,char * diagn,int * n,CBLAS_TEST_ZOMPLEX * ap,CBLAS_TEST_ZOMPLEX * x,int * incx)422*1858f998SYi Kong void F77_ztpmv(int *order, char *uplow, char *transp, char *diagn,
423*1858f998SYi Kong       int *n, CBLAS_TEST_ZOMPLEX *ap, CBLAS_TEST_ZOMPLEX *x, int *incx) {
424*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A, *AP;
425*1858f998SYi Kong   int i, j, k, LDA;
426*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
427*1858f998SYi Kong   enum CBLAS_UPLO uplo;
428*1858f998SYi Kong   enum CBLAS_DIAG diag;
429*1858f998SYi Kong 
430*1858f998SYi Kong   get_transpose_type(transp,&trans);
431*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
432*1858f998SYi Kong   get_diag_type(diagn,&diag);
433*1858f998SYi Kong 
434*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
435*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
436*1858f998SYi Kong         cblas_ztpmv( CblasRowMajor, UNDEFINED, trans, diag, *n, ap, x, *incx );
437*1858f998SYi Kong      else {
438*1858f998SYi Kong         LDA = *n;
439*1858f998SYi Kong         A=(CBLAS_TEST_ZOMPLEX*)malloc(LDA*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
440*1858f998SYi Kong         AP=(CBLAS_TEST_ZOMPLEX*)malloc((((LDA+1)*LDA)/2)*
441*1858f998SYi Kong 	 	sizeof(CBLAS_TEST_ZOMPLEX));
442*1858f998SYi Kong         if (uplo == CblasUpper) {
443*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
444*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ) {
445*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
446*1858f998SYi Kong                  A[ LDA*i+j ].imag=ap[ k ].imag;
447*1858f998SYi Kong               }
448*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
449*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ) {
450*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
451*1858f998SYi Kong                  AP[ k ].imag=A[ LDA*i+j ].imag;
452*1858f998SYi Kong               }
453*1858f998SYi Kong         }
454*1858f998SYi Kong         else {
455*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
456*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ) {
457*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
458*1858f998SYi Kong 	         A[ LDA*i+j ].imag=ap[ k ].imag;
459*1858f998SYi Kong               }
460*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
461*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ) {
462*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
463*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
464*1858f998SYi Kong               }
465*1858f998SYi Kong         }
466*1858f998SYi Kong         cblas_ztpmv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
467*1858f998SYi Kong         free(A);
468*1858f998SYi Kong         free(AP);
469*1858f998SYi Kong      }
470*1858f998SYi Kong   }
471*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
472*1858f998SYi Kong      cblas_ztpmv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
473*1858f998SYi Kong   else
474*1858f998SYi Kong      cblas_ztpmv( UNDEFINED, uplo, trans, diag, *n, ap, x, *incx );
475*1858f998SYi Kong }
476*1858f998SYi Kong 
F77_ztpsv(int * order,char * uplow,char * transp,char * diagn,int * n,CBLAS_TEST_ZOMPLEX * ap,CBLAS_TEST_ZOMPLEX * x,int * incx)477*1858f998SYi Kong void F77_ztpsv(int *order, char *uplow, char *transp, char *diagn,
478*1858f998SYi Kong      int *n, CBLAS_TEST_ZOMPLEX *ap, CBLAS_TEST_ZOMPLEX *x, int *incx) {
479*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A, *AP;
480*1858f998SYi Kong   int i, j, k, LDA;
481*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
482*1858f998SYi Kong   enum CBLAS_UPLO uplo;
483*1858f998SYi Kong   enum CBLAS_DIAG diag;
484*1858f998SYi Kong 
485*1858f998SYi Kong   get_transpose_type(transp,&trans);
486*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
487*1858f998SYi Kong   get_diag_type(diagn,&diag);
488*1858f998SYi Kong 
489*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
490*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
491*1858f998SYi Kong         cblas_ztpsv( CblasRowMajor, UNDEFINED, trans, diag, *n, ap, x, *incx );
492*1858f998SYi Kong      else {
493*1858f998SYi Kong         LDA = *n;
494*1858f998SYi Kong         A=(CBLAS_TEST_ZOMPLEX*)malloc(LDA*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
495*1858f998SYi Kong         AP=(CBLAS_TEST_ZOMPLEX*)malloc((((LDA+1)*LDA)/2)*
496*1858f998SYi Kong 		sizeof(CBLAS_TEST_ZOMPLEX));
497*1858f998SYi Kong      	if (uplo == CblasUpper) {
498*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
499*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ) {
500*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
501*1858f998SYi Kong        	         A[ LDA*i+j ].imag=ap[ k ].imag;
502*1858f998SYi Kong               }
503*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
504*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ) {
505*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
506*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
507*1858f998SYi Kong               }
508*1858f998SYi Kong         }
509*1858f998SYi Kong         else {
510*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
511*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ) {
512*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
513*1858f998SYi Kong                  A[ LDA*i+j ].imag=ap[ k ].imag;
514*1858f998SYi Kong               }
515*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
516*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ) {
517*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
518*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
519*1858f998SYi Kong               }
520*1858f998SYi Kong         }
521*1858f998SYi Kong         cblas_ztpsv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
522*1858f998SYi Kong         free(A);
523*1858f998SYi Kong         free(AP);
524*1858f998SYi Kong      }
525*1858f998SYi Kong   }
526*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
527*1858f998SYi Kong      cblas_ztpsv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
528*1858f998SYi Kong   else
529*1858f998SYi Kong      cblas_ztpsv( UNDEFINED, uplo, trans, diag, *n, ap, x, *incx );
530*1858f998SYi Kong }
531*1858f998SYi Kong 
F77_ztrmv(int * order,char * uplow,char * transp,char * diagn,int * n,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx)532*1858f998SYi Kong void F77_ztrmv(int *order, char *uplow, char *transp, char *diagn,
533*1858f998SYi Kong      int *n, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x,
534*1858f998SYi Kong       int *incx) {
535*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
536*1858f998SYi Kong   int i,j,LDA;
537*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
538*1858f998SYi Kong   enum CBLAS_UPLO uplo;
539*1858f998SYi Kong   enum CBLAS_DIAG diag;
540*1858f998SYi Kong 
541*1858f998SYi Kong   get_transpose_type(transp,&trans);
542*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
543*1858f998SYi Kong   get_diag_type(diagn,&diag);
544*1858f998SYi Kong 
545*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
546*1858f998SYi Kong      LDA=*n+1;
547*1858f998SYi Kong      A=(CBLAS_TEST_ZOMPLEX*)malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX));
548*1858f998SYi Kong      for( i=0; i<*n; i++ )
549*1858f998SYi Kong        for( j=0; j<*n; j++ ) {
550*1858f998SYi Kong 	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
551*1858f998SYi Kong           A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
552*1858f998SYi Kong        }
553*1858f998SYi Kong      cblas_ztrmv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx);
554*1858f998SYi Kong      free(A);
555*1858f998SYi Kong   }
556*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
557*1858f998SYi Kong      cblas_ztrmv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx);
558*1858f998SYi Kong   else
559*1858f998SYi Kong      cblas_ztrmv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx);
560*1858f998SYi Kong }
F77_ztrsv(int * order,char * uplow,char * transp,char * diagn,int * n,CBLAS_TEST_ZOMPLEX * a,int * lda,CBLAS_TEST_ZOMPLEX * x,int * incx)561*1858f998SYi Kong void F77_ztrsv(int *order, char *uplow, char *transp, char *diagn,
562*1858f998SYi Kong        int *n, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x,
563*1858f998SYi Kong               int *incx) {
564*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
565*1858f998SYi Kong   int i,j,LDA;
566*1858f998SYi Kong   enum CBLAS_TRANSPOSE trans;
567*1858f998SYi Kong   enum CBLAS_UPLO uplo;
568*1858f998SYi Kong   enum CBLAS_DIAG diag;
569*1858f998SYi Kong 
570*1858f998SYi Kong   get_transpose_type(transp,&trans);
571*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
572*1858f998SYi Kong   get_diag_type(diagn,&diag);
573*1858f998SYi Kong 
574*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
575*1858f998SYi Kong      LDA = *n+1;
576*1858f998SYi Kong      A =(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) );
577*1858f998SYi Kong      for( i=0; i<*n; i++ )
578*1858f998SYi Kong         for( j=0; j<*n; j++ ) {
579*1858f998SYi Kong            A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
580*1858f998SYi Kong 	   A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
581*1858f998SYi Kong 	}
582*1858f998SYi Kong      cblas_ztrsv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx );
583*1858f998SYi Kong      free(A);
584*1858f998SYi Kong    }
585*1858f998SYi Kong    else if (*order == TEST_COL_MJR)
586*1858f998SYi Kong      cblas_ztrsv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx );
587*1858f998SYi Kong    else
588*1858f998SYi Kong      cblas_ztrsv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx );
589*1858f998SYi Kong }
590*1858f998SYi Kong 
F77_zhpr(int * order,char * uplow,int * n,double * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * ap)591*1858f998SYi Kong void F77_zhpr(int *order, char *uplow, int *n, double *alpha,
592*1858f998SYi Kong 	     CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *ap) {
593*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A, *AP;
594*1858f998SYi Kong   int i,j,k,LDA;
595*1858f998SYi Kong   enum CBLAS_UPLO uplo;
596*1858f998SYi Kong 
597*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
598*1858f998SYi Kong 
599*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
600*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
601*1858f998SYi Kong         cblas_zhpr(CblasRowMajor, UNDEFINED, *n, *alpha, x, *incx, ap );
602*1858f998SYi Kong      else {
603*1858f998SYi Kong         LDA = *n;
604*1858f998SYi Kong         A = (CBLAS_TEST_ZOMPLEX* )malloc(LDA*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) );
605*1858f998SYi Kong         AP = ( CBLAS_TEST_ZOMPLEX* )malloc( (((LDA+1)*LDA)/2)*
606*1858f998SYi Kong 		sizeof( CBLAS_TEST_ZOMPLEX ));
607*1858f998SYi Kong         if (uplo == CblasUpper) {
608*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
609*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ){
610*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
611*1858f998SYi Kong                  A[ LDA*i+j ].imag=ap[ k ].imag;
612*1858f998SYi Kong               }
613*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
614*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ){
615*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
616*1858f998SYi Kong                  AP[ k ].imag=A[ LDA*i+j ].imag;
617*1858f998SYi Kong               }
618*1858f998SYi Kong         }
619*1858f998SYi Kong         else {
620*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
621*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ){
622*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
623*1858f998SYi Kong        	         A[ LDA*i+j ].imag=ap[ k ].imag;
624*1858f998SYi Kong               }
625*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
626*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ){
627*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
628*1858f998SYi Kong                  AP[ k ].imag=A[ LDA*i+j ].imag;
629*1858f998SYi Kong               }
630*1858f998SYi Kong         }
631*1858f998SYi Kong         cblas_zhpr(CblasRowMajor, uplo, *n, *alpha, x, *incx, AP );
632*1858f998SYi Kong         if (uplo == CblasUpper) {
633*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
634*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ){
635*1858f998SYi Kong                  A[ LDA*i+j ].real=AP[ k ].real;
636*1858f998SYi Kong                  A[ LDA*i+j ].imag=AP[ k ].imag;
637*1858f998SYi Kong               }
638*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
639*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ){
640*1858f998SYi Kong                  ap[ k ].real=A[ LDA*i+j ].real;
641*1858f998SYi Kong                  ap[ k ].imag=A[ LDA*i+j ].imag;
642*1858f998SYi Kong               }
643*1858f998SYi Kong         }
644*1858f998SYi Kong         else {
645*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
646*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ){
647*1858f998SYi Kong                  A[ LDA*i+j ].real=AP[ k ].real;
648*1858f998SYi Kong                  A[ LDA*i+j ].imag=AP[ k ].imag;
649*1858f998SYi Kong               }
650*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
651*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ){
652*1858f998SYi Kong                  ap[ k ].real=A[ LDA*i+j ].real;
653*1858f998SYi Kong                  ap[ k ].imag=A[ LDA*i+j ].imag;
654*1858f998SYi Kong               }
655*1858f998SYi Kong         }
656*1858f998SYi Kong         free(A);
657*1858f998SYi Kong         free(AP);
658*1858f998SYi Kong      }
659*1858f998SYi Kong   }
660*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
661*1858f998SYi Kong      cblas_zhpr(CblasColMajor, uplo, *n, *alpha, x, *incx, ap );
662*1858f998SYi Kong   else
663*1858f998SYi Kong      cblas_zhpr(UNDEFINED, uplo, *n, *alpha, x, *incx, ap );
664*1858f998SYi Kong }
665*1858f998SYi Kong 
F77_zhpr2(int * order,char * uplow,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * y,int * incy,CBLAS_TEST_ZOMPLEX * ap)666*1858f998SYi Kong void F77_zhpr2(int *order, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha,
667*1858f998SYi Kong        CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *y, int *incy,
668*1858f998SYi Kong        CBLAS_TEST_ZOMPLEX *ap) {
669*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A, *AP;
670*1858f998SYi Kong   int i,j,k,LDA;
671*1858f998SYi Kong   enum CBLAS_UPLO uplo;
672*1858f998SYi Kong 
673*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
674*1858f998SYi Kong 
675*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
676*1858f998SYi Kong      if (uplo != CblasUpper && uplo != CblasLower )
677*1858f998SYi Kong         cblas_zhpr2( CblasRowMajor, UNDEFINED, *n, alpha, x, *incx, y,
678*1858f998SYi Kong 		     *incy, ap );
679*1858f998SYi Kong      else {
680*1858f998SYi Kong         LDA = *n;
681*1858f998SYi Kong         A=(CBLAS_TEST_ZOMPLEX*)malloc( LDA*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) );
682*1858f998SYi Kong         AP=(CBLAS_TEST_ZOMPLEX*)malloc( (((LDA+1)*LDA)/2)*
683*1858f998SYi Kong 	sizeof( CBLAS_TEST_ZOMPLEX ));
684*1858f998SYi Kong         if (uplo == CblasUpper) {
685*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
686*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ) {
687*1858f998SYi Kong                  A[ LDA*i+j ].real=ap[ k ].real;
688*1858f998SYi Kong 	         A[ LDA*i+j ].imag=ap[ k ].imag;
689*1858f998SYi Kong 	      }
690*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
691*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ) {
692*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
693*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
694*1858f998SYi Kong 	      }
695*1858f998SYi Kong         }
696*1858f998SYi Kong         else {
697*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
698*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ) {
699*1858f998SYi Kong 	         A[ LDA*i+j ].real=ap[ k ].real;
700*1858f998SYi Kong 	         A[ LDA*i+j ].imag=ap[ k ].imag;
701*1858f998SYi Kong 	      }
702*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
703*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ) {
704*1858f998SYi Kong                  AP[ k ].real=A[ LDA*i+j ].real;
705*1858f998SYi Kong 	         AP[ k ].imag=A[ LDA*i+j ].imag;
706*1858f998SYi Kong 	      }
707*1858f998SYi Kong         }
708*1858f998SYi Kong         cblas_zhpr2( CblasRowMajor, uplo, *n, alpha, x, *incx, y, *incy, AP );
709*1858f998SYi Kong         if (uplo == CblasUpper) {
710*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
711*1858f998SYi Kong               for( j=i; j<*n; j++, k++ ) {
712*1858f998SYi Kong                  A[ LDA*i+j ].real=AP[ k ].real;
713*1858f998SYi Kong                  A[ LDA*i+j ].imag=AP[ k ].imag;
714*1858f998SYi Kong               }
715*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
716*1858f998SYi Kong               for( i=0; i<j+1; i++, k++ ) {
717*1858f998SYi Kong                  ap[ k ].real=A[ LDA*i+j ].real;
718*1858f998SYi Kong 	         ap[ k ].imag=A[ LDA*i+j ].imag;
719*1858f998SYi Kong               }
720*1858f998SYi Kong         }
721*1858f998SYi Kong         else {
722*1858f998SYi Kong            for( i=0, k=0; i<*n; i++ )
723*1858f998SYi Kong               for( j=0; j<i+1; j++, k++ ) {
724*1858f998SYi Kong                  A[ LDA*i+j ].real=AP[ k ].real;
725*1858f998SYi Kong 	         A[ LDA*i+j ].imag=AP[ k ].imag;
726*1858f998SYi Kong               }
727*1858f998SYi Kong            for( j=0, k=0; j<*n; j++ )
728*1858f998SYi Kong               for( i=j; i<*n; i++, k++ ) {
729*1858f998SYi Kong                  ap[ k ].real=A[ LDA*i+j ].real;
730*1858f998SYi Kong 	         ap[ k ].imag=A[ LDA*i+j ].imag;
731*1858f998SYi Kong               }
732*1858f998SYi Kong         }
733*1858f998SYi Kong         free(A);
734*1858f998SYi Kong         free(AP);
735*1858f998SYi Kong      }
736*1858f998SYi Kong   }
737*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
738*1858f998SYi Kong      cblas_zhpr2( CblasColMajor, uplo, *n, alpha, x, *incx, y, *incy, ap );
739*1858f998SYi Kong   else
740*1858f998SYi Kong      cblas_zhpr2( UNDEFINED, uplo, *n, alpha, x, *incx, y, *incy, ap );
741*1858f998SYi Kong }
742*1858f998SYi Kong 
F77_zher(int * order,char * uplow,int * n,double * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * a,int * lda)743*1858f998SYi Kong void F77_zher(int *order, char *uplow, int *n, double *alpha,
744*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *a, int *lda) {
745*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
746*1858f998SYi Kong   int i,j,LDA;
747*1858f998SYi Kong   enum CBLAS_UPLO uplo;
748*1858f998SYi Kong 
749*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
750*1858f998SYi Kong 
751*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
752*1858f998SYi Kong      LDA = *n+1;
753*1858f998SYi Kong      A=(CBLAS_TEST_ZOMPLEX*)malloc((*n)*LDA*sizeof( CBLAS_TEST_ZOMPLEX ));
754*1858f998SYi Kong 
755*1858f998SYi Kong      for( i=0; i<*n; i++ )
756*1858f998SYi Kong        for( j=0; j<*n; j++ ) {
757*1858f998SYi Kong 	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
758*1858f998SYi Kong           A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
759*1858f998SYi Kong        }
760*1858f998SYi Kong 
761*1858f998SYi Kong      cblas_zher(CblasRowMajor, uplo, *n, *alpha, x, *incx, A, LDA );
762*1858f998SYi Kong      for( i=0; i<*n; i++ )
763*1858f998SYi Kong        for( j=0; j<*n; j++ ) {
764*1858f998SYi Kong 	  a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;
765*1858f998SYi Kong           a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;
766*1858f998SYi Kong        }
767*1858f998SYi Kong      free(A);
768*1858f998SYi Kong   }
769*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
770*1858f998SYi Kong      cblas_zher( CblasColMajor, uplo, *n, *alpha, x, *incx, a, *lda );
771*1858f998SYi Kong   else
772*1858f998SYi Kong      cblas_zher( UNDEFINED, uplo, *n, *alpha, x, *incx, a, *lda );
773*1858f998SYi Kong }
774*1858f998SYi Kong 
F77_zher2(int * order,char * uplow,int * n,CBLAS_TEST_ZOMPLEX * alpha,CBLAS_TEST_ZOMPLEX * x,int * incx,CBLAS_TEST_ZOMPLEX * y,int * incy,CBLAS_TEST_ZOMPLEX * a,int * lda)775*1858f998SYi Kong void F77_zher2(int *order, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha,
776*1858f998SYi Kong           CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *y, int *incy,
777*1858f998SYi Kong 	  CBLAS_TEST_ZOMPLEX *a, int *lda) {
778*1858f998SYi Kong 
779*1858f998SYi Kong   CBLAS_TEST_ZOMPLEX *A;
780*1858f998SYi Kong   int i,j,LDA;
781*1858f998SYi Kong   enum CBLAS_UPLO uplo;
782*1858f998SYi Kong 
783*1858f998SYi Kong   get_uplo_type(uplow,&uplo);
784*1858f998SYi Kong 
785*1858f998SYi Kong   if (*order == TEST_ROW_MJR) {
786*1858f998SYi Kong      LDA = *n+1;
787*1858f998SYi Kong      A= ( CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) );
788*1858f998SYi Kong 
789*1858f998SYi Kong      for( i=0; i<*n; i++ )
790*1858f998SYi Kong        for( j=0; j<*n; j++ ) {
791*1858f998SYi Kong 	  A[ LDA*i+j ].real=a[ (*lda)*j+i ].real;
792*1858f998SYi Kong           A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag;
793*1858f998SYi Kong        }
794*1858f998SYi Kong 
795*1858f998SYi Kong      cblas_zher2(CblasRowMajor, uplo, *n, alpha, x, *incx, y, *incy, A, LDA );
796*1858f998SYi Kong      for( i=0; i<*n; i++ )
797*1858f998SYi Kong        for( j=0; j<*n; j++ ) {
798*1858f998SYi Kong 	  a[ (*lda)*j+i ].real=A[ LDA*i+j ].real;
799*1858f998SYi Kong           a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag;
800*1858f998SYi Kong        }
801*1858f998SYi Kong      free(A);
802*1858f998SYi Kong   }
803*1858f998SYi Kong   else if (*order == TEST_COL_MJR)
804*1858f998SYi Kong      cblas_zher2( CblasColMajor, uplo, *n, alpha, x, *incx, y, *incy, a, *lda);
805*1858f998SYi Kong   else
806*1858f998SYi Kong      cblas_zher2( UNDEFINED, uplo, *n, alpha, x, *incx, y, *incy, a, *lda);
807*1858f998SYi Kong }
808