carray 1.5.1 → 1.5.6
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/.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
|