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, 1/23/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_dgemv(int * order,char * transp,int * m,int * n,double * alpha,double * a,int * lda,double * x,int * incx,double * beta,double * y,int * incy)11*1858f998SYi Kong void F77_dgemv(int *order, char *transp, int *m, int *n, double *alpha,
12*1858f998SYi Kong double *a, int *lda, double *x, int *incx, double *beta,
13*1858f998SYi Kong double *y, int *incy ) {
14*1858f998SYi Kong
15*1858f998SYi Kong double *A;
16*1858f998SYi Kong int i,j,LDA;
17*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
18*1858f998SYi Kong
19*1858f998SYi Kong get_transpose_type(transp, &trans);
20*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
21*1858f998SYi Kong LDA = *n+1;
22*1858f998SYi Kong A = ( double* )malloc( (*m)*LDA*sizeof( double ) );
23*1858f998SYi Kong for( i=0; i<*m; i++ )
24*1858f998SYi Kong for( j=0; j<*n; j++ )
25*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
26*1858f998SYi Kong cblas_dgemv( CblasRowMajor, trans,
27*1858f998SYi Kong *m, *n, *alpha, A, LDA, x, *incx, *beta, y, *incy );
28*1858f998SYi Kong free(A);
29*1858f998SYi Kong }
30*1858f998SYi Kong else if (*order == TEST_COL_MJR)
31*1858f998SYi Kong cblas_dgemv( CblasColMajor, trans,
32*1858f998SYi Kong *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy );
33*1858f998SYi Kong else
34*1858f998SYi Kong cblas_dgemv( UNDEFINED, trans,
35*1858f998SYi Kong *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy );
36*1858f998SYi Kong }
37*1858f998SYi Kong
F77_dger(int * order,int * m,int * n,double * alpha,double * x,int * incx,double * y,int * incy,double * a,int * lda)38*1858f998SYi Kong void F77_dger(int *order, int *m, int *n, double *alpha, double *x, int *incx,
39*1858f998SYi Kong double *y, int *incy, double *a, int *lda ) {
40*1858f998SYi Kong
41*1858f998SYi Kong double *A;
42*1858f998SYi Kong int i,j,LDA;
43*1858f998SYi Kong
44*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
45*1858f998SYi Kong LDA = *n+1;
46*1858f998SYi Kong A = ( double* )malloc( (*m)*LDA*sizeof( double ) );
47*1858f998SYi Kong
48*1858f998SYi Kong for( i=0; i<*m; i++ ) {
49*1858f998SYi Kong for( j=0; j<*n; j++ )
50*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
51*1858f998SYi Kong }
52*1858f998SYi Kong
53*1858f998SYi Kong cblas_dger(CblasRowMajor, *m, *n, *alpha, x, *incx, y, *incy, A, LDA );
54*1858f998SYi Kong for( i=0; i<*m; i++ )
55*1858f998SYi Kong for( j=0; j<*n; j++ )
56*1858f998SYi Kong a[ (*lda)*j+i ]=A[ LDA*i+j ];
57*1858f998SYi Kong free(A);
58*1858f998SYi Kong }
59*1858f998SYi Kong else
60*1858f998SYi Kong cblas_dger( CblasColMajor, *m, *n, *alpha, x, *incx, y, *incy, a, *lda );
61*1858f998SYi Kong }
62*1858f998SYi Kong
F77_dtrmv(int * order,char * uplow,char * transp,char * diagn,int * n,double * a,int * lda,double * x,int * incx)63*1858f998SYi Kong void F77_dtrmv(int *order, char *uplow, char *transp, char *diagn,
64*1858f998SYi Kong int *n, double *a, int *lda, double *x, int *incx) {
65*1858f998SYi Kong double *A;
66*1858f998SYi Kong int i,j,LDA;
67*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
68*1858f998SYi Kong enum CBLAS_UPLO uplo;
69*1858f998SYi Kong enum CBLAS_DIAG diag;
70*1858f998SYi Kong
71*1858f998SYi Kong get_transpose_type(transp,&trans);
72*1858f998SYi Kong get_uplo_type(uplow,&uplo);
73*1858f998SYi Kong get_diag_type(diagn,&diag);
74*1858f998SYi Kong
75*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
76*1858f998SYi Kong LDA = *n+1;
77*1858f998SYi Kong A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
78*1858f998SYi Kong for( i=0; i<*n; i++ )
79*1858f998SYi Kong for( j=0; j<*n; j++ )
80*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
81*1858f998SYi Kong cblas_dtrmv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx);
82*1858f998SYi Kong free(A);
83*1858f998SYi Kong }
84*1858f998SYi Kong else if (*order == TEST_COL_MJR)
85*1858f998SYi Kong cblas_dtrmv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx);
86*1858f998SYi Kong else {
87*1858f998SYi Kong cblas_dtrmv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx);
88*1858f998SYi Kong }
89*1858f998SYi Kong }
90*1858f998SYi Kong
F77_dtrsv(int * order,char * uplow,char * transp,char * diagn,int * n,double * a,int * lda,double * x,int * incx)91*1858f998SYi Kong void F77_dtrsv(int *order, char *uplow, char *transp, char *diagn,
92*1858f998SYi Kong int *n, double *a, int *lda, double *x, int *incx ) {
93*1858f998SYi Kong double *A;
94*1858f998SYi Kong int i,j,LDA;
95*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
96*1858f998SYi Kong enum CBLAS_UPLO uplo;
97*1858f998SYi Kong enum CBLAS_DIAG diag;
98*1858f998SYi Kong
99*1858f998SYi Kong get_transpose_type(transp,&trans);
100*1858f998SYi Kong get_uplo_type(uplow,&uplo);
101*1858f998SYi Kong get_diag_type(diagn,&diag);
102*1858f998SYi Kong
103*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
104*1858f998SYi Kong LDA = *n+1;
105*1858f998SYi Kong A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
106*1858f998SYi Kong for( i=0; i<*n; i++ )
107*1858f998SYi Kong for( j=0; j<*n; j++ )
108*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
109*1858f998SYi Kong cblas_dtrsv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx );
110*1858f998SYi Kong free(A);
111*1858f998SYi Kong }
112*1858f998SYi Kong else
113*1858f998SYi Kong cblas_dtrsv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx );
114*1858f998SYi Kong }
F77_dsymv(int * order,char * uplow,int * n,double * alpha,double * a,int * lda,double * x,int * incx,double * beta,double * y,int * incy)115*1858f998SYi Kong void F77_dsymv(int *order, char *uplow, int *n, double *alpha, double *a,
116*1858f998SYi Kong int *lda, double *x, int *incx, double *beta, double *y,
117*1858f998SYi Kong int *incy) {
118*1858f998SYi Kong double *A;
119*1858f998SYi Kong int i,j,LDA;
120*1858f998SYi Kong enum CBLAS_UPLO uplo;
121*1858f998SYi Kong
122*1858f998SYi Kong get_uplo_type(uplow,&uplo);
123*1858f998SYi Kong
124*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
125*1858f998SYi Kong LDA = *n+1;
126*1858f998SYi Kong A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
127*1858f998SYi Kong for( i=0; i<*n; i++ )
128*1858f998SYi Kong for( j=0; j<*n; j++ )
129*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
130*1858f998SYi Kong cblas_dsymv(CblasRowMajor, uplo, *n, *alpha, A, LDA, x, *incx,
131*1858f998SYi Kong *beta, y, *incy );
132*1858f998SYi Kong free(A);
133*1858f998SYi Kong }
134*1858f998SYi Kong else
135*1858f998SYi Kong cblas_dsymv(CblasColMajor, uplo, *n, *alpha, a, *lda, x, *incx,
136*1858f998SYi Kong *beta, y, *incy );
137*1858f998SYi Kong }
138*1858f998SYi Kong
F77_dsyr(int * order,char * uplow,int * n,double * alpha,double * x,int * incx,double * a,int * lda)139*1858f998SYi Kong void F77_dsyr(int *order, char *uplow, int *n, double *alpha, double *x,
140*1858f998SYi Kong int *incx, double *a, int *lda) {
141*1858f998SYi Kong double *A;
142*1858f998SYi Kong int i,j,LDA;
143*1858f998SYi Kong enum CBLAS_UPLO uplo;
144*1858f998SYi Kong
145*1858f998SYi Kong get_uplo_type(uplow,&uplo);
146*1858f998SYi Kong
147*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
148*1858f998SYi Kong LDA = *n+1;
149*1858f998SYi Kong A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
150*1858f998SYi Kong for( i=0; i<*n; i++ )
151*1858f998SYi Kong for( j=0; j<*n; j++ )
152*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
153*1858f998SYi Kong cblas_dsyr(CblasRowMajor, uplo, *n, *alpha, x, *incx, A, LDA);
154*1858f998SYi Kong for( i=0; i<*n; i++ )
155*1858f998SYi Kong for( j=0; j<*n; j++ )
156*1858f998SYi Kong a[ (*lda)*j+i ]=A[ LDA*i+j ];
157*1858f998SYi Kong free(A);
158*1858f998SYi Kong }
159*1858f998SYi Kong else
160*1858f998SYi Kong cblas_dsyr(CblasColMajor, uplo, *n, *alpha, x, *incx, a, *lda);
161*1858f998SYi Kong }
162*1858f998SYi Kong
F77_dsyr2(int * order,char * uplow,int * n,double * alpha,double * x,int * incx,double * y,int * incy,double * a,int * lda)163*1858f998SYi Kong void F77_dsyr2(int *order, char *uplow, int *n, double *alpha, double *x,
164*1858f998SYi Kong int *incx, double *y, int *incy, double *a, int *lda) {
165*1858f998SYi Kong double *A;
166*1858f998SYi Kong int i,j,LDA;
167*1858f998SYi Kong enum CBLAS_UPLO uplo;
168*1858f998SYi Kong
169*1858f998SYi Kong get_uplo_type(uplow,&uplo);
170*1858f998SYi Kong
171*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
172*1858f998SYi Kong LDA = *n+1;
173*1858f998SYi Kong A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
174*1858f998SYi Kong for( i=0; i<*n; i++ )
175*1858f998SYi Kong for( j=0; j<*n; j++ )
176*1858f998SYi Kong A[ LDA*i+j ]=a[ (*lda)*j+i ];
177*1858f998SYi Kong cblas_dsyr2(CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, A, LDA);
178*1858f998SYi Kong for( i=0; i<*n; i++ )
179*1858f998SYi Kong for( j=0; j<*n; j++ )
180*1858f998SYi Kong a[ (*lda)*j+i ]=A[ LDA*i+j ];
181*1858f998SYi Kong free(A);
182*1858f998SYi Kong }
183*1858f998SYi Kong else
184*1858f998SYi Kong cblas_dsyr2(CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, a, *lda);
185*1858f998SYi Kong }
186*1858f998SYi Kong
F77_dgbmv(int * order,char * transp,int * m,int * n,int * kl,int * ku,double * alpha,double * a,int * lda,double * x,int * incx,double * beta,double * y,int * incy)187*1858f998SYi Kong void F77_dgbmv(int *order, char *transp, int *m, int *n, int *kl, int *ku,
188*1858f998SYi Kong double *alpha, double *a, int *lda, double *x, int *incx,
189*1858f998SYi Kong double *beta, double *y, int *incy ) {
190*1858f998SYi Kong
191*1858f998SYi Kong double *A;
192*1858f998SYi Kong int i,irow,j,jcol,LDA;
193*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
194*1858f998SYi Kong
195*1858f998SYi Kong get_transpose_type(transp, &trans);
196*1858f998SYi Kong
197*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
198*1858f998SYi Kong LDA = *ku+*kl+2;
199*1858f998SYi Kong A = ( double* )malloc( (*n+*kl)*LDA*sizeof( double ) );
200*1858f998SYi Kong for( i=0; i<*ku; i++ ){
201*1858f998SYi Kong irow=*ku+*kl-i;
202*1858f998SYi Kong jcol=(*ku)-i;
203*1858f998SYi Kong for( j=jcol; j<*n; j++ )
204*1858f998SYi Kong A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
205*1858f998SYi Kong }
206*1858f998SYi Kong i=*ku;
207*1858f998SYi Kong irow=*ku+*kl-i;
208*1858f998SYi Kong for( j=0; j<*n; j++ )
209*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
210*1858f998SYi Kong for( i=*ku+1; i<*ku+*kl+1; i++ ){
211*1858f998SYi Kong irow=*ku+*kl-i;
212*1858f998SYi Kong jcol=i-(*ku);
213*1858f998SYi Kong for( j=jcol; j<(*n+*kl); j++ )
214*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
215*1858f998SYi Kong }
216*1858f998SYi Kong cblas_dgbmv( CblasRowMajor, trans, *m, *n, *kl, *ku, *alpha,
217*1858f998SYi Kong A, LDA, x, *incx, *beta, y, *incy );
218*1858f998SYi Kong free(A);
219*1858f998SYi Kong }
220*1858f998SYi Kong else
221*1858f998SYi Kong cblas_dgbmv( CblasColMajor, trans, *m, *n, *kl, *ku, *alpha,
222*1858f998SYi Kong a, *lda, x, *incx, *beta, y, *incy );
223*1858f998SYi Kong }
224*1858f998SYi Kong
F77_dtbmv(int * order,char * uplow,char * transp,char * diagn,int * n,int * k,double * a,int * lda,double * x,int * incx)225*1858f998SYi Kong void F77_dtbmv(int *order, char *uplow, char *transp, char *diagn,
226*1858f998SYi Kong int *n, int *k, double *a, int *lda, double *x, int *incx) {
227*1858f998SYi Kong double *A;
228*1858f998SYi Kong int irow, jcol, i, j, LDA;
229*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
230*1858f998SYi Kong enum CBLAS_UPLO uplo;
231*1858f998SYi Kong enum CBLAS_DIAG diag;
232*1858f998SYi Kong
233*1858f998SYi Kong get_transpose_type(transp,&trans);
234*1858f998SYi Kong get_uplo_type(uplow,&uplo);
235*1858f998SYi Kong get_diag_type(diagn,&diag);
236*1858f998SYi Kong
237*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
238*1858f998SYi Kong LDA = *k+1;
239*1858f998SYi Kong A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
240*1858f998SYi Kong if (uplo == CblasUpper) {
241*1858f998SYi Kong for( i=0; i<*k; i++ ){
242*1858f998SYi Kong irow=*k-i;
243*1858f998SYi Kong jcol=(*k)-i;
244*1858f998SYi Kong for( j=jcol; j<*n; j++ )
245*1858f998SYi Kong A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
246*1858f998SYi Kong }
247*1858f998SYi Kong i=*k;
248*1858f998SYi Kong irow=*k-i;
249*1858f998SYi Kong for( j=0; j<*n; j++ )
250*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
251*1858f998SYi Kong }
252*1858f998SYi Kong else {
253*1858f998SYi Kong i=0;
254*1858f998SYi Kong irow=*k-i;
255*1858f998SYi Kong for( j=0; j<*n; j++ )
256*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
257*1858f998SYi Kong for( i=1; i<*k+1; i++ ){
258*1858f998SYi Kong irow=*k-i;
259*1858f998SYi Kong jcol=i;
260*1858f998SYi Kong for( j=jcol; j<(*n+*k); j++ )
261*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
262*1858f998SYi Kong }
263*1858f998SYi Kong }
264*1858f998SYi Kong cblas_dtbmv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx);
265*1858f998SYi Kong free(A);
266*1858f998SYi Kong }
267*1858f998SYi Kong else
268*1858f998SYi Kong cblas_dtbmv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
269*1858f998SYi Kong }
270*1858f998SYi Kong
F77_dtbsv(int * order,char * uplow,char * transp,char * diagn,int * n,int * k,double * a,int * lda,double * x,int * incx)271*1858f998SYi Kong void F77_dtbsv(int *order, char *uplow, char *transp, char *diagn,
272*1858f998SYi Kong int *n, int *k, double *a, int *lda, double *x, int *incx) {
273*1858f998SYi Kong double *A;
274*1858f998SYi Kong int irow, jcol, i, j, LDA;
275*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
276*1858f998SYi Kong enum CBLAS_UPLO uplo;
277*1858f998SYi Kong enum CBLAS_DIAG diag;
278*1858f998SYi Kong
279*1858f998SYi Kong get_transpose_type(transp,&trans);
280*1858f998SYi Kong get_uplo_type(uplow,&uplo);
281*1858f998SYi Kong get_diag_type(diagn,&diag);
282*1858f998SYi Kong
283*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
284*1858f998SYi Kong LDA = *k+1;
285*1858f998SYi Kong A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
286*1858f998SYi Kong if (uplo == CblasUpper) {
287*1858f998SYi Kong for( i=0; i<*k; i++ ){
288*1858f998SYi Kong irow=*k-i;
289*1858f998SYi Kong jcol=(*k)-i;
290*1858f998SYi Kong for( j=jcol; j<*n; j++ )
291*1858f998SYi Kong A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
292*1858f998SYi Kong }
293*1858f998SYi Kong i=*k;
294*1858f998SYi Kong irow=*k-i;
295*1858f998SYi Kong for( j=0; j<*n; j++ )
296*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
297*1858f998SYi Kong }
298*1858f998SYi Kong else {
299*1858f998SYi Kong i=0;
300*1858f998SYi Kong irow=*k-i;
301*1858f998SYi Kong for( j=0; j<*n; j++ )
302*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
303*1858f998SYi Kong for( i=1; i<*k+1; i++ ){
304*1858f998SYi Kong irow=*k-i;
305*1858f998SYi Kong jcol=i;
306*1858f998SYi Kong for( j=jcol; j<(*n+*k); j++ )
307*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
308*1858f998SYi Kong }
309*1858f998SYi Kong }
310*1858f998SYi Kong cblas_dtbsv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx);
311*1858f998SYi Kong free(A);
312*1858f998SYi Kong }
313*1858f998SYi Kong else
314*1858f998SYi Kong cblas_dtbsv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx);
315*1858f998SYi Kong }
316*1858f998SYi Kong
F77_dsbmv(int * order,char * uplow,int * n,int * k,double * alpha,double * a,int * lda,double * x,int * incx,double * beta,double * y,int * incy)317*1858f998SYi Kong void F77_dsbmv(int *order, char *uplow, int *n, int *k, double *alpha,
318*1858f998SYi Kong double *a, int *lda, double *x, int *incx, double *beta,
319*1858f998SYi Kong double *y, int *incy) {
320*1858f998SYi Kong double *A;
321*1858f998SYi Kong int i,j,irow,jcol,LDA;
322*1858f998SYi Kong enum CBLAS_UPLO uplo;
323*1858f998SYi Kong
324*1858f998SYi Kong get_uplo_type(uplow,&uplo);
325*1858f998SYi Kong
326*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
327*1858f998SYi Kong LDA = *k+1;
328*1858f998SYi Kong A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) );
329*1858f998SYi Kong if (uplo == CblasUpper) {
330*1858f998SYi Kong for( i=0; i<*k; i++ ){
331*1858f998SYi Kong irow=*k-i;
332*1858f998SYi Kong jcol=(*k)-i;
333*1858f998SYi Kong for( j=jcol; j<*n; j++ )
334*1858f998SYi Kong A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ];
335*1858f998SYi Kong }
336*1858f998SYi Kong i=*k;
337*1858f998SYi Kong irow=*k-i;
338*1858f998SYi Kong for( j=0; j<*n; j++ )
339*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
340*1858f998SYi Kong }
341*1858f998SYi Kong else {
342*1858f998SYi Kong i=0;
343*1858f998SYi Kong irow=*k-i;
344*1858f998SYi Kong for( j=0; j<*n; j++ )
345*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*j+i ];
346*1858f998SYi Kong for( i=1; i<*k+1; i++ ){
347*1858f998SYi Kong irow=*k-i;
348*1858f998SYi Kong jcol=i;
349*1858f998SYi Kong for( j=jcol; j<(*n+*k); j++ )
350*1858f998SYi Kong A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ];
351*1858f998SYi Kong }
352*1858f998SYi Kong }
353*1858f998SYi Kong cblas_dsbmv(CblasRowMajor, uplo, *n, *k, *alpha, A, LDA, x, *incx,
354*1858f998SYi Kong *beta, y, *incy );
355*1858f998SYi Kong free(A);
356*1858f998SYi Kong }
357*1858f998SYi Kong else
358*1858f998SYi Kong cblas_dsbmv(CblasColMajor, uplo, *n, *k, *alpha, a, *lda, x, *incx,
359*1858f998SYi Kong *beta, y, *incy );
360*1858f998SYi Kong }
361*1858f998SYi Kong
F77_dspmv(int * order,char * uplow,int * n,double * alpha,double * ap,double * x,int * incx,double * beta,double * y,int * incy)362*1858f998SYi Kong void F77_dspmv(int *order, char *uplow, int *n, double *alpha, double *ap,
363*1858f998SYi Kong double *x, int *incx, double *beta, double *y, int *incy) {
364*1858f998SYi Kong double *A,*AP;
365*1858f998SYi Kong int i,j,k,LDA;
366*1858f998SYi Kong enum CBLAS_UPLO uplo;
367*1858f998SYi Kong
368*1858f998SYi Kong get_uplo_type(uplow,&uplo);
369*1858f998SYi Kong
370*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
371*1858f998SYi Kong LDA = *n;
372*1858f998SYi Kong A = ( double* )malloc( LDA*LDA*sizeof( double ) );
373*1858f998SYi Kong AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
374*1858f998SYi Kong if (uplo == CblasUpper) {
375*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
376*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
377*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
378*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
379*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
380*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
381*1858f998SYi Kong }
382*1858f998SYi Kong else {
383*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
384*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
385*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
386*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
387*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
388*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
389*1858f998SYi Kong }
390*1858f998SYi Kong cblas_dspmv( CblasRowMajor, uplo, *n, *alpha, AP, x, *incx, *beta, y,
391*1858f998SYi Kong *incy );
392*1858f998SYi Kong free(A);
393*1858f998SYi Kong free(AP);
394*1858f998SYi Kong }
395*1858f998SYi Kong else
396*1858f998SYi Kong cblas_dspmv( CblasColMajor, uplo, *n, *alpha, ap, x, *incx, *beta, y,
397*1858f998SYi Kong *incy );
398*1858f998SYi Kong }
399*1858f998SYi Kong
F77_dtpmv(int * order,char * uplow,char * transp,char * diagn,int * n,double * ap,double * x,int * incx)400*1858f998SYi Kong void F77_dtpmv(int *order, char *uplow, char *transp, char *diagn,
401*1858f998SYi Kong int *n, double *ap, double *x, int *incx) {
402*1858f998SYi Kong double *A, *AP;
403*1858f998SYi Kong int i, j, k, LDA;
404*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
405*1858f998SYi Kong enum CBLAS_UPLO uplo;
406*1858f998SYi Kong enum CBLAS_DIAG diag;
407*1858f998SYi Kong
408*1858f998SYi Kong get_transpose_type(transp,&trans);
409*1858f998SYi Kong get_uplo_type(uplow,&uplo);
410*1858f998SYi Kong get_diag_type(diagn,&diag);
411*1858f998SYi Kong
412*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
413*1858f998SYi Kong LDA = *n;
414*1858f998SYi Kong A = ( double* )malloc( LDA*LDA*sizeof( double ) );
415*1858f998SYi Kong AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
416*1858f998SYi Kong if (uplo == CblasUpper) {
417*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
418*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
419*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
420*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
421*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
422*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
423*1858f998SYi Kong }
424*1858f998SYi Kong else {
425*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
426*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
427*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
428*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
429*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
430*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
431*1858f998SYi Kong }
432*1858f998SYi Kong cblas_dtpmv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
433*1858f998SYi Kong free(A);
434*1858f998SYi Kong free(AP);
435*1858f998SYi Kong }
436*1858f998SYi Kong else
437*1858f998SYi Kong cblas_dtpmv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
438*1858f998SYi Kong }
439*1858f998SYi Kong
F77_dtpsv(int * order,char * uplow,char * transp,char * diagn,int * n,double * ap,double * x,int * incx)440*1858f998SYi Kong void F77_dtpsv(int *order, char *uplow, char *transp, char *diagn,
441*1858f998SYi Kong int *n, double *ap, double *x, int *incx) {
442*1858f998SYi Kong double *A, *AP;
443*1858f998SYi Kong int i, j, k, LDA;
444*1858f998SYi Kong enum CBLAS_TRANSPOSE trans;
445*1858f998SYi Kong enum CBLAS_UPLO uplo;
446*1858f998SYi Kong enum CBLAS_DIAG diag;
447*1858f998SYi Kong
448*1858f998SYi Kong get_transpose_type(transp,&trans);
449*1858f998SYi Kong get_uplo_type(uplow,&uplo);
450*1858f998SYi Kong get_diag_type(diagn,&diag);
451*1858f998SYi Kong
452*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
453*1858f998SYi Kong LDA = *n;
454*1858f998SYi Kong A = ( double* )malloc( LDA*LDA*sizeof( double ) );
455*1858f998SYi Kong AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
456*1858f998SYi Kong if (uplo == CblasUpper) {
457*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
458*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
459*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
460*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
461*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
462*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
463*1858f998SYi Kong
464*1858f998SYi Kong }
465*1858f998SYi Kong else {
466*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
467*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
468*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
469*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
470*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
471*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
472*1858f998SYi Kong }
473*1858f998SYi Kong cblas_dtpsv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx );
474*1858f998SYi Kong free(A);
475*1858f998SYi Kong free(AP);
476*1858f998SYi Kong }
477*1858f998SYi Kong else
478*1858f998SYi Kong cblas_dtpsv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx );
479*1858f998SYi Kong }
480*1858f998SYi Kong
F77_dspr(int * order,char * uplow,int * n,double * alpha,double * x,int * incx,double * ap)481*1858f998SYi Kong void F77_dspr(int *order, char *uplow, int *n, double *alpha, double *x,
482*1858f998SYi Kong int *incx, double *ap ){
483*1858f998SYi Kong double *A, *AP;
484*1858f998SYi Kong int i,j,k,LDA;
485*1858f998SYi Kong enum CBLAS_UPLO uplo;
486*1858f998SYi Kong
487*1858f998SYi Kong get_uplo_type(uplow,&uplo);
488*1858f998SYi Kong
489*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
490*1858f998SYi Kong LDA = *n;
491*1858f998SYi Kong A = ( double* )malloc( LDA*LDA*sizeof( double ) );
492*1858f998SYi Kong AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
493*1858f998SYi Kong if (uplo == CblasUpper) {
494*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
495*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
496*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
497*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
498*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
499*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
500*1858f998SYi Kong }
501*1858f998SYi Kong else {
502*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
503*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
504*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
505*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
506*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
507*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
508*1858f998SYi Kong }
509*1858f998SYi Kong cblas_dspr( CblasRowMajor, uplo, *n, *alpha, x, *incx, AP );
510*1858f998SYi Kong if (uplo == CblasUpper) {
511*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
512*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
513*1858f998SYi Kong A[ LDA*i+j ]=AP[ k ];
514*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
515*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
516*1858f998SYi Kong ap[ k ]=A[ LDA*i+j ];
517*1858f998SYi Kong }
518*1858f998SYi Kong else {
519*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
520*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
521*1858f998SYi Kong A[ LDA*i+j ]=AP[ k ];
522*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
523*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
524*1858f998SYi Kong ap[ k ]=A[ LDA*i+j ];
525*1858f998SYi Kong }
526*1858f998SYi Kong free(A);
527*1858f998SYi Kong free(AP);
528*1858f998SYi Kong }
529*1858f998SYi Kong else
530*1858f998SYi Kong cblas_dspr( CblasColMajor, uplo, *n, *alpha, x, *incx, ap );
531*1858f998SYi Kong }
532*1858f998SYi Kong
F77_dspr2(int * order,char * uplow,int * n,double * alpha,double * x,int * incx,double * y,int * incy,double * ap)533*1858f998SYi Kong void F77_dspr2(int *order, char *uplow, int *n, double *alpha, double *x,
534*1858f998SYi Kong int *incx, double *y, int *incy, double *ap ){
535*1858f998SYi Kong double *A, *AP;
536*1858f998SYi Kong int i,j,k,LDA;
537*1858f998SYi Kong enum CBLAS_UPLO uplo;
538*1858f998SYi Kong
539*1858f998SYi Kong get_uplo_type(uplow,&uplo);
540*1858f998SYi Kong
541*1858f998SYi Kong if (*order == TEST_ROW_MJR) {
542*1858f998SYi Kong LDA = *n;
543*1858f998SYi Kong A = ( double* )malloc( LDA*LDA*sizeof( double ) );
544*1858f998SYi Kong AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) );
545*1858f998SYi Kong if (uplo == CblasUpper) {
546*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
547*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
548*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
549*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
550*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
551*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
552*1858f998SYi Kong }
553*1858f998SYi Kong else {
554*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
555*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
556*1858f998SYi Kong A[ LDA*i+j ]=ap[ k ];
557*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
558*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
559*1858f998SYi Kong AP[ k ]=A[ LDA*i+j ];
560*1858f998SYi Kong }
561*1858f998SYi Kong cblas_dspr2( CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, AP );
562*1858f998SYi Kong if (uplo == CblasUpper) {
563*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
564*1858f998SYi Kong for( j=i; j<*n; j++, k++ )
565*1858f998SYi Kong A[ LDA*i+j ]=AP[ k ];
566*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
567*1858f998SYi Kong for( i=0; i<j+1; i++, k++ )
568*1858f998SYi Kong ap[ k ]=A[ LDA*i+j ];
569*1858f998SYi Kong }
570*1858f998SYi Kong else {
571*1858f998SYi Kong for( i=0, k=0; i<*n; i++ )
572*1858f998SYi Kong for( j=0; j<i+1; j++, k++ )
573*1858f998SYi Kong A[ LDA*i+j ]=AP[ k ];
574*1858f998SYi Kong for( j=0, k=0; j<*n; j++ )
575*1858f998SYi Kong for( i=j; i<*n; i++, k++ )
576*1858f998SYi Kong ap[ k ]=A[ LDA*i+j ];
577*1858f998SYi Kong }
578*1858f998SYi Kong free(A);
579*1858f998SYi Kong free(AP);
580*1858f998SYi Kong }
581*1858f998SYi Kong else
582*1858f998SYi Kong cblas_dspr2( CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, ap );
583*1858f998SYi Kong }
584