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