pnmatrix 1.2.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.
- checksums.yaml +7 -0
- data/ext/nmatrix/binary_format.txt +53 -0
- data/ext/nmatrix/data/complex.h +388 -0
- data/ext/nmatrix/data/data.cpp +274 -0
- data/ext/nmatrix/data/data.h +651 -0
- data/ext/nmatrix/data/meta.h +64 -0
- data/ext/nmatrix/data/ruby_object.h +386 -0
- data/ext/nmatrix/extconf.rb +70 -0
- data/ext/nmatrix/math/asum.h +99 -0
- data/ext/nmatrix/math/cblas_enums.h +36 -0
- data/ext/nmatrix/math/cblas_templates_core.h +507 -0
- data/ext/nmatrix/math/gemm.h +241 -0
- data/ext/nmatrix/math/gemv.h +178 -0
- data/ext/nmatrix/math/getrf.h +255 -0
- data/ext/nmatrix/math/getrs.h +121 -0
- data/ext/nmatrix/math/imax.h +82 -0
- data/ext/nmatrix/math/laswp.h +165 -0
- data/ext/nmatrix/math/long_dtype.h +62 -0
- data/ext/nmatrix/math/magnitude.h +54 -0
- data/ext/nmatrix/math/math.h +751 -0
- data/ext/nmatrix/math/nrm2.h +165 -0
- data/ext/nmatrix/math/rot.h +117 -0
- data/ext/nmatrix/math/rotg.h +106 -0
- data/ext/nmatrix/math/scal.h +71 -0
- data/ext/nmatrix/math/trsm.h +336 -0
- data/ext/nmatrix/math/util.h +162 -0
- data/ext/nmatrix/math.cpp +1368 -0
- data/ext/nmatrix/nm_memory.h +60 -0
- data/ext/nmatrix/nmatrix.cpp +285 -0
- data/ext/nmatrix/nmatrix.h +476 -0
- data/ext/nmatrix/ruby_constants.cpp +151 -0
- data/ext/nmatrix/ruby_constants.h +106 -0
- data/ext/nmatrix/ruby_nmatrix.c +3130 -0
- data/ext/nmatrix/storage/common.cpp +77 -0
- data/ext/nmatrix/storage/common.h +183 -0
- data/ext/nmatrix/storage/dense/dense.cpp +1096 -0
- data/ext/nmatrix/storage/dense/dense.h +129 -0
- data/ext/nmatrix/storage/list/list.cpp +1628 -0
- data/ext/nmatrix/storage/list/list.h +138 -0
- data/ext/nmatrix/storage/storage.cpp +730 -0
- data/ext/nmatrix/storage/storage.h +99 -0
- data/ext/nmatrix/storage/yale/class.h +1139 -0
- data/ext/nmatrix/storage/yale/iterators/base.h +143 -0
- data/ext/nmatrix/storage/yale/iterators/iterator.h +131 -0
- data/ext/nmatrix/storage/yale/iterators/row.h +450 -0
- data/ext/nmatrix/storage/yale/iterators/row_stored.h +140 -0
- data/ext/nmatrix/storage/yale/iterators/row_stored_nd.h +169 -0
- data/ext/nmatrix/storage/yale/iterators/stored_diagonal.h +124 -0
- data/ext/nmatrix/storage/yale/math/transpose.h +110 -0
- data/ext/nmatrix/storage/yale/yale.cpp +2074 -0
- data/ext/nmatrix/storage/yale/yale.h +203 -0
- data/ext/nmatrix/types.h +55 -0
- data/ext/nmatrix/util/io.cpp +279 -0
- data/ext/nmatrix/util/io.h +115 -0
- data/ext/nmatrix/util/sl_list.cpp +627 -0
- data/ext/nmatrix/util/sl_list.h +144 -0
- data/ext/nmatrix/util/util.h +78 -0
- data/lib/nmatrix/blas.rb +378 -0
- data/lib/nmatrix/cruby/math.rb +744 -0
- data/lib/nmatrix/enumerate.rb +253 -0
- data/lib/nmatrix/homogeneous.rb +241 -0
- data/lib/nmatrix/io/fortran_format.rb +138 -0
- data/lib/nmatrix/io/harwell_boeing.rb +221 -0
- data/lib/nmatrix/io/market.rb +263 -0
- data/lib/nmatrix/io/point_cloud.rb +189 -0
- data/lib/nmatrix/jruby/decomposition.rb +24 -0
- data/lib/nmatrix/jruby/enumerable.rb +13 -0
- data/lib/nmatrix/jruby/error.rb +4 -0
- data/lib/nmatrix/jruby/math.rb +501 -0
- data/lib/nmatrix/jruby/nmatrix_java.rb +840 -0
- data/lib/nmatrix/jruby/operators.rb +283 -0
- data/lib/nmatrix/jruby/slice.rb +264 -0
- data/lib/nmatrix/lapack_core.rb +181 -0
- data/lib/nmatrix/lapack_plugin.rb +44 -0
- data/lib/nmatrix/math.rb +953 -0
- data/lib/nmatrix/mkmf.rb +100 -0
- data/lib/nmatrix/monkeys.rb +137 -0
- data/lib/nmatrix/nmatrix.rb +1172 -0
- data/lib/nmatrix/rspec.rb +75 -0
- data/lib/nmatrix/shortcuts.rb +1163 -0
- data/lib/nmatrix/version.rb +39 -0
- data/lib/nmatrix/yale_functions.rb +118 -0
- data/lib/nmatrix.rb +28 -0
- data/spec/00_nmatrix_spec.rb +892 -0
- data/spec/01_enum_spec.rb +196 -0
- data/spec/02_slice_spec.rb +407 -0
- data/spec/03_nmatrix_monkeys_spec.rb +80 -0
- data/spec/2x2_dense_double.mat +0 -0
- data/spec/4x4_sparse.mat +0 -0
- data/spec/4x5_dense.mat +0 -0
- data/spec/blas_spec.rb +215 -0
- data/spec/elementwise_spec.rb +311 -0
- data/spec/homogeneous_spec.rb +100 -0
- data/spec/io/fortran_format_spec.rb +88 -0
- data/spec/io/harwell_boeing_spec.rb +98 -0
- data/spec/io/test.rua +9 -0
- data/spec/io_spec.rb +159 -0
- data/spec/lapack_core_spec.rb +482 -0
- data/spec/leakcheck.rb +16 -0
- data/spec/math_spec.rb +1363 -0
- data/spec/nmatrix_yale_resize_test_associations.yaml +2802 -0
- data/spec/nmatrix_yale_spec.rb +286 -0
- data/spec/rspec_monkeys.rb +56 -0
- data/spec/rspec_spec.rb +35 -0
- data/spec/shortcuts_spec.rb +474 -0
- data/spec/slice_set_spec.rb +162 -0
- data/spec/spec_helper.rb +172 -0
- data/spec/stat_spec.rb +214 -0
- data/spec/test.pcd +20 -0
- data/spec/utm5940.mtx +83844 -0
- metadata +295 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/////////////////////////////////////////////////////////////////////
|
|
2
|
+
// = NMatrix
|
|
3
|
+
//
|
|
4
|
+
// A linear algebra library for scientific computation in Ruby.
|
|
5
|
+
// NMatrix is part of SciRuby.
|
|
6
|
+
//
|
|
7
|
+
// NMatrix was originally inspired by and derived from NArray, by
|
|
8
|
+
// Masahiro Tanaka: http://narray.rubyforge.org
|
|
9
|
+
//
|
|
10
|
+
// == Copyright Information
|
|
11
|
+
//
|
|
12
|
+
// SciRuby is Copyright (c) 2010 - 2014, Ruby Science Foundation
|
|
13
|
+
// NMatrix is Copyright (c) 2012 - 2014, John Woods and the Ruby Science Foundation
|
|
14
|
+
//
|
|
15
|
+
// Please see LICENSE.txt for additional copyright notices.
|
|
16
|
+
//
|
|
17
|
+
// == Contributing
|
|
18
|
+
//
|
|
19
|
+
// By contributing source code to SciRuby, you agree to be bound by
|
|
20
|
+
// our Contributor Agreement:
|
|
21
|
+
//
|
|
22
|
+
// * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
|
|
23
|
+
//
|
|
24
|
+
// == list.h
|
|
25
|
+
//
|
|
26
|
+
// List-of-lists n-dimensional matrix storage. Uses singly-linked
|
|
27
|
+
// lists.
|
|
28
|
+
|
|
29
|
+
#ifndef LIST_H
|
|
30
|
+
#define LIST_H
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* Standard Includes
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
#include <ruby.h>
|
|
37
|
+
#include <cstdlib>
|
|
38
|
+
#include <list>
|
|
39
|
+
/*
|
|
40
|
+
* Project Includes
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
#include "types.h"
|
|
44
|
+
#include "data/data.h"
|
|
45
|
+
#include "../common.h"
|
|
46
|
+
#include "util/sl_list.h"
|
|
47
|
+
#include "nmatrix.h"
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Macros
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* Types
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Data
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
extern "C" {
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Functions
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
////////////////
|
|
70
|
+
// Lifecycle //
|
|
71
|
+
///////////////
|
|
72
|
+
|
|
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*);
|
|
77
|
+
void nm_list_storage_register(const STORAGE* s);
|
|
78
|
+
void nm_list_storage_unregister(const STORAGE* s);
|
|
79
|
+
void nm_list_storage_register_list(const LIST* l, size_t recursions);
|
|
80
|
+
void nm_list_storage_unregister_list(const LIST* l, size_t recursions);
|
|
81
|
+
void nm_list_storage_register_node(const NODE* n);
|
|
82
|
+
void nm_list_storage_unregister_node(const NODE* n);
|
|
83
|
+
void nm_list_storage_completely_unregister_node(const NODE* curr);
|
|
84
|
+
///////////////
|
|
85
|
+
// Accessors //
|
|
86
|
+
///////////////
|
|
87
|
+
|
|
88
|
+
VALUE nm_list_each_with_indices(VALUE nmatrix, bool stored);
|
|
89
|
+
void* nm_list_storage_ref(const STORAGE* s, SLICE* slice);
|
|
90
|
+
void* nm_list_storage_get(const STORAGE* s, SLICE* slice);
|
|
91
|
+
NODE* nm_list_storage_insert(STORAGE* s, SLICE* slice, void* val);
|
|
92
|
+
void nm_list_storage_set(VALUE left, SLICE* slice, VALUE right);
|
|
93
|
+
void nm_list_storage_remove(STORAGE* s, SLICE* slice);
|
|
94
|
+
|
|
95
|
+
///////////
|
|
96
|
+
// Tests //
|
|
97
|
+
///////////
|
|
98
|
+
|
|
99
|
+
bool nm_list_storage_eqeq(const STORAGE* left, const STORAGE* right);
|
|
100
|
+
|
|
101
|
+
//////////
|
|
102
|
+
// Math //
|
|
103
|
+
//////////
|
|
104
|
+
|
|
105
|
+
STORAGE* nm_list_storage_matrix_multiply(const STORAGE_PAIR& casted_storage, size_t* resulting_shape, bool vector);
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
/////////////
|
|
109
|
+
// Utility //
|
|
110
|
+
/////////////
|
|
111
|
+
|
|
112
|
+
size_t nm_list_storage_count_elements_r(const LIST* l, size_t recursions);
|
|
113
|
+
size_t nm_list_storage_count_nd_elements(const LIST_STORAGE* s);
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
* Count non-zero elements. See also count_list_storage_nd_elements.
|
|
117
|
+
*/
|
|
118
|
+
inline size_t nm_list_storage_count_elements(const LIST_STORAGE* s) {
|
|
119
|
+
return nm_list_storage_count_elements_r(s->rows, s->dim - 1);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/////////////////////////
|
|
123
|
+
// Copying and Casting //
|
|
124
|
+
/////////////////////////
|
|
125
|
+
|
|
126
|
+
LIST_STORAGE* nm_list_storage_copy(const LIST_STORAGE* rhs);
|
|
127
|
+
STORAGE* nm_list_storage_copy_transposed(const STORAGE* rhs_base);
|
|
128
|
+
STORAGE* nm_list_storage_cast_copy(const STORAGE* rhs, nm::dtype_t new_dtype, void*);
|
|
129
|
+
VALUE nm_list_storage_to_hash(const LIST_STORAGE* s, const nm::dtype_t dtype);
|
|
130
|
+
|
|
131
|
+
// Exposed functions
|
|
132
|
+
VALUE nm_to_hash(VALUE self);
|
|
133
|
+
VALUE nm_list_map_merged_stored(VALUE left, VALUE right, VALUE init);
|
|
134
|
+
VALUE nm_list_map_stored(VALUE left, VALUE init);
|
|
135
|
+
VALUE nm_list_default_value(VALUE self);
|
|
136
|
+
} // end of extern "C" block
|
|
137
|
+
|
|
138
|
+
#endif // LIST_H
|