numo-narray 0.9.0.1-x86-mingw32 → 0.9.0.3-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -7
- data/Rakefile +21 -6
- data/ext/numo/narray/array.c +3 -3
- data/ext/numo/narray/data.c +102 -81
- data/ext/numo/narray/depend.erb +9 -7
- data/ext/numo/narray/extconf.rb +5 -24
- data/ext/numo/narray/gen/cogen.rb +19 -4
- data/ext/numo/narray/gen/def/bit.rb +31 -0
- data/ext/numo/narray/gen/def/robject.rb +1 -1
- data/ext/numo/narray/gen/dtype.erb.c +11 -257
- data/ext/numo/narray/gen/spec.rb +294 -0
- data/ext/numo/narray/gen/tmpl/aset.c +1 -1
- data/ext/numo/narray/gen/tmpl/each_with_index.c +1 -1
- data/ext/numo/narray/gen/tmpl/eye.c +5 -5
- data/ext/numo/narray/gen/tmpl/logseq.c +82 -0
- data/ext/numo/narray/gen/tmpl/map_with_index.c +1 -1
- data/ext/numo/narray/gen/tmpl/rand.c +126 -5
- data/ext/numo/narray/gen/tmpl/seq.c +43 -12
- data/ext/numo/narray/gen/tmpl/store_bit.c +55 -0
- data/ext/numo/narray/gen/tmpl_bit/allocate.c +28 -0
- data/ext/numo/narray/gen/tmpl_bit/aref.c +53 -0
- data/ext/numo/narray/gen/tmpl_bit/aset.c +63 -0
- data/ext/numo/narray/gen/{tmpl/bit_binary.c → tmpl_bit/binary.c} +1 -1
- data/ext/numo/narray/gen/{tmpl → tmpl_bit}/bit_count.c +5 -3
- data/ext/numo/narray/gen/tmpl_bit/bit_reduce.c +128 -0
- data/ext/numo/narray/gen/tmpl_bit/cast.c +37 -0
- data/ext/numo/narray/gen/tmpl_bit/cast_array.c +80 -0
- data/ext/numo/narray/gen/tmpl_bit/cast_numeric.c +22 -0
- data/ext/numo/narray/gen/tmpl_bit/coerce_cast.c +8 -0
- data/ext/numo/narray/gen/tmpl_bit/each.c +44 -0
- data/ext/numo/narray/gen/tmpl_bit/each_with_index.c +66 -0
- data/ext/numo/narray/gen/tmpl_bit/extract.c +25 -0
- data/ext/numo/narray/gen/tmpl_bit/fill.c +65 -0
- data/ext/numo/narray/gen/tmpl_bit/format.c +61 -0
- data/ext/numo/narray/gen/tmpl_bit/format_to_a.c +48 -0
- data/ext/numo/narray/gen/tmpl_bit/inspect.c +18 -0
- data/ext/numo/narray/gen/tmpl_bit/map_with_index.c +94 -0
- data/ext/numo/narray/gen/tmpl_bit/mask.c +117 -0
- data/ext/numo/narray/gen/tmpl_bit/none_p.c +14 -0
- data/ext/numo/narray/gen/tmpl_bit/store.c +32 -0
- data/ext/numo/narray/gen/tmpl_bit/store_array.c +5 -0
- data/ext/numo/narray/gen/tmpl_bit/store_bit.c +66 -0
- data/ext/numo/narray/gen/tmpl_bit/store_from.c +56 -0
- data/ext/numo/narray/gen/tmpl_bit/store_numeric.c +22 -0
- data/ext/numo/narray/gen/tmpl_bit/to_a.c +43 -0
- data/ext/numo/narray/gen/{tmpl/bit_unary.c → tmpl_bit/unary.c} +1 -1
- data/ext/numo/narray/gen/tmpl_bit/where.c +102 -0
- data/ext/numo/narray/gen/tmpl_bit/where2.c +37 -0
- data/ext/numo/narray/index.c +9 -7
- data/ext/numo/narray/math.c +6 -1
- data/ext/numo/narray/narray.c +307 -103
- data/ext/numo/narray/ndloop.c +21 -36
- data/ext/numo/narray/numo/intern.h +3 -3
- data/ext/numo/narray/numo/narray.h +5 -41
- data/ext/numo/narray/numo/template.h +2 -2
- data/ext/numo/narray/numo/types/bit.h +27 -13
- data/ext/numo/narray/numo/types/complex.h +2 -2
- data/ext/numo/narray/numo/types/complex_macro.h +19 -7
- data/ext/numo/narray/numo/types/dcomplex.h +9 -0
- data/ext/numo/narray/numo/types/dfloat.h +6 -0
- data/ext/numo/narray/numo/types/float_macro.h +9 -2
- data/ext/numo/narray/numo/types/int16.h +0 -1
- data/ext/numo/narray/numo/types/int32.h +0 -1
- data/ext/numo/narray/numo/types/int64.h +0 -1
- data/ext/numo/narray/numo/types/int8.h +0 -1
- data/ext/numo/narray/numo/types/int_macro.h +2 -1
- data/ext/numo/narray/numo/types/robj_macro.h +9 -2
- data/ext/numo/narray/numo/types/robject.h +6 -0
- data/ext/numo/narray/numo/types/scomplex.h +9 -0
- data/ext/numo/narray/numo/types/sfloat.h +6 -0
- data/ext/numo/narray/numo/types/uint16.h +0 -1
- data/ext/numo/narray/numo/types/uint32.h +0 -1
- data/ext/numo/narray/numo/types/uint64.h +0 -1
- data/ext/numo/narray/numo/types/uint8.h +0 -1
- data/ext/numo/narray/numo/types/uint_macro.h +2 -1
- data/ext/numo/narray/numo/types/xint_macro.h +6 -1
- data/ext/numo/narray/rand.c +2 -2
- data/ext/numo/narray/step.c +7 -7
- data/ext/numo/narray/struct.c +11 -12
- data/lib/2.0/numo/narray.so +0 -0
- data/lib/2.1/numo/narray.so +0 -0
- data/lib/2.2/numo/narray.so +0 -0
- data/lib/2.3/numo/narray.so +0 -0
- data/lib/2.4/numo/narray.so +0 -0
- data/lib/erbpp.rb +6 -2
- data/lib/erbpp/line_number.rb +1 -1
- data/lib/erbpp/narray_def.rb +23 -19
- data/numo-narray.gemspec +2 -2
- metadata +45 -10
- data/ext/numo/narray/gen/bit.erb.c +0 -811
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3331384de76daf73952eae370c51f1c6ee498ea9
|
4
|
+
data.tar.gz: dbd02ec55db5363c9a10f2a6e9c42a78ce7419e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52b592fc14e98fe7e7477a33c48f79204a435b8498d12578b9478ee4534f39b06b8bab4feda2a459e89b6a346333bb044cf783fc442886db81ebf89852d49c21
|
7
|
+
data.tar.gz: 717c1955ce5e93295c553b0d84ee5e6aa84622b13e968882113db6d259332f7633726bc4116ab98b6cce77b857fe61009003fd8c2594a86db4a3616b9d37b0a6
|
data/README.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# Numo::NArray - New NArray class library for Ruby/Numo (NUmerical MOdule)
|
2
2
|
|
3
|
+
[![Binder](http://mybinder.org/badge.svg)](http://mybinder.org/repo/ruby-numo/narray)
|
3
4
|
[![Build Status](https://travis-ci.org/ruby-numo/narray.svg?branch=master)](https://travis-ci.org/ruby-numo/narray)
|
4
5
|
|
5
6
|
under development
|
6
7
|
|
7
8
|
## Related Projects
|
8
|
-
* [Numo::Linalg](https://github.com/ruby-numo/linalg)
|
9
|
-
* [Numo::GSL](https://github.com/ruby-numo/gsl)
|
10
|
-
* [Numo::FFTE](https://github.com/ruby-numo/ffte)
|
9
|
+
* [Numo::Linalg](https://github.com/ruby-numo/linalg) - Linear Algebra library with [LAPACK](http://www.netlib.org/lapack/).
|
10
|
+
* [Numo::GSL](https://github.com/ruby-numo/gsl) - Ruby interface for [GSL (GNU Scientific Library)](http://www.gnu.org/software/gsl/).
|
11
|
+
* [Numo::FFTE](https://github.com/ruby-numo/ffte) - Ruby interface for [FFTE (A Fast Fourier Transform library with radix-2,3,5)](http://www.ffte.jp/).
|
12
|
+
* [Numo::Gnuplot](https://github.com/ruby-numo/gnuplot) - Simple and easy-to-use Gnuplot interface.
|
11
13
|
|
12
14
|
## Installation
|
13
15
|
### Ubuntu, Debian
|
@@ -16,7 +18,7 @@ apt install -y git ruby gcc ruby-dev rake make
|
|
16
18
|
git clone git://github.com/ruby-numo/narray
|
17
19
|
cd narray
|
18
20
|
gem build numo-narray.gemspec
|
19
|
-
gem install numo-narray-0.9.0.
|
21
|
+
gem install numo-narray-0.9.0.2.gem
|
20
22
|
```
|
21
23
|
|
22
24
|
## Quick start
|
@@ -40,8 +42,10 @@ An example
|
|
40
42
|
```
|
41
43
|
For more examples, check out this [narray version of 100 numpy exercises](https://github.com/ruby-numo/narray/wiki/100-narray-exercises).
|
42
44
|
|
43
|
-
##
|
45
|
+
## Documentation
|
44
46
|
|
45
|
-
|
47
|
+
All documents are primitive.
|
46
48
|
|
47
|
-
|
49
|
+
* [Numo::NArray API Doc](http://ruby-numo.github.io/narray/narray/frames.html)
|
50
|
+
* [Numo::NArray概要](https://github.com/ruby-numo/narray/wiki/Numo::NArray%E6%A6%82%E8%A6%81) (in Japanese)
|
51
|
+
* [Numo::NArray vs numpy](https://github.com/ruby-numo/narray/wiki/Numo-vs-numpy)
|
data/Rakefile
CHANGED
@@ -1,23 +1,27 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
begin
|
2
3
|
require "rake/extensiontask"
|
3
4
|
require "rake_compiler_dock"
|
4
5
|
require "shellwords"
|
5
6
|
|
6
7
|
spec = Bundler::GemHelper.gemspec
|
7
8
|
|
9
|
+
cross_platforms = ["x86-mingw32", "x64-mingw32"]
|
8
10
|
Rake::ExtensionTask.new("numo/narray", spec) do |ext|
|
9
11
|
ext.cross_compile = true
|
10
|
-
ext.cross_platform =
|
12
|
+
ext.cross_platform = cross_platforms
|
13
|
+
end
|
14
|
+
|
15
|
+
pkg_dir = "pkg"
|
16
|
+
windows_gem_paths = cross_platforms.collect do |platform|
|
17
|
+
File.join(pkg_dir, "#{spec.full_name}-#{platform}.gem")
|
11
18
|
end
|
12
19
|
|
13
20
|
namespace :build do
|
14
|
-
pkg_dir = "pkg"
|
15
21
|
directory pkg_dir
|
16
22
|
|
17
|
-
desc "Build gems for Windows"
|
23
|
+
desc "Build gems for Windows into the pkg directory"
|
18
24
|
task :windows => pkg_dir do
|
19
|
-
ruby_versions = "2.1.6:2.2.2:2.3.0"
|
20
|
-
|
21
25
|
build_dir = "tmp/windows"
|
22
26
|
rm_rf build_dir
|
23
27
|
mkdir_p build_dir
|
@@ -26,7 +30,7 @@ namespace :build do
|
|
26
30
|
["git", "clone", "file://#{Dir.pwd}/.git", build_dir],
|
27
31
|
["cd", build_dir],
|
28
32
|
["bundle"],
|
29
|
-
["rake", "cross", "native", "gem"
|
33
|
+
["rake", "cross", "native", "gem"],
|
30
34
|
]
|
31
35
|
raw_commands = commands.collect do |command|
|
32
36
|
Shellwords.join(command)
|
@@ -39,3 +43,14 @@ namespace :build do
|
|
39
43
|
"#{pkg_dir}/")
|
40
44
|
end
|
41
45
|
end
|
46
|
+
|
47
|
+
namespace :release do
|
48
|
+
task :windows => "build:windows" do
|
49
|
+
windows_gem_paths.each do |path|
|
50
|
+
ruby("-S", "gem", "push", path)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
rescue LoadError
|
56
|
+
end
|
data/ext/numo/narray/array.c
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
array.c
|
3
3
|
Numerical Array Extension for Ruby
|
4
|
-
(C) Copyright 1999-
|
4
|
+
(C) Copyright 1999-2016 by Masahiro TANAKA
|
5
5
|
|
6
6
|
This program is free software.
|
7
7
|
You can distribute/modify this program
|
@@ -268,7 +268,7 @@ na_mdai_result(na_mdai_t *mdai, na_compose_t *nc)
|
|
268
268
|
for (i=0; i<ndim; i++) {
|
269
269
|
shape[i] = mdai->item[i].shape;
|
270
270
|
//printf("shape[%d]=%d\n",i,shape[i]);
|
271
|
-
//rb_ary_push( shape,
|
271
|
+
//rb_ary_push( shape, SIZET2NUM(mdai->item[i].shape) );
|
272
272
|
}
|
273
273
|
|
274
274
|
// DataType
|
@@ -355,7 +355,7 @@ na_s_array_shape(VALUE mod, VALUE ary)
|
|
355
355
|
Data_Get_Struct(vnc, na_compose_t, nc);
|
356
356
|
shape = rb_ary_new2(nc->ndim);
|
357
357
|
for (i=0; i<nc->ndim; i++) {
|
358
|
-
rb_ary_push( shape,
|
358
|
+
rb_ary_push( shape, SIZET2NUM(nc->shape[i]) );
|
359
359
|
}
|
360
360
|
return shape;
|
361
361
|
}
|
data/ext/numo/narray/data.c
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
data.c
|
3
3
|
Numerical Array Extension for Ruby
|
4
|
-
(C) Copyright 1999-
|
4
|
+
(C) Copyright 1999-2016 by Masahiro TANAKA
|
5
5
|
|
6
6
|
This program is free software.
|
7
7
|
You can distribute/modify this program
|
@@ -76,7 +76,6 @@ na_copy(VALUE self)
|
|
76
76
|
return v;
|
77
77
|
}
|
78
78
|
|
79
|
-
|
80
79
|
VALUE
|
81
80
|
na_store(VALUE self, VALUE src)
|
82
81
|
{
|
@@ -198,65 +197,72 @@ na_transpose_map(VALUE self, int *map)
|
|
198
197
|
VALUE
|
199
198
|
na_transpose(int argc, VALUE *argv, VALUE self)
|
200
199
|
{
|
201
|
-
int ndim, *map,
|
202
|
-
int
|
203
|
-
|
204
|
-
size_t len;
|
205
|
-
ssize_t beg, step;
|
206
|
-
volatile VALUE v, view;
|
200
|
+
int ndim, *map, *permute;
|
201
|
+
int i, d;
|
202
|
+
bool is_positive, is_negative;
|
207
203
|
narray_t *na1;
|
208
204
|
|
209
205
|
GetNArray(self,na1);
|
210
206
|
ndim = na1->ndim;
|
211
|
-
|
212
|
-
|
207
|
+
if (ndim < 2) {
|
208
|
+
if (argc > 0) {
|
209
|
+
rb_raise(rb_eArgError, "unnecessary argument for 1-d array");
|
210
|
+
}
|
211
|
+
return na_make_view(self);
|
212
|
+
}
|
213
213
|
map = ALLOCA_N(int,ndim);
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
goto new_object;
|
220
|
-
}
|
221
|
-
if (argc==2) {
|
222
|
-
if (TYPE(argv[0])==T_FIXNUM && TYPE(argv[1])==T_FIXNUM) {
|
223
|
-
i = FIX2INT(argv[0]);
|
224
|
-
j = FIX2INT(argv[1]);
|
225
|
-
if (row_major) {
|
226
|
-
i = ndim-1-i;
|
227
|
-
j = ndim-1-j;
|
228
|
-
}
|
229
|
-
SWAP( map[i], map[j], tmp );
|
230
|
-
goto new_object;
|
231
|
-
}
|
214
|
+
if (argc == 0) {
|
215
|
+
for (i=0; i < ndim; i++) {
|
216
|
+
map[i] = ndim-1-i;
|
217
|
+
}
|
218
|
+
return na_transpose_map(self,map);
|
232
219
|
}
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
220
|
+
// with argument
|
221
|
+
if (argc > ndim) {
|
222
|
+
rb_raise(rb_eArgError, "more arguments than ndim");
|
223
|
+
}
|
224
|
+
for (i=0; i < ndim; i++) {
|
225
|
+
map[i] = i;
|
226
|
+
}
|
227
|
+
permute = ALLOCA_N(int,argc);
|
228
|
+
for (i=0; i < argc; i++) {
|
229
|
+
permute[i] = 0;
|
230
|
+
}
|
231
|
+
is_positive = is_negative = 0;
|
232
|
+
for (i=0; i < argc; i++) {
|
233
|
+
if (TYPE(argv[i]) != T_FIXNUM) {
|
234
|
+
rb_raise(rb_eArgError, "invalid argument");
|
235
|
+
}
|
236
|
+
d = FIX2INT(argv[i]);
|
237
|
+
if (d >= 0) {
|
238
|
+
if (d >= argc) {
|
239
|
+
rb_raise(rb_eArgError, "out of dimension range");
|
248
240
|
}
|
249
|
-
|
250
|
-
|
241
|
+
if (is_negative) {
|
242
|
+
rb_raise(rb_eArgError, "dimension must be non-negative only or negative only");
|
251
243
|
}
|
252
|
-
|
253
|
-
|
254
|
-
|
244
|
+
if (permute[d]) {
|
245
|
+
rb_raise(rb_eArgError, "not permutation");
|
246
|
+
}
|
247
|
+
map[i] = d;
|
248
|
+
permute[d] = 1;
|
249
|
+
is_positive = 1;
|
250
|
+
} else {
|
251
|
+
if (d < -argc) {
|
252
|
+
rb_raise(rb_eArgError, "out of dimension range");
|
253
|
+
}
|
254
|
+
if (is_positive) {
|
255
|
+
rb_raise(rb_eArgError, "dimension must be non-negative only or negative only");
|
256
|
+
}
|
257
|
+
if (permute[argc+d]) {
|
258
|
+
rb_raise(rb_eArgError, "not permutation");
|
259
|
+
}
|
260
|
+
map[ndim-argc+i] = ndim+d;
|
261
|
+
permute[argc+d] = 1;
|
262
|
+
is_negative = 1;
|
263
|
+
}
|
255
264
|
}
|
256
|
-
|
257
|
-
new_object:
|
258
|
-
view = na_transpose_map(self,map);
|
259
|
-
return view;
|
265
|
+
return na_transpose_map(self,map);
|
260
266
|
}
|
261
267
|
|
262
268
|
//----------------------------------------------------------------------
|
@@ -304,7 +310,7 @@ na_reshape(int argc, VALUE *argv, VALUE self)
|
|
304
310
|
rb_raise(rb_eArgError, "Total size must be same");
|
305
311
|
}
|
306
312
|
|
307
|
-
copy =
|
313
|
+
copy = rb_funcall(self,rb_intern("copy"),0);
|
308
314
|
GetNArray(copy,na);
|
309
315
|
//shape_save = NA_SHAPE(na);
|
310
316
|
na_setup_shape(na,argc,shape);
|
@@ -592,7 +598,7 @@ na_diagonal(int argc, VALUE *argv, VALUE self)
|
|
592
598
|
}
|
593
599
|
|
594
600
|
if (vofs) {
|
595
|
-
kofs =
|
601
|
+
kofs = NUM2SSIZET(vofs);
|
596
602
|
} else {
|
597
603
|
kofs = 0;
|
598
604
|
}
|
@@ -627,15 +633,15 @@ na_diagonal(int argc, VALUE *argv, VALUE self)
|
|
627
633
|
k0 = 0;
|
628
634
|
k1 = kofs;
|
629
635
|
if (k1 >= na->shape[ax[1]]) {
|
630
|
-
rb_raise(rb_eArgError,"invalid diagonal offset(%
|
631
|
-
"last dimension size(%
|
636
|
+
rb_raise(rb_eArgError,"invalid diagonal offset(%"SZF"d) for "
|
637
|
+
"last dimension size(%"SZF"d)",kofs,na->shape[ax[1]]);
|
632
638
|
}
|
633
639
|
} else {
|
634
640
|
k0 = -kofs;
|
635
641
|
k1 = 0;
|
636
642
|
if (k0 >= na->shape[ax[0]]) {
|
637
|
-
rb_raise(rb_eArgError,"invalid diagonal offset(=%
|
638
|
-
"last-1 dimension size(%
|
643
|
+
rb_raise(rb_eArgError,"invalid diagonal offset(=%"SZF"d) for "
|
644
|
+
"last-1 dimension size(%"SZF"d)",kofs,na->shape[ax[0]]);
|
639
645
|
}
|
640
646
|
}
|
641
647
|
|
@@ -749,7 +755,7 @@ na_diagonal(int argc, VALUE *argv, VALUE self)
|
|
749
755
|
static VALUE
|
750
756
|
na_new_dimension_for_dot(VALUE self, int pos, int len, bool transpose)
|
751
757
|
{
|
752
|
-
int i, k, nd;
|
758
|
+
int i, k, l, nd;
|
753
759
|
size_t j;
|
754
760
|
size_t *idx1, *idx2;
|
755
761
|
size_t *shape;
|
@@ -775,27 +781,25 @@ na_new_dimension_for_dot(VALUE self, int pos, int len, bool transpose)
|
|
775
781
|
}
|
776
782
|
nd += len;
|
777
783
|
shape = ALLOCA_N(size_t,nd);
|
778
|
-
i = k = 0;
|
779
|
-
while (i < nd) {
|
780
|
-
if (i == pos) {
|
781
|
-
for (; len; len--) {
|
782
|
-
shape[i++] = 1;
|
783
|
-
}
|
784
|
-
pos = -1; // new axis done
|
785
|
-
} else {
|
786
|
-
shape[i++] = na->shape[k++];
|
787
|
-
}
|
788
|
-
}
|
789
|
-
|
790
|
-
na_setup_shape((narray_t*)na2, nd, shape);
|
791
784
|
na2->stridx = ALLOC_N(stridx_t,nd);
|
792
785
|
|
793
786
|
switch(na->type) {
|
794
787
|
case NARRAY_DATA_T:
|
795
788
|
case NARRAY_FILEMAP_T:
|
789
|
+
i = k = 0;
|
790
|
+
while (i < nd) {
|
791
|
+
if (i == pos && len > 0) {
|
792
|
+
for (l=0; l<len; l++) {
|
793
|
+
shape[i++] = 1;
|
794
|
+
}
|
795
|
+
} else {
|
796
|
+
shape[i++] = na->shape[k++];
|
797
|
+
}
|
798
|
+
}
|
799
|
+
na_setup_shape((narray_t*)na2, nd, shape);
|
796
800
|
stride = na_get_elmsz(self);
|
797
801
|
for (i=nd; i--;) {
|
798
|
-
SDX_SET_STRIDE(na2->stridx[i],stride);
|
802
|
+
SDX_SET_STRIDE(na2->stridx[i], stride);
|
799
803
|
stride *= shape[i];
|
800
804
|
}
|
801
805
|
na2->offset = 0;
|
@@ -803,18 +807,35 @@ na_new_dimension_for_dot(VALUE self, int pos, int len, bool transpose)
|
|
803
807
|
break;
|
804
808
|
case NARRAY_VIEW_T:
|
805
809
|
GetNArrayView(self, na1);
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
810
|
+
i = k = 0;
|
811
|
+
while (i < nd) {
|
812
|
+
if (i == pos && len > 0) {
|
813
|
+
if (SDX_IS_INDEX(na1->stridx[k])) {
|
814
|
+
stride = SDX_GET_INDEX(na1->stridx[k])[0];
|
815
|
+
} else {
|
816
|
+
stride = SDX_GET_STRIDE(na1->stridx[k]);
|
817
|
+
}
|
818
|
+
for (l=0; l<len; l++) {
|
819
|
+
shape[i] = 1;
|
820
|
+
SDX_SET_STRIDE(na2->stridx[i], stride);
|
821
|
+
i++;
|
812
822
|
}
|
813
|
-
SDX_SET_INDEX(na2->stridx[i],idx2);
|
814
823
|
} else {
|
815
|
-
|
824
|
+
shape[i] = na1->base.shape[k];
|
825
|
+
if (SDX_IS_INDEX(na1->stridx[k])) {
|
826
|
+
idx1 = SDX_GET_INDEX(na1->stridx[k]);
|
827
|
+
idx2 = ALLOC_N(size_t,na1->base.shape[k]);
|
828
|
+
for (j=0; j<na1->base.shape[k]; j++) {
|
829
|
+
idx2[j] = idx1[j];
|
830
|
+
}
|
831
|
+
SDX_SET_INDEX(na2->stridx[i], idx2);
|
832
|
+
} else {
|
833
|
+
na2->stridx[i] = na1->stridx[k];
|
834
|
+
}
|
835
|
+
i++; k++;
|
816
836
|
}
|
817
837
|
}
|
838
|
+
na_setup_shape((narray_t*)na2, nd, shape);
|
818
839
|
na2->offset = na1->offset;
|
819
840
|
na2->data = na1->data;
|
820
841
|
break;
|
data/ext/numo/narray/depend.erb
CHANGED
@@ -17,17 +17,19 @@ C_TMPL = <%=Dir.glob("#{__dir__}/gen/tmpl/*.c").join(" ")%>
|
|
17
17
|
|
18
18
|
COGEN = <%= __dir__ %>/gen/cogen.rb
|
19
19
|
DTYPE = <%= __dir__ %>/gen/dtype.erb.c
|
20
|
-
COGEN_DTYPE = $(COGEN) -l $(DTYPE)
|
21
20
|
DEPENDS = $(C_TMPL) $(DTYPE) <%= __dir__ %>/gen/*.rb
|
22
21
|
|
23
|
-
<%
|
24
|
-
types
|
22
|
+
<%
|
23
|
+
type_c = ["types/bit.c"]
|
24
|
+
type_rb = Dir.glob("#{__dir__}/gen/def/*.rb")
|
25
|
+
type_rb.each do |s|
|
26
|
+
type_c << c = "types/"+File.basename(s,".rb")+".c"
|
27
|
+
%>
|
28
|
+
<%=c%>: <%=s%> $(DEPENDS)
|
25
29
|
$(MAKEDIRS) $(@D) types
|
26
|
-
ruby $(
|
30
|
+
ruby $(COGEN) -l -o $@ $(DTYPE) <%=s%>
|
27
31
|
<% end %>
|
28
32
|
|
29
|
-
|
30
|
-
$(MAKEDIRS) $(@D) types
|
31
|
-
ruby $(COGEN) -l <%= __dir__ %>/gen/bit.erb.c > $@
|
33
|
+
src : <%= type_c.join(" ") %>
|
32
34
|
|
33
35
|
CLEANOBJS = *.o */*.o *.bak types/*.c
|
data/ext/numo/narray/extconf.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
require 'rbconfig.rb'
|
2
|
-
|
3
|
-
#RbConfig::MAKEFILE_CONFIG["optflags"] = "-g3 -gdwarf-2"
|
4
|
-
|
5
2
|
require 'mkmf'
|
6
|
-
|
7
3
|
require "erb"
|
8
4
|
|
9
5
|
if RUBY_VERSION < "2.0.0"
|
@@ -11,12 +7,15 @@ if RUBY_VERSION < "2.0.0"
|
|
11
7
|
exit(1)
|
12
8
|
end
|
13
9
|
|
10
|
+
rm_f 'numo/extconf.h'
|
11
|
+
|
14
12
|
#$CFLAGS="-g3 -O0 -Wall"
|
15
13
|
#$CFLAGS=" $(cflags) -O3 -m64 -msse2 -funroll-loops"
|
16
14
|
#$CFLAGS=" $(cflags) -O3"
|
17
15
|
$INCFLAGS = "-Itypes #$INCFLAGS"
|
18
16
|
|
19
17
|
$INSTALLFILES = Dir.glob(%w[numo/*.h numo/types/*.h]).map{|x| [x,'$(archdir)'] }
|
18
|
+
$INSTALLFILES << ['numo/extconf.h','$(archdir)']
|
20
19
|
if /cygwin|mingw/ =~ RUBY_PLATFORM
|
21
20
|
$INSTALLFILES << ['libnarray.a', '$(archdir)']
|
22
21
|
end
|
@@ -48,20 +47,6 @@ struct
|
|
48
47
|
rand
|
49
48
|
)
|
50
49
|
|
51
|
-
=begin
|
52
|
-
have_header("atlas/cblas.h")
|
53
|
-
have_library("atlas")
|
54
|
-
|
55
|
-
if have_library("blas")
|
56
|
-
if have_library("lapack")
|
57
|
-
srcs.push "linalg"
|
58
|
-
$defs.push "-DHAVE_LAPACK"
|
59
|
-
else
|
60
|
-
#$defs.delete "-DHAVE_LAPACK"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
=end
|
64
|
-
|
65
50
|
if have_header("stdbool.h")
|
66
51
|
stdbool = "stdbool.h"
|
67
52
|
else
|
@@ -91,18 +76,14 @@ have_type("int64_t", stdint)
|
|
91
76
|
unless have_type("u_int64_t", stdint)
|
92
77
|
have_type("uint64_t", stdint)
|
93
78
|
end
|
94
|
-
#have_library("m")
|
95
|
-
#have_func("sincos")
|
96
|
-
#have_func("asinh")
|
97
79
|
have_func("exp10")
|
98
80
|
|
99
81
|
have_var("rb_cComplex")
|
100
|
-
|
101
|
-
#have_func("rb_free_tmp_buffer", "ruby.h")
|
82
|
+
have_var("rb_cFixnum")
|
102
83
|
|
103
84
|
$objs = srcs.collect{|i| i+".o"}
|
104
85
|
|
105
|
-
create_header
|
86
|
+
create_header('numo/extconf.h')
|
106
87
|
|
107
88
|
depend_path = File.join(__dir__, "depend")
|
108
89
|
File.open(depend_path, "w") do |depend|
|