Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tinygb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
SPAENLEHAUER Pierre-Jean
tinygb
Commits
7e6d63a0
Commit
7e6d63a0
authored
Jul 21, 2020
by
SPAENLEHAUER Pierre-Jean
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
factory methods should return unique_ptr
parent
5af46f89
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
10 deletions
+10
-10
SConstruct
SConstruct
+1
-1
src/linalg/matrix_factory.h
src/linalg/matrix_factory.h
+9
-9
No files found.
SConstruct
View file @
7e6d63a0
...
@@ -6,7 +6,7 @@ debug = ARGUMENTS.get('debug', 0)
...
@@ -6,7 +6,7 @@ debug = ARGUMENTS.get('debug', 0)
env
=
Environment
(
#variables = vars,
env
=
Environment
(
#variables = vars,
CXX
=
'g++'
,
CXX
=
'g++'
,
CXXFLAGS
=
Split
(
'-I./include -I./src
\
CXXFLAGS
=
Split
(
'-I./include -I./src
\
-march=native -mtune=native -std=gnu++1
1
-fabi-version=6
\
-march=native -mtune=native -std=gnu++1
4
-fabi-version=6
\
-fpermissive -Wall -Wextra -fopenmp'
),
-fpermissive -Wall -Wextra -fopenmp'
),
LIBPATH
=
'#lib/'
,
LIBPATH
=
'#lib/'
,
LIBS
=
Split
(
'-lopenblas -lgivaro -lgmpxx -lgmp'
),
LIBS
=
Split
(
'-lopenblas -lgivaro -lgmpxx -lgmp'
),
...
...
src/linalg/matrix_factory.h
View file @
7e6d63a0
...
@@ -18,23 +18,23 @@ class MatrixFactory {
...
@@ -18,23 +18,23 @@ class MatrixFactory {
public:
public:
// TODO(pj): Check that no zero element is added
// TODO(pj): Check that no zero element is added
// TODO(pj): Is the vector of monomials required?
// TODO(pj): Is the vector of monomials required?
static
std
::
shared
_ptr
<
SpMat
>
BuildSparseUpperTriangular
(
static
std
::
unique
_ptr
<
SpMat
>
BuildSparseUpperTriangular
(
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
,
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
,
const
std
::
vector
<
Monomial
>&
);
const
std
::
vector
<
Monomial
>&
);
static
std
::
shared
_ptr
<
RowMajMat
>
BuildRowMajor
(
static
std
::
unique
_ptr
<
RowMajMat
>
BuildRowMajor
(
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
,
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
,
const
std
::
vector
<
Monomial
>&
);
const
std
::
vector
<
Monomial
>&
);
static
std
::
shared
_ptr
<
RowMajMat
>
BuildRowMajor
(
static
std
::
unique
_ptr
<
RowMajMat
>
BuildRowMajor
(
const
std
::
vector
<
Polynomial
>&
,
const
std
::
vector
<
Polynomial
>&
,
const
std
::
vector
<
Monomial
>&
);
const
std
::
vector
<
Monomial
>&
);
};
};
std
::
shared
_ptr
<
SpMat
>
MatrixFactory
::
BuildSparseUpperTriangular
(
std
::
unique
_ptr
<
SpMat
>
MatrixFactory
::
BuildSparseUpperTriangular
(
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
list_reductors
,
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>&
list_reductors
,
const
std
::
vector
<
Monomial
>&
list_monomials
)
{
const
std
::
vector
<
Monomial
>&
list_monomials
)
{
auto
R
=
std
::
make_
shared
<
SpMat
>
();
auto
R
=
std
::
make_
unique
<
SpMat
>
();
R
->
nb_nonzero_elts_by_row_
.
clear
();
R
->
nb_nonzero_elts_by_row_
.
clear
();
R
->
row_size_
=
list_reductors
.
size
();
R
->
row_size_
=
list_reductors
.
size
();
R
->
column_size_
=
list_monomials
.
size
();
R
->
column_size_
=
list_monomials
.
size
();
...
@@ -62,10 +62,10 @@ std::shared_ptr<SpMat> MatrixFactory::BuildSparseUpperTriangular(
...
@@ -62,10 +62,10 @@ std::shared_ptr<SpMat> MatrixFactory::BuildSparseUpperTriangular(
return
R
;
return
R
;
}
}
std
::
shared
_ptr
<
RowMajMat
>
MatrixFactory
::
BuildRowMajor
(
std
::
unique
_ptr
<
RowMajMat
>
MatrixFactory
::
BuildRowMajor
(
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>
&
list_reductors
,
const
std
::
vector
<
std
::
pair
<
Monomial
,
PolynomialInMatrix
>
>
&
list_reductors
,
const
std
::
vector
<
Monomial
>
&
list_monomials
)
{
const
std
::
vector
<
Monomial
>
&
list_monomials
)
{
auto
R
=
std
::
make_
shared
<
RowMajMat
>
(
list_reductors
.
size
(),
list_monomials
.
size
());
auto
R
=
std
::
make_
unique
<
RowMajMat
>
(
list_reductors
.
size
(),
list_monomials
.
size
());
Polynomial
tmp
;
Polynomial
tmp
;
std
::
map
<
Monomial
,
std
::
size_t
>
map_mon
;
std
::
map
<
Monomial
,
std
::
size_t
>
map_mon
;
for
(
std
::
size_t
i
=
0
;
i
<
list_monomials
.
size
();
++
i
)
for
(
std
::
size_t
i
=
0
;
i
<
list_monomials
.
size
();
++
i
)
...
@@ -84,10 +84,10 @@ std::shared_ptr<RowMajMat> MatrixFactory::BuildRowMajor(
...
@@ -84,10 +84,10 @@ std::shared_ptr<RowMajMat> MatrixFactory::BuildRowMajor(
// TODO: if the input polynomials must be monic, then this should be specified
// TODO: if the input polynomials must be monic, then this should be specified
// in an assert
// in an assert
std
::
shared
_ptr
<
RowMajMat
>
MatrixFactory
::
BuildRowMajor
(
std
::
unique
_ptr
<
RowMajMat
>
MatrixFactory
::
BuildRowMajor
(
const
std
::
vector
<
Polynomial
>&
list_pols
,
const
std
::
vector
<
Polynomial
>&
list_pols
,
const
std
::
vector
<
Monomial
>&
list_monomials
)
{
const
std
::
vector
<
Monomial
>&
list_monomials
)
{
auto
R
=
std
::
make_
shared
<
RowMajMat
>
(
list_pols
.
size
(),
list_monomials
.
size
());
auto
R
=
std
::
make_
unique
<
RowMajMat
>
(
list_pols
.
size
(),
list_monomials
.
size
());
std
::
map
<
Monomial
,
std
::
size_t
>
map_mon
;
std
::
map
<
Monomial
,
std
::
size_t
>
map_mon
;
for
(
std
::
size_t
i
=
0
;
i
<
list_monomials
.
size
();
++
i
)
for
(
std
::
size_t
i
=
0
;
i
<
list_monomials
.
size
();
++
i
)
map_mon
.
insert
(
std
::
pair
<
Monomial
,
std
::
size_t
>
(
list_monomials
[
i
],
i
));
map_mon
.
insert
(
std
::
pair
<
Monomial
,
std
::
size_t
>
(
list_monomials
[
i
],
i
));
...
...
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