OpenRadioss
2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cblas_cher.c
Go to the documentation of this file.
1
/*
2
* cblas_cher.c
3
* The program is a C interface to cher.
4
*
5
* Keita Teranishi 5/20/98
6
*
7
*/
8
#include <stdio.h>
9
#include <stdlib.h>
10
#include "
cblas.h
"
11
#include "
cblas_f77.h
"
12
void
cblas_cher
(
const
CBLAS_LAYOUT
layout,
const
CBLAS_UPLO
Uplo,
13
const
CBLAS_INT
N
,
const
float
alpha
,
const
void
*X,
const
CBLAS_INT
incX
14
,
void
*A,
const
CBLAS_INT
lda)
15
{
16
char
UL;
17
#ifdef F77_CHAR
18
F77_CHAR
F77_UL
;
19
#else
20
#define F77_UL &UL
21
#endif
22
23
#ifdef F77_INT
24
F77_INT
F77_N
=
N
,
F77_lda
=lda,
F77_incX
=incX;
25
#else
26
#define F77_N N
27
#define F77_lda lda
28
#define F77_incX incx
29
#endif
30
CBLAS_INT
n
, i, tincx, incx=incX;
31
float
*
x
=(
float
*)X, *xx=(
float
*)X, *tx, *st;
32
33
extern
int
CBLAS_CallFromC
;
34
extern
int
RowMajorStrg
;
35
RowMajorStrg
= 0;
36
37
CBLAS_CallFromC
= 1;
38
if
(layout ==
CblasColMajor
)
39
{
40
if
(Uplo ==
CblasLower
) UL =
'L'
;
41
else
if
(Uplo ==
CblasUpper
) UL =
'U'
;
42
else
43
{
44
cblas_xerbla
(2,
"cblas_cher"
,
"Illegal Uplo setting, %d\n"
,Uplo );
45
CBLAS_CallFromC
= 0;
46
RowMajorStrg
= 0;
47
return
;
48
}
49
#ifdef F77_CHAR
50
F77_UL
=
C2F_CHAR
(&UL);
51
#endif
52
53
F77_cher
(
F77_UL
, &
F77_N
, &
alpha
, X, &
F77_incX
, A, &
F77_lda
);
54
55
}
else
if
(layout ==
CblasRowMajor
)
56
{
57
RowMajorStrg
= 1;
58
if
(Uplo ==
CblasUpper
) UL =
'L'
;
59
else
if
(Uplo ==
CblasLower
) UL =
'U'
;
60
else
61
{
62
cblas_xerbla
(2,
"cblas_cher"
,
"Illegal Uplo setting, %d\n"
, Uplo);
63
CBLAS_CallFromC
= 0;
64
RowMajorStrg
= 0;
65
return
;
66
}
67
#ifdef F77_CHAR
68
F77_UL
=
C2F_CHAR
(&UL);
69
#endif
70
if
(
N
> 0)
71
{
72
n
=
N
<< 1;
73
x
= malloc(
n
*
sizeof
(
float
));
74
tx =
x
;
75
if
( incX > 0 ) {
76
i = incX << 1 ;
77
tincx = 2;
78
st=
x
+
n
;
79
}
else
{
80
i = incX *(-2);
81
tincx = -2;
82
st =
x
-2;
83
x
+=(
n
-2);
84
}
85
do
86
{
87
*
x
= *xx;
88
x
[1] = -xx[1];
89
x
+= tincx ;
90
xx += i;
91
}
92
while
(
x
!= st);
93
x
=tx;
94
95
#ifdef F77_INT
96
F77_incX
= 1;
97
#else
98
incx = 1;
99
#endif
100
}
101
else
x
= (
float
*) X;
102
F77_cher
(
F77_UL
, &
F77_N
, &
alpha
,
x
, &
F77_incX
, A, &
F77_lda
);
103
}
else
104
{
105
cblas_xerbla
(1,
"cblas_cher"
,
"Illegal layout setting, %d\n"
, layout);
106
CBLAS_CallFromC
= 0;
107
RowMajorStrg
= 0;
108
return
;
109
}
110
if
(X!=
x
)
111
free(
x
);
112
113
CBLAS_CallFromC
= 0;
114
RowMajorStrg
= 0;
115
return
;
116
}
C2F_CHAR
#define C2F_CHAR(a)
Definition
pblas.h:125
cblas.h
CBLAS_UPLO
CBLAS_UPLO
Definition
cblas.h:29
CblasLower
@ CblasLower
Definition
cblas.h:29
CblasUpper
@ CblasUpper
Definition
cblas.h:29
cblas_xerbla
void cblas_xerbla(CBLAS_INT p, const char *rout, const char *form,...)
Definition
cblas_xerbla.c:12
CBLAS_LAYOUT
CBLAS_LAYOUT
Definition
cblas.h:27
CblasColMajor
@ CblasColMajor
Definition
cblas.h:27
CblasRowMajor
@ CblasRowMajor
Definition
cblas.h:27
CBLAS_INT
#define CBLAS_INT
Definition
cblas.h:23
F77_incX
#define F77_incX
F77_N
#define F77_N
F77_lda
#define F77_lda
F77_UL
#define F77_UL
cblas_cher
void cblas_cher(const CBLAS_LAYOUT layout, const CBLAS_UPLO Uplo, const CBLAS_INT N, const float alpha, const void *X, const CBLAS_INT incX, void *A, const CBLAS_INT lda)
Definition
cblas_cher.c:12
cblas_f77.h
F77_cher
#define F77_cher(...)
Definition
cblas_f77.h:330
F77_INT
#define F77_INT
Definition
cblas_f77.h:32
CBLAS_CallFromC
int CBLAS_CallFromC
Definition
cblas_globals.c:1
RowMajorStrg
int RowMajorStrg
Definition
cblas_globals.c:2
alpha
#define alpha
Definition
eval.h:35
N
#define N
Definition
example_user.c:10
x
x
Definition
schur_example.m:53
n
n
Definition
schur_example.m:9
engine
extlib
lapack-3.10.1
CBLAS
src
cblas_cher.c
Generated by
1.15.0