nmatrix-lapacke 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/ext/nmatrix/data/complex.h +183 -159
- data/ext/nmatrix/data/data.h +306 -292
- data/ext/nmatrix/data/ruby_object.h +193 -193
- data/ext/nmatrix/math/math.h +3 -2
- data/ext/nmatrix/math/trsm.h +152 -152
- data/ext/nmatrix/nmatrix.h +30 -0
- data/ext/nmatrix/ruby_constants.h +35 -35
- data/ext/nmatrix/storage/common.h +4 -3
- data/ext/nmatrix/storage/dense/dense.h +8 -7
- data/ext/nmatrix/storage/list/list.h +7 -6
- data/ext/nmatrix/storage/storage.h +12 -11
- data/ext/nmatrix/storage/yale/class.h +2 -2
- data/ext/nmatrix/storage/yale/iterators/base.h +2 -1
- data/ext/nmatrix/storage/yale/iterators/iterator.h +2 -1
- data/ext/nmatrix/storage/yale/iterators/row.h +2 -1
- data/ext/nmatrix/storage/yale/iterators/row_stored.h +2 -1
- data/ext/nmatrix/storage/yale/iterators/row_stored_nd.h +1 -0
- data/ext/nmatrix/storage/yale/iterators/stored_diagonal.h +2 -1
- data/ext/nmatrix/storage/yale/yale.h +7 -6
- data/ext/nmatrix/types.h +3 -2
- data/ext/nmatrix/util/sl_list.h +19 -18
- data/ext/nmatrix_lapacke/extconf.rb +15 -9
- data/ext/nmatrix_lapacke/math_lapacke.cpp +6 -6
- data/lib/nmatrix/lapacke.rb +31 -9
- data/spec/00_nmatrix_spec.rb +6 -0
- data/spec/math_spec.rb +77 -0
- data/spec/spec_helper.rb +9 -0
- metadata +4 -4
@@ -32,6 +32,7 @@
|
|
32
32
|
* Standard Includes
|
33
33
|
*/
|
34
34
|
|
35
|
+
#include <ruby.h>
|
35
36
|
#include <cmath> // pow().
|
36
37
|
|
37
38
|
/*
|
@@ -57,9 +58,9 @@ struct STORAGE_PAIR {
|
|
57
58
|
};
|
58
59
|
|
59
60
|
struct SLICE {
|
60
|
-
size_t*
|
61
|
-
size_t*
|
62
|
-
bool
|
61
|
+
size_t* coords; // Coordinate of first element
|
62
|
+
size_t* lengths; // Lengths of slice
|
63
|
+
bool single; // true if all lengths equal to 1 (represents single matrix element)
|
63
64
|
};
|
64
65
|
|
65
66
|
/*
|
@@ -32,7 +32,8 @@
|
|
32
32
|
* Standard Includes
|
33
33
|
*/
|
34
34
|
|
35
|
-
#include <
|
35
|
+
#include <ruby.h>
|
36
|
+
#include <cstdlib>
|
36
37
|
|
37
38
|
/*
|
38
39
|
* Project Includes
|
@@ -69,10 +70,10 @@ extern "C" {
|
|
69
70
|
// Lifecycle //
|
70
71
|
///////////////
|
71
72
|
|
72
|
-
DENSE_STORAGE*
|
73
|
-
void
|
74
|
-
void
|
75
|
-
void
|
73
|
+
DENSE_STORAGE* nm_dense_storage_create(nm::dtype_t dtype, size_t* shape, size_t dim, void* elements, size_t elements_length);
|
74
|
+
void nm_dense_storage_delete(STORAGE* s);
|
75
|
+
void nm_dense_storage_delete_ref(STORAGE* s);
|
76
|
+
void nm_dense_storage_mark(STORAGE*);
|
76
77
|
void nm_dense_storage_register(const STORAGE* s);
|
77
78
|
void nm_dense_storage_unregister(const STORAGE* s);
|
78
79
|
|
@@ -86,8 +87,8 @@ VALUE nm_dense_map_pair(VALUE self, VALUE right);
|
|
86
87
|
VALUE nm_dense_map(VALUE self);
|
87
88
|
VALUE nm_dense_each(VALUE nmatrix);
|
88
89
|
VALUE nm_dense_each_with_indices(VALUE nmatrix);
|
89
|
-
void*
|
90
|
-
void*
|
90
|
+
void* nm_dense_storage_get(const STORAGE* s, SLICE* slice);
|
91
|
+
void* nm_dense_storage_ref(const STORAGE* s, SLICE* slice);
|
91
92
|
void nm_dense_storage_set(VALUE left, SLICE* slice, VALUE right);
|
92
93
|
|
93
94
|
///////////
|
@@ -33,7 +33,8 @@
|
|
33
33
|
* Standard Includes
|
34
34
|
*/
|
35
35
|
|
36
|
-
#include <
|
36
|
+
#include <ruby.h>
|
37
|
+
#include <cstdlib>
|
37
38
|
#include <list>
|
38
39
|
/*
|
39
40
|
* Project Includes
|
@@ -69,17 +70,17 @@ extern "C" {
|
|
69
70
|
// Lifecycle //
|
70
71
|
///////////////
|
71
72
|
|
72
|
-
LIST_STORAGE*
|
73
|
-
void
|
74
|
-
void
|
75
|
-
void
|
73
|
+
LIST_STORAGE* nm_list_storage_create(nm::dtype_t dtype, size_t* shape, size_t dim, void* init_val);
|
74
|
+
void nm_list_storage_delete(STORAGE* s);
|
75
|
+
void nm_list_storage_delete_ref(STORAGE* s);
|
76
|
+
void nm_list_storage_mark(STORAGE*);
|
76
77
|
void nm_list_storage_register(const STORAGE* s);
|
77
78
|
void nm_list_storage_unregister(const STORAGE* s);
|
78
79
|
void nm_list_storage_register_list(const LIST* l, size_t recursions);
|
79
80
|
void nm_list_storage_unregister_list(const LIST* l, size_t recursions);
|
80
81
|
void nm_list_storage_register_node(const NODE* n);
|
81
82
|
void nm_list_storage_unregister_node(const NODE* n);
|
82
|
-
void
|
83
|
+
void nm_list_storage_completely_unregister_node(const NODE* curr);
|
83
84
|
///////////////
|
84
85
|
// Accessors //
|
85
86
|
///////////////
|
@@ -34,6 +34,7 @@
|
|
34
34
|
* Standard Includes
|
35
35
|
*/
|
36
36
|
|
37
|
+
#include <ruby.h>
|
37
38
|
#include <cstdlib>
|
38
39
|
|
39
40
|
/*
|
@@ -53,10 +54,10 @@
|
|
53
54
|
* Macros
|
54
55
|
*/
|
55
56
|
|
56
|
-
#define NMATRIX_DTYPE_IS_COMPLEX(s)
|
57
|
-
#define NMATRIX_DTYPE_IS_FLOAT(s)
|
58
|
-
#define NMATRIX_DTYPE_IS_INTEGER(s)
|
59
|
-
#define NMATRIX_DTYPE_IS_RUBYOBJ(s)
|
57
|
+
#define NMATRIX_DTYPE_IS_COMPLEX(s) ((s->dtype == nm::COMPLEX64) or (s->dtype == nm::COMPLEX128))
|
58
|
+
#define NMATRIX_DTYPE_IS_FLOAT(s) ((s->dtype == nm::FLOAT32) or (s->dtype == nm::FLOAT64))
|
59
|
+
#define NMATRIX_DTYPE_IS_INTEGER(s) (s->dtype <= nm::INT64)
|
60
|
+
#define NMATRIX_DTYPE_IS_RUBYOBJ(s) (s->dtype == nm::RUBYOBJ)
|
60
61
|
|
61
62
|
|
62
63
|
/*
|
@@ -69,7 +70,7 @@
|
|
69
70
|
*/
|
70
71
|
|
71
72
|
namespace nm {
|
72
|
-
|
73
|
+
const int NUM_STYPES = 3;
|
73
74
|
}
|
74
75
|
|
75
76
|
extern "C" {
|
@@ -85,12 +86,12 @@ extern "C" {
|
|
85
86
|
// Copying and Casting //
|
86
87
|
/////////////////////////
|
87
88
|
|
88
|
-
STORAGE*
|
89
|
-
STORAGE*
|
90
|
-
STORAGE*
|
91
|
-
STORAGE*
|
92
|
-
STORAGE*
|
93
|
-
STORAGE*
|
89
|
+
STORAGE* nm_dense_storage_from_list(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
90
|
+
STORAGE* nm_dense_storage_from_yale(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
91
|
+
STORAGE* nm_list_storage_from_dense(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
92
|
+
STORAGE* nm_list_storage_from_yale(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
93
|
+
STORAGE* nm_yale_storage_from_list(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
94
|
+
STORAGE* nm_yale_storage_from_dense(const STORAGE* right, nm::dtype_t l_dtype, void*);
|
94
95
|
|
95
96
|
} // end of extern "C" block
|
96
97
|
|
@@ -754,8 +754,8 @@ public:
|
|
754
754
|
nm_yale_storage_register(lhs);
|
755
755
|
for (size_t m = 0; m < size(); ++m) {
|
756
756
|
if (Yield) {
|
757
|
-
|
758
|
-
|
757
|
+
la[m] = rb_yield(nm::yale_storage::nm_rb_dereference(a(m)));
|
758
|
+
}
|
759
759
|
else la[m] = static_cast<E>(a(m));
|
760
760
|
}
|
761
761
|
nm_yale_storage_unregister(lhs);
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#ifndef YALE_ITERATORS_BASE_H
|
30
30
|
# define YALE_ITERATORS_BASE_H
|
31
31
|
|
32
|
+
#include <ruby.h>
|
32
33
|
#include <type_traits>
|
33
34
|
#include <typeinfo>
|
34
35
|
#include <stdexcept>
|
@@ -139,4 +140,4 @@ public:
|
|
139
140
|
|
140
141
|
} } // end of namespace nm::yale_storage
|
141
142
|
|
142
|
-
#endif // YALE_ITERATORS_BASE_H
|
143
|
+
#endif // YALE_ITERATORS_BASE_H
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#ifndef YALE_ITERATORS_ITERATOR_H
|
30
30
|
# define YALE_ITERATORS_ITERATOR_H
|
31
31
|
|
32
|
+
#include <ruby.h>
|
32
33
|
#include <type_traits>
|
33
34
|
#include <typeinfo>
|
34
35
|
|
@@ -127,4 +128,4 @@ public:
|
|
127
128
|
|
128
129
|
} } // end of namespace nm::yale_storage
|
129
130
|
|
130
|
-
#endif // YALE_ITERATORS_ITERATOR_H
|
131
|
+
#endif // YALE_ITERATORS_ITERATOR_H
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#ifndef YALE_ITERATORS_ROW_H
|
32
32
|
# define YALE_ITERATORS_ROW_H
|
33
33
|
|
34
|
+
#include <ruby.h>
|
34
35
|
#include <stdexcept>
|
35
36
|
|
36
37
|
namespace nm { namespace yale_storage {
|
@@ -446,4 +447,4 @@ public:
|
|
446
447
|
|
447
448
|
} } // end of nm::yale_storage namespace
|
448
449
|
|
449
|
-
#endif // YALE_ITERATORS_ROW_H
|
450
|
+
#endif // YALE_ITERATORS_ROW_H
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#ifndef YALE_ITERATORS_ROW_STORED_H
|
35
35
|
# define YALE_ITERATORS_ROW_STORED_H
|
36
36
|
|
37
|
+
#include <ruby.h>
|
37
38
|
#include <stdexcept>
|
38
39
|
|
39
40
|
namespace nm { namespace yale_storage {
|
@@ -136,4 +137,4 @@ public:
|
|
136
137
|
|
137
138
|
}} // end of namespace nm::yale_storage
|
138
139
|
|
139
|
-
#endif // YALE_ITERATORS_ROW_STORED_H
|
140
|
+
#endif // YALE_ITERATORS_ROW_STORED_H
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#ifndef YALE_ITERATORS_STORED_DIAGONAL_H
|
30
30
|
# define YALE_ITERATORS_STORED_DIAGONAL_H
|
31
31
|
|
32
|
+
#include <ruby.h>
|
32
33
|
#include <type_traits>
|
33
34
|
#include <typeinfo>
|
34
35
|
|
@@ -120,4 +121,4 @@ public:
|
|
120
121
|
|
121
122
|
} } // end of namespace nm::yale_storage
|
122
123
|
|
123
|
-
#endif // YALE_ITERATORS_STORED_DIAGONAL_H
|
124
|
+
#endif // YALE_ITERATORS_STORED_DIAGONAL_H
|
@@ -42,6 +42,7 @@
|
|
42
42
|
* Standard Includes
|
43
43
|
*/
|
44
44
|
|
45
|
+
#include <ruby.h>
|
45
46
|
#include <limits> // for std::numeric_limits<T>::max()
|
46
47
|
#include <stdexcept>
|
47
48
|
|
@@ -84,15 +85,15 @@ extern "C" {
|
|
84
85
|
|
85
86
|
YALE_STORAGE* nm_yale_storage_create(nm::dtype_t dtype, size_t* shape, size_t dim, size_t init_capacity);
|
86
87
|
YALE_STORAGE* nm_yale_storage_create_from_old_yale(nm::dtype_t dtype, size_t* shape, char* ia, char* ja, char* a, nm::dtype_t from_dtype);
|
87
|
-
YALE_STORAGE*
|
88
|
+
YALE_STORAGE* nm_yale_storage_create_merged(const YALE_STORAGE* merge_template, const YALE_STORAGE* other);
|
88
89
|
void nm_yale_storage_delete(STORAGE* s);
|
89
90
|
void nm_yale_storage_delete_ref(STORAGE* s);
|
90
|
-
void
|
91
|
-
void
|
91
|
+
void nm_yale_storage_init(YALE_STORAGE* s, void* default_val);
|
92
|
+
void nm_yale_storage_mark(STORAGE*);
|
92
93
|
void nm_yale_storage_register(const STORAGE* s);
|
93
94
|
void nm_yale_storage_unregister(const STORAGE* s);
|
94
|
-
void
|
95
|
-
void
|
95
|
+
void nm_yale_storage_register_a(void* a, size_t size);
|
96
|
+
void nm_yale_storage_unregister_a(void* a, size_t size);
|
96
97
|
|
97
98
|
///////////////
|
98
99
|
// Accessors //
|
@@ -104,7 +105,7 @@ extern "C" {
|
|
104
105
|
VALUE nm_yale_stored_nondiagonal_each_with_indices(VALUE nmatrix);
|
105
106
|
VALUE nm_yale_each_ordered_stored_with_indices(VALUE nmatrix);
|
106
107
|
void* nm_yale_storage_get(const STORAGE* s, SLICE* slice);
|
107
|
-
void*
|
108
|
+
void* nm_yale_storage_ref(const STORAGE* s, SLICE* slice);
|
108
109
|
void nm_yale_storage_set(VALUE left, SLICE* slice, VALUE right);
|
109
110
|
|
110
111
|
//char nm_yale_storage_vector_insert(YALE_STORAGE* s, size_t pos, size_t* js, void* vals, size_t n, bool struct_only, nm::dtype_t dtype, nm::itype_t itype);
|
data/ext/nmatrix/types.h
CHANGED
@@ -32,6 +32,7 @@
|
|
32
32
|
* Standard Includes
|
33
33
|
*/
|
34
34
|
|
35
|
+
#include <ruby.h>
|
35
36
|
#include <cstdint>
|
36
37
|
|
37
38
|
/*
|
@@ -46,8 +47,8 @@
|
|
46
47
|
* Types
|
47
48
|
*/
|
48
49
|
|
49
|
-
typedef float
|
50
|
-
typedef double
|
50
|
+
typedef float float32_t;
|
51
|
+
typedef double float64_t;
|
51
52
|
|
52
53
|
typedef size_t IType;
|
53
54
|
|
data/ext/nmatrix/util/sl_list.h
CHANGED
@@ -33,6 +33,7 @@
|
|
33
33
|
* Standard Includes
|
34
34
|
*/
|
35
35
|
|
36
|
+
#include <ruby.h>
|
36
37
|
#include <type_traits>
|
37
38
|
#include <cstdlib>
|
38
39
|
|
@@ -69,9 +70,9 @@ namespace nm { namespace list {
|
|
69
70
|
// Lifecycle //
|
70
71
|
///////////////
|
71
72
|
|
72
|
-
LIST*
|
73
|
-
void
|
74
|
-
void
|
73
|
+
LIST* create(void);
|
74
|
+
void del(LIST* list, size_t recursions);
|
75
|
+
void mark(LIST* list, size_t recursions);
|
75
76
|
|
76
77
|
///////////////
|
77
78
|
// Accessors //
|
@@ -90,25 +91,25 @@ bool node_is_within_slice(NODE* n, size_t coord, size_t len);
|
|
90
91
|
|
91
92
|
template <typename Type>
|
92
93
|
inline NODE* insert_helper(LIST* list, NODE* node, size_t key, Type val) {
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
94
|
+
Type* val_mem = NM_ALLOC(Type);
|
95
|
+
*val_mem = val;
|
96
|
+
|
97
|
+
if (node == NULL) {
|
98
|
+
return insert(list, false, key, val_mem);
|
99
|
+
|
100
|
+
} else {
|
101
|
+
return insert_after(node, key, val_mem);
|
102
|
+
}
|
102
103
|
}
|
103
104
|
|
104
105
|
template <typename Type>
|
105
106
|
inline NODE* insert_helper(LIST* list, NODE* node, size_t key, Type* ptr) {
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
107
|
+
if (node == NULL) {
|
108
|
+
return insert(list, false, key, ptr);
|
109
|
+
|
110
|
+
} else {
|
111
|
+
return insert_after(node, key, ptr);
|
112
|
+
}
|
112
113
|
}
|
113
114
|
|
114
115
|
///////////
|
@@ -107,9 +107,6 @@ basenames = %w{nmatrix_lapacke math_lapacke lapacke}
|
|
107
107
|
$objs = basenames.map { |b| "#{b}.o" }
|
108
108
|
$srcs = basenames.map { |b| "#{b}.cpp" }
|
109
109
|
|
110
|
-
#CONFIG['CXX'] = 'clang++'
|
111
|
-
CONFIG['CXX'] = 'g++'
|
112
|
-
|
113
110
|
def find_newer_gplusplus #:nodoc:
|
114
111
|
print "checking for apparent GNU g++ binary with C++0x/C++11 support... "
|
115
112
|
[9,8,7,6,5,4,3].each do |minor|
|
@@ -137,7 +134,7 @@ end
|
|
137
134
|
|
138
135
|
|
139
136
|
if CONFIG['CXX'] == 'clang++'
|
140
|
-
$
|
137
|
+
$CXX_STANDARD = 'c++11'
|
141
138
|
|
142
139
|
else
|
143
140
|
version = gplusplus_version
|
@@ -149,11 +146,11 @@ else
|
|
149
146
|
end
|
150
147
|
|
151
148
|
if version < '4.7.0'
|
152
|
-
$
|
149
|
+
$CXX_STANDARD = 'c++0x'
|
153
150
|
else
|
154
|
-
$
|
151
|
+
$CXX_STANDARD = 'c++11'
|
155
152
|
end
|
156
|
-
puts "using C++ standard... #{$
|
153
|
+
puts "using C++ standard... #{$CXX_STANDARD}"
|
157
154
|
puts "g++ reports version... " + `#{CONFIG['CXX']} --version|head -n 1|cut -f 3 -d " "`
|
158
155
|
end
|
159
156
|
|
@@ -165,6 +162,10 @@ end
|
|
165
162
|
# that Dir.exists?(d) for each.
|
166
163
|
ldefaults = {lapack: ["/usr/local/lib"].delete_if { |d| !Dir.exists?(d) } }
|
167
164
|
|
165
|
+
# It is not clear how this variable should be defined, or if it is necessary at all.
|
166
|
+
# See issue https://github.com/SciRuby/nmatrix/issues/403
|
167
|
+
idefaults = {lapack: [] }
|
168
|
+
|
168
169
|
unless have_library("lapack")
|
169
170
|
dir_config("lapack", idefaults[:lapack], ldefaults[:lapack])
|
170
171
|
end
|
@@ -183,13 +184,18 @@ $libs += " -llapack "
|
|
183
184
|
# For release, these next two should both be changed to -O3.
|
184
185
|
$CFLAGS += " -O3" #" -O0 -g "
|
185
186
|
#$CFLAGS += " -static -O0 -g "
|
186
|
-
$
|
187
|
-
#$CPPFLAGS += " -static -O0 -g -std=#{$
|
187
|
+
$CXXFLAGS += " -O3 -std=#{$CXX_STANDARD}" #" -O0 -g -std=#{$CXX_STANDARD} " #-fmax-errors=10 -save-temps
|
188
|
+
#$CPPFLAGS += " -static -O0 -g -std=#{$CXX_STANDARD} "
|
188
189
|
|
189
190
|
CONFIG['warnflags'].gsub!('-Wshorten-64-to-32', '') # doesn't work except in Mac-patched gcc (4.2)
|
190
191
|
CONFIG['warnflags'].gsub!('-Wdeclaration-after-statement', '')
|
191
192
|
CONFIG['warnflags'].gsub!('-Wimplicit-function-declaration', '')
|
192
193
|
|
194
|
+
have_func("rb_array_const_ptr", "ruby.h")
|
195
|
+
have_macro("FIX_CONST_VALUE_PTR", "ruby.h")
|
196
|
+
have_macro("RARRAY_CONST_PTR", "ruby.h")
|
197
|
+
have_macro("RARRAY_AREF", "ruby.h")
|
198
|
+
|
193
199
|
create_conf_h("nmatrix_lapacke_config.h")
|
194
200
|
create_makefile("nmatrix_lapacke")
|
195
201
|
|
@@ -213,8 +213,8 @@ static VALUE nm_lapacke_cblas_rotg(VALUE self, VALUE ab) {
|
|
213
213
|
rb_ary_store(result, 0, *reinterpret_cast<VALUE*>(pC));
|
214
214
|
rb_ary_store(result, 1, *reinterpret_cast<VALUE*>(pS));
|
215
215
|
} else {
|
216
|
-
rb_ary_store(result, 0, rubyobj_from_cval(pC, dtype).rval);
|
217
|
-
rb_ary_store(result, 1, rubyobj_from_cval(pS, dtype).rval);
|
216
|
+
rb_ary_store(result, 0, nm::rubyobj_from_cval(pC, dtype).rval);
|
217
|
+
rb_ary_store(result, 1, nm::rubyobj_from_cval(pS, dtype).rval);
|
218
218
|
}
|
219
219
|
NM_CONSERVATIVE(nm_unregister_value(&ab));
|
220
220
|
NM_CONSERVATIVE(nm_unregister_value(&self));
|
@@ -334,7 +334,7 @@ static VALUE nm_lapacke_cblas_nrm2(VALUE self, VALUE n, VALUE x, VALUE incx) {
|
|
334
334
|
|
335
335
|
ttable[dtype](FIX2INT(n), NM_STORAGE_DENSE(x)->elements, FIX2INT(incx), Result);
|
336
336
|
|
337
|
-
return rubyobj_from_cval(Result, rdtype).rval;
|
337
|
+
return nm::rubyobj_from_cval(Result, rdtype).rval;
|
338
338
|
}
|
339
339
|
}
|
340
340
|
|
@@ -383,7 +383,7 @@ static VALUE nm_lapacke_cblas_asum(VALUE self, VALUE n, VALUE x, VALUE incx) {
|
|
383
383
|
|
384
384
|
ttable[dtype](FIX2INT(n), NM_STORAGE_DENSE(x)->elements, FIX2INT(incx), Result);
|
385
385
|
|
386
|
-
return rubyobj_from_cval(Result, rdtype).rval;
|
386
|
+
return nm::rubyobj_from_cval(Result, rdtype).rval;
|
387
387
|
}
|
388
388
|
|
389
389
|
/*
|
@@ -652,7 +652,7 @@ static VALUE nm_lapacke_lapacke_getri(VALUE self, VALUE order, VALUE n, VALUE a,
|
|
652
652
|
} else {
|
653
653
|
ipiv_ = NM_ALLOCA_N(int, RARRAY_LEN(ipiv));
|
654
654
|
for (int index = 0; index < RARRAY_LEN(ipiv); ++index) {
|
655
|
-
ipiv_[index] = FIX2INT(
|
655
|
+
ipiv_[index] = FIX2INT( RARRAY_AREF(ipiv, index) );
|
656
656
|
}
|
657
657
|
}
|
658
658
|
|
@@ -744,7 +744,7 @@ static VALUE nm_lapacke_lapacke_getrs(VALUE self, VALUE order, VALUE trans, VALU
|
|
744
744
|
} else {
|
745
745
|
ipiv_ = NM_ALLOCA_N(int, RARRAY_LEN(ipiv));
|
746
746
|
for (int index = 0; index < RARRAY_LEN(ipiv); ++index) {
|
747
|
-
ipiv_[index] = FIX2INT(
|
747
|
+
ipiv_[index] = FIX2INT( RARRAY_AREF(ipiv, index) );
|
748
748
|
}
|
749
749
|
}
|
750
750
|
|