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,129 @@
|
|
|
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
|
+
// == dense.h
|
|
25
|
+
//
|
|
26
|
+
// Dense n-dimensional matrix storage.
|
|
27
|
+
|
|
28
|
+
#ifndef DENSE_H
|
|
29
|
+
#define DENSE_H
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Standard Includes
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
#include <ruby.h>
|
|
36
|
+
#include <cstdlib>
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
* Project Includes
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#include "types.h"
|
|
43
|
+
//#include "util/math.h"
|
|
44
|
+
|
|
45
|
+
#include "data/data.h"
|
|
46
|
+
|
|
47
|
+
#include "../common.h"
|
|
48
|
+
|
|
49
|
+
#include "nmatrix.h"
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* Macros
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Types
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Data
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
extern "C" {
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Functions
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
///////////////
|
|
70
|
+
// Lifecycle //
|
|
71
|
+
///////////////
|
|
72
|
+
|
|
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*);
|
|
77
|
+
void nm_dense_storage_register(const STORAGE* s);
|
|
78
|
+
void nm_dense_storage_unregister(const STORAGE* s);
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
///////////////
|
|
82
|
+
// Accessors //
|
|
83
|
+
///////////////
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
VALUE nm_dense_map_pair(VALUE self, VALUE right);
|
|
87
|
+
VALUE nm_dense_map(VALUE self);
|
|
88
|
+
VALUE nm_dense_each(VALUE nmatrix);
|
|
89
|
+
VALUE nm_dense_each_with_indices(VALUE nmatrix);
|
|
90
|
+
void* nm_dense_storage_get(const STORAGE* s, SLICE* slice);
|
|
91
|
+
void* nm_dense_storage_ref(const STORAGE* s, SLICE* slice);
|
|
92
|
+
void nm_dense_storage_set(VALUE left, SLICE* slice, VALUE right);
|
|
93
|
+
|
|
94
|
+
///////////
|
|
95
|
+
// Tests //
|
|
96
|
+
///////////
|
|
97
|
+
|
|
98
|
+
bool nm_dense_storage_eqeq(const STORAGE* left, const STORAGE* right);
|
|
99
|
+
bool nm_dense_storage_is_symmetric(const DENSE_STORAGE* mat, int lda);
|
|
100
|
+
bool nm_dense_storage_is_hermitian(const DENSE_STORAGE* mat, int lda);
|
|
101
|
+
|
|
102
|
+
//////////
|
|
103
|
+
// Math //
|
|
104
|
+
//////////
|
|
105
|
+
|
|
106
|
+
STORAGE* nm_dense_storage_matrix_multiply(const STORAGE_PAIR& casted_storage, size_t* resulting_shape, bool vector);
|
|
107
|
+
|
|
108
|
+
/////////////
|
|
109
|
+
// Utility //
|
|
110
|
+
/////////////
|
|
111
|
+
|
|
112
|
+
size_t nm_dense_storage_pos(const DENSE_STORAGE* s, const size_t* coords);
|
|
113
|
+
void nm_dense_storage_coords(const DENSE_STORAGE* s, const size_t slice_pos, size_t* coords_out);
|
|
114
|
+
|
|
115
|
+
/////////////////////////
|
|
116
|
+
// Copying and Casting //
|
|
117
|
+
/////////////////////////
|
|
118
|
+
|
|
119
|
+
DENSE_STORAGE* nm_dense_storage_copy(const DENSE_STORAGE* rhs);
|
|
120
|
+
STORAGE* nm_dense_storage_copy_transposed(const STORAGE* rhs_base);
|
|
121
|
+
STORAGE* nm_dense_storage_cast_copy(const STORAGE* rhs, nm::dtype_t new_dtype, void*);
|
|
122
|
+
|
|
123
|
+
} // end of extern "C" block
|
|
124
|
+
|
|
125
|
+
namespace nm {
|
|
126
|
+
std::pair<NMATRIX*,bool> interpret_arg_as_dense_nmatrix(VALUE right, nm::dtype_t dtype);
|
|
127
|
+
} // end of namespace nm
|
|
128
|
+
|
|
129
|
+
#endif // DENSE_H
|