numo-narray 0.9.0.1-x64-mingw32 → 0.9.0.3-x64-mingw32
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/README.md +11 -7
- data/Rakefile +20 -5
- 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: 1214879d114107330abbe27eb03843915badfadc
|
4
|
+
data.tar.gz: '028c8513bd1dc3ac69c9da71400a497ee175fee2'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a922d131ec23008c270adea1dee0054816d26399b9c1f3e96cf175aa0d3c0758922c51db5e835e5e1cb878214c1de1f03aa636605d396a544382cbc73c729ba8
|
7
|
+
data.tar.gz: c629c7a5328f381bf79d31571e7534e9bfb36ad01d949fb635464c9f1053ac54e8c56b814320d68abffa3a2efa14e693087f4cbab4d15c1afa45b35b4c06088b
|
data/README.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# Numo::NArray - New NArray class library for Ruby/Numo (NUmerical MOdule)
|
2
2
|
|
3
|
+
[](http://mybinder.org/repo/ruby-numo/narray)
|
3
4
|
[](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
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|
|