Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
eXlibris
Xfiles
Commits
5859010b
Commit
5859010b
authored
Dec 09, 2020
by
Alexis SALZMAN
Browse files
[xLinAlg] add dsyr2k fortran and cpp interface
parent
3b387782
Changes
1
Hide whitespace changes
Inline
Side-by-side
xLinAlg/xSolverBase/src/xBlasDef.h
View file @
5859010b
/*
/*
This file is a part of eXlibris C++ Library
under the GNU Lesser General Public License.
See the NOTICE.md & LICENSE.md files for terms
See the NOTICE.md & LICENSE.md files for terms
and conditions.
*/
#ifndef _BLASDEF_
#define _BLASDEF_
#include <complex>
...
...
@@ -13,130 +13,155 @@ const char TRANSPOSE = 'T';
const
char
NOTRANSPOSE
=
'N'
;
const
char
UPPERTRIANGULAR
=
'U'
;
const
char
LOWERTRIANGULAR
=
'L'
;
const
int
INCONE
=
1
;
const
int
INCONE
=
1
;
// BLAS L3 extern def
extern
"C"
void
dgemm_
(
const
char
*
TRANSA
,
const
char
*
TRANSB
,
const
int
*
M
,
const
int
*
N
,
const
int
*
K
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
B
,
const
int
*
LDB
,
const
double
*
beta
,
double
*
C
,
const
int
*
LDC
);
extern
"C"
void
sgemm_
(
const
char
*
TRANSA
,
const
char
*
TRANSB
,
const
int
*
M
,
const
int
*
N
,
const
int
*
K
,
const
float
*
alpha
,
const
float
*
A
,
const
int
*
LDA
,
const
float
*
B
,
const
int
*
LDB
,
const
float
*
beta
,
float
*
C
,
const
int
*
LDC
);
extern
"C"
void
dsyrk_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
int
*
N
,
const
int
*
K
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
beta
,
double
*
C
,
const
int
*
LDC
);
extern
"C"
void
dtrmm_
(
const
char
*
SIDE
,
const
char
*
UPLO
,
const
char
*
TRANSA
,
const
char
*
DIAG
,
const
int
*
M
,
const
int
*
N
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
double
*
B
,
const
int
*
LDB
);
// BLAS L2 extern def
extern
"C"
void
dgemv_
(
const
char
*
TRANS
,
const
int
*
M
,
const
int
*
N
,
const
double
*
ALPHA
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
X
,
const
int
*
INCX
,
const
double
*
BETA
,
double
*
Y
,
const
int
*
INCY
);
extern
"C"
void
dsymv_
(
const
char
*
UPLO
,
const
int
*
N
,
const
double
*
ALPHA
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
X
,
const
int
*
INCX
,
const
double
*
BETA
,
const
double
*
Y
,
const
int
*
INCY
);
extern
"C"
void
dgemm_
(
const
char
*
TRANSA
,
const
char
*
TRANSB
,
const
int
*
M
,
const
int
*
N
,
const
int
*
K
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
B
,
const
int
*
LDB
,
const
double
*
beta
,
double
*
C
,
const
int
*
LDC
);
extern
"C"
void
dtrmv_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
char
*
DIAG
,
const
int
*
N
,
const
double
*
A
,
const
int
*
LDA
,
double
*
X
,
const
int
*
INCX
);
extern
"C"
void
sgemm_
(
const
char
*
TRANSA
,
const
char
*
TRANSB
,
const
int
*
M
,
const
int
*
N
,
const
int
*
K
,
const
float
*
alpha
,
const
float
*
A
,
const
int
*
LDA
,
const
float
*
B
,
const
int
*
LDB
,
const
float
*
beta
,
float
*
C
,
const
int
*
LDC
);
extern
"C"
void
dtbsv_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
char
*
DIAG
,
int
*
N
,
int
*
K
,
double
*
A
,
int
*
LDA
,
double
*
X
,
int
*
INCX
);
// BLAS L1 extern def
extern
"C"
void
daxpy_
(
const
int
*
N
,
const
double
*
a
,
const
double
*
x
,
const
int
*
incx
,
double
*
y
,
const
int
*
incy
);
extern
"C"
void
zaxpy_
(
const
int
*
N
,
const
void
*
a
,
const
void
*
x
,
const
int
*
incx
,
void
*
y
,
const
int
*
incy
);
extern
"C"
double
dnrm2_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
);
extern
"C"
float
sdot_
(
const
int
*
N
,
const
float
*
x
,
const
int
*
incx
,
const
float
*
y
,
const
int
*
incy
);
extern
"C"
double
ddot_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
,
const
double
*
y
,
const
int
*
incy
);
extern
"C"
double
zdotc_
(
const
int
*
N
,
const
void
*
zx
,
const
int
*
incx
,
const
void
*
zy
,
const
int
*
incy
);
extern
"C"
double
zdotu_
(
const
int
*
N
,
const
void
*
zx
,
const
int
*
incx
,
const
void
*
zy
,
const
int
*
incy
);
extern
"C"
void
dscal_
(
const
int
*
N
,
const
double
*
alpha
,
double
*
x
,
const
int
*
incx
);
extern
"C"
void
zscal_
(
const
int
*
N
,
const
void
*
alpha
,
void
*
x
,
const
int
*
incx
);
extern
"C"
int
idamax_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
);
extern
"C"
int
izamax_
(
const
int
*
N
,
const
void
*
x
,
const
int
*
incx
);
extern
"C"
void
saxpy_
(
const
int
*
N
,
const
float
*
a
,
const
float
*
x
,
const
int
*
incx
,
float
*
y
,
const
int
*
incy
);
extern
"C"
void
sscal_
(
const
int
*
N
,
const
float
*
alpha
,
float
*
x
,
const
int
*
incx
);
extern
"C"
int
isamax_
(
const
int
*
N
,
const
float
*
x
,
const
int
*
incx
);
extern
"C"
void
dsyrk_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
int
*
N
,
const
int
*
K
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
beta
,
double
*
C
,
const
int
*
LDC
);
extern
"C"
void
dsyr2k_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
int
*
N
,
const
int
*
K
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
B
,
const
int
*
LDB
,
const
double
*
beta
,
double
*
C
,
const
int
*
LDC
);
extern
"C"
void
dtrmm_
(
const
char
*
SIDE
,
const
char
*
UPLO
,
const
char
*
TRANSA
,
const
char
*
DIAG
,
const
int
*
M
,
const
int
*
N
,
const
double
*
alpha
,
const
double
*
A
,
const
int
*
LDA
,
double
*
B
,
const
int
*
LDB
);
// BLAS L2 extern def
extern
"C"
void
dgemv_
(
const
char
*
TRANS
,
const
int
*
M
,
const
int
*
N
,
const
double
*
ALPHA
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
X
,
const
int
*
INCX
,
const
double
*
BETA
,
double
*
Y
,
const
int
*
INCY
);
extern
"C"
void
dsymv_
(
const
char
*
UPLO
,
const
int
*
N
,
const
double
*
ALPHA
,
const
double
*
A
,
const
int
*
LDA
,
const
double
*
X
,
const
int
*
INCX
,
const
double
*
BETA
,
const
double
*
Y
,
const
int
*
INCY
);
extern
"C"
void
dtrmv_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
char
*
DIAG
,
const
int
*
N
,
const
double
*
A
,
const
int
*
LDA
,
double
*
X
,
const
int
*
INCX
);
extern
"C"
void
dtbsv_
(
const
char
*
UPLO
,
const
char
*
TRANS
,
const
char
*
DIAG
,
int
*
N
,
int
*
K
,
double
*
A
,
int
*
LDA
,
double
*
X
,
int
*
INCX
);
namespace
xlinalg
{
template
<
typename
T
>
// BLAS L1 extern def
extern
"C"
void
daxpy_
(
const
int
*
N
,
const
double
*
a
,
const
double
*
x
,
const
int
*
incx
,
double
*
y
,
const
int
*
incy
);
extern
"C"
void
zaxpy_
(
const
int
*
N
,
const
void
*
a
,
const
void
*
x
,
const
int
*
incx
,
void
*
y
,
const
int
*
incy
);
extern
"C"
double
dnrm2_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
);
extern
"C"
float
sdot_
(
const
int
*
N
,
const
float
*
x
,
const
int
*
incx
,
const
float
*
y
,
const
int
*
incy
);
extern
"C"
double
ddot_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
,
const
double
*
y
,
const
int
*
incy
);
extern
"C"
double
zdotc_
(
const
int
*
N
,
const
void
*
zx
,
const
int
*
incx
,
const
void
*
zy
,
const
int
*
incy
);
extern
"C"
double
zdotu_
(
const
int
*
N
,
const
void
*
zx
,
const
int
*
incx
,
const
void
*
zy
,
const
int
*
incy
);
extern
"C"
void
dscal_
(
const
int
*
N
,
const
double
*
alpha
,
double
*
x
,
const
int
*
incx
);
extern
"C"
void
zscal_
(
const
int
*
N
,
const
void
*
alpha
,
void
*
x
,
const
int
*
incx
);
extern
"C"
int
idamax_
(
const
int
*
N
,
const
double
*
x
,
const
int
*
incx
);
extern
"C"
int
izamax_
(
const
int
*
N
,
const
void
*
x
,
const
int
*
incx
);
extern
"C"
void
saxpy_
(
const
int
*
N
,
const
float
*
a
,
const
float
*
x
,
const
int
*
incx
,
float
*
y
,
const
int
*
incy
);
extern
"C"
void
sscal_
(
const
int
*
N
,
const
float
*
alpha
,
float
*
x
,
const
int
*
incx
);
extern
"C"
int
isamax_
(
const
int
*
N
,
const
float
*
x
,
const
int
*
incx
);
namespace
xlinalg
{
template
<
typename
T
>
class
xCPPBlasDef
;
template
<
>
class
xCPPBlasDef
<
float
>
template
<
>
class
xCPPBlasDef
<
float
>
{
public:
static
void
scal
(
int
N
,
float
alpha
,
float
*
x
,
int
incx
=
1
)
{
sscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
float
alpha
,
const
float
*
x
,
float
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
saxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
float
dot
(
int
N
,
const
float
*
x
,
const
float
*
y
,
int
incx
=
1
,
int
incy
=
1
){
return
sdot_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
);
}
static
int
iamax
(
int
N
,
const
float
*
x
,
int
incx
=
1
)
{
return
isamax_
(
&
N
,
x
,
&
incx
);
}
static
void
gemm
(
char
TRANSA
,
char
TRANSB
,
const
int
M
,
const
int
N
,
const
int
K
,
float
alpha
,
const
float
*
A
,
int
LDA
,
const
float
*
B
,
int
LDB
,
float
beta
,
float
*
C
,
int
LDC
)
{
sgemm_
(
&
TRANSA
,
&
TRANSB
,
&
M
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
,
&
beta
,
C
,
&
LDC
);}
public:
static
void
scal
(
int
N
,
float
alpha
,
float
*
x
,
int
incx
=
1
)
{
sscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
float
alpha
,
const
float
*
x
,
float
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
saxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
float
dot
(
int
N
,
const
float
*
x
,
const
float
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
return
sdot_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
);
}
static
int
iamax
(
int
N
,
const
float
*
x
,
int
incx
=
1
)
{
return
isamax_
(
&
N
,
x
,
&
incx
);
}
static
void
gemm
(
char
TRANSA
,
char
TRANSB
,
const
int
M
,
const
int
N
,
const
int
K
,
float
alpha
,
const
float
*
A
,
int
LDA
,
const
float
*
B
,
int
LDB
,
float
beta
,
float
*
C
,
int
LDC
)
{
sgemm_
(
&
TRANSA
,
&
TRANSB
,
&
M
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
,
&
beta
,
C
,
&
LDC
);
}
};
template
<
>
class
xCPPBlasDef
<
double
>
template
<
>
class
xCPPBlasDef
<
double
>
{
public:
static
void
scal
(
int
N
,
double
alpha
,
double
*
x
,
int
incx
=
1
)
{
dscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
double
alpha
,
const
double
*
x
,
double
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
daxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
double
dot
(
int
N
,
const
double
*
x
,
const
double
*
y
,
int
incx
=
1
,
int
incy
=
1
){
return
ddot_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
);
}
static
double
nrm2
(
int
N
,
const
double
*
x
,
int
incx
=
1
)
{
return
dnrm2_
(
&
N
,
x
,
&
incx
);}
static
int
iamax
(
int
N
,
double
*
x
,
int
incx
=
1
)
{
return
idamax_
(
&
N
,
x
,
&
incx
);
}
static
void
gemv
(
char
TRANS
,
int
M
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
X
,
double
beta
,
double
*
Y
,
int
incx
=
1
,
int
incy
=
1
){
dgemv_
(
&
TRANS
,
&
M
,
&
N
,
&
alpha
,
A
,
&
LDA
,
X
,
&
incx
,
&
beta
,
Y
,
&
incy
);
}
static
void
gemm
(
char
TRANSA
,
char
TRANSB
,
const
int
M
,
const
int
N
,
const
int
K
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
B
,
int
LDB
,
double
beta
,
double
*
C
,
int
LDC
)
{
dgemm_
(
&
TRANSA
,
&
TRANSB
,
&
M
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
,
&
beta
,
C
,
&
LDC
);}
static
void
syrk
(
char
UPLO
,
char
TRANS
,
int
N
,
int
K
,
double
alpha
,
const
double
*
A
,
int
LDA
,
double
beta
,
double
*
C
,
int
LDC
){
dsyrk_
(
&
UPLO
,
&
TRANS
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
&
beta
,
C
,
&
LDC
);
}
static
void
trmm
(
char
SIDE
,
char
UPLO
,
char
TRANSA
,
char
DIAG
,
int
M
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
double
*
B
,
int
LDB
){
dtrmm_
(
&
SIDE
,
&
UPLO
,
&
TRANSA
,
&
DIAG
,
&
M
,
&
N
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
);
}
static
void
symv
(
char
UPLO
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
X
,
double
beta
,
const
double
*
Y
,
int
incx
=
1
,
int
incy
=
1
){
dsymv_
(
&
UPLO
,
&
N
,
&
alpha
,
A
,
&
LDA
,
X
,
&
incx
,
&
beta
,
Y
,
&
incy
);
}
public:
static
void
scal
(
int
N
,
double
alpha
,
double
*
x
,
int
incx
=
1
)
{
dscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
double
alpha
,
const
double
*
x
,
double
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
daxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
double
dot
(
int
N
,
const
double
*
x
,
const
double
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
return
ddot_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
);
}
static
double
nrm2
(
int
N
,
const
double
*
x
,
int
incx
=
1
)
{
return
dnrm2_
(
&
N
,
x
,
&
incx
);
}
static
int
iamax
(
int
N
,
double
*
x
,
int
incx
=
1
)
{
return
idamax_
(
&
N
,
x
,
&
incx
);
}
static
void
gemv
(
char
TRANS
,
int
M
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
X
,
double
beta
,
double
*
Y
,
int
incx
=
1
,
int
incy
=
1
)
{
dgemv_
(
&
TRANS
,
&
M
,
&
N
,
&
alpha
,
A
,
&
LDA
,
X
,
&
incx
,
&
beta
,
Y
,
&
incy
);
}
static
void
gemm
(
char
TRANSA
,
char
TRANSB
,
const
int
M
,
const
int
N
,
const
int
K
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
B
,
int
LDB
,
double
beta
,
double
*
C
,
int
LDC
)
{
dgemm_
(
&
TRANSA
,
&
TRANSB
,
&
M
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
,
&
beta
,
C
,
&
LDC
);
}
static
void
syrk
(
char
UPLO
,
char
TRANS
,
int
N
,
int
K
,
double
alpha
,
const
double
*
A
,
int
LDA
,
double
beta
,
double
*
C
,
int
LDC
)
{
dsyrk_
(
&
UPLO
,
&
TRANS
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
&
beta
,
C
,
&
LDC
);
}
static
void
syr2k
(
char
UPLO
,
char
TRANS
,
int
N
,
int
K
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
B
,
int
LDB
,
double
beta
,
double
*
C
,
int
LDC
)
{
dsyr2k_
(
&
UPLO
,
&
TRANS
,
&
N
,
&
K
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
,
&
beta
,
C
,
&
LDC
);
}
static
void
trmm
(
char
SIDE
,
char
UPLO
,
char
TRANSA
,
char
DIAG
,
int
M
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
double
*
B
,
int
LDB
)
{
dtrmm_
(
&
SIDE
,
&
UPLO
,
&
TRANSA
,
&
DIAG
,
&
M
,
&
N
,
&
alpha
,
A
,
&
LDA
,
B
,
&
LDB
);
}
static
void
symv
(
char
UPLO
,
int
N
,
double
alpha
,
const
double
*
A
,
int
LDA
,
const
double
*
X
,
double
beta
,
const
double
*
Y
,
int
incx
=
1
,
int
incy
=
1
)
{
dsymv_
(
&
UPLO
,
&
N
,
&
alpha
,
A
,
&
LDA
,
X
,
&
incx
,
&
beta
,
Y
,
&
incy
);
}
};
template
<
>
class
xCPPBlasDef
<
std
::
complex
<
double
>
>
template
<
>
class
xCPPBlasDef
<
std
::
complex
<
double
>>
{
public:
static
void
scal
(
int
N
,
std
::
complex
<
double
>
alpha
,
std
::
complex
<
double
>
*
x
,
int
incx
=
1
)
{
zscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
std
::
complex
<
double
>
alpha
,
const
std
::
complex
<
double
>
*
x
,
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
zaxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
const
std
::
complex
<
double
>
dot
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
){
return
dotc
(
N
,
x
,
y
,
incx
,
incy
);
}
static
const
std
::
complex
<
double
>
dotc
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
){
return
static_cast
<
std
::
complex
<
double
>
>
(
zdotc_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
));
}
static
const
std
::
complex
<
double
>
dotu
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
){
return
static_cast
<
std
::
complex
<
double
>
>
(
zdotu_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
));
}
static
int
iamax
(
int
N
,
std
::
complex
<
double
>
*
x
,
int
incx
=
1
)
{
return
izamax_
(
&
N
,
x
,
&
incx
);
}
public:
static
void
scal
(
int
N
,
std
::
complex
<
double
>
alpha
,
std
::
complex
<
double
>
*
x
,
int
incx
=
1
)
{
zscal_
(
&
N
,
&
alpha
,
x
,
&
incx
);
}
static
void
axpy
(
int
N
,
std
::
complex
<
double
>
alpha
,
const
std
::
complex
<
double
>
*
x
,
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
zaxpy_
(
&
N
,
&
alpha
,
x
,
&
incx
,
y
,
&
incy
);
}
static
const
std
::
complex
<
double
>
dot
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
return
dotc
(
N
,
x
,
y
,
incx
,
incy
);
}
static
const
std
::
complex
<
double
>
dotc
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
return
static_cast
<
std
::
complex
<
double
>>
(
zdotc_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
));
}
static
const
std
::
complex
<
double
>
dotu
(
int
N
,
const
std
::
complex
<
double
>
*
x
,
const
std
::
complex
<
double
>
*
y
,
int
incx
=
1
,
int
incy
=
1
)
{
return
static_cast
<
std
::
complex
<
double
>>
(
zdotu_
(
&
N
,
x
,
&
incx
,
y
,
&
incy
));
}
static
int
iamax
(
int
N
,
std
::
complex
<
double
>
*
x
,
int
incx
=
1
)
{
return
izamax_
(
&
N
,
x
,
&
incx
);
}
};
}
//xlinalg
}
// namespace xlinalg
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment