ruby-eigen 0.0.11.pre1 → 0.0.11.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/eigen/eigen3/Eigen/src/Core/util/Memory.h +3 -2
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseMatrix.h +4 -0
- data/ext/eigen/eigen_wrap.cxx +11338 -3570
- data/ext/eigen/rubyeigen_algo.h +13 -0
- data/ext/eigen/rubyeigen_algo_base.h +7 -0
- data/ext/eigen/rubyeigen_base.h +34 -0
- data/ext/eigen/rubyeigen_except.h +15 -0
- data/ext/eigen/rubyeigen_gc.h +5 -0
- data/ext/eigen/rubyeigen_gc.hpp +26 -0
- data/lib/eigen.rb +17 -0
- metadata +9 -3
@@ -0,0 +1,13 @@
|
|
1
|
+
namespace RubyEigen {
|
2
|
+
typedef FullPivLU<MatrixXd> FullPivLUDouble;
|
3
|
+
typedef FullPivLU<MatrixXcd> FullPivLUComplex;
|
4
|
+
typedef PartialPivLU<MatrixXd> PartialPivLUDouble;
|
5
|
+
typedef FullPivHouseholderQR<MatrixXd> FullPivHouseholderQRDouble;
|
6
|
+
typedef FullPivHouseholderQR<MatrixXcd> FullPivHouseholderQRComplex;
|
7
|
+
typedef JacobiSVD<MatrixXd> JacobiSVDDouble;
|
8
|
+
typedef JacobiSVD<MatrixXcd> JacobiSVDComplex;
|
9
|
+
typedef LDLT<MatrixXd> LDLTDouble;
|
10
|
+
typedef LDLT<MatrixXcd> LDLTComplex;
|
11
|
+
typedef LLT<MatrixXd> LLTDouble;
|
12
|
+
typedef LLT<MatrixXcd> LLTComplex;
|
13
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
namespace RubyEigen {
|
2
|
+
typedef SparseQR<RubyEigen::SpMatrixDouble, COLAMDOrdering<int> > SparseQRDouble;
|
3
|
+
typedef SparseQR<RubyEigen::SpMatrixFloat, COLAMDOrdering<int> > SparseQRFloat;
|
4
|
+
|
5
|
+
typedef SparseLU<RubyEigen::SpMatrixDouble, COLAMDOrdering<int> > SparseLUDouble;
|
6
|
+
typedef SparseLU<RubyEigen::SpMatrixFloat, COLAMDOrdering<int> > SparseLUFloat;
|
7
|
+
};
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/* To avoid contaminating Eigen namespace, we use RubyEigen instead of Eigen. */
|
2
|
+
namespace RubyEigen {
|
3
|
+
|
4
|
+
typedef RubyEigen::Matrix<double, RubyEigen::Dynamic, RubyEigen::Dynamic> MatrixDouble;
|
5
|
+
typedef RubyEigen::Matrix<float, RubyEigen::Dynamic, RubyEigen::Dynamic> MatrixFloat;
|
6
|
+
typedef RubyEigen::Matrix<std::complex<double>, RubyEigen::Dynamic, RubyEigen::Dynamic> MatrixComplex;
|
7
|
+
typedef RubyEigen::Matrix<std::complex<float>, RubyEigen::Dynamic, RubyEigen::Dynamic> MatrixComplexFloat;
|
8
|
+
|
9
|
+
typedef RubyEigen::Array<double, RubyEigen::Dynamic, RubyEigen::Dynamic> ArrayXXd;
|
10
|
+
|
11
|
+
/*
|
12
|
+
By redefining VectorXd and VectorXcd in SWIG scope, SWIG can interpret what the templates are.
|
13
|
+
The following templates appear in some decomposition classes.
|
14
|
+
*/
|
15
|
+
typedef RubyEigen::Matrix<RubyEigen::MatrixDouble::Scalar, RubyEigen::Dynamic, 1> VectorXd;
|
16
|
+
typedef RubyEigen::Matrix<RubyEigen::MatrixComplex::Scalar, RubyEigen::Dynamic, 1> VectorXcd;
|
17
|
+
typedef RubyEigen::Matrix<RubyEigen::MatrixXi::Scalar, RubyEigen::Dynamic, 1> VectorXi;
|
18
|
+
|
19
|
+
typedef RubyEigen::Block<RubyEigen::MatrixDouble> MatrixDoubleRef;
|
20
|
+
typedef RubyEigen::Block<RubyEigen::MatrixXcd> MatrixComplexRef;
|
21
|
+
|
22
|
+
typedef Matrix<bool, Dynamic, Dynamic> MatrixBool;
|
23
|
+
typedef Matrix<bool, Dynamic, 1> VectorBool;
|
24
|
+
typedef Array<bool, Dynamic, Dynamic> CMatrixBool;
|
25
|
+
typedef Array<bool, Dynamic, 1> CVectorBool;
|
26
|
+
|
27
|
+
typedef SparseMatrix<double> SpMatrixDouble;
|
28
|
+
typedef SparseMatrix<float> SpMatrixFloat;
|
29
|
+
typedef SparseMatrix<double>::InnerIterator SpMatrixDoubleIter;
|
30
|
+
typedef SparseMatrix<float>::InnerIterator SpMatrixFloatIter;
|
31
|
+
|
32
|
+
typedef PermutationMatrix<RubyEigen::Dynamic, RubyEigen::Dynamic, int> PermutationMatrix;
|
33
|
+
typedef Matrix<int, Dynamic, 1> PermutationIndices;
|
34
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
namespace RubyEigen {
|
2
|
+
class EigenRuntimeError : public std::runtime_error {
|
3
|
+
public:
|
4
|
+
EigenRuntimeError(const std::string& cause)
|
5
|
+
: std::runtime_error(cause) {}
|
6
|
+
};
|
7
|
+
};
|
8
|
+
|
9
|
+
VALUE rb_eEigenRuntimeError;
|
10
|
+
|
11
|
+
/* DONOT use rb_raise here. eigen_assert is called inside the functions
|
12
|
+
of eigen library in C++. Calling rb_raise will cause deconstructor issues. */
|
13
|
+
#undef eigen_assert
|
14
|
+
#define eigen_assert(x) do {\
|
15
|
+
if(!Eigen::internal::copy_bool(x)) throw (RubyEigen::EigenRuntimeError(EIGEN_MAKESTRING(x))); } while(false)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#ifndef RUBYEIGEN_GC_HPP
|
2
|
+
#define RUBYEIGEN_GC_HPP
|
3
|
+
|
4
|
+
#include "rubyeigen_gc.h"
|
5
|
+
#include <climits>
|
6
|
+
|
7
|
+
static size_t rubyeigen_gc_count = 0;
|
8
|
+
|
9
|
+
size_t rubyeigen_gc_get_count() {
|
10
|
+
return rubyeigen_gc_count;
|
11
|
+
}
|
12
|
+
|
13
|
+
void rubyeigen_gc_reset_count() {
|
14
|
+
rubyeigen_gc_count = 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
void rubyeigen_gc_add_count(size_t sz) {
|
18
|
+
const size_t max_size = (size_t)-1;
|
19
|
+
if(max_size - rubyeigen_gc_count > sz ) {
|
20
|
+
rubyeigen_gc_count += sz;
|
21
|
+
} else if( sz > rubyeigen_gc_count ) {
|
22
|
+
rubyeigen_gc_count = sz;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
#endif
|
data/lib/eigen.rb
CHANGED
@@ -144,6 +144,12 @@ class Eigen::MatrixDouble
|
|
144
144
|
private "__get_item__", "__get_block__"
|
145
145
|
end
|
146
146
|
|
147
|
+
class Eigen::MatrixFloat
|
148
|
+
extend Eigen::MatrixConstructor
|
149
|
+
include Eigen::MatrixCommon
|
150
|
+
private "__get_item__", "__get_block__"
|
151
|
+
end
|
152
|
+
|
147
153
|
class Eigen::MatrixComplex
|
148
154
|
extend Eigen::MatrixConstructor
|
149
155
|
include Eigen::MatrixCommon
|
@@ -203,3 +209,14 @@ class Eigen::SpMatrixDouble
|
|
203
209
|
include Eigen::SpMatrixCommon
|
204
210
|
private "__reserve__", "__insert__"
|
205
211
|
end
|
212
|
+
|
213
|
+
|
214
|
+
Thread.start do
|
215
|
+
loop do
|
216
|
+
if Eigen.gc_count > 67108864
|
217
|
+
GC.start
|
218
|
+
Eigen.reset_gc_count()
|
219
|
+
end
|
220
|
+
sleep(2)
|
221
|
+
end
|
222
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-eigen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.11.
|
4
|
+
version: 0.0.11.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Tamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -328,10 +328,16 @@ files:
|
|
328
328
|
- ext/eigen/eigen3/signature_of_eigen3_matrix_library
|
329
329
|
- ext/eigen/eigen_wrap.cxx
|
330
330
|
- ext/eigen/extconf.rb
|
331
|
+
- ext/eigen/rubyeigen_algo.h
|
332
|
+
- ext/eigen/rubyeigen_algo_base.h
|
333
|
+
- ext/eigen/rubyeigen_base.h
|
334
|
+
- ext/eigen/rubyeigen_except.h
|
335
|
+
- ext/eigen/rubyeigen_gc.h
|
336
|
+
- ext/eigen/rubyeigen_gc.hpp
|
331
337
|
- lib/eigen.rb
|
332
338
|
homepage: https://github.com/ruby-eigen/ruby-eigen
|
333
339
|
licenses:
|
334
|
-
- LGPL
|
340
|
+
- LGPL-3.0
|
335
341
|
metadata: {}
|
336
342
|
post_install_message:
|
337
343
|
rdoc_options:
|