LAPACK
3.9.0
LAPACK: Linear Algebra PACKage
cblas_ctrmm.c
Go to the documentation of this file.
1
/*
2
*
3
* cblas_ctrmm.c
4
* This program is a C interface to ctrmm.
5
* Written by Keita Teranishi
6
* 4/8/1998
7
*
8
*/
9
10
#include "
cblas.h
"
11
#include "
cblas_f77.h
"
12
void
cblas_ctrmm
(
const
CBLAS_LAYOUT
layout,
const
CBLAS_SIDE
Side,
13
const
CBLAS_UPLO
Uplo,
const
CBLAS_TRANSPOSE
TransA,
14
const
CBLAS_DIAG
Diag,
const
int
M,
const
int
N
,
15
const
void
*alpha,
const
void
*A,
const
int
lda,
16
void
*B,
const
int
ldb)
17
{
18
char
UL, TA, SD, DI;
19
#ifdef F77_CHAR
20
F77_CHAR
F77_TA
,
F77_UL
,
F77_SD
,
F77_DI
;
21
#else
22
#define F77_TA &TA
23
#define F77_UL &UL
24
#define F77_SD &SD
25
#define F77_DI &DI
26
#endif
27
28
#ifdef F77_INT
29
F77_INT
F77_M
=M,
F77_N
=
N
,
F77_lda
=lda,
F77_ldb
=ldb;
30
#else
31
#define F77_M M
32
#define F77_N N
33
#define F77_lda lda
34
#define F77_ldb ldb
35
#endif
36
37
extern
int
CBLAS_CallFromC
;
38
extern
int
RowMajorStrg
;
39
RowMajorStrg
= 0;
40
CBLAS_CallFromC
= 1;
41
42
if
( layout ==
CblasColMajor
)
43
{
44
if
( Side ==
CblasRight
) SD=
'R'
;
45
else
if
( Side ==
CblasLeft
) SD=
'L'
;
46
else
47
{
48
cblas_xerbla
(2,
"cblas_ctrmm"
,
"Illegal Side setting, %d\n"
, Side);
49
CBLAS_CallFromC
= 0;
50
RowMajorStrg
= 0;
51
return
;
52
}
53
if
( Uplo ==
CblasUpper
) UL=
'U'
;
54
else
if
( Uplo ==
CblasLower
) UL=
'L'
;
55
else
56
{
57
cblas_xerbla
(3,
"cblas_ctrmm"
,
"Illegal Uplo setting, %d\n"
, Uplo);
58
CBLAS_CallFromC
= 0;
59
RowMajorStrg
= 0;
60
return
;
61
}
62
63
if
( TransA ==
CblasTrans
) TA =
'T'
;
64
else
if
( TransA ==
CblasConjTrans
) TA=
'C'
;
65
else
if
( TransA ==
CblasNoTrans
) TA=
'N'
;
66
else
67
{
68
cblas_xerbla
(4,
"cblas_ctrmm"
,
"Illegal Trans setting, %d\n"
, TransA);
69
CBLAS_CallFromC
= 0;
70
RowMajorStrg
= 0;
71
return
;
72
}
73
74
if
( Diag ==
CblasUnit
) DI=
'U'
;
75
else
if
( Diag ==
CblasNonUnit
) DI=
'N'
;
76
else
cblas_xerbla
(5,
"cblas_ctrmm"
,
77
"Illegal Diag setting, %d\n"
, Diag);
78
79
#ifdef F77_CHAR
80
F77_UL
= C2F_CHAR(&UL);
81
F77_TA
= C2F_CHAR(&TA);
82
F77_SD
= C2F_CHAR(&SD);
83
F77_DI
= C2F_CHAR(&DI);
84
#endif
85
86
F77_ctrmm
(
F77_SD
,
F77_UL
,
F77_TA
,
F77_DI
, &
F77_M
, &
F77_N
, alpha, A, &
F77_lda
, B, &
F77_ldb
);
87
}
else
if
(layout ==
CblasRowMajor
)
88
{
89
RowMajorStrg
= 1;
90
if
( Side ==
CblasRight
) SD=
'L'
;
91
else
if
( Side ==
CblasLeft
) SD=
'R'
;
92
else
93
{
94
cblas_xerbla
(2,
"cblas_ctrmm"
,
"Illegal Side setting, %d\n"
, Side);
95
CBLAS_CallFromC
= 0;
96
RowMajorStrg
= 0;
97
return
;
98
}
99
100
if
( Uplo ==
CblasUpper
) UL=
'L'
;
101
else
if
( Uplo ==
CblasLower
) UL=
'U'
;
102
else
103
{
104
cblas_xerbla
(3,
"cblas_ctrmm"
,
"Illegal Uplo setting, %d\n"
, Uplo);
105
CBLAS_CallFromC
= 0;
106
RowMajorStrg
= 0;
107
return
;
108
}
109
110
if
( TransA ==
CblasTrans
) TA =
'T'
;
111
else
if
( TransA ==
CblasConjTrans
) TA=
'C'
;
112
else
if
( TransA ==
CblasNoTrans
) TA=
'N'
;
113
else
114
{
115
cblas_xerbla
(4,
"cblas_ctrmm"
,
"Illegal Trans setting, %d\n"
, TransA);
116
CBLAS_CallFromC
= 0;
117
RowMajorStrg
= 0;
118
return
;
119
}
120
121
if
( Diag ==
CblasUnit
) DI=
'U'
;
122
else
if
( Diag ==
CblasNonUnit
) DI=
'N'
;
123
else
124
{
125
cblas_xerbla
(5,
"cblas_ctrmm"
,
"Illegal Diag setting, %d\n"
, Diag);
126
CBLAS_CallFromC
= 0;
127
RowMajorStrg
= 0;
128
return
;
129
}
130
131
#ifdef F77_CHAR
132
F77_UL
= C2F_CHAR(&UL);
133
F77_TA
= C2F_CHAR(&TA);
134
F77_SD
= C2F_CHAR(&SD);
135
F77_DI
= C2F_CHAR(&DI);
136
#endif
137
138
F77_ctrmm
(
F77_SD
,
F77_UL
,
F77_TA
,
F77_DI
, &
F77_N
, &
F77_M
, alpha, A, &
F77_lda
, B, &
F77_ldb
);
139
}
140
else
cblas_xerbla
(1,
"cblas_ctrmm"
,
"Illegal layout setting, %d\n"
, layout);
141
CBLAS_CallFromC
= 0;
142
RowMajorStrg
= 0;
143
return
;
144
}
cblas_f77.h
CblasNonUnit
Definition:
cblas.h:22
CBLAS_TRANSPOSE
CBLAS_TRANSPOSE
Definition:
cblas.h:20
CBLAS_SIDE
CBLAS_SIDE
Definition:
cblas.h:23
CblasUnit
Definition:
cblas.h:22
cblas_xerbla
void cblas_xerbla(int p, const char *rout, const char *form,...)
Definition:
cblas_xerbla.c:8
CblasUpper
Definition:
cblas.h:21
CBLAS_DIAG
CBLAS_DIAG
Definition:
cblas.h:22
F77_ctrmm
#define F77_ctrmm
Definition:
cblas_f77.h:183
F77_DI
#define F77_DI
CblasRight
Definition:
cblas.h:23
CblasColMajor
Definition:
cblas.h:19
F77_M
#define F77_M
F77_ldb
#define F77_ldb
F77_TA
#define F77_TA
CblasTrans
Definition:
cblas.h:20
CBLAS_CallFromC
int CBLAS_CallFromC
Definition:
cblas_globals.c:1
cblas.h
CBLAS_LAYOUT
CBLAS_LAYOUT
Definition:
cblas.h:19
CblasRowMajor
Definition:
cblas.h:19
RowMajorStrg
int RowMajorStrg
Definition:
cblas_globals.c:2
F77_UL
#define F77_UL
F77_SD
#define F77_SD
CblasLeft
Definition:
cblas.h:23
CblasNoTrans
Definition:
cblas.h:20
F77_lda
#define F77_lda
CblasLower
Definition:
cblas.h:21
F77_N
#define F77_N
CBLAS_UPLO
CBLAS_UPLO
Definition:
cblas.h:21
N
#define N
Definition:
example_user.c:10
CblasConjTrans
Definition:
cblas.h:20
cblas_ctrmm
void cblas_ctrmm(const CBLAS_LAYOUT layout, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int M, const int N, const void *alpha, const void *A, const int lda, void *B, const int ldb)
Definition:
cblas_ctrmm.c:12
CBLAS
src
cblas_ctrmm.c
Generated on Wed May 5 2021 15:10:30 for LAPACK by
1.8.16