Skip to content

Commit 93121f4

Browse files
authored
Merge pull request #16 from joachimwolff/develop
Fixing 64-bit issue
2 parents 30828e0 + d3141c6 commit 93121f4

File tree

2 files changed

+26
-26
lines changed

2 files changed

+26
-26
lines changed

src/krbalancing.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
// rescaled = false;
1414
// }
1515

16-
kr_balancing::kr_balancing(const size_t &input_rows, const size_t &input_cols,
17-
const size_t &input_nnz,
18-
const Eigen::Ref<VectorXsize_t> input_indptr,
19-
const Eigen::Ref<VectorXsize_t> input_indices,
16+
kr_balancing::kr_balancing(const int64_t &input_rows, const int64_t &input_cols,
17+
const int64_t &input_nnz,
18+
const Eigen::Ref<VectorXint64> input_indptr,
19+
const Eigen::Ref<VectorXint64> input_indices,
2020
const Eigen::Ref<Eigen::VectorXd> input_values)
2121
{
2222

@@ -26,17 +26,17 @@ kr_balancing::kr_balancing(const size_t &input_rows, const size_t &input_cols,
2626
std::vector<T> triplets;
2727
triplets.reserve(input_nnz);
2828

29-
size_t i = 0;
30-
size_t j_start = 0;
31-
size_t j_end = 0;
29+
int64_t i = 0;
30+
int64_t j_start = 0;
31+
int64_t j_end = 0;
3232
while (i < input_indptr.size() - 1)
3333
{
3434
j_start = input_indptr(i);
3535
j_end = input_indptr(i + 1);
3636

3737
while (j_start < j_end)
3838
{
39-
triplets.push_back(T(i, size_t(input_indices(j_start)),
39+
triplets.push_back(T(i, int64_t(input_indices(j_start)),
4040
float(input_values(j_start))));
4141
j_start++;
4242
}
@@ -75,15 +75,15 @@ void kr_balancing::computeKR()
7575

7676
void kr_balancing::outer_loop()
7777
{
78-
size_t outer_loop_count = 0;
78+
int64_t outer_loop_count = 0;
7979
double stop_tol = tol * 0.5;
8080
double eta = etamax;
8181
double rt = tol * tol;
8282
double rout = rho_km1.coeff(0, 0);
8383
double rold = rout;
8484
if (fl == 1)
8585
std::cout << "intermediate convergence statistics is off" << std::endl;
86-
size_t nochange = 0;
86+
int64_t nochange = 0;
8787
while (rout > rt)
8888
{ //outer itteration
8989
outer_loop_count++;
@@ -168,7 +168,7 @@ void kr_balancing::inner_loop()
168168
if (delta == 0)
169169
break;
170170
Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic> ind_helper = (ap.array() < 0);
171-
VectorXsize_t ind = VectorXsize_t::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1);
171+
VectorXint64 ind = VectorXint64::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1);
172172
ind.conservativeResize(std::stable_partition(
173173
ind.data(), ind.data() + ind.size(), [&ind_helper](int i) { return ind_helper(i); }) -
174174
ind.data());
@@ -185,7 +185,7 @@ void kr_balancing::inner_loop()
185185
if (ynew.maxCoeff() >= Delta)
186186
{
187187
Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic> ind_helper = (ynew.array() > Delta);
188-
VectorXsize_t ind = VectorXsize_t::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1);
188+
VectorXint64 ind = VectorXint64::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1);
189189
ind.conservativeResize(std::stable_partition(
190190
ind.data(), ind.data() + ind.size(), [&ind_helper](size_t i) { return ind_helper(i); }) -
191191
ind.data());
@@ -284,9 +284,9 @@ const SparseMatrixCol *kr_balancing::get_normalisation_vector(bool &rescale)
284284
PYBIND11_MODULE(krbalancing, m)
285285
{
286286
py::class_<kr_balancing>(m, "kr_balancing")
287-
.def(py::init<const size_t &, const size_t &, const size_t &,
288-
const Eigen::Ref<VectorXsize_t>,
289-
const Eigen::Ref<VectorXsize_t>,
287+
.def(py::init<const int64_t &, const int64_t &, const int64_t &,
288+
const Eigen::Ref<VectorXint64>,
289+
const Eigen::Ref<VectorXint64>,
290290
const Eigen::Ref<Eigen::VectorXd>>())
291291
.def("computeKR", &kr_balancing::computeKR)
292292
.def("get_normalisation_vector", &kr_balancing::get_normalisation_vector,

src/krbalancing.hpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@
2323
#include <limits>
2424
namespace py = pybind11;
2525

26-
typedef Eigen::Matrix<size_t, Eigen::Dynamic, 1> VectorXsize_t;
26+
typedef Eigen::Matrix<int64_t, Eigen::Dynamic, 1> VectorXint64;
2727

28-
using SparseMatrixCol = Eigen::SparseMatrix<double, Eigen::ColMajor>;
28+
using SparseMatrixCol = Eigen::SparseMatrix<double, Eigen::ColMajor, int64_t>;
2929
size_t num_threads = 10; //TODO add it as an argument to be set by user
3030

3131
class kr_balancing
3232
{
3333
public:
34-
kr_balancing(const size_t &input_rows, const size_t &input_cols,
35-
const size_t &input_nnz,
36-
const Eigen::Ref<VectorXsize_t> input_outer,
37-
const Eigen::Ref<VectorXsize_t> input_inner,
34+
kr_balancing(const int64_t &input_rows, const int64_t &input_cols,
35+
const int64_t &input_nnz,
36+
const Eigen::Ref<VectorXint64> input_outer,
37+
const Eigen::Ref<VectorXint64> input_inner,
3838
const Eigen::Ref<Eigen::VectorXd> input_values);
3939
~kr_balancing() {}
4040
void computeKR();
@@ -47,8 +47,8 @@ class kr_balancing
4747

4848
private:
4949
std::vector<double> res;
50-
unsigned int fl = 0; //0 = on , 1 = off
51-
unsigned int Delta = 3;
50+
int fl = 0; //0 = on , 1 = off
51+
int Delta = 3;
5252
double delta = 0.1;
5353
double tol = 1e-6;
5454
double g = 0.9;
@@ -57,13 +57,13 @@ class kr_balancing
5757
SparseMatrixCol A;
5858
SparseMatrixCol rho_km1;
5959
SparseMatrixCol rho_km2;
60-
unsigned int k;
60+
int k;
6161
Eigen::VectorXd y;
6262
SparseMatrixCol p;
6363
SparseMatrixCol Z;
6464
double innertol;
65-
unsigned int i = 0; //Outer itteration count
66-
unsigned int MVP = 0;
65+
int i = 0; //Outer itteration count
66+
int MVP = 0;
6767
SparseMatrixCol v;
6868
SparseMatrixCol x;
6969
Eigen::SparseVector<double> rk;

0 commit comments

Comments
 (0)