LAPACK
3.9.0
LAPACK: Linear Algebra PACKage
cblas_ctpmv.c
Go to the documentation of this file.
1
/*
2
* cblas_ctpmv.c
3
* The program is a C interface to ctpmv.
4
*
5
* Keita Teranishi 5/20/98
6
*
7
*/
8
#include "
cblas.h
"
9
#include "
cblas_f77.h
"
10
void
cblas_ctpmv
(
const
CBLAS_LAYOUT
layout,
const
CBLAS_UPLO
Uplo,
11
const
CBLAS_TRANSPOSE
TransA,
const
CBLAS_DIAG
Diag,
12
const
int
N
,
const
void
*Ap,
void
*X,
const
int
incX)
13
{
14
char
TA;
15
char
UL;
16
char
DI;
17
#ifdef F77_CHAR
18
F77_CHAR
F77_TA
,
F77_UL
,
F77_DI
;
19
#else
20
#define F77_TA &TA
21
#define F77_UL &UL
22
#define F77_DI &DI
23
#endif
24
#ifdef F77_INT
25
F77_INT
F77_N
=
N
,
F77_incX
=incX;
26
#else
27
#define F77_N N
28
#define F77_incX incX
29
#endif
30
int
n, i=0, tincX;
31
float
*st=0,*x=(
float
*)X;
32
extern
int
CBLAS_CallFromC
;
33
extern
int
RowMajorStrg
;
34
RowMajorStrg
= 0;
35
36
CBLAS_CallFromC
= 1;
37
if
(layout ==
CblasColMajor
)
38
{
39
if
(Uplo ==
CblasUpper
) UL =
'U'
;
40
else
if
(Uplo ==
CblasLower
) UL =
'L'
;
41
else
42
{
43
cblas_xerbla
(2,
"cblas_ctpmv"
,
"Illegal Uplo setting, %d\n"
, Uplo);
44
CBLAS_CallFromC
= 0;
45
RowMajorStrg
= 0;
46
return
;
47
}
48
if
(TransA ==
CblasNoTrans
) TA =
'N'
;
49
else
if
(TransA ==
CblasTrans
) TA =
'T'
;
50
else
if
(TransA ==
CblasConjTrans
) TA =
'C'
;
51
else
52
{
53
cblas_xerbla
(3,
"cblas_ctpmv"
,
"Illegal TransA setting, %d\n"
, TransA);
54
CBLAS_CallFromC
= 0;
55
RowMajorStrg
= 0;
56
return
;
57
}
58
if
(Diag ==
CblasUnit
) DI =
'U'
;
59
else
if
(Diag ==
CblasNonUnit
) DI =
'N'
;
60
else
61
{
62
cblas_xerbla
(4,
"cblas_ctpmv"
,
"Illegal Diag setting, %d\n"
, Diag);
63
CBLAS_CallFromC
= 0;
64
RowMajorStrg
= 0;
65
return
;
66
}
67
#ifdef F77_CHAR
68
F77_UL
= C2F_CHAR(&UL);
69
F77_TA
= C2F_CHAR(&TA);
70
F77_DI
= C2F_CHAR(&DI);
71
#endif
72
F77_ctpmv
(
F77_UL
,
F77_TA
,
F77_DI
, &
F77_N
, Ap, X, &
F77_incX
);
73
}
74
else
if
(layout ==
CblasRowMajor
)
75
{
76
RowMajorStrg
= 1;
77
if
(Uplo ==
CblasUpper
) UL =
'L'
;
78
else
if
(Uplo ==
CblasLower
) UL =
'U'
;
79
else
80
{
81
cblas_xerbla
(2,
"cblas_ctpmv"
,
"Illegal Uplo setting, %d\n"
, Uplo);
82
CBLAS_CallFromC
= 0;
83
RowMajorStrg
= 0;
84
return
;
85
}
86
87
if
(TransA ==
CblasNoTrans
) TA =
'T'
;
88
else
if
(TransA ==
CblasTrans
) TA =
'N'
;
89
else
if
(TransA ==
CblasConjTrans
)
90
{
91
TA =
'N'
;
92
if
(
N
> 0)
93
{
94
if
(incX > 0)
95
tincX = incX;
96
else
97
tincX = -incX;
98
i = tincX << 1;
99
n = i *
N
;
100
x++;
101
st = x + n;
102
do
103
{
104
*x = -(*x);
105
x += i;
106
}
107
while
(x != st);
108
x -= n;
109
}
110
}
111
else
112
{
113
cblas_xerbla
(3,
"cblas_ctpmv"
,
"Illegal TransA setting, %d\n"
, TransA);
114
CBLAS_CallFromC
= 0;
115
RowMajorStrg
= 0;
116
return
;
117
}
118
119
if
(Diag ==
CblasUnit
) DI =
'U'
;
120
else
if
(Diag ==
CblasNonUnit
) DI =
'N'
;
121
else
122
{
123
cblas_xerbla
(4,
"cblas_ctpmv"
,
"Illegal Diag setting, %d\n"
, Diag);
124
CBLAS_CallFromC
= 0;
125
RowMajorStrg
= 0;
126
return
;
127
}
128
#ifdef F77_CHAR
129
F77_UL
= C2F_CHAR(&UL);
130
F77_TA
= C2F_CHAR(&TA);
131
F77_DI
= C2F_CHAR(&DI);
132
#endif
133
134
F77_ctpmv
(
F77_UL
,
F77_TA
,
F77_DI
, &
F77_N
, Ap, X,&
F77_incX
);
135
if
(TransA ==
CblasConjTrans
)
136
{
137
if
(
N
> 0)
138
{
139
do
140
{
141
*x = -(*x);
142
x += i;
143
}
144
while
(x != st);
145
}
146
}
147
}
148
else
cblas_xerbla
(1,
"cblas_ctpmv"
,
"Illegal layout setting, %d\n"
, layout);
149
CBLAS_CallFromC
= 0;
150
RowMajorStrg
= 0;
151
return
;
152
}
cblas_f77.h
CblasNonUnit
Definition:
cblas.h:22
CBLAS_TRANSPOSE
CBLAS_TRANSPOSE
Definition:
cblas.h:20
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_ctpmv
void cblas_ctpmv(const CBLAS_LAYOUT layout, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int N, const void *Ap, void *X, const int incX)
Definition:
cblas_ctpmv.c:10
CBLAS_DIAG
CBLAS_DIAG
Definition:
cblas.h:22
F77_N
#define F77_N
F77_ctpmv
#define F77_ctpmv
Definition:
cblas_f77.h:146
CblasColMajor
Definition:
cblas.h:19
F77_UL
#define F77_UL
CblasTrans
Definition:
cblas.h:20
CBLAS_CallFromC
int CBLAS_CallFromC
Definition:
cblas_globals.c:1
F77_DI
#define F77_DI
cblas.h
CBLAS_LAYOUT
CBLAS_LAYOUT
Definition:
cblas.h:19
CblasRowMajor
Definition:
cblas.h:19
RowMajorStrg
int RowMajorStrg
Definition:
cblas_globals.c:2
F77_TA
#define F77_TA
CblasNoTrans
Definition:
cblas.h:20
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_incX
#define F77_incX
CBLAS
src
cblas_ctpmv.c
Generated on Wed May 5 2021 15:10:30 for LAPACK by
1.8.16