11 #include "cblas_f77.h" 12 void cblas_zgemv(
const CBLAS_LAYOUT layout,
13 const CBLAS_TRANSPOSE TransA,
const CBLAS_INT M,
const CBLAS_INT N,
14 const void *alpha,
const void *A,
const CBLAS_INT lda,
15 const void *X,
const CBLAS_INT incX,
const void *beta,
16 void *Y,
const CBLAS_INT incY)
25 F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY;
34 CBLAS_INT n, i=0, incx=incX;
35 const double *xx= (
double *)X, *alp= (
double *)alpha, *bet = (
double *)beta;
36 double ALPHA[2],BETA[2];
37 CBLAS_INT tincY, tincx;
38 double *x=(
double *)X, *y=(
double *)Y, *st=0, *tx;
39 extern int CBLAS_CallFromC;
40 extern int RowMajorStrg;
45 if (layout == CblasColMajor)
47 if (TransA == CblasNoTrans) TA =
'N';
48 else if (TransA == CblasTrans) TA =
'T';
49 else if (TransA == CblasConjTrans) TA =
'C';
52 cblas_xerbla(2,
"cblas_zgemv",
"Illegal TransA setting, %d\n", TransA);
58 F77_TA = C2F_CHAR(&TA);
60 F77_zgemv(F77_TA, &F77_M, &F77_N, alpha, A, &F77_lda, X, &F77_incX,
63 else if (layout == CblasRowMajor)
67 if (TransA == CblasNoTrans) TA =
'T';
68 else if (TransA == CblasTrans) TA =
'N';
69 else if (TransA == CblasConjTrans)
79 x = malloc(n*
sizeof(
double));
127 else x = (
double *) X;
131 cblas_xerbla(2,
"cblas_zgemv",
"Illegal TransA setting, %d\n", TransA);
137 F77_TA = C2F_CHAR(&TA);
139 if (TransA == CblasConjTrans)
140 F77_zgemv(F77_TA, &F77_N, &F77_M, ALPHA, A, &F77_lda, x,
141 &F77_incX, BETA, Y, &F77_incY);
143 F77_zgemv(F77_TA, &F77_N, &F77_M, alpha, A, &F77_lda, x,
144 &F77_incX, beta, Y, &F77_incY);
146 if (TransA == CblasConjTrans)
148 if (x != (
double *)X) free(x);
160 else cblas_xerbla(1,
"cblas_zgemv",
"Illegal layout setting, %d\n", layout);