carray 1.5.1 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +32 -0
- data/{LICENSES → LICENSE} +0 -0
- data/NEWS.md +83 -0
- data/README.md +34 -18
- data/Rakefile +1 -1
- data/TODO.md +17 -0
- data/carray.gemspec +10 -7
- 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 +6 -11
- data/ext/ca_obj_bitfield.c +5 -9
- data/ext/ca_obj_block.c +5 -12
- 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 +11 -15
- 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 +68 -122
- data/ext/ca_obj_window.c +7 -9
- data/ext/carray.h +17 -8
- data/ext/carray_access.c +183 -58
- data/ext/carray_attribute.c +151 -197
- data/ext/carray_call_cfunc.c +1 -3
- data/ext/carray_cast.c +345 -144
- data/ext/carray_cast_func.rb +1 -2
- data/ext/carray_class.c +28 -36
- data/ext/carray_conversion.c +56 -59
- data/ext/carray_copy.c +16 -32
- data/ext/carray_core.c +73 -60
- data/ext/carray_element.c +25 -44
- data/ext/carray_generate.c +74 -53
- data/ext/carray_iterator.c +13 -15
- data/ext/carray_loop.c +53 -82
- data/ext/carray_mask.c +99 -119
- data/ext/carray_math.rb +28 -12
- data/ext/carray_mathfunc.c +1 -3
- data/ext/carray_numeric.c +42 -45
- data/ext/carray_operator.c +45 -32
- data/ext/carray_order.c +231 -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 +41 -30
- data/ext/carray_undef.c +1 -11
- data/ext/carray_utils.c +138 -51
- data/ext/extconf.rb +14 -2
- data/ext/mkmath.rb +2 -2
- data/ext/ruby_carray.c +15 -7
- data/ext/ruby_ccomplex.c +2 -4
- data/ext/ruby_float_func.c +1 -3
- data/ext/version.h +5 -7
- data/lib/carray.rb +9 -9
- data/lib/carray/autoload.rb +0 -2
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
- data/lib/carray/basic.rb +1 -3
- data/lib/carray/broadcast.rb +101 -0
- data/lib/carray/compose.rb +34 -10
- data/lib/carray/construct.rb +57 -18
- data/lib/carray/info.rb +1 -3
- data/lib/carray/inspect.rb +3 -5
- data/lib/carray/io/imagemagick.rb +1 -3
- data/lib/carray/iterator.rb +3 -3
- data/lib/carray/mask.rb +18 -7
- data/lib/carray/math.rb +4 -6
- data/lib/carray/math/histogram.rb +1 -3
- data/lib/carray/math/recurrence.rb +1 -3
- data/lib/carray/mkmf.rb +1 -3
- data/lib/carray/object/ca_obj_iterator.rb +1 -3
- data/lib/carray/object/ca_obj_link.rb +1 -3
- data/lib/carray/object/ca_obj_pack.rb +1 -3
- data/lib/carray/obsolete.rb +1 -17
- data/lib/carray/ordering.rb +29 -5
- data/lib/carray/serialize.rb +34 -25
- data/lib/carray/string.rb +1 -3
- data/lib/carray/struct.rb +3 -5
- data/lib/carray/testing.rb +5 -10
- data/lib/carray/time.rb +1 -3
- data/lib/carray/transform.rb +12 -3
- data/misc/NOTE +16 -38
- 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 +102 -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 +98 -0
- data/spec/Features/feature_broadcast.rb +116 -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 +580 -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 +74 -58
- 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/lib/carray/construct.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/constructor.rb
|
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
|
|
@@ -58,10 +56,23 @@ class CArray
|
|
58
56
|
def span! (range)
|
59
57
|
first = range.begin.to_r
|
60
58
|
last = range.end.to_r
|
61
|
-
if
|
62
|
-
|
59
|
+
if integer?
|
60
|
+
if range.exclude_end?
|
61
|
+
step = ((last-1)-first+1)/elements
|
62
|
+
else
|
63
|
+
step = (last-first+1)/elements
|
64
|
+
end
|
63
65
|
else
|
64
|
-
|
66
|
+
if range.exclude_end?
|
67
|
+
step = (last-first)/elements
|
68
|
+
else
|
69
|
+
step = (last-first)/(elements-1)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
if integer? && step.denominator != 1
|
73
|
+
self[] = (first + seq * step).floor
|
74
|
+
else
|
75
|
+
seq!(first, step)
|
65
76
|
end
|
66
77
|
return self
|
67
78
|
end
|
@@ -384,7 +395,7 @@ class CArray
|
|
384
395
|
def eye (n, m = nil, k = 0)
|
385
396
|
m ||= n
|
386
397
|
mat = CArray.new(self::DataType || CA_FLOAT64, [n, m])
|
387
|
-
start = k > 0 ? k : m - k - 1
|
398
|
+
start = ( k == 0 ) ? k : ( k > 0 ? k : m - k - 1 )
|
388
399
|
mat[[start..-1,m+1]] = 1
|
389
400
|
mat
|
390
401
|
end
|
@@ -397,7 +408,11 @@ class CArray
|
|
397
408
|
|
398
409
|
def linspace (x1, x2, n = 100)
|
399
410
|
data_type = self::DataType
|
400
|
-
data_type
|
411
|
+
unless data_type
|
412
|
+
guess = guess_data_type_from_values(x1, x2)
|
413
|
+
guess = CA_FLOAT64 if guess == CA_INT64
|
414
|
+
data_type = guess
|
415
|
+
end
|
401
416
|
CArray.new(data_type, [n]).span(x1..x2)
|
402
417
|
end
|
403
418
|
|
@@ -415,7 +430,7 @@ class CArray
|
|
415
430
|
end
|
416
431
|
data_type = self::DataType
|
417
432
|
data_type ||= guess_data_type_from_values(start, stop, step)
|
418
|
-
CArray.__new__(data_type, start..stop, step)
|
433
|
+
CArray.__new__(data_type, start..stop-step, step)
|
419
434
|
end
|
420
435
|
|
421
436
|
def full (shape, fill_value)
|
@@ -430,16 +445,40 @@ class CArray
|
|
430
445
|
end
|
431
446
|
|
432
447
|
class CArray
|
433
|
-
|
434
|
-
def self.meshgrid (*
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
448
|
+
|
449
|
+
def self.meshgrid (*axes, indexing: "xy", copy: true, sparse: false, &block)
|
450
|
+
case indexing
|
451
|
+
when "xy"
|
452
|
+
### no operation
|
453
|
+
when "ij"
|
454
|
+
axes = axes.map{|axis| axis.seq }
|
455
|
+
else
|
456
|
+
raise ArgumentError, %{indexing option should be one of "xy" and "ij"}
|
457
|
+
end
|
458
|
+
shape = axes.map(&:size).reverse
|
459
|
+
if sparse ### => CAUnboundRepeat
|
460
|
+
list = axes.map.with_index do |axis, k|
|
461
|
+
extended_shape = (shape.size-1).downto(0).map { |i| ( i == k ) ? nil : :* }
|
462
|
+
if copy
|
463
|
+
axis[*extended_shape].to_ca
|
464
|
+
else
|
465
|
+
axis[*extended_shape]
|
466
|
+
end
|
467
|
+
end
|
468
|
+
else ### => CARepeat
|
469
|
+
naxes = shape.size
|
470
|
+
list = axes.map.with_index do |axis, k|
|
471
|
+
extended_shape = shape.dup
|
472
|
+
extended_shape[naxes - k - 1] = :%
|
473
|
+
if copy
|
474
|
+
axis[*extended_shape].to_ca
|
475
|
+
else
|
476
|
+
axis[*extended_shape]
|
477
|
+
end
|
478
|
+
end
|
441
479
|
end
|
442
|
-
return *
|
480
|
+
return block.call(*list) if block
|
481
|
+
return list
|
443
482
|
end
|
444
483
|
|
445
484
|
end
|
data/lib/carray/info.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/info.rb
|
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
|
|
data/lib/carray/inspect.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/inspect.rb
|
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
|
|
@@ -159,7 +157,7 @@ class CArray::Inspector # :nodoc:
|
|
159
157
|
dim[level].times do |i|
|
160
158
|
idx[level] = i
|
161
159
|
v = @carray[*idx]
|
162
|
-
if v
|
160
|
+
if v == UNDEF
|
163
161
|
io << '_'
|
164
162
|
else
|
165
163
|
io << formatter[v]
|
@@ -178,7 +176,7 @@ class CArray::Inspector # :nodoc:
|
|
178
176
|
if over
|
179
177
|
idx[level] = dim[level] - 1
|
180
178
|
v = @carray[*idx]
|
181
|
-
if v
|
179
|
+
if v == UNDEF
|
182
180
|
io << ", _"
|
183
181
|
else
|
184
182
|
io << ", " + formatter[v]
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/io/imagemagick.rb
|
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
|
|
data/lib/carray/iterator.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/iterator.rb
|
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
|
|
@@ -280,6 +278,7 @@ class CAIterator
|
|
280
278
|
end
|
281
279
|
|
282
280
|
def sort_with (&block)
|
281
|
+
warn "CAIterator#sort_with will be obsolete"
|
283
282
|
out = reference.template
|
284
283
|
idx = CA.sort_addr(*yield(self))
|
285
284
|
ca[idx].each_with_addr do |blk, i|
|
@@ -317,6 +316,7 @@ class CAClassIterator < CAIterator # :nodoc:
|
|
317
316
|
@reference = reference
|
318
317
|
@classifier = classifier || @reference.uniq.sort
|
319
318
|
@null = CArray.new(@reference.data_type,[0])
|
319
|
+
@null.data_class = @reference.data_class if @reference.has_data_class?
|
320
320
|
@table = {}
|
321
321
|
@ndim = 1
|
322
322
|
@dim = [0]
|
data/lib/carray/mask.rb
CHANGED
@@ -3,21 +3,32 @@
|
|
3
3
|
# carray/mask.rb
|
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
|
class CArray
|
14
|
-
|
15
|
-
#
|
16
|
-
|
12
|
+
|
13
|
+
# Guard methods for handling variables that can be UNDEF values.
|
14
|
+
# Provide different processing depending on whether
|
15
|
+
# the given value is UNDEF or not.
|
17
16
|
#
|
18
|
-
#
|
17
|
+
# @param value [Object] target object
|
18
|
+
# @param fill_value [Object] alternative value if the given value is UNDEF
|
19
|
+
#
|
20
|
+
# @return fill_value if the given value is UNDEF, block return value if block
|
21
|
+
# is given, or value itself
|
19
22
|
#
|
23
|
+
def self.guard_undef (*values, fill_value: UNDEF, &block)
|
24
|
+
return fill_value if values.any?{|v| v == UNDEF }
|
25
|
+
return block.(*values)
|
26
|
+
end
|
20
27
|
|
28
|
+
# mask
|
29
|
+
#
|
30
|
+
# Returns the number of masked elements.
|
31
|
+
#
|
21
32
|
def count_masked (*axis)
|
22
33
|
if has_mask?
|
23
34
|
return mask.int64.accumulate(*axis)
|
data/lib/carray/math.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/math.rb
|
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
|
|
@@ -318,7 +316,7 @@ class CArray
|
|
318
316
|
count = x.count_not_masked
|
319
317
|
xm = x.mean(:min_count => min_count)
|
320
318
|
ym = y.mean(:min_count => min_count)
|
321
|
-
if ( xm
|
319
|
+
if ( xm == UNDEF or ym == UNDEF )
|
322
320
|
return fill_value || UNDEF
|
323
321
|
else
|
324
322
|
return (x-xm).wsum(y-ym)/count
|
@@ -337,7 +335,7 @@ class CArray
|
|
337
335
|
count = x.count_not_masked
|
338
336
|
xm = x.mean(:min_count=>min_count)
|
339
337
|
ym = y.mean(:min_count=>min_count)
|
340
|
-
if ( xm
|
338
|
+
if ( xm == UNDEF or ym == UNDEF )
|
341
339
|
return fill_value || UNDEF
|
342
340
|
else
|
343
341
|
return (x-xm).wsum(y-ym)/(count-1)
|
@@ -355,7 +353,7 @@ class CArray
|
|
355
353
|
y.inherit_mask(x)
|
356
354
|
xm = x.mean(:min_count=>min_count)
|
357
355
|
ym = y.mean(:min_count=>min_count)
|
358
|
-
if ( xm
|
356
|
+
if ( xm == UNDEF or ym == UNDEF )
|
359
357
|
return fill_value || UNDEF
|
360
358
|
else
|
361
359
|
xd, yd = x-xm, y-ym
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/math/histogram.rb
|
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
|
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/math/recurrence.rb
|
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
|
|
data/lib/carray/mkmf.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/mkmf.rb
|
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
|
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/object/ca_obj_iterator.rb
|
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
|
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/object/ca_obj_link.rb
|
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
|
|
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/object/ca_obj_pack.rb
|
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
|
|
data/lib/carray/obsolete.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/obsolete.rb
|
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
|
|
@@ -25,20 +23,6 @@ class CArray
|
|
25
23
|
self
|
26
24
|
end
|
27
25
|
|
28
|
-
# pulled
|
29
|
-
|
30
|
-
def pulled (*args)
|
31
|
-
warn "CArray#pulled will be obsolete"
|
32
|
-
idx = args.map{|s| s.nil? ? :% : s}
|
33
|
-
return self[*idx]
|
34
|
-
end
|
35
|
-
|
36
|
-
def pull (*args)
|
37
|
-
warn "CArray#pull will be obsolete"
|
38
|
-
idx = args.map{|s| s.nil? ? :% : s}
|
39
|
-
return self[*idx].to_ca
|
40
|
-
end
|
41
|
-
|
42
26
|
# Returns the array eliminated all the duplicated elements.
|
43
27
|
def duplicated_values
|
44
28
|
warn "CArray#duplicated_values will be obsolete"
|
data/lib/carray/ordering.rb
CHANGED
@@ -3,17 +3,14 @@
|
|
3
3
|
# carray/ordering.rb
|
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
|
class CArray
|
14
12
|
|
15
13
|
# reversed
|
16
|
-
|
17
14
|
def reversed
|
18
15
|
return self[*([-1..0]*ndim)]
|
19
16
|
end
|
@@ -42,7 +39,6 @@ class CArray
|
|
42
39
|
def roll (*argv)
|
43
40
|
return self.rolled(*argv).to_ca
|
44
41
|
end
|
45
|
-
|
46
42
|
|
47
43
|
# Returns the reference which elements are sorted by the comparison method
|
48
44
|
# given as block
|
@@ -61,6 +57,16 @@ class CArray
|
|
61
57
|
cmpary = convert(type, :bytes=>bytes, &block)
|
62
58
|
return self[cmpary.sort_addr].to_ca
|
63
59
|
end
|
60
|
+
|
61
|
+
def sorted_with (*others)
|
62
|
+
addr = sort_addr
|
63
|
+
([self] + others).map { |x| x[addr] }
|
64
|
+
end
|
65
|
+
|
66
|
+
def sort_with (*others)
|
67
|
+
addr = sort_addr
|
68
|
+
([self] + others).map { |x| x[addr].to_ca }
|
69
|
+
end
|
64
70
|
|
65
71
|
def max_by (&block)
|
66
72
|
if empty?
|
@@ -71,6 +77,15 @@ class CArray
|
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
80
|
+
def max_with (*others)
|
81
|
+
if empty?
|
82
|
+
return ([self] + others).map { |x| UNDEF }
|
83
|
+
else
|
84
|
+
addr = max_addr
|
85
|
+
return ([self] + others).map { |x| x[addr] }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
74
89
|
def min_by (&block)
|
75
90
|
if empty?
|
76
91
|
return UNDEF
|
@@ -80,6 +95,15 @@ class CArray
|
|
80
95
|
end
|
81
96
|
end
|
82
97
|
|
98
|
+
def min_with (*others)
|
99
|
+
if empty?
|
100
|
+
return ([self] + others).map { |x| UNDEF }
|
101
|
+
else
|
102
|
+
addr = min_addr
|
103
|
+
return ([self] + others).map { |x| x[addr] }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
83
107
|
def range
|
84
108
|
return (self.min)..(self.max)
|
85
109
|
end
|