01: /*
02:  *
03:  * cblas_dger.c
04:  * This program is a C interface to dger.
05:  * Written by Keita Teranishi
06:  * 4/6/1998
07:  *
08:  */
09: 
10: #include "cblas.h"
11: #include "cblas_f77.h"
12: void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
13:                 const double alpha, const double  *X, const int incX,
14:                 const double  *Y, const int incY, double  *A, const int lda)
15: {
16: #ifdef F77_INT
17:    F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY;
18: #else
19:    #define F77_M M
20:    #define F77_N N
21:    #define F77_incX incX
22:    #define F77_incY incY
23:    #define F77_lda lda
24: #endif
25: 
26:    extern int CBLAS_CallFromC;
27:    extern int RowMajorStrg;
28:    RowMajorStrg = 0;
29: 
30:    CBLAS_CallFromC = 1;
31:    if (order == CblasColMajor)
32:    {
33:       F77_dger( &F77_M, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A,
34:                       &F77_lda);
35:    }
36:    else if (order == CblasRowMajor)
37:    {
38:       RowMajorStrg = 1;
39:       F77_dger( &F77_N, &F77_M ,&alpha, Y, &F77_incY, X, &F77_incX, A,
40:                       &F77_lda);
41: 
42:    }
43:    else cblas_xerbla(1, "cblas_dger", "Illegal Order setting, %d\n", order);
44:    CBLAS_CallFromC = 0;
45:    RowMajorStrg = 0;
46:    return;
47: }
48: