Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Samer Afach
Polymath
Commits
7e6076af
Commit
7e6076af
authored
Nov 10, 2016
by
Samer Afach
Browse files
Optimizations and fixes for Windows compatibility.
parent
07043ecb
Changes
2
Hide whitespace changes
Inline
Side-by-side
include/internal/LapackAdapters.h
View file @
7e6076af
...
...
@@ -12,22 +12,22 @@ typedef int lapack_int;
typedef
std
::
complex
<
float
>
lapack_complex_float
;
typedef
std
::
complex
<
double
>
lapack_complex_double
;
extern
"C"
void
sgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
void
dgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
void
cgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
void
zgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
void
sgetri_
(
lapack_int
*
n
,
float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
float
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
void
dgetri_
(
lapack_int
*
n
,
double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
double
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
void
cgetri_
(
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
void
zgetri_
(
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
void
sspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
float
*
ap
,
lapack_int
*
ipiv
,
float
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
void
dspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
double
*
ap
,
lapack_int
*
ipiv
,
double
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
void
cspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
lapack_complex_float
*
ap
,
lapack_int
*
ipiv
,
lapack_complex_float
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
void
zspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
lapack_complex_double
*
ap
,
lapack_int
*
ipiv
,
lapack_complex_double
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
void
cheev_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
float
*
w
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
float
*
rwork
,
lapack_int
*
info
);
extern
"C"
void
zheev_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
double
*
w
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
double
*
rwork
,
lapack_int
*
info
);
extern
"C"
void
cheevd_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
float
*
w
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
float
*
rwork
,
lapack_int
*
lrwork
,
lapack_int
*
iwork
,
lapack_int
*
liwork
,
lapack_int
*
info
);
extern
"C"
void
zheevd_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
double
*
w
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
double
*
rwork
,
lapack_int
*
lrwork
,
lapack_int
*
iwork
,
lapack_int
*
liwork
,
lapack_int
*
info
);
extern
"C"
int
sgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
int
dgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
int
cgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
int
zgetrf_
(
lapack_int
*
m
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_int
*
info
);
extern
"C"
int
sgetri_
(
lapack_int
*
n
,
float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
float
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
int
dgetri_
(
lapack_int
*
n
,
double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
double
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
int
cgetri_
(
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
int
zgetri_
(
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
lapack_int
*
ipiv
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
lapack_int
*
info
);
extern
"C"
int
sspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
float
*
ap
,
lapack_int
*
ipiv
,
float
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
int
dspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
double
*
ap
,
lapack_int
*
ipiv
,
double
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
int
cspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
lapack_complex_float
*
ap
,
lapack_int
*
ipiv
,
lapack_complex_float
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
int
zspsv_
(
char
*
uplo
,
lapack_int
*
n
,
lapack_int
*
nrhs
,
lapack_complex_double
*
ap
,
lapack_int
*
ipiv
,
lapack_complex_double
*
b
,
lapack_int
*
ldb
,
lapack_int
*
info
);
extern
"C"
int
cheev_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
float
*
w
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
float
*
rwork
,
lapack_int
*
info
);
extern
"C"
int
zheev_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
double
*
w
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
double
*
rwork
,
lapack_int
*
info
);
extern
"C"
int
cheevd_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_float
*
a
,
lapack_int
*
lda
,
float
*
w
,
lapack_complex_float
*
work
,
lapack_int
*
lwork
,
float
*
rwork
,
lapack_int
*
lrwork
,
lapack_int
*
iwork
,
lapack_int
*
liwork
,
lapack_int
*
info
);
extern
"C"
int
zheevd_
(
char
*
jobz
,
char
*
uplo
,
lapack_int
*
n
,
lapack_complex_double
*
a
,
lapack_int
*
lda
,
double
*
w
,
lapack_complex_double
*
work
,
lapack_int
*
lwork
,
double
*
rwork
,
lapack_int
*
lrwork
,
lapack_int
*
iwork
,
lapack_int
*
liwork
,
lapack_int
*
info
);
extern
"C"
void
sgemm_
(
char
*
transa
,
char
*
transb
,
lapack_int
*
m
,
lapack_int
*
n
,
lapack_int
*
k
,
float
*
alpha
,
float
*
A
,
lapack_int
*
lda
,
float
*
B
,
lapack_int
*
ldb
,
float
*
beta
,
float
*
,
lapack_int
*
ldc
);
extern
"C"
void
dgemm_
(
char
*
transa
,
char
*
transb
,
lapack_int
*
m
,
lapack_int
*
n
,
lapack_int
*
k
,
double
*
alpha
,
double
*
A
,
lapack_int
*
lda
,
double
*
B
,
lapack_int
*
ldb
,
double
*
beta
,
double
*
,
lapack_int
*
ldc
);
extern
"C"
void
cgemm_
(
char
*
,
char
*
,
lapack_int
*
,
lapack_int
*
,
lapack_int
*
,
lapack_complex_float
*
,
lapack_complex_float
*
,
lapack_int
*
,
lapack_complex_float
*
,
lapack_int
*
,
lapack_complex_float
*
,
lapack_complex_float
*
,
lapack_int
*
);
...
...
include/internal/Matrix.h
View file @
7e6076af
...
...
@@ -192,7 +192,7 @@ public:
typename
std
::
enable_if
<
std
::
is_same
<
T
,
std
::
complex
<
U
>>::
value
,
void
>::
type
copyFrom
(
const
Matrix
<
U
,
M
>
&
rhs
);
void
initialize
(
const
std
::
initializer_list
<
T
>&
list
,
Matrix
<
T
,
M
>::
size_type
start_row
=
0
,
Matrix
<
T
,
M
>::
size_type
start_column
=
0
);
void
initialize
(
const
std
::
initializer_list
<
T
>&
list
,
typename
Matrix
<
T
,
M
>::
size_type
start_row
=
0
,
typename
Matrix
<
T
,
M
>::
size_type
start_column
=
0
);
bool
operator
==
(
const
Matrix
<
T
,
M
>&
rhs
);
bool
operator
!=
(
const
Matrix
<
T
,
M
>&
rhs
);
template
<
typename
_T
,
int
_M
>
...
...
@@ -931,7 +931,7 @@ Matrix<T, M>::operator=(const Matrix<U, M> & rhs)
}
template
<
typename
T
,
int
M
>
void
Matrix
<
T
,
M
>::
initialize
(
const
std
::
initializer_list
<
T
>
&
list
,
Matrix
<
T
,
M
>::
size_type
start_row
,
Matrix
<
T
,
M
>::
size_type
start_column
)
void
Matrix
<
T
,
M
>::
initialize
(
const
std
::
initializer_list
<
T
>
&
list
,
typename
Matrix
<
T
,
M
>::
size_type
start_row
,
typename
Matrix
<
T
,
M
>::
size_type
start_column
)
{
size_type
start_from
=
RowColumnToElement
(
start_row
,
start_column
,
this
->
rows
(),
this
->
columns
());
if
(
list
.
size
()
+
start_from
>
this
->
_matEls
.
size
())
//if tried to initalize with an array bigger than
...
...
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