nmatrix 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/CONTRIBUTING.md +66 -0
- data/Gemfile +1 -1
- data/History.txt +68 -10
- data/LICENSE.txt +2 -2
- data/Manifest.txt +2 -0
- data/README.rdoc +90 -69
- data/Rakefile +18 -9
- data/ext/nmatrix/data/complex.h +7 -7
- data/ext/nmatrix/data/data.cpp +2 -7
- data/ext/nmatrix/data/data.h +7 -4
- data/ext/nmatrix/data/rational.h +2 -2
- data/ext/nmatrix/data/ruby_object.h +3 -10
- data/ext/nmatrix/extconf.rb +79 -54
- data/ext/nmatrix/new_extconf.rb +11 -12
- data/ext/nmatrix/nmatrix.cpp +94 -125
- data/ext/nmatrix/nmatrix.h +38 -17
- data/ext/nmatrix/ruby_constants.cpp +2 -15
- data/ext/nmatrix/ruby_constants.h +2 -14
- data/ext/nmatrix/storage/common.cpp +2 -2
- data/ext/nmatrix/storage/common.h +2 -2
- data/ext/nmatrix/storage/dense.cpp +206 -31
- data/ext/nmatrix/storage/dense.h +5 -2
- data/ext/nmatrix/storage/list.cpp +52 -4
- data/ext/nmatrix/storage/list.h +3 -2
- data/ext/nmatrix/storage/storage.cpp +6 -6
- data/ext/nmatrix/storage/storage.h +2 -2
- data/ext/nmatrix/storage/yale.cpp +202 -49
- data/ext/nmatrix/storage/yale.h +5 -4
- data/ext/nmatrix/ttable_helper.rb +108 -108
- data/ext/nmatrix/types.h +2 -15
- data/ext/nmatrix/util/io.cpp +2 -2
- data/ext/nmatrix/util/io.h +2 -2
- data/ext/nmatrix/util/lapack.h +2 -2
- data/ext/nmatrix/util/math.cpp +14 -14
- data/ext/nmatrix/util/math.h +2 -2
- data/ext/nmatrix/util/sl_list.cpp +2 -2
- data/ext/nmatrix/util/sl_list.h +2 -2
- data/ext/nmatrix/util/util.h +2 -2
- data/lib/nmatrix.rb +13 -35
- data/lib/nmatrix/blas.rb +182 -56
- data/lib/nmatrix/io/market.rb +38 -14
- data/lib/nmatrix/io/mat5_reader.rb +393 -278
- data/lib/nmatrix/io/mat_reader.rb +121 -107
- data/lib/nmatrix/lapack.rb +59 -14
- data/lib/nmatrix/monkeys.rb +32 -30
- data/lib/nmatrix/nmatrix.rb +204 -100
- data/lib/nmatrix/nvector.rb +166 -57
- data/lib/nmatrix/shortcuts.rb +364 -231
- data/lib/nmatrix/version.rb +8 -4
- data/nmatrix.gemspec +5 -3
- data/scripts/mac-brew-gcc.sh +1 -1
- data/spec/blas_spec.rb +80 -2
- data/spec/math_spec.rb +78 -32
- data/spec/nmatrix_list_spec.rb +55 -55
- data/spec/nmatrix_spec.rb +60 -117
- data/spec/nmatrix_yale_resize_test_associations.yaml +2802 -0
- data/spec/nmatrix_yale_spec.rb +214 -198
- data/spec/nvector_spec.rb +58 -2
- data/spec/shortcuts_spec.rb +156 -32
- data/spec/slice_spec.rb +229 -178
- data/spec/spec_helper.rb +2 -2
- metadata +71 -21
data/ext/nmatrix/storage/yale.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
@@ -86,7 +86,7 @@ extern "C" {
|
|
86
86
|
// Lifecycle //
|
87
87
|
///////////////
|
88
88
|
|
89
|
-
YALE_STORAGE* nm_yale_storage_create(nm::dtype_t dtype, size_t* shape, size_t dim, size_t init_capacity);
|
89
|
+
YALE_STORAGE* nm_yale_storage_create(nm::dtype_t dtype, size_t* shape, size_t dim, size_t init_capacity, nm::itype_t itype);
|
90
90
|
YALE_STORAGE* nm_yale_storage_create_from_old_yale(nm::dtype_t dtype, size_t* shape, void* ia, void* ja, void* a, nm::dtype_t from_dtype);
|
91
91
|
YALE_STORAGE* nm_yale_storage_create_merged(const YALE_STORAGE* merge_template, const YALE_STORAGE* other);
|
92
92
|
void nm_yale_storage_delete(STORAGE* s);
|
@@ -97,6 +97,7 @@ extern "C" {
|
|
97
97
|
// Accessors //
|
98
98
|
///////////////
|
99
99
|
|
100
|
+
VALUE nm_yale_each_stored_with_indices(VALUE nmatrix);
|
100
101
|
void* nm_yale_storage_get(STORAGE* s, SLICE* slice);
|
101
102
|
void* nm_yale_storage_ref(STORAGE* s, SLICE* slice);
|
102
103
|
char nm_yale_storage_set(STORAGE* storage, SLICE* slice, void* v);
|
@@ -150,7 +151,7 @@ extern "C" {
|
|
150
151
|
* because UINTX_MAX and UINTX_MAX-1 are both reserved for sparse matrix
|
151
152
|
* multiplication.
|
152
153
|
*/
|
153
|
-
inline nm::itype_t
|
154
|
+
inline nm::itype_t nm_yale_storage_default_itype(const YALE_STORAGE* s) {
|
154
155
|
return nm_yale_storage_itype_by_shape(s->shape);
|
155
156
|
}
|
156
157
|
|
@@ -2,125 +2,125 @@
|
|
2
2
|
|
3
3
|
# A helper file for generating and maintaining template tables.
|
4
4
|
|
5
|
-
def nullify(disabled)
|
6
|
-
|
5
|
+
def nullify(disabled) #:nodoc:
|
6
|
+
DTYPES.map { |t| if disabled.include?(t) then :NULL else t end }
|
7
7
|
end
|
8
8
|
|
9
9
|
DTYPES = [
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
]
|
10
|
+
:uint8_t,
|
11
|
+
:int8_t,
|
12
|
+
:int16_t,
|
13
|
+
:int32_t,
|
14
|
+
:int64_t,
|
15
|
+
:float32_t,
|
16
|
+
:float64_t,
|
17
|
+
:'nm::Complex64',
|
18
|
+
:'nm::Complex128',
|
19
|
+
:'nm::Rational32',
|
20
|
+
:'nm::Rational64',
|
21
|
+
:'nm::Rational128',
|
22
|
+
:'nm::RubyObject'
|
23
|
+
]
|
24
24
|
|
25
25
|
ITYPES = [
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
]
|
26
|
+
:uint8_t,
|
27
|
+
:uint16_t,
|
28
|
+
:uint32_t,
|
29
|
+
:uint64_t
|
30
|
+
]
|
31
31
|
|
32
32
|
EWOPS = [
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
]
|
33
|
+
:'nm::EW_ADD',
|
34
|
+
:'nm::EW_SUB',
|
35
|
+
:'nm::EW_MUL',
|
36
|
+
:'nm::EW_DIV',
|
37
|
+
:'nm::EW_MOD',
|
38
|
+
:'nm::EW_EQEQ',
|
39
|
+
:'nm::EW_NEQ',
|
40
|
+
:'nm::EW_LT',
|
41
|
+
:'nm::EW_GT',
|
42
|
+
:'nm::EW_LEQ',
|
43
|
+
:'nm::EW_GEQ'
|
44
|
+
]
|
45
45
|
|
46
46
|
LR_ALLOWED = {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
47
|
+
:uint8_t => nullify([:RubyObject]),
|
48
|
+
:int8_t => nullify([:RubyObject]),
|
49
|
+
:int16_t => nullify([:RubyObject]),
|
50
|
+
:int32_t => nullify([:RubyObject]),
|
51
|
+
:int64_t => nullify([:RubyObject]),
|
52
|
+
:float32_t => nullify([:RubyObject]),
|
53
|
+
:float64_t => nullify([:RubyObject]),
|
54
|
+
:Complex64 => nullify([:RubyObject]),
|
55
|
+
:Complex128 => nullify([:RubyObject]),
|
56
|
+
:Rational32 => nullify([:float32_t, :float64_t, :'nm::Complex64', :'nm::Complex128', :'nm::RubyObject']),
|
57
|
+
:Rational64 => nullify([:float32_t, :float64_t, :'nm::Complex64', :'nm::Complex128', :'nm::RubyObject']),
|
58
|
+
:Rational128 => nullify([:float32_t, :float64_t, :'nm::Complex64', :'nm::Complex128', :'nm::RubyObject']),
|
59
|
+
:RubyObject => nullify(DTYPES - [:RubyObject])
|
60
60
|
}
|
61
61
|
|
62
62
|
lines =
|
63
|
-
case ARGV[0]
|
64
|
-
when 'OPLR'
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
when 'OPID'
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
when 'LR'
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
end
|
63
|
+
case ARGV[0]
|
64
|
+
when 'OPLR'
|
65
|
+
'{' +
|
66
|
+
EWOPS.map do |op|
|
67
|
+
|
68
|
+
'{' +
|
69
|
+
DTYPES.map do |l_dtype|
|
70
|
+
|
71
|
+
'{' +
|
72
|
+
LR_ALLOWED[l_dtype].map do |r_dtype|
|
73
|
+
if r_dtype == :NULL
|
74
|
+
'NULL'
|
75
|
+
else
|
76
|
+
"fun<#{op}, #{l_dtype}, #{r_dtype}>"
|
77
|
+
end
|
78
|
+
end.join(', ') +
|
79
|
+
'}'
|
80
|
+
|
81
|
+
end.join(",\n") +
|
82
|
+
'}'
|
83
|
+
|
84
|
+
end.join(",\n") +
|
85
|
+
'}'
|
86
|
+
|
87
|
+
when 'OPID'
|
88
|
+
'{' +
|
89
|
+
EWOPS.map do |op|
|
90
|
+
'{' +
|
91
|
+
ITYPES.map do |itype|
|
92
|
+
'{' +
|
93
|
+
DTYPES.map do |dtype|
|
94
|
+
|
95
|
+
if dtype == :NULL
|
96
|
+
'NULL'
|
97
|
+
else
|
98
|
+
"fun<#{op}, #{itype}, #{dtype}>"
|
99
|
+
end
|
100
|
+
|
101
|
+
end.join(",") +
|
102
|
+
'}'
|
103
|
+
end.join(",\\\n") +
|
104
|
+
'}'
|
105
|
+
end.join(",\\\n") +
|
106
|
+
'}'
|
107
|
+
|
108
|
+
when 'LR'
|
109
|
+
'{' +
|
110
|
+
DTYPES.map do |l_dtype|
|
111
|
+
|
112
|
+
'{' +
|
113
|
+
LR_ALLOWED[l_dtype].map do |r_dtype|
|
114
|
+
if r_dtype == :NULL
|
115
|
+
'NULL'
|
116
|
+
else
|
117
|
+
"fun<#{l_dtype}, #{r_dtype}>"
|
118
|
+
end
|
119
|
+
end.join(', ') +
|
120
|
+
'}'
|
121
|
+
|
122
|
+
end.join(",\n") +
|
123
|
+
'}'
|
124
|
+
end
|
125
125
|
|
126
126
|
puts lines
|
data/ext/nmatrix/types.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
@@ -34,10 +34,6 @@
|
|
34
34
|
|
35
35
|
#include <stdint.h>
|
36
36
|
|
37
|
-
/*
|
38
|
-
* Project Includes
|
39
|
-
*/
|
40
|
-
|
41
37
|
/*
|
42
38
|
* Macros
|
43
39
|
*/
|
@@ -53,13 +49,4 @@
|
|
53
49
|
typedef float float32_t;
|
54
50
|
typedef double float64_t;
|
55
51
|
|
56
|
-
|
57
|
-
/*
|
58
|
-
* Data
|
59
|
-
*/
|
60
|
-
|
61
|
-
/*
|
62
|
-
* Functions
|
63
|
-
*/
|
64
|
-
|
65
52
|
#endif
|
data/ext/nmatrix/util/io.cpp
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
data/ext/nmatrix/util/io.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
data/ext/nmatrix/util/lapack.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
data/ext/nmatrix/util/math.cpp
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
@@ -219,18 +219,18 @@ inline static void cblas_gemm(const enum CBLAS_ORDER order,
|
|
219
219
|
* For documentation: http://www.netlib.org/lapack/double/dgetrf.f
|
220
220
|
*/
|
221
221
|
template <typename DType>
|
222
|
-
inline static bool cblas_gemv(const enum CBLAS_TRANSPOSE
|
223
|
-
int m, int n,
|
224
|
-
void* alpha,
|
225
|
-
void* a, int lda,
|
226
|
-
void* x, int incx,
|
227
|
-
void* beta,
|
228
|
-
void* y, int incy)
|
222
|
+
inline static bool cblas_gemv(const enum CBLAS_TRANSPOSE trans,
|
223
|
+
const int m, const int n,
|
224
|
+
const void* alpha,
|
225
|
+
const void* a, const int lda,
|
226
|
+
const void* x, const int incx,
|
227
|
+
const void* beta,
|
228
|
+
void* y, const int incy)
|
229
229
|
{
|
230
|
-
return gemv<DType>(
|
231
|
-
m, n, reinterpret_cast<DType*>(alpha),
|
232
|
-
reinterpret_cast<DType*>(a), lda,
|
233
|
-
reinterpret_cast<DType*>(x), incx, reinterpret_cast<DType*>(beta),
|
230
|
+
return gemv<DType>(trans,
|
231
|
+
m, n, reinterpret_cast<const DType*>(alpha),
|
232
|
+
reinterpret_cast<const DType*>(a), lda,
|
233
|
+
reinterpret_cast<const DType*>(x), incx, reinterpret_cast<const DType*>(beta),
|
234
234
|
reinterpret_cast<DType*>(y), incy);
|
235
235
|
}
|
236
236
|
|
@@ -591,7 +591,7 @@ static VALUE nm_cblas_gemv(VALUE self,
|
|
591
591
|
VALUE beta,
|
592
592
|
VALUE y, VALUE incy)
|
593
593
|
{
|
594
|
-
NAMED_DTYPE_TEMPLATE_TABLE(ttable, nm::math::cblas_gemv, bool, const enum CBLAS_TRANSPOSE
|
594
|
+
NAMED_DTYPE_TEMPLATE_TABLE(ttable, nm::math::cblas_gemv, bool, const enum CBLAS_TRANSPOSE, const int, const int, const void*, const void*, const int, const void*, const int, const void*, void*, const int)
|
595
595
|
|
596
596
|
nm::dtype_t dtype = NM_DTYPE(a);
|
597
597
|
|
data/ext/nmatrix/util/math.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
@@ -1,6 +1,6 @@
|
|
1
1
|
//
|
2
|
-
// SciRuby is Copyright (c) 2010 -
|
3
|
-
// NMatrix is Copyright (c)
|
2
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
3
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
4
4
|
//
|
5
5
|
// Please see LICENSE.txt for additional copyright notices.
|
6
6
|
//
|
data/ext/nmatrix/util/sl_list.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
data/ext/nmatrix/util/util.h
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
//
|
10
10
|
// == Copyright Information
|
11
11
|
//
|
12
|
-
// SciRuby is Copyright (c) 2010 -
|
13
|
-
// NMatrix is Copyright (c)
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
|
+
// NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
14
14
|
//
|
15
15
|
// Please see LICENSE.txt for additional copyright notices.
|
16
16
|
//
|
data/lib/nmatrix.rb
CHANGED
@@ -8,8 +8,8 @@
|
|
8
8
|
#
|
9
9
|
# == Copyright Information
|
10
10
|
#
|
11
|
-
# SciRuby is Copyright (c) 2010 -
|
12
|
-
# NMatrix is Copyright (c)
|
11
|
+
# SciRuby is Copyright (c) 2010 - 2013, Ruby Science Foundation
|
12
|
+
# NMatrix is Copyright (c) 2013, Ruby Science Foundation
|
13
13
|
#
|
14
14
|
# Please see LICENSE.txt for additional copyright notices.
|
15
15
|
#
|
@@ -22,43 +22,21 @@
|
|
22
22
|
#
|
23
23
|
# == nmatrix.rb
|
24
24
|
#
|
25
|
-
# This file loads the C extension for NMatrix and
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
#############
|
30
|
-
# Autoloads #
|
31
|
-
#############
|
32
|
-
|
33
|
-
|
34
|
-
############
|
35
|
-
# Requires #
|
36
|
-
############
|
25
|
+
# This file loads the C extension for NMatrix and all the ruby files.
|
26
|
+
#
|
37
27
|
|
38
|
-
#
|
28
|
+
# For some reason nmatrix.so ends up in a different place during gem build.
|
29
|
+
if File.exist? "lib/nmatrix/nmatrix.so"
|
30
|
+
# Development
|
31
|
+
require "nmatrix/nmatrix.so"
|
32
|
+
else
|
33
|
+
# Gem
|
34
|
+
require "nmatrix.so"
|
35
|
+
end
|
39
36
|
|
40
37
|
require 'nmatrix/nmatrix.rb'
|
41
38
|
require 'nmatrix/version.rb'
|
42
39
|
require 'nmatrix/nvector.rb'
|
43
40
|
require 'nmatrix/blas.rb'
|
44
|
-
|
45
|
-
# For some reason nmatrix.so ends up in a different place during gem build.
|
46
|
-
if File.exist? 'lib/nmatrix/nmatrix.so'
|
47
|
-
# Development
|
48
|
-
require 'nmatrix/nmatrix.so'
|
49
|
-
else
|
50
|
-
# Gem
|
51
|
-
require 'nmatrix.so'
|
52
|
-
end
|
53
|
-
|
54
|
-
# Monkey patches.
|
55
41
|
require 'nmatrix/monkeys'
|
56
|
-
|
57
|
-
#############
|
58
|
-
# Autoloads #
|
59
|
-
#############
|
60
|
-
|
61
|
-
autoload :NMatrix, 'nmatrix/nmatrix'
|
62
|
-
autoload :NVector, 'nmatrix/nvector'
|
63
|
-
|
64
|
-
require "nmatrix/shortcuts.rb"
|
42
|
+
require "nmatrix/shortcuts.rb"
|