01: /*
02:  *
03:  * cblas_dgbmv.c
04:  * This program is a C interface to dgbmv.
05:  * Written by Keita Teranishi
06:  * 4/6/1998
07:  *
08:  */
09: #include "cblas.h"
10: #include "cblas_f77.h"
11: void cblas_dgbmv(const enum CBLAS_ORDER order,
12:                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
13:                  const int KL, const int KU,
14:                  const double alpha, const double  *A, const int lda,
15:                  const double  *X, const int incX, const double beta,
16:                  double  *Y, const int incY)
17: {
18:    char TA;
19: #ifdef F77_CHAR
20:    F77_CHAR F77_TA;
21: #else
22:    #define F77_TA &TA
23: #endif
24: #ifdef F77_INT
25:    F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY;
26:    F77_INT F77_KL=KL,F77_KU=KU;
27: #else
28:    #define F77_M M
29:    #define F77_N N
30:    #define F77_lda lda
31:    #define F77_KL KL
32:    #define F77_KU KU
33:    #define F77_incX incX
34:    #define F77_incY incY
35: #endif
36:    extern int CBLAS_CallFromC;
37:    extern int RowMajorStrg;
38:    RowMajorStrg = 0;
39: 
40:    CBLAS_CallFromC = 1;
41:    if (order == CblasColMajor)
42:    {
43:       if (TransA == CblasNoTrans) TA = 'N';
44:       else if (TransA == CblasTrans) TA = 'T';
45:       else if (TransA == CblasConjTrans) TA = 'C';
46:       else
47:       {
48:          cblas_xerbla(2, "cblas_dgbmv","Illegal TransA setting, %d\n", TransA);
49:          CBLAS_CallFromC = 0;
50:          RowMajorStrg = 0;
51:          return;
52:       }
53:       #ifdef F77_CHAR
54:          F77_TA = C2F_CHAR(&TA);
55:       #endif
56:       F77_dgbmv(F77_TA, &F77_M, &F77_N, &F77_KL, &F77_KU, &alpha,
57:                      A, &F77_lda, X, &F77_incX, &beta, Y, &F77_incY);
58:    }
59:    else if (order == CblasRowMajor)
60:    {
61:       RowMajorStrg = 1;
62:       if (TransA == CblasNoTrans) TA = 'T';
63:       else if (TransA == CblasTrans) TA = 'N';
64:       else if (TransA == CblasConjTrans) TA = 'N';
65:       else
66:       {
67:          cblas_xerbla(2, "cblas_dgbmv","Illegal TransA setting, %d\n", TransA);
68:          CBLAS_CallFromC = 0;
69:          RowMajorStrg = 0;
70:          return;
71:       }
72:       #ifdef F77_CHAR
73:          F77_TA = C2F_CHAR(&TA);
74:       #endif
75:       F77_dgbmv(F77_TA, &F77_N, &F77_M, &F77_KU, &F77_KL, &alpha,
76:                      A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY);
77:    }
78:    else cblas_xerbla(1, "cblas_dgbmv", "Illegal Order setting, %d\n", order);
79:    CBLAS_CallFromC = 0;
80:    RowMajorStrg = 0;
81: }
82: