nmatrix 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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/.gitignore
CHANGED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
NMatrix is part of SciRuby, a collaborative effort to bring scientific computation to Ruby. If you want to help, please do so!
|
2
|
+
|
3
|
+
This guide covers ways in which you can contribute to the development of SciRuby and, more specifically, NMatrix.
|
4
|
+
|
5
|
+
## How to help
|
6
|
+
|
7
|
+
There are various ways to help NMatrix: bug reports, coding and documentation. All of them are important.
|
8
|
+
|
9
|
+
First, you can help implement new features or bug fixes. To do that, visit our [roadmap](https://github.com/SciRuby/nmatrix/wiki/Roadmap) or our [issue tracker][2]. If you find something that you can tackle, post it in the issue or on our [mailing list][1].
|
10
|
+
|
11
|
+
You need to send tests together with your code. No exceptions. You can ask what's our opinion, but we won't accept patches without a good spec coverage.
|
12
|
+
|
13
|
+
We use RSpec for testing. If you aren't familiar with it, there's a good [guide to better specs with RSpec](http://betterspecs.org/) that shows a bit of the syntax and how to use it properly. However, the best resource is probably the specs that already exist - so just read them.
|
14
|
+
|
15
|
+
And don't forget to write documentation. It's necessary to allow others to know what's available in the library. There's a section on it later in this guide. Ah, we use RDoc.
|
16
|
+
|
17
|
+
We only accept bug reports and pull requests in GitHub. You'll need to create a new (free) account if you don't have one already. To learn how to create a pull request, please see the [this guide on collaborating](https://help.github.com/categories/63/articles).
|
18
|
+
|
19
|
+
If you have a question about how to use NMatrix or SciRuby in general or a feature/change in mind, please ask the [sciruby-dev mailing list][1].
|
20
|
+
|
21
|
+
Thanks!
|
22
|
+
|
23
|
+
## Coding
|
24
|
+
|
25
|
+
To start helping with the code, you need to have all the dependencies in place:
|
26
|
+
|
27
|
+
- ATLAS and LAPACK
|
28
|
+
- GCC 4.3+
|
29
|
+
- git
|
30
|
+
- Ruby 1.9+
|
31
|
+
- `bundler` gem
|
32
|
+
|
33
|
+
Now, you need to clone the git repository:
|
34
|
+
|
35
|
+
git clone git://github.com/SciRuby/nmatrix.git
|
36
|
+
cd nmatrix
|
37
|
+
bundle install
|
38
|
+
rake compile
|
39
|
+
rake spec
|
40
|
+
|
41
|
+
This will install all dependencies, compile the extension and run the specs.
|
42
|
+
|
43
|
+
As of now (12/31/2012), there should be 25 specs failing, in elementwise\_spec, lapack\_spec and math\_spec. If you see more than 25 or from different specs, please report on the [mailing list][1] or on the [issue tracker][2].
|
44
|
+
|
45
|
+
If everything's fine until now, you can create a new branch to work on your feature:
|
46
|
+
|
47
|
+
git branch new-feature
|
48
|
+
git checkout new-feature
|
49
|
+
|
50
|
+
Before commiting any code, please read our
|
51
|
+
[Contributor Agreement](http://github.com/SciRuby/sciruby/wiki/Contributor-Agreement).
|
52
|
+
|
53
|
+
## Documentation
|
54
|
+
|
55
|
+
There are two ways in which NMatrix is being documented: guides and comments, which are converted with RDoc into the documentation seen in [sciruby.com](http://sciruby.com).
|
56
|
+
|
57
|
+
If you want to write a guide on how to use NMatrix to solve some problem or simply showing how to use one of its features, write it as a wiki page and send an e-mail on the [mailing list][1]. We're working to improve this process.
|
58
|
+
|
59
|
+
If you aren't familiar with RDoc syntax, [this is the official documentation](http://docs.seattlerb.org/rdoc/RDoc/Markup.html).
|
60
|
+
|
61
|
+
## Conclusion
|
62
|
+
|
63
|
+
This guide was heavily based on the [Contributing to Ruby on Rails guide](http://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html).
|
64
|
+
|
65
|
+
[1]: https://groups.google.com/forum/?fromgroups#!forum/sciruby-dev
|
66
|
+
[2]: https://github.com/sciruby/nmatrix/issues?sort=created&state=open
|
data/Gemfile
CHANGED
data/History.txt
CHANGED
@@ -10,19 +10,23 @@
|
|
10
10
|
|
11
11
|
* Second alpha release
|
12
12
|
|
13
|
-
* Rewrote NMatrix in C++0x and C++11 using templates, namespaces;
|
13
|
+
* Rewrote NMatrix in C++0x and C++11 using templates, namespaces;
|
14
|
+
removed Ruby generators and CAST parser
|
14
15
|
|
15
16
|
* Added preliminary C API
|
16
17
|
|
17
|
-
* Slicing and referencing support for dense and list matrices (by
|
18
|
+
* Slicing and referencing support for dense and list matrices (by
|
19
|
+
@flipback)
|
18
20
|
|
19
21
|
* BLAS level-3 xTRSM algorithm added for rationals and BLAS types
|
20
22
|
|
21
|
-
* LAPACK support added, including partially working xGETRF
|
23
|
+
* LAPACK support added, including partially working xGETRF
|
24
|
+
subroutine
|
22
25
|
|
23
26
|
* Element-wise comparisons now return byte-matrices
|
24
27
|
|
25
|
-
* Element-wise operations on list matrices may alter the default
|
28
|
+
* Element-wise operations on list matrices may alter the default
|
29
|
+
value of the return matrix
|
26
30
|
|
27
31
|
* Element-wise division behaves like Ruby division
|
28
32
|
|
@@ -30,7 +34,8 @@
|
|
30
34
|
|
31
35
|
* clang support
|
32
36
|
|
33
|
-
* `==` operator now used for matrix equality, `=~` and `!~` for
|
37
|
+
* `==` operator now used for matrix equality, `=~` and `!~` for
|
38
|
+
element-wise comparisons
|
34
39
|
|
35
40
|
* Dense `each` returns an Enumerator when called without a block
|
36
41
|
|
@@ -48,20 +53,73 @@
|
|
48
53
|
|
49
54
|
* Shortcuts for matrix creation (by @agarie)
|
50
55
|
|
51
|
-
* Access to most ATLAS-implemented LAPACK functions for those
|
56
|
+
* Access to most ATLAS-implemented LAPACK functions for those
|
57
|
+
with ATLAS' CLAPACK interface: xGETRF, xGETRI, xGETRS, xGESV,
|
58
|
+
xPOTRF, xPOTRI, xPOTRS, xPOSV, xLASWP, xSCAL, xLAUUM
|
52
59
|
|
53
|
-
* Access to additional ATLAS-implemented BLAS functions: xTRMM,
|
60
|
+
* Access to additional ATLAS-implemented BLAS functions: xTRMM,
|
61
|
+
xSYRK, xHERK, xROT, xROTG
|
54
62
|
|
55
|
-
* Non-ATLAS versions of CLAPACK functions: xLASWP, xSCAL, xLAUUM,
|
63
|
+
* Non-ATLAS versions of CLAPACK functions: xLASWP, xSCAL, xLAUUM,
|
64
|
+
xROT
|
56
65
|
|
57
66
|
* Matrix inversion (LU and Cholesky; requires CLAPACK)
|
58
67
|
|
59
68
|
* LU factoring with and without CLAPACK
|
60
69
|
|
61
|
-
* Native matrix I/O for dense (supporting upper, lower, hermitian,
|
70
|
+
* Native matrix I/O for dense (supporting upper, lower, hermitian,
|
71
|
+
skew, symmetric, and general) and yale (general only); excludes
|
72
|
+
Ruby objects currently
|
62
73
|
|
63
74
|
* 2 bug fixes:
|
64
75
|
|
65
76
|
* Yale-to-list casting
|
66
77
|
|
67
|
-
* Now requires packable-1.3.5 or higher, fixing a problem with MATLAB
|
78
|
+
* Now requires packable-1.3.5 or higher, fixing a problem with MATLAB
|
79
|
+
.mat v5 file I/O (specific to doubles)
|
80
|
+
|
81
|
+
=== 0.0.4 / 2013-??-??
|
82
|
+
|
83
|
+
* 3 major enhancements
|
84
|
+
|
85
|
+
* Added a more user-friendly interface for cblas_rot in the form of
|
86
|
+
NMatrix::BLAS::rot
|
87
|
+
|
88
|
+
* Added to_hash for Yale matrices
|
89
|
+
|
90
|
+
* Improved source code documentation (by @agarie)
|
91
|
+
|
92
|
+
* 4 minor enhancements
|
93
|
+
|
94
|
+
* Spec clean-up (by @masaomi)
|
95
|
+
|
96
|
+
* Made it possible to request a different itype internally for Yale
|
97
|
+
matrices
|
98
|
+
|
99
|
+
* Improved space usage of Yale slice-by-copying, which was requesting
|
100
|
+
more space than needed
|
101
|
+
|
102
|
+
* Improved compile-time Mac OS X and Ubuntu library searching
|
103
|
+
|
104
|
+
* 8 bug fixes:
|
105
|
+
|
106
|
+
* NMatrix::BLAS::gemv segfaults
|
107
|
+
|
108
|
+
* Fixed Yale matrix slice-by-copy write error where default itypes
|
109
|
+
(which are based on shape) differ, and a separate problem where
|
110
|
+
incorrect IJA and A entries were written.
|
111
|
+
|
112
|
+
* NVector-scalar operations and NVector-NVector element-wise options
|
113
|
+
now return an NVector instead of an NMatrix
|
114
|
+
|
115
|
+
* Addressed problems with segmentation faults during iteration (by
|
116
|
+
@cjfuller)
|
117
|
+
|
118
|
+
* Addressed Ubuntu/Debian installation problems (incompatibility with
|
119
|
+
apt-supplied atlas)
|
120
|
+
|
121
|
+
* Fixed transpose behavior following slice-by-reference (by @cjfuller)
|
122
|
+
|
123
|
+
* Fixed gem install command in Rakefile (by @jpmckinney)
|
124
|
+
|
125
|
+
* Fixed Spanish language compile issue (by @imcsk8 and @agarie)
|
data/LICENSE.txt
CHANGED
@@ -7,9 +7,9 @@ You *must* read the Contributor Agreement before contributing code to the SciRub
|
|
7
7
|
|
8
8
|
* http://github.com/sciruby/sciruby/wiki/Contributor-Agreement
|
9
9
|
|
10
|
-
|
10
|
+
-----
|
11
11
|
|
12
|
-
Copyright (c) 2010 -
|
12
|
+
Copyright (c) 2010 - 2013, Ruby Science Foundation
|
13
13
|
All rights reserved.
|
14
14
|
|
15
15
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,33 +1,93 @@
|
|
1
1
|
= NMatrix
|
2
2
|
|
3
|
-
|
3
|
+
Fast Numerical Linear Algebra Library for Ruby
|
4
4
|
|
5
|
-
* {
|
6
|
-
* {
|
5
|
+
* {sciruby.com}[http://sciruby.com]
|
6
|
+
* {Google+}[https://plus.google.com/109304769076178160953/posts]
|
7
7
|
* {Installation guide}[http://sciruby.com/docs#installation]
|
8
8
|
|
9
9
|
== Description
|
10
10
|
|
11
|
-
NMatrix is
|
12
|
-
|
11
|
+
NMatrix is a fast numerical linear algebra library for Ruby, with dense and sparse matrices, written mostly in C and
|
12
|
+
C++. It is part of the SciRuby project.
|
13
13
|
|
14
|
-
NMatrix was inspired by
|
14
|
+
NMatrix was inspired by {NArray}[http://narray.rubyforge.org], by Masahiro Tanaka.
|
15
15
|
|
16
|
-
|
16
|
+
== Installation
|
17
17
|
|
18
|
-
|
18
|
+
To install the latest stable version:
|
19
19
|
|
20
|
-
|
21
|
-
mission-critical code, such as for driving a car or flying a space shuttle, you may wish to choose other software (for
|
22
|
-
now).
|
20
|
+
gem install nmatrix
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
However, you will need to install {ATLAS}[http://math-atlas.sourceforge.net/] with CBLAS (C interface
|
23
|
+
to {BLAS}[http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms]) first. Those directions can be
|
24
|
+
found {here}[https://github.com/SciRuby/nmatrix/wiki/Installation]. The requirements for NMatrix are:
|
25
|
+
|
26
|
+
* ATLAS
|
27
|
+
* LAPACK, probably
|
28
|
+
* a version of GCC or clang which supports C++0x or C++11
|
29
|
+
* Ruby 1.9+
|
30
|
+
* {packable}[http://github.com/marcandre/packable] 1.3.5 (used for I/O)
|
31
|
+
|
32
|
+
If you want to obtain the latest (development)code, you should do:
|
33
|
+
|
34
|
+
git clone https://github.com/SciRuby/nmatrix.git
|
35
|
+
cd nmatrix/
|
36
|
+
rake compile
|
37
|
+
rake repackage
|
38
|
+
gem install pkg/nmatrix-0.0.5.gem
|
39
|
+
|
40
|
+
If you get errors about clapack.h or cblas.h, determine where your ATLAS headers are using:
|
41
|
+
|
42
|
+
locate clapack.h
|
43
|
+
|
44
|
+
If you're a Mac user, we recommend you search for cblas.h instead.
|
45
|
+
|
46
|
+
Then, tell your system:
|
47
|
+
|
48
|
+
export C_INCLUDE_PATH=/usr/local/atlas/include
|
49
|
+
export CPLUS_INCLUDE_PATH=/usr/local/atlas/include
|
50
|
+
|
51
|
+
Finally, try compiling again.
|
52
|
+
|
53
|
+
== Documentation
|
54
|
+
|
55
|
+
Carlos Agarie (@agarie) is currently working to improve the documentation. The best way to get help is by
|
56
|
+
posting {issues}[https://github.com/SciRuby/nmatrix/issues] or sending e-mails to
|
57
|
+
our {mailing list}[https://groups.google.com/forum/?fromgroups#!forum/sciruby-dev]. You may also email @agarie, or look
|
58
|
+
for `agarie` on #sciruby at chat.freenode.net if you want to ask questions or offer suggestions.
|
59
|
+
|
60
|
+
You can find the complete API documentation {on our website}[http://sciruby.com/nmatrix/docs/].
|
61
|
+
|
62
|
+
== EXAMPLES
|
63
|
+
|
64
|
+
Create a new NMatrix from a ruby array:
|
65
|
+
|
66
|
+
>> NMatrix.new([2, 3], [0, 1, 2, 3, 4, 5], :int64).pp
|
67
|
+
[0, 1, 2]
|
68
|
+
[3, 4, 5]
|
69
|
+
=> nil
|
70
|
+
|
71
|
+
Create a new NMatrix using the +N+ shortcut:
|
72
|
+
|
73
|
+
>> m = N[ [2, 3, 4], [7, 8, 9] ]
|
74
|
+
=> #<NMatrix:0x007f8e121b6cf8shape:[2,3] dtype:int32 stype:dense>
|
75
|
+
>> m.pp
|
76
|
+
[2, 3, 4]
|
77
|
+
[7, 8, 9]
|
78
|
+
|
79
|
+
If you want to learn more about how to create a
|
80
|
+
matrix, {read the guide in our wiki}[https://github.com/SciRuby/nmatrix/wiki/How-to-create-a-NMatrix].
|
81
|
+
|
82
|
+
Again, you can find the complete API documentation {on our website}[http://sciruby.com/nmatrix/docs/].
|
83
|
+
|
84
|
+
== Developers
|
85
|
+
|
86
|
+
Read the instructions in +CONTRIBUTING.md+ if you want to help NMatrix.
|
27
87
|
|
28
88
|
== Features
|
29
89
|
|
30
|
-
The following features exist in the current version of NMatrix (0.0.
|
90
|
+
The following features exist in the current version of NMatrix (0.0.4):
|
31
91
|
|
32
92
|
* Matrix storage containers: dense, yale, list (more to come)
|
33
93
|
* Data types: uint8, int8, int16, int32, int64, float32, float64, complex64, complex128, rational64, rational128
|
@@ -56,12 +116,13 @@ The following features exist in the current version of NMatrix (0.0.2):
|
|
56
116
|
* LU decomposition
|
57
117
|
* Matrix inversions (requires LAPACK; BLAS dtypes only)
|
58
118
|
* Determinant calculation for BLAS dtypes
|
119
|
+
* Ruby/GSL interoperability (requires [SciRuby's fork of rb-gsl](http://github.com/SciRuby/rb-gsl))
|
59
120
|
|
60
121
|
=== Planned Features (Short-to-Medium Term)
|
61
122
|
|
62
123
|
These are features planned for NMatrix 0.1.0, our first beta.
|
63
124
|
|
64
|
-
* calculation of determinant (LAPACK-free), trace, and eigenvalues (characteristic polynomial)
|
125
|
+
* calculation of determinant (LAPACK-free), trace, and eigenvalues (characteristic polynomial)
|
65
126
|
* exponentials and square roots
|
66
127
|
* matrix inversions (LAPACK-free)
|
67
128
|
* matrix decomposition/factorization
|
@@ -73,70 +134,30 @@ These are features planned for NMatrix 0.1.0, our first beta.
|
|
73
134
|
* operation scheduling
|
74
135
|
* parallelization of some types of operations
|
75
136
|
* optimization of non-BLAS data types on BLAS-like operations (e.g., matrix multiplication for rational numbers)
|
76
|
-
* Ruby/GSL interoperability
|
77
|
-
|
78
|
-
== SYNOPSIS:
|
79
137
|
|
80
|
-
|
81
|
-
|
82
|
-
gem install nmatrix
|
138
|
+
=== Warning
|
83
139
|
|
84
|
-
|
140
|
+
Please be aware that SciRuby and NMatrix are *alpha* status. If you're thinking of using SciRuby/NMatrix to write
|
141
|
+
mission-critical code, such as for driving a car or flying a space shuttle, you may wish to choose other software for
|
142
|
+
now.
|
85
143
|
|
86
|
-
You
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
rake repackage
|
92
|
-
gem install pkg/nmatrix-0.0.4.gem
|
93
|
-
|
94
|
-
If you get errors about clapack.h or cblas.h, figure out where your ATLAS headers are using:
|
95
|
-
|
96
|
-
locate clapack.h # If you're a Mac user, we recommend you search for cblas.h instead.
|
97
|
-
|
98
|
-
Then, tell your system:
|
99
|
-
|
100
|
-
export C_INCLUDE_PATH=/usr/local/atlas/include
|
101
|
-
export CPLUS_INCLUDE_PATH=/usr/local/atlas/include
|
102
|
-
|
103
|
-
Finally, try compiling again.
|
104
|
-
|
105
|
-
== REQUIREMENTS:
|
106
|
-
|
107
|
-
* ATLAS
|
108
|
-
* LAPACK, probably
|
109
|
-
* GCC 4.3
|
110
|
-
* Ruby 1.9
|
111
|
-
* {packable}[http://github.com/marcandre/packable] 1.3.5 (used for I/O)
|
112
|
-
|
113
|
-
== INSTALLATION:
|
114
|
-
|
115
|
-
See Synopsis (above) for now. Gem coming later.
|
116
|
-
|
117
|
-
More detailed installation instructions are available at {here}[http://sciruby.com/docs#installation]
|
118
|
-
|
119
|
-
== DEVELOPERS:
|
120
|
-
|
121
|
-
Code in the master branch of SciRuby/nmatrix on github should compile and link, but is not necessarily stable. You might
|
122
|
-
also check out the dev branch if master hasn't been updated in some time.
|
123
|
-
|
124
|
-
git clone https://github.com/mohawkjohn/nmatrix.git
|
125
|
-
|
126
|
-
Before commiting any code, you *MUST* read our
|
127
|
-
{Contributor Agreement}[http://github.com/SciRuby/sciruby/wiki/Contributor-Agreement].
|
144
|
+
You should also be aware that NMatrix and NArray are incompatible with one another; you should not try to require both
|
145
|
+
at the same time. Unfortunately, that causes problems with Ruby/GSL, which currently depends upon NArray. As such, we
|
146
|
+
are working on a {patch for Ruby/GSL}[https://github.com/SciRuby/rb-gsl]. You can find the most recent version in
|
147
|
+
{the work branch of Masaomi's fork}[https://github.com/masaomi/rb-gsl/tree/work] (not currently compiling as of this
|
148
|
+
writing).
|
128
149
|
|
129
|
-
==
|
150
|
+
== License
|
130
151
|
|
131
|
-
Copyright (c)
|
152
|
+
Copyright (c) 2010--13, The Ruby Science Foundation.
|
132
153
|
|
133
154
|
All rights reserved.
|
134
155
|
|
135
156
|
NMatrix, along with SciRuby, is licensed under the BSD 2-clause license. See
|
136
157
|
{LICENSE.txt}[https://github.com/SciRuby/sciruby/wiki/License] for details.
|
137
158
|
|
138
|
-
==
|
159
|
+
== Donations
|
139
160
|
|
140
161
|
Support a SciRuby Fellow:
|
141
162
|
|
142
|
-
{<img src=
|
163
|
+
{<img src=http://pledgie.com/campaigns/15783.png?skin_name=chrome>}[http://www.pledgie.com/campaigns/15783]
|
data/Rakefile
CHANGED
@@ -26,7 +26,7 @@ Rake::GemPackageTask.new(gemspec).define
|
|
26
26
|
|
27
27
|
desc "install the gem locally"
|
28
28
|
task :install => [:package] do
|
29
|
-
sh %{gem install pkg/nmatrix-#{NMatrix::VERSION}}
|
29
|
+
sh %{gem install pkg/nmatrix-#{NMatrix::VERSION}.gem}
|
30
30
|
end
|
31
31
|
|
32
32
|
require 'rspec/core/rake_task'
|
@@ -43,7 +43,8 @@ VALGRIND_OPTIONS = [
|
|
43
43
|
"--num-callers=50",
|
44
44
|
"--error-limit=no",
|
45
45
|
"--partial-loads-ok=yes",
|
46
|
-
"--undef-value-errors=no"
|
46
|
+
"--undef-value-errors=no" #,
|
47
|
+
#"--dsymutil=yes"
|
47
48
|
]
|
48
49
|
VALGRIND_MEMORYFILL_OPTIONS = [
|
49
50
|
"--freelist-vol=100000000",
|
@@ -104,17 +105,25 @@ namespace :spec do
|
|
104
105
|
|
105
106
|
desc "Run specs under GDB."
|
106
107
|
task :gdb => [ :compile ] do |task|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
108
|
+
cmd = [ 'gdb' ] + GDB_OPTIONS
|
109
|
+
cmd += [ '--args' ]
|
110
|
+
cmd += RSPEC_CMD
|
111
|
+
run( *cmd )
|
112
|
+
end
|
113
|
+
|
114
|
+
desc "Run specs under cgdb."
|
115
|
+
task :cgdb => [ :compile ] do |task|
|
116
|
+
cmd = [ 'cgdb' ] + GDB_OPTIONS
|
117
|
+
cmd += [ '--args' ]
|
118
|
+
cmd += RSPEC_CMD
|
119
|
+
run( *cmd )
|
111
120
|
end
|
112
121
|
|
113
122
|
desc "Run specs under Valgrind."
|
114
123
|
task :valgrind => [ :compile ] do |task|
|
115
|
-
|
116
|
-
|
117
|
-
|
124
|
+
cmd = [ 'valgrind' ] + VALGRIND_OPTIONS
|
125
|
+
cmd += RSPEC_CMD
|
126
|
+
run( *cmd )
|
118
127
|
end
|
119
128
|
end
|
120
129
|
|