carray 1.5.1 → 1.5.2
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/{LICENSES → LICENSE} +0 -0
- data/NEWS.md +42 -0
- data/README.md +5 -5
- data/TODO.md +16 -0
- data/carray.gemspec +9 -5
- data/ext/ca_iter_block.c +3 -5
- data/ext/ca_iter_dimension.c +4 -5
- data/ext/ca_iter_window.c +2 -4
- data/ext/ca_obj_array.c +394 -124
- data/ext/ca_obj_bitarray.c +3 -5
- data/ext/ca_obj_bitfield.c +3 -5
- data/ext/ca_obj_block.c +6 -8
- data/ext/ca_obj_fake.c +3 -5
- data/ext/ca_obj_farray.c +3 -5
- data/ext/ca_obj_field.c +15 -17
- data/ext/ca_obj_grid.c +5 -6
- data/ext/ca_obj_mapping.c +2 -4
- data/ext/ca_obj_object.c +3 -5
- data/ext/ca_obj_reduce.c +2 -4
- data/ext/ca_obj_refer.c +5 -7
- data/ext/ca_obj_repeat.c +2 -4
- data/ext/ca_obj_select.c +2 -4
- data/ext/ca_obj_shift.c +3 -5
- data/ext/ca_obj_transpose.c +3 -5
- data/ext/ca_obj_unbound_repeat.c +58 -81
- data/ext/ca_obj_window.c +7 -9
- data/ext/carray.h +13 -8
- data/ext/carray_access.c +111 -18
- data/ext/carray_attribute.c +136 -197
- data/ext/carray_call_cfunc.c +1 -3
- data/ext/carray_cast.c +344 -143
- data/ext/carray_cast_func.rb +1 -2
- data/ext/carray_class.c +28 -36
- data/ext/carray_conversion.c +49 -59
- data/ext/carray_copy.c +16 -32
- data/ext/carray_core.c +51 -44
- data/ext/carray_element.c +25 -44
- data/ext/carray_generate.c +71 -50
- data/ext/carray_iterator.c +13 -15
- data/ext/carray_loop.c +53 -82
- data/ext/carray_mask.c +87 -117
- data/ext/carray_math.rb +8 -10
- data/ext/carray_mathfunc.c +1 -3
- data/ext/carray_numeric.c +19 -3
- data/ext/carray_operator.c +45 -32
- data/ext/carray_order.c +72 -65
- data/ext/carray_sort_addr.c +14 -21
- data/ext/carray_stat.c +1 -3
- data/ext/carray_stat_proc.rb +2 -4
- data/ext/carray_test.c +28 -30
- data/ext/carray_undef.c +1 -3
- data/ext/carray_utils.c +12 -4
- data/ext/extconf.rb +1 -1
- data/ext/mkmath.rb +1 -1
- data/ext/ruby_carray.c +11 -6
- data/ext/ruby_ccomplex.c +1 -3
- data/ext/ruby_float_func.c +1 -3
- data/ext/version.h +5 -7
- data/lib/carray.rb +2 -0
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
- data/lib/carray/broadcast.rb +45 -0
- data/lib/carray/construct.rb +21 -4
- data/lib/carray/iterator.rb +1 -0
- data/lib/carray/ordering.rb +28 -2
- data/spec/Classes/CABitfield_spec.rb +58 -0
- data/spec/Classes/CABlockIterator_spec.rb +114 -0
- data/spec/Classes/CABlock_spec.rb +205 -0
- data/spec/Classes/CAField_spec.rb +39 -0
- data/spec/Classes/CAGrid_spec.rb +75 -0
- data/spec/Classes/CAMap_spec.rb +0 -0
- data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
- data/spec/Classes/CAObject_attribute_spec.rb +33 -0
- data/spec/Classes/CAObject_spec.rb +33 -0
- data/spec/Classes/CARefer_spec.rb +93 -0
- data/spec/Classes/CARepeat_spec.rb +65 -0
- data/spec/Classes/CASelect_spec.rb +22 -0
- data/spec/Classes/CAShift_spec.rb +16 -0
- data/spec/Classes/CAStruct_spec.rb +71 -0
- data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
- data/spec/Classes/CAUnboudRepeat_spec.rb +78 -0
- data/spec/Classes/CAWindow_spec.rb +54 -0
- data/spec/Classes/CAWrap_spec.rb +8 -0
- data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
- data/spec/Classes/CScalar_spec.rb +55 -0
- data/spec/Features/feature_130_spec.rb +19 -0
- data/spec/Features/feature_attributes_spec.rb +280 -0
- data/spec/Features/feature_boolean_spec.rb +97 -0
- data/spec/Features/feature_broadcast.rb +100 -0
- data/spec/Features/feature_cast_function.rb +19 -0
- data/spec/Features/feature_cast_spec.rb +33 -0
- data/spec/Features/feature_class_spec.rb +84 -0
- data/spec/Features/feature_complex_spec.rb +42 -0
- data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
- data/spec/Features/feature_convert_spec.rb +46 -0
- data/spec/Features/feature_copy_spec.rb +123 -0
- data/spec/Features/feature_creation_spec.rb +84 -0
- data/spec/Features/feature_element_spec.rb +144 -0
- data/spec/Features/feature_extream_spec.rb +54 -0
- data/spec/Features/feature_generate_spec.rb +74 -0
- data/spec/Features/feature_index_spec.rb +69 -0
- data/spec/Features/feature_mask_spec.rb +574 -0
- data/spec/Features/feature_math_spec.rb +97 -0
- data/spec/Features/feature_order_spec.rb +146 -0
- data/spec/Features/feature_ref_store_spec.rb +209 -0
- data/spec/Features/feature_serialization_spec.rb +125 -0
- data/spec/Features/feature_stat_spec.rb +397 -0
- data/spec/Features/feature_virtual_spec.rb +48 -0
- data/spec/Features/method_eq_spec.rb +81 -0
- data/spec/Features/method_is_nan_spec.rb +12 -0
- data/spec/Features/method_map_spec.rb +54 -0
- data/spec/Features/method_max_with.rb +20 -0
- data/spec/Features/method_min_with.rb +19 -0
- data/spec/Features/method_ne_spec.rb +18 -0
- data/spec/Features/method_project_spec.rb +188 -0
- data/spec/Features/method_ref_spec.rb +27 -0
- data/spec/Features/method_round_spec.rb +11 -0
- data/spec/Features/method_s_linspace_spec.rb +48 -0
- data/spec/Features/method_s_span_spec.rb +14 -0
- data/spec/Features/method_seq_spec.rb +47 -0
- data/spec/Features/method_sort_with.rb +43 -0
- data/spec/Features/method_sorted_with.rb +29 -0
- data/spec/Features/method_span_spec.rb +42 -0
- data/spec/Features/method_wrap_readonly_spec.rb +43 -0
- data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
- data/spec/spec_all.rb +0 -1
- data/utils/convert_test.rb +73 -0
- data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
- metadata +77 -60
- data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
- data/spec/CArray/bug/store_spec.rb +0 -27
- data/spec/CArray/index/repeat_spec.rb +0 -10
- data/spec/CArray/method/eq_spec.rb +0 -80
- data/spec/CArray/method/is_nan_spec.rb +0 -12
- data/spec/CArray/method/ne_spec.rb +0 -18
- data/spec/CArray/method/round_spec.rb +0 -11
- data/spec/CArray/object/_attribute_spec.rb +0 -32
- data/spec/CArray/object/s_new_spec.rb +0 -31
- data/spec/CArray/serialize/Serialization_spec.rb +0 -89
- data/test/test_130.rb +0 -23
- data/test/test_ALL.rb +0 -49
- data/test/test_CABitfield.rb +0 -59
- data/test/test_CABlock.rb +0 -208
- data/test/test_CAField.rb +0 -40
- data/test/test_CAGrid.rb +0 -76
- data/test/test_CAMmap.rb +0 -11
- data/test/test_CARefer.rb +0 -94
- data/test/test_CARepeat.rb +0 -66
- data/test/test_CASelect.rb +0 -23
- data/test/test_CAShift.rb +0 -17
- data/test/test_CAWindow.rb +0 -55
- data/test/test_CAWrap.rb +0 -9
- data/test/test_CComplex.rb +0 -83
- data/test/test_CScalar.rb +0 -91
- data/test/test_attribute.rb +0 -281
- data/test/test_block_iterator.rb +0 -17
- data/test/test_boolean.rb +0 -99
- data/test/test_cast.rb +0 -33
- data/test/test_class.rb +0 -85
- data/test/test_complex.rb +0 -43
- data/test/test_convert.rb +0 -79
- data/test/test_copy.rb +0 -141
- data/test/test_creation.rb +0 -85
- data/test/test_element.rb +0 -146
- data/test/test_extream.rb +0 -55
- data/test/test_generate.rb +0 -75
- data/test/test_index.rb +0 -71
- data/test/test_mask.rb +0 -578
- data/test/test_math.rb +0 -98
- data/test/test_order.rb +0 -147
- data/test/test_ref_store.rb +0 -211
- data/test/test_stat.rb +0 -406
- data/test/test_struct.rb +0 -72
- data/test/test_virtual.rb +0 -49
data/ext/ca_obj_repeat.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ca_obj_repeat.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -14,7 +12,7 @@
|
|
14
12
|
|
15
13
|
VALUE rb_cCARepeat;
|
16
14
|
|
17
|
-
/*
|
15
|
+
/* yard:
|
18
16
|
class CARepeat < CAVirtual # :nodoc:
|
19
17
|
end
|
20
18
|
*/
|
data/ext/ca_obj_select.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ca_obj_select.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -14,7 +12,7 @@
|
|
14
12
|
|
15
13
|
VALUE rb_cCASelect;
|
16
14
|
|
17
|
-
/*
|
15
|
+
/* yard:
|
18
16
|
class CASelect < CAVirtual # :nodoc:
|
19
17
|
end
|
20
18
|
*/
|
data/ext/ca_obj_shift.c
CHANGED
@@ -3,16 +3,14 @@
|
|
3
3
|
ca_obj_shift.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
13
11
|
#include "carray.h"
|
14
12
|
|
15
|
-
/*
|
13
|
+
/* yard:
|
16
14
|
class CAShift < CAVirtual # :nodoc:
|
17
15
|
end
|
18
16
|
*/
|
@@ -828,7 +826,7 @@ rb_ca_shift_new (VALUE cary, ca_size_t *shift, char *fill, int8_t *roll)
|
|
828
826
|
return obj;
|
829
827
|
}
|
830
828
|
|
831
|
-
/*
|
829
|
+
/* yard:
|
832
830
|
class CArray
|
833
831
|
def shifted
|
834
832
|
end
|
data/ext/ca_obj_transpose.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ca_obj_transpose.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -34,7 +32,7 @@ static int8_t CA_OBJ_TRANSPOSE;
|
|
34
32
|
|
35
33
|
static VALUE rb_cCATrans;
|
36
34
|
|
37
|
-
/*
|
35
|
+
/* yard:
|
38
36
|
class CATranspose < CAVirtual # :nodoc:
|
39
37
|
end
|
40
38
|
*/
|
@@ -511,7 +509,7 @@ rb_ca_trans_new (VALUE cary, ca_size_t *imap)
|
|
511
509
|
return obj;
|
512
510
|
}
|
513
511
|
|
514
|
-
/*
|
512
|
+
/* yard:
|
515
513
|
class CArray
|
516
514
|
def transposed
|
517
515
|
end
|
data/ext/ca_obj_unbound_repeat.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ca_obj_unbound_repeat.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -14,7 +12,7 @@
|
|
14
12
|
|
15
13
|
VALUE rb_cCAUnboundRepeat;
|
16
14
|
|
17
|
-
/*
|
15
|
+
/* yard:
|
18
16
|
class CAUnboundRepeat < CArray
|
19
17
|
end
|
20
18
|
*/
|
@@ -23,8 +21,9 @@ int
|
|
23
21
|
ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
|
24
22
|
int32_t rep_ndim, ca_size_t *rep_dim)
|
25
23
|
{
|
26
|
-
int8_t data_type
|
24
|
+
int8_t data_type;
|
27
25
|
ca_size_t bytes, elements;
|
26
|
+
int8_t i;
|
28
27
|
|
29
28
|
/* check arguments */
|
30
29
|
|
@@ -32,18 +31,17 @@ ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
|
|
32
31
|
|
33
32
|
data_type = parent->data_type;
|
34
33
|
bytes = parent->bytes;
|
35
|
-
ndim = parent->ndim;
|
36
34
|
elements = parent->elements;
|
37
35
|
|
38
36
|
ca->obj_type = CA_OBJ_UNBOUND_REPEAT;
|
39
37
|
ca->data_type = data_type;
|
40
38
|
ca->flags = 0;
|
41
|
-
ca->ndim =
|
39
|
+
ca->ndim = rep_ndim;
|
42
40
|
ca->bytes = bytes;
|
43
41
|
ca->elements = elements;
|
44
42
|
ca->ptr = NULL;
|
45
43
|
ca->mask = NULL;
|
46
|
-
ca->dim = ALLOC_N(ca_size_t,
|
44
|
+
ca->dim = ALLOC_N(ca_size_t, rep_ndim);
|
47
45
|
|
48
46
|
ca->parent = parent;
|
49
47
|
ca->attach = 0;
|
@@ -52,9 +50,17 @@ ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
|
|
52
50
|
ca->rep_ndim = rep_ndim;
|
53
51
|
ca->rep_dim = ALLOC_N(ca_size_t, rep_ndim);
|
54
52
|
|
55
|
-
memcpy(ca->dim, parent->dim, ndim * sizeof(ca_size_t));
|
56
53
|
memcpy(ca->rep_dim, rep_dim, rep_ndim * sizeof(ca_size_t));
|
57
54
|
|
55
|
+
for (i=0; i<ca->ndim; i++) {
|
56
|
+
if ( ca->rep_dim[i] ) {
|
57
|
+
ca->dim[i] = ca->rep_dim[i];
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
ca->dim[i] = 1;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
58
64
|
if ( ca_has_mask(parent) ) {
|
59
65
|
ca_create_mask(ca);
|
60
66
|
}
|
@@ -238,6 +244,36 @@ ca_operation_function_t ca_ubrep_func = {
|
|
238
244
|
|
239
245
|
/* ------------------------------------------------------------------- */
|
240
246
|
|
247
|
+
VALUE
|
248
|
+
rb_ca_ubrep_shave (VALUE self, VALUE other)
|
249
|
+
{
|
250
|
+
CAUnboundRepeat *ca;
|
251
|
+
CArray *co;
|
252
|
+
int8_t ndim, i;
|
253
|
+
ca_size_t dim[CA_RANK_MAX];
|
254
|
+
|
255
|
+
rb_check_carray_object(self);
|
256
|
+
rb_check_carray_object(other);
|
257
|
+
|
258
|
+
Data_Get_Struct(self, CAUnboundRepeat, ca);
|
259
|
+
Data_Get_Struct(other, CArray, co);
|
260
|
+
|
261
|
+
if ( ca->elements != co->elements ) {
|
262
|
+
rb_raise(rb_eRuntimeError, "mismatch in # of elements");
|
263
|
+
}
|
264
|
+
|
265
|
+
ndim = 0;
|
266
|
+
for (i=0; i<ca->ndim; i++) {
|
267
|
+
if ( ca->rep_dim[i] ) {
|
268
|
+
dim[ndim] = ca->rep_dim[i];
|
269
|
+
ndim += 1;
|
270
|
+
}
|
271
|
+
}
|
272
|
+
|
273
|
+
return rb_ca_refer_new(other, co->data_type, ndim, dim, co->bytes, 0);
|
274
|
+
}
|
275
|
+
|
276
|
+
|
241
277
|
VALUE
|
242
278
|
rb_ca_ubrep_new (VALUE cary, int32_t rep_ndim, ca_size_t *rep_dim)
|
243
279
|
{
|
@@ -257,80 +293,24 @@ VALUE
|
|
257
293
|
rb_ca_unbound_repeat (int argc, VALUE *argv, VALUE self)
|
258
294
|
{
|
259
295
|
CArray *ca;
|
260
|
-
|
296
|
+
int8_t ndim;
|
297
|
+
ca_size_t dim[CA_RANK_MAX];
|
261
298
|
int32_t rep_ndim;
|
262
299
|
ca_size_t rep_dim[CA_RANK_MAX];
|
263
|
-
ca_size_t count, i;
|
300
|
+
ca_size_t elements, count, i;
|
264
301
|
|
265
302
|
Data_Get_Struct(self, CArray, ca);
|
266
303
|
|
267
|
-
if ( argc == 1 && argv[0] == ID2SYM(rb_intern("*")) ) {
|
268
|
-
CAUnboundRepeat *cr = (CAUnboundRepeat *) ca;
|
269
|
-
volatile VALUE args;
|
270
|
-
int repeatable = 0;
|
271
|
-
args = rb_ary_new();
|
272
|
-
if ( rb_obj_is_kind_of(self, rb_cCAUnboundRepeat) ) {
|
273
|
-
repeatable = 1;
|
274
|
-
for (i=0; i<cr->rep_ndim; i++) {
|
275
|
-
if ( cr->rep_dim[i] == 1 ) {
|
276
|
-
rb_ary_push(args, ID2SYM(rb_intern("*")));
|
277
|
-
repeatable = 1;
|
278
|
-
}
|
279
|
-
else if ( cr->rep_dim[i] > 1 ) {
|
280
|
-
rb_ary_push(args, Qnil);
|
281
|
-
}
|
282
|
-
else {
|
283
|
-
rb_ary_push(args, ID2SYM(rb_intern("*")));
|
284
|
-
}
|
285
|
-
}
|
286
|
-
}
|
287
|
-
else {
|
288
|
-
for (i=0; i<ca->ndim; i++) {
|
289
|
-
if ( ca->dim[i] == 1 ) {
|
290
|
-
rb_ary_push(args, ID2SYM(rb_intern("*")));
|
291
|
-
repeatable = 1;
|
292
|
-
}
|
293
|
-
else {
|
294
|
-
rb_ary_push(args, Qnil);
|
295
|
-
}
|
296
|
-
}
|
297
|
-
}
|
298
|
-
if ( ! repeatable ) {
|
299
|
-
return self;
|
300
|
-
}
|
301
|
-
else {
|
302
|
-
return rb_ca_unbound_repeat((int)RARRAY_LEN(args), RARRAY_PTR(args), self);
|
303
|
-
}
|
304
|
-
}
|
305
|
-
else if ( argc == 2 &&
|
306
|
-
argv[0] == ID2SYM(rb_intern("*")) &&
|
307
|
-
rb_obj_is_carray(argv[1]) ) {
|
308
|
-
volatile VALUE args, obj;
|
309
|
-
args = ID2SYM(rb_intern("*"));
|
310
|
-
obj = rb_ca_unbound_repeat(1, (VALUE*)&args, self);
|
311
|
-
return ca_ubrep_bind_with(obj, argv[1]);
|
312
|
-
}
|
313
|
-
else if ( argc == 2 &&
|
314
|
-
argv[1] == ID2SYM(rb_intern("*")) &&
|
315
|
-
rb_obj_is_carray(argv[0]) ) {
|
316
|
-
volatile VALUE args, obj;
|
317
|
-
args = ID2SYM(rb_intern("*"));
|
318
|
-
obj = rb_ca_unbound_repeat(1, (VALUE*)&args, self);
|
319
|
-
return ca_ubrep_bind_with(obj, argv[0]);
|
320
|
-
}
|
321
|
-
|
322
304
|
rep_ndim = argc;
|
323
305
|
|
324
306
|
count = 0;
|
325
307
|
ndim = 0;
|
326
308
|
|
309
|
+
elements = 1;
|
327
310
|
for (i=0; i<rep_ndim; i++) {
|
328
311
|
if ( rb_obj_is_kind_of(argv[i], rb_cSymbol) ) {
|
329
312
|
if ( argv[i] == ID2SYM(rb_intern("*")) ) {
|
330
313
|
rep_dim[i] = 0;
|
331
|
-
if ( ca->dim[count] == 1 ) {
|
332
|
-
count++;
|
333
|
-
}
|
334
314
|
}
|
335
315
|
else {
|
336
316
|
rb_raise(rb_eArgError, "unknown symbol (!= ':*') in arguments");
|
@@ -342,21 +322,17 @@ rb_ca_unbound_repeat (int argc, VALUE *argv, VALUE self)
|
|
342
322
|
}
|
343
323
|
rep_dim[i] = ca->dim[count];
|
344
324
|
dim[ndim] = ca->dim[count];
|
325
|
+
elements *= ca->dim[count];
|
345
326
|
count++; ndim++;
|
346
327
|
}
|
347
328
|
}
|
348
329
|
|
349
|
-
if (
|
350
|
-
rb_raise(
|
330
|
+
if ( elements != ca->elements ) {
|
331
|
+
rb_raise(rb_eArgError, "mismatch in entity elements (%lli for %lli)", elements, ca->elements);
|
351
332
|
}
|
352
333
|
|
353
334
|
if ( ndim != ca->ndim ) {
|
354
|
-
|
355
|
-
par = rb_ca_refer_new(self, ca->data_type, ndim, dim, ca->bytes, 0);
|
356
|
-
obj = rb_ca_ubrep_new(par, rep_ndim, rep_dim);
|
357
|
-
rb_ivar_set(obj, rb_intern("__real_parent__"), par);
|
358
|
-
rb_ca_set_parent(obj, self);
|
359
|
-
return obj;
|
335
|
+
rb_raise(rb_eArgError, "invalid number of nil's (%i for %i)", ndim, ca->ndim);
|
360
336
|
}
|
361
337
|
else {
|
362
338
|
return rb_ca_ubrep_new(self, rep_ndim, rep_dim);
|
@@ -450,11 +426,11 @@ ca_ubrep_bind2 (VALUE self, int32_t new_ndim, ca_size_t *new_dim)
|
|
450
426
|
return rb_ca_ubrep_new(rep, new_ndim, upr_spec);
|
451
427
|
}
|
452
428
|
else {
|
453
|
-
return rb_ca_repeat_new(self, new_ndim, rep_spec);
|
429
|
+
return rb_ca_repeat_new(rb_ca_parent(self), new_ndim, rep_spec);
|
454
430
|
}
|
455
431
|
}
|
456
432
|
|
457
|
-
/*
|
433
|
+
/* yard:
|
458
434
|
class CAUnboundRepeat
|
459
435
|
def bind_with(other)
|
460
436
|
end
|
@@ -484,7 +460,7 @@ ca_ubrep_bind_with (VALUE self, VALUE other)
|
|
484
460
|
}
|
485
461
|
}
|
486
462
|
|
487
|
-
/*
|
463
|
+
/* yard:
|
488
464
|
class CAUnboundRepeat
|
489
465
|
def bind(*index)
|
490
466
|
end
|
@@ -503,6 +479,7 @@ rb_ca_ubrep_bind (int argc, VALUE *argv, VALUE self)
|
|
503
479
|
if ( ca->rep_ndim != argc ) {
|
504
480
|
rb_raise(rb_eArgError, "invalid new_ndim");
|
505
481
|
}
|
482
|
+
|
506
483
|
for (i=0; i<argc; i++) {
|
507
484
|
if ( ca->rep_dim[i] == 0 ) {
|
508
485
|
rep_spec[i] = NUM2SIZE(argv[i]);
|
@@ -512,7 +489,7 @@ rb_ca_ubrep_bind (int argc, VALUE *argv, VALUE self)
|
|
512
489
|
}
|
513
490
|
}
|
514
491
|
|
515
|
-
return rb_ca_repeat_new(self, argc, rep_spec);
|
492
|
+
return rb_ca_repeat_new(rb_ca_parent(self), argc, rep_spec);
|
516
493
|
}
|
517
494
|
|
518
495
|
static VALUE
|
data/ext/ca_obj_window.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ca_obj_window.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -17,7 +15,7 @@
|
|
17
15
|
VALUE rb_cCAWindow;
|
18
16
|
int8_t CA_OBJ_WINDOW;
|
19
17
|
|
20
|
-
/*
|
18
|
+
/* yard:
|
21
19
|
class CAWindow < CAVirtual # :nodoc:
|
22
20
|
end
|
23
21
|
*/
|
@@ -703,7 +701,7 @@ rb_ca_window_new (VALUE cary,
|
|
703
701
|
return obj;
|
704
702
|
}
|
705
703
|
|
706
|
-
/*
|
704
|
+
/* yard:
|
707
705
|
class CArray
|
708
706
|
def window (*argv)
|
709
707
|
end
|
@@ -837,7 +835,7 @@ rb_ca_window_initialize_copy (VALUE self, VALUE other)
|
|
837
835
|
return self;
|
838
836
|
}
|
839
837
|
|
840
|
-
/*
|
838
|
+
/* yard:
|
841
839
|
class CAWindow
|
842
840
|
def index2addr0 (idx)
|
843
841
|
end
|
@@ -874,7 +872,7 @@ rb_ca_window_idx2addr0 (int argc, VALUE *argv, VALUE self)
|
|
874
872
|
}
|
875
873
|
}
|
876
874
|
|
877
|
-
/*
|
875
|
+
/* yard:
|
878
876
|
class CAWindow
|
879
877
|
def addr2addr0 (addr)
|
880
878
|
end
|
@@ -928,7 +926,7 @@ rb_ca_window_move (int argc, VALUE *argv, VALUE self)
|
|
928
926
|
return self;
|
929
927
|
}
|
930
928
|
|
931
|
-
/*
|
929
|
+
/* yard:
|
932
930
|
class CAWindow
|
933
931
|
def fill_value
|
934
932
|
end
|
@@ -976,7 +974,7 @@ rb_ca_window_get_bounds (VALUE self)
|
|
976
974
|
return ary; \
|
977
975
|
}
|
978
976
|
|
979
|
-
/*
|
977
|
+
/* yard:
|
980
978
|
class CAWindow
|
981
979
|
def size0
|
982
980
|
end
|
data/ext/carray.h
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
carray.h
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -760,6 +758,7 @@ typedef struct {
|
|
760
758
|
CArray *select;
|
761
759
|
VALUE block;
|
762
760
|
VALUE symbol;
|
761
|
+
int8_t range_check;
|
763
762
|
} CAIndexInfo;
|
764
763
|
|
765
764
|
/* -------------------------------------------------------------------- */
|
@@ -785,10 +784,10 @@ VALUE rb_ca_call_binop (VALUE self, VALUE other, ca_binop_func_t func[]);
|
|
785
784
|
VALUE rb_ca_call_binop_bang (VALUE self, VALUE other, ca_binop_func_t func[]);
|
786
785
|
VALUE rb_ca_call_moncmp (VALUE self, ca_moncmp_func_t func[]);
|
787
786
|
VALUE rb_ca_call_bincmp (VALUE self, VALUE other, ca_bincmp_func_t func[]);
|
788
|
-
void ca_monop_not_implement(ca_size_t n, char *ptr1, char *ptr2);
|
789
|
-
void ca_binop_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3);
|
790
|
-
void ca_moncmp_not_implement(ca_size_t n, char *ptr1, char *ptr2);
|
791
|
-
void ca_bincmp_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3);
|
787
|
+
void ca_monop_not_implement(ca_size_t n, char *ptr1, char *ptr2) __attribute__((noreturn));
|
788
|
+
void ca_binop_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3) __attribute__((noreturn));
|
789
|
+
void ca_moncmp_not_implement(ca_size_t n, char *ptr1, char *ptr2) __attribute__((noreturn));
|
790
|
+
void ca_bincmp_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3) __attribute__((noreturn));
|
792
791
|
VALUE ca_math_call (VALUE mod, VALUE arg, ID id);
|
793
792
|
|
794
793
|
/* -------------------------------------------------------------------- */
|
@@ -819,6 +818,9 @@ VALUE rb_carray_new (int8_t data_type,
|
|
819
818
|
VALUE rb_carray_new_safe (int8_t data_type,
|
820
819
|
int8_t ndim, ca_size_t *dim, ca_size_t bytes, CArray *mask);
|
821
820
|
|
821
|
+
VALUE rb_ca_wrap_new (int8_t data_type,
|
822
|
+
int8_t ndim, ca_size_t *dim, ca_size_t bytes, CArray *mask, char *ptr);
|
823
|
+
|
822
824
|
CAWrap *ca_wrap_new (int8_t data_type,
|
823
825
|
int8_t ndim, ca_size_t *dim, ca_size_t bytes,
|
824
826
|
CArray *mask, char *ptr);
|
@@ -888,6 +890,9 @@ CARepeat *ca_repeat_new (CArray *carray, int8_t ndim, ca_size_t *count);
|
|
888
890
|
VALUE rb_ca_repeat_new (VALUE cary, int8_t ndim, ca_size_t *count);
|
889
891
|
VALUE rb_ca_repeat (int argc, VALUE *argv, VALUE self);
|
890
892
|
|
893
|
+
/* --- ca_obj_unbound_repeat.c --- */
|
894
|
+
|
895
|
+
VALUE rb_ca_ubrep_shave (VALUE self, VALUE other);
|
891
896
|
VALUE rb_ca_ubrep_new (VALUE cary, int32_t rep_ndim, ca_size_t *rep_dim);
|
892
897
|
VALUE ca_ubrep_bind_with (VALUE self, VALUE other);
|
893
898
|
|
@@ -1064,7 +1069,7 @@ void ca_parse_range_without_check (VALUE arg, ca_size_t size,
|
|
1064
1069
|
ca_size_t *offset, ca_size_t *count, ca_size_t *step);
|
1065
1070
|
|
1066
1071
|
int ca_equal (void *ap, void *bp);
|
1067
|
-
void ca_zerodiv(void);
|
1072
|
+
void ca_zerodiv(void) __attribute__((noreturn));
|
1068
1073
|
int32_t ca_rand (double rmax);
|
1069
1074
|
ca_size_t ca_bounds_normalize_index (int8_t bounds, ca_size_t size0, ca_size_t k);
|
1070
1075
|
|